From a702a69f1e99bcf7b6476cabbf839de2d750ac70 Mon Sep 17 00:00:00 2001 From: jing Date: Tue, 14 Jul 2026 10:46:40 +1000 Subject: [PATCH] PROCITY scaffold: spec, research, 6 Opus lane prompts, core modules, vendored three r175, 69 inherited skins Co-Authored-By: Claude Fable 5 --- .gitignore | 7 + README.md | 49 + docs/CITY_SPEC.md | 189 + docs/LANES/LANE_A_CITYGEN.md | 90 + docs/LANES/LANE_B_STREETSCAPE.md | 89 + docs/LANES/LANE_C_INTERIORS.md | 71 + docs/LANES/LANE_D_CITIZENS.md | 74 + docs/LANES/LANE_E_ASSETS.md | 100 + docs/LANES/LANE_F_INTEGRATION.md | 46 + docs/RESEARCH.md | 95 + web/assets/gen/facade-arcade-tile.jpg | Bin 0 -> 114822 bytes web/assets/gen/facade-besser.jpg | Bin 0 -> 99333 bytes web/assets/gen/facade-boutique.jpg | Bin 0 -> 199719 bytes web/assets/gen/facade-brickveneer.jpg | Bin 0 -> 108428 bytes web/assets/gen/facade-cashtheists.jpg | Bin 0 -> 128852 bytes web/assets/gen/facade-corrugated.jpg | Bin 0 -> 110006 bytes web/assets/gen/facade-deco-pastel.jpg | Bin 0 -> 83876 bytes web/assets/gen/facade-djsim-dept.jpg | Bin 0 -> 54149 bytes web/assets/gen/facade-djsim-milkbar.jpg | Bin 0 -> 55360 bytes web/assets/gen/facade-djsim-opshop.jpg | Bin 0 -> 49542 bytes web/assets/gen/facade-djsim-pawn.jpg | Bin 0 -> 45988 bytes web/assets/gen/facade-djsim-pub.jpg | Bin 0 -> 44774 bytes web/assets/gen/facade-djsim-record.jpg | Bin 0 -> 51465 bytes web/assets/gen/facade-djsim-video.jpg | Bin 0 -> 56816 bytes web/assets/gen/facade-federation.jpg | Bin 0 -> 117570 bytes web/assets/gen/facade-fibro-blue.jpg | Bin 0 -> 97913 bytes web/assets/gen/facade-grimy.jpg | Bin 0 -> 166188 bytes web/assets/gen/facade-market.jpg | Bin 0 -> 200935 bytes web/assets/gen/facade-redbrick.jpg | Bin 0 -> 116273 bytes web/assets/gen/facade-sandstone.jpg | Bin 0 -> 121042 bytes web/assets/gen/facade-stripmall.jpg | Bin 0 -> 119853 bytes web/assets/gen/facade-stucco-pink.jpg | Bin 0 -> 117126 bytes web/assets/gen/facade-terrazzo.jpg | Bin 0 -> 95194 bytes web/assets/gen/facade-timber-teal.jpg | Bin 0 -> 119585 bytes web/assets/gen/facade-weatherboard.jpg | Bin 0 -> 115103 bytes web/assets/gen/ground-asphalt1.jpg | Bin 0 -> 72465 bytes web/assets/gen/ground-asphalt2.jpg | Bin 0 -> 80100 bytes web/assets/gen/ground-brickpave.jpg | Bin 0 -> 61162 bytes web/assets/gen/ground-djsim-footpath.jpg | Bin 0 -> 89363 bytes web/assets/gen/ground-djsim-road.jpg | Bin 0 -> 76439 bytes web/assets/gen/ground-footpath1.jpg | Bin 0 -> 63828 bytes web/assets/gen/ground-footpath2.jpg | Bin 0 -> 79673 bytes web/assets/gen/ground-grass.jpg | Bin 0 -> 79873 bytes web/assets/gen/ground-gravel.jpg | Bin 0 -> 79825 bytes web/assets/gen/ground-reddust.jpg | Bin 0 -> 63150 bytes web/assets/gen/sky-cold-front.jpg | Bin 0 -> 72877 bytes web/assets/gen/sky-endless-blue.jpg | Bin 0 -> 41313 bytes web/assets/gen/sky-golden-arvo.jpg | Bin 0 -> 57789 bytes web/assets/gen/sky-grey-drizzle.jpg | Bin 0 -> 51922 bytes web/assets/gen/sky-heat-haze.jpg | Bin 0 -> 28364 bytes web/assets/gen/sky-high-cirrus.jpg | Bin 0 -> 64169 bytes web/assets/gen/sky-monsoon.jpg | Bin 0 -> 86106 bytes web/assets/gen/sky-outback-dusk.jpg | Bin 0 -> 76132 bytes web/assets/gen/sky-spring-puffy.jpg | Bin 0 -> 60733 bytes web/assets/gen/sky-summer-storm.jpg | Bin 0 -> 76801 bytes web/assets/gen/tex-awning-blue.jpg | Bin 0 -> 43648 bytes web/assets/gen/tex-awning-green.jpg | Bin 0 -> 42850 bytes web/assets/gen/tex-awning-red.jpg | Bin 0 -> 40758 bytes web/assets/gen/tex-boards-polished.jpg | Bin 0 -> 46452 bytes web/assets/gen/tex-boutique-wall.jpg | Bin 0 -> 16942 bytes web/assets/gen/tex-brick.jpg | Bin 0 -> 64129 bytes web/assets/gen/tex-carpet-greygreen.jpg | Bin 0 -> 59715 bytes web/assets/gen/tex-carpet-mustard.jpg | Bin 0 -> 82713 bytes web/assets/gen/tex-carpet-swirl.jpg | Bin 0 -> 63427 bytes web/assets/gen/tex-grimy-wall.jpg | Bin 0 -> 47971 bytes web/assets/gen/tex-lino-check.jpg | Bin 0 -> 54620 bytes web/assets/gen/tex-lino-cork.jpg | Bin 0 -> 72428 bytes web/assets/gen/tex-pegboard.jpg | Bin 0 -> 39851 bytes web/assets/gen/tex-render.jpg | Bin 0 -> 47363 bytes web/assets/gen/tex-velvet-curtain.jpg | Bin 0 -> 60354 bytes web/assets/gen/tex-wood-counter.jpg | Bin 0 -> 43874 bytes web/assets/gen/wall-damask-mauve.jpg | Bin 0 -> 35436 bytes web/assets/gen/wall-diamond-green.jpg | Bin 0 -> 48316 bytes web/assets/gen/wall-floral-cream.jpg | Bin 0 -> 68553 bytes web/assets/gen/wall-floral-gold.jpg | Bin 0 -> 56258 bytes web/assets/gen/wall-geo-orange.jpg | Bin 0 -> 79875 bytes web/assets/gen/wall-stripe-sage.jpg | Bin 0 -> 30419 bytes web/assets/gen/wall-trellis-blue.jpg | Bin 0 -> 69385 bytes web/assets/gen/wall-woodchip-white.jpg | Bin 0 -> 90290 bytes web/js/core/canvas.js | 36 + web/js/core/loaders.js | 39 + web/js/core/prng.js | 46 + .../addons/controls/PointerLockControls.js | 270 + web/vendor/addons/loaders/GLTFLoader.js | 4958 ++ .../addons/postprocessing/EffectComposer.js | 361 + web/vendor/addons/postprocessing/MaskPass.js | 194 + .../addons/postprocessing/OutputPass.js | 138 + web/vendor/addons/postprocessing/Pass.js | 189 + .../addons/postprocessing/RenderPass.js | 182 + .../addons/postprocessing/ShaderPass.js | 134 + .../addons/postprocessing/UnrealBloomPass.js | 491 + web/vendor/addons/shaders/CopyShader.js | 49 + .../shaders/LuminosityHighPassShader.js | 65 + web/vendor/addons/shaders/OutputShader.js | 100 + web/vendor/addons/shaders/VignetteShader.js | 53 + .../addons/utils/BufferGeometryUtils.js | 1432 + web/vendor/addons/utils/SkeletonUtils.js | 490 + web/vendor/three.core.js | 57362 ++++++++++++++++ web/vendor/three.module.js | 17990 +++++ 99 files changed, 85389 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 docs/CITY_SPEC.md create mode 100644 docs/LANES/LANE_A_CITYGEN.md create mode 100644 docs/LANES/LANE_B_STREETSCAPE.md create mode 100644 docs/LANES/LANE_C_INTERIORS.md create mode 100644 docs/LANES/LANE_D_CITIZENS.md create mode 100644 docs/LANES/LANE_E_ASSETS.md create mode 100644 docs/LANES/LANE_F_INTEGRATION.md create mode 100644 docs/RESEARCH.md create mode 100644 web/assets/gen/facade-arcade-tile.jpg create mode 100644 web/assets/gen/facade-besser.jpg create mode 100644 web/assets/gen/facade-boutique.jpg create mode 100644 web/assets/gen/facade-brickveneer.jpg create mode 100644 web/assets/gen/facade-cashtheists.jpg create mode 100644 web/assets/gen/facade-corrugated.jpg create mode 100644 web/assets/gen/facade-deco-pastel.jpg create mode 100644 web/assets/gen/facade-djsim-dept.jpg create mode 100644 web/assets/gen/facade-djsim-milkbar.jpg create mode 100644 web/assets/gen/facade-djsim-opshop.jpg create mode 100644 web/assets/gen/facade-djsim-pawn.jpg create mode 100644 web/assets/gen/facade-djsim-pub.jpg create mode 100644 web/assets/gen/facade-djsim-record.jpg create mode 100644 web/assets/gen/facade-djsim-video.jpg create mode 100644 web/assets/gen/facade-federation.jpg create mode 100644 web/assets/gen/facade-fibro-blue.jpg create mode 100644 web/assets/gen/facade-grimy.jpg create mode 100644 web/assets/gen/facade-market.jpg create mode 100644 web/assets/gen/facade-redbrick.jpg create mode 100644 web/assets/gen/facade-sandstone.jpg create mode 100644 web/assets/gen/facade-stripmall.jpg create mode 100644 web/assets/gen/facade-stucco-pink.jpg create mode 100644 web/assets/gen/facade-terrazzo.jpg create mode 100644 web/assets/gen/facade-timber-teal.jpg create mode 100644 web/assets/gen/facade-weatherboard.jpg create mode 100644 web/assets/gen/ground-asphalt1.jpg create mode 100644 web/assets/gen/ground-asphalt2.jpg create mode 100644 web/assets/gen/ground-brickpave.jpg create mode 100644 web/assets/gen/ground-djsim-footpath.jpg create mode 100644 web/assets/gen/ground-djsim-road.jpg create mode 100644 web/assets/gen/ground-footpath1.jpg create mode 100644 web/assets/gen/ground-footpath2.jpg create mode 100644 web/assets/gen/ground-grass.jpg create mode 100644 web/assets/gen/ground-gravel.jpg create mode 100644 web/assets/gen/ground-reddust.jpg create mode 100644 web/assets/gen/sky-cold-front.jpg create mode 100644 web/assets/gen/sky-endless-blue.jpg create mode 100644 web/assets/gen/sky-golden-arvo.jpg create mode 100644 web/assets/gen/sky-grey-drizzle.jpg create mode 100644 web/assets/gen/sky-heat-haze.jpg create mode 100644 web/assets/gen/sky-high-cirrus.jpg create mode 100644 web/assets/gen/sky-monsoon.jpg create mode 100644 web/assets/gen/sky-outback-dusk.jpg create mode 100644 web/assets/gen/sky-spring-puffy.jpg create mode 100644 web/assets/gen/sky-summer-storm.jpg create mode 100644 web/assets/gen/tex-awning-blue.jpg create mode 100644 web/assets/gen/tex-awning-green.jpg create mode 100644 web/assets/gen/tex-awning-red.jpg create mode 100644 web/assets/gen/tex-boards-polished.jpg create mode 100644 web/assets/gen/tex-boutique-wall.jpg create mode 100644 web/assets/gen/tex-brick.jpg create mode 100644 web/assets/gen/tex-carpet-greygreen.jpg create mode 100644 web/assets/gen/tex-carpet-mustard.jpg create mode 100644 web/assets/gen/tex-carpet-swirl.jpg create mode 100644 web/assets/gen/tex-grimy-wall.jpg create mode 100644 web/assets/gen/tex-lino-check.jpg create mode 100644 web/assets/gen/tex-lino-cork.jpg create mode 100644 web/assets/gen/tex-pegboard.jpg create mode 100644 web/assets/gen/tex-render.jpg create mode 100644 web/assets/gen/tex-velvet-curtain.jpg create mode 100644 web/assets/gen/tex-wood-counter.jpg create mode 100644 web/assets/gen/wall-damask-mauve.jpg create mode 100644 web/assets/gen/wall-diamond-green.jpg create mode 100644 web/assets/gen/wall-floral-cream.jpg create mode 100644 web/assets/gen/wall-floral-gold.jpg create mode 100644 web/assets/gen/wall-geo-orange.jpg create mode 100644 web/assets/gen/wall-stripe-sage.jpg create mode 100644 web/assets/gen/wall-trellis-blue.jpg create mode 100644 web/assets/gen/wall-woodchip-white.jpg create mode 100644 web/js/core/canvas.js create mode 100644 web/js/core/loaders.js create mode 100644 web/js/core/prng.js create mode 100644 web/vendor/addons/controls/PointerLockControls.js create mode 100644 web/vendor/addons/loaders/GLTFLoader.js create mode 100644 web/vendor/addons/postprocessing/EffectComposer.js create mode 100644 web/vendor/addons/postprocessing/MaskPass.js create mode 100644 web/vendor/addons/postprocessing/OutputPass.js create mode 100644 web/vendor/addons/postprocessing/Pass.js create mode 100644 web/vendor/addons/postprocessing/RenderPass.js create mode 100644 web/vendor/addons/postprocessing/ShaderPass.js create mode 100644 web/vendor/addons/postprocessing/UnrealBloomPass.js create mode 100644 web/vendor/addons/shaders/CopyShader.js create mode 100644 web/vendor/addons/shaders/LuminosityHighPassShader.js create mode 100644 web/vendor/addons/shaders/OutputShader.js create mode 100644 web/vendor/addons/shaders/VignetteShader.js create mode 100644 web/vendor/addons/utils/BufferGeometryUtils.js create mode 100644 web/vendor/addons/utils/SkeletonUtils.js create mode 100644 web/vendor/three.core.js create mode 100644 web/vendor/three.module.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..568c247 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.DS_Store +*.pyc +__pycache__/ +.genraw/ +saves/ +node_modules/ +.env diff --git a/README.md b/README.md new file mode 100644 index 0000000..150d428 --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +# PROCITY + +A standalone, procedurally generated, fully walkable 90s-Australian shopping town — every +building enterable (the Vuntra City trick), every interior seeded and themed: record stores, +op shops, toy shops, book barns, video rental, pawnbrokers, milk bars, market stalls. Built on +the proven house stack (three.js r175 vendored, plain JS, no build step) and the asset DNA of +90sDJsim + thriftgod. v1 is the *system*; the GODVERSE/BaseGod real-item content plugs in later. + +## Run + +``` +cd web && python3 -m http.server 8130 +# http://localhost:8130 (game shell — Lane B) +# http://localhost:8130/map.html (2D plan debugger — Lane A) +``` + +## Read first + +- **`docs/CITY_SPEC.md`** — the treaty: schema, units, seeds, budgets, file ownership. +- **`docs/RESEARCH.md`** — what the parent repos already solved, with exact paths to port from. + +## The lanes (parallel Opus 4.8 sessions) + +Each lane is a self-contained prompt. To run one, start an Opus session in this repo and say: +**"Read docs/LANES/LANE_X_….md and execute it."** A–E are parallel-safe (disjoint files, +standalone test pages); F integrates after they land. + +| lane | mission | owns | +|---|---|---| +| [A — CITYGEN](docs/LANES/LANE_A_CITYGEN.md) | seed → CityPlan data (streets, blocks, lots, shops) + 2D map | `js/citygen`, `js/core/registry.js`, `map.html` | +| [B — STREETSCAPE](docs/LANES/LANE_B_STREETSCAPE.md) | chunk-streamed instanced 3D town + game shell | `index.html`, `js/world` | +| [C — INTERIORS](docs/LANES/LANE_C_INTERIORS.md) | every door opens: seeded themed shop interiors | `js/interiors`, `interior_test.html` | +| [D — CITIZENS](docs/LANES/LANE_D_CITIZENS.md) | rigged-near / impostor-far NPCs + shopkeepers | `js/citizens`, `citizens_test.html`, `models/` | +| [E — ASSETS](docs/LANES/LANE_E_ASSETS.md) | audit ultra's library, normalize GLBs, skins, manifest | `pipeline/`, `assets/` | +| [F — INTEGRATION](docs/LANES/LANE_F_INTEGRATION.md) | wire A–E into one seed-to-town game + QA gates | (after A–E) | + +## Already in the repo + +- `web/vendor/` — three.js r175 + addons (vendored from 90sDJsim; no CDN at runtime). +- `web/assets/gen/` — 69 generated texture skins (25 shopfront facades, 10 skies, 10 grounds, + 8 wallpapers, 16 interior surfaces) inherited from thriftgod + 90sDJsim, style-locked. +- `web/js/core/` — frozen shared modules: `prng.js` (seeded-everything law), `loaders.js` + (fail-soft promise-cached GLB/texture + 3GOD depot), `canvas.js` (text planes). + +## House laws (short form — CITY_SPEC has the fine print) + +Seeded everything, `Math.random` banned in gen code · the game must run with zero assets · +instancing from day one · canvas text, no font files · characters = shared base rigs + one +clip bank, canonical sources live outside this repo · 🟢 web-ok licensing only. diff --git a/docs/CITY_SPEC.md b/docs/CITY_SPEC.md new file mode 100644 index 0000000..ca564b2 --- /dev/null +++ b/docs/CITY_SPEC.md @@ -0,0 +1,189 @@ +# PROCITY — CITY_SPEC (the shared contract) + +*Every lane reads this first. If a lane needs to change something in here, it changes this file +in the same commit and says so loudly in the commit message — this doc is the treaty.* + +## What we are building + +A standalone, procedurally generated, fully walkable Australian shopping town — the Vuntra City +trick (every building enterable, interiors generated on demand) applied not to cyberpunk towers +but to **record stores, op shops, toy shops, book barns, video rental, pawnbrokers, milk bars, +market stalls**. 90s-Australia aesthetic, low-poly + generated texture skins. Content (real item +data, lore, economy) plugs in later via the GODVERSE/BaseGod feeds — v1 is the *system*: plan → +streets → facades → doors that open → themed interiors → NPCs walking around. + +## Engine decision (settled — do not relitigate) + +**three.js r175, vendored, plain JS ES modules, importmap, zero build step, zero npm.** +This is the proven house stack (90sDJsim + thriftgod both ship on it), it runs great on Apple +Silicon, and it lets us lift working code (fittings kit, rig stack, dig.js) verbatim. Unreal was +considered and parked: nothing in v1 needs it, and the asset pipeline (GLB, web-ok licensing, +3GOD depot) is web-native. Serve with `cd web && python3 -m http.server 8130`. + +- `three` and `three/addons/` resolve via importmap to `web/vendor/` (copied from 90sDJsim). +- No DRACO requirement (house GLBs ship uncompressed/webp-optimized); DRACOLoader is vendored if needed. +- No external CDNs at runtime. Everything local or from `https://digalot.fyi/3god` (CORS-enabled). + +## Units, axes, determinism + +- **Metres. +Y up. Ground plane is XZ.** City origin (0,0) = centre of the main square. +- **Right-handed three.js defaults.** Buildings face their street; a facade's outward normal + points at its street edge. GLB convention: origin at base, facing **−Z**, real-world scale. +- **Seeded everything, `Math.random()` is banned in generation code.** + `web/js/core/prng.js` is the only randomness source: + - `seedFor(citySeed, kind, id)` → stable uint32 (xmur3 hash of `"seed:kind:id"`). + - `rng(citySeed, kind, id)` → mulberry32 stream. + - Same citySeed ⇒ byte-identical city, forever. This is the thriftgod/90sDJsim house rule and + it's what makes the authored-override layer possible later. + +## The three-layer architecture + +``` +LAYER 1 CityPlan (pure data, no THREE) Lane A +LAYER 2 Streetscape (chunked 3D realization) Lane B +LAYER 3 Interiors (on-demand room scenes) Lane C + Citizens (NPCs over layers 2+3) Lane D + Assets (skins + GLB depot) Lane E +``` + +### Layer 1 — CityPlan (JSON-serializable, generated in <100ms) + +The whole town as lightweight data, generated up front from `citySeed`, dumpable to JSON. +Schema v1 (Lane A owns it; extend, don't break): + +```js +{ + version: 1, + citySeed: 20261990, // uint32 + name: "…", // generated town name + size: { w: 1024, d: 1024 }, // metres, city core v1 = 1km² + districts: [ { id, kind, cx, cz } ], + // kind: 'mainstreet' | 'arcade' | 'backstreets' | 'warehouse' | 'residential' | 'market' + streets: { + nodes: [ { id, x, z } ], + edges: [ { id, a, b, width, kind } ] // kind: 'main' | 'side' | 'lane' | 'arcade' + }, + blocks: [ { id, district, poly: [[x,z],…] } ], + lots: [ { id, block, x, z, w, d, ry, frontEdge, use } ], + // use: 'shop' | 'anchor' | 'house' | 'yard' | 'stall' | 'infill' + shops: [ { id, lot, type, name, sign, seed, facadeSkin, storeys, hours: [open, close] } ] + // type: see SHOP TYPES below +} +``` + +Chunk key: `cx = floor(x/64)`, `cz = floor(z/64)`. **Chunk size 64m.** Lane A ships a +`chunkIndex(plan)` helper: chunk key → { lots, shops, edges } touching it. + +### Layer 2 — Streetscape (Lane B) + +Realizes CityPlan chunks around the player. Hard requirements the two parent games skipped: + +- **Contiguous geometry** — no teleport seams; you can walk the whole core. +- **Chunk streaming** — build/dispose chunk Groups at radius ~2–3; never rebuild the world. +- **InstancedMesh from day one** for: building shells, awning boxes, verandah posts, street + furniture, trees, streetlights. Canvas signage batched into a **sign atlas texture** per chunk + (one CanvasTexture, many UV-mapped planes) — not one canvas per sign. +- Facade formula (proven in both games): instanced box shell + front `PlaneGeometry` with a + `facade-*.jpg` skin + parametric awning/verandah + sign band + door + window planes. + Skins are generated with **blank signboards** — the game overlays the shop name. + +### Layer 3 — Interiors (Lane C) + +Interiors are **not** street geometry. Walking into a doorway triggers +`enterShop(shop)` → separate room Group built from `shop.seed` (thriftgod archetypes + the +90sDJsim `fittings.js` parametric kit), themed by `shop.type`. Leaving restores the street +exactly where you stood. Street windows show a cheap fake (tinted glass + emissive warm glow at +night in v1; interior-mapping shader is a stretch goal). + +## Shop types v1 (registry lives in `web/js/core/registry.js`, Lane A writes it, all lanes read) + +| type | facade pool | interior archetype | fittings mix | +|---|---|---|---| +| `record` | timber-teal, arcade-tile, djsim-record | crates + bins | record bins, crates, counter, listening corner | +| `opshop` | weatherboard, fibro-blue, djsim-opshop | racks + shelves | clothes racks, bric-a-brac shelving, book wall | +| `toy` | stucco-pink, deco-pastel | shelves + glass case | cube shelves, display tables, glass case | +| `book` | federation, sandstone | halls of shelves | bookshelves, spinner racks, armchair | +| `video` | stripmall, djsim-video | aisle shelves | VHS shelving, returns slot, poster wall | +| `pawn` | besser, grimy, djsim-pawn | counter-forward | glass cabinets, wall hooks, barred window | +| `milkbar` | djsim-milkbar, brickveneer | counter + freezer | counter, fridge, magazine rack | +| `dept` (anchor) | terrazzo, djsim-dept | grand hall | mixed sections, escalator prop | +| `stall` (market) | facade-market | open stall | trestle tables, crates | + +## NPC contract (Lane D) + +- **Fleet rule (house law):** 2 rigged base meshes + shared clip bank. Canonical rigs: + `~/Documents/character_kit/` (female `grandma_game.glb` route, male `hum_character.glb`) plus + the 19 peds in `90sDJsim/web/world/models/peds/`. Game-local copies are byte-identical builds — + **copy from character_kit / 90sDJsim, never edit locally.** +- Distance tiers: near <25m = rigged `SkeletonUtils.clone` + AnimationMixer; mid = billboard + impostor (pre-rendered sprite, instanced); far = culled. Walkers path along street-edge + footpath lanes from the CityPlan graph. +- Licensing: 🟢 web-ok only (Mixamo, CC0/CC-BY, CGTrader RF). **No ActorCore in web builds.** + +## Performance budget (M-series laptop, 60fps) + +- ≤ 300 draw calls in street mode, ≤ 200k tris in a typical view. +- `renderer.setPixelRatio(min(devicePixelRatio, 2))`. +- Textures: skins ≤ 1024px, sign atlases 2048px, total GPU texture < 512MB. +- Chunk build must not hitch: budget 4ms/frame (build incrementally or in idle callbacks). +- Adopt 90sDJsim's `GFX_TIERS` idea later if needed; don't gold-plate now. + +## Modes & shell (Lane B owns the shell) + +`MODE ∈ { map, street, interior }` — one renderer, one state machine, same as both parent games. +`map` = 2D canvas town directory (Lane A's debug view grows into it). Save/load = localStorage v1. + +## File ownership (parallel-safety treaty) + +| path | owner | +|---|---| +| `web/js/core/*` (prng, loaders, canvas) | scaffold (frozen — propose changes via CITY_SPEC PR) | +| `web/js/core/registry.js` | Lane A | +| `web/js/citygen/*`, `web/map.html` | Lane A | +| `web/index.html`, `web/js/world/*` | Lane B | +| `web/js/interiors/*`, `web/interior_test.html` | Lane C | +| `web/js/citizens/*`, `web/citizens_test.html`, `web/models/*` | Lane D | +| `pipeline/*`, `web/assets/*` + `web/assets/manifest.json` | Lane E | +| `docs/*` | everyone, additively | + +Each lane also ships its own standalone test page so it can be verified without the others. +**Never edit another lane's files.** Integration (Lane F) happens after A–E land. + +## Infrastructure map + +- **This mac** — dev box, Blender + Unreal installed, Apple Silicon (no CUDA — all gen is + cloud-API or tailnet). +- **ultra** `ssh johnking@100.91.239.7` (key auth works, always-on M1 Ultra): MESHGOD Blender + scripts (`~/Documents/MESHGOD/scripts/finish_glb.py`, `render_glb.py`, `media_primitive.py`), + sorted model library `~/Documents/3D=models/` (shop-fittings / street-furniture / furniture — + see its `MANIFEST.md` + `CH_MAPPING.md`), `character_kit/`, `mixamo-fetch/out/` clip bank + (34 clips — never re-download an existing clip). Caveats: no GNU coreutils/timeout/setsid, + system python 3.9, Homebrew at /opt/homebrew. +- **m3ultra** `http://100.89.131.57:11434` — Ollama (`qwen3:235b/32b/8b`, `gemma3:4b` vision, + `gemma4`). Free local LLM for name generation, lore, cataloguing. Use it before any paid API. +- **3GOD depot** `https://digalot.fyi/3god` — `POST /api/upload?name=.glb`, `GET /a/`, + `GET /api/list` (CORS on). The shared GLB CDN all sibling games use. +- **MeshGod** `https://digalot.fyi/meshgod` — image→GLB generation (~30¢/solid; check the + DealGod canon-3D cache first; media/books use the free parametric skinner). +- **Image gen** — house flow is prompt packs (see `~/Documents/FLOW_PROMPTS.md` format) + + thriftgod's `gen_assets.py` batch pipeline (OpenRouter `google/gemini-3.1-flash-image`, + ~$0.004/img, style-bible prefix, resumable) and 90sDJsim's Cloudflare Flux scripts + (creds in `~/Documents/backnforth/.env`). + +## Style lock (visual) + +Low-poly chunky geometry, flat-ish shading, muted 90s Australian palette, warm cinematic light — +the 90sDJsim POLY lock — skinned with the thriftgod generated-texture kit (69 skins already in +`web/assets/gen/`). Facade prompt template (blank signboards!) is in thriftgod +`gen_assets.py:69-86` — reuse it for new skins so everything matches. + +## House patterns to keep (both games proved these) + +- Promise-cached loaders; missing asset ⇒ placeholder box, never a crash. The game must run + with zero assets. +- `CanvasTexture` text planes for ALL signage/text — no font files. +- `SkeletonUtils.clone` for anything skinned; canonicalize `mixamorig\d+` → `mixamorig` so one + clip drives every character; strip position tracks from shared clips (`_rotOnly`). +- Height-normalize rigs off the head bone; plant feet by min bone Y. +- Seeded flat-colour fallbacks under every texture. +- A `shot()` fixed-camera screenshot harness for visual regression (90sDJsim `tools/shots.py`). diff --git a/docs/LANES/LANE_A_CITYGEN.md b/docs/LANES/LANE_A_CITYGEN.md new file mode 100644 index 0000000..f530ed3 --- /dev/null +++ b/docs/LANES/LANE_A_CITYGEN.md @@ -0,0 +1,90 @@ +# LANE A — CITYGEN (the plan generator) + +> **Prompt for Opus 4.8.** You are working in `/Users/jing/Documents/PROCITY`. Read +> `docs/CITY_SPEC.md` (the contract) and `docs/RESEARCH.md` (what's already solved) before +> writing any code. You own `web/js/citygen/*`, `web/js/core/registry.js`, and `web/map.html`. +> Do not touch any other lane's files (ownership table in CITY_SPEC). No npm, no build step, +> no TypeScript — plain ES modules, three.js style of the house repos. All randomness through +> `web/js/core/prng.js`. Commit in small, described steps on `main`. + +## Mission + +Pure-data town generator: `generatePlan(citySeed) → CityPlan` per the schema in CITY_SPEC, +in under 100ms, fully deterministic, JSON-serializable, **no THREE import anywhere in this lane +except the debug map page**. Plus the shop-type registry and a 2D debug map viewer. + +## Design brief (the town we want) + +Not a Manhattan grid, not noise-soup. A **1km² Australian country-town-meets-inner-suburb core**: + +1. **Main street spine** — one gently bent high street running roughly N–S through the origin, + 28m corridor (road 10m + verandah'd footpaths). Continuous retail frontage: narrow lots + (6–9m frontage, 12–20m deep), zero side setbacks, 1–2 storeys, occasional 3-storey corner + anchor. This is where record/toy/book/video shops cluster. +2. **Cross streets** every 80–140m; the two central ones are "second high streets" (side kind), + the rest taper into `backstreets`. +3. **One arcade** — a covered pedestrian lane (`kind:'arcade'`, width 5) cutting through a + mid-spine block, lined with tiny lots (3–5m frontage) both sides. Prime record-store turf. +4. **Market square** district — an open block near the origin: `stall` lots in rows, the town's + `dept` anchor on one edge. +5. **Warehouse fringe** (N or S end, seeded): bigger lots, corrugated/besser skins, sparse — + future flea-market/venue territory. +6. **Residential collar** — the outer ring: `house` lots with front yards, and exactly 2–4 + corner-lot `milkbar`s embedded in it (the classic Australian corner shop). +7. Laneways (`kind:'lane'`, width 4) behind main-street blocks for service/back-door flavour. + +## Algorithm sketch (suggested, not sacred) + +- Spine as a polyline: 5–7 nodes, x-jitter ±30m. Offset cross streets perpendicular-ish with + ±10° jitter. Snap intersections into shared nodes; build the half-edge/block extraction by + walking the planar graph (blocks = faces). Keep it simple — the graph is small (<200 edges); + an O(n²) face walk is fine. +- Subdivide each block's street-facing sides into lots by frontage bands per district kind. + Every lot records `frontEdge` (street edge id) and `ry` (facing rotation) so Lane B knows + which way the facade points. Interior leftover = `yard`/`infill`. +- Assign shop types by district weights (registry-driven), with clustering bonuses (a record + shop next to an opshop next to a bookshop is the vibe — use a per-block shuffle that favours + same-cluster neighbours), then assign `facadeSkin` from the type's pool (seeded), `storeys`, + `hours` (seeded around 9–5, milkbars longer, one weirdo open till late). + +## Shop names & signs + +`web/js/citygen/names.js`: seeded generator with per-type patterns and 90s-AU flavour +(e.g. record: "{Word} Records", "Rotation", "{Suburb} Sound Exchange"; opshop: "St {Name}'s +Opportunity Shop", "Vinnies-alike parodies"; milkbar: "{Family} Milk Bar"). 40+ patterns, plus +a `sign` short form (what fits on the signboard). Keep it wordlist-based and deterministic — +**optionally** ship `pipeline/gen_names.py` that asks m3ultra Ollama (`http://100.89.131.57:11434`, +model `qwen3:32b`) to expand the wordlists into `web/js/citygen/wordlists.js` — generation +uses only the checked-in wordlists at runtime (no network calls in the game). + +## Registry (`web/js/core/registry.js`) + +Export `SHOP_TYPES` exactly covering the table in CITY_SPEC: per type — facade skin pool +(filenames that exist in `web/assets/gen/`), sign style hints, interior archetype id, fittings +mix, district weights, hours profile. This file is the shared vocabulary — every other lane +imports it, so land it early and keep it flat data. + +## Debug map (`web/map.html`) + +Standalone page, Canvas 2D (steal the thriftgod REFIDEX vibe): draws streets (width-scaled), +blocks, lots coloured by use, shop dots coloured by type with name labels on hover, chunk grid +overlay, seed input box + "regen" + "export JSON" buttons. This page is how humans (and Lane F) +eyeball a seed. Make it pleasant — it becomes the in-game map later. + +## Deliverables + +1. `web/js/citygen/plan.js` — `generatePlan(citySeed)`, `chunkIndex(plan)`. +2. `web/js/citygen/names.js` (+ `wordlists.js`). +3. `web/js/core/registry.js`. +4. `web/map.html` debug viewer. +5. `web/js/citygen/selfcheck.js` — run with `node web/js/citygen/selfcheck.js` (plain node, no + deps): asserts determinism (two runs, deep-equal), plan under 100ms, every shop has a lot, + every lot has a valid frontEdge, no overlapping lots within a block, every facadeSkin file + exists (fs check against `web/assets/gen/`), chunkIndex covers every lot, JSON round-trip. + +## Acceptance + +- `node web/js/citygen/selfcheck.js` prints all-green. +- `web/map.html` renders 5 different seeds that all read as *towns* (spine visible, arcade + present, market square, milkbars in the collar) — screenshot each into `docs/shots/laneA/`. +- Zero `Math.random`, zero THREE imports in citygen (grep-clean). diff --git a/docs/LANES/LANE_B_STREETSCAPE.md b/docs/LANES/LANE_B_STREETSCAPE.md new file mode 100644 index 0000000..a13b497 --- /dev/null +++ b/docs/LANES/LANE_B_STREETSCAPE.md @@ -0,0 +1,89 @@ +# LANE B — STREETSCAPE (chunked 3D town + game shell) + +> **Prompt for Opus 4.8.** You are working in `/Users/jing/Documents/PROCITY`. Read +> `docs/CITY_SPEC.md` and `docs/RESEARCH.md` first, then skim the two source patterns you are +> generalizing: `90sDJsim/web/world/index.html` `buildStrip()` (~line 740) and +> `thriftgod/web/index.html` `buildStreet()` (1441–1515). You own `web/index.html` and +> `web/js/world/*`. Do not touch other lanes' files. Plain ES modules, vendored three.js via +> importmap (`web/vendor/` — copy the importmap style from 90sDJsim's index.html), no npm, +> no build. All randomness via `core/prng.js`. Commit in small, described steps on `main`. + +## Mission + +Turn a CityPlan into a walkable, contiguous, chunk-streamed 3D town at 60fps, plus the game +shell (mode state machine, controls, day/night, HUD). This is the lane where PROCITY stops +being two separate street-strip games and becomes a *city*. + +**Don't wait for Lane A**: start by hand-writing `web/js/world/fixture_plan.js` — a small +hard-coded CityPlan (2 blocks of main street, one cross street, ~14 shops, valid per the +CITY_SPEC schema). Build everything against the schema; swap in `generatePlan()` when Lane A +lands. If the schema needs a field Lane A didn't foresee, propose it in CITY_SPEC in the same +commit. + +## Architecture + +- `web/index.html` — shell only: importmap, canvas, HUD divs, mode state machine + (`map | street | interior`), main loop. Keep it thin; logic lives in modules. +- `web/js/world/chunks.js` — the streamer. `ChunkManager(plan, scene)`: on player move, + ensure chunks within radius R (default 3) exist, dispose beyond R+1. Each chunk = one Group + built from `chunkIndex(plan)` data. **Build budget 4ms/frame** — queue chunk builds, one per + frame or via `requestIdleCallback`. Dispose = remove + `geometry.dispose()` for non-shared + geometry + return instanced slots. +- `web/js/world/buildings.js` — the facade kit: + - Shells: **InstancedMesh per chunk** (one box geometry, per-instance matrix + color). + Parapet/verandah posts/awning boxes likewise instanced. + - Facade planes: shops sharing a skin share a material — group facade planes per skin into + merged geometry (`BufferGeometryUtils.mergeGeometries`, vendored) per chunk. ≤25 skin + materials city-wide. + - Sign band: per-chunk **2048px canvas atlas** — draw every sign text once, UV-map planes into + it. One material per chunk for all signage. Steal `textPlane` proportions from the parents + but do NOT create per-sign canvases. + - Doors: plane + `userData.place = {kind:'door', shopId}` for the raycaster. Windows: dark + tinted planes, emissive warm at night. + - Verandahs/awnings over footpath on main street (the classic AU posted verandah — boxes + + posts, instanced), `tex-awning-*.jpg` skins. +- `web/js/world/ground.js` — roads/footpaths/kerbs as merged strips along street edges + (`ground-asphalt*`, `ground-footpath*`, `ground-grass` for yards, `ground-brickpave` for the + arcade + market square). UV along edge length. Intersections: simple quad fill, don't + over-engineer curb geometry. +- `web/js/world/furniture.js` — instanced streetlights, benches, bins, gum trees (cross-plane + billboard trees are fine), bus stops; placed seeded along footpaths. GLB props may load from + the 3GOD depot (promise-cached, placeholder box fallback — pattern in RESEARCH) but every + furniture type MUST have a primitive fallback. +- `web/js/world/lighting.js` — sky dome (`sky-*.jpg` picked by seed, BackSide sphere), 6-segment + day cycle ported from 90sDJsim `applyLighting`: sun direction/intensity, ambient, streetlights + + window emissives at night. ONE directional shadow map (2048) following the player, or none — + measure. ACES tonemapping, bloom optional at threshold 0.9 (vendored postprocessing exists). +- `web/js/world/player.js` — PointerLockControls walk (WASD + shift-run), eye 1.7m. Collision: + push-out against building AABBs of the current + neighbour chunks and a "stay off private + yards" rule; streets/footpaths/square all freely walkable. No navmesh — rectangles are enough. +- `web/js/world/hud.js` — crosshair, shop-name tooltip via throttled raycast (every 6th frame, + far=6), time-of-day widget, FPS/draw-call debug readout (`renderer.info`), seed display. +- Door interaction: raycast hit + click → dispatch `window.dispatchEvent(new CustomEvent( + 'procity:enterShop', {detail:{shopId}}))` and pause street mode. Lane C listens for it; until + Lane C lands, show a "🚪 {name} — interiors coming" toast and keep walking. Interior returns + via `procity:exitShop`. + +## Performance gates (hard) + +- ≤300 draw calls, ≤200k tris in street view (HUD shows both, live). +- No per-frame allocation storms; reuse vectors/matrices. +- Chunk in/out causes no visible hitch (verify with the HUD frame-time graph). +- `setPixelRatio(min(dpr,2))`; textures ≤1024 (skins already are). + +## Deliverables + +1. `web/index.html` + all `web/js/world/*` modules above. +2. `web/js/world/fixture_plan.js` (works standalone before Lane A). +3. `shot()` bookmark harness: press `P` → downloads canvas PNG from 3 fixed cameras; save + references into `docs/shots/laneB/`. +4. A `docs/LANES/LANE_B_NOTES.md` with the measured numbers (draw calls, tris, chunk build ms). + +## Acceptance + +- `cd web && python3 -m http.server 8130` → walk the fixture town for 5 minutes: contiguous, + no seams, chunks stream silently, day/night cycles, signs legible, tooltips work, budget + numbers green on an M-series MacBook. +- Works with `?seed=N` once Lane A's `generatePlan` is importable (guard the import so the page + still runs on fixture data if citygen is absent). +- The page loads and runs with `web/assets/` renamed away (all-fallback mode) — no crashes. diff --git a/docs/LANES/LANE_C_INTERIORS.md b/docs/LANES/LANE_C_INTERIORS.md new file mode 100644 index 0000000..99d982f --- /dev/null +++ b/docs/LANES/LANE_C_INTERIORS.md @@ -0,0 +1,71 @@ +# LANE C — INTERIORS (every door opens) + +> **Prompt for Opus 4.8.** You are working in `/Users/jing/Documents/PROCITY`. Read +> `docs/CITY_SPEC.md` and `docs/RESEARCH.md` first, then the two sources you are porting: +> `thriftgod/web/index.html` `buildShop()` (line ~1109+, archetypes `SHOP_SHAPES`, wall-slot +> system, seeded decor) and `90sDJsim/web/world/fittings.js` (parametric fittings kit — read it +> whole, it was written to be lifted). You own `web/js/interiors/*` and `web/interior_test.html`. +> Do not touch other lanes' files. Plain ES modules, three.js from `web/vendor/` importmap, +> randomness via `core/prng.js` only. Commit in small, described steps on `main`. + +## Mission + +The Vuntra move: **every shop door opens into a unique, believable, seeded interior** — +generated on demand in <50ms, byte-identical every revisit (`shop.seed`), themed by `shop.type`. +This lane is a standalone library + test page; Lane B wires it to real doors later via the +`procity:enterShop` / `procity:exitShop` events (contract in LANE_B). + +## Architecture + +- `web/js/interiors/interiors.js` — public API: + ```js + buildInterior(shop, THREE) → { group, spawn:{x,z,ry}, exits:[{x,z,w, toStreet:true}], + places:[…userData-tagged interactables], dispose() } + ``` + Pure function of `shop` (a CityPlan shop record + its lot dims). No global state. +- `web/js/interiors/shell.js` — the room shell: floor/walls/ceiling sized from the lot + (`lot.w × lot.d`, storeys → ceiling height 3.2–4.5m), seeded from the 5 thriftgod archetypes + (**cosy / gallery / wide / hall / pokey**) adapted to lot proportions, plus door/shopfront + wall with real glazing (you can see a hint of street), back room doorway (blocked v1). + Materials: seeded pick of `wall-*.jpg` wallpapers, `tex-carpet-*`/`tex-lino-*` floors, + `tex-*` counters — all already in `web/assets/gen/`, all with flat-colour fallbacks. +- `web/js/interiors/fittings.js` — port 90sDJsim's kit and extend it. Needed set (see the + registry's fittings mixes): record bins & crates, clothes racks, wall/cube/metal shelving, + bookshelves, VHS aisle shelving, glass display case, counter + till, trestle tables, fridge, + magazine rack, poster/art frames (`art-*` future), pegboard walls. Parametric primitives + first; where a GLB upgrade exists use the manifest (see below) with primitive fallback. +- `web/js/interiors/layout.js` — the placer: per-archetype floor zones (window display / aisles + / walls / counter-corner), the thriftgod **shuffled wall-slot system** so nothing overlaps, + density from shop seed (some shops crammed, some sparse), guaranteed walkable path from door + to counter (grid-mark occupied cells; verify connectivity with a flood fill — assert it). +- `web/js/interiors/stock.js` — v1 *visual* stock only: product boxes/sleeves/spines as + canvas-texture blocks on shelves (steal the dig.js sleeve-canvas trick — coloured cardboard + + price stickers). Real items are the content phase; leave a `stockAdapter` hook: + `(shop, slotKind) => texture/mesh` so BaseGod data can plug in without touching layout code. +- **GLB upgrades**: read `web/assets/manifest.json` if present (Lane E ships it) mapping fitting + ids → 3GOD depot files; promise-cached loader, placeholder-persists pattern. The test page + must be fully usable with no manifest and no network. +- Windows-from-street problem (Lane B fakes it): you own the *inside-looking-out* — a simple + backdrop plane beyond the glazing (street-ish gradient / `sky-*` slice) sells it in v1. + +## Type theming (registry-driven) + +Import `SHOP_TYPES` from `core/registry.js`; every type in CITY_SPEC's table gets a distinct +recipe (fittings mix, wallpaper bias, clutter level, counter position, signage-inside flavour). +A `record` shop must *instantly* read different from a `toy` shop from the doorway. Milk bar +counter faces the door; pawn shop is counter-forward with wall hooks; dept anchor is the +"grand hall" archetype with mixed sections. + +## Test page (`web/interior_test.html`) + +Standalone: seed input, type dropdown, archetype override dropdown, "re-roll", first-person walk +inside (reuse PointerLock pattern), wireframe/occupancy-grid debug toggle, and a "50-room soak" +button that builds+disposes 50 seeded interiors and reports ms/room + leaked geometries +(`renderer.info.memory` before vs after — must return to baseline). + +## Acceptance + +- Same seed twice → identical room (soak test asserts deep-equal on placement lists). +- All 9 types × 5 archetypes render sensibly (screenshot grid into `docs/shots/laneC/`). +- Build <50ms/room, dispose leak-free, flood-fill path door→counter always exists. +- Runs with zero assets (fallback colours) and zero network. diff --git a/docs/LANES/LANE_D_CITIZENS.md b/docs/LANES/LANE_D_CITIZENS.md new file mode 100644 index 0000000..a60c732 --- /dev/null +++ b/docs/LANES/LANE_D_CITIZENS.md @@ -0,0 +1,74 @@ +# LANE D — CITIZENS (populate the town) + +> **Prompt for Opus 4.8.** You are working in `/Users/jing/Documents/PROCITY`. Read +> `docs/CITY_SPEC.md` and `docs/RESEARCH.md` first, then the source you are porting: +> `90sDJsim/web/world/index.html` lines ~258–393 (`loadRig`, `spawnRig`, `_canon`, `_rotOnly`, +> head-bone height normalization, `upgradeStreetPeople`) — this stack is proven, port it +> faithfully. You own `web/js/citizens/*`, `web/citizens_test.html`, and `web/models/*`. +> Do not touch other lanes' files. Plain ES modules, three.js from `web/vendor/`, randomness +> via `core/prng.js`. Commit in small, described steps on `main` (GLBs are committed — keep +> the set curated, not hoarded). + +## Mission + +Streets that feel lived-in and shops with keepers, at city scale, on budget. Rigged characters +near, cheap impostors far, deterministic per-citizen identity (same seed → same person walks +the same beat), all built on the **house fleet rule**: shared base meshes + one canonical clip +bank, never per-character rigs. + +## Assets (copy, never edit locally) + +- Copy the ped fleet from `90sDJsim/web/world/models/peds/` (19 rigged GLBs + clip-only + `walk.glb` / `idle.glb`) into `web/models/peds/`. Byte-identical copies — the canonical + source stays upstream (house law; see `asset-pipeline` conventions). +- Canonical hero rigs if needed: `~/Documents/character_kit/` (female + male). Clip bank: + `~/Documents/mixamo-fetch/out/` (34 clips — sit, lean, look-around, phone etc. may exist; + check before wanting new ones; **never re-download an existing clip**). New clips need John + to run the mixamo-fetch flow — file wishes in `docs/LANES/LANE_D_NOTES.md`, don't block. +- Licensing: 🟢 web-ok only. No ActorCore. + +## Architecture + +- `web/js/citizens/rigs.js` — the ported stack: promise-cached `loadRig`; `spawnRig()` with + SkeletonUtils.clone, `mixamorig\d+` canonicalization (one walk clip drives all 19 peds), + `_rotOnly` position-track stripping, head-bone height normalization (seeded 1.55–1.95m), + feet planted by min bone Y, random clip start offsets. Primitive-figure placeholders that + hot-swap when GLBs arrive (`upgradeStreetPeople` pattern) — the town is populated from + frame one. +- `web/js/citizens/sim.js` — the citizen simulation (Vuntra's layered idea, hamlet-scale): + - Deterministic roster per chunk: `rng(citySeed,'citizen',chunkKey+i)` → identity (ped index, + height, walk speed, home/goal habits). Density by district (main street busy at midday, + residential sparse, market square clumps). + - **Near tier (<25m)**: full rig + mixer, walking footpath lanes (offset polylines along + street edges from the CityPlan graph), turning at nodes with seeded choice, idle/loiter + stops at shop windows and benches (bench-sit if a sit clip exists, else stand-loiter). + - **Mid tier (25–70m)**: no mixers ticking — instanced/billboard impostors. Generate impostor + sprites at runtime: render each ped GLB once to a small offscreen RT from 4 yaw angles → + one sprite atlas → InstancedMesh quads picking the nearest angle. (This keeps impostors + automatically in sync with the fleet; cache the atlas in-session.) + - **Far**: culled entirely. Promotion/demotion by distance with hysteresis so nobody pops + while you watch (swap only when off-screen or beyond a fade). + - Time-of-day modulation from the shell's day segment (event or global): morning trickle, + lunch rush, night = near-empty streets + the odd wanderer. +- `web/js/citizens/keepers.js` — shopkeepers: one keeper per open shop, standing at the counter + slot (Lane C exposes counter position in its `places` — coordinate via the event payload; + until Lane C lands, test with a mock). Idle clip + a "greet" head-turn toward the player if a + clip allows. Keepers are spawned when an interior builds, disposed with it. +- Budgets: ≤ 24 rigged actives, ≤ 4 mixers updated per frame beyond the nearest 8 (stagger + updates), impostor instancing = 1 draw call per atlas. All mixers pause when tab hidden. + +## Test page (`web/citizens_test.html`) + +Standalone: a fixture street loop (hard-code a small street graph — do NOT import Lane A/B +files; keep the fixture local), spawn slider 0–200 citizens, tier-visualization toggle +(colour by tier), live HUD (rigged count, mixer ms, draw calls, fps), time-of-day slider, +determinism check button (respawn roster, assert identical identities). + +## Acceptance + +- 200-citizen fixture scene holds 60fps on an M-series MacBook; mixer update <2ms/frame. +- No T-pose ever visible (placeholder → rig swap is seamless); no giants/ants (height + normalization verified across all 19 peds); one shared walk clip animates every ped. +- Same seed → same crowd, twice (assert). +- Screenshots of near/mid tiers + a busy main-street shot into `docs/shots/laneD/`. +- `docs/LANES/LANE_D_NOTES.md`: measured budgets + clip wishlist for the mixamo-fetch run. diff --git a/docs/LANES/LANE_E_ASSETS.md b/docs/LANES/LANE_E_ASSETS.md new file mode 100644 index 0000000..c7eba86 --- /dev/null +++ b/docs/LANES/LANE_E_ASSETS.md @@ -0,0 +1,100 @@ +# LANE E — ASSETS (skins, GLBs, the depot manifest) + +> **Prompt for Opus 4.8.** You are working in `/Users/jing/Documents/PROCITY` with SSH access +> to **ultra** (`ssh johnking@100.91.239.7`, key auth works non-interactively — mind: no GNU +> coreutils/timeout/setsid, system python 3.9, Homebrew at /opt/homebrew). Read +> `docs/CITY_SPEC.md` and `docs/RESEARCH.md` first. You own `pipeline/*`, `web/assets/*`, and +> `web/assets/manifest.json`. Do not touch other lanes' files. **Spending rule: fal/MeshGod +> generations cost real money — batch nothing without listing it in a plan file first and +> keeping v1 to the shortlist below. Prompt-pack image gen is near-free but still list counts.** +> Verify every visual result with your own eyes (render thumbnails / open in browser) — never +> "should look right". Commit in small, described steps on `main`. + +## Mission + +Feed the other lanes: audit what exists, normalize the best of it into a PROCITY asset set, +publish it (3GOD depot + local), and ship the **manifest** that Lanes B/C/D consume. Then the +gap-fill generation passes (facade skins first, GLB props second). Everything optional at +runtime — the game must run asset-free — so this lane is about making it *gorgeous*, not +making it *work*. + +## Step 1 — Audit (no generation yet) + +- On ultra, read `~/Documents/3D=models/MANIFEST.md` + `CH_MAPPING.md`, then inventory + `shop-fittings/`, `street-furniture/`, `furniture/`, `props-scenes/` against the fittings + needs in CITY_SPEC's shop-type table and LANE_C's fittings list. Note tri counts, scale + sanity, licensing zone (🟢 web-ok only — anything unclear goes in a QUARANTINE list, not + the manifest). +- Hit `https://digalot.fyi/3god/api/list` — some of this may already be uploaded. +- Output: `pipeline/AUDIT.md` — table of candidate GLBs → PROCITY fitting/furniture id, + status (ready / needs-normalize / missing / quarantined-licence). + +## Step 2 — Normalize & publish GLBs + +- `pipeline/normalize.py` — runs **on ultra** against Blender + the existing MESHGOD scripts + (`~/Documents/MESHGOD/scripts/finish_glb.py`, `render_glb.py` — read them, extend, don't + fork): enforce house GLB law (metres, +Y up, origin at base, facing −Z, ≤5k tris props, + webp textures ≤1024, no Draco), name as `procity___01.glb`, render a + 256px thumbnail per asset. +- Upload to 3GOD (`POST /api/upload?name=.glb`), thumbnails into `web/assets/thumbs/`. +- Priority order (what Lanes B/C actually place first): record crate + record bin, clothes + rack, metal wire shelf, garage shelves, bookshelf, cube shelf, glass case, counter (balcao), + trestle table, bench + longbench + park bench, market stall, food cart, streetlight, fridge. + +## Step 3 — The manifest (`web/assets/manifest.json`) + +The single contract file other lanes read: + +```json +{ + "version": 1, + "depot": "https://digalot.fyi/3god", + "fittings": { "record_bin": {"file":"procity_fit_record_bin_01.glb", "footprint":[1.2,0.8], "thumb":"…"}, … }, + "furniture": { "bench": {…}, "streetlight": {…}, … }, + "skins": { + "facade": {"weatherboard":{"file":"gen/facade-weatherboard.jpg","types":["opshop"]}, …}, + "sky": [...], "ground": {...}, "wall": [...], "interior": {...} + } +} +``` + +Catalogue the 69 skins already in `web/assets/gen/` (they came from thriftgod + 90sDJsim — +map them to shop types per the registry table). Add a `pipeline/validate_manifest.py` +(plain python3) that checks every referenced file exists locally or HEADs OK on the depot, +footprints are sane, and JSON parses — this runs in Lane F's gate. + +## Step 4 — Facade skin expansion (prompt-pack pass) + +The 18+7 existing facades are the style anchor. Gaps for a whole town: **toy shop, book shop, +video store, milk bar variants (2–3), arcade interior frontage, dept-store anchor (wide), +warehouse/roller-door, residential terrace/cottage fronts (3–4), corner-lot two-face, +market-square edge**. Two routes, in order: + +1. Port thriftgod's `gen_assets.py` (OpenRouter `google/gemini-3.1-flash-image`, ~$0.004/img, + resumable `.genraw/` — see `thriftgod/gen_assets.py`) into `pipeline/gen_skins.py` with the + **same style bible prefix** and the **blank-signboard facade template** (`gen_assets.py:69-86`). + ~30 images ≈ 12¢. Needs the OpenRouter key (`thriftgod/.env` pattern) — if absent, route 2. +2. Emit `pipeline/SKIN_PROMPTS.md` in the house FLOW_PROMPTS.md format (POLY lock, save-as + filenames) for John to run through the manual flow. + +Also: **corner buildings need a second facade face** — add a `-side` variant convention +(`facade-X-side.jpg`) or document that Lane B reuses the front skin on corners (decide, write +it in the manifest README). + +## Step 5 — Bespoke hero props (MeshGod, budget-gated) + +Shortlist ONLY (≈10 solids ≈ $3): listening booth, till/cash register, VHS rewinder, +glass counter case (if audit finds none), spinner rack, milkshake mixer, arcade cabinet shell, +band-poster easel, giant novelty record (roof ornament), bus stop shelter. Write +`pipeline/MESHGOD_BATCH.md` (manifest-style, the `djsim_home.json` pattern) — **do not run the +batch without John's go**; everything has a primitive fallback anyway. Remember the MeshGod +gotcha: thin wires and flat discs reconstruct badly — those stay in-engine primitives. + +## Acceptance + +- `pipeline/AUDIT.md` complete; ≥15 normalized GLBs live on 3GOD with thumbnails. +- `web/assets/manifest.json` validates green; Lanes B/C load fittings from it untouched. +- Facade coverage: every shop type in the registry has ≥2 skins mapped; new skins + indistinguishable in style from the originals (side-by-side contact sheet in + `docs/shots/laneE/`). +- A one-page `pipeline/README.md`: how to re-run each step, what it costs, where creds live. diff --git a/docs/LANES/LANE_F_INTEGRATION.md b/docs/LANES/LANE_F_INTEGRATION.md new file mode 100644 index 0000000..4bae92c --- /dev/null +++ b/docs/LANES/LANE_F_INTEGRATION.md @@ -0,0 +1,46 @@ +# LANE F — INTEGRATION & QA (run after A–E land) + +> **Prompt for Opus 4.8.** You are working in `/Users/jing/Documents/PROCITY`. Read +> `docs/CITY_SPEC.md`, then every `docs/LANES/LANE_*_NOTES.md` the other lanes left. You may +> touch any file, but prefer surgical wiring changes over rewrites — each lane's internals are +> its own. This lane turns five verified parts into one game. + +## Mission + +One URL, one seed, a whole town: `web/index.html?seed=N` → map → walk the streets → open any +door → themed interior with a keeper → back out — 60fps, no seams, no leaks. + +## Wiring checklist + +1. Swap Lane B's `fixture_plan.js` for Lane A's `generatePlan(seed)`; seed from URL param, + surfaced in HUD; `web/map.html` linked from an in-game map key (M) using the same plan. +2. Wire `procity:enterShop` → Lane C `buildInterior` (mode switch, street scene paused not + disposed, player restored on exit at the door, interior disposed on exit). +3. Wire Lane D: citizens stream with Lane B's chunks (roster per chunk key); keepers spawn from + Lane C's counter `places`; day-segment events drive density. +4. Point Lanes B/C at Lane E's `manifest.json` (skin→type mapping replaces any hardcoded pools; + GLB upgrades appear; primitive fallbacks still exercised via a `?noassets=1` param). +5. Hours: closed shops (CityPlan `hours` vs day segment) get dark windows, CLOSED plate, locked + door toast. One late-night shop per town stays open (Lane A seeds it) — verify it exists. + +## QA gates (all must pass before calling it v1) + +- **Determinism**: seed 1234 on two machines → identical map PNG, identical first-interior + placement list. +- **Soak**: scripted 10-minute walk (record a waypoint path, drive the camera) crossing ≥30 + chunks, entering ≥15 shops: `renderer.info.memory` geometries/textures return to baseline + after each interior; JS heap stable; zero console errors. +- **Budget**: HUD numbers within CITY_SPEC limits at the busiest intersection at midday. +- **Asset-free run**: `?noassets=1` full playthrough — placeholder town, zero crashes. +- **Selfchecks**: `node web/js/citygen/selfcheck.js` + `python3 pipeline/validate_manifest.py` + green; add `tools/qa.sh` that runs both. +- **Shots**: refresh all `docs/shots/*` reference images; add a contact-sheet + `docs/shots/v1_tour/` (10 beauty shots: main street noon, arcade, market square, milkbar + dusk, record-shop interior, night neon, etc.) — these are the Vuntra-style devlog material. + +## Then write `docs/V2_IDEAS.md` + +Park everything discovered but not built: dig.js wiring + BaseGod real-item stock, interior +window shader, real-OSM plan import (thriftgod `build_city()` route), trams/bus loop, weather, +multiplayer presence, the in-game layout editor (thriftgod E1–E4 override tables), venue +district + gig system crossover with 90sDJsim. diff --git a/docs/RESEARCH.md b/docs/RESEARCH.md new file mode 100644 index 0000000..9c1bb0c --- /dev/null +++ b/docs/RESEARCH.md @@ -0,0 +1,95 @@ +# RESEARCH — what the parent repos already solved (port, don't reinvent) + +*Condensed technical briefs from full sweeps of both repos (2026-07-14). Exact paths verified. +Read the section for your lane before writing code; open the referenced files and lift patterns.* + +## 90sDJsim (`/Users/jing/Documents/90sDJsim`) + +- three.js r175 **vendored** at `web/world/vendor/` (copied into PROCITY `web/vendor/`), importmap + in `web/world/index.html`. No build, no npm. Backend = single stdlib-Python `server.py` :8123. +- Docs: `CLAUDE.md`, `DEVMANUAL.md` (single source of truth), `TOWNMAP.md`, `ECONOMY_SPEC.md`. +- **World**: `web/world/index.html` (~3400 lines, all inline). One scene, one `room` Group + swapped per mode. `AREAS` data table (~line 711) declares streets as shop rows; `buildStrip()` + (~740) realizes them: `BoxGeometry(4.8,h,4)` shell + facade JPEG on a `PlaneGeometry(4.7,2.4)` + + awning box + `textPlane()` canvas signs, seeded per building with `mulberry32(i*77+5)`. + `buildHome()` ~963, `buildVenue()` ~1094. Day/night = 6-segment `applyLighting(segIdx)`. +- **Facade skins**: `web/world/tex/facade_{record,opshop,pawn,pub,video,dept,milkbar}.jpg` — + Cloudflare Flux, committed 2026-07-10 (commit `e31e605`), cropped below the sign band. Mapped + by `FACADE` table (~line 276). Copied into PROCITY as `facade-djsim-*.jpg`. +- **NPC stack (the crown jewel — port for Lane D)**, `web/world/index.html` ~258–393: + - `models/peds/` = 17 normal + 2 comical rigged GLBs (~2MB each) + clip-only `walk.glb`/`idle.glb`. + - `spawnRig(rig,target,x,z,ry,clipName,height,extClip)`: SkeletonUtils.clone → height-normalize + off the **head bone** → plant feet by min bone Y → mixer.clipAction().play() with random + start offset to desync. + - `_canon = s => s.replace(/mixamorig\d+/g,'mixamorig')` — one clip binds to any character. + - `_rotOnly` strips position tracks + Hips.quaternion from shared clips (prevents scale blowups). + - `upgradeStreetPeople()` — world builds instantly with primitive figures, rigs hot-swap in + when ~40MB of GLBs arrive. Venue crowd: rigged front rows, bobbing box-figures behind. +- **`web/world/fittings.js`** — standalone parametric shop-fitting kit (racks, bins, shelves, + counters, pegboards, canvas-texture garments). Takes THREE as arg, returns placeable Groups. + Written to theme "any shop, any count". Port for Lane C. +- **`web/world/dig.js`** — self-contained crate-riffle minigame (own scene/camera, callback API + `onBuy/getCash/spawnClerk/spawnFittings`). Already ported across 3 games. Content phase. +- Loaders: `loadGLB`/`loadRig`/`loadProp`/`loadTex` promise-cached, fail→null→placeholder stays. +- Perf: **zero instancing/LOD/atlases** (small scenes got away with it — we can't). Tricks worth + keeping: `GFX_TIERS` era-tiered graphics (~line 167), bloom threshold 0.9, single 2048 shadow + map on street only, additive light-cones, `tools/shots.py` screenshot regression harness. +- Gear/prop gen: MeshGod manifests (`MESHGOD/manifests/djsim_home.json` pattern), webp-optimized + ~1MB GLBs, **no Draco**. Gotcha: thin wires/flat discs reconstruct badly — do those as + in-engine primitives. + +## thriftgod (`/Users/jing/Documents/thriftgod`) + +- three.js 0.175 from unpkg importmap in `web/index.html` (2,061 lines = whole game). Backend + `server.py` (1,616 lines, stdlib + psycopg2) :8777; reads `dealgod` DB (1.77M real listings). +- **Real-world city**: `build_city()` (`server.py:433`) — Overpass query for all named AU + secondhand/charity/music/antiques/books/toys shops → `city_source.json` cache → dedupe → + nearest-capital assignment → suburb inference → parody names → seeded hours. ~2,918 shops. + The recipe for later swapping PROCITY's synthetic plan for real geography. +- **Seed + override architecture (the big idea)**: every shop interior is deterministic from + `shop.seed` via mulberry32 (`web/index.html:1063`); Postgres `layout_shop`/`layout_area`/ + `layout_asset` tables hold optional hand-authored overrides; NULL = procedural fallback. + In-game editor (E1–E4) writes overrides. See `EDITOR_PLAN.md`. +- **Street**: `buildStreet()` (`index.html:1441-1515`) — 4.4×3.4×0.4 box per shop, facade skin + on front face, canvas name sign, OPEN/CLOSED plate, `SphereGeometry(70)` BackSide sky dome + (seasonal `pickSky`), landmark billboard, textured ground planes. +- **Interior**: `buildShop()` (`index.html:1109+`) — 5 archetypes `SHOP_SHAPES` + (cosy/gallery/wide/hall/pokey), seeded wallpaper/carpet/art, shuffled wall-slot system so + decor never overlaps, record bins, shelves with product thumbnails, floor piles, counter+till, + glass case. Port for Lane C. +- **Generated assets**: 557 JPGs in `web/assets/gen/` from `gen_assets.py` (OpenRouter + `google/gemini-3.1-flash-image`, ~$0.004/img, resumable `.genraw/`, style-bible prefix + *"1990s Australian op-shop aesthetic, slightly faded and worn…"*). Facade prompts generate + **blank signboards** (template at `gen_assets.py:69-86`). 69 relevant skins copied into + PROCITY. CORS enabled on live `/assets/*`. +- **3GOD depot loading** (`index.html:1072-1249`): `DEPOT='https://digalot.fyi/3god'`, + `GLB_CACHE[file] ||= loadAsync`, SkeletonUtils.clone, bbox floor-plant, auto-play `/idle/i` + clip. Editor palette from `/api/list`. +- Movement: PointerLockControls + AABB clamps + rotated-rect divider collision (`hitsDivider`, + `index.html:1994`). `/img` caching proxy with SSRF guard (`server.py:1362`) for CORS-free + WebGL textures. +- Item economy (content phase): `mint()` `server.py:792-858` — per-shop-type profiles, gem + bands, curation axis (CBD distance), isolation multiplier, `TABLESAMPLE` over real listings, + rarity from live supply. `dig.js` riffle with real physical sleeve thicknesses. + +## Everything else + +- **character_kit** (`~/Documents/character_kit/`, also on ultra): female + male canonical rigs, + props (hats/boombox/camera/thermos), `scripts/finish_rig.py`, `export_for_mixamo.py`. + House law: edit here, copy into games, never edit game-local. +- **mixamo-fetch** (`~/Documents/mixamo-fetch/`): `fetch.cjs` drives Mixamo's REST API (token + from logged-in Brave via CDP :9222). 34 clips in `out/`. Search first; never re-download. + Bespoke clips (crate-riffle, DJ) don't exist there — hand-author. +- **ultra 3D=models library** (`johnking@100.91.239.7:~/Documents/3D=models/`): + `shop-fittings/` (record_crate_plastic_01, clothes_rack_01, shelf_metal_wire_01, + garage_shelves_metal_v2, bookshelves, cube_bookcase, wardrobes, many tables, balcao counter…), + `street-furniture/` (bench, longbench, park_bench_01, market_stall_01, food_cart_bakso_01, + **building_shell_01.glb**), `furniture/`, `props-scenes/` (dj_room, turntable), `characters/`, + `animations/`. `MANIFEST.md` + `CH_MAPPING.md` + `_thumbnails/` exist — read them on ultra. +- **GODVERSE brain** (`~/Documents/dealgod/GODVERSE.md`, `docs/GODVERSE_3D_BRIEF.md`): recordgod/ + toygod/bookgod/mediagod data feeds, 44k solid-object 3D candidates, 185k vinyl w/ images — + this is the content firehose for later. Not v1. +- **Vuntra City reference** (YouTube devlogs): 20×20km UE5 city, every building enterable, + interiors generated at runtime, million-NPC layered simulation (detailed near / abstract far), + faked GI. We steal the *ideas* at hamlet scale: on-demand interiors, LOD'd simulation, + cheap lighting. diff --git a/web/assets/gen/facade-arcade-tile.jpg b/web/assets/gen/facade-arcade-tile.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1847b6e8fef822edc6e1a01866852c466dae4172 GIT binary patch literal 114822 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�SMl~ew}F$J-0}sKbH~UAy&|9={IY|~-LN;-b zan}d2u1fXoB$7KQ(9zuZhHYLIlOJdD)HY5SoPc^{=bGyLF+J_htV~lRWt6%xCx9`= zan}{^I``~%@smz>H+pJ}AK-OhYnapi33&Iz)34jDSb0P6=9Uh55UUV9BF092aa^y5t(X25Z-$X`xu!(~@_14Odez!Aekj#pxInCsTaCHy(DEzJ zyfqGfEcj(e3*ZxTV0Eigu+-$tHIp>#Lf$BgX zrG92=AtRO1vCbDKugU<=*VeyJ{yD>KC&K>#5ZVomBwBc%2bMz80i0tPBRqp&m>Tpa z2I4cj=VBk%t}ED2mbJW(pT%oNHtup#&VJfe0r_%4spfgU%DWYclh+lSJXaR&l|Old zVDvuK(x$ns#ia{~E}j+=uLy_+-#`kQ(bTiK#ZHrxNXt;}H;_U0=~@A{C{u&EK^^)2 zl()Vl)^0=zJlorGZQBt^9WZvN&T5gC@_B*WM}7q_Zkp8ScsJZhr1F(^9E0DzevkYU z@%5gy;R{UyW{loIo>D-Z$>pMfyB#a@zSSp@mmN>1=Urx>apDVE(&I>$Xl7l@z7{IO zoOK-ZtBy7h+&-s1hw5JDaunLXOysRaGrS~+wQPG1)%nwHbMapE;tS10=hAol`qxoo z;g5`3pa?H-&h8HBpZsbioMGd;G>%<2%}y>r7qvZuzIsh0Ng_(#SL`P`fj@UD4hH0AI{=F2Ub z_??ebHcjONAnXrgRh|Nef!F)K_3}rLyc^@aFX9Xy2h#4YCzj?^w~k2WaRW;2w*ihm z>FRq|u}%9N{C>2EO?j@uhk{UC$i#ktR`m0FP6}M6RWkXhINbHP%fv7N#y=WK9moV^ zf%(_V+Q;nw0P%B3m73>Pl3w2|@BM3m)O;WD7f)Qzdpm95e(}0{b3)Fr&De*R)>_#6 zeI!O=oSuW4t1MfXkTM5Puf2Q>ZTxLz^Bc+fa(u=g)~nC1c-qysE}?Lz0G+OKezkwv z)Orx`H5P~8(Azc&jPN`CI@jk%jjT)jR`CR9?wgUHUTtIP>s_yh{D0$E?_+`W8-tKe z56ll84SCk1eRXl;U0U`+)5!9p$Vlow&lol5=2*B^r)VCYQ9;wM?;mG;CA+Xs18ClS z@u7yusLbffr>-*2h@f~pzaI7LC6)w21@a*_4o_@Bao)V8B**N_|$_|(7focJQ$ zg0`n@Tdo6&_=@XBirzAq+Mb`pf5Y(Rxr3&BjHL!iBp<`q*0zpq&$2UE8*b0h74esY zowE9kw_X=^E2OsZPlV*ek?Ig0J2>g>Uz~bnyz;{wxg>4Iao)X0K+_&oQrX9Gj+yUV z^>bFb4md;Zdk+x!cJAY1-ob?m#Fibo?_GG+v}ZxG?gRe-0~PU}pQgrVa0e=@o<6nE z8!f}8Kl=5^vw5$wTf%vtQ9h@mIRou5{w_bpvaU4^6e-QOSI9o&ZGcde=B?fsG^gnb$Ge~&dS4g4{Bi+OFIB&a3VA2oh_-bttFP+q0w#CwMP z0KtQI?OjKWlm02Y;7J&draE#f=R4$2vD^|l*vIs)>NwA6xvWI6kGbex2JxrnP5(R-uADUBwbC0?Oe4F5SgI~B(e&Z55_OEA-CzuGs7Tmb$ zMS8ZK#|$oq(BBgNFKBv~gmoVaX>oaq)}Bw=0pR2Sa0jJ+d;Cd&4RQK^$F-r))-|ti zzO^Z*OUc|2pTt*@{7r{$w(`IH`PnzG@F=L2XHi|7;i-E%mOSPNV;Zf&$3MFupZ7+2 zuf2X2&1V;Z^ynOsA%(W_{@Zu$#e5qUKHoQQ-Nf8~x-0HahBu173e(!y7G;3>ih3X3 zH`ld!`1N=zp59!Sw2`Odxth-RN|1m%3E2F^saI2uGCyBx?Ywnv z^F^gjzw*vWK)^iYFXhs?8~b5#32FB^0k>@%TR8O@=~IVkLKptEI;R)=%YRxJnq;#! zg=cXX`;bN%53>7XHM`(z#<%f&&mx_&*_Fru@{SMSIjAiygnk>cx!lSO3V0kIIpU26 zP`1rI5Ui+-NqcE2Vs>4_(~sg6sk#ZZTgg?rn7JOJK5Cuqz7`vWJG`l) zIBq!JE4DJVk&BP+-}Th&KGNxPwV3XF6O)10{PRl(*r&H^!MGCat_V0JJ7BL<(;tp& zpPKl|cC#`0!NxJ2*&PqoyQ`R%-Uwi~hsq`hg zyyw4q=I?`m?!P|dEJ5QORYBdSawfgmBCYaI8=MS~#~}0r+Ns*j3^Uv#xl`u`01W4H zt!iKSt8h?!`=544J9F>evF(r<=Q9lAP`S_hBC0O&)KZVWtbhN|_*}&sP8Ln1wgBfH zYNnja9l|@f+5)c!wlP!cw|7!0Yla!;oM3=|4|*Zf?cueK(PBfG(WC%pa{xIf*1ks3 z7dGqXgJ*(-FYm)tr=g&{F+u)D^1eZHlayakJMdE3f`yK8>pu@yDAN198k^Xzv zokyivN2tmYE<{nj0PmI`pGwrX@b#qLT3uTPQ9MMh4sc{pbM24J8ixve>D)hg$n-kN zwI~)H?!d%=hg|i?eEV0=*1lcGjjd5g+I+$@$i_}9=&PR%_+W>N>=6YjLtzFFTKUQy zI@Nr0ZD|BxDhUcBbO1R3bDqMt!^R4YOB}eFP1dBE>U}Aw=%@P+O;u%!bdF_mcNZl| zC({FurYTL8{hf${Fj*rU$Z?an6UZEa>FHFpe+y_gF=^%CKRXth7+9`jjYtFdf|7X$ z9G=zBTljw76cQ*51{dbZP&)o#aa?iamoL5jT08!N+{U+w-4WaU?k))p@pzn@z z+og22uq=!7I2c{7SEwhU&rhXrdVhm#E#p3XR?|j|w($=oR4gUA8Nn=0eqwz%u9Du% zO404#PqKw0ft&Y{pbD(tKzYxta@2)6TUKpJ)K}3B*L*|vJ0;Rlu`XQn$Qzp=objKh z70p>(v|2>pZg$%t0Zd>P+*Fl0IT+p6t?KuhrJk=Oc9*WPLJ?6_$W;Xg%YlG-K9t*w zokg_CuNLvdk+gU|V{U!hvY-R&&MU4Frliq7yyT9@9`>^piI{*rcJbD^NZ?q!RilmS z39`8bo2Go<^Pk4Mgum7Ae$S`gT}oq}l?RyZj4=S`pYkisoGiX2(k)SbXf0<_PfVqvaq-qzKzgN`7NJv}R`le>}QW(v`X>K+BsAh_`T+p>J=bO9YtD!8rx0Ecnh zX!`D}_6goSvhMj#F`DE)9C)`)(_*^P^;Kv~$dU)f9cQDw*=uwV~+L1 zUck$43uNu}s(LrYJrBe&AGd>LF6Twx$~M+3*SAiUkFR*+MewxC{keA-ib6^sRnOzn zySb7{zNSp*ZDT1Y4ah1$&#rS^y}l2|i(w7}FNZF2PdppA!N+>&bgf@Y*9zWf)5mcM zk0GOAc|S_a(V$7bHruEN{zbcvasL2Maa7fJ<+pQuH^lu975%1Q1Hm^LDoE1qPGbZQ zn(8h9B$1Apug{MLz@dM72Tm*W$M&nUMev381~%z(oMRlDsB80E!#3_1Z9HIc{{Ysn z8!*yVK8GyY=g_|iwTs^i>-X1sUNThzWP+>s_4CkO2?rN}RfTO=D5pWh_*U>LSTMCKs_=&^V+^K)I3#pdw$Ds z#ylQ#l5_N_pTtwe411U`lPiJui5=TKdsk=Fxt^z+Dye9GlxY6|8nkZ>L2Gw;Bw*b| z=R^`zbF?vEnN*UeApEQW$2i4%uZF*B?*wTj4yAJGxGM}Ua1YYI7~bg;$#p552e@Zd zLB`#k{--#_PX@6TLiy(>wsS+lDC(JUsDAn0{B`}CzA)O__*=)<(o14zS22F}H7)^F z-cuP+PI~*-(Y_)0ai{z^@a30_eiXn=dM&2Mw2AkNy9LXY3`yMR324rF>E6Ga%>%|` zOTxK<$z0}CE!T?r>%zaccg9}>cv>$BX*YIvR&Je3=D$%sHiQ2F3WLN<;3*bo1RmaEo~NaL zI_esui<#nP`J_I^_Kj{kle&GN#J~UAc;uhuT=uO#gEiVdfYS(qeByF90(kjx)}yqZ+!GSWIp;q0&gG@gN-tX; ziEDLeg-Y~pbKl$XuS@XVg{{Jw3P{AaC31TGE6hASp~tCAkjHSG@CzJu_4KdNUxNPt z2ejMm4KAnDtyV%g3o_(m@vk2ph_#^&S=~a4e)P6HCc@`Vvf5;dbp!pAUc2G182DDv z7E74!F~&F~VAs-v;GUXz{?fL`TzSK<=T`p!;ZErhraw74#(wqLX9$`HKkgSfhoK^SkCwsW6) z`J2T*wQq%`QXq=t4E1Ek`S-6-@jt_+@t&l0j}z;5*Hdi?xtstLbP5IlA4>2~iXR3% zD{Z2?+iKQnFJ);5B>Hn&;_;PdQNB)Cd0S&T74=NEyyE#dJ}_(v_S{ zs!nS|*{^(A1jwr)7;XsflUR59^`_L?zz(GKIqzOGajQh5JI+TybJSE)>Qdd?D#mgH zb?2>hDiK>8@|o`1CZTCAtpNT&0l#h#?srlEL6hILQq%2Nd_dGr&AZh;UZfLjho0Z( z70vh!UjNY8t+2bcel&WezodziEi#K)sGKy znO|Vt0IQxZ(ynd1zb-x)oR;?bS8OY|w2nDbQca$5plLs9w1tNNsUwcR(!EPd(#^X4 z)4|E)ReulI$7$jFT}8K@w&qtwUED5ma61a^GC33$Yx+m{d3ZZ)Nb}OaIqzY zrrW7k2PG4~*0tW;tYL65j{WK@V6CV~2WaEz*Q-~ac%R}u<)!@EABQajvco5nCDqBq zD&PV@QOjdBaEqHWdTw<0_P9ZwKZR;L2sJ~_@muS)X!EqBCnd|tKFHBClKrI$>a zSBXZ*m4kpVpyTm8*Qwts5T)^u+;fh<{<_{&-8PqTCYj`3H;+CS)LS_|Nk6DH^H!#S z*v>#aMBI<1eOKeFeE4Hh102Bo41Qlq`C|7gq}*iZ5U|fv(!E?1z0a7Yj#I!}j;3%A z2;BWKUgvKVF+>(10^@K4rFdt6LXAz-AK+u{+P%WroW`e*yPxy#U09!tifcnE_!Fg0 z-OOw&$vz~;P4vt-{{V@7iT?n{SBmvJ<}YV)8uncC@A_And`XP`xJEJaX|^Zv+A3r4 z{KXaf<>+~IqZ)+cIK&Y0f7})Jhr(@ZK)3KshuSXTigb=eVC~cQjf{irYvV6#REcD0nt&80*Io4af%^yvnJ8|jL+PRmrk0f3H0H${G)c4$4{*l7ym)cDF1T8J( zEWre7j6&?$k;pvu>(a8Iv$VU{SQ%8PwNA6!cdP~1^owgda@P?2>Y`1Df(BVook&KkQcRT^j+47QDr|&= z#*D)_2Lz8#Px5QfpuM)Sjz2o+I!$hlizWeyN61&{l_%Glv1@&E6v-3IAVp!b<~wpu zGs*t|IIl}OSkkOvxzyCNT`Nk5@BEI$Dd(q3(yZa^ozW^4J)+ef9j;#?}Q< zaVswMcuTKRpuQB4J03?))tO}$r#0l(aKQ|d{{W++qLUn9q-F;$LBLUhdw1fyy<5ZA zS{>}VZmAS;-Pv3uQW#|tFD|(XE}| zx`zm|g#(fIk6PakCh+xr46#XlVvnmni{MmKgs`0Mvb$@5+X0~>PB4e`!$=VBb z-M1%^(-q6#SlTVSrIzTLAW?9|gEy(quN+r>aS68x1Vnu0OEx$FcCJrdvuo?cwzmUn zr#m~b^f>4-SSdS4UgnXC=8@<6>uIA`mN$k>>`yVooH1z7D##7Z*s$q=3c+ny_0OZh3%}2 z*o|EX57QX}yj6tu-Yn5(+H>}4#xagO&rbE-g1^+Nrq4GXm)Gb&Q{8XW$EDgJUy)Vt zey%~Un!X}iH};01E;a*d3gg%(^38o)6e)40!dgXe42qn6-~OdBpEH{DuyoZ) zO6>5nSIZb!_)kvp!d%=u8k`|_h0B4Cnd^$w@CEjdrudrX?A*Ksm5Q`^!6nB~Gm&3b zd{WZ?0A~*n-CJ4eSK4-+BF1w*ohrvB)1A3Uk&(zFKR0UeKL&UgK+^R!gTekKx73p7 zbXLB6YZJ7EiBx1RPtDK}4=0cXdQza3HyEBDHn(T5Xx=u_rNT*f8@4f$cD4@{=z3nD zi{i~DXk<%-SZ=sh9X6$S4WEt0gRQou1)l6i*p*i&%^6S+LQhUJgU4FlkHyhlc&|=2 zc5p<-3zAAH8;8g{ewE`+T$j2!PqZy{eIED-^Nw&s@sGrRjYX+xFi3^qeZHTMYVrLy z#5YjFGYn7MjFJ57R!yo+7&O!~&Yj@J(MP#25Hkw|FWcy37`kETAA)ch;>r53BI>Q>r>1wgvG zPca)H?T``jpJQ8>@_0v34#A?{*Agf%^5nl5KU(f;N?fV+AxSvux*gZ-()U(h5pML= zm(8@fvUyjKMnf(?ERkPc=|*TiIoL;No5Scg0#-b2jNB>QIqSFqk8@w2-W$?2&kbu5 z>wXiR;(sh7fZ4*a8ONte`wQS+v#fZ7;+tG+(xkIPpw5VKfJdJZ=hu^6UfC%|liudI zb@54dCH<@+X#5#`S&HXObA#XgDie-9tMf<0D&&ozWUhY?TKz%&ty4Y)y>Kv2ktX0f zAGAbGerI?R85xxi&4}_ip>+$oC_%~heAmyH(|JnF zB=Z$X0y20EbIAAiuX^}`rEjindn^%PeRm$U^F6{O5@#7z$vE|`ur)0Nc-fUS@e?rw zu)MfGHrC4w_xjgad8fkmHdnT;H#Bd!dVJg;%DFhBiAZHp^PSl5&1=Tx_e7w97z3Vh zUaG3Bc`lN=HDrxOoRG~X3b7-R$I`ZR>pNY)Y*M>pUU!@pW6%Hva|U0KNXfk9fIVvd znJvx4qRenv@)H>(j+GwL?&hA!TSKk2w}wRzJ0@EPA^!lx8lO_rpz?vXkZ&Dv*Vuvw zYIJrt7T!dcV-iRSF_hc%8R&ls*Sd@CJ4MW5IFJH%92{fRgGy2wiRKVJ)!p)0Nrx`` zKt28I(x%bkiW_MmJ948V8O8=N_*X5bK^)rjPZWDVcE(R!4(7XA=b9ogKoQ|rJoY}l z>p0YH6)JWC`Yd9qT*77K%P8_;x5jKk3n&4_bf2hq!M9J=2n- z&r_dZNFRky;kiHJ@aRJz71ZL!dyE5~J?rObzxK&`pJOY1N*;&kx5n#VBjFc`Jj3$+ zkdO$-A3A?p{Abs6Ia=oGO*!RkP-a}zfT*IkdDlzFJ6`<@jJi{yb6%vU7-ey8xR;uws+50gQTK_kg_vIPU2 zZNW9Dx(&F7JGnNH#ef;fBoEUE*R5^%U&4Bg{nK7U^TTTBT<5Vpg>luc+R$`hl&*1> zz6jJ8lw1MH%8&7`me0Xg@q+PTPDbOjcl>MAd`qX<8DsK*`^8wV10(5B*y*;z8%N=j zUR7*VqS`$=bd;6KT0V>7i&jsu+%$Y(5H^f{b^2@Yv-X?Q{4?Qu9}HahP6nFJ2;!3B zITU%U1`C{_Ic}$u&3qMMrP(xDW%;-Pa!2d!U7nv|6|wVF5J=~f)2OdDS%pe+=cera z5!A5plzC>ZkJ3wD+NVjMKk-b30A!yvI(q%em;M@`M8MtQ)fx4XIR600E8x3Zv`GU2 zoy)M~=j&RL!KYnYw8D1tM;=g6J^KFuoK}&}v5)>GE@52HUAW=?J8VNi5ksobm0)TFH{; ze>rB2*fO?2CppLXieK9}wD0Xd1^z?&g$=oXKl48O)qiU%T{MMn4o2YQgXgX|{{Vnj zmiX)Tvb5KHId!DlcvjcVx{2aRCYeZGz<|REoQ|WBUmuTCZgm_tKt6(@zqcs^svMG}bLcBWO|_ch)UI+i_3Sw5T~e)dq+!Ws(7ppn=GUN} zMlM4D3CDk}dv2X7-F!oybWli8G48N>*O_=vPBz-KQ*`;pPhs@*uJ6KXt>aszVhCv( zFnR9*@7oxxD$kipUPoR5TCzvgUkN2u@I{Xt7y#qyYpT{|R+d4?+_}%;isSwo4 zP>-7s;Qj>Gw!MB(vk}HIpJ84c;@sK1=9SMpGsSIrX)fMlx>nwhj4%{82 zsTt!3{{XFAJ>Bay*=8py+lDwf9+kyv8jSC9TMSe;uYbn7VMCfpvxV2PX!kD(YjA0+ zZsd=az^Ghtle>!E(!9HkDm&NY$O{3}Jo8=$rA`DSc0rdJUuW zuA0mDl+>3*X9+vIA2xhK_{XSQ-2VW=J7r?BLwgp_G`G$3&G25m4X=q>$mQ5Za0k$4z2*&4;KU4Yw$d}n74mFudWX%ay^Ss9%P!RL?({{ZWBuLSs)ZFQ&kf%NO7B1rVh zWMDbL2OJ*t&sLL+HC8(?bsVc|?s?>(N367j;FuvJk66Whh2UB4&xCA%0Eq;y0U(f~ zQZs|opYw|O5?Bq!s!0Um-VUGj&c4L>bp%7fT6B&BZWAkGj*>TX(!AVb_Yw3ta{ctL z*x7+*n)cS=oA;2&>XGB*Wn?)exWO3D<6gVtRPf#9C762AW6!DG<`|=1C(CHdw&aZ28ajZ!1JIy7=;&RN+ z0cQMj&lOt7!nfCUQCwM+@+6Oc-x4yh;f8QOi#%hFnK;dLejn3rbd5?&Ta)uWvoK=B z=jKinbmQw)Qf||VF>XAtckFpSyQG8-2xcB+Zo8KtoQ!Ad(y%SQ-=b)<5{rJdNMho*Kh$LM{(8uV>K!YA;%+U>y+hHQ^RlkM16AH%z7ui}loIL|fY+NGq3t$PyfB;mV`Ju&`q zUG%emXz3|_lEliYQKKkH3^EvJJYbxI+tRxmZi~>Fwe4fCbC%Q8Y8Q;M=X7weT#hgZ z{#A*pX_A+C)lTw_yF4GdeQ{k+gzZ=RVrXUovu@3d=Nn4*`qW-0h{vW)a_ln|lE zs=qz~z{vjqKT6>>2$~&H!(av|cszrF`d4KJ+h~f7E?rOm()f`OeYp&mGqQ#R?s2pn z^V=1*;u~#4N%1Asq_?w9B9m#@*+Nba;s$UJdaTyGN^nL8UtIqHoYk#DIc{#0EdpFiCdDPN2>_qZKHOK6+v+zOe~v6KP$_9+kdSkp zSpGHc*FG1zO+V!Mmm9tFUJE6&$>U2H*Kv5&)Q;qWd)HPLv}Z=Gj$B<1O7xOlPoeBJ z9bW3%;5E#k{H&O4G7{J!IO&i709|zYOd77MaTT4^(!&-)ys8N$PXxbqI6Vj9SUM%K zfu^^WH#CR_N##H}uSf9dx{l$al(UAw`Y%qy@vl0iZDV86RAXsf9$3w(TjtI!LUHAj z871+Mq~je3>FZvX@TL~=KZy>BuIkg+$1IEfk#3>ea||eakOB_pAOXp*HPj=vZC-gp zkD5scPPzGyTzUar2ZN=#(=|D6A=*j6C%(p95Jy5eJY&6AwX$u5s3xM9^`YsHrQXM^ zOQp+mbdpA1GP1rHDxBjO$UJe5MryXHuYYDSw^)>~_qh-2$T0a?HiZ?f*JGX6d{g#o_epf? zNlM2L%+Z{j#HW+EXWQs2y6~D?_@~3yGTdp_OC7xMf{7aj`H}hi$0PuH@y;tUJKqm! zI>X;IwSh{2;c#t6?fz2Ou?qiU0+X5I-dplG93I8pn;0AtC( z;1l((ij{1oXRf5iifT7qhH7@UNi0GOcq4X^Kne*}JGzcYub*t8hEEykR@ZT)fLh!s zS6$fs;OU+}`7p4F-<+G+MFYi|mTvJIjkj29sAdhyMCkMT8%_@7gbNR$Z`Kne=&3agv|arNT9 z%<&viojS@)w)Nh9HvaH|gPyhVU&NJh;+u%`xHL}WpTnQW-m$|}la~DsjBPloQFiKZ zo8S8+@twAr{{Y7ly@$n9$NjgNGsUH^Za?GRI`ir5lHW#eDS^(N8=PQr(V-yq=QV%g zWyRK)t;usMD#7I2B7k!vH`${&3y*%euTL+7sm!8${&Ox~M$TVcgIT}TVYcx0p7+zr z>mSG%<2k~OrzM-7Ip9~&e+<4J>Yg9f2Z;6Jk?J=>@{ z*<27S#(W@NFYS&?|EUsgN%KrdIVi9kA-Z(sQAIkou6VF=rn3`V_ z{43OA)}WIA08X^je{h#Fw6a98z@#GijLruf{NF)dQLOl5!~Xyht>L)vw6aTcX&WWg zwZxkzSWtYb)0D#mJq(Iiblg`MDq$17)`hC7PAxk-9Yw$G58@3D$L&`hMf%6LdP)1a z2x7owt}sRc+SJy=(OQ_Bx8wUB1;VZiC)N`W?l*u{R}^o)sy8LF9Xb&1cBt zh>CmP^g3|-t}<(}>|eDpy}0m2@0$=+lTNr;%ANU)O%Ycov1t6%>J+^UgJ@iCjU>lTi(2lj{ z=aS`>kEF?Cc(!?`#aoCW*Jtw%!0Q}H4;dqNKRWr7Qzc!Ou{_tl{C0!w7n3n&3?maR zJw%*yUKg%G`@*2$o`bD*VJxXZ-0<@Y{br}BggmKsh8P?UohwGd)WGFf{pKBiT>4g0 z!F1>pk%&vvMCzQv?+K6a$!F_E`*BPP12 zuIGC-=uSE3`HIY%=Fm7`Kmkb2OJQ?tGD`xa40FbM)F*A(Ru@24ZDKaZ8DsqGrkW=% zz-I-pGwtYWpS7MSFHDQU?c4FKpS4=V!QK8+cOUcbQ5}M7Q|kW!hxSt5d_0y2!5dFs zQ@OA|{Z$WwZ0;iXv!ON9DR$JMz$1~4IXzF)HP-wkc%}Ga(mQ;UO3az(IAS>O*w$W= z1@hDD7O5s*G&GI;IQz06cE zQ&-UNIhV0sr(_a1ho~*r91)%?*Zd(6Zvtw`7FGP{IR}hx9qYv+zS1;(KGx3m=|c#z z!7y2x?~n7 zo}~4w77E)&d-TOo@jbJ6VIZGemC+<5Mr1|=kU0a2uVv!D4MqW$^Mj5yvFrF(ky?#O zJE*hMr&0+d$*P)(PRX_s_vEv;p z(IMP^_c-nAUR8Q>gS3^7+H;JR;?4LZi3rH|6=EqQ^IAZpf*9jC?foi@d1b&nk^X&Z zW>;82&V9$f_}4kPx2M{t{3ExTs>p!HG*Ikg^Du4A$FL)x!nq%izd6S~p1$?fT3lI= z4cu5yAVz7t%x&j|;~urfyrqtESJadGR+6%{h)(x2ZxIGdu^{q${XhEk$X|yXu0n(B zj(?xhyBpA>C-_ctpIYOkk%(x^bo-v7w56dFIeXGpV}aip9+k*yUSXH!JF+v)cK2`- zCUSF(5$n%t=Niec@7B?uV33@#=NK8!Uuy1*)KiqUM?9mgk-%Tax*13rZKtQwwR}Gj zlH5i;0sjE?R{o=)TR{wyz5Tx3j0*xga7SL%; zQ$Z4B5?OQ9b6&IXx)nY+y;jHkd_NiWiO1_zD9SXZq>b<`OA@Sfny-y~Md2?4>3{Hy z#S7hDO7`MO^RhKi%v%GgL=cYro!kxrQQCr7Iqlul#%Q74*+<;p-S6a(+W2d9Fr!Z5SVqYRb_*G~UD|gT}%y zFfcJSu;-qk*EksMiuuDr`$n05`kaii#{!?7PD5nv$moAM)3=_&^TZ2zDJRaEVptd! zVjK`yHv@x?JLbNYd3^}3RShhB_tvX7er->zH2(k>cz?vYg}l;A<`s`9uEi9#PIo9h zYgfnr02S>#HkSSrwY1)s4I4a?1u(j2l-tyd<0sn{>Rt@}n0zPU%Q-cFh_|w;S?T8X zOBe^2f^xxHY@C2GoujWAuZz4hrnki}iGeSr8h($b+sk`%D8rcTt@6Q8x#md@5jTGk z^cCjN!_%!cY#0cqnRcVD;n9Z#XWo{_ zQL$ec#x(2MJgBV%IABsD;3(P;8TI-Ih=mJKUSi5Z3bCP@?>s}mCJa(K#xHFCnwmhz6KF|TK2%*_@%{TIgipTvJK z$#t875=b{7k2^OUoc7|rs_^&4?PuZt0FJb;5omYGXLAjm#H`J?YY74&Qmw%R{{Sla z*W!M)95YRAr$(u4(?TXHHoHZ)0dv#>MX@)EA*aKm6;51$tGkdrGZd| zvyYd7>08Gy_RUI8#7h>b-rAj4#J>}Gr{gci-Am#YwYu)+`t->21qi-eSVaRE00mG0 z73g}$fTxD?4J%N(NTi)6nUXQQs#~dPJK&SFfCq8c74w&eu62vc(QBu-oa(!#c_b0T z3XTK3jfGrf{{TUn_Goo)5Zp~*d_F$kEti_jd;>#lM3@a2GV;hX%V1|D0bZlS*}+Gl zgrzw`Q)=JVrf-BUejCTFtoBKNcYi8=@uu4p5t0V&p>oZRfShK&lJMunPY`%TjJ_7P z)9jclL`b*Z#1q}i1|(yyYvXjAPVla#y0q|3JeVuDYbCf0Pe%Lh2XDJu(0KCVRyQ%p z465Xvv62{PoB)3+y40n6McC(~KCU-D;<^2$yg_lJCYLpYEMh_$Q!IqHsUYO?dFpHC zPafaCz2dW~x+)p;yLlNGkf5>YpXXf1{3RAKAs1WJY}~}D8$tCIrL5dXE~5?92Qj{Z zZpuLF3m;nZv9PNeO;kOMuBAEGT&E2bk{j8J00)+Xr#Qw2Iq6?jd^gkWrSN@~!=jdn z^y_AAD_V*RzV<#xmO+LreW$}xz zE2G+e7HGZ_Ul-}g;ux)x##z}eUf>fJ&n?ba5;_nM*0~QHN8!`rd)to-LAt=q<_|Pw z#AJ@0Fr@MU=rB6wwtmYEyb=w?qEZBHw{A%X1cGutl$!qlf;>s3Xxev*ZmqnlO+Yu< z=2lsY#r&YFMPWNq6n5;YhkfK`rh_zLcI9X5FM%W19BNg|rx&XLkNHp94(QOOv{Jmee@ zN7A?}xg>24;w%>;>NeePI*gh2h{Nxr#f7A*7X7J-+M!?mcU(pThdDh^^*>MuW|k z*3qvgV#+o}5F411Kqs64IV9i;ZgSBfx^Pl$u7)nDd@n35OU8`qj}d*G?GKO%{{Uw= z6;*Wgz0+nYipDY}ZRCN3Ah#zyf#V$05hhy*pt#A9yP#9owRBoaTbmopJEJGfZ6QDh zJJn7HZasObbtUamzhf_F4`kiDkm)I*ThAnu+Q9qB+N2KMMl;VI#lF-q|u#~5`4emo3UnA%^@75oN2l?2O`{vH^1tEVYRMch)S1f`*| zsp(cw#T>RUK)aMF#A7(de+sW-q{{bkT_zRqGDo>N`VPIS)Xg(nqrw9W50s8Rqu-j{ z@cq2cFqV7(`%VDB>U!kotqQE;7VZ+I2IHas)A>Sptvu;j!z-$MyFkMe`eUsZmh;W1 zG%NEWaldH*o(?(ZJ&5(GZZABt%Xb==Ib|h&UchH3k-_4%tu&o$T-BFMv=YyH+u5PF zhs-6=7IGCizyS8?o|W*igZ6e$srIv}Y2B`aJTYr?B$pP_$XtOQ3XBeOTbibwJZ!Ov z0!SuIl=+6$aol8MuTHf`Opq*oZHk@j#a;H~I81HA@q#jbwR>Azi0u5kX*bN0s}Slp z1qV4lG3i-2e)`%}zC_WnJxk`4GDvmuS1g=QM^SL zZl~26JS`ohilcCKJBs!M=dW+^_O63Qmf-6U$0Tm3HnG};jx&t#F`rTR)jbDJO>*Q} z+s)-{%#7dyfDWT?Gw-D-03t?uw$`2vOqmKV~p3AD|16t{WH?$c9xI& zN6(j2xAvUR6n`;yJoF^7Kgzq`3E5m<#(q#`PclZ%Gq3^9JAeVIPh;WfFC}(M*qFPL zJlKE)u|M*=>o&Jxc z80;=@3zU0!PDwyi?gU_ZcR9yw40W$D)`ZYR;4a~}j&YHXUZ?9`k*8hh_csLzx^MJ( zPSWv(;TZBZL7n&SekJ+WOy8Ya7qT=BK z{{X98WO-hlee1K+HLU{ELb#D3pNXMNyo%T*Bp_rU#xdztD86|iv&5887%yp{H}+wdHGT zdq~@YA#i(w42*cse?wmt{6dtU8R{j@N0LI1OaM6TUwcnyq}=HC+J)e_FR}O%BJdr6 zKXCW2&;J04P{aQK3kOv}=0>GP-a*<3865_HO2Y`F&n13__}1Mxt93d1rjc~^EC|Mv z85!dsqJNQIgQ_Nvb>eMK<5G>KmKM{5YVC-ZHj#o(dK{i{n&owrMbpHQlFBq_V>#`J z<0iN7ydwT2@wT-rmkR_?rGuWMg|>$$1JGB!lG*dK=QFhL1!K?rKd+2(b#H4O zvx!HNkLQr2{Hoye>PW{Uy?V6%HPr1iy%{vW5NZh{M~N5hJEIIFarao`1#z5LAMo$t z*MWf^Y~t8oj9eCe!qPhu&_Ttf+XbWF-~34BKJ=;k)L! z4~HHY@qdFnA3ur}g~hBh2AC;3ig}2b`Wz5?@l>tI+$0YE(kgM;9!K$Ndw13?JZUth z(nYv7tuiMi?Y65hBOIKAj0|uqrTCGjSbR&-Ep_`cOu=K03&Djyyi{dUILHjm!5s$` za*Wyo-MOm@3ANm?_#cml0H{om~wanif4{| zJ*N0`QjzehxVwm3ll{o}XjlnZip7$$4U~K_KOmw;sD{ zKabjnpQG4#lF4^7#3PZ)^k~LF{{Y9h_7vmqNnKexo@GrJy7n94T|Y#&)2{FQF>@`| ztSwwLa`Fu+Q=;P%M^zeWE5;F(ub>YgLlE-wirTS~ZMN&C(kRce@ggs;oOGi%Ie)m0@XS9Y;-u|W6lTs`q#q04r55|F6V!he1vTE=m0${=Xirjqv~=kV9aYz4O@8A z#uvH;?V?@A_EDJzb~54H1sDUg=kWEfF8HnR2UPH#oc<%yE*9d#GP@RFQhmhWp#v(! zb;u(lH9y7=9AEec#c|(g<oyR1JgCrhND;6Mxxo+@G}|3Vrnll;@j!&^!qt)e5EZK?#E(l zFHZ56seiu7&o#*11eZ`fFu(!0;0`*P@1=&K*TQqktkbh+t=xP~xJec$t)XyN)Yql> zYgt`yM~?dD6h@JV3WGfkKc#%Zr^Rn2;7Ky-SOp;a`X1Hq-T`K}&?1;cAcjf!0EL!ERsG3REUphEBgn;g>`$d)cq_$rT9?LM3OjZrNvS|oZNc>KT>-PW z(f%00r=(AI*0O|s@IyKPLf)3pJ{mR*Ib)k@$5Gm!q04UX<8jL84E%W z+3-$4Po@re_ci$q<2#=h>0TzdwA0~fBD=b6>@us-K+j+~JlF1z#C0%NR-~Lnr_)2$CurR+VFpOts|9VqfHRe0)E`><8{h`3r|CMi+G|dh zHuIp7-gXF}rZ$7Sj&sF$eZ;>MZDnI?q+RT9oFkwl5;+}uQ*=8&h<-7Vd^vS#CAHP< z)G(xzMtq>BaV5yfz%`v*H3`M1QCP;EO3CR1?oW@0PSiX%r_W$kMDu}J6ox{srvwql zZ1G<^+FDzM+CUxg{OfPyW!H$l9ef?q^xFv%OPw}&pp}a5R#px&6}baA>t7%@#*ZAV zYKQEnjO4;I^vz>}z*MV7^!B?W6N!u}T6>>P-0E5ulX+kSm)Pl;U0AD)rHw*gVFJ7cVjP z=+izU+P2AjOJW&%=G8lO?^W$}&lzccF4DApLsPfZZS@qmFXce7l`yEs%n9y!u4l#H z4?ZXOJ5RFKd{v{}S=nkz4Xwn=aVAFY0+WxIoE#ii8R03l-w$}>O49ZFXMo#9e=JJq z$jq*)*~0ub>9OLU=ci_(( z+4zR)?$t!;GRj@i<6uINFmuzM)z#{rA=0$#%X=&9go;a}vNU6cKKTB%N_0$Ys@|%PpWBm7TTVba?s#9vaEZQ=esv-=M_ug-nj(hRg-XR zT{Oi(&kUgOE1dD4#2q_X@Sdq>YOm2pLloe#Z}Yf@deqpO;R$fT$qdS zN;$~Q@Z(p5S(PxWb|8wSKk26i=^5#!VO+) zi>aeP1b$;OL?nKMvCh@WI2o)jjrv9H-;K42Zj3?~nlTRfkx%-R&&tOmp7^gHZxs0F z!(Jav0`FJ*K9*)nmAAGjB0Q)F4%;)90ORI0>0mIHr571%qdd&QuQgf5OHEEWbZhM| zL)7NKh%3pn1RUgU$*!y6&W)>&9OyTf8hdPegpxMBg~huM;Uw@1?#Fy)xmEFYn|bD1 z-N|ur_L2kc3Zt)XxUZx975hMV=fNgjK0BY?h}99UkWGY(?u9L!eiiLkm1#qkG1T#? z(u$WedLKY|-&NMNJ19II;|OH3lT^2m-s>f$FrvB0D!BmRM%};OBObN!Hi@C>{uS5m z4zsC3bmFwNLK|ED#oQxImsul(yZy95_N43 z%IY5tBzCYJf@z%YB#i9~k@vBlpN(@mWsaNT4-&&|t23QG#@I`7wTk6YK*oC##1Ex< zPm6Rd8NLz0sV%l9)HNv$p;jxhB|ch=4hZ>At$K08=^tv_Y~XdGo8(qV;M-C0PmYD& zp$wZX?UhZ{_1u}-t-_8lGI7GH=Ze$RbeQ}Jp&N}-$}79Ol?@D+V{?UJkVGVvOoBf4 zPtv;mA4Idc@Hd3K6K%|%A=g@I$UL+VNFnFj3dDXjm+`vb>i+-`zp|kx65mG(fzRKN z00+=x711cD+AFzuIH|eLOJv{Ap}%3^y*INm<`^C8NtBH~fKV^#aOjdESc zIU@iJgIk5QC4cT=BeL4{SVx;C)!?O(yR@%(Ir?%L|MUN}T7@wkx5#@cy~0 z*-0JQxVU`0g5+DgN}zIbNCS)>Ju8ThK)ZmnjFMbB5DalCI3(Z_2PdDxx>S|6Joipf zc1+;)OILeGd0Z(!F<^z1C_aRD_r-R%LKTxqGT@icEpSHwpD^PCrE;3hrmJt~OZK_# zOoJh1g_b_Va#yAZ@7}uif@!ZbK`~OpL4lb6015r$^!}CN=MVP{v)##K%ZQ3Ntx6}1 z0~ul-&NewY$2h?DudF^3T)+GwmUg>I@`E-hCG@CmF;tdCZ^f$a2Ex*5 z)-+Lt-p+8La5&`k>0A+yyBkmXx#_nn&hh@Nb2r{0*K~%5T+(Hh#^Deg!t4)Ba&v>% zobYO&i#%Da`10j1yg_jkw+M=xC&P9( z4SN7`4%71N91=QzpQTvUV7xKKw<gZpD?v5Ts19ZVIoK0Sk35eKGjfs+;zzT-}V@YLu5Rb2IHFkV_O&F7gy^QOO>a z>GqpWn*%Og_WaA}dpa#xIQTMp6A49m-%$HNFlLU@)Fn}B& z;Y%ndouu{ozLZ)srrMD*oRvuXrN189%Qum94$bm?$LrIRk;Qp^tTV%@M+*VB&rk^+ zK4D(93m*|*GV5F>SF3vjA72BkO~TsMLfU zVA!8KQ+7ExY=k#V937>0`yM~f;ax_Vrd*}ktVFbbAzm^UAn~64E0eJ^g~ZZ4zGeY! z#4yiw$4~Mpx~`+B*lL2(*5ctJ5yZ*_hdDXUTOGOzh`~w8a}IKn<$S0A)cIRghUH7N ztCYbR^#1@Nx(zc_)ifP(_5Bj=TS?wo78&Alj;P>G`N<6U`H)+LZ! z`8f_)ugXR_&T(BQ#T`50{jQ4*&w}Oiucc*unR6^rDwB{%1NWPOAo4NwuQ9w)V{VX> zg*n{Bk{AqhHG^Y#T6JC9naqJm80x1Sde*dSTJdQ+_4ygk4|b-TR_XIOtF)ft766_3 z$o~L${42{W<5%&npSbP$CMO+^<6h-?XK;wyS8yYO2R`3ldhp96lz86B80Eix?T?uC z71xB7@YTHzY-;}iX`$-RtUe#h3>u8yXk7U$Gs(!$d{+FD-Q3;$qy+O+5D4zWk@#l0 z{{RG|DY`cq8H^@R9B0&3o4JLx@O`^U`q@yHj2A?V2Xptb*#4@2>&|D4NVE*ZjI`^(}dk?XRB=Zg& zm%@U0`ga1h^h=g|jj?h(ncQvUTAH4|Rsrw-0PC;O2D_0o%PAyNx@es4#&Uet2lTJcuZ?oE z{6WkGy{G_lZpf2`@6 zq)Z~Zg3oNZI0Nj+tOj}(&)&htE325h=oerwE2ope>HD~basCy<`0=zIbK+(8m8_$F z=GNC^Cj>W<7w6ZS`hFi*=ehE{LfUY#cfcMH@eKYZgT!7NP({?CA^_q@&Ov5j-*DqS z^Tl+Z6Gz0@C$Q3Q<9t2TkN2`$8&GmjBmwmm&U`%hg{o*iF0#@rV>1x(uyx$0VuQ6X zq;NX*A6{#u@vp>POI6qOsIMWN8||{>lOW2Ol;;GWPSy1hQs%vnnSRff$(q*kc;Cj} zDb;)vs7dw_5lHhOA2Enzp(TFvwxRTD7N(J{iHK zM|3W=eP>g$bh(@akj=Q@7Rg*-00=?%z5;SaJq->Q_?Csne66TEzt70#{x4tndiz}0 z^!qU!Wo}aKJdkh+!29QKA3qovHRgW=F0~6U6Un6OI2PKCn_IU+3NhQBKD}$w{wDY{ z!}=Z0qY#oyi_5J6Coj$fvB#6o10TEXn)x?J*5`)y-(S)$g5250pS!qj7%L6R0pNl< z))gbGBL4tH@l4vDqo)1uGS^WH-(|#VAO87vAp6%>@TzsY(`VCU z99^uieB2GvAs?^xscFtF_Sfz_$=WjIUWc6cHajDv>K-43OrL1AGNQM6VLQeLsRI@I zH~#&z-qz-Qy-EePF{{35wA(B-Qa(X`J)EuXZ7-tkR8zeDUl+Vd;$>id2$EVv`6 z{pa{sz+M7bB+&1cB0%!c01iHGwfY77Ttp=JeW@-p{)6lP08K0N)4-QeT6kjaU~?gL zOc9K6!9SgRe-N+UBkeLTfuA}4($>>lYc}_m*lBHtpRfa$Sov;!fY0GxS>PWNwvnmo zm!VOOL&v*U(?IEu1T>TizA`#~Uda;H0YP+>fqn=l=kLIs{%O_=gUI z4cr#D4HC@*-2(8ukgny8@tz!H6N8T8y=*Is!9l)=`JBnWu2l6oEm7t=6UNLKq(NU} z1M>_6(~9%hEo72S(gHVhW&{o^=+71WInbWoe-!wB7~>0aV!qSiJ6bZi+|YCLDIolq z?ZtR{UEAt5lFG6b@})ZwhXfy|L+f4CB%EI%#XGAxbu;xFDZap{g+zOpo_#&NE0C2^ z;^eAr$l3>CjCIX+vZKqTNWhiBVh$^TdwdevIKU*=ejZjwJy`qK7swDWl)9e044y0K z9|N*~!VIAI^DsXX)b_6jNaF~pf^s;|O7|@ZVYT>n94T@bhTGHce}!X@))8K1;a|MR z_%>#|@e{!g?=9hQcOHIFFg?Jomd4%RUAK#9UoP%6-zma|F1XJ_j(MwI1=IEGi}vwT z>9bpDi4247awn5-xQqZKeW*#tKx(z-sp0sf2TgHzsWgcyG%U{wxnOd|f-c-(agoPb zeCjQ;@4 zRujSC0@(bGb^aKzxU~3ZZoV(oGp8~KBNz(E7!zOjcWFnMf$VEsZvm&n(z7^t!!*{ zV#{we$aA<7wv0~Rr})ntb)&;^&!G6uJ#$mOl6yNw6G;HJ!Q(p){rJzdb2i!=N|&~t z9JBKzy0`l?I=7aqyoPMZZ~!W}BRL@Bn#~%0*TOg_DPcCV_UM#c!{wi`sY8`6_%aq8 z@B)2JW%U>)T`5nOnoh@I=KH^f z{wA3J0HNA8;-Rr5k*^KV^1$QM+P$vN##&rWC);$0ub{nmS)h!xW*~lHQiV`(-&e>H}cJL73bDH+4&C^_~M0oYEp3>9( ze9wZ1!k-zCL)eU;Sz_=100a6~)A%dLwwBMYYL>WzPch9Tt1LyM8-l4&7?OVjUfHXD z$2#L~9tYN}b!pTw`#g-+vz8r#OUJj~$KhTxqDkWqhgO~-vAMSUE&ZcK1o2$PuF<-_ ze(Qn{*BI_Ns;N=R4$T=l5`>pBKK#<-@vgO_*~xG515=h6BUxaMNh58cfFK1Yf;}-) zp9Oe|UlKv$&lY%&`&pLG)>vT|VNTVMVBq!~XBFexezD{48R(jBt>MiX)g!dGGf4%s z42Ec!Gs~1+z!0GI802FWdq|tc*8czzwTbo1*=N(`7oJol!y^3OC&~}Y$4dBm*cy;> zyw9hhj#IMbIIC~kKf@jl)-NEqvALFIK3g&s3QBh$TH-uY@#jVHe~q+%6k6L{MIM?? z_!|ViPIx1wa90{6I^Mf*mitt?O28G#-kHF_^{o8|Lb|fl>@M%1+LAAqDsANmIOpqL zwHy`-KKC!ZZs#3*MkZ0^Z$r|w?~Ph7hBd8X>i*j1VX2Z~LI5$TCysu-tH-=U@in!Z zI4z*Ii5lH}sNI)4kPHC8_a36Xm*QW7qF)X{eF_G-ir~j93=&m_RQluTUKOo)H(kO|^dBTYv73*a9YYT90|*0%4DwdGjj zpvOQfvAn*XO*2xCMA+il!S(B0#kYjD9Ujid#R1}YE}W_aZ{99HygOHS;;jzm_rq_h zz*Gf{EyrdfBOh9fOQr3Tk5gW_bEmwx38b5wKXn)7Ni3JJ&Bf-)XzgBLk4V z>zcEP)>#aa76MYL7?ZRC$6DUgbZuW(mR8cCX+jVrU_b*si8!ItP*%Riilb`hw|pbn zcWZYD{{Wwa~_earAKOP0e>ytlX~ciMp@9Go;)3_l@X5PUWJFNRX`D~4$b%!T+I z9it#%kZbPWfqIRGqj`6KrZ?^;xmgjt{F{!xm^I~N;@oEXXm@2zePMjh&EMKiEx#7E zMFS+XIVaP|j=ZbPPwa`|Wf@QpKH|QL`1zvQ>faZ2nXZ_k!wga!9;92xj-IC-Yv$xv zn%?FvPD-c)&^;vyS5SdzhgP7k2jT zyFEWD@1^g%v(2ed#Tz~ziU}<);)JONRXHE-oK|+BWr&X)=N$Xhj|Yg=?-3Jd1|yE0 zjdT)Q87?9qWqiz$>^bN1t{YnuBzJRvv#A-DKiV2?o$jG;0g@YuR>6<(?f@|7*Cj~$ zSH1jl7XBFU#*5)t$la${sA2yAO$hmj$8yBiBk+qu);vSwZ6CuoP!F(OPWqb@le#!b z+L6OJ&4*`D~^i@QvCiY3Q%~bCVI@ugI z!g~v&@l(V4Matv;5zQ6mnNRS_=<={W;idrl*9fQn5+9BFObyO;M4A4O{OA7wK{f9m z3G}^2+s3{(@gAs*q}xcVA;DHRGM4#Rall^PE6jcp=yy7o##wbzq(xz;-d!^h##u~j z`R}Nl<0(PK-CF0RgM^`luPG}#rTG55BF52wm!WhJgzBVi>I>VpV66JlmND@Blw9h^N$@?^gQ{s4)^c9U z6iFgEFwL1G;j%tW-|Y7|HL0X&zA@EwXf$~>2GjKMx-ns$76z754uinVr=tW~{-T}6nMcH9s zOS1-8Bq06#oDf?Bs2qLLF~%v~hb@dvYAtI_)BNZzB$6k?e)$8&-T8RQ9kbJl)0M;B z=yJ%arMx>65ITRYexFL>_3s5Xg=Y6Qk9lC&z*S)JlD?zmI6NP_#yjS_)iOzQ;m}ud0D&v0B2{flPh9ka$5LOBaCum(&9YxjI;j$g?(4>-Y+-6`fc1` zzSu}0^f(&^(p)m%&?Ocks_oxKc8#>7LwRSIFiv<-@O$_PKJt zDf%0zI4wUej8scJWu7kXEct!Wy}MZ+kM8^Yx8;DAUSd)INT zTMKUs++H$n2qO#anHSQ$se|0wTs#pIEKwO{&OTI9pqzdy$2H~Cm%#1)U7oC?esjCh ze%Wypf7$?f@;jOKWABzEcaSb^X%ay zVTkev9d_}-HM*Kq_3jEky!jb+*1~%b^RQ4n#sRn)J9+g7)}5f+G1j3f!wg&;jl?lM=2wdmVxY;$E zr;A6MnlcXcIc}v-OnUeHDlK9MeST|r(3IO2c+O562R~2Ns+_GUe_cXq{Hyxd|JCtb zWs>;1TNGe;CoRCo)3?2Ha?53BacOr0wC`^aQyOJMV}pZ?dydt+45S^oYZxq?$dE&KVt+^r%%Mu9t+jt!D+cl%`&h9qSB)E0vY1liF&Q({h*EQ%r zZAtDSK*ftmjCIZd{{ZXM&c7v2MHT%aDlOB$Gya*zf5JblOBP-wLOw#J`;o}$_*cw! z+I{YwX6mu6C}_NF6eN$EIuIeRZLm;%%IV zX;Cf11_Tl^=Q$t!dh5$-^Wp2=bU3l}+Qd-Tt3I9ZZksgs#7wd52w9bw?it{Ae4QrJ6<(y4pxtf)lqbzmNw4 zy9*T2A<`_Qk5k>YTaUeOD9Orp1oRcD;!QkUc#>N<(QvZ5_2lKfKDB}3Ej{!*J3CUl zS)ON6$92BUZGzrTiyCbNf;c^EvGCp2n)+SbuwDmbc$Lb*Ck55{ z!97kZpYe;rb(vw546?*H#|O$!O4#t_lsb2Z?&ZhLJofzX4+}5jTS}yFJH>SmX89rS zK7y^5pQ=k1oh{Sic@Y)NE;7XD?`MvC~{<6{{St?KbKrrp@gWOU0ta5{LdpD z7PAT(_xz7x@fyXVC7zRZ;O&W=NQv^FotR@JeJkLfiMBs(@t&o7aQh6AmQ~tLP%tV< z&vEsyy1pgJ1lpCnZdeg+K47^d?<5NNgW?$t;+v9#rLH;PyFgbLcR#P zcOkdhxxsEm5--OXt9Skb({=BOH=6zB!$XU!8)pFLXg0C)fIV?vL6Ovq6x5#jA32`W zl;sB%u+I&6r^4Dl#~3D#J7ED>fL*1K1J{GM@visA9yaifrSTI(RgTXP-AwLEk^cZK z2^qm`fyOJ$bPoXdN)L_J+I7^EIx40JM#&+tarjqhu6#W3RQ~`PEObjFI8CxUWgk4} z9ANtMUsoPW-tS}O-#x67-1M)H*FO&@(Bq9QZ4AF@f-++ze(XOt-c=n=de@kIRnW9Q z4ETS;+P{LtiFpi>U2G?EmyHh91Y~t#-!;4O_u(gp)$P|$)Ezv_*%xfQaEluE`r^2c zh*+?y>zfz7jqXUo#7#OdwJVoQZS5SQh=SQ}C zkF&sRw>W16TR0&1A504Qi^Us_`{-B3BI0L{Xa!vuJ^&dVc)_fz!cUdU%=B{V(2A&{ z?(VI9o~9j*oyM=J&vgq3EYikbF_>`5yo4U7aZ)`x*Qfk6)Q+1f%1+@M$13BKg*YOl z__N`dyd&W~2TarW+VjP5-3vRaInFxroM*7basB|AzS_{UVM=q4ucb~IEfeZ-=1u!) zKbc>~dcL8ic;i>oMDH4<f@sI&>srO+jlt9W#wY&Rlh3ts zW9Ip3MfW$#Xs&9tBiQ>V_P7B2Jk)^iVbps`-!=K;;9F+6(4>cFFE|VjOa%k4T=%cN zKWJ|eY2G;aJ2#57to@erO!Hzbw|3t+uRBQ{yAxj(_%m!eYpe$k9E_tpLl% z?-h@`$Ybt1pF954O&*=C>Gz8fVH{;#Hz0=3VOYNdzBT*>@I~~OJ}&TrdG`27^#df5 zO5<(_0OeJ_gQa#Kw4~xc6WK({FkvS>Ny#Mf_}9o9ExT*8>Kb&G&pP?V<5=*1bU(&2 z2n2DF_}8(3<(?7>YfB^NGb(N4D!9FFeHHOz$3F#pZ)vG(9}4YtEjHtFUe6Sg?uUA~ z-08;UBr)SSuaW#KCY^n8acQhb@x}MU#s`_ZJqbJ!^{%(WHsagF68L)MHb;9D(FOw_ zeOL?w{np3jUNL1WTIx<5k;^If!LL^bPBG_-@;s`ylokBXdc5%GhNbY++*{ntq!s`& zsn1WPar5{BHPcs6wbWuN>JG_)Q~hgB9akP3XuQ0skndyE5;*PC8Lleg`J}cGvofmi z2W(chB4lZtmQYaSk!%_2x%8CWkN7!!|E?_QtbJx*T^_y4^D1#ips0@esoIm@rCgrNEDEstHl@n);zxtmh) z-TmF~AGwNFVxt^Cv``YGeoSKx1f(%$R#fY)SmmR~LcMh;c_ z41#rk$3~0O$FZe*{IL{u{(?~zGZGP2j zCze1bA#$W2RmeZ#T;=wXblZbvJ;VyI-7ADHG6RFgI*j(Nn?}30xQlhOWfU?pfxs$p z_+umUqNb@dXG#**=Z5$y7$@=ms}AuTtjgCLqrkue8xG;uzH8ehxO;n;Qq*rzBNt{P zaUgJb?7hcKSB-c!+)MFOR*ql15nDfdBLj^6Gt$0-jV*B_Fdw;sMmZVzoDrUWm9(Pe zHDjJL<%7A5wh(GiEH?^%(xgWWoPr#JLk1lP`qzf|<51IYJVoKZh!<)jxYupsvYt?? z!S3v5*u}R34*1w-Jw<&Vq}-%S0=8C6I7J|m2*ya~(~9yqv<)}J-U`+E~G*apl2qL#F^DGWiF^$*= z_~mdwIl;#jweaWR+!q?|t*$nyYk1m?q|XX0jI&2Lea{=GYz{r^jDTSMePB?}G1c^t+h@T+6c_LdX~$pkNTB z6VT$k%tR{5w3D&dm(Zlzbt)v@+MWrnSZhD~h*!*9s8=G7C^&~1|ja&Ob#y2mUoGE1C(n5GAmEyQNuMl`1>rvBZwP!Iw z6m4>n0z=9;Vf3!rRp)5?hFH8TY0gPhx;Xy;6Y95)&??-_!(rX?u^9%ro4c8A052?r zkOADp^IqBFEB^q7+MUJ4*24ozi}rPkAtPXZe2(CbmBK{_gPlLqu32_D0LT1Gjt&n@ z8s0T;uOml1WA0fB2@c>R16--VgXw;$Iio z#jE@}(Y38yEZZ998*-Y~ca`E{=d{{V!G#2zf2F15RZaU^PxqqkkF!1~v}_&dTD@q9?J@J6RO zp2{%yx|s!)e5jLiE(f>+uUf)XTz$%ty|sTMO0~asxfZWPL#X)cR=$NV?0h|EV_|Tv zRmdT@{vbymhc)$&?1^^KcxvBs5KDp!f4OsCCj3kIlO@B+;p+$@{?3Xc4W+plSYpov z5APnN=aXMye##a|niZg?wFD`LoviQ)4aK>9<#!wV_DWo;wjH zQq>*v<*!gl`^OcBR-z+(q(b-_tXd!vR>Ud^j)aoz~hZ0&7sFLk?Pg)yiq181n`n)WNt7HBhg zYU4ui)vdfwknxWwjhYKc=dotd~woR(2LF0q{?t9l8XYixMf?K#F z)U6gF8#3==Iv#`GuAMl#?e!H|KdYr}52XGB*;}TRb(@%=-DhVWodl@3B*;wC{N4Jm z=Uh1P)P4^5({s5j<%?HEuy?#^6hyfX!$!c3>=ZV5{4-xg{4w}btN3@oT5g?nb8OOi zO>-j#JiNa!`~vM2@rT79g&s20wd<`y53{-~j8_s2kWL5kttnxlUDSlvy48#;R+Sh+ zQQvdvyO9Nlf;HVqtzd|UjYxnrVeo~>Cp_T30q@qlYv5hpiF}?h@ndPvZY^~9Y`3J& z<&1@-U^jF>D6d=aZ-D+K_}}4Orh%+W6JBaJQ_C#;1&#=|#u%#OI912FBE56MAG4%> z3HVv9=&@eL*B7^L%_tn5sH=m|IOe&Q4isM{INB*$9>g&`_y*+t=}P|qa{mB=d~a)M zrRly2n^ua~P?9TWj&{>-TQJ-zusC+f3J2cKI^wzw1o+lp4?(9}2y`eOB>-EGGU`Iy zWI6k}$@{$E_peRySHTa7c76cWV$*feDj4HOg5?2Hj>@m4cdSES)>j~PDa%y(V}(xs5iuC$WMShLA{aI()P zdTkizwR0NRggh>i!n%4{g29g1E|s7A+;Tb&2jnZ)b-#jIW`(L;SYNf9PY!oA#LUdc zYMwy=WbXX)Tu+O>8)%kMT9Vp&@0F1PF$J)s^~ocVj-5>;m^TjRo@;tmt)=L$k>1@! z7!Cf9b_>LK>`rmRbq73y>06ewt<~3sox*OD!|0>|$NK3yepORe@P4zWcw%dvD(>bO z!V>GaO$i(vU>uBOe-HAh^kr#oyd~z~Fwj>edK2f%&{vO~{{Xu)*U5k0qhpxWVY6LW zMLM_>*kf{$#>pfc1DySHUuJv?n%>LdRA|W~EO!$s5L7WADfH`~O8CcJbUN+5wlHJ0 zkx9q>G-504&w^;L@Q6q_WxAZ_9Ovb)k;hB-2{qXJObTCEZ9eCxY2GZ;JYx4=4Er?p z?2w5}*+$066O3cIJ?h-P1G6b5zxIXFiAKqAsmg*I1oX!Pk81M|1GYR}e(I!yXyKox z&)!G=ezodX+KV%&1c0Ei!93#wn)9&}HS+qnIB}U@7Bz^-N zS1s`d^2b)uppJNCa?>atQz*t&h(9nsodt7VDY{L6bEH zFk=Drl(@BEdjH*YB4!9Yrjd|za3sxcbD~~`vM%|Cky=e-vRpOdmIuj~M(UZID z)adTDn~AN8+?b)t@(;{OJ#o|dSD)yYULkvn+0)1n%W)Rs6;qa;5h zlWi*=>@LtTl6lV+ZJF-0`5=~b`$MY$Rw5K+;9wJwarOMGZt}@z)--j?y&QbWIsF#-7$C zdE|4xctG8?a8&NW!1v;`Gz}G`)othdb(6GvsYPih?i;HyUL*sU9eTyfOA{rRHqC*btP>P!s@F{{RZ=38ZRp7PXP4 zSO5!g3CLG&<+%MSjkm+U9j>nx+}8Hb7?w6rE+HpqVU9O+70>MLIGypRtt8I=WtQt( zn&cAa&wfW3!&IIzS+8cYdzAU1^9Qyvxcn>8^iK`kS+uRFM!9(%&euc1VtB!MWxWsNd-4#kFkwZjNcntFd%I=!qt-Au0pSwwY}xLlb$snn0*<~A6` zb@wRIr<4~Uf-&14&{b~@X&R1~b?4v53@IFPv2#2}{#lSS^KsU?S);X{A)A|AH_F(! zi?{p_y+vA88jgciq0cQ(Ch?VovT84J_jee|fyQwXb*&9qrMA%lC}WW>(GJGr0VFvi zq36ANHnpK#Ng{}n-d~k7`{;-841W-=N5tM5@fF^c96B^X-DX#j4A9|!bjm`V*ukyg z8M)0h++Nlkkk_$|;mul8uW9iH55D3dj*K$Huf1`84UIqHW!TFr44XTXo`2`IGJga4 z*Hz*F00(%_N%0djRX)Ski1WGKfpL@!v z7#X<1JRUk?y-YnP{hf%4-$Tg8&Mz{vj(jI~vnxJmiTRp#K2tSI55) z)F;GkQ5^0cW{+=C_v2Ifb+5ZM`yDS-{?E9Q>d}O87FP3<7~bQ9o^#T^DEOmdPsCkj z>86Arja6H4eC&)2jezm#TzFM3cADspyi}s;MJLsqjF3j27rBfwk}R3JfLteIs z9rD_y!U^Q9yhLF22R$*~y-XCGBIVhm#>d4@c70PkxOgYV5d3S??e1j}&m_A>Pdq;( zC;HcX#Npirb*rQ=;w-{3U%oYwsh^Zkrzu`?oDy+^6wlN%*ZFh&0_j z^2SM|byRY|@0%Sn{>^E@;+y?9#d`Shd^;su2qFV$3dU9mf-#O$KQQDTYYW9+6Ez#} ziCQ{MZ!}+LSX_l?^)en9x38sp&w{4Wej`uf{YO@h?GnjzWovJctbfszJ7jQp3VvX} zTDi8N??<3hij_}tT~1TSJ~Z&hg?v9_Z>NiR#8=mV6kX>BZrm2fq5c~AKgD9l#9tH^ z>KkWuy}3(~Du6Pw;zCFm1F7v_V|c5;{{RnH;dYy-?0cK3ZbZ+K@{c&b19mf<4tjH6 zJ8C+0o}KZBNz^UBb#FbKU_?0qmL@~ff&pJj%A$;+9nRb(TD0m-S!|78j#d%f_(0#G z%E5PTz+|7ijJeOI7+20d4r02n11*uzcNO%9#w&>Q&xcmJWX?SM%c!H-kahg;UyiRP&Nz``ibbk=iB-iwN@y7Tkw`14toR9qu zzf3>imr@3~)sew0EnQAddNf0&esFmF_*YSi%Gd3lUDc(;zGP^iu-vKFkO0W*>tCYZ z@JuF#9dBQ@vtseZ6OGI{IcSLeE1xls!2bZebmbFPs~i2F)cafZsHh#N zF<%4tI4IG|KTXAm{Xa_hE+lrV6YltZe(j$>{?O2iuNPV%VTf&l!ZNPytAb8*$4naYnLlKG zAMGuC+Juo8+;CPl>T`pGoL8lQ$Kh$=qfT>M9v)$qV=7{2QV`PTnRtK0`X`6{QGcp< zjwp2t8Syom7?pgcX3G_2`MP5RJm$VN@u=|l@vYJRaEJZGmh`h|P& zKT2p}w7J#g+=LY=7VH23!RMy}yvI}hl{^;r@?XuY+^n*eVm{6aWS((dcuaO45|pP? zbB?}Mig8Lb&x<3v5qM7G*usTgbv}LwWg$<>J7DKMD<@C7hHngASu(EdHV!g+YT*5Xa@CVO7>JbDW&z_^y~^aL!5dq5V@9 zqa@(dwujHw@Y$myTd@$N8#Vm*SziJuCKRyz{;Vyk*R4#zZ62a}%FJJM&&i;R|QcemCf`d4@>NrxONl zIrB#!k*}aW9eg;{JOiQX-W3tQ*wQ6<9$mS1A-4=EY!UUZBhu|7i{l1^kOF^b!m2>| zfiAs{c;o9|5jo!-CFlB|br@R(7uMgQ`ql9gdrep22CI2y+oOFw_L1Ld0REuY;BSUw zYY&M2C)TaqM6v3&@vZ>D0y0R)*Ym-z-mi(ax@Et^Tl-knGbOH>D@T#a2LV{G*PQY7 zufZD&`wc(hZmSIQ!xK%c8D1th0U@^;B$1Ee$>zS27WVS=Uz)X^mV%bmQij}uKQHpC0KvH}krXRqKZ#O{1yrudg#iS!$t z@ia0-vI12KG7Jz8I4q|JrYqNUXM!s`Yu_<;M|6fkp3+3XEe=73-007Ig#O-}@!R>CK@@`P%hmG?SUD=X0_Bs+)_^wC(GF`0omLP=K$nUQY(|1 zCsq=rr|jpokA}Q`p(lZSYpr-ev*uY{%>-+=B&ctZv+lSwPvBn_+IU>+zv`mfxT734 zE9hU0{uUB^LjM4S$_U!{-PzjB3fhk_+&}uBJwa7gBzlVIJXa2@C&OoxU9q^+jlvX) zJCzE+0nZ%q{OT&=q?CCUola_a8g6Y$R(Cw3;BATVSsnz{=M7=5q_EvI*&-=dK1(n6 zNMHyxH?18xykFA;4~ir-}t{#{?E~)-L(AkGX;qUt2b|_UuuFzj%xuS1Cfjx`d`5j z#jgA=i(RtQ}wkSodlKYStZPmC?> zVcQ*@!MVqtQ*s4Ad=R+CPdPp7l301DUA=cMHQ~+Vemq!sadd4)8Gp1aq}ejL0f`(D z*N&C$nijQVV!k2P?l0q>;_liz80SEK>21=v7~^rr1GRKtv`@ot3H&p)(e8XN51!2v zE}KN8E^pdn}uEg2ERl90A?mjOBiic!+|RE z>Il2(o|V9AU$F;@?Pi1~qUO{e-!Qj`$b+`U`%W95Ru%0Z2Rs))fc5#jJ9i^W*3&?D zIxK9$M7wZV6{G-=c>&FH=8>r!D^q<=+?msOwCS#g!@sn4l?C6%okvr+S5#!RP}_c7 zh!ej`^Q{*`($1^6mUflPHhrt#e`(JYd`hvs)^vqcUk|jl&lH9g+z3R;SL==A2j7EV zA$WVmy3Ar}Ma)6>fUheB;~fVC4A)*6RGuCUy%mm3N`k~x(_6FFb=@`yWiv;Fe1{F} zI)1d>N5=jn`y(&gr8onr9R8K(dd9!6YL1O@3tR*nRnV&epHibFSKA&4(6!A^;ck~` z+Be#5<5J>nw)rmYla?obKi;m1$;GB|^C-clw?2JMV_lEK)_R1uQxkX{k2qhIw(*X& z%}c23cYbT7(~W>`+)p5!eiiNi02pjPvh4Ir7J+TNyGb($3O17~9(M7~cm`rk66S5p zCwcs?zb}`tw@ha_tHMpnwuIM@`#Ji-uG~wd_;joccExI{q#XRJfM&le{7vHxX4_LC zCwvsoUb$mmbX)7=Uic$pue5};np%fE{pi!nZ2thjfv?Yh8`()4i|EMMse(c2gI>-9 zNKN^kRy$V&eaY}=;zq5e*l3z9^~*2zo|z|+AtwtboYDY&m<)TI3i=3Z`tbNi_L;7y zHy4*voy*IB(-j*>LU1@0`Q75JLR~+?J{G;PVv<3pK_W8nLj$`%pGx~POuT;+d;`*N zBN89AA&`jJD+X!XIAg#d@sraP$B2{m&3YcJ#fTC9H`Pv{pf3hie4|T4o9}liP9Yit;#o zIpTRdH{u;G8{J4H&6M%^cS^S?*^e0ByRndQyWDiIHTY$x-1z6hwpW*DP}Y9U0zzPx zPqSIU<*wbJf_Gt5=Kyv+R=ZQ^c#mtFel77wf%Lt4_TuW|&PnEt5BfAsb+w590G^K9 zSmAo(A2+cB1H?ZOd=aa7e$vM2w*Z@yn14;+H7OZt(z%d z*xIjyF0On(b1+dKCdzL*CM8Bg#Q0!FeGUPvuMbNhy6};ehdKcRJbd41mbtxm!cA@A z`>jF<$}*@1TPMceLHVNkk(^_Z=qsY|$n#&<8`o#Fd9F24ThT)#r(ICJ-SN_Y*8iMxU8jq@&kea{Cd^OjlHFs>(rH2@P?14L+URA zt4z@{pdUJ(Gm-~A`})_*o-!sY+ovfjCs;Bl9O@^pG40em2twGj1}77xlVVe^m}$V`$=rihwN|m z6mK$k!Su?+Ni`*u#`jjVwu*0DCgL@~nW z9D8;8)qe@-I&H6rqMQ3p86+lV2xFN>;R}p>$&Y&LjTP-Wl} zbn^^z$8eE??;-|FHyKSW>DwMezO?~CMtC>4LxUIA|h&10dibxuF2uCf183*&O z!^EZ;bV<+gG;fY@e(CF6K8-!juc^nVT8NqLT0n{B5XB{2ZpltCMmzm$qu2Ed)1h3O zh!Gv4k$k=Tn;TC;0U17(e#%_X)qVbFJgO$-(tmN}14xqY!U)2$vZ@n|@wrD@=(J5e z!p&zd&SKbbIKW_e{{ZXyS4n4MI@(8c_TgMd87d?lFgo%1)3mKdIqxo(I0o`iJ~BRK z$RLuuj!DR-l$w&d`~1x%HSX#7AOF|lKF}IHvLPUzMtH_6lfAcDrhTB5UzaR!diwF2 z>z>>qGy|yQ=cvtQ+}SkI7`JW*kC&$%I6js6G$xflnfha1`QzRzvTq{JBqsyS!6aw+ zGgUkxZzuNLL5bVt+^Oe`m}K>?r^QgoZxjygzdmL#F`v8JrBLuqpP%B35it2AmDPdw zjj}%)^r2Dd>G~Yx-`2i))S!EB8tLhbF2}(b9Bw(U zt@UjhMtsA{#x{Y;74nVZO>yJvNL+z~Celg9Hy_To%O}l-uG{EwW-8d47Vgib{4YDL zmF#1xBrG}(vJQs53&Z-9*Eev)Sgn9vnqj)wO zzwJ1rRYpSK?q9u}{{WoVm03rgAJA0>to;seRIj=R-bvudYk~v9V-pB|ir_6eq?`}@(TXx^I&g^aAgT_6&S2o=1`rOjm z#G$JM8ZMzLbry4+WD$~|rFj>JBU$HBK6k4RlROV>pXHuw()E{5?3>v4Za-z0I42-u zzI*%E3E`^(Z#>xXu@30V{W=!uliMPyPxnzS3*M3HvQHx4O%dpe9@Yd8`DUModfw9} zl6cvnVs=QG?Z(F9yyH;S5V8GyqO95n~5=>YWWA^%mjGL zUMKitQ@0%BYW3}0IA;E_JNX^Bzu?E!o^>)k#)Wei-5+6g4eCNfIv?p>q!Yc5#;M{~ zCL&>9FSj<)_UH2NTwcjPvgT#`qRLDVJNapv>~&crv-q)o2{`*rnd7JWh{yG>W{>bD zczCblz~cO2;u{M;6={YSgLDP$+sj;#RF%OQ9M{r+4!mooUVKUMCb@MyMn|-b7tM=; zL~e2SxW^UpC&cdC(zccKFVmxqZrkw##Ah(8ISO(XXJmgT#t_YW$^RH zzZ3MY5qJg`iq^!qo@o)GMvhaEL6>VCqj4>O0O?tt5Aa5le%e*l>9lF)iRYQ*kq+l& zT$T&SIVX;}^sXbt9xBsx{X+6t?PU=%%WRls!|cdjnBxbxO6FCiIcj=!u(YuBqbSKX z-$Q@)fz>n*5X+>E8t&TZAxTVv2M!}FQyD6KvG`Ylz1`-IWcSvuwnZ(q&mP?+bc!>t#N>Va0g6( zD*S=*4X2r^LnJIPBmBAPU#uVSOK7fR)qFyza&aEuMsT6w+;P)^-ngsObEOOSJvvmQ zOBGfS*(drRpg*--MsJ6Dmt*!Gz5f8#de^}I3`6!Uq%4DB2S3XPu03n-U)p>`{{Rp5 z3z*REdnN~yovSwo2lV>a=ih+mjqT-LLFzYhI`fM7ekNbMN7``n{o6hM$|&S5DFC+M zc^iN#2S5+CE!Jk2e6sE7fE0t@*P8jW;&;UV02ufq#edm4RJP{U={(d~ke#J|Qn^w% z@6SBfm|y&L@%@x8^1*Dt1H$ha$?4X(DCGExkc{Hhnb})9!qS_kJ<;~6#T;%`$@#g@ z9Cze*6#oFSrObf4tEoJlxIAZ%#Mi=q@Y3EbwQw%%?VA8_Sg!}RM>(f|!&vJYbEUMJ zEvN4=REgiG>s?DC#rYiXh;T`6&${5V(}RgFqw{t!W?nxIYPRQcAba-}j{g9)rk5m5ZhSXy`_q;`ZI?Lj{2YBn zZ48GN(S*2*2Yt`G?erU4X%U`ZoaM3<5PeT3vTl4iWhKt*rUgLxHhjF0dV!JOn)tg) z{iLkeEVg_qibyCqEU`W>1(WFt5BH=%FeiOOTuQhuq8avOnL#MBsbv#QU56Hw} zLHS5*DI-3-=D$B8`05)>ZxbCB2aHRPn(|g74UhTffzQ2nGXB{b-j{H?ggQ(RJTUnx zt8nE2#~4!=T=T{{*R6!gu@oKVn>?IWbA_$&Ngq;p=JQeUCZv;iW_Owk8KZ{isc1}v z%MH)B8Q4cT1RVA?e&8tcUu&_Qn34S@_l zHuVDmnXtT)GC0TQT5kmjk102gSKTwyvihCZRDPU% zShR{ChT8SaZsu7urU46_1&_L~Ku+(N_v1Y)@G@Hq2>eIl9b#qP%c;G(sTm)>wp9c3 z;=iEJiZ;nN!(CcpMh2ZC^vEH$p1pfl;05SNb&Yy33ora6wuO#!^5sGQ01w8#whQ<2 z^k13s7@2>F-%yAwzGb!Z-Puxkwd=mq2Fe9WXd1MuWm3Gr?=*R%~YP$b6Y`T!n5;lBMw;eu7lIQOq*@lD2| zZ{U4i+SvJJwMYo_I8uh;N$H+2Kb?8M#Z5l;{2;VCzlAK9%b84}HZ8@z{iJhDuKj@UuPYiO_FFCA$z zUg~}mw~AztjrNz9Q7#8^hDRTkD5pkk-lUz5sn({_QHJN}XY8fonLKas&QBIyFPAIH zByy?3$GY7@mq2v|l_RMURjy zNXxlH#M))|f@jp@)(xr>%W-vXxo8)5b_HXS%A_e_+~f-Jj|6Mu zSMhZB(Ofmp&1WB;Kn%qqxn0Bz;PIcYYWQ=-pA_||GzRc;TSV5{h4bA@lFG{e0DI+R zBMZhc>0eKN%@RG;g3ow!aV5&L5y3w-<`1V%mBXFXjPTA;?vFI1rn^40VA1zemvu()?2Rzs2oEA}t?`>jlGBlW~GYn)YAT}~^ zNUyPeIkvN<{9e@`O^z~zK>MTxfM$gYannCRULy7qUE4e#W3`Ey!?ch_Rmtzpaf9@( zj2xV3M%_{|#Ygw^zjk@9jc+_Rv4wI1oVE{Y?(Muy;!Q5($ENBJ80)uwDy^o7POjGR zwjD0bL?M+-YxL-{{R85JT-HuTU%Y*&2))vEUFx<5b8pb2?UY`J?rH^ z8rj}9U738QQGf~Op4j5KxIP|VSZencnzO7e3{S%mlFYeKJTA}cRxxsqeNQ^IE5ZtF4)HvUNB8QOfg!pXE8aq|}Ewrk{DpB(tM9|l4@^{~|yOsaI+ z))K$Tp7EjhIkb6iwK-E;)8n;SURQ>6kp{r5**`9LBfoLhykp=Gi1i&8T${ssiE(9o z%_L~Vgjq-b02DYi+HxrM_xZPHL zO8OgXbEeG!iIA5i8CVbZPJc@IO5;b@n`+%o%5rkjN=F#!$*R`tt?6@lwwkGpknkg% zkK}P$ENovxHWgZ(mYwdCg2 z6-+#&k5eb7?C~*!G4&`G8?Bl9wz6lZ%6!QNEA5}z=FKJeK?T4H&Gw6q4;eWFn)st! zX&YO*QlKiqI;J`m63NYdhwxT;WB4CsKK4-^)Xv*|4myuc_3{~`wjTay`+U0JS+}Xw z-G+c_>_8=K_i#7^?GW@nhtjyaT}`Gh1M~+t2kwsCeQT@H;{Mf>RGtD|Urmu)jC1Eg ze!Y8F5k8pkMI%6@5y5x?h`YI`?))3^1Z(R@m=n*RXCmokmm+<{d_ zLuNJP`ew5YkM@6rZ>}35e%ER;y>qf}#=SenI()CI88-zbB4*q(pWQ8GY8Dd@3(sR2 z1I@XC^4Z7AvYc_>2C`M3wwiuqxc=%E@;sNr_l%nLj>a2W;vDCWt_DqezPE7=o~Lj- zM>FS)WNsq_SDI;l5=pg-TZ|TUmNo~dZ!`&Of&Ln57}Zf7HJPzuF?>&7Ph*BUAAkUHmt`iJtBU`7|nX6u9s^* zmiLzm7D(lg6OP+ZkIS4_J85ri75S3eaU~}^y$_P(uhO)qRr_c|)AAxodl^4cji#wF zfFGAG2G<==xyPryb<*2K7L<{Q!wZ{pB%8TEFd+2qG5-MTuOHAYub$OXDO8b+w0!zw zCcR!e(BeHhNZ34fVbq-R*gu{sJnIR3TE_ppvWaNw^ zbsm@<{{UL_>-|pK%5}!mw2aq^-rrk6G>*e*Q;@)({{YuD`8<7_hR=TI=^wo3+>Y}^ zlT+Dm6|KV*ECP8?lB^dUM{`kVJ`&XIwR>BKwYX6frP!F*017b4BzLWy2UwaoORgn( z805LmLhZ+2t#s3CO+KG-ZmG4J34UO4&cc7s*0)oNs-tJquaPb@0q3f{SMJ@CbM80q&NQD6Bxg(0NYa44Y+*uwLFD_L*kIa7$*0OZ%K195RK%jp0 zGmlckp8VIBIn(BXY5o3who+%X##;XXR`m@g!(E3{nJzT@v{O9aI>P6I=N$mZ$4c#P z=GCQ!6o$^}ShInch&&YlfsFO(pL+1!UrB{Enb;On=E!rL{{Rus*EQW~+IVjWS~@5$ zXSh&X<^z<)IeQyUT(9r*^e>XC<<))OM`d*$w|XXlH2bn%(q(s8ND6iyydL=el^%nm zY7j;i^43*O_=)q7a5@bAD~s^l7aD%N^TJb)PU zfmqe{T#&MM_5T2XR8>VOYQFFIBwC+^HPhnz+mUNAigk#F2u~hT4?&D~&2-WDM^00J7K5Qg~}kid0~`i$33*iu&{8 zeu1dnU1++>ut9OBDzIFTS~fZ7{smtyYI+s(>JTK79B;w=Yv^!1@}Ubphs@)-V_s_A zN$vbMqWSoiHBb{g@y=_c(lkF0ol01)e6p+prqi5$RfiXcZr!BJh4922e+VOt{{Z#7 zQ*=)Vt=6jQvTqRpz$xdaPT!?<`zgIHaz?CHtsaG>+xSL1)>6s@ZUEi#ob$=Xe+<>1 z73z9D#PO_e=EWQ(Q1gM4jPf|+8LvOE@Q0lp)x*ZprPE!Nh>-yJuccAH!=oXOM zzGN{C$aew?jODY?jxa|D(vM*)-s57J>S0o|(X@DT>)K?K z2l8Y)axfTkpTfUeKj4@5u-|JQB{rFan`a7G?!g{W<$B%l$t_(qv|q^~@>TWP6zL z*l<5HU#Xw)Oj{*~#hT}khs!Zbw|D@MJgj7MisHnmr5krgqk`sjC4S8N$M&UvGvT%E z!(cOM`5<)3aDOh<`J>?Hn4>IU#&gR8FjtKJCci;GJ$Qru62F9+ma;9Tv_l2V3k?4N zD`FduEHN0!-HhY6O8oWkgh4IC77ZId1{Cnw80stIxQAMapJ|bMuxXqh?IW$)Xygzg*+4sl;OYCbm7b*7%i-bF+T5e^Ar-nH+4wJn@iy4Qx1`M+D@mhTo963W26YLG`H1spKhxNCTMOFRb1nL%v6Rr;3#5G(!D=ZhC6SF{vDb> znZDfs+5iB9BH-iKHOYR<5E~zcEY30)e;tO_Vfxpg-l@3wi{YnbPzI%DGCKUu4?kM` z)~sLll#>2q^!jrD0EGB@AETZ=xVc}0`iope<+JI3>W4cH&~Q&3xarovpUq_?d%qT3 z#VR?EQHJ2Eh6XYm0uLDcMSns601^>X;XbS7lZDfcGEQ-U-1A?~<+iXtxBeh$Q|`=Z zEb0f{0yzQxqQ1Tt_V3YtXUO7}=tulV(^t^K@!j8HiMWP2P^s&a!Q;2gGwo9Nm&&`* zY!Qe2yxB@HF~fkTpZE_-^Dl%RCAsl$fOM(uAJ6+d4P`WJ*a6UdhmO1`>+4>zbEoQ( z=vF)B3*}AGMsN}LAj#)|Yg;>K-oo$`FWUf8q0J40?< zk=Gp7=f=d;4ufrHbgEQdt;3-Mq(CC`?pn3}F?dqU{4xH|u(nez)UcF}J_%(7xb^63 zIa#YSq8E!(L%t(;j_bqU0I#p$xp?P=Behpm+q2AcLPj~x39rt{JbU6Bt7n4aRJ~|k zK+*v3%K^dbUv2zM(Y3k$0NGgH%2sJEEfvG#A0oNrXQ{%HJ!|C%ejRHQLJ}r~hmm6> z;2p#qZXTQ(!i^Qk+?m;ptesTh9W*>%{_$=nl4+jiX&el*hGIu=|kGD{@Oy~zrMf%$V)p^^U9h|Q6^k<&j~l@BtdBbT~;XzMV% zmcu3)1`bbg?^aB@xj(zNMdQ%+`kLICne~O_oI=3y>cg6_A(}(Ea(aqVh~Up3@o3f^ z?F6wW`oqW_K2yzo&-*Ld>M5c}CZYn|3E)$-4Tp1HVCKF{@jMEG*h!tt#J3&x*Vn(Z zW&0lu86`W3y0uje$otoW1b$=bT$!X-)Ss$4^0wABU$Z`8{iM#fZ}DSMipo@t8Y^DB zWSA2@jePqBzlnpFlIeDq1mXVx`qlP#?GNDHdM^^&__}oSEcKXI$Poi0FWHeIedB4{ zmixS%iut2ZyX+Cfi!Ac@2J6V_z>p2ay=tgXJRfe#GU~>gI>>TYjh@#Cz)0}?B%oUYZB*3 zf(xdOD~NJ9#!p|$y(}an81lAx7>P>$>M3{^!upSqbjD>F*fEpaHLrQ$eNH)YZUOvH zZfmgcR+}M$Y+S>++d14vZ*f|8S~jZpqRb%(%s`QWF`hH`hH?1UC0NDQZs%P&HAP(U z--vd4jqi=Gt|nlF%DfVI!l)n0y@$bm7rVOnS8<7z+DplZ0ls5^qoL-!=f>)nUM0Mh z=7=9O0y20Y0qN~rRmHrK#0p(Tqo~6${*~-|6yU6QuB?>WXV9Jt@Z3YfQd{a!CBq5k z11x`bcg6`Ee5`ih9(c*dD}?c%h9ZJ!?r!8Lcc}qG6UyWqWaAuic_+1YKMDM8Y2iH@ zO+M(Y&)Owvn{B|0khor5dl9%C^#Z*M#6!bAAXp8gzh_l#&XbPpGUOE-K*_-v&Ms_9XS1( z;#odYM$|du*P8m0_rg|3!z*!U_T@tD{nooCqXtk}3s^PgM?zYdJj)aXB-P*~Jhads|)qO>!OFSBPf#6&PIxK~W?giZ3et51S zJ`{NR+REW>beokg_i&(`gPz8{Us2F+w5=<`QECvpGh67-x;Nmd`)s{I_BpQ~G?ZN# zB+pkXgII{OnboxRzSgex$sAr?yyr4x1DU1HFc0U_zRdle^y%+D52l*Pjw85{S;MBo zxGDKqkQ@3}$2V66wHw%&E(8}TkU7YfL;Y*+U)i|Gp9kWNBxu2&Qg-8>2XEHCPcU(K zYe{xK%LJscH;e9dx*vvQ(q8r5tx*l5M}s^#$&xdZmgDQds5f()X-ee?o>;AJe%~~A+bsL{L`oUaFAtA1z9ELm*xE%V7R(0;7 zYbD$QHp`ii9D42^wevrT@8bUegsV`skcHW(TnwJyyn?}W zO>3kkjAJ^Li+R^G5>|M~A1r)i9;55W700%lrKQMoF>(vxpdsh%m^Ihlwdml07|#)p@@&W+wvtwZj7Hd za*d6Sqot~XEU-qayvIe{!M0FX)&u5 zZc2a-dwo8?onT&A+0U=(uxitNlHK5jCb*1l@`hM$+mW1SC!UpbCr+YiNAVSC%{1J< z18ZCGpt7@;eH!N8S80??zINlZ={|^<&!CNYr-zw(*tbhN}!`3cjYgUn; zh3qTGH5;)et3S^Vj&j zd;V4VRTzHh-E}`nb6(SahV8bwHI=2b!FL&Fxl+A8=!=d$b6UDSp>uU8wRFj7rCxgT z8{-1FjX^Ih^bIydLd0F&bO$`FK7zWv0{EM_;EE>6ietE`3_o=K#}(A+KWiB!*v(X4 z&PlVH*6${U%0zLD^gX}F{{XLETc)so8R@_-acjx#l55rVSdpT3n2-R#9dn=ly?Hz` z{g1{vbg^LWw0VK*Uq^MS%=V>8^JN4!2O*Dt{{U5cFM%-r4OWqV<>G9Prynm$b!pF%dVg0h+D7r$ z`mqH1d4ksF^+)`=OoKe5s;~+xUra zWYq0na_ly$OXPNUCqCG(i2Pw=dwb(;Qfp}0<7;t;{s!7XBXQ%Vd*-siDSKII*y+YK z>?5h>7U3ne)LlRuH0<=`{PFc8>t3&T9lj~*#T0z2ZIIlL`1XrEE6MDoQ)#Fv?_dvZ zbLIS}KT7odX6VK7Q&&~)wxECDG&u$1A zz~F#SewFgJw`+478{1fN(J<%_91)%?>#NDW+wl3I1TnR|5@Ws@NY5R5*NVxZ-s+LG zR#6t;o(4xg;PP?!QR5!~>V6xNHoSB{Xv=LvPR?hR2q7m^&3vdZv=Mn+a}wL zkfVZ!)9YWTzwk{vm|^in>`5pxT|+EskZ`Yn*gd}L6U}~EqNkM`b}_GBPH|tP-|$Xb zTY3C!vd;crlc<82?#9+!FHB(cuPYYap#0J7VB)=`y&3u=`%3BhU6;fCa>CSt?QJ}= zu5v_^%90R3_0C3nb6=L86tRv7!G>L=?qZ~L`TAoW{{Sle8~FZ~TRd|s&lHZ95eJP= z&Wu8oByK%Wfx81caoWE%yc2%}bKE7sJ6T9lI)WJB{(WoZGvwVw&#=iXqSHL*_Lsbj zc%Q?v&mbunl14c=1Ac4gOHETulgAS3Dy7ln$aQa38RNZu8T&&=XLqXUQe0r5f;Zpt!zG8yiuzowuc<=)kCM&X`sCM{>66>(I)(nBaU5sO{?GG+ z5#Y^$r3CMUP%$6_9Y;a$SelN7sNdd2bsVV)5g6ph0D^lDO6jev zEv?{+2^)8op>xwXtz|f?H1#;+7piMRF%F3wYaBMx1ykNk@%dBQT?eb$$a(?u{{Z$i zuq|xL41b@cDYCOC3P%GcnxASvWMIiIiIp(hFvmZ9=lN8&I(C`jJy-04-L`oy#e|2b zBil8uEi5-}I5_AlYe<&EO1&3*H++nQCI&Zm=B|}*eKv0iT8!wmx#T+Look|9J+vzO z6}aa-{ctGo-P|#TmUSdC<98emnf9+k@du4OGRZBP+wPP$7@Qx&io%CRv7R-UI11np zHv_aDe>(M5Su}ZarA{vKKSV!fIZ*sPc{Y|;^8v?VUH<^j*A?8rzi0S|;g}QVSoIrK z$0YG0^ImoPH_vZt@Zh615gpemGm>R|bRPMx>7{u-BlvxHDgOY8t-AaF0IgoN`Rzsj z017jI-akNu{{Yx&$H@H?@xO`uIj;CWSJAZHMP<6P(i!HnL!KquhHm7p++#d$(U z2TagzF8(2S)LS?PeLqnFN3KV1wfmE+=^h2O@MnxXVWP52e>7JXuOyNjgB($`v8tSO zVV1^zxUc8u;x@G|m+>y{9U@5}X(WFZlh(X zLYGiTFQT`Y#VFhhE;i>KurXhkdWG@6`(@3#vY>Q0U^B|#9xM7k{hcxY0179;xj*v+ zwEqCnW7e~%tdXuB(v*`v68MMvE_`kA&Yd(Cnq8H&t`H}keI5`4xrfLPe@fc%SL~tj zr^UVy(zI!k!V9Ylm?vgi&y@LURj_vFCq9+>X@7Q>N;ad-Bb+KA>+VlQ9_FM;9it4x zZhL1WRzKZ4IacT3FYQ6_f8w9Q%gaqe#@CUypQ+qB*xTFO8AN_UC?%I_s*(?E_pgy3 zP+>DhC145pi8=aL>(BfYj0=ko2tw-8f23aRLEXH#@I7nGKW7ivzv1`BZ-=MG9xA!i z?C$>8CA(VN2+%5^1z7p0TjmF?X$KUna@35R&&zxLM(SN@9x2*P!avq^;GQekJTq%0 z$A;r=`x-#R6UZ4SrGA%uNB;nVar`RK{41&Wn?ckyk$YpO&ol`;!0|i98#=227&s(g z;Me9qhjkc+jR--4szD!*UTZ9C=BE`7j96&Ook=-$DR?G3jRkc(Z?%>yF;Wz8*v~xr z)`x>N>x+8}$dysU$XK%?wto};b6$6Gug{|DnvVGQ3x_P2;Bo%|>#ozo781j!TnSLd z`&F4+{h_<^Am*^C2Oeq5t&XZyd7NOnTzyC_6C zL!aHOZaK&C41@Srx_Bevmx_KLX|@)cSJ~Ptm7FTIoD&~00s|Vu; zjP*TE`rUPytfimKjJrW?6|u`BZbH#2lBDu7YbRu`Zx_ug9#C8>+!U3XV0Y>>!T<~axe&IWr5`p@=zf#k7! zTdsfNVQkDu>^|3?p4IZV#7_YHMDSx;uZ^_nEjO!5t04X2f(|k;2Ts0~^~b>ruQui@ zXin1Cma;ZJT&lI$U=O}~*EVG&@NDSIQ~Kh5O!U8qJ{*U|7Jds+e)dlWov7Z%QZpcv z?DK~T${Biv_vfv9r^fGtz9;yXt$1t39|*2A?IA{<&vhKD<;5~g(a4~rXv)~$bCKL) zykl6q^E^TD@*+`Edo60;=f=>jCI&&r9PwXcd>6brzrvpj-p=PKX!b9I&S4Ii{NNSo zRgW$Q4^j(T9xXbOmOm3tZ%gQYQhajwKdI~fDT`R}m9@RL>14CJiZIc~_LObl@CvR~ zfEgn@eQW2xAN(Zoufq8(E__{S_Eps2X>FXcvPg*ASc0VY_2(7)d83HDH{)Gy3nWh=5&#ceo4ZErf?F^!qSC;*ak(-i*z?Y|IdQpffihhe*f zlaa~C*1dekbEe-l{{V$_Cv}Ch71qgQ04j|0f({OG$pW@?UxC+tDe(1|iyn4Ho!z91 z80h412;-65Qj?37=Coz4Ag#IbSBUPWzSXX;F1}ZJPT)Oyaai&obW_RWt$W73@M~9F z*+!o4Df1g4ldd`A9P{+7iM|T_M*Ab)+vyh)K@4px$chTAXfjy)06DK(ok%#Oj~=Wi z&3hhfETwxi2nIH1Y3g(6Dki+t?SP6oq)>1$7=gz@k7^{;bqi?1qYPsMAQ6G+aa0>n z)NWk4EAsj%9sZTmDwOT2Ib%w9+|`=rQIh!@;#VZDNi0rsEA4;yC)k$r;|Yf0Jj6&G zkiZajs~&ULkSpRNe?QukOp3)vasD3F`WgQK1n;v6@efqhZ}T|+%f?NkbOmFT*y(52tEG*8t|m-k9An*wIGnj&SQ;88QruD*XGadB5tJdHji@; z%jet26M=)2Ynd_!>0hII)cY)@ZV$?H>C(SDKWIiHRMBp@DlOwDJpTa8%$+e_b}9R; z?!hnKqvhN7j!k~;Vj~g#qBGz4-xc=P?EQ8Z;Xs90r}|8)2~812WseU0!%FKxU4x=TSfoA#+2XpFZQ2P0_jkH)-w#+<&b?ykqtU?(4} z>ieCvkj-*6I3dVstS9S?WEB3j=2||0k2yDN2{{L8Wx*YeG1T<0UDI@(RO)w8+*({B zNnbmQ#U>6&K2zt8zr))V;#7@JNF^8jGu(}8YE$=(eQwe? zt;0SJVu%caMm(kLYnHWv2A!zn0)*QhLB;`-ujkEo8vGiparqHi&g3L`9#ft+DD1p* z!LCZ%Pw@oS*Q-9Cbb*byQekipGH0sf`kEs`tF2M;_cQj;_E6Wc#_(<+juHS_V|5S1-s`SQUGzcJdup_ zs=gD_d~qL&H1mC>UdD@c8y9#S1weTu(`ukxm){61S2HcM%e>BcX9s!*RQ0t4H;ySiz6M`3IY-{?lHixAn_lE zuTHoKwYg*Vc$Id->@o9n!tu$h=u)VZz1B?Y!cA&<-n6%p!F?n$nF*TJna3P$IrpPM zYgle!4UNH&5_ve>G5J?XspxvezK=Y%wij(C=t)l{*LF90sK^-=#OdB1@r>HFw6_{% zQdj=0ce*Xe-nkvPJmc`K9bsBa$YoMaVpY#> z8Hpc{TITc%9c~Mz`*pmLs)h$69OU%;D^taP+S@H(N42<+6vGgV0xMv3>C?4*scmkN zJ2?Oa+Cj!oUf){!dfxdK>7y8TELiOwGI-B#t}F8zl4=@0r|6ukpJL+8CZ7bXjQf^m zAa3IuSJM?n@5J|$Xjh7|&lHhEC(o8v;2orA>73Ns?(ZdJlPDx-JGz2EQPbOxrE<-6 z=jby>GKW!ZDJSmbwjb~nlBq9hwd_7f@?OV~J^rgPXO{BfW3=Fz7-No|d9M|NSk$b% zeQ1_*%M_ny!7;f~a_53at$QuRhSCB=TfuI6;0o|UgZ>lCY1|x3Zdp!o#{Q!f?_eb- zg{<4?k1HP-{c3`@R()~duMv2cRMT$by}r12j#xah(j2Kf_!;%UuKxf<7l!sdv$LJ* zHkKq4k(1uIzYGX&^!b}^C8>wtk=5>)vDcalMSD zHOk#w#P_!%SXterd^((M`Hx}O(z=s*Y9`ly z*AkRghJTcdAGmw}0QKwDE%fZhCPvPAJYe+cpMR&)x$D-cXg+3AgfA@)Ys6a4zBTFR zTgQgoCfLR{3;ZDCf%H68!{Uu=M$)F#Y^C#BY1St5Nq!0(6Vs4?{Z-3r?;Glu(a9@} zTozS4uPOoPbI)I(txHw6xY5eOOA#vM0e~=#k@TnSs&mfreM0F0}?rtLZi=!p01p>x&z#!m<8SUTt*P&?|Yd*cF?iuo~ zqaco)FwdtI=Drb`8{$Tik&wV!+>W^0``mJUusYYXft;RQUEi_e*XP&9S%g0kHCJPTqA)YZQ;+3bm?_FtF8Oxq>K@oUp(LC#U#V zm|aC0*j!jZ$>!V*u^}K9W6%tm`p?CG2({l67?`Y)fDbWE5}nP{_`griyyD;XXxD9} zYlezRr6gd76 zh~V1MM}T-!JUv^}=l1&7lZb1ZM}L{^;bOUc(p?~@}9XB&1ogfpW=1??Y>sO1LdC`_+P{NPltx5rr2CU#e%6< zB@>)sf!)CRj@9&c>=mJ3_|H+l(k<@(#>szgbLRqcnB#IWf(~=j80${gz8Cn9R?#HV z?_!LJM=F;Q46Z{Qklvtjde^#s#l8#Cz8?6^Ep+++( zHa>Oy=_uY-)SPtcTN(alye#!vN57K0#Nz%onJ%A5bdSyh3=886DGq?l;jOR5P z+TALY2*ufVbUDU4{ylSEg8mwx8;Ux<=GDs->)`M2L+P}<^KTd*Pi~**#7{9X&kDhS9rrQ=-b?L&mT(kM@^p*bP1)yV^Xy^1P(mJBbxYm z{{X*K{{Rv9(SPiezruT;iZu3(wL5EEAp=vHxhuHHrE)Wo^B@C0n6Jh^i&wM%0K&@E zG}wSE6QY1n1OBaYGs(tJt$yuA;cpjS+Fa`%GKwU!y0Cezo+2?AxBwJlqkcx?*zN2{ zug>2Te$Tf)H}N&bz2Uo?PxO~)K;YouA8PtsCoC$tOHB`-%-p9* zMhg0$16)|#>AKSivlOszRtw1oX#sQZoP8^%`vtty#*zG-V}Z~BKaj7t{4M(*-s*lJ zy1((I{k5cS;#FsoDLlZrwAg?vZ-q|0Vwdsc=}Iji^D4?QE0Z@T@zJi+%#xEOys1gBEs`Q}c10t_FVh9kOdDS}ADGzh^GTfd1He zex0dX=}Ri+`|O&OT3O%afp;QAtMlYw?A@~`1+iNnu}*>FpA2{xP_yw|R}jwkq2U)# zx!N-t{NC9$=byD)a{O1(G@DNX+(SI}vb>WcKa?=)FiCNY0xPHemvuXD0Qe+Wc=~u^ z)I8$SGPjrql6pg$R5(P)E$9sp>i!{mj(-S>WF&L#JwY z5(vQvh1(zZ(OlqtYK?}Y@TNNf4y`K7a7O3(LEKJpleeG5)J}1d<+!QQaF;Sn{HO3Y zgf-6-Xi&_rZ(^23NaLJVO^BLkkK=DfG!hr=Hf_^(@r`%bm9 zjtHajfJuUnl#RFqb^`;_xaR6Rtq$5M3Td>@0`Z7TUx!H>0OxdneD=Y>ACDEv_)oDAMCeQEmjYz@fg4p-2R!F?cpO)={>@r+vg_87>t8Aunpt-of#t2+0zkp{;<;FV zXYUzV=_WaaxSkaGe|SoQK8u6-{cG920QhrJ(R^hEmb!s1B3?f6Lai0qZi6g2!*Rgk zx5iV9>GJ8iIPf!+DyGv`On;9AcB$~><%)m(0#~n^eka z=fX31#tnW?Cf8pnHHgDAhw@%0EH;h3Q2rj(-CCqSv+2`MSiO%johqN&b!zhavRj>x z#jCsD4E#~E)*+8#YMMzTp7$C=#fa;Syb`eb3hO*asMuR+8efR6g3D=RcG^Co4V2Bp)t=MO7pn41HJ`C;i)wF zydQbtKNj7>(B0|NY0@$h&4}2Gd2k2b3f%e-E6%3<=u63``W?Q`NzN^4qhG1=FNL&^ z6!>??It+;hK zFy_8@)NDLar}&#i_@$!%0A^fxh8-*WGgpS~r1D&@6=hQz^31(QYV^7MPP5yI?yNLZ za%0^f7Q}$v#^yZ!HQgHUr?hTlu+?gPt9qWDB)$o2u_cwSgyOacHzb6#rN{eA7BP%* zjMW?4PXk@Z1d#Ym5N9EQKh6$t7(56_WC@Q zNKh@DMUqm)ur3Pi$mfGs9Bdo2faQRymDJJlx9zp?m&1*#!{dJi-)Xm37bPuc(sYQ% z%XNw-Z#jzX3ibBy)liuDP{{Xf% zg5!=O7(alA1PoS}!Mz8=9|=5T;t6#7nIA~H@>bGWmD*0EZF@oT}5K*esx@VQlVbp-awE5%^V@ngXEiXJQB zl0ZKr^*`_*%DLwx&V>nfHM~J`%VRM;cH^G)`PKVI-W0jf8#o_iT(8pNLJuC5_AiKj zC3r%6NiE^J1&;%Ax`CcDNm}@?<1Vk^?Qh3=WI83+pJ@e)K-UZiUHhJ0gb~JH0DEKJ zxhlh$>BBijX|#Oz;fcP}b2$J8JFq=6?nwP>?O%d{AHb7NP5`=O4l)iljPfhu>kAv5 z3i@d^6!OKum7{Ih4Yk}c82947$oLPcT3mcHxQG&V+_v+a4fq)V{V`r9adk!8$of2{ z&bGd1x%f_5rPL*e%I?2sn}%|F3grA-JhrjSATkCk^Av0larN}A&jqxH#EoSr05!Di z3a}@YxmNFGOv+t zBn;W%p-l2U>!#E$9{a<0F3drWSPtOCWM#nXUTv>w*H^wRM1gukYn43z0L!{|`d6r3 zFO}h|s0S^&+>z4&Ggj{EytVE_QFNoHW6jzJNfPGTSpbK7P2E* zB=aSAkG!w3D7i8Z-9}{*mFJMz0Mq7fp0BAc zDOB5_T~Bp4gjCHTV7Iab`Huj^xX8~_T(5(L@_4QZi!%jhAeK16M*daR=yul<_+64v za<{GsJ+TtzwR}CJgw>}$nE%&l$`*dB||W;pk*y8d1nl%!@nh3Wi2aC+d1^J^)st?#V%JW8!HtHrUi z!TCuffInKf9n7~jcNWZW72)KAf(GxzXa4}#TrJjQ)NP`Po;LH)5!>$qIqTcCYa8=H ze_NPYa?ASYa2nQ`1bU3T2+K&>9lr7J>t3Vb^^z|QSS)yKdE+O7Pn(nY;=K37i>X1X zT&$~=61d4Y{v+wfO78S+R@TG8nsQx&H_LIi{`+31@%mQpnZir@+=pc2{d7P7)A;^f zP(yS3qIR5Qw>|6XyH?qIBx58OXFkP={VU{{wR_<@mbSFoTbB@#<8aB zcM#eLyt6Z?AweSqj{g8!0PjE$zx?*D9x{SSpL+_k=5EKM`1eph2ki$qHR5Q6?=KtZ@-q@)l1!e=TOpY^(*MDW`DFyfu@OFlm(37D+~DiGp(Y;VpV;`-T71U^#`v(Ushl18n4-;d1AF8K2Qu1oafkqUq9)Zyit5a z)Beu{3KGZ`*rA8tAdGex9V^nnLJJF9TdfZ>A5wC~QL@)l=x~jo=yFbhRlN95{y8D% z{{YurUxYQKyu7z^2@L41#s}UXjahv|Pj3#~+{+|pe{yNgdCT>adKJ$hsD zuTK8UVPR#ax~VE93_IbRAE){Dt~6?G4a+UOR&kx~!^?$ozcInb*VenA2kMKc=&{`E zR@U;BmShKMUzZ@`0FH*Hq+rzb{;p`JJI3q!v8AMGOBSIcAPKS=5M!YXxa0ha?`$n6 zMi9Rvrse2xIQmvC)z+PBrd(Xu+eaVnr1^rjcp3Hf>s*Duj92X2t(XSg$SQvCUOBEw zQiP))d+;<>CwXXR_=8QjpTv5F!~ilh#YiI{5CG$$t-UVIk^y1220*SyPH;zB<2*^@ zShVjET!S16Ut^Kw0!tKAl21JITD}$WYU?pvUQVi>Oz9WOfjB75fsAp*Yb-XimHz+$ zRi(=nZ^Z6wZO)&lSu~U>I}lUJKz{iyb@SCXYSLs;P5tI@^~Ztc=rTLgP6m zy|uONJiWEOsSfWXYIg!~yNB1D9-_WnirDFXE%43iD#r5J&2YO(7(Qa{$KZJ$_3Gu+ z;II|bdLBMuQg0nWrQG`e09woI&oCryiZjMI3~0D_sdZZ?9Qew$XuS@(Yp>iJtLvLhqsj(2Cyq5y6k!yfm~a#iUiIm5TX+uB zNRL!`0iA}^9Cz@BB=o@ZGCPx;U{}o6e-C^u4a6|pz@j+=ZfR8KcJ>7G^shniPl9|Y zb*V|G+*vHIwU#vryK^ZV^yn9HC(u`+TC5b^?xpviLGAE8lq}a*@F-4< zbtG)(uSdz}`c4RK=vH^ z*KEHFJ{sIxxAuLVvrBAN7gmUk=LLxe8*mOrLF-&A8yhy8)6netgSt-I`j#!VZ-u{U zNRGFrL*^bce55f1al?#O+G<}2o@uYX~F9@!csW1e3J+ql&9>t$ZCzSGk{3(!mZX3WOp~4~nzi^<;3%|hiE`a0a=Lv@%Wx= zh8k{>rfPRLIz@y~A1Px501GQfrx_hOde+M^=XQ#=o<=V&o7I@*9oOkr7&85!>H`p?` z^3G{@Jh$SUGeNJ}$nh23X&yKjVdclpJ$-%a&SYsrf)J5`k~$A>@vo`=GWbgR`(3n6 zBH88pJ+iEe7~B*DKr%;8g#9bXkHgOvmsMK}gPuTCBy`S3GhX%;uVD{E0j?E*2kTo>-dj2IO1rv@DE{g79`)DD z@Z-h7OD>gor@!uBf%#G=fIMVLQ>EW882WW>mt(@}7C;r8?s1 z?lGw^j)e)^(>?KB;rM&wPLgRiq>-L&SB#-gv<)`s6mX$TG6F|j^u`Bz zr*q){02bX_glh|k_i{-?o-48*>Q*_X+h@{W1+J~8_(39F#HJ%A)?K+$T1Vrr^5(k# z01D~)cAMjECMZ>~`phk`lH+fg8sjVpm)#HsG^MvolX+ovWb(2N&-Qp?2&`~$33g+XzyiKfv-mOKDXo=8m1=UJ zACYh~?~3fj<6%NcPWOF@!eC`yE>X3S?U!F3v?%Wlo~LhV^00|oJxvJDW0fR+JXc%c zuZUj_^?OupYgPLs=R4XP^(m5Zjiyk*WP1Lb*9+nwf}alTt6JbLE1X=f1TmW|uc?VeF7Mm()6p7(X)KZi{* zNc=%(BbQYXzNZ{G3=UkgPl3ncPZg7Ou6TABR%=~LM3OSw8-BG5Ima2tpO0StoL7|S zKMTA8sOnbM_d09^T2xj+802TT_pWw-g#HhLGc0<11ZRvQpYm%*n^ThJeGj>=-q+z@!*dxYOS3o|vSLn{`d6Il9}9d2 zd_goRq}wV5Mp5Me4tU^TS31w3E6bB_F|3wf4>{-$sQeAnZB+jN!bPA;hzVqd?j6I7 ze7Tp@pF@hylgD2Kbi%UQc$ZH`btEh|kUj`Kz-$6feEOP?QTRvj=EK91TrQJu<}Mk3 zcD+k4_}7)(co)H#K3b*`hcR*KaiX3Q5>m#|Nqjs%f5*IaNjgN*d4AL0K1 zgkp=#ipt%C;P9gz22XFst!X|A@SWA9?G=T&lgx|)(T+2_JqLVKmU5fAg{(D_+B(m3 z)#mZv!1u$S7U>bb-uD*duhSU-(=9$B{30@t-ZImgA%GOmZIjcu=dW7xNW2N*AvuZk z`(`fNNb19$va!A9<>a9Dfk&X5BRCHsJ0E6lTd-q z524(D9M)c;@XNuHX*0)jrrHcd&6SCGz&Pp$O7Ugz2ZId$U)Z1_i31V#AB8w)v1gC6en@=5mN#gu6m;MM2_H~1T35djz5?2vv1^)1;1cHc+>SeA zu766vxA2dGMUADJSio3X##wx!z+gz|JLB}K-YEEc;K+OGA}!OT|l^HGhmB1FYD+zN@C(lqV{;R@rRyAny0;)P5C$pBR1%WC5#baE2Ji z+9P7U&pe0Z++%CvxNW#a&U0`ve@@y-;L z`9$(dOP84LQ{zv;u#T^+Y0N-w758-D4DIh&BjXRl8>=_lsc8_tKtn5M3)JL!dGGDb zGr~R<@XT5sp*PuLC+#-t$}a>Y-=$lB3;2HG@+Fqm-(xa?g&856ka8+zoFye5QLLF+ zzG98n#b1XuHjdEhIux^KY+y=?qXTg#sln;Tdg8CXIrvIAQOo#$%rbdwM6yb}9A|2v z+B<@Ht;w{%2tD++X3{Xx%He)dlY&72{RiV$uRJl~-|Smi8p;uynaJ9s`;lX|X*|_y zcF@Fa6fJ8D`4Zd8Hfz{*cdjq-KJZl9%IljA>xn$6nRQ}FZ76DTIe z7?Lr#s+@m8Tb7;<@XgaiWV40ibFr|X<8UJ+VDnpJ;r{@JZIF3-d>0lE``7s!M<}zk(dMJ#uZCtZ%KE2wgpcD=Q=|tN3}M zAo7r@JRFRiU}x!D-Z=2bhb^zI7S_@Q4Q!4DfL<9lcki7nN=l4E4_;0^sf-!#&kQwcIvYRw^l9W#zsL3e&}{5ft-1i@!S6Z)n8ux0r4&Uhk>RM+_JM= z;e!t<7ps{zMqHdUc0Xgf9)HOnFia5H{|pgJvwt*x@NaL zmnJ!6U7@+%8uuJ__Ts!7#@`UUQ*GmIPTC9EB8*>LA=*Y2RnE``I&|$$6zSEa%CDmb zI*O&;wms{^R@PVAG^-g8w&bbgAK)M7Ca%4bTQm7%9$Zs&z(4BRyc0t4Z;W*>47AIA zAY*=W<&dPWln-D#oYu9EhejQM4Z3)N`fdPrGCX-k&(g6F9(XjzW9^ldreATD^j=-wC)x*knx5f06l;Lw&L;Mh-TAZmh(}ZZkBMv z%s4wrZO`ZW(4kFpS+P0Pe7Yn5)cB6}@gu!Vw|o!t{(4tct4^)0-fv(*o7M&=K%iz5$)UjYvL6@aUX5%J?3@SHwb(&Y?l0k zd2#K=$VXc1JT-d1V}{p$&YU6OP`M<`;KzL7`bfJiHn12>=1eSchSZn$+;a zth2Ck2G}l1JC7j3_^7E$@E_e%AzFV*I2&k$ZlrZB?d zWF?N#oRAK9HQ0D+-^lQ_yXBd@`NkUn0(KtQI6sYZx^2dHIz6JiPg1*?+eekA0kH(6 zbRAUJj9jsdn}uvICtx}1KhHJkuPIF)Y^!NH! zROq)9S3a#GU3KjaxiquvR+>0|{{YN6fj?22*04md(jF@U7|C}IKsdk=N$b}hmBMS@ zexa^MW9DIF@?SiE91#PKI`LXImh;@FNUJ*Si*@?Kc zmPN^m;woTobybVA0I;*+mANSJu8z9M%8EXI`LIMcN5WOFltveL^?zy zwp{K!FU-K?{d?B8fWm6tDU(dJAzC|mrbiM0-@6;acSzok`LPo7sqQmVNlW_y00d|=fC zGlJ2h;ewnJJ&!+1^v~^`D@=uS$OA;uTddh~4qie_U;r>UAFX-CkB0SynI>CVPh9lJ z9D4MtULo*@iSIA%Wwx@JfwY8f%Jun&sIMk8B-2eEueOEOr&*$1MSm`;?J~B@2?*YB zf7VC9&r|JOUZZUG@v~d56bzhtb~V%ZOT!)~v9i^pdl>^sVn%YA$d)sYz1NDGyT7Q z%5XW_5ij(Yv0hddK4NjiLAUsdw%xw1^Z0WDxpFM+(_g%eA25zqo&$L zdq_F_MlX%vCfeTdM-g3Nhf{+aAHuwQMzOuuyi2I*TaYxi1>#maMp9VV;jzX?Jbx<<9xl*}k!5EG6)xG^|&$NFC>Z{{dTR2R6?A$9cQlNQ}WPG_lcRrQV zgrhf7F_d~7n5xi?7Sy_)xc*g_?BNT}JiIN|;&M(}=%CI%yn1%8oxBfiG*`Fl0{Miz zBjw`(FmcbNeK+HKi1csS;cetQoVES1$0R@6iOBE39eY>G-wri7KeQ)rGB!yFVY{io z813o$*G_X5loIT4Wplfm^FFMPPtqq=zimAyk;n!|P^6VnfXCE*dJ5z9J3SlC&BO*L zDo*rvi*Gy(1E0(Du9C-Bw`iodjNz4lCBP`hXyj)-I&wPZs9#>gGBJy4vZ*10j1$}p zbw1wp=X1^3DKn|TE4Gdr-@_I+FC^A?*UCO^%je8-_~g|O?EO1Vm>Dl`9x={kEhxhM zLEF=>di0x1U62UnG9=p>j(Q(Ly*l*oUU#d>HI?y!WOyBuFpO;kbaS4W_O67ht)$Ex zsP&35hOKL3dG;HDYdn(4n5LTFB!USMoD36^263Ezb<}9L*5_3*Ud3VikVu8&R9P3$ zFwWc_Fnv4MlwE4gcdIOL>Mml1*~+ghTo3OMFb_HHTlyb}b-1-)ZKR4_s!)8Y#~AC9 zzqe;^qGN@6~Nfofad9tMBXZxUIkZXB-FQ(XC zeUASCOoCaYjz{xjo>GyN+R8Q;-cB2^?de`Gr+h-y^xLKy%#g_HaU!5(CmgD&MmPti zKs;Bn_-Dm(YC2*`adT?Y+$s5Y>?MKD(uaF-jib5G0=+6Rowbv>!B(U%q)}S-`@^Xrbgc6?P0%qh36yg<2C3yZ-o3ie>8f0w$B{0M$Dddz!@va3PTf~-805b zQk%qHAF$BkZA#hgV3VO}vZ!(LWDGY^z{gsLPSz~$FYTkz?xvZbW=3dZUzwlpd7H7c z-~bmrJ!`IbgbazwXyof@W68CA`({3FrqL^*nK3Nc?t>Pt<%zr4JQJ=d3RiMFs#;8eO|p zK;(c9M@(0a_?uDFEIf0jXtstW@};y{2Vmw!>5iiZgO0ebC8hPb%h2@Po5NF$kE%RP zWi9u^uMqf|mEewaoy0B3{p>NYW9Z(vz$U(K(ltmUw2mG7a)5FPQ^%<3j91c{{JNg8 z@Q1`VQT)upTVk;vkh(<_S>3?<>fHO+$`(Es@vJcmd#xsB$we~nLb2^2vC6j7kT7$R zQJYb7sS6{sD6XSUX|w1*6lzh)rNKOBYPcCZ91=1C9{&KAYsa-07uqP1a!TH~>&661 zcpa;^ztenIdkaFkW!ouZu&hmnUZVs7!5u3n{t-VBE`*Uqq}_=P+Y+WSatuIc7|$I( zwc%5tH7U0f+V;>&2{RYMEbHQ3J&Rx)sDKAJ<$&Y!tedIsZRK+uV5>Jc#s_18n(eeN z1bE8V#1>Oer(7&+bqfY66aX9+-ILfP9U0j|G@g44gV;b1a zAV#?dZqj*VBflBNPvL(Bc&67^f?4$GV?i9?WDW~N>NzLWilqvUveQjJAxf=3V%7Wp zXMf?jqqw$?32@D{93JAh{{R?DEc{WBdh+6fuXu5 z^Ruu0^;#-3<&U~JRHmH0;zOrA*2@Uv_i?sQ`$(~1ZEdE47#JhGd)V#Ze8;YRYMg4RN;cC|H&PA@ zUdKPGX@6t^rCecwCphE!cj#E+(=lQ7A+agoA-u}H3)!;I7F zc7r(vRT~EfgIHG{5b+I+Dz|pz#pgSG&mZ?xe|ozA01J3`SBF=%kt0pY;gw90_WuBZ zR-VF6q+PoS)sM55z0Lx4npHz?12F^vpW-8-Kj)71bHkd|wwa>a7?F{TlMt*+GLa(# zoZ~pbt9Cvflq=u7P^`g0eX_<$?SKRG(x_`*5%D$Uov5)yQMOR!=Y<<{OwHZLsH|z> zs!7R8CiAaNDEr^lj>}l_3BA!S64GDZ7-Z-VK&L;aQ(h@^t&4PN5=^{&;d}S~z3b3) zj|O;#)*GIZv9_4(6T-)oBcOA}e=6jk!9FTW0^-16u>wHR07)l;L;ge3x2K0{DOknU zhcmM~i(O6&o4Xy7W6aZSWj%YTI63F*irw)*Sv(i2tS-)Bwuq23j%SPV_V&$l7akb# z1;5y3ju_R~OtnT5PXdraoQxM7e@f|KxA86i0E9JtAlpVIlHMJy_K0vwPMl-R$8vWc zr+RA(Kdd>mrlxMZJ&aO)kDeiEZWqjE`IH<1$6liq-T0|n{u1ll9(OM!asI7)cBdzT z{7kOX-rL)P;Am1^NN29hmQ zgPq&xU|3#37lp5Oo#*Y=!G;ef%b$#X6sm9Cl_GlFefS{(dd@p2wduxUm!`Xe6#{3bgs9 zc6k2)i%1%jFD`bQL@IiJ8{_h>e@=wWqw5aj+0YrF9mh3{vc23hRF7%?9E z%W!eIum)rq9*3IDi^CelpNF+kn^7Cu3_D%GN6j=%g4_599sZt`=~IJNRyn6q9J({Y z^&tn?A;;X=JWQ~|M=;Qneje7dmXQ+5XnBKNGvC6BbG0M`zg6pB zLi{6^D{lw+j#WvOfynEO{(kk~I?b%sGuhibU`UB6m&;{yhdEsB&u%Nz{12$ActIkM z8~)Hv+;rgdJ-@=X#M1rWFQLzbsJ*TIPo%81=8H?eig!|{O}yKVeo&vKc=Q_FUP{Rz z!Z0Nia0fUC-?ue{+RmkLFKyL=pwjOTQ_#nZ*AJlU@;1wBfF#;5GCF_t>j#AW(rF!$ z#QyoF&!;c7ONG>8F2O@t+Azt_{IE~+^sPj=i~BnHAb%~TYjQ}=Nmgv0Kc#U}O&+6g zx6?MzwzjCK!>JG;!S=0xwaT_v6X8N3fm9EvK9$KTOWMh$-05{ca=u4dXW~h`xMI0G zl|r510gq04^P2G=9O3+JsosyA3+daB_uJODrM(Mt_Js_iJFq%)RJ=)JaW=cCNJ+`O zxEWsLxj)LPg+55LIZE=e*L*f2<3PDr40ha?7(L8mwRX@$16?fBzsNz#fr19yka5=r zxPOOMO<|a>w8_7H4+;#4Jg{u0f{J%0-EO!)ho<%A9Tan;FJ2{cA~K;}||tT~{X_V&9IKn^0Kn z5zF&0UaE17aqrf-OB>lBzpz$q-@S_j90Cgp^tID<9a}-wH2YY^%-&RP5FE0A*d<0f z^ZcvK#*eB+uUOen35opZql`GlSP|EZahmLz?`RT+H`KPTYbdD!JRxWOV-kJ*e^J%&>U2>If0tR(V%)jE$e?@@MPn zu)lx8v7BE$kx`U+O`Go%X$HmZrO}~~GpZcVI5{K^F!dLTwS6|j;<6>pirs{;ML^R$ zdqCqKE<23#T+f5;Ch`_Y%C*0zklf^-HN7b5ti*yw5we!QI7^8#9EgW}J5Zl`ak~7nqgTwwT@UgqME203+ zaUNLR%G?$l-~fLQYV++1RiU!!}7_VIn(R z+_yI+hs))j>EDi+uOGTu?Bso731fGCLh1o-+gyM;HV-&Eus9r!Ij>C9V$>}3drO32 z43Nomk_m=DXH**3*ANojFpj~|mLWN8_HfS=*P=D8Sk z%WDl$jn0<4vzXOqlmH0F-5~K@r-oKdLsE`QlejoxD-qS18;(8epw%q&({Rj+B9a@%V5*1lMDdua;Ej*Kt{ ze+uZd{SoeAk@muZ;0)klPCy?ndv>pk#g?0){6)dEUm-qX(K{i3 zF#`;dk(?akuQl~=#f?fhH2FmNQ#2(4o;reYf!~_>7hl#buQiw(PL-M|q6ZB5r26LVRG0TvOwFOyjPuyrBm8jEe`B0YJSf5)W@*7Y$#E~4mxrF0PC+~nW3J` zOEL_Rr@{dQ91!ovzZK(pJQM2|#>Ysux}H=SVzKper^Z^8uO(>rz`hQSz;-34Sb*FP zILA*z^flC5X`1bYt=dbaY8aN$(<>J4tcM>dKAi<($rxCGmcvm5?)jSDOnM#wsrD1) zS~GZJA$fbqpTrFR0NVxe{{Sp4z4APW`1Y>XOwlfF>~(EBR*j;;w%(0_f+RTwYo3-Q zzP#cakisZFK7}Tm zGptH)qjqvK6nRpA2;`5YZu}C0IQ(4Ez7jRGo>rYl&T`QFq;u$N5x zREFVX2|WH(Y!P4P1u?+R2+us6_OD3zRpCD$E~K6?y8}+QG0K*<_JJQOEAC>=D3EP9 z8&BTHd{?K0qcu`9k>um+)0H_wCMU%UtNk0nT8e5|k#BExWwC_6%vfz@8yJ8NLB=uH zB;vj^@IA+l><~_LOZEh0Wv$d@zu%cpTKy}%_+{aJe(`SnNgd{;EDqB~CXhNt@^a-P zz(pt2C^fGSf&4g6l$v`K2P@_k10$z6uSQXWjino&I-Jz5osX3KAL5S}>AF;w(|BiB zl4X_IB;9DhD+T#UHzPdf{Ax*W{wUqB7Ty}ynN`dF>MKH5c7MBZ>zexQd@G^bT9{u= zfk6X@+QW}rkLOU!;olFcw2@m|sdU=GV_%pac9Vge{#7xjL2K;7RcgPse8s1Dx8i1- zbZ5Wtr-|-akcJ;)g!LVACq1j5)iv)DPj;7=-VgCeF&xClO%L_R6CS3%lDO0Ct=*Cf zJTS`T2HdaV+nT|{LvFCu@d!Of9-aU+ME$(?C_=}=RXC12e zOU3Pv_2sm+Eh#6vZ&Q)mkHWQL_?L7ohxT`Y{7#G)Y)-mL?oyw0hH1Dy^g z_&;2Rcw_Qmc~Z_MQM+=s-#>-}Jc{|pR=x3Bc+$f2TG219h`X}}Nv5`w2^**-f=tH% zjPxfJ`gdvJyGQ|RO*K`>Ahb<`wC5v^+@316-^1Ss>Q?Us_K)Tv`AU@h^NjwOu5V>c z$rk%+%g-~jkTBB3l3;eh&mMqRihj=i57GQrtjM?a z!fR_QDK1$`hL3Pvv4%fhMsu8FrFH%|@ST^3d?kCN=`(6pv5Q%xTX&qukAw;`BxZbI z1ppil2N|s|+3&|581O%ZZ#3JjH&Xu4z7hG13bajyDx?#$%NZvi?#HcVUYe<1o1Vz+ z!qs%}^%OT}5pm*K5^|9dBF5fdKkRY+De-C_+8S0v5=GxYdkD`sHFL#&4bU`lbxkK( zgHwv?W_OMhe=-ts%nnA<0plQ#r>8xn&0%Av%DG^s?OjO(5~4CPM@(k|zH+7#r8!MC zsq|FwRHq0yv!>CEhf=jN0l8<1kNxzx=DhYx`ycHRTHZ7Bau0rb;8&v9YBpCV%<~M4 zq#VFLagLio^yau*Z5vL$V|Nr2yQ#rF_YRLneo0)+!hG zw+CndV?JN!#c1hrf2Bh-xIh*_dI6G*I-gpO#@Hs6X>QTa8!Jl8OlN2MabCK9PRFG-0`3UEKBRxMHAAee-=XpsY!)|6$-2wT)2kYNFdWxT8QNgDcQ?E;% zJE50QG}g1gRX~z5pz+*-dRH-H;kX(Xe1{z1frG|!J-sWllFm(uGh0XmgaWL}NCT-k zZaVd=X>V${Cu*w@Gr4~={c0sfwWAc6y}diOnM+jitr$XM41Bouo;yal_VlcOwp-ok zmodW@KYs|?K;(`2t^G!88Rq0W6!~`&iVn~ROrE@8*DrjZX49pH2%Vl;V{L$rRBi;0 zduP_QjvlW(n@_18+Mgs<`xutWQNl8E921-afPbZR_gakEl2U*Mb|90<8;&^iKTqde zHgA?xZ?Vj~h|6(+bM^lK^;V>p5`|=zH*$qDOW$lkxY zNi>H(TDTINf(KoLpz3lfH^Oq;&#l4bM~#xAmiqlgM7IpK2Hj$C%{e#>x!bgJjN{gw zqRD?2vjxjQ-du7aZO)1|gVf=dVbDI{mx%V(QIS7Q;tInZT0s9^sdXs zniiLRVFZ(91ZYCKud5S-{OY^gO>Z!sSk-*I0(T(m+d0NNVyE#Yvn0>~V$sPQiL^wn zrv&!o^&kCe!BMX6(q&G)JI7O!@V=RE4eaQ=ZLzx;9sdAyz;j$=){sjPfU}~bebLI~ z^PFcH?b5fj3*AoA>f+?AK@Gja03=M3$jTQ1iOzV%bI&HJb0?V%vPOjAgEHidcKL^D z?O1x2O2m6wcW&jM8e2p5n-%9j*><0zk?H<%So#aW_AOop92+Faz~ud+E^%E}yK8rI z9i_^|8B)Rsiw9N;%bbSifh(X?yJX)gzoz+6BUPnmm2jmJFn=~_B+Q{dvqWkHj~r*`q!d(mI&nWEz^Y$mP3P%zFPf0pN(>N`c&5KFPk108QNKQ;EoRm z>C@V}?PacKzH6fg54Y!6R^%WZkGD$3RA!;EueF1kY4j+YD1YG>y;&3j*Vd#CG503N z(z&}ERfAr$o-y+Mt`Y}a0V4H1I@eaS%yfw?eQn zpc`;`a_jwAucGN9-PU;&0UT1~@zlou0M@*O?Mr_oj5av#a%S8IVZ8`ee0U>ZTFR`TnO=kROdZ{f!p)0s_`$?8SWvOb}0Fne589H$NJZr z>Y8@9Jk5C&Bz4NS?=q{$AZMuQUG%VZWWE!Ewlb7o#BiFG?DE}O$O#`Tpg1^V>`&LF zc6L50zSDdYZ+=W@yH6KwzK%!yI$ZTJxP^Nn)M_jB^smNNlP3$>(Il?nLtds4D6_fI{BIP= zf9C0yDql#tB%qX>2>Aa1mWLT5C#88ehde;ZeuKz>SvM%I@5hbw|&Q=IUB z&sym;xYphYAdm?};cy#p3yhrb+!Ky-n)7h8J)|B(WO)$-k5L+q{`K5Xad8@H@qzPg zD%r896XsTTID5|eKW5=QKXJmmEGzPYE|>hNA)N?sTl+NJqdEIhdsXTCy!e+u+g9rJE+I^MSE;TzX$$1k=3*0GlurBO^+>DNStovzax(^fy1-UaKMzNp)F&USD4;crN zcs<2?=f_r-&rXE#FO@Jc5&=`WGl0Fp74pA@Zf1f%^1qZt?0fTy40YTNz^VS)7I@nJoaUlSpp$&rNbNta54u6xZqcyufm-hO?zDt z^;?sFZiZm6&%L1;^HJZEurL_u+Oh8?w$bn8)9nd;m(OhpX8DMfFb02%1o6|6UsGtl z6Y%DVb*So)!Hr8$w<2~q-0N&rMoPO8Dt_v4B0su+`~VHd)L`|_lK>neiP_Bz>?xv z?TZ}rRUo!|@VsaA;=B!fJ!7l*g617R5u06#0VI+#a1J~ELb>r&CZzcu=SCi_IYKm{>>($gRjHoageYej~WJy7494m?M0W5_@MkARK;G@3-=5u}D1I_&2iw zlL}`CkP8LK&0^g6mh#I^n@D@pC!LVlhBd%Hcm^k@r>AQ1V-<7Lm1o%U>+8$Q?+aVo zqcb6%<0v{3RxD@SRCf_vL*fWEYgdj~?jk7B0kos}J6sjVT=yIwTJ*sx>#)MN_b8Dn zoTN}j3pWFCBaDy$&O275_nr>Ztz!FCjMFlgDm0OuGOr0FKuePYXF!h9X6 zUwBi*Nv-J{WVnf6VPUuV$8*fVtB{nUZF0# zZ)@Uf`Si^qXe}BRjuZr|wsG^eNgV;I&G+o@NJzFF4 zt*TQ>f`Vog>o;A^tq)1iVNE~7a|^Ocv4M(m3+!UpK7qPt@~*qVmNxf3CA7V|ks`PA z!3rNP2q26MX8@dY*P6|bz&q z^$j0d`!q5#I|(OwWIK%6E)WgxjO6?Et$i!u_lS+V++BpXor;~&iCdHRxW_-?&3Zkj zg?wr)6;@Euug-|Mj4=dbcsb4p>)SPppqgst>lJ32N0n)oH?}vSqXE3R6U>Z*xE4Eh zsP4e^8R=bQh^7YB80B{F%MM5#1`j`nt!L`K9{8)LNcS2IoCafXCoIzLMs*UcLsBvybcI0biw2_%X?@1k>DUxzQ)nP8jKjAwGA@L*+sX)6SNp=}JDI}F* zG1YUCpJQF5-U*H^UQZJwOM5J#SvE4PQDYn*m<`-??Nz4m7mRe4+<)3Sk7uz{J0bZM@_);Ba*51=x(d`VeCc`unDGM3SHjMS{kAGUd7s3~^)Fw*{ z3yBhC3`;mza1Y9)gYyu1!5n9USl6W&_P-N)6|MGd@+sSRR!d7$Y2?W6aK)vPAi=Zf zWH=o#I?`Nd7_|}v3fVi8%!>grobvf3=NQLswbC!c?-1G;^%?A1ONM7N2(A#O{BYTj zsRJVi0H3W~1K?=*odphQnu)2Ws53_*JS*2-TWPQ}maT2jcDpn_j(TK(hu#*I1xCB#G?dH^xZo^xlOzcLt z^BkTI%*l-Q@6T%VD{qJTMZMsI&XuCK+K5bkTS@ZrR1$UoPBMDq=~cB~hJF&%uA{v= zrNyhnraTK)eD~~fFnU%orCrV5I(nAt;rV_)z~QIV^hUdTTOB)HVy(4Uq(&loWUy>( z?~$Lzt?C*MsUtxRgf}wpa~Yb{2SvtLEzy)7xxxBY#;tFw*xsEB!kTr~qh?VN?;c2P zzFw>XGqVyq5}*^taZ9Oc9}z5c^I_nP4ec3^6Kc0n%88s}MoWB`=lF8HIW?sk6`Y^6 zic8eWt|F3GrzYQ^>z{+#jl}WVYPSz=vPN6&5jU9{jE~?bhbN{z>H24hyhn3kYp7e@ z#_?^~um#(IgrQd*G76A=zcWN>e;IY83*rwH-7-1bB5Bq(mfHaYFh`Kc;10(-yMtQR zp9|yCJUuRv;XC`-q;LcV>AukvXMXt~WVtNT5>L$d1o~H{7}JD#Q#`trDo$L|HSD}& z<3-gVYl%>SASoIzOm`$>BN!Mwb6%fw^^2#|Tz1cv=l@b?6Be>j72{`O4(Qf3{C)6R- zOt!$qxj-;vZD2S9cO5#Bno29UHq9us>s!k(w<+ds!tRBJMtTr))Dxcm;;zl5=(Fl@ zq)@V(av5-;mPTA3oOcBE2adJnn*9F&5Z>p^@a5)?gfJmxj%D1v%Q9qd><$R_t=KhB z7sm=o0mL~w#(AhffMAr32F#O_gM}mxow%l@ZGoh97uqe1-XIg$#IOie;+0wj5X$o^ zoy)rb>>0*79x9E-m8Mw56avXEF)mJ5mItZG8RI+*{*{S$;!hLBVs7V>3xfR~GGR@m za>O0SjC$8Kr+Aw8#9CL|?X@2zrfk|e$GJR^crFP9?&>f=@7|kwlhE}jG}|9KPcKf0 zB!rbNxd=*tIOqWM9Da3yuJ}1_^r)_^)u32z<5?CJU%RxiW^zx;S#igx&2rz{9wvlK z9=)&HGRuTbv3Vys;AF^2Z2AuMu^zj36^z<_<=`>QLw(X)IQg^NwnjZEsXdw#T~j>~ zEp*i}+$FlC#R38sfV~bs#+K?kIHr)@6S06_ErB`Xwg(ySp7r62C&V4iHLr?el}S5y z*hRG$vXB@S`sTCY@Q;kI^?QAI_~%mlY7d$=R2GcGJd02QU}x@AAID-%P*EETQ z5tAcHWXjnffX|DN2T*tb8s|Lk9r&6niybFj@cTZ_CbqRRNfGtg_LfnPQZZ2|UuIl% z)aSk--su|dmX>}czMjxB$UMYHlVZA@?+6Llc)&gIJ68>)_zS?|+7`0Znd6aEZ+NCs zxj6f~GlSQHe+u+3416E)K9}L^%PY-N*6!~1tJ5jl+{JTsJ6RbasKJ05eK)^#YkE2XKu3d#~`y$%BN!;Nh_Et)Lr z^AO68rNSP?ln=u-l5Vb~x1Q39Ijqq>4S16V9GRU2{B)W5DL z1i8Nhfz$P!cJah9v-1YUYX<_Rp zWd(0jsyMn2S2y<@Z2FDf)wr5GDiIl3WQsK#&e8W-&s=&{*yFqo8RE7@B%%KRNd)7j ze&tW%9|YgSqstTAK#dpgJj6l|1TX}b1Mt8er@dr&e?r&w>q~u8&+_f=phsgeF634n zO2%6x9xxlHQV$e7JzW}#``9dHEpI3HBMEe!ZCQY}jHw6& zTuX1|Nn*}q4=P9sU@&#rxZ|#KUYl{@E8A-s{QYj(A#ezD2~D{;871-7x$QIIcDrK> zoiABQW+aA}ZUAG@FkfT%@lF_8oZj?PUaZb|>UQ^J@92zeFhhL=7ms^pwzo>mvgMp) zC?I4fQcoDqdM;65RTlSf$_{dK$N=NMJu_D)_)p?3$-hul$Id{E?I$@n`GFjF{Jkn& zJK@H(w{nZy=)8bcmN2BTQ=9=NM*#LCKcy8gb#Ly$ee9@XXVRA4zc+vf}ekC&3U{W-3d+rV0l zky~rGMl1-8K{zEwa50m?^{q%e9pVK$ZNyVLafg4ISn@J?!Np+k*qd9~ufP5YZx@DI zs*mpf0Dy41u7z)F7`%?{ZNi{w7ESJ0FH`cU9XKPtI@h0xbc^Q=CE`e(RK~J^2hqKHXs=gcDqa}M8!`NdBK*O9k!hTxrn#&hYG9G~S~ zg`dKWTE^4Np6=2YCv=F>vjrf1(sRx`anH3_Z-&~8k_iT(Zs%s-k~bWl+_nZk8jq`D zHsxP`{1VQ8!fDdE`V52sw*vJf`{ zHj)Qk3iHpscQgDT*Bq=#cM8M-81mbmNzVZED&`p4R#>>iKqPvZZnNN6ZgA zbK10?8omA4ue_Cv!}9AV_a1&OFWH(evqI_^m1dl&;P6P<$FRw$boRNH>Qk)26|_o= zvBZq(&UnYlpDs!CuUJop+MCVg!+mFvxx%X!0FHW|DE|P3QLTB265iWQ61UItu+B4p zy!7?=;8e#8U0(1(EM^}|P5s~S4>GwI(y&Ljf+YnpD^BI(PNl+#zHj$Q=k=(ivDKUR zPL`zrI4wJ6vB<_FJ4yFES50x@Th{RmnpUBFZDyBfwvtF)Vw(dvQp9D~2ae;B-y8Qo z3w3y$O>ci}%YbB7F1bJV%WFiG~gE%JWkDJvO2 z-EWs}dgBM0uO6Rge+*3=FwW9*wPs~(F!^(Y=k@ikN3r-Vt;$wiLs79U$tr>IxMu{G z$4=Z;Xnq!Wmq4B?n|sSiQZfQCE;gKUcK7!g_swqbb!~XXT$PNV-JF@r-FQ0PExgpT ziGpC|E}S~B^vrx5d)J#?*=a+~-+2-hV}%=;uz2~7(UbTJ`WsR3ZnoBD-LGPS+0GSE z$Tl}za=iN-*NtC%7V%8iZfvfhmOnEjuw_5gbQM%6SHHZM-YMcR*4_QbnkBZ@kk@1pXR?I(@eA!RI$E#D!GxoGPg#9xx4hQ20~hHHBvu@T`!s z7`&%0nOyQo925Fh7PaAD5<=!}MmS<9rBt28MmzKeujO8svXYu{vFEzfWeZ8axbYoN z!9wENOUV42=%a0?CA`2`@K;*h2vW91M%I5i3^QkzA*F16 zI(;ds>e5!+heh*6r?Izw;453*`J#wLe$?1yhbnPb509%c4q~S0MvB%Cfk-N(toqv^i zvcq$3dho}n$Ck&T_>Lux2+%Vb-zA3|2m>8PdVf03@V1eAE&N)1k-T$Ce4`R|+z-pg z@->vUF4IP_YSA-7LZeA59otSuK#LdyI3J#Cr@6M*@4QZYVXW#f+(j&lEyBcE7~paj zXd6#V5Cvr%BaXgi&mR`{dmU}`nuVqH+!~Z3-D5scMtq&fpqzjJ1Qy8u0P9zlS!?eN ziT==LXycCjN9By*lZDTs?&hfKJ{oO)@@N zN@&#l=t?MT=N#LrrTGDI}5HLmt@23dsV7810g9 zK9%#ngK;!BUQ|&X@k(UL_X;|GyjJ&zydQCArB2>2j#gO7m+g^V94vYHOT+iKc4E2t zdBCpP+u;V2;wZnhbXn)Og@Fq-jmMgej(~I*U-1{hK8?+L@KAU#1(Ql&jYX4k^UX{ZSDlmhwPF&{h`y{cn`pLf9Stug_w?U z@?+EH1Fdixhrs2efpt^6`vk?GVZ=hm(?pK&>-(9c~DNBC*u z2=uK@zqfTMC)}{vF}N1V&NsvWD~@rTn)VCLbHvv(W*aH|v^ZVRvXXuJ_x7$2!!O`p z20KTkYOD5nTMY>bhI9N(>YPnLm*G<&5 z2-@cAQE!Z&E-0IM=l$G{zP#qTy(`4lS_u0s%o?2I$_?fuTacE>#!lQGI#(|rjC?&Z zxfjt8PW+=|o}6d%z^f7XkHh+iESj8oKvd+8FgFlJ1xuwCTB{|o=zs8@=(k`>6I8cx z$NG?2N&LlVTlnL{*Ny@WOkfN=w(O{L#xtCKc&{b1@vnmXsU#Yuvw1s}lWnfsTUtD|rIjMA`*nZM%^k4W$bT>a}33DMCjBSD69P`tI z?TW$GS4z|gPq5rxOb8LQmadDF!QACrXdL$ZE1X{)_#@9)gUd6NE~x|)ACUESJ3s(; zu18+@v2&>E2SfN>Z+EI)!mYXYekg3#Ngm%X6%1 zVTh7Q{#dQQ>#OnsAKm-M*mGY-+-iESiCo*>yqa~f&e#xtq|Cj3c2oPMKiyNi)Q**> zXDQNPOARU*ZLNU7f;jQFyA#RIewjYBuQ#xiVbt&~Bj9I9yv~O$DPxj*WVUyH2D@!aYjD5XS1@k-FC*n=aK{}H zIX{u&t=#KZ_O>l_AbCm++agT4&tRt<{c%#`H@h@airEz`blXcCU}T0c!=1iT@Wb=| zbnOQ3#4BNqVn`#nUE>z2-bhk%xDGdN#xu#Nbe&53Sc~mb+g#eN@(NwAmnTl325iz_ zc%FSPQC&G~FYbv^nXTXt7|%htu;(%QTicsx=9cJOGBz24Y~9a4C zD?_QsRELxR*#rPTJ=~hRzTrq%-7>%d&>zTDH<$9oYO-3*Z@YF0loB?t-oR2Yc<;py zjm7PI6y$#pSz9~lK2($S#}WCMJ=g=c@-*wMF6UUWNVS=a40&~lm~wiq;f$~4Qj7Sm z=P3frzz(Q{A~2xMZF(2jpp}6VB02&qIVliEzLOlnevF9XKYZ)3nLp z^Q4w>Hu)IF6#@iK$(~DeBvtlQ5Hoks3Esc$b;q5;0o45cC@e|)Nfee%_{ zB)T}fTNz0cP75GJW?T;Cz#)0*k~30Y>2}v*JAFrVi4%zzmLD+nDn@wq%?d8!=Y0y- z+B6!au&}>^2Z~G|K^oSMqz z_*NkZ!YTl`$Mp2#v1Mg3C9^!sEV;o{AnpgLI3Rli$9nGWEm5)&xW;%HKR^fatoz2) zQsOIZKHQXkUSd&vzA!#cS-%Qgt8rcIaPy5s4eZh3Ff%6MjCKKj@%<{@y`*x&w@O&y zOS@x$2dDo4s=F1@&D)|#a@{^`6QAPat!P|XS=-sRpDq$GH@hw}zzzm_;C(6EsIK-t zYw_f_`m6&-fwwjLeU&_*L!@jEnEm=8#z^XF^{$t5WFohUG=kdIRww~{qNSq;As-J?Jq z*P+|;?esj6&*xsf{fN&B$F%&42`nij&}}9Iak*|sdC&otZ^1oT}LmU z5)$kHGA1%W>5@4=LU^u^Xy}JCD*!Fz zY!L&x;NfrpZ~p*QS$mt*#k@$VxM1XLBR%uq+KX6rHatnDX_wY;&2?ub@rq=TV}?N+ zE9dXzykq6+Mo-Yz)xEq{(S(IoE#1i;$ql0*KkLI%A9wD@N99{jzz@8QMt7cNpu>Pp36W zuE6eGu}Ko&BcbFG*i!PK$J6rIa{vNxHXVaJgZh)AI!GOD1gSlB5dhmH3m3PEm8TgHU?*1Rv^!rq7 zg!@LEW_1Uk-}Z$BjykPyQ21hK{8^`HUNxFMa`G^@QA->$MGQ=Usc9isXw;seoSdEj z?^&q3*{ut5R!uWgLjM4SA4o&t?+rA!alqSmi6^>5K89Cj`eSz(uSW7DWm6LI+YWyB zzhhcg7B(#w>5?Yk07`%q4#TxZmTLY=b+RO(i>WN5jt($> zooVfG7zo&rAm?u zLS2|+<}Mjj1D=2r$2kXz?c%q#^L*W?u1+^7ACGTJuc#TVtfaWIgxyOTlCdi!Z6WLf zF$x>%aZ&8iUe(;>?yX+!2-FajJhsqKgV^OrVbhu)OwD;F04pD zT-B8E35!WhSHy6g5En5tcWoP;$L^ibyN-G9pK8BzapXpqF-sH0D9U8uwmJE8jFU;z zOI9Aym>cyt_ZGSmxMII>E-~qjD>B|=asH7o5iuvb(JO}dB5xP&@q1V&sP!_#TcIjGa@`f>{~7nc!G6qY26^&I~I zjXz|G_KfE2{5^4RC)(~{wP}drc;i69PZ-=e$FDW56^OMSb)eh{IoLD#(hD6yo4% z%&eppBe5LUFKu(o4Gz4~K7zgpqCrd&5MpA1i?`_^l9D>Ji*h=K~Zi#m}A#+3>^M-)=d;>1~-uW?2*D>FyKq1sfa19=W8p7^EN%g{@YVg%7}+hHu_!EiVo8y> z`eMDNDK$Gw0Vc3xig1L;kZzGaT<2<$zwqnztM)fncabgCq=BQ90-{COPt-6BI(HP* zEKfgk=l1vm;f+SvJPS3Pgn5BxV9gs5$YIDm`Y|5$kl(Xh{$QFNM$PwR;#i84`7y7i zn?i;T^~90zz6x)(MTk z*>YO|`;%2av~Ph8BR7`3HV7nk$o~NKQOf!SyAfCiA9#D9;c8);B6-7YDH+w<$>I?5%>(|y9@sShdwC5Ha9_Ia6pCrZKE85 zameGndJ6ca(j`=TZzutc(Wd~Pr#w?5@q03TkwK6!;mYml>zwn=3K9o2`X4;Y@aIy~ zjEN?Z6~htBC{_d8Yh(lTuQS#B4XWvvpK8!n>qfXZc58V50C6K9@5Q(w`ivU;K=_tJ zau`O)M;|ubynj(#)}<|t`8Sugk(lG3j1uAHt#G>0eR!U#eW`F2$X#UCfq`lhLAM^7ZPZQsi%Oso7}H zY#ti0)T8rcNXvnfxq&DAYc=%SD@I#(U4cI7D$2P30C;hqsjdd!;-6mHv`m0V?c82;%PBbv2uaW1SDJO2PG8<@e0NDP6uXPkxu z^zB;q1{6U)qOZAfhv!@c2OEaYeK0flccz*HI$|#)Qt>Uak-dTW0V9q{5?Uvoe;xvCCle^b9> zHad}<_B`Y9sr8Q)>6$CYX41g7a{^+Fwn^K;!hx1QrFo8_r|W(*)MS^%6QWqFm5R>Y z)mlXiNb}ep6!%5z(TV9&-)0KTlE=pyo~L%&SA_@mkc)b@qbTyAN8g>U6agtv009R* zSc6(#9q_w&ejA^%OwVz1D^EPKGcajitAsx)dH}r#71Bdu`dmvKabh(91c(i|9S0b| z6|-X<)!ZgX)TjBHqW}@jFPwBBaD3qLDHesW!ITU{3Ed1 zG=SinmtX+s3i)BOe=6)-ON7tNw6^-IOK6}VaHu{y;lp^9rwn&SR zc>B*Bn{qkS5_tzAGi4Uuz~q{;XR?AR)cWxyZ+`tvzPT#Ph66;r6nGjF)?* zl0p9f0aRq^-zV^_uMTR^Sfgp0Yie4s^O+^OzLg6`!9nMC(iaCmBG*#7tR~4W!4DK| zvPm}r17~h>NyyI}XEeEj_heQU7pZ2E>T)ELh55`1V~;=Vsb(YbC#6jknsHYNAafgm zAXW{uj?IpQX04{9r)sANRpH6=35||G;{X-)^c_C6TF(Cf!#Y&r(@u&zb8tv1BOyUO z^v`;JyO& zXOYT*{?1N8C$S@%#De!#ZF*}PjV|gdbsI(VOA|!c?uf2mKIMCMuA}5@v11yxe*XZ- zM!*T~bGs+4Xj5-8;nnPGCU86%3`N0Xp=F@g_a-viuN z1>h}qvK`~g8D+*hf8XlXGPm+f$bRNaV=nT7TFH&>f@H(HCt zT7~C}_iV9t`!<^XOpG2V_<8s2;7Hsk9AISi;A^2#cGT(Ztl-nMxOC_eMG>l^=crU3 zzW)HuuQD#rEl{D_KOe&s{X1XLXN_*IXINW*mGkkI&OTnm9@VoQ$d*DZ-5nSnK?euZ z9=_E{E`+vX!KF&>M$(RhYY;L=8R!p6k}DhN_h4|x9CZYJeXDM3yNh4lv_ewN_kr7k zo`?EorgoWfSmB!kYW&{AIql6BKx0Q~6pT!O1Gf#lkT~s8EtT3P=vZ~@)bsxU*R9!B z2@cuh4f2Dx1N8NzB4yQHqxbRPZ@TQv!hm4sR4X4+3<6SE0 zGI<8)e(Vz1Ju~cc*V>&FHbw=P?>GB67zgW1ly^Bbv1x+F#FZlel6W8CR4269eBnHZ z6+!u!5Ix53Gmg3K#dny7UD3jbD6kwP$u_GR z+*)ohxWc;aZk!X2m85j5=2a1X?SQ~+^vACt*5&BB(&B5WVYG8(vD7kafj0MhrA8MC{&LhrGC+kwF zE^cn6I+AhaIZ+(5pmmdPT$SXXP)$1LNwU?g*56gOg5^OCi6d4V`T__aTI#&GnLNUq zKpi;Xep#xlY@m!w8QB`BCuuE!J%&$OyBV1)V;oAcTf~Tp0xGXT?T=woz>y=evEULp zJv)lg80w(?V)s3WDa)&$4{^2#V|82Br!hNP`K(_aQv~F^K0!ZThshc zCyBIaQSGLUW4f@JG3H8~B$3U#_hc^w6(O)XSFa=s5LAbR|7qcz3}f_uuU^&rKDcU$#n$HyHop1u-hzhF;OgN4qaR3 zL>UBuw!LuK#O(h7V?nuB7$Z1i$T`gj9*p2Dtljkn)o!gU*6_w6Hx}i$v|#54dWHaX z#!d}fiqBP!=2>p8mRO(tR7!yg44$pH?$5p`o_naK^0g}|p?*|4vXp;7q>;(!GmdKI z?TogHptIv4RTP3)k~*=+Pp>}ole*j)8prm-u#KSe&;ycj>P0*I9`tpWl#4{p&k0xou!S;jwF%MNnN0m_r9Gtqd^oB&gR?&Y!~gG4?VDINflmA zvW>?ekXL$-PT#I-<88BfB)c)jpn@|Z*J;HN9QC{*W@kVZlN zm8p96wsE37!X(E9Tmk^V>CSP+X*&$gYgp%9j2C$z3=9B!Vv+QFIp5B?f)-#w3={{- z^gFuoRt}-3c`i(gw;-&6y*UTv_ojWmX4CMcJlOE6?x$%zG0>djJpPm~Q8Yd+FD(dJQ@(W~Rwg?;#$2D7l#>=N&+QEq<5`YF#fFS44c0T#6*lw)a_ANEk+uX9T zSoWSm@_u2J&$er>GThuTNZ=s>`^?8ZagqqeG4pllPD>k^GHv5KxGLw3+;i>t;+Txc zAoJJCx=gVgD-++|vu`w8HDdj9f)ueMAaDRV>)#bSNhOOLiC}b?lEN6+Gca6bg7L>e zRb;)nxR=WE-ZI!IULD8R9YD$VBBtpK&Ahf&2rbYfI-KBbagIske=+!TSPyM2krz%3 z@PO+iajzpeJCtCYgLuoxK3&QW0Q}j;YQ>F|C?wj>%Y`am=G-yI z&CdhZ(~35G3(QFw2dI?`?I9UtKI{PMDY+oAy=>0w=fNK*g1{a+XQcpKHO|<;=OmOJ`(%@zMJ=|m5O+z7 zMx{p8J@Pp?CqIQxWj(FT(uA2G3`2Qi%OLZO+~o0$nya8IJXW|OP1yu;!w30s{cAkw zEYY!sSoanu5`4gWanRH5?qs!)$7QF_df46OM$saUd-;y1@xdI`m$9@EG_9D__1VtS z-10{sh@$8cXFY#wC8!CQw~_`__T!FEeAa1M;*82jPbpc5U_fu79M@kJmV$_ZwsBYEizb`P4_df<${7+9D+C=p0s&^=8dhpz!*f*4oDYWnE%zn|RO6Mmh8c`PZqog>NL1OKcbvETqREIAPld)9LlB>GX@4;x6J$ zsXse`k~)y180YERwJxB}VrXEyK+MdD0VJN|r%u0}WDPRj-fujd2O(JRCm?#M;{i4=^zT{3uLde)Au{F`3c*9*J1pPHY9hie{^li?id^a zv~LMS=b@)mh|5dYg0@_w+z6X5O78T$4pj>Yuda)yt&wX%-mzH4RX3i z`tSG={{YadPHv6=00RC-rauA^m#b^K#P=vBxONf5cI5QWQ}y?)eM?@|*3LH*w&uz+ zU}UPV0GxAkbikd&AAZok8@E<%CO4tfk%H>Ljot8erCHLgG9r~Bvs06`T*olULX!r3gL zzG$LkMj#edZMguRdBCY`?yeD720Q{rdBF!DjP$Bj{{Zq2Z}&gKrncz+0PdgXO_p>P zw|5DyKE}Xkc9p=|KqDV7PCk{fbE)2)NgsFxWWd6x-~*0=x%fZiHsAHk)|JQnga`d~ z{)U%APfgM2v<_{{SIW`V5m;mP>0%?x13>u(4B~o%kI(*O+*I=Id6}9W^OrnQ%Z?b}BX! zMh0*Q^&HoxYySZ947vXRt_}Q+d2fTi*@BXh($#-g+FCkm2C2Gz#p#tt#s zs^~r<)})>o`>&o!5SsowdG3b0jTpoCRk{{ZZP=}x}?0FZ^h{dNBU*(*B#0RBFI z;7k0?KBS|mmr%Pnkhd@LHvncz6Y5wzn z=q9ui{ymfZ*8Y`o7ehwo@_P+B=4(Qz!Z%<-uT(>~sO^gKkAjm=@dv{3>;5!%)UF+* ziN4UqqS(g;e4q6|5yuN&ovMGxChPvV%l`nN8uH)SkN!#YKlR!F0Q4%A{8*w-q~@Kp z?Fvg>J!66>(_$n@sH(We08juJ^r%hDu_{}~wNf?OsuTbKzyNVZrT+jRnf{dozw19g z>02=uCy=_ZaHk^&c`5LW`);&V%Jx&mXKxp{^ z7u5Sw-fJ3=))obngbF@T033s!KMJBhJuj`RLQtN!TzOq;;6tN!o!RY!1TcD=if_##N#L1B#K zejxR(iS--8T<`u9*mmjKxjBF2A^5d#xAFe~y469^7xc|W@uYCio=D^lgYc!+b$v$G z(9drs*7IXr?Ou$)9;49J9V`80pYJtC;ve}3pZf0){)V+t_(Q3)7NvS`QUdu;DR>}y zk7}n4^~k@T07k@Ys_k3?KqU0;O(Z|^5?}h{zsyxwzvL-%{_y_*&_x1!8#nrml1V-5qrU$DTQ~i4Z~X+^RE^7i&~oEHIm`TXwZ?yGRKqCsjirGuc?a|*=BVt+X+*HfI4xC zr62r#AFuw*YCjbJ0LVTs`sja=uFtT@dl_Hwl=y%rlrE$IWQ<@RyPmyj-H(a2_qt;D za<%}*TR6@$*12Bi=zsJYy{G>G$J6~6`c%>yI)4!Bdaa$@R~FMUFpF@&7zKwo7{JYP z?W$@oGEUPz;Gx0K@e`c=d969K^b|TNNW;kU8fT{r}uK;(Xy1AI@7Sa+kJW`~b512%`OpjH`!RvxXaBCd@0LSnA z1#3p*{y%Jg-MRk&&?_kFm_5f|xB47X1yI|EAwWEV?OuO%s$be&I@?H4d0RNg-6x;_ z0AE_~um1q!!Y}uS@)hP0WiDU0j`71}?;w3VG~6IQ;9h@h@3xgwg*18wS zMdieD8&n`hkqj=;*p9q&_}0zlp?J5E#;=7D1AqV=pG;Re-|_bU0QJa!FQ|@Zz&-{F!`r_aE z5UPG8{{WCQ{{T}%C2VoGS63v%nO~2W?;b#0;QIAFYga?nbqJUuO50y0hf&DKL(qE; zD-!3dU+;hHqOIuv0P7?ARQ4ZJNNM&myR4ALKmmT}=-jaUam{cVyiwVi&9K?E2pH|g zIR5||^tiv)N%ddlUURSi0L#bwhN%m&W;%fySjGV@-ZYXa&w#kj*$b+Vg8%>k literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-besser.jpg b/web/assets/gen/facade-besser.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e763937383220f3673b956328acd505642e1e27b GIT binary patch literal 99333 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

$}HY^(>_3qe{E%muQ@+_~P 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 B^l1P9 literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-boutique.jpg b/web/assets/gen/facade-boutique.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4476f195f7fec52b5e916af08bdc2db98cba76ca GIT binary patch literal 199719 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 z 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�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 *;CfMA3bFcKTW4D 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%0Aol2%to>JNi2?=`=JJ`L72i?6la%V~Na&n#Sp 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

VH(y_6%R>FW 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 F|JgQK+DZTb literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-deco-pastel.jpg b/web/assets/gen/facade-deco-pastel.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c5070ce7cb575eabcbba8ed48c499fa03b203a58 GIT binary patch literal 83876 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

1EklK=FB+1_po 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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-djsim-dept.jpg b/web/assets/gen/facade-djsim-dept.jpg new file mode 100644 index 0000000000000000000000000000000000000000..03fa7746172d84e62eabba6bc299e7e827e70edd GIT binary patch literal 54149 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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-djsim-milkbar.jpg b/web/assets/gen/facade-djsim-milkbar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dd16ea228b3b7bfd43ca8842e862edd4f9465462 GIT binary patch literal 55360 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

%yq*NWGK<^v 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 bzo1hHiXJhU?6Ul36#2<~R)Pxr=llNv_y!lS literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-djsim-opshop.jpg b/web/assets/gen/facade-djsim-opshop.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f25c293c6ccfa73fb5c9d1275253a7ecf1cd4145 GIT binary patch literal 49542 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
~ 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 LJ3kEkZ|;8p4n?tH literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-djsim-pawn.jpg b/web/assets/gen/facade-djsim-pawn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ca2619c4b6ab0e4f2c9797de9f351f71a8f9c00d GIT binary patch literal 45988 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

G&n50zPBDgy`wX=_O=Hm-54&S^(q7aj** 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 Sg2dUJz>Dw28mRyG>wf^0?*6F& literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-djsim-pub.jpg b/web/assets/gen/facade-djsim-pub.jpg new file mode 100644 index 0000000000000000000000000000000000000000..71c7b2cb79cdb84d685e30ab48c021e9860d63ec GIT binary patch literal 44774 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�X2eHp()XCar2mU-)Tq|j(|?bXla!%IY+y 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 Pr~qn>R+IhTKZE}VC919n literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-djsim-record.jpg b/web/assets/gen/facade-djsim-record.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dda3d07a0c31abe5df4c2de8f572fac536dc6963 GIT binary patch literal 51465 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
v5zF*Sb}piM{+T-y$LScb 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О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

He+KM{S05nD;Z1lz2(tPmzEF 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 AtN;K2 literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-fibro-blue.jpg b/web/assets/gen/facade-fibro-blue.jpg new file mode 100644 index 0000000000000000000000000000000000000000..48faf0618094605dbe4567883a5acd31333bd2b4 GIT binary patch literal 97913 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�UifkAMekyqdSgdID zkc>-_XvRwwjtVO9`dTabn@ks35kNTr)sIHgGv)dql2Y&J&rZWDQl`I;y=O7@i@6F~M(>K#)vkmq!BQf$ zseYb?n0Zy!{5{JRVksj52#MoTK(|s_GZ1au zx;;t*LY* zB#(U5R*?9_X?;R9dQgzIihc{Xgw2pW!=mYebFqG2N%wUOA1eIBm}d{YB@lWC^XT-b$9b_@Vi7bez73@ri-rbTV!KNu6IN zO7&eU7SCq zH~8~2xktWsb^pBXnned)1}9X5e0;YV;GTwM74Hn@S(^>lo917OjR-^!lLznepY5SHfXx&vz zZq{C)q*uyljrb;D=ce?hr1e~~`iNHu)!M*&bP|po=k|!I-MVjwHn~LBUTQT<3;;BP zDJm!1J)-3=e}GQ1x7zQktdIOg31DhvHY6m4r8&;P*toHkB5r=C_~ll&dL>4oy2@>6 z0X0x=nEIo$_gw{84Qq84BY?C}0(3fqTW3c)av8rcU!SOe)m5Ng9R-M3N`(@l(`cMV7p^ z!7x%qh7NRg*m(b*+?MW;WD)Nke3^uda3u=Ahp#UJkzEC7*EWBZLknF&K_H|S=2MgS z@<*+V9f2+aKmo{56Oo3w6^*;>!38LnmvbP&vy?Kzpy`F8JyPX&@ju2j@v_?G5hRA7 z!9E=av1}+++)1>MY$<7yY)r0ZDi~?%1YOR!DTx52BnXHgJZ}0E(YQbZ&%9QBrAel? zmTiLG7LPD4QJ!g#z>kn;%d;>JQ;}U7htUo(X0~snESK|PW|?byPOHoCd&z4`hmf{Q2h0O^hU2Q@!B_;#0mAxb~ed(VCxMcM)e zu#lPlFzQWwb=p6C>2a3cd4UkM%vpVTyRUHVvu3g$Nv0zpMCJPow5RQhvy&bgXW4># z@3H#Sj~aa9k7gs22yr|N|6;Jc9%eM}11=(m?x;^}q13t#S!H8;)j;RC4`>1p4N4B68ni{{S6t&sep!8erCF!d3;iKW1;eplYRIRYa z@Hz5)_!m3aX-bLNK#3z0G|0R9FNl@RKaHi&dx)4s`HzJ_OXa@&c}i@aFlfpSZxOZU zGMP;>Xs_cZw&?`Ob&9><~Slf8p0IhkLbL*YTIe{?0@w9q;%J_)Z=@r(Z=qI%m#;0w{z3->`LeXaDzBn~@H znduW69I17McQ3AjQw^uAA&)d!o&S>SHzGAC7%z|}gM9GKTwIHFayZY8f;o%`KGFSl zlr)kq|An@&)z#m|;V2=34c-yW?u< zjaFT0VxFIQ7bb=9gv`6b{@oT7-REjyNNj>QJq=ke0VCTjAGke;IdN4^r}Z ztNgf+4wH8LUKZi|$_!?PAoZx_Q4Xh&G{2MB1@2qy(C?O$VbC4+#-cr|knXl( zTQbceua-bNv&-Wy3A`fV13toY8a%+VRw}(&q`9hycLu~F{!xK2x^e!?3C7O_04%7sJZtS}ngO#E+tJZ<) z_GyclJ)#|cIr8u98ij#_M!`XogwFJzDGRJCiq8~rLSU-<=mc^GZ=;$yC_puNfZQu; z$|?C=x(Hrv_NODbFu`enYlJSObuVKY=Axdwh(Q`1S+m`tgl*M)G%mh}pSY-+LOUqW zUyOjzfQd91Iw@n)JjoRn5pWN@EpZ|rI-3Njwy#^qTMQsgIP%Rl$EG#y!F!%bcSTer zj^tY)DrIAdPqKMU<2WiXXkX3=Qz?~G69tD5m)e$h*l4o{wHE7{jVyz&OH~jAC5DTe*!HI@ z$=s-e?A1)64K!cGzomB2{fuE)|ALV5$8PxOLA99!Ic{HQB6{_@jCuvww5x*d3hys2 zEDp$=%Wcew@m3G6CZ1FkA2iSRog}2vdox5_i8lo)5&v!eA+oYjfp%DqTEbrrg)-S* zz5*)V!+-irV+&K&ayVM9N(0#Qs%y$!XJd@0hp#AkvidpnHs<>C1*po~=OyKCOQ0;> zy|qcCtxMZ<)q@3?qQPx_g_~74K8vtq*hCZ51c7Oc>M#s4ssa?m%^39ZAk^>fN<~ZG z?-nHYVpu?n?VVJO6M^F=(*;o#YMh~veBJC0BvuVg_M)hWkZi<#A(=u4PWkt8UdqFL z8B@3>5y_exgz>jcr&hfOS5SlBep6Ym)6X&-`+!%#ze5l!vh;xHw1mi-Fyk6(<&oCa z=_jaHgfhr!J&(~_Eiwv*RUhV5e!tJP`!h;K8l6HwUb8QU-$gn%DHB*)m&dY8uTUQeGNCRW&(mQLQ$8_haAnO$^qC6-W;jC1 zWL^Pl`GfH_w{b&>>P2?j2v_A7bP(Fa$^GTz&|^Fa)xAQ`0!8G)1o^Q^>+GHV3T2*} z9N<}eVut$g&bn~9<;b9-*Gyv^)yQ5V>9OFZETFK~Y;?YFnD|i*6E5y*n2Q#Zc>8U~ zPA6bvw73oaH)l}?pH^;$P`};CDBQ=dUcx*=`H35@$!R{VoR9B;;KsjEn%_%>*}elw zN2#YJpQEHnz(rox%^dwuxZ(@hO^Myf6=TZrSnNdTaV1ym4{q!g!_AbRm4<&Y3l04W+?;+Zlo)Zfjp-%3(kQ55MV+`+>RCL2{?L!JjVmsf#oQC;ts(xkKaDT=c zY5=zKN7$YE4!r^}E6z9Zz5f2I!?1ra{_+Z_Q*-uP6~cf;jj+a+Vc+`XkB|)dJ^S?J zy^N;BmkO-c6*o=|M{N2d`U^wITPn1L%(}4UDBjQAFno5_JVEKwyO__}Ye0LM40Bnd zc?AUe`_P6X#^%}Zaln25$P?&|-&wozf(AKP06mT~X(1F-6Hvuu_&m2Q#C$p~+O(0< zpuZuPlZ?(0?-|-2&~#Y(+*8r`sqv6FS|$Yl8)gr}?!l4jbD3(5;nMYE=A*;gG>dsJ z!b|dD%C!*y+d>4RwDdVLe0{4p{D~kFxiwa9o)kPm9?TGOJ+ijZ;4|X%NH1Qr`kdI; zdU8{*kZyM6(!4LkKBUkSI%DOdREglyx(RgyM*;7|#_i|TWQYV}*Al&om@zSV`f ze_nDu!mag9-fl~(FZ7XZ*`@oT$;f5UW}qQmfM@Fco}jitmozLrP{SAac?MNTiI5w%PFB7u8oW=DV$fl zRj}up_L3vp0$ZoKKii(9T#x<83T8@gfWO>^K%_!(ooy(JtYi!Vvi9eEqB}!~ccQ-tlW1-UpSe=r~MYdp9+=KG-eq@o4EQpzZh% zk$D2Jy)Nk6zg}SXlL}T9-S_@G?A;$*vZ6>uhoj(pX_O>uy$Fcad8~cB{np$%gOqol zs)11|TBm2PzKTk$-+}DtTNXCcW%j`gSlK#Qm?(!XO_hfC8;b*3C=&2S*v-y+FcL*U z=-s75=qEu!ohL3q{0o-ge}%>5MJcBqIvQ(jk0*)UPfT62f}BsEJI`5CgITtkBV>j1 z5wP$PVgvx=p0_3EEB#Q7F52YM&TRgJJjwnQlG-9CxI}~^5?I9b%Er=N->qAa>cT`N z-r4TrCDo4eJ223Mu0eO8`8WW!$+9?!|Kxt}>rU~@21C>8*36KtUd&8_*Yxg?aqVm< z3(m&iW5fIj(ScDTy{RGd>1OM;&_t{1Bjo-|zZavP4o{t94F(~e-vfV zXcW>zk)GT4mR3JWXkfkIs86h|MUS&n;-H+#RD7;@yt|o2t|hP@?On1sX8NL50-`f2ft{|dHv|?;kM={Wt()CS zU@A<38FSQJ@+2-~@-Aqi41B^G-~5obq`Q`WcRKvzc(=nv-yqC}qOm#v@I%w5zZ#z0`kbI+H-@wR+)BxzRN45G3N zY=w?L<>f5LpMF=fl0W6b4XI#xl9Vo2^`BvGj9YwnF!OCd#nM40YupBtU+61zop<#K z64WLNa?k!cNh%J7fLIMl$ee%u(olle68AoI+YT9q5+=RN*kiN5OZ?n zsg^~NKl*+^rb)UG(xAKasp9&mupx;{l}UI_5s}hly-?U!Lc9^LP0zgzlSe=oS*OP9$4Qyb`bN5|;$LF?p?%G@M8 z7k;UM7(qRP>j`f)eqZsN+_91lTMt`7;C&wKg!)}4#eK}>p4m^1r45Pk_o=aQVP6-b zOsG5RdN%L`K_t+zp=DI8E_UeDE8xeqbL{XFw$6=>BB}>*9oIV7+*dxrp7=a8DPZvf z#B2ifrm}Esb12kxOvH!Ztdz!(0h=L)Gd}Qr5=so1+lH;Amc!GPwTQ6z>C5>|@?~X# zg%2E=><==!ScB%X>6SIkEtEb=9L9s?hNPKdN{%th-(>NVj51~4y8qhz)p-78))BoE zIiQnKGt8!7Y}7Y%s-gNaMx>e|{Ulz@;M%u6icE%Bzcr#^6edAOSX^V{S=I3S{1i5%mdxUeA0@CcQ?)_I%E6DVE7dP zSKj{dtCRQECtL%X_}_zTb~>MF3HX$MI%9mk3lq_D@sMERORKE9`DMRkY6|xXa8%a5 z2PCUtfhPp(3t~$ai+8X8asG|P^jq|!{}aq^GrvFz9h+FHSo)~v?{+2<=(!!^YqR{V zYQ+KeJW!I@@3x$h%CXPRT{n{9#euN!2e!})-3X?t%^a0(S1y;M1AvMWgdu1ymsdR} zi4ju`_v)LE9pX8PMAm=C_wr5Koi;O_x_8-ppBehti^G^Zf5p~Vyv=0+eq-}R?{%V& zE#gG#lT65C$7Hde2vBadn#DXCZ1UP+pO(xfcbnF`=mkMOg3x`#pArr8_O4`NNhObB z%HpXsQBkZ?h!o|dyPl$%eX;#PpWHE^0Bf#4Vp$6T>tmA^Ytg2hX z#>wNy5}E|7D{IvU`C8!=PQ0*8)Ri9aR^_VSk`Tc5RA>5S>jgy^-80376#*k?^cqq% z`uth!;-EFovh`-Jya}t4n8uI~1EXe<_uTVD$K8PBKER?_;@^6Ur(4=XV>yjKGS6k& z!P}XUM&T{j%Sh*V6o@s-;jbnOL4 zcwC0;I=8x*H@?(PS5{j5xv@F2I#ps=!)$)|nNWo0G0E>Whc1M46#Zc?w28|WSreT| zv2m?4{YdfAK$Gc_h^I|R3;U$w5&TdFzhRK_b&z@QsLfvROmA-F6<`~?^p7XvQ`1_I zqiCTWZ4b?M<%U7S1JafdrgcsKg>?BE1hFkNhMRE-sf8gUF=)Wu5B2<|I83>*g&`BuCD76w%527FFZoXvZz6i z&gRHIuESH48+B90!G^$eug-BvQE#waJp;d!s74!RFASW!W?fYqoNYlW?r1`Id)Yk7 zM2G{1xIx2lH6pXBq&MuB7m5aff7I*7%X!D=n#%1# zCcMihT2T$#<;bSdH-wtFiL&p3p zNKh(Rx3I6vuXt~dls$L0kt31D71@H0ADfv5Y-oPA&E>SsRJid>kb&MGPO?4{k z%NaEpIH_Ai8m)#2>FD*08l&FQZ7Qd|@0zcyHfF>_*|J(iD_j;>V<<#4u>Ok_W3_@T z>@XP0k>SWm!KXGB|3^LWP#{E(M!)4uX`EVxeu(6{cz%^aQm5quVgf_4;?Z>BF0BAd zkDP0XcqQshfu=fH7&kaoh^^SHKe)fI;Dd1oa^Je`}2vL1)SYr)p4Mn`f~BBAM%vr!sVj zc?WwlDY_7Mc=wy`Ntv~_#(GcX*-UBTlgS2itHya27b-NF5`>aN-s@6jyR}+iay|P; zo8~8_L8Ze`W`DnJ953twI}d}G!xQ}~xE_{3iD?2-`%Wc8F%C7@)ia|nww&eHM=4um zL=(C$nF8d@;FiJ$R?oNHluf%5?q0hO<<)d7PRdX5#67t7cJ@I(drs|t4TVKEDCtJ9 zP99hW*01lp`&F7+ZPUwJ#^p#7vj&$^pYb)2+6)mHpwAwQ6uTq~~V; zK;eKzyp5$Zi%<8swa3SZa2R;ES0c@;oz{P>R!5!(A$bK*M@t-TlIWu+K2JTVZ@Vw( z?4JGjDHooeTvc5xtvw*9^oG$-)RQ0XXuYXj zwcvpFq-n81tNm}>*|HZA5F_GYyRTI;JXNEnrMWqtWnMk0v<^#xgP0=w`rnnIBr))%-+^wrX9RInB$mG z(C(ZrnoU(AfVG{_7m&HleKB8E-r3~oV1`)BtkPN@A412Bh4YEzK@tJEv*125-{$>4 z%-x1yyM{cPQt-$G_S&fe({9-r*7^bavf(&E$zJqvzn#)f1{UAN!|WATr48cG*&9Az zPU*R)F+fzTLp_q&LxA#xVwJs(!kBO%FXz_&@AobxJ~S#B2jekDF5 zB4#WF-3@_`qnbM29o|`}c`j|V@yB#6*r^eFH#z$xd70Me0guH;^J#Fjs>GB7>r;*c zNCHmMHEIVpDr@-PrOl+P-6y#jS3~;#b)E0{nB`c!@&7apORYLTB<$@GvyyT#yW7WA z>Vg%X{mb=@=U)NJ@%ni_xv0B|PQDW;>mz^P?Gr}Jdy&n!9Xh}NZX_EFz(L>T;E?b< zg^YVm_H|%U;^~Q)u|&4B57VTW8Iz#U_~ZlMZ0iD9GIJkd)|u*AfWZV*UXG5woCgMT zuvl!5UI97lRwhW`>ZgnXf7W*sQ<)ITWJas?O%0i$sS6K##5x-ro1Z_HP|=)`S23{I zql`Pf=eV9_rRT~?PK(lmULHowAA?~gCBSWgqXU~?q%T{q_0cm{;$*QP^B>xgt>fg8L1ql7(#?$??*Y3M1&u@J`QT-!R!~9dAJ3Ac;N}-El%XxA^1B`|8 zH>k&m4@>gEAbe{Dy|5)pW>4N9Zs^M--O+sWcib<6Ilk~KZ|9!X#PlpPmEg0pFS5A| z(w#-0bG7^HBnvzbEq+9A!^O-bv^)uTE!0_4VAM3LN31p35AK0?p4wfvx%UKd?|r{5 zpA5FsxTe6e<1zz;9~`l*|Cwk`S9J$$vR8I#2G4<7g}~y4-*wpp0v-{ zE@XnXb+%^SDz)V^z7rkF`5F{ET3r?z)gUPkwB63*XBu1TK!qr{2 zQ6WodBHOeA^~$p-v~0%9{V>^~Ek?YT^KRe+E3bPAi48)$oG~wpXhE1^Z>EAg83M5` zaONG2v$ZCg=I&n35HYt{G=>Pl4HwdFb|IEHd&*ZokFr0*av9Ju)Eh4pfa&a*5w|P@ zeD0$t@_@Q$FIGb`%ffG|0^+9TjPh?&?QWokEc z8JSjN>?RL$s+ z5fiEmV*aewW)Vj8BG2IWjIXHbr`-SM}<{A!8sXbz_9$brwtk2AvH zu~k*{L^&#dajD1*40Ti^-@HtQSRPM8r;5w$?JVnJ7KP&wI)Zw5l6PlPwHJw+gIVk( z=;NHnDyJ(EUuJ`4rT2JvU$~95Ml!?RR<_71R~T+3mi43X#(Zi=3kRLD;F3J_yI0)73?yfE~_{oKgy{h%|}r!s_o%J_BW&zfR}DY7#U z!z%z%1-)@Vw$iAP^xPiTzxhlosCN0F{8WV5NPLcM1UF%mIotj$IZ^9@2D zj)ryzz9G_#rc)8$m>!d5g;iTbfXm`lMDr^E|HIUNqXW?)t*P+z^Dk6QXO|jB$9E(9 z5P<=Yu1G;vn@p;@Ov-mw38E?NZS@ry^d!JK*KU3zKQ7UN0bUKSx*KG0SWyLUrL$USXQFnsX`zl9O*A23l;QY7XlR;-nbpH)-R-}TL3oHW@n$sV=uwXrNn}1k&%uCv(8v z-AsDz4Hh_f(^tEh#zh5c0&_-g%U2t?WaUvTCyOJgT|fSgK)}J@)p+?!+qxoezI?k3 z!eyLhBk4Kx6*m#+*PP!lm2_C!RgmBu6!}ML9}i?(lB8O*OJ^%}%7}`(gFRbkB)(^f zde-PMY4JGSwa{ioL3j){ts<|}%>>E@&@{)7V0PQ$pnSa^uwOk0w42eJKvpCM_;fhk zlxx;TSCv;(tVO`fzL^UJ5KO=E&nPVjyJ+wcHm9%@nxQ!D%#v;o5JDA7M(nYiVpd;V z3D<(;(Fl{1iXg*O0eZI`#RCq$1S#gPrjl&h~EZLu$tz>rj=s*)dpzs)GyNf^ML<9PjxS`}| z9c|{AOWpI^;$GwlqQge~6_3<5(1d%yqZR!T8=o}~C5SvX*S?IU6&>;ejHIxsO21~QMxO5(7Ad%RA4|_1@j2M^Vawjwml1LX%@&hxuH3>zp?9g`uMQ3+n{z*B%a!=mwoo=Q11~y`JvM1SMpD_}d(nN$=;+$@i46Ewjy*QZUKoa(q3N3A z5i{G-x2EghtXAFuP-^ah931m%lnqZ9Se{foX>Vy=i)^K@Fd;@0>9M`JI^8<+VsRP> zYzgSxz5>)=7Bfyi(TV>R5KKO}@@O4=6!ZOTKNsJJ(ZZ;>J*li$zVMH5OWq961!&@Q zi1l;>Ib@uQyyi^R!l(96cQqS1^>}9D4{=NJ@W;6Pfcb$8nK!m1?}U9Na5v^8ZGs@` zVmcjv=}^b6Www1WMPl#)t=#h%yf0+vwLzga`KQChy4f!9~|fk;?_?a1$u{s4{NhI zw@}5P`_gNQTH)OvdYh#P)zqvzwfPGJUj%I4tIRXAG=N!ESXH<&c<8}&CI1$@x9f_Q zJ#R@B5Fpr7*V{86krAh)A=49|;VGE>0!@K;z! zJ2oS8>VjTipMyvbWa2wx@o2v^Ygn3|$JY7UB=gUFb6_R`MPC!YU&9#76MjpQPg(Vw z4~o!W>*F)FWUOJLVxT%znM^ZZs?iSIspMt(PhTNLQP$6%PJ!Jel-@B|ir`$u>P^Dg zb8O<0DLOy&Kc%^GH|6DrR%t@klEW+P2J#2MxHVC2q)#(UM_4@62s3YYlHXs%S z2O*O}5$NI1$ZW1e{uJzDnLyKtG+)V8WZ!u30V*Uc=a9TCfifz=u8-T#Qt2WSHUIZ{ zuC}FiHv3T_o!=cdGnx#UvOq!AlC}%ydXntP{@(CITjo-gTGO~oK}&>OQ2qOW7u5|a zUz-D=FvF%O-ssW4%XMFzzyQzp{>%Cn;Gy3cUSaj4O)YTE@8Zzv3gtswO&w{HNQS9K+7E;w9Ui-)-?9=`jl{$RfmEIqn7@1v z)FpNBais?27*RS5UAKw%%F@PM)EaQ*1AqZafm`)rh&M$)6>g+3sw-AH5V8C<0s<1N zHsx?Ap2d|2x~X8Zqj0d9C=X*RSZNj4fKz!oe7>G=<1P{OJ@ecTRBDuy$X zD)UNs$uOw+NXeGAJdi)ZNd}HK17sVe7QzN5z@#P`^dRUN9+%$DFx|_bra66P)GJpB z*Z*^SBt;DZ5&DQJa(_x0%HGQP-GI-KLsspjyc+_pFswV}k5F%btBDx@U4T!XO9zdj zqiE=~Q)9&xzjcBtm^l+aayW_<{h0hR-O$fi6`_h(1<bWXd z44i|S4g8G?NVL3e*#u!!pF$95+uH_S0c20;FcxPP6oWL-NW#Q#_-q6^nmdH1=E|`F zujJF%O`B(3#n^Eus&=yU%6)=2R>RYSkIhB$Y0);>a23sGPFbhDB&y`+O-d?bk7WSK zHXZlA$%RS|;YiC&SYfG<$Ft;p(W9+ZE2*p#?5AR*&I*A(coJeDMoZUd!U6n2zRHAmbEI)={fo!R5NX>g~ zJ+J5>j_l_F5&fVvoj)6g%e^LM&Xd8pV8`dB3j287ukr3|4{_}JeVHOXPfS}~%Wbzw zwbL5^7XZvaGr#-c_lBcOqj73ul2$lC&wv0u+i5>T^smbeL&ta8QH@pFGlLu~x%roH z$l&xj{{RY%UTEPyN-E={hEtC;+5HPm@z3F0QmhTD+n07I0AO;%x9MJqrRtU%&6?in za*1MLkjitx75wvQvRlIgUF(+-#4V%cPzHG=Vi|GUaPCex2N|!^pV@Qcrh$8Hcj4*X zW4A_6vo7orziMNi#fb~a=yOwn&0Se?)v~#!BLtwipnc$s0pL@&o`R}Lsc8_}9Y#y2 zk^oL*W&wEPsjnpQAIG1E`U1GKk@Y8!uaE$YePnDe<(l@TIIUU2mt)zmNEoWRj-jXM z_NMb!o;z5VtIEMg>tCH-I{mezl6iE`4N8dMaSe(anZMvq_ZRZ7o;9Bs{8#vgaMuYR z*j7$F+t>5ud2cNk}jvb-4{{XCf zXP&std`t0T_U-Wu7V7>Pk|^St2oYJ0?ig}+NwY2C?ys(G zR6MG1vAkoJK%)Z(sO!kCJH>h*hal8!Bk;}Loy-<{WS$uEQE&hV*z1xzax!yXPA?Nz zn$6iBz6%XbqPkaSb9M3G#vUk!+UYHgocGEE*B87!kxrxjVXIyei2?k8$MON+bb*gt08ZkGxSq$;V(tYxrLF{{Y6f zmo`5P?Btr~N($y@4Gby*fFl{@i$3k#ag)v~lATv8-&3y@hlM+GyB_tY`1427rE4z^ z=__j_Q8fNm5N|~U2Iw#cZsxq}#9tT}O48#u@<(iL0f@|4hd>EqgUKYEV1eybJR|U< z$G;JLE2?WACcPRx+y$dptp?xSsLmO>o_h=qE7|-H@PoouzX{`x`T=`+9{F10Y%{#O zvy#W2E3z<~(VldtNoyTlkCXMg&lN|f*=mDHxV-yuPqNAnmI(s^n>>I^XQv{xwJ(8x z5hK)e!+)x*5j!EBZI^2R&lw>gT@x|FTy=_zv-N#+;d&Aic!$ul$(~l&#S&0 zMXgDvS?T&E!dp*udt`;>8;6!6Eb0L2NLuVZCwwsR2Csb$=Y}p;?d?}4FO?W!usYxp zMsrj?3usolo~dp2o$A&yTiqt!p_T%i`h&RUy$i*E6D*+dB567`y!R8Un3SRorTNAO z1oO^%SIJIRoV`!3jBgnF9Y%$x_}@#jwnl<7vBbNClH~5=gV=HDn(Zw#y;` zBza_zRGvE27LjVVR?5@N@yQ?u8vp|XoQl=57nauI8Rg!~)s6u<`c=nW$db0iEvDT@ zT!Jv!BiPqJqgqba%@1_LjP)Sa{pHNRw zX^Z`-B;rhvy*&`k(&*RYheS;?CS% z+;aKYaz{$pZJ~pDoP3@Dw6`B<-#mtKjiloT95y{`o4oibr)sS^xww=T+EJAK-Mu;W z{*~{XXXPbrrNG=tZ$7U~;N+$6hKSWL&j4*lqlEq}aX2s7`YlE|s*ko5c+UBveQ{}rTO>9i> z6u%;_TMRLePHLz2Sg?moRF&q6d5Oz&jPgE%wO`e2?ijKH{{T7K91u@GTGhJyS<)f$ z92QJu5C>0MN$+$w(#8E(PZwHDii39GSDyQZILGN#G%pR>T3W+BzT$;>$t35eHC{8~ z2S6ibD}YZUss5F_q}ytXW)f*hBP5PH*3q5b#!`irf(mXIs2&%gs9`VMi=rF$K=n%1!FR%YFkmN`7uKBZ}`$qega{#1;kYjwvx zao>t_PkRJf?syKP@c#1MAMGTfuHyV1;1k0FI;rD09+gK_u<)$V+F4jgWVw!ExzL=D zagcFeM%d|B+FyhYpQ_CIgy|cHl>DsOB=+fma6Xmc>7`t))uYFxq)@Z5h^z8OKqby{ zb3gsb#yDj}{o4_MPs$HHGBf#C zp?HTzk64-k<*xYDJ{XRJgX!4uUOVGmH&>Tbh8DDGOR};4AOLO`IqBc&RNauGwK*M6 zN$|qD*;#67<;ZtR2>H6;joge6t#ZC3(sV(416rs>QdPEc4lsE7WA(3K{{Vy@Tdi8| zWPt!3N~j7)Tmhcvt#DR84AyncN^3}CL@3R;mRxS{fs>4Msbwt;ueE8jm@T5VGBk`4 zf`gC&#^d-_x*fU=qT(qq6!DPb?-P`^9Fii6MLpCwa4}QJ4uL$uO)S%R&mr+Jp zw*!t!vE9kWd*Z4t>r*%J5a`-+US1d^%i!$;+;9iu*1Mfsz?L%UUt_VnN!lk;VfAC% zCy&5aDsHA4gpxxOM&+}&7$oC4`VN)cwu7na*RUOeVBuII4UDcc$>a=rp1G>GLR;46 z*Mht$bEN5aDAEJ9wv1ryZn((q3H+P;6HPR?A>EjN5GDl&9GOMRgO8Z|el^NP zec}buZYG}1w?IzRS5nR>cHIPT)XllI)bE&FZ7Aar?cn_}&$W5`_)o;Qlbe|5;vD1> zIRtP93FkhwwI$z;3F}s3ECxMP?_k*=b zZq;rTXA(^q1zT=dWbk?P^`zdHE(*@fW|5$Hn_uxp zo2^A|?QLTCcPta`olROX;t4n0(=RrNeCKT!IzaSw8C?!2urmuBsZvoVE0t zFeLDXk9qNt^y`acVRvlFBA?<@87;f4x==zq0rp5Ma=p$(%xQy*&kT!bv z$m5>X^uUCV+A77caPV+DW6L$8;hT7*@xHlhBM=Nuq<_G>e=776veU9W**$)2_`1vC zkH%kz-X2|Jz*^f}qHIfxXw+J>Ir6|_9dAdscqpUER``AEuw zrx_d&I@j6W7z)}px{(e3QBVeWIL&fCAn^8`;!lUsY8UV<-(;Q2vFC3>NbgfRac@=B zxMC)j{S18r_J;UTV;zNKqq!~QvIF$E90$d$HewP*&u){h98uY#~|c)>&dS%)4m-1 za`j-1cxJW@d@;G7&2S81mmFE)P8`)jU7(3*%?Qi3Ha+jdc=`eElX?g^2r`j4pP! zBeAay@Zaq(;(rHT>d^ShM183@`b2?93n0S$vMxs6G6n$VzLW5G?G^A}$J=zpx?L*j zLA8F-k1cq~+aM)*$sC@wwJXLcR4}g|X*tq*A4PZz_V0%B@;xhBG07r;9vjs*w+H>w zM#itH^q<;u!CHz(_KPcvXOsKocJ%DP;E%?>2G+h7XdWl9V?0pbS{T8N*AfGf$y3i< z0yFPkL4WXzRnRpTkHEUk-jq;r89sHn%V1(R&IU(4I6l?TntCR3IZ1p-{b{!Sqy8P; zh)f%w?K}LPtf$QK{{G&1+usz}e`!C4_djLwS>NrYg}&BOBrErVbIBdWeotwC5xy$; z84>(XqyGSELlHQ+(_3Vlm}hsA=cyU{r<(Rp3VzX^1=b|D)9&t~ieO0=_mTaUb$)qW zz%EaHCyCuZF zL`({h@(!q{Jh!!c;cKh-YW5K-fe|D+oB#=7o!lL#>If#TCW&WbJ6_w6@#ifYpWT-~ z#-#nn=fCG!I$91e9_U5@dh5J zpL#yCQ@Fj1Po(DkqrMm-Ni37P2w!A`?fF>r4bKGjs3-lRJ{ZNlWV&VYh!2oHQr$Om z#(QSIWV`UpNb(D-NbX~s25suOe0|;9h94cbVTWT={{UckXHXMGC7do~+vlssHx*u2 zdXc-1*#r*MELBe6=*N2>N59Aa0EVl)wc%eY8}bLso|)&2_NKqbzlN$DOL|vkH)LaO zdS{+9+P-j`!QLOd^UfAJg@h@ zp7rxl@Mf61-p1A>FCUYDfC7V}9?ZY&o;?j=4GPB6QT?T*Lxocc%M40XNBz>cEUWFx z)B5F9Qp3UQeP%v6{4rvvFY;UxxKeTlQay1>pB%myyC&U3K4x}dPtA_F^~ZYobv!lU zyM%_~!qVJ%0IX#ZaDliW5x~zv0Ut_>{t+!I(PEA(7(lnlk75C^w+(^YJ@Lt>^}3I# zE{s=0>ZtxV{4af;UZkz&k`oGkVm&>73Z1?*d@~_SY6IpwN6OrvPMt-3kiG}e<5-2g zlmo~nNbwq}MsB5e8*|?nHH>^6C7hATXK!yZqZz!pqX36JStJ7?kGTA3`qfV2_HgWd zqMsT*7qadeh`~7fjn~tsT9H07d@vw?#K>}S_ZzRLPPOq}wwvL2!o#a+DP^(z(Y`ea z<{oz|ugjeKgIgc)g!p3R7DTd%u;x|cqo3o?uehV@6M9@ZBiQ>8d}jD#ou^V6&OYOH z^y${EkBmPI@L1|g$6uAd!oDV-zSw6@7EA!s#!uA%= z{{Ry`COf1EBl9iy1_{)I9^uAu!jo66d^O;GK#O}w5ITm$MV%ZLA28dvAM?c?))}vv&D%@<>w|$pO`f13uu=_Ocz3`ZS*q zejl+I)$MYB+Z5sBzXFnW>ek0^Uz}Ix+=3?`I}H{QVw`FeJyzk&3O z6lml;DselF!A}_hx%%~|?W9jCKSB?Vd=rfS0BYM{ck=~KzAo^5oGzzsf8b)jJKw>2 zUSue;sgPl_E3%w+A2%8AQd(#*T1>ArGPeUhRm7b0o>Z{u?N8dUvOoXU{TcX?@k3AW zhK`!9gz?|9vu}nb4D1vWh36UKytl&t0JYD;6-x35@Xq)e#Zbp6UePB>}^Iw)fvoFP{yc4TEpNeOa z;LL?la86uf0JC%i4nCaM=}ni7d@X)0(QcACu5cD2K_QQBE8f9lqlkw#%=2+LXGT`& zb_$Vkz^53|fF70Oel_^t@b|!3k6pXlC}R?+A9=t8DEjBGO6|Ng;{6xJmPYSJm&^fG zoPT$BW9~cGTx!Nokv&XY8dqrQ8Wn1;)_6D+f>HaxAlNZaNK2l3Qmd}q zw_1^90~qZ<4~ivDSXAxhk%s1}dBETg!kgxB1q8NeBv6rq-lCG;0n@!!^N18~B;?a2 zv^UBMM%r*fM;&Tm$gG`r#9Bv&ERLb8$Q2Y5f^bM3X+1RyA2IxE{iwV>@S|3{@V%X> zzSS*bNo0s*ZAKf39CL-|@vjrn{{U`#IBsIG)vP5fNLQ6G(Sv|aPX`#zE8)M19}u)Z zh#JnbR+qy1qxrvOGI_Sls?gGN6(b(O7cR3vcnLa{kAXOF+hBk-uKb!!h2**=;P zqiB$}^c_@v@OkUN#~hmJd@13^*EK6`KU|tfZ8bLXpz_yyxmMahU-$4c?_4w~&Avo+ z)s$_{J$zNAY1UV|Tv0(CzM>J;8FJCOkjKk!;m=OJI`po(*Th;rziu?k05s-+FPAh& z7*Kfx^*#Bo4)KqJ^`8xR&f~!MF`Mh#ZJCM;xmPL<&zHE)75vj z4L?bW`s+=C;SQt=nIn!6T1cdiAwytbWx2<3Uq!*;pM?Gnk~lnLtQ}_kN|6PyE%T2= zk1ftSkzLN0;tvyuWw!Wn;m9;gQbs4c05Jsh5wFa8lk+upQo%{9ReJdux~eYlUwP-= z4){Idxx-!SR?BH^AZC-#ZH#$4Tgx1R0X=K0)3tAfe+^)lLbaIR%`rk!*-VbD5!|YU zbBrE&HMZUW*LCTHo;}sBH6(NLM2+OZjPvrZC-JV=MDVAE^ca52rQ4;vX@CT1H)pS2 z{f29*jsg_j;*9EIoV0A?FFbYeOT~o~N3l&l+>%7PgO_kSm4!~xNonxjeRvy>8tQi% zqizACX7ZuuutdNkKE127)_hChp9`x$h%X|Dsq=zoGBTc|FWxx%SC`m)TDb97hxI=Z z{4Ua_)uOR>$&{EQE*FpkWr)T*S5xI*6S}R1@Hy`0K?r9S*+B{6f!f)#I%w*3JWtFl6fbZJ*&N7F^Rlf_UYc+*G{44uUB+Ze8S zQRivY?9PZ{9W>!jMRa)ggT4-UPr!c|WWKP7%G2ABrb1YZ@K4N1=Dk1R{)1tp_|I9h zu!Uh?m4N^NcMSffw(g-n@Ujw7fCaf9Oq!d+Q95|TQ<&hERnO&D?9$t^GWL#7SJjwa z3xFktuL$|Sc_uOI{xvp;vD^GOn9g?<4f>k3;MO7yVnoL6@6W$#gG-Hv!@I9AkDGQ+ zd{(`FW?e7jW=|G$W#ka> z?`0fUZy(I*B->eXzy?+BSDya>g?yCtZ`Ata?3bbG8f~tlaSEHg&^I3_aQ(R%$2``> zuAg9z&V-ZSb7!9QqZNefCP7`Nf!45etupQ_+m*g_ljkg(M%)5^>GdEEz3S9?Y+~e@ zYW@p$Imb?z;&105T{XB1Z4*j(Bo3KAhOJqnH@VAbx?Zz!q_vIYD-g!fvP@);anKs#4}`T<)n>fV z(dBt}0J6#qX^w>CWcR@BUfW{wAZhM)!MuILjPchb99JCro|UERf-PG0l52!^NK}oD z8g(R~;EeH-4Md>2nnrJ19QTJjE8_bNZab}8%X@HyffRvMIqFPce8l~6?Oo=fV|{mQ z4Y~59L6NnwxcU==P-)&W&@~B7qBoGa*cwu+mcYOOo!KMXwRH-q6l$`t%krb9PqiGK zA`Wk<$6M$T>CkL}OM*`A%t*@|lUh(&OqYULAy5-LNpF~E*0gRe-ERKH9C4g&KQm(> z=RK;!^Ka(M83!LSuP5-N;yz=S@ifV{IJV?+NUPSiF`_6dxPg(+b5(U{@o*KPk)o13 z76fof^v-x3=Ben~np{X=9(dTLPWZ?ibvfyuO67M`cRDwUv7M?(GB#7?+0Ndl09CkB zd9-8ZuwCiYkHF;BOVws~goaQ?6^P^Ok@TuMu7Rs+`Y?s=wnKA>@fMGy38cG~gIX^66;!ifvB&@tM}pKF3Gb8j9t62ybmM{I$de>&rCEOg7i653iUZ01P! zNf9r==jI$|^RGwICz0%?WKiRIMPR@jbDj-Fr0LhMt3Ii548_WMeNX@gCyu%1s+>8J zWX^6aqbp9)wEHNpBGTcILh3$H9Gs?oeSNFVyak~_ZLVLl+q*B!K_hMlKKz>cUSIS` zWt4&yRG*ml$MUZnw!g5p*RR7~!~$EH9WjyzUfnU8(bBM^Qt05XJUyb#d3UG(0Aw`Q z@Pi`DfwZygxH-yX=DizG@Ws96n;fy}%Q;=V88&g$9&kAHu3FQ@+6JE2cM8QYnE6$X z`U^HXtV&dLSlHzH z9Qz9KUmVQ$nx(zLJAAW`m|*dagnQSk>YBXAS&kBp?d6R5alC<8^c-*p9_GBW$CqDk zmH^h$z|g2&vV5eI$>TjLp(U}LlX{#^p?FoEXw* zk~gCaZpkMk^f>(M&*0Q&Tc6)X3WJe?3BbWWt#;Zrr8kMSV38n+1ZU@LcPH}otu1k0 z$GP}7Rn_&|S?;x%LKJi5sxc+8--C|zUh4K(Zwzt8nM8hiDFybhBw!CxJ?amJvDx0q zJ+ya;DMH0!LxMJ8S-nWf#dgsf7$y!V9cyj z%T>WXxj64mTU;Z(k2KOX?PAvQ8(SzX9K1o?>;pZ3KD6%;YkH)XvBE8&M~fkrJ~tDO zUe(QbdL16(SGbX-l2V}t9CjVBc;>9?HVLJ^##sqmoz3%ci~-Ns7ESjGe=DoV>QDtY5R{?$uT@ehY> znoFzYbqehv+<4dt1b_~It#LjV)Gejayi<2?go^EKP6t!_=|>!%pbo>OZ$Xp6W zrGNNXy4nHq`ESO1?iJp?ACf%Rzs;Fm3$}0UFAz3&l)%92-lJHQd?C4*VL+A1&#phl zwfqc)bRQA<$0`PJI`uUbq)R8lNfofe?HfoVpyMO;t*xu|FJS$ROEgc^{=sfK`hrkI=0+!08S5Hnf_IuV8uLZe++oqQL;Z;C%4F$y?$rr)z`yM zj$a3SGaril39H;Yz)(p5ZX0pNcJibTb*|G*{i}W>coHjFJ}+qNaSh1wjOd0b7>-UD zWf|;NzPb%H6 zri!ezPhAc_!=D>|6nNKBvc0muO*oLTJQr(%19TzsP>c+FX1#O7{{RoXGvYfGH@bW} zluo(apI;v9nx=*&x%gGDU1;p9yxU3p z>we!ammxSDewRq!_c)xTrx9@ZE9P!+JE9-xSe-eBtm&I->q3&UaLx|7DVI9 zVsI6Q&A0>CJw&BSuw&>Tk3ot zCxkvU=w#`)ekHxOVQ|-N8(r;hFdy}pCp`Le_N>|L{w->D^1*TA3ztnsU$jUC;Q6FZ zK?D#%9*cqPUvU2b!f)|U!&fPH@f*VNYH`6CU$<$2WRNHuTQNvCbLgb;U8jS7D*O)d z5Q9&S+QK>Qn|OhuTWg5jjt(PmK5X^dS*lI#BTuYbc%Pj&Ha{1&7P&VbF}ZZq3~M8O zv|)^YbZ~G8Ki$DS^HepB1LDQi)y?(yif&qY;*Q#8H-UF3=!XPgjAx7=TK$gGJT35^ z{y(!?>DEyRWb@2V3a(%K*drUg!L8Z;6nGZ!O&q#KoQpGwUoffM%h8VAth%j0dm%U#Ffo5gsog{rsO*Zo--3VHtk$B)hLT9(s%eX^Dnw()(~Z9d(S zJlvt$uhcf~zQwXfV_&hed?WB?N)s+S)MJQaM?HP(}6 z#&NPnXjkS@&^I6F(uaqa^L_&Q%KlUF_R4?S7fcp5wtg(URkRN*O4l*A3-!+8OOANm zkULWn=k|t<+ShN2uGwter-{7y$=-93pW+;!l;nF?>*9PA_;lA%T#XjhW`Z*mP33@9 zI$$1{#~ABW;`jsb))gF{^Q^; z!!sY7HjioLf?q6yXpo*?{^ECBebPI!;MeE^{5tq6;cJPsO;<>@f_VcORtXy62GTfic^LK_de>K>{1o_4 zsLyYzY1Y=WM-r7qUz?Nt*3VAFFg27bb2~;z+H@QjG~(=jV@a-l(o-zTd_#E1ZH1%d zquOFW`#1Yvd)}(9ulq+@TrK6Uy?P9B8&%p@ZqhOLdKUixYZ5)be z%bXLn&rC4n5zheh?O7W4?CbEo?HcOmOjyFm2odhWpYLH#ayya7t!~uTt(@_cUWp%> zHeNCPr>tbNST*~(KFW<6D}{XT2PONl9f|2yY`k&%Q(22`n&r!jHg@^ZTg)xgKOZn1 zhid&I)jkpYFnu!PRKC(|WsSA8Iay z`C|lvPB40Kd8v&=-JFqbjO}$6d;=H6Z`z_5;Xm7RFpg%pJK{r~-@x2*o`bioSGf3x z`%hfk8+rAKGV}TSyp`UkIoJ+3PjA-0QCIeN_*ZZtxwg`xDH@X&*L-1)f4zbazu{Gv z_G|cG0YqIf50u4*UHkSYcO%-mJ&d1Ja=Ou78Tpa_01F@Xq`7JB#ko$nS#O`}0rOOS%%T9>?b_-xa@VuQK76SdbYZSayqX zh1>jV#}0d+(wzSQ7C&l3F=MM1#lMq}vkV{h@sGdn)7rm9WBr`|6v|2)SB=?7Aj=?P zPdVkgcJ!+4rPsx*`zzL3G<}O0qgUAw7#!Xx*xZPWAi#Mh(EN%UPD2vynakZ zFO~%x%Y*Z{+k(T_j8w4vPW`8?WVCkHC39wtfY1Zx=l*(e^JDO@(wYANW?zR_HuBq> zR#cY&fi!@OdVJhxzpYbW*^j_*N+z_4_V7HncVz$!aCZhDnfg)ndG|r}i1t4@tUfIM z)HaI-b$KKZIh*&E;Q5=sfv~)&^y412eh-S@wN$FM(dx|DpUy5VL2Nf0Gq)Q(v7dVV z3_r7RGj4Fk`8fNUuUn?rZSoZ`U}Z3JAIv8h z!E6k773XpIcgC{XwaB-f9b+H5+CvkOw_rS+3=@u-9<|?Te-8Y6ccZ6?THZsa+Iej} zm>5{)K<#`1T9i`!55T{{YiV8>}c&o?{)sfZzeRjPZ=u zp$cmYB`B-h;GI`la=wSSc*n$l@RIn8Rnf0q;nbzLFj)D6D3JnVVoqCj;uL~A=N0t7 z?Ee7qV@CK;%i)iRH>(5?jnFpY&*i>yvSX&#&je?h{P(`m?|dC@*BX_=++Pq%A~3=; zHz-N@vH&tR(GsRS;KWQD#h*E_}@<{%I z^uLKe54GE9F0_qS8J6S%fH2R^z~i-c5*LhupNGAE8+;}Bf8zfD85vu_5#g<2O!<-( zR>xc)@2KR1#})fW@ai31ybq^GtSbrQh$|UR=?(|+{{XdLN0;L#h>hnP9&RRtX}d+8 z5s`-{wJDH}ovPusAZH(iNA_%z1$svxDaq)PE=ntz(NWgBK1ZLz0AmMjSyal+=X#C#2v9nwBu z`1|l;+rzq6mGOV!e4pByHPlGANSi^1WFRvX!1*L*8*5A8SHnFA;~s&puBU!d+e}EV z8ar}QNgvB|<+oyT8)?HFfzrM)m&V>C)%01kdtFLvh{CShWnu%5F*~@=Zq9K5y|1Cr!PU z&6FgN%2RGZBN+tep*a=kS|`B2i2gO6X>>SameqWL_JaOgVo3pDjk^ap3=V(0?knk^ ziJlPnW8yy;r;9!!URqe}hA7ia(|%A4W9BCVdzNB(+739)ckl5RThw>2f%GSDGh(&f z@bXcDs8uB~xv)B91Mfs|@K4^<(K#f1tD*b=_?7nin}{KbIKymNCT}fDt7mu}O0Xb| zXOW8ZzYlyr_u2*77T{k(2xLdLj_d@`3I=lbIp1!$AtW4;+v(n@vgHo z#V01-%P_{Ea7Q0G{OhXG{vLQs!$}-EU7T^5cxS;b4m*>{J@fBc!w(esqaVC(rSxpV zwDE4UcX=)M!_N(+w6_dQm)F1}vFIBEGBNs*nzJW?yiwwO!Q;Jdd!d}0dw<-;$0bQ# zPC4p%&2`$YqoCu>@;tO{vFT(wb1P%w+vVJfk1vnbCb!(YEKdPtHRz4vJ?1% z{u@Zj?cFnlJ@`S?{uSl^AhGzd;%|a_e~j(5PwboPhA}*FC}t7uJza)Na56v@*WUaI z@O9V2?+@!b)vDfVHtLc~b2Awvl0%G=PERNDqBCzup|~wvnat}S7#hRGnty||9TxWb z>ro+Ll0+~;wa*UB<8}wA6`^I}?~Hoi#V`0q{9kzvpQOBBD%bgssU!astZ z8t`|-&k#yb-aP06y~#4Z+~)wcPkQZs8+dA>{LB?xW#3>T^w@U~3nDbS9LW=rEh>oC!bjZ(KV~p0WyBTj6>5gBlYj=ekPhqL(&ZoOHN;Oli;9a>c7nn^kL#Xi(qr^9(8WI1I&fv5O7Fmz2(fjBKL z0sLwJ9DF(0nro?dgFMjy8YU%=aZZPBu6LcYn-x{ z;%g*pjIM1X80&&aZ__yXS5v5%{?Q~(yMoCO$?uW=HE@=ObB?w+{{S{f?&Y?BR&aWr zL9dy-Z*U{{E34sv%CeApOJ`U<>+hNDJ-~7)? z(|G)h+V{R^+kXLWxm$EVu`+3nZyN@GY&`00Q9dQw$S`l;(OcMpB>2! zjMne965+mnyT}fUotbT`pKMpkKZ;(b)+KcxL+@qt?p1EBX8|2@0meD#KDey?DPe1g zrfJe$$C9KH557NWNX+N6?6Ng-k>iZdCpJcT{X4dodxl;5=3Q`Z`zTC z$Q?axOb45C3I)b;tYTh zk%7=3PSvYn;0-3i`ubTQV+6AKk)kth7{LRKU}v87ui{@9_=iTY-)&+9tlL-bH#y3U zykwD{Gh90Oui{0@3rnSv+cIquEw~D!)r&R&`c`hni8ra)Y91bmEJQjzj5lv2fs0;z z;Q<8Y1~N!IV0!heANWkJt~Ho+8Q}XoF`p`FiwM;ZeS-%ea60FaTGrkf*O@-UsO$1i zB!_Tl*dbNNU=Z}rbIoQ?@S8`!Ee8JpF`Sn&ywbd&u*Osp6myJmNjK0ex}ELw!C`9? z!WQOP9Qj^r0LL8sxgLYHVr$+xOGP?-wvO`Q9o1YbVX0GV_5*(v=GB1DtQMTjZLWNIwj@3#5XpH zAh=zUyA90C)9)U7dQ|q-$!lvAD&<0qC}Wa99m(oNa!FoSM(M6w6z^i3iJ5?2I6X7l zsjR!JokHJ4F(?WZly7aP9OF37aw^=LM^Zj$jUMADTiKJO4 zo3Jvxzi~61lhcub$9fXfqrK6zmXAw`?^%LPIXhI9;N%Y3u8U35_1HC+y}P^;ShPW6 zx7&h^o*1_z@n0?J-x$6j#bDE1UO{szOOm1>r)karIl=X>L-2RRpBwAV9h}j^S_dsO zgaBDP0J$9djO6yM)S`^#8E(&_oS<~vMl;W~dB=_~lusOLq{|*eajd}_Oz^-iK_?w6 z&HP8>xpl7)4LeUqBEoH#C=cB{;m8a#vuQZ#&o#$ug6`MEQ24^{RkWPiGEW?G0FNkO zKqKYI&mau;r73eEMizHxzW7H@drb~IyR`C4jm26*+Y`1)I4z8B$9l{0HTJK2q{}{* z@jPhzOCjHoKJdWk!_%6n;BOUaT9|zkL|E>y3E3fFn90hn;r#2;HR~H`v>&j+3c|B5 z-HF6STdxeg`06N?B;$L6ouz9YBX{EYw7YmME%q}UNizuXgvZQ6oOM5rE6_YA<9ja= zPqNO??QFlAz=Z_lW1pu_&c1c=U5=rn8+&`Uc^o+mhJ3c%?%=2c9gkY{j}LgaMYfjR z@0)RqNUI!jGa_$4#Bej7ndDJQR!FL_x$alG`U^l-6@N9nv>SHm z+f4)k%nXML7jYdFHaeP{RPimU+Wmu1FhS=2{Yh`S%6gFA{d!lEh;FX@eJt|ZM)3e= zl2t}!7|wR!;kg}Z=ThWCowq&1K-28C3lnd54XdPtw#|T?p1peGrfZ_M@cxf!B#~R% z#R?oZ%AjsO{`KLS2Dhj_t#fs{7{nWjlMC(vfF$G(UNKN=9yjqmp=_5LY$8%fLdfig zpS(i020-VU%2QUmMW{CHk5tz$#+9hTsXTW3_)r%t*cl+6*smq=MzJ0Ck8Q2$?{4Yl zn3UrWgWUU$NfoE!U3S*u)(Bb1xI^XvDu7Qo&ws6X?}=@#X3$zxkokzr;A8lR#yvYz zrV@!=^r&y*OWSn-ZE)K=b7M@Z__R7HIrU2w)0Q26p=GMrGM#%Kfg_CHvR@ZmP5w305 zV?MxyDfyTJF~;C?pGv+ZX>{N14Kb9(atng%mdj)A?d^=!9}f6o^gS0;i%evZrGbIN zXXjNTCp|M-dJdFi@RV9ik~l30UFpLv;4_Xm$8IZI+{L36H6OLK)>n{$9lt3lUL;=R z0nq1zTn~pe-v^1>)Y>052Xaux$7+rS4?RHQy7)XBXQAC(e9})0v8v`t7_ldZzz2+u za%;?dJK>9qeMaX_f#w24l4wiF*(^y?t>30FYZ+Z^YPCIV_@l#7i6hDg%8ZaU;1R&b zy?Dost~Fba56ge4O}Rm232sr)#@}$bJcd0oE1~e$hi|ldq|v{#{P>~B7ZY;rgOCnK z@aF^RReVq2$4d)?X{LmdLd;o7>;^W0!Sunb* z>l?dPgY4dOZph0JFnZ()%CxwB9{p_Y_Qx*lFl>Uj_2ac}_=R-sQh4W?(l$eY+~AK& zh`lXyc_qzz9zA0Yl@+wmTj+MaY^{Lg7u?z4jo!KG(zvhQNvz&j{{Ut|WYODMM&{pv zF-QgO7GR9u6Dz~l@O>t1uI+Qs3I5y`B0j^q6w z#5T~iyyuAH5Xj}g3hVHxfG-R zS;~I7BCrH%{{SC!S>s~MEwVO!N0-Ov*1A6r#>3)h48e4-5k~48j(O|J7^?89r@}ju z#~75iOm?lWugw`RhvdxdBX9g7GZ_x%`&q~x*>lG=*!aqLgxU-(oxWJ->yEYN{tvxt z{{V;Scod;)r|b8K85^ZyIa(ALTMGY`gVb3elPB(o)6HXBLnxJZN#q3K$8 zZZ3R3r)smZh~|CWKIzEL2e-9Y@dAhVMocGp^N<1S^Q~REw|4kRII1J66!#ro!zBSZ;XYUmFJI5Ne{{X{n zW%RwqVvwoKM?9)v^8>ymlnrCGhZ z@aK+oNX$w^65J`?M%P0djk`x6mcb+1xglSc@n>xCt=gi~Z^Zbk!=D)c0BBzcXwKdx z(#8A%o6LJ7<;2jGUc(k^BK=hAMmeQ z(6sw?@%8@zhy1jXDB08}d=Zd+IIk_$J{kBo;%0|?qu*J@B${h^z=4c6BWoVHtz9@x zH*Ur;sW>}J%=&*q_^04M6I#T#G8;oGC{>tYTX5|l`A7<*nnEhT_2N2Lu)m6YfmlbQ^04VdWR@Golsg&3nqn(9--K@yCU=goELih^L0q z5F=}Q-}I=rV>nXZFzudrsbl!j@iV}eUu5xik2}VUQLgl|XM}|r%R=8W_vxHhFX2zx z=fN7RcW~?XDPgOy-Yo8u?5BR+tBDwtU~mp|z^|jUi@hIR(=G4prix{d24;oCk>r86 zZeF0aYu;!h3h0IU}q zBtJICJ5CS#+#k;s@{f#u8F)9w@jM!yn+&r>^G6{bT$ntPj<`AJ*0~A37I^o;vo!tz z*JThD;@46iXo~~*LyS89X0=oEFmdue_MXK=k-SW#_EK??`Tqcju0K)Mb=?uZ-EdRv z@O-iY2^j00$L{0NhCS=#9Y5no#6JUEBY5jTxmZ+e^Xw1Wt;jtIL-VM|wR^9F{{U$3 z0{FZeD{H847%tM0kg_PoPGfvGPSrC?Ye!~jN_>x1bay&e#ZM1wT7c5^7%nvFN&V5d z07o$E^0z9$`e!wxsd!t%n*5J*bp%Y(fb7ZqL<|B*!5HnDuNI*jr6;firv8}VLXJh4#F7^-5ZYF5=YXxswt)Ku4HynlqCNE zcKKP=-25-_<;~=G@>$FFm|1oMD+PU{__;aHbKkvW*?cgvhftGRwfjYk%Q0nb#gqm- zDiy}%KixUUYOCS@02n3Kqi+_cZ+oTPdF+zGeyk&r$scimDoG>-WMTBLOKZ8WZ<@+G zxFnV-mJu5;7-s+oLHE8;!Zshoah!B-dgJy`ZF{ymoms6Mu8pzwF?j+{Hrb=$ql}Dh zKf=K0j{M@Jv3)lAWd6>cJD8A_Xw`&>tUn)==eBE-yR*|%Ri9je6kb~{*ISGr+)h4O z2OOVW-kevOU1}+%&iWRMsKw!{=|fK>9#U_d=kG3Yzyq!b#%q6W;QjP-EHr9-5^eLTdw7@HUa+9VsD>FSbO88WPeI7&-Y*8QcfH zed{_uiqP8F#WmBevlFJ!_R0%696J=~M{EPvwRGASjeIGsX>!A&+{bGTivIE^Uns_{ z_jA)`PI1OFOZQbaDf?@|xiI5!PGt`mXeso5h;jKCSoXyy8xWUmLWW83d6TJGf@M+O8}SBS3+ zTLd8e%$d3YoiH?gE9ak^PH;g7^dh()3VciOSBqyh{ub5}X?OWQX1D}7lLYNjKw@w?;MaBk00|wv ztPgjnu!cCF%Xt-ppnjWjIR`$Xubwp)q$p05wA}yD_bZJbL-8U<;y)E>_i$QRhIq9A zhAA}Wegb{d=BPwZn;$77KDC?hqTj=|wtp0Saj8znLW1#ps2N!jR$Fu>iXKQVKqxrL zuPXQv`&W2xLGWeY!{3ND_qv>Voy365zdEWo0mBULBe};>Se^~i{Cn{iLDoJTcy{ys z3N1og;@1qNjlY^AD<;y<^DqMkvX&X*yxKUp)k)Lev8_xzso$AscmUS^Dc$(GZCXpl zvcA6zutQ=%XGpaej=E1w!)8f~?Xu!L$Ys z(U0)g>`Y$@v|j~$9MY{k8>dBksp+W`Su(~PncMF$ErJwe{KW7&^sK*%o-5S;A9x6O zi(W|e4PliwTA<7}<&MX6i>oMB8_zjC1y}ZbVHW1hzOdWS{KN4#?1AIk-B_Ow&eytR z@fiip*z#m~gbN@G8Ex3-?|Ns_zFUqP-74^CnystbUXiu_Ozk9}oa3nAbLn4nd`tN6 z;_IDy{{TqP=Z?fhr>ZxSgo#=(!AwuoZ$@I>`3qINIq_FT@znG9($_?S(^b;+^8|wA z7K%uLU7#;a1zo>6923rK%B>nRe6i5CL zCp`e;1oNJi`l0YQ;t!6l{7najuP3y>fPwv^cM)Q~a{Qpj#s=UN9>nur8S!ge_;suJ z9?MkGKjKeoacnK^@2#!ETfN(;+@-?j%2wnMI5|1uxqsPXO|X?MC8_%BExTlaRM|EhRIut6*RZ7aP8}p& z>CaX5r{^FOUq+^RT!k~Vo*f z@#n_>026)@_`WafJzMR%SBN5+#jV^*!WKdm<3?Sit1FGXt3BKnq9u0n!Vhs6f9mm$?^cvorH7H zlXGzE6ERr8SjmiUDzY{MXRjHoA1b#yG>VhIDl2$*;qQiY0%WqYM35&BP&6Pl6 zGVI&}agYM>>sP!@@JGS=pMf+zTUS@UzJb-=dDyc^=Ym)s0M8%+inz}DK@L#1vtnw$ z6H`m^9-X9Vntj#n-mM@@X@q7tLbftmM#suJ@tW#%Uk!Xq)c!56hrC-n7Me1|TrHk_ z$sL9U=V8V%&H&ANzmL@|q44zE24j%{z{vw0KN{$Quly&rrPP)&f(|jsZuKcSE6Ma9 zGK;iVQ^kHAd>HWOhJGY?f@`rRqW1_@Uh#~@P@WWS`=g%SYq;Mo+`L7DnY+ zGCvVZ?R>+h$UId9aW0U-F^Lm_^s8E|#QaCGLJ3h55IXZs@qt)w^j*a9CJ7wzfmUwg zKk%{b9Y9^tH&fcOl(g5es#^TZnkM-^Az$Hk{^)$)%BuKWB$t}S!59e432ujiKmB#9 zps$P zUA`MxOiv*k6W#sy{P|eHWuEtMx^7jpX=(RPt6JX}%dvy8f{${qBd<3{}WQx_I(+ z-UEon272TCDnAJ9I-av6N9TT|p4g%F`2y+lF+3u&uZ6Wqm+xj#&s_7;shE~ehOvcx zoeBK;t$zxHe+=p}gZF&Tu0=&HycgaB&9h{yvJl{mKXK1*r{Pt7eq>wS`5aT|^3CC` zJ}YM0%@kR2_;viNtJf@yMP)xL8Dk87g0pU>7MeDlZ)28Xk!1Z(8T>_bek^%pWP_3f z(UM0@<1|8AAe?o7BZ}3dNth+6A2^f~jx)3Q*UkPojE{sj@xD$#4UWfuHS{K-a@r=F zE!>g3l1Jyd#+>fjnE-o}(!3|eQR)}}01Iw~syEtRG?btRj(2p%P7ZpC(MzY1mn*-_ z_P>U{Fo(gK&7iu~5(`DYo6oi)#N573%i4Q9i3|&%K%CZNf>g zLoNtYw+=fF)%km^{7?9q;ol8Eh;Fod8}ID~%68lG0KeyfU(fB2#9tC=Q6>D|8j5K7A)ZMw$EPQzf%~Ev$sK#+pT?5H$#n;bruIL6Ej}cCGQ1)c*DV1##$*6-*R4PP7AL~7 z4u9byu~f+f`OE$__!_?+{7&~HO}X%$voOF2&fFixdzwqXjeaFy`a5_|*clHh9l7-W z9R9URgqKr4Z%v=Oc0ND&SuVGjJWX!KAWqLQL}WMnN3JvLR$JoFfb9d^zM*QezJ5iW zA3J?8NE?SiUxSPB)5HlRmZQP&yn%95NZezLkCLg6jym3~K zL!&!r&?>aewnbnq|11ViB^ROztN=fW|8y#hxx2kZT)le@wTE zQa^aJj;wy^TocISAXnl0e0SENwp+Qp8jT5Jq0Ei<$?SG@s?YJ`Qi3&>{{X@YRon0R z#1ekHDLgda+FyA}y)~_w`xkW{x8df3O+Uq2eA|u&>3;6!`FDS^yyWNFx~q?gy49Y) z5V`Rdh?Y|oM8gtsj2!cjcXR2A{923S&Ezn~x1J3xxb6&R#zE=-04(}eq#qn(w!ZS` z@IL98vZ~YZlZO@&|inV*StfgAWpDA!0p+P#F9xNxM6|D zYfe8OXl5_%D~(@HTS*m2B4S@T?lIr=?_Y=!{?V~pT>Y5%4L4zk0&=aNs7`|w6_@QL zb9r$u_J4!Faw9p3Ce8`!OBBiDwM)ZIt=HZ)h=O`1e&XKzLGUqOvD#~vCV6mU#L7n; z^UngZHQSpH6Ka-swtCHsR@SVJRi;u%e1}uFsXSu@cdx}LKWHmycF zk4z+4V6^>(0Ub+iWTr}>Pa90cU&pXdgCeIwGRn5)qUkGOcTDpar*`E z<4*9D+C|od;t4d^jsmos*{5QD>uzA6ano&I&@Vn6cq?B`66aDPd7Zw;B(ft%Cc(Lm zV=b^TAbk5t?O%^^{?NK=-J~txyPq*Jg=titJ$_%tuiJjmx;tLAynYLrq+`2hoV$Po z9zIWMmxYquue}fJ5q;0o?-3=n--{)@&@~HGxVS&*43~&hi82`Tw`e)%Ij(!f9t)m% zzqEB7a>nh+NY#>E>;NDFO8)>4zqNjKzwHI3T%@`1G_r`n4Vi}-=bflI0=(ka<7J!b zLf=jB#oVmXg;-W?#P#Qe?buRyNl98S@h&*1r*@CpuL5Z@_-I9YX|Gx7?=$SUNq}bs zNx&KY5Bv;&q{SEq>$ljzze!Z!-4k z30`MATh3P*1dQY!0jQzzcAKH<5?MZEHsE~FZ5HC{C;?^j8EYSoycsbne!a~0Kk8csaQGpUwKa#4!@E5?w=C;9VM*t9VFY# zBUz9KSqz^yE6#9w93G;vd?oRNP@BYZK^2@xmswBWN#(|b0&-aVxFr7og?>-z{{S2A zZs%bSg|3<62O(tTa&j}rYTvN<*Q2yDNq6Au+oV?cztR9v_4!Rdt4jK{_nG^6TSR`i zLGe!G!|J?d``d}r{yx?FbJo|f$n>=sNpY-1+}2a5cm zi{s~lmeYJ+4{k_CAj#*BJ-+TbRlAScFT%+ZUN6I&g^iC4E;u8n_i3y=lihvjpKBM; z{d|L4@E43OHxOZnA=@PGv4NK5a9ck8E05P~yfbZOa)Vd15hya2d67ob*bl?Ceo)E# zL-=CaaEiu{(-|1&p55x=e0|aFv87&oKb5Ctz*dj~N3J&KIrOS{ey-no z4{xTI`;WQob=?;1B$4Wn#}Y~*2=fJFz+%8;5v5r>6C657|8j5olJjfT^{xsAx{8HFP7NPo<3ak97pX! z!#A^EdK9rMs{9Yqe+u~Z^t~4MN!LZehUK?3mh(p*?<`?~X34{K;PYOiZTm|2O2*>b zM@u=BN}v{ZP#2B^F*x83Yw@n{_Lk7)Xzs2)AIM?0W4wK+g*h0*VL0cS*Sr0!^d`2B z`d^2ixFle;!7GgC1LddnYKv=q=$~&*?vL3yzAyMQU9h=WawLfhC`nWIr=UQ=z4__& zt&a%!uS{DAH9cwLj`2Z^t6V~G7>`!S9C!4u#b^DgJTT0YTzooJKzAtf{_s6>@^>}Z z+kV%c61KPyABC{*;Dz(LoblE=N`&vNzVW)S*&njnmy1adOQB0=wq3$eEyQc(w?IxC zob%H)&)xh*3u$v1iV-co6tt45iw)6`jP3yU75P~Y?b$V?=E~pUcrKSIl3vABa3VrCDj3EuN)kt;J(#Jb`RDjH~U& z26WrfH<=WeF{!$3gfFm4IfF5!8W>k>u3@w zl4F?6qZ`le!8i@my>6+vt3JP>gPLyl*!z!0n7_r}3rOq%Z9W3t`G|2{_L8i>7BzsF z3SoW+)K>#-WSVEje-CNQM1s!RI5+g%V~j3H?Vh-<{{TQCzAkGK$@hGj2m|UXx;n*r z9%P@q{Y?J=12m1N_?Bby5Tn=B^r)iA_&Ih-=X(L3+;dvK0#7>2#C}t4O@s{gIXx>P z)XM(=1#j7iAsxm$<8MmROJABZiqquGEf~UnA3^qUv`H)AuUriN72bG>B>N_Zmj*v&Ln&LD?wYT_hrijQpn4Y}u+tc!{*Tm89ve6#fv`E=K#}#zn=EEC&ar) znBhrW4_{Bppwgh(@fzfRvmn9$0C)cYuUft#fd2r(eW%=#2@HUbP64Pb=8oUuCCgq& zv7sz-PB1WVKRO$_`3GN_m*G3O?w?q)=usG-_z|u`(lc@J?^lLQuvQ&-9l8B0v+$fz z+iIG$t$>dcmOXp$Yn;>V<(I*FwWNi9W1hc5`q4LOeZ-w3enhx76W(2CyIk?g)1Xp``&7c2nJ z&{bb=P`2;L&G?_;J8O+oN%2&2l%1@_zU&MYW>+U3yMX*F&WC~ZJp9}? zdl*Yrx-+F>DnjW#sPWGaXxB6RY}EWy1D(>NqcZfu0uKX>XT4kaacv}ecZl9MQe?p# zW1ezH^UZpHgYo39@R4Z$&OCZ2hz#Xy9D{63zBGi10 zYE+cka`QRpr)2P-1MbM9E$VsAV0gj^@3dV4M~{B_oC4jrag+FSU1S#57k(0zfB|Ea z4tPHGN5(N{!=4|O9Ql5GAzWnq!SFr4wNK*tk@kK^nE2n|?}7C{71?UKm6T4?+Q$yLyTU4s!Q`erPDPX55%_X zb)`=f&^TO3jvNpNsICXZe+K*$;;EkFP_T&0jI7cA>QU*3LK`*lex>_7c$dOjC6|ak z66&{lZPbP1XyJC*AqR}7BlNFLviO7hOZ+=aIQ&(jf5KC5I2+#C3{xX0$=}A)->}VO z;cZhZ+ec|0s-F&iC3tBgm%$qQPZVv%o~WL39C3jl!>=CZw{-sij$SPAgGX!e6G6JP zMO~)u)BQHnjE%$r<{^Gvv9kjj@4;b1B^e(}aY3_j^U&bIVl z7kG1Auv@(@=_j{fq6wpAc;#0ExH-r?5OGQ~dm1#F=1lbu1pH#~UymR^*f;Q9lFG#+ zaK%6!;$j(2dv>nRNV(DMEry?G1Qz_4UnpVo&RB-zpQ+Eie23zngWe1AUBX@8TCKI- zPx@WCFw7W^Fwu~D42;(qf8k$>J{W=-^v!(h7MA08+4V8Gz&v4Pj}6bhYQ3ttDLWsa zOL%38lmRqk{L$m7^<_CD^`^~dre04K?Dny|ke}T&k)dQi>@ggE1Xqy!Ka0hBuCHvb zbB!9=L(P>e<%rs-8#{m`XFY)TuVS^5dz;C`P9%XJXx<9B^}`Xh$Jd(H6;$^^l{rMr zZwGirYm~T6I@u+RhRBIjf(~*B0FHSib?;g8_+L$i&g#+_B2#d|%NW(SwsH$E0mwY$ zoYzxv0?2;KBvfzVjj|6O+0Xs*aZEQdT9C7*;N8v$KaWq(2C7tHE`p6|$98#1hs74U z(T?s5Z9$wyg&kLLh>SiT8OH9a!yU3~uF|FOv5#z_`qQ=l z01RpR>!zWm&n};+K&&I4K5!eeD`zXu;Ct7dc*DWE^7uphGWJ<@C-V%3Se00ubB0{; z=rBF{ir}28;qRr<=|U877QC#_UzbJG{FxA2!bH5t!ZrE-0N=nNz&^d}9$h0#EbO*$ zpmz?%BT%lxqZRJM)ExU)h3J~6#4Q&|k5cgVk#^Sh;GeV4D!G&}$=FZN!Re2sdLM_r zCqt`ReWO^idkG>tZUYaM4__TGGctT1{D)*1%2|lpWF3CC-td$ZqElLicj2 zGvN{BcHvNx2I6`EaB7kZtvnbbiYQ=-osks=Hyq&Xz##L~XT5AqZJ}$>$2`dm)L^Xf zouR^&Iae9Z2<%5n((^p%z$zz0l5#RX#2V_-TQiF8FWyHNed4_XPi3|7RBI2~7Y0W_ z(a1l$xQu=ckEL}m#iZT6wxMMew9RgtV0Bb1ih79KA1L($isSW<0BF7>)UL0mxw>yP z1YSXzgfZoC#Q^A7aCtS!#qh!{Htq|XaXd!AWd*A+LzD9sh~prRq!Zq`+^WUv8>6j8 zgwnLE&r!G1ygP3)y{(PCywMhAWQi1l{{VP~0Chb`IW=nJt$;4k61095iSH$a&0sK*6 z;u#~hved}5mT67~2I(Usr_5MzPZ-U8Tk(6w7M}=w38{E%NJf_0DE!MSa^;LE6uadZ zP*f~3VU+dQ;C40gt+$OnAO8Tt0j6qxFYxWa)$A?pqqivABDs%i1fEi(pacwc$JV?_ z(4~f`rwtlAJ*7&}Y3hEl_)p?*g1#YL$sdLFBClv%q$KSRxGQhRR$oEyUT6D3TPpZ& z*T-_-N2TiGHMh5t>v!3{cFcj4bI3d#{cH1Y;Lpc>7r`GAZZ+*UOosg>Un(02@~>=m z;mmpJpa3}pk6U*ebS^)HF8EnVS`+wD-oepW{V0Z(7zz+qmbF<)4vB)2^2 zQFP|6eky1-8cnvfdYU}u`5~Q^H!sZloR8e8Jaf0NUMuh4348(7{vLc8cJbEutTjlK zYPdl1M2`OeFP2p201$ZuZph-bd>`=3z;NrI*zstsX&;3xkweCS+}_+WnNo4M;}L*g zC$8l^1!nl0_ME%%1%=gygu6U8kLBLWa7#vGQL*C$oU5=00B4ht#d(zQv7>oZcWm@( zSCo>BR>#Z!Ak`DZ5>N2c!x%8#MiuN*rlA!WoKvXVyEVP? zDcLydSpIurq*sNf^(qe(!6V&%`NwOQ`7c z`F6TvvMsdHk>;vx`J2BiPZ`EN@n0|g(tiSc8LxO2Ul~|h$8CM26uB}1mXxG{iDo>P z$v-hC(!9B1lb5qe?_;Uqti7S+*Yem89L@cm4W6T+SV^|QZeS)wRz=*!_Yau3Vpy(E z6{WBE?@qb!+FR?IULAjNAK7ImdrBEb6~F_II`ymzbdK&)kvBLw$GPY7>0Cd=H*w)J zaTZ6Fd2UAD4nrT;`ctWfj3C@M9tyv-uL#xnTUYcuKMs6d@Gtx#Gx$AC%ol{e`uKo6 z=Yj!0n61077I;ec!Zx}bH_DU3%1@ZAfPj5i0bf0MhfT7+xf0zV4l%Tj59eG5j9XXI z^a*0n+DD#ONJA2F7?6Nl>IYAH@bKA=B6Cno{ZlpJOs@|@Sed4hT_4yU-Fe-S`>NFd_asw08 zVD-=Qu5ZKfu!mQTxFy&fr=Z1rZK!zb#kv-x*ETw>%n~r&_xFa~&pW~3`c}4^@nhly zaZ7b=c^t1WJC)#482jzpUr@MOwMuHOIjb~}nwJvLr%}?JUDIdNKiQ(+;hps0vw4%L zBpi>GFfrJB;~A}6?0>=oX9}-UnLn0mg78<5b?+2>F1)zDw6$wUuH=M>m6PU0`HpuU zgyZn8+W!Dl)1dIxnqApC#LT$Z{=S(N^EIiuRUJL-+4MB#s#8<$k*DJ5{L8H(JaCc& zgWrKvwL1ZE@fN~KM&g-mx%;Jg2aoGrMVe^-H@R2Sgs61qUzLjUk@dznBDHTkDX1S3 z!LNv<3m71vP*3I!eAXw3uv98b4_bDT(`I_qvdZ-msZCuoC&Ni0@us49#=vp>zdEC) z+}qtrso(<0#1W4`Ykx_%7Ct1r)NV41I^jbjFDiY;KU(JWh@ogTTbnzGWZuU(U@&%` z4snjP>EW@oaZvWSd0l97*27ey`6{bDOy~q(@UJeN#y5u;UWc0HwU>iM_;qa@QMP7z zT7l}`y)qJ97<%_?eE~t!p44o-%T{1Kzuz4os`8 zYN4Z*nSmHoJu&V2Rj1Q#&yHfA7~cyR%WXK|dRC8wA(3_MT79KTgUS9Z4%N3uuS9dZ zUq#iNUx)RVv(Ybf=drtXZ2Zd$U~e2`n@rRlTp3iYtG5JX zE^&xeJ}XhP_tu+)d%#J`x$hIV01rU-R0f z)pTf1r)Rup1Pp=Gj`TGqx9Gu67qz;h!Sy{e!`jt=v69+kQmp=0lEJ=SakPxrpF!cj z58hr~Xz}US4Y-k?A;!X^J$B#@2VYwH+V@Q|c&UtWoQN>5gMrBBAB8)^dQ>0qkZM;l zDFZ64k-@_D^r>me_k9t1D_M1C#5WP>Q20P;*7`-%&bNziyujGrdD)C-Il_+Bo8k?7 zNbrV(7Q3tHw>EZmY>70pK_aI2-L*;Dc?XYr`m0yBmcrCUYXdksv@f@5B&cq=^cCeF zwEVaJA^1^y;hif^xSgbRmCDA)b0^)v0G#~aPAi_LDw2zLH>DQU?PKO|5d3TSFRw`j z^}Mm#Ord0TDJl8Wkf4OsgaJYg=p zq8GN3GNLo)e54%z0M9;i+OBwG<3GTyBV4=GZfAwzyk^4T#?8&Ucly5FE8{zV*`wn$ zkLA9S(39R-Q9tx1t&4BjbK?s%A(lA=<2hlBHdJ)t zzD3mk0B5aJ!zL8*e!Zq?O*)oEn&6fo91;~3iRP;(!#{^sqdJ$4ElxU%dt0eb=jEvV zXpRPqtvJb;*2LDKCrY#uYjk~)fAN3eCa>X(YiZif3%eB9p=Jb1RPoL@2h`QAW8&|@ z+wDV6*Dd6+St1GNL}y%a=yA<_yWt;&9|-(b_b}<6Ak?oO(L>0wS*&EK$lShUppXw< zIL&o%d<^(ibOd&1RhiCl=E)R8J-ATy>0x+YrXoJll6E|-PZLq0CknPt=6gNg#ZQD$ z_`VH#&9wPqSHs0E!tME&s30B&Pg={;{waJS(ELd*sEc7d6T~BQOSDx|+#R_cg?RUh z{ug{d_;=w;pB3HMHTRLRQYmg94HA(QN%;qQddXbIuFL5g!&X3rjs3&wZs>oGBVvEb@Uhm6?;eVmxeq? z;j`iGD?}F)i5Y{WfbcMQ81K@)9`J|9PagPR#MV0W5m~$zlO&Q`EuFfgh!4z!>?|@e zI`Lo7-+}ebJH;Lr(|lXuq=mHYP8GO|XbXjL(1qyAatQSm@?1fR{>)L7Y4a!6`#-q% z^2V`uyR%2ZL&BQxhw0m!REgjuz!E zFXCwi%p5YN<_GYv)h3$KG?wc84=y0i#D8@GVtMQUujT8;ULwEor;T-g7fM@xr+Gce z=bzrWU_Ssr{41M>aTPN^X)3l+jkYw+XAB~Wg1cwx2EXIqfpK_>9bIoN?!;;dOGPCJ zQ^?GsG03jtz;+)C{Czb3H}Irp;%GsFTVlwD7A?4EXl&$kAmIKL_{FyGsb>7^*8UBA zTi3o1c+MXX+n1Kka3Z~fJWB~Y!SS{Eye8 z;oUacTcaJNrMg_U=@(&gihlApAfHaWj>f+rziLa#ul_gcvBbo!szGnT z?vXA>=1p`|!PA_1Ha<^=G5D8^l`bkRjqBfA~mz zA)@%2H^jGAP)p`?Qds~h+5Z4*HSJ`0ItnwVQ7LuQ_VdhbXDC&s+HJ!{?x3dKBUV&x$tp19F6E4u8T8v&Ked0v z*}N&>sJs!SvW-hzR`Xsn%37(zA7dkYqu4cmVK}@zD>gp0#hc);(x{<9a@%_yxlT6` z8g6ypHTJpt8>4(w{hjpPa_d>r^({W*?Qw(yEYr;LLC7I zw$}iCE9SEdDxn2Z4(HqO-8g17rH8GimsUL^MbqcdbX%_tUHDG+>N(iTE)`JiEx-+u zI(t@6h(00wGSf6j{4e4iE?XP82?V~yLgSou;eG4Zz^;B^_jTOW6=yi#@w{%@9+ufjK$I&N!(&L;FE|47k^9d{1Q*X5!XG zj#v!vfKU#hw|bwYesw3tpNgz8bAKG;7(R8SteN_jh@aNJsr{NI&^|WYYd#Y3){&;% z>NfF5d21lINJ~bowp1cLxjd;Kje0fk6sbkcw$eUEIgFl`J!0?U_rZVoOdrHCK^w;C zcPF0?L-CLf>=Ex-x-Z2~gF0rXdvbiAv)qmcof9}_EEuZ)J$EA4p#V^_O;OD|00$g~%TeqI*qbxS?#W{(kna|3ja<%|aNj&f?nw)4< zY7o8Op#Hknts}A0yjk!k`y*1*^()(8F8D%aQdIWH?oYL5LE|5SkKm)={X+8JdKGBq z5-G?Bk$^Y@9qZ%EOtLuv84Y1 zYFwqVPdY&)akPhO7TX{=$pbj9so*0{E^?c))D}I>sKyIZ>b-Zz-vD*37Sh%m=q)a7 zl~wY?Yha!M1KahdYTpsQ2H)P=YkGd6YLg(0G*Y<1$6k60lU@G+f^k8o+?!G2r-j22 z`|Dylf4auAt-s)!ej>k!HJ6HQ+i~C+B=sn2o!tz{%v0h1<07$l4^2b^NQPVvvc zzlZ(@@iqSdg!PXcTbtcFQv};A?wtd#RSc*>!QkV)ali1b{vYEOzB|*;UL?1?Pv;eT zivdn?QjDIbn(=arvx+|C@J^}lgvouO+sy`}bEv-95*J219Q4k49P!T;+*)`iLBH@^ zz8)6e=@1$2veDz@DgY$o@)hDgve&`*w2u~Ad`h*}Y;|oi!sl$VTY06GmNw&SAS3S& z!oNawzZPgM1?c;CQw&3EA$RyF?sMMy?*)9&@I?q3pkC&#`PweYr^e;u{OiYb|{ z6{3t_?E`ZRXD5pEKNxs+2`{u*n(EO6D1ehN0gB_NsPwLyFpEjY%=57@sY+6(Raxk9 zJ}2<}I-kXRNG{0%$^)?NY;brZk<+(o==2dXd|A~Di5^BY-iSs^p5mwefa?WAO_6R=Av)=SK_sw(7@@G5ObZEDd?VN)T;W^J?QL)1NHn zmZw|bc$OP~5JK1rS0_G&suKez!R*6wtj3^*(MnED)c>0F(|=~`dI=qw|iHlif4lGc$f-~?wZJppgZxu;$ftU)FjX~6=(qYS!3#*MtAqC zJ{a+=9w_*T(!HG4j@fpKO}Pt#aB#-6r;DdQb`JU*VzO*b8Y-oD**D!Cri3JtJxV-$ zuWsD^4@}oBqUmM4J*zV_VbuU6`VPO1UeI;@2`1H2Q#nL{?b?g?d-0!IPXkY5;{7X7 zwa}$13#gH2z+f@K0dg?dBk-<#&oiZgr0e1@Yp#bb7Y95<)jE6XW%#zvR`_iS?dC~Y za5|BZjA!Xq(?h+m_-Uux&ncMCaV*1g5!I zN&f(V^r}8FXuK=ot6M)JD};=diCDKC$s`a?E6BldRudUoIC=@T-($YEO;&|DRjAdh zRM(y0mq|$g3b4dTIL>(fU)GmV)D};P5cx_uATT}nJwBCF#oi^@aif$9mTAt)8oKqUxz61OpZZ7X+StYnhu_@ioAC z4x=QiE(sBl9#o9*P!3ITcODRe=H>3=xwtYe=?>|nC2*%X%YK#YRLZ@a9NfR8eElr< z+Ei5I4!@b|5$ST<{5z3uO2xWjR5JzRrzF<}<2JQz2Sd}P)U6_u&)fl(cQ@X~(az(~ zY}M@>NVmE8Z!8n#!rTlg=bV3&UPJMx!jR9S_tnYoa?V`^znLbbGbGHDzqhp;bW2bGAgl z$PJ7hcr~Z0-DoItu$J~8TY{5tW!hCU$MC;A=AO=)`?^SUj{ zPDlGB?jK6_9d)i(Py2nEthimtwEgAARfnh|wdF}{er=sltxph>lW~#T{5tUNfd;2G zojgjG@ZQ@q72t&t2JhEB!RifUYk#xvh9yaLABOTz;p^hN<9kOd5jo12h~*nUO6@!Z z(M99A+f&;Wyq8vLcW|Yi(Kdof>R9aqxvzB7t>f}nT6q$@?ZvjCZ{VVO=CT|(*+NO_f;{5{mMzhqN zRLD~-iu@9BkQ=5m+nV|(!ruu#9%wgn>$(M+*y_5Bt#vix{{XIOB*|hK!BVF`ccmBC zzBusMeL%wZR_b4Ph!WTx8_Fl2eT0u;Qz^Bp*z1iIEhD*|;XMaS_*k>(`c1UWW?0QN z0y)#eMt#w;rb!HXeVV^M$*FCCUc!J_-Uei*#g2jJ&1S)~^{9AYnGT?gW>s;#=={@d_ z$AVQ>)@Qz4Lk-DDwFrZ4!H**(anuf@>ZI0n#MhR>F6|w6Z{nz>$?5B@}k;7Xr zoL_TFKeJCKmjEza5D%7fpUbD>rjh2lw4I(r^7?$l{HO8t{{VP?HFNh@(6SXRfrbPS zRQs<{^gZ2BT@WHDAZz60ukfZpy z+xY(g68=0@I6`YsQ=A>q;2QUY{CQ<*4E__mSR`N!xf?hD={_F2xsrWO(kUI& z%V!`G2cT}N{&}uBV4Pny8CdS8m_||L#6sprh5TRP9~f8-TR@o<%1Drd%9Z01FJu1j z{A-}J)FXR|t*wZdz(9SUFdK$P%6)x_uQ~BA!hI_8!T$i^8kMYWQ)!K%Z!Ng>Vao&l z&^;>@Kg7QW>}yEQtfS?S5+jv{3ET(zw&#I@4IfymP10xO?xGQ1 zLFSY^l>n6g0D%4B_*F~&KFe0K@}-I^xEniB`6C_IIKdxW*BfW!yG>p@Wu7T*E~FgC zA{2jcLHW2p-6o{gTU;(~wENKkJb6;4{{XwmZkCg@v(gburgb_AOF(A@ju4< z?~Gm+)-`D2veV$vt)^zOI1}8h#7zXoHW&@Fa3psidRLcxP4K6tDXzgN+ zxza$9$sz#hxqu7N3H7`QzHY&hTfAJX!lh zcpt?c7x6~5y}0Tt^dn9EtF&Jq_yRuyh<~%L=aMxh9jYOS zNL-Z%jo}la>c+k+@b~P$@rv`qXU9Gyw`9}p;f`oTU^7W>eq+M*+P^nAJ$)Dc z!`EIj*7Vyr{{XRV{4=D7y}f2xC5q;FNtI9%Rhu7h{{R5V>IG|spDIWv$*{UVp-gywuG4*0XIT_NzLu^B{Bby}y~0`_Cu<$D)zPH2(kxcnjgTfHeI= z-up?JG;JCMyth-6-%DrqQ+Ug^ z?rnh{RRI0aSme88obg`&0ODVT+CPf4%g+v9o%%KHn%k^uTg(S@5_gk=ry$_>746fe zq^_OW=E_!Oe}z6H)3yHq2SFB%VA^e^r|x5kx@;V&Q{76CbKf<+@dv_k`1ivS_-Y+a z<4F@04=uI>n85{*6Vq_xBazm&G<_v>EgIKGjf<_UNeZz55)f?}1K3u9IV7Hy*rTPH z&g5bEN5kjBeihUFG4_|d`vfZw+9m%0Stikd&yK8np68m~WMRnf*1mM{FYQC%PYC$d ze+O!?Ty3^^qMGGXF)WgtDwEqi0q=_X4^#18fuQK)Th=b4wY4f7JftYW8Sm{-szY6N zDMgZOAaW~^@&2)_=z0>#;qaeso~KUskx?9VDD=j z1-He^Sv9-;f8rO2Xvr*P+h&Kb0m$v8H6lSUoW^EF5WSW*NN)4k>3cQvQh+D z0kfT_AItjJ&s5ASQw;t%avulR4pnxBcj9qGT@njW`t6~f#}DgD!k z5gq`a!MA2{{?=>D?|*LnYsK1B{{RlWN#U2Z8p&HoW{u8cX&rFP7z}~m74QuDwy~w@ zDQ~7rCBnr1WW)kj8Nn(&x>uw4W5x68I_{I<%g^3KnuIbSU^0yCfP3yB4EC&P&QhqP z*6iq$Ud^kYqVYwt>NujoV%Yh5MPNiRbY9Tg*1Gxs0&JGqe-WxUSK5xkq1^ zvwWvK4t`>P9+gjBvuo=aW0d)uUDyv`4SfxNhR2VEm8O~F6Et^PL^pG`(jx_l;0>dn zrFNQLk70T6j@Mm8-Tk9*vI2UP4TT{6Is9t|=fIcR_ku2t8EqQT!C-%n1Z~gZn)YYW zS4#Ljp=p@~VDgs(&|2KoYfy4wl6dfybw2W(*S=e(ACm0<5dngTWK?&Tz`do6!!Tu z;imOI9Qcc3G|h52SwpXr85kUA6`A4dJDd2VT|5*BjQny22YU5CiZ&9x%HR2X#t{#u z8BR0#Q+@|njaEMrTnPUFcWW9$9!K6{7`{J2_*dJk*VyGTY5U&_{=E;1mRap{NhZDD zi~9MVo$zNx{>S~B?JXuHo>}LXP2E|Y*pg4FuT$|gq(j5@YA~QQV2b7ZEgW(D7PHbx z+n11IJxC;)*w(G&u<*65lgMN(Chf;8c{#_f25>#A;pcvDnf9vOzak%p8j|S$01)KU zCOL~zNmP3@e=`1?tLa~~eA^>zq3P>iBlwY`@b8H9y<~7Lq*+|&qV55|H7356*7Z0v zs}{Q4GT2zhW@Gn7eoe-BH}&dnn)uTD_CCKPt^0{7eUrwY;tBDW#qCeQb_9z*4#0wU z9UkUkxR0VP2h^WR#?UQQwEbCAkKZ0UleZuJdgp!=X;A5Z5WG`;CPUnmk)PKK^B>N- z-wNgIbyB?yhw3=5&@#LfaC9R^3u_(*GP|u&&H0`wsioz;#guATLdwHuQIjDZJL0BI zH%xi)dkis8!UTBK2RZxMBDzgt&E(UPruUe(gj6ON1ER`;|B_$pROzF9am1( zBlv-)!k02CEMqEM{QbITAN^|ivsCcZ`nQZcEqN&>G`SWdGQlOSxp@9#x8*7^>52mtEg%=@Te&*xCMT!Gx>_}`~4SDzSi$F%`PP? z4joq?HV+5tG6zpu?5PDMe?#UmPDx%bsU(_}-Pm~atJ|bQkj18AIvz$(ZuPg}9~SHS z$HFN!TUn$jERW>K=PXbX6|?@0>(*9mfNKf&dxyJ%0-2gjY6(m^Cg}DRnWlty5f^NxPC+=E5RAUeUwVM{{VOb zYsWlIV-eHfxs6B4gcI2O$Mvp?R!`>4GrBXYg`8=-Nk-`NZ9ex~mNi!K9;%ZZ{_W<+ zK7)$t{0XmX+E2vI7f=4uyuFtE$Tm+YbyQX5wv&wHfHPbii)izYmn7!|_3QmB)jT8N zai;u4@TRMBFlLTc&wZru2jDYW*Ku1T;W$b-oK`E^Rhw~-pHu1`O7~kHICuoFv+Vn@ z4+QQ5^R6P}#yW?B{Ap>a>asMJ5?-uVNKQeDMGD+@+nvMdUGAr8FZ?HscB~cyZ{?N8 zB$osn_Q2w}e;w$M>nn7-G8X1B^vD@Cgc6n0T@TY{+Ou8HwvLZvlKF5)wR4a`>-gin zdH(>!Jx59KCxbPA8{8&Foogh~t8yAZF&g8zFN(YHgT)bev%t`!{MVXW8w-x)v|n+L z`^kg#&3ISsovoXHhnC(Ew%jDtWoe`z^v(n)2iUO({sUfpXhxcHvFhPms?IRJ=im%F zhm5>Odp@VA>Q@gf%e1b|BjB^PRSVq4 zia{((k&o88drb?$>oY4}Lxnv{w?arC#rW4so0)}LY8obed+N@Xe4y>mr%YGMe+T?k;g1G*(hnx$AqJv8$tV&Noy2Tx z6WQ_j6JKZek6yO$?uUD=UzJg58$NT#$~gSZeC{_4<66mXe!s)n*S5>~=Ph8h`G3Ga zIesylj}rVwyq?sPZDY319P`9^+~14tHRn=zUh$NpI3w2;>5=K455HeN=IS3ZQqIK4 z*(^^ZuNlsBQB9-xL?b#$5$p!`{PUi;ucD^8QjcTu3|=APD^9eYt+sQ10{+qP2a7Fy zNf8DlB_{)&(7pq&*Bp;=UwpQmrc8qF&NSIC%o%afx;N0~z8;rF@WiAlyhAID85^&u z=Dwf!Rjyjn+{!M)`@iSELrm^D-rM!|qGR8Hx z+Rj%Sc_V^3$u+}CZQ!+-q*oE`2Ox2Mdt zCHOzbpR=Bktl8WwR^BMNi0uuHrq~%KjPf~2LW=y|J{a&*F~#B;6rB9zE<0eB>t0t3 zVdaLyH8p12{4_dqS;nnY)7c&r-WR)(f}OZOm-4F8cuM#9ln^=}t$hIA8t@vjgLN4M za!iLmhs}>#NjyK`myO;#=my+?42%iKJab=4>ow5xRTTRkk^3ch^7BE}o8d2r-*u(q z87v&05>v}XpYFd={@2#Nd-#>2-FS=Qe~9&1wzA2n&J>f`8*V>J?5uQu3|ndt>K0d# zLp{5ssNz=2vhoP$j2vR7n?>-v*9PUTBY7udERJPimSd7}p1H}Zc!wopf|gYZ7>VK| z_P0EFycww~oyY(kb6=ugv*q4{ZSYPxd_f~5nlzKeAq3z?hs{gST$MWno=am!YKtaoczQteweO|4q))}a%-Wc zI{_R-6jNKDKYT&D*S;h8((}dFm{D-}f;RsEmT)H#r{FsK>?E&*Hm} z1bjQV)GQ9&M(i7FOmz~t`J8(q<-WMD%NV>hs1Q8mQ=X*%0G_q>zsBDccz4HsFl$e= zp|;Wk!5H6wWZnD6;QEYx1$jX5_kxx}g61;3o!)C_r~B0yCG4TgV@@K*tY#&&^p1$| z=)4zrz#W5YckN!S@Iq_Phd&myFB3??ATx_=gZ}_bZa;R}`eYx%v`&lRm2()mMI?Nu z&TIkO_^UGWOz_Gm#mfBLt|d7D4*dRA*DJ~`A3bD#w%uE;zNIz2%v_Vb52*hD>mIfF z-}_d0if;%(fBLRqV;mKZbR z%iHP9mHDokUxr!U`s(OBk`^xBb7Z+WWB0q0TsSILZfz0Dk>v7tO6miL7~SnwQ^R`P zCOPd14x~CVj#ZbCeL)7jg>+8`%L#w9hQJ(|Sbm$c)}cB-h3(sa+5uHK{{URv^y$rd zE>~8tt!I0mx*rZaT^Gdv0EHSSk5)CBd&^Y&N}ksdjgqgi-VJ7aLHL7Z@ay5Owc~>r zhFb_6z=r@m!;O%xJLSmyE9Fnvi^ui@N!NZET1)2rnU_(vUHga+h~^yo?I-J8&+W(K zT{>MmNcdQ05gDB7S4v-N1yE7|af8V&*!C6q-WMzX0EGvIYeetz-1x%`-^*GdkQUI3y1+{-ZtX^yn)s5%O|(>UxjtU*j8(3;4@W@Rp$aZFR7yr?T9p zOlR0KmQ(MF{St2y-*{@{%e+rI)QlG3XRmtv(EXgOt>pNPX9jmExW;)uz}WZ5HTp4q z;!PrL7WeJsJ;jh=bpRRJB8-e456lN2TJo{ce$$zCKSSY+Y$b=59i4f^3k3h zMmy~%@x^qS)tk$w#doDhOjCgIF>b2B5ORAEb6$z#zYamFi@i2ch^8El{e^g!fi8xp z;aAWn$(KgBmeh0q04$Z*#NU_8_*d3sxV?RY>aKi-afM&T?9Ri%z7~CZ?bmvwO&peR zlFY5SWXRgQ4*gAao*&ZYw)j7BX#|9iJ-3Emn{F|Iirn}_uw2FB8+e8UFhqwx-fXcS z%Ct0_aTmgkKt|jo%vk&4ynNEPwZuu^MAAK6wu+@fE2~#L`@}Y0ZkeS=8Dgxmu^#+m zKEkv<6Zn$f$6g=5(QhJ0);v3N_F0ccXiv=qfR6ikKI(mG*J&ljhojxIe9s&HL<3$Y z;oHf68~)JqYAnHQwdID=Y#)?6rektFopJPIUM4b!8OC5GXW z76cM@;PpL;KaFud610L3i`T3D-N8$A`=>vpbUL=BC5El0+sJV(_3Tig$52l8{FO~j zq1veUvvnZB2h82{!Nx0}FQsV8PqE*`xUPDTq@LfYh2g7olJ`_9%Ify)03EqG&(^%Z zOV&@rPZj9CDCIQU+k>Xwj>?ma#UcLyaz!73HSB&Fk|{NvUd@vpUAqyUoY$RrqeqLx zpAYZtE=uA#BW2GRAoJ7Ox6Ckc#ZaCedo$-SwcQ$#sJb6uB#f=)ZNMEd?Ou2BJVSF~ z0w6o1lWSxBpbkGT=UIOUyjv!{;V3QdoBcCPBHH73B<&v~pZAyb2C<~q{{Z18@NKt< zF}geJ%ZUN$h}E#a_~;m~&p1acl`M5nXtjo)GwHLOQl1_zA86@3Rc8bL0A<0(1Q8L( za7HW3J|=h_JV6$*rQ9K5bh4-izEc1JUZ3Lmnme5tvz_rotItD@D_dNJPmLk72j!II zyY*gc^(t?c&&i)5Ry@~F$oMPZPl+{~{{REW;f-6Z9rR2Stk?J|G6xTd8{{RS5OX4dia+VSnxC#l~1HRWhdSo}@UhnXR zb$|FtB7~nUZJ_|3c{w=;(!F~4)jTIFdgy%q8!q;E?rVFxvd@R$k$e+$gmSka5_r!7 zxgUuOEM6DUzze(28P6b`wR${INe_YULd8Zjq`(1Q)6oBQ7wKfzvA8PoXvRO~#>dAH^LP zPh>G>@PYvOSOjC#aC5=PuR8I!hoIE1Y^^Skf2BhMXFO+jOm*p9ac46^NQ=K_KLs!DEMGwV|T10hVV3d$LgYR7agJUh- zzPYu4K&!y&4oUu1x8RW@d`{LpznAxNstEU{)$~04USAAFr7o6a z+IEL$tlaB18lriTiEL!S$oZDqCQ>oTVBC*FE9k8#yMFdycQ?$(pxoVhezoRa9@AD$ zTUV40cUm63zRZI-^{-Xa*6b>x#mFQANX9tLb5xC;&t{X+BjOK;-xz)=T6lw5@NSEI z_K;d?5_vMkJWDDfpSgyN{D-a%NcF6FemwkJxz{Z9=DI2^B2+f3a~F|67%d`sWbQr6 zk?o53fA*Ktd|402pBCI$+)9u>t1iG8fz5e58c&Vh^w}-c+p&@Z8jD3O%_TWp{T$MM zF8ox|Z*_~fE~IzWfzIogPn1tX79s~LoDIc>J9n&|L&rZ7bzK_6M!CMY2EtP7GW9ypy_+3B7{{UxcKGilOZKspLsjl?T8(U2bOLZ_Z0gssf02L=rFGpc2 z(^{*aqOb8U;xg+mtE{XbDYNW?<_{rB7%rpB$ZYeFdi!x$uzW-KqidnvXici#I?m!n zm9HT($Il`*@`eHLocm(GKOxfmaX*@icQFz0c{L#L?~bImORuy}Rz};Lnx0B)OQPLc zk6lmD*}gCQRFd~hyG>5zA5K6OR_-0MZT|qCqssY-=y8wEr?vRy@mdW_P}I%rvNoWl zc0I%;AU%vD%gT|{l5^iR`PYBp{{S0WUagZ{&6Zr_ar)ImqxiWk{Nr;lT>k)g_N^kK zwrGbrbw}uoe;EEPTljS}D0NGu*(aE88s-+9gVjqIv9~<*&%P?+e0li27l>f-3+huy z_UIJbo0zL=*5ri z5%E65U%J*}Xysdk*tXJKse&wys03kw9_)SUw4bzx#aVnh`V6;G?|C;Hp>TrZ1pUx_ zox4Z-x%aQl_R+jtmU7&A^8W3)ouGdtYV&w2MHex)U`!?4*;qQ$;KJexB?c6s)>N~TaChG9X9AuoI zFA;_woqAWmBSi6IypXKZZi}xbskVvY;S$QT%a2U;=7mZRa+W50E1&<<`6m0qZKwP` z@gyD?(<0S$%U6ics51jBCN{z_1CXvu1Cfq0dse4|G*1wC3eMvC#$W91PH2Rp+T)M3 z+RF)MWd{maCJKYsJaQ}VPaJ642Y~+oX5SE4cz;MptYxy631{-#%xt2n7ikXT$s`=( z(!LGxR)g_w{{X~s=sJQnw=S_^X>$aY-!|K08u=wLfgZpL9+~F697PXi)s@-RN~bc^ z`&UW*tE_def~(+--(uEoBbL)`yk{2hvXKG}{1=ldzQB@tS9PuYHJ`v93X4UTQW|Bf zO$zE0TPn>Yl1f#B-N;w(NcjOt!mnNhd>7$QgSxkh5J`mXt5?N@z6qixbZtm@-gHyPXRihUYpm=24 z`~We1xZ{fbGWb>S>OY143$^f~-p#1V5X`qTF)ZwO$OrDOIssj{E9;@lTFa@$_~-V3 z@K3@09FHE!I^8-vmdPUFt^hazNZ@wksPA7Wc+d9!@ZP84QhXVu%GYz2O|l=lGlgOY zP?c#9YK+U_goM@wecCzHSI6Jw%$44ojz&W z-{n6vY@iY50n>JVT=m6pV=-0v+-W@xsZ)n4a!1e_PsWcPU0+_u;938t!zBVTq=8EwRxf1i#lEaq0B0Cz`AGCiG`oaQLFNDEMFE zMc;z28vDXGvsg|rHzOQv_Z<#uABf)&wQn41i>qI-y18T#$#6y_J8{8b>^~~S@jrsR zJEFrPE!>gGEQO(FA&-{4e875+Ys;@5YdfW}f>Ah`OGf^~gP)};NljWWLDiI#_mSVX zjxMfrrO~6BP4QeAQ41Z2nA*xccVK7eE7?94d@8p1$*RHOEjw0CKI!3CpL(46vN-`) zAA1>0o}BT`e21uMdgS&K>soX~L1Iy6koRf6?gxC}@!G!R{g|}%`qHa^$K9})AmIs+1ugZ)E9<}7tK+t>;$1oqhwY?X z!#<4^YcRSB^FuHNnMoZ%Qllr6ius4&?f#%VV`mD;mP zYd$+RNw+3QRde;+GhX&1;XIlT-nrFyV%ZbnCCqXRV7OpAQ@lYNCxW!t{{V!%V?Mn4 zQ}i+A{3M=GGF_aUo;v>kO0TcX2ZMC7gpwsepT?#;{LP!v-bUYzyvEdYCX7t2Pfz_t#Y~epB_Q~08x=yCusbcZC+n9 zj@3LRWv=RahKWDQvH2~5&H@q6Y9EK58MpA>jjh3GHbl}Ad-Nu{{RyO-$2zoc@{p=J z`eOp9XanrpHnThR-5|z&JLaj*O>#G;f>4Tl*4I*^Noi~F^34$O=E=8=V}p@e{vf(o zbjvHBFM6;CA5Q200IgY*ZhwW=W^xYc&Is?p=B{|A;!ABSOIvgIvAK`o)A>;^i|-oS z6n=va-e=c#1b(Hvz>~n_kuYL*w5Kcy9R}BGW8nn&&_A(&qv-KH*do{{RB7 zLGj|_#adV(;NvH!aaCuwL-9^I2Vb+1$EIt^#b9aIsZO;;cNFY)QN&7|WeD|SJSS-# zzl`;g3FTCijt?2dSMaz=^vm{(gc1^XMEH( zIUssrde@=L`W)QX{7j3BD@X97fY~c-Lk{CCPJasV$^1;d9q{(QEb;lTrmD$or}+Hk z!jJp-4r|>-jlH*ku5~nBvr8FPY@8Kb;C>b4em3yUt?rXydZ~#gMn(Xf5V*#Dag&P1 zs&doJ?ZRRm2IRXPW~m32f8lSj09iIVgVS*Vhfagmy*FF9d43{VMCWNKjy-$V1a!sH z_00;(Jd}Y^R58go3I`{e?lomm@ebE>Z9H}3In635@+9aMklK1S*AjSZlFsw(QkyrDtThVUO{8gwV0FjUm-(!QH zrDa*^7XB%>*7WwvtJqsFi+3Sjf+8vCTr# zR`X_(k2H1ce3y3|mJHVJ8_n|;72_n9I2itQ_2#puiw_xiVmLt}2!eZb#wxbA@bgGb zOHS5GozlvV!>}VCuNB&Oi5BO@8e{eHn;($POq-MDeU1#PEQSU%jC#ud0OW688>8b{ zEhGvAkqxB(01qQSujx(uD_!1d(gC;@z&_*rD&5@5-Ze5I&+b6M9Oojh=r$;~+O!I! zppcM#$;tl!AEjv*W%5U(DBb+o=idUnODBhZBHZXRpWSP+$rAP-Xn{tI8+|KTr#wc^e>;vkBGXoo&?gP@$I+EHjk-jq>jX4u?Frw zxUWgJy71)VEn_)m>;8$;9XQ)uUxFp^QL#_6*ucS*V3|sidvV|CUgxIWc-QTt&(dwl z$KCVD!O8UZty59zjH{;Jw>bAYI*}}Tb;^~`OEcRWamNRY=DlOazBP|n_C7UsQ;^~Zl#DX(YEw_$$=1nRCyFG4C8Sm{-4J*deIWcM0;Del-gTs3N04kZr zGn8cd8sRb3aMY^NhSOF&avPmFBpdXrl>m$nvKHiZ{vMURXD*iK_xgRx^*=3>9(_LT zdP?aYJcUCog{VDG`crlH`qY;Z`0oWL)2-8a$o~LJBL}zZTe&B(=UJX?-(!w4(P`Hu zg95+kZPVQC{3^zUtX%0@kDqN}c9A#A>bC95dXfOn47Fel%{9!Ice-WKl6NGZvJ=Z3 zwtilD=~wOA&1S;sH$pI^0xX!5*Zq-Ry4PMYhJPyV&dD-CRr^sG_WpFuM^y1VS%x@l zpxQDN-JJC2KbK18mMRV1w01)WR>?*z^QFFsZ4qggMbuycV#7a%-YTODr$=Ve?$-twDrx`zV^yp!y z74KZx`(Cj&p9YhEX@1s_yGa~hWo?nXfC(8_ZUJqppIlUO$z)}1mKVqyAQNU=+;OwL zRJ7DQb8M*Q{=wI$&34@SXX#dxQSr7zHle4hDGYzo&p%!&J|4!-i+%p$54P#b{#3eM z(;-evS(0_D$NRiioSq}`F>@r6>7--si?-*dHN9!$ zuNT?I7ycz~SdW<95^y_b9qL^ChwLV{Ie0ESH7v>-LAeoz$=PVx3(4!ZyLN%;&|%aMd$|)HM$cLu__vmj+~FS2k=0Fma!koSuEFoo#E${{WDF zi$2rIEo4r3>yo?*_l-*1;^wQT%CYE)32&EpyT&{5`DVCy^iPS}4ZFSK+uMd2UpDZM z#AcOQ#XEka;h^OmU*U6%8kMZD#AMMfLkyPx07AgWr`_l4TS`1CQC@u}>NCz%*s;ky zIoVc5uj5#*mgHSoZBPc!w(w7X&-zzXd~f16j6wEm5U2(*ebk=E{5{Q8I*D#7_<6sD zeg_NX_-MvTX_qQDbQVqj0K{`y_V-#wpK@<)?JlF177rOqR@|&P$Zebvjy)^U@BCNd zsRx||7Adt(2itNtXRbYZ)ik;B74G(m8&bz4AGh>B((XR?==8 ze^&b=cR6GCIXSB^%c70IX%{;&@{wqH&j+e@9M_^-Sop!zI$FaxkYEvek`8mn*A**T z_~lR}7I8)phTHbidUA919lh&SRw-Q^)1@Z;=VOC=T@B7gnRB=dE^QAyaDL@dxzqGE z8*TLajGh?%kc=N;v+%BqQBR1LnvzR(J-iVxIEk+@kaL6U#Z3;S;wfYi%GU1t&-}ms zpVU-)W!Ts1vbEFv3etG88=n9{@ZRpy3ZtC@*BI}+@d zOqGexA7vvSL$bYPt~_AyCzWGv{2!QJ1D>3dSbu8qv&0l>(XklG7krR96YH9~a*vVE zQk<7V&gQ-F!yU5evMFu}`!V1SofGL)KGWgJS<&p|RpX_pC)@Zq$;huwYySWi1OAbu z#e^pzZ#epWIH+cm#jV|q^k!~k3+lGOT$Rhb811fmf0mrGX zkzw(nV<+}71g_>SbJTlPIqtkw5^S4HUJrYoa(arISbA}+@e6jWO-i$HRNlz)CT|Nl ze>wt-z$99c#yxiNSl9mm@QKKd&V^6#;sQTiwd}Xrzle4dCX@n#G6elbE6aRGscP#H zR?~Kc2M5mU_;;^LF6RuJ*xvn`AhvIcR!eD+zio^H201F-tMtE6_r>r!(FKU`}ns>u}7SRS8IOAM(=dk)zo;kOaTxl%8g?}kY>yDq+w!BCr z9tP7UMB_2!9;Xfcdeojegi9`m8OYwsNgaM%Hy@RBQ%cL`VK;XEMmDXc!#|8glkj9K z`2s8D?LWhJx_6HCTYF*hNhE>MdVj1qV~>C5UtsDHC;Tj^91=5*J%7(y=DathTPMUV zO5`S4mPJ0Clg(*Pw5YXG8>DAegleZwU0J~VB7)}9KN33)&myVh@JP?{t;<;c$?%U> z^Ru}f^W0>P)urHFBxwg*`zo9=5;t-N4txD-X&3Du3$ z$DL>~-7kSO(RKi6*URJPKf*XZyw?r!Gr|IWTE|le0d$0^8RKSuFRglhh@vls@J#2Q zF@PuPoQmmuVQPw+OzbdT1>p1^l~%rwUFU^1$Ej-3;1Au) z`263~rE$I*Dm)9W$i%XSU+c|kitoh;MbWx zChEf(Mv6n8;~(H^=Yp0&W8w>k`BkFFZlv_6d>B06irThD2FXT8u=K0`3rS_td_%Mx zs_=OAH0{60N#4uU=Z)Igd?mb?4609-&rkmVRb^^7FMHsP2T^l@AmeYQan5ULLSB3& zz863^6M#o=#--IQtz-Cep+^o>Au2rp2bvPs<~H=Vk=*!ZQ69goE9VZjM0@7kar#%O zX$Z2EU`Z*v2iT5sJ?qJIVH$X^Rz@5&dVa&#{#X%{`B$sx(YM+H$-)7Syqt8+V^x~c z-2CeJ-Qc@zTVC-Vx3C@Bw1BsK00$MB55rA5FNoTFHmF%=x65R8ES+&*LHt*=+otQ& z?H@L#`9D=!S)iI9i5e0Ew7sf<>H&|MjnlBm zJ-V8|sC+rGxwi1_+pqfIfzCSvkH)>G!r7Zi@meX*?^h&u#z~haiiudmi zDoOE%<_)6{wOEb;!awuHbb7^t$?*35W8^K~J^J*hSa|bࣞ`_G&FRq)!vZxd*4 zid0;{3vtGFbOYYFSiTxrUTONel{>BQQ;u_=Q6k-9R!AKQ_#B^{-{K(``TD0lPa+@3iOn3g2rB zVd8BPLH__e22Zcc#ZsZa%wE;$@;*Pk_-A7dgRkZ=WR5}QjCKKs>)yHDFX82)_(#LK zgsHWduHrfSvSXj1ud#JaKGn4E5&44(22MSTb6g&url|ODptxRqSyrpHa2g2rx4t_w8I|pTey^Ujx3WDv>;LbpHTjAJo^`R=P|L z@e1u3PFmTC9;YAV*PLi}F`ocx3IW7&Z3O!k6>62%zC^l>JrDoX?LTRaXF>2Dm#O?W zl`plYzqXnaHzpe!skWF@lg2h+s-9F2dfe1}8>svR@B}kk+$GktsaV6N0Uuc|u32M_ zHSe-C$pCOMn&~`IsOg%|>^UXLDEf@E+a$6{^EJ)kx{q^$c_ilm`V0;QbozgTyiMXC z+MmPvUb`~tDd62B?RVxOvKX$ew=KBXdazJiJ$u&{^3$!2lr0^4T=%bpe+s-O@VCJ) zWp85zt6Zs``d44QD-KGj=W62%p2EC?UGNKPy4I=Uj{&OQO8K^FdN%bj>+FTZPPx z5p1iwf=8A~+P?V$ze;p0YC238=u0G{aBO2E>FJ)H)$mre@S@Q8Gg0wR!~67-&q%Wt z_A<=Gvc`_`;h294O52xrH~?3j+x%?!+wd>IR<>G=-LAGdZQz%Xd5%&wPV5(Mao3T> zV+!8O-ICC^4rO$Fh5rBr2k~3$-yd!~IeluX+FWS>U_aJ*fI6}I3<~gnhT0~taimM) zZA#kbP|;(ZW4W+^F%CdG7@mLw(E5t^kJ?M(M~40?Yti_k^2H&(p27m#*JSG80U?-w zc$N7FWNN?gANGlp;jWOr8_{C7ipm)0xsk2_W|eWdpM-YP-_i3<_ld9~;baf)z-|@Qjo1S@xHfz7M^c<4&FAytw&CINGoBk)KjJ*RXt3 z__5&+8hG;e;wOhRMblO7Vzz=T0)c`bG1*sw#2up@I@gMLyFk3u{9}7@;e9gTT0kR^ zBB^gIN}!NP&lx{1dt$gtYy7ThxQo&Ck?g#nShM6yg^+vc$hniLL zq-0`w^9uZ>yJLb4bImxkld?wff_Fbb{vGK*4Xi(7jZ0XELQ9D>?LDsU;FJb?whmQh z3^`Tc^XMz(PuV-g-aPQGov2&e+g*zVxQ6CQZLzxEIRcb&r|*IX$VWq(^rjwqiEk5>WqEOeI6dKwTx;mhmTgDBXMWvU+q`gg*Ah`$GZDSyHr=EF9Tad{Ij zoOZiGZpk9Zig^yARUCC0^r?7w`$bYc%{{b~93NxrbZ;#eEx4#G$JFOP$kcYztd~t6 zO{l}`$6Ci}Wr(UN!tMpR_4J}R;)dbc2?-k(tGjZ^VVh@KMCR{>R|86M#A#XClk-Npq#mF!`K`OqvEBSPYr25IOb3Wed%@i zn{@ddPm5O7wfzQLX5cu_9CE+?YO^H8J|_*wX;?=D_Rnh0@jwsaO%fyk1;IHzPpwHR zdEXUO!HPI!d;*zW3{TQ4bu7r=uqEFuY%C?^*P2%$_c%w!W zg3Lh3?V5MZ{{Rb6WSn_8A5Z@PT~+a1g!s!xcF6<`3bDPL;)dWz0s=AKvgz_KugtOG z{I`p>e2m}@ze=UyWpiPupw3Il&$imP;eEr!8p^w5HZXq*q2W1{X?lw@6Nw}k9>W!* z{{SLV{Y90S{4$jec7(_H*B9a#8rx0KmDsp+lpjptNUrkn0Qh6Ksplkgu0zEuBWeB~ z1;A$WLHq*LTUF}If1%TAHZn!xZ5|n0bb*IG`(ykoPg%ATd`q-}xxwAfYy(EHBR(?H zWquVD7WKy+D#h|NpA=(c>y5zn18D}7G+!n;YW`)-EMv!$Mu)VH;C~iW0sQk#@K7;D z;we~@z0L=I1w)|Wymxr$3t~A5KTW^>s%L|zb7!rxk_l$XKT5evb?8J^&H0h|a^2_f zrmp44K`HCda5?%8mBHFxUbletX%&kI(s!FPG(tuBFHw6Bb zPCX_&ABR)9A)4Y=eERJ`2kBDxexr)h(ey*t78{~EiMK*0APQKg#Z@sk)P*UIz@vm5-* zToO-C21Y$9{?Ex0-QUfhJp603ORt0)-bg3Um6V>iRDLVXF1$mdYqnq5mZePgUTiK8 zUy>I4qx-ypiuIq0DsMg?>RNnzL2H>oXW??l!;|UHHS(8-FYRyqaj4B{wLnXd&y0DQ zS+L{q$K)%-&mX_1W9c|{3RIhY&kXP%g}iw+lv3Dg5k{kFUC?Kq*gwv_w@UEu#O5mU zYY?lR82y_kBb=YcxDNpMFGIT0ViW7L!gebVw*U^D@$FurY2d#M$m+59itlL|Kj}bY z^{Z8H{{RegSEUsre&0s;vSB~*HH72?kFyMsjOVR%3*q02D86L6qyUkeeUu)bjdK>h z2GQPe1Nf5dKpEZk)y5BD@9SG>;9VII%-$%wWCK6(_@wjO6{H!*G_Rqgz8mE5QB!G96v1h%aKJGlPWMIZ2!UG&a=+Px~$cq_xQ z!U*w2-bmg503VBi{{YwGw7!O1sIPJ14~kZRnYE~g@opA_f!LmVbgnB|9x&0RTZ_$Y za)h%Lvd9FE{PwR+9tiO5!vt>>UTq)(P3rNuf1KBl_~ysJ`h3r)Nvhx8la*#$)hbRa zlD$bLwfql91BQ)8(_e|oPvc9cmwfujbH67xOWQann$EfLTi-Dcs{-VLf6zuwG1TU` zmeW2QG{8KUz(328a=$}c@pwn!e0LbQy}$XDPEzF#GI`I^u$Lz7{s*-hJi9N%yCtC3 z$bjm>yu!UKfWhgG54~*ZzXG+Lc5Sd~Y^9DtYeE5Bf$QpNFT6SMr^E24lc`_LEQ50F zxX}H1F6Mo{{T}m{{Z1G zr6j8BtlR8i^A)mXUOV-yTaSmDrjldxwTO^hAC#L$0F&G6Uel>~Pr){@d3IhbzSzl= zo1`EU*!^qCJa2EH$!7~Ei7(}lg6OYshi_cx9SH)ZHz#ZU1j6h79O!&I2EDdR9XDOH z4+9d))_*s1>*-c?l<^5qB3}_%?r)f~S)87Su6y*alr41~I9!}+7l_>n^VAZ4wXqcX zA_bD}{`L9VK%H_xuGLC$(Lcb$*wUMFf0^9tnnaqF!q2Gd@i9z{i$?i+`}XNvy7+F$ z%y(<5q_z~BL)3HYUCa>tB9l+dvubZ9GTUyG87G`^T<)uF@YKv6)?G+ob^A&lPp{)s z6#D)~iVI}F6KliP8jhbd%VFXO*yDiqjC%8sGsSmHcd6P)cX)==0WQ) z%O3*VT&OqNj3L`@e$s;(J^iy@%l`lhyTCGO>vWps={Xofa~A9lPvkmQa-E&OLn^eO zo!{nRMW<^wcPZrfhS8XUFl`PFTKIS31-BOZt*_2^4B8wKoMiLHI?_SlKL{<_ z!3L{*H<5-nQ31!V*R^#~co$5&St4%{Um#Kw2I@X@(2r`;i*5e^z&LSADOx|7$=zw6 z64hIM^{XsnaK*99E;H-Wyxwb%5?;;raj9D~k=oSr&OK|{?mPjfY-?okE%6Ar=H@IoN!rIf{QNWk`O5cST{uw)0>~5#w<+1R(>c{|&c-w*0 zImsv6HTezj64v8L_?u-b-F>CkP=JTdNIPZp{Ok1(K=_fTc%$L$8VI;n)NPhgD9>G) z%YHc@oo1@X+bFZG;pFK$i)4BSiKa978%_DP1GADn8l&;7fiJW+A28s3II2D-k>&6{ zn;MWCV&l^w@l5fvu^J@A@S!u0afF`NLsA zm|%M5tm;N3_=#f9c{?yW=M>!xs(eDafd}4MSdr7MX5H7wzP~cBgD&H`gIs|?W{6`w z`t&t}VQ@d;RO+*~IA-Mg3bXL~7PGw9)=|Uc{u%F8ZNASh!kuBQ@wB^>>_9wJz5Zwx z-zIXlv6uLBY^#+EIXrr0E2#10K-y?{kn<2yeMUOg3=IJIb!k1h0TyD;GuZ9m)~}4b zn~eiOcuxx$9ep$WjcXOJ&63~bj*rBqDE=c@v0cH8L!R9#J0ch2rP7WHmj~Y}#MGW9 zwu*lq>4soih+KB`KhG4)KPdcMxrR(`V#ER1VY5e1kUjopcZCX%5^BhYAVT;apEotn zXq!{PTI5kEBjh9wc_5nTJR*+1E7kVlhmj#qW1fFrmCxu!WAJ9Q=(q=G<;bd%-{eZ@ zy-4-QmOq53V>tc!JazsW?*gNE3rlAi3}h!ihZVr<2swlwWAPf!WjqA{k6hMi>GzIHUz#TH*kM3s;?|cOd1P_l z1of>?4Z|9E;`Tzsmh%Ybj#PH6uL>(FYYKA5%Oj6Wny0G!gp1%mVxEoqqL+pf$@sB<&eG{FMQC^_TsZeUnc-cEnHm*Q4lnaG3~J^En_hdh{l|pGAK+UDRNSys|Ac$IrIM zIgt?+oOz{t*Gvc;)jH?+23rtzwg~*o}YQFmcMb&+CoN; z;_wDG%DjFpR&_-(=zbEB(2&JHJd9DNqDiIr(QrWyr}8aR-#Z-#!YaARWXGpaD%;ok z>_S#w*K*H?qY!*@mM1yO0s;3)E4kDa4}f)5PyiRd*1Z1!O=XMY;^Yz+vO+9)8V{k5H9e{{XI}+xqz&b+iti0li_Lmgk?t z70}#68f)Gkd|()cKPt$#P<|g@$5RU6=w5y#@y=DrL={{RZ2%HCXt zj_yH^#2S_HKkJ}1?yu{q>b8-O_*t?7qvp2!zFP8s4kFFqjeZpe_g5|tx6b`5*J0W| zCq_mt<=x&vD5 ztJ_e!xv5TDKld+vP_QgC@xivXyE4v?}S{{qxT_4~cr*+|r<-NAKFb>F_A~H1Q;OjzR}0&hdXTIIqbcik}fLJ|g(SU29R&E$nWtC4V*G zR#tY%%P}XOpRICNuB4NRv}w4vb5r8=y@!szB3q_?JxzMS{mhGB;71Hc{Eolz3<4a$( z*~57yp^Qj3`GO$Mc&8H3C+~6(74d)ezN4*pavLoIWFa`J8`t6<~TipKEm)~i2;wM)Aw-r`3P z+waayF*6d*7u1jxAAEPMDO79W&{9igeHr5m4L<-NLEpaPF1e>)_&sEw#2Tweli2Lq zu|*Q7h=%Qz++3eZAwms@9exa zFU74QV!EqcOJ}Hwe|D*D_IAUsaO^ieMml1?`~8@4&x5i(FR-O&huC*VGdi~z9Z*I~<13PVXX9*ZYLDw;EB=p^i;(u$; zie4-5AI2L;(_xQKHnAD3!1g~Jbns|~mSzwWV z>E94#Uwl{4myq}y<0p!|U8~$&wawRtp|I5Sxd03MvjN^!zljWli3h3nuf{zyR@Q^d zVG&rKNYxyJjp#dW_OGHo7kpRoR-famPYvA3<*um|7Otm{-2^``xHviW>sw*5&B`!q zsdaFX_HJpPVB9QbBHmdz8TI42s+N&3kVh#m^2mAWJLB-J7?~|gJjXm_DeetD#DY?B z&ywfgkUITq+Qe*m6djqTrLULpwpGUr&5WOZDz}PbRPe5p>zpjgKBFS7X@QsFW5`$U z7y4s04~l%a{4JxRF(gW?GxZgddi>4$8lET!z9i6&(yU11+NQL*RrsfK4$?`7jQ01W z@ls>Nx+d}lARcB4R!I zbglmY6}!HJqlf9a21nsox|n0|uS|^LL6x)Zfm^;Qc&)UJCR>b@44evw@qOjBr^yz) zPN+O%qJzN4^x~wBOngs#p0E+0b4>9m4dWdmMaanGJ-8J$pe^wxc!(Q>0R1}mtiI34 zrN7LNLwOH~wVyAXDC_Hr%kb+w8ZG`XcbRjM=rdcs8zA_DSw-czU&kNPv%EV5vG{vZ zXvR+G=jcDiu3zLz+wUj)L66~U`D2w*N$tt555;$ztvol3ZQV9~zzNUwuH2-b@U3OI zBnXUKMm=-Qab7gGKW6aG)yNGePon;no&DwN%IWew3&ct1c*{(IPY#8D1A)bAxk&yf z7~eS&05S9;sOyeD;XBh|Bp~Ps?bDiAq+j@2(k!1Z?#T7(4JEh8r@zd%;gi3``id(N zh}aR|85JLc9Lc9^YTz75*#qfJ@S;4PDb+l@WmKH{^O|1@Z+!z>lYr(&Bn}TsB=vtG z$7S;?>3avl`{d;AbH~0atUK*~4xwz9#O<8tBo_WvErg0b6W%y;z!4 zyq^x{Tx5nh!S??EBDF8h&xdw}L1I7{KT*&5^r`FfD*AkjekTC`0AjJ_a;kIaMk{At zg=6vciWR^le=5Q8C+-f4KqZ4O2fc4=TRg8^P5G2g9f z_;<}+Q&{uHcRoku{VN(U(R@N^9~m$nN$K--u8YIY{%)^@8=04{JP}s5`64>}+4C>Q zBzb-hYvd7~?lOA}bNJ(>e5>JoBl{CxfujJKwE1O_`Vx|i0q!g7KiUG`X80kjG#O`S zm=#gU`G2Qc`AflfiF+26c`yiV^obJyM)*1K@s$f{u*$`H-F@v$rxcEPfOGF}PNhG^jGCk;%aH>&h@B} zFc~Icl0oP((zBi_cCt*`js^->sP2y}o5ddoVHk%&w>UpG?DLK?IrXj+P}Te$b9&8d zqSy$F6SScuFK%<|Ub}JdU%=9{d0MroXCL#_9CgSaUiF(d!2bXTJYG~f-MYC@p@a7a zB%a>YDzskrJy=tvABHIMjXzNE5xnxRv|BfgPh}wU_}8t$p?o%r!wIj+p;<^}m|H@s zr{{JU$>*`_^{Q6?008_f0y}t?+&bj_?%?n%y3@WLX%_liI%J+BvXV3N5B9QYf7n)07nU^K>PSF%Il=5{x4sbYwXN&h!KK*A6fEe@ z5RBk)-o0Aa;OB=H-dFzsgp$y?kh-?=SwTHL{{Z^cwI9OI50sJ<;wvR*>4rT&y`Nlh zQ0q1DwhP&A(cqU}0nwznh$fe0vCDvPrz%HY{dlSF{v3FHE*d1$?DEP81Rgo(Jo;C+ z4~BX@yq~)96`9yZaKw+P^{W?u4|GXmSZ3Gl9fJaP=bZ7MdY^ADt(qrEY>$;LygT8z z<}pX5TLvTL;P&I!){%TK;iA7bnQh9B06cU3Yw3%xgZ>k}m-l`lwhhiPoE&%j>N~H4 zS}aB;UlH1cO}RKc=Zu=&Vx!fP`5!~UBJe+g{G{Ec!d=&%y?ttp{{VqJCbH%&G8I0U zC+nZWzK@gPevceLw}`D+p(KC~NI%ZF-w^1Y4DkKjHaA-LoixgDVTj112e}bl&BbC&2c+PmwYf?5eAMdHgQ0D;InVD|dbc(k-^cBRoDHhG>GwpB;aEE%)T zRk`QuRufV1gkj^C!&-YfHW|Kf2*;*t+vNBKrLo-~i!7M4axii_)=lTYeH?&O#WsI2 z{{RwHAosEJuh@JtC0S+BZ3=E2 zVDdYTwPe|NS-^3lS|?6{zaIVT-z4}2W#7eCOOx{ZliRH%zX2`n*LwJ(#~2-b{VKk; zpH@F*O>JY!^t~&>Lt@FI*|;a1?&BvTzolhsPx(#MS0>OK{L6&pdal;as-+2`@D zhTl{0faXsO*uTqz%db8A*Lxqptv_f7#I}SFn=6bSezmIq00i^~hxcA2wj({*bUpgg zmLYV%;!m@t{wp3!Wvh54?)OdM%OI)`JD-Et_2-KAn=c0V17Gm+>o$5!F*4ycD?S0- z2?Ud#hp6dJxA+g?jlO&MiqVJ%k1=`o>)O2{`@?<|hr^>nvDNINnLbe{op4Y0xbK7d zR&J|q>gP5h6!~owu6T}>;V%JS_=5ApSC*Dbac?RlVlye;A0#g9^#d8M-%t2c@T*h| zzhhYEk8qYS?UX$L9Q$>sbUzL0{u#Kqx@}`lxOuo-N}#J`^OMQqt6be(X^8Hc&YQ3h z0~uE**@*hrO&asRy?Y*JCk+?;JALIluY|u3S5YUVK6o6A4i8>y%=}3u=C2uF?P~$G3clI; z;AipcUG(euGtHh3U1W}L_HsIT_^DwInyi-3t6HfK$vIg^>t9XyFGpQF_J-AT?FrgT z8#pfG%X$zL6YKNw_*a2`%-Tvp@n=qjq(@<_*|y|6hux6z>t9m%7Q|lsc=0Z=VH+Dj zE>|P&g3rSJcqXEAz9Jr{eK>OAs;?vI{{Rr3b-W#?Pa#!U{!#}am!5Omv9628`hr0x zhwR(_TJ0>ypaUPw;;Z=em_dBiQ4pppI+=}{?fhdO+64t&`F`f*-q zsLLgzX?NyxRyZajSgqfe=rG)GE1h3C-)HnH*y80G;Z4)`r#DBvIj((N5sfJG+ z+O|Kq1#|u}xZ7u;1JXoQ-RZbi{it-${CXZ{1ypzyZVxz$8xKe%n(yPCeAaIdQQ znKm-X7lQQwnB20j>Upm@__&gvg%G=N(cP&y?emKCtt-oK2mr!#CVk+Jv+j$9$0x@{{RZ=yhSR%#j6s;@W?ak#d6*%^JUXK zFc@HYLnM2Dh~~P_5C~7jDU`VrHsVkCMtn~bo@3M_$Wl@KX~Vg;P#eQ^*bFmf4H@#NVD5`+yl|_N3dg3U0f?@eh)Eq+`mi$IIcHI z@qdT>?;Imtz=mx3V938WC+_oFT91gdc(gAE#Mcn+EQA2-#t7@r6>6rx*J3@MpVxCn z<5&L1_}r5*8)mwSGC$vKihnk*ZMctTguFm;owt9`*Uk6Z#*a70SZ$u>-)Wg8VM49?iJ@=AHD3EWQ<( zf3cs_inj|G{6XSK+wPc&&%SzACaTUR@T5o;hF5;lFqp^Q{c6-2ovZlA#Fk!cW=P@P zf<|zCsm8MYy-Aff{dyJVb#I57StlWGm^ZgI)J*ZG#GT!~%*X!#9j`qan2*3QTwT0N z7u&FyVfS(e%ujN2T}GjP>+uTQTbRnUExpO(X3pKSo-0LF5a9GO?In&+huWG9id-mSAwN&OUT5L?H~cz+NXWst2Ofl?@%h(Xt@xu$ zR`CQ;TtZ92a5pL4k~r)5*O~ZpT(OJcJTnPmc8+0`47ucWJo?o0u6D|Be5>YrTIc>2 zHG|_Nt%*Ne8uDKPIR4V{<)|Mj%n0YXcCOxk6lr7P4v*!}5s&P|w94zZmBurk#=I{` z_=(`}4fy-UT5h|09jjl2`#$W1kgJkFVZl7qx|$-C9nb&P={!BD#qo>dpTX@zQnyj| zoi;0pBaoIZZDpJ^jC+z}$jyGUYTAS_-W@i@8tUyvOi}*;2t5n8MIWtx2!6>Y##;XX z?HS?SGfBT_KE@ye9TlsQ4ii4&`<|F;1n*HT{TTSqNjCOV~Jogtng|(>Wdxu}V z?8mn`W;_A;SB-+H%@;20@5M&VFC&N5wHUN(yI1&uewM9qHp@tD`?fd$;IU)Vjyc7C zbNpNQ;qX)755;?}BS7$2yVPTvSudx%aMCl~1%EMjWP#U%&o%lnqI@;Ivinzyd}vcx z*Do%7<;VKFX!kFd3?TFo0g~NWvTN}h_SE=ecc=V$yuW*S(mh7$q`SG7K1nkXG>l-i_e)<9JV~Z_d&04JpTT;v>62?0vR=of+KyHUIxLcof-v$RPjYMI ze-`Q{>hW)+fwzIQZtJuF0sH_J@4g!NbK^XTr^H^nE(=!uCgPZNGZ+~ z^y}8VbH;xS{7vA`5y_|c#zc|jjwZKw8+>e&uJw?x;3}a9uTzThc^iDj^G#@u63frj z=WBLysQ&;kBlr$^KSSQW%J4Ubz7YII{h!{;Ub?r_HOpya-1E5)x*g>lDE|PKZMY~L zlHW@4tqYCrf&jkL>T1v+?!rtol60@6x$&8|f9#@p#c}e-vyE@n1UKsdi z@pIv}muKP|eS1y5TR|PBoo?vDA0Q}?_l?xNVKSo`+(-TZ5miL}> z;shA}7m-IGE&Hx<&fVN# z_V>j$Z7Tl&Oorc6)Gb`wx!Mq9G~q|iL0&+}`_=T{!@q(0Kg6#MO>yC!MJ;trLKvFD z!ffp!8Qxfo$NpM`P{Y&_Q8j;fRO8Vj+RcINJ6B)v7r~lWfi0iHy1Z|5t0YD{sY30J8I{8#hw4VthV?&6!T1&7 z^P>E1(5KW@?qQt^+slH3d5rQw>Ja36^{$K+oZ`%JN>PiA&(XWYmf~jGna|7g1B$V1 zp=G*|l1N8ZUrZ>iHCuSx%g7_D_2bkUnqgwF$@Wo`qo@QWtRE`1)qHydujNiF`oA``lx& z=CQmv9D~7{vxWdPkB{q`sc!y4OGWc3>VbdZSn1J{2@;;aPL;3Y5uGCr9{;IT`-|QTpbmr^tPNWZoA*JVC9nZms<)mxi8K z@V2DEc-<#8bHgzO*EN^GKQS54Vlrx%hBN;F2&SZ~&Kg7bVw>IkgqDluU6YT6PP=jf z9)B9({ATE|_-ktbzr5q8W$RvnE4-fy3a`tAKhC_@;uI1|W#Q?=e8|n){gF_gz4K<0 zT6~e{dc&dd?v~p@O#c9dX+h=5@j`ZB0TF|rbDGQX1hJnT>9+1TDh?O97!>PCOMF$F zo)44(?hgip^!Wqd=1<{iRlHfNCzvu92i~lBCTOSd=CdM@SV-!?_TsSo7X{b+BwD|e z{hM$jlj%#~1bcr9YT{G6Mt0oY^GZ)w@(8UL%)KbLkKt9yWFU3`eq;HOSMIGA)8Xln zMq1)oq&XNlBOl9(=C0zHd@Yf864JNJ?Uo&XLtSTxjFJ2`w}deytKj|z13y}B--v&a z=lWO+;470D*rksi+iKRPrM@0m?D=_KK7>>;M$vpdnZEI2dV1ol>aCB5_AMVzkmvEH zxA})pkvEB#bLh-YFw30x$gTZx72Hpo=oYy~WvJW3RC;a<>bKeYWXT!{Y zw6%s)gir^*NUQ1cMD_Wz#y&21j^D#y2lYK_@iz#hn***{<78jeg?zlaUY(}+Q$f_U zxspiVOO<4G7|Y2XSQFisc^^zyxBk)=(_VZ6)opE5lG3yK@T4*Q0k4a`0NrXD&XuZY zm(w(smQinpHsmWv2yA_DE5*)Yug}=}T!lA9+4X;s`K*M-Nme82Q+=-KPF7bRLTO$- zkdk|xepOVuiu$Clsq!tf%gcX!I1|bL0DT|vs|l-Wu>-Q|LG)u;IaAF8%g1_dE3o;b zx|`|ZjebA5dni9zusmVnf^u)>&)3qqpaWyINH!0>P~jfK_LA;(N#maw54ot%{{Vee zh4IggI{yG_PCNbX^~VN4IHSx_(~6f)J%{b5{LJpGJbB{zBxJbNXHC3=yYs1A;xCKS z<+s%CScCoUKb3j+$WG#Ut3pPQl}rG51&r$7Pi?%Y}Tc}tDGCKDoy?fWg?-_hU zw782$@WssWHNyo+;bOa(^uPy_YrxGS+EP}s`F=;Wm(A-G-QUdp&$s^of_La~0iPDT zWBsvKU;YW}ph@?rC)}?Q3yvq+9AkaPC-hThVv}_Od4;9Y@go&0jAn z^lz;{{F+C&sMY@fpWlN205k2Wf8d;F|gqoyWxz6aM{tlMlnM z+Q~>|k5Ktee*0F9kAVLGYPHlL{?T1UVMCW8nDNgT_vuUPa7*}q`80*~dXN5JuepDj z^(p@Vf^6um^0$hlBaRE_rA_|;4%_hl2tFu&f7F&OON)Nn#EIl)Bga;q$h`{wypRt^FGLz{t2t1IQ`#>TpwN4^B?US`vKhi zEBI-ud_vQFQRgm~3ru1%?PdeAjPiY}&9A&E`(Z-~kVUEt1DrE-uZ#XB`1j&n&GgF-hQbPMJjsOSxJDsg=b9a;A}OPzmHjwF)a z{$_SL#^cAmFlwG6b=+^I-Pi9L=1Ep^-7`*EoGt<4tJx&97q*k?Y&N;#6azPtV0tmA zf4B9%pKFwVz>Q}a@Sq;F(&)#LRG_+|T;<%<8veMya`Ik(+BIGEeNCJ9ml7QFoyMpT zoRDcT#|Je^5$qiAxp3+i&U5F<{{Vd&f=j!}KK!oVQfj!`4oy4E=cQGbVO{qW%`bK| z;VjtB_WaE!3_$CeHjw^V80|{P8)w|#v75@8<-O99Tx!t7N} zB)FID7-es~a2Ns)zcuj(>}La?5Lm{X2i9%ZpZet`ea-tmLui&hB6P=@_PGXm$Uqxz zK8HE4n5(WedY@Gf`4`L4A4~X^i+nM)nlF*N4*Aa&2ajMgT4);yR>EP2T=7=*b!Yfz zYby{)&Is%Hd)03ow8q=R%^PJ~Xe038*S!_0`JXW_@;Xge%l`li8&5)+O^8F2&UoUc z(o8V?N4Y_Q*pzyE)P5r~L*xB5;?F9B^c5DBWh8$SuBR=KRr>xloR*&=*8c!9r-Zf( zy>KZFg(Q!us-7I&J{jvgbll&et3D2a;J((HY!Jb|xXnZ1UR5!oKNq(g- z5HN3nSB~E?S##4phaZJ{G$lvE{W=`r`OLiZJZClL`jk%p00OV=n2hxY@CLmWe8mJEZ>&XRs13&HyXYd{#ZZfo@-8ob^Fe1Oe{PbsDYE26WbNRd_rL#!nmN3 zw~=zA>+=pxdLEcF;Y~?@>7sGB_6H%6&V7ULB@g&VC}r5F-)j5N#c^=eXjv^&LxG)b#1??BrxuVxYGUMtMHK zgVwUFnuBphl$vu&N6$YH?*1(69~3pl@Gg^~_=3qNRVg%xmob%%a<86x^!C84%{J%b zU5Xt$SomPG{G{g1;&mRJ9^$@L_>J(g+WW_v)~>pQ)>n^o!bgHu8;;SAgdTlsbHl#} z{v~K}HSdS~O{u~5#0bSEbGdWIa!q-$#8Hiuw>^hOa#xDb`WsL2hlX9}eP`j`r5KI2 zTs&6MOtF<8Fv=bcYp0LC0!^hv_d0dewYKK@=do~rbO(6I;QQCc+KK;7t&aI{C`d+2tOP9CN*-fNoPxWMS2**-86PoC+K0AC~)jUOO;%mPcUK^_r z1P&a98%IKegP!>u*0GFwm`T2j{kpsOS*U6Du^k{uBL)GHp95hzC!F;CYfU~B*^AfI z3?$7e>~eS{A5&k7HovqF#{}_oo;iobmq$>Mb`o>tZ6l|b_ka5I{TKFx`1|4S?F)@N z#Wzm+m_Bik?;xMzO#Q>pYA;Q68mBkZ{ii<#H0QQ^28o&}7_mdjgX#y?n|JV1+UC|v z7gzF~0yoTZK=eIDek^HUv=_(C8^bq#57Ycla&4~(k=dJcpq`;5Jg7aus+YeWKWJS~ z!*<>dlf;*wWVU_CRkq4cV9q%pcFi2rhUnBkZ3n{}?K4GPBTg)1QU=`Pk9ONCY*~pXBhoGswn;d z=#ab16_Ung8(RPl3Fqsc_4uWv{?~uBMwQ|_zY@dZONY3;3?xY~(G33pbq@=U*sD4x z?RWb_Xto-Kg|~?(m-|HJdw<8y)bouubyo7WXrTK%oR zXia-VvCu9&M=UW}V-i9FOC~rTV-LNGNkn{;?tlN+@qgJP;zxwO5PVX!@du3|owwUu z!)mdO-@jl2{{Y`#a2~|h?61NPh&l&}?QOhYs$3`bma-%T+=UUWZ-usq9?9Pvx8C%x z#4ifzmR2Nq-&MB~MWFnUhvp`lRU#uIj!GS;k%gvD>vz+}e6$(z+jn zF=_r4xYYju;c4oRVLq`0v1#*?C0Qg6%2+ofa-#>(;-BF!hS$FqJbQcM4;8GF>04Lr zS8@>?ii+G3z+99WAMA?GrXlk;HcT-0OOtc&uZ8|F{g}QzXmIfsX zd}Ht*;*-%3UUeOHTsWjGWhF7wDEU`e{*!P zV$$;>P4N-TbD-s;Y;rqw9M?`BylOWI?nQb|no?UIJ^Vn@?ffh7e^Ssq17!`SlW%4J z01`=|RgyVmke#FknGF6)ppz!wv$d z*ax9wUwL>cKLz-kOS16Xwn<|qmLFw-JEOtiyjlC`2{BCQbHpyU?1tWQp*tsN+_L~^%ivEs1F8C_X#~uLG zwB>~*ySIW_Y}wav6NuXb+&A4}+#37>{h9s}&8hrD)Vy`!TYvaTBJkde9o5H}M%2`< z5tzps{{YKJhz0>q8;3Pj<85wDEp$FZ)-10Q8#eiT$q+F>Mo_j-BezVCtqFMdF{P9; ztI4=++rppm<2AjmYZteAt4D7Lw=m4=fzT_zm`NUK?pL741Eq8pehas`@b~tPzQaqO z&V_B{i8lZ-&Oqc3l(*wtH%VEY>J7Hh^_T4X`$K#__aUM{L8WR}%1qvRm=aeOzv^S2Mcl|cl~PC0 z){&;|shsM@F7Z3BiN6qhZ+~SsgnVkz%L^FihVldeUPTFiEbjEn9QOx<(yROtj!RF9 z9v@q&-NCuUXzWf0me@G#Jq2a>KEqk@AH&<*x#y1V&cfyxt)U+@%X2UAs`c{ZQdr}H zQla=OYjq#TEe>0W8bkJm%XAEOI0SwjtFI2ysG_@^*o56TKIiHE%q4duXOr99(;-Pj zbLD}=FZgj$T*)INI%P`dI3AS!KWJ-}Vt>@XvOZyijRX)$LP(R@&`Gr zzY{?vw}$j$e}SVp^(6lQ_3G+0ko+Zz6y<(mbKfT!{3(1?$!Fo6D6!A_rTM$^Kc7#n zLz2Dx+0dhPW#n!6os<3&Z5?L&?Z!t#fz4IZ5XJF6R|A6vNvl31H#Z(6(k^0!+Bmr+ zA;2Yj(`})+hvF314HTOUJh4NLJ9PG}In};KoR0qhGN*?QX zQU?H?@?iV>{{TAE@Z_y;s_NHsD+unJY%a=h?0N;`nuo(WPNtp})K+VGgBNX}q31PR z>hE5to=2vg%scsJe}>w0a%25#jQatB`PTmci(B`4LX(U-3eCK>ygmf7wHERjQP{Es zY~T*K$4b-jBp1>hFA&H9kq_KB{$AA%aZ%*1W&~1pY_8WcX;RcsEgI<8#T3cfkJu3U7zCts*T?T7r9&NgR?l z5DO1Q_53R3FDqVlsd4!{f4N{-w$)JW^?eFj7J4y$@+D! zH^wrXh`c{6e>Q!w$pW>Z@g9Xg!&b4kyoIFzF3{_^=b*-W_N;As<^q}()G`TzF;k8} zBxjswo+>@86TSMfohh~O^haB+M#JK5jHKXf#(xpTTY*A+Ot|QOb)1iU)qO(cZ@hPF zEt;9)$1Z@fsn4kTRF+ZAaq%Yi%Sjw0Yn&m+AmDWGRT;&rr_h;GmGvAg0UZfHAX8G>Z{+Zey{s1UyqP0tLQf;LK6T%yayxC%;;o;{_euX(Zjsn+^3Fy_LB&wLiuz9l!DyDVJFWr5ZIRA% z(wrwA{Xx^0ZiN0ScaCixj|H3`$X4#8?;b2J8^2=}h*wyb0H~N0C zB;#%e>6*;9w!Z%WgzjsZAeACmIemu*4140Ncu@t-?yWR(ZbkrtIT!=_(59Wz?190n zHoCLLzBowMzXLVvi*i-cJAgCOE`@)QuY|v5izYU{BDu#2W`lS8SwGUg;P~8Ni{SRU z(vZhx%xW0$3r2azsO?`C{>>`wqWG45zq>Z-fxB+x@O^RH(!7lA=+~k2oIhnjzczkv zT&Qg(H^(AYAAth7_fii$S4nEVcAQ~zjk1zI5m>jVR!_pdo}1n$$jxhVzA@I9rDv9G#H$ArEt)29<=cvsLd)Y*&9dG@~Icj1YjO<{{Ysc*bGsF zowZ>{%0L(dVukxa0}Gy?&x(*6qM>%2eLepG#-Wsp`c3=k*M{j+ab+vdzk0oGBseWD zbMtZa=~-G`(?xs<0QDFnBbvOEgxsEAC%@4D07~bn9bSg;dM!;`Tb+kHPs$39ZY$Ef z593`!!k#6t@g|Z8xzp#4;w+4f(cq3djEeKSd2!VnsVAqVE3ne8Y~f(VA0Pq19l5VF z7ZoV9)z3!@CZ3G_r|^IL6m#PDh%Lh|i3Fqpl93bj>0Yl7?Z@$b)G+Y+9{&L9k59_J zEB%>2Z66Q(8}MuRKT+`Iz4#M6$#E)=H1EgCPC5*6UsbRC6obM9e4ZA!?b&FK>`D(Q34R@KL`DImqzEvW|MH{{V-zV&z?b%jx~k{LA)G zfAZo#dj9|;qqqIKel|*=w}%swNBXA!01CE$ZSReROAigF1O9n8U&^_I{{RIS@YH!f z@Qqt!bHc47{{X>B{5ukoz8bbT_FwR(r&?d~`hRo(05Ei*zvaY!_5MaTi@)Ha9~e9_ zZ|2`8I#=ji?GkiqVJ|}qhQt{@ps+XFKrda|gRLSFk^sl-cv$^JF>55WyaEjI66@O<(s-F>R=R||uH zq^BqSqNL-tE8t(*8&!`&@s^pW%r_)Dv~7=H-7x(#Uu}+^5zz(a66Ht!@VaOY!*eN#i)Bl0Oefq-A!T zejUB(HHDEr8QKU=TaYuxb5r=r7HvC0ke!Agr;h!IuYNr~XUof5{Em-Yk(1&Uo~Hvo zUq4Y-EakR~;v~t8wk0|I>m$SyMQ`K#3z9;{JiW!bU;)m5Q&#Lg&vWr2d!=rkX9J-J zG@rxr9sTc_mEkMcKecsxNe(4+ZKKpLC;C%7IkbE;)>Hyc=LCKq;ZS&P-qp43P2)el zNMB(3<2gRUtoTYPt$rM8&gXNnV}a{g$!h*ZM{m63^c0E@g%Cyq4BP;`=cgTOSH@Gd z*N1dxmjoF3$F6h#0N1R&A|!8yu}nT?`$%8`%8ZUboloMnoamZ3L<1@YJv#pYF156O zR%ZVIL|*aY!8eQamH_<85YM&+Lv%ml@yEyAZa>F0XU337zADmRpO!ed^}q(Fnh*H9 z9&yRW4l(Q7@T~fLitF>3k%T zf5O7l%!eD{oB{PctDew5ccE*s$O7aj`h3TVJN$|N0D@MLoO~G6t*%>gsU#e8f<0@~ z^b;Jv4K4Tgl>T_f@~<|v#m~Y`N(nymGY&cXqPw3C1()IUaXI^v$@31pEmPm-5qf-% zpT-kMZD*vp;YXG;`PKbycn^*=*=Ojl86RA6Se_{n-01pJleq0(euUM}5kVy0FS0~9 z8IO_Ifkap8RG;W=>9a!r01!-zz{~#tBUC&Yb8as6SjIQ`FM;@)%+isY;!9&V0s43A z)~a|+MHT*|8=a-$mv5=T$sd(f^e3<0Po&PWcwbRL#@9lB6JCAd^r&;eRH4XTt2xu)IJqD${HfKDUIEJ`0Y+l-oKeE;rSfywLbk9!>CuB z765vJKc#ot%)op?uo1F`a+n^xb+0|~G(Jv^;qv67AZ5?v!LGYpy|atr29}N+%nKRd zaf}YNP26=CEJ@Xp;3@+Lg{=cP~D`Iq*7L>fe)J}g1JgXU-vl=mxe+p+nI z^u1<#XsqUz)r4{)5RHudt;bIF<OMe?97aKB3E zp@jBZNae4Jg-^22LDIe#-*};Z)pH~kpSv4SDGW#$> z4B(#FuSFjZEn!`&GH@^k(Vl%xd~iHR{7cnzh1_ z{?!A={{R!blPC7Q&NGj_=}lp!{K9y(*!qgg!8)IYS?+k#6O9i8@`h7Le(a=nqULE z^YjH;z{P!C21rjosKd~9FlnMX-CB`ii`X7)n!sUfCu!h z#R=NiM?0-f_p>@(L*SppO*cr3Ri8?hG?OKFedZmGJ9V!qo*TPYXs3;pl;DC0#dkA& zU--cyB2BGaI;qG6f&uC2SaNvZ$CJLvuJ@C{+=_esDaI0C6GC;M_PPJi`S#nxT8exk zz40B~CQUNtoy++^sN(4lgiWXZr)p%$@v-9H8B(FN6mp=ePiN1dr7vl zzteTe?X6YTSdtfD#!-!)T6Z}edJ6bDaFmte^gg1zlxEXMxy}0>__i+t+4%ne#g|X^ zXeEYAyGKLjTUy2eng0OUd>oKE{cGMd4}yL(_@D6pEmOp^+;~^PfkQzEAWbMx5KVMW z2;Y&ldI4WPc%Sx^_{9~5lj1E}{9S*fNRU`QB#X&_1$UTn=DU^v6Tm8KW8zosGx58| z9u?AK@mZTe<2%n2=sK2ztikqOdq#v!cWg7Y*;Kko3H~UgW#IPc zd9RA}{{Y* GgctTZco3u{|Dg;LYX=VK`uW>y_G@sMkx_^10#_zO+6wZGEumQNGg zt2Uo?5+Ab6S+<*LoBNN^f%~L}73nO(l}6NbIGzrq5^_HN(l2Md({1kP<=^aC@XpbE72_MhskV)#uZlGou0&XkrScsXAY?yvSCO=J$*&#K{{Y~o9wYF# ziR^Tpb4-miyL(uonN_zHb;jmX+~957?OzZ0oA$%;jsvXxi$rp^sl8eHdHY!Y%svU$grO%14JSpKTgQhxN!+w%jN+cO0aV_S>o`hoq(1Yt=Uwj+=y}lv%A4arI zb^)sCmKJMZB6IuJW@cc{$0t06IpY9V%ld)v&x?FTb0mg4TPypSZf))71~}qoXDF)R zV`wA;>s*WCx!9)MY>%6@i0vb{TahSz*d<5b0l6Uij+M|%ntq9F(%5C9ly8Yi`NJMc zx33kat9&@|Wwd4+?K$I-azxSo@(F^B;5y_hVE5qHKcwmm z`8Ssn$kV9%%(2Gn0FZhtWSn}kn$m0;9kRQZ=LGe~YLXc2+AEg`rM}AfIOKjc>|!<0 z@-XK5TcqC&t>I_km9Phi%TAj17#lb<+nCxW$9y+xxoEye z!@FZ3fl?C0q zbQR@Je5%K}hQq4Ta+9)KpQ1nT)xQG8>e(&i#xyw+i(};}&NH6a^~HSwq4LagdK0)&Rh>bb0xcBK!3Uc0X@6{ggT)C~y^%*Me2za1n(`0ZQ$rJYn%d~L zHr{OqsQu-jJRkT4d1vhL`#EVp89XU{u3ect%S+$00J7{*h9z)u+>%e>N=@@}qUh75 z>^;3h>pKtHli-%IaSS&%lG)(??XF-ds!tgVGmpZ(zUxHMJZGRsJX5XZjlo%CnidSK zP~}J?(2D%}_`Uln&ES0|O+&-7%+gvw^Z62yBFd2s&*iZGBwU@RsI2eU_u^KqqIl(g z9?LO0X1bDjaTAdZ#7JaTPfh9wBe}(9*V&RU*}`!4v>wOWUNQZjd@u0~!)UW%KokwGQFsr=a(S+6!5toQd!46^T(kg5k#&Otta3itm26aL4qrCBZR zoppI`O06~>=3g)%_= z4ZPs@Q|q2T)ghw99WM*qM=JY<#%>63x2gRQOd{T~9@Lr^sGez@B0}Ya>^(cAAxUH`n_~*j^ z01iAmCyKmdarSFOWsf0u67F!IDC$jqHh8nc{w??o@dDRY@b%+)(PHYt=z_jt2E>ub zqplbgb@b=Bue85u9}-!7LHHdPjjH${F z@sa8={@9-bkxX$*c*BA6!H!SkT{eaLSo{vwu0@+_Qdzq;6x_s7KkuQDU!K3SSHRB? zd}7vh`)yKbqW;QAWQ0cha?-Pg$v^J#UAM)5*?@Q_OSsiEX=RjIMdv-dz!qqi{bZ3k z@Y?~&Q_eDIQlBq6S{u%W7BxMDn@{jRR4yX5@fLw7)2>6?U%=@d#k&GPkYjQ%<0CwJ z8u)+V>{t4C#g7Bo+1-#(g4h z5d0t3G^;4uS>%>M8jn%)V;#>G2;_*r*8t!ega-CNEq+ll?$Q9i+r$CmuX zW1RI~hh9rK`wmw1x%m~LTBN!??blX;;{2SjKdvj7)fa4|j@kWdxX~WN>>8zspA0Rx(l5n zRGE;hN99mIDzA5->h@OOZJq`Yk_Pd}1okJjZ5q(gb1Rv;6H5H06jA0Mq5f4kUY}q6 zmXa)FwmU!mgHxWo40HbgvQ;)_koblQ40m7s2B(1r`2PUypY@^uH>hrYWd8urO-TR* z$Ip1bT+~RUix9_^L(_==09G|(81u9qG6(*Qrog;L4`CPnglgO?!jtH~`Y_i!k*Y=> zoo=spIV0|ZN9$WQcDaT92b=l34C=b*Yi;qunC zyFc#Pf7mDS%}}>h^H*@rc7Ny>{Rme{Bu8T_ zbI1PFtjn|@N(W&t{)Q{EoQ`UU$+@>oONANC{{W^dF6Pk#NymA6dLXWb>*Vuu*Eb*g zEoD!;e1{$8{{Ycqy6HA^Nq0Q^T2v7+Ut#(Rg2pglkH0_rDXV@VE?^+^1OfR9T^&O~ z7(C(s0QOT}qLrzpdGcQQ0z>lj{{WtU`U$8N18f-o0G@x=wh;%&4^Q3y0O%&O(KF@t z<}CiTN>?UPDFrxRqW=KsRTHiO9>@OxLaR8$YI|XSADq;t&g`!5CGoWLwEqBqKgzAi zEy(3>M2yJ*B)1-#M*C#wM*&Jc26lW_n(fw)vMue3hBD7 z<>dO47B=&FU=9O&n(toY%t5n&M-|5SMrK*HD2e|7myG`aI`MwBR;4M)J6gxKuym@vqb$2I-e`d^Ygy<e=4ZfT)!Z6nwQMU@MXGFW3KZU-Gs~=8=|2oDq0*4; zzPx9g9G#dzIP}g39V@Q!95~Q4g3Z+d_s=!to+s0Mec{iCc2j9r*4HH5l`+p5Rr!x3 z73Y94&2l~`*Zw?12AgXozLhap@&dGfbTSkDo++CF1SL;yo?T&xm8= z)Zl+AkHis87sM#0x0hpwOq^t4zE&9Z#&COAf@(f5_|K_$?@H6JwEa0yq(jVBlK>v4 zAMEt^rMmHV#;cEsGbHwUVze@pjmeX1VBvW6=t%da?XI@y9?H*tr@MG_CeXW-E;L{*@h-*T!Mt zOQHRlr#ITd_nPY1<>?i;rJ$BFL;$FAYgVm9ZqW(#(q2a;ivf5OnW~ITg=MHq>0H< zo(4!90aCFsR!_{gg_FBpN7S}>9y9V)_A!wB%jh{H@#$IK5@;U#QAvgyWV=cF_55qc zJP+ePik>6*sU5Df;pEdH4Iq+VG`j9UPC&;YyH?fA{{Rv67@GuSSC9kK%O}$(IsI#n@m1nK!z+nG^|(v{*YA!ioY617 zEU$&+mhVKhLw4we4CitlNF?JQTFCLe-^5)H!dAL_=`hW0e{+K*Q+&~E`MC@^&M{T( z)0UmgT?s}y_AP5F*B%|wp`J!;w2lm&KxZT=$7Sd}tE<*Zj~MClIOt+koXWdz~R-Sp2`3Or=O1414!Aq$*n4 zcOq2vZvBrzDUXUWxa)@AeSNDRO0>Oi66$i>-58=k?IdIZB~l0j+Xn}ZxU4DsN#fgI ziBoLSJjTOtB~ZNwezff)#C|Kfw$(LTe-D+DX$Ci$cNHg`9-X+&4yKPz!&LnGvD!Qn zCxvxYMIfsK_2;cf2G57kMxcNv-l!Cp6)e$X7}R0pW(E#7S~qVG_M?t+v9lNMbA!h2(M#; zEFm)*M}#DBbQ%> z6dTonD~{tCudIJ*dt1Ao8sAH)s;$D@+anat)BBa_o_ZSOZ~Q!vc-KjW02GuYU~$UP zd#i(5o+%H5)wL_QLJXi&ip5_HXG)fRncHxwjCQY~E%dej0ED|yw3YVp8R_?qMhELr zX<8(5>9fZu82exVXRb-5E2VTeB;A?jcm4=y@3iRSP<+9Xdt(`?Z9D@U+O6azGv%)3 zudM$7;S5WSXHJqf5umsFo>YH2%(Kw+`+a)u-ew+emBNmh^!&M|)jc@Bd9kjBa zMa~c$FDLrZ%og%KOSAZVWz}vijC{rk#yP+>pBKaNE{Sn_vj!fo$^7dwPYWs0CA)}nhX%fgu(8vn*L5{AD(pjn-MJaZ(y%_w z81QZAP`d=c=N#u4AO5Ob()@>Luf*|tp9~~+_Ohz;DNsdN{{VzaHP_b7#|)(7y?V~2 zX#vsn$qajU6~XRt>snWud}qft!9Z-rGJWywOWv_w?a%+w`Om|ehLPfLhWA!_lp^6Y zIeyb4O~R?h#ZW(uoxW5bQhHa+H_>a?5r4u)Zc<5%>kJVmSoh_EuWks%cehP({{RR^ zqjLn}82-_36Dpn>OgnNtamX}$DrfNzi}cGg8W^l@{{XbE6pxi+vrje4dtq^3Cqgz) zl=rc6yzKX|&xkh{o*3~Gcq;y6mGp?Cw{W8YWO3%p*SL|$C)8I3apD`x8;>tdeD4^2 z-0mH}FX>t`zx*cJ_1BAhR}(PQCzj%A8Mb7*Z*EVq;6*4#}u31=cRZ(-%?X0!xp$kA1LZmxyO3+KkWT7JF9!WZQ3Q?S~dgZ35*

3uu2$PtX4E#QB38_Du72-7E^Q>7FK&MAr4$?$d(v z23!sp9A_ims(6+a8cS*RaUzCgSChK!$;aYx&*5K52`ebubLSjXuPc*SoBKp*Czo}l z^nPc{pW!?Ys5QH7tzFMsYQGOPD~ks5ndXI!I2=}=DaIxM?KPK}RR<1FqkuVs@*j~+|H z%Ff=nBlIS;{1@R3D@D~UwYzOdvf9j^as#)Wq?H5T7^#fZV`*-6Q-i5J7KM#R!*3k= zFN!=%3#2#JFhv|>b0pTl#{O#c3cFOE=QZe`19aVbPl$R(zpAW~MB1d{DV*bUk8a!W zy-MIOBZ0uFEiWI%+U}yBGq-tebYbR694t1>9z3EG+04W$>)G zg^$@%XxUV3NSLIURbJRkXEn7cOWMUT;uL+9q*a znfdJ`VV_<))_7}sZA4sLkO<2LKg;QkMRb~ViCfFNn0XIpE)QZ(+V!Tc&k~yIY|8fb z{t32OiQGuz{i1LMH{lbf{4e|Bqd)N~ldrFvA0mQ$&k0$yY6!%(*TQv4f@$H&cD zL-K*8a64eipW#^5(wvTpO7n>??U&-F(|i=#O}h~DKwyd86ex%ojEoOZ!A9o8Ty0h)6ZDQ1I9>U>wCBigr5BozOrG75{(i%J# ze-Zr22H&+=DmfiYmh!!`AE^qp`#E7V`N)sJ82n9sP5#w(U)moKmI#15QsuXQcXjFK z@Y-oqw=Kg1e{PcMnc949@f&!@;MasaSu19HwX#`>>ST`AXq^2?Q(n{i4c+Pbcf)OI zCZ0IAYD#e_N$+ib@^CxS+>;fb<>1i8OCnP?EOvsqy8y)Ps1J(Y~4X|dSbXscv02e zo@k6?I424>Zen{1{PF#iJUe@;d}pw|wFKMfk;`{*ISo#itbQGQU zWX5#q!PBJgec9H-x;8g4@LL0(hQ3z)tGp$s__Ihh_8^%gf;p{#?>(cl82_ImEwIg>AIrtLfe$D42}m3r?C~BI~?^cnw)n>z3BaT1j0Q-`#jIp0Iwe{IhY&3Exk+dFO+kf#T+ za?kv>*XakrFApb$J`wn9MMVnH>99!n{`|}4x%^qpepi0j`{ww+uS>L$B8Y?NJe3vu z4dMO2@Q-PNKe{Zfw*5Sm#cNG_(q|?wN)%$dAD%z9o`A7gCZ`&O`#t*wIQ|=$Ly`Xg zeMg$(bh#T={f{2mj^U@vcWj=!Qtk}iMB4NCnb`ksON4O@iqM~sr(l7b5%@0`h+ z`V01%@jZuyyc%Y{b@Lhvlt|CscA6s+pdEQFliL8-Mf1^DLnb?6phAhQeK?^^4lZpSRWbgqSHJ!EaD`}zHiIfN0dR& zrx?e%uR8dV;;m1?pAKj7W}83RE;ReuW{zIG?Zz?gGCvymyW!`LJa_R=Qt=OoyjgT^ zBV8^`90f(rcHj>D8hNz6*9#MqVL6x9FR}T5Xdz8v;uyJ9asfOZ4R%oBz}-{mx~`{j zcQWbmTir`06s)m=%ot_4_VukeF03B!Q?qDIwZV+}2%uqQ-lT)Oox5^9Yo`%;y$mQg z!FrKJ31gBg)x066E$4Jj#zz}5XDN$@9&yg?R<%=QmCb%IEa5y%Ko z5PPv^AB970;hz-v9`{+X)m6@!I{8pc!--NtRA7(d#_z;eiB^2gMY}a;Z=XZir5h&F zx_4iPQ{)J-w4Y`_rCX3Mnp6+N{sByDXvM^f4nhWCp!M6F57M+FvN9hq5>NjCTOZ24 zu2mA;`Do#!_9KV|bqA(UpZnsh+Nf_VA6S2_Sxq=_OA-G7))=h|T_s2ua(ZL_1Jbab zA_*N4z*KKSD`j1=kM?2z0MN}y0t8d+IsX8*rnTYH;rT#w^5B2pCnB%Mqr?~H&H(;L zKhC)2ih_EbaLX#l^IIvSOPQm8;$x4%*L7e+TDb$Y!TlDst^60HJBiAio=y#Pc3vFQ z;Z2I9j5a|(-uvI4D=PVoC$-Ls86|G$$!HfXkMB#5`}QjJtUtXDdhP@N03lar4w+`m zvPW+bL)n?KNf>UPqPnXc8pOE8ln0^ZC?#TH=*V5Dy)f){$Kuq zR@!9{D09K`f%HI_$-T@NI@xr!;AmgP#3kEu23cK-kX{vh8$7PDfO?H$s2sC>cqWE+R`r}&4% zeipIQX1o5&L}g6>0Iranf$v{v_#Waf_(ODne%^3|EbuXH&ycg=M8b|mGKTI6^N%oaY;#~xBL^c8Ia-V(Un-Y zbdQaV)N%uc7}|gIJl1vWtBHU-VqdQ=E9%?-00wwQ!$*ed*FlczUo8uww$t}UPd$0B zJfFj!32SqAb7d`~leM9hPZ=2`GUO4O`idE~DXwTm{uleMcy%&bv37D_iQ#ud$>$#b z0O=p76-HRj`8$8D{{Ycqy;oX;!M5HY(DeTREsdT1+d*{D=grvI1gJg1ImdpL)p*N5 z_yeHopV?YoxpjIagUtItO{%gIRikAiJBR?+t4|d9Vz*qnFM`u(7jI#z>IkA28_F(m)MN5FuXy+cJIR{5T2n;^8i32C@_K}a> zXZ5c8<1UfmI|s6h!q?A!;ZK z01U2T)3v+k=MB2%)>tFsId=P_+cnHhZ*vQnrV6D_FgeY7cZOlL)2{DqrI!9jjQLb)MK|2X5gu}TRVjduF*!eQgZWk2*`pvv zLj&(rH3d;-`&%a!*96;FIj1Gi`cuN*8`OM5r9*vYsIZU}yPS3zG>s}kuz8ueT zHH)(>ms@2C8vg)zw;B8^(>@Nol6Wo>GIqZsx7}Lvua7I{YY2mqu*K8<2VXUXa+WH1 zc|Ujl3G_IrDA0{)uXy+W0NL9^)vkP5r|Wt&d#$YXYY8T1BPu3Y0&sfr4t*=_+m938 z-1zoAHp)c>ZEjr=$0`(MSbK6n0=yIUM6gS*4D0gAlF&<|$e?k^c?b38zMh-G7LfSo zPw~HpK`^9OHn%w#z-0Lj8=hN?dsWk;DPkcsv`kfN!BCte^|9|728%a~d_#4oT;53? zzLyQGs|p{HjEyGk!@fd~%Dtw42x)hQIc`%vPBvtoJ*&rl6HXt;zA8s?i0$;{0CX7> z9M?d)PM?3PUOugTJY}vJMynxJ+y4OTu8e2#nmF)k^kUCOo54CG-G6C_K)O+clO&ZL zu~nbJ+C*2)sia@&4hS-mayb6A!uXzTPs7^nj-_QJk87veAZW`Iy?2!)`kWf-Zmd(p zI@SHFTu7GlTfpe?wlH!Vyw8LLC195WqR)dlQeKqf3X&_?@dxgqZ=1fPdO2<`wi* zqx+=)0J?nLSNqn#ylVJjYYF^8Ie@pBG!rGrQ-QS~_h1g+<5x7#h_{hx_o4u@&1r8O zjH(G`%z;Xerbj-Y*PZxc7Pay9&<&X-^VN`&I%7RLUfx;D6{=dxBvUeM51E1t9_I_qeHpAQ zZQ(m9nMO+zO=D^HHufI}dtOvHdFEojAMrgK@MKF>jCS zh0aIkS(-a3lT?hh8IytSo@q{!QL-Fn+^+n}!xQ*c;$eVeagIL<}>|m3SNif47^th@d8;-!`MV)EG`Gvw<5Nu1f}yat1HLka~jNnt@QPeqVNgt z&q}+h{_Dopj+_Pwocd#r*0A-W-`QGBtUmIC$JecIYSEPO<&l#(`E#Cwk4or<%h8;& zdcRatYk&B!t{n5j6~}JIrts{swVt672LcoS0HG0z3WMc!G*{{XZ+8!8eBSyjOI8OP;X(!rk!T1fcw45tM299CwT=0o5s zr-AU|V1Epr{)Vq_68JXQ$bS2_7x49~YhRf$dVG!x>|wq=X?G3t2hgRDk5&vv?X)% z&-R|SMe)`C?n_+Sw;%PwG5sqOSA{>}U}!vi#Z))qy(_H!rxH`*o4ICQw^oBaGCY*3 zej{Xh((} zMi}(2^G~+V#VtZTzc$V@?T%{`K+EWwjlw457NHqnI+3{kl-~FB4H~zp+iM;Hxxd!* zNc9W3BbA^EUfh)VQ9=HFYpT(FH)TJHbqM8*zn1_|Tdz(|eQVOSYkxn*S_HBWFLXKD zIsjuF3U+~FPl|Pr%0XC_N4WxGr=5Z!WE&0$F9txa!+U13ygG z{{V>mIc=*qhhn*1$(0};hk@3*3rhmO3?>nSxuwA#pEvn6+F#nDY91X~6+(<-BfcvA znteNvrq|$krj_BFOK%+C#cG*Yl~@9J4bCdok!8QZm)HY$oOAiteWlt-C&X=8ur`ED zV0%^tj87kfFNWNOow85++||YjJ1-(-E35jSKK{@aFs7ZPMyhfbC-9EEms&_~JVB#J zWZPqCqg5_2M*wsASG)eu@fFgvXfl(_(3SM}HNx(fKMwVS8q0CvO-9|qlvxxjD8>dq!i#={xB8X!dr&+xq)EspZ_W7C-zih#6{tW} z$_(UWbn8-TW@z*sCOOk=XjGEJuO_+#v=aP8w7VpfWa_;-bf%-H-X|@7TU{?L*yq^dD8s6x>PnqK15I~Q9fM@JB4Te~o(pk7J zJ1+*hPubjfmsjwe+&&u8n_SiO#S>ZEkiJ?;y9p!iz-5VvYb>a(+ z2KM6a?Y!A!VjR03PI);w>0dX8r1@G)sqA9v$DK>MK26lG^&Lg6*^H7jhXgVCSFiwd z=~AYfG-^KExme%@9nO1K)R2D7Umav+d(R7AF5Ec8c)|SrYXepI5Anh)xbBCAZ_kuY z(qbnWC(^pFEv$KxT}~@b@tf(%7MuYw6~P>W4@3EN6?X5(62pIQVG#sINEpB^laZgo zw=RAQ{9|TTm%{hq+YCy=asL48t}|8mJMk}0wtaVA(66myibMukA!Sjx-~w@6?+q8M zk+-&*R!r??@n3~*huUu0;kjH!#Xj-uay_bV8^fhd;jyUc&Tb=8xghen>y!R^*Mw?v zM;+8|fHeMS5@VgixBmcMyDcVWwbJin2*Tb~+Tpnz^v}I=OA4UlII`9vQ;ee{%cGDW zd-zzXicPDYnK?Q9F<266+KIbMcuP443yybW_pf4)N71f+9%?r;0J24S7Srf!-4g#3h|5*iuFA#6s0a{wsrD&en_GT6sF6B*n#U6>Qj<2IuU06p`&Q_Ssp$s!Q#_G z@hSc+3^IKga;Co}{7a(vkKm8Q2s~AwGskKsGuT{_l>nSH5_^G_V0w;gz;gRX(&23= z%MT~MsQsQtX@_&_nLi}>^96E=@4Oa3u<4&{@KYYx5$=yfMr3!t< zE73eh`)GKRThM0EG<_Z`Tgg*n&SWmDo~*0>Ju89u6Y!^1_^abvX)iankz;f(H5-P> z5)@$K5Z}boxXb!2Ci$%sriCA?^H!0Hn4ud0jJhSabgW#~+U(-xJ zyzv7T%YSJ?xcWibsp}?X7yik2-}OGvmO?&KFe@JZ=&hR!0;9OCaJVM@)|t)@=0+q6Nkxw*}9{x$fg;E#n`I_h38y7ElLgb^s+ zETw)@Nz^E??hi z{{R!Dvb4yG_eH;sa5)=eMUhGRFu?lPE91FU{xV#j;{M%S4#Wu%XYj>+H~TF7Ho4P$ zF|T}C)+6$g=E3Z=;KK!@W(_ph^kNlP)B|59c*gSHJr7s?vvhll ze;mEp82fFjulx!L84i7ZQoo&kn0y=8?fhHtr^6cks|ObvZMu>_zY++Xehj9*Y5lPN z9?jy7K21wZkIcKXcD#ibtgC>t#J}xfRlx6qUmyGq{iu9R@QXu}!m-;fqo+vD@W$*> zp?A*hr?4lI4@1bKnLSp}TW1({n&tlh*@-~5jlVM~ z9>TD1;gd%FjkMz+AnF3*_Xqp88iE8rQmbAYrN4`QH+)SRW|}tYI@lJ+$^^%2Y(7>e z(NS`8dYtz)_V4X$qiH@I_+1}`w15)Q!rM->h-Z+AZ~*-F#81O9FVe#j+LySFMqQhrg+ zbM>#!uZFf4GW=-xf#qDVSneZdAcpfmUWEF6EANY!7hBN*bt4~`$6EMb;T4oRZ^l1} zx^w_6QQRO!^iZ4+pst)Na;fq>{7#hZ=6Ns2JvFsIgm)Th$L9H$aw$-Hs3Sj)GhS)n zZx2V|eK%FHOBpR;pG7XE^M)#foD-GkI~$m<}D=f_-_fHoLG(n=kDPCuS(BWLD&i z@JRLt`PBXgzl%)qu92x+ACe2$By9RDicjfYyr@P{a(kX|dFnsax|bm&1GmfoZ>X=Pbl)9#i{mH4CS4xUUsKa>)69f6)iJqdQknH;BL}8E z>&3J!J}a+`9xL!e#uasYYx`)>^b(?(;lTCtBV2uJTlQ7)ANEI!?sO}L0vq_FEUnPA zGAm&I1lNt3!arAdh{p1Tq`f-+r=^$Fm$p=8EhTjQPYpJaK{Lg19I;HUR}47Z3CPcE z8oY>zGPUV{6?ENaMEI}b4-XR%Pqwtm8v}fDHsmXxX0J7W+`iccGwb~;t;=m#xEtViLsqfKkpbQAf2O=-!=6Q!=Kro;m?WmSlh=Bd3${#f>zJv zNOxl(xA8Lft`Fkhz^Q%_cs}pMzYg^oZ?wCBBbYG6*6Lf0`2GX^?^?#BAta#(X?g4s z#Lf;=YVkEZ8}J*)9xAh0^f|Qqi4Tck2B0LUx&*C(y`b5QV>uRevXBBjhY+!XE~ zFvuYH$TjnCg8WaZ_)AuUUDIwJDJ|V!^|Gweo+3Q9w7)~=h~|zPZ=bQvc9vRa zh@cTP+I7(LQ+gjI{$(SE7#$6HE~BbMns8z;%$)miU%LJRxk>y9pj@0WI%S{-ul%t} z;KxhYK}u1*+3C*~;VV;Te(j24NMbI@`sJL_ACF74sJj%Yu+!zjR> zht~$bX0CL*4PrPGP>4#9Op^s55X_mzM{$#1kN*G}_b2Tc;yc!m;9km#yN=aWQ~(9& z2jN_}Swga$;;hm&rH-jNs&Y!q;XF?Ix@osIK6#!nyK^dndU1vwYqPcesJSGscD`Ikzr*?Ap!Be4n%dYB9i48g{RE;o9$)70S4G1YKS+F_+`{ZB!k_M`Z8 z5<7_@ya_6t0DznWjz?~l!u(G7>)?MIcnYf^=rbzbrFkBKpLBH=k* zKO^)~dxRE|E;0MHA6^A{+v-;jJ<3clu)fvz1a+^DJV&SeLxN*^bpb0)x%NRTU~S}u z?Sbu7H7y^;ns0{2wW{hZ9MX_d+sr0ShdE~FkD=t(nL~vs$Npa@eIkKv1t8hmEI(P6r4Rdr$J#&LiE1E*^Cw)hshREa(Qs`pYL$j{6@JJ-f~ z)$XgLYctPk(^|8$72Ha`!g$I0R{sEmZT0UFi;YKD)b1_pZ4k4*_9fVKjd{l7UY08Z zR!L1(<%&sK*F20qE*EihuI}FFrTlW!;jx=Zv9nOkvQd;!3lK-ATvv?f+GMt}KB;#O z<+mACVZm(i`B86qd#QMaIJCK?C3l2r$#R1SC-SdH@GZ2uZ;Ui#)Z>=!2bm_CCi#hl zzVX}Y7cI}FcEX#((NwQ{BbD;vEA!gdXQlqn{{RDgSMl3W)UK@Njs&z&cTLc{1F;wK zu2aR{4)MRi&l1b1Uun`q_68zGar?F;kUft)*W6zN?ri)m;hX(u;mx_cBIapY4f`3Q z-gaZ?J6Df>)jm7%SB$hhC&RZoG?uqI*4ZLoG(RRnp$0mVSMsh3Scz4r;@7+S9{qf- zl^i#=yXH#iuB`YQQ`L2SMpLLTap#g-1AOK>b`x{b` zjMkWql{iq#)C1oK^R6xpKqjYcdw2}13#r3^K>+6jcdu%c<0#$>L*;71)8(7gvuCDi z8iJ3qM$&uZjQwb`(J!wxWYXPAyEn`aVch;z>e|=DZw_19d0GmVcIWPFRnI2_+}E3@ ziUhY`ZJTmSg1eC8gILCOq?>WKW1_7p6x!vL`=46)0`dzBd;J?=g@7#@4#8u`>(;(* z@nz)WLDOfI*_umq%M;I6tJ-hGC$hX3(QlQ4gl*XAjCSu;d|e97;e9Se=Mdm~ZD+4L z4Tp4Ue)H`=(C)8^jcRX`qCZ8yWls>;X&w^sB)4ZIu8_(AB$6INM;-7DeubnuYy|%vae!Dy%75h$w5G*;*oZyefzf-l%Iyn3@WhTw8S~m0t zEOGp~u8bsYb>?#8o!XM@avlJ>xVHF%;|-*MVbc^6I0T7?e+u;v_)N5IGUnpnT!q=; zxN+v~%9I@LA6}K?_Ff_I{{V)3Z{iWI-o;{XVX!dy&9!7GCf&6A5;OIvHGhd84KA8p zK21*9Wn<;+X+Y$9gZfvGjptRRC?nUvs5&u>+4P!tm%`fQ_Hyq{MxANgrY8n(R$`soO~0iExCF0Uda*ZqLS=WZG5D#7+Cl zX`h3Pv0QWqwkzbTABa{`NxS<(1w**8^V1_9`KDW5Xu6^+$*o#IfR)djp!3-C-lv|T z*%~Tzw`}^e#a=VhuY5W+1}a$s$=Klk0F84xhmSPfF3k-T2-w(2}Q!EHrE>z*U-JkQ;s$0(@{AIr|ljZ*8ocdw*=hFuji{t4m_5T1Kcym>- zjf_%R$0}ndDZCZncdbaRFMr``YFE;*Xo-mN!9Ouk$6Vx`*VfTrx?YFIS9hx?=5{_4 z((K<-y732_myTPd+y~y;pfA%LpL+T(_ISKs;cpJy&c-{td333faq|MrvP_RgQht^5 zcZBb*8FdID`-wg1$M<%wNd8!_XYl3CwvA(_YLmup)h+bTl~{%x&S}#0HZpFB!7IK z2d~}zYNUAo0E7!o2k#BT@g|Df{K}^P03!bYibF}GX?uGh$^QU=*0t;H@m-q*?3q3J z6_Kv_pV>NK&PvD7cfhYH_{IA}d@1-huG?LB%TXU`MN{@mf8Ne;Iu#v18qF))=2L55 zk?R%_PTvq4$jCrtX%2gA!20rQJ4mzhuk{HN(a=J{t-L!qpXXc$m8^{82FuiEr*A+nAbZD#1ZN`3L@-qw;a;|(_}kXd?q;8#Rrx6I{~uYXioiMM$BU{AWTVEupk)r+9uNvJZo!GYIr zq0jQI*koq-gdty-{b0v_d9O6S@wbJ19jM+#saz_{BuyHkoy-Y6{V`Zqtr~IWo9K?5 zJ|1%H7zGsAOysik9hJF2Oz-0L0rs+@pji%a} z?QY7nvKINiQ~WsKXF2A*@X4mn;7BIZB=e#Y5^=#Bx#!-wXl693)b??Dwszt&s?;eu zlUgJ}`@i^4^m(PrFZO(dj>L@De`~gNQpi>|0LRZyZ2FEXkhO_q@$QVrAx@rfKA_j5 zeU3X-*ch18?s@`!E3T(QhM!a5Pugn>u4)m#BwgAcz`(Ve;t{jrH--0n#KxJ&PrF*5 zw9vL1z56SfB>PRK;m{A`M*TjSu4lsGMV_!#aDTKRIUQ6N zJt~^hPa;$A=6zAAHHq;jhoH9kl_O*zax$s`8TO}Wu@>=0xPItG89#?wuQ*G6W5aSr zLWYcz0Ou^AmdClRjTuk;B>MOVq9`NO?KJG{3F>eb9$S1VmDH2AVh_L1T~4P94O2ke z2^%tV>;8GHdvK@WRH7lZMA$!F{MTQqN4r+g26@?%e*v1>->H@V07DN+k-y<%>aguO zD7Zi4^{ksn2=Gn%x5`A#!S&tK^RB~6wIkv#qUhMlCV$V;u_IQO!MEy%=NAMM?Z34& zwO=7UpUm)o+6vn`7K)5FZ&TNR2#bSWA*#w(#F{PSF*XD!L`2|&f#28D>0b5wMfvNZ z=xPqop~m1i{{U0cyvtp+vWLXl1-y~|@S;2Oo(LYE`89)&>T7?{;jHxQqvH$Xcbj)e z-HM)08=(9JH%)@f$=NT>Xj%&F7&bV(J>K9R|X#UQ{i*v~UFF#tq(WZ*a z!dJg*4Cp51hZs_sAb(0ZLjM4%&EIL4t)S_$-DOdmYWL$fKT7KEktFf;jjgHLsH>c3 z10BB+Rkfoex*nMFJ0-k9T0CPU7Cm#`wN^_n_)nk{vj%nw%k&u;t5Gv@KmXI4_9>IV zUK-W>L#KGSz>gJ`k&H=}$a3sT?Hz{DPpy7}T=@IJb~flVYl~sGs<3bX=N-7_zdwEm z_*UED$BOk0Wv{F?cGWFnu`ma~M2Lg9V3Ko=mFwrnny!~LLsOehNh4)qE+^aODSh8M zo}(Q-E9a@n!U`QvR<)-$HL>4(UijtWKM&h!r@#?uR}x%1t;gGEct9g=z?sJ4er^Y) zdOySe03GRGAn<*Lt>by@Y&A)cnc$A(GAZ6d;FHjdAI82t_>Xs_{8hg2{JtT(($RD+ zMX%$IDc5AqI8}V~TxPq`7ldzNYe=j#dxmL7)LW63T#u9y^y0USm)dXcIi(kWcHepR z{{Z%%faX;4^$Sur4F3S65B@5)ueEOrYq~Ywi*KmeGtU#oh2%$7W>OW1B=jdW^B49{ z!&^NrO-EGH62>^>-0aeTfr-HF->|H00Y7K?E^g(~SS`+?p>yY<&fT~xk$^_gPujt) z82y~DX(RG4#UBVfMdDA0-Xgy6UY4n+*4Td5w(&=UH4OvAqe+p3 zkxssSyo=IUT%C=M+kolXziuV)KZKJ_yJ_UNDI8K29&+a;3GCjr`LFToPL%lfNL?il zlW(JG${hya7^duGan#_7&)Zo(hS0*NG?u3k@Wb|W()?qmP2#^0U$uq1TnJ%?DEF}n zGVIyl0nmHbWv_nBI!1>yF=-mWn3g_&n4<|8jpg1p^}t*a>t9#=E3~|i;kBHYb&^@` zB{)%nql3q}99OM;Jn-(R;?EcA5JLjNYYDcB-R3}8y~_b3DCl-XvUT;Mm1)(Qfa~Gu z)4Y$xNp!h%iQmLF^T#qpD@PL$M)C$h!R$vq)!u2E&GJCeT}WDchYct{b&N~$XWV4t z>tCsV7W`x24-R0VuoM|Xvy0CQ;rD=PY1PUODwBNs*>2!d5tNr zWgX8?eIHrB(&q7AfeDt*%3t(}Bsdsj$oC7!(~95HBD&>5@-sf%s^)~?q%CiD7l^;IezwO5r?EWVBd8GKh+EsOqKRX6k-9yCvi7I*@ zabKUBcf+5G9}c`^wmK%EYHeJVLeX+|9m>Za#BC=InEP;g{_p<)uU}W_ zdR~>`tsV^vL$^pRt=DR#Y7`PX;CDUEet&6S9lvSKTGs0N-aQ}-Ne<}DO@;$K^Z0%g zKkXI!OIhf!Yk%4LJI3tsvTSfh2;}qcTYXNU%<+(W$+PJn9(*Ob@vgafKA{Dz?VR$7 zk~zW3I6#>MbR=+V(7qRZJX|LL$wR7Rs)AW>)A|$t#*gXg5USl7`Z`!}b z4|Aih`@^>&lgDxCQ7kO>MwIbX`nw;f@#!}AP8vgvtVrjPj-s*k-wtT{x(hjp zS&@#%Rsoaff0(bu?RUhV8uW=*Sh#kYXSk9AizJ-3&RBqYk;m&^ihM8eviHIe_|o3x zLfnGe1d?t>Uwr)G#q)QCvQXUZxH^^x=yWiCESofEbhNN$@{4Z>CQOG z^``g>_H*#nzP%o=uG>L#6bC+2Kb^UhV;CF^bv5zQcrWATiJ)ozHMP~$G|Qc=(l*lE zXRkOMk9x_A!hadOIpb@6C&HSVtT)0(1epL2@|NRwIW759SSpsi$#}|Fw zue>LBq-g2rZ;kH z!+b6AllG?6yg@&N$kD;Hw`cPVC-`uuzfsn!YW_X_syuz+O?KVyEVPx-hnVKpHb$9t z6SsF^kyAC$>JXw zSV1H2^W|vWgGl2TBo04>X1pKauf)&V=3j?5`q$d@%b)DA911QWEh7Mcl3Um28PBD6 zo*ej-`&M{^;f24BwBe)qvr8(Qc7cWhZd1;G+5Kxrg`0Y_HHd^?G+Fk(x2D;6mecGv z%0bC!*l@_$;eoH0yifZi=pG}~q|~0?29jb6O%oUx=esKKPJJte*1UWBSXp>qP4PT0 zqTYM847+jDap!Gue;526ta$$IwAHqP?#1DaWr|nW za~qaZp1B8*Yvhj;e$aokjjx9^-BQ90D7>ke{{VF4hR@+9n8cguq`FW9|U`Fnz0M|if z@!R%`J~NNPvqz+?OoaKuCnS~Rah|5M`mIZC=0n8OZth3fo-y$pnjVL!+}jT-cx~O| zc2dfWN6J}8Bxjs=#e8S*hf!P4i(Wdoo=-95F*$5)-I&zw$84T)+KZove;mANs_MQE zzPqrp#5`QV5#RG4_KpSz^Qs>NbPJyjYknZV*RECWZi0tmHmfqP@Q+|RRpDqgEqI_g&1d@n7R{CwKMERqJuS9F47oOdIESDHn& z?!Lx3PsM4j=j5fgfOSm{=Ic|E6808v6ii$Zx;u=Z{Xoy5HRB#4(hi5N&1DJ9YQf@f zRBxG2wN9+i9#J{n%hYYl!~PUBMXmW2<;eH-Eik0@(%Erj#nV-6Jr z>VF;Cu2%jw_+9a{P}5YMnsxoe10CZm%DDQe73Eh_K)Q9bkb)mB9Qu$!AEB>L_~Uk$ z{xr1lJ-co?uA5i$3R zOq%AfSI*iaLDOt$_gCK)*=Rpu@t&Ce9-cs#aDw)Xc--C7KkalL_2vF3(ngP~Mp+s) zxrRH13{ZX=44AM(b;R&0#0l4h9b6?NEFy{{V!7 z=f`%CX%^<N%2B6#rhdtMCmPn5rNwDHY9aZzAQ|Jb z`i`8M>AouXM&C%#Z#8Q;Ma8JIm1cuy%Pd<9GLhe&2XV$L$bJ@h_S;yuwb!hzrM8Og zN=pO2W>*YD0DV;OGtN5J=f;2R{WIa`i0!l~bqzyUirP8g4q8mMcJ0FS*}o)Xk~7-A za&>1q>KC@B)>Fa4mKs$pb!L7VEcc3cMUbTQ9-fu;Z-st1YF-HVZ)@T243TTA7hq@E zu*QygB>w;rJOEEjn)!K>eLi-E6*Wx8&+P%%nOR)$%A5F8!*lIl4{Lrs z@CCkrbUzDeR}xG>{{Tt4nEb8=11xLD9kW#Q&k=a8-@|6+QuhgCunj!z*)xtw zA-K1l(ny4O3INVAkLO;iW#JEl{{RrI?>s@J>zakMR#AYl+&1|lkmQ0%IbrxA8 z6hWKjciNzUIx=IgeAaD;fP4qx>&uutcc{;Mb8g;NASYp#HpGA)rBvi@=twxPI+j?~ zSBt4qN!{6R_#UJx)vwEg!^Jggza!L_Lh!G{-Fj;@v$^pE@LS6;wVMqBz#=Rdn9ocC zNe2TJ^2fya{LMgZbLPt=uIQkIMJ{$C=aK;amF}J=_`dMzw|WU8i+iQ0kSBoqLrDW2w;Czxs3lhdR{`Wsl)$QS>?9!<dJv|Vq*w)Qc};v49|u)BZ19zOC$cmS}@Po;5JdUmJcUlKLG zhim3sMuu5qPKqP@$MEl64y)il3eT!7=fnLLL~sJdfG{zSm;vct zWlVG`S6Em_NNoBxw6UcuB&otx0@H^7d$DH_U;zx`;DKwrP((etbU3{he z5dG|ZM+U3O zb(EUUsc)sgLcPR`5|hvtILY>}X4WRWmrOPiD@UBVt}(o0A70hr4A**1`cDIGk~R*G zJx3sl*9{I>xW_{pubQVk^&NX{6{X$9yRd&H*)lpD9Ath~QdYHSq7bVrfFCfE!8tg` zrx^Tepwe_$wX1uZ`DEH*JDi*W&pG$W%~g)Z+B;cpE@N@#e6SFB+z8#DQMZq+bn~m& zhZ|}dEu{BTq(w-L*c|&WTK1m}*=U|3(oU7G+)ZyKmR1#tKQqh+a~z-H#z3zwjty$U z+7$Vsje&Ia!;$>)UA3%Q_k^r2{{XZi`!JbNpK-*i>GWa`L(Os5kFOpD zFYMECWu)l$+C`H|`~7o7jg`jIHc2TxI|E;_o+Z{TH7^8NY4VUR?U@Kpg`*r~*WoAZ zdzJUZ^Qck0EV>r^$TdFc*hLN2?yIX<}>(5z}okX-&k!b4cc|m zTFAyQce2EeTc=>yuTi_yB$~p*OGr*q+)mGrm*#9J`kWK^RyC!(HnHk|H_bkz@5uB> z$3K;0DrvQKz0IR0lXvWMdQZZShkA#LzqeCJw=v&FWmR~T5FB?>I5_Q8yfg44;hnAi zqiC8Cjy6>t3gpX&(cA7)zsT77L`??u-RFjBr87!LC;4;K#$)_;Yd_ zN`(EEUE6{TfsC;qg?$%mJQ5vF)Hc_UWP61pKb1$J>Ew7nP($+uY~vqvZN@$NezmHn z7T$(j?%Vf1F!<^4FTvLz3v`(@>j)xvER@Z__|LL-+V;SW!4!YyKC8_ zU88a;h6;d==Vk%-ttiu0x0w}Y_wq)+!~GT(_=|7$WI(ohF?IB1-;50OBDgzEF81rk z+U40BqmFw}&N_fOC-Bco_s@mUM;5oOYTAI>bp0pGDh5X~5OMX}`qdu?X}V?Kf_!PI zv`lWlwBSPD#;Or;0s50#LO$a3GnTUXo>Ac)E@)H4day&}eWu|N{{V%VhH;;M^}D5O zt!?0lCV|<0&mECx$4n9b0HBf5y8Ro%{{Y$l00o~>X-f;;MtNOF-2q961L?}-*DnMY zwx0q7g+zH|`J0@BkVbpp43DjDzSqdcOI7nb4O7J0j3Rt-LeH zcQ`NnCvi9jwkzP@5cqpt@P?@_jp8d;wYY`0vbgW{?^;l;P5Y60mx;mFf>kFS8SkI7 zPsIs-6#Qb)ymP1w+gi?Ix!csiI5Elj2Hp5q^hu;DMRTb6ZIEMPr?CX^Yx!Q&4aMB4 zWn>FYGpuo->deOq2jgGVpMs;g{>Bh$3RdMTAxV>|5(EMH?}i4Zyl<*9px(@nO(stb zUqr`~ApC2{z9-u_@aCC$I3FbPXWQk+ABnGDu(wFG8`j7Cv`{@buP^whs-6k7xR{kO z+#lB&ACF4O#i@MF9FvRmIsJC#Mey#B)~A(-srsKmTKdSs0csNy$Eq{x$kd@y|znZ%ouIt?c8y zXqjKikdcrNAy{-{o(+C}d`tLatN05|hs3t3TH1C2t(@+bGTk{HMR=IS%~H~5)8*9U zsJf6^UsIj2*6(ev7V6gOTV_9a9#Mz#ueE*%{6_xQx&Hu!e^Hw$a5e#)4B+iQo-5%y zO;be3qC$eb?$CxlOzj%HbuTt z3)~hs=d0IWtS9_Ud_L)xP=~K>oYxx!g?$BuZF~6w&8+L z9f7T4zf&gl`->WC$b5aO5rc@A9+l78DLx9+2q&3|`jW!7^x2`0;zp-#TO`1z=~z|; zWAHwwAYwKr z_mthg0tcWvR?)4oEf8QsLLjBRF&zUYJ8&R(U`j25PxIo(AdZ(M-i_l`>*Ns z;K7D0m;(hb)BsDA7I}_<8k7JTj1Ki*Ad7b0JX=02~9<=RIq%@gIkv zi@|pO3ep(bX?D=9xV2T@CWr<&-P91=gV^(4RyQ@J3b3ygw*H2=Jg%haPK4h3dY>__ zf#I3_T2k7^CAS?HXvfyG{84M8+FT7f%H3k~LE9u>D@Mnm1avBS71Z2#4^HsLoHboa z9ZK`hnWK(49ILMYg247Y2hzE1Q^WT5aKdHMwFi-;R3=woImgS#ax+`Yh_LT?zrfC) z4B}p@X#4BnH;ohGzr%IXykrtfsM+kVSgudnA;Cxg0D+-d2e~!Dc!S_!wDAh+9vj&X z$qLJBE;feGJ5QnNJ+V*tGpuO850ZObKT0rK&oWDJZW#HF+e~59o}m;9^uGrDUGNvi z4QEh8Z1&G%Z579vBXKN2nL*>B`FZb*SA`sXH08;&J;~)YYD1o1X4hvmq<1JY0-Wj}yP4NtWyhc|DlQ{sXIOs^|M_%>n z{xkS-;O%o$hgH5?WN0K;j7ug4-@SlI$m`8%yZBqePjBU0TS*H7RZ&&s3cGMro}-`2 zx-i*{TlQ??#N|(yoipIr?>q^uNpqq2=S!N$R1#&cSL00PY7-sGY`qa;U<&bMa2@EzPn zYo&xJbkEuyK4xvmaocF( zy;tEchjl*!c;Z{%5ZqcMSH#^UHnJHNJc!yqn72&%#{=5EaUt*quFoEmWG@cSHJTO5 zl+H2^Yvg~69~=H1_&4H|KMd2ux6P@@(c8r7AdMZawrmGE<0O7m>8L^TQ(A>id3cQCw~zc`srb{wo+yglHA{nXBbGATS%)An>OCtH;lJ#s;x7gG{{TqwW}~lJUEAr` zNpQ%4!?xbTJZCtsFwuT4c*|Px_P5||14_8IZw&mG$uz3%8+n2}t}qDCKSP@IiM20^ zw*LU~;X1J=b#%)zsULDkQj+Pg?X3hS&C&*1jUPJWU0HWRZ-C9G*WeYv#*cx(=BxlVK^G&J6E6k_mZ!W4m|v zPaf6jKMJ+`jbFqXxZW9CO5pY2NIL#zx0BHs!{TSrH=85)a*h-X$AWtkx|hW664OX> zm;s{tjQ;?hYL>Yw$MELgXgset?UPOMAd*WRAtr3OXhsjI$3Kv);r?dwf1x*wQ2zkJ zU#H6%KfREgA5x=_rEvZhvPJQ}swX73+1m?_5B~tFyWbWGPm6TrenK!(0qRPDT)vw+ zMdQowE;GOE&y0I_sp;|t{qLER;5|RcU0xRf$z~yXV0}F+iadBVmPXyT?LOcil&SnH z(L4~!x7w`of@N}jzdGUMx0X)=-}zuF30-mi@fkTD+*MllGjBvoC4$}QS`!cmEX%*@ zInVX3`^EY+3#)1Fs0Z)WbM3adnIa=h&}}lMo#gyLPB``TuS4;qOm!;&dim+}#sza* z-}}yo@O{T7`X#h}I})meCI-(PPVOs~(rpcginTzojA`FrAPOQ+iTc1V)m zz0~O(V~HA1El%Y1AZEUr@ZOnmC&CL|I%x3C8;5S_*c^NFn)#Prx6|)_IOv`vxsjUQ z(@|?^po$!vAYW^+ogzmm!kY1=HbN5h!ew}Nk)oiAh;dr!fl*buhdIR{?UxjZ5 zt>V7}E~1;6&Fd*rKnKbg{#Bbw-!hc7`59jhq0?@@Hflj562NRF4yZCoSNVt@q=Sm> zd?{sNb*uRLJMdNnhDBxD!POOJT>&dRS!;b=| zj_sa3tvvT^0rW_K{cBE35~OfG3ARXn5qN=Y{&^*qH5eR*aEp`l>s_D24JP^i14pF5 z2y<~NZzGjYFp|UAV2a{AFRaUm# z`GHb8f}{1Rd|LL}cY<`uRZFZ&tm>zy%37)XY?R*kQpR{2Y;)PUCAt;z!T$j3)^K)4 zvfZQP9bH~e4#*?_A3%X{Lv_SF9Xw0tUW z?VtA|ITxuJ`AFl`8oRGdx84j>Xuw6}M98Pv&O!Ihbwgjg;hVOeMvsUt+*xV2_W^@R zEI495U_b|_xaPYdB){;m?7}H|{$sn?gV6c`Tpx+AB)+%PFG)M%bY?&ApaiJ)uAfr1 zkocm)cxPyn%w`2i%NW-?TiE{qDmpJl9bc*}rn76K`0_^7WK_&<7@n{540QFQ!1`y6 z_1mp$U(%$vOJ6o53hZ(j!6BE9m>52_%J`jD)5TCta21*1Y~!7*8wAtr{6l}B>K7VC zyu#n@E+Z}n07i0fK8KHbiLPYZ@-7nPX)iLyp{YzRbge4nEx=t)R+1GTDV1VBE;`_v z;l3;18`ro}n-)DX?{H!F+}pn6&t19v^Hl8hNmIre6Wz$Hl4?_epy9F+zG6Gp&&DX> zwy;*-Bq?KhopbV=X-yWhxorLYeE$F=c%mTRHKp88F#iCi zbITKR>zuH!p0w|?XdWlN@W!IM?N;V%IaK$JnWG0DpkRvbybve0{gFITd2ZNS-A=~c zf$q_klOyoJtiOx;3TPh_u0tRA{{XkM)OQYt?GdZ-^dy7yu6r+j{o6jT11Aa7iu*~g z!1+etDAH0Ke9_L}`tk?(SEG0*!xQ{M)NSliP_t?FrPUk$S|m@ofchb0_*bI-)jki< zyd&egNPIPJme%@?oojqiI&YOu;sW7WR?@_d|jt817gc zSA45Fv=vHScKM$t8cLma3Y#nb26x2|9o~FI@s-br?(h@kh6PXnSYjJv7#wh-xOHHl zZ5-7=6!fRBoLyps7H1$R9m(KVbZN#AP>RtWbw=t-neNZ1zh@7FcRv=j`6ShDUdKwc zATzJtmGPe~Ph*azze{KMBjL>lMO!}zTP2>;xtMbA&sJ`%cnA4c2k?W!vG^Cknr?v# zEON&hOzeBg%oUvd9H00IudsAc4y$1uKlji=okKY_)3zB3Ui&A9A+W(Nrh za7nFCh&2r##TtFXSx09qQ@e>{ytP2+?cBO&A-zb!C#`)W;FvsD4xW?vieENwE0$=) zY{LhWj`+`7^=K?D+?RNU<;QMA0k@w}4PJXaq(*=R1dJbYS3i*z=2VY6=4kcdR#1;3 zdLJhIbp4*RAB!FozLq;U;@6-_B(k`TLOZ(Tgp(W)*v5TMYw<0StlgowU9N@J#Vb2$p!kfjHzBBWcfUX1J|-^7?!6YpDMKuC-AE zo!hd}{JGCgfDStWP0;m=>n%R>MTNG(eiO|D86q>d0qM#L>Mg=2rVAD`~2+z#?P?HMAt66J}-OKCjzcd=hvw%H+I>U|2Fikk5D zkZ~%6y`0p~U9o_liV*4121s;C?k-p!!rhu*UCr|!)SAoCF53S9 zS@92u3j)_m<>Y_U%&WT}@BqW{t$9zGGfB|z{$SUUiET9>Bk#CYDXO)6%ai8i>$QE zj0HCc-1ORhZ{=HIpDJ@*4-bkHa-_STUU>RH2rhx8coRyyS+Agm3uCjDjZgslyLH@1 zt}{u#x{k{3D~sist=VAn)N;!hDyj!^bBd?qn6%FX==M5Qw14TBcH-*dW*;$0J`*L`Uhjc%O(CQjXZn*nONM(?DjG_KQy!tWCa8#YAXuXei zg}sfX6?S~*C+vHxM{8-~J!@9D7FRj)r1J5+j#w)mGC8h?#6Pn?!|xb;HPiK*a@tm- z0Fnbde>zNKk)u|TKfFSMNbg@j-=~Ua(V^0H4PIxov{GV(01+62lB2eBPP9>`d?(Q( za!6#7R?k+>_sRVK09w`Js(eaE9B`0VjG}%~`1|0`jXoH}FLiWTtYu(}a|y~ZBOo5& z>>Cvp}({h&Qk%+^pRV^2$=d^q~hx<>)*4mZu-42g! zF0nXamHo)fN=Kn`qaO9<{x9(kx#G=Td^)4emf~p01D1JY!nic;55>#jZ6pR=GgGjE+<(hSQIDAU?l+PLuoe1c;6Dmz`b4^q zh~iwLASj%6r&Ft*mwtDENYCm zk~Vuf1x3jE9xHoRj^KD=AjldOgCK*+a!y7*nEY$TboSIz>8+T6W=Z)2l=-3~_03@| z)x6GyEhXrUFNppime=7t*SBaEX*BmurMV=Xxd-(hTJHQeG#C2)oS>(h3gOfol|ElW zI~*GGUmWREYkvyh(=M?z?_>u|4dDEwR)&Y9YPtuH7UYyEsNO@hISip;D<DyE@+l5?2P^Q`SO z1@Qi&-~z{-4^L06Ys>l>-}O9C##%hro($6=pEAcLsRFUjV>hR4PPfpOEB)ZO&-wJOR$mb6`X;lk+3E1bFWR*GPchxL>?Uo1s2_WlC-A2D zTg7o{-Y4-l!(nXGKCdfH_JrYM7V5f|R}Qndnyb-|>%nb4I{#xRIFl z$&vHAym!PtC$fKl@GZ9Gjw|1@GK0&NT&Ypl0Z7eunlFoVX+8;0;Z)}C-tJb|It4Do zbNFKw$7;)?SbQ>$+d)|5apcQ9pLx;cLP!Iq6meR$zsSkSJ3mvig4PRPhtDLkHu=_1 zko3Z^!Tb*&LtdeG8pYs?PObA2J-O*#LnfnTcj4<@3K>>MXl|H}pe|PjKIXlqeZTO7 z+3p1H$;b1o=C1ALI6W@AA0PZ-i(T*^iXhfn>E*E2Y|Me%XlPv+ZeBSnhEP4L;GY|6 zx<8NnQ*mi_7Fc3f+Gg99AW9JAo}Vjc@UPWB+BG~6Yw)TKd&at4+NHjqY+5*N_j$YA z?En?zDLCAFV!sCE@s#%Q-`r{Ni(!7m515jXhR)2MPX`&VIpvd-ooangfBSKJIN|Fn z+wne<_zCc@z%%?>w$n8{wD7x0W#`G|#Ph(&@BI?truV!&aHNx|IDbv%xQ}zeL8r7D);QO6VPLxe=BdJy& z;a+d?a&mqh$L4&^=Nun?IsUb`@V8a)uBGt$^6$ahQqVelnad+%klyvhd{=f~0VTv) zAWwijLts;inrbySzNZyu9eFmf!T5smD-8=nj7D4)IZ!z~f&9*Ex$!)#JWZxc8t};% z$~yEI{Hu=FoDBmy{u|? zdRBpOZLb(Kv91OsXvX0gC!lVb>}%z36nK+L)hwFhSB#{m4DiX$)?UAeBEH?dbN>Jf z5A7MiEd6@@+WB)+{hPFph#o1`FJ{(mY|!qIBJC)Jj!$3V9c#|plmQpd1AASJ+Yt3|SHDjkqB1XIX&4+3Zgqr;U z@M8E;wQJ7~Xm^n6Q0ddO5>C7;0sLJ506OxYj2{xT-9qWSCE;~g^ot|=`5_JLHO^HqhFS-)Y)qUvjnr$RCM*FLi7eTn-sO{gZ3;Oh(aQ9M@H2KfSjG zzRSK)B0n)f!({u{=7;Rh<84n&)boCVIj%l*FV6rK+C4C*75YmZ{93JoO>W@l=3)Kc z^V+)VN0;4aktkhzSnSV?em{Ql&r_80MD}5iUOb^tc*P#$#-0fgs^G^FIXL-oR(?OH zkzuVwgl$ReagX}sDSTHFpA+~ZW*f5{BafvzYfrqwZ&RnxG5-Jy=TTe?v@eg#{40&{ zyQQU{hy$FDwZ=A{21}albaXL%f4*Y7frZBdryXmH(&92&Yl;`2wnW_fK5<%GU%1K3 z^*)Z3q?^Q^7H1_-*~S6vFe`UMl~0L$LQ8;BHp1iYaB-idU~g9OFNR!>7T9M$?v9_0 zXy`W)w}|{t8VpL&Ib8I>1b;eiItnjS0xvEfgt9Z0Vs5u_>$5;p! zIQ?sewR3UshD&^Mw|FPF2D)z)As3z)EW_>$kHm5-REWP-vXF;IO;HA`@B zPrUIzj#5o=;H@s@Sh_9X+m5*MA0zQKz(uEAUh0}%)UV~do=7qi^Ji}22<_|m*Q9({ zk+jbUXje`IsCtv=o(;{=+e6$4`Gs z`QJ&hpU2)gztt{S87Gz4wsDB!QcelaJ68+uUqdIt{Vvx-y}G;6rhu3&*l#(WGrB!C&oQmGrZdeEI|-lQFpKCt+27fNMezbXR@HY& zG;%?47dUw%$wEi2Mm~nUHtY81)und(PL~$^VSyxb>yE~`DrGU0pCoirT*Qp7IG& zbe-jGvVc#@Q9u|YAC+jb^$7B~lN@~8`1C(q{AXkEn_bs`wsq-#*3rWpQAg*nTtW)u zs*GfgO?j{F6XGok#9s|H4J*J5V$~;#D`;g#Wk{AXj6+F)7b>Tm*UGW}(^|fy;_x-G2HtCxh~~aDN*1pZHfgv*|W>{s3?7O+DDI6!kTq<9BWOkP0zRdTk$i) zkmxr)Ht_Dha6Dn+rHwV!Sc<~QA?Yv1N{gPh`T1=pTSBwGM>0TBi z8%<3{Ei}B%(tEUSLGf;QA~IX}_9el|%g!^O_yMlN!@fE3Pl@hrp_9b1YWj4tkkKrX zHs(RQqbU2Q2E3-{!Piq4X?!7P0mgC|bRLz__y@zFvs<({wkE+Tj}wu5X{j4M;PZL zAB|*c8nicG3n02+$Q*X{K(C3hN`t}k}?=74TIl%Av)nAEP!mo`qix>mQ zvPfL*V26-8A8hA}Ea1gc@r^qVZx}+@7DlQ`yy@ge9uGh+@xyytY!BN z*ascR70K!9@^}wYw`Kr|q&Pl>x|3J@5#k$5)V}%tWL)pYH|LM&YNv+ewVT0OlG(^4 z`N?pYBxLtKl}oS4malJ^^?_x!(5|F$h#FJ`bs>~z@ffc|@w|$4dnoXDmNTBC?)3bt z%U55tj>k$!vpPX^@Z1y`5x7j@fakc+r&{%Y7~)-XOkD3fm4@GNE17FAyy$At`-?Zx zvv}&<6M^KCao3V7nY*#H)I5E69n3+(#=J1d&U%{b^(Y7YCzj0JOne^4rxi}l-dX%> zs$Iswh{Q;Jdh_~Ii__#OZ}UEVzxYiTi*$W)lIg5ww$#4UZ8DA99ySaP(nfMdE7?2` zsYP+%8LgtrNe1H2j43W#q4w`rbab`9vDINK=R{q@0sKI9&O3rCTMGxa@PLlhR7Esu z$WZ5K9YX=ojPyOIpS|~l8%o|q`_DS(;n6Jl4G9_S1x@h&-cR^hz6r9CfM`7VFa|hS zj~}S~>&SGSH{wN(tFPW`cS3Iu%M1yp!mY|TSNVG$xjpk<$Ki|XJsaY$f}+2fVS9+L zmLVYkvus1Oda)g<7f(}X8$CNCs_<0SI)BIAM(%g=qgzQGn4UgIJBjuK^sQ_`Yj@(c zAM()MZNcF0iF1$VSRNd`3-Mc7y^M(_OAE3PuLXkqss~e(*VeKwHN~{nZ`%AaO*t`@ zRbrvuAP(*@pko<0=M~YW#zh?q!w}zSmwqdjLAEBhKnL*=w>kVfSFw0<>d!*>A#`Jr zrAg+MRf7G~BN2n>2d#OBhqbvhjVn;m?jdJ_;KjAOER2H$40~5?;pvma9|5jq(&a}_ zIh07JAmO>j)7bT;FNjh2bUC}rpFR|yc$PV>gJ6%81dne|W6fOno3H5l?}P31`!l{+ zY$qCZj83d&IT6EuxaeWT-@79X_yF0%3f&)KA5$3|S|2f4;7rlEKL02CRUY21-UtVcon z!}DX**JY>6r+>n{HkMK>rWKWCjY!=azsv)A62GCYKkU~D;r7y`AGv`c`LKGklY+hd z>v~WMtI$Ta*hIycxV!aqe%M;s! z!LKXU=6kI^#grCV8a5?I-P*Y0>)y5QyjiH7BzRKIqgZY)r7UrlCRmmt0qyeg4NUoz zecsHve6CGT$hYIU{HdF$?<=~m$IfAuNm11A(i$q0E5>j zy({~#(GK47er)s0+e?)A(c%99B!Ii+`CBLcdgX`puFK+d>d;La<0jJe*dE91?l3)v z6#oDbcy9Jj6X`nSTOqKvy^<@7xeBO=v3v$O$x;cx9Zg#JzoJE?Xy#a?E|cl^l7I)@ z4++2>eo`<;*12)>PAPgFd3+k3-=z_s zlb>q#FWMf*Q@oGBemRykjy+32hS|W*RqcrxVS$glxcB0@JIy;vZ;4j7tt2o;x+aq@ zU4m{V2*YDI8RI6s@AjkA^gUz1o*BB)Z=k!9$~%OaE#yZri#ROoH9KuiHfMl& zaWbEkWe%W|>y^l_pld{fGAf^x$PNkjuAH?^!Bd*Gj~g>o`JGs9+c1XV*1c2Uo`e4Y2`9xJCr+7nMw0o? z4@^W0{{S&wUxr))E9`&R<3P65d~>Mlw+s{P7MoD#7 zD@G^iKEHEmr9~sN;y6_;SoJ?}jmNhVWFKRiJ_7j1SY0;m^Hf~hYFATSLaN{D(pEb% zr?J2}9Wz|l?FBU27My3&-7Z&EiM)l6lFsdbzT`2%&$W40fvR|`!S*&7CdkwsTyP zlR9G*&R^o@y3lwrZ}izpc~@53#xPk7iVBZ@LC?3ne2M#K_#u2_@V3X|MUw8g(4`U2 zfzR3Q2;)A8`+5HWXxFTKWY9HvybLbJ7T;2CrF3l55o;# z!nbj{4PM$vfh81v4tN}c&A=yx7L>? z)mP4S89r89>(kPz&vGwwt>#C{mXc{s@0S3c{78$x6oG+r)n)}I{l7PHxQ@X z6Vjim+^kx~;d6(QcVqtmeH;p{9Pzx7i~@HIAI6Gw)FPsh%k3QL-c4+EI@@ZN*K$P+ zr)VVCKc)D7@5Fljj*{$JOY4}RQh({A1^qK#gL`JrcPO|}m}XJu4}1@s@UH=@v+7pP=P{{kN}dy&P=M|pL2i2zGgfu$ulT1l zJppr=wAe!d+{yv`I8)7e*NSG@;X92I)QLCBZ6Repd1QUDk&eY#NHy7BOPTI`hn>LdY&>P>o> z3E8-wPGcPuj_<-t1($}rHwE9_`%T8DE`1Q~8T=#T>s+UX{Bx_?TzHa8BjsCa*3-1{ zfyX)7`4-3HM~yWjrs?+DWFrO(DD8fPs4jmTn)AyEtPnEjX@X*K&OAs{rmwW5N3M&pz0EA~6XPde$*HPhyK?mV~K&=pq5 z1JIiMZvCBNZx3pg8iu5}LwRj;j^;m`1P@b+{bl%T@fX8BAicEk&YI=!+IggPz&jQ- zZ@$ALByzYXG*p^XaWjn>IP;~U^bGpUH$ELYS{6%-L|GVM<7|b3ka`^LKTKB}rs#T# z+{vnHF@bLJD#YaS*ljk~et#>e z^zYBDJH(dEUrp204WP#v4bK~EP)7t_H;O3_&ALLP*9%Q8K0|W8o@VZscMZn1soMzy zG;rnA9#Y|j0~q9-*MWGEt*;+Sxs6-QH<#IF8wg$4 zJaf?UE8ewR)Ufz#zUcW;wdTy@B<^kx=f!;e<6UkkZEc~^Y??V^xw>*kw^EB5oS?Q361aEQ}6(fw~l34aQuEXK52gV*WlI2Tm zwrrey!AWDu#|4jJUQ6Olb3w44#ur0nri8ZL6n`*C&?`1S+yfttddG$JMAEOkRpQ%{ z40o2ymWWs@O}Uwd)$|M0`_}RJenxIy_ssE+2+wI2mwKgG$tB#`RsJ9e!2AYJ)}!#g zmT$Zxe97}iCA#w56)7me&qI;;@m&s=rRlQh+9lH4tXie}-N||uP0XAyP}#;8ZVHb1 z&1HBeK)mqh!~6O53DNB?on8VoMB=eNBA%;GI@oOG(r&9Bf$Q5vU`#%vg_Hse1pe9fu+FVOS9+AHE6&%+OdE#k{1NiNdeVYdzeQ!MTgNe8an zmdCY!KHA;0Y8tD_BXG>_L>HAKV2pFn2EoVWUcOyPN|!X3Q;Qil8R%oHrGyxWVYmQ#lUsULy*`~i zu|t=62R_;4)&{$Cr#h%=$vN&TFmofS~ z`!@Vp)Vw|8=kUGK;>%cdw4HPEi4IIN0qRf6N4ZQwhS6dhRcl6sRAoSAa6r6Hr~R&TU7nZ<{?Ip(FY!Xz{{X&v*Ds?>7}5Mw zZNUBVe7>JQ@~t-f3_swW?>vzo5qMp=S1_m31x6|Q2@T^<6f|I;F4{rC?_6$&HI|>Q zcvnn{NtnE6%NGrq8yvCcoDA{kFB!|ZyBUB$Twv= zk@nnV4(Hao{{R-0hW`M<-dFtdP&52M;<#N%#{U2a;EwC%4SSYV>&EW5t?v-(kzQPQ zLiWiRB+#iuU_$^%9ERjzb60(S@_K#7?u>l@0ExQOK1oQKRDK+q=B!m=_-U#cM*>_7 zbmQ0G720VNd4CYKeBd}oARgl#YnQQ-DZUzNNgxsdbI3jNd(%RDedme%T8LkGLqWDd z@~L)A^f-<4n$^>^n`=KCXr3CMWKfG(UvuTRIZWe^ex0hn#0jk9@V0Y3GQpx(Ww zfai=xgrtxFjxrs0A5OXHT19?@%lyv6#aJFAIfcPJTj&z;q$`eN6-@LNLs*}(eM5+?Qz6m+jnAio*8I!x?Arc?uEXLT3qiTI@>B_gTemtbRA>F7P6r7va#%<}8;7X`*Xa2^E4CsTv}wWRpC>zj>P9*PRHvHuSPV8A zM5TiQatXqma5>_(j(dtu@q#n@l6&0z{Ly|3c(HH3)8bnht?jdtv8XPvUzy@LkuV8T zQ~}A|#bsYL#MOGn%(!5zv`qQsei`aFECcF#foAL(Km_+B-rJ z#E8-YI}wgOYuA(>@2=MP}B2+PAR8Pe9{n=YoB(Y5IS`zY1tq@Ae6=CX!E-$O;}$ZhKd| zN1^Ic;U>6Qyur$OY>SSdGmidD^ zkk~wv{JK^|o*B@trF5R|LOE8+1#(^<7Y(3mlH+T!gzivDKYJ%XPAl!| ztr7DSo7d3X@dlvp@Y2@G1Os%4jC&KifG)Sqsjb}l2Aii_0xhIIYwj6braB(k2S0^$SMosvX(WIVB~y&K6h7HOVbrgIX9GHl1qfC$0pKgO^lh&RLrNgN|yB$2Qql?=Rd`Qp0&02726m!k0 zHRO9{wg=`XjK zmgx5I%YMz~M0T+(fHNr_@;cYFc)rn>$2wa_AqqCeaya2ZAB}lFh^o3~mF1I`m|%MD zILZ8T&3hljGPeFIwEIBZ1;XGjrr+ya(T%0|of4Jf_ZPK9ytep{_Uo4h-Q!r{QP*(g zjy?FRJ{1y6;%!k)Nw5yQ3$MED))|7z3%v$0O-maq1H3zB9bCiz>HE z60#158?aB(sxkb5y>I4WS!qz%X&S=C`;&DuyX-%B6O5d6&MJq7^yNMXmi3*0b!AYe zfE46@H9e)(yV`1YQbf)eF)iC0h$Ho<_&(ZC_*QFa8xRn>f$Rwb>s2*n^Ck}OBr%{ox1G`fuwdFS;t)e0EK5-X?k7WyWxKoU6m5)=`69c4DBpq1Ow`GjQiD36xyHo zRj9V^$QcgeybE#1Hjn#3L31?H?1W7^jo&LsG5}%R0LKH?i8a}!_=By9{IP9y9KLj0K_uovQc-MDUUzJOG@HqVI-8>CvX<_?3-P!5LBHJvol>jIOb$N z9sEqYA!vx)-zX=ZLmob!mFkv16@DLhE8&&Lg8WB*lU`2Dq9{LjQ#i-enwpiN89TE| zRA(sYic#qBTX=TX^_irQ$uSL+^CQNmY4#W&l~RV?ZYDD{W>)^ox(WyI?m#j=ks^qm{S8Z@Tfc_z2Exw<}FWWt2VSPpQZNa^>uuRYcE4<72;3|DKZ{g6wh zwd%!gfka1eR6^Y3bCc7hbIP|gZ4_-9JhJAKFrw0IwBH5YG?7PZEX|iP5gW+ZC>Vp! z0}G#O%)HdC&x7E*vsIBU8_O~)0s&Gv-O%*SX3yYD8>{R4eL_dPXpF%`tWN^aIqT}= zxb*xhjreh;N#U=8P-ypx%_KzmW%5qhoRmMPHMSaUyGyx-A`wdH^bJ!)kNY!E23+N% z!C&^V&((SBSQk2Sjc(shPu??Mh1^FdqiXU!NA<4v#1^ctq*~6)xnoR`($?V4vpy{0Q}XrPm?g~^G5@(=u4}3uFepAvjh=MgU;qI2Hbn~sP*e1 zKgNA3^<;0|>N3Qr;GM}59Gv#+kIKDP<4lwO6T4{`#7EbZD;F29$lXm{e9tEMk#TQr;EVXR7F&2^)D&*U)?5Z* z$LcFT<75$OUJiowZvN1d=$B47;19E?P(GdL__yKf-xqi%Q1I*$6`A!Qh{u7w5!paK z;9|U|$6g=tABTJsZK8OGQ2S&50Abzj1mr}59EgGFc7Q$q04now`c{hc{Lf!4igY=z zs=4{ar1|>IwA1QN)4XVrsdJL5g9@WP00RJ5uy{{QkNYL9o;(Q%SI2PRit(QY%I4N( zJmiY^p9bC}Q16&-K_V6%@t(hh7|AszkGjYy)0G&`+opWy;!BG&Z0Ey9YkfVX3f9s- z^0KP^?D3rQjySIG!8d*wm%_pgPfc5!(>numlf6`tjE;w{D~|rm7o%D74-iOX1J`Sx z>6*aPb&2$8gx266RXr=!oj!PS$8+-;&BkpSzBIPCxA6qA+l{G(Aa(6uZ+^no(22FV zf{7$DLc2){3TZ2`*=#9%2Pf-}#z9V?*yr}X>Z_)0tr9+tp{n(9%vh2c|^jE;w&dg_1SEYst+ z`xlDz*Bh4`g6ANE*ZO9>2>Z0+zpc-se)Qzdufn?Blu;qw=EiZH4ZtaLo}7WtJx3td zeFn8}aSUJra07CA;0_Kwae%|AuNQ|`@ZXZ3*Z}avg-@4_%aAjSAL<9Kby`IBaimRg zx1#;rsT|}GxjR5CGCL4)T(ue3O=?^5^g6D$;9Yx3(XIE-J(TGl;nnt>411oH=6|!7 zie=XPJ!bOA9n5R&P?NN$9YT)Brfc3K*6s3QvVr6n`I!1(a(}1eUlsn&ekHcC@ou@{ z`=yp4VX57yjwts8N0%o()NRNWbQd)#F2q%QwIhC~!(X(Hi5G`HFl&AtwT#CUS8`5( zjAd>yC_ni370!G%_)X$piQ1ppv}IVJRuR1K_f?226b`J!1Ar^(uiM8>({27IX^C!wyk!}etc$B!Nyf%V8%DgK= zqrW>pGA#Zdd_uO@?W6HGhV?_H%eAJC*kVsC@r7&<2=pSpkocwhFZ?g?_J-ad_-Ux? z7x#~{IPFEbEV2=}v$HCZ7#tjPlV4Z~<%5TIZroOsSFO92Joe2MIG()UH!2-I7oiBa zb6ot=(Z6Rui2f^Ks_C#p1@eLBSx)9T$lZv}7+~%r1LpLvY0!QJ=o%)C2A|_g1x-vL zlIv`eGv%daTzOBkfERah-n;(*i9RwO7S%jSa2WaXX;4QALRLj%IQfu{g$dpGSD}0* zmq76)w2yxnzSLDUYnmA zcw!HPJ~y&Un{7I6I(Y6pw~y^IN|Q&lbCL;OxyU?V*MRt&QPKPd@kZxMHiGv}wVeaQ zIXPt7Hx0@`=y?1q_Xfw{ABi;U5pSVrT79ey8<>2 zi<8Fi*y;9H##OkKyzMMfI4W?_d0}zE9CkI|^(6_)w>oL`2yqQeMGAOVLQs@tC~0 zi*^413m*RfQJ4evT{2=ZgM%ZYkJB~t)|522(yZ7;G? zYb%6BC%Q@jQ=h8f*ND;dYgBn(jIAEm#+r7GWfzre5(}IsK(=aBanNTGj8|DOlTYx) z!pqenjxmwRX8D*8O!upPE&Ej7CG+QHFwGE!Q*Ia^GjxTIp;bzY#5WeQ=`y5wC9Xm+ z^w_-Z`i?7ZYuLk<*Jqt-v&Z)D40KWUd)UYw@CWKh&3s?+-o*a^!f|0b^Y*KF!9U(A z<#YLBzN+zD?;Y=lS~8<-_kaPC5nK_TNLE(Iw^Lq*4SUMn zk24zY7k=lC`1r${h7GsZ2a6d}OmPl8^5kQO#l3ly7?gFBL`Q+8Ddg9+ynCiBw zV~Nuo9_mYQUZ2W+_uUacj|1dkqa_nSV_@b;Q4b=^NlW!?68 zG^m|=5X}OX=i7E`=zrN}F{ONZmqhb}giDyY@8zLj-2VW3HRAd`yJ|lf^-V1#^3`>i zEs=&kO}LFQ^uWb?-|YM09Z$nww1@U~ttg&Y?e3gNM%Hy`e(@fp=DdtVlEp=N9_9;N z4E;~iJ#yif!l=l(F$M$IlgRvQobe^q#9Bt56lxjF8Qbsw0M|Gbt*TB_!h&W8CqJR> z{VK1BRTk4u%JR|13G^Hq^b*+do7_!cdD@nny#hIwAVVIFw?B?K6*RWR{Cfk&zjfv0 z`V}=cr(qTU0EjgEZcvGmP0DfiFmd>f54LMd%VzP4GVnLa_2o`!bomYM^D5{ut6%CE za6pXi9{KNCx?i6Tov7Vf5T#0jc;`9i6|1A##c6%1$WGwVo<65Fm!d{rNYnxjT1DOH zPAHboG05lUDgZw*9eF38rFp)uc)G5QYjD9tv&}r4 zdK@_!R_XNjHS9hxN$tKGUoiq^7t-xq^&1r9@gs`y8;vquXTw$!Y7#706Rfgfe&{Gc z>(uj+&1pwPZ#H9Ff08#fJ6YlycZA;6WQtQ1h1-`UlW7ILG1|IV$-nrE4u*FmR&Jp} zlaN_RBk6!W>mKIL?CV-h#F8r@iXpose86*$Vl(*F%S}?=KZ}86<1SS|;O@c6{J5@| z+n3~Xz4h*OS~bC67+h(riz2}ktP6eNo`?KBtCaA~#M<4SwWrUz2t1?+e;&iJ7^mqs z5s!%X=4a2H1AMt0IQ%#s^;X~HP4@YX_;)45_Y>US zBbQq#kR8WvJjlW0rf>&7oLAJhkUV}EwvIAD87Cg6o_`)|=dXs)&pnmmyQ{|)oA=4d zb=nE~3=!DZ(7Khv!J%1O0C!3=kKF3sUu6E>`pnn=03D5trzxlDws0r5zL11;9Fo;@Ow)^7ERI7r zQ5idb8c~~7E|IjUuV-e@cD0IYNMT|Q2?bxZe!kr5bL)Sz#+|Gr%pO>6_koNt+7y$Y zLNmvD{9W+It$5JMr0O{G@s-bSrGB;e2I$`Y$@UK1Y-LY!sVf2b))|{qj9Tt*hgMI} zz2bWvPDlL%loSws{r+VnTLSj!BX!AHwO2fMYsUUOuSI;_fcGsgj{j62h zx}lni++6%YvYSX{GRXVR;nFg{H(qm&2fcn*{?jtHpYeNEpOE(uLhJY`Onz%$tM_Kz zJ}tnTF`qM)&nIq2;fnle`1h>I;t!6VA^D34u0^DO?#1$-)DvA4BKiJCH6OdDbI-#^ zW2DBV*(8yEexMTEk;QU8Bv_)-V_4iVcHBpL=r!p!rMy7!*>CW!E5t3k3)l`TwY?5> zwHXdBFQ7tmoI8Iy^=nB4(Wq06yw{NEk^<&t>l%^$1$u{vW-?tz82hcp4P`Z@&FE<^ zQ|S*1+${bUy;#QQnluc3<6->A@~^6Va>3>BJ;JF|vLTFiz~;U!@E)MiUR-GJ@`;g% z9_#-A)~~jHBB_dR1)<9YiZ&a2a5xpq4Kz2z>eKQ!Z4Z_EL`pG{Bn&+s#=)-P}Zsr=eUC+xh!eX&z_8Fpk+%dOD7r6aN6}u7kvK6XFjJNZ)wdrqVl-$~t{I z(7()0_wpyvTW7@`YFv=39GrTbewgW0G^o~JhT5_?z%z4>LCNN{v@;p_tF6bhWXAma z0rP&m)eSjIcmn=~-;X%i)GgUlrUfNF$h9y;5%M~1uBW(UYm7(!5-ask|bI?_9R z#L4ybJqzM3?Dv{igyW?weA7<)zcFq2AOF|zMVsM%h{Np`S20Ey zGO(OC0CyPA^r8+^v2Thn+%OX6Wg>N`+A$^8AR*j|4g|6<~P15Wo zAwh36TmI~}J24p`4{C9XOJi8+ySc$$Tia?c8tEF0w?L^Y86|kf;hfe==syy?*q*?v zBX*Ip06bUG7J5y%RY?&E#y1tg85!cVt#ms_jU^E_c^i54;}qhVZbo+$Ah7va`}48lu|LR+U&Pw!md^V1d8KZ1NO9C9#3A;w5W!6)3; zt(_%fJCn;&dS!VY-qlv-J4oZ?`Hzl@2Vdz=*}kGxlF=SdY2hCXK#L@LbGRx_TOEA> z=QX1bhoO}DHd%qtO z(e*g-)4d7n(5zkvqLSu$1JA^MTz@x~Fb-IHfCuMVeiziY_-|ZDn6ul*8kNU689z$Q zmg7k}>PKL?dy*uXhzq%a+mC-k^sbQEe`V?V-MornNf9<4?fG}jeLa7(>U^CKwdiQt zTwB55%RB4D6Gq{a10$CQ1p5Q}RUZ{y!w!pMb!!rbg<)juIOA{QQ{QeM3T-8wLiBDr zoHqddYn#?>@ugTvW_l7$i5K$MddRLxSSVNY<{xdc$#WHkhHd`< zc>6e9cHVl|u>4ecVAeFzYFEva$DTT5fx5hcDPo&W(ydwcNX5}iX9SG%j`{jmsrd5d zIs9LzL2%w$#}&C#>z&!oeKB0=T3>n7d&llKo(OIJAnCVrp_oJ&bDrb?3HntXWteJ7s3Fw4WjsK!rG^!irx*6k;QV+EPaipl}|qd(`ZRrqTqt9aK>wz*>) z&uxZJOcLCBZrf0{`Hk=LFL;@B-wf&#d{)<;zQ?7NREZZYJg*?cYx&oo+<2eHI@gIc zi(d)oX{6oSMkST*2zeYiKoLMB3>c;*hg%2x*#Y<&kv{IF2!t10RvEDDm~J z_l^8(tay7vovd`bI9lUVxrpLRxe+js1|1L)$R3B<)dabzr>G($eK(Iu1rOgv&f-rCi%?8i3!JT-1Vxq-Y)o4{hD;;@f@li z%k0~}!#Eh+4*vl6c&@L*wvb$F9vHPMptaS=BOHYuWULHq#YXT_#0Uz{cRf zbNuR*?6x7TPGxoPgXr_!+<2N+6Eug5DZWzh`CWZL8@`p9Hly&FyekHo{{RUrcGAr{5`dvR0>73N&xP1;AiX7wWl`T z##JJ@M(Ud9!n=>K=fqcAVo23Nu$K*i*WcQ-B=L{JD11X{cm2I~2#`pzeS%U?CnM{g zDgH2xB03yxh}GdzNaqD{{SR8vhS8_-PKmVvR+i;hH*8GXPu92A#z`)vdw(8$B9F!g zSQ^#rl5B0U4L)t&=Qz(5Ys20@_)DhW++TldU&-b+_WuBheB1zgp5I#0wbR<);y5#f zAz_dy2dVGHP|y}jB>CP~ct{J%_A$TPIb?kbKa~~nBLYaoK8AWro zPGC68cKV9pe`pA$iDbE#Ig?AjR_V1)#m>|H-qq)0Un^5_yU_IT8r}+4J|pnQ?EU*V zw5?^Nd_%dsmO;2j6^M5r43ZQ+cpYn~(!Lyi%~pGbzmKkNFxhREYH$Z5qw!u3`x|U6s#KLm+0%#3D$uk! z+E(a&zX!s9*5V3emT@HH7k7<@$&HpK=xf*q`4ejEeX;-;ir;U&3r=Nffk z%(9lFci^XqEp(f$XIs_uZ|s|gjcyI9qO-_=ye+?s;BNJ!MEIfmJX_j*n&ZWH z_e$f9*2qV{BcIm17xs_wc7fvW*~i0PAhn&Y4fd=1x9naBJh=(T?gt+A@@ItQh)jsV zlpXd`Fa?Er0tc7h9k727JLj26l5IsuO-l|yh%QfZSvI^K&GA*W*p=4>s;QO`$~S#H=YmHJ}PP2UFY@&n)bGn+pr#ETsuC;QNN%J zGtF?n@Z2A=JEJ)8=AuI5u>Sz!>&JOrNASWwaqPo2r>``n_nxkG?}sXxk3!emAarPb zKAmbS?-2Ywf+(&=g|4#Bfz%_z!si_E!Qk;;VQ>3#e#t2zm;Mp0L$T<+zu=aL z_zCdaOVMTVo{f2SHOoKk3qLCd%eIx+M;m;@=3exFX4Fc~F~6Zd+LZZ~rz?7&Km1tJ z{sVab09tJh=UUY~FRVN$s+W;REPF;-OKjS}H+&wQtEBin;r{>?d<^l#ekaw1wcUjF zt8E4Ku3ihJM2K(PK4AGkN}Lhbkcx$Ly9LLAMf+z=u2kbxYK?LQ&T6|vao*1d`m zbfFa1olhRUMN*`up1x=5t(EffD@n){Jm;NGq+kdrQ-bEV11S=UPQgWRWr+WH=+xGAM zmzzypI?qbg;J1tnMxQE;oPaSPub#di`0L?Mk3KEZ(-mZ|pEO?C~bJ1A2(K$FJ_| z;i)7>3$y#9G}VMU=Cx3L#N@i8^&i6C5B-#F{3e=>o~z;sG|47t7Jn`hrfe424&3J% zJuB9J8e4wNngP_;!WWwT>rT*{j6oZDc-$0l2L~teuadkjE$qKzs~foq+} z73@}XLmjhQCSD^Vvq|gnmBn=Tdf&k#ZnpPruE)yCq}rex0o#N;*+GJM?5w<`i4ihH?cG@wHnXKmj0EH=VtEa)YkreYmer@UEv7&xBSYkR13rsAa3ndiPH)BgZxsju|)zt=U3d2QsBqMKC9vkk1c zNpX~_U|#tw1%S9J$zMO$-%w0+r1_p#bX@Jsey)vYdXwBH%( z*D%?tyzd>N5fTyipU`oNW`pqW_D#`sYfV}&9O?#3c~)c%Z4q73uw~pc(<7SVe`kwf z{{RY`;;fE7?u#A|p)B?C4#oo{V!Z_x?yhBO#cq-HOb^ic_!~1_t@kXVoTwH1} z-Wa2^L%LOc!ZEb}02fO7uSxM=!dSj3$>SY19cE2N7~U6!ED1Ph@se|pLY>(98vL;R zl=j8q8wsC3@))z^dIsjdWPTrAk>f2+?ldFKk(g)R-9~>(;;RMiF7;^Wr&3XeEOutT zv+;ky^5_xTHl3}h2Rn^};Pd%bX1DQ&!S^xS53p;A?sHVNd4J+}rdl3>BV+#neF0k-GsYwM{{Y}kLs*9L#?x7t#P}$d4tX3E&#pyi zL-D)9W5kC1*lU};C`|z7*T`x}faShW+^2>VU z7UU9p9^Cb>D@&a!O0=#Kc!qAns+ju_OWYI@i)QmwAricI;b!t zcvGi8ra>O(`qp^yhr#3H(X0OeYig!oK=MYNChYU?p1-YYYo;NtX=be(CXxq$Q*z%Tg5wX(85h$Zl@Wic(dS@zlfx{hgQ{Od`Z49?CCfB z-A`QoYJDTczX`P4d;55`JyfiuZvOy@Y@a9@tyZnQdl|VcH11pQFOGf{X<9Ah7FU{`$#ugr>C#~V zIRt=u8t+%*kHXu{KHkO|bvA2nl0dqAgoExoeJc;)oVGSvMzLueswPNKi2Lm!`8n(l z0;=j7{pW=IE91Wu>9MO^Y5V7a2+mj`!6Uv8KS5cw%`RUvcuLCl=zJ^jQ{nf5zA||K z08{Z#hrDrWnuX-#t)8O;+icnbBz|Bof}jD){#EjS#E$}aui@^dnoo;t&9l1hia6KrSrE#tY1!FHvr zXLFXexag9hJpeco4vd87kSpG9bR)gd<@>c>s?7NnESlkiN%EmQvHq3Ycw53gF8G10 zN8x`1X|1VUxX#FzB~*2HCjk_9W*`c~)GV$nZfDT$({0tPt#2e>?W1iVdxjPESHxXu ze`jxpHXjH4CdSuR)Sz39cJ?pzvr6M|w++-s5FvK-Es|<$*5tHl?#*e!`p==qTl@>t zd@VXz`1{6MWsTr%t!reGUdV^hnKrI|gxBaZ{8IQIqx?35z?y!gcWVR-6ll^|%A@yc zHx7EUa(^29vG{v%E&NAgeKMAiPZW+@)G%(f`%CeAPqDc0m9@x;cD2!U?QXipoC~Y1xb~&lf;D0iVjb6Wiuf zw!b5rZ;l@Zo5o|rEw4I90BoaLN*fL_l0A>LenR+{RExwv6g969+jAA&&BW1>#zV;4 zewha~`c?Zt_>WBRHlwTS`xRxMO1QR#m3c2CB8-o1+59W=@4~W1ZXV_NSc4yPgU9M? zdQ0sxB<}20@l&X}OI75=yK(&g09xa94?5>*DsTmL*RnzBa9SR*|!SP&KTf`-X-K4?+ zxSVHyu4{q~w%Of?u zb&+v;zjauXo;^9PZM-qzsXjW*qa8ljTNu~`^2X8faB+^c&uQKi@UnO!DQ45)XIR-w zlmwD59Zx+^%g55RyGrX@K#h1e`;vEk8yhEjVb}*_r7iq%*gMm)bpz!P(w!M5c z%_lceI>G*ypD};sT*RLaejT@qbQr&~Ej+nkP2N~>UwI6j|BuX@{w^50{*mqfFF0>`5bXG>{?z>uiCkEcB6>sP!(rd!`@ zT0P78 zD1Wi7P)dko0x|Ps@t<7PMX^hi^ldXqSUhp5>w^1FSZ)CkH`?Olo}6y)PSgB3cD@(9 zu$t<~Nb=+;x{C)Le~P>h#{U2hya^tm;s~rXi+EPh#ACwXgXhMF80auauEO8pSHs5e zzNK|Gk!~J4g$VdL3Q6hBH+zztZGTeVk9-H>T}sPFk4Jksn#@0#ziNa485u`b=aX6b z=fm$BYJMirukGWuBGx#PWA>qg?FcE@j&-m_m$7g0x=o< zK&;um9QbEV@$ZLhWwVSW)EniGE%P^(yCi4vr5p0yd6fBito)By(>@yb=TGsjrL4^i z207AoNBc}CJJ$ex{{W|I=PbS#c=itm>Y7aOLM6C($}ietIoe4)?&Gy^8Yh9gEjN!f zJud3lI!6@Fkrr$&7a-$3k4olrZv}X3RPbK2GQthryT!HlHc%3B0ndH~X&z%Y$a|lN z{v3Gn=fZjppJ8nrvs(#PWfR19?jVk>iqmh0K06-}E%n8*4Falelg*5bs^Iav*1SG{ z0{Chz7TRd-w#z1-(y`w8-nR;w>(^<;Ys=tm9^1$EdUPXXG8N2zWAJbZ$25D_ur(do z|Ip-ZJ{pz3l1J5U8_zp}0zhA3itlW^GPZtPcZIH0_4A*V+Bp7H_Zr>J(!_3dA^FcE z7(KDxphzOIQ*m*By?1BlIXTB+?nQiSrjMz0nW-FFG&2^sSb@R83JY^q?e(o8BUiUs z9aNE!hvwso$hwzJn`sE{+%YOKyW8nhUjE$}8+&|gY!9Dk)lf?cR zU}BGT#==#b85{eLZ>?6b*X*s?or!mFR}q2+7m>io$?sO6k(;R|cXxW?7yCm;B�* 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�+X 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 R&rEj4I#JB8V07Bl|JmuK!CU|U literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-redbrick.jpg b/web/assets/gen/facade-redbrick.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d919caaa0e573d11e9426693a35ef383b64b2d9d GIT binary patch literal 116273 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%0AwCf4*MLbB^<9&nCqT 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%0D<;y>CTkT^aZU2-b@v*Tx{O>;5Fv>-?&O-XOOq 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%0D?|NN&f98 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 O`BsqlQOiyHsQ=lnC6P1$ literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-sandstone.jpg b/web/assets/gen/facade-sandstone.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d721c1000e023ef75bbfa55e854c3587af6e0a02 GIT binary patch literal 121042 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℘;=@UCVjsQEiw&viD=bE}0W~ny1 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 ZXQV%0>0F+#{{SI&{{XIk;a13r|Jmbcbou}Q literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-stucco-pink.jpg b/web/assets/gen/facade-stucco-pink.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1efe85cb7c90972eb4ac4137870466b21d2ddc6b GIT binary patch literal 117126 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

w-C{H~(TKwVH z!`S$vS-H3a%UG_7>Uzf)Z>@fZ{1q{aWHA!Bv5bKj$s-H>E9faV&vTnC-e=M<$n)i; zImdD^aryrMDsu>#$w11(oyVu;RpV)2A;CbtryrFy8bIDias+1&xaT}^)Etxb7_QXM zNv%PHXKOKL#xUO~=hCt+Qb8^k>yk!5@7EmrR>bS)Wiz;uw309|dvlO;REk8W%6zWg zhdYSp+;sQNOD;NUX2!P*FaVVYh3U_JjmNJdrj|Ae$tsm^?rtNmu{h7Ctyq#c8Fxy` z;0%&Raru8rsF2&*#pOdD_=nsi{J1@Nqn97uI^MjB{!CDR~1kBFccOant~PI#x^Gk*={;Ez5Hh2#WogRA(Vsvw@ss z^~N$k#;#0F(*Y`lQH}s1Pkdzc9>ieQ9G9~dICvGGrb zwMpI5;wzVi7}avE8(^`|P)7r%4r|}E{X)+AH@b*n)#Qldf8L1gEH?mHXQAjvBZ|Pg zvcA>y_ByO_`Ovv2W8@X=dCAG=BRHY-Xu`A<;NXA%)B2I)`%FMO^PiNj+{fcc;o}2x zsMw$e0OuVu$MvK)PZO#XIBo_90D6(v2k_>WIegiO2Ldmt{15*CsMnm&s9F@2JlkfH zLI}pYQGq0%Cvbr?ay2T@BIw|ECAD731h%j z1$Y@e^OMI;pIYTSRW7XtjW^hwM{v?cs!>lu!#wkhuU>fP*1DO}c@LEr?#mL2!1d$r z3=R+1@UCyf`lMPPhVSp4T2!>Ol1AqZAw?vGBoJSYF_Z1ml-1(In!ctD-m`P3Exea= z&RBpycjh-F^(wjGcgXx|-P&q1-$i!1goQ{uV3IBBNYBm)PApToV0EMQGG~|~6}}Wp99VFFymG*S*Qq^t#%tIubqfn9O}@V*Y-7rXDymsY`55-( z5IDdm(!AGA(kwhFrY@79TlrSX3J8=Pp-CiwROhKU^v!ESWnpn^=SSv6CL=@UD3Aby z0FN{>jP%L;PH3k)HcaU0souHpoO1~zNTHH*g$=Yb9^ejg#CGpjQKOy~TU2OD@w;hJ zgWPV;f6vmq{{X|^V!XVT66-r#0~u|BB#pZBAU}I^{!>bTSPKLGizD8=1OH#6y%(Rk7qEyLmDkW3TA&X$`^~f~MH%Pp`DRrq$ zDo1XNA$M$_o9{Q{*#7`Z>8~KYywm1^V`IH?BX?-ok6eaKoxSoi=xJj`lI+SMw{5F| z^A{{|21f;lr`^HhHH(eevXV;4971WHAh6Wp{{V!3P$HSi+%O8Pv8W^xrzP@mIKkwT zU47=Ye*`aW1gIq#+)m$@)SfssMlTF$QFw+=6f8~l({3${jP1lbw}k^BeeQSw=jleP zY;TxF3`M~E%1$$nLOnYS{c1Ie(4_?@c6449@eG>2mn2$*g{6tYk~WjKs*%{|o^ipe z-Yu8R@XgtW8}=v6-po4vD~i!CrLoq3vaM{UadR89UBl&=VDh%%A9v5W_Z_%aA1Tf_ zuA{_aPxwb}4)Awu>(}oL@IS)3;U?*7a@2~9^gk$mAlXkph&6ST5Z`H>bnEj+>FO)N zd^2jIScIHymHzh~&3!H7D141-`4oJsadMa>o{pU4lb_DKE5mSy)K(FIzH9wH@vcfT zc9HRz)q1bhpG$lxvRJi^PEdq-mbTx`>u1E4rtifUI&1#`%f^VvynoYHU;UcAuJ7W` zi}0sY5^FZn%$M;bYGGwkzFA|OH(ck|wJbg{_!GpQFt^rWycUp+J+05$$CgBmGPqpw zIRNvVSH)&{JV)0mSLA%HY4{&!mSQO^B|2Q%qrA~B4yUBqUrE7|-Z%dMffX73b6tL& zZZ}|@`+C<4;f+GZ!$r2RxVeRYe{l`2WL!#%D{a_wf;N%Ty+cm5k);Hw{(M)1UM>=6 zw@IdtDAV+@2Z~zbVEyD**gy92waEC&H;;NME`4#x{Oj4R?HBuU6(j;+zC3@|(62f1 zwXOpV!@nonxvyUxHt}oHKau8Ol2~Wz{{S=QEmjy+*`-XKyN_IeGI_;uQr!gwAq<&5 zxft}WtHd+;bI4_IKvHw;D}-sh=T*)K&l%&9>t4kL?%d>@mo<;Fd?{$M{3fxNkRQxB z$D>zy`#vv`rg)wuZ}p6;jCS&vllcnF@CBP(d>GT&amvU>M<0BO>HY-ipj!Bqw=(%| zB*4!gM8J-{Ij?of^eyOo&n>Y{uQTW00cp!Wi!NY8$(fG>>7KNo9WB1as8}FVmw*0l($>N)dN{%Ku=h%0uAGEEiHm#=!^2EY%gNzECeMRirHOnJv_kL%AUdLq~ zn{I7b%`->l%t*jY@DzIV%}lTc|llr&PgDj!lZ&|1*w6zE>3b3pU!~0 z@&IG_8d80WNOU;z@WGvm(U?dE|gO$8MZgFRXZiJw|a7 z%Hq}m<=aOlGN=h49iRevHS;)^``I6Dh0=^Y1-rRxtA~_@8pt6#9cQ>ws|bq&6NfhBjxn=HN@#oqqI@js=^BLXRZh^ zbLo-OkHWgE1lSJYlb$Q(*nTYdk7DLKW4LqjAO0%38-I)5Cbopkv0Ap!P6{_T{{Vqk zHB1$4jcMa)A5y^q+8MLgp%v6xTZWGZfsVN6n)4{WCiqI!Ak}Uow%)lyPIm!-NB|Rz z_pRG6iT(_^S2ovPZ#~YXO$oh`ey8c{{LEK3 zp~(wvAtMC~@DHm-UF*1f6h-prkO8wFs$iM2)86rcw=J4ZM* z%t_-d0`RKCdlpLbxRw5Rr^|B;-b2Ld%2c0}sp-4i3)b= zqmRnBZhTRt=~60c^DItRcm#DB#{;SQ4r`pyAdR8(Snz`<*8;KhC?CeUZmr^7Rg6>U z_om(peV~5pYOvp&obJv|al)Uqljhkq_=^#UbYbr9VR)DJl<-E4=O&dDnxTtu5=K@y zn{OEma&Uj$uF8LkegHDVZ+oiR+gwW&au^-5RLG&Wk_HJG!LP?#o5_WYxnqo<=U&xf zkX`t`(@Sa08L}m$RaarQAlLzc0Fp79`%Fg*;b}oM-j~eVV*qSEO0zm1<3 zY&DD9dHg+bsKn7UkdbX6jy6DYt$=b^`k$p<_$jGt(fHp@@h^%zJ>m^U!bs${ONM7< z4REaz$%#mff|fr{+=|cmPw;jhik>#P@br4rx?Qb>oSKE*`@&}t#}QQ+NWeK}VcZV2 z(D?pu2x*@lv=0YbhrF5{M@`*&9m3o*yj!Ma+*jvdUjSfkJeqKo2*c`BmES9GeHY+$ zWAQPQ_OMn>rPKZi@7gEAy+7f+el5GvB(T=?D_65%Z>7r)$JbE03FLy#c;j~3vN)FD0n<1n zft+`*$o~Kvc(cShz3jGLAw+~BY(;8L;`sSVbDV&C4zB7H zTYIdQJRGDruh9PhgEAtztS+gW7|QqTxa-I3U!Pi$Q{p{tEAN^el9vOIkz$Cq(;~k> z{to#<^B z0iV5qGH`gv>0I@-tap~+U7#<3#2!^x^~X$%_r)=wws!eZLni>TWl8VTAD(NSRd>5u z8%~6p_hn{Llj3fdHnVl3>Gm3x!dQr&OVJ0HY*on4$B=^Ts!J6LPae3f$h<>mcY4-# z<|*aJFBVs75%;svhi_1Lu6pvq;iLlC$+}hoK(fe)pbl_=;AC~~eQU6@yLf<4C??U3 z#YPXfC#^L*vQ;TY{LbZD>)Xvb(9a3;<^e_|A#x7{@H-z*TH(cbRQ_t$Vl-@B1=*nIrRxdW)-xg2!uUK6HhHZn?N zyH=K93X?MzZMn$=za8mRlZ!*4@22}6mlPUZicPKN+S(S{vP$J+CBKDP&jg(CKPu#O z?-poUmajdoh+VEBMri}FjCn|Zfmj7C-vcaHpQi<=_#?x&7gJo^z-|l3j=|G#`47vt zpO~(A^d8l{JI=OqCYR);%wX*EdS|CQeqr>i{ij5W_HuV^oh|0Kr%Qbu&Z8287Fsqy zeB>l@3XFzR-+%`ldutyO=`vl~+pPO!mE1-eCq-hQ766fea6tf`dkXShI{yI17Oim} zvuOPnuKx1(urM|&o%0V@pAeDLoqqC?e!o&m=h01`U%tszyD zDtFlF@1xZ9D_QO|i-;Q9ZQ@90h?x|wQa~MDa0wj_PoV(URXaP`K>H7JQhl-S`PWP} zS2?8{J0Jhl`g~6Ni%6&&C!XYXJZJQ&mD$)7EHFrB#z#)aJ^qLAs9GtXDR5gof+tb= z;-eP{5#2h3^10n0106G*al79&=ATe%JV_4kE;eH)EZlAUK|CMxn$5J3i-IR?ZEr0c z@wTK>g(H?Z!6fw@jQbj7QAuZRt8UXrZ6D7gyY7E- z#FLSa;W^{BXnTd()NDtK4=E|pm4E;bR^asN4M%TtCztXl_R5ltfx!&9$KVLAXG+xO z)up?(crGoYww%WU6-gnvjHi5HrR|#%jiwb9H+YmyE*2ol%*TmQYAj#(wbR4z=W3 z&xoVC)Z(3#0~~<3P_KiG5Ca9^cF60~o@=9r`(E;A)O0s7Ibgstf{cS1+#C3t)Bsd; ztW{LyV)-48>fGurG=}ltaq5w(bDu&$I2h-gk6O?1EEYG~OX!zK*`6j2s-=Q~#`b0d z80ZKio}RTnpCrUIm;V6q^5E`hhn5%|kUmmCAYdPuXRmsGvu^ESDMozx8$yk|4!e%w z&>n+6)vMMT6K{DDSf#bSqTAZzZp;9f>5P5jQbBDkvIc#O80ReCFwf9_w96|Uwo3$L zkXIXna!=qrYUDwq+2#X~Hs!h><~j7o2DxP(=W2Zs&uJHTn#i5CEk0WV4b-ql6U`fm zqC7bZAx|T{chl;eNqm-~2|Tvl zzGo_`yE{yLV?jxc;?5;`hst70C;OgMbb_JrC(yGhF?a%1iR3 zsz%R%GI$xl@6T$D%6CLMU9XnYl|>HEjPyM^am^=*ltJP7_bKDcIXwRW5bs$&5?JT3 zd)+)Zj%mE|lNR$gJ{tr#BN^$y9+<7K8A&1V?Z(hol*qhCTm*O5H@qVPPNiBCSGI$^e&3VUyV}#r$ z0WeQqa)=pDLT*9o>luvS})r)dv;P7MD9uqoQwc#gSGJ;s%hbFEbZDu zvw4wAd8GAb$>Z?Fdq>9a82E$19xS$&#jQ=X^h>l{LL@5a061bs2RZuJo@-wpJ|K8< zRkgac(#vc~2J1n}I0aZ8_#uJFB8k)Xk&Ih9XjGJL;}P@RrlsMCygdX$1hLcw5C;M&$Z^5sYE?4=7JnZ8CTfx`ifMW@lQ#B+4WBaX>*fCVZa?g(&$W5ga@b8-&fQM> zc)H1R@_8Rd_>088DA7DSq-wf9*=}_?VYyk_e~~2~ac3$N@JYr6aM1XlQSncL?RD); zD4KBQMH~P_umkV|9M#Leh+a0b(R?>~_FWp*O-|L?<@FnB8YpLJ3an@qzjg`ZpW@&E z^gs*0nwLiSh4DK3L$=mrvhdQyFmkZ{ib4h*l>Y$BOm$LvcdRkk96D-KnomxiM%Wxp zepeVlwXaj=?-ROD=BUBkrE8e-VvA9GUI~m05zz1jeI=}XXYmcFDSe@MZNjkomae?9 z#(J8`ljEMOt}I`}x(4D2QXyf$z#};Kt!dJw%DHNOWYn)wPg-Zwe+*#*;Le)l<$Rer z>5tww*1AuF0d4I3Pa^Ob9Q6MHo_v0_OW~%YbF6$Tx7Dwpf(D*ThFEQjd1#yP0Ns*0 z6HD;ff8t-_kF$@N0bzrYks0mln(SIZ#PX*90DXT`hWJ}xhg!Ro1A#H)-;Qg+zitl` zUwBti(4S6J-6F~uI5-NSF^m!1n)*xOT954u(4z!Sz~|Hf*w@Mb0Ps*4%j=o~zDO`i zeuw3*j65S#5z94nWz6AEnkUCY;_r!Z!drj`_gnt}imLDNU&TyDJf45qZ~iL0#&p`` z1JD7*LLX`GUaG+1x<$Eq^LN;w``MMqv5>@e-dhG zq}ni99a)A*93b3rxUP5^#&hYK@(+abD|iVoIo~J#hhB?s=EDct&|+ChNROZ&d58Xj zKOai?`tec3)JU(wKzKMSc*!bn9B_09ss^HuB)QDFsZD1tlAH!cUc(YX3 zuE&?BPA%C91TfsM_3kn14SgZ;);5R7FykQ})*O}O<8uuCanin6)nrLpR2ji6K5y$@ zPc5rCd7n=gdI~q_dCa~#@jaQ6(o`2FCc$-Q8@qAA&MO-4#JYvnvuS5}AD0!xsu=Un zImS*v_#-IC)sELXUh`wFQR0 z$!PxoBgE&g%#&`{Jqjsp{Lq^U0gbF!59?d44WzbnZpj`~9uFJ?SeDb+t;}&=?()@u zY%2~vxUKy-!Fj&I!*sIDu92WtC5ZL~c8CD|S-2ndpoY$342`J&E zDi7Xrv$giOk<(KVda;c5O8qxKLG65Hrlz9?lX)SI=6OUS7g8I3GBeu;91+L8c6w)s z^es+lZ1l^>Ze@VtWr>3nBeP?nr|kNc>^(E5cq2g=N;R8!o{FaG{byPx~XB4(71a;@^a?ZO!GU z+U10Gl_5Jvd>oK?&pcP>{<~-3O%7;R!(J}4)~)wRGe*fhv!sqNs*1}dN8&v_>DC@B z*YuqcE~mP+k4zGnrMF9%#p4sgw~|OZbAz5nGHa@QJ?<}McKq(I^6oq~cBd(OZ5Nim ziT4%%0LC8&EHXSYTq9uZEd%Y(Y~!|T=0A$R9sFNo<0(8p;gj}jOC*TPDn_yyB#}d& zUn6J)00$?Nn(}Epe`9w6NbZDRHXH3yL=Mx}A2v=svtDMMKV>$bIyR~G?ZGMORK zRAIYh8uYTfnNggjS{*w4jvUK1=Zs@UeR?0DpAEhxzl*#n74EDyUAcHzs*sLX_=j9% zVB@#azSRAoH5&~(;l71&dcjZ#@=vdjF<**0e~ElcZFi;UdSurY_Nj9mvc!s4G8Vzf z1325k8OAI1FZS5J)U@w`dKKoIzs*@;04Lrf?8lF%9M{m`^5q=66$rGs?ef&|u^EJ= zi=inkV}F_Xaq&Gh3qKfKO{L8^hEwMuC!v#;=Ny6CJ-DwvlUmoU({0d6!RHb#59YZ3 zRrHmo#r-?`Dl;v}uw`KH6~tpZvB)QD7GFRr#;Nhs!gq>BpCMOJS9ZY3lb@J|1CL=| zWgJE(F^nD__R{|V(mE&hz^%d%x@5Lx@{#&RttC#~R`Bbcf9Fj)fdF&50$ZOs+@TRxoJvuEa%zde@5c&R4 zj0I3~ynjmXg6B<357G70W1jMZR;$%?KF^cFx;~+z=oj}Fck#)oKFQJxgA{us-lG5j zMnZycdFHr(2&aIoJ|p;w%GBzXx9~*J7t|#N36Y<37dHqmTs zEF7H&d{W0V5GHZB5;hE|%O3qJ&Ad_jQa6h9yNw4?((Qy2oS_dU=*Z|*vygrLIIlMc zlw;azPY9pSxtCtEMpJl z6jV<&HjVD=s=e{gYV#=kS!ZZASXo&CoQGv;Tl0L^+JCc#lV{=^-xAsC@FdYsXKG$I zT&elnk?D@u>0eWs;%A4T&9hio-y zBZ7am-kIi&BPIU;cO8(IB$LQuI#w6N3m=5{9z4_jD$6#ldv@yu>`AA@kU~sOcID<~ za5p9~vpB9V$G!*9^sC87hpyvrj8(0qIFSe^AxYtY$Jgsy(pXH|4viejK^kfdFvtA0 zml>~@=BMpGvj=9?pG^-|wOW(+B^70=IyV^azN?dpsv%zR*4RsrEN`t^vEA)JZ{`@Gxe>ow5e0Gge-AZt5Rw6Nb%ig zRq=+d3hMfm)z`GLyAQ~mV!GdiHYfX6Q7``hKFUD<0D+3B4UAVa;_Ny?5AR+$%#4wa zUBZlKYUK4DI*P0CYJEod>en|6k+VSJ-)ZEkI03QG0f-*;?9yD(ZaX7}&ibC|_B-3% z(Aq}MRArfX0CdX}z^htjlGbzs3?8XQ5#e6BREGgpK z_i{6`vZit{ zRe(H@NbE;7&1Q7-M*O$byh)9`=gt^lCq%o5R;J*nO+Qny#jjEb7e^)3A9XAALW2zi+!JIRoW9 z*Jmxa_MVv$ia|2%1e9V!k?HG1l4{JVe9Kj#!`;WSBO9Pb3xl`R`W}L^w5tniSj=bV za^Eq09o~eHIc#Y3r%t0e;oN_vh0mtK2Vz-E{ZV-?-An*o1x;e#j^6GWo z=!I;T$QIF@k&HQPlaEqsHu4+GX-dJ2xCp=;Z6~8I2a)>MN99|D2n2vI1Pow-{P^~$ zH5daR+TV15Sdp5$T!zc`65A{uO~iZh0+t|vS#Wvn!2-6Tis~h8;g}Lm)g&|L*cjwc=^*))lz>6}MRr56$5V6v z)%s?6qDwYeDTkyi=$~PGCtKlR`uFWPxpA>b^I%%bzoh{$IXq$9li05ro7YY9^op&$|4dn$%fiD z0_Pst=O16nqncZZP(i~vIVS~vUhF|Uo;5veA5#WcO0%2!*JNh>OJcRHfW+!*6!jEHOG+CO3VTIH=UsJNgV*>oc8IG zYQBrBTG~!pG>%77U1KMm=aRrNP!2fYpP{Xr`-_&11=yFL-Yjv3Esi?6oHKh8Fgf(D zR@cqE)*-t|5;)>!aLE{znb&~1=m5#%f)8Fg^Hgp!Ox8N1+x#V&e930Y2f!);KQ~i? zdjZG2ZR5;k|O-SI{HWe3_vhWU;I_5s2Rrxlc2L!mt~cxl%YB){4F3 z$(0H7F6AsRKQGsRUC3J0JJImzwQA4=beP<-8YbUEZ_`c!hK za?`QSSXfPAZT5Q=+9SXL2{_6A9zpM2OCyy}v=B;;SPW-9c=i1LmB{J3&a0x^{{Uv| zt@g>Xaer$DH;_&@B9aFf1cTIj*7eq-rRmn@?&jnyI4oF}a(mz?1+(qf@~VZBCQj_v zl4RJdfVff5I6QtI&Z)^Z6U<|?dh#*}U%=xh{Nkb0FD)XTuit%Zd8~R2T5arBcH-f@qGwl-zQOY_BY7kf^PiNSn6AT5 zxpQp$_Z~=6#AJ_bbBy%PF$4@%P~mgC3U^@l>5Ow) z-Y{6(!}EilT0Wkeg>%*>^GmmqD6@387Yt+HfRS;#kOp>SU}GmI(zU!*aKG3y30rnr zG8Y{=_VvYe(|^0v!k?+#DuLDBy%7={kvL_zQ zYp(c*b8l~~>eDjrL#n=bIRvyz`V*7vE1d8$Jd*zSa<>w&9e<39^PBf%e3gIWKUR1T z?TqgQ)`aSE!6x?|624Q{HF>Thw1-oXr6SrgjIEuC)F=!;ho5TtoA%Oey2gVPd}0~S zI%kxxi0|cRoM4_K1D?YjE7QZ%Ql|#R?Ii~6dK_{?d9K<)VR^bB(S>P&jAVhITz+-i z+{1k@ho?toEvCx13ANANd?_G|jAv=hd48W1KiXF6Iyy$*psw3V)}yzvc&7}=V4l`c zy>Pj~`~e5>t~^9qX~(6Hdj%-fqf(3eN&V>io8ote*Tnw-0`y&WW?^w{qc*6(lHyXV z8bocx{{RaX9ZpBRdH2HK8d~3Y0_N=v!^fsdt2KiS(Ji!&fuxR7cSh(Ow$r%|4*>IC z*=CmdpTge{X$8(MG!qH~z-5sPPr>w8&pws%U+kjrYFfUx@b2h_ePd3!wgJEAp^4)k zkzjuc^Ko!hDb(ltEq%7LW^>%d9ieL6jA#^BFqdL;7qjj|)aS8_NU z6UZQs%D!ds9;K?suG?S7F53WOj3O`$UQCmf>PG`7+P=E@g=yk1i$4IgElR48tkw{_TBj@XbVb_sb3zHn?B_Jr5qW z@#p*$E9ckzJUIDaxa5N`B!U!v#E7E=o{4RftK0mhbOm{}f zXM$4FR;9J!Tugh2L{qx-rS!fU3`v+k;v+ z{{RAfX&G0ydqzc2sGHmsP!2P>0LkQ@dYbwHQzBjql zek1E~M`w9-V7o9G6e$N_2o6gFjy)@e9w~pc+)pKq;8>T+X!fryklmZE7;#dt)f0F8 z(4Hcm*FQ^_Wd8sTwA^G7W~wpALCsYCpCo&C)Qo5f;z1$kLiwX7-xX%|M6&p0r%Z=w z`!6Rv^OIcn?BR7i;%bGC2HA(<<}YgZWBex1k-hOL9s&D9YWi)TjUf*y4z`dGpb~Hx zw>TK$zGD%8Xro-d`G}y|%{(PPZypg%~PN2c=u^&Z{Po;cG2E>H{0J zuIlP{EQ-hFJJjTD&)u&=bY`&B>L;s9Pm#kJMb?yA*Pjc+6b5fFum^9-3v=`tHC1%G zXaJ5^l02LPA~J*ck&5~+;kEs)gW=B=c$Q=jHi>Cy!9fY;kk9vy4>({69-P;u=)W91 zFR9D+X>Dw;8s0H;D%;$NR3I6D^|3B--x>C=5_qgl+NDdGFY>wEs8UMvm5+`W!l^Ru z-;wK7F8n)Vr$%MEeg<#?mM0xf1$vi^zAgA`Qt;KrW1#Rwou-@O zOM94Ga>-|S=-o0J)?el6UO%B|{y6ariEX1<$#Tq}DnSCzy>kDZbUdM>g&kPZkY2-tO^Fn;QazFzHz6S8+=7Zr+7@74O ziR7@ngK<^Na+S(Vn_Oh%uo)m^jE*y3Y})nr9siE_4Pj}BO08ud3KI7)L;+ruSM{e zfP7=(KOX4b7uRHKJA3)l&zObGaBLE>7|scd>V0gJa=%{4bzQXQpYF zjc=*nY>j1-+CrXLoza84Gm^XU^5?C5@#6d458Tn@S>zut?(>(EEyhX9b{MY$_`Tp?iX&BDh`L{buk;&9Yzuv!-pX+V4yUfy z3{glwbo`^Y72JF|@b89vC*#`>5@^;ryN*HJ`bvF>;^|^lFDN&u5Rc@a% z@_)hpA@MAl)secEGrCwyWd?b0F<-Agw~hR|ckKD0O={sB+}kcrFhg6M{+02+jeZzg z_=Dng)}d=*bEV$JBp0{v2^Lt(N_P_;)d6xwPt4rsrG1(EXXvl3d>HVqlO$$AaeHj6 z7qI&yl5z)X`s@xSja(&ZsM%?Be4ZwqXjOz|E4^%f7+q^x?c5Sa<|*3b0#tT2iu#VZ z<&<|^cfx^RN$5Tq)Aa9$I^D(okS?!{!Hy~BSwq{Rbup^&OB3I)tQ{l5S|*|J%Te(R zh$Om?%~*NCLb%38dCzV!Qyg_D-6(0zZG+iWm)q9YJdRBtSkseFxw@V;8jcJ_aK{JK zdWzlf#ly+s+c;*CW%BLe90~@Bp=;ek`NGZ21zy7T}RnIX)C=n?(|y)J1U;#?6udo zQ-4_aZT|oi#NI!@yGZQLuW@8zR3=e^&A2fkdhi8!g@=NCN8$^+Xmpz^ms{JFhAB*K z<&EShEZ}YGdFH;2_?6*L6nqrYwEqD3O*FfMsOsCUMdqOn_!WQ*$!`<{CE;tfARu+w4Hu3ph*xWB(qIg!cQOlaREYC8bA^(MJ5 zfb9g|546lIQ1D=nr0NuulxfeW2Q3=&?_C99F_Dv7BZR6h%`1?kiP`cBfO|+h9<3T(zCAv!^Gd!O-FSxc#V3q?Iu3zJ% zJ|yt1^{s}9sa{#xn3g4u-gzT|oFbA@S89#Nc74WAHMKfYoaxexxl>oR{{SwUoRgZ3 zIZjIUXKjDsNOW%v{{X^G;|)Ft;nM78xJb>O$qOuQ$SxhD!yhwm-aL*vSI3?N@d5ER zoVp&PC`s&XNem7$ic2WYPxr8K&{hti{{RUTkk4@?)VC7(5-C~bW02}qvACR^9E#$! zZ68gs*JaUsLw9dz&1gWDbaNWHQS$tX$0I(StLbvwzBH)L5}z|}{+}bu#9}?ArlVwz z>qFOWwX~AM!)bjb^T(TE{BoCXBqHp_O)zeS z5E9Pw25}fT2Wt{P3gv8P@UDe>rC(|ODTdkf=q=!LWd+Xp1TzU+YZV)J5uEzhq(S1@ zFEx~#;oDEBU2E6NVv}Dag(509oMpKyxG^LE0Iufc3W-x*>p7L2UEZgS_?yIb-XNYI z8tG7*YpZ!~ZB-@eVhX!S9Dv_5XBGCv-j99%00^IkH7#1wD;-|y-qz~jZPZ7Ec>^M_ z0A%@lcYEf(YSw%u;VHjpOCN={dWuD+M|lv{Zf+S8B7fH0{MpCMK~?F=0=~)kv+*au zH@^^}v$EAJ+hnmui3E!vKR(4#w;*=!UbQ+1DqRZEA6j? z6NX!Pl01W_!cY4n3H+*PKi)IDFIq_YCVktNIXj0Say{z;^G|}>-Bu+F9BYMAGJ5*| z07~DUL{-4OhZuvC(J6m|I<+v9Th?+>Ykr3L==1IAM+mHv#xaEf!$sLkO z#h#31X(Nifw!FKN7}TO$$IEWWkdoVpS5gX**w#j_H4QrcEoRCmxe-9|$r_R7GVsB< z`{#~?j=r_om5kfu=O^2Me!Z(I;U(MzGHuTVh~WB;waVK%IU?URwK>1|N%UPh=TEfO zWJ_H~TynP7uFTBxBzxTl1OkdOPXqC-`>19vB`g;h+z(tHI@KtpxRfRBv`j-b8D<_^ zAUVzk4qMwi`qlY~mSPovARm-+f6o;3u}b$UOzRQ``@=XV7(9FXQ*_yF%58*j3pYTd zF*zXPr$3)sC5?*aTu0Xg9>0MdYZ~J2-qHNw=5z8gA~SXF*d4LgG+xYlG1o|Exspp} zY%$1La7Itpx3yH0%xH?-I8_In0Hcpn=|E{DP+iPJ?=A-?J=;Ao+Z9?+jhkshGPq#b z8-@=D+az|WDU|dbXF>5LteTI9?_$5Vj#h-pZ7NG1_2HLt5;6~=;sLv1Ian>7)vSpssKf4J0K=&S0;PfP(z;t%657HWTT!)ORYXvD z!miN2OjJ?B1g<5F@Wc3f=ilqc)~qrqR*l(#DpMdaKVOtrTuw@s=zss#`iLq?ZtKD^ z>NCL}q>h>Pr?M3oiFbg0S1eD>^zZoe?^)5anRDecayq`=z486up*;4h4LnG`R13J4 z!3oGxM?!IopI-et*PC&7n)GCO;>xp7(Fvs8V;Rh1DmbLL&_awn1GhhHx{}+D=dT#!C-tcR0J8Nf zM!}bSK=e`p896(!03)aW0A8%YX)G4Y=gRXr7&1NyeE$Ht03VR3*QrRcZiyjNk%9a; z@9*#aaaQEDiIfO|#_Zq_55HRTzYO@M>g&c@&xW;2DDC9a(ivkg%JVd_OkZO-F`}z& zP)dekGtU^$qe~L*S5cMqegXP$aDDjVsVxb(kfOxuh(H+ohb6J?-mtturAewsZ+G^F zw;p1U5r$H=URnXe5HkHl;1MW|H<}OsjaBOS~+lbVC_{znC zFaTmUoB@m}^7?=J>te;DHb!K@+&RF<2d;84 zit{M0d}AK3aJrlp{!+M0LmM$OE;E@K#uuJA9DCQJ!4#~^E4K-r3lIrCi0FN?E0Ubt zo6zW-Qb@C=N+Gn82$hD`7%Bz;C#HMj+qb<`@q7|5hxSU~D47{Z9)$2o&)2b`B$6nk zl@zDRxCroaM+0tn&m0;&RM!ij$Y%M281P0;4tn(9eQU8l-Rg2ld*|k-jN^taYgmRd zNo`Vmw_r&_jCM7L;3h+IvdF{zbcC`00C@GSzZBs${Y@0BdD_(DEOU*!H)D<~oba41 z(GMttzE=Pb_m4H_wRI%VkgugzZtVHj_S8t*#9AbUi2^zJ9eSmFU8zG7%8edaGLCv2 z*XRevzZ&U&5%FJ<<821ZT7i%~qut?(WGG;ujN>2^&N^3`-~4F!H4Jf^p8#nxWO0Fy z&ls;tjGSWy)(@UtMf^ zmW$)h5d0_bcZ_^B;n*$iX3>0IEwpf51GL)SmzFZ55KyVf3=b9Iz9ZC|#k%#!i*?Ie zOF8B9re(D(L1|byA2%llBp$q;Yv?<#8+Z#_@g(Ve;M-U(wR1}Ghw zrBn<#7##Z67l}Mc@WVm266#(Pf@s)<{{TVNBb(;!kh2rF)bn0D!Nt^bgpzXAzO3r{ z<>I3_y$@pWjAJHR60C_HO-M(hy`qZBdZjJVd;)Q^PK2w(@5*T@17trJi@{b94 z>%ubGSo!fCBS^Su#jG9; z0!a$`5^xQEdumWh*QKA2-I6~l^k0V`9X=!cA=58(F9=O+mYRgAaXeQR=`LhN!m_a& zl!53)dN_(MwFgcwR$dmYDArSv`&n(_%|W!d^b3_kZy8vcecZeVMiXv0c2E_$$5K5h zPM>q5_y&6jARlY{1d7WL1=?0qkT&G8+<5ElUk!LO_PO|(f8ogWO;Q~;SqUMBl*y61 z7~%b^e@XqfjmEV$ovQeD85T3J%WZPX+2a^jRvmcjUo`Obd8HJ-7pe4X5ly7uQ|gmvz9*{+*v+EHi;$FZG((ny0_@j$@I;5 zo{Rfmcmq}wNj9H-Znof=Ssp1ujF31b3D323x_9j-@P}Wqo_KW|t5-#6vvp`=+a}Yo zN#CA%{b-IFyKX8WQxQfDb4>W#RPcw5>|0a#m8nW@H2b^TiBWBC?Wc5E9l4Seb1IBr z0zd%u!NqtUm*X88&+QXmOQ*)+`~Q@FisG_p+`KyjQM$MhX)d%bNm z?}m0-Y{d+TXov`4aj|fEao6;(IQVg`TIs$Yv%R@#FmGJWhbP%yNXw1As>v#yPJYp3B9)F1FE{!&r+| zg38|J;q45HlEVa{5J;Q9)*&(BinDFwIPLU*#C zR1dKxUAECOvdW>6gCQzIDb7K!aMARCg&sP#{?ECv8a>6v5w0!eXM{2PtYepZDuPCK zI3RO_j8~8RMetma-Pl}d=ITYavlcUwo1P1cCNa$$mE+~gl_LPFDdQvyqZmOdHP+r= zaZ_@i?`b{FoipMmh;J;WwXlN0p`ARdg^m%nMgHr6c^<~QF9~V7y~dq;tFE1EXpzA> zM)vURGCIUqq34h?KN2g&^cZh^Cls2gXwAFr`$U06j(}&Kn}9^eY~&kKAs z@OOp273m)cHH|VGjV&U#N#kV;9mT*>)3a^CV$yZ>{43I>2Pu2am`)mKepFk@`$(Mw zPw{Bd<4a4yb@nNRovJH+irPtBv1swMrb=Y|`&${WB-8v~@pSk~e;9do(&_QHlO(@m zv>1`03W!5RxRRYf@6TRq_P653y>nymUs=<%2$D3h7kX{9J93Dy+DNM!0nZA!9QXIH z&hLl%-htp>h12MI{+kNiXj;CNd39@cfth5ujxoK5BOp1(a(Kb#imKO!u{XkDBVD-3 z+e5~*?~5KS)9oyE9d7j^-=?9AuAgHm^8}?z6d{S8T(`wCPj%5IA1nMKnxY|3lo!ETD1D3cz?z4U9@i%?3Pm|eqhB*1D<~N2tKu$ z@dsahK$q~TIg)vbRtZ$_mTh@(!k<&3ny z+;z8K7<_f7X%~l1xSmM9&4rO+v=@&*Y7v?5{HGAqoIEmyUWd_pcxE zj)SFXmo{ml-aNWysb<&OY_j~aM#{{O6o6nB45S=!f-%y%mH}BN{v~v9SHw;=XCLHk zKfV43*#7_%J}UfM@YlqXXLG4XBzFegW|Hc>lN3hwtegHlf#q$0BLHPZN#q2BTX1A8}Dp=+gx|g zQJ(et>-$3JUJmgO!~XyV=srG@NNhC=h^*bHy3&YwY+u8hEScz+!g|*e-EZZ7s5VA;zsLH8U0QCTlrnoSe zg*mu5**(2ct}=w74rohWr#m0U4~e#VRF>MCY4Ka#hA0JvgR=>kvtX|-@t$a zj*VI_5RK-SbM;gH3R5ILBKTe54;Sf;=UV-_!b&*|mrw~1=iDWHXZsm=UVUfc4yUg~ zgr=LOFx)yT+{%#;{B*bA4SW9pguX85zY=~0c$eURj07n9eVnsslC}@a0+tYrWf&nY8P;}nleeT02t}Eu> zhMp+Uzk8*4u#d96vfC>#;d1-NeK1MqwQ?UAH9>vx0`AldC6sYmp!5--$o$E!b6C;l z(lo0HnnY*RViyHf!xde`0O}4@@thDiK9z=Dl;P-LY0-+al1;w1x9Cp&&Ba+&?K(5)~M4lkwE2sMrG=D z6P$C-GhQR`r^M-SlBTB-mK{3L=LBGY$_R`QdJXuje;pX_CA!n&Ir|=!3KO1;!+Ui1 zYV)2OpBWWfcy;wXYJ96LooM~1Z@BCp-S50VF27`rEEdruuP!o+<_7Zj=b&<=4D}-w z&&hA%9}?=(>fR-`3AWq>Wr#+ur=bcs?de^RvKq{d9>06`Z8TYFR&8l)$fjx1EW%ti z4%O!*5%V{ouR+xOKX0N!mS|)JK_)p^H}-9ttyd?WfZl2dwE>qmp9eg z>2txav}+iNPmnO`GBOX+t@vX^xzrl^-pXkro-1P|yCjVeS+}SJmCx|!w>9TJEsbt` zX*IRJTldMGqdZ}9c&}UdcXqaV&ZBd2AuvT^@;Pj971ZaaJXfx$saoe1U)^e%<{$8k z_}fa=q`cKtB+9TdM!>OV?s5S?jdY#>z3_eKiY(*QUU+4ScvXH~yQVU!}&ND(wS;-;Gtdj@QF}HL&o)By&q;szfel$syVLNopASbxI4!}wVf z*jQNFT})t**xNX(=Lzm8Y2mKZx!~#gXX>Sv;Foo?+!=67CWrCC<=B$J~SxLC7N&(_aDt6an`fVD}x*y;Za!Nj7J1 zLm`S1KpZ-;$>-Gd{*?sEgazjZsUE)7GPzNiK=jW5`)09Y)FEaTQ;Ak$jL02u4iBix z{W;DmOC%CJW6J;%#|%ynAE)J6o>-L~BVU~4Zf=13eLot$w-LAla<=YrGsmwu;QmzL zP(}j{xhE&o(6t6~+6AVeU?jQMrbf7wu-g_^HAN>IK|B-G`FZq7iQ*gGTF-s38hp0wX9bkvLI%|* zsT`0<Yx&r0$i@7X=%i|JV9h!bACh$P8!hZQKaPG1rf;Y*l-RWRZr$w7C1720h1Yc0To? z7uv!ojom^H5|L1zhE=aM-pKM(7SdF;{itQ-4CZ6R&JGdCG7HAX?9*vhia^^%C=M%AOJp4ayj(v znwL?S2$c#l0gsr2u|`KZ&mP0QbXILXL2`jqow!~|_5z~UkoHA8xh1r-o-3&Q&)l8N zFdL^B134KTJu8s-MzTuRa$HB2X9a^MI6U>oKja$eyhU{pu$7fcxljWg$S}u~+v6+YZ{WZXbmgVk?*&$M{@~}aGVzbmBs;F^aKtu*mSJj zV%Fa0Nozkmw z)x5$KkWbVeIKcy+Km>DL6@C_FOX5bahGC8^7Shf|M2#U`zc3Avj)OdUF9@5y z_ImI!kMr8D!Y!g>v-n3mh9lVbrnDupc_c=M8NlN`zad=p;Fc*vTr)B*LS$~mY|635 zLx*6b^dRlep%omP0^<#X&H?0lVBqGIz2J+n=9l=dbY7oP_>5O$ z6E(DFwyijzg2Q3_35Txjyx}BZR@igvLJ)%cXMDjhk%gsVmse z5udevr|#_=a950SdvH1H>r^~(d5sx7!{x8q5fl^miO&O(?0FT_M51Wf7i+q8z&|d1 zPH;Y;eQTcad@@6$1`vnD%1bci0mwMcbJrXn(z+ehHgh-cAD12`xOu!|s`(9=hP`oy z&Ojy6NWji{6z>Zcw}LiNyZ5pMNp zZ&Enrbe_qFLcP5Ku6E7icqTwIkjE$3=DN#RrIu?w%D_7CIs;gmR*8Re=PXdU8zkoh z4u-X(v;Mo0n>3Uz{{XEIwLfTE7$f*0@b2c>aAmiMH_eh+VFYo`20L`Gls+NdGi&y` ztWBRgPk<7AV_z@%D6gwOXy(-I{tNs$v$0l|RD>~D@<=~tkB?mAuWw5Et_>1j6Fs|X z5j+vwAwn_>zD{xe$RCYG8Z(rmHMNX$qBxGY5 z8ShK}@$|ugmtmVN$lJK&p84rs8T(o2yR|(c(*E&njxJ>% zBgv5?AsGk`I3AVt-@_dq&2>w?L3aJ=BXO{HbAz6viur%`*o~m^zLz5X!(`ii$Ysy- z714%jRaS?d?-;j!r^IvkSM3*jZM8c&TgyC1%?UXl^w1CISo*Jl{7GdPx{?C%?H|01 zi4%|Zmm;s~7n^R`iRWPzV?v(!^(bxhsagqTJ3}KB_xZN={0(}pF^qYPdF0vF_+lrA z!cd7g#`Zsh6I$O1z7zP1##WEwI3$Zth3Auf?cV27GCo*gPnq0uNhMTz^{-L3g53Bv zYhM&v!Eq!o$Xeprgfj98AHorju2(+w_7B4E09nWIlSYffujWe?irg4wP_rL6vz(4Y zaC;ur^S;(mbL9I{{11K)nMVB)#e6&XYv7LuC;Us2Ysoe7yXGGG>rqA2gyk-0sH?^kidG5# z0B4T@c$>i5eYUP1*HN|&3g6qRD@_vd8I>0Rwmx0_k_S1jpS~sd8^@mvGd@a@O=TO4p z+Cc0&e1jjDJu99PmooN_>id6@=uxZ52L%;oh&4Si?>rqHtIZzDRkKQJyPD0M|e$zfh}g zft+>c`@Mh8E9rmQ(QhrjA(pnd^3|+iOn=)k{!M(*r`sirOe25ZY~EeElaPNX`g&nkW8(1PS7k&uWwVME?q45>1hN9a*IB8%D zJ~9Z)9;Y2tSB=@~w-Ra+PbbV0a=}J<3<2rR4oIo~DNA&o9q`wQ?a%Li&2^_7jFa|h zw^WmSEv5QT6}&#{iO5@+tuCnwz$5ZKgH$A z_LKVHel^8|!=*UJD#|JS?b-hT=_jLFt90Kp-LJ#`9Q~^J$vgN@!&Z^NR1pK)@^CjO zUVVC!Yf{@vywq$wAoDLPEO%Eq>&!Ap2jc9t&VJMyZO*gd-3w2%2h6+i1-+g}q~U@7 zS+8rqiEZyJ;)G!k?NB=fPzUK=-5NHpQcrCTIn@2sW9oP(#!n2JZ-M%&!dYaORk*!p zKPdv{X(1gw6~-&_@5VkAzSQl$Bg-ycX|h1xovw1@DJayJ_2zoTrk`A3IdT z$GnpJ^f4@8i98wNIZw=F(ygFejyE;JfPV~D2Z{7~;_zpJ?k>j_epV~S8(X#Vt$8^iXn*y`5EFg(3RA)eq9$LU|SU$;J? z9jC$10=`P9)~q?{(%I|r6lFDtCyeKOuu3p`;ea^&tM*6!3Iwvt`#pF{PzfVZwK*U4 z=Ou55T+8HnSXavlGsu1>XfoV*Lela#-97Jybq%gthG;HcU`gZq;=Dt~`VGdv`zT&& za}s5STTMfrc=L82{B_B%r!;FAd_(&;_;19QBs{Fztru3faWZ`qq% z(XLZz8Yv3C@Y|%Hp5dDL=zFtXr?mBhYq9y=;@<^b*!(r{*Ni4%_Iv5>Ezt(wy%M`KvdM77mJPdca(d@H=C!vu zEa06aDJ9J7i-(K-XP3JNInM{^IiXsgDwF7A%PA)#+CB_4a`;OA(&87kTbraWe6f-q zDA4Y=-}iR26=E~g1C9k_SzXB|jCCD)+TI(;3l#f3(w2%uIRkK32kC=eWue^au;}k^ zXK^Y*^6qGrj>aPxC3; zBP^^u);Y*3)x|1mX-5ygsWGnN+pDqX{{Rub4{DwZxzR4$Pqw%I(X~*IWb(Vr&+{*s zuFOM`jDdmAN~_?H1$d2g?PkX3OT4s}YX^-ax*KD6W*9;8fzMvG+W3#+{=clHsqt2e zZFbfe7R<9v5sWS|w*-zcT+N5Zy&Fu_F7GvMKI#X$`Q4IcxXWjgw5sj;=i3$8N9#~< zQ(JYoqfQu!O;Xjf*S}<6g15dN)HOefJ|T~6+HP#Et>r*5B%m`&grDF-21oa+=wBa-=*q_m#XaP#eFm4so!o(NKLoQ?_a#XK$&wLDfM zA6}*0l1X+;{v5+Iyyrs=N}7sV>2uk&>B{^@yjF4-=4_6C<=QfTm3R{DUsVlrC9xkNJI-4L>cN%PDv#GCz{Ri&ZBO+UYDyfw9~78=D{!|X#mTBxxp$j zNiD$O9GdR6<0N*}t?Z=+*5r1UX=`jCPmq>kaoo2&`kH3kN_GHt<0rp8$g6g8o6Qyr zsfxoigLJVKZ;*G+;5z=53Z^m;Zr#xI>)W}kIbF`U)JaVz-H^G|H0gBPm~NznmT=@H~^0S05BNm)}mHLE4Ox9k|V!( zz*2c!V z)1}m*(WIGTa*ZT$5;F0}joU_Z^5kUWy>a@bgsTeOLoCK*AOpF#9oSHy=Z@JO@y#<+ z@V1?Obe<}c&W}*j;B#yuQ1Y>S2MWK$a85uR*0hsy*vAny8f~{@LdRLuZahgomex`& zyiu?hQkD7TNeYmPqlGF|johAVAIC6X-D%=0c-BBAR&B+B+z$k8>5jQPbgsKZl38@r znYWVrioBq!u+Ig9VCVAuE0XceocDTsbD1s?p?^DM3`0slBWE2!7K;*>BUPTNhaOLpvcc3o_o`yyfP@7L$oV=rN|irzqLu{BYg6o zED`sW_`&V(n)9rETDe{YmNauN&%Ku_a(L`O7$4z8s~*8FUNvk3jGxCC^*wP?N9QPE zl~6wNAL@C>ttI5Upc}GXN#qPRJPKjj>9VB?wjz$JS9@+kwsIZxX z;#lsa)3$Sy`@Av01L!_n=dKSN^I3iX7N+iJnWFQ+2_C_KLF!){fjt0X2LijRyHtJ3 zRTwu1*bna}bL-Dq;(RS(6{e{qwp*cMToxyOdFMNc>))K#GmWaoMMvI)N2XrN1+zNB zHKlD}>?%sqS2`~b+L5E% zw1s|ETnq&~bjEYX)9|fHVYW93I|64+qLw*j&m<3A`c;1oPV?xoGROX|H4Ge&?v9;t zir0*uV2cWKjFLbn{At_WLyqiqu#vJQ3R@uOrUzg%*WRqfZ*q?AHY%3jsORbHkyO(5 zD4)xeZI`HCgnbWw_^45>(OxAWg5G0slg~Lg`@d7qy+(!VUX@jF#iT5}?@qso>yN^$ zM{8+10;6dMIR_-=%5_ox?rB&eNAe~G9-#_U(1os)k0S- z?7a?s#R>HX9)_SvVZ?H_JG^X-iEH1biS45me4(}A3x#10KcuXQp9#?=GYB$4k> zT$!7fBm%!FP6!?PRW)QncV{JVlE-@^O(ED@1zV5%cf{FKjmOj;hx$|GjyH1y?mfsGdXG|j^v56lZaDQj9=100`xm$vaubdOXCP;& zB>t64#r6?Ci{wPasycN&v(O&Dt!U`>^2a2qqY<1CfDh~ZUAojBHg=CjMrLKq$@1}& zyVt%)U+0?ZOZQi24BPgaAC!9Dm2q$5Yy0U6tSznI#us)l-g+GE>-03=2*y-f@CXty z8@SF`_p3fCwoC67-bHT5_g*5oE=dHCCC)wT3K`~(3puSn4wn zsM3?abL9`)DV~29>GCNhRVQA15Kw_D4g`^S1=?j`jL=<8Ovu8u){%JYFic zy_RISlVe)SBM3HuwC+aToDO)vthoOGWM2YUB2F!}SrS4wc~_8@MI(|yfM@72UH<@B zrm04q^*S(>BMEcQW95xIQqnA~bl0<3V}1cDqjA9e>mJ$dg~KvVv=(!Nyj9*3)VA5~!_vHg|iQwsr> zc%L|LY!QRcTKmt$-wpgb;{6Xu(7Z=2_T3f%6cSprVcei93mF4|Fn;JAd8%5c?DO#N z#9Ay;>bJW5^2nqtO4iM=1INx$M<=#ARy6BQ7F^!x%P3H(clM8#ehurIuY>$#+RcoK zBxdE0VnTdbpUkvo3?tK^{-LW z{{Uxyg<4GTta`q(lOa;6D%+@DFf!P|JYxc`c(3+)@Li)mrFD0&c~V=M=aFsVD-wbL zEwm8Jj!9FTSD%Q(O07?6bJD|Arxjz*Z7;PuUkupzky1Ds>d_`ei8i1SyCDjskCg2o zj-9G+hm6-+HnVqOAK0SuuH#t89$IY#jonFO)bZDfv#&Oh{{RTSm7@4^d2Tf8Xdd3$ z?qvxppp>!Rp!HTHcHmXNh4H1wgEfiZjFo1*wKse?o@s_kQNRgQSUbDmE>t$cs`Y3jGo_^U|yS%8Y+Gqj(TSpWyGYWs8Ht)zE$ zb0qFu{i;q0A1MvmzEJ(LFEtMhc-u=BaupI=O3XOHJJ%JK7D-RuHgw#jq50*iYRuPd z@{DZ&WMJ3O{{RF28eI667<^?r+q4l}g*LJ)6Dr13xX9_dIQOnb{{Y6Cr=7m>ZDkFN zESBi!kM@e^n(X{1@ms_;bHSqN(nW1<^6z-yK^lS8hzro*S6)6fs$raIPT%BK0ufRC1d^;YKWun1ld8y1TQb-Vdha+*%9Y-BI*U=g_yBt==)tRD(-EHmT zDhA~XxDQWJ#%t!k8hHCp@%M~;Kcn91cAq8M%p9-HfZK`5#k6Q9 zXas8>L1)5%0*-OcN$3T6G_d~8oFjd8J!;K+S){Z_Wu{$Q>z5K(>S^XoAzWOk0z#yb zh9`%|zdrQ^-@{#gUl57(^AyP)xZ8(SB=5^`eY*2g_2mJA5|1NmJTaVq4>7KPBig#p*`73t(^8mZGh0m=9Rb@Q z{7+L^dab0ohlGvPL&|nUd=8^14{zmA`~Vue==U#gArdLNMmgXEAnp2dThx+NpQ+(t z)$s?%KeeQgN#oT3F_-L+5=TsVb@P48M{{j5k(P}CPC9hp@M~LVk?x}(EQ$iF=jF)bC+mv!@XPmc6@QJHc6P;e#zI+RngH1xlaH4^ zmDc#SX%E7?You(pm#w1)PH-oL=bnJ>L0p_+;Fc@kPwpFGT#S``cl=FuR}jg0@ZZFG zaZo(5ZF-o;Atnk=K8;Tk9U~{-{sCBN+D&;JXN0wjZ41Qu#-%mO%P;m#;-kvD7|n2@ z034j~+0TDU{Wt#rf?RkdF7{LNS*6RBGcsxW+#Uh(bK^mw(Y6N^*SB z=)Y6+H(0Z?)Kb=4wGM4>R^lx7kwYLqfMZY8Ms;gqIw_Nn`}RMrEY|CLYPRl3SD0r9 z2ZpTc&oJs1vu-#A({E5oc=x3bhD468gbNwxSOGKRtT75U>~YINA|blAqv zv+5UdYLiTG@J|HsvFGPm)B*T{MSfc8SC0Dq zqDWN%yNl*;yZ6UXee2Gm-Hfv+rB~GZQ&!P*OG^uMQ6e-ZFaRT<0b7ib(>=O%^sXOF z@XnWg;Va!P+V3sp&kF8Nep1^&$6`l5^{wLz+q{LgEs zOLBm!ywAu3qmbCZ_04qF)h(( z;y~FMasfE!(AL+Bd=cxJPuh(ze&r7(}zh^%S+SwHjx7LmG zA4^FGQD2qA$9BJC`y$6HDV8ELjyAA0`g!|sYfokSJa}sGD>iR!2g%zukNm6CsFs#K zPYuoN=gfKM!AlKeTK$oAO%YWZ=GrTR5L2J^Zd`vV>NKAZO?BW~{Src;&mGmj&D$zt z9e$ksE06tzyhuDr;NK8!n?{Jv$MAD zMh{SH=Wz>`t4q1>Vc#_r{Ev{lVWNCDe}uZ`hofA}sA>@D>mtc-10-!CNUT~$P!*Ia z9i)@VJ$NJHohwMcTUVW8IAS>-fMUMf*FR`a2wdrUmXNj=&mgzCwn;8UxeCn}lEf-T z4;UkZou>mCVt#S(gJF1g#5LC>IX@viJ@y(FJgzlCY3V<$e#^E`uD`C8s* zQg9?u%4m&A`7(Db`o+nJ=)9zyY$Q%huLOLfuRLUtitD}}>XK_71hu-{(jz?K8bUXf61W?&-oA10Ri}mZ4Lkb> z##)MoFSZFM4y$Uoko$B8`8Wv;Ja-;JxbR4-WHTC>}O<5UPe7%9E{_d zRO3#IYVQ5|8C3n^(H?2yYYUHof_>C;DB9Zc}XgF-OvCe&Z17BEt z8$mUejSP7Tbf|HTNFp^k=ik=8De+{*z9k5gJGUp)kF!bN@cwo7hrpD7?7af&LRI9` zBiu+M{&t7U60p%$|;lQp<#;w6p{Nr2c~<1N6* z>@i(LaI|5bM`EDlW1hU=bw;yA?43hr<60pI?TF0`whGz4i zb#RPVD%-Z6gmK3QsHjfTvo&codys1O+Wea3mG+-?BzBOW^qWwsM8uqBn2dm+lfmZ# zt;v4_YDZ68dA?trwD1TA1cU5xpRH<72rAbq6v(*T+1tSCGxR2~qPNlS=T8t>#|)Pb z2t~Ts1Nlw!1>KD8J#o`LvsWW3akF+Jj>T=St}oEG>z#%75U0RPG}Uj&cFX$Tgn?d)NdyEs_brADQfHa@ILQ5~mA{ z?H~PNT2kD`wy32rk_%Z{)-*CGI9>fuZ2M=a#%mV*x>(6}P=N}w?FR+8&IhG#2!yk4 zWch%~n&q{(C!u)KQ-_`Jm@$z!>fPk4kh*!bgn+U^oqeerESM&3Wy+ zA5@6#bvt{T@35)eDz4=Vf-&{vRkW@WiV$d4xnI3$HVxX0o7RS_cX(>0`< zwrx`C0bUPI=chb=J!_xRf?ZutESpKo5(wM|dk{xnyyuGPXN~54gC!V(IorF`bp+$- zjw_$j$Jwsul^zrY!T`*;%XAq%3GJS>omKBds5?cS3M6upwr*9)3{^smF@A*~D$-0zjmNOqDo2069H9N%pTd_-EmXJQ?8I z9|~JtJI7}Z&Ty^jI`R}}3yuH-71jNSGkJ1K)3Oort8UnF$Y8i9BeDD{8+KMTf?sIa zU0yeZzyXng-i!SAgTef<`Bc`@B#=C;$uf>k=Gl*8M_hhqxvqI3nignKGcg?Oh=4QS z?*4uAT2Wg)=F;&U@%`Q~N4e;8=rC#(@2R7**wb5q1UW`2xB_D@y_f5P59Uoj{ynE@ zE{B)MD({WEc~p}?_CrwOxr|WTO0xoM;(t- z^sN+3Wis+!LpW4MQowH7+#GsPvSXWZfVz6FwDYeQC?y9OLFQ@ z1-cK{t!9|7EEGM&Z#DtR4T66T0TfS|RNP2B^qrX7vdpM?T;z_wd!<=PrBE$JyoMc_ zSKPQ({_b;(7 zwYKqyow2!4u_FhC&tcyj*FWQn*hQ3961iCTIy?=k_}2SX)U13( zr`p?T(3r-XcW*hB?iZcyC?IS(#~AhNN5l;wE|%9>lOgR{qfMoD5iSATF_ZU3G4Gn{ zc678j9N#(lSK}FPKjAsM762(eA-Q5n$iSI%`d1Ft*A1gB^GM~?<2#Q7&Cdfk2EALx zdTT@CuR7jgD>k)vB&s^5>yC%7Vf3y;Nru90HqsqMjA7?ob_9}02kVOSxwX*wD$Cz@ z?s|`hEwmj^RG<4oHJ1Hk4$R7TZFK}>^v7U5tJn5i+E|vdj!AYL1i&P5*OD?n8uA?) z_FFr~`z6J+B!%9y09}a#1f9bJ73%h0Bd`ud-NX^9fHw&g0(;|{<)1e-(l&xlHf+Z_ zmZy6sk*V7V$Wltmrwk7V1Lg-mTIKZ}Yf935h&2h)#tEhoG_JoY1J$rGk}z?Oy*=x{ z)t5)qqBk&KMvJ$WNf5Cf%ugSMeD~we27kguqsga>q@6*?#EZCd#yLFa7&X-!$}L6N zoUYXBDNS7-f$nXPeK$#h(agLg!+!QJv}EHM#?g*WGoJOA;j4cXYTg-b zC&4;|@LO6mpv`F{rbpT`Vhg+~1NV2R8*`Fsh1$WWiRZEt7?BIP1(`&A(2wp97&lWGGRx|6?ZTl2>@q3 z$j3_Rynkn7b76O?>GDMoirP8cN+OpbhSMJ5y&bs5M>)aZ*E{fzX0@9FP0!IIoZY0Bvnn z=5HD4vFhN)%M{xHAHaOF2d@?PAHvDiXS|4G2I^CSyqvkOf`4vdGki<2jkpU8xCf8< z=gm4E{Oru(?mlGCkM-?BBG9d*h)0$=`M5t!S4r^hc;@i{wz!rs(?IDF$ryYC+;;$q z;chJNF7A>GNSa0{#43!O4z#Ib;yp6%E6A;8jp1PEO7~Nm^r|Szo2KPwV(^lkI?%48 zbeZpd5SnSeDWnrLZnhCl2Gjk>*nj9vUvb+_cXy}i5nTcPha_>tdxZ%b=Z{l>euBOQ z_&XuL*L5vWkKPM5Q;y9ntDod+^h-xnyZ+mOh#$RBPfkQ?E6%A4PTi5&&CPlDcRJlZ zbeqMNVF(QHx3R%1`qq*$hs86;Bqc|b0c>M;%scnTLtLJZI>X}~IdTaW<2dIZF#7se zM3TIoEz8OsTX;|g3IUD|I`T8yt#iqH#Uqv0*y=V~*UZILl|USDqxyEPs>5Hq)U>Mw zxsaKXJBX)l<>CQz_~ab>)&-rqURrB^?X%+t891(M!t=>@uishn7BBwDy^Q9) z2S6)x7Pq9zK>JpYbFl{}DYe)6R|&1bbsmFpDuI%lKm)f^kIt%T{w=rD^>KA+7c*E- z3;VQ@5WIbHnyf^5skp7m!|63A=5hMe=6E#X4nVcr&u^WN^{?7*_$7+T{{Ra6U%!;( z9YQz(^btl#{T{y&t@Qm$Yaun&t>Y?TBV~z-(ma+I1sQ|*pYHzxo|k?GXd9I~Tc+Q*-}i4V}o zfB2e{Q;zk#ExyABVCjMC1fxHuYbNgHEj6fCLHn{|iAe5oD<9@7wGvtIp_bkoYbW8O zh8XaF+#a>@uZ^a&Zy)O`rbx0u{h=dnUVdh9&x70tEGy~{7I=-kFX5jMc%t9^W|yZ+ za~|Q=Sl}f-zcvMaduWqf={_HY=YKLt?O`%G<%^J|iRsBXKU(wgZ{1Noha_6mpOMIZ z(3C(Q^{iwWJhr<3H z@JMhT=KkXPO#c9O5MxaJSUmu(?`;zM9hlbxb>f=Fj^qcwu73 z<9}c|>Hh#8vWoPi^he54UgXc6{{Y~hI^$V*<6P4j_bm1aFdp%~KlW<+i%Ja!n`vrW zV~@vik7okEaFahM^~*o9c%xUeXA8FWo?fT?p7MrZxw5+o!O#|J0e=jE@8bYnDHz15My{o|3a z<#=K~Q`~xcSAHpT(ND44!&Uu;Hc)?SL)Kt2j)bm8G6@}Od3;NAWp8e`Q#$~~M)ACU zO`7B2n*Q0hCg2p~k&#}-@Mm4{)}5|h>OLa1j$7Mij%y2>gfhWy**n<4KKq_F6T+Xa zYle)}V=KEO+~N!@u@j=8wbg#7qG(?Seld9SM2}O`JR7OrSjxNNxVDJJxF6zGkd5C} zAB|A8{eZt{ZxY>k_IiAJbPP9c)vjZShZ(_DF5~fE#=hpY_^t73??i;@TC&*AWI$4Q zVlGtknL!0pa3g?DJCa3xdEkGDw%6Vrjl64VEv@?Q4$)e-kst@*&*@!$5KmrM9hgW;=Vbv4XU>{v4FS^920jyXL59@Ww4 z9~5*gC&Dk_Ig47&33XZ6D{Xdi$0%?P4*-MGwY(AWM#tgII)<#8dDOL=&|&*@?y*G# zM;nqTV^RTfFw96e;9zGyZQwr$X@3=dBuAoaB1q!7ONra;q$}=KFMvp4*V?!)s>=suMVVBygEg`opV0zf!g1A46EDaemU!!=KLcqzr+6k zhqsoNap{_k&ZBC|2iyK=WMv_Yku+docXU&dMlyQW%wG_G9>L%Zc3nMQRY4;xMW5#Z zae{CF@9AAP!}Zi3NPR{bR%v6Ik$mj9AgJT7y=#bm%95$gbSyKCT8;@>p1VJcJRhU@ zV^*}$bfVV~T0?7V6sToc--XFm$igmnGT@)ex}N|?;4cw;5Yff;y`7f5pkFjM(OiX! zTa=nY@mwKnGvE+}DdTA1ab7}oj}Sw?Pb$xhf6Fu5{sml=z9`l1FRd2gEx;El-zuE& z;X@1z2Io$IZ-g{{WL;Py7i>#nF5;`+Uh(*+XtPK3NPioOM*_ zJ+Yce+M-^DxmCI5&#sJxQ#*?GAThwt(~98yQKsrThNodahy2?+n@hWU#<^@d6o9cY zs_=h#xT^v&x1p}xO7va0+qjT2NFKwl^Y*OiUF6)v6hn@1cMS3Oagp1%TJxSAz zO(n6#>j~pu>}$JS6Bl>V#>Up_?UV@RE(qL(PV@sHWQ+`Ts+xa>4uf)Mu@W)5K_s#5 z;x`<&2mlaC<2?OwUW*g$w#1u3AS)6;C*O?zV-*3Jb{NRW=dV4wo`;%;6>Bo%2=n_y zwK>>lnrMqmlENfX86+5NdNAkeDixm2&Is+3AykDxa$7uf>&+e~b<(2KN!==n{HK-fQ2%1KbfH?t20E`X^IRw`eqh0E^x}DT_v0XK>Wii{h3FQU( za=F{M5zaRr#-YR`Rp_3ls7C1%g+?F@g1GzLM^Z8{eLt0GL{ZZ*a!46J21%{obPPX?~m$5?-E1xkp4a=Mn z&VFEV$4d2+eQjZ8XS#inLZf_&K2eUOft(Lo&%DyKZ9?MTUb(l5X<$S4d58>AWB`)6 z;Ahtv6?W`lRxVL#AOF(&J|maG$r%`4cBuCEr%C`xB?t!Jo33;9<3HA+w_BK*n}HTG z#GD@e4{XyG@*C0W`|nrw!qY%WJ{R8L z{K|u#!2K(=OR0s|lYxLY1YW19>7S)$8}+xpyOt1yBD9JF5xgqr4Uv$0j&Y9F&)@i# zNuV!z5n$s1A#4;JfW?;_5#Nu(xmUX#%_Q|ZpY2N-AZcd>U?X&!i3dNg9D39e>emsH zO0bPUc6>778@l9n?hhilyEdBT%j0jCw1;vrAOr6V_8+fbdVS^WR`)Qjr6VeUT#SZ| z$>bby_j`06^!b}7L(pxnH2Z`mDPojHp^IRaBy`CHk=A)3`G)}h0IO0|%n4Gz6WCElS)1mrf z6gghNm9BTz8jYppt3zQda>#_CjC{%po>9rp2<|%6I=$bXS4$v2?)?7%ERM=>yx^1V z&uXir>J1&Zn(t(9(bY&RxaT{D2PfM&p&BclANyWixxSM*An_kW134T4k`H|66z8mL z5crPsMtF^sYcO5i6gOOZdsd)$_W&}d+mJsh$;cJAiOM3<3C7ta5p6z$4TF z&1$|BX7^=zrI{oEEODy*#kyn;+>SH#s}U@BNLdre9Yd+X9r8Z7>seP5%Ou5P-R1Tw zLE72mo!oTy{3=^}r;q&><+i@>m6%`M%O9A14{C}_ zn|3TNSyLkfHVfnZtYjZi=~*|Ly_LJX5s9RdF}#SBvvtNc4p{qh>s1b~<=U%EhienJ zAyk5W10T-^ucawTAWN${mA#dK2t=H5kTO8@BRTb{h1{~q<(C8ljiWi^pexU%d6nLw ze5GVaT431U5n`+eAHs41f%k?3djnefUb=5rWQ(QO6(T)IdDy9Rnx_IXrRG{{XM)R$>!Q-bvV0 zkC*4?J^SPQ^HFP?Ut@nxDs4*OgOXXX$TiLQ=It$QZ7f(5_K6toCmVJyPXJ)&Aajb} z)9xcwHquHVbjAZ<zKxiSa%DSzPr|utJ1a|=Eatl)MQ(i7-N?YsO|7v`g7onwoz`{xJq1lO0!`P)8Lvs}*R z$BR5Vz9EAD08r56duzBZVG+8s#;&aj;as5vfsBtz&eOgZ`2OVtg7(?6GFhd%>N!05 zpRIT3ziES6u+!6Irux+slh7CjPCMrYy&7rfv(T9lLhogalg9^)=jl#WClsQLuAZ#% zsQwUqO1h1dUt4p+=4-x(+sxv+eG|h+N$}L}6yE9|Ws+ykWo)BH3Zp()C^;$)Yu)@A zcAAPXetf(f=lD+p^Tl%h4|IK3$tX$tEWjSXZ;u)J_N=|Mp8XBInv`_vW7+B2a(F^J zyL)(qm-e!{GbbYv7GQYKO!JEK4MX9lh;_Yrq|l_>1cge8rI8jr!=kKs`FQWsrF|u@ z>DH;FJ8eJc@LV!6JTB;2PBB$<3#ivn@}>E9TEi$EG0Ow^l4`xXio8jU1+!;_$MDDE zm4&<8!F6fn!~iSyiSfuEFY8ad_;v9SU=eth;xw~n0on_ROY9+u05IAQ80Xf$l()4e z`f1A-x4Cp|C_g8bIVAcMP-=@Fx1htTuHqhIs)fE?nQR<)&Ii6IRp)hcM+IkNW`#=G7Yoa%dNEk_JxSi{*x=zBlF8SSFg@2zAj=3K`S3VVffpUWb@ zKs+xq+}-PuFyzmjK3blHhJ)tO0Behv{E#cnii+ z>z8_k_KvL3o0%1oOe>Xa5Wo}aI(yeOWqOWFsnJgSmS?5ta=@N6wIKpBLDM^qcXh6k z(^0mY#S%o3d2>Z=EbPU0?rp_$p5){5t|P+D4Bj=8dD(tg3$lk99Dp-}$4-^ArWHDk zzN;bgo_O605AJ!aarjq1E#_^|-tf8wwACAy;E*5v-*0-s@R1UDisQ@d!CMEq#R&X( ztvwG}c%sy!ak1o=VvKMz{PA25!i{DvV_fki?073_tjix>HmqttETw3peMH*W`afR9 z&w(Jh2P(+e=da91^r}Czw3hJcnyj*>?{z3Td>tAvH&=Vzx#MFK0ul(`@6 z(e}$bE6Ibv2!OM(Cx8Ns*R4*gj4xxdo(7#qXFC}hRk~^{T1I6GcH=#3(yjbs;Vmn| zQh0VvJ*2(aEK710F|@xz80C*@%>K#n_LnTympav-n1q+|#E*vQjD*H(=}*}g;rE3# ze~vac^6M5C7dG+Db75z54&=GG3xrh;Mp<%Qcs#CgP7(I?R3+5t#bINI!YNW|xbLdD z@_vb9;=dE${{UimUJXk6<(OvP)g_g(c*#V~edGHxc#Forvwpp2to&WlHBBE&N$2xr zy0n-Uj_xglkM9uCr_0n=>V*15&Faa1)@!HUPR@^iW)M4sJ5J{V<~(C8Hv#uZtmy7_ z?Il}JyOC$MYyh&TbR2Y%PJcS~R#O{ZGSvB}nMr(0Lx=cP`(b!1;{O1|i(drzPQqwy zAu`Evs%kEf;x$Has~VQZTy4w0;a=Y_#h-@0CA`t?JSnef+J(^6#jC|_Iy{0y45Y5y z?&uFdM;uqoe-M9WzXg0ml6`l>9&dzvLptEbN!4Xbi@hpbrOX#`DQu{9l03RdK3q2-FsZ3Vr6=!fTyasF(Q1D7c=N*Azl=0p zPe_wutnU*_pEg-A121mF^smU@1pHfVOU1g6!u?7MsV)u8#CEeCg+x%k8D9ZN04e8_ z&~~p_@c#hq_p1Cg(kwh7Y2g_!r?%6e`%T^crM${wU6M!|G?O5apP9+^74ikQjx|d= z%dd?77qqsG?{6=sj^5xIRw(XfW-1EoCvQM_`d6KcqECr8viP@CTWd*@7~x?S z;EYy6#No0=Lt_~=jdiLp2_oLWnLolee?wS%HkFZ;N~z7x=eYP2TF~^(I^##xFCl_- zyk~|vWC%*hhU4=hjYjtm;w#8qWI<*^GMs`69-aBmdhsjG6H3-3O-l0hR!Jf`ByGt> zIP~xk(lK{jjXu$9{sDk0cuWl{H^z%ZY?_Vr-xnB`?W1<@ui=K zNr(Ru@m*bqr9f zdjii7&7MvVC!W>&G5cvp9DlN}hUJ$eCH9_o4!`m3D6huv3_XdvL9$PfsV8?B3_1$^ ziv6-2-u}uOCiB3%)0-oo`C%n@RQOXoT02c2G5*JqL8D%-uPzb^1=Q?YpOPd2k8YSX z(0|2?LXi@tjxB zzXQHHcw6C?lQxfiVRLY=J6s84bjZr8h1hUAb_Q3EckkZ_A8w0`hnn#zlOt(?Gr_xR%Y(LT)56nD+?E7CUzC z`L^SxdBvWITSm-m!badJ3d#@iuS1e9 zJf}S>&Xriziq$jH62k1_NaW#$NEO+9Ki2e540yG!wdkag+5q;!2nuFK1y)VKf`=Wj zLBX#yx7DqnIE>u+eBW>*V4Ui>*B7Lp-*cc zg{<%HqLJ}DcUJ($v4is!GP}5L;|B-7t$2Now_~bX!)p=2@<9j*;Oyj+kWPAlc;~Kb zpN9R_B8)P|#d7MZgps%+q9cE28LBF}S zQqL8OkWb1E_1G7094R>`pRQ}%!&8L{F~ZW)DOr4vDx{?~wMo_$R|{=)vn)zM1)ybSUHIPF?ah24~`b68ip zZr49dEqphvc&o+twmM`M*RWab&zE-b;v#mdZeYMa%gFpsTJi6S`c2n_d{EXR)WRMJ zrP}i>$L8EJ8C6COIuVgx5AetKk@%(XjV@Qhe`Uqi#gxr%uEa;3qdwU`TJ^gx8hk|k zr1e>K%ll=z)M1Q9$!-!LB8cQ1e4~Q?8Q;SI4II8_yV-t=U~9u!N(5kZ>j)d-Gpmd={QG)4V#7zTj-sGlA%JAauw-jYJ}fY)2xYW*I13YY+}{0l~mNy$wrZ zi5$+EAn(XKiBd_)BRLs8anhx^g(j3sCP)COB#xQRdSf~5{HwCZujE#l<+rn6vjVI+ za!%*^@&5qos&mK+i4h1n!6W?sRiuJAe96}vq}oC0ouiI>kF90A5ZuvnxlaKdt$KzSIHxtBJ7a}(w!ba>KF~(b- z#D0~Z9r9k?8#{$DF}PtmsHklg_}8OZDD+~i*PuS&MoY`iHg z^mezpj8e%3yT%NXEPY6IB^RLp9Fv3TT`i+BBS*B19Q{Y9Kdo7pGIz26)Ag_I81?TJ zt*k7@%S~qcLn*{hH%+JgrSv@xPh3}Jbt6WE+p3(LCKk-MVjx!c=8 zve3yR-AciBY?Oc#DhEOWoxZ=1T4Wb9>e3h`WsM}vIa9V@mxF-a2pJE^z&TSyB1D}9 zqbz92ovb+A2?fS8fRh5QAz7XvMkC={Cx*uMd70=vBbv^rB z;wf%6D}pe{xMm8ZCFeI2PnAis z;JKPe^j{8MyzEnPZV22@$_{b22MinA1bf$2Ih;gYW6LS$CvQEldJ$eX;T=-ma}Bk_ z6rX4UHTjePIu4iv*8tb3Ti!#3<1YLaDKh(K7Bd8$mcdGu&iWcC77baLsa9FCb0x z9D3vo_0ORlvBh!smvO>OV|y2fv-wNN5^<0L$?R}Ck9y8?wu6b?*xg*;fhx3se65I_ zNPzSAIx>~(leexaHi0dqXN$~vapr$@W8KbqCxS`f6Z92>qQfg&M=Q%5SQ(mEOfi$T z)?89JnHZO6PoHkq9=ws)*PhiXSB=;;?;RD5#Az3ob!yH7bUASmGAjx)w99u)g>7|SebQvyUguugtb8y{1_ z!1~tuT1^$P*s;jS>Q|LuMtNoHwCA<}tKAAam-N||DN$}&jJt^1{4$?VdXRV+0DJLW zd~(Ms5p;@jat7Rfy^en>@~eBfE!@r-@aG$l5^@hedyM+z*QZ;;j*+yb_OgPwKb8p3 zKE{;?%-N-6qO~?{m?gpU4(>i&fOel_*BJJ$L&vwSbolL3GV3IuZvz1~f^gmPdvVwG z=tJGD;fr%KYzG6OA6!;{jB<2jkn#J~+(t(LAI`Uz!qJ2HlRql8m|=&+T9vG%klMxB zT=ixXl1EO%^sZuiTT8DE7;ccfVHMbC2LOY?`gE;N5yyQOimqMNgkRftj-=--uJT~x zuo>&#u&-_+hr*4$w)v249_JYK?OtuY{SS_>CwU##hjLBsrwHfFytX5`$hS~EJ0I|` zT-V|cV)k+c3IM>*%s}tcit!JI(uo@EPJGigqYo{~AGt%v)2HQK?~FAIi0`fd%BrW9 zG3ei4twlxq#EDHRcW0seDoE2xo?(;oZTuI2DDXsK@BHP*&1(IJJjITC)SnHeS@hZD z+q3{Pfz+Jy*wT0u=TTTm`30jB+aEMttDWm9Tf{nTKFWQiED>$EcfYNh-&VqyGSGoie_he(D=!pyEVTjD$U?Gd^(E1wrBlf|!vy;a9e3Kx_wIpMa{3EwY%A4e$Gddvo-zq)}y=4+8 z9DIVaZV2n`UaHo*X;7~iAau%uO*T4L8)6*#04usU_@!$P>XN?a19g3S9pn-$gpq9+ z80-S{{43Ia7hYOl!+4t3ryZe55##fuSi=$sByK&hDO%4;j@nsX9AOyy^flt%Ldt$j zkUhVhZHB1|$>=KAq|&+dcCD#LuJ3~HT(`N3A%xv5eY*~NeK@Shd|RyeA4KzXEm7gO zTe73bWsoUl&N0XtBPa8(mqco$uYCUiTI=JV%=mva9As)rz;{2pKgzfEG3bn4X&+a3 zKjVg@cN593YH>u8Nw!I)jT%6pedXDV9^Z7=%WdL~O50e}=CXEZ?Z)H{mi40T_ z4+p(+wsymL$o?GG^}V56=)-_jp;r6|quD|cY#nJ%N+<2Ux>3FySSbZSvWT6dzR_5} zv+eT1r|S)jl#YCRklYW_we^>`x9|T1vn@)KmFe zyKHlw`R2Sh$K8_iE1K0V&xwC&Y2di{v>GPC{>T|q)MZ%yy{p5%3dt>}jjb=BVuv9? z9_+jfezofV03Mfr#fEn!kM?>dK>qR{<(l&^hG}aTjI@gg*f#5!)bq{@4r|fGOZ}O} zb~eL9_v%l%`du%>{{V-#GRrN-gQh!3OFJ7_iE>U!CvQ19s5JiohaV3#El%5A()3Fk zTgyonYk6UdV@Bw5tO^m|n(st>u|I|>WDB$9$2lZd$E-zE^qc$7u5@Y1YZdn%hvEMK zik>%*&9Y0NVsO(HF{wM4jGjm4D(v49JY73}^5F+T{;5awuN|3WM^g-jGt+XDpZ@?= zX~6Rr3p;1HAoa)i*6$yRxA9-z%)Y0G>rH*g>$NR&QNKwdyq-dm9I~Ub1I9mrmy8~r zE6?t}9(+I7FXh#>of5|C>S7vM=ZHxokT44~WSkB@mC^wWnDYjE@@qmMKpQ$>em?b- zv32F~P5tcF79yYcJ8{wMJV$E4HzB@DOMw;E-fX<=?pnK&;X zDgYyKv(dRzP>)HJOb=DPTEs$c6fz=n3au$kgU+6h!Dy;nO)>&II9+!WyH!PQq* zM~5slr0Y6W6lHrP*F)e0@NKK17Z+=T$qGIF%{E^G+JZjIa=FfaVf{g`s4P4cqvt! zLV2wOtgy|mQtPs%5J%S(%_raojr><}6`sFo9k!vO zTp+*FuKdWP9%2auY|F}JPf=Y|CqlLwaibQS=+6Tkg|C)oG~On0oMQecy&cbzHE3Dy zWQxi+k(wYjpxnnN&~sRW!rmvnyD4p_Upolu+i`Q zwfjU1wPZ&CZc@YtU=Koij%%pY{vmiC+9sA=LIsUfw&rjK(a`3+#fY3Dp~_`^7GstqPE-P zM~Gkq%VA{adXBZsYI^mqsbM4+S~iI3Ck)Y8#}tFHD(Ql!+*g=?!uHmbVCmX$$90BB*Vd$-@n;B}2QB#Px=>KUa9*%e#>4B_{-qt z@gAe1!RARUu{_6Ax{c&zVi~-(jiX%kz|D2G{v5Uampo^2@Xx|6HLFf-^+L&T*CT6r ziM7d!GqdFxQ`F-J)6}n4G%)UUQ)|fc?(tZN#tlX7uE$UNMf?ZWyc^+od~llGt=d@6 z9Bpq6khWqbAps1mbA!$eeBGvag5o&TTw{)d1GulSJbB`cXUE^N_NA?Aw+nl77Ox$) z=;I5Lvq$oUUO3%>j(Z++Ume=`PsWqLJgpN_m4Cb~X8ka=;bS1DD9(ghO(uHyR_Uoz zs@2nI)4A7f8Wu3V7!2{-)1`QRwEC}(^)L8AG|LFJJxf`Ubn7*l**vKn=gbTkV`yBQ z^7(#r1ARK>eub+ZM;|UOTbayNReq*+H=fdmutsu zdh!V71&%u+ZbI8Z8?Z8K<;`V&8QXydn|En(JZ@A?6`Q1CmpH>OUY$ak`W!|tl5vD$ z-=9Ox!Qn8{rrm1l529(GE*}ioTW+${XPyhF*sO#_z7R)Il{>iZaBK7f{t4TqB!3oK z0P)-ip?T5cJC}mEJpl)fhZXa7f#7cxc)P^69wF0ag=Nzw+V<}IR(Ti_NI1qDjoAb6 zud#pNp1u?D2ZR1HYIH1d}sW9?cfcCFOT~02i=U2q}T|O)A3Q;6T zVMD+Tg`JK+ELYM000rV%G#?K~Hb{G65y9k*tfv+8SH`<&uRbhkwyc@jv#?Td3nUW& zbL>yyUrKx`ySLGNJ>l7JOlnebY#CT%d&2UQa%&9F=JuH0?f4?~l|>Hh%h zq_vh=nPiZHCF1~mr;Y|Y)oo1N3u5rQZbcz}Pyo*zunqyo(z9~9E0)g0>3Lxyv~a6= zaQ*Vcv|}A}kGe-(am7)KS+TgeDkD`YN0%v#l{p==^9=sKm1b#f;@M%l`J4^0;BrFt zkg));JdSb4O374~!tD7D6^k#Jp;VP8w^NMu{{Z#V=4!&SI`+PjX~9y`^czmlG6~2i zN4HVUMAug!iDZssz#+WGQMb22#tt~FmDJ#oqf3HSj#D`KMh*eV?0X*HN*%|TEn#uI z4tj%*-8jzPap_N(Rx9dSqUsR5I%KNNZ!XChx!TytT!t87kblOw7;fGRsS@NUM#8j_ zgT2^i0rrA1gU3vMHPp{G=uC0*!vny{$4-CG(zvCb0WX^?g0Y>9frvODV{)ZI4AOD|9Aus|_#7TM%nm*p}d1 zgp8TQg$6LdfDkT8+&FA<39mf()8j85!=Y*Vhr_#<(@CA;ytk4CX$}Y&-SYqe$QyIJ zIn8>-wf&9kD|Z#FsCTq^mNGHw!;|v2{{XKQ&3LYLOIY3r49Pv@F)|FYpks!RD98au zGn`_rO6LwHllF4t-Jk!|_bB6O6sZMKx}K+#&%O;d_9Jm121G;&@`5+_Odiqk? zO41;iNF|R92|NzQoh6vNW|h_Qysi&i_2Zw&*PktqtLkP?cx|IxD*4G0?^Pjk2|YLp zap}czeks$E-8{vCpUO~=wYDbH$RGoQ-=O-M^aH;${%6ajd81RV1+)_5OJnHPhMYcCn)%UoKzX6_bvVamUxc zy(JBG4w@W=zMC8BA{$Mq98vj_FI7@bc*qPl5^_gQa68rbqo2=pjT|g-h{4(bJhwtg zB}Q|cXO6YGYi%XGv&^cVV|;@x!BzA;l23f&uN+nT8x{-ph*N0TR02mHxa5v|b4f&} zp~PxY{{U!S>GoF;9GL;buF{GZ4CI515_)GR*NVC0IpY)BX>)w)id%O$UUBnhB#)^T z*=f35aO+nZmBIPS2+>@ODvY0gr|Vxkc)P@q!{P}eV9$oy{$DCaPBGDm=bfPQ+PLwL zmYutu7<)N-9+P1_ws)}1lCtBFK;ef?s(xU7v&i+X?(f7l%c)veNhB$8BDA75b;dqg$17qgs%=yFFW3zLMtEucn9O12`Q<)5#gea1L>gOm?ha1K(-aI(^%tI(?q% zK+{S5L5V*uMn?yuVB;JL?PbyK$A)b!t;@$L3;W=qfMLlTgTeZKm5Zfm^V?~!3@+&@ zcV~4Al2wlwAdHTL5sX)4ljgfQR8_Piu(oYh+8c;Lkz-sG1gvaalbjF$Bx9z1ja|By zZW;WDt4a4wcjB+E}(l`&5r35;8_IPp|+CdXd06#wq%RjB`S_Hc^O9 z@0)QAp2Lno$;aVZMj9Et&U;L@R4pXx%F4ytbDa5|)Tsbxj&t+^x-mRYZ8Q)=EL|1% z{lX4&^siFWXS0UXHt?mNAxSv|^cf_Mc;oQEt`UH@ zSmupDXW{ZrNFUT=)1F0lHdb-NY34?SGIs#^0F%ym_o|^DTaLTtwas)baXZXkXdo{m zq37_fJK`mReUi@f5@fcK!u-rKBwR5#;Pm4oj@YU{3#>eMX1ay9#4E#pG?JsmFcG2! z!3ASjfC{+){Kc5(liIF)K#J(wTV09SA-0jkkq|$4TwxA>+2`x{R8+0LK5k@-`p zIg?wGSfwgIwlCx=Mo!T*tGAw<{{SlDw7c7R>@F^Kgj7p-2#!V@{`bqk>ymIQuh-rv z_11|GBKrKdOl7B)zaA^cH1=!lLr<}lPmt1vI6SuAoO);0xT6&A&yU1Eefpl&@X`cn zU65@f#0~|vh zYpS&IH0Q*SXx70`+hv8_$@{xbR2lRyg*5fGuwjH7{{V$o7~`dJ z-UDcQkU#E4gMP839Qc9^6-(_z~UjUR80l*^Ru8 zxsN1_R~!?wXKS)a9)shVjD8T*W!?V(F4Euuo~n4odAEo4yJYx}4xbIqBe{XsYJrDj z4A{@0=Q#8g(Rk}qd#?{or`t%X^P?#v7{aM$8SF?LSCV)%TaSyj_fRPNCBNEj)UfA# z+q}GIuga#np&L?nFl{-j9-HIoqSHJe20DQ|JFSj6h08IVJg7bTImE!{;5oH=JX9y2^8^c%-%0Sp<@@t!=^>DRCIt~=qi{1(0s@jbQ6Fjk2PjTU|8EBU3tjJPA7-g_ZoUa{D z(_Pe)X`JfLZJv+t&heaHqHq>x#ytZbpM`wy`&g?V6lo>0PuQ5A-B?$@d?tz#B@*vf z63M#^Mn>b;*1muJrtvq7ZNnYLIE-K(pnRl$13XtXT{(`dC&zQ;+GY)huOEqj>OqNe$o;ug{@x8hk2 zJGhWs- zZw|foogj?8&caV88+vovy_n8ZYE4-4=9F%eIXf$9)m7bFlpt_@YkKT#zq5}%Uh6o+ zISfEN^~W`>{{RaQ#D*1ixM?`)#{_zeRurB&@pDSVPB3ynDl`88*R7l8i%iA|MoLHQ z4!@{9=flfM0p#1Fg*=hBj@9L#4dQa|beVQknN+U@O1Z%&{sqUqcURt2zYXn-CvZz- z&!}$y0IhRh1~n8&F0AJa7^LPumvZkfkDDEaMm@-{9-fhQ?kT4!*z!LTd=&VX@l(gQ zx4s0^pHVh2Lk-Z6Y6RUMA9$}^8uREr1bjmHSL1C8)5dlN&O>n=!FMD4h4GxJIOJml z{uTNG@T$kgJ`=vb@lKz2_Bk~t2>Le-10o8E;$5=pwhB$J7L&`%_tUZy`K&Ba?>cgU)@2rfYKE<9OY>8OLG9YTQgfCTVV#nBxszyC?N#(W0{h>?D@Ets~f4297rciM3 z+NnAJ0B%uVv+^{EykuA9teSU+wEqBzT4%(y(zVI2w3d!bc)rIVOvJ>E+yX(#=xgfB zf7(A=xr2PZ9K9KC2iWdE4DrY3UqyqGr%6J4o-QGKN{&%I-&xT#-DoOmmeE{=A(zcS z*dyy(kTt@fMJzBn1Jb@_xc#6!K+*Y9XmeXUirZc7=D?L)_2Ah*`-?{D2a=Mo_`oMLcn+YC2!+*WvAFPnXNMA7NnF$mTc5 zBd!Rqm$mQNqrsX5fVi}|zk7f`bqiZu`LZzo0AuXixaxC`E7dg(XT_TT0Kx4q;lT4?RK+<2qI+m3!vwg739PrEKw)H8HP;s5C3D3SO>$p4v;9HBBwJk?a z*R7>OWZKZkrJQzG5rOa5@vfrZ;fIFr+|6h_V#rB3MwE=6ob2>IyjKr5EZm}X^7Fw$ zT|ZOu>TeBS782Up%7hGj(UZvIjw?e!@Ybkxw3hBULUP;LNE!7f75bNL@HXGi?|Jim(Lt z=qe{Tzl7Eoi(Jb>hwWvh+g|)AgI&`#X`+Tn?b+?Gm1LQO?x>&=GZQ9v5I*-q#cTMN z!&ZL`d?Dbk8GJd8d%K4Ce@cxN&cVK}dkzV2tosl2!s0hGdmLwiY z#eQ1oiQ(%FDLg>wi9UZW)s9j}2O<4c6m=cQ; z04M9xxEKAEJ{HCs7W&z8#5UHKA4C3!UeWMN!-n; zajpt#h7U21%2nQI*?%3l9`*F^!XNmXcwYyG0iS$bJ@!5r#qioX+9dIp;10N3k6%%VGG> z;(MJ*^rx}X+Ap)K#?r>}IV5wJSpYor#d-zp{C+0W?d7xp!EU{^H>zA69v~p@*GUrOo*_Z}Zl};3}%f1&aa4nW6 z5y%->vvguUT(S9&J$|**YNzc{#&8pz%DK+rj2!XCI`sqIvar`v2;~wfLI`$joc11^ zdXw9lEv=C4aahJt6sra}9W#u9xE^uz#%hEXjTDmz^2xlAodPxo8*_qAG6?CMVz#i- z4=|560RI50Cy+kBtyh}f7@HuOH~hO#Amn{{_2@D9)mU~iwIqsbc37fdRCBxK_Th*C z5nM0!Y|@q=Hp2PX00$uQbB;m!n(pt>8G@}FNVh7B} z)aQ(G&{OqILRoF2j|dZHWZq5~f&4wl_Y_&`b_u06WKXoB`HvEi%&5(=PSNuO$p91I zHJo2G>}e}SYHn>oVdNhOr1w`wwM0^XAKrMh#0FBIr*IlILQa0$6DOA zxLasZE|`{bQa(8+pQqw_bj4(95L!I)-71BhqY#-#1b|Bg`edFx>u0fpNB`CKdn=90 zu(2d_v<&`4R;|2}Bytkx8;%bIjQbz{y?LA(-0@soM=i9bG$5m{7&t5Q5zp|RJ9~Am zp343i)Vvc11$hWYRGy#Y{x#-vbUv}IS=K35UzoIPLF8b8*F8T2SyM|TwEkRWz~B~8 z#E^0Kw)U)N{?NKREoJf}ll^NCo=3-_=%dtup4?)uBZO7Y3co03C-NiwIqyZn#qT6b zZ7grKS-xzqTzy4t#cY@n$B66!40tRVUL#xb5pxW#WZ+C^>tm{q*N z_ZxzE=sRYqTI9Wmtzfga5`CNxnalIganC)u{JP?_E!<9w7F^ zY~cBr+*|jJg+1^I>IQlDtIHfLe8gbiE@KOlpb^P$VcQ0!F2ig~o4ad3u}s7nB?kZu zZ5@aJvvKL^Uo-2Pd^a8-xW2WJ9g?4u<=O!!1e21v#yxoFiuwwBvu~|i>CwpS3N-H{ zHdku8s0=tfmicfybg!N@?PeJKLwb@lcruY802XEA1mF-?@dvGWxb1Cos}5(}Xz@$7 z?%Q|yfXgn$yCM&&d|R@kI%8I(OI*`Z6cR? zsoXMy*FWJXKqZBNWMX3otC;vBIY9qlFm-n>qU9iqRKPhG?fr zBO?SR!;fMde5co*amf{XVAxV9h{y5m$XxmpRm*(|xr-8cvItx$=Wsd4U!WlRcF3;L zk($&GGDr74y}17X8s#QsjFlulagaM7rCpZ()?0m^Vw6%unZXKiz&YbQ@G4c2R&3GJ z^#?bOZ8tJU^0Jl~C)oPutzi5@kIm6yx}A5+=7AUo?(b5kjN!07Yevc?gv<7ww#1F! zco0+!mIL@kJ^uh2&+)P>nj~cq0%QQ5zbPGlhKGMJ#YRw$_4#_C8QdRM5O3&)Rc$q2HU zusM=@v7B|zWIyM%X6F^WiiBgkS2{gU#B*F(+a$$A%?Tlc4o?8>=dO6KIMVNRDPYo} zu$9u_-CD&a4$=ble35zAL52w=FVEc8PLyQ4y1A0q zNq0fF&xFd+NgTwIWFCIE%30rFiM-* zR2dMm$(85j#!Ba$VwvIir;Aa2N?8TG(cC12s0VyuUm#@h$;JTAD))&sd)clv-A7T- ze5m!JvIc8~b8jFUe8mDj`6Pfp8t85O1$(YpTx;57H_mO=HJ&?5sMZB!`A!xmEtT%X zo!p)}Rk-s+RO1yUqa!}vO={y^w3||tm{te7LVj(m^0%i=s>_e9R8?zepx3S>o>|5C z^5aHa8)ia5Iq#9jJu_a8x@Ur6v`s?R*H(rYztQHpOZQj(*b)!{EEwcxj2=P7auz-c z@TQ?L{>r}ASz|0v&movcBl4k?#fCrK0f({Xm$FXG-kMS7j2^7x?Jtg(;oVmL&fgE@ z#d9K;AAU@h1D@4^@Tw`thx}KsS>T(Pl0PpP!CnSfbjfPb@gART;VbK(4)1xbj-Lw7 z?7KmcR3Gm?IRJ2ewaI)h*EI?Bjc-cQyw4^SX1P`Av6wK3h0WmY~qY>R#ANq zOZaVcma<%AgNdaJo_aC#uMqh17Wc-YR3X&Dr`tFguGhd9sLdqMiCTFilrnz_#H=zt zfb(5^-VoBfRjA)wYc4V_6=7#tHig;-a~Dn6$2{@Cz^rFU%IMP#K3b2M`0UvEpD97t zrA)d~BI9Vu?nkYC>u>O5;p7pUYl~>-xmd%q#d#;$!<>+rAUWW2ag3g{>tBce01hth zR?^qQGL>JyFWTkn#y|!@4hMYo_N-nR_dOSiq_=0l@1&?1WB_9r#bsYUqx`bRSx%&}rV}%M(eji2T2w!xJ{=cv$ntcYXxozfUcG6!;qUb%rkt#~v82`EKS4c{n5qbDVNX)5l-Ia%&oV)~!o6ZOD8)th_ZABVPA4Q-?iIJsOq?3jT4Fs4~Y2d5x=){4BE zGrb+|M}6j7cuVZofk*BYk8hX&8`{2Q)x1yQKMBF4>;4qKxUjvnyO(o9NJ%4*;KwEp z%%rH`jyrnSxJi2}=~r5FGPs4LP*)kp7~~Q^B1L(|iQ(&C5Lv+srZ-&1vH~-^_v98H z*v4xpX?vXXTa|4OpjYGeg9eLj7mMGD$9@&F(!5c11fnzocX6NYxhxMP z@wATh@1G0&38LTVF>2bTpBt<1TVXPWQwsn$lwr=}kfi?r4?XEZZOX|XMGP#bJ9Ak1 z#?Rufg1#a_WvlpKO4YUrnPn}f$hlyvn9H@#MJFVKjxo(8{{Y0_80l9Mh&(N;-dh2L znOP%kz;eosF)QdYTE5_K4{4S*>jky6aK@tx6l$oTb@@O54_=j)`ZcA@qB#&?^v6Y2 z_4lfL*U;{cUrtfhO!#i|<0b5tt93tz{8w!G-?j*2kOn*)lXJ+&P6w@UhsB;Iy>?c# z@oProY8hj<2j)G;+Ht`D0QFbt9GV@Hsg4x@0gRE5aC`CkRcqTDdl<+_Qc<^pKmeY+ zpG^C4QzasnT}kz4=T?*A9}+aK*ZOaY;!iA$z_zcvgPwQXsT_KK6{RM(uinDVqj-D7 zuJ0-rH$FsvDCF(M**me&k;n@GRx$|+w{^Q%+wXT&LV#k5@`#CA6=zDcIFp4>qx*aLZr zTm)Q$vuOl-n(})X{v&EZ?k#lvRn-cYBIJC`-81ubBi|MK3;m6y%eXzVZDj?#zzE8o zKQ7gkYv4Ts#^&<=7{qIKRiz37s0t1UM z9Cqi{v!n43#XlA!3%?8M7cCJfBgpZh6UIhQEHS|yKN|f5({u=LwI3?hJ%An3%ELGV zq738~J%0n9)!kWmPfpS-PL-x1+C#Fuhaj_(#GZ#4C)3iZl}eJ0*>y6UI+mCF&(2sc zzBZ&^WnBXJp&Tnu83B3#F~9(Ef!eOE&&7*)R!O`zu0yM{Jdy4yq~vfiat~}Ddi^c6 z(O`>CjZ3StuP?IzjCK6I%~X97$-zcda(N&C2pu|Bt~2gTa=a_({`2!cP}e+tsoX_1 z*Mnw>V)@uXGAUqq`9R>1JN|jCU2|8ypGa#@4tzh)yXlzp(71I1qt?K=j96c1KREQs z^)$3$t$0selIzXhk8gDdj|w=>O7eT0Wb@5xx5OVGjTC5ecuQAncxDcY_i>j4ZZ?+t z*vZJ`j(w~2B8;tP!Cb`s?zv&+GD-rRUF`vpZ>S=rOP4z0A*pk{`2#$ zKO1Ugiv$I!I+ z<|vT|Za5hA=Z^UHq5L^%lYop5py{7~N?fuV%5dI)dHKC3io8o^$hN)^))FK0GcDjb zIPDlaNF4wsf$-KRB(vE%>8OxLrnn4Qs<@R7d8=Bu6}Dk&h?q z!20u1+cB;$>)F%dh}lxd_B{4t);XZZMGCt3`$^pz+mKo--^!oZ{YZ}&kgEY zO__#Ec1y;*G6G15#(cLObFx4N2VzfZN_WwqhFcsfbEf(p`|z*D4dOotSlq~`eT-jW zyM6#kVO_qz#JFMg=cRK4NY9QGmy^tUDOlw0{ItF8E9;B5=SegxC6Z1UGy zlri62xsi&QBtixh9iwWw01o|muP4*|1MyGApAt1`JS(rsryC1+ypUjqWhpsr%ZD7{ zlo6B0O=zy2jd3ukJUm>tJ;yh5%ID3KYN2E55kOpaz!mC`Y?p{W(g6s5>Yj4FK4FXsi0gKa z`f=ohV)sa%BX@Tayz%)(6_uk5P8+BDJa+?;^{UHg+q|bx$fp34%J&!pfPE`Y+GyZ` z<$m>{uQN=?#yF5D|tiaBk&;iJ3KL;yKg;0U&_b>O1kCDS3>1$p}!h9tYk8 zV;@{_YZp*dbtV-Izz{Ll{QY>X>z9%;u1@TJ1o6|;>A|i$#XcWRXHSv|UQ1vZBrZ9~ zjEBPyLPiMdj^eGR%-s1;3OekmaJuFEYGaVH;x=htBP+E4+kucd!5w+Ud9R9oAzSG( z={EBD_JdcGe79D7OCuu#3{t)e@N#jGxde3Ly+g&m5Q|aJqtpB=D%;&##3Q!~`8zl# z1E9z~PkQmc7WiMo+INUFT@O*YlEw=_@_nVVAVR83G>O!LNzc6r#u7~<&7C^+Y0XMr zhtfV4){^-x!n0ISP^>A1b4SB#aCmJ6A(+e{|u{2VQf>K8HTOwe$6q znp)0S%o_UGm=fkNQb3@crA`hqIme;F&2`=v)ir%nP1L+QbA7(*(UgnVRcC1A$r;85 z;f7q`af6K3lY`_{5KzU%)OdHgKmXRfWpgpq+4K9dyawe%=LF}V;l7&lp(f!#r0f zF1bCeyDj|0DiBgtZ{3Z@3I<0`dK~2b6#E;wE_EA-3S0LECc>A!ae9kJgg ztDj3DJ6!A*?l{^x;Z~7`KXzMaenxZY`uo9TQDhCzW$`I;7;X7C0nE+ycx92ngdXQ|VqHwSTnfdOQgn@V;&b zmJcbji{E$6gMq>3AUc% z?f0o)Dm7Ubar?Pa2_D$|tLTpaM{{Ma>Ne2G+lXcgR4aoUf_Eq?&PtbCE4rzb0%yK-Cc}Sp> zvNY=0#{6YTJvtxGo#fpGN4rtAvLgjVXvd}koSfsY7~`*MF8Yq$2`&uDr?T4I2ymDa z?a!CHgM}Gx2cS4TYTP#nmZTIT~AMwU$kuvB?}8g zP_4N!>>Wyn1QDNJNf`j=HTa`{CVlgtcw{V)tYE*AS(x$iT14R5;o9CDsWT`fzLji(p~BeZ@B&7 zK2%)v$82}$-l5X3nXJX##D(416SV|wlq8IS&VR_Ml#_NYDca{B;{O1SHhv1$pTjyW zfz;X(BDk5Q^5aJYZa@MtW>wE{Gl9~!JYnPC4{ASV(sX&+>PwH_vM*Rw03~JTax-TE zNX|!WSIwS1@Rp&b`2PUyQE&S#^sg$CJix{BSx#^=3F%VDplaS9*0ko93xJk3{raL1fvoeIwAT9=T*k`?ZWrnk;+TZ^GWs7Gw3=S47Nw|@m z4Y>#Ku1dIRH=yBG+F16@N5)!apDc3ClbyqCV88x@+OgsB)|+tRS(0ZHFio-YpbiTK zIB!hxT!^{6vMW8+jFHQ`Y*5HHvnd!X0qhU0bXPtP@kXUI5l^Nyu((!e1h_!kdXRdI zFfGdbeCFSf3s=8z*ptr4jVb?j1z$?J;O7H|1D{;h{{V%2O?`iH zYaW+1?w`6b6~)TI_JXMAf)HdQ^MR3&Iod1EFTb`f3g38%rL>)SS+{v?T!N!47v=yE zNF;E73iMwDc$Zf;cb0!|d&^9M(Mt)PR75!1uF;&Z(!3@R}Gbv@Z}|qDW1_W!?zcwl&~; zqFrP}3qf>u)eE;3jZ*ipDMRGn~PC#+M`qSlT!wiy}Z_L-S z@g<6aYvaV0B zYT43tKZcW8&EeaN3piMl8|o0l96&$t`D?kG0OKvVgX>;%8&7qr9X?B|WQj|Eq)R5$ z+NS}Eu3PZI_oU-<3e;quxv8&vaV@NWX^2M54sdxHK7^XXzggj$CHqahk<6jx@(ZX^ zMs_y!T(Bp$N4;hEmK{bYBeZ#;xQ!nPCA7jo_~&o~oO%)kU`{o8O4^HgH@M0tbI-rh zsu4+QanyxfxmoEDUBe`36U}cWv+`uN2cYgNrENiFiD6Q}up|ffJ@L}KE*(Q$vAL3R zuLO|~oMUdq>67*8&2LzEhiEdhG?0_H;HtPEui;ZVOLD36?PJl6mXD`gHRNFySuwjA zBPWx<&MSr0qq=K`H?MAO`WOYz_uFy{+ zv3wCM7`4<^R*WQ$C*<98n%=Ja4zFFO!ML0 znt$GMNazD#4!{9gKWq8$qm=^~z*0Sr1Msgc_)X#%ulyZtr^d2G_7N?!ZvZQd60D?l zBk>j87}DZ0W>sYei2s5l$*ay-NAuiw*aWemEcJ+Ow_RNhS@y zacpO}0FIa+&-1Ff^i#!e6T(@*a2FqVXO0d%`qn<1e?6_-meRCsysp5!Wl6yx`5VE0LifNN5PdOQDd=TwNach|7HfNS5+fa;?u?U;cpZL+ zKczuE&7S7BSK7)zVaRR|9mYm*G7l$?YGe~feIoqN8zM57azMsIDg6lgk=m-=T?k$` zkVL!A(YXA_Kf{b<{y$U2OJyWzt+XZp+d*)0PVJ|j{f2q(R@%Y@jbr=dk^a{w`c(y$ zCPE{KNTiRE!BNS<`@^v31XWE=@z8mqVG=5`V4a}xkV*FI*QGZkmZIftkws!gr7TgZ zvfANef1O_rp@_-j8RPUdu_TEYTY?{BpP6=nfsXuSeg?es!*QzG?~3OVG6(&`WJ?@_ zvjQ@N^Ieg+c@ZsR{{TqBg?t`^9OQS;r&@@~6yt3M{jS>bMO#!3fbR2t^mrKrD*{GA z;De7*SN#2osq(HkA2u`e^{!IDL8K&>x^291qq%bwASlcABya|OeQN#n!djxZl_OEn zMiicz894{j7^9!4oJ~DC%E|*Q(M1q>Sji-iugu4;TOWAztQ(Cs)spJ!eZ`k89x@37 zCvMU?2fv`LD_u$%Kxrfi@`w5V0Cq;~W3DiLeL7So^DOBm74wXt$t3ajhzGBJl;13t zqUCAmdF{TYH0%EWwOS~Q%!oqdumtday$?$4qVYYf_eL-EPOr5NK2{mVF`SH!I(5Z( z&y8Srmqm%1g_JiV`R_9fU%Hm~-B3Z6(_98PfBB($e zfM5e0kPqT3&V_dxj+xOoN0CjRTQ$n84#64ZL9{3xK;UDwQnXm&C(KeE`CN!Y@@S%l?V^e|a7i*x!Y+N!1K+((E~uzPjz~h=S2@V-_3K`rI^5<^-55G* zuA!`IFDJp zya_o2*Rbc;HAZHYqzH|iWRh|T9-sYxYRJ2lW6$UVe;Rwnno*lBO;;j(+w(9QNn8HFn%v%N|P|q;jkQ0FOrR{c8$G zxktjtyL*LDI6kEEPCC=!ougnA%#a?Lz)%P98TzQ|oVo&$6$NBtg97?V^b^r`~*c~|sk6&7H%=X_S zHbV~N0>`&*qw7MDIG3e+RenBf@_1vQyJf;*>7p<Ti9ieZINe^ z5lO*CV4;fOj;EZ8=s#xtat{prXxHp@`PqKm6^*Tv$POlznr14X3@&il=Na#wE25fH zoteRis^dX&okxW(CXUdh&dDaX2(s;94p{93=LK_vjN?7IuS}BTaEYT*(Ye`_;rRX| z(~ds8gI+`7iybQWQEw64+8C}?rM3o4j3UU#mChTURQ18*88zrvFf^OO;bxky!6mCnJEat05~#F9@;em(1*(>zV3>vxy7T18WZhHCgTr z(*TU}6o{4t9iy=Mw=pM;z3E(FzpX>By>*$PLm)o6EZc zyA8C3IXv(H?So!fedGO7FCSWIcF~*tJ5YecA;^WTZf)H8j!Q1$8Ba{|N6Xf?{D1K$ zMeqia+P%}I%%(+x-UNS{q>vI3k44Jmi6fxro+*pl$Cb;XJK0z4$R~Z}l#|IUNA<2A zWZ zm`5NvMUXD#!274DuQ>50g>P*%rPlG7u$LHl1F-%nFivsMG07FLEVoCQS2TvuMVr4B zUd!<&&sXqtcOFE#gkDS%U`o-+g>{iZZp8OI4A-}KvqHAUMJBYyYXj;<#^4~`AJ~73IJ@0908K!x1grjc&|>;{6BXz=%s8VnPXIJ0;uIt zbI)7>{OiSTek^=Rp2p;BQrUSkNFF3GVd6sB5r*71bRRJkLZsymM8}AZ8ij9e)~x^6 z@(8>~ZKneq6I;L?i1~?SX6L8`5t1@UQ^FALR9aCrv45x#z~0m|S$2LmUHWN`St z(gkfd#J5(@6G~!XaOHuJjO6Xk1~|#!bj4bV>d1M8`X6_{jI_-}Z`IKf-6Q7dCkTbf z+EfK!F*fkQm=1V2IIed|@ur!oXm{5-4eS>4O2t+)8>?-IF&hcyLh3_j<<4*b=Dsv< z6#QlTJeCXMh`gx|9#ayTSg08Jwr=Mhxjp*U#C|gP;?~Oyn)Qh>9HTr@DPmBm=Wn6! z-=4JjV!qK2F>UO9ZJ}xMYe?G9hiuKLzcI=#4%oiYGYy&bk^WQisUWH8p14!md|i{p zmv)zWe3y3{$+x?PKPtsx*al={^KL>&0Y^VfW58F(pBBUr+pL;(!`n7slg;K6fB}qT zk-*0olC6-d+;+`*w}{5EX=xnV@wJpaz>m)|lw;=ZbsHEf z2MR{!BOLL@YsPFfkB&hC!LP@@M&82ZgT|*hI3)oJPhdyuTvv!Szm66y4xgxNa9v9# z^@u{yO2u0|NOlsdgZxBr1!Gc_X16ttWfk^W^+&^dadF~XZL2Ct9HoGWx)4-n_)k)C z&s=sD^cRD)OS^q)^5*ewND;7PhITuSBLn6b{_x2olV6^G8`eHM>G#6=JHd0jG8kc+ z-DF&h0t;st$-y17+}FK$W5gd7B)NlH)h+I<(kpP1!D)2_;^DZ_OQc;2DCRcIWS8^yqvGOYy(O>#5%UeK~HOBWysjrp}~bg2XZ7rqkcs z75r=Q7vo=rH2ptY8h)GQyo9}-)aZ=zG7t!NP@pR0w$e!Hn&@pcWLn3;E3@e>J5ap7 zjqYwD#H_|LE#qZIW#kOL82V=*WD+q&+xX7a+W!Ddwx3aH0(o}xuvA`%$1%PfbGf&Y zIKU${@{;^|_|Y_Gd3+%91ss)lB#u@c4Z9Xz0Oy?WD=ypiq4<}fF&-iCj;n9xAGr!g zI17RS7$Y08&tprMrOJ5vEc<4|Ue#@G*4F+wqK-9bA7VUA$fp@qeaggiz-|c#6aVT@1JwxJ3UVm#kC=~vJD6zjG2)OA2gAG-2liWb5S`otZN)a7Vpe^ z9oDTRb}-yUvKZ%)V~RKQ~SlV1_*(6qBzyF`jqkKx+P-s{n`>(acx;&;RgT@OZz z&f*K<9!*y(8hj#a%c`)*3rcD;JGk zNfsq5pOxKIu?$C58Q^0kx{>hv<7TU4C9M7$(&GhkBrhg64xPFl;Ps(as=>uAj)q@_ z9|*M>jf`52lC-4!v5h?l7|RnoG)7qR zKw_pcR1wPOo|&%SK=>KspAqW_-XIowO2Q;)9?mtmh`R&w%o*U3RN!M`x%I~sDzYg> z_C2(GCHOmZKhdo8DI+WpH`%oI!;_9rlhpcF9;5I#;Z$eKmOT*|lZ0(MPWli(bPoo( z8^41802nkYsC7F5rQ8H!Jc~~;RgN>bhL33Hx$RXhZ2lxA>{>ip91nC}Z?rs+$Pzun za*=XkD8S^Z;PL!a)mhxGQ=or=9}ZmwycT)`X8|NSZLkNQ_84c=)YXg6+2_HnAMSLm z1z7s&gMrhXvkw0NTHrGaWIGbbOH-sKAqfGGffTuaq7e6m2tl2)* zDE*y04Dbm}hJsM-IbAl{ah^vm&Dir?HLZ_|C)HC?weU`?j(|oblgT?qPD-lE0pRD? zJZ8Fkn-7T5iK5fIE2&B(Zb(=m$2@KQ;}CY>bH_oRD0SwA%8tq(fZq-5(KDxL=v~B0 z(CPLKmpw9C7r^7bJ?lb0fL{(Z2!!D*qDC9iMYhvpR>xdzxAm_&(sX}|v02ZhuZFHH zpjjNNZ;nYM4TFNlKmb$7Ime}RkZ9i&q6-K7Blj%`8C}!bsZrd2t=stIRt~jm=#3Om zYd^Ec!#SVq(%tFy=M9EwAq0<75(O9?F_HDJ54-pUK8vSn5O_<)T4lzcbqR>s$g?A< z5+tn3`$!~g;BYzX&3j__OX6tLUOBuoEYm9zj4y4z=6en2E$jMLR;}Rgi}%)FWYWAS zQb`c0mhS%D79zlgVxfyRJv-4FwO;5PV)jR@d^6U*Ab48Fd;4n}PZQ~PTW5yzPP$ko z5vuetP4bcled8v*XW{<<#oq;dNs{Uf49^waqm`P{?L>D7qZn`lFl0Pol#%Pre24Ix z!+#pIi`(5NOcpXMF^eru(WZ?p{Kr7iv}bzlZGl0;5y|$)XCK4wikeT0^xqTc`aP^O zY4X1L4b`bxl0?}gYljVn2aMp14w$EV7KY<-2S%Wk%4Ze&;#I3Ig!F>U}H zjFZ?5=Dep<@x88#-2VW?3CZcl2LO7S#?&?ILzTHQ z0l0js0%Y^UF(Ghzb@supoSVi!9328jZQ;ny^0}7nM&`D9Bi`BQcQ;J; z!LL2LKeUdksa|T+c)L!r7Z}@RZtFBLr~nTvJWY%qPdPOGqPDD=V_>#N+7>VpX0?)L zom(Z|Oc?-f0%1U22Sw)tuUe~lshBjYneO5b5=L;sHdZPRc+g~yfNcXc@t%dGd~wt4 zW=HW|z0Kvrd9O9Y5X+SdfOeGt43UKd6O)`*M}MpS(F0F{NG>$nj4n5YY&JL~u}zX> zjz_0#)bsW#ILI}2ne_AqU1Gs)XY#~ugDahkyGBHNP~hW?jF5AJYg>9jZ*Ql<9WVr7 z#)K?;KfSaKgNzLE+P^hA+U6?;w2|5*RY=j%m@xrnU9OFfxx%E~ zd`I!MH#}e2_OKNJt?w@Z+;)M%C5}3bbm((Zq%W@1cXnv{{pO9N2KGyFatPdu^I=%! za2qF_XE+@VV#==mWYS2+7_wL?4sff{RE#co&N#pgzn>mP_6gIhJ_>2G^wqmwIIOnJT7C5kV>fp z9FhZX>$|=VD@Qx+Vf}h5q4)K?Yhhsx{+AHCgXE6c6%0|wyKvECQf;x5MoY%sh8@l+xp{>ou{)4IO7guSvPqgY07)oT2s;!<# zJ6N3Lbgxg+yh-sU(#!<#Wtr0t+h=ssLwDMil2A>(*T*jIWh3FOHcwC+Wx@yk@>wy7-6V zoh~tD;g1ajM@-8knuH9ZLCH7{?BtWw^X*s`zZQNZ=?k|}v9=({7^_^S#8cPi2X`I* zQ`3RXRA!dov2>I8kF94KqcQ}H6yu!ZjP=MpM_d);ch41*cNOFtib(0bi8HgbzF9xQ ziOAc>131S~n)xR8i$^(fX9^_ zk)CjJD*eUP#^D|aW;`$;3=a4_@!zlXua(b@{x@%sdG<`M#!b>F2tgR~)lg+XARL}Y zJ!_3W6TT~G7nadEwRDGfn+3(nx1LL9d6Gomv<@(&dS@I`_OW^(c*CJqk{{R-X3%Jn@v{oCy zW@s+M#~B}cY<^h>Ip9>2c=uGi)u6qLT)BcMK}LyXfds}(0p=?q;Rhh_ML%c~#!|M2 z)kz)H(=>6&p<_5PsRV*QyhmKof2`ct+q1~3mg&R1%oRX9WU=l~0AsHnmGY*K;(v<5 z&8M{0w5y2~$C15}!jqkz$J=*M zTH9(OI#T)qiD8ZqWq=QFzKJtx^S_RsJW5NnBr*tUP_d;KHSx{e-P?E6}X?k&m0aR8*HPhJbH#SP7O}PQI9rWbM%%f%BLGR>yGA-=0D+G9ubZ@w zjQ;=&q`8MjePCPMTS@j?tb&RPl8pO~0|0-Ej1ioXUW0Y)7wj_OwB3sHlPsy0LwA6J#pN3 z>t1c~AHtLP_gK^JuCB$UhMMM0>KWvbvI}4;fTL*JyCS*mKjOE;4;b5`>eqUWgro1m z*786U?a2a2(3TyuoDeB|BjdjU-d$X2gIv^Rf)E}#^$AfCG4hl}8(+BESx$Xu_pfs~ zRiP-TH>auE=vp^{{3krEp7BpS2<(YCH5V#g{QfUA-T&OqpRq}23g%DoFZdRX)cd;_5AdO@(#yxU2X ztNFr4k(3Uj1Sr7=>si;H4Am~=7f@;v#)!QbEAEgE2`7!GxX0sOYpeMF$}lf)wfWX3 zSe!=)$<{h+iz_(1Ja>f$2z zDIBtSFvwaaI1*v8^7GQIYF`)r6xrO|Y8p9-?=Dx#nf#F%lLYj=Doev^#z|)Bkbxo?QE3?_&^+ST+WxTXx=K&^!pgE;fqm} z$oCe-8C;y5#FYSNxCDS}O)WILa@KQSyIe+8`AZwI!ReeS>IWZM>cdk}e)81v@wFv8 za=j1#(D<}?XJ5U5ys_^cP91OuZYn?cL*~47wrB)WWC69tTOEC?YyCDzwu0${&fntf zdHrieZ4%z%IaOK1MhIplm<-^68#n{5Ys>aXzH6M_*MhIK=N7h6`H}<-RX%J3->BxP z+;|7XS8?o$)=lNGR~tzO*qZeC2#h2|Zb>k6_ele>2lOE0*0zn*cfYx@S6GAY41oFJ zdC$$BN99Mei0*j0{3X^*B6+RlY_PxwsP0BPk509wp9Z{Nbr2eTgx~>^u6rJPk(^i6 zIyKIdWn~=Jb6q^co#m7jUgWf$I`hb@TGq8|;rPdid{KW5y`Pw-C!1@&{+kg8-aP%# z4u1+gnhiRi9$9=h@mH8dor|#~pfM2GV0rn0$Lm`+Uk&w`3>F?Ex@cX&c=Y($<(-&x zD-z^?z>mx7Yuhh8dE&1Y+@v~GZQx0I6|BC3DBLzlB~WmS>O4O+L(kRpgLKFU!f^ z%au&@A#z9et9sAj^er()q+Ua4v0!xT|0R`&Z!4a^I!-s%B7 zcluXZZ{poiQNGP*A}8JDm#eZhjPf9 z@!vTkA4s~#od?8I*`d<)Fd#YVcF*~khNRAZp6#)Zkj)6xWrikI;e|R7F zPD))z!VKHjR=sRsBtj>PaRZ?(!sO$EaqcO;64!hkYp(wQZEEp(_t5;Y3*jWu!U@3< z5(?yJuS3*VMxO@smuE}6y+NKaxs?_i=e9}UXOqt!^=@B-z8r~BQu6OEnI31C@{&hf zE*k*zgV%wYzpK()GJWpHqDk?u!gmA7lVE?96+kRFb)md#>tN5+%ij*|diO zMg|r$Hy`eey=qSl_y@xJMch| zvBw?hRXmXyP;=Daupd!gk9Dkgkl{3lptx?W8A6yj!62#U9^Rd)kn3J1X_nhpNKut= z(c58;O6LWRe)rJh^{9AQz1VXzk+<;2jIZYN@3kwaLjbCQkw_!Z^V6Oyu(I&Y)tos? ztIMe~!Fz>XG5*T*6^C`=1Y4K6YkNJ>AR=EdIbFH?-7$<3Nx=L?Wa)l7@i&Psnhhq^ zZS698@pg|2LJ)ZW7u9xrfJJ%X)%HY z18jE6h(|o~;e!%$mgJtjYTTY9k{JrYZ#&5&VLa(~Y~b=i80UrayI+UC~XHW41i49vqL8SRV^ zdJ&&$;SRT~HKCR%_oMk%>!T{{W;+k?s5Kmw%hM zRaO9xaa}H$E!GdS%@(D8@hOq6WnHB1JbbaD4mxnW)`h2tb@ql!C}WSz+^x8&Iey@} zxb52=x^Y>S-Xie}Z%D4CTZo%#n3-NMS;CACaz;5EV0Xb*c=Q4inDtbsi<4V`r|V^PBxD)fW(Zh)$h-)X_l6g zNSkfS$g}b!m4g__B+S)}@@)lM3$;K3~ra2^IJYuAk6=rj3G;KQ-0WxGO zh53{W;QN0n8f&N+D|xT#_e*x0g{Up_vl3sA;RBz~6`1y#hl%gM;T8z3Y#AoK3;wc1 zKQvGrc5l4@0PGAN4R3g-#@F5z(N@pMj^^;~h7?e-d9yhy3JiVH&63>wsH{&)!0;xW zHi2vBUd<)d%)&`7C&L$>c@F6%QJfKxwE^gg0O?ZFzU6d1O5!W2p&4z3ScX+OV~(H! z&yUeneQFx)KT}2g zM|mVe$YpTDCPDLV2RI{l1M)RP`%_puE?#v}oV+1JXYu2YO39k=Nhv_=;v_6cV}qYf z!yI=cXVSG&32wF6l2&-`Hc;+R026lfiZ)Q39 z7@gb#L0?m!%9HaNdXRWR)>PJY>${7U4RxwI;x@nw6e)mtJmab9UW;R*%YA9*$2((` zL%28?^$pwUUQOW%;)cfeQl23Rxz@D+&z3vYS)<%KfJjaScF%DQb9pB0XNqQEQfiPK{W%$gF0F=Zu^wKH0}2uqV+xYU}376M19h+NDc2 z-k@akuC8mV=;1E5%QixlcU}o>1Cfpb`seVeMdY@&;%QVz42}Zfi9@*HkCUPPRW6iX zV_3 zJR#wNo@+~V5RWlV_T-+!jybEdX}6w4a|@S>G?DiWtBeog4bNVll+QlyREeN_rbQ+& z10GvB$svb09E^Tcdo;QSINNPM!Bz}>$lhR1;8-(}>5e%60QCy&;PFnFmcq_EX(2)K zXJ7~b{v(5&eigy$HnLpmBx=$0H6`vk4$^jFRv$`9HErewxoP*td z^DiT=SLvD*64-8|JIjk*16{V8Nw~j?5pxqKnyTgEZm8k5j1^!A=DDo{P}00lVy68Z z-NN!)U5M?Zo-sT}3{}wx+SuHqup=Wh*w!dPSjY((`=AWu_3h3N<5Bo?T+{p=@fsMf zw;e0Q@feDvY@*D&7rs_JjodFts<;|>4;~%_64}vl{ zD~^7Z^)9EbriT(;PX*M`yX{eF1eXlC?!r8fzWA%NO&hQih6>ni*&yKa$l#8YJS+$8 zBz$oCMVzt_lMUoLq* zzebwZ#C8&(EtY3xY_IU1KSN)oBJRo{C5CnCMh1B!*V3!SeRC|b86;qb8!&}J;9;`F zo!LF`G4E8c&_d>C<$T`?EKI2(y0x5b`31DO3`ofS9Ow0`Rz4low7KNc^rb5Mwt*ru z0$67oifwN}jQ(}{k3Ga*QzWu(QgO+_$7;!+L(#9}crR_@XyxIfl}qj?uHbXm0Mm4D zpstbm#c$!Ch>p*g=VV9UDxhp+9=OH_^ZYAKEIe7GGwT{Pp%;qEvi+$MA(?ajtgt;u z=-rQAmG`t>9I>=5W2YduiC4-Bnb^UG;s(~~lkHiM_)6B^M@eO6QhsQan{IxMoF1L) zDPh~v#l~qKJ>cDHPZjA$Qq%moVp(3^=G!5j36Sk*%O?b>J%l zsNBgseKF`j7{yibf5YDv=$e$CJ@{E74M9)~ojzPGz4|CTNW&PFe}VdrhamCL_#4NT zUOCg6;?6lOZlNVFEUt#h;E{M`Wx?Y;7;t-2r-h{b*()%WX?Hxiydj~n`xTnOGyV4} zcPP&z1o8)_E1yq?vR;;0f-fX)Sq4GRP^27V9M`4mdRN#ri8UQAB>9(PL}b__AnsxZ z-8+XqppSf357~4J`^2`n^JAX`s7Xq)?(g!9;Et!Bde%=4qTE>BR?jk@;I65B3c$^A zyXFJ|$Q^od$GvgZ-UZRLCjQX8XFDHfnQqRk2*LJc{43}*)8UBA1YT^1YcTU~2Gmz}QK8+13cz6z!TIFbU>0;Afv+eF>^qbT4TkkMSSG22ZowO3eF! zF|b7*op>2J&sySqQ{r#z`J&YB-U!}b-a4kq@;};9k)8(!pL*BS{3$GVjU2PXcLIV3 z%%gxpgMc>-bjK#J?!F#aYf+0xtcRGSkKK}zZXohokU;eQRZ5E9HqB}nwfK9$vviysC2O$x`aTP#wMyLHR~$mcvh)7QOu)ZYs%?5*Mt z1nk^xiJyYmz<;~bzE4c_siyEM++0erLYFTZuvK0`b>yz#K3s4!w2t+D`%&Vk|h zZn}%y_+7O5BAH2TI^xbXjgP8Lvn!l*V8cF@)aaL5Uaut9ntjAp)4*{hl(vv7CPo2H z3bK*WkdSN6^vwcqvaA<&Vg+;i!MHXC?0ltq=Ku^7)YnH1i~`YZ-rPu`fsBw=L_Uf^ z$j2P@_02~u_bEFXTE(A<9nGN9eE5JP&bORISPtee0-vWf=GvZ};%iCFmXY0Q`~t<1 z2s?d(ka6o>b>yBQ(jj}t7Z(B(jp_2qgWqgt4UhIfJ$_TxwDj+ZcdKR^)_EsMj`Z^o zNDkZr19QN~BdGMH>{IH&&&c87)%W5GsVp!YT%^4g8P^XSp{{YoP zqb-z(y6g+8>H2<|92!0Bfzfg0%Md`tMl-l@O>-w*)MO0G*33c45-Og3vMZ}^5{qjg zY%SCYPF+`HC^*JIWjHt!H}PN#A`-p2`hcW-vs)HJ;^ z<;Qt#y_YV(*r#{zZ#_l zzKa~Da}v#yxa@71{5e0J3YAXb%^t@&q&zaEbn5S+QLRD#@)PU*QIS3RO-oYC;!p- zet!|`A_Z|M$$TG?JqPHh6ixc>l;RQ~{c{{SIbGk>X%>HRB_ zBSy43odd-Bv*{<<&o z74%l0{{SBg{{UTorDoAA+Iw4jZ4O(wPze;0AE_7zj(c&_rFlQYdsuu)s88Zg5N^G_ zN7$0i#!oFqaHy~{Ec}(!Qc4vxc>mI$NJF5w>m9y;(7Jh;hBpd z+IF6q8ST@xRF_e{x+rIr*f|@9aJ(FJ9CWF5Z}}Kg=s)&q&QJMe_5T3bsvgFRbHCDK zjWqX}Rd?s90RI3MJNs5G_NRYo6pwE!AxOy>?0NqH0r^(um;V4Dr~d$Wf9Q3}YTxQ6 z{{XH>{{UvB$~#DJE<_23KQaalBXQ#+pVpZd`k24# zlK%kcHIpaagZ=~m0HGRSwmW+{q=qTvjNycvbJXK^PHU*s?=E77U572y|V+y2T0;&PQZg~Q)%RHf_DsT`Gs-OiQ zcbpD0&s=7+ZhzE&-#_{lU6=k_{y)uV?ou@)ySTQ}rMtInlBPm111dP+dJ10;>KC`3 zMa|TOP|@K*N-yqUwWGJ{ypRW0DZsoF;(pU0OT)q^l#--QbzUsaokC79LlV#F93nY>}T`;03TYR z1;o-oBX-J(U4ovOCmF}nr>APtx&HuP5B+r?(y{G-)&Bt7NB;oOsJ5(;pcroLk|M!m zQtr7pETDi$>DsNV@|&R+aJgygv(@(yxO9Xk)FYRymK{{XH_{VG@g z0FT%|;9vVSQ`l=_-Tmd+jLIZsFvI)3r)V3xoD2+~rA4M+U4a_;hXZt+^YbC#{uLeX z{Cmy+09*w_rvCs3`;vb;o}=n=vpZjS=F&^U<}%sb$_syeq)3Z>c4a~A3C1#W?eJbt z8AL(=LQ4Fr#@u7KY}bdy{{SPcxBY|X{{YeHUe2F?@o(u)D^b0P=wN z{V7Ls*HUloJLkWScaWC-;m!vqr#`(acTd(eHWLFg9Ah7qa*O`}A4&9+`qs{y{{St& z;52n4>*Bk(Hp;uPgBTld4h}LhIl<2&vvte+sBIotn`v*t3wSTl0Kj9~8TSz5ClGeh(2en&Dy3u7k?PDeSdSU=RbN+`0}^^0Is9?(`!KLGfxWyv8*5{Mw&$c3Sx?tTs8MDaP5WzfOg{<9Y4-1 zWn^oF7OoT^-HnP6j1!C%0FIuu&rSaTAItvxe@fl9{{UP60DXTmLtB(dE4&f3aU3a4 zxa-GW{{4MxEZ<&Q-Mn`4GAJ+dj-M$2aq0oBE3SwA(^z*O@%;Y)SwHk8q$uuF)o-ra z&Nng;a85@Y<2}9V_mY|5P7bFI*lT@^?`2gGh0N1*I z=pv*)>VM!P{{TU*?xqC`eNz44j%JhQX!jF=*8`rE=`~B{nrPX<2&=ReUNSlDS+<|? z=@0V&7#Pk+IQ8ePMsKc`MwwgY2>3W3PftpQ zZma&{{{S&jw@3c~asL3ArD2iYU)_1KC~OUYa0mESLTZ|VqwSf-B*5pjTfF}OUoZQE z`qnD_$NvDXwLM8TaV_ep=&FVz14O7MRZ{{YBtfBN`u>sMD~R1B+M7I=uE zKWcHd;gkV@HjTVs3}c>^(m{WDd3hAqG8cX9GJWz*dDW--xBmdImj3|RYq`_^0N2I- z`Tn$`wgXn|EK@@~DzUsdV$&+K2Rxm{GoN#x^TljhYFGDBLnQLCGC&!- zWROWG9r6WWY2N{Z0et@PD^z5_C#k^x?NDF!Z}tAQa>M>TBmV$D!&FJj?ejHB?c^-cfff;oD!F5v z1HjLGb?;QP+nHJ^Vr`{z{Z&t(>x|X({{WEH$I>7D2-ZfK(qF58F-3}79Tk+$BP3(y z#(q)n?d@K7;y^5KZ0_v;0Cy$L*@j}g2^VR`;n0ze81g$B^b0@rUzh&PTnCH4)@h&h z{(tlqq`+pOcW~C?c5Jv@?!eCrpXXU$Z@f0Ea9o)<8_qL>oby*NzvIMzx_|T<$RF|# zU#kBATE66+1&!^~w7cA$stC_GIjYx;-e%x%K+ha=k?HlM)4ufI?vLk5clXcxztmG( zlE+(Wnu7sq^0AH4S(Nk5Skvt-u4GTNAbg&4Sr)(R)Bd>%-_k$UC;Q*yS}n|^S-R6~ pRzd`0kMOK1qmDU3pa5?EpjTIU{iakYclrC*)y}}nK_U1kLv&;1sQo602&$q?Je3{0N`;05Gd_w zV+jB#DFN64000gE1C1Jh`J|yeT@q+7|Bo(%_67j_Z#X&t5N-p&_@6k+PtX6TPr3ak z&Hp@sztH|C_EXp|^#2_j2>1p3-#S|Mf6_f30EE6+JGnYRt(}}1__(+MLLcRoF#ePK zll)g_`L9YeO&hZi2dKi>4aEKa@A{+vV+Vj32Q3>20HQGh(23E2#AuJ*0Q#pYV50q3 z{+sOShK3Hrz{JAF!Nq&_6rq*~fQ|+PqGJFtG5=Exn%~p^01RSGl2<$*uwJN|U^7BU zd4m$NaF{+;c9N-095eHox&-6mkyB7oQM0^eeZ$87o?k#vNLWPbleCPioVgMj@>E#{rH8d05G2>i4wt-`P32dHDr}MOD=`wRQCk zjZJ^Lx_f&2`UeIlr>19S=jIm{H#QMl+dIg=yL%_6XXh7}SJyYU|H1Xtp8pHh)BS%T z`+wjfe!_*0fdRz8{tqrRbdUc4C&s{h#e+riK^5Bs@`8~!2#54zLRMubE)$>HF`22$ z1Rgo_`wflnAn(4f{ly)AHjWw z`(JtXKl1#)Liisc{y*~gl*!Wz1wJLle)^H%!Tm;|)(VmP6NDKf0 z?ntG8<_A<`YHWFL`p{%V6EWY7P5XII?{^55GX%fD7gm(QYACzxiu)Sw>H2#W`&oFxng~zetat7c^1%uAk5SDh65`@JgNi6PA17WskkQ zxuWYXSh_l-X2QAprQ-`B_Vz%sVv27(p+@~+Ifn?*BC~HdvOBgqa%*97K1HaHbxi4K z9nzq{GEOT7I7I7rGeb;94H-1=+Y-#Ze2YCnZVlTO^|3m3Lfji1VQC5=MYG6?!6$pl zjmOrS@?@e`gfFsK=~FM1|;KST>lrO7`@7$>@Tvl==9t9YQ?*g z$zVcJtto(Nv$!WI8vrsriT;m`Xz!`XpgEr&X8I-z`?!RT)Q^}i?h9km`6K9?+T)AS zHn8!dcVqC%N^oBPNNC~C!IrW&?fv*p;!kOR0&!yWjiwku!@TY8H!eY%+evhdFya}l z)8c4+_Uvt=eogOD$_-n{t7miX$*8m^<<>cZpGt$&1dRtrXXdKwT(8fBHc}3p=h(P@ zv6K4(XGH#GJN_88RL6x~Q5c?lxLb>QkO7t(SpcJnhukjWyVgO4S3_T}HnW{1^ z{t>LKf}D&7rkZJsS6fhN_@h@IZG5Fq&_JPQr66mq2B7d65>5E0mII@~Y8LCr(V4M| zV!olIknj5V>;2)y?A0>Q53cU$aKKQKa(tHlS#f<9AnDMNSJCLKnOY%!)F zH;Pj-jYO^Iqkim694|t9BvkdMu;@yPGe3h1w!Q}7#dT=n^>=KRye*CGO4p>e-epR` zcPYNn_}U?hmxG*a+=3^C>|W1Y>&$Nk{SesXc2R|#lX-sshOphb!yAoAh)NDJ%lsfo zt~UVcXphg~ptw>8eE>V({I%7Pfxx5z+NUP*>x}R_yr#FRL>3gF56YEw&Vv+*qMAJe z+S#j!e9|!J7{22Dvm3m)fv<#3?a2~e$x9(YI#tV<`zX?mx>aSqT5oT#)+zLgVm~VX z@|XNg5q)j!ywPMJf4pAMmDVZgBY+p+zlUPbe5vp44OL);_U+5b%2i8^v!g!#cw0ey zMUiQuEzh=R>#|)TF5+j6HucuP{i)H?vGcRO2S=P=fh4%u zA^H9Of3L=B#nFeuhrh-g7#Rkq<5{7h9SUKUJ_9zx17h`Hov2Gf(z5WvPoIA9)wrIM zuCXwSl0DV0nk*)f2hSPP-e!@9z~B);twkMe_38n>f`{*on9U29U!70nsTcZ->5W#o zxTImVJQHHxu#?JtL!imYwSYAqeI3giLf#MpQvPiY;jwKPq75*LFu3B zjfJr9Ii$hPgxi{Cs`UwzNfvLiGdx|oXsG47qdGju8fJ6gQ6c~ARnViuIjBgNWB|o> z&MH{HPH6~ix5&2&5$}J7l}Wrz>9;u2g&0(B7Zub}fl5Df?onCk3^4u@W~X{8wK&DZ*8DXnz-MC@6*(X=cBUNSCzB zxu(L-S5<#G9HS|TkI6brNUHrD;YD!}XcVNJoBgQk;>Bcc;9L zig!bjaK}?bcNcY5dfja1?1aUiFB@N~AimUmLhehF<}zmxQtm39&d0!(XQOl)9ohTl z2X0hI(T2sil(qQf5%C$xONw?R0B$}VK6Z4^{m*ZqO1OQ>(`(hm_?5`}&Ds?o(_f3; zuD@hl-2>xHz}q!oW`g8~B1z=&udW7FXX`F)ZgF|gXo;+&%AgQ3*GYGGohl>s8AnHrq=ODdkYT0qS`qE>=*B{c&Tk&M9Skp7!y96}_C?tvsFhjJu z6+*DCU{Yi0uza?w^y2Rq-bzCd0eiD3O)!VWzdBd|ld5>tt?BoY z;n$Hr&}4N3yS?a=nS<#KX}w8Pcn_O<47r8I*OtpIanry>(KcZ!Bz&K zoZ$x|pljDDQ|`F?>^kL!V76}D#O^eFQr_&LJK$KDJdO2n;*QNci9xW`E5GL`T12ID z4UaXd)<^#6Q$3p1$n8Rf_e6r@;C; zlqPWNfus3_UgEdBdfDf1*p#F*ysYk^*9uk|4abMMRHHaAJ_dC0kAJwc^%T*;m;YtE zAiey-TC($M#R$%Alk^C%U-|*2)AikUf!xP=&z+F{n^^8~Bp8S6kbyj1cy6>t#FmIh zhREZ<#)Y~E^jS7{cGvHXe*)D2{gqtI;Vj=@1dSjI-M*hkG^(pH^M)*UepUOIHG9tHWektT^BOAnsrVQr)_d4ZOW<7kq29?kf8> ze`ti+Z^r4)>{_*NY~w+VCnnL5#%w=5q1~Z9{8I4GpGSc7Og0NJI72aHEbqjKR_}uo zGp|fPjs-B|9`9^L`rWIO&rUBl$?BMfIw*JYQoJI+rMq)^IZ)bxBJl zLOlzbV3HRN-f^qy<_|6Yl#IPYzwI1$Xp57-x{rD#wlN;(rety@ouLa90|HujeZW*q zQ9>Iv!8GiGqG6uM(*o3L`S45>YB=wA+Es1-!OHRGrsY>_>YZs6iyS57Jh2RPFmc=p zjHq#NkyQ^arV$=RLtM3mwGka}!!kMKc3w5A2=D88^C!oS{ywOLO^s#ks&X-um1n6A z?l#-{r9tjI@88wMW+-7Bz9Ov-A_cuMYGWyq+Ydi412DOgL+EkS&?pg3Yl5Gb|;Vt4tZeD&YXof4sLo`NZ8S5 zjiXlRadYwOZVhXhdY5!Cz8vb`#tBA^hg>dPTOKivWZS8F$)2GLV-MMyv!|&1d=}E}{L9 z1XWMRp7u(7O1w`n_Y0cJ0$-_!?Y7XjWvTpeee22;kk2s{2HRM;)IFR{9LZO~`3C+?&62+)SG zD_j!(Yf`fI%Ot!f6=(5ji$h!^7S3d&eGYt~YGJal6@7l@(7qMHxLnzO^GGTO$20-X`pqCk(D~WDklG?nWHwiez@hg zPjN7GoQu$Tp*ZWjS}Bz|G*XcJ(CAOyLHRnij7J|qEEU%GP`lYKdhznTLohcO<}ZD* z3%{Ffjm=LpmslV+6~gbrUfb1{c-5Wj_q@HDO`Nc~?_lnDdrRAFqBe!uQAnFNdm42W z6^yt$Ei2pX{g@(3g(rPAp~Zs z{Aqfrq%bo&#!Q1?kwNRoyAGjlDsNEa=#mIubhT`llsd$KS2EE1V!>|Dx!k#B zqf2F4SBdsVKv?^6P7HAwBG9*NEKaI6wY- zY<&{^m>2i_vhcN!(3*WvDsri13!tJ9uum>}Yg!GD>K{CVi{Y?0R7a8!QWG+6Xn47dd-2WCoUIcE%f69prb4cG49vd8#q-zU5E!NG5 z%pbGGT#Rk!O_Wh#qRR{?Q;ayF_|#JLGp-JSx2ck9{xdM->Ft! z8)#1^%fzIN^s4BzRDMfrgkO#xZxw{2h<}20I*qC2WL0`=DJ~l(Ea+Lo`SF7qLf#v+ zrR}u6j~XzPTi%W`wrH(R7P!eyQUuh=#5y?6 zVgI>}{KAK7qm$iMk6U`#HM`&b<@hj*ngmPJ`bT-0`?`y8d2%`DCN_XVQY0SdK7bu| zyE=Q=W6BZwmO#d{&wuqB7h}(E`8px{ukx%*CjW&1{9oGAqp2muBljHmN^yO|z+A2H z%Z+R8^%fE3x_({)(@5nHy#i@``$m+uB97-_U}lGS5?QfKvoE_ue=L(NUd!MEY4D+c zr5zihUkpJ(|B3`FuSoot*Ko<5Sk6am{N%&9K&P+mWC)i6*6*uG1w{VD{)pu64#4+< zr(aVeqy$A`VzNVEIM}4}IbI%r!&zMtg-}OMs8-NLSbKa5Snlo+v{b&X|D`3B*meT5 z^X6cR)x(0$O6X`8oOF44{miAuA*`qel5pupt1LQT^!*V)RHGOD-Lx?bfWBq^jvW`{ za#z2ET6|NNv5N@vyW?VDqO5XPL)pBQn}tgHEqtm&hHty_cF60_`d$Jo&w1`=_{rBe zIg)@-Di#?vQvXovPq(tjkJuIYjrlgm5?x+BBo1!b2AXg%YpjYGVsa!lhQWhwX5O4D zGFREjO_0{W_~jV5|?J=8)wzGLtspu1c*_B#n#Ry2L)kEk%C zr57FJfk#<;+b&++!ncUw@~E+Jdrq!bZs1p>zmHHy^bg+44O0^dE@?Mj=bg7RLlGx} zn)eYfu*_nnX8u9px=wejP1ar_&aKHWG#D?pRK4Mhi_;QCmu4P?#LF34X1{#%1PjkS zt^GdT>m$kI%gp@Z+!o{QE8-Y;1iiu@vL<#~NT0|>9PJ(?GU_WErFLZ)mN002x{|#| z8Q?%GV)9e)Pii+X?mTjmS7n?jK%^qTem98Sm+du{v(h@f%8l90+`x%0+(P?o4x4m= z6XiB42W%X*qv#guMKMVyZyX$FsyU|oWpOg`SbzD%D zGIdkd=k|M9kd5DcXm|J$m?p;Yh6$C?OQ@XLRIvR}=Q__|<9N?6!W$A;|0qY=UHg85stu`KTIjuY4Oa^4J92X%FV!G}t#j62 zV^5BYgV<)Z8uDjpS>OBP_fz_nAnkySx)wYNwk+GyQNj@bea3D1Bj9=C`Y!H=jaGg7 ztM$JUWgKT2Yh4)v)t~MpDoLY9*F+{?@2|ZfnxdCG`Aw3vS0S6xW&jVk<8d0TMlF{< z0zec`bBZr0;Q{&giAbvR`09j<8nbpYTTj zT7X68UiNjSBmEM`pDdZNCkle@tGq+7ICRIgAoX(aICa5)8bv#czP@Goe3`~|Ez@x3 zSgAgkKUP%f%VOQHL=N8ADmKZ+8-R?aYEaCH-mC=niN&ySU->BR==kO32n?C|#;wTf z;nO1^qHW`CnZR|xi^FKp;?W;1_kEW(`Wdjw3c+|toZ2%;rgxOn65$_#J#9}Pusx0Q z_#=RGrTA?1>f=c_x4!=3e%YUi!DNAWbZ5{qU8}U>#t31L?nANuvYiXt%?IKoJ;KyA zSJ|w*v!(%Ik)qXL9XEl4f$L1)cL!PPzM)ByGg{95H@^-pOyY74=<8U6&Kg~5jmvoD zh+L1JO5#}elj>+H;Y1}A+hTx(RoFof6x5FZk-=$S>hT;Xt*pB7D7GLJxG%@ znYr-@z@XEj-@aEFCwr(BL%&k8A`dF5DTe3Y3JKAk>`Wsrr;hQEqvN#^9kgz-RP%(#VXdW_wZZzG{hqDrAJsbKO(sWC~xw!?-mXZv|NOICuhv8>m>S?x_A z+e`JUZ&q{z0<%+OOP<=!E^{e$11@j`eVtIk&Z=HV^9cAm7=c=9C!p5;twf=1ndZSo z{-X2Z0ZDf3_6P{}H6Tx6@oAQyuIFH>^0@j~tKdZ7*(+Kj=k#{U+;h3Ek%6uYnh;fh zthQ5#K4jT0dIaF!5@gl|1Ui5ArmK?ML+{EEegtGBs|Gk6g`Y|xxk5{>I+h4k9{~7YIO=Azy#AnP{iRQ4b-*7`F&ux3lIIbSbM0(-9Gu*}&ioaAxqZwH@4^ZylIsA*AH&+&^@`Fc4r>Fn*Mah1nEufkvq*#3lnmFoh>i1VLAfy zK}beJ8U3G3l2oI{Oy%Q?(1*YH__%KiJ{r4FyZ>!K+Psw!qDlW3CQ2bBlCa=WCHxbQ zIF)Iw|3Mv85BvJ$=6qFG>nm*h>K71J#ntZAN-#|2=*!`o5R`b}g#++TRHx=l2VF;J`>66Qfx0mYK&*=nt!O(Z-^DzK1)9o2@iM$RfUCnI| ze{bi9-g8QAY0=&WI^@7P7{5zkooxHk8u-DDMzx@0xhN!mBTivfkutQv;k$p9Trc6= zjb`Gg?Sl5G5T(KL1I{(u#!*-%{kdp4x#uXSUAG{)mZ4PNreY_=p5EAbVo{Q@_Sq=6 zDYN(7{Gwai&m8T(JR2fuI|ri0_@&;;PruwXBmwuu2>SV0T|x}cAUQlx%~XECa?ISk z3>aV8?(cE6+nZh|cQ3cZSXt75$H}|p0!eN9M}UEE`JK^2l~I_cs`N8O;u%vuAu8<- zm}G98!>}awY+EG{R<8@kR{Ii(Q}y)=xq2<8kr|mU0zk~rF^+pl8ag<2OXt!v)f<{? zY3~Wy4r;O-#%&@lfHIo6@I?ve_~9t>V~X&3v<+hiCaFn-nDfeGhb?UxS-I#kWl2p8`lgZ=aNOn&y(A1`y#xm~{_DkiI0@m)S< zmO~!we&1p6;{2?<3cBnSeh{50HV{^7z*K=L7AFFLP2+t^Nai9-%&X0G2c26yXlt6^y&X3g-5xCcU2E) z!v_k(3v^c%?e__IyR!O9)h2&6I7qf03NRbLp_TGLPB!ZmOY?YT$@O73j)}8X;A}>Z zfdRzz895JZcUnWnTUw37Dwx%KxLhmCx2K@qCNvYW?so(o9WcMn7veX=9`XDcX)ph#uU0Jf~>V2Xykq%G!95%S9G^2 z#bLPh_V+A6S};RRiRN0vmd)wUR%_Y@kWOy2m2tT`Fr0LU4)l2@Alw_GUPTrfZzX&L z9;M00cNJAM^&d;|r4zwV-^~t9!HAN^m(=$@x!--Ivc?w=J?gVv^7?(pElz0?xPNPCuPpif zmJU_cbq&Nmof5;M`DeZK{?{AR&|tKY+sMKKHFGObtgpMQ>HXSHrG*(iMjYp z!PFJ5zyWA2y*?rVk-d5Fo;=J*(JJ%{;AB&)z_>I({yPnV^1N3h{mG;HYQb!j+0j%K zk2AQcN4PI{iybk^M^+zt@qHS>V5o}->Z1#;Nm0iQ7+UKHP2+zAa6JNENHbL{%5-i# z?RY3J-0zhqTRDd9Y)mu8RGZ^N;7Ey(^nsb0fXJy`7n?=p$Rb^A431~fM&IgOmgyRM zTvjQL19~|*K9f`T{wTE77FE>O?}U5PY{3b22h7iJ8VzKxr~_=|d++l<`^s*t6uw(D zGavnQo zK6Wj_5~BEGc4O6QeHtasPE^fy5yTQ(LN2gmw$uPk5yvhk)zMx2;erN8N=kww%ME8f zdHVED$@H%hHN1=*YEGzb7-USVD_ie}t>t3!#GXGD{ zH!c80f)&Uh|D@3CJqU@o3x6nNy#&4Z-QYuR5X*kviB_Q^QHx)>6fqd4T8}}{H78u8 zxk`H-^O|IA16boXUSEkWbntDn{@0YRA881R4L6w(KNv+s=`nWrU{jKw{$$mefdMuu zH=q}cmy7ei+3*{kJ=c-KeeF||u@ZmQNW4CL?_U@*+P>9N7mtfR1aPi5D&hy~X~dN~ z-B>Nfm}dGxPx!?+UkBxTYU=6e;IS<0el;|=0%G|8b48LWzR62TreEg&K6u-8B9wL^ zs>GkJ7+fSpr${_CC*Ep{bwUvLwvaUwmuXwbSXs$)wfs050g5R9-PSl2+dW&nC6=h) zUDAaS6e^9)0+Sz*Xtm383SA@0l}t6Hv|?{~e)-+APm)*M&&8&T{r7A&?#>J4L00L_ zcSO2g4rFz6mNy?TNL(Os0mo$?N~gMOHoZsOw7*UgmhPW+v)1|F1%t>Iw_n#z>}W)U zeX=n%Z8$gXcm(J!)f^Lc+X=-`7}B&d#Q1M+@^|*4(PVh-8$9Fqojq9ev<8&rXrTY_ z_vDYMDFIezXD5@mxA*k%pD3}0k1_PhEtYM1t=D!ZECT`}GUe1s!Oy#`7~K0!;@QLR zIm)9IpE3Tujft6mJNY?0VG7&bE^TYt>E5a1FKVjr5g_r@ZT6F#o^4ow`^rRiGT#%w zn8FdF73M#|Fv5~}r{uos{-f|yD5Oa^KEp3M=yvuevXd|}VIi*CW)UGrIQ+RHlwO*I z8dS+9UhI#KnobYsx>u?C%Ds`uouz^i6L7mHkElCMS#w_vDHFNX>hLxS^nbIucO}AE z_p^}7Au1<9EQF&`ip#5)+k2-KeQN!v*P7+-qqb4XQVo-sg^Y-sKj^2`L!5Lo`&#%t z$*P&^JMYv@KiibbPl4448XClXR77hNzG%>NOu{X4S6?Oc{kzDDd3ig83ckJ_z7hA} zmFlP6OhY+GFS4HfcKo)tw$vB353oqc^BlbOrI!)TJxwHCNpZ+2(p4qQ@|t^0nt}S` zjKRqTCLSA#1X#<1f3mXdRHPCAbUd0E%x{0x;@Sj}mc>RNT1MPlzl1=ZBe3&0I3);u zzpOPGkjNNztiF~J!QU*jcv=u6k?Sg#Ps`W%OYFNBg7+n%F8PCT6#N z@HyzYul7XlM^~)$ckfKX6blsYDp+u_Ps;x6I7Of|dyXw9p$WAAq+n~E4|Z}}=k;y@ z=yXN_o{nGHtjwM39KgPp1T4cb$6_a}{_>V~SO z{$SgPGdG9!vo4pu<@L4xy7>;Tn?h`76J7pbhQoUMo0kQ>U3&r{t=jIX!wy?xJ?wp? z9Qd!GYe$&?YIf77FHMdnvfSxUeIl+dO=0r;CQkmDZh-JGux-n-(bcbCs^% zoz@j;wQvCIrtLEw%NoW{v>se*hZh(qTHA9v7o8icmqB7^W2)0y6j|3k2<*@!V_H8^^lgU>K0*{xf8>6i})Zu3X{5`QlOfunh z>TRtsxB&l5@xNtzE8CROaTSN8vqEed7ip+JZJi$%u|x2O^`K7rpB|R{8EPxo`o?EB z7e&N+VyRSy6dB&IjG3)F756^3+D5T|iLxZsDFAbKQ0iF`b!=_Rsy>&BA)rGT1-3k# zlp<*{V{q=vKffqZ?2doWD{vGKCqDoEt{TgFVP0=(72t0Mci(-mt*d$+tjWD0OiUdq-_=pNSD0gV3@Xp=;fZ691ug+s3>6d<3{OJHuwB ztke9%)q}Gq{g#%JpXsq)Vs>cfSeZm}X8uy}Xz9<9jP}fZ&72Z00|h=Qyd}94??Zqa zU8~*q>d;RyyQkGO=SYd#X~P8jQuLzuu7rLJAH30uIvplH+OBfoEx1sZxz=69gk>u+ zO{(s%T!&dN=uc^1oh5G-sg>!dsFg(K&}`|v45JKl40o>zkaU*bDlG!&=;4DG&M9j~ za@#lZUH0@WA3?eFm(Zx(dvum1aEVU=61MJ2 z+X(-aG<4X|S>eyu+A@z;9MSxiWu#P61=KEcJh+9K^9h@0q#XWPFq zUT@;Of{nNGbd+IlqOwbDG(B{~Lb-#!+w-z5ZYabx!?y4(+bmMfG?;6u2gmL|>u0Ps zmX{7ymD`aSrT2x#^cA_d!X5o4%yM@Pd8>3FdMbSXNkI$!8}TxBINewN#~TM z2@Y0fW%Ik~u59=`IWV)xj|KhD;)}32dL%IS5*2^1beuZzEJNFc(Z0EkwfVQ&O}K%G z2h28EnyOA$0_7;2*PV4>qU)v&MH2;;d^tZ4d}vAcIwxWkoy_JnUwViR^od#B&PwDP z@AJ&dGPUy`HsvMc_H67rnbv{hd&@@7%xPd)%A&VgNdsvtmZmRZg#NWVGr1x!wi6bV zOE_fHS(EgocpB?uF)&Rbe<4#RrIE^rNM2`diY)Y+3mikmpqE4d(J)Y7E6d=UFFjr~ zj>2NIgC3QsEM=X4EH}! zgcn=f(Cyq*RY#?;G8)+}fe~t7W&Flh_u)R_aq0o@%`c=7|7re#j~Q)W;QOIoQ+(X&3Nc}pY0uB;imN4evj|KouQ5x{j*YLp}xx+;L?MBjit&%N`6)f-n*r~>1+Cr zkzbDRK8OR(Z|^j8ry=@=MTjh5CaRvSIa?;0-bL@p650ZCH5%(R8@X2Gkr_Nj>1TJt zw zeQCVLb>k|)vVi{l5~+V{s~3IOV9zp5J+gTGt%NX?uSc;nrYnoL&m$n|%aT;(PuheV zpP$Qjnx!otS(cwp9-RM{+Ai8~#x^R|`N~wVsKT0gwwR|jo=d8ADzC{Lyb|VhYc^SP zP?{Y^7;lbX@k6!EFi+e#KQA7eDm4mTj#e5tGY1BPlBE(f<+e9n@6_>q{BZK*K80pl zGtjv3P2IDfyLZ;I0%9_}3b$%u;)4iC{zyRylzRaAL~!$R%RoCoxlVw*MeYX`sW{tG zCkq^T88qhmZv6GxL~Vs*e7a@iulpvqgHJj9#8E{##sq#K_Dc4^tf2jvjDRtI49x+I zP{7uyvJmV31N(ACnyK&B$y)w;K(3Vcw}f!7)5R^5M~<3nD+}7SujD(QhN2h7 z>4elIP3GFCY9ZdS&0WNi{^m=)*dT@T_OH|iGixDCa^oiNxD1BqWM*SdR@>sj+haj8 zUR3qRh&?~^I`<6#jwmojO~nC23JMTDzb}?~6WBqYDt*os!=bybqqd`=9)%s$_;6Lw9;Q2kYSFi@q|7DII2eKQ*y<0OW*<;mBCD(w9+ zv~;cwRav3BD16?cvsBGW1zb#nzMm)rIz9vN9jWO?;=DFSquk7VlSHK3EdyEnL6(D$ zs|wfrYIkPB6LXm_T|x4_j~T^}$N5jshU#>wJO3-KPn108hI%_No?BL7DxLEY@Cxxd zQPC(~wmIKK^H;ic*vjw;hGZb%zDNKjWPbKMRNu{v*WN8TDTF?;I+VgkNhp&w_N7hipfS*hj^IQ zc|kXkV;86G8!WMMApcM2{G&Q-NSwlUITsjeYkS!1mXd5mI>#$bou9^F$zaB6UCLh> zolqSI0oN3oX6PkQSN;3O;iUORd7L-rShk_mg;GEU+jcZjDbGe-G4062vFmM=?GKwe zOQmK^hZ;IN66JMDx{PFeYtmFost1lLd6vSF=J75+k?C{Q8?^vS-53jsCG>g>1)QA+r?P%T_n?l2<0#wmdc@&bH<)=iqw5t!Cc*mES~y1~9JH%NW`>Sp;{j z$QhMYn&32h6GL|UN~Y!ptTJYo7uvs>&h&Z>;FKzUz%6L%{Mzq!WSrhq9g!8CL^Y3 z_vNwvqU>En)y!yu=Gtw23mtKK6LGSW@_lFO>SOv6vrmo`5We$bunV_j*faHf%0je)okuh5e?z(G0tm@6gWswmCy%7Vi_w8@p5kEeHC)-V&H&th2)`!MR87+vOUkwS~TML$`#n|0qSBUUlA*@FJSM80?x z^|5^=9&Kc4#?yS90fb)9Vn^gUfA1ToL)N<6S=HvG9<7JyUzVFDT^-#7TohZ&v*|~2 z5=NuA_maN)iCE`yy!Q!_5d=6(UQ#kp-?UB6-ky^D-b9Yskf|yFa%c`&nvD_YZI>tX zp^VcPg8n|fgv5)N-b-6!9^Zsv^+;f;ILu8pDZ|ZTukqv1zV#58)a#)Lp`8Y zb{qq($+$^b1X!wcccW6(u-JN|2%C00g|j5!#anNFB&WWQ>6aaT2`OZ;KiAQIWf{?-e1 zH<)b;%fU~Y*DNNc8d}u7T1gWV%cfKO=Nf?Pt9K&WqZ>1aVxB3_m>2D?lQ9_Ikfday z353Fe+hW}l**-8~hN<|%TJ47Ju{R3DL`^V*1#TGiMPazmr=F0MeyP1K8#C;=vgdiv z(b;DzUh2UWUKpDFZ?^!RJXyU=Ax*Uldz#Eul`|O0Bn`S~2<#O0)~*_*rhxb9e#>_C z)}x!kj*uQRTneEJiNlAeidEoTxXN{UQ0AR+@`c8&bhZ^U{Ni?Q;1N&>f7$`V5ojQQ zJ`@R^KMZQkI5CAWJ?*NCJkY;;1i0n@_04;CJqdc8eqfKfCKPl|%mSICg=7x?t_u8zwq{3%B{V87iaaSwZOWOwm+=~%IfRVEHR_JCq_%3F zIe(NxCyLoVkEOBOl$Ilfo!CX$kMfA*(MVM`j%SUfI) zY8OBQ4ikkTYPBnaDdh3hXzGVD8bP7tbOfGcDbq#FWd?UH-s=QNu_Rpyz4rst)sClf z8TKxGgjdz-Jw+c4?cP{uCX!^>avZYjn>*6V$TH29x+N@0V?;D-IOqcacddjs{QYY> zdS%5BKMU$|ctEW;PnG4?_AaOq2PTbMvKl>JYi?@zv~%Kf7eKip&VE&5Oj zXv6ZKQ(qEjCp$+czct2e2uDn?=TXMYegLpWzRZ_ReA$WF#+u8-AP19Ey!*3@XgpJg z#Fo~$^L=VhCrXN62v9YsUR&LO^YN+VE{;A6>`j(5V5YXuHZD%r3=S(ShdxV)(jfv+ z!l`QpcI5lqy68}Avp?PnOQIo5EySZEFm5~qF=p5IrJGbt;3fXZB zIE8*$YMco*vGa7&GCd~7WfCU{m}l|7kbliuVlnEW4SY__+urI?3d4>^rsPsPMKREH zvtEP6&#@zO$D5gqikIIO=l7dozw@+jkYbZF%zftSJTx?CAtA6#U407|XW3Hy)2LGb zUF{3$Z(FYK8*9m8t`BbIWQBzI)lSJWX0nlv!hK{dX40w^5RH-Feb!GOF-%Wz2vE;& z9$I|;JrD*UPFOlEtJKI)kJm8c*W_ee;q2XLKr(0QPFqJgw|%F)%2}LXkiQ`1AjP;U ziX(DmI1W&lCKl+SN0L$2nZi8|)HT_9@(cuvc>f9JR2TLU@QmGYXf0^a|H#*$Q4(2| zOJA2~66PbJs^G>8CN-lW2x-F>n}x^2&8WzdIVay2T(OrJe{%M|DoB411Wx7Z!`^nC z#<+Nu+-#(sR94RI9~kgyt$dfB7r?*BdIWf|7qatOM+uX44Rp}j-UPEk;$4KPP_Bht zKCsWj)|Ro~Il?;sN<)9|sF!$&K@5fyHo9mo%50THa4yJ`Y|P;6Zh+Z}s?VcZGN$(_70G>H_ zIsAqSafZFxRO9o#xHOoGw6E9un0*L+AOlUjh==lXuqR!uecl!WKJj9e)9?8jPr<%l zyT_|{WpZD54*#^#PBGcVN)0(qFbqg!EnCG3D^jZ+|86 z3dlQdtsy&Wr#(76l!X{Z2Bb8nK(&o`y{RzErUJ>4RVA_667c}ABgg)I} z4V?Qr^`y?L`$xb}rwF@5a^75j8~wsU9vE#*PN7i$7Fh93cF@WXi4MqEspB4?_6G)n zwN6y?J>L_dvD=y_IT1W*w4M;C^Nq<*jjk&D~+{!5TC!R zKAt+8)$@2QTAUFpMJf_pBS3&h+_s+7^C1`L^^9Uza-PQ4Av2*p__ZPrOYD|A4i*k3 zWDPV}U1mHs#9GfJL{%2GH}g3+>u!+Szm_JY$e}x`8#;7Js<{6i0h_Ts3yzXcj&g-x$oGTldZ9x#foEYI{tU~ zG0Ore7Qh}V24eQK!FBXxo-0iqRyNttJpW4LOvqT5-KdR{dZKZ8XvK>Kmb|}#Q%KCY9+V~E zCt%iyo^NJ<;`A>|aaU%)bR=Xb%qnNQ27R@G6Dae+l5+(M;WHCgg#TdJ zydX;1Ypq$A9AEfld2G8`;h$@dZiV)^ez)GF`xce*w3noZn>~tgc~9T%`as^2dI_6--)hxK?KHo=Dw9)Mb6*08ybZa()oOWz zw+yGbLcDH+Jp4wEbJnzilr%&6ak(TWw%E`XiAr(@uMD>E5v9e1LA!Z_iyS{nT6HQ_duoM8VsV%cdk#T8Rm9W)c++ETMsnq zmkS+%57(QT;vX- zwwv)pa7bxP2`ZH2ev3ia07GWW^_J_um%slY2dEsl7jY|`y;XwX0 zNk1-n9DZMgbrD$yjbkSPdY+m806x?#5s+nzAm^qBZolU>&fU!{A!g-Q2ZMl4GxQ>y z6iFE#*eZF?)QV9cLID}=)BK8GGclD3$j><+UbQwIh+&U(MaN&y^{p6YRGC6|AH&Xl zGoQw*Lejh?aHH9H{b~05l5OCDux`h5>*#4Pv8#TE$_0;3gCDJCG+VM1eNHj?)Rz~= zQ?^0C>_1G^n?}oSJcFF)lT&fn$ClbilkVq?kZ?aCSTm4ZvmU%;`qyKB<;5c`eNV5i z^R8C$lZfK^h&eeQoofF-N_a0y}TB|;*)osH<$;Pft2}rw&TYgI?-goU2bu@f;4axko?48 z4lCV006nyS4>c=i#`V29`ZIt(QC>HyM2F14JPtB_eg6PD?|vI!S?Rt5x3q>x;-6B~ zT>xxuaSYqY8S8}@&%Jw`KPy(Bq2}hx_fhpe%S>Qf6#+=~r2X2-2 zwB)%F^Rkb;QIa6}VZmCIM7$jI>%~l0XD6O1t&n*%pK_8Yq^#FJX8`gyXB>S#wD%5} z2cbWeB4ACC#Xfey10(NaAFW}^i@7TUw;gd+*4*$s)%QcLxKHu6U`Sjoxl@FeQP-ZirT+ky`O8+k8mA0s*Lu923&#M`LZxmBoM4QDM3PZV zN$P3r+Tl;9YHC7EWG_-WQFgW$jJ*vcIyub!J9w|Q|p|Um`0dtDw z?yr8&d{D=?J^05yp0(9HhBgbdW3Se@`|IfB)s3pGWz|=5u)*3-T+@eJibqJ8W!%IS z;~3((D;qMC$>wKkyB|*cV!I`SF>i#8xczG?#@=CpHVI-*K;UQ6l@^j=HG3N{#KAc9 z=z7x(J7YWjdvRI_xQ?Ne6O{)C>BVO!qcljV8e@-4)P-_+8TP3W8-76Gds4V7$p`65 z`UQ&Q9OXgxs_zFX8z=4x89N*mPn6`?eF+5zX@ zt@(HZ9Zf?j{OgXrD2n7>=skBUOB0lBoO1*Uu&7vwCnmb0 z(}{zQrdbsU$fdIDkOHhjK-&? z;7J+l+*iU7rQNmNoEOMrlv;eqdM;*_fa9kJfnGLo{^KcmqtMHL-mTDsU_uOf2E zl5jb}7#{U1?c99}Z=}bk=yp2IyT@-E1xH!4zE&la>^%T);T>{6HhF)#k0Xo$>;49! z)2D+}f=fw@yk1kH@_0BS<@CYy_60a9cHn46A=xBmdHsLLEEOpHeZ1DsZ~ z#u>LC!~B}T)O^7v#Oc$IZ(prkMA2cDB+38@$8a!z!lJ&lSuB`J+e-{7Lyz)m?TjX9 zi6m|dk&eHQ{{UL4LvH1eIc#q|@G8I-m zzMj7S07~hdW>QR<+I#;1O3A!{O_c{bhkP7UL^NT=8VJHJ272Ul{5w^x*x<3q4E;7i*^8S!x+Ng{}VdX7aEQ#Uy;I4b7Z_4tiJKe+B+Cc#Gpcxie}0 z9bG>~vX5=u?Dsxn{iLWX3`nSL=8W?Dl3ort!3@8Rd3nVupH`_P^ft?< z4{rr+PIAl2oM9UqM?T-36G!G9+khh{+x+uat*5mLH(^)~az8=Zs7*Wu?NTGTSa;+G z{{TH}^TX>+8+m-VM)mYudR6OE;y~FaZ(pz0s9U5>A&V-5m-$Q>-hxYTs_g>wU6CBMmll{{{ZXOqD6~?fW13) z&0!{5M5yLTg1108#~mvDzV=qf1E4;D)ntjYl^yx$dHrhd&avfk0~{zl58+vshO(0-EFhl z(g_on1gKns*~Tz-=N|Rh=+32!1H%rTGn&41*vjq*GQ%gQUsF~iv0wotemKDVskvPs zNXOJISl)kiK;!YQUiR2UagV*}j=xM-U#eTk^DL2oc)>aJ@9S9+S^b_o$i%T?OCEar z9+h!+7Ud&kFYHP~C|TnMKan^JT!3daw>K zK@14UIUPs8deyhF^8-U64I73GtTzG=P;=|vofI&{+Z7d6KnMW93OfPQiX6wvVCyhq zCOydK+;*wH9%-@aV@{Up1b8%wnc;9)y3KKN6|e>dHhT2u)~{<2#_$=ofx#UA0QIZp zO<&^%i{OF%iQ>&WRgw`iP7a)lEOIvO$-i^PaGg{E_qja=J>DOvm3gUlJj~J(bfe0; zpRVxS$Cui0BXW#RSLPpI>BU%L;j#utwSF(({?mRJzSYwD7x8l2#~#JC5U7uKbG(r* z?DocSS7iOAyd8En$!p?coP+z0yn6Zd_7SUPZe(~8r7Qd_{f?R5IN9A>3Z%CLoDO;l z$r|pIG(qAiCP=J^3}=-2YPmZ=ZTQ-A^5Ecu$6EY-gZ6~*G)H_EekKDP?S!u%_x`pY z_KWZ=kr*b^yhk)_+nPCG4y1$V(-HZPdQQ6QBsEHJXtVX|F&)*qUE8{}PNC98IaX3K z2tJ3gsUx;;FA53$e;WLaPufqwiG_no@d~FOD1cygKl0w7y8Wa)2=20fWq6Bl1Pnui z`T6v{w11fo*w6V{`t%Y&{$4P|WGU-`)c*kW>Q}ayt^hrAiu`lA{iA##bi3b6@hi9- z6By&1pZRV$&uXVX?GfQtCV%WN5fA;$sKgSI&@j{Io#6a=^Mhn;e+VfZKVWs4Z{gqCUXYG`T<%$vNe+s1xmUjiCiezGp zQGh)UrG6_x@ruqBz|s6h-rpxrPxZAS_}y?5{U1p24hR5)<&UQ#PAYz}1@@QTKVwt* zS^EvC`0v45V##lJs74wl*vg3{gUiS6DwFoPkU|vrD^V;y>uiVr0E+t2ZTn)|S)qV<3iaC`#3MZR<8>a^5ACn(<{rkP z`wabO46n}d_047KT7`{;qg-9cs~VBG=Qthhc$Md^1|XL6G(PHOsr^ufzM16(DR)8*IjRMX)K#ev5t7d5Am z4XO)rPI_{AKb~vw;%|wbBe;{#HX7V(l6D~*dF}y{oj1hoV-60Pthgi<^A%t2;DU1} zPyUqGedxcc)L&(vyw9iIHVT3mo}^cw-*{ujQ|eE11qSgNBON4} zbm&x*w4-D8Nm1R5fOMrWyO1%TO8ox-hxX0*GdNi_9|miFb^&7@g|^)L12^-{bC;jB z@51)i*Hn|i+Pu&zl@ZBd2q&jMEa5@IjB$bZ)%#jD{vspUR{lnQk{D$f3JD(_9` z+oFhB!hkWx>fAaAY%Ub^c13ykf7G1bJQ)dN0X6QPT&{yZd{{Vu6{4%zT z!h9#<1&xha1{sz_jqE0K)gOWQptPMg|j8mPB{`dlrhRlCrQjP6GI;Md|E z*X?(Ea_bXY>#(Xs(HLX2j38zwE*I?s56*L*zd>B%e$m#ZUpfhVU?x9#&fF1>gn8r< z^{HwrX$^C~vVO*VQNB$RPO!b1ytPZ{eq+E4TL5R&lY#ZGjCGrf&0EANae1|_5(P){ z{_a(uJ9->?WM;l$(tl~)BGXNuPw^Fpi1lQd_u^>nz)}F(RBt#SjORHArZHZ>@bkp- zc*11X=7L*5(QE?Ylt{o5LpWApxPmj!TJm#=$LcOO)wFlz@RG#yHKIqf+3&W~F6=L0 z4-Mj`2^+RNOj%ej0OGlA9t~IRhFh4C03>aUe{A;3kccQr)Sg1J9 zP6rj2X@6wb(c4Pu@;aFnQ<7A5I30(*bTdy9%3~pp4=1-z!lH7M+-W7TP7(W|9xwsU zGwVdKs)BoU$FI~>rsh4QuOIIW56_xvn`TmXsppbg)8C~=r5UU@m0SVNS3ak|>xz}r zXxhhx|XKJM2qjx?RL} z_XS+-+&TBfLt!*R{%z$-0C2qVlh&}-=tpw5DUz$u4!Iwp&0$WGokQ)SXHoMKig2xy zo_n5q8t9EH>SpI-r;_3}jfVW}m59$EeJZ`R#^&B|bN6xmD;`PiBz{;H9Rl`K)A@I- z?bl30f^pn>kLg-+u{j-e$Cl9KADGtm%5Sy~E36aUhA11D3+6 zQ=H(RLOH6}>l7{{SrxPM4Wu5PqrdW{$t3L1xs%jnOgxN9z|T)_rCBf@0-ux)ex9{L zJKGgGlEL@Rtg;JzF98SyXUeylFM1$C!bL8YCSv+5D%w6I{LR=A$yLq#>PEcBp4;02E^^Sd(8Cd_MTo zKfyg4Qn%3b-|bCDSdtNJByzCD{Z%k)vCc!xvr8g%lt1Uh}^(|ljMC;r)1x5Uqg zlK9t2)9f$wo2@o`dCY{#BvZj4E05jF8OsoP!y@rsc5hxU15(DBbRX8CbIC1iV=?V@ z4aa^(XkA(j(Fa`aQOV@@{#3epNE|r%R1AG9Vp&nq32&M`+eqv5;=eX>)cX@E#?~m5 zutekToB(<2`d1gLXiF^d&8KB%npH!B0oWW8sp*_^UW;po2V#zWtDV1xl z(8!qKmm?X+Y}S-!<56lwNZu^rJ?fI5@gu4&e(4`me%^}pyU zahE%C*pA-NMxI)>Gs!h=;s)R>DmVj`{{TH{Jhvn^J zRD)-fBRuDxf6wx(P;X4Q_3iKdYFjA3<&}*?aNWn$)X_kjLFDnz9MmPFL@y`J+n;ZG zxo;Vi1;%lM{b;y~cj#kKu_?zacCJsM>zc^FjpdOHV`3=;p1JzhPcovZ_u%o2{{Wm; zaYZ2S;Ae`fftRP-OZK*wIKOtt2_POZi~+|^eJgR}X^CVR+rh~g6H&NEP$p^?bQBpl#&r<7?UCHf3;%}Hr)ssW8iB59Rg44j^Sgwum@cS7ABIb-ne zOY;C|6p#07v$ptWq6PDWDmIMmBd>4Py1QkJP65t4ahz9Q2HdFXbD!n;dRD5Wp6pFn z@>KY5qT8-s2>Rm~s>i_^F96%7IvzR2du7r@>$Hp#rx@?;SVkzAt2QudB{^Sl#j9S& zn18|(qc6+ksLpxY`chkbJ<#3vPZH-jKQA9z^!0&p(0)CAX?(PdoxdV}+^ep~ zpWFB|K^X?!Hx8KtuYA{kb@2DXv3PFRQ?^9&rDl)I0S?m`1&oS0`L`XtGN5;=vOwQ4 zKD={VwlG31US=n88%R;hV<)#Jx1(LfNi}=^26KaznszuZ_(C)`{mNS@0CB~6U;H2t z#p3-&)nkk7uWb#?SmH&M-az>y_;8?%gMv>u;=Y!(7ZOMO;R?;w^5 z9`BH305}_MNfwjL3wnMM44sAKd-MI6Y74&wI#myR(z~V-K<8 z%kb+?dxN$$H~?|mALCmQcn-!PpCo6#M-}cDdS8I9tV}m>UN~Wvja|m)$s{v`=LB}^ z=~d_O&xYk;Vd33M?gR=7$uMcuWMuVF=LZAtaaArK#oFnKXB01Hc@Xeji~Ob#JwOAR zYj`feWV9f6;8$a+_ypbBd2?#g++gH}ibO^{j1d@C7~>;x<2>e~9v-)~iZ~(DEuxei zts=>CrZrpu=%E{Pcfn!UWc3;U0IT@k#Vq3u+~t4a5YuEvDH0L~On;M2pTRm_-z}n5 zBc7eB(lqN^$k!UCtR+~JsjzjBkb05{9XTGp)oN`wN4ZpzJ#O{gNBXg9v4%W#V+(LO z=rU>l0IS&FFT7vdIDY4uL*TtSWhEg~gN_FkO5?ybQ8|$yPM!Y%rFssbr)uUA{eyWE zGYp9Cp^>*`xon~*-2~uZXN=>hShTMb$1ob5N)kOFTNMqw2Lc1IKT%VjyhL=9+lurhy)j!dASkDNon2F0l&Jt z58^l;^}65iir85lBTb)Cj?f+HW#%6!F*s-BuG|k&aoW10l44wUcQJXT6wevcz8=_F z%O=QBD`4OZ9QxL~ct1>12a*9k)#}T0;OH&mw-)zpCeglMGnU43NezI0?<3Uq6x)lR z3hEnVcx6j;V)*l;5-=abxbQRABbteD_AXCWQqAZsk>#hs`cY6CA)jGLJR_w>5AK&g zPr|)@p!j8Nr%8D%cQU+Xq*&#>McjBhK@toBj+y)`F85#fTWc2BBAyu}18Y6(4iSf_ zdAZ}%^Xp1nHHuqJ0?uf?(>&+?5bZlS5vM296yf0AEqU@#=eQi#GpzWJPWw_%ABrKe z7%K6qT9n2~1wpuS7z5AE&$V_|9}+wR93N)Zb?Z6KlQ%{{R4Vh(cd$cX!hgzGTm-Dux4r@56N#?e_t{` zwpU7T`uPz_;oUw)`B6qavDenD+W1nz!E1=r65Id$A9pu(ELI8S01VMy-Q!z zu0qIUFnyMPDT&4bRJ8|a>3~P-Ydcc$pTK*KL|$I&+P$#JF{rYYV+FeGh}rGxN2$kp zxMViovVSp4Hhn2I@-XhaDRHS=T{2pEaESKWrUo3b+*t9Da-e!+-!%OL!#XalVFsgb z5^a%3%jn8BvY&NjDt*Ou?X7$mc!-l(@f?9pFuHW0;~#haJjWke&(JPD4rteM-RZYJ zC6Wt_yq3?WNbw0<1WJJ0uExN@D}ckOH0PE%L8o3mT8bF!Nm`TpiizM&G31jmqX2P| zIR~#8^x%GVYHtE*X$wnhZi{dbgk~R3GC|;x>6+@K_=)hRPK{Cv9}&qKfwyL#E^&@} zsIG}#&r^+WbeQH_c~mrOARc0=9ULhjA5oqw&98;8hf1e9evao|I`r#aE-iYi9#8)O z3im;}V|6{E#`0l`=Wzt}`LHwjR!rXtbS7f)+a`T+iuUxkJ3v1v#{#SiU`|NykF9b_ zy-7*Qvv|^iR!HzGkA}KUtYd6xxbuuxbK%Vr%Er^>hCRxEx;mb{Yq7q!Qz3Z=(E8N2 zuxyBcJM|xxX6i|+HeW1PLK~M0YPeMZ;Yivsk4l2hJ*&M&4s(%OvLKQzt&O1aq*Zhv zE-(k-kMo+%x7;j6aU5(4%&Pg|=bz57EpPQjy1RwtkXwKfJ8Xjp1$kh&9Fv}N$75C7DBqRZ;&kHoMs$aB4sr7F->3fouCHA#$1T(Y zj%g4qk@W{__s6BfO;M~@JOf%peqp_M^VzPC_n%V zI`lkl^~QOsa<;*qS&6^`ffZwoBz6)gBRp|dCegHug$Cl?9h7%b)7XkwVw?@r6S$rL ztNX&7^lwUOw85_CSN2|?WZ zp&Q+y+OLH?H-__KO!mU#J^K+@HvSgy_QweriHdL&A#*j7BMlSH$!g<#nrk3-)){{W42ePW}v*`KnC z=y7*`0oReFw6Rv6c=tNP6O71!ZUZ4Q0B3L>px2E4)z^2{`gVyPn!azF zG|Iyn848%l>BrK(J^skouE&|GT`URcPj71bT(L#rVC2u0$HGq&D(@jK4YBr%v4RxE+H9F-X$abG)VUlsgo;lit; z>sL_5Kjo9TX#W83i8m+dUsC)Y_>tnjh*x)(+SHc$wTUEIVucl(b6|tCg~uI$ub0fE zzN<8PSS2rS6X`8CWPqN780WP^F8=^KoOK``-;cdp((Nu;_>?9xaHs(3(3adQHhXKh z<_MQexH$x>7G!ww}h-@9wQ_G2X6lWmOhl}x_sXIVxK*| z(`fjr&rrYnbZ+xOZsiA+8~ z9`(HdNg@td6Yc5!D~?$3o2|eg^(5ybw@+&E?~Gpo_$~pZ104n_Uv;Db;D{-JZ zgZ;C}OuY#lfw)B-8_+nqL+SmU8jn&2dxO5aB@-1ABdtE920NQnv$uYml_^(oD(`@_y-j&sLR+cj=10rL}%=QZ$Be%u}y$ay?DdJmwwk01IjuUr1z9uY&jPYr4e zJq6T%{6$ap9yj?v75-uM>K)I#&y?%6j(VIE*W1>#pqC{8glkY8&+p^^0OD#B`*e6GpZKRW5&r;fqyGTnX#T~<{{ScAhxO_o z%zgI-*86e^>&^*1X+R_AQgVMf_&Pt^!@)?qKj9nH9CZPuPyQyRPur)!@~9v1j_Ogj zeX^k+nF6Kc*x&j0`G1(cyF>Ypyow*<>(r4`i9sqGfI9Kd{{ULP3Qya&!id;92BLZX z`hSO7x&HtS;o&2kczaVB>GQ^ar7!GkXYzh1e_Wyb$K6*mD*^``azD>n#g}n8uZ$b^ z>+q3(o5Na>7~?WV5B`Hy=l!`nI7j+7hcyAy@5qPr1DZdv@xRIVp{!*N=h{)K83Q>R z`gg8^(b{L)z#cGh`WpBL{u`4=j_Z2p7amzZb+RAx2Omx=Lr?v?v}-1JxX>=74T7RF zBirgZ-JjB}WZ1>_KN4Oti`k!{7cnQ2BV+S*tP^bE1gnsw<2lbFz8#bH`S7cgB)%Ke z4?JRI9D04s)Kh-n{tsw`QFvK-={%np_4a>|mNJU_N89d762puP^Ugi# zicWdy>U;h*@VuY5hlM3yF!*Nh9^dH+{{Y775&L!cY57kLUf^;603Ruj%Vk5!vA@aq zqeYCN{Kwp~d29zb$LC!=q}CtVim{Ee0^6LiIsWb!pvQi-`PnD!$Km5IJ{r4a>JQqJ zIsX8@I#hq~+#VZMMT5fEQOK-Ff3&GQj{g8BwOlfcV!yfgp-UM<`H!`{ORn4L);A{N zc87E_I!P0lgj(o%FO2)t}~~tkEAC3p*#$dJU4zY@o|+EA1e2! zIRN1F=bnC0Gtk!su6$0{{vp^+qWmP+d{Hi-tX$t--A`+28fO@0l2SJu;BLS^-7CZ= z__2L)GG0lmv@n(4&@H5U!yY!1xC4)%0|KsF{BpZgYk%!K{{Su9EUJ-3xMw_t$Ri+R zAE!0$!A2UZznSH@N$F&Z-W|F9s(#fX{{U?27g5_>ED{@yQb7(z7%oy#ki)4{)6&00 zt^O7Gr(W1+iB^QS0}Hh^flmC zekt+ckI2;gM|X0aL~G?n2N>hzByrOOQ)cl$#M^lGcyq*8aH%)(Sbp&;a##EQe za$H?#}-J;(M%9>V77<^Mme^C;(X50nXjTt8?p-^sS4l z+o_{5OZJkE+t?)RGTx^S2|nhfI6+xml+@(YZ2GrO_%NE4!pkJd6ap~bWNz~oXB&fO z%;0m5m_2K%wfG6(lWc9T6w4y#6E@&^?~UEP>*8xoXT+LBWqdV%e_=6E9`v1`3}40bs3!^=cp!U)d}pnA^1xzes;_Un^p+}&SMbl!ojc%%fMSA6 zd94yq=kGQ{bmx$J_VlRi{s??8j^XXbnv*aY0#fcmll|gwalo&Kbe|LaQ-K_7ek{Mb z&I*WTctHA{%unf7{{Z1C@mP?VwTsyoqOaO!Tziw|9R8J`_I4vx?Y}a#%%l=+d*iJU7% zD61bzX@3U37izj}H~L3$i)=`dKz*`S>%{0sEOd^>fiX;x9R?n>k4Y?iMo)VxRG{c7R}ZO#+S!)?f7bJql9i~@RN zIOe?-%Po0MR~EG9KIqc^1$Zl1v1RA*d-eb8xc*V{avMvTX=Zf_|3H%TE zZw{U>bge!a;wmE#A^@{8fErSc3oktvcS`so&2(`Zt-Nrmj)Q0(-j%GATHCJJLMo2R z20xW@VyQ~BIb!T|(2}PvXQ}!({{RRdhOE&97ItV9^by859lBMe@W+JWU|Jh7j(HJ| zKhJvn-g}E-89P&tP!Hu*U98xA>kcu~V*a(|{{Un+yw2aRc8U5}Ec`1LT}7Il^#(8T zr-tyq{QOy{KlIWu{cH02R??$fqQ|=#%A)oBtC_sBj^KQng~VCU5iANh{{XgM)~RHX zd(`|1{?L;9C+R-5tt5KeS!usvlGQ>flt~u^^5m9a4;*lFPK;?YV(ib)@p1T9=43Xua2(5hc_IG*eHZ@#K|xYXY+D(c=!M`9Ifq~Oaa}UY zAc^x@BsWSfnv}Ts5{er#m zXTyiMj!5;5H+lxz{&Z&<>NB48&uYFV_)VzG9NNC6rcEWkF|)|6wNy-51rH`q>!SDWfuLlub zDe}^~OYc26Q+&6P%O`vtj;&`KHo@gyJF1?;%ad~B@ax51I$w>f)SC|wG|P?! z?W8aHnARr!Ytm*{xwd<06d2^>`(We{dvjQKnuUyj!+AQzGz=Alj2An)6O+#D_4VSR zSE~Bo@fWj?V}rT9_>XMcZX?of7adSdZr`g)2jx;*__xG1#0m63!=_@qQV+Nd3e?)f zQ$50zoT7jUQO0r3b5qzwaWV;{0oNE(MgblEzg{VOchxVruVvZ4ylmb#xPTbt(6t66 z4c=4RzA`h;=@5#^Z-`b=f^IaOVK8yT5HS39+#YML5Zg;AN#M7M$i_f9Cm00t*B-T6 z^3#0EiWe9dJ8{Rk9AovW_Vo5}Pw)Q#GJTxCnVf9D5;TIQM6uR@QaAqqpavs$ag0iR zKT65}0ELmK7Yp_+Uj*Q@*pb2MfFJPbUXC>Tc!_I>;Bw=Z0OaH7M?;#=Z7WKQ8<@67 zf%7Ymkb(6%9M$`J5B^>LFZ{{msr=uO=T?6ZGz*z-?d6_WmN^12xU;xjnESw$jIIy4 z&#h=*_@hdm-A9BqD+wkf28FI7Mj(Q@0!CfCe)cxx;}z-=!FS~c)7l$wR2;<;o)2DI zJ*yW{(qX%UZlGbDDB5?!3D5pJR~qzG)VVe#)0>NrF>cdK`%i^}>d-aS=_I_v_o0SD zg-;CNBe+uGMq5S6VQvOrFg7Z$fK4KG}_Pcu1WV*7E%wf9Y9DiEmq49T*bhYw7vh?W_ zIV&8G9)0lXCts~l)Vy!3+sL;u=x{8YpWR$6p4}QXA4;W%Pidlkqw5xJ>Nd81V@M9- zGC%}p>G;-jT-ykS(pNo)JwL5-)_)QWmBEtd!3 zaq^M1fa7n!*FRn>gKrmDHSDm*X@4n$ab!z&;Gy}sBpg<=c%m5M^A_JwbbsHd5TGiD z0OWbSn>Y+*a+S>U&%<+#`&rBNzv4y$?L(R#C%G%kM?|Sey^XpA201g2PR> zh2>qd$j#*pk_rwFOnqy}bYFx}sS>rWanG4M7W{CyAFX|JWqqUgsz#3PTe}ek2olDD zq%Fn}DV2^f*bl9Bw%!uaq+r&%Ro&|Y#J6M1U#=%P{{X&HzJ~^-8ZnDJY*S9FX#dgt zS4X#)lmurTJJ;2Jvg8XMud9*9ZK33UzH7u!ftK3f+(Z~05sdL)M1Ia%Y`S)_s;u9~ z1UNtNHm{P*q`t2-zpYPa2mDyv`wj_bQgC=anXKoH#mhNt3;FeMwX zz>M)(x2Z{JU?e)8orq)D@s1F(kmK8fgU3!YUp;=&nswf>;oCUxk}?CxpdcWO7w5C(V(4RqR9hO90TQd#9LK;5@!$KkZst9ZXbl0Ol{C|oR;vu*dn3iF+(?M@>E zFn0cZtM9N++R{>|J+K*90CC3@ zdkTGp^{T7w9w6TjmuPWuDbK7?{{ZncC&T#MeAhA$U)@H3_FDIYY^xHhE)IFkEP8k= zy+@Tg={$s$k4*|txr^|dU9lW4h4GMGH(zzQADK9SLwcen}!E@xNbB{{; z3&js^x)uBgL6IX;z;ziT99N6@VGQ0PvxttfFY~CC8h6ne#}iiC$la6SvY^~97!lvd zKs~Cm{5z3O7Uz$6626OVA9@#Y$ESb7pc+IF$G`(UN4NPkr`6&7rhiMItV-?J;7-t10mZT3?x>w>UW; zDgOZCs{XA{`AGWRZ{{f5{3ls4wo(Zh!Hqw{v?BOboCck_&Odb?KlC0ssXyUj>xx8( zAXAP$O#c8gQvU$L$MF*klL#bd0x&tG@bv!xls>mx`HY*d1?k#(5w+8?&M_QNwg~H< zn5&jP0lU6NHWD*{3w+4{I3C8iroG=Zmpt!wEZ&(s)|IxmGz>61HJ(vE$Xgy^0Q={P@(&b7_BzbA>^A=HBaiq1qG`fPDB7J#N)B!8 za+2w$Hq3G>dLC5Oc1!sFXbygaH|5^0Jcw5!sYu`rtJ>72Tje7=xgW8_jv4gL^hPh z4MS@_ry_1L9D5G+lcCJHmWI-F;Q3^I6rU6UL+9GDV0tW^eq}`=_@5M+TZ>m2>4`J> z{I%eIZSQ#-{`nO3Yr=VU{6MJo4GGSR>U*#JEQ@iRT1aqs#GSslsmH|oWEuM`ne`4o z!n`BQzRq`^o`Rz?>J7kRet=WHh$Z zSA{Xv6l9VA0FKZn)XMcdf4lst`xoRsdOgo|lj58Tcgt$vcRpx8rrv8Qbup%-8uit? z$Y)j~dlX#1IT=qu(<2tDlwn-Rf&ItS} zy@!~bqrJ2}rG6tvov&zA4unV#^c5NSl_@#T)bn(SXaF8=_D>Vx8Gjeq0RgWD2hf9N$zPl>mZ@NC!ckpBSj73M8&*vXNIq}V{( zWPi@7Q%j(^>G%9kN?(ZcFd|DK^%9@zl~QkrR|T+^tAocf6aN6R*PRP}ysID2pXXJc z-HAUjKU4nz*Q!+GeT3>$w&!^-#2r)|HKag)zW)IHO;VTQ9qKM6wu~OwcK-n4YlfB^ zl6EFr+#1Jgc9v7-5_sSm+7zMH8MdFmdhA|2n&#VOtYKv%=5k32eTRSLSmBMqGdV2o za?IS5^)=4v(c>z-VAn}&1C~-x9Wh*W`C{yfgnOL@hlf_`-|aDuSe&1wUW>zS03;L7 zKT7rQ2xv=j;ib7NoXEg?;}zB0_-l4E`1{wJEJ97)ozcSHDV{x{_(n&(QsW~$SJB=P z@YFEH<`K?R_uzx;{OVm3Kq1B#v4XB10Ut+h*xwqkZ05=1GE77f|olp|Rz{>fU!)^Dh8(RpVmBd(OM`Z>`2ag=cQ=Pq*`8El)8o~ zPSOjyg6BB?Bc5w2+>`(}U%*zAkWg(WBfoFTr7<*f_TC=Sbm?2{{%aEX2-3Mh-vM*C zZhKctWpTb9TLV2i16XWkl%>K9RFYX_h}*}I0KqMc;C2M_T_V6Bw*Y+1I_H2tol?1tLWTpL zPHI5s64C`j<`(rU$RC%lN{US~*HO1&aguSAQpJ>D@JR2|y=mC_fy_)sG5LS>>PZyF z;Y#H8BdGrXBAwWpG_=%-Mi3HqfJ=2CclyzB3}y^4JRZHzKmMv^k!Znm#ydU{lI zpWJ+hf=^B}+aS|IGae|hu@EREobJy(M^jMD$sM>=037GkAFg=mS0T2UZQPxua7P)= zJ7k*0c7Hex>OX}*9sTLtE?b(`AG18+0WZ$|pn?hdbgp71njq1}L2iM$@O%N~R2Objb^bYYbRTcZ6BuS%hM{{UyXS$wca$RKcb z{{WxDx^}a`D}qJ_MtL69m3EN@5xCAzAaylymZY+@%NFsBeBeJg@9$X}q%uU2#Hyw# ziC1E|E8imrr)u12^1-49<-h}}A5r}2FD*s$VOJtB93H@A?&;qZr9EVb1q zr*o)XU_8#}9YXdC^-;&+SR>7r ziV^|?lgsXr6Y0A(>{eE~^|0HbXnKB_r@WGa+;=Gg5P$Ew`fR;l4+eNx&*RAd()g*g zD4YUU1m|{trytI{&xcxSXbx9{dt(Li0_GxGFGt8OJz3{;J*Z{fUZa3cQdA z{43(|@BN-fxrJZ7iRqTB9?}q!K;(hVOXMV5NgJ4+e-WPDs=cR|1Z*7ThfsPStzK>O z#s}Raw@eRTPkQ-gd#M{bcG3U~v~?u*?b54XMv_d%E>j=pBBZuriW6{A^#R4gM8B1}$tfuCbtTu>y#_h9?&I3HS_ z#>|Q1%wb&Q;{@isf8xcgml|EArzE?$QaQ$U*S1{SNu90_9ZBo?*OmNARuR}RKXuuU zuT`#$BmMM9sJ+H~pMO8wbt`KNpPFk;Lg`qJa-|opd*_PriETqp?4zCSgWs)tjl@eY zj4r&ULFMW<63MuQ+NWp?Nh9>GH~tWx5lbt{6e`QO@+3kzJbx8_g_pR(m76|0F^uO{ z>0IFv1HQsOe!2Dk0PED?ecibod9J?Wz+NMi?ORq?>_aI2wPM%d=Zx+FSF>%(4p=$> zaqG=@dr0(WpX};?DaMcp`MUdmO6qjK6>EBWtYS|&2mG^}=HuA)t%$xD_~fyR>=H2t z1P4xk@#?aE7I^gzTTGW8tW;6b zWj_A^?0d3=5tWRZbbkuIBmBhZx2GWE5jT3lKQmre*zf!|@e0Sp4%SYl2}s;4!$jUA7mOvrXvS84Ry^-%5@G}_}9Lj#=f@N`lfXD5;USe8qvtKTfsd{vPn(#rReW zH_$IyIM-%;rc;jDCyM&J;C_oWj;VhqieWbK$!>)NzbKI9v$cujjE*WXoV92;n_$$b zS5s*DaqZeTtzlq57SZQDe~bJoA*LU+iBf4$9(H6DW5!lIaM|O5ioF~o0F39Hn)LDTL*l#590NwURwQuDi}>=@c0Yoj6+FC+B63%P zcSq@;?^H@~z3w$meUBwJgkzrqr9uAyo|43%Ttkk3;B^k9KbWs&Q?ooz$vgNb9+~5ck}}Y?RFKD`DaI?o z7V*9^L)}6#_4)8BIlc<``X%2jv;-fz%RFUC_8{|6>rz|E6sT3{7I_g-o^pRmY9{l7 zPD#l2uT+19zAS)~I$Msz_wn`o>YIEq@n@PG#};wd&Wz{vqw5rZoe%2Op3r}B!$E3A z)B~UOsmJ0g&Au<$v|cx!Fq=S%AOP+H0h;jl%eo#oHM`7kJaHpJe*NXCQ zjuwW08a4C)c~=o5Ld4^8s0wkD&IrNxt~%9YD$(V7S)J6V)L40`M_Z%k=7%63YKfv9 z^IGy++$Suj6-|(@41WVv%(@)yHM$|OLH5{s{{XE{zwZjw@gycqZe~1X`+vGB3k3%9 z9G-mS>HhGoPZEYYPgurFitosXRSCoAxG2WJPf!91=6oVDf2URpTX-O$EJ`rTqiv_6uT`DU^o`eeXrJCM8W4c8?%}F)Ear0a$ z8SB29k{2T}JbmGdZwuC^^dxRUrg*>(3=lHr+eNECmS`tV=0v>t~oYo1yX`$$)Y&q*bEz`Uw4~P7X0@ful z+y^t1!?-(!)nmy)o|x^L@}Pi>1p~KCR==C(VWpi|d$^`g>9->77X*IJ)Lv-Q>FV0NJLXa7aV2Rr`NqD6c3xRg0O_oAEidn zf^e!UZ68in3e%=LkiwfR`cG7vKgEV=@}hn2rYVYFEXR|K##cX`ajiAx&!VFb-N(@9bgddRAQkK@)O5>301T`{DEU|%VyW6` zc)?X1bDURMZwj1Xaz{S3=DMxRnA?|29MzSt4(tIX*z$Xt+l^h0;@h%vN#>=uwndG* zVTm8l2COV#5T~zNi-RMMAlV+B{{YXeXsj5F1j+JpU&nE||{$sKBI%` zE2hw)SF#Y6JBE12Y8Wkt+!;3IfIJXD;QH1@ly%GJ2Q@*J^iU%5u0Zo;ujbvl1Ea1m*rAjMjgVT&h9$@0Gwj4i(Q~Qj1u23ImhEv ziH&CSV#4FDMml%KIiU!a#p4LkI5;Pa_CJ>uVn!w+oE(wGM`}@>gEF1nFa`nt02-~l zBNyCp_kOwTDv+&k-0`U|lb(tJ9FJP(jBK|7&sKgh&238Lua+OL820bps3NSAgBxxm z+-D#CZ%Ta!V@g++CS@b#+rtLVeRKXbm$)Gdz$dBCPfmJPoNV$!>mVTV5994wgb^qM zdJ0JMC&l^h+J9OEaZ zLFjQ^R9bQ++)mAmI5<3$pZ9uxb*1)bVx68f0kf7k);D(^=;f3msey%%qV?~0!zU)EUnlw2%-`4GbvKMLc%8NZ1ZTi@&?w2}5lz3!dR zDuQujv~r8bO$4Y>x@^UD~o$D z%Z^9l2fcaT6&^c+Kvf{)r#-mu*1G1p{{Tn8JGu^i`&8^v2BCi=uctX2SCsrvb$vSC zS2zGk>OCvb-brWu;;+6wzgqJ@i%}T#m}Jgz6pes7;}y0Q{`C_#?z84E99ZixTdud^ z`6E{QX@cQh1FqGHTPSi4LC8L%t$E$IjXYCs+ZJnms&F$8_&BemETT)hNi1Xo66#kC zf;w$dGx+;g$d7R{PU1G|$G5+|eusmMWl1)VkHyYvt5IitZ}A7kP;nf#ee?T<{(fa@ zMe%FKu#Jm7mI3brfAQM#=e@f_^8{h;qN-hA+k_1~3&{#LWD-xeHPWF^vCZu&_dU8V zjJ`RIM63OuCKQadyYfB%0DJ!c>Z_4_a`Dp0tdMDaFfk0cKlvKIXx1;qwv}=%46(6@ z?7`1Jg;(&Nr7YS!UVX=xB9gdpMlg8o=~c-KT$fU>bLz42)5ph!k4#Tt1iYVL_0HO52r+-oS&Cl4j37;!633 zU0Y;i;GFg2wMnPyvY3HvGBXuIJ+ar{nukuB=wG*}w7K<^KeRW*Xo84Eh*i!Mw4`J4 zdg!#jkG~SHCy8ywnJnaGM2PAKbNqPyE9CUl4gzp7S7X0u$d)sM?fTYVyIlwEYCfmd zG5*nC6YZ`V3GK9}Wd(?3a5z1_aqso34f{#_LHjwB*=cC3a4{U&$mxtp$o(ti3yn>~ z4&-+y{Av&F*1*RnvnkxLTT#&M75NA{J# z`_TYD-p}-_czS(=u{Am~-X-|c@g7`9jWI`{wtoG3%iq04AI2|hzKAr{fpIc{Ar-+46GV=)j-V zjYBuZUmi~vmvMJ&RD;O1OrCOk*N&UppfV9oN3Z_?TAnoej8i1@SbWWc^{%_ZniZC&k9Ww zeZb1VU~!TM2D}gKu>wPZf!eDNc|%8H@sm`gs=4W-N7BdoyPW?3v|9`R0DWz%so}i> zMFsECOAHVnr`P4LE@8Okxip0ZXz0F@IaV=$B0W`f9}kH09q*Vyz}k7p{3cf;*((L0HfHy<{#G=@*b}rhcpI#!ugjc7|$FJTz^WAO&>*x zm@WH!yc4~9^y3+?D>3_2fdbXLG~iOqryHL({3!*d#h+= zE)b3D>l*(6TE@Tb(r!mq5~sFqJf}3?8_-YP)X5qD0G^SGcl;v$9bSL62c`^>*Ijd? z=&{`xe#aNx8QP-&0P1G^yLM9%NNwI6;@3rPA6~Kq6e?t6xCPViO`Q^aWiOs9tUb)lm7q$ zO3Rx=(7KDlPy6d#+vxUK!GeS8&MS@yV}(#me>P>d&R6r8xQ( zZLKhYa1VY*db-fz8@>ll^?f2#8SW{qkC<_seif3~E@eWWxo$x1`c#`^1$u_)58>QX zph2;?#!r5}l=%>hJ`W$I3gZ}qKQ4OpdgG*NUvNB$Ad)<$32n$aSbK zuD5PRV5NBZxgVWBdhPR3)b``C{-2FfXiXJ$Y2*m8^-@Lw9qTsV5~g2(SdpJv)VdK* zZ@N>Gy$IuR5J2G z{{T6va!uxf*gr5l; zYDv`uD$DZ>bDp{DQN};h5%&}F9*3yo(yalJeR+2rp-$CBZM^3sbBqvwAVpENOS`#J zRvTg&Dy{;Of4zZ&`H#x9=Cfa2ts{aEl~BFOno}tDN(ZxmTt>^=i%WGvJPZ%DQmTAYgfB zmew*q82rclF<%h=)l4otF{B0Dzwt8KN}PPH8OY<;0={F1MbaX{Yi;L_UD(&!Wi*_y zv3KwJpD~!!j4=%#|J3t#X!faIGJcr<04B7oogrc~lGx<>=D6u~T?X<)6JA@EjzA<+ zD&vZ)cVpYlx+4?`n8E#8O{3evHSObLrj$bQ@^DW+ z)u6i;JRPlpo;@n5u{hjMUO*gvR0xa_e4`mS{Ojb~N4{CIzE_*eBN*+@a4T-&=GsIH zBOgP!W1s6-8hVZ7fZZ?%?0stF(5#X9Yk{5t#&JsVebyuGoO-r5M2%a-J1oPmrFd>Zu4 zU&FHKwh5@*PY7QyAjmk~*VEd#JxUq1OUTUT0~}JLBgZBfl5l#Q^fkOE8S0spNI2-x zjWp}1XwqCo8z2!d+T&>$9`z4|ES~1UmT2-`OfNk2AB8e)YT(*UYWD2RRpSg89>iw5 zpAAE#Tiu|(Ge$~6=u>G=nQ*{^jzQ~+Ii0L2E~aJXi9MVPaUwD#j8#b-Hada%Rty)5 zG6`(v`CFqYHR_tqmui}P7Z#UZbY;tJISdXDBpizIe-FoSG^oT8xm=#;d!JlU$gOe{ zH|#I&Wxf%~IgkL{7Rl-FRAtsKQ^b#_M+|Z!0IYe*%ICFm@_26kYu1*|V-r5@#fH+q z_sKOLpW)lvc`i(ng2<)3#AXehq>LPj=!_RG<}-fwhgW%J0>sk!42%?<20otk!}*)+ zZKI5`6C|W<>IhJHuSV0Qx}L(`W|`Z}iCFGA9It%lxJ%;E+}bOs;_6j67|0-3Jtpqc zE^)n>kX&lk{#i?>WnvE55H^1vwdpqLJ;Mm1UCcpj1L@bTdF7qWw$+YCKP&CVKMM3X zZf1iI8X@Bu8RTz-M5&;ddNo*k+x1sR&X@jAw2+ z8TYO$#5%3HYf>U&W01%}Baj6uF>{rWOGR_pw4x4^3lDLR#M32}%)3DORA)T#RJ<*y z#i?jf%@Eo~@0GfaYewA}(8x#%**NyidXTz`OyiZCcQN%zZXvYu?eUdt^UrGMG(7?QLwpz)VTR|R>s`i;t1aG=WOw=Zu)ywkuNt{a=Z+%A zK2swA{{W45-VcuV>?}7%aVhM3f$vc`wrK{D?Y|FXX*^M+1jjmzDo0MTFZHcY+gc{K z@%4(ZQT~cfLFHf#*UT!Kc z>r}lN>EYe*wS7_Z?}4K)pic3ftR!+c&ml!~Z{qE4CMc5y!6W5CU01`H>#+E*;?`tSD-m@Ud8ddNrul|l4a+0 z;RF8t$6gKa_Fp%}np!G-?Lysp`pBZbo%rRa>uf@ANckqqWD5K2aCvUt|SIKTnY*J1(aDNKh z1kZ@p29?%>LRlp&Y`HZS;A%9Yi{bF=|iZd?`h z9MbI>$>O4FlI~NH{qhDrg959pmk*{JtCCsW_JYKo0Im6Mb927u zvbBeW6^gRhuVa#*;A*pJ-V{GPV#NCcAN5-B_Vcm89QtOdhPV%saYcmW&ihe{+6_i{ ztd&H2vNmIH-CW}wS2;W@Ca2{vBpAjq+pqXmrjwSlN9@kSKKxV~;>%|<&1%0mi5s4s zTQ%kX0L$4U=wbW_zd}eLLvbTV&KQDCce)%~qzXG8^~LFdW`JC(;7rAcuSL*f0_9g6 z<3IkY&a>RgE8jmwz6e3T;pBM0{{TsokIKDUVw1ta1Y*47;EJF4SJCm0^qGJ5TJ%f! zqmo$UR(!@u2#vHkBOfpwK<)2e4P7s7KURGlFUpGshaw}iYit@v&ij^k06QCZ!XiNMMp#xgo7Im&a4Sn97Wg~aiz_RbD{27jeVadl~JZymhzMFUMIml{aHOpX+`)Ccbn6!0nw zhiKspsa8wG3a-!mvd$;Skd^7QUF-N#dpdh1Y%GP^rVEp|&twxEhcAZ27gKqH~f0}s#es&i`%EZ$_W+mP8i zS|GuF*T3d#4k*u;wIT}G$Sr^|{OSfWvKCR6?di|yP@sbB>tWYnjg!a#WadB@3Vk>r z{)VXB>XXYMEJhUdJ*%6D$dBfy&(BPE9Y7L@YG`o8kuHxYk6yfjc{KQ8nR4xg2Z7EH)BgakR4;y91>-HA zoqrn95?v?#9e4Txj@(o>rBdib0N@fms=d|9tE6kjM&XmjKdm+;B4jz>gMdDi#3YL+ z+ax=gleA|T&#~f_PC!-zB=A3_SqK(aa>aK8)P7#oRI%Ne6tEw}qX+BGbNW>XZ1EXC zbj`p#jBqJhCGyV99CZ~es#+g2x(w&8f6u*Tyr6H9vKXE}yH_6}Ft=HDNf!12zWRf~ z0P&w(8ppqcBbN$tM<9PH-G<$cNy_@1)<&k~hR%u3bJy_|qLX51`6u?FfB2;|rd4@6A5ir4aj(TIgev|2N+snQ?sL}C)H>eX1a9G}hk(Chfs2J8c#8C&LMC8tjz7Z|v(` z=dU}QAH$0Ik6F3xpek1O`LbrhPvO)14!OYJMlzpGw2GXl=rzY(_AlNhjs^>sz~FmeVpX z2aqw(;ZrTfU9lirzV3=nJAeA>z;tOcNgQ_T%~QA8<>8m0=m#U$rC+p2R!ywC3ugpz zpQ)_a$)X{;@&-MJ>t1E?SwR--$Ob0C1G!;duOxA%HjTvf&$W54#I;!ktZm3>*-z7O zt?-ZcsEWS>Jo45{i9B;__Th(XiR2r4Vb)LAkHWr1(lENbpo9Ma9}oR&>x)?o{yw%Y z2g`9dPogA%AJ)E4(`}|YyzH3TXLG?F2{ra{f9%oupFJPr%j9)FIMYt4;Rz5hLj#OUXK3yW>9Z1{;Q<8bv$>?$j z!+u;>R4K_vLz+`px#+rETv}*)dx*)xD#^w%!5scLu0HC*{{T?9jsDLhVk?H1vt%CJ z8p}HU>cFrhtk`1sB;cQV(YEmnk%*1iE5CbriPU`D{{Sk5MW)$a)jJM4PTP->*pn`B z$_6><)cV(1bEoS!s8Y#hK@)8)7Q>T(M+|dZTS=+vmkT<(7EsCoZdpml!OlDM&TC^t z3@;keSxj2S;aM)>(jt{2lL}c+%5X+&v$4K`Ve&3AjJyrQ9DCOl;gP9ZX|b)& z{kxgCY=WTm1aXgg*_?0K>`5)0lg)OebCyQkNJx5=qYAi?y z8}iS3eJjK%;-R(QS3@*JE{Tpa!*jp{cD%Ink2Y{IL_w4HR>1lR^}XpUL8&_ zDw&SjYv@zTL&Gu3iWEDDw+ANgv%fv&su^|qGp z;wFh}9t+E8>IugHn9oz~UQQz4T%@07dUPGIwO^V%L*XMO=Z7be4o96J^grswc;)yX zZJcMMt^DiXz7%Pn*?KMIsc$pOx|a>dAjGG&eCw*sBI=U`BL-(5Png!+x0A8R^eJ<*W&)olUx{o>cyUmet+ z8$4hI34B{49OgKO>0WLzXpdtne*C=;E%D}`cMgGk_idFD4=bPc(>!`}UmR-A(&`i1 zjsr-@e-n!PN5;2aZkMP_?7Gk*Md)Koz z?cDJ0`;?}&if};=26NPP{Hewepa6sb0OK9M3b&|S$rPq5RL|WZzP-9uMBizeSCO2i zIw{EfsYOYxM`zrnsUS9L0CZIm!LEqxfRMIFBELvJ z9oy{io|8It@?&G3pX!iT=LSm-EA-Rh<*P&BZ6;E9Xd%u={WC*e9(w-(cMnt7$^JQ? zKKyC9mfy!Ju>uIOi=fX^O?dXB;tOB0B$m@Rnm+pM@A&76`Um4o5T6=(;evml#GMH_ z74rtDF0P*9F!60h#sJySXQw&*Yo`MQ=s~{6osEC(6W6KN-S~z(dEh4=TSSGk*Pi0L zc_fPF!rVjmHf{%}E#AD-Q?a(5($$3VM$%iLD%-RADX!vJp-Z^pYuI)qL>2k|_TlKB zm90oFh7py)lNhKrZXkR96{M#}E~MR~4D+%%2{`o1isv<1{5vM614VjQ%iI}!r{_OT zDA?Jl7IRlg0u&(WLX~y$D{{Z+i6Ay=xxacnC&!%!Kt<_=G z686eXHGIgt{kH(Js91`&Uyw;E*uVsJ&uZs>3ZjpPdBM-xX78L}j+N+NCUGgwP6j%2 z+P*fdxob)Kp4@ec1d3UT;zm`83T(jI%1%ywc@;B=K=~AL=}^e#1SIDk*)<~)(R3u^ z(xugum81$OY+=o&UFvu6J*BnFn^!kKXn-BCvMX&Y!x&aP5uQb8Y4_H0#BNM++$`~7 zNM>D(-^K_$Ja)67+}GL#Gd04+!?N$dAO7zd?6w0T?3IOd~x)xKfUm=`}LPE==(cr~1+0wol$~~V?(zB6K zW*3Nn2@!6a^V7a7Def95K!*ieoagxp)A1Q+h89-ieok^TSn@EAED@h^>HamW7rKdi zn72;TINEtpj>nGmTWUmdH)qsvX(R}XwR#+M9=^Tm^mbF+t`vZM4`W;2$boS*@GqEi z^7i!~=hCbFnLL7|;GRd}SJpY;jHHDM;DY@+d!E$>(tp$t%l^;j(x%`t8+kGwc+{Na z6d%z40QKq-As3|XAcY@yo_kfnB#NPd3d_?ysanEn_+P8E-(1@WV64~QCa7|53ijL;Qu_u}& z7zemfic7RWhG1|Ts6Mo=tkaF)?QfT*H&Bu|&_aWi{PWtgLm`BtKhBv0jP~cR2C3^7 z(WSYQf=5A&emVaDCXpp>arb)tKMKRtwF%HHQyk>+k51ViO42Ejayb$MEH4^@Hsy{w z{(Zi+azsVBR*U7@4o)%$99A@v2Sk-d7%9NOIl<#UTGE1lEmfQlU*!aM&#%(1z)R91K@%Fnr27>dt9bvwlZ<)58oqCo7-3^7P2-$E8-1#yQZkxWjbo z_03eV@S5qGjL~XRvxxp>Vm?x!XBg@A=i09LyHBvO(;=Hrc7kIddXa)K)6$vZ{|ga>Igi zoafixq-}d_q)3Ic(+8)y&3P)DJKT|C$3NNyM@@$ybR%#XtsO0P_=@gC$s*DozxC1U z3qrm7PN{IaTbRZRa5y~x&T-9jdRwpjBzHlG7_^7~07H7wD>j)IxuE8r=Lc$$^6|%N`gh>Ga-&_zaHV80LP$Jd7Je(|sV)pYG1X5WB(uGGMJi51 z9&w(3{Z*9|D()Pey)%*rBm0! ztSAD$;7;M3f!Fk{V2Y}xj&N`>-m++;O5Cttm%nfRwNDqAWL#qz!T$jD)ij>tcvsqa z#s?&NAFXJhK*mPNZ`6KOo7@Manf9>X0v zcQxn!JC|ZWU5P0X>PPp7A4=Z~{8UW-7I~J7bsYXbw}B5TZe=*>^9BQt!oFJ3i+*$ZSHnfqWf3=U9PBIj#bMZ^KZ<_WRx zc8&+VaB;(`PD4#Jhu17>*Nbf$&%>}ZELECsn1XV6^`cW%E5-E`DRNPg6HeZiIuM!p zTfTR5wRd;+t(&Kft+BWqT+Dw0#|FH{&cj^11IjWT$Be!K{LOV1x<$pc&)Ibxi4csd z9QEhiR@jZTWZ~kkp?^)$ZbXd@!|%0}lF^q1PDvx>E63n-Rj)iTW2eaXwsS~`yfU6j zgMpF#;4{je-RsaSEuv#;vA*ELFWYGut% zEl&*8Y-O;yHnK9Y>KS?vd;3zcOK&8?!I@O<+mXp9>DskCP>ix$+!2D&ZEvccN9$bX zaQV+sUEHULuVb(9mDV*wZ9gk0J9E#^)P4llO9z#ArO9}5Wn4_X@V~^P*bd&+z-YJM zW7aM1AEHPz^fl-j5Be^*HlI1lMR7DFdt~GA!K^CA+M`GpE?spK4xYtYEBM|t$j-^s ze5HLdaa>-NGb|SJN)98JV~qVr^R4Y$7CK~e+PPzCawd$AML0jqRULlaZM7S?ZA$r5 zf27BZ90>rCN8oFjq}7d|L%g)p5*-BFleO*MLZkc0TY^6^RJ_1oj~!LNLs}^`Q+R&E zQHkkR;xA17zT! z=k>09Ln}-6YlZTdV4df0zk0Ri#+*i@k3*c*xVB1Z8@EyDtT3xN0ERy@_WUZmce*Tc z2lD3*ppL3|{Hr(ZOgKgDj@6knF_$NfIiW@D*p8A5yD@JYv~y>l;veBv{M#F_Ac8qV zvjqci>VFSfr4*#bA=*An4EpeEuJA6JFSUQQF!?S1W1jAQ=>D}8CCL{iR97>xQs=;0 zy~{My#p#Sly}zw?!{ZOdxcn0z!AqT1X3!v%GTF!xhzi@peqd1{j6cj1b~9aN?yCB0 zCE`UCy9oW<%e@;se9Ojq=j&YFqvM#Yby$qrCXFGG0@5{@&U21FYQ~*e$!cjTX*~|F zz&A0=;(HjUjx~7oD=m^H;C^X&1Qt2yDlgmmW=|jJ<|iAL+Ed2_b06zlJ_Ye#_K%9~ zZJS8aVe>BSF!0-LbuBK?K@GtjMRQ-b@~Zqn(b$r#ZDiVW*O>Z)>s(b8@wBhm{zrW! z{>fE(94EnLx|hQ<`Q)=a@{)ajbUWA2n(89n+%V%4x&HvitJwYz-T0c`{yjE(S4$He z%R7LqhEFVGaR-cJk6hP}>o-aE+oz z>_vTZ@$wlX@y4QvPIpK!4<{)JuQwgC^*xNQa$TAu{1aauM?EnNC-! z$2|>vrQ+GIpI*6m(h(i4(~!sp><0cka(Y+jpTx_nZA-$|k;P~BX1CMex0L*tXGV!z zZrtz)CpiR?c=i0#@hp;A_`3f92amMM2<$;5AJEp>Y-82+NyL(4}`Uj`T=@B>mcBc*r~oxefAKtj6vbJjYdNltzRCNCzN;+niIMMY)qq zlU@+H|t+O`ulq%%N9T(-!;gC;i z-=S$;*%?=tQMy~nY>}B{VoHdR3=9Fl9-!Ch7lql^!8#hh%BCpyAOI7XlNcSntMlW- z`hJ~u%MPa^#_45sG^sWF>wS6&~ZXF8;0f^Y)yK&q6YqtX{;o)w_laBuYc%P{~-L;I8T0BxVA&Fve>PF(c zl=RzUIbxy|8z*cu}I~Cx>E2PEX;-rEPc@{wb@;CfCx=XznA(6S}cn9P!3S8T!{1rb?p5 z{Qxk(7I*iwymRmy2&F*q@A{TLkWPO za5~pJ;@vIom7!+x%R?T=JqvGa55~J63qfk08QBU1Rh5FLbsJY1?OC2Jvb)qFh6@aN z-ee5F@D^;>&AHnXKURHBINuEqL}Ykg39W5YPQ2!L7v~;6#d|)2ilrNYleg<$ zU1E|&;!E3UdPfu(Aa&s9^{-viAtE@oWDUW&`d2P3j+AXCeckX|BjM^Jf6v^&{*~y) zJ;jnC^zVxE--3<*02cEvpZNQm{{UsLMz^^TTnU(c)19Zkw|e;si8{{x&s}^sL}?6& zNR>`IbBdYBMLBP8*0pahp|~DpsLvdXes!H8iH{?Z$sU=fI%+NQvQ(Sg=QTU_v{NR> zeC<)OOJtMipqzT~PqMy_@i&Ea10Q`^dH(=`0h;L|jKad`U~D15BO@!%L;BS#>&dlC zhq}2Lc^f3Egj z%ZVp~`C<~=O)6$0zh6GpS2+2w4M7Qb?N$@X&uW$A z#7Hr_18@hLxbdQ>m>wIE>-zMpnP}wozurobpK=dOeQPFU2_6_=4yQG}ssI^eOmKM5 zTEo995_!_F0CCSu_N^ks%sFC<8;3#LJpNyoHFDP4<^~cCY(kr>;jxpCC;ahYd*SeAiP6FeMh9vd;D-oF?kg|dP@}KG2to*UZo|(xcC?6OcP`nx#G( z0AsTpntM?ZyN>z4`VW&mU$;DrSL0Fhlm<_*fFi5%o-@~#n# z`gn6T?aXn5j-J4FrlKL@;pQG*cAR|P-<@abHt5NaK797;{{ZUEOA<6?f%$`X^!#c& zx7wdE+DCJP{{ZUzYLXEOT25t2LY4(E-LQLqkyc85nq-ndeo#){{0h|4%P<9o00$VZ zbHtaELSu|FjmsuU^Z*a*PAc-So`~mR({*UrYL^i|l{qp6dB$5q|B7+%fZRU~qWsE11@G!Kz;y z&mck=g31W$J$iNTUrA9=gcq`v-{g5z-C0TV#>TC_t93o`mgM7lg>HB%y*TOI_Udbv z*WIO?bMwwH-!?fuwJKj)NKA<)-MsUW(x~gVBIf2Mgf9t~D~?Wk^{nSwZW2yLk);JC zWLJ;(d}MRU?V7a96P#x_JaNTPHwaxyf$f1-1n5BdfBuDeV5d`EU)k@f&yL7~1lM;w0}*C*kHFMRUx_jU~N#zt{nK9{@x5<8>U7LeqB zz}}``8wl)w|JVG!ynOhZR&aSPr$0c3zK8f4>dL1js{Y(MBN8mV?X|?OA9|BIUUo;K|6EQb?x-1ErOLHfjGb%^ZC@U6wX_mbBxwS7p)>NFV6d$*P*Q#L&x%i z-#t3!sY2{<%DnW?AJ3Y<87?vgbC2`&tk_(gLQYJRl1M(iE6si-{IEp514WFEzkGgm z=?KajYV+Ia_04b}5SA#~+DS*s5m@yZ{pciC_)p@ZYJ3dwj|#KD#Cff@uJw0UZ1>qF zGuysv=S?*gE{cK=Jdx}33i=Dc0V!Z;23nv)VE99mi_Fou?KDp zX}=?{UrP5~S4+BhwCK=d{XP@(bnDGm@ivX+Yd0oX$k~53KBgX(--BsUPt@SX$^By9 zhs}NvxR&?LH!fU&rza%mpIY=SUrn^sbdwFzZV{u(pmf}$isXC`qianp@j<7~_*LOz za(bUZUafOwdbTpdC7j6LWtiZj58?L}m3YZwIifmKi^I6w@pGu&#D-A+`qxNN96#s)g$wQgJ3+5Z4-+peVql1I6cL{Y}mDQ+L~1)^5^J_~d33S! z>th2?wz#~%j@sQxcVGp2H;Xh&`#pD1NI?cgj&<64hEcnx<5Bo`?N8zxb;w_v00kWI zeQT`vho)UWi|qW_82zHrl=J=F-_X_)sdb@IT@D&cNuNzChC8Al0ncoY)K@d2!F4s) zk^v>b9{dmRuR+q#wwmx>xiUijS;^;vj^A41bfFA$GHz|dBjzU@b?I4OMr_uI^vxC- zQ^A(D)27#rq*=N~=p$V<`2x>2Gl)r!o>xsn2TBvL0kxRA-*GyuX@)Naxsk;=!M zoH5O4>XXWSf$*#0Bm6*>=DT?k5Ze(Wz-J?=$>;~`Sicqi7{9~Yn4KBSQai-SAqA0_ zka7UXVb7=|6~_EG_}Qy?PRTUeDU2`kERNsZB%Fiz)%|&OUx`xQc$Q5@W{wsRz*(~x zAPvJEvQB@-ysC9ED-_({x^_+!l@yZH;!C)2oJtEG_#+v2K8b!S6B=Z+IaH_u`-PdoRHPJuA?;1R|@2NeU zi@1da#&8Y~MfR?Dz?%BWYq&I#cwURa;G`8O_Jn*$^_Ns`sv8Bl2lNLY% ze~SqpHNiY(Z)*yT>aKRj2TC!NBD817KMJ(%L&MsW=utnN0ZH6ssxfmKl6K^t0LNT& zUJI=SlUAKyc6{kLKT}^=d_B=T{dfCtK0eB`!?V}Tg-&zriuq$%h0d*eHgUFT0MGlz zzJi3D;-@XzK64Qj8j_0cdOyI~8GLb~c|(J%+Hie*#ILu$J4##PZl=V6wYI3^uE=r+ zr&{=9;D`};_e2|q8oi*;WBb&vw!S)`{{V%lsLZG2Gaobkov9Be)9|l9AGgf)GROPR zkze9hl$Muv`^!kNL?s`12J=+scepq|O8m_6ddU7S)KLLqZlu5ipS)}IQ{qk3_WCvU ztctQmV)J~(;hZdr#4tXci0kQJ0C=sltlr*5@;I5DS$JSrgVcR#cE6BPXX7Qft`~R#d@Ia1CB-OLubZ8*+2^`2PUVX|H2#$@1I&`~Lv!X)aK_ zPKQ`3JOiXCJj-==BYpxk70B4g666EZ2l*Peb$jP&Floo-7P3fGXC(QgXY$%Aj4G#Y@AQ9@TBt8KyQ$6EbN@GKC;@XJd{h}djx_Y;gMF-OLI zPg?wtvbh$zlw>vmU>N%v{Y20-?-Y2G;l7J$;i;|CRkpUu+%DyiByqmpFhJu6xde*& zjP9MI3%euU%I9}GEl)7?Q3JH%Q0feP@`i5gVd5a7~;EO@e%n6 zq}Y#41{GFs9(l{LwChpqHvvgjsegm<8=*`7etrjY;TbJYhjS4aHx2;w057?zH95_` zt!4rF9nfTUA3yW1XGe?v5^F+X31-hPmzcdaGakM8#dKFz632I@+DKWvxe*JuQ;@?a z@vkDHUfNCW?t7FQ_AyIkV$?sr@deCN512<8$FVJre+u<|E*A3QQP_&|Jv&aiu+(R3 ziA=AyILn^NEK!;_30UrmAO!q)bq=38sFkGUg?M3F-0 zB)?qauNdp^iuspKO0>ML&qJQkM_C&dRU1cP$MmZ&2x$2{B)oAabl2wM`86HMu zO~C&E2+m3DFN3X6>y$WC%ugsTt2qdW??rx}~hP=!{C?`5f{NJpnv(-}0@hH^|gh zh=uVhnRm>qZf@Z$jmSMu8O}Y&9V);QNoI@=M;nhEXTLwnv*)-*v+^Zjg&Uj!$RFf? z^{Yn4NM?av4ck}@2U4e}OfUo=!nq!%+YU`K3#8p}?Ue&|+C!cK9d2~pC4Kc^BIUe9=y$YZ-a@LT@ZG_Tx{v*@% zso+!g#bbaN5V<{TM&%LMA{>Rr)dLvE(y74!TZDf@k=*D10M$*qpj)1oZ7eGe*EnD> zMl)Pys@C${2at?_amNC>O{LdvcLFkSI2F#^AX}x2cgju&OlRBHi;}EYNkc)hIR0#K zal!up3d6iz$(H~g;PYJ-&4VZ#7%0a$?fF(Dk+2M>2dK&8ujXl>8E0^J`A4TG0Qasx zU6rnGi%2+)NEtcKPu98^+(t_JU=iGZ^{b!M)Elw5pPPbz5!3LkDefn+n`*v6$WikQ z9y$8e%d2a76>_1nIc#(X^s9{=Na*RgkmL@e0z2la%z{oEBa(fEY^Btej8(Oc2?d-e zO1UJl{$BM)ODlDdm`}`2byFe21lmS;Bep-!HHmu=Ng0X3Kg-s&Q*6zoV8|6gfm>rDo9ZWq znSZq&FvWmU!#gBDq17d1@kQxlg3?C6iAC#QP5cUDo8f|X#R{Bs9G_bG zqgFQ4Yu9R0R+H^fZP>X1b}n>#+m`xOi zxvvmysprb$g>O_cl_YJd*858n&@_N#*G>=k@iVRbIUW)4zEd}h=O7g_ zS;sSjoCatMF&~|ICW#pm1};|zJRDcBd@BNf7z@-nS!`Gg_X`Qete8qq}upv#9CZSf2_jMhHNXD6|j5sV~@ubm!SA=3wzy~ZMzcRERrTy zgTWlW2>dIh@wS^Sjg$~Iy~NRN*fywEaysW{Tn?G8+PG?O;W%klnwG55gHn*%#|pV% z5&E3=t{27j;WYiKafl&fpZe*K>r^4sq_QY2EiM?t5!|!>?+S1@!EE>JD%Pf7S?m;Dk}G;tT4?IV;_1|*$ey|q__o@6e+eYc;Q4nkx|HPSBzF4OmW^uh z7=G}tKg2)8Rb!`GJ-CiJWdk6Qk&nnyCX%e!^W^-qT@#?>?{mwHm8@-Pz9+b})-A3i zmpf)ccpWp%dl$r;`>QQiPQ6mBQa1x|2R%Q=zI$CI*|&YA$EP3tdg?Cj^{q!%id{4%kC?zj;EKvC*yw6^k%DM`3ikh#FxI%1+YdWmjSsx5{7&^LER zMuyy(7?1*t44ShprKa1+eDf1+##K>A{{UXO`zJ?2;m&`{Z!IcFr-)dIqQQlT+~v>RNw` z>|@h^w5^iXS?nXsi5imMG;$DIcH_xzI3QO=;ZKDB01UPG?R-VybemF0gCwxtPE<6C zGE9i52w|VP2vRV4t9W^IF_mZ4Xmj`eG10Fsj-_TVqq&4f1*8zSl?U0^JN(_GF>K># z0~qRSTEr=-*zRJ|C@HY^=ac;Fnsgj>k=aUgsw+lK zGw5v};YOX{uZVVrAoGP*k~et)R##S2g$gr+k)D<5lG$4Qn2D`mA~zvVf4pkNydFH) z@AR(`t(&c^7D|^BJg`WN<3BJc#{lQ1G7nKvTqd%RKbT?|m4Mri?;mRL@%Q%1&!O~L zRBeZR-Ojg1n%39E7IBD`N7^7!v~$#S`VN)Pe$$t7U0rFOZgQ~7fa4!3l?(0CtZC1x z&Ei`f&ZS!B+z>E7hRyj~d{IDLi@;<&-`(Ez^ z=g*U``^LVX5Aa9O`7B5ArGDq2d=W+e0EFX3To6CDEf4-hTKiMuV>$SzsH5#3Wz2|2 zJg<`p{A=RRg6`k&n&{XK0e+hhs2A!hf>UM9TVzdhaQ;bxN)lM=6ZQ* zwNIDoao#HzTF-{{5h94Z*o;xcpoK;A0x8G22R}hy4*1H{TWeaCsW~x7>&N>hzV`7o zv)E{_XwtJX#R+mx@tFZWzux^bUkG^4+99uMvnzs3()_*t^+s7QeXE_>oE5Y<8wj3j zm5wr?oa1@gI(nMuMZED1(*y&d+Unf>1#+<{ECKK7T9&aNyo7={;=Y1s%*x$J8&Pp7 z;BC)N^x5y^mujIXJJ!#aa6WG}{{Tvce>|bgt%5nC>#(mA(No~|uQj9>qV~+K#3^ur znSn95$Uk)QeGPi%z3}JZ%V^*6PwA4i=v7oE@J5*JXulj?g}Oe)55Qe6+6JZa(k{{Ru{(OjZUAV{{R)g?gQ?bs2Xe^Fd& z{5aLQCd%vPIUZbW!{|Ob^UlaI?S@6!Hx^AB%EMgu4>^Q@+@J@Ru{{Re{&*8CQ^nUt^WW6Dqjcqq;dV9a;!K2#(I8Vzt9+yS)x3 zM##o620pdGTdZ;1`G`)}XDgA=5)bKKp`)PNxO(%BI@b;<*&EVVn`hX624ySYnQb06 z0WRHxk@B|SI0v3aIUh>(C6i+WQU3te?_O!}g9pJ-yE=gUi7m{d%P|d!vvM_kbh+0M}g$Seb0h z$GKUT2mtjRX)W473aa!uCX>pS{b|W0V;w2cd4rF-+5GFBr*lFpf<(KxJ&7i%-wfM{ z3ZK36WBOKvxe_0jq4naa%H~us9{&K|>S|chIcvLp&AATc3ZQ}9^Nu?4+OF@C7%>`> z0`B9f#~==A$rxE=Nil+$8+!0hTF{C#Ar($Q80WYYt*K4uV`?{Y!UHcDS+UD zAjUqmpAfneE5=agkTcFbD(QI}jk`Xbs;yxWqe+Ydk%9(#)md6WlOujLUrEgmLvrFKGDz7Shf~MBM{#vM$@z{(GtaNRLRhHEbLo+sfBNZy zNP*;#LCD7+=QQjCWsr}Mwlmlhfsd!HS5a^en5~r^hCuylwZk!H&j20(>Bq4D0QFQ4 zcF`z|F~e}*L04i=K(&9g!W~Z_V<7%qRV#?4jkigM=Bw!QlW+2zHZn8MPw7)Ui#AIf z`}6rydkVq_P@AJCj&O1-I^}S3tl2ogB#i$6g<1W`A(-X;Gr=CXtb4a3qkM2aU@d^v^-)YnZ;-5f9s82j85G{0}Ep@(~wXM8GPa(#Mn?_E@~U=a}= zaB+-h{{YoZww{8rXyhibHsrLJZ2ETmx>h~ZOi2-jIXD3Oe}#1#m+seYcH^KO{piKF}vTt(zb(dQY418qTDb-eqqQyeky>g<-wi81sV6D`L)+%$j`h}Qg zv-g=e3(sGEYpm1Vzu_vmZa?GF9OwSJN$XBu6DB_i|Iz%fxnMPINW=1NnlY6;kKL#^ zHT0LkyU(@Fs@-Ig!rz_%AAhDjE9Pt0{{V^3s5${EpH7jA`WxUhjMf*(dx$#q<9&So zasKB&m*#fmzwa?Vj)fyQX?lUrJv02O^kqY+h=NJ!jw+?4pjJL&(CR z91H++$Q}JT73F^xf~Jupb^Xfp4lRy?LL-{EZS;ZqUd70Has6 zbYR!-;%8a@?njRNFqazjtJ|qmHqyQh4nK1y27Z;~+CA*S)P+JgC*&Tr>Hh!=wm*tw zP1#``#uOZdQEw&yAC-9qp2jp*9)tPU+s#^(QS)?P?`F?O)hsoC5a_RAq3MHCx(MHLUT1x|w3N(OZ&FurIQ%P1!k2_x+({TYI(6SrRQ=xIfnG(g_=m%K=8MciGsIOTFqaDOVkNV%?E$yFxl zzH`;}eRkUO#1{hlPO`Xl^5fiRcy@)2Mi_4$J8}8f7p%p1r3v*tGWy2OJA$Cv+sd=Z zIKja=KjEG$$P(vS)FqLw>yuDTuj==3NdUQ$I9)_-6lVxmjDkH6dS%^u)eXmt?PAAR<^+9WYQAf&1=Q!P?rc^Cjf3vz ze;LJ4H_vZ&?+#c4^6pVokjV_}hdeP}I@RF=EaXZE?mfq?Lu;tgZCwl`-(5S+I!0TZ z$XE}j%BHMIX79Eny0&4SNPG{}3e3BYWbK}Zp{UiPOr6}~tt;w<*Hh5+Zw%aO8HO8+ zZKLLP60ULRIULt}CxmR^uon7yBF;!@CX(hi+y@xiHi6A>o)kVsv{JWOo$>AzWBJ!* zD{-I8-nc4Onwzses|A+frH4+WZrRJ-=+|&Z_F%9Qk`iQBk8$G|&g|fJ6+v{}L=F>! z*XC3GYPI;;dnjYvH{pt^%%u)FuJ|`7rhL94Je6e*%^ovK4Pj@6)=BPnOb=i2HEbAma*&N1$5&;B9k+E$J6 z3g#pH8dIxh$6*LJ=k zhfc7&nmA{dGQhGomnIbQ$PNv9h2*a!K|njc&__Pzytl&t01dt>_x~M98ly>fG*zPYcptch%@`5fikmvEQpUq_-Zn=AZne@3m-W~dyS~D^6C6SfB zUp@?u-ACh9ziBfN)@`I1JFV5nxbos1e+s>2tm-m&j@sYOkcPN{NG*}c0=Q3&+Jov% zVK9F&zRDDzK%gcMem3{7GHUThd(xxyJiFoKgh_T+kKQrkx9)4@9e5w@Yo}5_*U88H z2-nnJ0dkXEqhMvTf2(D^(|{q+4$LHIfQzZq!+ zjDf4#A8+-GUu=AHwzj|chjSI@-4}*M$6^u>)9GImd?%2f6zK}M$ki=J{yw$#7sj~@ zd`oN-pS9rQ(8C{3UX|zLz8{(D<&O0}U#ZIYiuOq&xMTr>u|Nj|5i$;k+;A)5FBcXb zEY(@gb2QxjO?{PdsGGTUD2kFGjW=X-pEkJ~Wdob3y-s@COO;>TfPShE^A*r(v6YCl+!EQxO2W39Yjwm#4E5-0;_5f6{C}YT01Eb} zccMOZtCzJHW}9L{N{(_yar#z7u-?L?u_Zv~u0LA0{iS{V{{X`Rt6bjQO%o)I!Rjz5 zi;~b0uO6j;W1_+KH!-nx1b{gQp7cJiu9XaKTc@J`0EJ6@h4gz>h;x+~9=mI()pUCp zG*Z^#WSl6#LRq=*is$B!Rl9$g*HTkWB;Ls3j=!y;!_H41-Cyvp)SrU-;T{&zq?m$Z zu|UPR`_aYI&~aat64>fQZfGUxkGgC0Z{b&)XW-2${I(C-;znM1!bUoFBfWW9>>%hy z*4*`SSx?(a{f{#Er8+*f6qYU&yiCVo&PSN};E(h8SCvV9b{7iG!1=!q!~Fg3_3D2V ztzlhK*T_wW$YO9w;K<$o0MBoF@|RFoj-!M8y+6t0rFLOdeT+{t5Z|?s_^zhk<}q(9 z9#outexK9vs&|vRxo}R_91l+2{{YD8-klO7$>uIhdC47f`St$1`U<6S!|whT83V8R z{{SbgY@oS}+t4)WXO{jec}XFNBmDmWpGx$-A@7HXnkz>{B^(BEkT&4sFYKZRd=BpPhLp z!MR8LBUe`YTQS}?TO1wAy$`o~_6uU(VI#2bUoBVotnXh5u-GZPJY$T1jb!d}7)ybJ z-_o@*p>~2gf1W)nHP8ksImypGzL>4n#C0*=^}Ngx$7UUWD!g5MgV%BCfmIq9-2B~6 zG6#R9TR;RwSajrng<{JpFg-GGeMV}8pj-UT8)*ms0M}Lx@JofajBaN*0OP+(W$vT) zMvMi{;CB;_4M^L$kl`02fTR9)^RxGo^ zgtTffe)DH{*Ez0(P*~bQ8R+~!IS2eW_pWYBWQAC$$s;+*&1Ps06UzwdGJavk?mfEn z^`{dcAz^G1eq+-w8LG@tdE7}Sk%Dl44rz+yMPy*oqK-SBarLT!#_h$q z>U#6}b*-n2#|Gxe$5Ku>u6?GBct#i#~scHjV71^*j#t8NQ06&FMktAjceo{JT zztDPqHK0g{>>H#!^ylg6{xwok7?H}6{q6`p^=M6&;kqE<94jv@xgdX0TDFqP*8l|p zTaCjU`h9-2&qpIE+J^_IKBRp(Cbo3zsn-T&01gPp9@q!`ic+wyYmlNailZFy*Z%;o zSobK3+rh@}nEwC@(`$vn0B6|nYaZ>}&A`aOz|UTL)Wi(Ar&O3m!yCToJq|yS$7;vb zcM?}Q;C!p?lhfX`Z(DWbahzeYaywvB>UQsMrpYWNi!lH(!N44lb6ZBrNKaH`Ti(YI zQ?PD9jDgP;ruy>ErDH3T{o(xubNXG*qWPBEBw($A#F3AG@U5r1xw*O$P9cEs35zVp zj1mFqp5*acxW?MOOw*P2GcISCpz~R=kTcZt{HrQy?a*fg7VF>fuCn`0hsiG#uaS}i zVX}Mmu4(ky%Db53e1nX3`g7OYr4Vsql6{VJ%?M!MbD#5$l~#L*$Y2?mu*lojJ?kq_ zis9tSf`vvsyM9$oXSj|%fpS}n_Xpp&uE^6`G|VM8)g8`-do*uyZ4^m4h!l&UY#w>- z)K@{G++MecC;MPuIc+Vs1kO2WGr{Cn8{so_HPJcwLAPb=k({X z9Lr;(S#4Fy9$Oh8aZ@CTJ7swp#y#s6(raZwZ~$2pZY8%#1^|DL*5@ehW@+JaZ(d2G@e`C*R6^b+0+Fkf z;#_^MtTfw1J9zZ3MbjpDT*VF*H=0AP=RHXIuuoD=dc5&#l1GyYa*X|?dY*}-T3Yy;88rPmCzkqEF~<)C zv#=p{o(Ct_@vm#qz8QG7Ju=;%(o}MYvLeYIL*ot3@e)5tJ2eGfyQ*R5#+m!%4atA-9d>!$RNz`We zk*QA-k15(WE!gE3KdpD=xrIzsMy9P}i!i`b!cx3l?s&GO2bLsYF`OE&b7A&@=?*1Bv!VEJT{f7%%}*H5Bq!pvVAN&JE`CGy{94}I9iIrXp9KZc(Rej4e22W-4k zYiT2kttvZ)_G^|9KOQwG$-H(dK;RN{$EP)tWQshFgROpxe%5+n);uR3wP|lFeUjufjAIM7 zGBMZyK*+Dp>%AvYv5(HbvYr^%Jo=Tx`2c``DQ_&kGweIpqS|~u@P)_kH4R4YIe_FXvA{l^&1F{= z8g9(ijv7@XrM~maf8iw6Hj7ZUr2yKww6`sR>c&0C>P~BK!xvT>WRvQ8zMl@G8N!=+ zS>sL5oHk-AMmqpNuJYsI$AoRv%^s(9C`|mK*n)o?fn4%ww$NE!+l}r584xhq*^dNt z?Odw7YCR35LQqz3@jHJ7_@BbJUMaOp4H0Z5S1cup=4VmzoaH3k4tjMJ>{`B}vP9u> zpi7m$F3#B@s(35s{KGer#0_dq?s(p58hV%fBMzr=5S8BYq9R+?W{9T zx!P#65#p;^6OZ((Z(;X^a^De_6c9+{5hQX*qtGz~55U(!;pt;<5?O%1^6?2I`w?8% zk1eLWTR1FZk=UaJMFpJXE^r1<)4gywH%~*hb4sts^3Mv$V!xe`;OD6S0IpT?_lRY2 zsK|%@dbUU7UuEb&4?JmWJeODYqRANK8>d)~3T@8LU;h9dtQ(($ei!>eI`*itO3j}x z(j1(hcf)==E8nA1FsB>#K4QEjIN*aaGBhr-rOou-T8Cai=V<=`$0^$W zy3A#lT-0Kpb8cm}N0o^vcr_ai9(hHk;Z)8Obmqj6N ze(NlXdwPHdYvdmogmRnC9f#eJn=sAzhYl_l+?JWo8kN1KeZqsCa^5&*&J zn)uVj=p^xGr6TlesZahqYVyx^b4=SdsHF(WbvYo0pR%opeJJuzY>M^yj}Mrr7v7U% z$m)*40XQsjK>WF@1|SXrs*@>GkJg-b1ob;xY1C;^MQp6iD~Qk^yh$Kq>)O2{&*8U? z>}E4br@1m9U?X&Q$9$@>HRgI-JP~R4F^u^WtfXfL3i<2!SJT=L#jPUKS-LWZjwe)D z=9IhTFiR#e@|7fj*d?>gak#;zo9=oOl}NPWucAD%;?{T+$8fSn%fkmoQV+gGeNo{p zM%o_+X%?y!G}jTX26-M@XFi$h^{+P8zAR|hdWPkgwWpFpAz!@t$Uk@A9Al+*dSkw$ z28VHH%Cn1t6l1Cbo@>U;C_*&Vnd@bB=PHusjkGzxhz)IbeQeNdaQ5N1VDY(*MswRf zo&D?0n$iVaWjX7Q%l!UT>s~R^wEZgkPHD(xn@@^N7REOg$Q=G3UMrk}4I<$rl_KB+ z$bN?(Uid$ic2Hj8NuEt-@3zt9_ZHB_IS{#ck1d{g@AV(&wPa88xzF7^jPv}z&wiD& zsKq6{?3TGEFmhY#&r#|A9;UGwWGq3>-p8l;{{SPUcEy=Bp{L>4{{Z4~7;*{DN7KLg z{A<4Ou1|?2k?=lQI&;vE^Zx+rt}nvz{{Y0_bfcAAkI(%704|l;ctxN4aoF|p-<Tjxah|xBk?rYTP9cA^9_9)E0JEc}@ZyGustgRdQJ$HV@y2V} zye3#Tl*2q{p4``u=rRc;5=R=Kampt_^EXe(qc0JQ<3-^IlUD-Z|jD9uhziNat`DK~V4azxe9-h_Ze+OPkJTq{ZI9s+W&N`~* zy=pZXJBMEVtL3WeRi1*;3oDdijGjCD`&DnVJh+)o-*NtZsn;`zfG4j^5CtM?FCWSZ z;Hd+SG4$_SMJ}YjA@N(WkUNYvI{S7tB&A}FjGrLEIVTl^CFHFlMK{kF!j7Y_YO>@< zn1YNR=aY|o=ZeZpQJk!@LnY%#@(-8zhdIx^SG|JU8A}=rP{7_*J5fGE^gE94R^f7OX@g;n{ax04Pq%b zZe$b6syAaF?GkhTeQL3ez(1WK1;;%x)|SzA-D@$}za~?WXyc&$v>dq;)U@AWVVv+rasGN$RuQnn6VLGzmO1|b zKaE7QtZt@N8Ey$-jGn}ES{CBh%vj_*gRssN79PVm{&f+9ZA5LPu2q64A!4Hd=YUUs zzvNbfm(JE)fs8Oe%y$0(>sMoUqy3V_WQeq(H*ogoG4&7a`BxA%`(7mLLzH=9;4Kd+Z+3ShHaK8i5uAb7kHW55*#OHi1QXN_GtV4;wa^G-cMT$kWCRAl$oBkdu@&PvDMmKa zQBkDgnv||!Nf=i08wUeF)o-63#&cXJH<^V!9`?w3uW>2OJP_ zkD(maKBa7BkIQ)&ZOH)h+qwS$>(_K;eGX>2hK6EoSTs3S2y@RE$mg2tG`X5D7v2Wz z_B(z@Q}an&Z-%4$KCJ#`NocqyjA4fr)!51hif(~k1*9DhKYmIkz31pC?2rG`{EfR- zeRlnSy)uqC{uQsGe`n{BA-FMMmWelK*^WOxYrrx;;U~QSWO< zdxup0)Ji@6X6arIY_EfwUSFBnm%CzOePd^N1?mZ{*g6h9dGGmEqXO^b6T#!$S1+L5 z+ucny<&pi^AHq0e+}BRiIfS{wf(QhY`hHdLQcg0mKCwHilW97Qwv(wX+r#E#pd4Yn zdLQ%jsBf-~)c$x=86KSVzb5d7`LY9JX~cbB(*vyZ07#STkk7s7u&e?Z2AvC2d7@OYT42@FoT|euY7$y zD#fLf$!86tO6;WNVs5I;264~ws%@klJ5e_(a;?c+=kxE|rD0YL$DJo);X6K7^(|a^ zpKL*E9usLSbB(8r4Zh<%*Nc2}eYyi#mI`iFV~wATxqN}Upy}4VdG)Ilz48Qv$ayiS zW+T%$2Oo`m?eWe=*YwE$0J0}xFPNKT+IFErGNW+8>T|_wmc@N$5}t_@i*3=8j^{Jr z&kk!=a;&g5p;*}LD|U)-%e9LQtsSfxT5_kM+f44B**#7{s>vl!c;Xeb+##_4|56ivs&*fZ?nDi$o zPhRz;nm@zKM=_m0!}urV2?fbKcKKrFxw$?O>US}LCatMRf7-Z{9C!QGG+zZT3_$+? zYHBOTAL%mVAA?eP-W$6GmDcQzipI~twq$A+c6u~YBW{hNwYmg4w+EC2pHI%ZSJtd2 z3eP>F;Hf@Uwa6LAOoLo(Ujwen2L9F5bN>KeQ+)^V*3GBEJEi$wQ`B3Wj;#W0>U0y#6vC>cCtu`pj+T2*g2MWz&a6umAoN?>gtXpfha+1*A>Cz@fe7h;1 z9Ausd0CU{eGimTmC2{`%6C3uA+U9Pb_ueaN{1-bx7S*E2BZ*DYDgJHf3v zKLY;%v++O7bSGWZ(jY{(awuHq`!$HbJ^p^RohF@WtGSv>TNxx^qs)C9aU-|P@Aw?o zJ$w5*_;^Bg%W{pzF>y9?)N#7A?tTX8)+mLfy*X{C7c!g!*ZAt8p5Yh67KwRfc`tfb zJH0=_nh}*{zp>I4ToI4#m5hvXGD$ed{3(}OFNN){j52Aub3!-{G?G+)A;(74m?G?+omA(Gs=1Y0KTa{BE$A${>h(odKH(7Z?x?< z`x?gh+gV1QTz2beBE#k5l~KPK=cgY^zMA#Un=DpyT{^MaaUGko1!V*d9OIA3@Nr&t zKWDEBNT+|=bL;krbN>LLds4ysJNR9kZfl|kC;cL9dJKH@zt%b*%EkSWKIrUqeST}Z zV`ZrWbqu2q6uNYhD+B60%o^dBMfh^+Wd6<4GT(e18S*~>#<~OW1H-a^%WJ{3V~eT! zelJk3z#j|(vAmaO83T39-~3%C#B@6_{>YbfOQhL&GRcSbO_rG!(i|A{nIid^Z6tid zk~qzD*OPcY;@t+jZKlZ@58a70`2iTf8-8zLT&?fGT?-%??^Q_|&CK1pe;=q7T>j7c zSYfv6{RkM!UCs_a@4ocE)+!xSANEB0G<46T{4km!BpPOl<7glo84gAdzoS!2n-eAN`(^FM;<6%pulwa1Y)F z@?*w--sJVA{;<&VEBhv1Mr>XX_;~;l+t_$^DFNLcEbjrwO!v>!S3zZ>{6C5?%$gnu z1%su*W9fj)o}Y$l%pV2kfH2H=lFL0hP^^Xl{kAHg>s}7T;+s2Br zrN`PNnN;l!<>9?9FNc1y%&w7se5Z_Yn*>psOoZD`8!tepM#@B zeGM;le>y^n^RR*d~^#$&mZxiiB0B{c;mEcs)`QNz{*rk`o3*KkQQ+Nx++M93I zuJQA4BPK!{zb*b1ZXW|_R-vBlUg7@$>7gt?E|uA0;{#UgR^lyxE1KBqsej5#wZE-1}X`nVh9}et@VW?JgXD^DLkch!C#lI zIvT%eViXw#%-5PVoN++P9661+3_I3r{w3C8kf!uF$M6qI*}1ZcbW|a*4nWUCRU1r& z+df|7j=d^jDt~DmbFDl3rdjbeuH0{5``}mI{tmbUNbuF`<%rY6$OljLOM#Bn@d?u6 z#(cW_i^6dvJ^<6M^PRS_D9-^vjS0s+dsmyAxH?f$T~AXdoaI(r&!L0yq2#oaKzMPP zG>Dm(t_gNMx_173tHR~Hx!e1*!93u8U+34JmG8e7G|P=!P|)JjfPXJWwo)<&ELpvM z{{YTSd13How;Vx?cvk0@9r*SC06jWaMHy3#IH$Sh)l+kJIN>zqjBI{W-x&P5{vZCT zLA}n*e7NHu{eSb?y8+;RcMP#c3g-t55BdJTg+zQQs-|PwrH4B~$^QU9{<^!lj19&K| z6;oc0q26Gz0fzhqe7$etyB>$(T*D)_;zl#c>-c>t ziCB@oP)|?Ftvv}WG=&Kr{{XE#B;=6f_XF0dOSH+kFunIxO!5r$O~ z9tpw0$MUFkNJ}b&Z2f!Ig~Ey_qAaW8_TZO0tvIrphNP2&wknmFua*kNtNs+G$Qhp+Ses*R<@ao8+S zWG*(7+?6=#n$5j2PZKJx#&heG=?~i@n@hxIL^_* z=bUD@d{L@g=+VdI6B{=q0gy-6v91?c)+5&fNi1W`7zOwYae^>?@y&fMGapJ5aKF5d z7KRdXf|o+m#WQLb31MvsCk2?O%E(3u&Nw|joog#sn2T_?h1yfsCoFI<3HCoqhfUNq zD>Qjy1-#cUyOZ-{@yQ>hQq(1RZ_JaB3BdV!ezo9YaVf)1+3HcE)UL|QG$zqhMpi&R z`+eMfJ!=jl9Q$qJ4S+cxhc(r-dTf?cZ(_0}WT+s8W*xZ6>C&*QV~j<-fW<}t9)`U7 zmq|Y7WICgA3<$t-I&tg%aZ)6OTVfw?!ynG7Bak<)8yr-d)d_AF+c^BIoZ96kn2E}j zISLN!e4S4ly?Cf@j}%@o#(vFiFn+RE5vID262zyRM=mq#mEya7Hw)r>=l=kw zdtv&?T2$ZUXBMn~|J3}BELT_5rBQ+<1OEUW74P2w#HyF`!UvfgQ6laj4aJWcBmtA_ zUI$|u%XO$pGcMCH=RI(uzJdLpk~!^lI9!0OE5gj}^=E%C%<913+pB+C zA5_lb+G!O^jhIOZU~<^O$3u+dW~|;`%8|z>mWDQNj4}$2qagMEUYyi7I&_!m739CZ zjD>{xd=a!@u_WN&_svwlnVEgI%H)5>O(bbRg)j=Ac1ImLXHY&uQO$Iw!$+EKaR zcz*Xoh8vq@-jGN^%CF4i@Du}*JD;UZs#!r2nQX2JQgRV+t_S30_q zGOWZX5;Ja>AoSe8oPH}}xOBb8Y5M$Ht8s)<~ zR85^TSBtUH_%W?+EETQJ^iU4r(42K1zskJ=IDE(RBwX}Af%mQ}!y!_}Ab+|sj+Nir zx*e)dL$@QPDvt7HC7~s>2wMbj2leK)mMHvPI59?V?t}GSIpk;XtNWr% zI62R$$K_JmzJjyrZZd8jZa%o;rH^Ns$EW9t%#L|iE~h_U{{V$PD~yfGG3}0?w5}F4 zjy_Ov*wdpakXUr$s3f5C{OGrv=h?dhpMEH~>}g#HzaZ|5;-QP2|Y8{`P3~ak%Xs#o;^O9?@?y;F4iv1Z5;2rd#7`;*+Y8n0F3@LnwF<_ z+8bFstk5H?1ScRB#h@3nDQCEzNZy1DDwSTL3RY= z2Os{b^E>HdTZb|Xs*XV8BfmYfUG}v$WOwY0I{H_bYI7!L1F$2II^){C%p`S3HE)HU z7k?Vbu4|1JQYI2SNO>x(2~bJv!0TQMdlk6VZV~21K4TBOGx=B3-ZIc%LD8qbxChU8 zWOo3J1z2)1^*_?Sc#BFm4sJ|RlOf6Z805D;mG$^qYVEV;@zuGMY_3y+#yJ%{xlzNM z3@|78)|&WZP-e_&yXaT^YDn}PIWj9K<8Jg}-=3niV9+6vf~%nCo@=SbJ%O~R_(iQ`I7UqI(2o5oh0laQUIu$`r04Xb zmOaY$kFmnbr8>r6F|OXmMgFF~ukfg~kKxt2D-GtsW!O(AYO0bm`SD*iUHC@z6zqaV zBafCgC;3;<-VTREJ`uP3cBKWg!E5D91kx(LHUL0VgPie$-{V0*#!hj@bDRv;CbJHUCAvu3hNm(doUn+h zZonV%%Oi|&T}OdDW8nQK!w+dLr(`7iYY--uB5+jz%I+U7M_m0X-lwm4R{mtV)HSUU zl;jjs7I1N#{O6I-a%+Lmt$VwjOA|`_9!nJS0?|W#deKH1OqrRN? zM&{k_rg!_yu|}kVbCODq_1x=Pu7z>uKA++{7^83$#ICzQQN}aRCmlKUHNnlQ+85g< zy9YdyBtkLR6VK_zQo~f=Q$>oUwUGOiv6k(vZr4!3Dhr=14t;n(m$h}z;SCBnW07y~ zQ3=Kis0-KqjB{LEn#PK818T8ItJJiraz{*lb+u*UPYJ;vmvN}Y$0zrogXzXOr7AU* zxo%poMekuXe-3H7T+xAbb12#*K+Fmj2Y_$}Kqocj`h-h!0ft5Zd8Cu;nFmVjd{N?` z3*9s?7O4wu2m*oz&zmQvMS1nEr)@gN_BqmdAe9~VoxpzZV>tDyjT*lc$@bK~7@moy z+CyclN|CnUKu$P6Cm*eQzlR?Y5&i5QyjOtRPR*)Hxdi--2ZnM<%GcG)7lI)r=t|%Xj4-y>L%&t#kliG1Bh!KHOk9U5a6LM6`qNrQP!&&3gZ%#hN=SAf4IX}T z$8Y}tU1i%$Be`^&8*ny~dgnin82xI^)cZMck8kjirJ9+io2I^A2Di;t8H5$Y>W84=_2V zb1!ISPTm+9HrFT>Pi0IsED?b&f}7VTM-6C(^G(;$9;=fH*ky9co;g9gKZR z)hAVMn^^PdSk{*Y8>r@u_OczphaEYqn(+yAjK?1-QaV;N46wJH>Kv+)qpvvjt>D^8 zqFU(A(^l1Qb(l%LlX%^g$nTGCl-YFlwAvpWgmnarfWx8psu3*Aq}*XiVgMr_PW7tXu^VvQkX!6IL?>$C;4}b8lIJjhR zGl0o~j_1C3_34Vb>fiw(EEA3oQI3P&vu|Oyxlb}B*ue74c=zV6z9-tK#jTZvPLCsR zxd<`d*vNaSxqRr^yUK<5J;`sT4@ znVripJKTojraetWVSUSNbhi?VvkNBBNCO@C{*>GK*u<_z(A-sPi5XMpA&NG4dT#aa zileE#bHJ#Du(;$Lem#0uLXN1(y$IFfS2^VNBc@0B99C4fdrsn4KbA32yzLWV$Ywdn z=qs7Oo$hWzsTf`ucCNZqd6~~vs){!4ZzVe2v|E&K5)d$Qa2NV!y89VcKNeo^Z@&ey zj@;%?=UfJv3?o~#zEvPVleCVc<6%|p?bqpD<*`rrNw01I+!oT^hJDPKcKS{$;)Hvp9j2mcds4%*AD9D zMNr3#j5kiEvNfGg?Rts(989sH*o@$VwRq%unyB|F1<7qSnkG+_9*@%;{eP`je?Api zULsWg03LcC`LCL*R#K*^HL>qgr4=_)`|NrKf#TUAu^L?PM(Q(@(>sqnd*h6bYeMQR zHP%bG9IF@o+;5DK21!4ML0p}Kuz{v=guu@ndsVxCCi+xst;(SCPdpmrbsXAL*x!?t zHv`e`Z!T^0#E#kb0Xv64MuW{l+Qkeda;X9iB=oOxRFst45qyF*2u3ME-UyeAhPt+#1mO~|rtZbht$7WB{CcK-)H@TA5@rLjp zc0Kp|cdsTC)N9%6W6|ewr*w5b4%8O&Nr|}1fybf8`R2U_(qI4w9QUsn@KyT_IRkAt z81z3c10uaPE5OP&oP*S!D+;l++0hqxqp|Z>U~J?2!~ALg0BdwyMlw1AJvvu1x`qhY zNF?K&RKIMIrNm>JUy$4qmdr_!@%tsAHA z%mGd~!BTUAJ$|(=;BPF$%-%X+0o;C6=erO@*D;_jqXVXY0(<0&!HRg808h=FV4isP z6?R!<`zdI)?(2dw4nBl&O8SE?T3UHgfQJ%yKK=gy4Azo5I+tz&@t^a}e7kw^Z^w4p zh0Tz%(qk~lzz4cHDgrPiSmb0lT(^UDx%Dp%S?U^`aio_K30y?Q zkxPu=G31VTCc1An-eySReWW(+y$Q$kHRsMPHkr_eeWqZgm>xQuU{#1qOPODw924LC zion&ciI`dEs^=rFYI_}O)Z2@Ba*mu3ew}maQsV7&KO?J+f%~}}asc(G$1|gOndB4y z0N1RT^$1G*tT`Q2jAEt^G6w8tzxAlpX&O_>=ETEk!vlfP6H1b+DyKu!j+v^T z^UXzWOmPP11fD*ptqFyVIi(?0Q0I(w>5uYijnvVlkz^fs^yjt@=Tn9f0vuyC%xaSP zOe5UGIpCf-^#1_s){%E&uGEzYvaE{1zC{EO-y!3Y2Q=$F z5bFAL+Kb#r8pcYZk;!FT@_&RA(Ec^UX<9zJ;(La-((&?SyGYTSnF~}*q>yGuuYLa<@orX>-pw%8Z+7L+!83^t$f1PG( zw^qq-FPlCQQE<_ZmwDv`z?x^JJzGNZL z#X4@RZThnslchHKpQV@Qso^&s99w8w6AaA8K%))FJ^3xb9l`Bf--dLNt>0Zm6nAkL zA7drtUP_)1%#1?rJY$B=J7T`F)V>-`;vF6CZ1u0~8>=Q5gd)iIAb@fe<0=C7JBEAY zRa?IWT;1ugXnNN9l2EquTuB)D$;Renj2tM>@Q$F?t<5#cVF|@W#!`PH!6wp|OrOZO zw}s>wR*F(WfWQo$q!W*?UtX2Ad^2ruqFLs%m|$;?(947g$lPTePhh|OdiMD~6+eb_ zlx-gB8;e*&PV}d$vFq^k}>UpS$cnm!@%yT6pqe3*Ml2LA9S1p$QaIlN=eS{ z`wnu7f>FKwPd(7S82Fc4)mgM=gxSG`XygeQ!Qd2jamfDwbk|qn4+&rRN#nD*vM)Qg z?pSiI>U_n@;0`+vUey=;AfgGD?H>B@D{n|7x{yHRws{VAkUC)G5nhQMv^tiV_B4hI zJEeGV*m2a?JmnPmFS*rCRGdAsj>nhJ3g20z7g|-c3^SQT&fAx% z!h^JaS*EUsqhDV^py_t|Z*D&6C`4iKNMAL8j1oA(Y@R!s^%n5Fk8YZE?58Y+Owq5G zDx7?!K*%1M^)&<&$6nw!ZB&fk7u+L6utrJPzf}b?g znzHga*t{*H8J;auG0T$~jT56OIRxjL;x!Kl>sHr-TPfmrI0goRnfCO^WRP-e-BZH4 znYE_xZRL&FeQ>EOE~km>xNaD252+nWAI-TT1OXJqCJL zJgYix(w490byBA~&h(*lzE}KDAidE+iKDkOE3h3)#>0*V3v>Bb8?0OSc-j%8-fA=5 zL~$-;jK{}b6qZ~bnI^rW4-f02NpJPtTxuXG^3^R?5;q+4v=%MfZxzAC@aIPwsnmQw zrwdzyoViy{ydA5Zq>_7#S4}FszU-T3Q%*_FDJ9tPeNro^LX?h4l#G?%mLEVs2C;1P ztIL*aq=Hya0ld}5;hg?F`d7brkHhj>AeMM846P!e`ywk!!#HA4oM4Yn!n4PRyf9z= zJ@sgDp0??n;C0M`ws?ss*l`9KxHa4rF)b)ok2keTDGjQ;yF= zo@tx~S)G)694PwzE1B^}j4rNOZlIUT3XF4}tU7a^)y()-@#XM^*$V86+`d<7a(Pu; z?)g*#N%g?ZW3{PrY%Vgpaxna!oh#<&gi5oNwLSV(uMH00;m3{crjz>~{oRq9<#Wyn zJdSJV6iGJhEJ9;~27f$P#Qq;$+LUpjG47ZSxj4^WE9(m#VQrQ;*X9bi&t8?!i=*u7 zd%a7G=8esZ){Y2wv0gGj&IkVhTB%yz%R30rHs09j{!L}xOZ~5T<{;a+;AHV#G&bvF zY+{II&vV!Cu35B-NF_;FZgG$^kZEO4HX_44Ivz8RTCp@zZ2i&}b{HM|`c-?0ql9@9 z9k@K_gU_g_OhpY&+s?Q1B9VsEo|(_LJu52mDD3S(fR~Vgk;3HTrg$AaOvwrasy|gVudSr}<^Mas-;NYIb42=5M zLu)g=vashWJ9PbP&ZCwg7-$gXIDMxW`u_k*>}*e&X&WZd^7UNdyL9Yn)mC~0UYe8L zd7@}SC^&q#sKSw&b3Ad*8bGS2<>%M0Kdl(dgumV+Z?F03R37JV^d0@{E0kzC11bRZ z{CoRWOr$`lIdZ}?EAPS5=W&jd-KTJ@y5kX^#Zw1q~-Q?kV zjo9n>52a0Oe+{j}LKM1lyB(P1`{&-9ZX;>lS4IyA^1(gS;j#zUkEo}o*^81uBpul3 zLHG3)sxmmCQ8Oc0>k4m)-uA6Y?BBKW*1MMWd2nhvcvY-2xkF+B}mGg@%OtQYSAqd6MYGE`Gy+W?qM|c+hdu)>n6Z*KA?)Z zXLSasj`q8=6pbF@aCafbeK30cDx_&+Z6j<^x@O!+7$*Z6_r)^aOFM5c#qt8=ws_=$ z&mOefi@lKxnONKNPnLFYaq_o*PCw3SrP_%gWX=fZgN`bd^zF3`zCL_{cXFU`4gl(N zz^q}m_Cl*9hB#b?lcwezU=hv-d|+qkNkgdlh6$v%xiCy$X;FgN>-l%A>!cgwNdEx8 zoa2ME5(hk1&CF_57CA`9aCkrZ5Fpka&BvDO4g0DP`Q0NbmcioyV<)9;9Ypj+$*-9R zE}$vKFnwscoGAGL8^0m>^{N+0Hz8oeWSsGZ{6G5DnQ?V2YTIyI8&NUTpXfXLRYoc7 zCnjkmrfEU>a83dB`eL)SJE)=?Wgr}Jo(?}6aE2*iXk~U{2PANF>%brVYUFhrOSz|Z z+;*wT?&XNbJoo3lZ%!%8R%15O(HZv_h3?cw#C)d%wg~m45yKm-avZtIZ1xAY^Q`oS zN4^anLFhwzfAy=N)7wtFxm4;?f6Vz%**`A;@-dTMojOgYW^h!flhtZs-98Elv=hx>Y%gwNWDU6@JRbc? z`sSk0X?-QT{QguivB}T(mwO7O2)3Qamx?I1ar5=#j8}(z zMDZkcmc=X|6I;5jLNWk%XCRS=_aln;Uld;HT27N~t4U)mltx8chA)kw$WTfG_{Z|E zlDvDWMdB@A?3yD9m+cY4(5YsXmpfY+1B|ax+x6cKmr6A~?M!Q9<0x7?ou`3(K$6)b z$+!~C0VgEjk)Nj-uUoR$ns#VjDR4Lrz~P5-E5V}pYvWxfQ)_)H>L_htQyV?QV%kXp zf>}51m*poJ3IQXII`x`ny{PHn+h5&9aPhX%@u><==6Y3PGS?>MPRy!Ux%N5UlPeW$gTMQvPO_NMkI20ln{QH6_sh= zZ-?wY-*bPeHOQBIixB~2MdUBdxQ=nq^sA+mrkbfDYGxLSPC9bD)3g;#$Y*6&~c@GDZjye73Yp6Y@uP@q|?YRE{R;s6J?BHbjk<|C;UQU{=?xz5n%H{2(nSgnGhB(?d z$nzKuf4Zc5)vY=`XG_!?E4!O%*vFQVIHqPSdW_@f3iPJ3nJBxH_4u}rSsLTD#0z5! zIy3B$mD`N*le-6l`c}L;{1PL@DoGwUC^9GjXy?oc$362Azov(iZ_W} zdIfic775&ry@4HTyjC*6ic>^(W-9`ao zPjkVottRgB4O(Be$REuB!pJyK58NlW^{y8G0K*#WG5LBe{+(c|OGbB1D+H0Zvaa!v zH*?7(3<{@l7l@&qT1|SwR2u`w4YkHuM-R2gBXQ^nKO zKxZs>`Kfjx!TU%&iGu!6n_`E&TBhT(;oFifw22? z(~Q$wO7XzESQkvRo)%2Bk=-J?uqO%>pvd>gKGlB9L-FO#<-5~hiBtkJeZO$;!o*19 z2lS|pRf^q5@kKms1=P*cE@iN?lS{dDP(!p*5O{17G8dDU$0wky9|G#SewAr^X{}0@ zQ_DKCJ1HQ54?+h6{A;$=JPG2c}scl%a%FkB$A+DjBo+3YK|WlPnPk$jtSPoPU`l!>yI7U+S$uvr@`jD$k~zc zwR4O&Am2hNGrB+P+-7_KmhUdcZmFV z;J*yoJQlWXHP{&i9UeWy0T`0X#4ZOI>G{!5E?UYi#LpX2rIeP3&boD_i-R4^)4?YE ztT9B+?7zfuu#i1D7!~ZgZ^Nms^w@QKEiZg3rIO{)hsH1%4Y?Qx=IA?CMgIWDKMq50 zzS~B+lP4UQknP7m#7|z;&A06X;dz{@X!?RDBVdvcyyt1!8ysM9(*)QKt(f=l=iz?Dc;Gc*6e95#Y7c?I&q+^4`TPk%b^|iy2?XcO7wBww?mkw4FWf zJWnQ>JEX zamUuYM_Txk`$Q(LE?>fPTPK*UYZAco1XW@g42oEO^B}PyNXG;YE2323t?u9CaK3n} zE9!kMW$@6KQ87hax%}1V*?{5T{)>I2W8hoNP9nK<5Hd9M|)W8tvn}d z;XN|q6R1n7OCRs8pwuqWB?AgPzde+60G-Sj^NiNDmXmRRrps}EX!>)p$%biCLW-o| ztEN<`9X}lMYdYJAn2 z8eRI$hT4wN1!u?0xU9T$jQu)S%J#bd0PT5UtlUq3rrB!N(z$rxD*_~HT;L;zSI8Yh zXX~1(lp!l~M&>d0u=ra>$Bn)ic)w8b1+J;#skEzoIgwK8-tbDY$V>AgG=0@@F^^wt zdT;zIof^*0NVLo7ZiGrpM>VllxaZ(5KmGA93P=Sjd=#Srudb$pR;Hl9JXyY z1)51N)(KhhjmoNwtGkvNC*H7BYARffekQ!n+j~gA!}LB4lS;o^=C+egngGa8?^!*2 zC~Wl4wL&!e%_{TlBrlTq54Whn&mey~{RoHQ2ZkoGO<6SQA=Luz+9g@A{R;1AP(}|2 z0QIk&ZaxZpOD%f@)=wCB-)-f*b1M0cbCMh!ZT3G(Po618OG2ttwN7|1(8BPrytwd{ z-IkcGBhPSrwa*0MbJwB#d((9b_+h!ZxZ27aJ5jkS$A8Q5&1QIK!QT*kJF4G!CsXjX z_NQ@Z7U%62_c6m0#~>)A2az`bRkO5{k%q?tv>V}Ph^}Ii^5ag`bd}x)45@J|j``ao zg#)PX#tmTbH*W8DbI^u8B(y1M7gti0mN?QR5-JjkHxn9+A5os9i~?)gtS6j>^G1E^ z&NN>E`0~PMi&eF_iYQpLGa!k~qjm?$yaXkB@zi>AUZbbOsp;w(>eAwP_HNrBmXa3w z7Hns)Y;>wfH)Jwa};h=4mef-A50ATn#vw9)TJL|yYQ>DTSg=|2xQ1P z`^AaDC%Ns@73o7GU23nm<9t0l*mPl6l4tP)2J zMZ6{p=q0of1@hibR$rGaP>lCI`R|Tv=h?NptxDl_O&i0o+sLGsnZ81xuiXU-o~H-u zPa>UttoZX$mPgcCCV=e_TRev`Yyc8u1Tkaj$F~)%@=9(lJo=d|&TdKa9`iP=lFr*D zc-971+*IJ@cX7u*Ppv~1xpR3ej%~}L0k%-UZ)4R$@#jLi+J49|($sL<0NaySItj$lv`gWL7OY&pioB#=8RAk@`^dI5gyhVI> z@j_ihNhY3x07@)Jf~ra9oNAG8b&f@L4I3hy9N-oMI3uM< zo+YyKcdHPJGQi{zKdpSlPv1@BBfrQ%KBF~fQPq4z zlBKQ1nyHc1V|H@UM%Wm4kOGRMJnmu8=Zb47`!_9SNv>-i(RcAO!p7<-ZlINI<&Z`$ zc9NUO<2}G9BRw-&SDzF-IsL6Bm8eKd-bj+%#R+ANM?s%XdY{LN=Cw}{>w2B6+0(6K zxZXUlml381a7k^Xj^{p{^IYzvpBE?6e&3*2!}i4iqcGgTF3qHJaNKSg2cNA}a@OV2 z-dYM+{{VO0PX1@1>b@*nT_Q`n#Spj6g*hkDM;PSNS?Uipy}R5d#%RM30m70889dj| zmOdZ&#$<|3cFsmfW@3Ta8cdUr<#z>O2TpkOuU@d9RJE}UeQS2kqa=KVn~uOa>Fz~E zT(WRhin+BcbY%VaW6(de5L-RK$=Y$AgOSpsv%H1Q_D$UMCj%Y970TFa*PmdL#dQ0) z;w&U+il@xS+jn2arn!#&t(3#3-ms8>yAzR~nZt2dtQA;EIK9OQpeGx}C0pR9SZG!aGQeBl6MG1wFS6;xVyts{JCm!(GsLnv|^h17s%vfu3?ke_HJJGHE3Pk=2U3<~Way9wZtDmlmM}O*m`6BZt7-w6+ff zcJ!|bkK*nw1^ku{RD_QnXvo@0&nwfPO7DDibn#oRm8#lYx{H%DqemjNCD*ZIcRS-*cW8?8a) z^LS{YZz%{pfEjOIH+QKt`%N=Qv}DtC$l-@^JGOk8ZaacG^sj$|;a`SU>GwUL=Jf{%7nND!qING zNsL#zgwj8js0Py*EWpU^(4V?FB<8moTWgIX8$Am9{ZuI&Zy(G;AmnZ&KoW`zqMmDp(*=iLiXd zK*l%qIOJs4sa)t+=T3qv>8@pU>J`8QvBy0)^gU~o)O;^_d8qx8Fs%Vy>JTy8oQ`=M zjCy_))ML9Tx6tzYo9$xlir&jD$os@Ilg2Thf3Kxz#o_%@TUKaori)_k-bO~>$J)Iw zMerUdp` z!+#N8I>Oe|EKGLq+DHWQPrvyTUic>GPn+!53}3oJ256A}(t z0Fj%XzcKzsw?>ye!p9BJh7q`ptd1BF?iY;q`Wp0a_(Qx#*C}_WEMei>$|97>A1}+( zjyj6zo5J2F)kKo&zdLzgi2|sQfz?%4pd8@Ra9sgO_dHZ+S4yn%F7KE3KpuXl0Q4E- zkIJRB@TReMADAs2Q2pr}g~;cUa0WVK`PaQ!X%`xChT=HcT1c3MZgnAMUn!CX2q=Ml07!%Bar}&=6tSHl5zlJjAsBJYTwZ;{5v&~u+*(% zw?zQu$L>zifO0$Y(=}YEo@pKrrRZKR)go)FIAjqkVdQ4R1Nf2oVAFLSE5*>KkocWQ zE11D;r1OS9m3;(sUk^!ekZ8JxlCEDV1T0%4gO+CFt~zJZxx38{<4cZNwD`k7xCUE} zBr-P`3aVcxqTq54GtC@{bRRUko+XK4j7xKL0XR~_aa^7;)2=wrHPS^CmXMh(@&<5$ z#&eUM=Zq2vz+OPdaya#!AHjN7o<;uviDO407{-dYK_@s7kT6`YT($?@1e~>0yq`w9 zmDf|U7RfY=<)nFLHR2lSf+?v7suZv)2j+e;>lV4%){0 z*#vi!PYZFxdk){J{x7FJ{VS%oywfzq4LoWi7~IONp;-Eq>HZx>bJw>TUHhbVmoCxB z+tX_@mh@q~oSqMCcciIB2RynO4J=YxGeX{CL&LL5h4MXdjCAXt)|)Z8Z9HAvZAjP# zSKJ6I(>!E~#rt@(EvJba4JKreAS|j*?g9Y`_;~f} z-n#49^bIyII?D9jq2!{o7CkTnV0Arf0(iAci+NjQvy+8DxjtF!Ng$R3AaRe#QdA+m zgWEUM^Rwbzajs;E1G$KD(>u5W*BKQwz9ZLl?=Mfix-rDV3~iP2c+Pu~?a*`7SESf@ zeWtZ*%lj8(U%bm1+l+8ofl-fh$27y>rqgbk+R!DxpOWVU$f~Dq@T}P9Awb6`7zVYB zB8=RdISms+@SlVrlJ!l>`BAgnOL05O`+*EqRf$}7zyRlr@yr@U++H8jq`$qjPwjn7 z`L{CsuYkmu;TZ=Cibg;mdnUFu^|Wnud==&WqAN&N^7ZyNQG*&YD9I(TdvvQ7a#>zn zh|yU@N^%{Q*khhf?Ctl)ao?p0-Q1R!bIvF64~V?xx3rQ(Su?d&c8$I8Ht=&?^IK~x zzFAm#nEAJy&xh7bj^SC{n&3i<;)FRl;J5LIj`QN%Q zzL@EPdi#p;Np%a44cm=7O|gw0H3E5pktB>4C6o?Mf4kG$9M%S-@f*aG+W!D$HJmO_w}xaL(|5hf?I@<%HYVr z;1wr~gZ@o;8~C4I)AbMSi#KaUImAf@{Db$g&fYWJaf}Mq)BI_9rNq)q?(RyJ5@Aa4 zP8fz@Gt>ZkbBbKn3m-;YncgYx11gx*FC}m?djrpZrDfX&xZk~iDghgm4Wysblls?* zuZ*sBM*>)pQFh38y9Sd70Dy!OpTuXibh7KqZ#0(3fJEG`*JmMkDjRw3PI``+#XfQJ zo}C<4O(Aq%SCB?Y!0J8!07??>IcG9N;d?jB>FbU`t`1KgSw!<&*;qhX2bTL|m4dJv zxH$uX*BR|wwtg+0gRB-7dtDO~EM$<(K4l=BgY_8Zi;B$B)-^li!dfsrcI7e;xZo4{ z*C`8X_e#rjShrorfIlj;b>qvJujN~qV2(5-sYDoWL(j?wIN;-ot!?9NW?O}YV}Y;; z0n_DdjNpz&Kd{yO>Y9rJee85O{9`f;NNK5rX`#|sbk?UI; ze~mQzNu_OG))M3u+VQCCjzHss*Es21o$rWOSy|$?x3!6rYXcl0F&G^;5Jq}!I5_5j zv+Q>IUcBg{Ddky6C0G)<1GZ~^ZxdQ9f-t0@=yEZ*emzBes&z}5o5)z?Sr8E`?Nm8t zJ5D*l9W(fMuGZI4y_OiPE`G-2dXQvNu2>E-$bMeENc8ri?FExP-hEF?y?2U3C~v&O zkOA$S@!Qs$lCR`LaEEe&cV{O(x>t?r`mM&DY-W9_aLf;t18zai0Lj5TbRV86i{oUu zw`92T zWRVwcSxy*?{WH(gHRJXHFfGs0`kYNW-3y0-B2lr5ZbIO4tTLo$9D3J5sQgCqbnzvP zv}qs$QH;kR$&jyYP%#w>i!+8pP^4GZG+_Ms1oyccgwR`a~Pjjxl1DoDY`4Z+gM)RG=y)O~z|xd;$v(o-%rpM{HEOFk+0FXQ)rA z*hju=yMLJFG65ia`uh{_{J_g$7 z8B{rAfzXHJ7##CWVQKFrsC#MJ$)7w)r1;j(7HI>#0F0^m8z-mA4(`5!x%uVR<#tAi z@~6vOXB)e(%zFMm&c3)d?WtLdh+SSow6tn6>T+|_Jo?sicxj_$xxTPTS3Ik!K;8HQ z86KdIdatU}de~mxN6OM!_?~+gy|RLJhB8F5FCY*(10LNgpIH0XuMV06FCPb4-@YLi-~{ach`?-Q}3rI+MTvs0@0NX{u3* z(F2=%pE^lvsM;}#79cporVj_vhI{%{Z>8N|fdhdK23Q3+U^yi9KY{6ALw{p# zsNIe^$`5>X9QWzksLP~TB!r}1Tw%Cb4pif75+t5cB!vJScA~Sk2?LIOv0lgj00`_+=IY|YB@A}~ zlZ*k|j`%(MR*Y9V8yM`h4Ko(`Rwp%e5Z_O>F~DXW~63=taOp zY1UT9QUgVd=ih_W*Pa-)51;)cNENUE&p!MNf1Z`@I;V$xJqtB{zL*&My*U)@udtMwTAl|L&F<+EH*Ar$n|UMg9e+AY zi2Or+3nRE_sNWPGT}$N&S7J9GF|2{fH0Wj3m- z8%pH}UEr^Lfc)T}y1)_JH7+QwW5FY{yn@&uR*ohQkDko>+{8sR@Xe4|d5R=Ff4rpqKQ7gesM@{su*t4lMJq$|MJq?OmmZG0 zTN&wJPTcq^4K_8CQBATCS!Rkg%dzRl7(Rf0RZX;op4Dz{Y@X!CH%BW*8;{~Fp^itd zAIgqc-$EXzf!N*X^IuH2_VPrtLF7v!Ng>Qca;!ISryTX?2dJ$3&kyPn$kK~{?OR_j zK4UpssQoc6K41s;#(3*rNLxeT=^$8jJuOmY&zNEb8F=R$f}tEPIRf-{Qd^)Pu+6PBg8tE`87c(CuZuhG};}ZH#aan0MrLIO+X)s_<&C+^^b1 z0by10+DB$gH(jJQGx%h2UmCy1%L{0{=hW}!+E{|IDdb>e{Hne9&q~YIel{D;9j`RF zuWp^(Fk6Vi#l9hv<}&h52s~r9de?_4&`X-;yzsT|eW9y(=fXZ7BG&R~WVkMg6ic|f zG4Hiij|YQ{{uRbc@s`2vA5YcqBh$~A(YUu?KI1sf+}8n6wG#Iq>IK28VHuIPRs@RYGlsKYF=--cOZx@Pj#85x+f07-Ws zgOI?6>yUCX`o^7!Rbtup=9}^7;bw!Uto|LfzSKiXE#?TU^O+cK`Is+>jsrXjrdpn!SV2OlsG}j@7 zg;`jflxI{9$_IAf+pT-whBP}ngl`Y{-v0nr z)1jZ`w>o6&C>j0Q#02Ft7f<8Pd*EihlF{$)ZU&*MPiN*@xMdbGvV!O~lw#6t=kEr{ z2WdFTIjN|4e^G1EHmLAR3dUuLw!fOu7E>SYixNNH##oWha@HChOyaqAJoiQLx5XERl-qXnI!I)t2DPQn8p>Ka&BG&7}s_(bAUjt2(^2iKUo*C zODvbbyiz5RSY$DW*cIPt!jPnw%W_FRwO?0-tz%DVEzWAkQP(sbMeOxmPVVmQ8)~sn zF#!Qd3$Q6%slm?fxj4rOC5MZ&i?}sCcT#6tnA+hjn5(=|J_2=&g;su?^yK3hty3MA zm#RcASzx%h`CwTjc?4ycs8cj#hujGSnEq`2;0<(|otBenZu2#tmv5;~==YOcEbM%& zA$5o{5K|aXq%L#2fmW$ODH*SIk1Np1E?En`HAP5%IB+nZ?@0roO{yH_L(ji-;gMrx+N zr5zJkihHz-T(6hrLQeITHdgtN#lScuf~2v*IL{|PXGuH77tJ@h!fR7}RGKSGo4*o? zRj2*Ta;>zcIDy!%Jh0naIRGAb9<^HL_r_Xf?ai(Bw-1>aUF`M{dD++rW5Fj2jz1!6 zy|=&9EG{qg$)$p8eK{5hnY^hSTTLbsM1obr9p5HL&Zm-2YTlm~gtqqju7>v}>(Bc| zxVwld%1$uZn{ag)`HtVd1~@f?sSEO>MRvC_;=K5mcBuAVA#n}>kj-NnI!BxqV!2X^ zdSLXyAZD-{PZ<9IX*rw3cK1+3u8#Kb+l+#--4AuQ66DqcuGTyYPlO3mFQ-DELQ5Xj$xprnDLC+v#Wd+oS zCS27op|i8Fhr!pfuD7>!z`KeG2bNWfEOEvZtMA4LBx957T%+p$02p3)A(vOMjZB&S z-LkYh2w(~2Rmt1RoM4W*z^(HD)6HNIq9BpRH?*HqdelrQuwi{Y9`h7TYH2k?GYA$ z1S&=tVv^~|Y0rK20mah`004i7&!x6yk$lGaaVRiO_Z2}vk<->S>a2dY%+`)?# z13Q6I58ls8e$Fgh?#5mH*Th(~<8*Z`C;=pKNRMu*D|xHJfC)KVi20<3 z$*61Tt;un9t=d__cL!^W7)*ebBr89dihflDwgAZk1ofKNS@CV{&Ae9A!>AI&_s~G7 zvZg*|##?uk2WHNGZZJh#Uk+*(^24j^_OVMm>*dI|NRXRlCvgl)V1iV(N|peC4@#__ z6_-nfX&{BH-F&nLIaJKaxl0w05`4EOjo2Ln4AbO6%u>{~8|#KkJsVT|Ntj8P7S&Y5 ztNyW^zTQ-Pzy$!WrVV1*-)eEJ+JyRp>}A`7Z5c8aMS zwU3+r7ir%YVArA1bt|D@uNp|OG`pl=(fp{QG?V93_mJVcbq2j`XjeCGW3cgc{2I)2 zMLnc3Kl%x5>?U(Bl*=h%*$RxR0M2`EjYCt^bceg}^hKhyj7F2dh+ZQ%${m2Y*QR-{TE5Df(_z99P`1eC zzAq=mpAYI&_!GxIB#%-^{Ibz$Gc52tvJ$~xArx)S7%(Jc5Ifg6_um!P&-+}%sZ5e3 zyl~%?pZ9-fIYd`wDgeRiPv>1L>;443l6AGSwzc_-#}s~Khiq9dmuZ)VW4PnF=~MV$ zQcGVDS>0)iWWv?Sw{1fHNMnV08XX!@1uj(fk))g!B?0Y>5OLErL;fWen&sY=8azdnyxAjW2&{1HgN&2- z=95S9Ka8(6WYhJHHYJMa$uu|i7m(cBNep=0$020K?W#6{xg>E~H}^L-dXTlbG07Sg zU_zBHI$(l$VbeW6mFcTRSsU8sWz-VBsWH=_NBc$;2XYi+t`8-1kC=BOjTZnkrxo!UdduYx`JcI4Wexj~f z++HQCOJQ;$^8q47Y~XS_3=T1lFae=YT}Q}tTK@otV}jUCCG@u8i83=e8*({d$DdB8 z9S#O7iPbc{E%f+~oqld*gd>7TNSk-@0oa`2eBV)9={3&3=2~B%;nOXg3;~h` zai5rT>0EB5;j1fo)h_h?qs;Q7K^ZDcykr%~DhbJQ20d!|lOonQ%|l7M)Nk$dwu&2j zoH+ys!3vx%^(P@mrxnxqf5Si7+mld&#Q6whibN+nx;IBq2O}q^LDMyM*TeSBVI&%x zGzLabHBnEPSq?x2c)%p&bU7L9Ycl@;O7QkA?_qnH5*Ue*n{kbhaHnPl?x!lC^yk)| zodsjgE#lJjElPV^dt{u(j3Xl?0CK-7f(KKajEdLOHAlLUV}i~DceE;rqXaR>LA#LW z80&-Ht!o|`{>YUz0VFd;I5`n~fNnWu3Qjm4+4QWPHFTG`RVd~#3w)>N1&7Ox#Ao

&Mp=fbDd@5_n?X@^h@)$QnSg#vp76#{iHz?)i6TJ%%~1g5Six7E1*-4)QzhQbHCR zK{@%b3lYyejOM)KQqXlb`!q(9qW1z>c=UTCN7sOhHly7ewNdRFS z(Uv8YkCgH_0OPUa->o~aHm!V1ph(|ny@|t<{lK3oz~r|lcNip&p4BCsx+M3}T9IpN zfV77!tQ#j7$l3=OBy{(y5Af~n;gZ7T;+1Vs;h6&rA4X<4QIdXR&u(*Eq#q77crRd$ zWBXifkKWsr+p(K=cCqY0-atI@j8hTbM*ba!(s!^hTuknE;ADXP_Y;o%_UVrG%)<+t zvwLwEiwe<=pD)bofw_nz;P7&J{6%Tncvn=>*g`F)ot9Q5l#&SJ)cf=eklw${}sbwqL#ClzYozx=odzjKDXN6NL%^UIjE=LW{G3)7y zuXS(XpE5<5r`pO87%~DEqL8bc0tW|o13C4mKj9sY-Ch~sl@fic6uBk$o}g~sgT^`I z2k@?r-@u<`hwa*VNNx(OUR=O374A33u;AeJAcA`OnhR5sI&H^@Zf&EqF-s$5WR(lD zs=fehsp#0i9DO>P^aJq7K@f(<;313WWd||*!;%-V&rZENgT_pDH-+WX;9(8g5=I+f zAQIyncsS1osHpU~d{<>N#L=t_@0nz2OEQ2mvO5!p+)qP-2hxkKqqFF77pr$OCBCT$ zlGZPq3%mykz=b7#P{$;KRCLBiTA_1)qutE2-)V^joDL9x>`530X)0R*PdstPdC9Lu zn$upLX4~aO8%4MvWxzNflE9W=-(PI=T)p3eHD_CUtwB-axFw@1gJ^WX3>Dbp9Y;2%voZq96^Dv|Fp0#~Gj6~W}^ zBact&oQ2Acb3*Z5mYaJE-`gd|2288F&FS)=zq6e5;Cff7*{+50F3s&Vb~cQBwowxU z<;aXSKG!6SFwY%%2ZLOC=wfnKOIa;skcV{Gq%i~%7>s8ek;hz*YVS1v01BNnnQRqh zEg1|7B06M)xEy4X4m}4^+*KzYq_p}T8-J>NUxM;`4L-+8Szx#*VTEKty-ouR$&5Db z$}@wL#w$L@S@^DPm@w1gRJd4#GAx9NNF*o$`kuMQFnZUec#}}nEIel&_O7!fgjVSs z@~{mJ#9$H#5fVl>U=y(MkGeswTGvXr*DqCc`Q6uRGfE_DoJ0{uP&02(0O;Kb&g@jd z(Y>#)shpck=i%|U#?;-XCAN_hN5Nk)V>9DzP*~ ztjErdT<{t`MAY&MlmOvUCbN55o-cSM}|e5(s^a( z4{JO`mQY8R<=nrR03$iZG0>cWWjt@=n5?0YE|-5QZh0-@S&U{fxL+yF##zb!9jXth z$1FNk?eC1Gxt95DVM8JtIV1h#U=J~(MF4L@ou_Mu9Fj*`+=U?1t=+6+R<*Qk*6nJU z5#_@!6@-t0w1p=m=L0;@p$DTIoV%DZd{6j~J%H38((HW4l-smZEQ#f_94Gv?Er18j zkT3|rJk_5Sc+cV|lW4vbyRtLIk$Y;EI|>%$6p`hTC08+Yh}R*S0vyZXVW63 z2A+WDEv|Sjy9xlzq`H#$w(wwSi|gqA1l@+&ecWsXFJjsPkF+zwAs zQ`_3LrNd-2jj$M_blTrI=vWZvBZ3DY9m;scVf8vUx-w9+zNa@2i+pPhtIlk#Eu}Gt z-!Qpw-F8X)%mRHzMsvp%V@>g2ie!Q)^|-WuDW=-0=^$l9$#e5apEn>X;AcD>j8^59 zg^koQExI+W$VKx@w(=Q3IAU_SIKuIsIp(r2EN{Nkr@YX?G;Gql5jjUqhn6S?!_GRB z&>woyLOl_`G`p5H4-1sox^{tETUY3aq|Fj2OOR&80(%Q(r+1c z3tcnpO9-B6?2Pvi#vCY(oNfaJh*5$$>+^A2R}jakD@A{e?GEQ#h6vA|HYkj49XRNx zz72C1{uEejWV!J5xRT~*U6tRZ;iF zcIO7X)5P&#Y4+=->jPwWC3cZ-8p{}kN!=XKlmwBuFk;{w1B&S9@FWVwrG{88h)46* zV&5Tc%67I%E;F772j%IIN|NY-P4#Bl_}|3V(4wx91>~{>-)(ISt0>$K<^y{N*Z?P- zW8SDs@pr`9j8}HnmXBj?YYz9iNSXF2I0Oe^py#ISbnnG(Y8q|yleEU>b}?lUqLEdH zp1=XSs^FYt{or}YA2b#kMymEVmaR3}f*9ioYFYwFFSlcsz+4ha?l=TsbI|rMd!aeX z+nzV#KZt)3Bxr6U)Y{|Ak(JvFjER%9miw&05s(L9MnzlGzA<>^^yuM($(bRO32;zI z&fQ7er_(v$F+66w&0;-YPHj0g%T`CSv=DCc;*KVTSeWN_g+sK1smzBRxD}Tlg{)rj zuUT#&-lBh%Ci0{bfWe3aNQ)=UwC!>ZcN_}O>Xg*3u4nIVq;eXs#19uutu5YTHroaw zC}R@uzaS+~SgaEX65y$12OD@$rh<})X znNTFgN#}#TJUk<;P@Ls`&bsTxTGR_Q=aU3VTod+U@}sfbfFl`jagLx7{Hw{lN#YL` z$!wF{TETFUhIEjp?^tv>FOV^wpy!XMt<6(e6I=;yEYi(qRhCO@)QPa}RB%;9XCRz2 zDz*ZVoO7Qg#JV)@Z5lg^C6G#5+=)ERfkXLXMGU>N4i$$$GlO%()0(pvw2|hzW#7b& z9pt*xEhbB3mlCjK*_lZrE0e*-alk*%>hA)0v%|j;?bg#zx?2riE?&lE+m;`A#zEU4 zB%Yj)O7iyB=7!P;Wz(gKCkZi_!ee(<$`cz94%64E2aXBmsB2n3hl|`psN6vv+;?cQ zvNz1A!FJ0OshE!5Gk_T6V0vP()T!T!Cyek#eDR`uTGD(H@_2v7*DtME&O{sX-QmR|93KWyiOq$x%yiILo1-`GTubMbvyC9N& z_DXg+z~qX-y7B)2gzrm9Y|=pF4XEmku=_ItIq8B8YL(W4Y&6A77@9cYNTkb*?`-<# zBxGZ+{{X72MQaq6?R#-;_MNSURUue+Co7%9zHmF!E^qYf_*zy-(=C=S_g^dbfdF%n zz!>)en`LnYyvp*&CA??l^LZ%8jB}np16GkI|Iz%?@a?s@)FsL*e&~!i3_6j~vNP}2 zsb4RVJn0E2rfsEEkTIT^9AnzGJU#yaAqju$nf_+8bwBv}oBq3s`52_-sf53W6Q}UY zwT*+#YlU~UnF|mJ!9BB_9ylYB*w;U$%Pob|YF2L1&l|qk0XZ4@PuC#e=C`y@`30Z) z;V<*9cH8}2zwfvHg;x}5(kHO^D@fCCd?BoA7x4>;t$xg~G})8O4qUd-`2d^@oM*R6 z^aa*+E7;>nhTQrj){nfP7s;e?C_>`0-RE1y&&Iltsk&{gD^f6pY@?0p8 z{{Ux!^9H`Ut}ye{mUj9KpYLj?+`NG z$*UR{{DE~3`tCpWTFm%w{{SGH-}?=({)0+Dwk&u)c|1X5dmgp6Enj8jyet zU;)$sI`h|>i7)SB(}F`QMjAK=$aatl=W3CHtC9Cc2VOZed^i69k2}x$?Ror-Q~v;$ z6#oFOaDV6qk}2+bXNZ~f+oP-4GedP}D0n7DA<*GRUZ;Y3`kz|pZ6J$Kc@t0`ej^MF zq`AvR9P-&bzs>dMt#h6){{T^U{{H~~01;hIk^Z_*`r@DZAXM}SkTt9po*hj_-FD9+ z85&HI#g~9`eZM-nZDD2omAu5IroAw`k(b!4qyWd23q17!j{zLX(?$7@Kp$e#^4|7OJ@x7*r5!q=v zyGauKsz?kwax;Or553f2xBP}Q@A~H_@@k0x0LPPm z*RuZr=w_)QqAiOdv(wyW7Ppa^4@Nk~PpR+EetPp-I!&#!FuZhDmfe|Sb{QZ72nRiJ z+d1Qol|et__RIdgWvy)^{Y1a@(fir^&tMj(Wky`QfpXVd)IHYJ0LsqHjqK% z1a$yl)bZO}rJHH-qOHA@%@wpNHl!%(ODt+QP;=WKrC*Dszx(I;ny$a{_x}K2U;8aM zkjwVAmbSMN7-LVAD*(VS447qL8zXRIob}H+rrugxUqU0hK;ghG*ptcRj!sDD*S%U_ z_45A!xPSB&rk}Wv5<*@-!CQ}q0S>IHW4{{Y9dpY_g9=4*)4zt`LU0M{}6+J-f;sjlhvH=B&{ zCK3Z|p+H4gyu9rJZ~)0Cj&sdfvc0&zf9*@cvfNvkRw-RnvH+jLamTsu-=#lO=_mRB z0G48@X&>?DH~aB_=oFFz&-`hx>w15QCAhG=ng+E zs$N~keA^|EW*HQa$2cTszkKp~*U|nz{{WEf=lybn{{UyNnl*p;{y+7}{{Wb;4->6f zT+0#AyWvaAxUP`LD~*xey8Oq6UDzY(+tamjw|6%O%4T*ZOM$$SNo?ae&sylbG5-J` zKlaA+{{UvLTI;31{d_O-70p#6mZ!pun`tDH^UHQ(rDYhï@*RQUA5%@#HQTSrZ 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

2z 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�g7E(oOnzo{4m3Mhz<~u>>4ZQ&TvOVftsmjsN z(Ne8W^%H9Q-5l1o*RA4x8hP3|Lh6>|8&e#(7$rwf=~@2(7T(l&OHF8kt4Dm|UA>5z zhB@}eDxZmw^qpr;zK-VPym$8O7G8yfg9jKL{po%wURqpfwicS8XEIN7JF33M4kv6A zjDz`CCMKsMcSomzhdYZ;zvzGe*8FX-)~&oTa*@r4j#KlvIorX^m@$~7M z(zVd_O$z!+G}$7G)UM+ax`xQ=M<<_7Yvmsbr;Bu76kFT){{BOwp)GW_&Z=AmVxdR_ z__4^ZcE0$N@LNrgS?TtZd3z4jp7KK@6UpOo3!Xn;YI2&jsl5dVYkH|%*w%D?2T+Jy z=|}9B&iRrFn+W+IcoyIidgFp?lDqKi+I6^^TZl`Q4dup5FwY%vkJl9e_?h6@ZR1Jw zcz)3vD~ThxxDF6DN`@F2Jpn7hA6l`0@i)S^c2eoz*;gV3Y=IrbttL(h^B7}y`yc^< zTT;eUg`)LG9w#iJS-GWV%C_Dgyu7oP?m40gh+L!2io_016_^u&o(DC~TV1<5gk~Xl z$v(B(*`}ERE#9a6FOeX#&pf6$#pL&QC*8Cz~Y3Mv#@s`A<)LSEKl=cf+}C zZZ&TY=@&1kTZ_1D?R61xBB96n?=6T&$@xJ%;Pu6GmfsgN-9BlqY&8zr5T!{< ztfwRO{+6b;*ERUw+r-i$M6a07+b?9mUO-S?n4Y7YeQEyyXgjONK>oswou#Q&=3BJ_ zCoQyNapSLiWBO62eX1pI_DNBk#=2-e)Kl)Ap4*1)UEkz7ik zpH&QTxqb7~ty<7L8{$g~wz<`J>O&0@tvj7IrxxpZEc*aTZT=ui!j~rgiE%i+(tg^S6 z{)G^XuWgOwouKEj0Q9U65BP^w({%G`bEc|I87&}+{`F&g9uz5?gZ16`b6248r19E) zk}Vrgf)OZ@U=K6%%W_$|lgY`?e2U^&sYXspKiA%Ra?2w+Y7(3NzDH0001Bt#MYXEj zu9I|E91a<{8Tp2D)0)N9^lf)XRT|Bt_Q8fm^}+Yxbo^=w{wDZ_-g}wh(rg`AtH_y^ z1cgQvkO>(dPJ_K?+<4z!VC{9`ojyj|SN(L7p#bD@y99DU89jSevCL|x??mLE58>K; zvUeBGE}*27BB?u>R1wpm$T+DZHWxcjn{dEz8*>AL?^+rc#5?Z~N-ym+9XU*jsK6mz z+rPX6VA;Gzqpd-M%$gKD}jON0RW$FwbSYU01bRccO-ZAb{dOimDCrM1_b02mjsND z{{U5d#}~t`OH$QhvC=$QaU{1c>k(~7?A)Pji4Ds|<&rrYh|X{_YqD>Jo+;3LL1U!& zv&QmyGl!B#i(L~4pp0&LBr!@=ar`U0=D`D+=Bt{;rsBT?x{nOFw5LDB`s-M>(X=fd z-fe$JhQjfKBrS7l(?Zf?IAF6hm^^aBj<~Ha1^hJeFNj*_T=9;B1;?0HJ7tVp+eERi zS4Q5Yi)SF<@G+X^^pAp`5b=kJw9g%Dw>picgQnZYwwheiO09h&9p7lUR(55LkKJ7E zardw~{Vl5eNU(=cg2F4Lftc`56m*e_5T19S~GkVgG;oA4MNewY+&=9RwE%jimRf5^xD<$ z_FDLCUM8iON??)351_!u>sl86De&yu5K6N%baV4({{Yul^~$Yk%%hg!;@ePPaq)%M z!Tna&*{-gyt!@?;^Gr*0i7UnrAYorGjss+K&{vIkvc%qM66xL%(-j~_$a$n^pMr7; z&*_h^HS~wY``?V3?yPjr0eEqq)kp&EWwub@^k7~<=pR~#l2ZvEc@0`nX zW^yy=9CaS~&w9$XBNsb3$m+vjFci~Mg4f9MOAiJ3!f2$mcwmhr=jZvEcLQ+6|+SI1G5>*0TQqY_+ZV9UPb&^JsX~+DDFVR^+w9 zFWSo)e(402+mVoZgU@qUbngpl;@NE#g`%#|Ue$z7-dMttRC0LhUc>(Y2-n5MXO2$| zLNK{T`+czlBnlLCxkveNs(=$+C*|b{-bIMP%>~ro<6-Qxp9w1$Z^3(RFUEO z-+;BPLiMg-(&e3`W9K{0a@pV#Ks_;>oK}3^1ziVDy4Ce~-p1 zUc-0r`}TvnxJ#(Cn`p|oW&>GKpKq0M?mK$dq3NFv{9mrYZE5jB-pbC(-eD|-E``*R zlslDhv8sjOZrz;pAlGDGDlw10_`mZ!>0$6wl)0%dxgJg7{{Vry&bOz-sM+gQazf!- z2?f&efJoe9>NAYv6}5f)E_kBgmbKRH5f`G#9HjI9(L@8kIIpn3;UUvunP$-^Z zS$2imM;Po!@~cvKms6G|c_34_HBzzlr|&dU9zCK+;qWll>9;tH-ahB7jMP)#YS<@NnPC2i{4~Kps@n^%mN)2nnQ8dXMd5|&A zv*I^ac>{WT<_qAb#}%x#!2EZelOL( zYHteot4V(id_vIg;EmLyDmz9%J$i*cyj3p)d}H_-;47!P@Sc~b`O<)_&oO4(&&!e9 z+o7*Bl5v&fnckyyWPZZ)}!4aV)n2vyQYw;5I;+KQ9ZxY{X_xhAc_PeR4 z$dH5cxj4W+n6Fa!hx<)ym`?>Fw5~o5g<)FDF}_M_#azQN|V3Wjk|_0m09{05!pB{{RRyhK-->B~?NNMqt_g z^XCI0yDwvm`q!{nY2GWh)8ewUmN-%kp%g?hu~Q1TIVFf3oP*8>71i~+i$rofrw_gC z{E75W8~i=Gzqipey;k0LyLE;&F$OAF;XsKHu{r1m;0=0A8g;&vsXmz$vQFxm$hDu$ zVb>u{L5Rm09@UI*d~nuKMwbz!*3AU*&lF(@k{8^qf*5rGW1z=Qb4z{VUyc`Y#XaAP zbqjDYZv(>yJ&NwF?_ln&itT!}4;sxzOvn1gm4DM!k+i!ub|gB}RBSA~G^F{&QB}PnOor=hUrr8)b_m6tccJ+tUQafs@o= zk4k2zdGS6}`!1)gOCOfZxJDrF1dZRjI2%A2;DQLOD6|2!KT5#g7A&7`(sg;QuA(Jm zlP<`?xg1JJWo#bVUfpXs;_JyU}3!@V%VVCx`T1a(S*73MH|XRH_^dC`^?(8RI{VI`2a9*0v(oH4SoR zl0lCu1LZnn0Pe`y$;lr!kmuWaVNZbH5&|3JX;<=P+ zEj&P+tc~_HR@`&2aW6Q}Q`GjW_SHMHHHDbb(QPcP=X~E; zJ+m`N%du8ZD|>U!2qTZm{-N6Y7ES> zZWj=|F(G9*0eIeW8<2N<*AwC&g!ekWppy@}k*O+LG#k2LF5Di~tsGTYZ1g#?SzaEy z=9<^Y*>89?o(6?)g<#IZ=JHPysYunNr#aX9t>?ayxi07~lq(W(5WpDrE4-$}E& zKN0>P-a=j-ZprYTV+XZZO4avPj3K^N!4#7wRGI^N%Mrx00B!e#~ft# z^%XJ9D<`Tdc?KD!%Gue?@gu<(nON^*Vg`9vAbtUA!g$|Amv50dedGW_KHsKx;C?5i zd6t=B;~g&MO9#}Xol1n35c9&{Hct+xxFmEVsQFEG`gW`F7Q`erh$6Qfkh0G)Af8++ zlDYL6&u?1MW;5!HCBxK`(ogU@`~LtFX|@*eZn{aDcG(KRcFyC}A-W2oKBio8!+7%Mh@*nmE7rJZaHh+j76|wnlwHsK7 zB#rI|U#(`(@ngWHO1`&Zr~9U5;;^r7J}6z=7`#QS&37X+G6__yN&UqLqynl(LO-Q( zy0?X-)T~i8E0~4m7t8Z3VU-Cj^AOD$ZKpjCIivehceg1^hbde5jP9oRo8YfKU;Apz zqMWfaDLD4zW~P6P9s(+1U1H6GkGtkCL-jn@km)`LytAGw3;hZ$O;$$|UqqmJrO9L) z00BTBFCA-o_rm@hwhW`gOKWp*REvma4H^*H1jO;}&NG!f5uW_kk1~?pCV%SnK9gs6 zY4JnBuW+`oUt8{M?F%Ao`e!&E*{#c89QawMVHT%n)B+Z0@t>$T=hrpnT4Z{EhjrOC z-wbK+LLSsba~y~nOsf0Lk*M0CNbS&bT>|_`xwyAg8g-H08+O>X=WyGOz#e)G4k~}N zrP#H@l&$f zuU>jrox$M$0E3r08(J@gQaMWbTZO=BHb1Ok0CpT`1^?KahvbsFL7YFf`j==SkWwcm~SRKcMAdxnb3CRj@!ycK*9M$_zf~6yQZlJT74oZ1) zF*)gi4;^}X(Hz2}zcL+6f`qNhD<4hW>g#M%?N1tR`=2@-k?H{?emJdLNus;KTir1Z z((Wd?L?{#vyNJ$mFc&7iNSonKiv#Vv(-@#o%_I$-xjomOp2sx<{5J4)jq$Z)g5VLj zZJ9;}K*7)d09uEdTSvd3;ls4I=DI$og7OP{w>NXzwi{>=$gi9paB^}h(Cs`suUy(C z-Iw-ztiN?6xwYSe>Wtxm`q#rVcmu!|dW@DgceaqMU^kn#;p1?_vquYHgTV(MjcWe@ z!l(E@B%WOUGSF?w$RV2LNXOOz`Shz0Gt`tdNw9O%OTzqhSLdjw|Om{tf&-`$Sgye~Uafao?*6?BA6j8P|2KU9dqqm z?XQ6?l800bI z2h?_`b$uhno+HJ^xvGh6;v;3rxe|b_jm;Jb=m#AEuZL&&b7L0yptwoVMoTO110%jG zoBsfWb4>%w7b+XFhUYzoDLhm1`;Art39GmFpI`iGu+TLfCR>jVNL6&f9E|d)4=cvw z=PmM(PBVZHt$AmS^jp6W-lf&3StA9Q5O8wM$>?%3>s-gfpAUFjOYsC+zr<}GZ9_%6 zEQspTqV8V4TcH_cBLp1aXNvtp_*Z}XB#RlXUrra|eY=+WWoaN_Iz~^H$Wwp{F(7rx zVa{tM&@4};T${VwT~cd>1YI**%62ImfO7nM^x$+g(CEG+k5;%6*y(q-0dh={ z+m~PgBN^;|mB{JVTJMRq2GbzaBD0NAzH8f+f)`xmDK2)i6W3}>dsnu2`cH^DfQAh>#ffoaab^CO{hmCiBWC-`<{4&U*H* zl@SK2fsI^2KWl zKwwUY<2u8TFy(8=PWF#EA9>lTy@$=z~GGIidJD`g48Xv(QO0V#~0cm zWj65$Pyx#pcOU{>vB=0`a(Ms>?S2u*rmm+yi8Y%kHB_~e5!?KW8p_#X@&n5SP)^() zdGrU%{7D`1iQ?1dh2%l=6)h=2$oYJ=Zbo_oSAG?EkH&rpvDFQ&rM>LeO%S(vHvj}> zw+2?^ZyfM5oC0Z1KI^eb>U}idw4Z|RHC46Lv}?9&kiJYx?;E&c3V_A&(B%EVI&y2w zu0Lx300RA@;J1h8Hz_tF{{TplqAI^A+&bj*_ju`EV<(9ID(jk(>X%7rZea~1LNOd; z7yznnTr*>lyBQtxTs+8a!@1V{Y)kE=k>tQsnB8`Q_E0R7Lw!{4DXMHBZH8BCaA>Y`|#n2^e=Is5$Bh1D|S+S!`;gt#jA^0O6(dxb7ZK=2%7Hd z&4et^AKGG!9ECeUEC%km+n#a9YUp3WUM$vhIqm#K;zZN#yww8Q(##n4sp0p+sD5sr zcw>y`JRGuJ1l{&$yhr<5_)ksJEZSWX=07kpxR*Io7g3V=Jo;zemM_|R$5_8hJtsr^ zOB3g9W3)6~7a4z)f<}2G*k_NIHQx<*lJ`Zm(RA7V)ollwB=eBNI2*oFWLIK%Y@en% z;;=vA5crRGs6%O~m>{(a`?og@pO=gR#GS-_;k0MBIIHB7S`*D@sr6mo?UQ9=aJJ3i zCuW#1%F8Blj8u)g_|I;ije2FD?GL5iNRN5p-9i!-8Gtzi9Af~@jPuCro-vyF1Hu0Q z3GZ}`Ku#{kC(O9{a<~JYj0<(HuJ-H4_ZARdXj524cO;DtVm!xzl_n_$ z;-Cy}D}$3mgt`KkbLo-sUs6kl)Pc2 zNNJJSK|4m|4^r02NYr$sBXr zrF0heKNcW($J*@4Kr=Kp?F$^^EK_X3uz4H~y(r|Eb0g6I0BfHdH;BFxqS)F?3|F@? z+n+ZCG=TYH}q*jYhlUu4T?8p_QPM){*VqB+ZC24Xn- z#=9Sg{vh!uh;>Eq-;C}*v@FSv@5{BsYj2Ig5sIR+5cwpK0T?`BRi6TQ8tcSuszqUc zG_#Y--mn$Wd*9*>H4+mMmSus zlql`;%Cg{}?uOuZuC~iTzJf@EI-KCM90*~79kIp%Scg8@?_C@o27<_#N`ZoM+n5qm z0g!SA2pzk0>sq5opUM_-%0TMMRkx*YueXPimkZw_j=?>4OWHt)t5;`Qt>v|Brlk}sn4pn9OG#E)oQjDk8_ZR!unpC zsrJt-OS_2+Z4r`5OfO7>!6!NNz^xm-F>bGfWC)}TB=a`ocI;!7CnJxSrgNT^yCs|x zBl+dFu?6>lR2*OyabFG9>)Nmb6tc#3%($`#_yy{w%~?zWif;7<%rwde!VN6iuk53P%B9v z%drmG0RRAUryiX3u8Q}^{wmchk^bLwtg9SK8J{SlJ#pV1N#ys)6<(v|*F-@#fNykL zsI>iIt*j)uEEX>|+)5cn^=A&~qB5Z1h9@;OzrueP&1{;6t0j%Te|fe`gpKx&kF;k4 z2f4}W2Q^u>PaAJHM^SktY@jzqC&n^(46GNgIL12~=Klb+_048quw34YpE-mEH*Atr z@sil&b|mriq}W+p>_4`xZ6p4{)~>9zDDAhTF__jx8w~}} znyG8y+c~WhQPZMR2bjp{S0gL;u(>(osp;-}V4+g?b2f6PYbYJ&x$tYn8di`s`{}Ib zf>27la_&MOyFLQroOK_qd0f^|+fE>kUPsFQRDsis5C|9tJx5STuG2=<_3a->Z39Hq zo*Nyk4XjL7JUPh#f3?UVd;8TX^!tnR_Lfy*7Ne&usixfCO&Fd2MYv^E-6lqNIl_$N<|JTe zr&`>+@ad0HH`dL!$-rm`0Vf-BI;mhVPaurrn&-7|5k8Y|w^-7pwN*Q$yNvy!Aek6% zlLc{{oyssrQUzr1oni6m$jH@uf`9okF5J~44Bc*fJU@ONPO)L)| z18#D`i9CJaKs@y49qMb@p6^-H>@=-PFSA>*o>0=Xa$KPYYbr8)=nwG*#(itFy3#aV zPX0SPshAW2R}x`Rup|PCLF#ji_8yp_Idul3(BmhP>fUcM+yV?|B>bDBQa-$nx%|4+ z?|r7oB9h^-vmK^G@}ju~g7jt_bJHDbZS-FYTCA3KY^^deToUZSHUK*ri5c`94!F&8 zmzrs~bi9fQWQ4vWgUk8U{{R;ZIt&BOF`g>b$!MO|=EnUNFz!h?bheB+5%H1;$X4nz zf~I)1GEX2cKf-r> zzO}P!;I#^EVwOpiF4l%6UCte{su-R~Z1>}*wJ(^pD!!#@Zi#yv$k_xpoWY7?J4h?H zBx80t&%G|0qgr^9HlFV1?CBu}ISfTmxC0phw+tS@ejHRo!t9p{@OhCkk+jHCMchds zWlquo7$dK@6|9S^K{weXjb|u+c}B?8oN=AyM$_zi{&bqtMm6SHm%*tf+Z{hvwRuzo zlrspY`S)9*gr9CAe( zs%4cUaO;9L;0&?HvB~wUQj*-pZR3S<2!$7s^RYNyFr7!XE7G<5Br2BnE&h(Iq=hCo zTpaBovVRuD;ZZ_7r&m)-uBIs;xep_ox7Ey8=vG1%upx zlJ*G&oc?ko^D3);?OP6HMkumiaz0>ljzx5hV{>~xA;4(W2~u+W9CR4Ye?#81t}Jyk zq`i{CY^B?J%RCHRH}_T6LB>ZQf;!b~Ll)ZF&rj7Sf(fnlgs_ohSt5o>p}0Un1g--B z$ASqM(+epZ zH2p^6=Ix`BE%8e##RQ3kR*}!k6EXQg8T-Y6uTq=gU&T|nFNU=wK)aE)q2T`jv>yl8 zAXQ!U7b@s@{;A<>1e^Od;hn)$xRDq#pE15~m^W4g=RWxa)Pq8{nc6_UZ}3JR zQbv3FbgxIb@HfOr^(C;ILev(2EI8d6a8wWZ>bXJeyR%v!@T`6y-C3=~9v;*ZP2V>4 z8%8ml1A;#vN~JF`IQbq^7KLMLi7j@b$Z$g7XB~+CwMckBLb{orcp_)U4pcTzqjWgM zdmDT&_=OWNy3wwS#-|}-1UI%p!9K&9#cu~|kTSi^mFywdfx6aUcMo5X53N#>E+?4U zcr!rLURJcWfsD#ybWl@pJdEQ2?L6b9RUZ!YY25^Iz>eH-26ON9uVI_RI_-vD?#l6@ z0G~N6B?`a7RlZ!{W3b|~4wG}{BymMH`ImC9lP2IgX9ai_N=fc6QnsC`c%sY0cD@r` zN*B|tuRhanYa}s{Bv3}vj1s4D@A!)KJrl;>1=8-+YyKP->_#NKgA*WNdYH&A7u*)~ zuPJRl@h$_)VR4WYoJB4OUNgw*anEXs7`3~}+6zl7sXV?|Bu+{xJ@BWGaw;Akl%4ES zt5P~9fB(?@^}6uhr>5VVFe8#Jr*k8QQP^OPy!|Ueds}zg9rc7zksif(T;!46xge9z z7!|Q?aUJEa_Fe7U!waxy5WpmCE^td7q+{6it<77&dUb|}7PD=rt=rs46)n&MD#whM zmjs0E#!2hau(B-R9?(y+IAOvdB$euO{oM8kr7e|>?3b`;(V$zoSfiV#Na9|--wF@A z9(q>Y-G#hX)^{f1ZW>Zk5td!O`6WQ)o_djwr87;kw3Q`_`467s_cDn?mO`k$?JTIPkVcw13@3sn~IJX;x~wvrb`4fj`i z5}@(OJc^c)N0-H;TK%=%9%&+D%&xp=&~O3o!Q|3vx-|C%Qr`uTj@-bJU8$Uk+btK25YSvpCxp=*IE8cM1Um z<|pcV(ds)MVf~e*n`9QOk!7_6tzbeVvT=54nN z^N7IVw;U)0V;lpVkZ92%S+mddy+S=M*5=kL8*7%FDy;XB31o+Z{;zS^q?7lGk~?Cu zZ|o&`qccexc}N${LJ1`Lk<^Zr?J3~>D(>O@r)VOGhlEBIiEZ2~GbzXb;Dgtmdskbb zcu&K>**90(rlQfzS$10m=2krXtr`_LAHqtCT*(iSpF2b0%ZrqSEbxyoJ9gydhw$M+ z>PLR&l1m*^PPs^KVrZs^4l*{$893mE_0L>a)B1dkp-A&+j4dUR&+no|-ILW65J>gT za&f^GmnXz2v`fqT%UCA6)Gl_%b#Ws3?CFuWdaz-Gk6u8=IHk2XDB z%tOg8)3K$_K#59%#d#Sc9^6+y4v%s-L9X7kj=-pfA?2uC<$hISMn~}n&t55A6rfqU zw!GDnYZzjUt|p0`bDu6Uet8P#0aW%q`eM5s3GB4(COs}LM-s;jbChV^OOkRr5Y3Z=l5$RKp}p{QS8E&Twh-JwI-#I)b*y#9=qX9UeXOzVik2^9kfcTw;P*tm0o=^3GPA2sj$$y zd`TtZ+1~1g8C-m@c?h_S5EecLNB3|}FmqI7vc0jt{?61SlIapRa7&b27Gbx`LZi7D z=e>GOjqaD^i35a+L_TDDK_YCDFwzbAJe! zv17;|F$X6Cm98B|;+!#?{&ivo?9oa0ndstz8#N)9nJm4Dv}V zpDVkDQrSH2^!bhe&Id}4ZEpGQp}U&iZX7B}EvqWH*OIg20IG>0Cm7rW#j@$ z1xGzAuzNW}e``l?b9p3bx)-;cMvJf>cI^zodj>eoRe+dio*l77p5iYhS-iC>?h%WQ zyK)9czcsII1;53pytYjP4-d z5CJ{U)~wt3w&Em^k>*NWN0tKaRs-&{Z3+)PLBJGQfw!dTULc11cDr$JDBPw$v%vA; zM^O8ukh5cHBo!DPE2K!^OKp>wq*7WjFk!pr;PMY))6>*e8u*6x>cy@ifhAbu1jg^b z=Fciwa0eh@u;!tM#1{f6=Z?vi426vV%K3wgamn?-=m#||Hd3+JTUx-dy}E>oFjR(J zz?>-`IVU8Z4>>(5rRJL0GR9VAkqBWVjEtv%O0Wk68y#fi=cW78*&x$EAGF`WcV$&ryU{^|L+Cl~|My>hmC-QzPQtZwhSYmlIV>~XXa zoD$x=k>0d*U4D4(8s6GBYm0Zwhaf+ihvq5ekh?~4$vk)G6a|e){5xfB6C^vG-N|Op z2&99+JPuBOokwk?S*)gJ-0EF+?<&J+>H#1gKnEQ%D;rnVG}~F?SS}@=JA_f^G6<1m z$=sL>+;B$W(>(RfW2cI3bjjLi;+&kgBxO_0$KCIe2^r`y=~Jj^cJ~%`OAC1g)mQ~h zq+n!|gMp5R>H5?y7N50ZWm6mqS>sm1bDSJDa7pYs5&+|h^49S_r93O-A^_t6DBH7k z4$=zpeKDL28g;I#J&nD!)t#tEe=wJxH`*Osk+kOzoMfNFwkhf>Bi7xaP+E9o-IP%7 z0LD7;&PE91+No+9{{V+HJvvLxQs7%`Q1PVA=r<698;HT^0X+VB8fS<#HnEaR=?rs; zo8&7dLSyfoouGE-KKQN|#JUHFTVMYGgvJOzw3b9Lv?W0>!heq3fB@&59Pa%o*bX1S zz8-_bI>xKxU1~dD1=FfR^^|eGFJ%EZ3`TGf5c2 z0tV1V)lj742WiRcj`*$)4<4*g5WZ~XP8-gL%VkXT#@Lr2@2?20!C@Em!EA1h~^k_S9dr%Uo~Z4nQ%wScsMvY!5QbRZ9(P80DxhTBIUqIB)|c&jErZld9MW1z7^_L z6Tkc;dYf4=8=46cDdWrh!^_&JSAn-UBe~|U#i4v&(-^~TbEioL?D==f(aKIT4(M2c zkTHV2dh?20sCGTRCe!XwV}VqLAV$D~0Vf9lp13@U&AhgT11-Q-mRBgDkxtT};Ym^a z`+HZHX?oAZ%P0_Bcw=OkBh7~PHb!!D@~dI7j@*%+y{n?Ozwva_{gw+WKsN?>rMPx= zZmp7t!x`X^c7x7nG8q#cn#Crw5o7l2LLGS zs(S7?&U4gaxoBkgrz%S8r)hGAAgD7x&D$Y_V5uXKk(_#gSM9DoAa06trP?9hcNDsi zmE({Ii=1Sf^T-^7M=G!y=G@#|NRq}!?g2(+39v7Ie(Ax_zADUCiE$$&E*X_eG>+|` zlpOJq^AUnFewCKDzBOSYUg-s^#ZwfH07jMTQ*-XXc3XbzYy@a=;}S@pOt8$5Zp0W;dgEB06jq%AOp{AZBxW6d*TLN zLTA)2E?5?|m@~e@2LWP2RWdWkIQFiCU(h^Vad#cf(6x*rI)XPku1-ByB=#er&M{oe z+5AAVxffO@$&)MQs@kz76dVsT%mfYH20o*j6jxAhu{1s}veRP`-`U(*pgvm0ZKOrU z-U^bc7`Hh7y=vZ#{!=5&-(T@2X`ijn7OHz@R4MN61*fEJw zgpuF^K-`#ru26brg>gO44fu!QzY1y=!ds12OJQzG*t{`D*p&)`jPYTch53(BpKfY+ zdsp!cHWS!t`h~2h5m9d1-*75&+hlGD+Iler_pe0pW!{UT!ykztgX}j6a*1tmJV$Cv z!e&k5%Q+c9%rle6II1ZHyJ<$%;u1wM%+W?eZaqObJqR3N;QLi8g^@xncS-U-#x-jN zW|yK*NQ~09CQ;oFf{7Y{p{FII>K`ZsxQ)pr9gS2{9 zkkhow$&%b#$tabTCV@tLz&_|dd$_>kImcXAO{e@gv9-Fmxw5gEUm@g6iFYErVS^A$ zF4Zg#bN8@EUWJ5En@PRXtt@Z6Ew0*YaXdR@fI~H$u_ze?B=9&Y00807IpB(p%G2UZ zYF=}tTgI=wz*pV318(B1s(Cygrvj#i!s6>thAY20;~|kvyBNY}oG}|!aC5lw03N(n z_O)Rai*mNNGqOvPccXdH%9z}xTP!y42tSzZO`thvUmI9Vgvq3s@$(4ba>sbcV}~OH zIrkp*wPpRZ@cDNp)#cnbZAMTRX(uCl1JoSk@_6aaG=>zB)Bsin#WjDuF5-S2G$oRdn01GLVK zu#f-;XD4vrH%<*_Lw~GWX2a~7gGNa#a??b_423&S3^BpL$Em0d)ORr@v@uRRl{;Co z0}PY7K*>2?KZ~)>GAdZ3w1uRfNoddzrNLtp5C&x7gXDvexE!9sivg{vSUu&h_Q!~= z=C)an%OvRJhdk`uG7008la2{JYnIeu@Z=V9TK%RwiKNVL6Cf_QVL&p z4;#N<3EA0+V~kHY`9F08!IU`84%IE5{N#I6^xbd55h~ivd2U)n8H(ZABt{qje)9zN z_WdiQn_Sc^H7K-y9^8Lv31KnWU&Q|aH zcy{*DL|GB3m&*zmZE!GtQrz{=^5tVFH}Cki<|GT6^=QsM!k z>M3h?3PCinMrBfwlF1_U9%8@AjyU9fFlewGd+M4+cvk#F;Y0sI3u3ozOoverdw-$ZuaR402&g% zHZXDnV2qM-2_J=3zPFQ5xsu~W4SfVIH_aljEAr#!0EJv*8@uC*(K~3&bS+9sR$$UYeYOwgTKptF?91V=9RnBsU zaXZF3;1wX_74{FqKa1L5j;|!}=CuL0)M7-F%{ya`T;WQAlZP3}10x;A4Rch3j;BpI zsUp3Hh;OtzmJe$lS<#DwSXhI9DCHP_EAF79VO(P$dR%{?}9))2FN35I6Q^NBRu0X zRkiTmnx9~sMQc+kl~#sRCtgaD+p&(A$9^e@roR$=TtZu0JXcMS@w`}3EO_OC;{*@# zYNGsNx|Vc;r<(oBse0TNIibc1aTots}qP3xkCi13AaPwR3CY z4-GxT+}-J`eI$n)Mld>HsT};i=Rbusueh22(fFTDxt=W=OIX;1nUSO&$w8IpuYbqA za}izLAR%O634HVEjDI@lEI;HNKEKkrb^id_pZZoNkv6PZr_&;ia$RG8kTJ+!y*)kY zg-6;|4=b3?4^NmJ=hrx=X`k{BU-!rLq(AZazxK!Z8bC>AHijekm5KZukL6udYO+N% zE&)c#Bj}|59E#8Q#?yha65!*=7EyL`TMoR8n50v8^ zdsO1?^={Y22o6T8PC+@y%N0zu=iKU(G-m~5kHxH3xH$o?!7*VJ)cSHk}Q`5bNk0PBRG z`X;$q{{Z905Blog&8kLQ(B+aHZe@(%EJc7I5DDO%9P^I#ErUVaYYoaTZQ5o{c8$rk` zf)0DUENLR>2}B;{aue2Lqt|DLg%KBvzIi0%dL`e3Vj2IbKN_ zBOL+A9jYG{{pr8lhxwXK3;sPUzw5NW`V&w$xk}pJ8CZ!1e|U?}p=^;|^_HDub#DYW z5i6i}0Z8NK>&M~vcCH@F@1OeWpU%A(O8)>?5B+ri02+~&ZLeegs)kU!06_`} z$4)&d`a`?wwyNw{9D)hRBOSru=RErNs&>D2Pxn9eYPF;P0LWU`>fgvxV`o#SfT=7= z@~LLwc>B4>PfQQWxx2JmjZ00qpXYmXERmKZ?Q8*`ehC9T1$4TXS%2Pt{hGPif8*}Y z{n>x^T11{b<9oZSi|@0|E0nmnSmj;BZdPzeIP7wAJvixIb*-(u79LaxsHR05RA2z3 zBLH;4^sXz$Kk^iZ{=U=y07F{uV*db-G5-KvKlWOoqf15ccZzhFyuCY7x`}P&W{51U z@|9plIp{q)QnsOe;t5+=)@6H(tGkgT^11n)fdpshdk!m{w)?YxzbEspeJB1rVE+KF z-{DE1=xSf)_Q9sQCEfhO%t^^1un9iGv2@9q@L zBreiA73fBJ860-0wEZs1Svw`$3N%syh>cs*&pH~#>To!9++5B&zTw6FO1{{Xg0 z{{W#=wu4(1J|n{(iLJ?}=|jkY;{}lk!NTNc@dCJEEW1sxVzJK%GAf(~DnSI}(!1}A zpYk*x`sM!svYPYJ{5!lkVMf)`4{k0u?E&%@k(2w~QHRY@cq1s)d;#Zbc zXUW_`gvUSU^`=|@0LQ%l0Pm0HwQl?VMY}Kh?Kl2{wIgI#7SJp*BB%kFsRPpraru+^ zpIWFa?Tp(B@E0SK!8pktg!et`M(6!o{{YuR{{Wz+K)>FHKsPcW^cvlyWWvBp`pC?Mno&N=T-Z@D+ne=|k5{CvOtv;Ibe2E5^JEhAZg zVUXN`*LL2&PTeW`1;p_NiCC3{k1bo~3zg3q&v8v}`1X(JKlD0}MEmpoSN{M(HC7qS z{6|p-hv$+KQH!W7q=SZK2Ly6I3fR-`W}ZZjW4T%)2q0jL2Eq2vC)TolCV$AcH~n-^ z{S9jVmHxgz`sRQ10a4Uza^$*&?DxK0k~Y}Y%BbN%86fQ#1diG1+N?+xdpP8oRhkXb zL`Vdq6O4~TS%32W{{Zeu{F=2#{CGF}jsF0l3N4^L%-^)!BF`E-0FH%ldT-mi2j3>Q zKHqx<$hAparb}VTen!waY@Rb*<8`_J0D2$&lC~!Q0FZ$CH~!01(MLx-l1Hk+1Z=`G zgD45x$r<^2bDCtgGXW3>91egEgW8L)`3+nD0JuMz)Dr&y%P*k*RIE%(4R>&)VZBdo z^`~Prl3b^lcYLln=Z(OBE-MlG{s;QjzMcO7A1U;I{R~j|8z6b*A+pEsf%F_44{mx= z+FZ{z(JL0%TrTc#7-Wy8dG_s4w?_W}u7mjsEIR)Hz>ofeNtMviTg#amPcg~dfFGuD zQZ3Z~0Ap3%)Orr$sYUmj{n7l*O26^yzd`({BwaG@;Km7Jcmtkz$4}JNxe1K8PK4n1 z<29M3{{X5Vhw>GtKi+Tmhx4f?sm-|alzE(z;d9XAgN*g+YUZDLbr+L5NZaECs}qxy zVizR!$Gucvx)8yGJb~HI-p&|g5!3Li zffj3++CUD`w0i(DKU&DN{{WA7{{VP@Casvi*QeM20A&=BESl&f&>uM?eWWnlif}>T z@;cWAtoV0Cy451pfK95!{xSj0hL&82ZM$L zaodhNRz9=;03|9f`t+0k0BP0RU-fVQ0A7-RF;)iRGYP|jcLg|Z{Nuk~=Cn0HZsGeh z%-b>$g<`o>A(c+jI0SU8<^KR$f89UQw66a5{0+a5pb9q^mr~kG43aTL$^_0AYOx?- zaao#Nj})v>oW~P|Cz3vYe@qN|Rj2;|Q9t|5{LNF-{{YrY{{UQ{{{TZYx{SZ7vucR9 zT8T4A@421MNj*CIcJ!)--WdhDNTGv_HhbfDU&ww#(ydMZ03NaZf2~Hpde{8_0D6H3 zh%I2#X7a2T$y8X`b`mgNJ-}_>$yo*WybBuPXL3v8OZ2!lbrRgtHr1IHNS&~ehaZxl%Omshac9f*ph z6?j!U18_PHPipB8{CUar{)V}a7=Oq0{{Z`o{{W)JDDEe*=2n*ROX7vNloogq#B9W! zxg(M9$>*=+E3mP>yPI136p}HAd!Ua$C>wWR4uhXcZ zi>(m49XOHP2%P0VcP7Ki?%r28>C?AP{c8+QG^!d#EJV1;^vM|dVzy)Z!~Mwr0Q6&4 z3}18p+W!FT#*mBl&m(GaLRq$$$`O;w><1s2sM*~w?c_pK`N`9c4^i|!ohjD8@)w8w z)BgaX)}xdDKP~?N>$G$sG2S7O*4oL??J5F-zb^(tJ7YX?^sF0{U$nwI7|e(L?=us zvA>rava2H_1tbCh92|XXq=)`Q=l=k&rT+lYb<5xX0InZK{!3QDZe`zFKy>weqcO$` z`*r^S0aY$ZCfF1A$}+{l17o8w+s+>5z1p9$YYHLDt`2`s}yW0U>J-y7|v^**YsT_5SZ=bUU&SfkDG&@KDE+Y Xf6IUO&;EofJH$Wg&(r)V_7VTtKGOcj literal 0 HcmV?d00001 diff --git a/web/assets/gen/facade-weatherboard.jpg b/web/assets/gen/facade-weatherboard.jpg new file mode 100644 index 0000000000000000000000000000000000000000..626c46be29edc18c71ec298dd50fb3f8041dbfa0 GIT binary patch literal 115103 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 NhyCOH)}4jW|JjoCf`R}5 literal 0 HcmV?d00001 diff --git a/web/assets/gen/ground-asphalt1.jpg b/web/assets/gen/ground-asphalt1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3750860929e0953479410b65aec739990db1316d GIT binary patch literal 72465 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

`Kp=&osF-0 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
##Cb= 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ℜ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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/ground-djsim-footpath.jpg b/web/assets/gen/ground-djsim-footpath.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f4756dd9a8dd0d1daecb4bb9b7935abd99d78bd GIT binary patch literal 89363 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 KFX{MzfB)G!Gd_O+ literal 0 HcmV?d00001 diff --git a/web/assets/gen/ground-djsim-road.jpg b/web/assets/gen/ground-djsim-road.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8bfa7e587e0584b977cf4816adbeaebb36b87332 GIT binary patch literal 76439 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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/ground-footpath1.jpg b/web/assets/gen/ground-footpath1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5379cec2fbe5dff623590a967b16ebac4b16981f GIT binary patch literal 63828 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

S#t-M3#ouE@lPg|Y>G#^D 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 s(p{}KO<_MblgQzPWV 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%0Axg~fvpPMuG+e@x9^ykE!O>p; zaW?_upg84*jc1y5sm;1gWzuH=Suve+y#$;;z~V^~y_cj)kxF*9>bHUEkn_;drqpaP zG{JWjXiy}h-h3@UZklc0#)oUO&Z*Ts;&^M{$>9!N7^Gxdj%F`J`k~iP&nlbJiCxi) zXfA`*<>^nKOJO-^sv=j^rKf$E$ySB`ZEH;uF}Ncy@Es!n!;}%S#q)-<#k^_T-qaU- zeM~C?yQOvCoKy?xB^De(&&47Lw=U4N_AYuJi?zLJj@UJ76tO)dNWS7?LO3Lgw4kd4 zW)?G=I}22t+Jn;u61LAt*{kd*@;f@LEwn>EsB6a(W&0KQbp*p>3xL#q?lEFMB?r;OHnF67dZAv){>s zV}#qE&mtga@+phi(WD}9Jkl`AME1=zx8T85@>o3t4DL3{)*<)h zb)!&r5k*tivN4(KUyPd;2HIvIzJ?~ zA}b;W@ej?r4M|Pu2PAelGsJvZAH#oHwSd!x(rl_M`q*L`9JxlQ`#DXDH=KN_4Ej3- z`RC3)(_MQJ2JIkP->rQxyDW4N76-$zk zXzsW5VEU@mL&ZA8vJT$yz6e*5D>N+<^4FzFZL6Wsgs{&NBhj=Dees>$jvdPlfpYY| zk%TCLnxbnOhEUlkN7k#2YD7-p8bU@1pd(?dzw#)3L2qL)cTeV3Yg9-=8ofg)b;W4Z z4%4calteGVuj{5lt8NyUkNch?x<;1vqN6V8s@i;ge5hAbOxMyRra<<7tR`Lz$y!Vl z<^>ITv|tgArdWRDoU9(B{bi1%(QP6@9ajV7bs3)8RO~1`rO@iHq1#zY0J$D-NHT65 zpaDK?S(m2Fce~Jf`|xVi zHD|hXb7i*xmT8Pt=45S)uj}8%{z_=#HGZEk-yVko<3Bb+TT{0F$?NejC)&>Im6F3A z-0CsCsLFMhjmtBmJ7TX=@{#~{9Qr6m1@#8&+Uo4rc4feCO>kdX0H@ZPBF$BKntWnK zFUp{Q0llJ>0R-E=CaF|cUAl*?vu8XIy{A-Y#0Yh8FI;~%M#2h#tqMrIvC0B|+mD@( z`(5rA5O03+`=&sx&*Ue9h{ncR6j0j{-RhK|rz`NwH`-w`N$<_jkYf2zEcODQrX>W% zPbh5VU7hFYrax5FhowRB4yqo%Hw}Lygg_-RRP@N4(cVp-%TqfZa3$r6xBFeF4U={q zHAkD)z+6`S3Yz7Pxmz96!!Rc0Snhp`OerJ}^3-P;n`a%WYB=`7<_}b2EW7R>f)@lQ zt$PHltbz%bqv{<8KO~X5CmCWLLcFRy zZ-GZ|{o$b_AuF>v;w%Etk)0%VdtSDPDU#j2=mIXUl;rS!7c?B5qo#l`7fBEBrq+vi?OURU9^mR@@0`eN+AdE2~ zE=lxx+40KrTj}Xe{ae|?l=x*@W^$sP#rgD;v5YAEp5&>pmgp_ZpcpAE8fv5^ZHcw! zroD{Lq-QHnk{wC6lPLMb)gl^Ry|K)Gqr zQj)opF||b%{D!qeCO>Df_`@gKHi&irU23w_E(0^2%EyC0VIkLc`F9*9tbG0@V9-bB zSH(+(sk>PcZGR&0OSw8V1so%DtDyZBT#fpl*f%N|%0AZ643^$G!>6YD79vj^eF8`R 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�{@HEv=f9*3HEpTph+*DtkQOTjRU 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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/ground-reddust.jpg b/web/assets/gen/ground-reddust.jpg new file mode 100644 index 0000000000000000000000000000000000000000..284532ec0c2afd4fbf4d75d2f0b5035b842bcb98 GIT binary patch literal 63150 zcmbTdbyOTd_cl1VYk=T7KyY^_K?Z`m26uN4u7kU~TW}{NxWnLs1oy!uNRs7!zu))m zIs4b{KIe4RJ=M3W`{}-?`qr)6|5pEP18@~&L9zfiH~<_g94i3uZwC-8<6~gaAf~SmWBHOK=^MvJOB`73qbrI9p$(BKjPbH|LOBTH9`^G z|7gFp6~X^+ZFoQt!vB`x-v6iHKNvtz)yCPw+1K) z1Vkic6jU^Hj5mcgTmU>A0s=fD0us`HE&~_%b{>F;hlEeVC58M>%@l>!m4G`WxfqpB zy6Fd@`ur7;$ILAh4V~ycF$pO>1LFrKW?nvi0YM?*kDp{@<>WyM8k$<#I=XuL<`$M# z);6|w?jD|A-afv5Vc`*xQPDB6DXD4c8JStxIVGiKiUkBI|P+LI=Q&%2O1rZ`W2y>+dMiEkavgv z`ajhE%k2LhvC#it%>ECt|C`r3;3EM3zd(eCM?^+ML_|hKegi5x>VJTaiT+<;{tvMK z3*7$z|Nr3M+aPZ*6afhl2^A3$^&J)l*1P}D__z6Hmel{C089k9H)BG;14sZ~HzBMk zj&f6`1Cu6yxb*e=wtb19f>&V;E`c>zG*jNS=N- z5kWyqM_xgbL}_gJy(xqEBp3*7p?lyaiJx4Hk9Y75y3mi_ZjUznV+70vn$$DOpfU4A zWfo>B_}y*l^yJWLOB49L!yn}Czrfc6eMm>=#dphbT{(YeG zy4=E#73~6Cat|zM%@?Q^#<~T)Ua!}8wFsYAcsn{e92BgiXlX`pih!I8v-M+?4Yr zP(hfu*!ImLCU>7Zsw9T*xU0wisoNlvbn6rj4sV=@3w3kh=HyDfV2N0M)p4(+Rz!)h zl#Xqty7V462F>^_HR9L{|BbPBfk=_H&fa`DIxr2p^`3F_X%J4c*qLhWS|FW2+TWzJ zGDsxIjfB*(Q)7l_rjMc5p1?*ad@i+KMLa$0&hRfYND4%}nJ0<>uIZ!3Zo;W&x*4#> zzM+*zJUTg+2ujtTVF^K3LO}3+L(PKX!d)1}{v_Q*Y&~i1YXk5}8P+*|7IK-R(W;TS zFKDa;3S#&k&3^8{+ll|zbG-|s7LuCR^yNw-s$BhQLfF* zzQ}^z^=yQt;_pnya;x6nA|TP0x@b&h?H1cT1@4GZ^w#hq(~{zQgv)hA(xv0Kn{o>w zbYTngbqW0=aOwGm-^SXA@j`BSg1_!O`282N$ZbQ}3o^H`gfIl+zX6(N%fM9kpHbMz zzB8`iJZ#XY@sc)^69;?Lnp`^ZvHMI=7V)UFK6Js!nT-$5TlA}A3PP7^(O*_@1n~^o zY@Z{$Mco>n!lV2-?84cJorFYuW}M_BMtm7I*NFQ9qKs~$R@%PgTGrE{IkQ?HGCdWX-#=N7 zWY$^LB`s1@Z!xb#;3a3UJO>rKV&B>GvL?q5;TOT>xfitkJS!kfR7)GLRQQ&a7HLa$ ziOy;qgmzs!Dbv zP2S|A30J5l<@p9Kp+9*43Pn_18gi0xGgyPfz(>bbrPkC*CnRX-!Zq7(ci&%$;44#S zIEn`a-i*s^!D-%NBfD_FZxp&T!mG%r5x5mP;J-_&-**XO^SPu=Rar908y8NG$-tux z)qI7RM9PrN>}*)v)kt6kkx6ae7Y?nwhxCl!5T!kVSN|eWyBA80H_93;pg*nbZx}Hg z@7m|DQtEEid7ImejqI%y*CDw2dyDG#K76+-SbP25o^%Yu+o+51Mk4Dv=Gjv>t1j_bNU|7U~`-y zW4`WNbLr1vt%+}B#=M)o+xt`*-IHU#G!|y6>p-ljgQyvNBId}_iW8buV_Uw!+q*_C zN^*$#lKHjRX2Q#KLsmxMKLBesQ*XVKbXHp z_0c$na9=B<~5f|C*z2GTJY@fJxm-4xovc*$^mBF-*_KN9Mw-hr-w9;}c z6%T10?DS)1=NLfQXLof?AHQ4{09Vz&K1~ZkTikbPw+H;V*}PH|-%CK|=Ft>Y+4=pd zSpLJ-S_C@L%ratb0_Ix5bbm5y@x+PhroXS#4;*5@9!?oyu)tPPJpi#4)T!)Dd#crb zO!rqAtSo#*NX3)xN%bh$e10NlD8G8R^T}|g3J_bORaPL2oE(DBd;b|OH90{>vBE~N zd_!!hd~@>R%NC27)OUm_4*(LQcqQWk;W=qgcG<}?bB@0pWgbc<_7;tF_68i_0(c$v zYlW}cb?2n@<$Z=hbb($H%$zhdV1C@OldNgZgMtNQ#bckMqSOmJI<_Wn$O(dA7`-+g zocfA&tWRgPb#_LN5Qt(XbO~vM(-krPLRoLK(KEKqVaVuq%tkj)Ix@eo!W4!WevBw(1r(+%`u!|jz5!rM>-sVJJqHWo3%eWcwCx%^En%g)) zZN4sngaT-1rl<}^si+OT&+SV%!*js}g(1`G?iFbzZ7Yi>qWW_uiRPttq&XnqaK?Vt z5LtTXtopi4=^94!0bd`T0tE}0Gmmo(5Ahq=#g~BzqVExk-#rG)e ze3uAzHXxg5JRRyr;&);*y);ZfWmSW}N>}Dj?%`5C8sh$u6Qx|~ z_|S{lO{gDsf1ix`S$jwGI@GQk{H?sA;r5{9&&B9x0+irY=WYS>uJK`y9HKb!`dy4! z%=N15ZL<_mXO)OD_94R6}kn!EGd6-0Nggrz@Q!-099c!H7yB<^J#~_Nmma`iP2ao9eTUqBU2hO3(XL3=LH5 zs0LdrM}DlAL+2uvlOBAbv=1hB4qtEAssLA3%I5&YY;=xh}&y6JJz; zb3VDXT9gGIW%KO9&#HrOT0pfYxiaCm6n!V9I?ULGCq-Eqr)H1v*ei(d>hpJ;%8Y48 zhNVo$*7;timUDH98Ha6w-F&-<3wl;f79Yvay*N#TSe4;W z$l+bwSCf>S@J1X9}!jI+N2S zAP6**V3RSPR_rX2QM(flEWdfvFW9*h5@T($686#GlD?TJ3Ykt~2N}YSVh>)`Y@Mq% zXH5|&91m0nCq}kM5xJB6zzB);UJFhyT2<9jx0Hq zJK%k?QAk8$Tu?{gNXjAgzyhJWCZSx88wD3*u{Gv8MRo`Ow~y{;4O*gc51I}M6ad0?8paKv;S8ad15n(N;+n0bLE^$R!W?zna- zKZn`btXq>6^W$db{1VeFwki8Y#oMa6d`uN5nF5MactRES1JB{+{sDwXV{uxIr#*R1 zm&nVaLE55$*W+}QOY??S@^yQoz zx1PR{guq3*GQ)*(!>NtWhdA8RUhhJ$fJd?-nn*D9H!^wC%gN?qW{_DGoFL{nTf zTQyu=t!{tqeqr4e+i;zOThz`dH!UBmCTr8wYyV(P2j|Vt-=HGu7sO|^=CPXUKcxk- z0_Qo=i4B|-h}Duz3m$g}+d}O8`rhAHXI2>~I?Qd5^j05w+7uhj$Ri?qVf+l{3H=q} zN8cFLaMy>-=B=G(v|)(5rQQHQyy6b*>k?|vCVN-Sn6-itZgl?9R8|mSBhl}fM|OeD zQ;d|2-x`M_18u|K#BsEea4>F2pDS_8Q?)29U-^a7(tl5g4~wRCr7d9%2uCRzxVm_q zf`<5lU2yOH)4ORH|MVfDIaecGZfrz~L|t%i<5}A|`c=fyyk=suw^(%?Gx%xYE^w~(hp(_wzeRzU;3q4e5#jy~ zbHNiMtJ3mmOB-@jhzBw2cFOzTvOBN^ikD@l{M~Hc_4F8r{a7Xq#w7l~atn=Z=3mb6 z?MOqvtalXDN8H5REUY`5$sv;aYm>L+HHyVI5|3`k)&CA+VSto$+~R|PS{!*hH$j$w zyN79a0Ts4_+CYow$#=~Wh&R;*ZYqf2>qLb~B~W>=Z_*PsnAjw=J|W1BD4J)uM zE?c<~Wv#S(+~kRQVk5rjgh zA8f5OA_i6!9Z?n$R$@0b9R>R%#ixxxo{S+_Z8dhXd&mMngz>R`^1ot%wML@8Rlg@e zp{Usb@e)%xAWKgfHv_D;LWHVqZ!s3YAX&+<>xXa!&X4Z~Mor+3M0G58uozVqpwLw* zk`|rKcC9Chm{V_y*UIFrmfUc2-`ekU5U#v~iyn@}7V{drl@3MP^)mOctR1oh0!kIr zPVkFP-6^Nx)|#R#qT0ZD?JyG8Pa_UB6pZ|ko`qm}w8 z{{U+K@ycYiAW|})tW+vs(Zp(^Fj^1~7sxx-+F8G&C0 zqpQ&U=-KC1Bf3F1w8D4ebRHUAlO`6aiwGlV+d6X98-q1;Al4N;8fwSSJKucNHOa9@ zlMB+PiAn{l8a*Q6sv;%c3Nxo?pw5G@qi2^Q){biBn?N)j1dDZQjOzHD-7dBUL;^{ zpI03WMc^;iMDr4_>U`L#o0?+TWU|XMnX{fcc<_R~8jvNF??Z=FGE+Frt9MF+ydrbw zEe@ymIS#+YXUo$qI@3KpHdq;9XtZ>^Xop#nx8Ek_18Kep?JROS_V|tfMwI-p@}t&w zZn8ejzQbA_hie&S<+>jbtf$akhM9dxv7kyza*_3OynnU-utP+9JaQ{%%~--@8w|2}^xXIdxy~ z>eDuCCOQi|@{jEqd3^U8BgeG>E627 zShi5-6f{X}V9d|Lq|x(r8g{zb?Z3oStmmk<1D&Ypx7vi=Cb>=MUKrz0dz|PkKSJYQ z=S0qXWvr~F80Ms22JYz)ppABpF5PYz0kUi3gRTq3mxYxl8k6>N)jEA^qocbiiL+RVDVfBuAUo)j7ZauGtfcwYL2@tecA=bMs&;W8o-WN3aEdHShCaDN}n zwRcGVveG1_z{!UKFLJs&$f7O!fxba8OUwRf;-V@z zy4;N+Vi50jxYUNx;saDAu?(3{s}{nW_{Bma#)+e1Y&V>~+*6?vxML&+b>t(PO)w|( z4X05>;8c(6+(-E3EI4C(1ANwexRUbZ0VdRvIaAZ5-PAPx#2U?GI!Ye))T(CaBGWlB z&xseT)r|Ez1s}Kec?BvtdK}pciJnIp{l*v{ogN`~aS@#MliA93E}dd?st?W})S!(r z?^6_*+5`J@G>WmLEnE(-D>`y3kzXrRS%M31_V4veQfv1$6thCp`x?p-7p8() zlP|GvB84!Oxh2m9pV4>f_U{65WW&w+4i?9HNYCsZAU-qd=SXLkaVw zV87A+2MD*AtdgTidAM2+y2jfdb3I)hpQRAmt@mmFZJ@v7xFz4ge1MxYAvfLPTuHKT zqOB5jU;7;`H~gyZ%x0yA&dPGKNK85fq)kU%s8UpuLBCu|tZm@=rSbTai(0X^C+8n; zl{*rmde$vYM=2}GcbUNO48=o7u8nX(oINVd~i|$IDVOEJib1C*f%) z;vXSm29$+>_bCgF?VX-w;GBundt|*_Z{daZP=v_wP7KfWy$UVMq+E9bHl&Y^Zs}R) zxA#zWLwf=_?F)E%y<3DWF%%so-XV-M@@1qV_10r-U~>BEh9giPv>ycvil>i5XP`YG zZ%n$+9L1w2m$_G|SXA|m<1U)wmces6RELy<*Rvc8No2UcjcLD`Bo zGe!t3FwL)tDb8B3v=qc=ppSyrnueCMftVs+@$_v|RLpB<%sMIceHF^5Vqfud-NcQ5 zzn-P_Et>Q-6{;*Gr_j@oH<`u|ycS1M?}_deoy9I>o<9F(9Rb>1#V znRe0BEp)~kjWwm=6E_iD9Py96VxV6TA%97ZRk1HeRO_&m49goNMhNu=fIT=yzRu z%3J;fVzPekRtRz^ONf|wv3!@D*o?G*PNG9jgi&3Wm#U{QVZXNOj^@KY;n)d<(JUXH zU6dG65qr-a96a8H_c#EsD}&$~_}|!x7*aTz1i7Qh+2>{+oYYg&e3((+|<_ z>5yfmz>(~`xG^g}@ft~}eJmgQB#E5=OG1SFs_Q5uvEEisbcKk?=2Y*%4ZcxDYGt|o zo(j|GxQdv{?Djs&TshSiN%`-J8R#U=beUP`sZ29w zpkk2j*?|ipyBo1igwse(zAu+^$zGuEkwq)JF1o{X0;DXRt4~1A_BPk!PFoJ*-q)$O zRBm$LAx)KfKm0#@_q;GXz6ELd*C+6?E{l|P=4b5kla*NzJ0ycG3VRA#Vfu$6rp}%f zh3s0XkMeQp>ZO;~g?X; zjG+h1ii{oIG6p>i?$_1zP(K$JF=h(%LHR}Yf?rzDT4Iqe^m1dMG4aZ(Iy5h1J6T1W z32@;rP!j0*@p-wvT7=J@{1iX#Q29|zQT>`duJS}aN6OMFT8^1%@Y8@NqILBJ&sJ|c zQadE)6r`)qQkfH$H_5W?V63dyc`mFC=4Z2Yi}xmPHVxrK7%bo%@_4nc>+Dg|zLG{q z8si2OOMm^=U%Az+uGzPG+MQ3HP+zuLDA}~^sG-x|xdKJg*EH}k*PTdH^%WvP5CfSf z2-bhcJH_3KfSB8sreT)K#jpMYSZs%!j5SE8L5dbFZ6;oOF|h^;{D@G9_bRF4y}a4{ zmZPO~^SKEhjw(qo7K)F=l-xC455dbvGJ=yCs&C<@s8>B_tbc&iD$&dWL%W0&ToeR! zG|H&kyUNk8%-K$?@>9O1o3ei9PdJdSth;qRCw<6RuTopCXuv?=Ug~|Nfvvl-p%8x7 z>YrhBJsi{25u6HPcfA?h9)D6<_hvx^BcWNYvhbZBnw${V1XQ=PUYQ0EcJ&@GfdS zD{QB0qu~f9Xk3(lEi~dDvg!&lE9cw)E*(@$>hE;TT>#2UwKHPuj{U(U3KLw{r;p?Cu16UVxs>C;~hC^ z7ax?WN?pC<?=<`7`FM)A z>N2@2uOohPLeZdpo-A*WN z)GrMzkUK%xUQ4LZh62NrYHdR2IGJCbUocBfuLh{h6OyXWQ-Qo1J;nTyJd(_ZSk(M^ znV~qaLNBfB`&ZVkpZf)U?jc5mu)G@m3qEHy`BkZ%z?PN!M)u`{d4{EoUqfmv3g5;a zq*@MIH%xUoROPClwKZ+4C#F2@1Z9tVJnL;nKc^hSa&&*u9m*IZ`)o+Dex(*($v!2` zo%Z!~t@+42ENa*Eq(Qhkg);qP+|XqJufSi&sQ9-VbXGBvWi8`WH;v^30?VImF#<30 zJkM%AiDoHLRbL#SFQC<~OH1_LjVE>VrlDH{Om9Q16<$d;b$iU(XuR^6$>Qqa^~A%C zNP~+jT@#GT^5+UiyiHk`gDvCq0W`qqoJH+YLxBG-=xdzl2j@Y;V~B3nIq7!l5zX;? zTM|LC^sc>1#^v4{|9Ezh7^eU=jE|V6dvdL^s8#^nWLx?K0L<#)v0b0uvShvaNG{gU9-i_~+CZJ@n`$DR756 zn&8az*EYq&j(qJQOqKy`OR!P;TEH6~ED? zdp7k^qfF4-2gw{nij+)}MOzJULLoDf6+}U)Zb+3T^{TFU(n(c{j>dmtVRg{UVjgKW zu?8H42DN^%dFFk;5QjD$)(UY{j6YDol}DP}X+9Odwb-YW+$-VBd1U6_OaRR(8$-}1 zju3q9Yp3zIvT}6V^TW%tW52B@Sul0@oVpea{ITwttLGcfRP6Pdg)`(o-q=GV-zR^h zOI{~ju;cHJEV;4Ov88Wn4}9AuF@G&~;m`jqM6-CHUjTL7PnM}PkZl>K9me%przaq< z2?h*MaDLTSAJSv<{1Rf1<8?Rxml4h0{2u@nw$$5*J`&wyb|Z@m2X-1iNdWWAF85)m zwJ6yQzDVDigM@2RGmP^r%u#>{b8t^flVa3Ha5j%RJXx7$^vmw}-nxUBFqC335ppff zE7%}GYl=0MHH~VhUbfs-iZa-&{vkOE-V`WaHfd!OTPQjkiht7AL_sU&E|_K$pn*e(O$^dz*)hP#twz@uLllyyW}XE;tc5(G^~I{1 z)>Ahb8@tg;n~t}&z;`R3TzAgEV!fV5L6Y&=vtf|+&f58*2I9o>q0-E-oDezwCJtTI zhv==93B-pAFMUrNs%R! zZ67F4!Nw>A8)6BmtKVF`JE7Wz+^QO>V+E)Ca^%xZ+GJH^Ejs$If4(ZTVQs8rq#7zY ze3K)swnRh<9CE{PH|mJE>vHBOHTuMg;UbvSz<(#`q@r@9r{i^{%qmD`%6F3iF7IpMvq2ECO+t;$+xoX0Uan4HM34$Mo*+e8| zlG7bN^is2uF4!(S#u?b+XSFH@&KtK)ZLELtjX0Xj4Rhtc_k}_RHWVVEcr;yFW{`+| zM>-_Qfql}Mg*``M1c$K_2+(M<$ulMHKi;dDv6YCL`Qv|z(EGXSFt5np6^N0L?M>X(Bba{~xO?HXz>r!^QpF6m#`uKZo zNqZi9uUPHJKzHXqwN~|P6DJp^#YPIHDS#Oj@^>>lIX$~^-w{Ul`q+(_x8!;A-CeZZ zw6wk-CDVt#Hl~X{Q~^^AvKv!omP%~Q@VmdUn}P2Gw^Ps8D1;hCm+mG-&KMW&&pMBq z%!5k|v(}WoW&4y>uKf=C(9sm^Jij803|D_p$Vd79^{g7=(=yn75!Nq8xl7FZl1(^W zF@S;lk#KXCgq+gVNayF-85Q#H-Pz%sgWlwIBR!*!B+OnS6yQ=(>x(=*V}r_L9e&)n z9{Z!N44QDzj8_p|k%Ye(iut4weSG<&inqAOPuraPUSYPabpBjmN02!hrJEP(?M>PRmfv(% zXHSd0e>O=+0xAU=d7#+Y%mx=8d&A*7AuiqtjH>;>ZQ(>I;|fySEqtBD8!iuM>n^NR z;veMo@72cXHQVb4MOil#wbA0*%$(|Fc4OHs1bJPiZSeDwqwwGh17ll` zn%Xm%@kqr;WrCRh07Z`!EVr^H`}>KTX8Xm&@_ws{OqjqXD>%&*l?E2|J77gCi5wlHx|XJ zLt*zl>%7ewX+4#OD1Nl#48J707kp{$A;KFWNx}P7#TJtKmojasyQd{sg&YzJr`mN1 z%ef3NFH^BJi8H4maysa3r(z~|(V-I)-riopAj&3u9b0yL8Ya$bcT-XKh3PKTlE`J} z&R{8wUAC$aZuVz&BR9y>I!+8$0j-_n8vS67TNw5@Fl{$;2gGq8_#dFv_mBM;tSD8! zFAP>?X;5-w`K@W2DmQr!CqS#V5I5h96V=_G1T(qmi2!Gp+HLuPM$9lSNcq19=iYya=$w&$IyF-^sxm#TmWG4># zxOp>rgW{G&dwhiq4``R^Acce=|7yozN)+<}zP)}pGSMH=zaKJ-mfU4jU4SQlR1gln z-~EPv3Q_cI2PgglcvrjgNVJz-H>!+LC_0> zQ7unv4BQwYRi8o1{pSb5zD8RCadI1Qd3qiRogQ&=ikxJS)?O!-;R-@}A&2|C+PwIP z<3P-10hv0*JA35gH4_{<;=Sbis(VNEi>-GQ`7K7`(*?Sz6IL7i`~0XQfqu)TUEMiW zZJ>Y-#>ZUFL6g}D6=QpdLobJTrCrLH3)uzdsXQ!9Z^kZFS-$PPHanLUa)d2#<=yCE zV=fDlrHS%fWm5L&;`2(ajdqT5eieVL8pFoNP@N<>Ro_vGcvq^mhZU~{y;1UrrP!yQ z_Fz=HgZsbf%O`$@DQtah3)Sdc{j`#F#gi`XD>?i1;(-RjOoPd8C7E$%tp<+?D0tu0 ze``~JplT4Y>P@cb{?_D-t1nWEhW<$sv!^M62Ydx;l)LsybgahnyY0sMVfc}T#PC3? zX_m3UZ-vRR0>oc}8cPBp`iT~)nIwpf8}_SRh_Ij1HC8EWMLiwDJkp&R?cvH_&6_9! zN_q+9ROiI&{RT&JE=8q34@rTLodDZCb8G;5WcKIW=4sS0#9*OeeN3oUQ3hM{#2$9n z2-jj#AmEh=8Zne(`w<<7_28F_1M;Yt+!UwZJX64t!{4i(+jI7ULlV5wq$nCG zsE9ejH*)OW#SDR#sV`IQFU%VsbZ574Lgl@w20P6YoqAU!m-*G%>WA|b@Vd128I_fP zRW>Tr)_xhUgvRCC49W&ObIeBuT_C#_s?BLD1Z=_L>9N1~H|5vJxr_ex4MB@UBDnG2 zzD^R{>r;d9ah%r<_jHGEpoYk#h$9@OE?y_(pWf%%c0g5TMff*DZt%xArG8ML^qI%S zIG12HUEX|gPy{e59HnL)A!0w(YdY1_i90$aDlYdbJF%8Dw^->p0k?3GX_ST7Rsmx6 zF}LRzz2kgnNK;J*c%Tn%`^eO{g=#R(piOUqRKnwejXz7a*#H;$Q&lA5lUbmquxPb^ zjX0P_G9zK;wpwt+J;8^XGHd%5q`t4z5Pa&++mp}zk+aX14Yr#=W-)%V7)e4bk`NT| z2btMFDr5giSTl~GMr&riV~W}uFEK6q$-$xX>F4s&ao0PHzZG;)tGt9LG<@mk_uY$wx-=(<@@m^ zHFSvPC~U*Ty3wws>_oVstA4l&YBXr|{8?mgi}=vCS%5kDEg}3>$?vxoQmI^6;!)6z zAEoV1&m_xaH7}NAU;Pb}n-gKFg{6>7r`6Ab&H+Z0R3oe8I>U-$w#d4at&I*!H|hk5 z%;2E{t^|cfk?H_@?>+yMh{PD$sHv8Ky6XtmL2~{ZZk|`MAA~qj7jgPy_$qCPe|B3q zE#h4yqH(gjUlNaWGjg0iI*@wBU%u_oto1@*mi_*@z83PUm*(%%lO)=??#W%1Aa@@c zd3}fMc~w8Ho7zwJTMYnyth(s@s%MX?8Lc`^(f#$Q{UGQ%eE{h7I(8TA&z($r6dhG*mWG?Z8^lPgR(7UH)z-*6vZ( zeAH*P)$|_6r;b?hWr*>jYLt#DM5r$NUZ%C#*I1@pKp|E6O;1~FPGHLYF?v?g&;JjW+QRb8n&Ya%s9y~e zuz!v#BFNu^D#M*{(^8B_**;ztSnD z%)p{r&keh-Hrvu`4CH|+g0bC^W}+=gvLaq5%MCucdhI<6dx^@Cd^wmDN0&sS$~*&v z^Txj;FV$mUN3KF%_+t}znuQN(n5iezz8x_Z@{K?|nQuV74O9eb_vE{Bq-lEB3B#ry z8KJ{SNtzxY&$kZB_n@$!2v1A^j%LXGUry(@al7`ni&o?bS> zRz=23tq{x<4uoVd>1kUJP7J9-OyFKF_pe@jfwVz4gaK==*IeHphJ^t-MOPUH1^y!y zFtg=yyh7!S4;InHV{TtuP0E6OMXlSBe8sDG&%$`=D@qN*=Wmv87sVN)O^Wj|89SIremk??EfgSI+i>;Uq_%W_aE zhL5ubjZ=<9b0nY%orEW>%{?{AzP;2|AG&&btjtHTd-t|xa5J#s^C#h|;skSH*C7KC zE-g}5ZtE5OH^l=vTY_%23z)qVyIJwcia!S^#zi z^UtHP@3E4>)|5*vWsR}@Ty}n&w;M9%hlJgqWd>56h9qC{v4zGM!4HkXIWKy>bHz%w z``|SNQxAzA4F=zhO&l?y5$31dOcuZTm+YzrV~hHrJ{+!sWf&~}B5y(YBYtv($ZPZH zhBYx=qOyJ0{QeS~LwL?6_?zBzw|rR_X7MT}znH=!pN4VMV(U`p;@!aSHnk*VjUF$d z*$KaY0R5$|Yvk(c-+Hi1BXvOmD*#5onL)HtUSG>hm)f&nM=RMVIxwS0e zTf%yiY{2wTu+WU~_QEu*6@n-~(c+Xkr4hD(CRnTG z#EjqdZ{atBT30#)|Fy~9wcy=dg^bgDSCiL`UNcZ|hTxv!=~>G_XkwiHt_r^CKz`rk z8XQDe?don%c)mP06wuYwN=Xu^?0@*3-?q_{s+&c^H|sgv&1l15ZEb8KdJ-5$4X-2e z(Qi+T#rv}@tHW!y1?w1p1E=6oVIx(9_JYT{R}#oOmDTZ4u6U2?i~dR*mSaHk6hFiK z3=cSu3Q|(HV3;3Q3aW$&w-hP)IjSR+ZBBe9W?efXcR@MOt~+N;(7ilQJs42-_dKG! z`yy4Ye+F2sws$CX5^YB%A=i=3#Met~t0`ogbOhsM_Z!~$0a&K<>aW;l6}bL-H%;pr zY)yNzrQgNsdzdHr=nlGc9;49#x2@s3PwpHU#NHCLsnwkM2hKWKoK3`?{ve~?i)z&q zEqrX#6NmDTe~{zG#8;MmFHs;tI^5qZJX8J9FBy&%Yd|B@ z{eGds;FvdyxGtERhT3u;cFyyp^WNT)e$7>g8$|Pq8Gra!*Cds?Fv3FYX-TeLU?BSr ztstCiXMPr!Nqh>=X`p@M@~hU>FD=O5SyQUi`re5-U;6es+exBhfaUnUMV=PqaG49{ zP6|B)EmZPNpW<(8%z$tp^avAiWWMs ztB4+UueY%G_+-B4`cojkrwSQc8w37X8rG5jHS|8@ft3mI%{Q)wcFqKX&hB~l)HIC0 zRQU^N=#>7!iian*(EYm{4*X2OFE}Rl6`O@@h;+GQmqO~2)H8*JH8QQ#*ADGT(M5h^ zl(KB4^w=*VeKfReVOx^E71$)fMIH9&dMw9x0P?LGAbTOziP2Z#ti`JBp$Jk76&ky% z<6J&;%MlnFzNs3{{ri5QXo=PMq=X*I1uVmaR}nQw%z1|Q_2^@f{l<)`NYY%UV`XDGk-CHMQcK4NcsJZqVq8PK-l&IryKP=#z`%LF*$IZ+}vJoA&+P z;g`TIa<#m#F0Z7ck~HF2??UmOS^|Br^R>3BrL`qt>e8g{>YzO#{#>G7W0BUL=FnJH zS}uBi5}qWHzG?M#ZiTV>6q-77t&fD>6s`LY@Xo}|@5*u09cjx1=87R2F8;TauyNT01^_YLb7fd07ew-hKv zFilQftYzL8yB~}q={`E=ZkR?%9eMLC5XrRvxhKPNjohX*tgsg(hAixE@Q9t#t1PY- z_R?$ex^X4Z7wcBGy);Z3YyS~mO!@CWfU2-|HqsQA>_otBQN@O32qw=lfc!Rf*x6oy z>xV_N^8Tkd@CUZ8ME6muC_;#j>}H+E&*lA+ns$;9K`SbOoK3x=X2Ar+>AB{&vv@TA~SAznSEQdnnFlbFs6A{FE@Bp^c^NQIG?qbXs!lE2wBU;M|5I{n9hq66!WjAbjL|Q{DhsPj;b9q zt6<6zMbh*}4?B}#mn9MN3z=%8PB`qUFScqw#hEhAQg@!RPHv5|TKKS85a}tK!e9FC=Cnr4An%I}2Hn zSfP+7pZbv0jkm?4$afVyju5$TO3#5P$G92vCgQ;nK_`fKsRJ`g7N>qx(J)w9Pb=iW z06EjMw_KYkRZz=1KC7MQuVBrC_s;|919aQ)l)olm-4?+SKk>4FyYq-{xh(=o+3-xA z@e6b?`JP{ti+1%mX6LLq)9Vs7gLV zYGaLLW>$8)N<{ID?bC3fL=GxzR-x^h*=ysB_C-l3!~d#acl;pSFxJ@HMa>L~P$i`H z1SUV5#p+i5R94sNA_l*!Mp9-UrLt~R+O?l7#JBAb;D6xiNM8r8Qp zeI!-1CjP=ph?mr7fS8&XwAtfP4{UFf6Alb_L{mkc!o$@fA^X1oj6ie0a50n9k4|d~ zR@5|$I9?dY1z2q3kjI~w8Q_uhtZLMCr|z$j(?*|G8Y6C?a zN;52Hh90U$J06`XU0cO}4!mpOnBegCo|=B4VpcG&trYH{fXke#J`@r+9-_NX59%6@ zmLb)&g=>q6)up$Yz}}oTB5m|4nuZpjy@piZ6sJFyZLJEnaTyW)Z2?X(; zyw`0u)OAg@=lUEKEh*VFlk)vXLk6p?_*+KM?j|~V$tk!u0FZKv^0o(1P67A!rml^9 zZ6Suz`fIt|b!7lMH#r1wHk{<~o+~@TcAET}bXLo1k&BmYx0A7AkrTN>pa3p8+1zcN_lUn*grFCcISvGvC|u6puNe36o9-h^EJ`9Y>}+P0mj#ce#1yMkg0 z;X3sm>`C|ApTmmpps<$Qo5g}yRWOc>0hJ4mIsh_8PfFo+1FCCM8%xqu?_hQfyR+01 zI}XHGRix@y`bE%tySXozfLqM_+gAW(@r>>6eJd)rbkgc?PRe}U4v$9g-TYgojIl*- z2~x5g0C^ySLC@VItroH9)?OvI8jzJHy3A>e?J^9N$Q%K*u_L}Kq160;ZElcUSVqaY zgZ#rGnNK5*8JGXy%PBYuFu4++~o$4(Pin5Aa zwBDy*t$23x!f!G>i#kYvsa~qCK`Xlei~-P|E6@BzJB%a`0)!^Hz}EPirp1Cko16JRO|~IL9=)(n+SPT0?3M@I2LSTt?$RCu2l? z$y>}{6mR5a30v%hi4`I{mQx=wpH47OQpN%cAZ)LZ*kV!O5sxliJNc-U9uWWYa zyG;*FHkttzg(Y@xop4v>A16%x>GnMMQNx-OLHGpc|0%T)z|*daelBu;JvOG#xv2ABRS|X&syH`7wreGc)G$J zC%|?W5i%h2?ru|Jg~!gQhmyxQ$>O{_bW`MTs+TD85m%FVHg#nLKD}u^ zq}Nx`{{UsetNx@gBRC*_83Xy&eb>&@DxK& zSzh6to+&1Ut&o<0nWHLrBRj@&2{{~MxoZyjMOC#W&L`XQ?C~|&Qag` z=qG}FRpLK}@=v5JNhFbh4(#){cgp7jliS*?c>43jnnaM?c*1p;Ow=c3c%8QdI|u|Q zB|#$`jGFHt)~xjVYm0lURgPQKXk=mm-?(8&=OYIh`ijl?so}e?1^9PNpT^dSBoaun zd3nmPDidyd72=f&s#W7B4Q2T0&{)b&7->ON_;p@d_3xp`Ti^IrLu9%%<~B?u@yR1B zQidP^CCr1!$dCSht>|2Ou8x z+fA$Lm-n&iz9uo;+{FnJ1Y9Q7 z)9!l|%o`$m>o$%jm5VQzj#d3hsjW?ncMw7WFDi)1asUoNZilZ=t#j)Y#-9qEQV_8q zUB5s2#BgxH4D{{~PAbs3(Mk-1%ld1C8@jw66 z{O;PfMdpxytH;a1=dT{LMg5^ZqVZcGc6G*2@MH{UJbp*DS--HovWf|=14X-WaN+lKZ*RSIYB6M*5%A=s8>?B8tX4dsqU?8D^2#<8mAo$j1a@9cyb(x{hE2MiEBR zcJgw4y*gKyCCc2AJy`q7&6`%X$Lx~ZgpDM0W-^j?p^S1p_&vMUu7RgmUt7TxGOD2f zOM#8ydV$j!teI>y>(Rec6Qe@QBxN{NV}Rg{@}zb5t)zQ-t|7P6S8Q>(UH<@ZF(-|$ z)31JOnxeY0H-qJF=FYqQnQeO(l@db_lk>^}J5gCq0qj|iBc7eB&Tpc(wz%FU3lz*) zoM&p10)vjezm00#X$IcTeKzlWhAGJ^>=-j=s3W)1u{8sGeQ`W?av|QxvO>TX2_9Uy z!8=AqJJr#qwogQ7R&L4LR(gH?hMlO%1sfkD&6S_oZsnE2s)D;f`B@Gy!{4oXo||i-M&H`{Y@g`+n5bibM;o*6o|VZ_ zxSdec`S-$4t3$3!qiIo*y$o+J1yKp-{sq*7UB0!W>9#~ccYNqzLKiEzvoA=%QPh*) z+>=nteLj_}UhBRX^20^Bl_VHeL)_!joL3}uTkGrp04m_4$Yy4FK_E$#1eNTd9tL{i zx~%5;)`;f1hq%pa2t};Qw&QU`++PD6b@$DBu7~0~>If*o7Ax?#_xXYIb`a z&b{I-LeIn3uw2`-%_QX#D8ORt#tQ!cwTzKmMvtV!c#_#_DDd3G;fzG&$GZe%`uF^6 ztntvew}<6{-= zr9@}T7Z9;kRmzbHN8ZdQec2P+Y<(NLzBo!TSKb34=cymoY6qfDol55*nC9NHB+Z#A^Z1PWW z#bjAt8+fCI6AX+2I3$Dz+dYT_IO|q5O=nKFm^H`(;&4+0?a3#meKXRsk1~29szpg^ z>~e}^dpT0d9g`+@w4@E~{2*=42GNY1nv&Mj#PZq29-rjK((^IK@JLC zV9F5WEM<<pyew|r)u;#uSH&X$^-4RE)*jN4&_6EOrB8=tx;9Zz1BhWb9Otm=~Z zvi|q&7c&jZ6kH+_I0GGk{c7fs7O{1$3!PGVB`~3ks|*AH023Vu2b}jl)xF^t&3oAA zP@I=7t#gc)J!{08j5j*0#w2-ntYdR7@^3B8iq5?z#S+;^}n265A`812PZZFj}G-cZ(YG;GSn{MN#; zAcawoPaJwyev#po@lcybv(&A44Jz))mN=qd7|Jn$yEq3qBk5evjkHZiM!x>of;ME9 zH7FdInf5kYX&6#U_04Qv_=`f-thA_n46CQxxHi+MMJ+100wf(B@v! z5B>qih{U)_QlI=e%lL=HUJ1GIU9E?OZXV}c(PT)>VBw5=@a8?-GJ-NQoD6ebeWJ`R zZLMEkf^RoYxOYiGT&zsl9&2E3Q3~?yR|_ z{{YDJ-vxNZej#YL8ggPtW6Czw+NrRDKyO}0Kt)u)(XJuXZXmTn%Wbwr222vCIc>P- z&~w_k9R~5VI}4i~8CEHzOvxi1sug-kyQ7|PSC6UYwFlZ}VET)*GJph*NMnK50OKBl zyn678ZNo%*_-=Qk-OgiHmclLn0Ao_G5c531N*#>YY#j9jALrh)Z1re#i}}?q#E*3g zM3ERi(6YvGlI&nWSr@0%^RD*a!&ch1ymTAG<~)%&is6U|#33hhWb?oSirDyF;0+Gy z?fheDdn4FeFi9ZUg?X`=BpLL`$zMdr_XS_u61 zAPj(16<)siuOQZ}ZkrfZTjl;wFnS=Gv;4Hk!0;g1c+ zV;$Ugk(p+`KhKhK*$3w5 zu6krwRXD15sZi#dbG0}#I?c5Ji+?LMx1Ga76r0pzlGzWfR4DZ6Qnn^6g-9R~>-$?_N#f%{lF+X`11p5CY~l z8BNEN--3O8YAMxKCw9$cOWD)3P`Y$iy55kNGDfHf3KWbmJ;5iS^vJF&T(;CTJGh~m zQnK4Teo*IO3G$Li{=I9}F7;g!#>&d)OLs+Zu+J3hvPGOO;=nf~VDf$Vsy-pIiD6A+ zPMtP{B{ySgmKY$D*z~QbRFx{5Z?Tm~Mzu4`J|EfX>*8BTejwc&Z5G|g-tsoqjSD)e zfzSpR_sR{sEmQW+w(*cRttW!hL{ayQI!xEUS&tI)4XRlWBlpW*)i4te-` zk;BWCMYY)9@n)Aco2<>H>Jg!Mzjm#RZjAiFxz8kZ&2o*T>Tp3l<479W;$#RuR&>c5 zOJjf-gN)YTv%ZogztwIU?SmL(c`yu{bF`@^k%9SFXLBvD*~D`E!PR<JB^8ybZ4D-V)c2zpFtd=y=FPjkD!6 zoe3QP1dvZ`lUFLzs+{A$LoZ_*Hi6?B_MfeIqVX+dwKnVDKLUJ5y*E+BSILMC#T;@dG4SFpBTWh53%6~QOvUr@B|U3Bd-{_f*T8+7RB0x^(rxlT5m z=KzDxrYnD2ySnkVgJ-1prrt^B(;US#_YxMFN|TO9sPEpebj>qP)&9|@+AZD1{1OmW zOe8TcJ6Imz{wBH|PH%dq>qpyt&NyM5G>2VRmYW?rc!R+=HfwQx0gC?KH7P2WK*5_1 zpp1;1=bkvKGI(cGp2qS+AK7pI%<{ssE9_530_d3AO-s8>%glkY`<=qqnqY+A0g`G@-Te|Ijm~I zPCSw}r%}c8Bzs1?r&x_7-a5^-g@cfhBZi?D?VU|=_(Vqx79BwVa zI2p}z_boQ5WgV6L!ZEk*_h35{^sND<-0Bcw(_f=i{7aH(4#RIA=QVg?^_lX=}AAEJIciN@ap=67C=+bfvFmh5++UBL5v zu|J5eH7y=Uw9Dws3fRHg+^%v-{vtE)?NqG%S9gfCxSCC@1f5e%t zwQ2QV7+buoA{OYIK?ny?9)F36EZy)hD~-MQq2liu%O`{Ebn&OeTVcGnLmt>SkG;>{ z+B)^mO4c}L)tXjaZgYKR%{#lkmj0}CmRB#RU)<>yOS17I#BU(^LjjY!Ki%#-*1hhT zb*f1flCw)~1V!DWU8TOK+mVd(P#9u2vfW!{OaMp;`^-2Tp84xt4w2&cY+mx#_9dD- zh|DpR>Ad3^$Gvb)Qorue=*BAFyexQX(#q#mUk|<5)8k@y%`SdHjyUx_hplK^*=rg; zv$pC|>1ijIB94p{=jG2p!~>DkS0$wBcZqc~OFU6Ww3d*t!x4~6A3#46dRJ#~k!ZSm z-(Et>3~Bqpla(NR-2VV7=BljuW3A2UEBn*vbY3d8eN{ZijpnwMRbDhWJw15(o@<6a z3~NWXWfDbeYa>jGBw(o_7!0G=1mx$6^q&vk4MxUs1gaoW<>Z`<>;Uua?0VG;nd9*G zh}N?cbdK#bdla_P$AivzC)bW^o}F5d{oGl+=|X<{S2)}GZk7Z{<1$G!sT#;11zEZf zy~7SFIR(SQEhOCx(3TGoT(Dz|9<6(E zY{BsNFC#YTe(`0`@g6We&tFRErv)UUw>hdymAO5RfGl=XEU}NMtT^a85kJ0m0fADm_oNTf?g+%>K1)5Zx_PU6Sc+_b}5?PrYQ~ zK)*0TI3SIuIV2vG#*r^i+9!oBotd932-+8*QSbcgJ4Ep1-}YiQnHho`*KON)B0S|) z`R5~#O5eKFqtInpZS9NQM=CDBrGR16jB)@O!0XLpEoI9Ccwd*AXFsm$T6{Lr4Ot16 zID*?K&d)gV10J}>bDzeUr=s0y(Z?!_naph46M`@XPSaW%-ORexqv}?$$0I71bYX!r zG0quJ-N-lxsOww~o8id3Ibm<9{{U!t7n+Ls^0{|qf+E=7%yW*UD-9p)7WW2d z6A_@0VM>GZ5uQmW*Vodk8A24|xnk45-e-Zt)T=o+B-OO?F6sK+pNKD{O9YhL#>=tg zPb@m)h8wvfKAy&{>UUN!%w?5SqHx=|JGuY~2O0cpA5KVNX(YA%^j|b^&L5AI;IJ7# zDC3h!t6N;oL{q7jM`Z}0jz}Ca`kwxk=hUW^OIpXLO0DVLJNc1W>RODtfEsQDMO6;v z+Rn|L!8yhUt~skR+3OJAI|lP1#?iA0BA(+vjZ5J8Y&E@h%SVbvwYZS731vBqGH`bO zJRaHgtG9kI(L6P;+-TZ^3%Q||Nb<26H)A6w9hi~dfm*s#a?&PV+6h~mQ=GQB*7aSw zZNj|P)}-Z2GZMrNr0&iFfJc76g+Znt2Wgta&8qCT`N9@$s~fVAa(iSR=C}Ms;tvvd zCe(;+qmK4?4bCK7or*>`D&U0aj`*)M*8ELnr|QA3)(uY9?Q?XILf%?P&#|dpBkM}5jjU}&N-FJ~#QL?Z)$AH_ zNJ7ZFOymq9JYa78eutXtrnj@w#k?lz?xvDV0!ff%y>r-mbgp;9TK18qFZQpAt)tW} zrY`bN5i&F-@wEhMFmsMa1aZeEtN#FM=`X5Fs(qGiHVHzAV?Tds&L5108&6K$)-|ZU zn;KECcJI097rr2UF_m;AQ}%UvBzX_WaEE>ypaU6E+}BUxJwZ=|t?gyJkIt3aILN?R z1F&}JJK<}ei$uBc7LL~UVmHP%5rhONJ9lmB4}4cSJ+Fzhi)|v`Q?!mPF~50hAa!4w zHfALeNgy!6&lQ9coE%p}YM$)VeNAtRJ}mJ4rnM!_+l9nlRGv>IopbXd^MD5(_^&k3 zb)-7fDfbuS#m6{bv8Aj2_^8)oJBaWCRpmnpV68+!a5rP;1Mh@?+)sfyn%6{{RbgYhMgo-QVa@!EXyRa-)*P)nv%R20V<6 zfHBsQyc#?)7xs*I6Sx;q0cPVdHvPM#QgR6HLFrlg)!m>73)!HP7gl_xdKe za=N64PriuYTU@x_&A6PzqpFZj7;t&4<3Xh{6Qfp8ccljXlv=g^+D=_gII@g|dT;vG#D zFm7qy=LKzT z6_%YeH*!h#w?eRdtL2b#8_dsa91IXeRfAL1d??Iq*rYK62#P>)A@0MFLwE09musfk z>e0Lx(s@!r0dU9xESi_RIO_r#E_E$UW4hI&j&)7R6iN!lh17(9mjn<`8R~0Qtu+X(;Y+}Qk}axoc^qda z7~|fJkXz}SZDb;JK3)MM3WVTy`@sGfslL-bsOxEG8_vcvAxQJ`;1W-^ag2AWn{s|c z(}IfEatl39^8HSgJ+m|skDcQ@4nR34?)CuwbXOrveaBTyMmKZFsCk=DGUQ?R^}`2C(pqgRojk*-)YGCu`5T;l)& zr#(+x_S}LGghx`4x4Uff>+-f;J)vff}V%l6{q11d%iTyLsj+ZX#x@lsl~wD{7~-+-Q7^=o_MxK%#_-H`g(n5}^%(11@103TdRy^2smcyA zaOz-q7sdV*ir#%6QPay_MQf_poQn52EX)5t#v?IKjC}F4tZD^Uk9Q$Cffp+4lR6n&w?LJz<*FQ|$Kg}c)UE7Q{POXM5n~u# z?!=Wo{EYh5tw+N*mVRU!lwv7l&dl%t^vLZ(nvA0CCr!A@7vJzd|JL{z#R4mveC0;m zgVQ+9J?aSUEn|#1B+V}6R6THjvoR-(bg48ONiJer={BF=Dl;$3oDM$#GtFq<+S_V& z_ZKk8*5Wu^$0DwGNXvym>9}#4{Mj_6$$byprFT!B+ML|CBGUfYCiv1&+le5S0Z2F= z_2^f=7Mnz~v%5*w;9kb27hG-tj(2;C<7~9%@?)C&E-(Oh7(Ry|Uux{FJeX~l?XQJi zR35|p;<3b3_<1^hCYV}Z6Q5te=bGnTytjujBNV{K2;dK?t@Vz{3d~fhwixH0M;-cm zS0*ZQsMYkhW3vfHG?P)*{myOe>}J(umgo?$jNmpvQ=P1P0&!ZJ1&r7Bb7@+7nBL+B zm0U{F5xvc6VOnl-wT??k(OFDKrT{PMyzQ`ghf<*hy z&O>e8)CB;2O=${kzI0($t(PGT3nq|;(&_y`d1^${L)wAYY>}GZ2YyIp2 z>7FT7sJVHWbRg5^MkVsf?H#_H7@3d!wa(qA-;AG1zN{@Hw~AQFR3T#n?>q1_^~kQ5 zP4MQS;%m{OX}dh=a#7_t+NyZ~dh=3vx5F0J8r8Otmu2rEKqp{6NTfYB!GY1o6nApW)A-o>NEYMOMaFh+RmfO=O2;W?tXEq5tc_hV*y77PdxnGk>!dk&=gSDiI^+Dzr?|d4XlJ-zg=v^qO$<6Lz z=sJGAs#)LO>A<=|ptMTgGOh~(4{`wQTo#=r=Cdl?dDCu}3e6)Eu~ZTnPZ%Wpyz`3n z-w$}w%fQ;^rDLd#mdPntWL|TUaGZJ!b6#I9$CA^@1kDADP4sm@$G1=YkJ4 z)aq6-=$76@KfVyF7KbiN3=EJLr>$-2(Ltj4SM6|ILuF{C57|;7=9vrf2|SQ>os#Fnx3ab!DBRL&$-nKNI8qU{B zgvyb{bPt&t#N__$t_W~@w_jsi)~Tq=qzR^lH?s*9f}ihpC-B92?n+f8*6j4uTxrJr z4o_ROHm?<~uX{Q{OOBy{9>7LeW_}e7Je4cbk(_gHZrvF?!@bW#gylE z{0v~4g3WC#UG7UQz?d%RP8g~_SSs$}Kw@`e*0v$6mRX?b^hP2J%Re<6f{gKypSMk0c%|8%Nge zG<_~_5H-KrBfXY1o-)B#$t+!x6(n zlgoxU1Z!_Obbw?su0h))0vLjFaoV9ecByBnNiT)38%|wL9hXp`1qj9oP=4$G0JZ2U z+};@1ejfO(>@4Go^AMKvPFzOLHvH$Va0cGw)tg;M>Mt4(;Drr${bJj3lX|i0}XfkZm?gwKlIT zlDG=3au50}OimZsLmd0}ty>Ka)_rL&AuBKqlOX;y$pwcP8Ferv!2v{tIrI7+EKw_^rOK8 z;$E?NABT0DdqlK{Aha8VvK8aGA#z4dT=1$7XtOnx8e~p`%2FNLX8rI7q2P1r zUdQ0y4P5BDWKqd?=aDFNkw?w2l151T-9}HPcUHwZSak@!`}FiY+E_T&#QSQI);(8W zUgb?w#=3jK4}v9*X*QCQOd})$JsY9xkHWa^Q$*C~U$kqCmZsVuU}1%49E|Nb<8KG+ zUgZ8C)1*)IS;v^fva28BW3{;SBD~w;TvsQ>5QT~Qtw6`L#TsO}M!5js2y*ku26~#gorqLIssF>c9{iETaVRU9IT3#G0+u^mp*NLA{0w z3<1FI2_3y_fVtAVRc{+jVCLyOth7=u3yksyAPgL0wPUrj(_uj;Amrk_^Gwy2&Kr?D3w>`qg`|nt zh7#>4lB0FV9Y;^by+_20r_ZTPa|?M)&QoIi+nc6vJ$n8%%=li?VLMrlS^RiiPaXbM0D9zLy}5$(~pvJDx@_k%P#`O6K(4b60}VZkP`s zAc{SJ^MDED^PKe={A;($)MB_bKzu$y7wl#G-ku+MsqTiXL^9h=*P*smaA$SU0M zKiMh;ZyJiuJf;$Z(pRyGWR}(mscIqYZr(90a~Re0fT*V>i0TQgElWpC?k({!rJ$?a~8@Nn3Qb@2|pI9;y$SatOFGx)~p z_SVT}p2~fw?7uvlO0N7222!IWeQFDtzR9gNr*&&3#j{B1bhh$gok$~SQ}W|2^~FdZ z#2OB#Zv~{1OAV`ithK6!kr{!(+}%JY4fUqT+J&k|aQ;7|WPnJK zpmjn5F;Dep>O&s&#Au!%k6hEA#FN`81_OwPJBVB!J#qQgBv-cHP@hYZMJu0`l;dxv zPdo#~aQhj1M?2f6bG|hp?9_K#o5>b|f2Un(+UzYfh|ICg6XBq6ao692(zzM@J#nf> z8d_V(=_+kW6@nFYY^;YPlgA>WveMy}`}3^ zF+IYGN1Y1{9H1a$xc36OoTmrNM^lm0gwvI6E@0|j8P(;J%+!j%XH4NmvOcQC~{k|$IWWxj2lLw~?47|JV3GPSh7jw35s#uwWR485_d# z7wAq6T+`;Z)a-68?vd7BHv%z$Ivfweqw_c_gHPpN6n z4x4Nku{#qzK~wW*J!-6zUdeE5?ZXvE&eq@_I497P)~v0)+%kDreqWyKS)^V_1m&^s z%}**@mCWU`FWTD4X>AL`AeI-GY=oXvdjaWN`rr0#y#8GNWRWW_=U?GoPUGyOKT}-t z+RFvZ7Funvbq*$S7;RN-5*T&KCz|RtT}IB`8tQp7eJ#QvjaLAx5D3RWF`C82%6!PT zQ9?Yn>XE16i(_x4rl$^GRvV9*^5sc8csrztNR}| z?GhVlBn>E5Xu%~H87KMv6?p4D9@Mp8D^9jkV+3y%sUQOKFx$PG&>nsB?Op!WN*@LM z&p+8XRQUcyxwMEU(pg|22$*dFzGfq^IH{n%mdLEESylw#bORh<`|((J8nS=FKF_Dd z^6Du(VSJ)nf^gVTz~htjs~NUve7oj-%B=IN9$1oFJohC2Rmmz+OWr!6h=iNv(CGX( zsEDV1TKpLu{KK5>ZOjhRzeB|{Oo4Sv{{SdRNiFx>{LIAT>JDnP$J*}g;=GH62t2H) zP(VFL)A`j68Y^qN+w|3hjWoEHDG|1mU_Xcs#q@nZS>4Iy24>!E$!xJ6r=pDTD{oSqvqgIMswH=jJO`7u zHC7T6?nxg}SgjSU#mrYNaIo52?V3n;?N?%Q0bcBL`3`GJDJ0yNLkj%Tl2Mma)3nQ& zZ59iA*^IOKo^fG?9XL>}tShxTp0y?Zm1>sKM;aiH zJTL$p=ij|>`sI$HeK?kQgi)i0E_yRygPe1L#d*=C3CiJG-}z=5q3l>+=KU{pLZ~4tiH*eDQdN>~xqdk!{h5 zxJCd2u`*b{1P)FIT!C1YSFNU58><*rOHVAvZyRmi02yra-#xn5p$d{w_cuK0#xk4d zDcpF6MbkXvtX_GN#CF6JCN`HNjt5W)A6!>SZzK`8GTl1b$c4*9@kvz4)0PLzQy5?g$v|k(%h!K!{nPwB0Y3!{*zxvEg#wnKh%P>z6TTVg-nn zhxbREtMT`_=iaQZiu9M$zp>(0vj*1B2rcYk~0F7ktt%_|cUsK6^Ti`oOT}m6+T*)k|O5|s2V2z{JyjM}M z@li}}`%7*jCqf3&56#c64lB=O@fD(N zT~x}hr5yqSPVeFA+-I8Up;mF#E11=%7p3f8ST!vo+6&EM+(b&4*s9^P{?~9vTvq{g zEy2}($)*@#w?G6k5LgE%ckeU6IqqxRHSZPbTE(A{eFoQjaDZU()sJ2)h?46_ys)#; zW3cjXV|gCpc0YYj0Bs$6V4q5wH7wkRRx*-NXO`+vX-;9BArdUx-Ua8)jAXIh{5$i2 zE3wn1nA$wEq*nI#GH?&wKsYL(oae7S>bA8Vyjp~}CK(h$f=2R+fCh29pH2=t)=j0R ziFp)0BzJ8>*_v5eJ&cb0{OmV(Eyx3$3hz<&wA7x*pDC&}IacONrIw2;9RlJz`EC|S zQ5fx2c030^#0SfP`PRRKJX>QW#2y~-L(6Haw5%_;F6BTJs{(o)oJ5`y#s7s{p$+PTk#)-wF{k7LX=z0f4%M&=G|FBIWHMZecX@2 zyXjM={o0RT>-zOP%GGNvX)QnC{{UYjzVRjewpY{mc`hz41`1uRnf>X)ZjIYLhJJ2y z*mSNNN7dd-i-@9kidke=`z)j}RR?qAoSYo+Yj?wT*Ip#Kw$o#rY*W7Cc`^&L@tlsQ zlb_1B^%T>zOXRYOFv2!r=i@8@$p_SmPQ&+n&@vHI_!tP;XD@dFnD1ft*+rB{JquRG*x+70ytlR2! ze+(wm^?f$?O|W0G>sB&1+98#`@(@apr}#)X$mnWaR`lqe6}a&md5GOhO{@g z(-jMDQZ zs4?O)2h5;n0QWctiqF-)8Qp7sC{1=L8qk$dDyaEEQNbRKjtyn_`u9&7H8kG%pqS!fOj%C&9iTmT+P?vb+n<&<5Dpcl6D6 zRs!lUmimRikQ5Yn+nhH&k7HjkOQ86xz+M@TPnH*kSZ6mj^3NM1vk(A{BpC#ZWCPcl z^|<~b_`Af-Z{iOUz>%;~9wQjRDnQ-td)H1s1$3uLroR?&6cnom2n=NcF7x|L-&DD*el1OHGfhz+LV&6 zsFNkPluf+RfEdU*D(9w0@Sl3=?{vw0KcY?H+c4JZ6yqRc^vyaufdk2>U9h=@)wVg#<#oX4 zKaFl`o-@@i=496_?a|TV7Yz~s%&-8cPoN_Nh^N^Bl1r z<0Rnr=}KJ5T1C@pPVq%sTN?|#BI4>_^jYl4Unx%wxC~&ATF%w49@r(d)C>d2g(Jv0 zL+E~-pQS^3w%UHXWfl9%EaoH5^2XqH<8RY~NIumDwc%ZUd2Jp^%uo;BSx8iGP=&a1 z4h}~Ks+x*v&Q?!RRFv%1INj`Vw*unBS!wPD*scN<+IUw&N&LrprKoEc8r|WtEMuPH zUomGb$Sd<_)RH*->wVz4S*@;QRBLo>O0WD(ypnO#iovn7)b2IQNG2*HSz1KexgnUG zfPFewp-xe^Gu`>3o^BMU9srw;TrwImLco z7`aPMr|*)Ij5X*s!%dBEBTFe>Lpq(z$0GpeX#W5j>NQCgA|)scxC&Hqa6907b*^{A zdTZDNc#V|Z`@Y03G6DSXYUsPTj_h4sBNk@?RXIL{pT?D2%5C2E3SR9srLJ@kE#{#x zT{g{P^Ou6B1aJv0pIr2&-`d^S?^~WMT`Nm><(QT(%gFh=WO`ShQA$$1_dB5_7}+Dr0JK0$zdS{%Mg6sRCZ8;@2=_)( zH`-r#+CU@Lxp*yY;hs0Oh^QPDW6m+pAIh!Un|SYDTe!=Wkyw&`_R>oa$YQT)&WU~f zp&FTEVYP=|J$d&v=wFgNsNm&Nmowbzycw<9_-f+f;&^~EuEFwPs{_|Qn{6t=1;dTf zBQ$e4;9++FLGDEl5gKt;-I**Ssa47BaTXEWSUhj2Ow(_SLWpy+HSe@`135LmnsY@O zn`RPuq$osev$lBM-Ipuzg;_s|os^=!6kENXD|?2TYeDADRzEKp2o!R0>U-54BS*fH!by0B)>-#$Dhn_} z^0rSSC)2HTDL2{m7#Y*fF{douOC03qy>*&gX{hPGTeic{A3@r=Cy10IWOPFf8A-{C zvd06qsc#+#2uAL5cmwb~#Y`iL31E`!`GQnn5xNpc{&h!DypGw{&R7}cmmwFRC!opb z1!U@%^T`@%s8NU^11oRZUj^dW?C9#;jlS>r%0!N7b_a~jFoN#fGU5p{& z(;|hf$nvkm0>POuDhP~XQ*lSR*7$5MYM{nN|E((?&&1x$+^qA)=voFeJZJ_5YNcv+Kt_GtIh3(WMtjW~950 z8*t>X9S9iX-nxJ7DKyUy&vSOtO3sE&%r>01NCb8{sHMKOveVMq-SM~t5-H@C;koPU zSvroVsy%?V){IiiGm^p}cJ0r~JxK!@u4zk|Bc?I4v4p?bQ^jj=yS$hV=fKD;_-qXI z$9m-VMIVSImr6q_HdlD%2q*cB0b6>hlFr>-q*$k9X~q?R#k>UM6)2Ll|pwkr1H zYvx{gjEv-UJPaOj^#?Ur+ga=O=6flmk=J%g^y8ub02)wAGUn)1+iRDp$?DM01X0Pa zGVHhm$Y6H{3UJIvelv{wS2b|+UTR<2mUm4Y4fl5s89C455p?k+uSFT)2fpp3y?PFp<}@YuUo%}B)q=Vblp$u2GBvL;EHWJzQjT}KSez;p*W&14NWEoystp_yTL z;UxAh1`gIZ{^=lh=AA4;QoB|}*TcC-mM>Em!k79ci2}!9L*2V(>e?Ooi@ws&!6C8+ zI5oAZEYfOEa|z!RhYCj-1oqEj%q*=M>fThl zoW#xLD`Z4dqOs|kx#6D|wAu+BgLF>W%MPg`{7P@cR;JJ`Ih23Av z84P~!<~!%swe0jwFG;gYo69GgPj|xY8@4-gxz9j(z#S_|s5`-;VCSUyw6WJFp<^Y| zzMHv`r1FW7VN?)EY#yUEB$kV%%q6>!Fa-G^bsM=qfbCSgA*Aa1=BFl)Wgsw-wjImL zlsVY{0Ec?TxWB%z*G`pr7U>{njH;dq&jb_b1#$a3w-}vjs!2H>ocfD-X5}VqoMdjs zqMy6)?o|El8qno#tQ%U7%UQzYd1XQV5T_X)gz@#P@9cwRqg(2C zmx%9sz6oRh0G6SUj1qmu4Rvze*ddzAB#z!__-2rSz~`^9=CbY}(yyQG`&L&@K~u(Y z_qg@0xKxr>YeSlJ<0o|WFtuFr1rFV9THMn?IMvh4V&I0le z(2VoyE2>m|ru(hVSXTC4k8KY~x3|5~9_~xhtYu#`e)MhYkeD6tKq9lB>_2FR_Q=Z6 z$ac%Ok@EuIF!sT!cAwdhy~dxYw$ZqGcMZa_G3QsH= zg?zI4{{Ur}ao05pmpq-ntqXNjBCZ;Sw>FokEV_HgZ#KidWE+-M2LKRyU=E|!xDSXA ztY{Y6XT&SpA2aO|q`@IzRnj(9Du22`0OQ`aQuD(Jcd1$Uz5LN6a3#CsuHDGW+erQ` z*#5QWnvS4#JvPh1j`7=@0%t=pY|7h6U^9&Fz;8fBdsr+ojhkM+YRAszIL9X_L;e}u z_OBg$Q@Qb1LYk{$x|5TCG}gmb>4-`43`*K+*l2a4pv;x8vkeSYKC#o@ixQawKN3&pzQ>wY%5 z@g0VoY*J=e&AW9)BWNX0`Necrn&Mb^VQpk|y_z**WO1>gP1$VvoCBXqt!J(3UL&$y zSH;b5_O)h2Xp?4DSb?8kQB*uZrD-X7ZKqE-iVMVLc^qY7l0b9Q_)Y=*YpPB%lBFfL zZFV`K2MBvez5f7H8(L-4ZY^!CXIERT&Y$k>Bz*zT9<@8`lig{tTU$O}$<>Z|ToN)) zez>gd8XLV6RnhJ}J0?+8RDSJ` zUU^@s6>w=mB^^4m8q43imbzISzuImSS1@>@bwN5LtmxZ=?#{!vxyT^*t*;R)_>SK9 z!xCOeCB2j|zRkN>tK;P$a&SQQ7_ThUJj~CY+AtmBr!^7l~{{SzjBcQDvBUzVH zxsSwiv6?H;kV^4-G1^J*aTPK!Fxr1dQ zBVpu#y$(H%dG@ugSsPTIaM7`FQNM`x;c>_&y9jO>G%4LXx z&?=yJ+8CdiN`QGCM_T5?q??qD@i%JGE%;_DsfoXovGY@44V}slLVFtRE^Vze%{@)Q zVKzL$*s)GY$Cl)ggA)EwjhJ#u=U)$2C;#;<1`rmt;qo?LMglB6&(ovcp)br~Mn ztt(S$CZ6Ur=A`8w$4}xrW$^9G=n{n5Lc=VZes0@wM_RXe0#l)LgWaysBHD>F(FgQNKSk(e6QUtX%3A8h(l84=T=UhAwh>lpp~|Oo9(Q^`=KFN31o7 zS2HL9(B)Vt>PYT0-;7p>6Wp7K3dob(zEmhsyGu6g_Zc|H{{X77uXP*y9}q|O;_^Mh zLWrPnM{k&9Wr^n|x3@LYT?~F3Hu{|v^4#2M(qM?>5r$H8$9`}@t*-<;hSO=A&yW(w zj0_BL4sq0Cpj}5*n*MVHYbCThg0V~%RAGi;k^sr+S~j;ANG7?nw*ei1D7g7sImqvh zc@@P{{EnMDVezVwH2g~?)J!C~VyLI)Dl@m`>-wBmBAQxBYX$5HByq}sjrdl<8P3}D z3!P1`B)OJAHm}S;85}MEKc!)6x3Jvl4=v8oJWQe|Ck_K(bB=c7@->|%+E7R;*-6d4 z3U^7Ug|*Y>WsctMvW}<=5Kr)t(fY+$$#lUs$sBo88Tqgjo-hamkTIS**4?GDrJPdU%CZSxbM5{U)rmcFykqNIG@!Lt zG3Ii2PR0ze_-1V)SQ0||w0B9pGD9>><2VFu{JkqzPlh;jZT8Buz&A)+AioWU85ksIuQen#ms->!{{T>8k8HbPkx-*3>~gqnNj#o{ zwN)b0=Gek?Wv?UDEj(AHLp%|^!Jbzb5JZ4DBOoc~w;PXd!o6v(ZLeO&#^o1wK#ey7 zNj}5Sde@n0niYk$*AT3S4yA@N5rEps&Ub^?KaCMy>3RmV`nQJQ`(&UkxDLcIm;zV= zf7u+7T=i)}uke+Qnl)!he)Zh+Jx5QT3&n!aN#`-h2j);taoYn2y;!-P>dNHG(X@`N zbBqzRE=e6dIrpjjIjL&;t;$^Lad|B-&9EL6o`93--m3V6OogV0PlDvetsyc?xQ(mT zkJHw;pt-6lOzo{dXHHdDsY2&o@buS_%RISwlOb`O5&Zo)tjYBx)u%BlHMvY24jK9o z4+rV=uRieZnWDVI#J1NSWA5^p6O56Ntg3pe4oAOQ>#i@+As6;G>Sip+WF!X2@(O_bCQHT zm5r&xo_^ZqM~iN3u8d$@n|GDbLCyw8Bacp`{VScc(>y_{Y7p66JPL~&EK(}A`B~c- zbCMU504M8PI+l^Ac!Woz>oH8Qu`?vmU@%;5;g1{<(z7%@3LP@adw3psZCTM}l35fS zsU>q4a4>pwKZSHsoMTSO>T_17DO9^!6}5e9U54iEwOuCjRX~Oq<%xor*#_1pIoyDN z0LMYnondvN+Nnr&D6VF`4zj8y)`?UA#I8;{{JlME)NJ*gUQH6}&q!E&n^7Yfoq~j1 z5_mlG+akVt@P~(9(^I&(uxm>sB2O-6>md0~)^U}{~1m*0*#cv#hqsxGZ z1_LQ#GD?s!o|R5*BU8GNwdJZh-J>E;7Iw-3!~DEt52i;I(m_3qwx0!tr3{T2jQNHo z87^=#!HCH9%@yl5lo0Ur5^iRN_48WkX6isDh_m5C554Sp&hDUBMd4qGKMO8?8fu;p z@zO1r!?P=lu;0vXt}-`{g9jjvmFK`;Uf97MqY6yj1~d1aC-Ak1&4;NZp~}GjI%1!mn>(@I!LB1AuXX*0A(Xi!u0H z!}_0u?dBzfBFule>laQNv|lZMvV_D=`+>d!~Gj%#G{~_PYuL5auv{Jijq$N_8(DOcG|SMt+baOaB1XaJNDr>AH9rVbo@D} z{>s{YppwOuNIr7qR1yi#BOLNi*16)8FBiSemwBZnwU0a2v{%w^f3+f+XAv^WqI|S_ zgJ5Mi+z9!4_sv6~c$ZGKZAL9x;wutl!a|71RV3u#G3dD-oL5z0b9v%DaWv~?@=3ON zLl6-e00D_CMmali*0^@DZ9?Wqns%1bcK|CYF)qI@bIHd)JYJl7Fc}raE!&5C9pUlyMbPZ;@=Nw&_KFphhs?QI}pUHfsoG=toQ>-dx@Zp zo>^TLSj6g8{!mU4NCTcnrDb@l!rGC%2I_tL-{NzZiITFxuE3dk&5B1K;UZMX!l2^_$z3lxlNZLb6;eZHUq$ z+d)ura58wtYpp0LMp1gMn)mK`(p4I6scJ0`HkAI?Sk^QRPFYM?N+&aC%EYc)} zztx~Q&U4A_+N@vr$59)mjm*XtERQJ8H+=s9FylEVn#gMzbZtt?NrW~=V2G^XByEDk z?l>KXKy#Y2;yZ8bsbtmc=8I%ZP{^&7+ToaS$-o&I=LZ!NqMVkRJ&u}qq~h%@R`xqa z@m8xO53NFmArRVxuHC!2!u08yz?%C`Gb+b-=ECX2vh4+=ImpgP!8MNuiF98QY0Ii> zHx9Q~a^dhY6ht^U9A_9O)|;l!qFHIv$9HPidTr#QIHzr!(qp(Xx{MSXmncp+J?kZd zP`b6OX$*fli@yH=)}+^(bf0avwY>RbDscN*k(o|#7<4B*9CW5M@wt0@pu#Q@RgU5} zbQ#AdG}9!iZ7nWtq@7o6NLxK{N1*!WwMp>2t`?>6cFG7t0te$XpgtjA#6c;yf{}Pon%#vb5IcX>FiH z*yL`+XsiG$=sH(Nd4Ho^X|ZbdGXDDbDVj3FdYzfZ8=Pm1*E0p3hNXKUwVcOu5c}W; zV7bF!5;KoZyw|Bh50X%t($@a~f_T`fv6VQX9Fi`FM zj%%a3)fNcsEwsD&?_iB(h6v?gJeK+tk>&0yfYBZx|z5NU-Rg~+=Ic;xJ=Zq|7 z)nd%nrq<*va_wxPDnN8NBcl#Sv92ofN1sW#Q8difSNBUT!M6FpP%)4OIUJ8_>~#yB zTUoiW(X}a9-61x@S(`3`6~aPte}z981+%NWg>TTr?m>3)lrvMRw$6WJKPI9D_ zR>sq(3i5p0_doyA{O^J%`*Q`EVU5_~pMW;6OrN3rY1&2ncd-4AVq|FN+zA~B;A1_H zT8jHmG6c9hJMPMpoB`7Sdedy=Flvo;bfP~q1g_Gc8~_JCqniBj+E8t7e%BkuqEBP4 zFx@@r+b9e9XRT*LuQJ7P94Y5IfD{knCyr0I1pR6Y+mi*%vW$>Q;1Dt}G1uQXu7VgE z(@c))coig&0fqh%f&B5$*0~*`lajs8)y*k22WuTv7aFwMxup>8c3kF&*H)LuIAEn1(bp@xP~%+ zwU7Y$NcR0}%C5E0^=PMUO#ApRt_$4)s#ty1IL1#y?^zbMQ`l)|QPkvB`$IBD>PFC1 z4cv9(u1|AX`i1?q&D1g84=xvfnRD}G@;h_rO>^ES)NH)aEFvXyj5k6_01s@M(u$O= z2DdY;;~#xJi>oJxq`4QjVPr_j3n5~JC{_T0oMU&)2^`{=`)5{rI4rdF62UW+22YqO zXXas?V|QK$TEvU{Ci?qKgI2d&i+czC3v(H2M^r|{lzNx55B)8y40hJ<8D>zlp@dL1}y)ZML zmCJ~dl-0IpRS3A#Zd;=_N?$l?mnBf9)cH#g7k@kvoaC0gN{pNAFWtV3N^G5{gphG40&If zaoGEhttoQB-cNF1RJ~~8^Hj8u zC>f1cXjfh222=M=IXOO+sr|2J+I8KAr<9Oer^yHhca(Ao_b2@ETy)S$YdoGC@jOf> zyF?JrDFc!B06n9|cX6D7(zc}elTt@LXsEQ}X|?r^q5g;Fhn+wu6?ZP&@DFX=5_<89 z>=t>3p8i=YBC`er0p??cz#J}X&b0jlQ`7at(xq06TRGZ*mQ_q;vd0~GVT$zlBR4u+ zkVac_7RwL3Pq%93#HhkaM^mc{DNZfO$kNP>e;w{rOr*xgg(P5P;BY-L?OkhWnnlFx zBB|Vt?i>z7H_A%>0|ynEbpuUdCDfyJ!1>f7g&-)vL!PIONuj9X8XrN+ z6Z9wXu30wkBzdXrVDSc=EhZo-&nwj6{$0D& zQhb#Z=2c5hoS_52+f=z|(id2sNDIfn8CInSXtWB%kug0&;r~mnN~7TKh!HWigUFTg7PRw_b9LPs&N@ zh8e)e>s!&MB>ksPyvGq$HSCtGW~t%Xtgb{UvUj$fmRQ&C2MPvr>?>;LPS)-%+V(p@u><9o0D$Z`Ba@8r&#hqFX_r=0iEfbF z2+|;myO=IJjFuzR^Yq1a+H2_Zuh<>#C-W5H5V1l)$tu0^&Q2?qwMRKQCx4OKLJAR4 zwT=f((~8|RPOEP$tP1bQEI2?ea6Jge;wz`o zAZE5~kl>0M8O(@WNDWN{-xsF=8X<$)ZqR3Pmh_{pMG z8;icfg*2qQn1@n^SR+XzD}X@`0~{W_cEGAymY-v&h@yc6_NRw@;Gn?ZW7G<*tKVpL zlgn?TvAG4lK*MW-GNh{U)BgakS=M)Y+v%~-rd*lrjI4|vHA1p(7#UH{cscZ?8ZYBo z8cMSGC8?{Wh;-|ltp`PkTGZlv;DERQ9;fleL11<1ucv8YM2<25EuLc^F=6k=BNeOR z?Kf4`W%Km?FuE~2@-PsE=lHNNeF+}a=(VdUJi8*s2ii`?9D|+|<2;_(;O3OCcgn6f zG}7jFGBwQy!#*Lpiq%?2HXk^_W>AtH%m&`v9uFA;tLs*l8h)~nX|ps|J6dF)Xe@v( zZ~2&t;|9Y=_MILWzEPkyU={u;8KRq0UcAZNG;e&qOxz%Pqrahj!e`xhH~80CcU- z28L%&ueG zpDei~?eD+@@mhL4jgN|^eJb%Gh+INYu_1iKz$Af>l<)^`wW_kT=CtZy`Q>;)>(KL) z{jYs6y0}zX=GyVe2JbP4-u>c}&KIw}d4lRN=vw@`#+Nj(-lWSLBuYaN+!c{n;HfPv!NV_ z$U7Ym2caO>tB1tKE>51R-iM2dz|N#$8qUu8^)a>GbHuk0ofpJ5-)x5Yyx8HDd0ddH z$Z^mX0ATf}n=Nwc!SCK1XoPE-EhZu~e=MrWw;jpq2S80<@fnxIas8)Gie1IGd2oTb zN*scn!31>gflSaf$?P?yNN!ZymSqCrOo2-hPJ89I5Krbftz})#38b#KMs#pdp*btJ z7J3Ga@H0cvbX`NlcZ~5y@%iB*V(T9{0dx0&{zAEHEjvtxO+wCVo!@6j?ycqBg)Xc? z44=k$z#g8JvcDGmPoQa6{tdskmh!=OrKG_z{*KM^K1Vp)ka+E0b8|hGp>ZtsixGlG z5XF`zNaW|09rM5NlW7A&TEr)TRBNK^gU~;A%QfnW2BeJps7XA9nPT;Xo)s86~mKbH!^~Dk?myU&7v`VVkJu zDQ)Ym{SG#33r$~6x6`#4BQ60u5v>UqHFirbdnI}KJ#O-l(Zahw$75LY0K`jOw>hf;A?Pvl%_LQ=b1bvZ3t zOk2?KPaanYvY-H+r-mauXCAef-UzeMY$R_B-br!>Bv5gjr#yWRTI{B`)LmZm!a*y! z+pb5i;wsIp#QJ^F)Zqdtq{w#w4CHV|JCHddoG~+s<%{_WrVlEji9H56be+CPUssIKWor0p7dc08q4oi`~| z^k@Im{P&vj^2%XzY~mSJ*dsUI`GEtETz(a;;ndOI-%_{n4D7SCZzK-?05CFR01@g( z%k5l6^4v+QM{>l3L4ZllTBXyj=GJ2~TwzA?nM0mIAoJg)etRlji zOu$U=+gvNFIaY2y?$gg&=-619#1>Oc<%AhBk+`wyeKF}+8pftAVT?$INoIYh7o6wm z%}aJ1K@;3Y%HcNt?DO|{8Ll@L(&p0VdYX%uD!WHtXQ^4vr%ob82!Vu)!hiuSpIq@# zcyC<$KBFMjCHp<3(d|h9+|1y0{)6+Zmebcw(e3Aj-dS9TjA#8?sKGfSl54l{_KoLX zCB4nMAV_@D-lX>c^y|fPRg@za*`0LbQgU4yC^{wO?00PCmL*&bq%rl$><@k`F5^IX zH8i_~yF7^V81uq}9Y{P3b6qsT-U7uWC1xi(d#EH}XOHo&E=${~yxY53Rgy$_Hm(aP zIUJ7pr%B1|?1`%g$8~qPE{|lF7klFl?ndsI9P#&$u;>OWvcA-fnnx3r-xw$q@wYtV zj!4g1@jv~Byvj(AWy z`qb99GnBSSDYl`@9m~2Fv0~H7Wp_M~3xrc1(en9#fHxD23?9Eq?et9+U2fz1I!G7^ zRg_9W3a+3X*&T8?$GunhiJ<73Mz0mti9CB>KWSKjbXGt}1e}H3NFL->ZwUNH8fE_3 zhUJ4S>e(4m2pfICu1P`Ek3BSKr^xM5oDVmBYscq;j#k3_#-}vigEDeQPhnTK1Qq{{U{@ z&tSKf?G_;?f~>~?=YxaP_swa0-AP`;=4pGZ=LV>6?|#azk*PmEPizx_I&QB;x3#!? ze=(yi5{=Aw0k?jJyu$j^LVpXJTX-do`G{$5*@0XPpOHO#eLB~zXga-(uY1QfM+SeY;^Xnu03(qVKtE` zv5&gz)O6$@deG4S0JH3Er@Xk{8sHKG4vmhVOxK@z(T!qguQC#BHucG156ib1>FHcI zbz5@Q$8$=WvRjzi+8E>-f?O@RX6FQqVB~rNGuzs^9~bIc?y0TY-O9HS#V3{aX1ILs zEC6DIqQ(YJI5q0h>R%5uh;CQL#7Z6#R4`{MMtD1V6P`2q*Nt21+J}h+q?+jy>Gr@n zLKu=`QGvJ)!#v}!(!H!2l7~B5e_I|NHO5sr6W99O^v?|3XtLT!_l2(H-?B*+$OEBl zdK`Y3&2$N70+JdgiY5jV>!|XtYxtv0Qx0k){(2+d<@v?jxQ$ zVv@!i&pyyZCHquPOq-QfEN7tOJvxK=*A+-cSC!7%RV5UoW7CrCL#0V1q|P5X>JB>N zZ_}lD&F6})>#*2wwOh-nuQg z)f$poM`Mz7;QlSf*lPODhLDSUC?~bH>JQ#xI+Kty`O_lQKeQziY8OdqxP#@Kl~CO> zPI;?0*3#-W;Avz=lOLEKtS~WwoR3=MHH|jjNQRqbb2-!<%n(5kQtc)I4bwbxlb$in zZAJ>S<=Dc!odwLbI{g#IJ{|Cnj-uA}Ic>x+t1Ly&4nSuHQ(L~&v;whd(oE7sn|75_cORFWA7j#?ZD}X5pHG31ERuzDuoJaG zK4LaFIlwi|?VMDo#aVSbmK{%)yq(`dYt35vMv6@+vGP>;h7={zHC@Lepuq3?RXaNi zZBulR-HUBWSQ|i_m1IH=@MUfSkrC>TZ?Oz5hIA3KkIRkyW9Xj z0Y`~+dz;Hx681xfJMy^YLvTSIIT-h=x?Rd^GFwM+B3i*RnId@xBYnBZ=efo!T)bQS zn|8N~O~VD-kCgq;4_x%ca4YndCFY9IERo@wWr+5zcu%Ya;Gg z?O*MnhRG?x8;1Tj5CJ@OIOe(=SboQMd!^sp1&$dRNCP0U_86{a!cPmwsa%f~IY8|3 zMy|p=ryLQ;>JJCjx1|RuGoKM!G~%z+-ZqnJt1C31VMrijDjNl{ozIqnTnx$y;= z@ZOU>uaxEz;$JO>@hanf^gl2wouea>(uhW)PTK^kLABAG z>U(?C8qAYhq_(-(urBx7-!})huQiY_w-vb{1ylh-{p2SZ1Y@3+qo`@uSNgY~Dk-%X zU`Zh03@`Qfu2mHoUPo(_lx-6_eP&#JjZ{0i2j%C69sN1$=~-8I_S(LYcN8*7Eb`(( zxqje{mj`xnmI}m>G1|9ow6?XnhG=7Ck({tOCvxl{_rd1}*NVlqxwf^CKvU)e%i2NP zw30yYfs#+-T{PtzUI^r?2}%3!LlSL6>=w^=Z0i>A42w9)A%WZg>V8mj?rD~qo`HXV z_N_B&!y7L#OZ((F1xhH!0X!e3JJNW=TZz0sVWrP#q7dwEq(3yJi(`St1~Jsvl*!>G zhs?XuFHOAnf<}p1R22e1z%Db~WDMkXuU8LBoT1H8*`78kwOG%Vnz~#60Kh#C&hN)M zY>lg0IfCPJM)AoJ-Q}^~2~*G#MMbLKwX;KWtM7&HA)VcoH-PZrSvII0jzRqC{v`39 zwc=QH%ZxjMMtB_u0Cu9^S2pT(ySv7=x(e+Q$A$r&wz6TfxG*@u z9qQ8A$}8plY-aDOjGFcSw>?k6z8LV%ui#q`5G1z(>f&EE-r^bycq0h^?LCX?3=COEZ3XY^_c=Ye-@-?T4 z=BLS0HkV%Bzcb7={U=bXoA7TwrvC}+ju4%CNi(Hu6 z&l}4Mfx(EnLrwETtGU?fqyf zRT@#1ShW8Dt;Dv{W()Q!86Io40z^_kJ9C0m_r^vuT?MtlmKU(PQ*!XcNc%}CJWLNH zC^%(o_2(F@UmJ)mwL5Kl!T|pOqNBXA$H@_}1e^|mNF9A^7VBJ35?os9F+()7#17dN z2qPUw9f<2v=}Kugv-{IJDdK6y>MqalXz4W18{FEb+4m=xF!Hw(o>Y<3@Z&YgYntqm z>h``IS23HG+LJFkB;#o#xXv;?GhI!Dx_yq3a`9WFZFD|mWdw)LLk#i{9c#?*1+Jaq z9VcG7joKI`25o@1%or2LY>s}lSXy-5MR0U>!LI2j<|`d3xsJzr1NFGjbc!RBlj zQ8&uO=b^_=DVLX)G1@^q%CQvy>>Ql&&IhJ>r$#=>^HYxh0GLiHta)on_Ur0@|J3}@ zx?8K6(hWJmGLjUNj0NgVTe7vb(`}V4zT`(Gjz(FJ&7L{Qtt5dg?&N@gWDB(jCxP5{ zsOOPMj@*u093BSl-1HpxHTnCf-JrHVX^kYWQSNW)Taw`15WZnMf#>&YjAy?j`uDA` zC9WfRq!|O#l6lStY}RI%u3pKb39Xz%95Xa)oP6W}SbL6@cw8*HBoPPlXO>c^V;h0X z{{R^5G0z{3dG#YMZBJ5^qs#8=p{H=pnsfqIb!Tws7+?h>`HxE8w(%g1E@qc>Mnw_E zp-Ey?@t?1H%$DCt%H8OC_53o9%8&)?l{54f_r;~4(-2LtI` z>JXG~CT}^;GPDubYI=63XtCVgMq-2yEjkqqfsk-;4?Q~8YH6Bvm8beSB~^nCHs!jX zQ;eRq&}sTzgLpCZD~bHDw}M&nNof-yK~mYlEu81txoGbr)ijo3M&0b71Dx`3dvWdu zG?I4mOrL2PJ9V+4VRk3d)f!P7N4S>Y{o~WI>48;KSijL?xVq5J($SE_WDTr7Z1KRr zsZzp4*(sOoaLpT*kPvVH!N;LI<2B7(>N;Mjef^Q6%RR-jAQH&GCoR=?akzIr-78vD z)UPgvHLEzaPp?CA!^L;eX*XUSzOz|A)?<@%Ze{sgGO%oppQtr-wT+eBGs_&!adj%l zn{nkVIqq_Hg~xuisc$ufoUzLS{_-NM7=XYq;YUBpuHX1qO0vC|RDx9&lT0v(*0i4k2NZ-S-j*DUPEXjdPZlm-kk! zreDhfn}-p+k*QBED8L{T^&`G(R{LCsPP$lh_f&!6D5QP;{)3EktO!guH!QbaYQL6V z1&?VaR6lxB{jrj9*mS9+pD(_2!)z`Z;szNiQw4}U7~`fZw(!-5 zm7_*O3wK6nQYZWSNc;E$XdjPS@y$=fTK@ovH7Kknw{J5FT2ZtOq=v{<=clk9zW%9W zJ+0Q5Z0}ZCnqor6rw{V=+{1teUw+lYiG-mD#z&!soM$IEohn|gouQjq6{ah@5_HA~ zU;hAAau=GJlTVUuG65v<;GFThaltv`J4ZOJ&3WOn&|+r_h*-pmj9HG{azHsz>7PpB z&|Xf_+iBsNLI=oLZVbm60k8=@Ks@kk3_T?M=8Z8Gt?s5CAhMPOwAB2&Vl@^dB!EpL zM;Yac@Kc-v$olhHnlkE^O)d45X_-iZXxrp}FM{D0k@F5RPeN*WEkCm(x3y-KH7QQn zOp2vc7x`6ObQ*G;|)M=a4m z4${ONf%2|#kWVK()>5S!mR8iL*OfQSo`~EUk-oT0#3g0`oup-Vf~p7}oyXFueXePB z7<6eMoHQYXzuiX21bp9g@OT40^~PwL#m=x={&`>tX2=pCrZYD4{5a5KCO9 zQTODqBa9sO#{g4o^xa2GvShzd=4LE>vPe5d;u~)m0ZH`ZHJA2=y^1?$I~=iMWBFHU z8~~^0E$GF%X1WwS%z6Ivt<%^`FPSQZR8qqLaoYzNA+yuAJ!&hojOup!&4yvTwjxDj z!32T`1dc!>f^%7SSK8xwCg`NCutyRoF`t*8oP&eM2anX(FK?^fscUtRMc{#%#wCT{3y+}QXtzI#;I*W6oy|K8QO*Pa%zL5h0cWoQb%-ex2(}f)f;=kG@e@3<39k zqPgp$EsI?XjIsqo8*bQ84hb9{ow|M%r8=`$gWSe+Y0A@%#-K3VK$g)Jwp2rwhCPA1 z?k$g)ocIYMfdgi*+@ekT;qjy)17bjw`BXa<8)ZsuJ^WL$mN_(5qtqqZ-KAme7$KTM?b!TAHHxlfTVyh4?J*vs~5xa$pwvo~i zDgn8-0^cr2BObsH%CxMt`LFd?f3rzu&?|&7uH?YaA&ySt$o2QEnv_zLHBK^aDCRCa zJ9VQNUge$@$&q7oyu;5!kCZkECm9*5z9Q50D_eGZcJi(6wwUD$^ZbYJqZ5u#-#?Xf zVeOLP9_rzYa)JPpBo^z)Jmk>!cURXjX=+uYFXhHELIB4Y_8s$zO1zU&WjYb%r!Ba7 zS>Jm`m?SR&S&sx{ZtdymT`s*Ip%TGr@)FJ+V?}IjX2(8_f-|?jrE!sJ-Z9heQ%REK zT*h~9|C>&`sOW9#3=TXt(1`@p_x@!PBI7| zhzB_5*A>-61)NtS`)!gomOSx*2*=6>+>fVYUVko%R`G9IVq}gn7-R~ehA_ThInFQ$ z_Z(K8-1>HtXe0rMj3N@bDy(=>&rYP{+O(}0&81JN6lXeV%C5-TOL*A2%QB;`S$P@x zaru$yTNf9XOwrxlD0h<>Y~VTSPd~_Xu3q0$hDG}nk%X2a2*YpP^6n)`QS#%Q9&mfp zA9ep>ES%R0Nabr|6CcookoEnP_Kr(QC&qtx`xR_Qg3J{XZUm@rj`%1>fF z>&uefRk@lQnAP3BL7oA|dgni1rEffMvO9?RWn7Y{q4fHG6_Kq?6fu3GT!)bEY#efN z(+BgcsH=OZ+OEFyF=e(-J>OD{%Msoa3JDH#^5@VTb*^^%R7H&Tn{QR8Q)6D&d{b+u!Dk?j4LmRn1g<9BK^z0MaxtC`dB-)(UuypV+faYP zHETSRTf;LYv&aG@Y@i-kXCnmXBiM0S`fIMS<=9`JHZYAMEA>&he5W|;(1slaWc`m< zk6T-<4^C-fXJ(c-hDlJWyMkw)4+IXi-%gTOQqiqXGOi+8a%!H9ZqHbk;eU$ti%WF7 zTPfr+d9h0YWo#dm1_f{cKaVxbYZe-phOed4wGhzV+X)1$T*|z!RA2^koB_cV&}e=% z@n?tR5yOWuhC%j+WXIkoJ3%@5d*cTc#dxj>wS6A%#4*W>yQh#5oaR`{7Uvk`?&^5R z^sH!mM=Mopl-j=}Vgcwg7tG~JK5KpE3_7;AdLG&2Ww)B%B$XLkbf^jP!Q25mHs_Aj zt0ujqS((emAzLbXJ&kqE#`m_KM=cdM3rXwdauVrUmA0?;b2pP5 zkgdFK20X++GP4kVaOJYzyn0t%c_yWxY2Vrg0H{%S4B!U?2WscI_4?O6{hw_moH1IN z1Xjfqvp!GE#3QIZ6>tX8*j1AZ+QzUfd`ByfBGtZ50!fx2xESOG`kJXtw|PAl`WY-b zTQ5y?D&Fc#Ewlv+6ewOUdCMQV+;Dj5O_q5rG}CZf&0VV@R0M@)Y;&G+2d5Rwc((gW z)3t{1=8Dn?*8(PNe67@c$Ef62O`|QhhqWkT*E4dmD0T?=TzjzV$jJ7ql@%DNTYiF$ zCC+k+duekEU6)SOp-=4AaI2l%%1IVY`0 zWpiVx5e1Y_8>$6u`1y`G+rZ=NQt7rf*U4{dbW$l1iu~gMbbaX)Z}$Lr6u* z`$)ad|JD50Th~iS@8n<{COTwf@-v^xwyrL2?Jpsv^RPjJ zvSo$?6P^N|eGV&E#CAg7>Rk<^+cly@k;<&Btr*EU!R5YSdGxP7RF^fTk5yN0H-jr& zPo`fib1MXwj0VWu1AhtVe!kUC#=;b{xYjOS+@i}MNg0Z>DIatWe@gFsJ>lDXX)Yhc z(0=hD0?01VsN5C=5B3gzrm%1PF=cXMy4|`sj`F7r3ui0Vp;m%?iRfwUCnTyhscHjf zXJZ(E`9a13=uUn8>!|SRTm9QdF@qxRWgCwNk+-LO^H?{pV5ZHXMSS5;4=iHKB8JBuHKqeUqGm;Fj7B zRZa#v^XXi^vMzOfPAl2u^Gqa_iv$E9ZQgk6jsW+~YlfAb+tBC5LCIP>+}rUV#7#E$ z!E0-Nsvf}p&YQq#G!!9Vh;6NeVp#)%IiiX-; z^2~5g0=+6Tj9}FnTl(mESc*9S(m%7T^!ame9sYTa7v&!|8S(QH z#Amlk<+VGg^sf%sUtDYHdLTt-jiOnQ7tijtkV!GA{w_GrBNbo7J}=g_%`z_u+uDnp zp)%abc`JGG$r@!;vbG30ASm@6DK(8J#6{)1@dcq4Z6TGK0EQtU8x(*EJq`#t=QXTX zEuBy6?>S}fJ5%%{(w<#sO^x)+w3f-kLZrq7k~bSj7zGsMe8(IN3iM4j!^HQtv+D6$ ztWnvbMjACO^J5t&0G#9!IT*!ox;@6PsB4l5boj3p7!kaXzE_fpyH&!DGr%XFN#eI9 z*V{*hbiER3p@rp%q*ovk_{)vCJMehO;~391&546;#s_{HrIM7$;FDao)MnIKW0@^& z*<7$Jh_Za4)l_u{zc}R9jQRxn4g3}#YL4UW7Q#hxxd3yyIQ2aaGuP6sSn8HuAn^iT zYEL3S3q>Ha#AKqT1{jl`+4aVFu5azJ>0rjLLaTWw;CX}qIp{ZT0N@;BImKhFmoHO& z6uG(`rQV0F=sJuVX0&|!c;OSpADOvSObN+V``I472Li84u4(ZnpY}-9rqyHjPdzc7 ze?QKv+Z(c}D?#P#1cS*aaUA0C4f*yNGBYRt!U^rUvH8v7BH5QPQ@ac zLzM~_ZaB_K9W(y`)~#loZFFz#cydkR;^}k?xnMXQ?&W*rAUq$k~TYv zhWpv=-+_bLp|+dC6KZaJB$sme~3k+SDP)MJL#_ggjtC?U4{=boVCb6CSy z)T{v0wRjdQw;56X$v6yDWPws!T-!ui6DrJCYZJF<1oa&EQ`~W0Rc9$X$sW}O2&+Mp zUK?0vc<;)UEOxT}?C?Voo^k#)UQg{CW@&Baj^Y%IO1oIAE(pmWf$RSO*QAo)OT1Z3 z*C_2z zQfLV^zAmRQs|4MGI&T{nMkDDO$1Y@mwhNcqLt!~Vy z_VPPol+3H({^4|LH-%E>DGDh1$)I`T0*C{cAT|SS~j$=vel~RhX_^1z>Uy zvBBVUshdT&h8WrzSiFN0t}+)aanB<-I5^;St9r+T;?>X??#v+$4m?;`{;BaEC3W7{Lrod>m%SdE`E+_cPzrHh!= zqLEYyNOcOt{o;dZBO|dV6^AYD`diBq!pN)=BR1iHO72{Gk~*KKwOd_3S=2ON?JXG^ zcw%j+?7uG@ZOVh|+PV1SxYJ{jMGVo;AeoeH+r2u!=L2Yc8a!os7M=6qUIPd9>olSNsl8?JL zbB)r3z3OV$>TP(OYEp%JZ{J6FrBZ8tjLf^3bKeS14_sHD9TxXomg`D`Qi{<;Ei-w} ztCyAV*zcT<)widnm!@Aw1(;Kr8e*)(jE)-vraI>xjdB{kgJ-K;`I@D&fp5Rb1pKNW z=EuvNjE~m0!rC6~?7yyuE;pKMnJd4a=4<$y!~QJMSNls}NbiwWIV8BYb$kWDVYiIu z8Of~uR%^(vE@ZQRvFZ1-7csCKRNSY(*-c zlnuEcF#wJSTvw=Sz8RVwHd2#EG+RKDHaU}X4Wo}#A5U8As?|9tzsTUCrB*VUe=F)^ zKa*=D7UBr!$?}i?uM_Y0U4jhy_)YlBy2{Phrxp9}jA_ z`W@ZQyA16h2{pSZJd`^~Y<#Lm2e*3WG%YUGyhD4XYs(}eYjqapLxUa0?YPf8bI)EX zsYVuaz3upgT9p$~anb$+%O06J+-lZlJyXi&Xs1v%B!e6P2i@ZYeg?2D?i$7c6^>Rz zKM3Tqs$l%RIO&i<=DiO809Dj2lH*6z7C6W%vpQokJbWMpdwvH!`cyv!?d&{2Z|v>> zn)l6Fj_$ZR!c-nry19U7`r!fiH}s9Pt_h9XCrd%$@`?Y-ofZU z`t`pYjPUu+6cL5aa5&@qn$-B4;mtQnyNAqW5^52W@vcIlEyfS7I@cj&cX`(1d@9F>1Y-dA3xoOB!qlkl zrESmG=~78@r+X4v+{JeZw6TPVRjaWz_0? zJk4_iHuAP43=0B!T6Li;I0sWm0jPT@JHAcem9aQV6@D!vf$i0~s6<_|;(ggx99-IEuXCvcLd{ zI_@~@*MKV?ZEE7$19u{DdpBX6DZuJ+*E#LlyFC+DFQu)-P9_=5k>KS=Uza=(c*jqr zVOBDQ=9TZE)kbieRNJ++JugX;#_vpxw?4 zle8RH%~y6$a~jH*Ar=?&0=LXduOkQidsn2`>$l!=+FSq$R8zEMk&KRq9QXZc<7q}p zGLJ$qH6o%I{gcoet2XW8c&u_%_t*u?9 znl%<|ZIVPN;fXn5x%qg{I6s|pHX4roJ}83z@fV>vIR_l$&~f#y2u1R?j_FG7%;~Q! zV3Ng}D8QBS45aW!_eZBS<@XGlJ>)lO16;!#PyVFkgp6^P&H=_c9-_S#Td%X}?;XG* zK*|n18`Bk?r|KF)thS9Bha|E|C^*RAh4no2>zdw#oNn!Nmk|ihspJyq+II7BVPu)Y zu~Y?df)3IB-bQc_2E7vZ#oFG1WBrHZLi0(Oe8P9dwZ2Wkeq6B}0!})gYR124V4Gv$ znSncc{oG{a`hHc7Xxe?`7aB&XERo!%-z6j3M6ZmX!0Cc=N#mYt)Pr+;($w;+Q;c+u zaQO_gXwYf;+c@wTWQEVF9xgMTlj?Q5^1;0vPi$an`$g^bl?CAuW$abH6^6B zv#d7q$i=t6F|Z_*9Pz;i9RUDWG}V*0Q?d<7tL~2C-(8AFDn9cw2jDUh#tsL5pz=m> zRrJpk-*`8~cQ=|vmA10eMX@~W?2Hke*in;#)qC{MdgiUJtS#DS@);v?5;2jGa=0u9 zBOvnF>s_9YEs&UB>C%WNwXD6j-&!=nlmls;h z`i|J7b1bU-DPXwI9C6ne#%rChnh8L;jz|oUD@=xVV+d<0 zsk?lvQ@(>tv6N}^$nw0-s*$v%kd6*Ej)OgGLiT?R_=idR4W+d3T-z}FQ?j44x+%f| zf^plNcILJv(X`n#>szl3G?HG<1Tw&cxN?iQkh#Wl*Ek-v&CPeH+gz+#Lj;;c!oEi0 z!2QKV7|wVZ9ChZji{@#ks_t{Rq?+jZ9FC3gI^V;IFNbcHTX}|7HdQ3>aq{4Iv!8U|_J%BPWl>x-mGOc-bpIUCvAvUZ~B=_xWs9 zwAH8kX@*tu|g8}k{JdQE9lhdtsF+HuZjqVt3;X@ICPJf7=fR6aCQ%tvL zFXoxuTkVpmjh_e^PXMmq2~d5BuHx1RZcxQ38{t;p$UBHXFHWB?<6dSfeUEPkwv5wX zv1%$mwItmM$wpNeC#b>pADwdA&CZ)|r5GV+gob67PD)CfvVqsJ8O8=HZXFj)d*#)# z7D&*l0LLT(GIsPW^ck*e#kzgP&5>#6XqP-OA1iL?7<31AIpVUQyqNK!sTG$2+mpj@?aW>N`ctvC#@qa*~gK%&?wJ!aKMl zF`~k#!#K+f{KR8|d-~$1X*{Sx+OTGI;1hs7&w8w-6t#*5nr2~pBS~BQ> zl_Z96Pa{8c9_lM{=J~DBoJtl%Ods}oZe#j&tXLqw)a;e#wDJ<;4vgm=I)j7HY>)A- zufel;ESK~y}KNcsN)p&zjK|^HLHTR z7VRNd*oGXa0fFn!KECw(m@lW(&9V_K&f)Xz+A@Dkp4B|?M`5SK;rrD#?WZva&T!1R z!DS;mv&P(<@ky-eT0CW~bV-fHuz_9Ju_Qky8xK}o8d8V7`?PBcw}q-bNW3?yYPu$- zi={e1w(ia%lPweP;e#(gNe9sM^r{-9iFT2s&@Y~@&y-TQ^A30iKQ2vM*N28Jqqn$) z&zT_GxyxXXK3&79Jbev8X{y~^OfEGQZM#b|h3qgC8mqVOq$L!agJg+sEN-mm2bSBq z{qCFt#sRJ)T(OT^yGuiKEj*~%)w#iuK47P=3jvOp&MUH#>h5?KUy1tt%H!@$zBBU^(gIX-*K_%S|Ss9N6ka-!$IH+$l zEn3f1X4A}9(jjp%jkhM>l;J&>Br*1`*i*c1RP$@qwE3v@Fe16WH*;9&5=9g@j>Szw+CymSKg9Gf*5?KsK_<6C-sNP7IV6A!lyZ-*fswE zi<3 zt1C#fvA#=t{XXssh^}HP%hj;o!t2?GWB7{CxwLIRS9^I_sxeah0D%B;+Qu;kNEZ=EMdyTTRQby)-Z<&w%61!K!# z`U=%Sw5iiyB0Z#ICswQVXaCpyys(l>nBHm59fmHpPf~pa zMR}*(+lz={!>q*=N)OBOHhy1XGgdCvYkfRTfgDo;szx#hJ+ssK;=U=_y&mW5ak@{L zYL&hyQW=gmh#eqJ06?3?%a`{z)@$Vi>WT*w^05-P!F!v z#~sf#R>l6tWtLO8eK0xbKMKOjRTHOH)TDM2K*?lot{Zbm+$$fLfCq0%=X8m0pt=nN zixjL#+k#J)K^Z-UdV5r`>P%nGC9)K%j=1O4`qSDgt1-Ks?ztr3;2xg%7&V+zigA5S zX47g*p_8iXvFKM%tj%!9V;}@W$W=U*85zhuI(pRle3K@jCEfc!n|=g=g5)UR50nwx z_4Th?@K=Pq3*!hpyZHXucG1YI9HByqa7fw-$Q%Q^*w>a>+1=gPEybh~&KxK%6o}Q7 zcYJ`L4scJsX&TX#ToSWdKhWfKry29f>AL++##fhR=Jh5 zomP0Q(UT~sQ3hLlY8N>6+sFc;(j6qWdzgVL;40;~80yuK`c>Voqc)}H1(6gY6g;V6 z^EPsMJv}R$ov!01cGOZzGlDz4JIWeY{7bg&QMiIe{I?h*Ir@s)xr*}11)`Env5@=D z9yZU+tU8Q?k?JeWG&_ct^jVqGMNmVKrCEX;t2Y=Yk}x~^*J{@~)c11ulIBk-Jm}Ph z+|qOaF=oiY#y_Sjo~*w2BfMqum`ur!;s>|VyIU(AKE}e| zS+u!F^JD>m;jq0yP)~aE=(b(o?Y4iIwtn|tT>E|l@U1v5S?7u=6_VXsrrtT^kbN`g zYl5sB>UuP#W2VwT#BKhG}js~P+*V_TRGX^pI%3L!|`0I zg=1Sqm7$H9kT4wd2X{`Voc>g3mr^E#lg{8zAPPeE?hie&)YA4}x=jbQ{p_RJ9j2$R z7~)GwnmD5vY_H$I-~;RRs+z^+w3qQ}aG32%ghdKSXMRaJaZ>6xcQ=i9 zDcc+*F_r%FF$4wLF~`0;Rjd6%%0XzJRMFf--@O?O0b$o^;A9S&_Ts8EIc$vQSDRBV z{_+&Ko-1Nylnnf!?9jv`tpVF?FWg{h1L(%Pdmo=0nCv zT%(K+l$?&_=DO+4FLz^twI?lBre}nCTPO1+JQRzu?Syo6Tat7sp?(z3{Ao4vc2hAF-{e-%6M`d;~2$aUo^1Ea- zvdh5bk2pC!Ijrvzczeg14~T8_tGoE8c|no|i~}1Sl@803%AQ8!fz$(Cv2k)u%Gw@O z=+sW>UsIs9mR$nT<+q*Yf%nhnOP6tQi->^ELvC(z-7)W)(lgCxVPU9Gdn=hHXLb1r zc;&`JZBRiZW2pnRWq4ynn?h@wONWLwk|IM&0oXy>#480PoDe(meR*x2g|)J{nt2Vp zWJn{x!$^8__qLPHz;RsFCY9Cy0N|dT8ZvI}emfnc?;6^^pkml(c5@Psl|dgM-bUsl zzw)Z~b`Y)XH}flPke%qQjN^^RBd>qwRAIWB^7S<9cJeauqVM5%H*Lot0q^+#E3eV!Y`q9<(hj7eWnU>iX&^?IkRNNf9MxJTl~c-%*~v)n5AkM!AmH zPq$dsJ=XI$`C3-%xB;G+AQRNorou}kj?Pc?!mOkugyDjJdz|2BlTcmiHj@3O>N4wy zk~oUQpeZEo7;bi;=XV~t?^{z`)=1^5lpB-Nt2#lZYWhX#zR<3Gi7jE@9D{~nM?`Qy zBm>lg*BHfl#;ox8U&N_rab)Q7NU~hqM*MzX^J5% zoQRC<)^Szb#*JucTtxH8$urKGrKJZ>RL=b;Ax z_QppQ*V$?|SChr3t+U&-F)VUE;sfkqmd4S$aNrSx&o#`QS5y%V9^t}TB#$?h_wgn1K16pxY2 zi@%Z7cjK??P4OnE#vvG0n%;gL8|KId45~6YBcSi?SoY9ra$HGsbm3=^vtW+I-xYxaR~kp=S!A$G_|A$iWz>S;9*eQRv+DOG6py1QkG#~5yLkD&bM zide~=_ai0oMrAlVgkXRP$MBMIj=ATc#V?0eOrvRCBO6sP%drvNCCOZ)9BuS$e+d}P zZ)uuckBT)^i&dCI5`xT8isS+T`G+IrCyL`{xzl9SC63Q5gox%Ss!BI*q#v#iO47E| zE%gm0u2*D<3k7}4vG4A(7VlY(nJ;ycFOKBVy(M`HUxQbG8igCAT&md!-o&L1}TbQkW z*n{Ob&H!hTh#BL6dh=Pvqfed>Q+ZNOJd;;OHGtG~eLwpnS-cl^JCQ)R8=f{NYWZ>x zo31!H81$`aJU^zw{&di`^==8y(gy>t9sAVpcE4+Ac9um@PB|Ix>(h#-CC}RL2AK?- zo%uVCFbFuuWBn=0Qj@shP7qc_3*A27QHJ8vQIE_q5TUV^VmaXB9A~vxP`6g%*nZ`q zAtZ7;lhtw9@J&l{C5AZSmQEXC!knG2kAA+jk9sDz)I799vgt%?l6r<5{JnPf>OHGS zCiJ-zm9EruGf%)S|`IgzXdRI2t1xS$gCY6`qNU@?lhaOaCWs`Zko$uxAg_W~uKO?etq6C5z+Fs*`can4U5DY z9bQCG$`0Io+;kq^wU>Pz%0V=eO32O3O1)I64am>7IqOiT?AZ*`n7iB%A%R3KoLVl&6MHIX5; z@m8B{X#>1ZwpI$LbLYg{fJ_X9+taA*de>r=?)pBboho)|bz38#*7aMcbYCvrkjmhy z?IaM-!Q8#c1HVe)uJnkkqIZ^GwnVXPQsfX))XjR&)F5pE!wAl207- zfCm{Tt#Nm$ac8PWrTB(-kpytdWh8{3+{&T$4{}M!9Zg)+yh*6uL?23o!}9rT$}n9N z;~UbNSX@v0^WD)wWk?%N(P2$UpsR=%m%sk)3$T(v&wp|Iqxm zi%^0aw}>Gzg*YAe0CCsSn>PBi1}`TCISOWS)smO6_cH_491 z@F|gw;kP&#B;a$7bI%>CZW!*beE8KtV6NF?o)i*KKb zE^+XvJ7*yN^){zRB0$1dv|I{diKa53EA5t{9Ee-`VIcy{;U^`oNc_aw8S zTph>;GC|~I1B2h&isn=OT>k*|^%wrnPtrf+EjRoMuA~!&t8GjvN%N)L+_ctSO<8og zRAy1;0-yjeGD!mioOZ6mO3`$US4o=tQHRW#GRmaka(nT`d7Y>HjyC@Q^~JyR8ujlD z{{YAqfA?$6#z8}s$4!q{1vfP%J#BN&Eib&8P}M;%WUi{UT%37`7sTK@p@ z-Vda|`W1QAqPdyr(VOL7rMo{6N1^zp33Y2I?^nu5!nOjZ7|sV%x2fyevo2dkO>0q$ zOP4lw%nC)dmjsNM*U&E~C#c|6FA#so!xzzi^cu&v{{WDlvHt*FkN%4_(;885UWoH& zQc^PUeCqZ|S#5-D*El5)(TV18bM(z#s|{y{7C zU;Uc9E8o8t`=8-h*QTQRQPqd5DaV>cZwbw7Z#;rIUwR1&Gjp}L>BkrZ_N+T=>%Brt zPZ0=0z-ABf5KD<<+XykS*`5aCbDZ;;XLj6U0kTJ42TIysDqEye5c$qj4glD=KQYU4 zGJd~>V_p9M$MxU+c80dC{{Z9u+x`dqjb&9|Q?iq`h;rL4z?RNsRE|j$Gj(ED?&OcI zD#oK@Z)Uum^~onZ5;Kg~et*^#*I$a&5N@pWUYE6b#B0l;Cv6NB;n-yi3Es@-Jz> zNI&#teU)?mt4aR=uJ-=``Y9`q7X?l7$IR-&)N@?V$nhB_xs00=k3K01?gQ?T)O((K z{W4TPAm=&2?rN3S{D-c8>*i1WmaO=@{z{gg{{UTV zfAm6Dbg4#Dv+QYK5jaQPD(K-qvUaq2R6C3%m;$8z-N5922aeSv4M$SBTiNF=EO=FS z{;T9DX%> zU;hA*Qh(P}{{Ya%aPoi0gg^D}fAkSvg(^{$H8^WklxkWht*zSMqd_7^8?ON1pO|uf zoK_ruC$iG@1-R5=F78Zr><&P|!*S|;YTcjweM$cNe=7685r3}Jzw5LA05e(P@bHwJ zS+*w;IKfFBK9O)--d@NWIKe7FIVLj1k?D+&)2B*Zdh#1t)M+SoBw)I^&f}h-^%(U0 zsvSH2K{vlo{h6wsulMBt0Ip;Cnyy9d87iapXv@C4WsUSJ=$Frt;kX^h*iKbnf}rQ0 zTneY+zqQ|4wUvQnxKJN<;=6N#ypFv&6(+y`03(Wj*Cqa9tY3e~N`Lz0AM!QX2q?-D zU9NFXZc&_HdlWC{y1COV=9G-f3drGekaL5{>T{pN70c^T!=PLFGAGR#GRGujhfH(q zI%E8ST|B??39|nHuVMcHp_=D@B6WZI_CNXx*G3vC%|oHhiknoN`jnP0Iu&5V+!4Mu z#xlTU?m5p+_0c`Ht@g)RZXM(}W(q(hnRC~Sl2238uXM#aJi8Vd1{CVDg*H->w zx=#)N0IE;-E`RhBLz9i#?oTS6lU)xygG?>F+Us*ds3`qi9N zVwFah^`bhQSVN^;NRY6cZR8LD$mIIu`d1lybT`Eeeg1E$uD);i2i^Ywy1&Y}E3f$Z zgXlkzu6#W-+idTxHkFaj*`}!scT!HO@lTl|V}pemTy5=x%~n;oi%o({v6$uoqUR)T xVh(>1`d3DOld3_vDE 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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/sky-endless-blue.jpg b/web/assets/gen/sky-endless-blue.jpg new file mode 100644 index 0000000000000000000000000000000000000000..daca994520d80b0362547c7de38ef5acb4693061 GIT binary patch literal 41313 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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/sky-grey-drizzle.jpg b/web/assets/gen/sky-grey-drizzle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..891af5df830fd63fad771b92336243702201e87d GIT binary patch literal 51922 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 DV%)4+ literal 0 HcmV?d00001 diff --git a/web/assets/gen/sky-heat-haze.jpg b/web/assets/gen/sky-heat-haze.jpg new file mode 100644 index 0000000000000000000000000000000000000000..95d3a64323793cad6bfea80bc27ed3d18b35173d GIT binary patch literal 28364 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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/sky-high-cirrus.jpg b/web/assets/gen/sky-high-cirrus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6f600ff47cad9c4639a220f16afe1032510b291 GIT binary patch literal 64169 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

de)G6jLOG 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 Oxa<5Z^l-l#KmXZ2rRZt^ literal 0 HcmV?d00001 diff --git a/web/assets/gen/sky-monsoon.jpg b/web/assets/gen/sky-monsoon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5e7d1321cc08f029bc73bd64a528dbcc6de32af4 GIT binary patch literal 86106 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 {#fVOgO*o@t{Ymsp_R`(Bq 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ℑ*{Jlg%@#Qfz5R~W}BqPD$A@+8F7y-4}WuBezO8T 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%0AhGbbw&-LkZMLC#MU%PC&g zQ6q9a>YtdT9n}8-FtJ3+B!TT;QFuZLG|e;Z7iqFdbCBJu=8uIj$u6Zd z&@Ki7?mY)RtKKz@ayvV51W&n_t}BYRuE^@7`BmB5-fI?C@i=E0X35Wd4wdH`zlsrq zTicF5`qk$8mb){y*F8NAU^U&t+qJ^vg&=47(v2jy2~@tvcV(y}&A#OE*P5l`ZBpIi z+75G{!niA)Wz+yp0QK)#lIlx!12#!H;)AXV;>%4f1*>D`Jf8Ix6_$v&Yq`{EIu57eD9k|YP%)SP01EPN z7I;Tg@co(8=Es!Mn8D9E^~a@qeZP%u?Ms9pl0g7)aBI)LBWtj0x*Bc)v--_#P9QJ#U zNeZvepRGJLS028#Ragbv(xl!=!5nw|X%CpTjtB*R8nC1i2<^cYn36Vg>(Z_a7Rw+1 z09{K#dzY2=WcMPiB&IQz9CfU;a##`4r&&~~$@V{mO^REZ9%v1cGIN^Gzj8;GfOFob zjhiC^pqqFqal7g1K<-Insb5;b<(By)C6s+@p&G=umcY9l9&uQ{L@t28UI#zcsJW5} z+Bh?UxgF~{B=s#y+8c1Xhiu@Sb*qliZNmYBS(c*_D!9q3n-Flvq2i^5%$-WY3#dtr zcK02toLwMAnH{<5fnBVq(#5$?y>nMdAwFRlBm5{SBbT_)q`a4A{{WXgYWnzlLAHku z#hmApS}PUYv7aS##c_I#<^8+7PZ{HZ?@reZ5f%4_VV3C2xGMGnt3HjR!kBZo`qpGu z`i1Sn!i40URGO}ht=q77QdIX9X?c+BUx!Q645NMs>yK*dEEB^}{_beOuOprfP9K@_ zGf*s-s56sI!s1THzRCXp2#{Q?YNxLiRO|X>m(65>c)-V6@f&$ArED`EYpJvF{q6q% zF-ea2G?WtEkDIaTgT>KKfz^VxIPK6?Sv*~OIp2?J=Ip#JawOS2fC}_09|Y;qvdb|t zE_wQT)V@>+$?Ra;c)sU5SjJ2ML2`twt@bwnu2Fhg*1 zI*-!1o4s1f-g9eqq&{##9Xo$I^(I(uru#$#%g+Zj=KeU*tu-5;GTn;E2R{3AiYeK< z1x>Db*NSv_=10}6?t=Mzh?~ATjMP2`@iOV^(-c=?cqC^8SDEYA8ko8^<;ui|8%XXe zp10S2%1mb?Cnpu?DmRUeDO9wseTu$3xVoL0+Xo#%^s1M7-m9o)INXqa^?bK!;`@O* zT3RWQ*x(OZ`cuK}5i2amoP62sSX7{(uVZLcbI`k{_?}%98+Idk#}#t($9JyaTRsnQ zRQy+ArD_(2K;BEC+#Pv1?knf1{6hAZMP+>K;1TFOMNK*?df0QQ;ib=`qVbloE2y2S z^`DHTiPc@Y^YpJ4)4Wjx(StWR99E=WBD5*{z^~6*r-xmHt97~VAMl&aA`57n1-c(f z*KK7j?A}SG+|Ae9y?6v#g_LrKCuluzXw)ySCbutW=1A}|tM{uvt1Fl7-H&Ur@kX6- z_n#cnUTK$l`WmF!g-=F1P^`gZUow$bV<(HGqXHp6u z2~d-sjAoJGJz4G=KQVMbMo#0?H-knH;5yS0SrzQk3(FI z#=53V-OIZ@y$xdd=4*JvW6~tO@ce*G_OSt-%ArRd^#l0I+R!vs;2=D3F0H*S;+qRQd`QDM;;u9s=u51T^i7Y9XJ=M-%8%t*+ONbYEn@Oi@<$c${m;at zwG1uWEWHMJu1@>no~v^w?v#_Bb6YG6Z&N8_5NsW}7_&PI8xdyf&^06{^% zzFroQA7*$Up7rr)_>ro_Lq2hyd8M1;W}@m*Gx%1E0B7~fpIS+-yiK*F2b||Uvrm0y z8IH+i$9#(T?0Dx?Ey-_QwFKTW)Ewd1s2+y2STY_e`yW+a_=PRkFiJ_zH&-DqjGhTj z=}e7|mGkfXCG)-m5?9>TwU>%4qhlkkNgYo$qQml#>))yC?c)2{@bSdXPvuZHv*HV{ z^$~D-5^K(1#Mk#&TNv`7k%3HyTh|s)7!}4pD$!C%pJ;j~*nCNGBRtHgI{ogx)q2N5 zduQ|RW-8gp0QIgCE6s9zHufqGcoosFhkRduY$dmi${dlN58+bM+TgDCN2FV7))xN& zyLm$}JQLU48gqENOocywc!El1NF^l*!(l`cBc~`vbrp4 z0Wvl+d*d{@Ah%|m^XQKK{C%amn`q7-aXHTz$4|i2`hSepYxGejBgZ@vbNGAKH;4Wd z>a)#@)L20E!Okn_{{Rg9E%5!mkk@O2G;9V>LOz|V8r3PqSk{auHh=%r+wn)ky<@@9 zJ?)jio(%Fi+yUpB@wV2CY{3aVdUVD!UwB`sF40J*X&i&=_}7~2ejo7eji=me5ozf& zAlze6K4b6s^ImlLsPA5Ne7~DhwvIEGL+36)~(en*{#u(fWxTGc+;gg zJ2TXb<2_KzjZ8*DtY_SJ$gG>aMp$P+(W>NUC5CC%+G^QbI$p`R^z_Y7ap1c-t$y39 z+^xF5Ad{1WOWH+f#mgqNIeXt1UFr8FjB72h#tQZP>t9UqE#9nWn#$4Uf(6{ny+A(4 zui;#dss8{7<+B*=<$IMwjAMd*aZS_K_7HBZpX~9t1fV^6&o#7?wusF)dp3GHYEr6# zRDq1)x{s|!x~udAFrYMmtF?YSPRr(Par7mTt8Y| z+?=|dpH_C~=Fs31Q@Rb4)BNVIL#naq@}4o8>Spl=!xhEkp<*O zj?6gyYg!)$X;L7P8AF56jzO%RA~D?>st#K-$<5>K$vNXcfgQ>nkApcmREC?Q746*J#f#nU-vEj+n19)VvXVw?gXeONBph z4iCAnMviM4Jz3}0%Via!K4+4`2+&6ALCy!QG5}&`M`d+o!1b?5@n(Un>UT`G(Fnb< zfsg+HU2qrv7S{CN-!Kv&!7RMv@UK>$CKF3tPdaob7qJt=I{yHuV7VE==xds|istTP zzY4=WIL%!b?lTgpEuTYOgj!ix1;pS6BRKC{Ir8pd%H(-(mp_}bS3Sl(YooKbxLC!& zP}_PBdepkHwI94;%ADe>Np&XR6Sp|+#a}(e$!*RrQHtUT+H7oW=Z-p>d_E)82L?=I zlU;L&?>9By%vgGLtVHmYwB@!j4TH3Pyo%9Hbt9FpgzK~)iN{S{lP+5an(g$@ifO2; zSe|8*qjawbweWT0+R1x#-b``lXd{**&{hn0@>t9Juau8U&Uk1~Rk?7)&Kfwt03rYorM>gqbUH#&TUBgW##g*~teAZW zmXLxQp*=89O5-)1Ys#3(8xz|Z;<^oH7nk<|K?9xrvFToSs7A|hK*1R4^sh>cQ`F+A zC$VDBTDg(&cas^;DweCMK_GaLW8SC}F6^!VtXtXRjR~CcDo^4 zjPXy2yu-Abt1aA0`(s>t)l)Z;zbVE}Yo#Na_9fJ&L_(k4u3~MnpyxgDOQ_wut8L_; z)~M-9*LNWsfI8Kv*%0M+UpCVD9&-(&wtLoWo7I5>>0MT(H=Pd$_vLUto*e+WQ(>~SHT0w6+#)>?}A2XKzRmzJynLt$JXBF(aAB1ehludRRZd~LZ z{{Z1x)tXzHQ;U&q9da8hVQplq8V~OAn&z)HmS<;@Oq_PE+D`@8On%J^5#KqkQ1~(@ zxp?FxDsT_2bH;Icn>e(2z3+&h%qp#rYSbPhDP(QqJou@@RN>Gp zY%jr8C0Ew1G|02Qr=02j&V~(soX3gDA4WdNfqk)m5qj==2wY+UiFzI zR*46bux$g5I#pjmTE`69w6Z>MMmtuXn{jm{#zoJ|$gPNNESdgg861kfzFY~2xX<#W zQn5(tlZO&9VT!vhs?*yDSmjB{^{mU7l~j;<9jZ9hqyc);u$-R9OK+=rHvU{kA6l<1 z#FDvZY}LIp!;)XF?=@Ak)7rD187-!GWgjw}eny(NKyBMn)NIVhCmz*dnOJTe`Kk&x z;FI}OfB<(Bl1%}rd0ej}ll^JQDI;?c?^M;W3H7Ik`MDS!sWddp%ENK=^s5L|{HLvF z2VK05)nQzm0($hIW{Q;~l5mvt$1)Un|Gbvqao&3rtBuoRg4x`qa3TZ3iU+oDOrvSCJI4 zRUCVNN`Yio1GYL;s@QNnd;LHCRRBo4P!v&s-M+Ptb8BxVcc3Kt*0;%?4Re3_R zcmtXc&Uq}YU~?o$p!$JVq!#xB_roBb^(3$(9iZSgd8V$De{#VsfMCZRdVOj7iqB%5 z-Hn??wc}EKMPbe1%R7P?jfyzqt#_}XUg`F0G^JWXdUe36cGg#Voymp}19ds+OPfoF zBe~||!aiKv(ojdIdcA2g*&V3~z&swc>XZCD))fTMpEEpdT=%Z;!5$C4wUEWD*(<{Q zWsf1u2C8J#i%!@Bx2<|4TK?#_mKh@p^z}aV=$<$DJEdwUw;C`u zw;3ZHkKtY`H-S7wr8|A4)T(qK(}ieMS_)LMntk~z; zzGD9Xg@Y6-0-t}zvM&B23Ee4KJ^vHj_oHIJfC{r6q;r;tr;P7$nPS*ic|Zy2k&}U&{|iDq0+3> zNaqR;Nj#HZFCP;}D}%f7sjhrT(naN=&N>RY(dOKUR^{0Dtw-V`TxB6}2R!>%nNO-D z(=k@u%y~8Duc*xYXRSWo{op&8=Z@6X8*D_Ya~`7xp>PJ&UeZ|h8-#5t~c_;c;plLeYhLnC)$;UabpQG` z4tx97MAlk-9IEH*TB>ndBRN%&t>eu@00ubssuK97OVASIKHY00Q@Dl`!VH?{4x|(B z9#837s%BEC&cxj;r(%pA)T<1)4ac{uRpR&ZPu# z@%SUcgZGaP;&b1DRVDa&;kRsCZwENzpQU;QwdRWGUP)9i{u9P=S{B;vgaA6G&r!w(r47~uZ^jUQH#O0qrI?NLE&7DI+PB=!{c*8?E7kM0hn^v~A5c)R$a zX_BuX1Ew?7Ru%8Y8)%^m78rN>_NtB!Oj5+fbv~jRf@~x(2RP5QSkk;%EsV=;xHN9y zu!C8C6#}#+(pa0eO z>8-Vtvn_Xaq$$AXEsuKVC$p02B(`~)NaR*hxyN3$X>~m-RCY^AH*M+<9QCP7$8L6~ z*OAXP^RtwrFEi1Ci&s8%y!ZnR)x*yf))j&4+tce@KB@3BZ8qKS%;6!7WbjV|`kMOZ z`)hB?%Y&TavhQ_Rui<2r1x#SCVm&ck5X>`~aSJqYVvE|AvX zi4P~={Q6a2i27UG_?Bm}ftEQNaxOY&`ewQK&b6l^HRZICrU?wnc>veY^G0z_`<^0; zgr0}LXyVs$%NWiENI$K5#g4gWxthieHYdrq1QI`p^yyx2 zrE0TT&MnjCP)PUoHGcWvo->W*oA{fxbE+J(S2cC78zK!a#Ghc0NwrvGsP*@*jWxTC zQeg~zTZIGE@rvM*%~nh%K5ldVKZSY*kEXe|dy8BNV(1SU9+|7J%N25IIX7eJUkW^0 z4vv;rawAL0B~C{@t7dIiPP!Xz6&w+dm;+RFD_tHP8r`)iQRN5=vB2ckjhvnynXzQb zp(KTe9y0!knN9^_Y(T>LS*hU@J*HlkWC2}v`%k3tSVO6x7n#*-SI zYU(vYa0~T0>?u^V)uStloLxQDjJS z<0I4ST2}W;6LfL(9eYsdsE4+4G;Z`A68W6SgBazC_4fQLfYx+x0%+)osml~1LPBrg zp5My5Y4sT-gJefzAI83L_?zIr6YE#s+ZHTtOllBDa4-ivS6&VZbLE`uj%-xiW6cQM z$MKJWthDmpBJjdn&uYpK%IbEW{ARpT`b|;X?v242=N*Ml9;d5mg`m2P)q(q`k8EPB zH;JY(v{wLN^{=a;PH&;xrDl6mb|JWO7Q)lin_mH3A4L2VzL3hz9E2lHPsHQ1AyMo|vy$@VCM(6;|6@*8JI>qgV1D3Ip(Y$0QF! zT@Mo)5xk6jgRLtg&U^*%x5jO)X!^a}0WBqQIgqg76o&bLRYw)=4e8N#!nsb zSLf7?niDn`A9Z~`ovV?$)g`!_?FxN+`ik*7e6jfW1eer4PMU9*lG7OF4a&JAle2vu6tC!x0cw62?P#m60rK7Ndma}?(|!rWOwpo#xSR? zbGQB|w1CG3mI9Ssio>bRbw-Dg%_`?ZbE}BN*~na+aC-Ax^vQ14hW1l{P6kJQxcus| zvem8~u65Zwm`6Z4E&dgm;w?@oqK4kdw#5(12kVpXT~LoibIIRRI_m5g_r|+(*m~ES z>Jm;Ir04LhEB$cWpD%DY9AmX{^6GzTpC_Hit#?v|wK-=kO;e_7OQyEDBxGBL2pIIq z^sZX_RObNo{Oj5-HQRUa%sN!ig;BzxAc61r*M;kr5?f!kz;+%+KbPTJ(|6p?qPE2c zxsquy>Co2Zn>;qzl3%@y=iabF;E*{cwk`CT=8t=D4HYX~;R^rm{x3 zlaHshBwAcn&F0SAlyi#Iw3arwE&`@_7^vp#Qd;VI$AtVUmzKU|&Imn+^{+;fIU@2R zi9tmhKm(wz3&OhVSy@U0D*?zp{ul(X%uHK)xAJ9=G9Vi)bwF)T?;Zu19`EK z2;gznu%?zzIOJn@r=@CJg;(7s8$Q1D+naUTWKT{$wF%g_8<=jODBaC*`qXk3^B~D$ zam99%LKU}qVr5KCnW2*>B%vn08a<;=46>sh{Le)dWCsW*?hdGF~! zb9XPKho*W{_XhcmQ&!u@@pPr!6mdYVUh@g()2Fo_VFv{N0QI=4f<;hwQRefS0_K2m zjGlv@Dpi$-PN%(PiGF+@L909XUqEDOU`UUHpt6I>=qhxZErtYUvSV~Bf=x;$Vsd@4P~tOS$gB!__de9Z`_!vv6`qrB zA&BIk{{UT2yc5CasHI}pa>=unNkNQm3Od!>Z699?=iA0g_8^L@Z*Wi)JoC+U8h41~ zwjNp$v<{i$HJsd+!c-FK%!sYEOZFn@vJrub=08E?wTm)!FQk#u zU;Hc5HBa7Y_nu3)P)8oZq|(1Ot&%^t>fjJrbnRn zuW#_LjWrtyO{KcAwug+jLI+AJ)TtHjFsBM~e)>G7-}YV912W&XnRrrS(gh=FW9leOJF1qnp)L8kl5Gy)WYfD)&>Qkh&Ncj_3 z@HV@oGYOP1Q`Js-S1@$zkbddSeJ$b{eDXwJI{JV0tIcm>TX}BPTe#ja?M_>%zlObS^qmt_T+F3d{{RsEY4<(_(=BXT@&{=>1!$&>{hjtajc%p~ zxhAEK>Qt_QZ0zBi6Db26RZFO>d1%KKcO#a@dtGiDm{if-6Y`3v5HMh)wInHr!KO{x zXH9E<@vtr5rElBn?%nWfhcX@bQ&N4SXHHEg5vjA)t#xDwGTaZ&w{7*cZ;?+G;%}*# z*AekrdPbsJZLE05IjC?<(MMRa@%5DpIWVnZs$>_X^VFl4o4O0 z8g7|97Lmhf%eB7u9Ovs?MvL7}&x&rY z-!CG>pkt1;<&B2USd&Zvd2XlN(^OIus@d#v>bfPwYS&jEyifthdc@Q`OJ{BJT1?m{ zp7rLWq4~(q<3l><3cP#MR8j|3o0odQy1_Cte@db+qJ**ei5)7R%g+>LbI3J(h>m7j zeQx=N5m;y5tDQ$uAh1$M?Vg?K0Ko*{e}!B?iwThMPeWBNSt21sZpXpCX^)*Aj z5bK&YGk2M`z zO_I_`0>vrFY-i;MoPIo4keik+LN*(o4SO_WIY;-qo@H4^GX37iwD@-KNwHSD)MHtj z_(?zET`sYAr|Y&xO(s9yC?C5O^R>0~_N*efJQKh@>$%eWM3$D>fxdB?%B~sTnkB-z zYn7b>T59%LxVeuCIUpSVp4GW)tz2A%vx(L)Nawaa>x7G2zSQO_Nh5X%&2OwRM<_8I z403vMD;kjLBx?$tVtTdJ?y-BQMWSi4`OE<1a5x;FrYqX~Ct+)(Mdw~On&f^1*1mDE z)e;S}3~&J4I{tOh%i@cRh?W>`f^+jWI_I#jCliL0*DBE-o*ukm?@M#u=DMC)UDiFS zxg!mp2YREYYL=RVv)jqJMmiq9O7O}2VW?SY=H63~=vR8TJoT?Uhs3i$fJZ6Hbiu(N z{<_K;Y^0gA^92@sah?@uI1!_60MvZ^}+S7 zN>7PerOYv{vjLP)Pke#N=hm?GB-6F)Rxc-&BYe${fPwvMT39y=bD37f^WTwni!;B2~=DfT95%X=jTd6kz)6*3~>rnDyD{lDP(0wb?czDl9o^r%W zKM~n@&dSqPmMhzKAnn@AjyUGIT_#JtHg73oEEwRQ^ZC~+{{RUz=*3y`qdZmZFIDjl zph&ZXn90WX;eW{Xu7yFyJg;L9YtK8Q>Mw`hId;5@!`g!x1gC5`{tN4A5wKtc>xAW>hWS+t8S08=OKR@uQ_g*^HQsvgt&Dz!;8e9>R z#&N}I>HaOX)U08=yeR~d4dyack3ByFSe`ZU^XWDs4Kdb9{KX+a2j$N_IOmE~=}J@O zUVGwi9cucknPa(lt%gFXWpX`9?sLsH`^U#xw_7bo zPlz}nixnBq*15fU@Lq*jimEP21E-~Wv@psKSe{*a?rTXIS9-KpBh9*hGDRE{*12iy zP22B@l|l7AYT44^xpvIvGDybI4LVH%SfMQi;~`WvCPZN}mHDtp^dh6%B_58 zqBe@lD!RN>FC9+kB` zJ6f1jte%%UGGjmpW+ZlQ^xIud-p+rtT_E7`o|&&Qmsh!Ay~*|!hc>ftTa%GpN{#n1 zm1}H!%>FW2*rbOlM?qXw=B%=VAKl5%Kj*!9dDbP~3Ia$SDerwWzjW2cf<|)0T)C@U zAee~iloqm2ZRbFDI5^whs}TdSY1o`}IjQZn$TalXZn-D9tt|Q&sq3lJ+gn_|PM}IE z4hO%bCZ>`D`^*48I^^Zo0K?2zJhR(E@3-Ntc&>0Ldo)$=yna7o5aIp9`youYuD=WP0c>s!{X zX=xxTz~=xNbLe$7<*1zzyx%wjH+;I*P-bwt8}FRA(XrS2!o7 zFtU!kRBXh2qwqidYDQ*dz~ZRQvTf){!Rf~|K^4t;vmhC(?9l4+zXlZgQb z)~4U+bDaMG`s#|xagMp5I0HYWQh;h&54$-z^rv}%F5a1{B0{}6{{TH{OY|+zaZ1)1 zbIusRJmRETae`|%%wh9(?@A^EkTXfgu+7AAoMxu;SG{CMD~IN#GiA6rrD5L2lE}F{ z<0q1Tm0MQ;=DFpRmnwe>xUy~>^Ha;*YF*7$mkrOQP9h_c`PAY=xa~Z4 z`c!h3pL0je7z7i?YLH9w0iVXRJl5J6j=!ZnWf=K6`u!?gO1;g1`TB``s7x!tFNe*fA>T@{5w(M3zF;mI> zd)0E}s6VYW6b??snJ+dRCm)Y$j%&!|iBZ1r?^&|H_l7bmnURn4t5Lb1v^A{nCAGO( z&&{{BZtB{cH}QR?5f)5zz^*IJBx5|(49(ON#aAY`7qsYZL8@G(r`eE@Pd|-ZeRo(8 zZCi%}s^OdaPua=T;zcJ?obm zoz1>uRyfZYH89t%P?EqAR;jWbO*JiC-0N_@#!QpkQqOV(Aue#w>FHSlXSkQmX*Q2a zv3V>+ZRDSNw-Qv7)M`m?KXg0iy>7m!Ei9T9d;&4+T>Y$e#vlPDiS_MPrO|FKA^!kJ zRwcS~Nv`8k>~dGP0^(im*16fqErmQ+Y`zlLWRnXK+B?;`yalTHJKzfBjzA-i&Z$We zB;LoLDZt1)b*Kvk$RVu{g7&4q74-qLa&eK z-xXbm-O{W`&Pes`RoNKuJM&s4VjC+<$RKfwfsxnmoMx?7;tt&LPiG}I zAG_MBC?Msj=oo{Z2Y;nI2Qg|XO7aO@cc~TFDP`%N{{Z1s(YlV_wQH78n8#nnsYFgi zhLmpLV1B&RsOlqpa!(k>YBjgca5oW*dK$WxR}pS?2j$zJM$cS*De{D6bN|=GTkAX5 zSYU0XPj2VA{{ZV#HECjrOlnEsaytH%%xSh)@Z1TE!0pK+AD`<**`JXkl1b0&MQEih z4rt0;rggTZd$>ngrcO1-jAmh5J?dU3v#iXqN0KSpf6Tr`}IjYNNKg;{p z;8Zmgur6yArPb}OrodvmP5^F5#~7}oPu6tbvn7Sk&LlYB{{Ysm7U#qMe4b=d5xD0V z%{mPtOI%63wmBSi{3xjka$AHYII`Zoqcx(jvVYtI-`|?zXJHJ1WWy8C{VUR*;zx_g zW#IHD^{xix4PJh!9mVVY^|l@MjqXRAFoW- zwAxm)<%9(S;;a7vV(RgX1`D2RquR#Xm?~1fsMph+>9Ove^PUf=Ca+y;j_f10%c_j^ z@1Nyd+0eDAAt>@F8T@KXT?1RUlXm6E^*mNDlXlI001C=FCaiT?n36u9rS zew661UNaj*9HK>R^OOB6t;C&YqQ2Q|Rt&_|k<(H|)twNIBq*o(*T;~nN)TEf^ARb90nx}Dc&|t@Qc^ERE$`IYHbH=~WWjP?Qfo+0#A9>x$`*FLM^9*mv7+C1nuas6S82wBwUe3K~g+ zjCA#^-}pzhV-q{X6rP-nfmKG8sU`@C`fxi_=7Z`SvRk5kM$+z8^Ad2G=N$fZk98dO zQI&#FTO6KyQe4fbTB*b`I3MhuGg$IpUdl*IcVp?d*0qD{b17e?#|KWEi??Qc|ApM2A<|J=0+9Ii07H{y#5tI zwT-zd$LecFTTLH+JhPvvs9`$LWIb>u> zdov!j8M~N`pw_f{4ci>B$JEx6XfTcm=7!P*26IUyt<>hXbiFaJn;GC$)X>owG3VO1 zVU9~>3ai26iit@YLYwMo*=TxHY81zubR8HXY3r7UjQo zp-)e#t&1|wPUDVx*E1ZOSQg2v(cdZ{jC1Qrp~a)EH{nQ7ca-PDYi$lPQItPu2u+~ZFw7~Kj-kRKeVJx_kqV+ zmX|@U?9{or+{Ho1tz*qRsxl69RVTU#-lPZJYy9~B5b?4N#m#Wrg{A_+NzmwHjbu|pCcHn zf>q0~3E^i*W6bW{oezi|_I6n0mn&AERU|u_>u`G-k#09BBlN6&+r9az7F>D{dQK>%BVlIRaMfil z069JQtVEQaTCJ>u7{@gdS`PhHi)&cjUB^M(iK zPBQKN-fJ+*#0E~E(wrvhy=q)Wq-rdMM>T0@IUB!P#z|c9R#ox!q~cdGvXYeqH(tV` zcFFlqIjXVBcMo6ZOfr&APkyy3C3BXU&)x%$)fV!r)}iwcB#Z$-D#Iiis|x)|OJ^h= z2*{{B#VwJ@paYTLG{RqhPPEb{ZIF=!RI2je!%aHj-2c)>scI&dk~@np6-R9ejFLg< zN$4tQ{8&a-1A$yb8bY(EjY;OY&2z?n8}Q_U34_ld>LVNv#PEL##;3D}vNnXLEfMW@ z+S;>uk}$`5xi^S3saIoT{{Yoq72*E?8R%XjB_VTfC}6%^hm*MBa7R<^U8c)uq*$(9 zBP?(?Fd06a{Y6YwIWAkTGrEb-wSHio!ISA-yvh{8`7GUEv`#-H)!vhU$qg4R|C}IsmZHA z_#p1|7_2ysmo$br?x1GDI9U{tx2fyei^HdB*5dZ=XyS#A71@T;dtmhZsijZ2bIqGg zc^su%1#z6yC7L3m$^@F^d`05T55iGIbs0A`!m~uFgSZcVgC~sF1%L6n%H5%hNU~WA zAZZMYepboKaqW(3WnP>&WvX>0vOSO_vT?UK_2QM`EA#{T*UuI|8hlY{8?5FT*tS7r zA1L(W71nrj;~WngMdD=)%owDKxaS!GfbE_*tfP;n-JXJ;9%%I+C5jw!drR+7ov6N*C)(@}l`mCs%P;%BmD5=KO7T{o5s5C^Wo!}VazWtn z^~GgNGU-tcrU~EoZ2B7P+gg?TWT^>rh2Ft(e-l)-y;n}~)rr5>+iC&;Rl#CUOfGBX zt#eYtY4opSz9E5fIR>mfUJ9;wNELU{n?oJbDF1_ZlaALfLb{->MI`~_(I~$ zUrlmgLgjY4lHZWe6uOVZe+{;UJ>Q3J<7>#s2^{Lcx2aLz@x^?pg~1GRJ5vj$(S^n< zKkW*Zv42s8?s^8N;_nt}YOQ;4!^vZSzbP5(oxO*>b=p^r=kU&k%aH7R9)36e%T z6p}DI=V%|Dc-@u#<*S#pY!?MiaC-6Hq-%yT4oD-9V_c4;`INbiwMH*XAOFzfBz9fO zIZy^M*XV03+&KpWA$j%x064Ff=J@gBW0O*rsblI121z6w<0mwX@^veb(0}^9tL10->*Gco+1mb1{{Y2QZSmj6p|kcoWB51! z02NvL0sBMhcVb+Uyz!pYrcy~Q-}CEVDSyKA@sY>+9k=Az&2>g zu(snJpZ@@grR*7g)gM=(5$DVU1Nqe80!JKwTKOyf7w3yhb75+K@4xY&e0}j@82-<- z_5MEJ@G4(dlNzj#tVDz+;5hzN@cU3?VEc5>rF@<~KX|a57{}pG-G(?H{;K&|emwZAZcd+T$GiUkjZD8Cd{DuE z;$LhB)&Bs-m(`>m*&k7Ygkgq9Z1?{F^;CFv+qUoEf4e-q~iPqrgIuj}=x zSL45lM<-6V=f3Cd_|Wk38>dZZ|KAQV$1?V~V^{CqWamtRoSIq12r(ED2HXi=~#M!Ao;dE<^ zGIZF#@3y1r%zs!ukT+$YaKX<${{W34yhi}WIODIcy?ovO01J;=an6|^U+=X){uchP zjHaC)5BqJO$m{s_uK_<6HIwrlIXUO=pYW!y#cf@Q z{{V@40)1Tn0EJS+*iR69oYTxf1YjDL84s28>z>|~^Yp(Hd`mE8hRziyyKXrBMRT_v zH~5Qj{-Wk66~BcdAJ;VA9kpwTViI>~`ifY$0P5rB=chG7e>OGBZO^x%{>jHUgZ!$8+P)^AoBM8FKiL&=!`pcZSd{ih)AC8YCe5SB0gY#8ep?%b%)){OWXr;wrFnssruiiqSpk6Ow;8}XJhZ%_{Z03hi|-Wc(bJAT}qJ0PvSyiA=b7hU%pbDB>y3epJ(P{2*`*ta$*ecNzd8E1_|*3P4DqF@EpMoi_1u4*XDYF5 zxW%K@-sq2*9<^Fa$qotRcCR}=9P!x$I+-N<8dUJ-j`5SIjy<#eDtVE5opsH@W4VVp z%~A6KAos3vUkrHV#vf2ak^SHPwNgF{@u}zS<3EjBsS+Gr&a}<9Jap?(qvf*Pd)Fub z00>`=H*NcP$>aE{W$;&xz`)c8)00ozKol9+q@*bx^=dn#9!bq{AMl6x^&2NpUVVxF zl#Sr;9!Y}wkRMF{06|jf#A*^d(R$~vT4A{)WkxH3Zvgn#U%#p6zgHB4;g^d-5H%jX zvh_aJC2~t+xf8fMdE=k|09{1$yA$nPnfPzxMdSNV^?Ig$7I>xD{{W}2ToQNl??SB< z9?C~!=Lpcdow)VsP&M_qpLx@?S-~vf;V*_sO~T+ zw>mDrZKX$j_GunT4mK*5!1W+?YY_JcG`Fw!sm^eQntIM^L|{{U!LfQx?- zv}7AOvIcYIw@=ETkNa{lfo(CzA926Jm)AUou#dU)O1SC>IQ(hDsQ{dT>t8zg`rzel z<_G=8{{RYLxbY8YrqBD0{uF&}e<*!YUC*Lh%mjnQAvihR`I`CZZahL5nIoK%G0M02 zQ)IZ-q&bo)xc>lUseN<%q4hW1`WYL{7*Y?==b8#OLFT@5j(utg3q>5tPolT@Q@+>Y z1{)jg1ZO=P^QZOK{GhG^@;?r>;OVG%j3ETv;}{$__*5x2 zs~pCBP9$NC!B`)}(s<|6A@w)h`V9jH0kS#gk&SU24F>AXXrTUrabZlfwxvV}Qj1JHWs*0~sdC+TMB zB(}0FByzxl+4^+Fc_>FG4QnU;@_)jn!{BDw!2bYr{{V$^&lOShHjW-B^!50u36Sm6 z$xeCS&$nz)-xZv0@~l*k;oRqrJLBKqoNQ7-Mq4?f{+#Y!i-YH1CRf{j99_;ya`u0IW9S z9Y`yVwdXsD8>NM^f4UF&QlM6E^)8_LgZ>pRq{ESRJwW_i@d{345L=k>ji4U=^PJ>W zy+`8x^tQ34n`DtqkKQvK%1$xzjxpHRl1Z4z5XSB6l{BAeokj#L`5HZ>#q8GhJx(8s zI^C|B3^H5CHOe>7E9d54O`{k-^&~$S^~6~``$%LgNlpmb4{i@Q_pdE8%v65o8^75< z;Z0ka!P>D9J(TsM+Efo_yB^ZN87E{wbkr}m=R3#*{{XT(ezdTBVG9+(y|LRa-`wmu z8?pR(?VfnA7)Z>jUQOr${^>L$f}|8VAdwPQQQS5rq_`iBBU;@b+aC0jXLa_e; zWDcL1s{`Wfq-5#ooxPmnKjB_TWVB|%M+2Py0QI=2mgmaK+s4d2!Rbf0tI$1+dmfz^ z#cf?n7PE=e^y)GA=CrK-Ej%#=zth2g?;~Jm=yQtlF(MPNp;O-=kUt7=n%r>`zTxf1 z<%&MBRSD9I=z9$R02plcf1}u);Qs&=oMZ3;oj1kEWVRy0$oa${y!->sJ9Eu=-1j!6 zHEXee{=!g-nZiT zt0Q&OK_q12LyZ1a;nx?UW)Z;H+up1Fw&2JiiH}TVP^(qw#^@)yJ*MO0rmSWjMXXV% z=LD0VsirT*y;WpC=&+SNGo0h=n(=#l%IuQJR~2b)3~jYAM^TziwNK_B)#ADypnfIz zrcd6-)VHvL%xoiqN2OF6o1^~cBq--6 z^Qls)VcC`9wVFa%V#5zwwQ&TC`^b}NKr_hCy+byj@An%C=uK2>=ZXIScG*6slljw1 zPf+C~wz#~OLa=0}QUG8QUuHy)orYP#6oD*2%XdSIS^3Yz}_RGN2STZ7XTO5Ss4Sg!5x61 zU1%01wX;Wwj6^qZd;Jf!5v;Mu%Q^tVq3u;It~|FbYw}~ZdepOOanC9HLSb>n%nVfW zw!n_+MU(@`VaFXRJx| z$O+)N5y-6X_l9xkDnw0Pdt6dk9>0j1so9ItENT7Z14bKj2YZYUutpG?eBn%LrLDRN zT9&DsL)k@hYcfewb}||RMMcM`Oj>&}w)xsVlS+cL>-*8943oqpiGr{PwA%l;=X}rk zy?^&SIQKM*9;ckNt((dmZt@W6{(MVaGP-WpzdQY$?ys(7?elbKT(&m4J>?&C!qLn> z-rCHr^LrI{=IwaExq*THI?~@Z zx2kUhuJ7*-L0FdV4A@l0%o?ZFvDstb6*8GO25Yz#wWM$FS zL$~N_jW6^Yf?QvQA9&WHYBJ!Yx0ED9{I6h7rbjFP7W>_skoIJn5jv_w8scjv7n(@# zJA_>AT$y1WKM{NXbw0+W&_Rm*>kHK8TtN5`CjiftOW63l)?YDDz znVt(X^p^hq@}=77AWZfGG!l z4Lm};s!NFObTs{{i`4ME;|+aa{c`d#fb&uxa`m%-A3tJI1|degAgoU@1i1kLSpJ~V zrrfG<-IP2BmBg{=xbVKCK{oiz2<18_ys3!MJTNum5UQAsH49A*lXyCK#<`^I?+B8D zQ48GBl(DzyB+brwOKe}B5h}h0tN0W@aT4$0RfEp&8WG5T;gB4joKDdFZaUdC!0FL1 zfFl{XoacNCW@G(=SP1tFj?987q;ur$w4_gZ^(A69G%U0TjnIes1Z}8acm5y8%{?Vw zAs5G49)+KV+@8@L9hn_~Sw4EVxVO6;o8XaS2EWTzPP`Sx+R%GOXb#-zsXMObZc+|Lc!AoooJ$7y|C;;E8O+$5 zks-+KEo1I#N4*hRq)!7B;o|{DsPm(`_V!RLI>yxD-vg&KfY<5(5ttl5hE@B7zp*PeiyG7J#PdGBa$OEP zs|5^5O-6yAelwm3zj8eRzv08Iza$n#SS!G>aQIUf%L>nY{n$k+@%&Hsggia`XFo6e7SKj#n z!F^k%E#9nNbfud?>_p~vu&-n?jbVw(Cp+afYvt}vYZx@S)UL5`H^-~)l_OQ|h9jtUZj;Qcg+Av{>pHdUVj>n_}S5ahAZ z_uHXVI9-WskL8;! zK6LQ@!xG=oicZdR;5c@7Q{xJhcVmanpE_Lno#v;zUEWs{T*awv zqt3qVC}_+rui0xA9l7J6hL09SAWvrO<;2Sngtc3TdIdkY9p?Wtb$v=wDY+V8|0-rg zoj-gE`>$#h1p|3MKiO7Be4SKE4-yG*5VItQzg0=Zf-ia?c1^ALlSf5SRFW9Nca_=N zZSowN6!dap%ctFXv-v3KEbh^NvOEgEPGq8!&p?JG0RD^723@>V4;wzLy zQiiNhHdIMe)Q$W?C~~&m$pK3mu6z{XE2wc*P#6)62-l4E9b*4`fcZ@{mpYt-%w~^F zdI!6b8aBhT48-z}GqgGp@3a#DUx1!n0^OOXoR>F{cX~5YN zl_6f)sEWE(3=mc=|ZfRR>NXCTegq0w2nrUZ%AIoNe{Ws@^PTBIK84 ze4%HmHHt5E$0!L7E{aR?8~)P$LW{LpmKP#e*TI%pWL47X>zRoTvI+$$n8dJlsefY6 j36t^bdAmoCRWjQ#I?)b_wJXy4@;G}2SJ4i^#{d2gpf3H* literal 0 HcmV?d00001 diff --git a/web/assets/gen/sky-outback-dusk.jpg b/web/assets/gen/sky-outback-dusk.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ddc97b3be38e4fb304d18c97352e494ae35b82df GIT binary patch literal 76132 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

Y1?r1 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


CMF!3%DB=}*!h;E zudk(C@lmd=EeNNEbUqDHzYV&~2imW*b+=TPv>)@9@b6ddth_8&5Z zO&*8O;xgKl^;)Bi*m1=!!Uj(@X%jEU(zR|hdy7~F%iyW>_pawwF=;os!l_B7(lEAq z((UYfRQqr<)|X~QX>&3FyyBj!2q2DXQaTzyxZw4mL|b^J+A--<12(K^@&m&<0$?1yq zaPjuB=9Ad+F;aA;%N4n1I0UyF2-=-%w$j$gC5qkL2IoIo<0iDbvcg<~rG`doTNxsb zb$Qr@9Z!1RtU2SOFr!o1%T#+*Hg>^C1QYK|%*9uc9W>?~n){KbeP0 z%z^;rQDlod4%a6iNrJX%bCDT8WlONk~BEN#240Oq?PUNs}l7oo*d4=PgRXsocakRx2x zn~gT|))ks)_Mz`hFwT+?K?Q4fPtmn~ULynmxL$UX`qPy8b-skc4qoa`=P9?JY|*f> z^z^SlgTc2-izV8X2RQ?%9<)p0n^^8u1CpnpZV9OR+%`

Qyavjt65?l>uGE*G;Tw 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

>x6x$%U2u#U7s-vEJ-$(z{MYd>#I0Y% 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�eeGYOKnxG2gCg!!F(mLY&%Ikj$zVR{>sb*= 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 Xb>ki^{{WAH{{US-tvT!|Y=8gRZ`X51 literal 0 HcmV?d00001 diff --git a/web/assets/gen/tex-awning-blue.jpg b/web/assets/gen/tex-awning-blue.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7d3bf09ac827e3442ec4343d9e7e3ebf8d7c9eb2 GIT binary patch literal 43648 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 wi_@% literal 0 HcmV?d00001 diff --git a/web/assets/gen/tex-awning-green.jpg b/web/assets/gen/tex-awning-green.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2e09ab9c439bbb08259ba5cc6823eb7dfa319f3 GIT binary patch literal 42850 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≺x(g*gjGTDpV=Y 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 DW2~~+ literal 0 HcmV?d00001 diff --git a/web/assets/gen/tex-boards-polished.jpg b/web/assets/gen/tex-boards-polished.jpg new file mode 100644 index 0000000000000000000000000000000000000000..199e783a2709831ae4632a3de75361576908d7d8 GIT binary patch literal 46452 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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/tex-brick.jpg b/web/assets/gen/tex-brick.jpg new file mode 100644 index 0000000000000000000000000000000000000000..281d54afc69be209ea20a73e8f6c61fac45bcd7d GIT binary patch literal 64129 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%0Dy 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̑kWv2acfDS-G;*br(Y{a3jc5Kf6^b7lX+d z-Gkp5uCn&(?n~{WH7*9(Hb@nV4uq1&k;uS2_3A}&awLg!<`!+va#fj|o!@(h$?60qw&kH<}sfe&p4l|$clg39p zj+D%q!D?5+QxmBV<&d&`tHTaKO{X~j04B5E;IwwiRwFC97>xYAI0w-FBl=dcSYw_G zX+s#?$O~@d?i}Y2!RgfEp}4ZKwJHmxTy66rU9#k5hPmXFUk4%Uf_SOQSNP46p}wKrDe+Hy?i_oZ}eDB%0J+ zGf_9~bn%vsTt49WMj_n%*gX#2++ZHP=@gBNS9`l?ZY98wpPD$%6!;CXy3>+NNT*38bC}TpDx-oA&4ZRX85zJF zW35-vtlv<#Q}%N+sE_3lnTg&21b}mn3H0WRm1gusYag~+TcTS;vnWgm$mhKqsU&~O=VUIXwL|F+eNAP6u2ON>kD@yYlqLmt1luGQ_z#tTT?!a(` za7yNZh<> zuw;X^iNs;YA2#4K#yQSv&4!wnf=iSOY9QSM3yr!J z^@`pwlWa113l!d2!$0z0lNx}9N+e7i=!B#M(&a$#a10px~y{v#32W=y}a$>1Jy+NUr0KCW1jDCSyQO zGk^%o1C#QPY-7JasQgdxmY;PJ%dgqbY@5q8E@ol5eo>Ji&jTF^;CCjpG)+grJ}13` z-$%VVfbs&!f?c6dib!?Z0;OzMlsVp10PqhwbNSe z*f-i@B(!A6OA>OwKgt;LK;QsQdR8h)6s|Q1mDVQeg(Py=?|^a39tT1>%@-0Y;@Lvi*aI+*1dVnVQR0U5w0utEc$ z&!uuQ!C`x*O9q^7XJstwzBiA!!h!})NI4^E1G58Hk~wGIn`en3T&sTY6S$5UOOg+9 zjB(fuiUkzYI(V-y)uNUOBQPSi(j$#nkVj0p;A1@Co;voHF?1xEFYY0o3LFMiTsb>~ zY~DvG2652z7~-<*qr9<$&vlueGOWH{_fQWY;FSb1`FJ3LdQ|Us4a~yw`!T!5#nocC zR_Cg=Uxt31?hFCz$)M?48q(j{#S~@|izBHqZAD|a4n|v&dV6QrH4dF2G0AT1fv!nq z3}VM@0=c2f+%F zt9-x%kDD0BQ_X0<#Qy*TPZQc{OL=*Fatvt$t|LMdA(~ymV@^gebB{_+;m(h5wYvWR zgn%(%VpK7myb@G|OtwefImsP6idm*ha%{o#@T#x4{m{V_9tH>`F~Rg&&4y^Enrq7m z)rGX5XLc-DtcZ}~act$raL1hUjtxEtZgo3G)ohuX-UTly9EREf!RSZH+?L~)j z>ng=0cS$)LV{)yKha+!7PC+0ZIpBewm74d71TY8O#ZY-3tu`qw+{+6Fm`YvS1Qk!4cIH#pJZJSd zHJNb)%oS264oGzXocWSOdK1W0ILCeuYSyrZTU}CnOKFj0k(xJoKu`j+VSypCdi&?S zO~kh{bt|1$S%Yn?iW_sXNEl=>alr&<{by2p{#C;3dRCYr8g{y}K_}gBEPt%su#71= z!OMOJitIGKPJ6qVZIfaxyo1kW4f~~$ijjkn^A4Yw=Cp5?*{n?Wj`3P1#F+IbDi|*J z1noPU7$c9ZAvJV(UXgdKT1z}}0f^4j&PuXjOYYiu2X|bMIrQTF$BA^Ib7yn*h?$`) z=BUo+!V&=6&N9ci{Oi!-va*N57k2u5JDfhxKYP}>j}Pf~v1-?D zw$UR)5%Yo0?5+nxoMfJUf}PHJQ!fp2;dX&+C{~Nr*N&Ot1_m{!5XV&4$yfy`>c2w9S2-i<))jg z$*Mkwq%PZaRPz+zvxeh?(1nk#Na`{<#XFJgwYfAJ(Ydpgt{OM;BOfe>%NPpfo8p{8>fG8qXigu^_XoQ>;}Mn^fu0H#`2(V3dP;zbFw(_)%P z(oZeUO9a9BN-tx%RC9#@jxu=p>p|5l=f8^bR$Sn~BqJ)NRRBVG9Y;L~uXfkwn^F?_ zQ%KQCA&uk=pc9s2f4p+NGBJ^iab6fa6CZ`OOL#O0rnnbwXT;xqBz=H@7mt|mryli5 z9Q8Lkuk77kKO9)ka~PW5NUg)lxd_eWvqy|%ZBV3Vo}A*nZvO!LFHpag9JSlR6ufb$ z`D9>!iB#nF$<0Fm08u!l& zc*8~U4v8(!no?m7BDv+nftX;iK=}%IAd!y1oKm{GvAs2-Oypv;n#5bY`(l>@MvrWc zaHo;Iaxw>ebmSV+zB+y6atr;TP;FpgVp#4`m0=iW&PPr&g>|Z5&AQ3}%?s=*g-+n-ka+;%vw}F}b?r{jzqBK; z)eJMSyEhvWAR^x3h8t*B!DZW={MZEHxvP4=gKgH_U-?BE54{RWxu(I zA1KCZjz;gX%{{%&s^Te84)O+kri>B}8AjAQz`()C>-pbZX41|4;|sDrWZe$%N0=M$ zCzdml*OC__lhkrLjM{aEqVlfvKu{09Ny#Mpj1D_~9D`=!;?6r|j%QRTcw!VJd;^lN zfHTii&V72870Q=y3*Ew&V9jpiA#9U^#~B1G3}oYOeY07blp2DuS)wSeRiyb}45y9; z-4rw|aN{Bk{$m+uBbg8!({B=7PZU^JkN>y?fx~R#vE*7`^*OpCXvwF$bK- zm&bpUl6V;CG3XBz36b6DaOzrPMpMdits@wV05=dBe&OftoStxfE6w!(01tSNQr6Ci zp`?aXbu0q5B*p;1*`9}-jycB_V)lPF#6e_Xck^8X?p}Bsi8#pU0LeJ@=xdmg?&j`9 zk_qFD5lTK80R$eKlP8>Tdj7R&#j{TO!aXK=VAWx0CAMi4gl){{XrDO=xNV0P*>E{{USj{$iDck#kCx zdwJ0<;Yb~`5LHCmAax|}J#p9kE4Q?ZQ@=>>CW6`}3aJan3I~L3AZ_Q{J?oLR{{WDU zul;pj{Q%ddXBB-grS-R-UmQ8hR@7;=Q#AOX1COB zqVjZ0XyB6VBSR!XVI(%)ptMCBZ_Exj#(5d3wcoh^0QJQ`^eX6K`_@19>;C|>sTPiQ zZ3D&EQath8J|fDP!<+?tj53$n+2myB=~bIgiqhfF*(0|ygRq$6ob6CDq_#Hkf-o3l z4{=_(W&Z##{{ZkG{Ryjq)_>N+^qcbP(u7Lf02sO}ud?OpmfYk%GL>2*379_G{1i7q5Ta zxc>mrYe7jKb7SD&He(Dit2dT>!L$K{!vzYmD9O)WoDQ98`&(UJ&ozylW&Z$l7=e^= zkO2jZhjs@59D$CWz21fY03kb%_aFZNKw87lKjdP${{XHchFV9OYW@kATZBa+&y%?Z z_9avXIKV7N%ioS`xxet;{-tqiscY)1clN}I(Rz6(n{l~LPDVyBG43l)-|pOhzbF2N zYp>S7#Hfg&V_4s2Pu}VYz`y`wy>uFW zgQmT?u{ID+sO2ryky|Hkm`m>9oGx>odLB(@T>k*a{onhm{{Wy(U8afu03UIG*Jl3! z(qmC$Ww}~w9Y0NxbVaj<6$k`~k;n6@x&f27w&RR+{c2zAT^8cXAGPV$?{2HPh>cFx z`5&P_Hvj{l>4Rg$U-C3R{c`^R+L6|jfARot_kZ@9QeBEh29My)B5Qff4ED_N802Iu z3x`D{96x=G54Ra2pic^DH?ZF66WTJv9P1$R+ZZXx11x@4U}G4ec$*3{{S?tIKS3I{{UQK{z*({FLk15mr>hCBuC|n zGShBlaO6hH-y!7pB=f-;=CLi~wk>xfOK>H5EyR*LmogpT9F{D_4(x3wrhQFyP5%HM z>;B|F`YkJvPLqGvNPqNfbcfXM=hLip8yGan<0cf4O2HYCW!T^qDhL=;%IB%Us+Ygn z8kOzzvBTx$Y)3(}lx@m>UQQW~Gmbjuwk*EvKla=I07orzHlKQb`sm;K63~rXIlVi< zniMusGc@e5NPa;qgL7qo1LorxCnWRUx;V5sn%L;RVEa37o zhW#f00C<1s4_>RI{{Y90ztn#^ot}kmwJ{^Nx!Sh(jPgg2K>LRS3xE~&?ZCz{{xu!P zgY5MfmL;+&U?V%BiGrDV+&*Ib5>Gkf9DCN}-|Hg!AN>qhSEl~}$UZOk2lB3nnM+i2 zc6Lx{R_hcNiyp)%h{&=5kfbPPa@%vxI2p;oqH7;EDdd{jQJG6DaYql9q<}J2jtKp5 zeXDBws{KduTCo2Bc3=ADKlWOyi=pP8Cev;1?O7qyp^E6>Gl=3MRU1dm(CsIn;EZ}! zu8W{sM+x5)azQeT$0RX7?*>R^4Ui8cjOQ8an!l@mu3z^D{)bxHSNwWG^x91eX=eK(_j z$JPG;{d4}YSB;PP93uY!uM__Ow5h@>?U7bZMm8+p-+Wrt^f=pAytUIKAz2}@kDrx> zH#_9*$MBB5{SF70;`?I;xOHbH;Tj@B1Z2X3&bu}cdBEiQ*Qsh>@&mX30Ip;I074bT zUH<^cxnuR0`6W?|wbiqhO%~SAPklDl(g-EF*kX{P`LV?z02Pn}%AUjx**QF9rn9GC z#dQUR^QGjr(j-CVMPai$LZ}!DxMKJNuTpEGz5f7@>o5BEw*LUpi%a59`52%6zGMDt zNwHY-DXbpy`q~&)1(sKh2oSE-7#p0P<%v1RUau2`uSwxI8XHuE3;pBN_Ma*0=s3f5?AH{{XK;{LOH% zf5*kI(jWbrsdO=x=W`jdxxNmHo@KLnA$ARKi7LVScRGBtG{~``!FFYc z0$3wsz6J;#I+9Ig>7Vizxc>mI^Zx+oHD2$mpYFH*%}j=j`HRJAaXjE7$>w9o`9}=o zf;)lKWd8smUSnmbYgRDHJIq8i+=x z64fI5-fyZ!L3N4g+g#B+TtFHdy8vv5AIf+Vx=&A zpZE8B-gjornl&?P{+nlK<>utxE$6e(N$%d~?E5(XxCVHks;Hs}KtTZjl%HOJ$92G4 z1z)f|0HCf8Uxl(G_4Eb+(7vJo(4Ia~{yFy*^}ny80=}aCcN>NL zAI8UZoH$2MPd70h9v2w5wXLg-9XH4o%HwP8#>2TYs&j$mbf4?A6d4Ly)Q1SD$9AT32N;Vb3~b%WY@TGRVNon2sJ zzLE_8QZDw?{^v9g1O2~PJRy<{M(SGha;_eB^upY{+`J4=(jK<h^Et|2q%-`|`j1@ZUlzZk`~)Cuj=3Pn!O#PfsR5 z|LPIU)0XFdVc_BC*~&OOxOzMpf`UQnPqwZ9FU%-{o&Ucz#q%_tJpVPI|1|$SGoe?0IX z5B$di|M9?oJn;WN5B$&A($3{6p!9i)9089<04uHkj?Cx1_=U-U1rrvnNq8u~K~Oe}01+$Vls+SZs1?j-!73AtE|veliWIuoZ%0yZ9D*f?b56qHoVEUav= z*#(7!MS!AWa`Fm_O3Es#x_bHshDOFFAX__o2S>0I%+t%;$Jft4{Cz~^hmTRwiAl*R zscE0nGxG8a3X6(MO3P|$>*^aCo0?m?x_f&2`UeJwCa0!nX6NP?kn0=hpdk&HH` zwL38be<&7-Y(j2zCpM#i&MB#l#{>=;li)h@*+0uNf8tsM$N^CQ zMd+xg=oske=onZSPlSbo^$+3T;rxs6{)-6yMKAs#qJPullai+aMSF(+3=16{ix?jl zpZNbVJuW}xQ}mBW03I63(_}&;1V{reD(!?$o+G=9<|_=Yz%Fn3&GEamQ2s>tVba*H z8R~wug!re0Nl4SScVSbB_&Ap+mNV78P=3u?RM#IkAU{ zrm>2;LciCK-uQG|Fim+LNsUx~Z89zS{5L~#udRuDE8YC*rPsH(C&1^XF_{ zE2MRAWB^XaB0zzX!u!UG_XqzOJe_o}Yfd#;#tyx21HBoGo~;a_XFc}}Cz;}~Uv4&c zilM$%EG6x|;JoJ{q&4Kzb_2m_exTge-+3Cl4>Vc!RfmG@F{S4LBgH}DcfqoHyJG?S z^9Om&ZL`JGHgz9OdL6@-^Se^`zA+7a@Q+Il3My-i5~6keb$v&d6!ZeZA#0Z?i(ne0 zSj^5QW=hDi^{NnWm+mxiU397Q`a{E47E}f1m%nIcI)Y{0xu0K*>o2b2A4-Xw(boUn z@;;SHBs1c&YtpT+4%r240z8W8|4^;R0$*RS7U%u)gg|3y83Hn0@%O}n8DvPyH7=qA z>O-iLPwb?5ZD4V(PVj!6nKp3;JDg!x+6tdU$-h0JS_hZ$3R`yB4QshgWO7TbRx7E*=vCD&HG^< z7{1rL^;97ZGsl)kcFy02Y>c+B!rA=n*tc73Y2f~IxWQh3B%f>7oc6{d5-6;yB{+8E zNdRSE*ke*z(J$clbIR3+{{CZ7mM@?eVavhFg?jovn4);m7!S=A2j|A;Tw>5i0RA;8 z`orvYz#pLr>xtB%OJk%dLvFnFb^fJ7OmjDJ+!t%K$yi2>*2y}s&w)A!uW@lxn}Rdk zTPm1$xQ~QQ`*zCtrFKK}q%%)NCA~3&&bQ5-r61?xWnsaJXfK7aoi{2EP5M7_dWu%n zQ#iZWG^Q7NClA&q5NIe0hqZ?ub5IH&J-hSa9(1zBcL^{@Gng&PFlBiov0o69n%tXc z{0hJ6^;?{+2daCev<<%2Gv?|5aT)ArYQGsWFrl0N11PLmT&9oTSEzL@?xoBol-1x& zC?c!TAW?&X&V$XsO`?Ht>vEHFpwHh6ao*S6J(sbyJxTh9Nt;2@N_RU4^~gM3f|Zh$ zw*7ae-i)fyI{3lV-1M$GOZN-s+9myIWtr)X_X{-X7-6o}HS2fB$4m%h6ro$G0HH#qP%;JN7caY{h z6UVXFb8Xs?(_#I_8`#&C!K&3meij)RQBP|M=+!{*2lozXZPPEL67M!&hU2<2|7!4$ zJ^E?Hc32NuPBco?{JH3l=W|u1JY89D_DI|uEO|J3NNmB3~-+I-lqfd&E! z6>oA;zg0H~s3Ju63VNR&feYZ2Wb@yEcr=8GiYWc#S#x$03eVV7E2Ug_=6vobHL{S2 zI*qQcJco~9+LLV(#X7a{+lpax=I=XrG2!o*I`#XMq?Y+CUamifo4~6#BX2bEJ~`B! zDSXWlPAJlI;BTvCL$(7Kr_W9-8aE^f>siMuJRyhT#x^+gsT+dHHGcBh6ZaJaz_p|O z94B3`GJFPnpbVtMOwRk1DHokb)EF(W8IL4P8SwHm+CW9gTwe0hX27q8+SWOU&;`5R zc45xy7R0Q3BS=hL$K9vdWP>NYBc?UBRbL8}%(RJFdN=jEG*AxY<5gDQWvWTS+w0Z9 z!rmuWk7sp163KLy^~XT}eem0iwlha^tqLXg#J#dI(XpS=KEz2eFT^I7jrLMa;Q1b@ zv5bDt(vR(RYaP+!-+$k6z^x+;-4h*So(#U;-+~T%<&KNoGaH!17NwIF#JVNaD#ucj zMhnR#3djE1qM>n5>b1VCu$ssGw-N)K4xC zzjLkH8}zY5Pi$jebj=DnB$FGOB_sF^u=?Q{KvQ9|_FgtRnCY-|*=% zy4RvSkr0KjE24+nD(G!*Aj==B3xKO#5i}Wh=T=w#?NeZbQ&S~trn}+=~TA;b5{U_4dkXW;^3=1|n`)sVYWUsW$G{VmbBg&m#qwIrJNv zPF<3@GSut?a(80;gc!l%gJ|V1FrJH&_V~JXuHqG)Emw|I{y+*DB^ubc48|sl64=Ih zcaUbbY-Q0kSEOiy$yG(R;jJtW{(Du``7u_v88iFM%iz>ROR(?*$F%kP6_t`BxPD6E zdlVMZv~Ba|4w{(V#6EfHROBxL2#Axw^WgKcX zaaqC|Z;?HF`oh}t<5uF$JoaKv$ZjG`?V-{Y;bjWOC>CtZHyX=E$KV%cY_npJ((prv zZ_NpAdM|*DseVr}!V`pFV`l^Zb;yd}+x?sJzAmy1~55iUdH? zVJB?FqT?zu&0t(A;i@;mChXl0Dq&Ja&Gl`W^*GASdfS^Zhgd0c%jX2hOpaJZ7=Bhq zUtmp4{`QK0Qao?4jv^K!gG4uD$J=oATT$`QlKz;?C+*oJqn4@P=CUg*zzW5^BcHd` zrGqc|^qEJo_j6EA3@hO|Uai19U+By)Hv^_u!Xia$7!L%$9Oe>XX42iO7zY-pZEdH& zsH~#Aus}IaYs$}h!t@Pvnc5OjIL7G;Hi3vnwZ`VDstRXULEr5BkF}a4!wJ;T;a1)u z+g&u)xS{CN_jb(c`{zfFJ~{r^ul^hFZ9SjM ziV=sNZ#RZ2Gxc962XXeVMXFU?YcUj&10l_FSuT`YK}b(AyOg=B;Didt@ex;X4a}5R z%Tg!J9HnTEwl771yQ`$b5DWVH$=L5nh#P-~B#Rw1N|ge4^k{9Hp|uyV5KXknk20!Y zwbO>VJxiv7O4`xyvyXtDV1{WS>Po4NAvM?w({28mGU27z7!=mm;Yo{&MR&fD$F!#E ziH`uSy7~-i?~8AX4-TDtyqh@%belQqudQ&FAt$?U)!lhRSd#L%Y zT{$;2Ya8{Js;TP6+;x&dC^HE zL^}&q=rHWJ@dfk7zH3gtrbf6H*l=!Z<@VX;y@>jfUATWvfC2iT7e+d`Qh92*BP|j# zFs;}ynnZ>}@C(1J$APw!6<$y3$K~^S>e_F#iSyb(iXJMbs}yPUGpW6%L_D1UCzX@e z5RD!rN^-=Z6{p<{=Q%RkX^I?Y3R~94vfX0Y0Syk0VHQ*L`n{fz(0$$$tJ#-BT~pmM z#qHUvQn4LWP7;lc!4(>xN;$ZOcPdJGf~eDcG3ajXRlHAT>DU;DD$<{{ot>L)ha`aA ziwlf;h*p+O#^`KkA6HEU|Lh`yw&sui&UQLf`!;2&DhGqm{7f~hs4zCe6SQT~{}f?G z4M1C*3mN}T`3P|F-8kHU=T-*gsqo-2YC6IhKC|Kc^Z{+r{M8V!IFMqqd;~xiZfN#v zj34{f#RYesU$iXHxpi&5RO% z4D~qla(%m(cht=n^&SC;NRL9Q)ScO%_3p5DFzd2d5v^L@*UHD~y1w?W-XwTe<0$&+ z?g?}vP_KKwi=3|1vn1hmSN2zQ&3-E^Qe#h*vQ6YeXG6<^!QY=*L{#{uX(x60^mS`c ziJ9I)_{pL${+9h5)uSDNh50(8MF1#8A7Sbp}MrI&Z7~|vZF4>k4GD^mz#}uA40HnDRZ`BX5 z_OWxwx1g|A{&hT`nLdx{oMzzDhh;Ci&^cBw2f`@c?F<5aomVKSBc?5Xg{MVl_AO@1 z4fFb2H=NJR{CiUiBGv&~xhIk&*}F&VH&Hh+us;0a{Thi53K0l^m!mFQJW>%H;Fl8M zVnjSvBKbGGJ|Edx!pNe6`m65KD;p196f5aZ#b~56PUrOpH<3Y72O@PD!1&~69q)LU z$Y>cm(Y&8qgth(Xx1gPK2^1(p?#&9%X_=d|HPtI>9a7hn;<8L)U@u9zCVPnKUh;gn zUVYw1jQ}^aa8+yw5p*9B36QYilm~w0qYgl6@w9sv##dWQHUbo8xr+sYY+%?gpe1&j1=K1v6~qvehj1;nh)Q6j(@X_4BS zr>h?r61NU)mE5>-mG~v9ns|X|Zq6XOnF*&AirHg9b9Wxkc_IfRqE`eu_#ci-mYUI1 z?cR03IdZkNO(b6yztf>XsGW&-8n)DBq_l}8d~0exKVH^PnSA$}FZot+mLmj{l~H02 z-|q|qm*<7Ak4!{=LI9LWaYw=Md{cQkY|>$S5GdMlU8UMwcZNqtJHyag|8WeRZ{0@# ziiP62je$aeM&obb-*1<96TM=IH;>$(^^f?z@QSadq6tTT(<;+Fj3iE1pQ=nP)oI`I z{N&n*^%>c;#ns%7xEk2S#WUOBIs5E^3e_ND19}9*xi3>@1fUIUdEG;@GS$xnAIRfW zrg&bda0|VDA=v|N#`CCyZ~F*iBNfRL`KBsiPd|_7Hg!DYTaKdgZkJ;n8R2OT z?obO2UIR8unXlRdQTejip;_w$bfZD7G_W)~9Fx^K#1Ub3Obt0^+vex5?fDs7Q` zLUyCmcg5v>(j#WqW|(6l=yAN1(AQoaG04^0C@X$uPEsyQ6z#659_-DRWtIx>p$b&9 z=FTen){j2>oH8cT{tW?&9TPdHCFR{LU1{+_jm3@kj1U%!9)Ed-c)nHn`BvC-MvBE8 z&B+2sFCLQR{g#~%1;Y?8{8G4d3l-(df|wo;;%~dN4ab|aM-1b?!GgL$G@lswU%k=4 z!TU8&9ZsYn`g@~!vM#mdaPcQ1N9l3=+%jhNC1D+x|Cr{Ddy!I!`m8cYk$FSEW983> zPy_=ZBiA9KnSTdbyd6|?Mn5${ls3fBAk>E8dn)i zk$Y4+nUBTMm_KKFy`OuB_jTW*ZYA!tx_IN$0-}z5N`l;hxp&J$`QdHko3~%X&^;ox z8!5*c{dezKpGUcH9tFyk?eim7N2G>7b8fMaXpsLk6^QMj>){*LzMG4-niv6BP5(m8-oHUabKL{o^_4L zzzukLqr&aV<7qlYT39QRWnh`KeXF><%Dgc+`wm*pL3CTGmEV4_8rZ$N@TQW z$fwYG0~9s8FFq$Vv^YcLZj9(Y5T0P0H=T23x6OC3SgsTDvQkQ~Ecd%WQu&fM>L*wH z%^3}T=}fvfJ0E+tLv)&_S<|@l7OXHN*cKlO@E0}pCI8HnkH}8RPyeztC)>C)9c;Ti z&r6gjT0;*uwjw!)HF>TXY6+>~mI|W(m}Z=++R=~Uydn5W{%7O@Ekut1lc9noRZ#jl z(n%~8VF5Ayk?I^~z`}a%guTVa$eO6h@(nh7^v>i;u2C&3#^U8Gc{3N&{TZDLMH;}}bV=OIT#KC-0DIv(c6@4M4vct)4* z4h<;Y&*+&{=bR+ZS#>&6Zw8>Wa=M8!d6u=zz~gW%G`ZUnR#tj5(|l**D3N8&=u+4; zG-pdQ>dnUL4>p#|V(E-i_bU0uCM%0(T~3@0lFy=a+cF=9I$nB z%`S4@F?X_E_`B-<*Dp9fe6?F@LrdCol9cWh%SiwiEn6JCM2axqCpT2bsJ(js8b>AG z_V0{+$E};XE7*cQ&GNK+#W!ecf}XsFkeXfXbpnlF4KF2%9Fd}jn`lR+pBYt3oo4>w zyC28$dzbb(A3y~+)ZP7Rld-+M(XtZpDEO=y7(TpqmVB92!wFf_CeP~oqg~g%Yn#5+ zB@SLtlfkzOE#sqBebGU{fdiPyo!8ZeEp=DKz)yRo{vBY#w&SURjTlC!b_g$DFZ1jd z8bkGx`bR(#{*t{~k@(wl=iT8LD7Bku(pWJ@vz>k;D^Jw#V=%=6QvttDUNUuPqnXbnx+_=O1Bw$t@fovBvBC z=V*XwZOZnHt{4V!$Td5dP;YoMCE-{`sQX}CXAM_Db9GUNU1eMvenX@Sjd!#$Ot31% z8WO!DM5ERq5XQR*3z%Lwy0{O*gp_Bd>FlR9Ad3p~Ed7#9#Z>p~S%k5EFz_*5#ATw* z<-DFV(fAS&;6<{tztvJJ=XuumJTadWmniEZo-b*o#G>o2A-l}1{dYp7X<@{S4Fm8R z-F$6}xX%Ly7uO4BpUF_ESEip!o#x6RJ<|Ku6^Z$Cm)dWvR9cnj`|51BxpJUg@y(dx z9b-C0fs*=ptU?THX28$;ajFbv+{l<=a%MyhRi0%Rk=G*h^}%^F6d#+YJ@ zcSvK|ie~G~YjpM-@% z@IuKp14Sc>VZvCKz>0EZgvMKq08oxp{WxM@8U{J6{QYCyLpU+8cUbae_rt4+-HEk` zUzM!w+7jf?ne5q?N6$y|Q*A^NnozzJTFkA=PF7V_u!b4wyrNp&vk1z)=<;{_R~5Q%Lb3MWQeaUn@pZu9Zt4=S_BjY^4z#(JS1(7SZX#wHO^ihvBiugwv~BE zgn6K5SQ!k8b%_(%Z;WW#_kM6wx8X*N{dCc zXFUNM@x2d8)V#xj6};FkioZ|}r?U2DJvaVlWwg{@n788>Vhs&BUCr+~3uV)FEB#>{ zf!T4z7_%UdvzX(1(5`9*k zD#}RfAH9;+W6}!`Twr*|&|I=IP6-XJf@==P8{FuTURXH|S3lc1A(OUt8vm zSNTkMwxFh~vntv{!xq;Mb?TPgE;c_B9sX`@Xx99U1{leBGwx`IC*3m<)R$KIT4+XD z@YV#pBdTzmwZ~?9Z$~ReOv%|xf#6q^Je*nXou;x&&F0D*#Nn@9VoTzU#45=LxJYw9 zcc$96=!>gOyv}LVJm)t%-_ex!Gsxcf@q8taWAZokuxQ?t4vgz^fYPSH>K8$m2I^~i zyw|sWl7|K1S~u#b1|lAaEYjdl=Id)Rhc4<-=WRt?K?I3>*uCobNVCi=sb1o) zN@a7%m#Cg6fiIw2kAPttJNBUoc-d;yeyQEn;j$v+(4kSGx)%^(w0D*e#FSg=`$V|Y=MnEb^eg+pV4 z9#Oyh;ythfC_1WgRkU#EEyYi!mT%^FZfZjMxhFJVXP%;Oi$096squ7^wDZ?;rrO1n zrd)nHYiX!dqus_4xyDpc^K^RPzC`op$0AanX9~!#q_{ER*B?sDr^X5&0bK&*kyRBZ zwhf6sJi#R8Us>sF>D?;hF;KH?ugbL!rn1H5a{7(o!l6vzyYg5OHYlOgQCvx}%Otxj zO{r&+(-!REojxLle)ApoqHFBSMJ}0wNlwpZv7tgt6hDd8ytHDlb(MSQYtbQm|gh@YvX&TdD%%q z^sSDLe1T10kC{Xg6_xbUVDCwjUp+ z`T9#$;((po-=b)(b-WV`F0zPC*7yGS{Q(|deb1Jz8W^qko8_0&UogLC(Bd60h|fFd zgRO`cE0Lr?jYopipjEOEd0A;PwHc(T-a09S<#Jw?vAQh2AOxF$1n@NsmeKk= z$;Na37dL&w)3iTiBtoMtBWb2wQvT()%h0SgJodr}Jg4j>4t$t_wdlwF4HP$)tB{F~ z9Hb$WaG(9As+)7ypgTcs(`e44Gh2`UPPHkdzQBg!Xd+wIV^MK@$S8*|CPWk{RPW$` z?p|)z>s~yhqZB#A#C_i7!`t2l2!wqdlq!;Hi7cU?dHm;h65I3Q!^H(Q{1nXe8tR7CDOn5F4_ zbI{W>!Dx->80)Z;k|U@6fQyU^_CU0ZsjKcy-SmA-kXXr`(3oL`pO%uE0QR1}2P8@} zXGl6)aFsW7t=$L)O;d45v%ThHr)^y#V@hZQQXIxySK9e951q_ac}J~Wi_!`S{=i>2 z$Y5}sYM4wiYgL@8Ii@G^vvXLw5j8N_51%(wa)+&tu$rVo$>me($!lTGmOrs^9szE( z%Gy!rE{jVZ0)~NxZj3n>-K@HB^%Ig&t@nIk`X=fj!bcUYAuhn3wmI$7kxvl&;eOjbYM zcT4{w^36hh3h8Hp?s~_?gG>poBJf>>h#KnhtqoAVlEanzOhCDb?+3kDoDQ(^3xVnW zl_Hm+>}=)3u*92wvJMmAgHE$OQ#B@9PR>r6;TieII%#~cNtY%nLXz4oC^v|YpZXVyBGC?!mK^#Tz#10NaXwWsrVc0t+nSBqhBJi>aKAkQ$~ot~kD*A>?icB9lScT$@dLDDB4fA4~9vHHE9MkjO5tBb30>`#efg23O>lJQO#dJ;SMXsHbcgu3~^5K3y{A)TD5)gM0{u;Sbpd+k@?;zRWqRF@SA}byh-7eNQ0KO^VkU-OA$IGwPJozL`n$i5t7;!!z^Lv~@0)<16fl z=^FX{3$`%nKw4_9-Jk7~I!l6cql;|ONWA%nz_3UZzKPj6#7|k3( ziB8k%2`TNfyA}6-uzog=JnGG4q-`;jq|1K9Ax^B|rU83J#PY5BpyXV-|}1dPOrW2^2ZrJ@{i!E-PrFQ#wm z=#J-A$Ah=|9;!!l?V2W)>y;KmLBuMPWCy^X(AJS;-XVS~sBWV~j;4p`FOC3NBSF8* z@-IhcUM_0o3iWSp!>!7ny9N04!jw`;Uy4mNd=FNH9|crAP7HqkqH`uy%yjp1-Z)Q* ze{`#DqDtHiYdvIC8Hjk8sXL_nRcZgp`4l-=n~Os!7XGEpJ#_lQEak3Oa;H@CC`Oxk zyNUR_fixRpn=bQQEG{_th(qlW@E)dVPOKi%%{lRv92Uw5Cpc+S!5#Po6uLj%DoAN@ z4vvLLYU<8j4tiFycloCBc>!Yym*OeD4XzOQ0chMrt1<%>%FJ&x-^{cr*iXt|U2~2x zO>meEkc8JkfkuNAzj#r0g?_m{{S85IsSk1ej#KF^RMd#zLj`0wrm0-9`IHDblb5Gy z^JY$svxg2PW&;y-MB5g2K%5E@TcT!^kF2Ea?D6WtbuIT-#5%Qx5@YLQpSYzsi*h%5 z>l&18u&!}_YTxXNe_%a6C&1u93T4abP79fWIrILYCw09oZ$^h;Zw5%gvOIAIPNFyK z#_(^{IybJnXT{t;4e6x~hnnK<*pbSmQisy-zN5J;v%sGeGTNTy4pc7|t5d=0zly|5 zV0=9sv4kOR9mMV~HCj<@5LRa}_z39E)NP5@wO_u}ea571kIXh5W6LnmNK z=vM28yw?_v{9uDQUfDSqDbC%Xcqd zD&|D4bWHYYQv6 za@VkM#mQ!tdfDP?XvcS)UU?8_%GT8nOPbNj3NPMo1Z0LUryci~MTeyGoRFV;dAYjtPw3E1e#FO=+(s3r){^pGPP)TbUwigTV`p=_S`O)G3} zqt1Okv?aE0x$+LD6QI%gWSIRa+~B+%k8Ap*AnJbtOv(>DkW03 zR=luFa}~#l`S#|Gg!IV3KxInJnQ(29nOc$A8$bhdV1&Zz4q?5j@@P3+g~s#FKqz+0 z@R}+$2~@Q7X0A}gg89dCC`lr2t({t62i5%CNt*%$#@zQQ-=v?Rti&gg8Jga;OR>cx zDKHkOlcf`zX#NxsBxkSeWdCeY$nqCXr*T^th#_nnmuu$B-b(1^Lleam+9d`XX3TyL z#Asy<+fah{?&{bf`~92&210%Q)!sB2aeY*DwH3Yr3a4Mf86&t)5?1_dttO%Gx3^Y2 zWUI%Ryrfl=I$HuWSi@{0`;Z$!w&t9=(D;_Ns-(u9K%nws5s(qJzF1wisQfiYW25HpUME@`|pCVM}R?1qTtl8 z-m}vXEa0xR_$(15eOKn<{i})_k#$hLBStfHIj~@ZGf|)^L*c&-uZ&T$6DzBJt z7lv;1>{)zxOV7J%g-W}95na>}W7;E5q>9OFiPYsf)XB!rD3s{DhoNU=Q{b?J=>*`L16Ij@Zyev4s)Bma3LN26-A1{PGfUJzqg;BP zOydCVI6RE@c%SPac=8CqQ=jsGXPQn$9(u2`9!IGD&YiYBbI_*$XhEs_5kSrU_g5o; zcu&cHC-%q3HlBBoDkTyhh$kYcy;NX%*%q}(kp8`U)@DLXg61UtaeL*Gxf6B(S7|K< zH8?}LMj*{?JJh}21F+_>Z{c^^FMpG?7DxP)E&FWxZY2)uM9YD}=sB<`Tsu4LRtbfE zQHixVD3wUe?rWw=6RF0%ALRt~_JzZc)iOy~XW~J|>U%CB%@_NqLr~SjpK9ctDIk78 zIhz%x!r&Ofe-@FOdsAetb7IyC#{v<4B-EbcLv-$N#8{mG`@}$%#D^Xu`TKVbxjy{8 zyJ|u`%$Tfr6Xh>pl%p7!y8WbMCd-yw_bc>g4PTh6ve}W{t}ea#X%ymFF~>IftTa|u zbEH`XyU(DPx0jCq-tSS$$cLUd?H0JmR7HhgCWIgAqe@chlBZxs)B{l7pUawk$YyS@ z5T^R1LfWv%Kg?02|2bu_4?~fx(Xx=Y)i?JCx5n0xWk-f)A>>YlF(4 zT>A2zU&{(dshuHQyWZr;JXC8j)U)3?PL@MliE05dMrgKQV>}}9iAEP20B1|)Il*b7 z{RCyr0d5pO3|SKS208D%pI=O$rp;7aW*4>6(M&(Z1SDeZl1>kAjr}bLl^R)E$oA?* zzLjTO>|pjk(jF9Diznrci`azSk}uuMVWi9h#Rjru5?6#9a%2!Q(*;4_HH>CPvx zSK*`&#AAh!~EnZ5gwy*d@L3Lb2K_zPSgQMxf$k&c`drSoL0m|H=n2 ziTmFiLbu?7;$1%<=M|DQ8tzH=YxkVrQaMv&CBrZ;u!yAE>-pp6(q_>_fCAn9CAlBJu5{GA#&pP4L8dfJwocgSMH8v+O%IHL-W=7N#h}4;HinX zFuY#Lp+9@+x5byg^em{ii}WR%j~i;3zXKXW9fI2vYwgpKN#N-Lzj^qx@>I9gHgvq> z#cO5e+877PgZ6ygYqHjNCP|QfT_(rxtmE}iWzngf#sFT^BLWa15yAE-|A1ja!n9SA zc|(GG@Z_QeZn=u{5!V}W6h01NisU{I&AlHcJNLTQtWm#?f7I34{+Mwdr?igLy$Ym( z>#eIGRr&~?PYE?;2q!UBKLVT=IhBf)?8VwDsKH03_hb9*u#!3&=mOUcNlm-pn@s>`hRKv!DenLMM z@-w9Qm~4{@>@=BNoWEqE-x=&iUY?Nj2L1i8@mlbzo=lByT9I4EUTXok7CIEONqflH zXOJPVCvbrLUA%xCWl3GeFq0?jG<;=5v;f4+5u1Be?9`$ZBQzYOW*U9`*8!EXnu# zPVjkE5#KaiZwP)Tn%E-j<4O%EkFm2(@yG+_+doTANHmlP&^z5v3&w{?6CR{pUA%=- zN|aa=7R@m?2Q4^YHi*H(^}RHs7!}VHa~%-iy`w_r`u4VbFuge|Jzw7%&Z#&ZU=Z<1 zr?xKBXwp81PeRjWMP8AKU77O2NVEep%VDlcsL&~Rlw)c8ljXbL=K{r2_Q%J^ej~9T zJ|QGt6|4J{m?Ar+3a>tbQf1G@Ra%{-2zWg-WCkve4DS^Rd`E=LEiLPUq}a@lX15KK zb`(3M9-h-;f@a(L*PpU7T33xT;(P70nK>kv!7mDD6l6l+*hRtx`}>Ez{ng4K;&)I^ zlcHSLQsaez#5$LX8gypnuK0O0cOVUj1};;{ClEn-uH$5WIW;vlO~0)TQ!%Ra6RvXD zh}BqACt;thrlh$a+9FO2U2@(G!%z%5{PIbDQt)zILVG=}q2?kXCK{Dup`i2jDe*eS zv~YUN2NqE_}F?J3mL1{-Dc@XBSTm4|Z zFbv3eVOX~Q(XA_a-s1h7F818}myG^7-7vJ(72mKqqxxuyV_Lkk*F3}|Z-f&m2;4-_ zqDu>XeGF>OxSKf>7aO>&&KXlB7)tQ4%$}z!nGttxW8 zmOh{Nx^2SG;WMRUG8Y>)SKUza%7*?*`T5-@BJwRMn;0qjW-g^rFME>im3zP=;Hs!a z=;tG#a#W<-{ibiKhswLuojLnr>2+g6%s?+{sg5^cyrj{^C=6Lu|0U`u@M$AusoTlL zN`w!O3`avnl#wO`i#E<=xbYOx){+{6{M)8ZEj!88Ug{WS9lOA$h&3STersrYM&9|l z%-5UZUV>`n0qJAwm@OJlT<=3eMsq*^veL6vtXjR&^V~F#$FcTtvJuaMaLy}M^&B{i z=!JY68s7eVRxf3x*8m%{cu4LE;}Tw(ywC|d76&=oUKD(;4pDZCYC=^Or5tsS9-oF@ z-gpHZ33sg@Wi8&O5j9_k#H`Df?D=lS;CxV;wQsJQs>_zTf5Tmw1H86TF+<7GdIY@q zP1z6YeJ2Lvk=_@${3I~)z%=YtaxdD@I^h5*<^1TEXK(AA_@XYYb5%LYrFwBE-kb)$RZ&jhy7p{|`OIjP&2-rQ>ow!kZ& z73G{FC_;=_>BCbyImPf^nz@@H%3VfGHP6rgbj>cLr=2N*S<;FRMGWaVQI+#PNr6+e z@GwN3VL3pCa+MO}eWY+Y{$-M}I!ppepB}l@x%K%1{v{x0YZuw3xjxoQ3){Hvfqdku zT-v*1(lIq@vi~@Gs}(8BD+0xH6Q}EH*X(Ig@2kz*N0L@lhx@$JPZkh=hDYrLSg_Zk zcDEj5%9_iK>XwjHko|sTc>cYJr0kE;MMuV;UX#S9Wd-De%rdp-hJP5E+llL*0l+7&-Q|Po!j)aZ$$XnfANk zj`npr89sO&w^F)0HQr34iZU9g_u_4Z$4}Vc?g{i(0kYRXyalNLh{@@d@WfSqV&@EGUvMFM2oDkuXXP@}i zzO3)Glj}8390~c=H&xhy<(;h)c}FSW8h^h!uzu~70L|uyE$Y=xAfSQ^@urpYi%qWH z?6PekflYv*8A?hT1JbH!(6oeC39{l;G4&h%hJGN>#ye=^D{*)$-7iBxHa1!jtKfjcblH!$9-tyW4HKR z7@yYota8e)lL)k(v^_A2x!ViHfl5IftL|Sq7asd zK1=EI;JZh^yPMN)uCyWScbpTc?XmRiP4V{Bw;sn}T6@{oHr1C=1sAL$8d>{+hwSye zp13{P;e|_vwtf3rs`HaC%m2Cm<%ngESpOoma@t@EKl1jSeZmSb<1MP@&-`MIn+Kqma;<0rOw#wf@v^!z;`ikd-LrejuLs4}lcuI^(F&Vp=TA!50x!=~9 zEw5<$&uIa?Ns(KM9o!l#=_g?dUSb;6CHwpfBR(ZaXa-9x5t6HkT9m*C#8icjH|s2n z>+TNOfRulHf41B(o~f*Nfdyj3U4*s$4h8+o6>HK!Xo$~2LY&n4*Jciw>mnSOAjqkf4-j$ zK&V(F?~Ne=8zbH$NyhI>rA$${T0Z<;B=6jhUFAmEKQt#R$#6*rm67q;Tq9 z`PaS9Tuy(|!Xb0CPVs^^gLEiSC5AY>UyFL&roLQ5JF$@U-4s-MjU20VVRBAW&H#I~ zuxfs3L}<_PC_@gqeT3We-e`G3HU)d|_QxwVXIIa^0`iP1D>?_hR)6GpJ3RFG2b(q| z{2dr6k4#Nc%UB4PSCy+i2^m6rJ_y7MzaL!e;~Ra4H=Xgn0lh#%zkS5%p=s9N+G2aV zaVoP!Bg)4cg;j0DjmH~*UNKlHSy`>W;ELMZ?fFxjT{w;p-5bhm3jWb-6E2-r9SJvmXq$jxU)GOO-H*~RFM>F(yahTg^e%Q+J1 zr)6msj42$ghw{b&$YJt>j+N4lLqrzWGp?<1emAZnFSL!tcO9w~TX-i2uocef7Xp1c z-^H(}`HgvSj~%p;9m~4_29N?1a*nJx%|FG~+UBFA-e~$tTUuRSG;l{Y^2`G+(A!l( z7#}ds2U^k#-{g9KTA0n+H#9Gj(rr@w>Ot0H6In;6A){9M=nDZ9S#zI%?iFr8tbpl7-BL11x1!u1@7( z+%^xTbozF!W20%-6L_-qplhac43cGtR8}EeWD-v7jPxfM;-a#%YC4Xa(Kca!!a;AQ z#iqqAytgr2P8Jas@R2l&xZ!~054uSHB60w%EqlPe0@k%w@iqONQtB4BE9J>Clgz?6 zDpd41=r?yKHPp4wh{mm)%-%5 zmZuE%siu}lWrkhH4-%lBTfIj`lGg2RZ8kv_u0)Y0;2FIf41lY~ zI@Wa4jIN!UU#8!1>P4%-wMxVlNAwslmwSkb?DB=k537{^|wuivkSFIP^t`(?a0b`dw3D=0D| zv}bz10F3keLm2LAf=Q=aXqNEV>J51%mBcVCn^d%A7zTM*K0=eY5PIZw%@dq-<=_4s z6kfM2MXXOQv8ZV}WXo?PhxhQ^M(iR{_n0^*JH7FN`Bj; zj4)9klLdogAgI9OJ*%GaPLHTwUHFewv!3eSC}Cadh_bP5hcYf%bC7bt16*H)d`aVn z*J9H=Wp{4{&Wmm%xm1Xl86^sK519V zs-zvj02Be#_c=A#X}W#HTJD=Yo%{(ff?)$H@0FmF_n2lZa8*YQ(;lX$)hzziqBZ57 zsBZRNJbSmPMV(1gCO9q0T%hBO*0RKVyteCm>-S&r5{9=q-wo*(*Qq9*t)kz~CJO|X zo@%5}Z468K&4cqO+z%MWJJ&%RE2OerTuJtsKFlLS3VCbhu?z#Bn+1*r?to`J8sz+T z)=ZaLP0qKr=4(_!LNSrrJvuYh#nf-%xaY7H z(^kDotx8k7+qoZ$*39a$Wr@Ge8$Gkt+h)H;N;l&>+7 za93{bcLX`c0nfiRn?3HWbsveXuP*KGQUerX5FP~c5ir{wPC@yBQ<4a%i*Hr3{{Vm* zY(cMhS5EP}Y5Me*%X8=2W>y5o^T`_J8I^#}4hX={Zbe^9bi26H2%hszLHn}Iu4Rdk ze94vtN*r_Yo+~a(dpI>MKT)^1kljP3ylMdw02P-wP^Tme^})w_JTc-eZ^TmD={nY- z3nip4JXbLcH~@uYkqZ!T4o`88m7A2LlWys4f1k+JQg4~XdYsj!i*CLZx)v7G$qf3p znvyPd8$@JV$LR7qImENC+EF#)!W{J`g$ z=lno#G#xg>{t>vYFCNO+LT!%y&eNUQIZ{XfjyU!ry1fI${usKu)GYirdY6|AY2}$D z!>W01(Ul`RzHT=kPDNX~@Xe*+(cV2y;cl7`S!2rYJ9iDPMs|V09Py5|T->@;j@|tS zy1Y*_@bYL{evNId-RU<^G&+H}xD!moq>M;VfruNFk<*T~&gs_|x`wslOAT{Qxwrcq z$$Xm`neJpR8A)i{X=OmU9k{Kx@g0|k?leCPYB%WiChl#o=Kl3(P{4*ib+eq{u6GZ5 z(X;S=nKYJOHqo!-(|*x)gBfkBA#O`e8Bvnm6dYjS^cb%AO~UT2)z*(*<}qnI#?QLY zi^4Wn4sYhw?(;GmS{|9J_{&nZYk3^rX|V{mF^wk! zaAuJ0{_yHK^f;=1E(cP)@f+(p%G&*o*fd)c_lR)BZ6JU$yb<4zL0pf*KZ-iH#a&kG zRCyZG8w(k&M3JZ|H

+!LU?}fS~cosHaA(<1AEmR=<_)Zh=y)T=^Qc&hx{XZoMY0 zrNycx{kqvjBv8uxPWK8+KE>qVoB(s2Rv(EX)Abb7?lq%(1e#2e-oKT>P)S(wTZ6ln zBdv4)01h?ph(02pPmf>I4w*KY8ESnLx6VI3dI62~~P?aj}Nvp2STd!TU{KW>ULq)m&)6$A-$x~d^T4?^& zX&FX9ORPg1h*rSlj2s`t(pl?w>3654j3}~Q*hrAD05opDc$V4U#>$v3BtEQTU4MN4RH#%_9!1b~BzFB9qaH&fq!$ z(>46@DlReROVjT4KSxu$v42U_wR>F?P1O8qkXYM71B3ucG_tEV1&=|T5!8{I$UcYe;10r|@g0rj?zJ|P zEsf@zY-}04$nsiKxNpH;a-fV3fPHHv1uHKjM(kF&()@LMrs;Ysl3` zifukkDocYDF@E-ck#ggE`C*u3o;`8zSUw%_(`!0Tp{naTb+`MhIcrUfG zJ#YtH3g`YKX}&Giu5@P7bxVV39PKso$0wC2w_X7Guz+O!NaR*Dprut)Qc3<=c|Vc0 zMag?>`ku!byZ*zseN~<)BY|2wTT)ea0k8&P^0yeuo|V9Bz9GBPeiq$H;2YaSg3d@hs$@i^K zhh7=+9+BfK*!)Wsz3#86TT3^b@8%egU@DQu)nSeRJc{%Udrb2DEv4G)@C*A(*}R#p zqfj3^$1KQt0Na4)jB}b2rABg${p8ZscfPHDn--%frOTnrUihxceGdBLMN37umgW%* z@Uj@#t88$pK|J6L{2yya>u5AUYutlxVfJzYrpyIZEHP8 z>BIdKRkiS4j8MkzZQu_!*x@Vy+ZvOM7W>4i8&|Ro-tPRTk8#8>r{{UN)SViK?4RX&>x3i85c7UX6T`&Rp znVDFUaNP*x=OAL5EOdiDm8;vpi94&csz;5lD}3!U1q0?J9<9LbP@4-&dtDjqEgfww zK@yxZG^?`_>?D#`Cj<_hdQ^56-WI*nwCmk3O}YD1PqCsT;sV5$*rb8-jE?vm)T_N$ z^}ge3+l=-n>8@BT#7y`M3gs%u(r z!|Um_jdm&Ew$m-w>`^w^Sr&2wNuQf(Q@|vFf<<=vrMHT2E%g0L{?5+k?kiU*=E%E5 zZM3QBjpS|I2dTw!9vad$2hslkvOGx*<7yJy$Zrvx6>waiFDwaQRFAuWGupe29>&X0 z()9Gw*Uyd!%&i-S-5HDmiUVYUxbf5-xXmh-R)kgLpUT5e?Q}kN@cxbB9U5rg$2!bD zez&Okt7g(|Q50AQ6o=N+rn?*_KF+Ktt%gcka3&e+V3Lj1{rl~n|hgTcth zO5r?HY2mGZ#hOjVp=Wg-r7N!1^5pXqac|xt{oLmy=dj|Y@eR(gr_JI!D4ON8WQH4C zW-FN_xo?(6IUge7loB`q=DX$o(cQCc!N5__XWF8()HH7vM-{I7pa2)3 z-I2#N$atH=`sBJ+mviAYy8B=sJZ5mQ%#6Y0+}Xh_dSi@NGPLDp_utIu(o)k!`5Kpc zhNv~2JXnY%ZCOFNnlOC1$ODwd7%*I6anm{MYnanK-8VqJu+#3M7gF7-+#)tak_Z0) zQp+lE#6ARO3tS_$~OcY@Nwx>wNYbs zb-U|rC`6X4`=IQ?H{BOG1%Sx}lh+?wvwz_W9bWlj&^$j1qT1|tx+=xNz$#*5LWTez z^P1_QS`_(bQ)Kqi?_(OUb8a!~_#RKCcxzVEG))@gRg7zw8kB+Lmeux6Ga53JxpAF5Z>5C?jr)fWB)1L8-yXCf(U%U|p2;AYoIUe4Xxu9Il6gC=Gzoi%r ztce;VQ2B0?t1wJBKQbsCK--@9uEOH#NZxh2hIuX}y;!`Us{a5eU<)883&A}(1o1^` z@}1))`02mgIMY$JnUkq4mx!hD6gKvenC!+C3wdQ8NJwJDjl{TZxby(jHyS3Lq*>cF z#k4R%XJ~FPqju6hQZ}9(k=HoKZnez#*GAN?H5;1`3u)5YTgMTW<~fciej9?Ae>6-N&J4n&)X3~TfQb9V-q2vw@(x^kA$;k}d9lT<=&0|5d)gzZh{>qXT zk5g3)H!N(7#nrQu`_6=s&p>I?sTU;P%lzM&oS`O*zADnSJBu6bQ&F=^r%9uW&6U4) z$Xz;P0PNgB%9F)r_`6i`T)Nbne}^p~p5N?Z4MG6w3Md>%q$pl7jB~|xTdi!oDShGX zWoMcwpDk|^9IBTb?`-_!;f4=VJu8yeJT0f|`u)bK;pF4tED^1!W`)`S?JVSXckb+sxo~Z-EJeb>W0EQs0a8D2hAda&A*gLYTJdb28qstg6>C}%HWwD`myp94459IYO5ptN zIRIyx+8A1@-tLpzZFkttRif{%+mvp62c&r4#yUTW;x_TyLoBy8u}DafWlV2Z*xZ)e z!Nx%yD_Y0K9wza9p08uCz`A1Tcd*SIbCqX&Z4BQb2M3_zq0d^>u$M^HbR9cUve86R zL8!4vorH48z_S6gear*j9XsZ^KNjiHYNJ{49+_m8m)ThEB#`Bzc*4rK86f3O)A`oZ z#B=`YtN3(R>94O}Mnq|-`|<1e=yp2ChhyRum)+@Jr$EqM zWT-kUc7B5v`}vuQa_fNN(;eCTob{Wg!&`ggbIT4fqdQj%CYa?%MM0 z>;C`@YT)g1hN0pg6X>2G(JU?HwRoqtV;T+80l1Cw%0T%-oDsJNJX3Y=9p7DP`b-kp zL8->qrqRr;v`)*od5*l00Zqf)d)19=M6}ZM-8%kjE61K`%CL#IKbasn`9L^DWj`nw zu3y7CZjIu*Ne;1~I^QF(%sc-8cQ))7ROks$n2dFfO3lCx^Zv$*z1ux$yUdZX&#& zPKE8n3^qj;zza^yPbyfD0Oa*PmG~4e^(O}#YZb1WcInpV=#Fq!mG?W1CS4K@9?!$l z-%sX2aX*$}$}B%IAs4750&$PVx9qjsO$IcwyVM?5TahH9U5aheM#m#>%ueB)cRht^ zX&Qaro8fH|;^WG?)a4#zlg7Yd*plwMxX(OSDWOGkrdZuw>NCeY?R?T~X7i=Fk%ksN zfk*=bfsBgg(oR=**Yz)CtaSGphlE~zLq@rGSzI*f7nnTm=Xg0FZa%#SY*wr@OL=zp zS6Z2lGim;*Nd5jeK4YGPCmeOnRFK@;Txxp9h#-c>A0{(1N)Sj<3&74l9~zMRULD*tp&3Q;zS$(KWMal9`#J`!&1@362>E z4Z91_40>c&Kd5V(CWWF|s@=&W8~2tRl8hOCZJ-?GdCxhm1dC3B>rT`y-5n>1Wkinx zFi>TjuuxB?PI>K3yn$||vefkiw!M}+&o0+yN~m@u9i?yzsloL$<10UY{{Yp(*Z59% zTh(6n-%?BasgYUGsv|2t=g*jV$00g($JV>4z9M)s+Iw4jjZS#m%14Q2QlXS%cO)E= zO70y+Si7**p_cyuNVdI$>`yw&Eycrp;%8O)5C8yB0OPUmR_|^ubx-ZNF7))4O&}?= zc@aXhk&+@D~)Nchvc^@4`AIj0eT~`om$RPjr{_M{1H>I)F%1Fh4HM z=QtyR-qq_c=zbY(Cf8Q9wY#3lB=e)XkQ9&2kd3Fy=oB&GafRwVYl!eShyE*gd&GZX z)lG%&kE%P~NMb_s3}wZ?Oce|Rdy$Iv!*h4y0<+#+Nd}jsOqRt|?rEjkyHTPb6N304 z8uam%X4;CMH(ef<+THGRLMqov$0L8K+G|%=uw3f0d4eF92PGnfh#&yNpPL!#Yo+k* zr|u4(y1>?=)M1F+$0B@%(*r0#$}g!oImK&B;ko3~Z{J6dPX)@TlHOJa=O6|JcHk(^ zao4D)+(%(=x@sJc6nBx;QcGY{wANr z`USF0t6fRusFQQY417jaSeyhI$>6sZ^Z`f>8v*UJ*KB7NW_ z7%QFu?lYRx(~w`ji{b4PRF3E~Df=$-9HYxjznpo?A>GL9j%%aT{3GDWw5y0-%Ge36 z6;vi}B{I7ye69c)z&(f@*K4ffH7d^UZ#!+J$c;72?yvZ9w;GRx_3aLSvEIgXM3OA| ziH3t~jqxgFSZ*AH(=|_1wD9$&wnWmu^zwFNezNcqDB8JOPe+H?4D;#i*oIZsU&}U)qb_e zuRS2N^;&wpzavYi>my3bSI~7|6hxjByi1v+)7fN_DOJc#xDlu)lagE10q;}jQ^Tmq zqxfS@N%Y9At|fGySro92G8YODEJzsk=Cynq;kzqIG}pD$Z9K@WfRvmnsgwdr@sfDt zf!93Ztm!%&cG_fDcQ0%tx0YDaIb>Hua_+####o$v-;^IyS;{fiG1+(dnnG?ZNp4-d zxYKn_HFVt>CPaehEyd%2&xVwSVUR}v1_b*Gi&pSnnWOl!_gG$o!gr@!8zj@&P8PzIIBhI{{Y|$*JqLZSon>lXnO8};rXxbAxr4q3yHkH zHU){061W{%hzc>!dg%NQYouLxPQ&{)`Tkj!Ju$9Plgfq{^1zV>82qD>dV^hrdNs|T z_C@~yi7#T28b}ZCZ14mhCszm-ZD#Zf!G04 zUXG-q2ekXiR)P5Vbfd_)DF7SyCAx0&#LlKfkCxM(&op{QUgkY4l zyYIf9Mp35JoSVArV_SG_yd$Qq-i{-&w!FVNUz%xTk&l+H&h52VJe>V;S`c`nK-IOq zMr}UrQ6gqrh|FL-&k#^l5%;=seKA@(hl+KLCq}egO30YnR}(4)^731TVtK&M20bbZ z%{RjFc$W9YI^LfR>?Q$kt+%QHkat%d3TCMweeD}F+xO@n$rfT|6 zkF^1+2nDUoHm?oDk{z789EIAzd-6F1bJnhSeh1R+;=a>0E6ZsvBMSrF?O-B^j4seJ z0|o9$#%odJ)gtjN{{V;51VoH!%h)8wObm0ks%{0LkQi zeQRG+mfc@jOx+j^Vc#h)erlk-dD#(1iKcemK zK?|RMV_IL?7JBxS+V6#}MWv?EX*T{JdLd?TNFjr8xhEaQYW<3E=74q7pH|f)(XOSR zSDHC&C$mMkG7XXvRlpFS=u~pV`w%P1d?lq{Sn4`ns=DIpI$~QrtQHbR3tOWmWCY^@ zi3&G2CvmSvhesE>UY~C0b!(VmW=VnoV%VKr^Sf~YasUUWE0obRDR1r$tM)|F@AV)F zc=A=&Fcp!;LhmQrf(2fNxfC2XCp);SzB>4stHbdIAB6rLnQk=;yNK>mNecxr zz5!Lo0g*=LJvw{UOD@FwRRp!==J|R509{4(s!ks}e9vWhS$6tobrp zB=aOI9mJ81$q>P21{8(f;p`*vWOaMUA7!^C&IOOx^dGTVqMH+MPW zx&4&gH90FHxtBGQGi8Z2T^`%Rf#tHeguK6ILfc_~yhAtMJAvqOGEZ9bzY=L4BGB~f zeM3XkCrBo}kIaPOg1HO}l1Iv{2SNuuxvukE@nY$EJ+8NO?`n?u5|veF+O5plAmgsl zP1HO|bAP5h^O%0ZFO_4Ef~?OQe8|XixMu--@l!$05>jhN+`5TL8m)Aa$8j#HYLaQd zM=7|ElQgm_;gwsTmAD`R0rkPIhB)tT?`{Q^&R`aV#$p5$C*1=fc{%O}aaDXprg)3Q zRyP(}WxNj}Bd=4F%2jiB0Tw7LOIuMyt5Z1d75nBY-i+M?4Db zejs_;l$wloY>9mEg9N=E*o8R?MstzWd;Ka4y*gVbwK`fs6q<#ok(95NN+OcX#1FmL zoMiAlD(T*uaK4_4xA}fV%FfJWlLKv`-fKFMwv~$r%v|S!Q-V8>m5JjuFWD^h%@!eZ zbkN+krd?1r=LMwO^WcI9pvRyzmbzxAr`XtPx|6`yB|NZEjEdf7)fmW9F^rs(wB(Ah zcYG`@?TpH=6WuH>_NlqrT=Ta)vYw=ZanEsBSwG>LH{8U6OMMec*7WUvQC}qAk1ux< zDOUk8Ldeyv}8>lZ5%q? zT)d?ugdDOGT3y@_c*bxBGxe_x_#5Ci_++!(>Ww^im(ZCmKG1iTWeiKfoM4lJ-8ek< zuW->{#2Rh(nQ48gluLVgV{a`OJh}Oajj~54@U1a4=~JsEN>@weeHol3IY#nFAFt?e zNu@RQwyP+X%Tu>=BChihk??ZI3P#h=@H*FjCx!eu1oJ~LlY92@o2}9Suefbp+fSe; zjCxm<+v#yw!)fs^U)Py*{d(pW8f(H9GJ_L(2?cp0!uTwx95><+ZWZ?IO5> z{b!%;1~&~8L|1CzPbx!TbAWqRl`yh=u}^N=Yr9=G{{V(2GfwwC4^jAQ;iKbi2UwCY zx{a-*j+5-)8wkRx?ML98p193q+4$nYC9{q@qZBVJtY@Aw6rl*GCz1Ak1 zPD@#vWU~SDv_yc|AQBjz+3qu5dEuRFOwqhQ9-*dQJQr6tDrcW*kzM2^e8LVerFvr+ z&w7H=<5jV@I`_l`wZ4`@V6uuw+M8d8b`OxaTyfV29qK;~_#*y22Io?1m?M>Le8^Li z7!4*umKhA79uH7`g>T6iMJD>MPw5)Q3eC??J0Jhm zJo1s2Y_?Q3dk;?I6?WUhz5vxUzqP?;Z0_W?H!}qW29PLUotbdO8;(yNwY%aSGA|I^ z>Y6OKR}fl45czvIERXy}3uibOT;~++7TV8HySKcOf3hRnhzi~*ciN-o2XG27K*1RY z(!ZalUUOd2>uk-qz6{qQVL;)>a>A#tkOM=StHc7O0H>0BqmA;{@^|0G8xur|D7L z33Tl$OX$&l)jpu{Hb`k1H!AL5z0TZ$j-C0fJznlDIt>om!}qB)u93~PSIgQ8vjKn$ zFdS!q54|yOZ0x)|hB>5?dz;UZl@v&UTMOd$=+P(I>wo= z-rQ;Wf=3`#jc#0zHKWJ~ib9;RIKk>GslU;Z3GOa_#WE>@l1R(C#S${B1qcYsZTuG% z7Or%gX4d>m1>Dzd0ge^(*c9A}xER+M{w_!v$o8ssR=S3z6X<$v(}QyWxw?7e^Kl!0 z6j>t#f=N-^8K+jQ(@EJc@PC@>v0lG1v=`2?GG(ao3!mTFBCEJVl}SlEYcKy^8NlxqOT+T(9wfW|(75|Vj}a_Li51iZz$gg|*LHAgqZ*CP^QE*h!DP1FG>m-WN@HRI zPY%Vs`qnM}lVNc+?v#_H$k#?qk_I{6e8z3c0*%A~M;$5yVz<#Dv$2L0k8^=Cm?Bw1 zm)_XPAYpJik~7k>oK&RSdVgI6leWjE-e~t;B-LT?_KSG-ap~zF+KF5gXXp{W>0mc* zAfDc}%=pVz7FR9dt4%#_*KmbW3SXgr~_O<$Raj^8WA^Ic`n?#s}d>t>Kt8on}j&eSXxU)5*=V ze)VLLa9!DWQims#jP|VW6iwodR>~b3)(G$IwD(vEAmI66HY9DsuT0?e_oCII)a)kH z?(SCAr-WU|v7*MZrz+~Fl5pJQ_BE7aYgDA|Z@$Kfb6qog!oLUnG2u;ZFYLV8#Qy+4 zoObU>$SlS;01%{*F`Quj6z>vvzRK3dWxuw%wEoO+MdS#rz0b-dJEGsV;Bp(1jaEm1uH$f5hJoc)vx7t`=Bf^TZHb?`T!`c8~(3lKE4P^|tW% zd&06^LuaK%E@xHqWVBgXO5iRfa(Q#f1fEA6kys}{Z6QP&-nDOid2u+qL2(#`;*By@ zt<;MOMre%9G-a2Ygblj?Jjjo zIV85WUp59<{H6+d5*H^SN$hYlpK4gmuBUUX-DuLS>RoBdXHr6$6qoYATy!5cIp;Jc z-rBD(kykS0w(!@6r_#0S3rS{GSqj_`PtNJNf~eOdRb*dKeSoose8?8R!wEaRi zS>0{H21!}?R)`V&B>J{`*5-|)Us`JVHnXhU38RACTg0i1p=9JSCj?_Sz|IX(GOu4Lbn)ieBKNstIlu&D{J_hPL2p8WRcK^U>7gAT(O`ngLjbiC3E7;NBrw{&I%60o zxF7mdXuoH-i9xx&mSWN~tgN!g8!Qe9A1aa4soR4}b5^y#txIs_ zc5I;6x;5sBEKqr=?-4P1o=TK4lpzIsQPQ7D@g2>QX>#g1atD+kY-Gr|^9n{r3bsfmrba-|HP%I=EyOw; zcQ@#PU8P7;AcJ-W;z&FN9Al@}xeYVL8b64w1}-Fp?72h z!BFEpFn#M2#C`*hQ`K!3UDQpw3uZ}@5Jn>>COyZT-t>)svHG|f+5`!&sy zf%a9lfU^i=$Cj_Vg24zG&N`o~s-sdDi_{y6vawH1@P~y3lpZ9~EOuPl+`3$bvK=euOt<-`~TgDym@3}ulJ9&boUz8biHaz+nC~wu^2D~^WIqx%IeGf zCn`ZFf!C!(Cp9ZOzndY&HKB>Gc(2DAEQxX8%S&P>iDtNOGa2&04x%!55?P4nf-zbt ztJ=1^J^qv~g6e9bG?ed(H&BFx+t6os1n@zvcyxBXX1dlcqn_>yWw&<-5#<;xaQVj2 zc;I#V3dXgt)4VCD*;!4hC9=&QmRi{Y{GUDnW7L)z+%bZ^IjEi?REM%fDsC?2`(Z{@gKjp}6&DGF6o zd2J^rYj6(l(z2XnlI3pS@Jo%lon7_jt*6fN>5<7O`#86c=TU&mfJ|5eu1^^xVwn?9 zsd)a@^HN#iNiF<^Ay5T;DGn55jNpU2)N@-}b@qN=#C&v|PcPO--FpEb&kRRWHE z2Yik?*PY+$mR=c69!&=38&P!IFE1n}X<-bdm1P8isxUM3=BAA~PJF$8t--74jNcF5 zXf`t)cSyQzMtw3_C%=q2LLODv09EUT_QwadYszQ%SMdu__`?1_xS8#II+Cr+Mw9R{ z5ZtTtV}C+@Ip)1PNceYY;O%X^Nu_HGbY{Vs+6Mb9hIxh^SxDq5z|X1Y2D?3K9W%qe z9hXX)*(ZVK-pe*xD5jJQF()TxTO+9F2hzP2T3A_1G$fxgwcfk$ZM9tvc~j^9BG}2$ zto3aI`u_k=n$jtL&hP$}A@hljT?XybY8 z41z})V;NuqgzQ1vk<)SJxutpQKBZYL5t-oGY-Q0rJE2aEJa73U&;thLM)BF}S?ORucVw+NqN14;*ffSIW?&JmoIr@6kB~nvL3fh%) zmaOJ{QDoNQ>raZu?G7e}@zULikRWt#B)L4cRO39JoY#A*w!3HIom*3jMViLZH24C{ z`$ERD5@bmf91>Xc!60W9=e9m2&^&!SPR+o#A*X|>2v z@gIn+(raxt;uV_m&cP+}po~20B#X}CNjYUuHj&>o!+5&yN%(&*nd6Oa#_oMS^3F-{Zcdbc1o$a-o%WWG(f!^eP>;l*-*#wRO zz#YFj^Q*m2z_+?d)AX+@4IbN7@-HLU3#wykm2S!$a!*Y4u8M6-K=C$>e;I8UtR3=?n0OE99z`OyVZ1-zFjB9Hc{Lzy{dV(l1sPBA|?n!xEWk9 z$Wk-Xx{23L(flFeT{0U*yG6cFK6n%{SjkXJ6V78$GDdOMxjjow(KR-*vhf;SF0E^; zvKbmZsPVC847-6)pdymPoP+CKR*k9YIv=yx5*X0jOF#MXHSn;)U}IyH@wo#ghnqsi6)9N31pm3QJhtF1FoGep{Xw=hE%)rrRJD~u3w zJ%HWPx_viDi$#`sH4SckMku0TVJTHIeCnmqxaX09>^k#WRaRX4J9+l~I*K-TNaVaX z@Y_k8%i(_(!*_X`x0cFRVu;Zq9fOW~@K0*?+g%Gkhi4UVC4ZEK|(?g%BB4or3Z}Za@RD99LO3ktFX0tLjoirHi91O&Tdt z<)${X`pCraM@n+7IbB8KsPErz3X`%j2gn%o$;NZ-To;2r zGg<0d`gj*cu=4c*ViAHVkz;tdJD86A;PpuZ56e=sD4(=TY=~AZQqU$8O>X{z15C`rQdjRSB~0ww!la$JcoZ-3CP;r zPaQq$0qk{As%i7fYM1ai^E{?;<+G4-+fO(d&JTL)G(B_0ULv)()1!z)wl{JtyTA(a z1|)#PlZ@~O^s2YJ%--L2?3?RkWcaq@#I`;fxQE1-Hn2$3DKcQn@h0pH?Z#R2=rNjp zovbb9r+0S}TH1wy1Vw&lc9BkUIVuPPBd8dtqtos+ZC3vBB=X)S#F4PblWOiP8T z8Lf>6Q`G0X)pa?v$n@!@D{=Jap$7`qm964Ym1oxAoMuCYh6>YH(|wE3>mV zu$%az%#bVuAV3C5cIRjqz|UR{WLRq&--~=}9-AJU1UfyX+p}LufUe0P!Vg5p1P-RV zTOaLvS+vNe)9nTOTDwd)V__PaUwdz=wYz9c)7?E!S=46KE!p)8Ynv!-A)RB58F1lCfxylNNzXlw zDnAlx`n-c#v5I9#S8GKfQ!5E1-JB`N1Jrs|O((lTW3$>yvoHYpKnB0ZBlwD|A7P5+QH_%Rx<8vO$=u@K zSn*un6c2>_Gju<*Qo=TonNO0y9gH~sB6%IVVy}1;TY_u5n`;RcU1LR_cDQ+RRRqN1 zMnA%&9ASClx^D-S$B{!@C8vFE-^%2!Yu&S;@V2M#`khRHoM0 z3;7`D3IQK6=Q*y6N_%Z`+TJa8IHArNVs*^#8h|$vc*CB@wRvTik9Dg*6x?_{w70pn zjwvnL_DrO45(9k7Ps~SQ`BoRj?+xoR-sv7i%;INrE%b!oc?p6-VD;L6S}D-IWg5*c zWxvb*0Hrs|+)nn|>f-!eTv^?v&77#j!iXeTp^iWT?mTWRNj*UPD|1ZJ@9&_8PLAq3 zGjP&etgfO=obU>O1MME2E1I@R^$j;jwD25KXxehf>d`I}3c;5E9$1sh6UTbopIco! zNKxT}u<8~G<*B^~Bq!fIb|iAZR#jlzT)qDQtC~jYH)dIAuO_|JJXvLHtwOV`P&%n* zhy}w)p@}HD<8QAciqf#sX4Rq8?&iKkwYjz`(%PIfah=#IBvMp>4&XS+&MV6N8{_RO z#Xbv%UDx!BwY$}BoEJnYuOhAh7$EFY0R;6G>6&JdsLpj}@k|WTJ-eH6xG1-TFIQff zEHhf-D9W2~siRtb-M(gY>L#xpN9lUMiELxBI&=xCGHK|rLm2`_1mMVAj0PYnITd%o z8s4XGZ>9aEV6>ilnVxSrhJF74I^%G_+&LK{xOBSlRi?FJ;yo8kX>Kl|Sfq+)5gn1> z`G`O1rZMa>>0Y;_>2O(C*-5Bai-nry+FN9GD;$9d3J+W<>V0!r*Njwd?XTa|r6+P} zV6wX!&5g#dZu1FDg63>Up|KlzXui8bgN`f8{wH`F#Qre2kHQ`n)f2<94Uecju-YcK z1+a=n5Ak&9YjVp*yG=7$PYT*wBF8H`?*x!ssW6X1Km(3z$RhBsjimU?ed23?*4j*w zG}8U9QUQ)F!6PU+3fz9Cy0A8-QdMcqCY9Cu>C@A1GAjGgQEK--fVIDcHJv9zwq*uo9$+6|@U)wM2!7%Z}k!9OtD!L$lV?PO*ma6p9AAe>QbtwS-%h6b`stJX?vwKTi__*f1n04?V&_Liv9r{z?jg3kYsZ;oL%vsc+zCCt={tK5z}AJn zsi8%t>E0jJEM(N@0xf{HGO_XEvdz{{Umnp(VUlkjo-R0LPeAWPH23 zDvX@^)U@q*Ek6O@T~2$%9xwj@gg3zcAn|Zw!qlocpD!b{cm$9zGD*ld>59bgcaIn1 zH-j}#7ikki_HgpBm6vOA8Z#_lfS1r3DS0bG6n z6Zuvqi=?ihpk5yg=})EHFbTBA7AazA&@so|Qc2Bp#&n$@-c$GQze{PS_0Y;{Zg-5d z>~P<+?~J@}<9l1X&x>hqZD(x2TOzK+5rrps86>gw&lT?RLkw$e4b_URxRABHQ8@Xx zjH5ZhBLL)ra5$`yr)jo2w9><6G_7lD5JL=LM<$ z+c&Wetf)dMeuSKJ+XAB%U1Db`(u#~5@G>-EQKud8d?pTq9~myTO)BIPFyHN2_1FsMs2ra213oc8Zqn%&K&kD!U~ zP}zwt%gFYiuv6v+RLJR&RB`HS1I3yypW=Ij)pg5D`Cd6f#)t+b{n1~Te+mM`kZXD# z}9q5tTTWiY( zr)g&amL>{9u^<8n&rrXfPo-?w_(6Ouve|fRMr&B^fD?I}aO7l{cJGzk52i(V_rtv- z#+t6M_P#N+cComgb+MKvEs-wfjN?3oQb*FRw4paIWURFHE}NGsjNZjU@}>JeL~=$pFjdbW z1S-67$GsYcjM}!5H-~ktBW9VXULuuN+q@%gAg65d4ms&pv?wj~%`RIlGR7r+Iz$I8 zysD^0!k_Pb&`nRZT%4^wX7BR;w;j6|C2NZ-ol@jk$#-v!wv*%KR!rqo01AWCBd_CG zN;Qj(J5T<}ir#yOE&THXws0qriY^aAtBjNCYpJu>qtdkd-4j+97V=vmnFkCCl1RtC z2O^XEMmx(3*SfStk;*Df9yb?KLdJ2`c8%HZn#K+dOF(I>YI3^flRl?s8qa40O**r^ z#3N~3g4ky7fq{|9Bi^!;LbS8+-m7J#Y8LNyW05VUD6b~w$CizclmOghjMqU1xh9+C zS!wa_j(fmaE)UA8%Z0~%ynX~4;V*6U-4(T2^b1D0yStuQ9(exYDYFQ@w+=^6{M7Tw z>FN2E7^MBjbh3VFiM!(vEy)6C!t~w;Y`&mucW+5wP%onr?ULKUX)VOX zB{Dh{jt0*sJ;=vS1}mSAS@jPBU8VG}UNm>f`|`~yV=5FWBoojKbj><*;!C{`L$%jz zB9`hqu(xM;DqXR>FQTv`j)JzH*81;H);uw%>CxM;ea#Y;Sk*WjFzU)aZabRNHm2?Q zKQSeBuT!1)q2O(H=f>@+Xg3ziB5CU?B&4U8CgL|BTmnd5LCE#%Sum~oriJ2P70n1w zCOdXSAja`Lh>yH>9ESRe?tDKiR=;V}CABw>EkAM*%gEVg3=2OSNgxlUT9?8aXp>FQ zyj`QCSr|eESKIT9NJc-p7!W<{s;(tfvX+T`_Azw1WchV7wF~QHx=#+;%MH65fjzTI zKX!bw%O*(V^f)>0D`Q^p)OxpvS5voiyEoGuLn8dQE1iTopO2--Z4h-s%1_y?Z+=O*Y3-j!QP0)poQpBqXqm4hWL~ zF*)X}cu;&meNV)iG$K2TZ6{3;TFp4~B=g@Y7Cc~(Q|cB`fo!-=C_p z8i#ET8^Jy(@iq3RWnhro>GvYh<0`SAxE)E~yMl6f!0JtOwsGq4e`INTv&Z&FndK6O z$C_eN0F*8d0|y789@KcI!&&i9imZOh>8DAe*$I|GpSvTe+SvQWfbY{8u5#mAyO+dX zAJzOXr=;r7Hbjk`(iPhxDxRc+xF2esMC79$-*){?s?|-oDBJPuZD|s<=ZE32wfi(; z<5oGEQIgTTjUy`$u0oUAop+|#!Qu}RHM9{dw*LUUx1J^1@qrTOp~q6kk;yeSv;CR> z00{1E+62@;wLxohhW+;Mkv)bFIP^7Z#MA1U9)Yjxo))&WVSKQ|JZ{7kXGRP%M<9}L zK9!w1GMt)j&Hn(JC)#rB5}UrGZ{mwT>{Pb9nhh{AZvg}?(>t(m&-JZHH2ph?`_t5Jw!4y zo$6wiLZMmMoN&jHRbq=-jdiO}5lbGP&wUNGkin5ajTEaMMswS?FmV_=-M1_ zsV(m|?}b)%eC;Hh@~0!-v~{?(-xKLRBE6SP7L8{#YVhvd%LGaT?9V%j@-f$n)|_JQ z<=@KtuQFuXw<(FBc#2(LUh!0oG&0SmM3&(sjZnKsoy>XZxa2onS97LouX(H6%{}a4 zZmpgKkVS|`mdXl&pW{8xQC!q^`dzNKsOmR5QMZEQOAbX-MfF7pr@_>0Ig2m{@%x1@YauOCCj9r z+DSfN&0R)K%--d)XG^JBvsP&3_!IsN*gbw}6CnKg53;&K6R$ z+WucKlG8)~*WxwB@eZ|rdk%>JwY!?w8zz`DZ+=5Gi|POv&j43f;lB>(9}jgnE;h+4 z-djc`xj;)zFkVz+kU1^sQ%z~F*lQY{(&|Yx7qF`&>;PpSarXKzAdgz|AB$fUf8ki_ zTE3xmsI=&o>l9F|VZywPfs!~}g(K--&)9l3aS35)E8n&C+fBRo>VAtks!7zFvObQ} zAHv$3N3TP^*-;r=1n(@PZp6tjH#xdOQySSZ3!tQD{flUE?I50DB`=r%`uKdfPC^tv}6xV4z!wdo({dX z*6fk4mg)s?Mp;WjpamPTj4>I-b2nESgf2|v#?3y`z^+%KvE!1Y9(#;Zc)!Q~8t@(D z+CjJzTW=aLB}JEV;lA_it81q58(+f_J`>MxN$L^0CDnVTv}<^5^9rj}_fmYmj(qE3IB@zqU&y zylj$P$+0DxRpej~x{Hs_yw-mY_`}2=In;HFZBWZ+42v5_j3e$%s)T17L!L?ZuSxND zh%^lu?_&6t_PTrdBkaiFWs0fEUfhx~TGpq}D8YNprF&lM$WfOnZRlY5axW5J>$-o3 zVt_+$d8aeoT?fQXA`nqPX^+-#mX*ffL&A~OMC(f$?3nJ_1sgEOPX6AwW;gc6jqO?_(IBSq??!~Aei>bM*XK4UAX-QDe`KTL&O&v zK9MpzUO*a2CM?<7Pe4WpQ~W-Mn#I$8Ctu(AKTf?sws76b6>YMHVu;^#?D(94&p{tKO`U%en z_KeR}HNa})vW(GV6?7-ADW4%4{)6~E!#D%VrfH0zk*j^ghAX>Q%8 zP|S*(jA+BVE=E1;qOKy7ry5a(lHK>!_wDFs8gk}xZ-2nV)irHP`wvmnBE4%Z*H1OQ zv{8)iLZ^Q2tPV2A-n*Co0EBZ?)~>aEUFMx-vWQ%Ep7rH%So~4(4~sSZ zGfbM>`##y#8hK+PRxFFYII+M*>66zaSE5_^n&V5knhirxht7iCWo5UIF`_X(Qbs$m zgFK@0|)(e3cW9M&WEOXOay((`=@X|=*tp40Iy@cpH{n$_V+|{bv3n^j!5F% zu@_)T!ycpn276bJ_;W+?Z-#s?t62DtQ;$&b2BUctGt5^GW6G6|Fh1&SILY@l>mDT6 zCbQP{53MXP!GloLw|SOrT~!bD|eRy#=UqX3$rrQ3OtL#15(kWD4$nCf3L0fsD_jyVbs z<|~qDaNU2|s6V!Isp{X@SE+L(NgSyf zg6L%m6plDi(}C%l#PJrdA&B^Y!rFv(Epd8)r`|2|W<@>1hbeIEWq6dn?dr}x??a9lp60R+pRY${ZE>iJX>aC&EJhfRgmBHD;tCFP z+ZEM#D^QXf$$UYmDz3|Eg|tjCUtcUP-E4vcp9>W;N(y*;HM3YF-uQZp$k|U}|_Y=z8K75V<0~znl zMMmkR%l&9vednprYT8t{dS;n_cXIH`x0B_Nh5_4nNeJ(OfIhXC94~dojf;&_M%I${()ge428uFCC+9J%DRyD} zB=NL*Rko8xyMj9}2V68aagbUme(JH@&mmLjeo>n7pAPtc#hPBFt=sEKBbP*+=ZGxh z4$dN0`^4w3*1frP8%upc$@LE=NbZ@)WL>Q3<$>4P$m}Z-VEo{HO%T7U8&TswcCm0N#nUoc%pen>QQLggTWLFaBSe&B!J>L%Bf+q z)SP{I72zKSzA)*HHom>~ z^E0VZFp`9xto6M=SAF&`eQ^|Vi?{y(Rhbeg@ah%EQW-h}(Bi0TI_w@JeM)A#Fy29V zZESqAvwrZr`vO7zYodnE^GdX|xM3a4(dtF~vY`yl%eQe}`$pCn^v!5%I@XhM4ea7E zZ*^&KjJqKl3n^0DiT?m;h(3a)Q;YpR@x3~pQ>f}1Z-jh7Z=mX0iZ#u_4y`*Fxn0gS zkK&DYV1ZtR;t%Y$@ja7knyNAzeYX*_92NV@6C7ZkLC;F%d|Bat4|vnZmmVnbFp783 z;#jS>p%JF=#ztQ3c_5C10M)w-TiNv;EiPKw=le8{mIPrJ2Ol>=LkxrI$*#)M(?HU-3+oRLn|n<>>G+it=^OX8VtZYA4sbp$_VDKE(*pl;m{I3Ad)9t5%Q@wu_SNau#~ z+Ii5({{ZUak<@vcSEnZ+5m}c9PQQmv)-=i6=CSiOM;fw|Y%&#d{6{?FgNn~O^w#ld zclwlxX7Wv#ghXs%B4vwby0(6qu5_fEf7Z>8Iu7M6A(J zt=Ie|=ymy?NSjOYinmD_@>ya7jHt#*^{med_=`*1p?_*iFpg%tNTri;z(N)^;9$7` z^y7-??alO>y_^@9=4H3j{Qc3ORZze#GJ2k;9k{L<(^N;&{3mG>G7~hi!?|&`7*UWj z`ZSC|1HW3yYZn{W-taa9&+Ap%g9#vL9yb7R@Iw%8^-@STR)j2|x ztdq8u>aMrnul1?RMWp1L>UR3ihGEthSGlv)WNYJO5q!x5Mdi!D$Q@T1J8RFT{?*g< zZ70K?CBIo%Gni(uQW2q5!p1YxED0m9uTHYi^<r%#J-K850DRUapD&0t4-V=Yc87GIX-m`PZ%_(mUBrhxjx&t< z(x-JBORc>%zmXDY>W}}>t*KvY>8fAHYh?x9rko&Hhuj`fa54VS!jnsL;Y&?hSJdq9 z^!pI43f|2de8Kjg-EJ-Y+@H>>>RQd*`mU=L?vpjOfDj@`q^jX^arN~*IrgoaNc4>x z#5dj|zgyeWb7o?dk14bq?Akgg2d#fP)2%9ZOGj>-y`OXRnNz-xQ_H+R;&J0WW(^Bd z(SvDFLa3ftAq=tbs(NG*kUcBCYrQ{6xwSDbn|B<|i&&EgqiNc#eNl1v*9GI>5+4b8 zTTSs6fd($y&YI5F44u+HJLChLBKGtKw!8Q6;s*A)axX%x}R{8xW08+)=e`a2{{Z4giZ1m{TgKL=$t~bSNSzE|vB^>xa#xN?;}xAOJzrxyMJZV& zXRVvPx?iZORf?LWHFo~uUxykWinQ+qs+XL8DqCqV9Kh;Eg??Jjy-GCq0%lq zM+Jw5Y~qUA);Ss`W6|GYKxPNOBDvioQ1J1)($`OUH3_4PiP9p#DoUR=?2bTT zke^gmK1s8yk#p4YNgUO4V)-p zmTtA;-yA#{@iWA~6z%W44>CumrOZ)W6+2x?+Qq%Y2LN}-HSZH>wzrr1?rk0m+jub> ztK`d+Q}eOo0fFO+)~zl|bn8ZO3EPxwl1?{ytc8<((4lN>6Hc9ud8_0RC+W79uct>RrL zTJa8{e0(ve-9pnQ8P{oyCr3>6%C>SbQBRpmmQLT2*wLkHqK3P!UF&{Eo8c`w-VHVh zGA|BsK zR?erq>A^K^p11Y#6jJ5)j-$c80noe~;aid6s}C;r8K+2^VkHsp!FI{uvE*a7TCsEI zXj;SRI&F!TD^0h1@KqNh=2FM|{0w&h)g4tGG@JV<^@()rJhGg{=1B6m$Cz=@X9MY7 zev1rtv)fo$8{Jac7*S;|;hI(;jl}-|axh2NIIen=br-a$E5D!LaEv)!qKwS~Z9?Kp zZAVnoV}>cwxpS6hbAZHs;0I4kV!8`!WU;c-b)jgf9ki<{bp-kOBw;XfkZ|1g6^U;8 zkB4>3O+QD1?c~%FX7gY7r9j+J;P4X|9@QA0T?>gyLz_RGuPETXw(M{U8rP!1O- z@W`y-uKA$-KNCqiXw5xW#J3uJS1V+#3==yd{DD&>WU<}z1Gt=LsjFHH_O^|6CAONd z%9fEyx?oi!W%D++Pw;_B_WM0oNYvHkj_DTaJ&Hlzb_8R$Je}P0+nVMzYkeEU9yq&g zM(TJVYgnD4jhU820ol_%$m6F#aZZ$D%H=Kp0O5jHy^+>vT6VXlzMF8Cmd}543pLp- z^AO9AGil@k#1aR3#L<-M7Hz2bt4%OTYksO-8*r&qlV_bj#gh z@@JgGy&N7GHUma+!8yPg=Yw8(;$IW^m&5m#R(A8WklbFGQC2OhYKkP?^LN}EYUjT- zRHM$__xbtUA4?bfOQh)9jJ_=K1^$~X_iz}})LSzJX#g7&a-YAruJ1uzmbKwcPWg3P z%|0j?+gV2z+mIf8#Yu9<(0~WND~Ht5%E!anlu>G*+4gI2yWxqv*(EQ7<`(K7JREdU zPrKLR*R8KSX`$Xv9h1N#C08qQzyL`nk+d9f+cj-DK|8yA`z-=~>vlTLD(SS1Ld!^hYvzgnfEcz;8d-%s&WmU3L`R(D2u1f%D6bukd6e54Wcaokp{ zn!keH_rufN$s`j>t!o^GcKNRofXH#!u2|=;E18D&()Uo(wVfYS+vPb{h-G6)i%2rc zJwRM%_^TMH#V%bh*Ijq~#+q+kPKQ;}Y$S(L@lBk5ZlfHA-Bp!FMpTHEc=>>AWOJIr zmtWSktshjERnef+?(KqXNzckr3aAnh+>*?>^sCE#rQN})YS&=6(zOJV8N+cBxX$1Y z-f`83y*mE@#_?+wTHU6DK0f@o=K1k!HYnRh+bXe^yO~vZj!EbOpsH7m{$_*He zSFg&Wlj<^SIaG6QPw?_gaio&mwRTbqHn;HXV@=eJz%fXql#HL7q2nMOr_}LTcYhDz zzZcrc^RDmiRyLAiM%Hb)A&KW5h^~f9eKHsFAirdu;%1WG7f&)oW^l~x&A?I@KHa&c zXhL6W2Uygkx;FO1&9%24SD0i@aDTjjlbX76sULxpD{Rd@YS%(bXS{~dMa*{lWgwL@ zM$887fc@U2HF>V1r(E9nPe;>jr~5Kby5{CQ5b?!=Tp;U$#YR0V(=@rXwwdo^pUsIZ zg_J-Y%+c<`f^o*toco;DHR0RKy(`4abE@hPc^9x4?TqXR9%u{_FnP!W7(H=Lok+QJ zZ~p)c!Ch=R$HICO=rA_Ct13Y=dDCNRvPRq0Li8B#?hmb0xzTN|Ehp9N))<}}rMZm5 zfsqq(r+0H7%0Q>uMW}eUMYFur9V51RW|L@eVh%S1QakQEkbO_JU%b(*tvovO>Q_Om zg7Op{(oN=(AxwXKpmNnc=aJ-u|c)S z4B(QXMl-oWbpHSv!v6q-&&7Jpv>qV6213i^pE&}BbzG302^l04>zcZ7a;F-wR(Jgn zr=`V5@_4;&ikZ=>+mvlW)Dq~Bax%FK=OHdKHCDjfRo2d!|PCD&3N4_eZ6ODx}BUc`$8 zhy;w}?%epmG2jwdbnjE_)aA()ujziHgu9-H7MbDQH(#5?f;63CgEB^rN~1=(5*0mm zf^+`>*Q~uO!G0KD5n8^1F4oyD=57{A6AihPU>=IP-SD=)eZ?$k3mv3#P)|%mgdc@t*$Q6+yujf1ysoV{o}~U zAJVBs;v3C3!nPXR=_EF$>E7l8^AwTW0h1h(8)*6yR<$pRIZRwP|mwYEp~8 z^lQ0bw-H@QCK-H&+}P=WbF|k@uGm>Wif*Nv=Hf`Ltep#|&E`n#K=VF?arLFYlfzym z@m02+Y+rb{V{tUeh~|)ds;UnoBocAo6sXnqc9aKF9M??G@cxUX=tE74)u)nGxM|u} zJIlqiua+eAQbuvvYUlhUv1>jdy0zDAZdM6(Mv6JkBSuvLHspU6Pvw)|s_ElP@J^9o zb7u0-J+!VukW8_Stj+R~&OpXJ{i{Y>WVf}rxq^AG?jyWOZJ3OpGVPG%e}%Cj$?b}| zlhw*!E}eH2SG!|B#CH+icz4AXpV){R(Y%eXD9c9p!jL-g$3DDPUyM9F_dX7}w($0v zv9vZjUMr$W0D9!r#})4>R9kEJBukHD#Jmr!YF-Y%(*7Un z)_zsSiKCm8o?>$&s};y2j2=M-w0uuCo33eE4x6jm%?0hXz_~D(ii?+(OAv%|5M<>0 z;-c{$t97gE-Wam7)Aq@$K{dXlXDrMu)j$$V_UM-wfkK=%)8UCbk@8>04@9NxC^;C`% z)=^N3w{P=30%3h&;|qN~yr{;VVKFFvVIn&Kj(vbqe;UWL@dR4;hcpQEP zz{{jrCuu!8j1PQQgM2X6zAs`1a9#jP9JpJRGb6%_9o9_);Xcqny zHvUceFp(fRGel8HZhdj+c{Mn!E5psxZtYubS5qogInt8T`bIyATTs(HMPcD>I9sj# z&Y||Jn56))jR4%rz-M9U>&_{@Ij{$UI{e)e4aJc{fR3{;B@}z!akOZ~ENa)J(A~cXL>_mor!b?!5UC#6DFjI^gFA z@Tw@XAB4LSe|e>!S}^_KZkVh4X(dC_<+xMEcR%#E0R~` zCn_<AG5rp9BH90lheQCQ)q`)ypUd;VQ|`WjWO z$lM}yS}&KSYj(GA!LVFjN{)jBM&(G#DbLN7Bk7Y>-@&?$p{MF0gfPviO#WI@a`zGBM$;sYBW6?Trx@>=>9uGqW$_X54f4#k@!bcz zjSC2fF<~3(9|n?-B~Dc>d-^jr?;F_v(a-U3k2Fio6H<>-l52@A%BsT>5E-%5HVE2D z13dIKqho!hY5L4lUfxRcJ*eCZsX`c@F~`l3!9BZEwfp-A@cy9{^pRT+v;^UEvk z`4K?JUij(KqrZ`@T76de?b7ycL-A<11}}WBXghbuWa#NTca<;yN`-mOgA&N&XI5Dva#ESDV5k$IU8AW zgPabgy*I`2>stQ5r(fwBfq~W+l2n#82oBM;l&>xFWO`IOF0bMVw0$xgW`sg6SgfJI zW>U;RCj%wOVnXy7uR@(kP^Rr^U0Yt4xr~yjC3~%Y^QG178%wsH2xhsumiBeel7ncG z@ItxC+Pi&yaZQ%SQ>*H_1bVZTo)ufEJd)mAYBK7WJaP5p{uImAzn;rgw6@nEwzrbt z#Uw}r%H8OH;P==8~aO=&)_VQB;s#*idFe6O)%QVvi1M;|fhJ6D_SY_A>v z0O7l%tCH_i6?K0PX_xwMhjiGfu2@ydD1l&sY6^ffucsF*I#gOt7}T z)O6dE_NlcN9(}-nE)|IF401p@B;y&)cDkjOo8tI&jSd^&8s-%@QlSb;FviHvdtm-1 zxt|eyPS8@;=fSoXjjP{%xgl(-!wh0s6lJr>z#%~Aj%&QPv$wpHRn~RgEqB_YqQ=fU zX9Or5C~gCop1jyn}+lq$ToE^k-#bR0Cc!4}q;n@5&1b23^ zY1am0<^>7!DllAiJBi?mw__f?9;c=0mTC*heJrx8ADk%j89>@G#y02Dv}x%k_q+UF z=6*=n)nL{%O)B$D)-E8rSfVmYBKajJZs3Znz#zv`yyvwuM2h)tq`lNFAl-d!=E!4g zY$3npnddw=CmhxWu@8)F@9#BR3nrI++cRQ8BLgI1STNy1=oLXE4r@wVOPk%1>sEI@ zT#=}cAxR9R9#Kk&)SM8^-H!sHQ+`_i09#zUs}vW)o*ejjEZ!pUY^{BHeJqa1CHW-X zjK&!7vJ=rj_25@`Z!P7whvfd#XjbjyjpL1u_Xb4;SBwsf2Lq*ZcQ(4+mG+;hT0-|% z6T~A(Zm_8Yr;@<{>yNzLoDRI#S*ZAa4L3!#)Na}CroCYDNp1n$;dxk5j_|l#3?8RF z=~Ql}wH@30{XGX5s4WT+>yxd$-IeIJfo@?JQUZ5K(GWog2MR_qFgfY(OtQ4oJU`+w z7l-Z{;lH=vb1u-R6?rP3@Eno!_o{Gf+O*DBPSZ`jyvdi6NP@`>2o4p`&CW(S?N{bH z?WVNXmo6IC3m-B`G7PGc9F-BF7$*nj2dKwN%5dfPS71`UtXq9AU%0f7QSg?eZeHXt z+kST-gkTugVO9qnGI_;p+TSIXk)X3%1)6K8jwNLQa0&AVu5q2bo}RVm8b63`E_KZt zL(rj$$4oF>&4iRZ#ZDDm_2r8aIL}(v(iSM!M6;J}r4YK7Ln)JFnQY;SbH_Ls7|&|i zP4`kd7%JV$47<6~)U zdlil3_A#t6gbuMTbF^Ww7>t(5=ml|JIQVmO;(aq!*L*d0x>-piwv}UD(nzbY;ISj2 z=R6af`&X$hgL|jw(doV$x3s^TPPB>Pp5p;yBoYe{2`r=Vs&SA zb)q%&nC&k0EiNnTvpvncOx{8T5wIi?BXuC22qV2=?^Pwt4vk{HFo)aXHPZh{TV|S=&_EF!>1)iaCc9GsN zbT2wT&gC2cRY1r+_#&}_cXEr{{t2T?sy=n`PN!|~XHUBDOhxCP#JYfvHE;O)Do96A zPIe{^-Q7-mSJF3H{nnp%bK#9jKQ7SN2ZA`G3FH+8HZC`3h9sO0eX9!S_>6exR=2dX zvc1x*t&-N-ZGcG9%E6oo2sy&!a7QF(kzE&#HLIN`?RIfn3p=Ze5gnlzF{^R%F$b3C zjFEs1cVnx2WdyaAuHE{(ThhyO3NdNRw@>TL^FIvyIn}%e;_WM1zSPv(TfroP*5!0ZQ#PG1aLYFdnTDW~7u#G#>58fNpitYnUZap$4MdB1^f{w3>v zH~#>HU&q!#qPMp)!3%{d`vReC{{SD}BdF_|+|V^Exn?#KX;IojH79l~+mY2|AT(&X z0F%)A16g8cHu>vH?Ip8be~F|a7_V^}+Ly!VyiIh{=@6S+a>*VbVX;Cx0`i7ABLH#+ zPAVnvhlf*H)cjjui4^c%J;X9wWJe^W0ByZro*@kO1J|3T39V;SEz(vCuU)u#WQK zq>+HyW)ZgF4&Yb=xbut?=~Djy!f)ZP0%+D=74b#fc9)F|j|r1-KoLPFCz8xbsgzxnOzcDyO%uJu7cu++63S_OiA2+t8I&Cu{1D zK-A{E(=IRX;nb~w+^=^ms659=&UPowmFft>kRUry=)36sKeJC@>^PEI#*(@*moO6cV5G}{}UUe?=BxrP*mS*Lgh-f#Kl?3w$(9OE5-8k1Pp zH2Y05_es=sq>Uz%$+aOsb(TOkfKM1)?#EDb%~jUyX0z~Fy0y2Od+Dy)GV-zmF7LQE zDH}%YG2?&;HAlpr6ux{NRcG5f(;!C{_2ttmn>YuZai z>3-n!cSV~`OHa|Q?vmqIlgzbM4kcAtFrfU)f^b{=+~+*kEq1!Mj5VukKM&knY)dvk zmm7eJR_AkeEL$MgqEBJ0-C5n~dVQQx+(`i{H)m{Y+go!L#^AU+dk@a5Y78$fts!kW zA-%WHk>$4KkYgK|jB}h4Ip}@rVQ9;lEq+BgCYoj^hGOww_C?fQTtaIp5=N3mA|?t3 z11QE=1t%-VO6=`5TWRdp+g=b)BT3~%Iy}Z*%ODxU4&hE}w0UTOWIs-GP`n+1$Bz>fpj%agWEP-ck%N?+lCv{W z({tCf__c`Qzwo}b5Q@mbktDCaZ{8vKGuSElM_*5RH2G6j()7E34_d(&odXa`?NHnR zGRJmE1Y;cHvVXF*dtGKp^{AHq;?mSyD)J03w2iLJb0U+-_w=iQ^^2V@+QVPcCX0oW zdq@w2}@D2}JQ$BJC|r^MbB@g1g@;ss0XF?Cs%H;Oiq_pC*S zngH%kwg|67&?2+Fu(`k1^$5+JmyAS6yCsTU`$%Rj(-^=#I&)r!;j4@L_(rmPl9yLf zNRbxP0=klPWzYV1;lSOD3!e3>OV^5jJ*UCv1d1dcf7v7LD~{iUz??dASO#tPaQ zmcBXDwF{dKcT2fh?PQ(phnNE6VPLKfGQ@yak~5K0%c##_WYn~2tnM01rfsE}B$7ot zJho5ns*-c)0pwIMTW!-U^k3{);I>CuLN?N<6LT3O+m>cLap-HC)ipUZ3pUm*G}9z< zUnRp8P^MKohSgr9X(K)O^r(`IrD%q!YI8czhG5loEl0$*7tWf2F{F^B*-twqg69O_ zaJ@LLvJ>J{tm@i~T7X#}O@zxD4eW(gmCQikg(PH*pQTT#yjPHF+RnddT1!NZQ4tFn z+@Cs~>IPYZZQ%DA6{O2^c9%0gmWZ+1$sFphxdgZvV8CaPbAUmuU0Ee%uT5>_5?9rq zDK@9#-;5s+bp1cWI-I^8xwcu3p)9ds6oN2f-N{)P1B`l{@m}?7;u-WW4{7>#t9I*i z9;5bHrbShDMRKh2rZJWyCj@73BDxEE(B3T5E|ftW=TCciVgxWu5uT&wBn$;O$8%VQ zOPzPaHt^ayNG7{xJCp>wj6XmJ3G$8(ax1SBjg4glpraM(=hoW)0A8jvsY(sECjS7W zH^w%$Ha-=*xYn*1*$rKH#{9qU7ywHii_YwSbYi9PR-vU^={om^^%6za^to`N-0^3!xnebJKw_u#?f6o@-P?X z%Y3JhNCfvEjcs_!Ikim{=F=~&CyLVE2e_2sa=H85AG&_&`ik-&5MHgmyKx2lHby95 zOG3P?krxDv=lBjsPJasGP0f#ltnJ3B9CF*iX4x`M3Os^M?5M7CNBbxEaf*r*IjN|q z-|p-xv-huar|});jJoZtmb!w+Z+aNJDtWN)nRkRBebR7oo|qL<;?B=X(@~z}y_|Py z(#^QYm;*n&Omd)*4?GTg8m(bvZ62d(tLRLY_S(WF&)J-fiX$Wz1avFAfu4F)x(1o! zY5W#ECT=2{OR3$B${mQrIbtz`fK+1xj@43%jN{1ky1IMyyW62LZN=RG(!kR$Y_#XP z)3oy(*AOz^GazYEBn$uzxPiL^xzBS{@9aD`uj`kvUfc_r<+Nvt7;(IS#aPN0<-uWq z5238j2x-yVzPsW700qvr)@b{rXAdJuBc>UZ+tY4NI2AsL;qM6OcXC^4C~ilQB#(9! z6PaAIDuv{pPdW6j=e5gDO3nX+XiGqNmy z2n3Ad7~;8zj7_9zdbrV@y!o0o^BXM`Ow6IzBO8xUIONvXhN80m(6(8xCttGKNI!f& zSjIwaOb!Vc2b}R-()i27+H`t8iKVPC0Odd$zv=BOH`-+@BOq2gP({OrAYf-bK{auw zDYWp2SkZ#4O6scF-GWF59P`d=3tI6f zjGtn8(=3Kr~v04y?R$II&z%(Z};BaG~4>9$ye?-XyoTo?ClaUJ)Y3S~wYo&8ohE zhhTBfHO}eZ0z5Zo@iR*C!(X4ZT3Z)sl@$5GqXJSs-pvQvz+nRS56_(n@3p{Skt$P^r0Oen^w4&;{u$BD#qH*v z%YSWnF34CjB(bZn$T5+)oPF*`pskDV5$hVhy{hU^Y3}x@sTw?>DDwdMw*}yYQtlrKg4>+hjsgSlGf_Z z6Q;rgtIYB-P*an@=Om7JIK?U$Nn(A(wYPqnY`?Cg&ZjHU{{UK^;iB2EgI`bAH91<< z=0dj|gm<3o8Fh&%0z!^9PJ!-Fl^_^bc^6+@1v9=euhUN3+Lmvu}#EN%rZgNI( znz^It(dwF}iw}%%P3v1*3D53`gK!EkqmW1){+_j?Cb1r-ZFM-WQYc`%-6U@ciCsf^ zYqT->dXthfo|Vrjq}r0b`uyFjUoMxqc1>E+?@QKitt4omwzwn9wcJGWpi|~&f(hXY z=Z&@1cyGnmDHryhpAfwJO2)HKG8A@X9T7PB7bn=0UNvv2XkI71)U?QNg`9Tft z+9dl}NQ&}E>mo#fc8n6;Gk{3wXpH3QC9X|@s)NY`MR=k4V>hA9BTddMTjLeb%xB;Zc0Z99*2OX<8 zu4m8J$!Y%p0Mh9$Q=IY6kEv^#LRowtvX4pBln>tsN|>$i8IuQ%#k-C&I@eF(FAHer zMbm}-)Vhu9IEF>scZ-E8-@rDECL8=~tFYGenDyIO^?B0r?)KQDvM>X2R$_o0ZBR4s z(ABRF-stjpHpf-9p5IK7ZdAhYry)0$0hqTTfcc0SVO^hDlZUgC{{TO~dlM>ZElMoF zm3%uKx~;E^nrRx{gr#CEh&Khm!tmq}0Ub#lD-s_f?_Zxt@cyANhA1MERxz@9n^>;T zo37K?58@me$i498pN(hKZ8RSc2ri|%j9kdQ<&dfU#!1>RIl(x`t#)wuat{o_ec;U} zQn(hneU>h+WFyRyR?ZOtL(`MtZuHY;cY`%5!+nOutwiw zjzhfpfmCi%8A9#OPC@3d?)0rW-%r-9=V7I#r!R?Rt*4 zqNbB~6`qTw+h=1bQ#_$|fJo%y)1dE~@zt~O9JcfLzf08q$!PcB+FL}bW@$^9{&MFm zp_snheN8HGi*55;@AK1Ql}jxTN_|esIV98dOXs?rY7s8gi~$*ZW^w|6G24O$Ijs$9 zeNR#GJ^b467TQ3w5nJ3M29iUczQg7qV>l&8UwY>>?LseydOobN-M+Palj0OO6HhRV zJFD;lF5Zoh0II$U)-}Hp=z7)1#4R=-58Jv!1W`tO;K{VPc-V7;zz3c|p;D5Js{MjJ@tWyNSf z6fQ~miUGP%y$%2#i@>gPMVDQbY@*fft>M$HZm?mLe)?jr5SMaskUnk(IRoCiDeSK_ zi1kFgzKq%x+(=WlFPAA0>yqagKAzRh%X=uh+4T8ovC*npo^$aR;m?7-D9LZ)-D2F_ zLudq$HsTD5#0FO6AH2Bf-n)qGL#Oz< ze+-#q@i_ZT&2Bu{p;ZeAEOOCw+!cxAt}uNopTF?8iacwjS-zEb1PKF|hIEjTBo4S& zboolLZpg*P7j7$8xy$&L>sIijI%c0O-2QvM^;h|lJU&=B7`(EYLq^*PeeTD8>bgqLOuw3Q@hkVbLTiqF&hHFu%uk>6{R$9<+*JZH<1 zmBgh^(9BLwNya(pis!x@{6@3*rJ(qOUB9)DM$?4NX9~uCa8ZiwZljWOj{OG}(CE2Q zbuDzBuh(N9dre2HJ*xX#@P35_o~fu`6KIy^34;)WZ$;b_f_9V1)bxy1QE|f3XvKur>(iF&_jhL~dUM*guC6rC38tTAr|IH(Z!Z@x+GA-MRB6fNt0)*%2OQ_MQuv9ac%JV` zz3~44gI)!+c{kq4ce$nW81E^&u-ms8;Nt?S3!2cqkqv8hZcQ$iXR5X3o!Pmx2*yTG z@|I^-UT_XT!g~tEvX4p9Bhzec@pLaCEYdh}wVxXTcl*cJ*S&H+2-me)buB}~s~3@P zZ*3dg-MGnoIC+rxa*qRS~QSD-f#V1Lgyh z{oH1>mJ+2X$;)+ZJ$4*t89#ULH+(taZ3^F8-xi-Fa;i%e)T~-K(3L8|0pl!Nr@7}e zmmV9s&~%+T-W%y`?V!{g2~j-Rldk2<1Hoc3k6t}0)ZQw(hsAK|G2N%x-I`dzC7H4N z#@yVg&Kqw&l|PC#{X4{(GU(b-X(Ezf*7LCi_Y6qP+4+=p$vtXPs-&eYwDay%q^Ggo z>G#?#=CAgPtHC|gk!^}qEF+Yi%HwMvychyUYKk8bYSA`}HOoEgsAQUXlnBIawNIw) z?iUywaa_)wWp+pQd>V=vRC$7Xn0C0ClnvQXppHm5&pc+VSZn$eCrZ7#A{0#9Gp^|) zCjcT24<8A(Dp$?f!kVg9=C5Fa~4CIl5 zd*cGM_G%Jcf3NGQF!!`)F{}9F!?*hGiQqA)JI!rw&2rX_nLOaQShsXLuyQf{BavM+ zGQlQ~sA$@y+|x+6OXa4_G%F*n)={_bs<%Ax*1X<7hQAK{FXFWE=7(`3%-2d)r6vCW zc_w~fMh7`K^zUAwscP}Tad0i~))_7?VGS!NC1jCzeEICl^8HRa)#8*RIIKO|w)X3N zd*~#(vy{5Fdx(5Osiohva6ueuhc3;vIc>!Jt(8%pMg~F2tmwQ?W2Q{)q}yr^x0bO> zA!KJOBmAMH=Zq?Hab1A+kjs+K5R%!aHViYJx*z^R+Dkx{s7(EA-Iy-?j0LL@cp&8yuF4=-hG9O zs-O(OjC}0Ha1Lt^!cD8&X_i_Rtpt|y%PX;03aIkNTXGfzgd{TU01iQ|>(zowEf(KP zzF0L&4LxxnLAaic5L6pT$OPk)jysyGk%`;~)D=Az^tVVfW8zl46yw~=2zSrTm)b4e=ySX(TPVy*L zB7}(8ZIgSp&_~UXz+iAduVV3jqv6dz#(pHU)~~KD=Y2g17U&FNa>cf=UJhH4T^O7z zqf%ICw<~p5*K2*u&XsOxbM1flCqpDUe4aDYbVs$gmR!n-aVZQLk#H9$kbsU4r`E7u zFZh`Fb6dW(34AUkS!49VF#tb8nHbM;?@WsAbc?+r#%*HXWO{jLk<)WN4*^)730^ql zU>bv0(RHbG-wkU171q)i;hss2p+O*FC@xf-XCo)C_qgp`w4#>o&d*(Z%_S#ozpV_7 zT1{h1i&60>iY^0MMIyC?5dxd!$SoLk=Od;ujEZc(4qI2b)HQpkB#9@th{h$8A>{km zU^9kRzyMSq5bZ9e(r)xSH;`Dn#d#LRED~8{8_CN2fpd}%V_iI+B-M0FTe%wIIqh_` ziDpNSGM6Dwnev?N3!D%+t(4`<8B=<_KlGar;+wSgU+_wLypHA-mq?rK7nTiqByIvT zO$Z1RaV@kA4yTd$))tB39}VkTvv@~XvzF#ILnt>G+-4tmCeimsI6Xb9AL38M--tdD z@imm*8Pl&d8#yfs%e_Vl9PP*}xBv;{9-T)O=n-m~H~b}fAB*L>kVC0hxOLsLE=UOy zsRJNxARK2k(NdLKG~+nw8C|PAZoe<<<${!Iwz|jeHFaGwD7-nR>pFZMR-Cekq)#na zTO#f*^*u{Nv7&LM}{mk zn@v%qk58WE;<=JpG9r_9cKKjnuRsq%4l3@kuW2b9-WJrZUdzwEe=WHYlby)N83A98 zoDA1ICt90?ps(+5<^KQxxke86eGmWBqsv|Vb?0|I zD_=;5Sg^LRwYG)}80_qJ$!tzrbC7bZqZv>+&VKb}+<2PO@B2(@)=Jaqtcu9e0~p=& z0V1giG1tG=wygX$4!3`2sCbSb@QWmt7LCYfW+X8vNWfvY9;dZ`JG~N9U)8_hpQJ@~ zMwXX#s$1RLM||->8E2RzAeQpvA-6eh6^jwr*Czw%qgm0dt!|R``r+P5BVriE9!P!8 z1_1=M{xyOIIpt!YgrpLV)!)N_ujnA3w!@kQRZshv{gXRv#vfi1TUrEsT` z06TdlkA4Mpv(KltwWzEU+uGVkYNBL`i^|+EQ`jgSPdUa1QY+1L$Sk#)Z|;)U?3!Fx zI8kva17I0;8rXqk4}^I5qTR`vz-`!=#|n>RZ!M%(u>z|T26)fn|DbxW-i!&>dS*=gyY zvuB?$pkiF(r_h|_)wy)Lr`7HByJ)5>HIo?RPu$2@6_JkY;Xx;ya!!3Kp0m|7DVs;r z{8OiX@Jk|vMQP*QL+@2}I48LJ8qPlT=Wp}tulbavZ6Ecq-C02&hrhM2uP-ko)1Kj8 zIOARzs9nc_kfg5MdR3iQK(O(3?bnKROL?vQt5A?TscB+oUG2{saJU3lIP*MqciJO) z@|^j~u_x{o9E1u^e)f8fq~zkUF5ktI>RN`0s@Ys7op4l_kK`=LlZRZKhsJtfjxkxP za&1l$v+w1hZL4auJDq;V#8*Bb&}0`6V{T$}L|4l4nFWCW0mlGj=jmJqnLev?quc2= z;?q-qwMzu=BLgIXWn;+Ol7Vtb$>a`|>3S!J&|PUdEO%1sDY985N&KZM#0<*2PYS!4 zKsXueS$-6=@Rx_Dm}+X##c*CBwbfP|&2PY3X@^%U4X)Dv0KG`r zj^^P{1P^X;>0L*Pp5FS#e-&%ZeH?C^R@yKl2%v6PU^&Sd&#}c+@V|((JtI=M(flDD z?a;ci^P-uuOEF+ElgL#EBRKwbRJqma#a`aF)1!AS!pSK+erH{)>KdKJnp{I}@kwoL z45SY%OD;jc>e$>5-u$aKRg+b18hA7&jitGf5u+po+N^xSKn?QeJPc>@sh~kL%=jne+~;`%oRP;FuD3>yOq$l-&rq@16i`aW>CmHjtUywF5Dyu}VQxm9 zi9|XPy3)_~MeW)_0iDhwapp0=APv9(I0WE<+ZCYeKA1HfQcI=#JZQ#ARl`l@mD~|R zWDEnA$Ril84@%K=+juRXQPPdA+cr;}?C)^-V!Lv4^A3Jv)2&uM9n^H|Sth^I*%6s! zjySF|R2B04$pT<8ZUzew0H|=hpEJ|tui{);*l0gvhDiKEnsA?M#Vr-Zwxw{h*(5SDtO`dczyPiC{Mq`~w)lHQu(~>R-LRj} zp4pmTDnbsHk6UgGxfBi-9vl2$UvJg|XqFaX9ow>6zgako64%kSIFacw?R(JXE?%_iO$ zw95zD*1_Br1frGMl?31&-3Cv5)hj(2Y%O%XZsOiJuIHVlSCEnz%1;Z}V~iha=4QUX zo5Z?oI+SyyA7%1gUPnlaDBKVg?SgsfRJ>`eOKWGO>-Tc`8by@k$pkWaiw@C+UZ6K@ zW1;Cw*gBF?S~vdy2SLS}+MbhXsoClmdbAO0Hp!@OON4AVf08hRI2^De>E4|KYPx@j zZl2di`%SzkivW^9S)(I`amfKjMmzJIb*@*ymzo#E{{RVI>RL>f3uiU_l6g@DUnLOi z^H^i4!C@gfhI zb0XH6WoL7%>G#uFZA++K_9hIXR{?kVf88Ac&H%?17`6L$ks5e@2xOYZ_0+VDjq0x3 zi2wq69!7J3J!@9_!%Ne3i!DuOCUa)!p-B#;9nvE0>73vUaz<;8&>9VP(ipAuuk5SX z=5MrPA>x5qfMCatPu|9INe39LVwc7JbuG8EF|`dU!&$YHQ@GOK%kx%bMGC7byQqAp z-&2v#t_RYq_?F95yVou>EfU4HU&ilqJ;)KFTgQ>Vsm8#-4uscbHmf8LsX^gb9k(*W z=iRf2P%8q=G3XeT$0U$C3dPklX|-4`taRyK;?3gKY1dZkVrDxSZengD13b3Tux9`P(;OO7-%!4mC(?933~CnBCEIz-&Klw^zbYbz z$}Vy95EKt^4P)qj8_{%YU1<0^!BQEAl&I_$6xz7of<9I`IT+6!d8strD^7~zQcJa- zC3}d%hb78L5q7h3Scc&7=yQtb(_T#y^Hj33^EDS}#l^L-`OK}2zdm{#oZ~p}N_A=_ z?95^VWZLaD!(do9(nNm3vMogb{gXO3oMgtCdntfKg7cEunV(J=Q#+!Ym#iIuMZKdH@ zzFnxw0S7J4NX{{g43DjJvDoUm?wP1Vc?gckP37GraxUqLV<0k&?g!;7k?1;9msUCv zHo8CA|>7fK{?BjZnYA(+GYO$2Ha^nuBqZ}C&CbjC(^DK+T}stBW#Zcj{A2GI&{Z1r)Q!_ zw*ti?v)_EL<-+JPHeeT!9!Wg)_O3I<+P0*Q|-q} z-Dq_!YAX*BYLfYARIknRs8h%b-y|K|k5%^+Vwb$6o{!I4rT%*pN#AoiPlw(g(rvVx zjaJjlYZ?60z#g^O>KaODTAkUR!68?gHAw*javrES`J1Y+`g&7g zlGU_$?QToO_DRffG+?_!Z@hp>Am?)Yyk`d$f#QFOo*U2w=A+^n?wKv_6>Y7^IA(K{ zbH^LWBr(PZ2BF4vq@b?v{$(ksd(T6l*L-&jhf=n%w~l|a+XsziP^zXtzzvw-sazAB zA4;Zd=J6EvJ{s{2v?AWmbf^*3tc-;f8b)5M4o(36wZ!~IviOJM&k%i!!KrG`sar`s z#P;e5h{q5xEQdJx*bp($x20O}kAt;qA!~c5-b;INAYnAdB}R;I0i9Q_7m?4_x2c5o zbk#`7Yxn;Ez%x}jq~g)&Yd8EPz8ZtV_txVrJEEAG5X%r$Zu4BZv9wxR; zTTk$eaBhxBZ5*e}TX|4pAPlb6KX@E)D;c^OCwPfU}XoZ`7*4oO-u>+OW6 z&T7?`lWl8#bERBD@WS?yz{VyoF7KO(h{+=-gPw%)E5@`NeNjANR2*RlB;_(e$Oje6Tj)mHO1Fboj(dnc++?&-AjC@Z z9ll;jJI*kA01pDOly7G*>v6+NoldW(c%#FbPNA&m*Dw~7PzDYPgEn@wL;y)&nB$Sp z(!87EABX-TT=<7lyYQyHAJ~D3wHrCtD)^5jBRsNiTrUTnJJ&y|X?{D?HQiNwMJ3#R z8@9hQt3pFb31hgp!5?=clbqv<^#1^dzA4i@Yh`tz@piPDU9HBIVVfA^xVX28!DNW%VPI6} za_-1D=N#8m+IUNCD^c)!B-S$Bv3_Nw&+D&s* zrO&flU3~Apy&lH#e5-wmH$FA-6}_In;ja?7Ym4njM{7Dqm|a7zdyW7EbjC$@I(7bo z4eyEdJM|u1Hc&=G5{@6sEs%K1^V8HGX?$^|Y2G35ez9Q6bPdWxa|>QgP6g}z5m@zUWigzP=^pQufFvkW!2b3{ zZfe^8fvo5^(Oldol9!FK)pEmYWk4qw89Ps~#dH23)E7q7gtj);>lF7gNg5OL1t%vb zp(Jg}k9y;D^I~^?Qc=zanKc+#ww7jdabrI2~SK*r=?S-^9WMg}}C!s>f+_z1w#g=mvN>75FV|JnK;Qy!S~Y-)7c}RDOjD z$}{9^f5i59wOg+dTfw3E%q$6Og_b5}nE6>$Tr%}wLGC!JJ{h;tbjvoHSR{*5xtdtk zE1W!$p&K``=W7wvV~q3_oolanj>7KBO5O`#nz(ha(5`ImEG{6L z^7>zr+y=xr3T1M6P<@B%T0R-@W{qJUs3MN$>IvhIdnjO$t0_M-Z9h5BAQ6F&txc{( zbX`1OY8s;2#c_Co1W}o!UodP|+~0KdKQX{H*T>>Z%|_2v)2!tCWKQV}OBe{_+@qv;e&#!gW7RM2Zw>l+aWsliR2aY!FBt#l|x>UJt1C%p)Ai0q3=NTi8nd)mfxhwND_Wf6& z;*-?U@a6pR_-g4b?I*Oix4+H4#WG6m6K-dhJax`G4w$VM*6y{K^{c%q;%1H%Tr`n| zMB$Z!y9H3=rU}TZa>e54t?q2>F4b*b`NWdrX^k6zsxzKA8643+j4!Pc=fhH4M$n%r zVBDkUa1ZZPau*D8LC)&OcHaL0(()@rj^{_xbT14GDXcDDPwe||DlOnhZc)YoUHX)}0t#Eolfs9Qs9 zwkl8V@iz>9VAeAj%_8A%^`!5YE7x}_3P%xx3 ze{}lR){(F3w(;F+y6&6(nj*N4D+Fk`D&q?B9y5$*1C<`;yELgvE)LJC(%mg@>q98E zq|}$8)!*4RogK1i@=bepIt6zMqIHY?o|`};=4Q_wjdN?M$*o`5Y0_Ub;#EdzVwZEq z>&@CuG?3q2DLmD;r{>?SxM*H&*p!ul?x5>ypF_x3+`2g6q0!-CmpKM)3s$1 z>X2MVE49duYlzq}oteCyickTC$iVxnx9eGZH5Su%^E8vbi$R*Ltkc+CX!?GkESGVy znrY>Lw930xe|67X;B%bvKAl5Y>K2+U;QrWor$|Dy3ksK20||_M*4%j`fsx*@6Z<>E zl0l?t&`W*xtA>tAW^x>5i2yk47+_}u1FtmMFZ_3NYIQiR*3REi7-TFRqKYz9FxU>_ zMqAv}I7-%z-y&4C)T5>N<3aG|zogBkUA^Vxh_+6PxCqfznSsdQ@yi~hcCEW_6>Asw z_Ie!CNo#1grbdy9fDZChWwxEIlhkD7el&Fd01e#udrG&9L9mWXw|ORMWt;bx4#>r2 z8!@$1WRQ5>p1o_E@OGc$A>e&0#eO!rj^^gt>RYcMhH)Yme=NCDa8w_ZW2ok~oN4m8 zMcUeHyS?^9ysv8>&#GzG&<#sdn(lqpWnL6S&iPYr+?e^sa0oqn@mN|_*08=QzPi`7 z2;dSdbKTE0B@t8t$qZRz<`54jw;k)}y(i-T0E>Kead)TqYR=s0w%6b363pI8GVt#Z zRVQ=sN2WP7@7DJ=dTssmQZ#oOt=w|U0>;B+7SKeX;~<6kj}5myd(^xfsM?)f+WWTq zis$CMh4Ckg^tRWu*T0@f;Fj5xc~Rs<9|}o182Nb5J4bHy&G@1(3;2V<5b2u5*|mdD zpJY)ad1eT}u0Z?5E)H{oPHVPXJE(26iC#N9bEw1QMGq~o7{fCN@Su~=&fc}4mhG!N z?c!-*NbM#j8Dk6sN((OCx#y?=5_f);5Ua@~x}cI)IIj``g(Z+8+% z586)k+{B|W z==ZXiG`Z$CR@WDoY$UgaA+YT{DcA`)&+&I|;}z#p_z%U}*wW97?bYLePVuFyM=X*~ z@{O-CIA1O`91I@3jMns}P4haMU$0%eJ^uhgB%YQ!4FgNF(Y$wWsOsACYC4ocNn=$) zZK94wRXI8Nq$eRTbAi&d`~l(*h#n_>Na|^81V-vuZA{9`x;!&8mE3STe7>h1wV~k6 zLr>CeBhy~q2`3Q6BExNlmLkl=8FzKzMsPS|z~-JJ@hj?<@qcDY_EVE9%_NAEOCw;e zR|hy51TX+%u#~Rkn(5ZxhpD~qt9pqA)whTAfv4))#knxvosBFIPFDTv8D0 z5|-mTPTcX-^})tv{{V&VG~HeG1-g5;L^3XmY*8bELJ8fta>O8P=KzvDD+LI*%{S-y zet&UFT3H=-p{zEc5=pN#R(AvUk^l-ujgS}TW4EZ}0C=uTLDR3aZES1ps6nWRP{zVw z!U2K{zf+C|H(>t&I)_-&G>vH@eSMnXG-Vpv=j8HwshGy641;C`%mmYn39V6<0*hQ`;y@cP-DV`=( z1cxUDbDx<4vEZIK=9#H#x7v(4gtm83$0X~SaTyXBS~Uv5^$CuodK^_thc<9qzL{qQ z?VXIL%aq8mt1@I5l^Jr(q#k-_k~pQaztvU~E~9x3rRChpe7FzZblZvnryu(q^{Eygo}EMF)BHQSXr{DH@{ zX!ttcPqx#eO%e#;TWCIJQG(3B#F+pM#If8!>*^~=&B_tx>3amDYqi&Np4apb3|d_! zuZVBtxV|%@!wYWmB2mL-hTMja7+mti^#Z;<*0diMY5xEi^@;qqk3qJUIc-n}Hr`T3 z6_Pg3R~S>bkWV7Mz_-`*uM%l;G}lps9E{hHqcLJP6U#B<0}KdUH%yAwzt(lX6zLZx z)I{v0DgEgy2HYLLFUm<%lZ*~PCpF)N##F+&D_@yg(^O$7Mx%>;H8~9*UDGtnJFP=k z)UD#oK{m$;@EC zILH~scn$F_u9JPBYgV>b5nS9r$t9FIg*184&z_p7>+*|v>&b!!x6NbX}n z6L8Y7EQcGg7r4mdil?vmhHWeT8vZ+Un^C-m+s*`eY8#M*<0ohU7XI<;N}H6La7z1x zl1ovEZyt}UEWRJrW3k1Xd7?d_OaLt&Rk8cs**F;(&QDBlcsVrtU2?%}ujGV_OvtUA zHW;$xfO1%qxDL3-YM$mhdwp8<4Aycq7J)Y_F8Ia?CNwMa92|~%@l|Kk?z|CkZuaF2 zP+Js{LC839`@`H5k=q$2qE1p#Oj<_fE}w7xq2ahChVyLqR}yA0s@cOkF=*IiGZMg# z-K!&0(lo_y5?nyn4{Z!lwaub~mzb!*QGf;)00D~1hg#M(PZnC}5kLl+Gqmx~oK5B` zZdKjE+L#P-InP}6^ey__x|fMG+qqz#JIFbi5w|3Yp@MEaXB-opb|W~ea+NvRy*K=S zuRwN^xx-9jUh;3;q!a&X&n2?S@JE2dq3#^!x8!&os0 zpGIYrYb*0naORUF{w%prZjEP_WKMF@Q&W*OYjl!xmm5w!FFVW!2@C%TE#u zSmex07-cd`umkcQcVy%cIL&(Yify$kZ6i>NNRBD(QQ(oc5Yj^yM&d{znFw9E;PlQp zt2(9jv8HK@aV!z6HrJ7f%nU1qi7EnCA;Uq|4kM!SXuy}dUvmJEbo zIO)j>Mlug^T}Gi4az}q@a3d))CfPjBVn)jH00p{abJnrVpNVYk^(eLEhTscg_fi+y zR{*NStMf4oq+>i}99CS;ZBC}XUvW(&oKfVT6eRH+f7sG^PD_uqUS|^82_#ikL9v() zM@t6HPziu92l) z+*}FF)}j;+%EaRgu7m@Scn5I+dXD+pY4k$0r5t&<5(HnDXCV;KaFXpG!x zs%lp6Z##K!)8u0)-dx*~_+IVoEc`!naXs{rTnPc5>6A$S04j}uc2*xS$j=zhHJ_xd zmA;Q^nskW`&-RS%ZRbitj4=RmGCo|4dg8lCb*)>%+P;US>z6jy(fPS$Bx`yDK^67hp&imgDzM6o2h3-a`?60180%9M+^>D!{Wp7s zuC4uaEB&$!RO(hfAiZrS?%Mtw}Zr;{cl1)N~*CskM81V=tM1WU-r_ z;6pCO>Ok5tmcZkjn&++cCx^p2+TOf(7nYa*0J@eyQ*x4=AUHdhA9o)&864)iom)t| zxYM;;t80kkYgD(9CT2h*w=21sKqC>h)5Born%bn4WoZ8ZTYSWuYx?swJ{9TW+f&nL z*4h{~HH4(e$~!EdD)nQL$spI1YThI8){O1q-xX>X3vim7VB7r95~kpfj!cRN90QKE z-rabC?R8<|%^q0qZf>kYTSf-fDvSa0R1k1gzH@`Xrg$Gf*EG!=Mq9^*F&LGR+Ap|R zo$Ny%K^W&f`J$ZSzk5|_rki)VR|=7r!4t$M@kfVzVd2Za66$kaHI2RLYZ(A5zY-NL z{AGIXJ-w^G*L7VZU()Ym(H)JnA{g2jm5P@PH)Mb|;F8!pd)Gy!cy;E`?z|hSG+$v| zM}Amf$Q_K1fjJ{2b>QvhvXaA9k`EE-^XB92zFf@$VN5b8OeWT?uG@QiY_%P-6#GL2C<#|iQS;dRais(=0+=x&43Y3PdPQv>9&_zt=5$Wn(@XO z<>b4HNjD^JK^R2{IaMQW7=0_xd}ram2wyoHWSVuCYmpL+#$?>M9Z3T@ zKZRj@H28a~cr)THw~CiflvwJiHaA$lz)&PCgR$4=Ukzi5q(^9r8E@M*!m)=qrXPMLAFW`l8mlFY7}~#a3FsiF`2( zP+NJ=)ZPK&1BS)iz=>*c`t!8}?kub>MyIRkcGklF(b6bqWLZ+*Jo#z!Wu1GF3CSLqtoy4S9xXn@NxZm{ zdFH!SoWw~H$nx(XHb`6?{oH*qQQBVG_)`A>U6S5%VTq&i)v(G#uF?&odB(pqdhB{b$9HXOlDSy1GxnGa3~~-KcJ#$(vUqww4cU02OH{Rr z2~tOxy8i&JVibs!bvZj#k7K)`<~?sz(e=%1O4Bu4tEJPRNn*H>T3xe9M-a2{7=w?M zLB=^FrDWAz&SywxCzIBae%}G*Xgu`87+X{=YBP_99Ntn)+O^;8(NI zE^n=TFQ`wf>J~QMVbk7Wg#e5v+eU zT%R*@Fu(^2n87@g*169O_*cW)KB0H1X^9MHSKo7abY%rrRBiY`zy<`KF~@V-w)DLs z#^&nYAk#^CGeppt`sM2e>GrH6&(C5(xwxG06u96+=qW^@p17PZeCP&)B1o!3~_nLdS5+@;@uW z3!hwzzj^a}sfCpA%^A4Vr&j;IhGr-moX-j=|n_FXT z_JS zX4(K!No*7Vo->2*(zwqEd_&V;!a7`|Km)yExg!_tb=uqQuj02l8oOMF3#|M*wYb*xPZLF9HNM-`4duwIxfw!# zs>u29{A6>+b6rivzPWAVcd_t>iEeZmtQcIiB zOPywGnH~#)admXL5jT?C)o@62&I=v~a%-+WAhpzvq|<6~+(mYgvO2oNqCKRAPDyd= zw3g@IwVo<>_g^yGTls&(lIbPX#}?il(>3iaFA?7MD_q;E6xj+b?!l6$ik81S` zJ$e-TP@2R;s9gU5q$)Yv^2VeiJML|RIl$u|TIR&kl^EJyUyX{VK7EdNNbuFJhYh{{ zj?mZ(g7ST(;|16h7&5bSoy265oYQ0R9)*iLKN0<@FAUPE&KbU94iA>7!H)JPjiYEa zYs1obr^MQQzJc*d;?@Ib?D5A5FA0+e%M!Bzk_pP~ILOX;sr7FbL8W-3Mb!0}nprN- z*=-Cba`}>mJJ{gu;SaYbImH~0+H&8S>#BaedWSZbYQ*=yV$#}M2_upOx49C>GZIeV z1Y-bXf(aSV7|wBnSlS)lfo%ous|}8$ajHI2;p9^qI{>>kxgkIyf#aa$fOxI%55B)| zrly;Js3aj8XO>r8&hs>-MGhDBTB+zx8N<9Zsy|}x)xm1ERfr@$SA>3WI zfQpEu47Vem=9FNYaBlvW*?(Qfce%H7tmu9m8k*nOOLKD-qAo+UvdUUUIdY`!UBHo( zk~>!#-Y~qF#ri)~cl! zdVchK?WMbGZ@f`*dOaDJrC3<%c4J4nc|6Oho$m=?>jbRZ)I!Vw0ggEU95-IL)rV8M z@bc;!L9(3MFbx`%+*c!LV)*$%q z+nko`#clYBkrE?WXF7}ccli*>;eBR3KFdtH5!>2B zGwhuv%zz^8KfK@(jI##F`A1H)nm&W$nC&2Cdu_P&Qka~|^LJPfXO7T7Cg}2@%jO}eD zt2AmAgD{XeQU()oWFEj*L?ql?Rj=m1&)58jg%>8QdX?_AVXNsAY1*aLAd3TjrPY>C~(*3sK zOwIe<+v6n&z+d1~xB=NeLXZ*9voCo8xR zTXxb$-@B4C#&KL;sV&X)7us#4SF0_~qN^gikrIfT3Swb^OKnzc=Zxg`tH0Wr*S^nV zuDsi4m&{1xArTeZDPJkE?CT^`xwn;`DPsA+_pDj2__ILDc{{U7CTJ55izvEBrTkTae-6HDt zc~S(DM8v8gBo+i`jj56c-pRnOr(Dx?y;@%o<~w+;7uqJ1X5ZQqS*&r0 zrBuq0-#^U2yMxH!{Gbl}Yc~tUB-8%@hWrqt8EdJ;Tllw1@c#gdto$)?Ybx9w8_aew zDlAL57AyR04^x0~-yj<4Bg%UXtSbM76*BL{llm z&#*G6f*^SaS1rE`dskw@({WW}B$`^L_uYN|S2>+oDRSBC_#WZniCSA5uNg;Vw~|b- zEwjEAl%t1oRBj_UCnx3|4PyAWN7flN&l5d`r22fiTu_#U!kDCyS+Lj`+Cz266_>19 zcu!N*HLV&*rE7U^V3OV#_l7b~p&c>u;md9yX1X5~GAip{6wvG>GsC4M4yh-Up%*0s zZaLn4`&R`xMjW^Pm%G;IOM1WSxyR`q1k-JGPY>$RFPzr)(nADl*^wl`CAZ`dtAl&WB7W)C}tdt_$2xO_so4wa|LsA<2{lr8;sI}L8#?QUbRc-Cfu{x-T;%K*;ABBX42;f_yHfJd!Of2T%}Yg%XeGD&lE zvqvES1shR5U@@F+JdU{)$5>kHR~{(Wb-xpN&81sh!7Zd}yRmT!6+1{_jf9S;40-0a ze9cQm*0r;$+RG&K2qajUa2g}SZ25=<7%onG{xsbu3q~&Xv-#-%01N6%o0hE~|JLBI zb^ThyLA%uByRwhVxQ(vnkmbTJOex@;=L3$sbf|5$D=SpH)%07ksj0*nr`jcEIBlql zk&*{E3y-fgZu7!c%RSZo#jU->9OYb(m4Ms3Ax?HN=sh^8V9?HoHNB>tELQT`!@gs* zJVBfVMUVJ~I)FLkb3cy4`l^PU}Xk46q=OE;6I0v^C%V{?Ho$-KM#U1Uu zlDx=dz%uzwmNIp~B(d+NHq+smQX-NUm7jugPaAm2^~nHNA#VwmGj#@m_;rpj*qTXw0T!&oPdCA{U9ae5eNm00UDS6nM9fxkH9as~&jWU44Zb8P(juKtCnw)EW>^sAo|rQ{2)&*a(7 zY^Dhm{_ry8m>t~Zff*wJ9tTRLsOhm<>DG7luNy*Ltz&_C!$?WVlO?w+5HO>u=h-y| zy^8+TzRMJ2PK2zg904q={79e@-A(~Ng>xcr6L`dE8lCOLHkv}*%wV>|DY%ptVDgiW z7Xb0cO3g+$=ekS&1Jl)_^?F-VqMu*TEc`bEczIz@u}SmV6S1S1wmE0}s#xwP1oh&i zUk}6a16I45^5iV5Byt%oi+MqzEa-~OfY<=#vDER?6~A$!-pp?F^_3PCb)HL>RoYlG zv5iWA&N4_G;F3ws1#vl+_WuA@)Gf<0+c0hM$O!v~or4)APC4igOr9nZO+RGp_rKlx zl_=ZdI&BfOf9?A_pAg*L+{GoMPj9(^iZ+w)5rfHm@Oi+lb4NG-|yUdt0r);QYm;mEdgL4;8kN za=K0Qh_86YIOBk)?$={V&g@7T9SQY5wZEq5QP_BiwVSEo4>g|Uyt`2B8=&%)HtbWo z>fP%nRln7(WxRsY!ds6%O|Dv4ni$E(NhfP#BRCn!9C26m*`S6iZA(tJ`+e&=8-chK zKobQS-{n<8M+$S-6`W$yR<^yZ_?5oqbUGZ`o|$8DsZL7B($6Z-3U6_|DgvbK+DFZd z9lU#1ggUIcow2sKzqJ}|lKE;9Jwj#cCD+_jYy?RHdeEKf7i&Erk}j^Jrl$- z%LSWV%_X#xE@9ln$+*Zc8-?5g?IR1O2$caC)L3hS|HzA2CG255fG5sQ{}jQNV^9PJE37AK*}=CkF~wSODwx<`sG zC0k8838j{MC>JtIaLiIOA0y;cJF}6<;<;l=Dk;@gi`nh9^j^CiJksU7QEm}=;{8uo z*0tN$(zLrX8-0!N>XRT0#z4R8cY?n!uWIW2N8#IRzY*KdWpbq_hd`BXV1w02uV?UP19=!ur3&tv^Gz(1@MvBx5=kJ0*4DmP5h&+;jA= zMwUMdNvY|&qrxD!v$x3*VWeppg5bx3#PD)Y9Pw0c?(~a`J8unmEDTl$oja{v%rUI|O3=J8JPQq?7;PsDcXb2cELjp| zoc!hS^5^+if1^pOYW5NMrsaOd%>kMCW9A$LfA?j06_AjOdj3cMo9pC$_ej*y9T+c zziF&ux7~I5U$0N;k433wQ>xDuwVt(S_S9g(QXo}6Pzx98Nhg!W0QalfB)%vR+3U83 z*m-i8Rynw7VsHwcctQX?k)F9CvTe2fM%!0|QMoX59K_vYLcV zcRjtaw`kpBc?w2Tm|a6`f-G9!mg-Q08xfv&N4_onXE|sAEMma{{Y0LE-mlk^CMXzlx*C)gGPnU9|3We7zE^IrPJrI zw!OHT{3=a(aj`Pa9XbG)ABLocexMQVTv(qkV&}BFtXi|0y3NjZQnL9rzC@e zjGk*M_6=8G@UEhCU2;2%sArPc%N#)YfiOy;-}2#!RcvQHjZ(7E#niBkVP{x%7m_Jj z+E<==M$lPPsg67jfDT7$#nS!}cy~k6^*<0;O>uDxO3>RwIr64>(Ukc>4Y_$3ZCMH9 z2ORTVRO3$0ZhGl$FL6F)XxmP@o8A=hWDotRZqr-cJ&+1z6Ymj8hEo<8sAmkk^UoaD zXRKOC`oc%6TG{H8O&D8f4kPl-z6qBPoMg#@N2hxEo8r&H{{RzsrALN79x7=zntL5e z_QFBsxhPDC;#J%jwpbIMxaW%P{svimQ?}9N)V?d}#^~Qp<_l6+BL)}YfYt!|^yjLNAw zMUAn)03DHnGR1+;eKJLI{{Zlp==S~=HmhWontj#N!q7a-8J|h zE}Q=VUCx_ne#Y&Vqk9Y&7Z*^y2qCc=#tske@>r5N0|3<@5o=oSpP^X6 zX%*F`qjD{bFl4gZJ_x#yFu(vNHlBWLb6WRM=+-w{j-vWvy`tKxqTryJ)k+cbV6gyv zryt%N)jdDNT3(5%FNeHDjU~dwZ%hS@o?00dV`AeUDlowZkZ>@1(4~1N6?=5~euTXh zn=&m^{#_X)$e1n)TOz+g5hnv!)RR^ zHZL2MDYSC2A>c7QpU%0xTTa#Byt359YWwcwOOVbIKjLu2Db4}lkA5ou0E|~tSz}uj zf>&$QMk6LaFYmIpGyF`!cmp`kOjN5oK_&e%n`pD*Yx_HAnZ?xB*V0f9GQ?>N@y9zx$b8pQ36Z23AZLOUKAiB45(nta$ zBwGe@H-WTgjx$|kJ|?n=*h6_3p7!kn$81R(R#?tM5;m~OB$9gi^rF2wpB!WEy|nrN z0A60Br6}6%>OraagHQ1Wt*dEH!tyzm7{F#ROh9eO>+<20=dN*_*K0X@OLv}o;U(PG z?IqMv$>s>c3`D3C2MP(}xdymP%gYUSLXsITyvZ)L7^ApXMZ`fkSXXX0MqPIdoDrIn zSJW*n?sZEGC~ZNsw%-hKjnc@8%%M?ApS-|huN+jl3w(g=bk(9{{V)* z9mS;2s9pWK9Y7m$6lckgD(=Lg8FykbF_J5BpU2)YwY8GXZLRGZ=D2i&3ZLq3_Yn$a?Nh{O>5Ij8B>#*a$2Xcm+?9LS$*Nj zAHi3#CZ#5)Z81xfXymqVRa0itNlqI(huz4olJml#MQN{ip2@DY%d0?A?%mxZ4;W^3 z!tesIVlt%T1GQV$b-6TsCgNQ}OK9P1=wp&rjf|+iYJetTfX6w&7{Kpay61^*FErcT zb4#8LLd}d&TA2X|vdO{01e`I?{0r(SQ^d_vj3pf|_3P71kl>V@qV+IsW$^5h_SJxK$bIU9qVkwJmS(vME0K*&) zQQMmGE4>QeQ1Mldi|p--TIrUaaJNCbX;SLKG&p4{T<+rxFl*8+by#jZPi=ptO9jQQ zp=vJVl5)j7qNZ*J~xEd1jW-CNA} zF_tnV%1W`Hmm6?Y58=w5*s781nj~}UcK0^-FRxwQeTG@(jfrRpAqz7A7joo)J*%(1 zx42yj$5gb{BmL$0ymm})IBmon510+uJZJgWJFb&;ppN+_0L*Vq^IsnYum5oZFUL8tx-c;y!e-{>zZf$BA4dI-oYBi{cmvXA|oM5LhZo- zHzZ(Zy>heoOIW_}Z-=j8yN(;n4>{mlXw*X~k0G~)#@)(DVmk0~oL5n=Ynq;i;~Dj< zX#}?Rc7bHvNO<>v8TRrI9ddn7YUl0sT}#6Enl^^_Hn$UByl%iqS(sd_F>XHUoy)WU zI(6o|>D8*C7X-BO-$#4DpHn82e)He{0ea45QCU}>=kW@N$2Fk zlZ!^+huhHyw*Q*=QUBNT3u{{?v(+yzEr_~<1{RF@tAUb8jBU;d>Q7!xP?ubr!ME0z8r*i%Y4;I> zaMN^#ddFd&1qBOnrSxb7f(S1V(n zcmrA1>})j|CDw0DYONHjg+s6gWl^x_}J;b8SyE)@-*4zA~?Y@tg(hMs8msqq^RS9d(^rTPv%A8 z+x;p@9yyi^hEpOii5!;OgXOG@NElY#$@i__uym7*Up?;K`gHXt_nh`^a{i|NxvFaS z_ZL1Bc`fb!+<}F`1j`wdggZKb+ZeAo!OwA8ejb;@o(b?mw~22AzuA#_Vdit@O(G03 zDuTqW;0RuWikrmNeiP9whNLal(_=;&Nq^aJs~7-{%m)E^9m%X;H^SaCxYRXxVv;nm zlgo(4K1?$1EtTK`Kp6z%6~g81A!MH?Usb2;{{R5rl`U51X`ox^`nQK;)@sZ))LzK5D0zyI9!Xm`T<}*veN=J=2^GUzn<<{s z+f2i79wmn#BTGp=&zuK0~CDgKcCqKGGOzk2V!w?v!a!*`WES?Z+ zdFQe4)w5~(WtGCYi88)+Kn`*V+!aS0_s=|5-mP(>HSP87_1*OPd^ZUgyh##2HL>%Z z$~RyTG7xkJ7#XT|7WP+jYFC!`@>@k8?@yg7lE}&cATsd0V}d~7XEo0WPAS`O!>9GO zg~=zmz-ylud^7#8W#Oyc9hJ67)&gcbUNp*YY+$zH8)D#$V30u->h~8~oW2*g&^#}@ zNW8Lmf57`}$u4{gV{_-pEwf6}8It2++aob$l&;oO*MY(BU3KS5PBEn$TYkFgWll0l^E=$P zEuGUWmQz?qX}KP2MDq8@j4(4hGhlBaaB-2&F^`I^>E zCC^oI-_Xr1Y@N!!BiGvdT}?XQQi%n;u*#z4jDgjd5P{Wpj&Y874c9zZVXyd+bjkHg z+uK#QREajs3ctvIh_5~R1J4;b>0W4L@WsZf9xrX~^;u_EiWGJK09LqPEGuE2LUKSP z1?!##XzDhSXzeYuuuivk;212K)<#r`vPRWWfr1I=aUBhAp&xZ6VM+Bu*mxe_Q`9Z| zL8)poLf6)XBQS%6w`TJgF=N4UK_Ny#BZ}40^gU{OojtTGJDYnb70SrcA1OeQR~)u? z1vy;sKqsDpUkd5kE}tHSphWwpN-VA*iZ~V**u|Yco|oyu9R*}){s8bz&D1)5lFfG<_fj;GuIP}Mvnr@K+{?X2Nj~1S$?3ybg>>8P zesMkBm5WI%tF?)8p;{(W)NWDVso+;hrr*nNWuaAsPmXRpfq)fm!%HKF;DijZXI`O_1 zRHuel(Z0zwpHDx97g_NRO_)pe~>9b?2=?X?l zTc$`PXB~G@bnvq0hr4v{{wwWeuEuTt@mcF{m;5>EI-Qx+Qr5=K&PioUbZ^{~ZnB2u zOXGzA^UtXxt}7mUBVnWH?Rlrk<=e56Fo9ZDk7?-x5ZE8Y$J++AwXIGmmYamk)?M`a*jkVX{oRMS+wy0x~t)i0n&M>gf{!#rsbW!$B)mLWjrImiRCuQl^q zo2Sg#XzX-0*7`J%#ir?YcQ&gj5*M2ZEK*>z4=qLp{Nb^l{{ULW)4V;dTWR-;sNGvx zO%%MNt!vS_*-B1OAk+paF9JBp@ys75=m zGshLtYfw+AYu6Wgq?Y$^M{xj&XGR7h#|4RB;Zk@caB?en;hi+O-swK?UZ3y?=jPb3 z*IGuMB+KF*Rc-=Ak}uh^BUriWx#%C}Jd=)cGm53I_`>GTP>#||2;?bj&kgK@%R>xo z0rye?UO$Kypo-?+Rk$|MXtH5jf?IGMN8McD06WxGIW;K_^CawbP#+CNabe-RS)NT+^<|zbsR@W& zHU{q~0rCu$1(DVja)DxiRD!7AY*}^G0j!cd`;rbdtbcpexn>Za_R9wb>y;!Nkp3* z<1P0i$p>yp^cc-)IuVj{p)1*4-%rElh0N@fx}MQLh;&Q6dgo5Eyc^R`SS|uNQ#l|7 zK#iTFG5~vn$9koEKE0;uI)8^23Fc{IcUhKE8wJKTHbGu6GUJ-y{8cWyKC^#g4ykDp zNp7t3G-_m3BWXm-a7m0YIRtPkrq%WMY}U~<{Yrnd+QBQk#cuO?QS8PHMD(GME-k;K{BY^#k`={-6nsC;8&f;ym~8Eirc<>W)jOnc#!=K%C`!cGwS!qr~inVc)B zK0~h6VUGU*RhPwc+e>hkX$bo)vJw$?hYk?8mhF;9%bwhGnv%u*O?j=!cdKbpMR6<{ zwvyc%Nu&(fD=LBVC^+B~RAljep0h5e9)W!|wASoQMsx-S1D)Z3;d9e*&#xG*{U5|y z+`b{QwZFevCb_rr<&pxb#RCkW!OD zhYBT70pEt%j&awXy{oDfA?*{Ix=mlw=2bbITU)b;_hA8aX-dMzlS!4xR6?RdT*yNsnz0(~lkCIDG z2T|8FEgh~FV;peFZwjKov78Xmt0+t|ADHBxy~TEVR60%UwweK1t}GVS#9>#5+7v8) zX5FiTKK4hxNvOt7oTmMZT2AdJccs6tQfWp?E807=E*l$d6HJFm(BOFInL)dBkIcDv zoMj$4NE?)71HsxlVA5XcdIq(rT3pR!ZH?9Qu3kNp0T$q)3b#P3&hFVX?-M_b4Azl& zI(Yuoe9)mNjpU?z6^pn8*@3_KIn0{ zZsY<%^`e4x7dw`|znI^;?2zbVx;i82`dz)YoIcqhn(j#a(55#1%BaZR%wGY9RC?AE zCW~QdtXx56_ct)dzGT${DuRZiJ>(g9liep8zS2^NFxEaBbk8S`eK*{7|zUr*3)Bd$xMJO%q zS<*Zw;bi!a4!xtrGTyb4O6V?IAWfE1%P9;72i#ss8NkI`((OgedRCWWk*fi zjErtOj#L>jfw%%XfNC8o`(~-8>UNfqPcvz9v#=PHvK1&uC*?pv!O83L+pqOvIaFJ#EzRv;#Zl>+ z^}U*jZISw#K520w*R*~7o63EFTDkNwTK-eQ) z&4ZkS)p74!jmCsLL7~m0>+2(28zqx{?qECjd6~$;tw-YVN zmM{j?Z~jPJOk7Ln&fpIW;mw0vb48#o-IgAXD)EF%!~r6lECl-0ot?H`@=(7 z(=^zg!Ng8AWZq*=XX5P6N9XIndVFiAz>%=FY=XrY zf`FkPE?4H@fDdZ&9ZoGu_f{IE&ZP6X)tX4+iatuX%zy*oIe!MYT0d9G=92`$oqBeyJ?1m_Y z9$c;iO5kTW=%5{{WE`{{X!w^EK`s5B~s=4afWk`B&jsq@m4aTT$7 zQCMDC_>$TDC4D~Io^GUlvH3;zhby-%KC4{z4<_KbqEM&-{b!{)hhnMpk~xH&A{{^DWKpaGpHy&E}!u$!)di zSz)%kRE}7WnJY7V!-v`eu10&F*sZSvcxz45Y%laXwprFF!~MPE4I@YZ`4TcnRl($v za&z^q{{V6@1 zrhr_=%fB3|kXvd1FbiXndU0Mieeoky{{V!S!~Xya^fGU*CTS&>_TX*U7&n;_89USh zMsc4?_I+>uLwXnczxz$AeL@652giuCG z_arKgNa}hDkHnwx;cx!{U+w(buIaz>6u18XeLwUAUUR)mRFm)JwYwL7Uv(61TR?|X znrY^prJ07WF~gu03;L1AaPuy z{{YAAe^dVep|y9KFZ_!3ANCNF`O8XFlzs2(sMSY%71H+dz-k)0-$?BO$8F_YW=O)R z`Q!>Q^SLH*0-r4Gt#a3|d)UPf+&1~W!7=@zw z35)_llhb~4>MF*apj_HZc^#F&TYDJ9VL*13UH)Rx$nHpHC+A{vLB}|(8*ljci~hp1 z{{ZOf^ldx+X1o6YT_gVh&;?a~Xmc)R`fKFUUx1@)UdN5t_^-sn#hxG2JS{ib?NUja zQE?i986<|tjhoC2+la;wa(#UkIq#wIK96^OD%?kTCD4i}!Hyep+1)5l;&Py<85==7 z^{*uG@BEH7KkrNb0HYqgVqf_R_+$O+kL1l;|MRZ{{Z&m8gp`slkfgTSz#JA z)}nQEwwBg6@|;C(sUsO5k+={}03h-+kEMGKr)HCQrd8COM+7#p$sB((5fX(NxvwMfpZdLD{=U=y07829PZ9qB$jx#80AR?!^aigkwG}j_FY9Ay)Nyu4H!alK zZh|Ji5!^{6Y8^I_wnlHf8=MfngQ&mD_|yVNiA>6$+!Br6hLvMMSNqi7_Z*~!Nv6+=+I`xZPuCfisnqG^&`85TfW%LUK?Lju|3 zu6a2X(p&!k$hSBBc_;pYYliWc{C`jX0A64FUOLt^V^iFg!uF0jqp^j2OJ^mik|?0I zj!6M@Z=FU7P!nlhpmUt#@~(sIudV5KSF_zbcIhlkfFip}Nl>Cf`M}8JD8T0(YSyd& z03HMWx;OrUX__zmiIacVTW|dixD*qe(W8^Go8k#)(zX2~#Mdhd+DNi2@SV~El5{FI zfDYieI42!yuAkw%y zllhA4JTLzMAe|@vydVDnY1d4srAAbYc%>1>ilJq>lnO?GWWPJ%Ns*(%D&paT8VB!=6&7$9SVkzMxl(5ud=hl*_-3ai}lO*FWS@ zU;6Vu`Vg)Y;t%|Yx{v*STK@p(FgG7Co%!XQ4u_!htV#a> z-2xX17f2_0r z0Inzh07b2Nuf;$4BlchQ+7JC2)KJ65rC3H?T3;ep>ksov^*ulSL%NUsaf|-|M#)*$q?G2C%ISUt&P?Mp?J2G_{SocVU)jxdEDLKY zu@O95n=6LpT!IGdk%9PQco6u5Ubxlo{8v12$#JNWr6sa$2(bgho}ozR0Oq?L1O7$5 z5B|cpKl@g&yb;#R{=cXH0MHt}Cx?eEMg4By<84k@)RX1@yAuTzsDJ3gUH60k0OUf8{=kuc=(etpsnd-KNiAHOGj(L z*Dqm`BPN+GzuA1%%xfbM(hZ{-3>`sc=dT=AfBYl%+IF!201@?@nFg=+Sgh`uK6QpQ zU{8<^2S7$h$*)7d{{WC@iNEXaAN>Xz<$PQJ03bb6>;5!KJgP8@wd|j!ni|30?V&Ze zr_R5m_=i!R^4MBKacd}zRzhU^*&(r>26CVpz?txCik0u%%lT1@cK*E2Bft15 zW#GH-_)eDk=6m0@I|(=8k!EeBRO9Z9f)58E^siXB)HF*AiQs8&Q74Wkj@&oy{OmX` zTb2ap1dg~BxA7zXMRETCU6cO+My+|Lh=1fS2m6tK=tin8SiV`;lW$e>R$^&VZ9#up zoHvDa3-RHIEN+>^p{`A#N5PIb$pjYXErYaYBOi@=VraK|m9B~6KMq{Iz1^POk>OPz zdSHhjbH;FRahmeo3;sPc@A~Jcf9OKJ-@(7~1Ji%rkN*Hbt#c@QHs=oS^(KVd(VTCI z?R6vJ{Xbc`k)VR&?Os?TIbkm27Sj3qm;{Zz4{ns$G?;94FA;c)Ntx0M`EBGeI))fx zpgvAm<7mQ@$6mF+<6rqF_8;~9pZY!Oj6d=(-~RyDJ5T)x(xD4QB>J`Tx(U61uFU`0 DL@+fZ literal 0 HcmV?d00001 diff --git a/web/assets/gen/tex-carpet-swirl.jpg b/web/assets/gen/tex-carpet-swirl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f09994969d3e00c6dc8b8e97a980aa7e3201d8cb GIT binary patch literal 63427 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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/tex-lino-check.jpg b/web/assets/gen/tex-lino-check.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0c116c51c23b8c8267f7b15b941156af975fd416 GIT binary patch literal 54620 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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/tex-lino-cork.jpg b/web/assets/gen/tex-lino-cork.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b5fdbc9493c322e436a02cbc484dc85686a66bd GIT binary patch literal 72428 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ЫRq4WdQOBQPfGzVxAw2yK zSPjNY;rdZ6uk`I6FWBtV>4fIcJnM_hf~#6W-crINn7Bx)S41y`qDF+?5RxmYnTEq!UdpN8Q2| zF_9ys5f(7iX1^tsuauQV(ojW-_1DEe5$HNL@@kU_=P=84?ye{~QoCg^1{%OvgZH`D5dDbsp1GW~9ZjFbUZbqmFGIp~ApEz`Rz(GH= z#nLGf=!d-U?M0VQ6U%jLI-QZim+6_84PYE#=ta6i!J@~Z7BMJm7fj<6YDJ9Gnh zsjEAoY~vv+1BbtBdbv!1vc??a#C&m>nH_Nu~M3fm<<*dz#7{0%{9_b3SdiGl9{3%XFu^xeN z8B6?Ma}EL!EUre5=5f~jad8eRpEoGoNp$FLw@>e9W`-%JAr?hEg*xa8EJ!hSm1`?U z{l;+q<$m-kBSOPz=WO`^s0)v5#L!a4+rc>vq;#8?-rj`T2#QpIlvd_RU(u&^U7SE5 zcCuV$Cj&y){DVO)uJa>eg4fETWWcA zho33yN1P=817&*Dr_|*BlD*egA(Ti}9EJi6K2aoiyC)2a!Jm%s(UHo`zu|@ND+tB0 zV3Uu&q)$);V5iLh|tfmnbMSv_d-v+Ar{$zLjF4<1jYzK`a{B`My@~T>4=y{ej3VTex8%Fymci-0xO}#7jYqu*AnUOa=)$m`N=KQ9ES`3>ep0)vhi}8BVF1 zrZFiUIIuD^j${FE9-HYWC}X&Izp*pfj#9Cgti2}BnJ~>;w>mmjVMc=lvOK6aEPsq! z(65BxfZpmzGg}QS7C%hs)M-07956@sI3(g-V#_%-`H9Ox%ZPKIbW{l$0!Hhvy97SmmUYjVek$!W@EhE~!I8dI;3+pEP zWe=hDQd$r#|NVP+-K0`z{MpBe42H=-EHYlZqy;V0!Hr=lYwsOIp<3j!ptU; zh+Q3Gqpt@o=;t~ea%X#*3i@U-svzHypuc}c#qg!D4fQkX1ZAd)(42ILmGtQ!?#j0p z9+k@F;N6AL+)W+VY(2_4#OD(R_|kO@qGvGgiQ@)t(|@4jL@JHXLHS`yIx22zR$BvqdI zQdtDPL(2zN0{n7wTs`YiOwUP+ps8F+Wa8#ogpqA1LSM&O(!j4xX~v%NWd31*h4AW)BMM0PW773f-BYg zGl!Ti^OOEkDtlPN*S_5aP8SER*3uNwK;;h1y+o)JVh8wBs)Qh3q_Hm2wKmuW={;J9|>A$6xgIq~ka?d5A_p_NQqm6V(U%*3Ju5IG_oqWR{2`ZM>A`;G%AK+*az zK9q!ri|jvL)uQ)&Q4=`w5g^`xi2QT(fvObKqZl%Jb5P23J+|PRrF2{KsvzHe(-a6z z{x713An4L-It`W`{3bs*1n`e{J*TtmCK-e0*n#yuP-FB+P@J3YGuulo&r zU+_BwN4D)<HzaZ&bdr-m(l4@p5SHmidPcbZ_-Ku69J685@UtcpB&lkuZ);@ z?1LM95(U7HYRMtX$x-a#Y6gaz^FbaOzb0-Iho|{smIXbCoXw~h$?@&n!lI#cvTX)ua#<2>Iu;dcuhlHEz#l4+Zl%KahCy=|d{^)6#p535aW z(5U1(d28hXqTcK@k!|e99=E1JYp2Mr#dMuaadCEBf|wp*qDS#mI(Ey<5QY1ct_Nn@ z8v$UyH=tK7oC8S`zoj*_)dy`sh1lKxm}+JBC}o-XkG5wF@W)Am%Q+6SYLH5d^lM? zcQRnhl=j>zvDSHyQ(!5iKVX;T{=vB%|YXoPN#NRP0F~^Q!O`7dVbEL)wUZVG*-oowfmFP$CHkUarNEY8HAAoiH!s=tq@)vNPvu%X75@2kQQ%O=&Xs8u(W*$re z>7?C=03GTH{C#u`3P1lpkc;|9pWVqeYtK-z^tMca|67OUuAP3VhmE*S)>7Z7^M%V> z*oj4J+S((Ej|Ka=hg5~cu5IJq>n|U^U^7OS7{2vnYXScW9*dZr`jknHCG z3<-!HWTPEfAjaGeDw=Uum*rJc3|l~aOFm&jP@Y{^=WV`yB=?*t#N;n(Rv&zF6MGX} zbsl@`z65-T{HALdQj8$}|45_)X&06OhO#|a8gPZ3C9lgMNebXSu|g& zlTs=}Ua|;edwzYUx|0;uU3)>qEv}nl(aQ>Z!D&m$WAAfuxXh4Q^AW>n!poI>8sp&) zu;to-x1Gry7_$SWnAq&Wh4{ujA^dR-ABFczjj>eN$X~IvZ>}iuNbAgAKGl z=n+vwxlPO@yKD0_6=)kB`Vt=>A*2EJ31ufII0ouhTKnmQV>JK#_xn`Mjoa_5xq<;< zih*+`~1*)wD8U3OhYmk24!&P|bU_qhOpXO?=th z(6Z`vy`tuq1LMO>KHv@>ezyWY8v0zPV-@dFd{XkL7ki3XkOG!wlw}ztq z^+{L8OTIZaqSl+rz@eF2k?UH3B8Q;b{OIc^$AtWFH1hu2tcRXH{`Ybc*yo=cKA5}z zvhqxQD)Hv0rsGj-yNcckn;C4@6|!*ONkjXeqZgnL^cP1ud+y=OQKwWg7u&FeCe7## z0xuY?y;Q*A=PaA5X~IH`uQdMXR5?V&L~atbIM+7+U^)pK_|Fi)(4^pFwVPan&ivXc z77nrTc+MXb^~!ALL=rHlrBKrP6)CfJ(@T&iI*`78|HDa|-m*j^@tA=)=m#$gY`YFJ zEi(=F;EDdjAAT#eUw4Z_R);o_MJlk0kM>)n72sejr9&)1IBPq9m5>Xu44Nid#c2*n z0}<+-sneT0JFsP+>lDOUp8%yVWT5*AyyNJoro(TFQfYWe_dI2!*8}%M3-!tT(y!?8 z6c=tf#=@#MBsqSe8j>`Jgd}O27QgGg@_r;j987yjiM4ZwJF|D}lDsyefcS$Mkgl46 zW;YtqP`%jn&IYUrEUdV4=_JWsm@bC>h^Uz%g*cAHP5}U{mahN04QT)p4@#&h@|^|X z$aMh!YLA>ysd0_M8&7yOTKOMHP@g^|I3u81XftGx;Ev$E1bdRAoSvJ+^xPbUkQ)xp zRq^r~ddJKy)#l9!34&@HJPg2gP*O`WTpVAE>|I&pp%W~1*6EhfeCI7+&}@Fs_+PKA^H5rG(~k^bpO zsgdMP$ucomK-pjoMdj(UcnQ-VWc%Ftryo9s8iGNOEWQofW&MdFBaEW6!F8he3zpYN zbFrvrrtcqZh$PY4V33sXl+|!;jL-yg9S?P*-pm&2+3y}b14oc&Py#^YAB-^G?uqN9 zszq8{*6_Se-3dF1h#M@91bO@i;-SKD`<*~+)^xR+ttt9C;?)~-yYx_1Rkpd8V>7B-mUqq0H+&6eqr+iQp%svunxN@qqswyJgjJ5e7fcH! z^nTA=X9KRMd|5>&rk3T7S0FdXynT5rL9V9nDOzx0*YBE;D~F8V=?Yd}dO=e9 zm)3M(Wx%a(pibxIT1ONc0V>~$r8~CGPkx1HCQ!qXDE z{}%3lsHnie2*Af34QRs!c&j^|%WD#{;*UclY%voE((+H}uOuke(4X|eq>)m7B zkY?NJ#XDuB3?j>9yVL?5WBGfe`Db}JKA!d)JNhlAB38DN>JV}Vnvu*8xKKW0W?uI^}YxEZ@MFy$(vXNUxmwei*f^^(=d|E8~aM1I-7h266$uvpJMe0%#bWUmGX~3Z&zVPE8GDN@!^;U|KJgEIW!VU8fw< zLaSa-{hQX4Q^lG%-g|=y06c)nts6K&j40=ymNSpf3?Axv{A5N=P196Xx)*f-Z5jaH z@mI>WDs;$f7yC*bw>-rbMNS_HRM^Y!Kv-f687)MmwFOnb?AuMJnySXX8!f+{Q)l%A z2E15ZqPI>*LTKa|P2;zaN|3J+vD-*jDpR7Hh);7jDB%^>06~k1i#Kx}LVfL>N zBG&vHfyeN`|By#Mm~KwfkK|AWq!-*+y<;|r;nzbL{@=%+!k_I{k-apQDtHnYO)nPm z+ztbbB*9#he$2=Vcs^7Qm?_M?T+Yaf+i|>N?DFR9cMqM<$$?9-8PA;F2M?anQ#mXs zUk|c^csM>$G%IuRvtb)ZCZoZap7EwW z+lqf1!p_}YL9c~Hx`o}UrpP@sU2FUeykG(VjmK$gX?P7=fC#EsckkTPS!f^EpoD1M z;XVozmXIrqX$lT74^po9OFNtmbI`k6OcY)l^9P%bzSyjSOF>$kSfxD&kck(bi#R%fQZ(Ib=mx z+Vfl4?A?8Xfs716`Q zXQDfRn(L7OKt~8z1(cyA=N<uMEs6xxjrHXwBWw$6)3dvNs;`ASg#MNjPzpXRo)w9$!M0zB{ zCl5`>OH(?dIj<9r71N)kRFt3V*x;jGw36h)-=}55&AbrCK*3_*Ea8p~;K4^*3II^d zi^AKlG)&av^(jg~aYUdae;}1XtP7t@$_TH9aBa1qZt^Rh2&6GQeCwbuk^4Xq`O&;t&`j;% zt++_$2Xp8TRe&1x=efGEmR*(KS85n`<3mXh$p+NiH8k_{8E4GXdf_M2pV;27T3tv{ zVYD3O@~oD2&%I2R59ps*+~x(hv`4Jxpy{0nz%CdG9=wNkZo|M|1m#^P8W zyTUgfGTSMTzwZ0l=##vS1)1iHFPx6d|E7hNsM|R^m;P2LGh`XU>U5&FFGAA>z1NZj zQB!Cd%mNDLr+>wzD4XzBjm(sOs*`zoT7(g*_pzoTjS(OFAk;Eo&e%@k7wN`|Jo3yL z1TIPW^b~UWVM4it{wn6H{!3V!0@1lokq$*-;hPgeb{|e{ya)^$a`8zA)7*!=x9Ua< zH>a_Gf*tZA9-kpQKEgHMc4RblygJ+}8dRLINrlLKKZCri3Z3*#N`{kd*+oCHn4q+0 zJzKXHUE*J)hk2+yY@2jqY&i51brWsWlMgfF(=q3bz!*^nciph5F@>iC_ zF7vm_?hp@E8IV-g{v!p{2o4^0#p6uuMDtkEQ)hj(GBf;_#mYk}Hv*mbT^~i)b`PPw zoG5(lECQ^h>HGml`%F5qRe0GsqWRsYn{2`R7h@6vf zZbkI?zHZWwDf|(5xxxjKMZvLVRI_O-h6@wfu>(TWUsm!Q(<9ag_(I1DjHbT?MORJ} zkZLe}2(t9RrHgq0UdxZ%k286=-FRky{apvuUoLA_Ng7Z*?M6>2*HQ)x~03)Qeef)LO@AP?H1Q+^^Pbtc>9^WIvg z;ap<)(jXK5y06I4;)Gurgju!lLqdoG0m&#pEMnl|gmp@L3k6X@-@#pn!8r0e0ES$2 zI8R!}d^D25Oe9M0-Awou?3Lc?ud7<=-t{N&vH=MGim!B^o`Xf15jtzEupcM;mz+#X zKY-0sAuO(~x_n1mumd!g3m(akH`|OA@Q(iF*w#hQz(=U9n68|$bGlV7ot0bg+od|u z5y{70T`Ho|hH%_KL-=UGwtf?!y3Zz%a-R2nM}FcF+{jCakOo z<$QVLzYKgf@SX3C{AF|YT{^)7%O(pRNL31>l1U%|S^oeI{v>!u;=hBfymR1thPc!2 z%LHdaj2R9YSx-U@FOR$r;h%|K7Q66YjBUlA(Vm$Ac6q|Q+yTR-wXUY z@YT13JRfM5I(?$;jwQ+Zl20U_q@GPp*Dbn-Q?lQajMs~JH{<8R--v!U)qWm$Pf<5I zrjA%#Cze$X#@hQF@Y`F1)7v%cZpWxKn8~FFdI&X~pS*E4#p`?N>oyow-+&3sVZKsvU;L!_T-VIMo^GRiF z-00$(JKmxajF{ahv4nCF0_|L+g8u*9d zi@yeVy4+pZUZ`1P$pq~ofdm|a2m}#IEnnUn@+)`);va=RDELy_#=Z)i+*n<1+RUXG z6*wx&dJ$bayY9f}HP3iQ!X6s%9)kylJSS?lb~eB)aj!w!Cp?qtd)C~UIVnV~eF{gF zcwgf;!@nDN&rtABhOb)ZP}0i@*JA|vPS)DThQZ+emFcobdC1STdB=qQ6?hN8dd{J* zcw0|fYt2?xmgZ1P7A$f=$vam(;CHU}XJt{5oSabYeF1r&|JM7cIs4S~xJ}zP4a1yg zpYz3KHNgxM1m~fzoqjlc7}tI%YFb{c;k{wBtDQ1cZ0=yJGo0Z_`InL_;$v>7x_vV( z&`?Z=r*l`VO0+7xUaN+iclYvum{*@NM?js6jQJ%0yy+f@G5kX=bME(VH&d)5IH%x>1(}GU-V9&8c><|9{TBS3pjn2VGPEBOJ%B+EL)Yr|Q zwLieG5qy5|RhNhSF|8dQ=Emq;0>%8Pc-x2ALCW=0&oooBc5EJp)#}4JH9wo4{cDHt zhL3&W-wNs47Nd06w-#2>K_$ce=~^@jT>G&ZtG*=Cq}Tj8eW6EjC97WB%K(}qhmXus zyVUxOt9r~gpMktl6o;OGT69H-dQ7dGmMPm*B+H9bLn3d-TuwqFq8JF zhvV(1h}|^ZiY2f+w-Ax}eo~z6^4R>xBRTx*?4^8l>L_;T!4{fijd#jIk5jxPQGXMuAJ7ys;VYL$$7h)ay67G}z{jRNoUTuS}@~aqcUY@kX0Ji2OZ&;n-$- zU$wJ#6rI@@b4eRL;GhE$1FcJLXS=6VJ@DMVFz|M#;cIKRvVB6` z;1eM^jJUvH0U7rml`JfGa9u-j7@FPIL_HY@Vfl_KP~)|H<@-1M9J%-*;92}Hd#Sdi zEcbF;F~JeXy8~=$Ng#2Odz$(LHV%6Vr@nz=adQhwU=F550I~u%0D2NSjL_wrVM$&= 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

    T3@oi zb0dNIDhV>lkgg3+Cmw1L=Xs z6;X8$8OqBA!XiIRZO`Swu6FJ#q_%-!i}!q}GO^C!N$r#0Jk?*c>VO!G7P4ani!<@q z5K0fw)~=F$iBoI2-RH-a@fMNo$Wyp0NOPVrF^a>z*1jVnhMow39RkSM^&M1T)1gU9+i~l_2hZA27s!911I;ffu4F1N)TOA`+`z^E_d*FyW$0mi*+5U zTx4O8OUVRxuE=^-c z^n1mcKPE`uDq|b|V0w-L9X~2fLHo8r?=5c5=y=yxgtEn@`EG=RziPMSPfE^z8|pA^ zmGsv0T>Qf*00X9ZCb^w<-(P2r=E)1&l?rz>s#VAb1Z~f-Jq>eyZod`E$B42+5`aEoyTsvWrU-R)!mDeZ;YKRR`((k?B&$2FC- z(#FM_MunmqM?G+P9r>ZsOFbBbofC2APLX7z~Ymo%dm6bbENwR zhwojZeJnsikOXYIi1f-DlFv`kf=4tKR}caT1!O0u86X_~mC6XbJ}x4fIAMi`M%#HE zS&10uIITO44@h$qv8<6MSMEy2LOX-bKOs>qG`lHlvN}uHVzu2Zxw+Uu1UBab>4rbb zvZI=Ny|GwLbfgdhh3b7UV<+;fAK7|cw6TXbOUO_bVnNTXSG&^XiFPgZ)B`8SnEpWO1K-Z8-X7x9xQuIvA9R z2I0_`k#>>C83L=C+r*Ar^(Ai+>$Y+g)NJm2w0=RAFvFqSlgJ~HME)q%BXme&xG=Zf zI8H}mGUFT`)a$KM3E~n$ zHm`2(C%Ut`E=Qr-4}Mj#O*UF8S~QW{tZYt4?nyc72LSO+vXbsANq*TPGc<~^I?A{h zkS#K^?RS(Q}=kfVS$Kyvenn-D1Q#vQ`Oi+c?S)*`3KRk%M^*H02 zR8I}gjU}e4W4B2#0XZ4Qe~TyZtr&GJHuBYOEv^KS2F43MIQHivqL)(9E+t6ATM0K3 zLgW$v1Ew4KRVU50Q-X8UW$N9vt*y*6%O(ED2ox-PPz68la&kRt ztakcste#ukw2rtxJ0j;koE+8Nz5f6qB#{d1wpu(PZ!qrXf^a!MkM*XXh+2d)7@=?8 zjA2j`aD4yy;B?0213uZuyM>F5<-28brLsC}zYXXwY~o1Qb}&E;ypH6awS{A% zX-Rl4VDi^#&&Ys-q{{3OTMt{6luRg6d+ja7!hkh9vamiK5e2)~-;5 zy1Zp4?|E@2;mE~f?0UbZAjQc1j6<*38(++7H>EgS~ zs9q?v$=O$dg;Xc=YR`gQZd4JCGT{;1AWJH7`0o7yu6`k{NgF}3>fo`+-7rCn{S8~T z)3s}W5$#+RI0W22Kb}8IYB7%18oNLL(D{ii1^cz4>8YRhloR;Y;&@|MmeC`%(&Gf+ z<)#<|y-%b60LWNt_>^PDb(lMS890+&}MDb^ieRr2hbT{{T9OPWHIv8yQx99q}@+oGhS7&m=5> zV~+S7{W?{@>|Yi~bfls(zh#go=Y+3RxBmc-AH(`oP5!zc^WM2#S93)j4<)&aUWRcS zt3=2_4AYhz`fVAbQPef~hmm&iN*5#o?#z9%Qyk~HuAg520FT4}00I7W%j@6q^gf^A zT@XpMnj%^&qUFE*BrqdMX=xb_xy#MUsEhyMWNU_bAt^`{qpfg_c-(6uQq-YKSvGJ`nU@?+>rFEw!4 z>nVuE++jh$1{@#EHFPom0LW&4_bR>5`quvdd-_sN?!)D=j~sCua`WFimHAs_V;LQW z{oMsJHqt_g?r)k!&H}Z%5Iv9hil-O+dQJZTT^spU8-K@_{0x6u*+iCh5$Za2r3&fx zSMwnbak4c~JM;=a8kz0qjLQ|~qjxfF+%}a^HuJ|B&*5Ajh5rELA^!jaKgzuZ@9s(e z09@PoQkt~6QxtVqW(;%bC;?l$)ZLOlcnLWAFBM&N4Lb3BiEeLl$B*6voc#c-H~#>Z zUq=45O3(g2BKnHeQ{PfttVDM-e7 zWf;%CNvzFd{y~3={{S&jX&>_O{^&?sM#^}t-?INjW>^cF>d3T3@-q?#er(zPyqpkr|Y2{{T{$>yG2{s_$r8@H{qgQRz0L_40q&=eieiE*sk4e<;*h!w1sx( zJ&D1trT+lq<-g!x%Dnx5 z`9^C;!{71@lk5H!rD6X79#8ad=UkGUlXho9Num0FoNZJI%jHMPid5teT#xHij+?3K zSB#Apmk~U&vSfN3ZLXcajIpL8pJn#DCyb z+3A1s7rFlcex`bC3Ebpj@aCp%r$1(kBrnLWSEG80sUC}~q_~PA`-XpeIodesft=T= z!}n$S59e8t{{XD~2l5o0-HNg2hr-vze7PdFMqX5HG5|gI5&dg6YfC#_@lSIE0mfTx zxXyieTJ>qa>gvnp;_9!8zYQpyxOSx*Z!xw@p56HEbhvb@L-}Hs+99>c!D$p7 z*!1Tau9oNiK9Bqd`BUHhdw-tdmo>|=j~H2D+<1`276;0FkVp5P!$CfA5d$Qnhwt*&KD?*VgDt*QlsKV5=G3@6O^s zO1hSM-k^Nvx^oyDuGqo#&qGeszWjgn%zrxQw6FN|Z>RLFoW0b^v5qWYTN2k7vo7yY zrykrbV#RHiSDx}ljY%0?DLndY{{RZvz5f7^aQfCHfAQ$Q?|+RrYBrI68=D$?(Oflo`C@0~T}UG2Nf|82(kucuW366a5$Yn)P{ly*Vyf@}@#} HS3m#RduR9J literal 0 HcmV?d00001 diff --git a/web/assets/gen/wall-damask-mauve.jpg b/web/assets/gen/wall-damask-mauve.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82289ff06cadd97c2ade9d9db4ceef84ddb0e08c GIT binary patch literal 35436 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%0DZ4=5*m&yW1JqYhtrMZsQA0aRto)@lt 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 OePRCqacQNXAOG3F#y<4` literal 0 HcmV?d00001 diff --git a/web/assets/gen/wall-diamond-green.jpg b/web/assets/gen/wall-diamond-green.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9f4ba46078f3c8c8d68ab08b7defbfe6807e963b GIT binary patch literal 48316 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 LG9Kxv|NHwtS90&# literal 0 HcmV?d00001 diff --git a/web/assets/gen/wall-floral-cream.jpg b/web/assets/gen/wall-floral-cream.jpg new file mode 100644 index 0000000000000000000000000000000000000000..940b0aa7e64f0b2bf0dda183faaa0f2fa27be928 GIT binary patch literal 68553 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 Ik$Xh{*(y>Z5C8xG literal 0 HcmV?d00001 diff --git a/web/assets/gen/wall-geo-orange.jpg b/web/assets/gen/wall-geo-orange.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0c19cb2b1428c4ddd1751aeab418aaa1723754fd GIT binary patch literal 79875 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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/wall-trellis-blue.jpg b/web/assets/gen/wall-trellis-blue.jpg new file mode 100644 index 0000000000000000000000000000000000000000..557704675a05e2821f1c150dcb8a5e96d46933da GIT binary patch literal 69385 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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/wall-woodchip-white.jpg b/web/assets/gen/wall-woodchip-white.jpg new file mode 100644 index 0000000000000000000000000000000000000000..831b2f7f150f0424cf28d3e9ea98c00fbf727fd5 GIT binary patch literal 90290 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 x.measureText(l).width)) + padX * 2); + const h = Math.ceil(lineH * lines.length + padY * 2); + c.width = w; c.height = h; + if (bg) { x.fillStyle = bg; x.fillRect(0, 0, w, h); } + x.font = font; x.fillStyle = fg; x.textBaseline = 'top'; + lines.forEach((l, i) => x.fillText(l, padX, padY + i * lineH)); + return { canvas: c, w, h }; +} + +// One-off text plane mesh, height in metres, width follows aspect. +export function textPlane(text, heightM = 0.4, opts = {}) { + const { canvas, w, h } = textCanvas(text, opts); + const tex = new THREE.CanvasTexture(canvas); + tex.colorSpace = THREE.SRGBColorSpace; + tex.anisotropy = 4; + const mesh = new THREE.Mesh( + new THREE.PlaneGeometry(heightM * (w / h), heightM), + new THREE.MeshBasicMaterial({ map: tex, transparent: !opts.bg }) + ); + mesh.userData.isTextPlane = true; + return mesh; +} diff --git a/web/js/core/loaders.js b/web/js/core/loaders.js new file mode 100644 index 0000000..7d30c17 --- /dev/null +++ b/web/js/core/loaders.js @@ -0,0 +1,39 @@ +// PROCITY core loaders — promise-cached, fail-soft (house pattern from both parent games). +// Missing asset ⇒ null / flat colour; callers keep their placeholder. The game runs asset-free. + +import * as THREE from 'three'; +import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; + +export const DEPOT = 'https://digalot.fyi/3god'; // shared GLB CDN: GET /a/, /api/list + +const gltfLoader = new GLTFLoader(); +const texLoader = new THREE.TextureLoader(); +const GLB_CACHE = {}; // url → Promise +const TEX_CACHE = {}; // url → THREE.Texture (may still be loading; fallback colour beneath) + +// loadGLB('gen/x.glb' | 'depot:file.glb' | full URL) → Promise, cached, never rejects +export function loadGLB(ref) { + const url = ref.startsWith('depot:') ? `${DEPOT}/a/${ref.slice(6)}` : ref; + return (GLB_CACHE[url] ||= gltfLoader.loadAsync(url).catch(err => { + console.warn('[loaders] GLB failed, placeholder stays:', url, err?.message || err); + return null; + })); +} + +// loadTex(url, {repeat:[u,v]}) → texture immediately (fills in when loaded), sRGB, aniso 4 +export function loadTex(url, opts = {}) { + if (TEX_CACHE[url]) return TEX_CACHE[url]; + const t = texLoader.load(url, undefined, undefined, + () => console.warn('[loaders] tex failed, fallback colour stays:', url)); + t.colorSpace = THREE.SRGBColorSpace; + t.anisotropy = 4; + if (opts.repeat) { t.wrapS = t.wrapT = THREE.RepeatWrapping; t.repeat.set(...opts.repeat); } + TEX_CACHE[url] = t; + return t; +} + +// fetch + cache the depot listing (editor palettes, Lane E validation) +let _depotList = null; +export async function depotList() { + return (_depotList ||= fetch(`${DEPOT}/api/list`).then(r => r.json()).catch(() => [])); +} diff --git a/web/js/core/prng.js b/web/js/core/prng.js new file mode 100644 index 0000000..1226d2a --- /dev/null +++ b/web/js/core/prng.js @@ -0,0 +1,46 @@ +// PROCITY core PRNG — the only randomness source in generation code (CITY_SPEC law). +// Same citySeed ⇒ byte-identical city. Math.random() is banned outside cosmetic-only FX. + +export function xmur3(str) { + let h = 1779033703 ^ str.length; + for (let i = 0; i < str.length; i++) { + h = Math.imul(h ^ str.charCodeAt(i), 3432918353); + h = (h << 13) | (h >>> 19); + } + return function () { + h = Math.imul(h ^ (h >>> 16), 2246822507); + h = Math.imul(h ^ (h >>> 13), 3266489909); + return (h ^= h >>> 16) >>> 0; + }; +} + +export function mulberry32(a) { + return function () { + a |= 0; a = (a + 0x6D2B79F5) | 0; + let t = Math.imul(a ^ (a >>> 15), 1 | a); + t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t; + return ((t ^ (t >>> 14)) >>> 0) / 4294967296; + }; +} + +// Stable uint32 for an entity: seedFor(citySeed, 'shop', 42) +export function seedFor(citySeed, kind, id) { + return xmur3(`${citySeed}:${kind}:${id}`)(); +} + +// Seeded stream for an entity: const r = rng(citySeed,'shop',42); r() → [0,1) +export function rng(citySeed, kind, id) { + return mulberry32(seedFor(citySeed, kind, id)); +} + +// Helpers over a stream r +export const pick = (r, arr) => arr[(r() * arr.length) | 0]; +export const irange = (r, lo, hi) => lo + ((r() * (hi - lo + 1)) | 0); // inclusive ints +export const frange = (r, lo, hi) => lo + r() * (hi - lo); +export function shuffle(r, arr) { // in-place Fisher-Yates + for (let i = arr.length - 1; i > 0; i--) { + const j = (r() * (i + 1)) | 0; + [arr[i], arr[j]] = [arr[j], arr[i]]; + } + return arr; +} diff --git a/web/vendor/addons/controls/PointerLockControls.js b/web/vendor/addons/controls/PointerLockControls.js new file mode 100644 index 0000000..5d39535 --- /dev/null +++ b/web/vendor/addons/controls/PointerLockControls.js @@ -0,0 +1,270 @@ +import { + Controls, + Euler, + Vector3 +} from 'three'; + +const _euler = new Euler( 0, 0, 0, 'YXZ' ); +const _vector = new Vector3(); + +/** + * Fires when the user moves the mouse. + * + * @event PointerLockControls#change + * @type {Object} + */ +const _changeEvent = { type: 'change' }; + +/** + * Fires when the pointer lock status is "locked" (in other words: the mouse is captured). + * + * @event PointerLockControls#lock + * @type {Object} + */ +const _lockEvent = { type: 'lock' }; + +/** + * Fires when the pointer lock status is "unlocked" (in other words: the mouse is not captured anymore). + * + * @event PointerLockControls#unlock + * @type {Object} + */ +const _unlockEvent = { type: 'unlock' }; + +const _PI_2 = Math.PI / 2; + +/** + * The implementation of this class is based on the [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}. + * `PointerLockControls` is a perfect choice for first person 3D games. + * + * ```js + * const controls = new PointerLockControls( camera, document.body ); + * + * // add event listener to show/hide a UI (e.g. the game's menu) + * controls.addEventListener( 'lock', function () { + * + * menu.style.display = 'none'; + * + * } ); + * + * controls.addEventListener( 'unlock', function () { + * + * menu.style.display = 'block'; + * + * } ); + * ``` + * + * @augments Controls + */ +class PointerLockControls extends Controls { + + /** + * Constructs a new controls instance. + * + * @param {Camera} camera - The camera that is managed by the controls. + * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners. + */ + constructor( camera, domElement = null ) { + + super( camera, domElement ); + + /** + * Whether the controls are locked or not. + * + * @type {boolean} + * @readonly + * @default false + */ + this.isLocked = false; + + /** + * Camera pitch, lower limit. Range is '[0, Math.PI]' in radians. + * + * @type {number} + * @default 0 + */ + this.minPolarAngle = 0; + + /** + * Camera pitch, upper limit. Range is '[0, Math.PI]' in radians. + * + * @type {number} + * @default Math.PI + */ + this.maxPolarAngle = Math.PI; + + /** + * Multiplier for how much the pointer movement influences the camera rotation. + * + * @type {number} + * @default 1 + */ + this.pointerSpeed = 1.0; + + // event listeners + + this._onMouseMove = onMouseMove.bind( this ); + this._onPointerlockChange = onPointerlockChange.bind( this ); + this._onPointerlockError = onPointerlockError.bind( this ); + + if ( this.domElement !== null ) { + + this.connect( this.domElement ); + + } + + } + + connect( element ) { + + super.connect( element ); + + this.domElement.ownerDocument.addEventListener( 'mousemove', this._onMouseMove ); + this.domElement.ownerDocument.addEventListener( 'pointerlockchange', this._onPointerlockChange ); + this.domElement.ownerDocument.addEventListener( 'pointerlockerror', this._onPointerlockError ); + + } + + disconnect() { + + this.domElement.ownerDocument.removeEventListener( 'mousemove', this._onMouseMove ); + this.domElement.ownerDocument.removeEventListener( 'pointerlockchange', this._onPointerlockChange ); + this.domElement.ownerDocument.removeEventListener( 'pointerlockerror', this._onPointerlockError ); + + } + + dispose() { + + this.disconnect(); + + } + + getObject() { + + console.warn( 'THREE.PointerLockControls: getObject() has been deprecated. Use controls.object instead.' ); // @deprecated r169 + + return this.object; + + } + + /** + * Returns the look direction of the camera. + * + * @param {Vector3} v - The target vector that is used to store the method's result. + * @return {Vector3} The normalized direction vector. + */ + getDirection( v ) { + + return v.set( 0, 0, - 1 ).applyQuaternion( this.object.quaternion ); + + } + + /** + * Moves the camera forward parallel to the xz-plane. Assumes camera.up is y-up. + * + * @param {number} distance - The signed distance. + */ + moveForward( distance ) { + + if ( this.enabled === false ) return; + + // move forward parallel to the xz-plane + // assumes camera.up is y-up + + const camera = this.object; + + _vector.setFromMatrixColumn( camera.matrix, 0 ); + + _vector.crossVectors( camera.up, _vector ); + + camera.position.addScaledVector( _vector, distance ); + + } + + /** + * Moves the camera sidewards parallel to the xz-plane. + * + * @param {number} distance - The signed distance. + */ + moveRight( distance ) { + + if ( this.enabled === false ) return; + + const camera = this.object; + + _vector.setFromMatrixColumn( camera.matrix, 0 ); + + camera.position.addScaledVector( _vector, distance ); + + } + + /** + * Activates the pointer lock. + * + * @param {boolean} [unadjustedMovement=false] - Disables OS-level adjustment for mouse acceleration, and accesses raw mouse input instead. + * Setting it to true will disable mouse acceleration. + */ + lock( unadjustedMovement = false ) { + + this.domElement.requestPointerLock( { + unadjustedMovement + } ); + + } + + /** + * Exits the pointer lock. + */ + unlock() { + + this.domElement.ownerDocument.exitPointerLock(); + + } + +} + +// event listeners + +function onMouseMove( event ) { + + if ( this.enabled === false || this.isLocked === false ) return; + + const camera = this.object; + _euler.setFromQuaternion( camera.quaternion ); + + _euler.y -= event.movementX * 0.002 * this.pointerSpeed; + _euler.x -= event.movementY * 0.002 * this.pointerSpeed; + + _euler.x = Math.max( _PI_2 - this.maxPolarAngle, Math.min( _PI_2 - this.minPolarAngle, _euler.x ) ); + + camera.quaternion.setFromEuler( _euler ); + + this.dispatchEvent( _changeEvent ); + +} + +function onPointerlockChange() { + + if ( this.domElement.ownerDocument.pointerLockElement === this.domElement ) { + + this.dispatchEvent( _lockEvent ); + + this.isLocked = true; + + } else { + + this.dispatchEvent( _unlockEvent ); + + this.isLocked = false; + + } + +} + +function onPointerlockError() { + + console.error( 'THREE.PointerLockControls: Unable to use Pointer Lock API' ); + +} + +export { PointerLockControls }; diff --git a/web/vendor/addons/loaders/GLTFLoader.js b/web/vendor/addons/loaders/GLTFLoader.js new file mode 100644 index 0000000..45d2207 --- /dev/null +++ b/web/vendor/addons/loaders/GLTFLoader.js @@ -0,0 +1,4958 @@ +import { + AnimationClip, + Bone, + Box3, + BufferAttribute, + BufferGeometry, + ClampToEdgeWrapping, + Color, + ColorManagement, + DirectionalLight, + DoubleSide, + FileLoader, + FrontSide, + Group, + ImageBitmapLoader, + InstancedMesh, + InterleavedBuffer, + InterleavedBufferAttribute, + Interpolant, + InterpolateDiscrete, + InterpolateLinear, + Line, + LineBasicMaterial, + LineLoop, + LineSegments, + LinearFilter, + LinearMipmapLinearFilter, + LinearMipmapNearestFilter, + LinearSRGBColorSpace, + Loader, + LoaderUtils, + Material, + MathUtils, + Matrix4, + Mesh, + MeshBasicMaterial, + MeshPhysicalMaterial, + MeshStandardMaterial, + MirroredRepeatWrapping, + NearestFilter, + NearestMipmapLinearFilter, + NearestMipmapNearestFilter, + NumberKeyframeTrack, + Object3D, + OrthographicCamera, + PerspectiveCamera, + PointLight, + Points, + PointsMaterial, + PropertyBinding, + Quaternion, + QuaternionKeyframeTrack, + RepeatWrapping, + Skeleton, + SkinnedMesh, + Sphere, + SpotLight, + Texture, + TextureLoader, + TriangleFanDrawMode, + TriangleStripDrawMode, + Vector2, + Vector3, + VectorKeyframeTrack, + SRGBColorSpace, + InstancedBufferAttribute +} from 'three'; +import { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js'; + +/** + * A loader for the glTF 2.0 format. + * + * [glTF]{@link https://www.khronos.org/gltf/} (GL Transmission Format) is an [open format specification]{@link https://github.com/KhronosGroup/glTF/tree/main/specification/2.0} + * for efficient delivery and loading of 3D content. Assets may be provided either in JSON (.gltf) or binary (.glb) + * format. External files store textures (.jpg, .png) and additional binary data (.bin). A glTF asset may deliver + * one or more scenes, including meshes, materials, textures, skins, skeletons, morph targets, animations, lights, + * and/or cameras. + * + * `GLTFLoader` uses {@link ImageBitmapLoader} whenever possible. Be advised that image bitmaps are not + * automatically GC-collected when they are no longer referenced, and they require special handling during + * the disposal process. + * + * `GLTFLoader` supports the following glTF 2.0 extensions: + * - KHR_draco_mesh_compression + * - KHR_materials_clearcoat + * - KHR_materials_dispersion + * - KHR_materials_ior + * - KHR_materials_specular + * - KHR_materials_transmission + * - KHR_materials_iridescence + * - KHR_materials_unlit + * - KHR_materials_volume + * - KHR_mesh_quantization + * - KHR_lights_punctual + * - KHR_texture_basisu + * - KHR_texture_transform + * - EXT_texture_webp + * - EXT_meshopt_compression + * - EXT_mesh_gpu_instancing + * + * The following glTF 2.0 extension is supported by an external user plugin: + * - [KHR_materials_variants]{@link https://github.com/takahirox/three-gltf-extensions} + * - [MSFT_texture_dds]{@link https://github.com/takahirox/three-gltf-extensions} + * + * ```js + * const loader = new GLTFLoader(); + * + * // Optional: Provide a DRACOLoader instance to decode compressed mesh data + * const dracoLoader = new DRACOLoader(); + * dracoLoader.setDecoderPath( '/examples/jsm/libs/draco/' ); + * loader.setDRACOLoader( dracoLoader ); + * + * const gltf = await loader.loadAsync( 'models/gltf/duck/duck.gltf' ); + * scene.add( gltf.scene ); + * ``` + * + * @augments Loader + */ +class GLTFLoader extends Loader { + + /** + * Constructs a new glTF loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + super( manager ); + + this.dracoLoader = null; + this.ktx2Loader = null; + this.meshoptDecoder = null; + + this.pluginCallbacks = []; + + this.register( function ( parser ) { + + return new GLTFMaterialsClearcoatExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsDispersionExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFTextureBasisUExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFTextureWebPExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFTextureAVIFExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsSheenExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsTransmissionExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsVolumeExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsIorExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsEmissiveStrengthExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsSpecularExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsIridescenceExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsAnisotropyExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsBumpExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFLightsExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMeshoptCompression( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMeshGpuInstancing( parser ); + + } ); + + } + + /** + * Starts loading from the given URL and passes the loaded glTF asset + * to the `onLoad()` callback. + * + * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. + * @param {function(GLTFLoader~LoadObject)} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} onProgress - Executed while the loading is in progress. + * @param {onErrorCallback} onError - Executed when errors occur. + */ + load( url, onLoad, onProgress, onError ) { + + const scope = this; + + let resourcePath; + + if ( this.resourcePath !== '' ) { + + resourcePath = this.resourcePath; + + } else if ( this.path !== '' ) { + + // If a base path is set, resources will be relative paths from that plus the relative path of the gltf file + // Example path = 'https://my-cnd-server.com/', url = 'assets/models/model.gltf' + // resourcePath = 'https://my-cnd-server.com/assets/models/' + // referenced resource 'model.bin' will be loaded from 'https://my-cnd-server.com/assets/models/model.bin' + // referenced resource '../textures/texture.png' will be loaded from 'https://my-cnd-server.com/assets/textures/texture.png' + const relativeUrl = LoaderUtils.extractUrlBase( url ); + resourcePath = LoaderUtils.resolveURL( relativeUrl, this.path ); + + } else { + + resourcePath = LoaderUtils.extractUrlBase( url ); + + } + + // Tells the LoadingManager to track an extra item, which resolves after + // the model is fully loaded. This means the count of items loaded will + // be incorrect, but ensures manager.onLoad() does not fire early. + this.manager.itemStart( url ); + + const _onError = function ( e ) { + + if ( onError ) { + + onError( e ); + + } else { + + console.error( e ); + + } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + }; + + const loader = new FileLoader( this.manager ); + + loader.setPath( this.path ); + loader.setResponseType( 'arraybuffer' ); + loader.setRequestHeader( this.requestHeader ); + loader.setWithCredentials( this.withCredentials ); + + loader.load( url, function ( data ) { + + try { + + scope.parse( data, resourcePath, function ( gltf ) { + + onLoad( gltf ); + + scope.manager.itemEnd( url ); + + }, _onError ); + + } catch ( e ) { + + _onError( e ); + + } + + }, onProgress, _onError ); + + } + + /** + * Sets the given Draco loader to this loader. Required for decoding assets + * compressed with the `KHR_draco_mesh_compression` extension. + * + * @param {DRACOLoader} dracoLoader - The Draco loader to set. + * @return {GLTFLoader} A reference to this loader. + */ + setDRACOLoader( dracoLoader ) { + + this.dracoLoader = dracoLoader; + return this; + + } + + /** + * Sets the given KTX2 loader to this loader. Required for loading KTX2 + * compressed textures. + * + * @param {KTX2Loader} ktx2Loader - The KTX2 loader to set. + * @return {GLTFLoader} A reference to this loader. + */ + setKTX2Loader( ktx2Loader ) { + + this.ktx2Loader = ktx2Loader; + return this; + + } + + /** + * Sets the given meshopt decoder. Required for decoding assets + * compressed with the `EXT_meshopt_compression` extension. + * + * @param {Object} meshoptDecoder - The meshopt decoder to set. + * @return {GLTFLoader} A reference to this loader. + */ + setMeshoptDecoder( meshoptDecoder ) { + + this.meshoptDecoder = meshoptDecoder; + return this; + + } + + /** + * Registers a plugin callback. This API is internally used to implement the various + * glTF extensions but can also used by third-party code to add additional logic + * to the loader. + * + * @param {function(parser:GLTFParser)} callback - The callback function to register. + * @return {GLTFLoader} A reference to this loader. + */ + register( callback ) { + + if ( this.pluginCallbacks.indexOf( callback ) === - 1 ) { + + this.pluginCallbacks.push( callback ); + + } + + return this; + + } + + /** + * Unregisters a plugin callback. + * + * @param {Function} callback - The callback function to unregister. + * @return {GLTFLoader} A reference to this loader. + */ + unregister( callback ) { + + if ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) { + + this.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 ); + + } + + return this; + + } + + /** + * Parses the given FBX data and returns the resulting group. + * + * @param {string|ArrayBuffer} data - The raw glTF data. + * @param {string} path - The URL base path. + * @param {function(GLTFLoader~LoadObject)} onLoad - Executed when the loading process has been finished. + * @param {onErrorCallback} onError - Executed when errors occur. + */ + parse( data, path, onLoad, onError ) { + + let json; + const extensions = {}; + const plugins = {}; + const textDecoder = new TextDecoder(); + + if ( typeof data === 'string' ) { + + json = JSON.parse( data ); + + } else if ( data instanceof ArrayBuffer ) { + + const magic = textDecoder.decode( new Uint8Array( data, 0, 4 ) ); + + if ( magic === BINARY_EXTENSION_HEADER_MAGIC ) { + + try { + + extensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data ); + + } catch ( error ) { + + if ( onError ) onError( error ); + return; + + } + + json = JSON.parse( extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content ); + + } else { + + json = JSON.parse( textDecoder.decode( data ) ); + + } + + } else { + + json = data; + + } + + if ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) { + + if ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) ); + return; + + } + + const parser = new GLTFParser( json, { + + path: path || this.resourcePath || '', + crossOrigin: this.crossOrigin, + requestHeader: this.requestHeader, + manager: this.manager, + ktx2Loader: this.ktx2Loader, + meshoptDecoder: this.meshoptDecoder + + } ); + + parser.fileLoader.setRequestHeader( this.requestHeader ); + + for ( let i = 0; i < this.pluginCallbacks.length; i ++ ) { + + const plugin = this.pluginCallbacks[ i ]( parser ); + + if ( ! plugin.name ) console.error( 'THREE.GLTFLoader: Invalid plugin found: missing name' ); + + plugins[ plugin.name ] = plugin; + + // Workaround to avoid determining as unknown extension + // in addUnknownExtensionsToUserData(). + // Remove this workaround if we move all the existing + // extension handlers to plugin system + extensions[ plugin.name ] = true; + + } + + if ( json.extensionsUsed ) { + + for ( let i = 0; i < json.extensionsUsed.length; ++ i ) { + + const extensionName = json.extensionsUsed[ i ]; + const extensionsRequired = json.extensionsRequired || []; + + switch ( extensionName ) { + + case EXTENSIONS.KHR_MATERIALS_UNLIT: + extensions[ extensionName ] = new GLTFMaterialsUnlitExtension(); + break; + + case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION: + extensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader ); + break; + + case EXTENSIONS.KHR_TEXTURE_TRANSFORM: + extensions[ extensionName ] = new GLTFTextureTransformExtension(); + break; + + case EXTENSIONS.KHR_MESH_QUANTIZATION: + extensions[ extensionName ] = new GLTFMeshQuantizationExtension(); + break; + + default: + + if ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) { + + console.warn( 'THREE.GLTFLoader: Unknown extension "' + extensionName + '".' ); + + } + + } + + } + + } + + parser.setExtensions( extensions ); + parser.setPlugins( plugins ); + parser.parse( onLoad, onError ); + + } + + /** + * Async version of {@link GLTFLoader#parse}. + * + * @async + * @param {string|ArrayBuffer} data - The raw glTF data. + * @param {string} path - The URL base path. + * @return {Promise} A Promise that resolves with the loaded glTF when the parsing has been finished. + */ + parseAsync( data, path ) { + + const scope = this; + + return new Promise( function ( resolve, reject ) { + + scope.parse( data, path, resolve, reject ); + + } ); + + } + +} + +/* GLTFREGISTRY */ + +function GLTFRegistry() { + + let objects = {}; + + return { + + get: function ( key ) { + + return objects[ key ]; + + }, + + add: function ( key, object ) { + + objects[ key ] = object; + + }, + + remove: function ( key ) { + + delete objects[ key ]; + + }, + + removeAll: function () { + + objects = {}; + + } + + }; + +} + +/*********************************/ +/********** EXTENSIONS ***********/ +/*********************************/ + +const EXTENSIONS = { + KHR_BINARY_GLTF: 'KHR_binary_glTF', + KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression', + KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual', + KHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat', + KHR_MATERIALS_DISPERSION: 'KHR_materials_dispersion', + KHR_MATERIALS_IOR: 'KHR_materials_ior', + KHR_MATERIALS_SHEEN: 'KHR_materials_sheen', + KHR_MATERIALS_SPECULAR: 'KHR_materials_specular', + KHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission', + KHR_MATERIALS_IRIDESCENCE: 'KHR_materials_iridescence', + KHR_MATERIALS_ANISOTROPY: 'KHR_materials_anisotropy', + KHR_MATERIALS_UNLIT: 'KHR_materials_unlit', + KHR_MATERIALS_VOLUME: 'KHR_materials_volume', + KHR_TEXTURE_BASISU: 'KHR_texture_basisu', + KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform', + KHR_MESH_QUANTIZATION: 'KHR_mesh_quantization', + KHR_MATERIALS_EMISSIVE_STRENGTH: 'KHR_materials_emissive_strength', + EXT_MATERIALS_BUMP: 'EXT_materials_bump', + EXT_TEXTURE_WEBP: 'EXT_texture_webp', + EXT_TEXTURE_AVIF: 'EXT_texture_avif', + EXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression', + EXT_MESH_GPU_INSTANCING: 'EXT_mesh_gpu_instancing' +}; + +/** + * Punctual Lights Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual + * + * @private + */ +class GLTFLightsExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL; + + // Object3D instance caches + this.cache = { refs: {}, uses: {} }; + + } + + _markDefs() { + + const parser = this.parser; + const nodeDefs = this.parser.json.nodes || []; + + for ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) { + + const nodeDef = nodeDefs[ nodeIndex ]; + + if ( nodeDef.extensions + && nodeDef.extensions[ this.name ] + && nodeDef.extensions[ this.name ].light !== undefined ) { + + parser._addNodeRef( this.cache, nodeDef.extensions[ this.name ].light ); + + } + + } + + } + + _loadLight( lightIndex ) { + + const parser = this.parser; + const cacheKey = 'light:' + lightIndex; + let dependency = parser.cache.get( cacheKey ); + + if ( dependency ) return dependency; + + const json = parser.json; + const extensions = ( json.extensions && json.extensions[ this.name ] ) || {}; + const lightDefs = extensions.lights || []; + const lightDef = lightDefs[ lightIndex ]; + let lightNode; + + const color = new Color( 0xffffff ); + + if ( lightDef.color !== undefined ) color.setRGB( lightDef.color[ 0 ], lightDef.color[ 1 ], lightDef.color[ 2 ], LinearSRGBColorSpace ); + + const range = lightDef.range !== undefined ? lightDef.range : 0; + + switch ( lightDef.type ) { + + case 'directional': + lightNode = new DirectionalLight( color ); + lightNode.target.position.set( 0, 0, - 1 ); + lightNode.add( lightNode.target ); + break; + + case 'point': + lightNode = new PointLight( color ); + lightNode.distance = range; + break; + + case 'spot': + lightNode = new SpotLight( color ); + lightNode.distance = range; + // Handle spotlight properties. + lightDef.spot = lightDef.spot || {}; + lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0; + lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0; + lightNode.angle = lightDef.spot.outerConeAngle; + lightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle; + lightNode.target.position.set( 0, 0, - 1 ); + lightNode.add( lightNode.target ); + break; + + default: + throw new Error( 'THREE.GLTFLoader: Unexpected light type: ' + lightDef.type ); + + } + + // Some lights (e.g. spot) default to a position other than the origin. Reset the position + // here, because node-level parsing will only override position if explicitly specified. + lightNode.position.set( 0, 0, 0 ); + + assignExtrasToUserData( lightNode, lightDef ); + + if ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity; + + lightNode.name = parser.createUniqueName( lightDef.name || ( 'light_' + lightIndex ) ); + + dependency = Promise.resolve( lightNode ); + + parser.cache.add( cacheKey, dependency ); + + return dependency; + + } + + getDependency( type, index ) { + + if ( type !== 'light' ) return; + + return this._loadLight( index ); + + } + + createNodeAttachment( nodeIndex ) { + + const self = this; + const parser = this.parser; + const json = parser.json; + const nodeDef = json.nodes[ nodeIndex ]; + const lightDef = ( nodeDef.extensions && nodeDef.extensions[ this.name ] ) || {}; + const lightIndex = lightDef.light; + + if ( lightIndex === undefined ) return null; + + return this._loadLight( lightIndex ).then( function ( light ) { + + return parser._getNodeRef( self.cache, lightIndex, light ); + + } ); + + } + +} + +/** + * Unlit Materials Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit + * + * @private + */ +class GLTFMaterialsUnlitExtension { + + constructor() { + + this.name = EXTENSIONS.KHR_MATERIALS_UNLIT; + + } + + getMaterialType() { + + return MeshBasicMaterial; + + } + + extendParams( materialParams, materialDef, parser ) { + + const pending = []; + + materialParams.color = new Color( 1.0, 1.0, 1.0 ); + materialParams.opacity = 1.0; + + const metallicRoughness = materialDef.pbrMetallicRoughness; + + if ( metallicRoughness ) { + + if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { + + const array = metallicRoughness.baseColorFactor; + + materialParams.color.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace ); + materialParams.opacity = array[ 3 ]; + + } + + if ( metallicRoughness.baseColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, SRGBColorSpace ) ); + + } + + } + + return Promise.all( pending ); + + } + +} + +/** + * Materials Emissive Strength Extension + * + * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md + * + * @private + */ +class GLTFMaterialsEmissiveStrengthExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const emissiveStrength = materialDef.extensions[ this.name ].emissiveStrength; + + if ( emissiveStrength !== undefined ) { + + materialParams.emissiveIntensity = emissiveStrength; + + } + + return Promise.resolve(); + + } + +} + +/** + * Clearcoat Materials Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat + * + * @private + */ +class GLTFMaterialsClearcoatExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + if ( extension.clearcoatFactor !== undefined ) { + + materialParams.clearcoat = extension.clearcoatFactor; + + } + + if ( extension.clearcoatTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) ); + + } + + if ( extension.clearcoatRoughnessFactor !== undefined ) { + + materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor; + + } + + if ( extension.clearcoatRoughnessTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) ); + + } + + if ( extension.clearcoatNormalTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) ); + + if ( extension.clearcoatNormalTexture.scale !== undefined ) { + + const scale = extension.clearcoatNormalTexture.scale; + + materialParams.clearcoatNormalScale = new Vector2( scale, scale ); + + } + + } + + return Promise.all( pending ); + + } + +} + +/** + * Materials dispersion Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_dispersion + * + * @private + */ +class GLTFMaterialsDispersionExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_DISPERSION; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const extension = materialDef.extensions[ this.name ]; + + materialParams.dispersion = extension.dispersion !== undefined ? extension.dispersion : 0; + + return Promise.resolve(); + + } + +} + +/** + * Iridescence Materials Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence + * + * @private + */ +class GLTFMaterialsIridescenceExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + if ( extension.iridescenceFactor !== undefined ) { + + materialParams.iridescence = extension.iridescenceFactor; + + } + + if ( extension.iridescenceTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'iridescenceMap', extension.iridescenceTexture ) ); + + } + + if ( extension.iridescenceIor !== undefined ) { + + materialParams.iridescenceIOR = extension.iridescenceIor; + + } + + if ( materialParams.iridescenceThicknessRange === undefined ) { + + materialParams.iridescenceThicknessRange = [ 100, 400 ]; + + } + + if ( extension.iridescenceThicknessMinimum !== undefined ) { + + materialParams.iridescenceThicknessRange[ 0 ] = extension.iridescenceThicknessMinimum; + + } + + if ( extension.iridescenceThicknessMaximum !== undefined ) { + + materialParams.iridescenceThicknessRange[ 1 ] = extension.iridescenceThicknessMaximum; + + } + + if ( extension.iridescenceThicknessTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'iridescenceThicknessMap', extension.iridescenceThicknessTexture ) ); + + } + + return Promise.all( pending ); + + } + +} + +/** + * Sheen Materials Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen + * + * @private + */ +class GLTFMaterialsSheenExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_SHEEN; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + materialParams.sheenColor = new Color( 0, 0, 0 ); + materialParams.sheenRoughness = 0; + materialParams.sheen = 1; + + const extension = materialDef.extensions[ this.name ]; + + if ( extension.sheenColorFactor !== undefined ) { + + const colorFactor = extension.sheenColorFactor; + materialParams.sheenColor.setRGB( colorFactor[ 0 ], colorFactor[ 1 ], colorFactor[ 2 ], LinearSRGBColorSpace ); + + } + + if ( extension.sheenRoughnessFactor !== undefined ) { + + materialParams.sheenRoughness = extension.sheenRoughnessFactor; + + } + + if ( extension.sheenColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture, SRGBColorSpace ) ); + + } + + if ( extension.sheenRoughnessTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'sheenRoughnessMap', extension.sheenRoughnessTexture ) ); + + } + + return Promise.all( pending ); + + } + +} + +/** + * Transmission Materials Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission + * Draft: https://github.com/KhronosGroup/glTF/pull/1698 + * + * @private + */ +class GLTFMaterialsTransmissionExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + if ( extension.transmissionFactor !== undefined ) { + + materialParams.transmission = extension.transmissionFactor; + + } + + if ( extension.transmissionTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) ); + + } + + return Promise.all( pending ); + + } + +} + +/** + * Materials Volume Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume + * + * @private + */ +class GLTFMaterialsVolumeExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_VOLUME; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + materialParams.thickness = extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0; + + if ( extension.thicknessTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'thicknessMap', extension.thicknessTexture ) ); + + } + + materialParams.attenuationDistance = extension.attenuationDistance || Infinity; + + const colorArray = extension.attenuationColor || [ 1, 1, 1 ]; + materialParams.attenuationColor = new Color().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace ); + + return Promise.all( pending ); + + } + +} + +/** + * Materials ior Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior + * + * @private + */ +class GLTFMaterialsIorExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_IOR; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const extension = materialDef.extensions[ this.name ]; + + materialParams.ior = extension.ior !== undefined ? extension.ior : 1.5; + + return Promise.resolve(); + + } + +} + +/** + * Materials specular Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular + * + * @private + */ +class GLTFMaterialsSpecularExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + materialParams.specularIntensity = extension.specularFactor !== undefined ? extension.specularFactor : 1.0; + + if ( extension.specularTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'specularIntensityMap', extension.specularTexture ) ); + + } + + const colorArray = extension.specularColorFactor || [ 1, 1, 1 ]; + materialParams.specularColor = new Color().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace ); + + if ( extension.specularColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture, SRGBColorSpace ) ); + + } + + return Promise.all( pending ); + + } + +} + + +/** + * Materials bump Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_materials_bump + * + * @private + */ +class GLTFMaterialsBumpExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.EXT_MATERIALS_BUMP; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + materialParams.bumpScale = extension.bumpFactor !== undefined ? extension.bumpFactor : 1.0; + + if ( extension.bumpTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'bumpMap', extension.bumpTexture ) ); + + } + + return Promise.all( pending ); + + } + +} + +/** + * Materials anisotropy Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_anisotropy + * + * @private + */ +class GLTFMaterialsAnisotropyExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_ANISOTROPY; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + if ( extension.anisotropyStrength !== undefined ) { + + materialParams.anisotropy = extension.anisotropyStrength; + + } + + if ( extension.anisotropyRotation !== undefined ) { + + materialParams.anisotropyRotation = extension.anisotropyRotation; + + } + + if ( extension.anisotropyTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'anisotropyMap', extension.anisotropyTexture ) ); + + } + + return Promise.all( pending ); + + } + +} + +/** + * BasisU Texture Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu + * + * @private + */ +class GLTFTextureBasisUExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_TEXTURE_BASISU; + + } + + loadTexture( textureIndex ) { + + const parser = this.parser; + const json = parser.json; + + const textureDef = json.textures[ textureIndex ]; + + if ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) { + + return null; + + } + + const extension = textureDef.extensions[ this.name ]; + const loader = parser.options.ktx2Loader; + + if ( ! loader ) { + + if ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) { + + throw new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' ); + + } else { + + // Assumes that the extension is optional and that a fallback texture is present + return null; + + } + + } + + return parser.loadTextureImage( textureIndex, extension.source, loader ); + + } + +} + +/** + * WebP Texture Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp + * + * @private + */ +class GLTFTextureWebPExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.EXT_TEXTURE_WEBP; + this.isSupported = null; + + } + + loadTexture( textureIndex ) { + + const name = this.name; + const parser = this.parser; + const json = parser.json; + + const textureDef = json.textures[ textureIndex ]; + + if ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) { + + return null; + + } + + const extension = textureDef.extensions[ name ]; + const source = json.images[ extension.source ]; + + let loader = parser.textureLoader; + if ( source.uri ) { + + const handler = parser.options.manager.getHandler( source.uri ); + if ( handler !== null ) loader = handler; + + } + + return this.detectSupport().then( function ( isSupported ) { + + if ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader ); + + if ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) { + + throw new Error( 'THREE.GLTFLoader: WebP required by asset but unsupported.' ); + + } + + // Fall back to PNG or JPEG. + return parser.loadTexture( textureIndex ); + + } ); + + } + + detectSupport() { + + if ( ! this.isSupported ) { + + this.isSupported = new Promise( function ( resolve ) { + + const image = new Image(); + + // Lossy test image. Support for lossy images doesn't guarantee support for all + // WebP images, unfortunately. + image.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA'; + + image.onload = image.onerror = function () { + + resolve( image.height === 1 ); + + }; + + } ); + + } + + return this.isSupported; + + } + +} + +/** + * AVIF Texture Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_avif + * + * @private + */ +class GLTFTextureAVIFExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.EXT_TEXTURE_AVIF; + this.isSupported = null; + + } + + loadTexture( textureIndex ) { + + const name = this.name; + const parser = this.parser; + const json = parser.json; + + const textureDef = json.textures[ textureIndex ]; + + if ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) { + + return null; + + } + + const extension = textureDef.extensions[ name ]; + const source = json.images[ extension.source ]; + + let loader = parser.textureLoader; + if ( source.uri ) { + + const handler = parser.options.manager.getHandler( source.uri ); + if ( handler !== null ) loader = handler; + + } + + return this.detectSupport().then( function ( isSupported ) { + + if ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader ); + + if ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) { + + throw new Error( 'THREE.GLTFLoader: AVIF required by asset but unsupported.' ); + + } + + // Fall back to PNG or JPEG. + return parser.loadTexture( textureIndex ); + + } ); + + } + + detectSupport() { + + if ( ! this.isSupported ) { + + this.isSupported = new Promise( function ( resolve ) { + + const image = new Image(); + + // Lossy test image. + image.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI='; + image.onload = image.onerror = function () { + + resolve( image.height === 1 ); + + }; + + } ); + + } + + return this.isSupported; + + } + +} + +/** + * meshopt BufferView Compression Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression + * + * @private + */ +class GLTFMeshoptCompression { + + constructor( parser ) { + + this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION; + this.parser = parser; + + } + + loadBufferView( index ) { + + const json = this.parser.json; + const bufferView = json.bufferViews[ index ]; + + if ( bufferView.extensions && bufferView.extensions[ this.name ] ) { + + const extensionDef = bufferView.extensions[ this.name ]; + + const buffer = this.parser.getDependency( 'buffer', extensionDef.buffer ); + const decoder = this.parser.options.meshoptDecoder; + + if ( ! decoder || ! decoder.supported ) { + + if ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) { + + throw new Error( 'THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files' ); + + } else { + + // Assumes that the extension is optional and that fallback buffer data is present + return null; + + } + + } + + return buffer.then( function ( res ) { + + const byteOffset = extensionDef.byteOffset || 0; + const byteLength = extensionDef.byteLength || 0; + + const count = extensionDef.count; + const stride = extensionDef.byteStride; + + const source = new Uint8Array( res, byteOffset, byteLength ); + + if ( decoder.decodeGltfBufferAsync ) { + + return decoder.decodeGltfBufferAsync( count, stride, source, extensionDef.mode, extensionDef.filter ).then( function ( res ) { + + return res.buffer; + + } ); + + } else { + + // Support for MeshoptDecoder 0.18 or earlier, without decodeGltfBufferAsync + return decoder.ready.then( function () { + + const result = new ArrayBuffer( count * stride ); + decoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter ); + return result; + + } ); + + } + + } ); + + } else { + + return null; + + } + + } + +} + +/** + * GPU Instancing Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing + * + * @private + */ +class GLTFMeshGpuInstancing { + + constructor( parser ) { + + this.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING; + this.parser = parser; + + } + + createNodeMesh( nodeIndex ) { + + const json = this.parser.json; + const nodeDef = json.nodes[ nodeIndex ]; + + if ( ! nodeDef.extensions || ! nodeDef.extensions[ this.name ] || + nodeDef.mesh === undefined ) { + + return null; + + } + + const meshDef = json.meshes[ nodeDef.mesh ]; + + // No Points or Lines + Instancing support yet + + for ( const primitive of meshDef.primitives ) { + + if ( primitive.mode !== WEBGL_CONSTANTS.TRIANGLES && + primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP && + primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN && + primitive.mode !== undefined ) { + + return null; + + } + + } + + const extensionDef = nodeDef.extensions[ this.name ]; + const attributesDef = extensionDef.attributes; + + // @TODO: Can we support InstancedMesh + SkinnedMesh? + + const pending = []; + const attributes = {}; + + for ( const key in attributesDef ) { + + pending.push( this.parser.getDependency( 'accessor', attributesDef[ key ] ).then( accessor => { + + attributes[ key ] = accessor; + return attributes[ key ]; + + } ) ); + + } + + if ( pending.length < 1 ) { + + return null; + + } + + pending.push( this.parser.createNodeMesh( nodeIndex ) ); + + return Promise.all( pending ).then( results => { + + const nodeObject = results.pop(); + const meshes = nodeObject.isGroup ? nodeObject.children : [ nodeObject ]; + const count = results[ 0 ].count; // All attribute counts should be same + const instancedMeshes = []; + + for ( const mesh of meshes ) { + + // Temporal variables + const m = new Matrix4(); + const p = new Vector3(); + const q = new Quaternion(); + const s = new Vector3( 1, 1, 1 ); + + const instancedMesh = new InstancedMesh( mesh.geometry, mesh.material, count ); + + for ( let i = 0; i < count; i ++ ) { + + if ( attributes.TRANSLATION ) { + + p.fromBufferAttribute( attributes.TRANSLATION, i ); + + } + + if ( attributes.ROTATION ) { + + q.fromBufferAttribute( attributes.ROTATION, i ); + + } + + if ( attributes.SCALE ) { + + s.fromBufferAttribute( attributes.SCALE, i ); + + } + + instancedMesh.setMatrixAt( i, m.compose( p, q, s ) ); + + } + + // Add instance attributes to the geometry, excluding TRS. + for ( const attributeName in attributes ) { + + if ( attributeName === '_COLOR_0' ) { + + const attr = attributes[ attributeName ]; + instancedMesh.instanceColor = new InstancedBufferAttribute( attr.array, attr.itemSize, attr.normalized ); + + } else if ( attributeName !== 'TRANSLATION' && + attributeName !== 'ROTATION' && + attributeName !== 'SCALE' ) { + + mesh.geometry.setAttribute( attributeName, attributes[ attributeName ] ); + + } + + } + + // Just in case + Object3D.prototype.copy.call( instancedMesh, mesh ); + + this.parser.assignFinalMaterial( instancedMesh ); + + instancedMeshes.push( instancedMesh ); + + } + + if ( nodeObject.isGroup ) { + + nodeObject.clear(); + + nodeObject.add( ... instancedMeshes ); + + return nodeObject; + + } + + return instancedMeshes[ 0 ]; + + } ); + + } + +} + +/* BINARY EXTENSION */ +const BINARY_EXTENSION_HEADER_MAGIC = 'glTF'; +const BINARY_EXTENSION_HEADER_LENGTH = 12; +const BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 }; + +class GLTFBinaryExtension { + + constructor( data ) { + + this.name = EXTENSIONS.KHR_BINARY_GLTF; + this.content = null; + this.body = null; + + const headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH ); + const textDecoder = new TextDecoder(); + + this.header = { + magic: textDecoder.decode( new Uint8Array( data.slice( 0, 4 ) ) ), + version: headerView.getUint32( 4, true ), + length: headerView.getUint32( 8, true ) + }; + + if ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) { + + throw new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' ); + + } else if ( this.header.version < 2.0 ) { + + throw new Error( 'THREE.GLTFLoader: Legacy binary file detected.' ); + + } + + const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH; + const chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH ); + let chunkIndex = 0; + + while ( chunkIndex < chunkContentsLength ) { + + const chunkLength = chunkView.getUint32( chunkIndex, true ); + chunkIndex += 4; + + const chunkType = chunkView.getUint32( chunkIndex, true ); + chunkIndex += 4; + + if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) { + + const contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength ); + this.content = textDecoder.decode( contentArray ); + + } else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) { + + const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex; + this.body = data.slice( byteOffset, byteOffset + chunkLength ); + + } + + // Clients must ignore chunks with unknown types. + + chunkIndex += chunkLength; + + } + + if ( this.content === null ) { + + throw new Error( 'THREE.GLTFLoader: JSON content not found.' ); + + } + + } + +} + +/** + * DRACO Mesh Compression Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression + * + * @private + */ +class GLTFDracoMeshCompressionExtension { + + constructor( json, dracoLoader ) { + + if ( ! dracoLoader ) { + + throw new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' ); + + } + + this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION; + this.json = json; + this.dracoLoader = dracoLoader; + this.dracoLoader.preload(); + + } + + decodePrimitive( primitive, parser ) { + + const json = this.json; + const dracoLoader = this.dracoLoader; + const bufferViewIndex = primitive.extensions[ this.name ].bufferView; + const gltfAttributeMap = primitive.extensions[ this.name ].attributes; + const threeAttributeMap = {}; + const attributeNormalizedMap = {}; + const attributeTypeMap = {}; + + for ( const attributeName in gltfAttributeMap ) { + + const threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase(); + + threeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ]; + + } + + for ( const attributeName in primitive.attributes ) { + + const threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase(); + + if ( gltfAttributeMap[ attributeName ] !== undefined ) { + + const accessorDef = json.accessors[ primitive.attributes[ attributeName ] ]; + const componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; + + attributeTypeMap[ threeAttributeName ] = componentType.name; + attributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true; + + } + + } + + return parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) { + + return new Promise( function ( resolve, reject ) { + + dracoLoader.decodeDracoFile( bufferView, function ( geometry ) { + + for ( const attributeName in geometry.attributes ) { + + const attribute = geometry.attributes[ attributeName ]; + const normalized = attributeNormalizedMap[ attributeName ]; + + if ( normalized !== undefined ) attribute.normalized = normalized; + + } + + resolve( geometry ); + + }, threeAttributeMap, attributeTypeMap, LinearSRGBColorSpace, reject ); + + } ); + + } ); + + } + +} + +/** + * Texture Transform Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform + * + * @private + */ +class GLTFTextureTransformExtension { + + constructor() { + + this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM; + + } + + extendTexture( texture, transform ) { + + if ( ( transform.texCoord === undefined || transform.texCoord === texture.channel ) + && transform.offset === undefined + && transform.rotation === undefined + && transform.scale === undefined ) { + + // See https://github.com/mrdoob/three.js/issues/21819. + return texture; + + } + + texture = texture.clone(); + + if ( transform.texCoord !== undefined ) { + + texture.channel = transform.texCoord; + + } + + if ( transform.offset !== undefined ) { + + texture.offset.fromArray( transform.offset ); + + } + + if ( transform.rotation !== undefined ) { + + texture.rotation = transform.rotation; + + } + + if ( transform.scale !== undefined ) { + + texture.repeat.fromArray( transform.scale ); + + } + + texture.needsUpdate = true; + + return texture; + + } + +} + +/** + * Mesh Quantization Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization + * + * @private + */ +class GLTFMeshQuantizationExtension { + + constructor() { + + this.name = EXTENSIONS.KHR_MESH_QUANTIZATION; + + } + +} + +/*********************************/ +/********** INTERPOLATION ********/ +/*********************************/ + +// Spline Interpolation +// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation +class GLTFCubicSplineInterpolant extends Interpolant { + + constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + super( parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + copySampleValue_( index ) { + + // Copies a sample value to the result buffer. See description of glTF + // CUBICSPLINE values layout in interpolate_() function below. + + const result = this.resultBuffer, + values = this.sampleValues, + valueSize = this.valueSize, + offset = index * valueSize * 3 + valueSize; + + for ( let i = 0; i !== valueSize; i ++ ) { + + result[ i ] = values[ offset + i ]; + + } + + return result; + + } + + interpolate_( i1, t0, t, t1 ) { + + const result = this.resultBuffer; + const values = this.sampleValues; + const stride = this.valueSize; + + const stride2 = stride * 2; + const stride3 = stride * 3; + + const td = t1 - t0; + + const p = ( t - t0 ) / td; + const pp = p * p; + const ppp = pp * p; + + const offset1 = i1 * stride3; + const offset0 = offset1 - stride3; + + const s2 = - 2 * ppp + 3 * pp; + const s3 = ppp - pp; + const s0 = 1 - s2; + const s1 = s3 - pp + p; + + // Layout of keyframe output values for CUBICSPLINE animations: + // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ] + for ( let i = 0; i !== stride; i ++ ) { + + const p0 = values[ offset0 + i + stride ]; // splineVertex_k + const m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k) + const p1 = values[ offset1 + i + stride ]; // splineVertex_k+1 + const m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k) + + result[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1; + + } + + return result; + + } + +} + +const _q = new Quaternion(); + +class GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant { + + interpolate_( i1, t0, t, t1 ) { + + const result = super.interpolate_( i1, t0, t, t1 ); + + _q.fromArray( result ).normalize().toArray( result ); + + return result; + + } + +} + + +/*********************************/ +/********** INTERNALS ************/ +/*********************************/ + +/* CONSTANTS */ + +const WEBGL_CONSTANTS = { + FLOAT: 5126, + //FLOAT_MAT2: 35674, + FLOAT_MAT3: 35675, + FLOAT_MAT4: 35676, + FLOAT_VEC2: 35664, + FLOAT_VEC3: 35665, + FLOAT_VEC4: 35666, + LINEAR: 9729, + REPEAT: 10497, + SAMPLER_2D: 35678, + POINTS: 0, + LINES: 1, + LINE_LOOP: 2, + LINE_STRIP: 3, + TRIANGLES: 4, + TRIANGLE_STRIP: 5, + TRIANGLE_FAN: 6, + UNSIGNED_BYTE: 5121, + UNSIGNED_SHORT: 5123 +}; + +const WEBGL_COMPONENT_TYPES = { + 5120: Int8Array, + 5121: Uint8Array, + 5122: Int16Array, + 5123: Uint16Array, + 5125: Uint32Array, + 5126: Float32Array +}; + +const WEBGL_FILTERS = { + 9728: NearestFilter, + 9729: LinearFilter, + 9984: NearestMipmapNearestFilter, + 9985: LinearMipmapNearestFilter, + 9986: NearestMipmapLinearFilter, + 9987: LinearMipmapLinearFilter +}; + +const WEBGL_WRAPPINGS = { + 33071: ClampToEdgeWrapping, + 33648: MirroredRepeatWrapping, + 10497: RepeatWrapping +}; + +const WEBGL_TYPE_SIZES = { + 'SCALAR': 1, + 'VEC2': 2, + 'VEC3': 3, + 'VEC4': 4, + 'MAT2': 4, + 'MAT3': 9, + 'MAT4': 16 +}; + +const ATTRIBUTES = { + POSITION: 'position', + NORMAL: 'normal', + TANGENT: 'tangent', + TEXCOORD_0: 'uv', + TEXCOORD_1: 'uv1', + TEXCOORD_2: 'uv2', + TEXCOORD_3: 'uv3', + COLOR_0: 'color', + WEIGHTS_0: 'skinWeight', + JOINTS_0: 'skinIndex', +}; + +const PATH_PROPERTIES = { + scale: 'scale', + translation: 'position', + rotation: 'quaternion', + weights: 'morphTargetInfluences' +}; + +const INTERPOLATION = { + CUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each + // keyframe track will be initialized with a default interpolation type, then modified. + LINEAR: InterpolateLinear, + STEP: InterpolateDiscrete +}; + +const ALPHA_MODES = { + OPAQUE: 'OPAQUE', + MASK: 'MASK', + BLEND: 'BLEND' +}; + +/** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material + * + * @private + * @param {Object} cache + * @return {Material} + */ +function createDefaultMaterial( cache ) { + + if ( cache[ 'DefaultMaterial' ] === undefined ) { + + cache[ 'DefaultMaterial' ] = new MeshStandardMaterial( { + color: 0xFFFFFF, + emissive: 0x000000, + metalness: 1, + roughness: 1, + transparent: false, + depthTest: true, + side: FrontSide + } ); + + } + + return cache[ 'DefaultMaterial' ]; + +} + +function addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) { + + // Add unknown glTF extensions to an object's userData. + + for ( const name in objectDef.extensions ) { + + if ( knownExtensions[ name ] === undefined ) { + + object.userData.gltfExtensions = object.userData.gltfExtensions || {}; + object.userData.gltfExtensions[ name ] = objectDef.extensions[ name ]; + + } + + } + +} + +/** + * + * @private + * @param {Object3D|Material|BufferGeometry|Object} object + * @param {GLTF.definition} gltfDef + */ +function assignExtrasToUserData( object, gltfDef ) { + + if ( gltfDef.extras !== undefined ) { + + if ( typeof gltfDef.extras === 'object' ) { + + Object.assign( object.userData, gltfDef.extras ); + + } else { + + console.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras ); + + } + + } + +} + +/** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets + * + * @private + * @param {BufferGeometry} geometry + * @param {Array} targets + * @param {GLTFParser} parser + * @return {Promise} + */ +function addMorphTargets( geometry, targets, parser ) { + + let hasMorphPosition = false; + let hasMorphNormal = false; + let hasMorphColor = false; + + for ( let i = 0, il = targets.length; i < il; i ++ ) { + + const target = targets[ i ]; + + if ( target.POSITION !== undefined ) hasMorphPosition = true; + if ( target.NORMAL !== undefined ) hasMorphNormal = true; + if ( target.COLOR_0 !== undefined ) hasMorphColor = true; + + if ( hasMorphPosition && hasMorphNormal && hasMorphColor ) break; + + } + + if ( ! hasMorphPosition && ! hasMorphNormal && ! hasMorphColor ) return Promise.resolve( geometry ); + + const pendingPositionAccessors = []; + const pendingNormalAccessors = []; + const pendingColorAccessors = []; + + for ( let i = 0, il = targets.length; i < il; i ++ ) { + + const target = targets[ i ]; + + if ( hasMorphPosition ) { + + const pendingAccessor = target.POSITION !== undefined + ? parser.getDependency( 'accessor', target.POSITION ) + : geometry.attributes.position; + + pendingPositionAccessors.push( pendingAccessor ); + + } + + if ( hasMorphNormal ) { + + const pendingAccessor = target.NORMAL !== undefined + ? parser.getDependency( 'accessor', target.NORMAL ) + : geometry.attributes.normal; + + pendingNormalAccessors.push( pendingAccessor ); + + } + + if ( hasMorphColor ) { + + const pendingAccessor = target.COLOR_0 !== undefined + ? parser.getDependency( 'accessor', target.COLOR_0 ) + : geometry.attributes.color; + + pendingColorAccessors.push( pendingAccessor ); + + } + + } + + return Promise.all( [ + Promise.all( pendingPositionAccessors ), + Promise.all( pendingNormalAccessors ), + Promise.all( pendingColorAccessors ) + ] ).then( function ( accessors ) { + + const morphPositions = accessors[ 0 ]; + const morphNormals = accessors[ 1 ]; + const morphColors = accessors[ 2 ]; + + if ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions; + if ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals; + if ( hasMorphColor ) geometry.morphAttributes.color = morphColors; + geometry.morphTargetsRelative = true; + + return geometry; + + } ); + +} + +/** + * + * @private + * @param {Mesh} mesh + * @param {GLTF.Mesh} meshDef + */ +function updateMorphTargets( mesh, meshDef ) { + + mesh.updateMorphTargets(); + + if ( meshDef.weights !== undefined ) { + + for ( let i = 0, il = meshDef.weights.length; i < il; i ++ ) { + + mesh.morphTargetInfluences[ i ] = meshDef.weights[ i ]; + + } + + } + + // .extras has user-defined data, so check that .extras.targetNames is an array. + if ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) { + + const targetNames = meshDef.extras.targetNames; + + if ( mesh.morphTargetInfluences.length === targetNames.length ) { + + mesh.morphTargetDictionary = {}; + + for ( let i = 0, il = targetNames.length; i < il; i ++ ) { + + mesh.morphTargetDictionary[ targetNames[ i ] ] = i; + + } + + } else { + + console.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' ); + + } + + } + +} + +function createPrimitiveKey( primitiveDef ) { + + let geometryKey; + + const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]; + + if ( dracoExtension ) { + + geometryKey = 'draco:' + dracoExtension.bufferView + + ':' + dracoExtension.indices + + ':' + createAttributesKey( dracoExtension.attributes ); + + } else { + + geometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode; + + } + + if ( primitiveDef.targets !== undefined ) { + + for ( let i = 0, il = primitiveDef.targets.length; i < il; i ++ ) { + + geometryKey += ':' + createAttributesKey( primitiveDef.targets[ i ] ); + + } + + } + + return geometryKey; + +} + +function createAttributesKey( attributes ) { + + let attributesKey = ''; + + const keys = Object.keys( attributes ).sort(); + + for ( let i = 0, il = keys.length; i < il; i ++ ) { + + attributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';'; + + } + + return attributesKey; + +} + +function getNormalizedComponentScale( constructor ) { + + // Reference: + // https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data + + switch ( constructor ) { + + case Int8Array: + return 1 / 127; + + case Uint8Array: + return 1 / 255; + + case Int16Array: + return 1 / 32767; + + case Uint16Array: + return 1 / 65535; + + default: + throw new Error( 'THREE.GLTFLoader: Unsupported normalized accessor component type.' ); + + } + +} + +function getImageURIMimeType( uri ) { + + if ( uri.search( /\.jpe?g($|\?)/i ) > 0 || uri.search( /^data\:image\/jpeg/ ) === 0 ) return 'image/jpeg'; + if ( uri.search( /\.webp($|\?)/i ) > 0 || uri.search( /^data\:image\/webp/ ) === 0 ) return 'image/webp'; + if ( uri.search( /\.ktx2($|\?)/i ) > 0 || uri.search( /^data\:image\/ktx2/ ) === 0 ) return 'image/ktx2'; + + return 'image/png'; + +} + +const _identityMatrix = new Matrix4(); + +/* GLTF PARSER */ + +class GLTFParser { + + constructor( json = {}, options = {} ) { + + this.json = json; + this.extensions = {}; + this.plugins = {}; + this.options = options; + + // loader object cache + this.cache = new GLTFRegistry(); + + // associations between Three.js objects and glTF elements + this.associations = new Map(); + + // BufferGeometry caching + this.primitiveCache = {}; + + // Node cache + this.nodeCache = {}; + + // Object3D instance caches + this.meshCache = { refs: {}, uses: {} }; + this.cameraCache = { refs: {}, uses: {} }; + this.lightCache = { refs: {}, uses: {} }; + + this.sourceCache = {}; + this.textureCache = {}; + + // Track node names, to ensure no duplicates + this.nodeNamesUsed = {}; + + // Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the + // expensive work of uploading a texture to the GPU off the main thread. + + let isSafari = false; + let safariVersion = - 1; + let isFirefox = false; + let firefoxVersion = - 1; + + if ( typeof navigator !== 'undefined' ) { + + const userAgent = navigator.userAgent; + + isSafari = /^((?!chrome|android).)*safari/i.test( userAgent ) === true; + const safariMatch = userAgent.match( /Version\/(\d+)/ ); + safariVersion = isSafari && safariMatch ? parseInt( safariMatch[ 1 ], 10 ) : - 1; + + isFirefox = userAgent.indexOf( 'Firefox' ) > - 1; + firefoxVersion = isFirefox ? userAgent.match( /Firefox\/([0-9]+)\./ )[ 1 ] : - 1; + + } + + if ( typeof createImageBitmap === 'undefined' || ( isSafari && safariVersion < 17 ) || ( isFirefox && firefoxVersion < 98 ) ) { + + this.textureLoader = new TextureLoader( this.options.manager ); + + } else { + + this.textureLoader = new ImageBitmapLoader( this.options.manager ); + + } + + this.textureLoader.setCrossOrigin( this.options.crossOrigin ); + this.textureLoader.setRequestHeader( this.options.requestHeader ); + + this.fileLoader = new FileLoader( this.options.manager ); + this.fileLoader.setResponseType( 'arraybuffer' ); + + if ( this.options.crossOrigin === 'use-credentials' ) { + + this.fileLoader.setWithCredentials( true ); + + } + + } + + setExtensions( extensions ) { + + this.extensions = extensions; + + } + + setPlugins( plugins ) { + + this.plugins = plugins; + + } + + parse( onLoad, onError ) { + + const parser = this; + const json = this.json; + const extensions = this.extensions; + + // Clear the loader cache + this.cache.removeAll(); + this.nodeCache = {}; + + // Mark the special nodes/meshes in json for efficient parse + this._invokeAll( function ( ext ) { + + return ext._markDefs && ext._markDefs(); + + } ); + + Promise.all( this._invokeAll( function ( ext ) { + + return ext.beforeRoot && ext.beforeRoot(); + + } ) ).then( function () { + + return Promise.all( [ + + parser.getDependencies( 'scene' ), + parser.getDependencies( 'animation' ), + parser.getDependencies( 'camera' ), + + ] ); + + } ).then( function ( dependencies ) { + + const result = { + scene: dependencies[ 0 ][ json.scene || 0 ], + scenes: dependencies[ 0 ], + animations: dependencies[ 1 ], + cameras: dependencies[ 2 ], + asset: json.asset, + parser: parser, + userData: {} + }; + + addUnknownExtensionsToUserData( extensions, result, json ); + + assignExtrasToUserData( result, json ); + + return Promise.all( parser._invokeAll( function ( ext ) { + + return ext.afterRoot && ext.afterRoot( result ); + + } ) ).then( function () { + + for ( const scene of result.scenes ) { + + scene.updateMatrixWorld(); + + } + + onLoad( result ); + + } ); + + } ).catch( onError ); + + } + + /** + * Marks the special nodes/meshes in json for efficient parse. + * + * @private + */ + _markDefs() { + + const nodeDefs = this.json.nodes || []; + const skinDefs = this.json.skins || []; + const meshDefs = this.json.meshes || []; + + // Nothing in the node definition indicates whether it is a Bone or an + // Object3D. Use the skins' joint references to mark bones. + for ( let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) { + + const joints = skinDefs[ skinIndex ].joints; + + for ( let i = 0, il = joints.length; i < il; i ++ ) { + + nodeDefs[ joints[ i ] ].isBone = true; + + } + + } + + // Iterate over all nodes, marking references to shared resources, + // as well as skeleton joints. + for ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) { + + const nodeDef = nodeDefs[ nodeIndex ]; + + if ( nodeDef.mesh !== undefined ) { + + this._addNodeRef( this.meshCache, nodeDef.mesh ); + + // Nothing in the mesh definition indicates whether it is + // a SkinnedMesh or Mesh. Use the node's mesh reference + // to mark SkinnedMesh if node has skin. + if ( nodeDef.skin !== undefined ) { + + meshDefs[ nodeDef.mesh ].isSkinnedMesh = true; + + } + + } + + if ( nodeDef.camera !== undefined ) { + + this._addNodeRef( this.cameraCache, nodeDef.camera ); + + } + + } + + } + + /** + * Counts references to shared node / Object3D resources. These resources + * can be reused, or "instantiated", at multiple nodes in the scene + * hierarchy. Mesh, Camera, and Light instances are instantiated and must + * be marked. Non-scenegraph resources (like Materials, Geometries, and + * Textures) can be reused directly and are not marked here. + * + * Example: CesiumMilkTruck sample model reuses "Wheel" meshes. + * + * @private + * @param {Object} cache + * @param {Object3D} index + */ + _addNodeRef( cache, index ) { + + if ( index === undefined ) return; + + if ( cache.refs[ index ] === undefined ) { + + cache.refs[ index ] = cache.uses[ index ] = 0; + + } + + cache.refs[ index ] ++; + + } + + /** + * Returns a reference to a shared resource, cloning it if necessary. + * + * @private + * @param {Object} cache + * @param {number} index + * @param {Object} object + * @return {Object} + */ + _getNodeRef( cache, index, object ) { + + if ( cache.refs[ index ] <= 1 ) return object; + + const ref = object.clone(); + + // Propagates mappings to the cloned object, prevents mappings on the + // original object from being lost. + const updateMappings = ( original, clone ) => { + + const mappings = this.associations.get( original ); + if ( mappings != null ) { + + this.associations.set( clone, mappings ); + + } + + for ( const [ i, child ] of original.children.entries() ) { + + updateMappings( child, clone.children[ i ] ); + + } + + }; + + updateMappings( object, ref ); + + ref.name += '_instance_' + ( cache.uses[ index ] ++ ); + + return ref; + + } + + _invokeOne( func ) { + + const extensions = Object.values( this.plugins ); + extensions.push( this ); + + for ( let i = 0; i < extensions.length; i ++ ) { + + const result = func( extensions[ i ] ); + + if ( result ) return result; + + } + + return null; + + } + + _invokeAll( func ) { + + const extensions = Object.values( this.plugins ); + extensions.unshift( this ); + + const pending = []; + + for ( let i = 0; i < extensions.length; i ++ ) { + + const result = func( extensions[ i ] ); + + if ( result ) pending.push( result ); + + } + + return pending; + + } + + /** + * Requests the specified dependency asynchronously, with caching. + * + * @private + * @param {string} type + * @param {number} index + * @return {Promise} + */ + getDependency( type, index ) { + + const cacheKey = type + ':' + index; + let dependency = this.cache.get( cacheKey ); + + if ( ! dependency ) { + + switch ( type ) { + + case 'scene': + dependency = this.loadScene( index ); + break; + + case 'node': + dependency = this._invokeOne( function ( ext ) { + + return ext.loadNode && ext.loadNode( index ); + + } ); + break; + + case 'mesh': + dependency = this._invokeOne( function ( ext ) { + + return ext.loadMesh && ext.loadMesh( index ); + + } ); + break; + + case 'accessor': + dependency = this.loadAccessor( index ); + break; + + case 'bufferView': + dependency = this._invokeOne( function ( ext ) { + + return ext.loadBufferView && ext.loadBufferView( index ); + + } ); + break; + + case 'buffer': + dependency = this.loadBuffer( index ); + break; + + case 'material': + dependency = this._invokeOne( function ( ext ) { + + return ext.loadMaterial && ext.loadMaterial( index ); + + } ); + break; + + case 'texture': + dependency = this._invokeOne( function ( ext ) { + + return ext.loadTexture && ext.loadTexture( index ); + + } ); + break; + + case 'skin': + dependency = this.loadSkin( index ); + break; + + case 'animation': + dependency = this._invokeOne( function ( ext ) { + + return ext.loadAnimation && ext.loadAnimation( index ); + + } ); + break; + + case 'camera': + dependency = this.loadCamera( index ); + break; + + default: + dependency = this._invokeOne( function ( ext ) { + + return ext != this && ext.getDependency && ext.getDependency( type, index ); + + } ); + + if ( ! dependency ) { + + throw new Error( 'Unknown type: ' + type ); + + } + + break; + + } + + this.cache.add( cacheKey, dependency ); + + } + + return dependency; + + } + + /** + * Requests all dependencies of the specified type asynchronously, with caching. + * + * @private + * @param {string} type + * @return {Promise>} + */ + getDependencies( type ) { + + let dependencies = this.cache.get( type ); + + if ( ! dependencies ) { + + const parser = this; + const defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || []; + + dependencies = Promise.all( defs.map( function ( def, index ) { + + return parser.getDependency( type, index ); + + } ) ); + + this.cache.add( type, dependencies ); + + } + + return dependencies; + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * + * @private + * @param {number} bufferIndex + * @return {Promise} + */ + loadBuffer( bufferIndex ) { + + const bufferDef = this.json.buffers[ bufferIndex ]; + const loader = this.fileLoader; + + if ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) { + + throw new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' ); + + } + + // If present, GLB container is required to be the first buffer. + if ( bufferDef.uri === undefined && bufferIndex === 0 ) { + + return Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body ); + + } + + const options = this.options; + + return new Promise( function ( resolve, reject ) { + + loader.load( LoaderUtils.resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () { + + reject( new Error( 'THREE.GLTFLoader: Failed to load buffer "' + bufferDef.uri + '".' ) ); + + } ); + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * + * @private + * @param {number} bufferViewIndex + * @return {Promise} + */ + loadBufferView( bufferViewIndex ) { + + const bufferViewDef = this.json.bufferViews[ bufferViewIndex ]; + + return this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) { + + const byteLength = bufferViewDef.byteLength || 0; + const byteOffset = bufferViewDef.byteOffset || 0; + return buffer.slice( byteOffset, byteOffset + byteLength ); + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors + * + * @private + * @param {number} accessorIndex + * @return {Promise} + */ + loadAccessor( accessorIndex ) { + + const parser = this; + const json = this.json; + + const accessorDef = this.json.accessors[ accessorIndex ]; + + if ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) { + + const itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ]; + const TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; + const normalized = accessorDef.normalized === true; + + const array = new TypedArray( accessorDef.count * itemSize ); + return Promise.resolve( new BufferAttribute( array, itemSize, normalized ) ); + + } + + const pendingBufferViews = []; + + if ( accessorDef.bufferView !== undefined ) { + + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) ); + + } else { + + pendingBufferViews.push( null ); + + } + + if ( accessorDef.sparse !== undefined ) { + + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) ); + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) ); + + } + + return Promise.all( pendingBufferViews ).then( function ( bufferViews ) { + + const bufferView = bufferViews[ 0 ]; + + const itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ]; + const TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; + + // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12. + const elementBytes = TypedArray.BYTES_PER_ELEMENT; + const itemBytes = elementBytes * itemSize; + const byteOffset = accessorDef.byteOffset || 0; + const byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined; + const normalized = accessorDef.normalized === true; + let array, bufferAttribute; + + // The buffer is not interleaved if the stride is the item size in bytes. + if ( byteStride && byteStride !== itemBytes ) { + + // Each "slice" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer + // This makes sure that IBA.count reflects accessor.count properly + const ibSlice = Math.floor( byteOffset / byteStride ); + const ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count; + let ib = parser.cache.get( ibCacheKey ); + + if ( ! ib ) { + + array = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes ); + + // Integer parameters to IB/IBA are in array elements, not bytes. + ib = new InterleavedBuffer( array, byteStride / elementBytes ); + + parser.cache.add( ibCacheKey, ib ); + + } + + bufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized ); + + } else { + + if ( bufferView === null ) { + + array = new TypedArray( accessorDef.count * itemSize ); + + } else { + + array = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize ); + + } + + bufferAttribute = new BufferAttribute( array, itemSize, normalized ); + + } + + // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors + if ( accessorDef.sparse !== undefined ) { + + const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR; + const TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ]; + + const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0; + const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0; + + const sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices ); + const sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize ); + + if ( bufferView !== null ) { + + // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes. + bufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized ); + + } + + // Ignore normalized since we copy from sparse + bufferAttribute.normalized = false; + + for ( let i = 0, il = sparseIndices.length; i < il; i ++ ) { + + const index = sparseIndices[ i ]; + + bufferAttribute.setX( index, sparseValues[ i * itemSize ] ); + if ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] ); + if ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] ); + if ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] ); + if ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' ); + + } + + bufferAttribute.normalized = normalized; + + } + + return bufferAttribute; + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures + * + * @private + * @param {number} textureIndex + * @return {Promise} + */ + loadTexture( textureIndex ) { + + const json = this.json; + const options = this.options; + const textureDef = json.textures[ textureIndex ]; + const sourceIndex = textureDef.source; + const sourceDef = json.images[ sourceIndex ]; + + let loader = this.textureLoader; + + if ( sourceDef.uri ) { + + const handler = options.manager.getHandler( sourceDef.uri ); + if ( handler !== null ) loader = handler; + + } + + return this.loadTextureImage( textureIndex, sourceIndex, loader ); + + } + + loadTextureImage( textureIndex, sourceIndex, loader ) { + + const parser = this; + const json = this.json; + + const textureDef = json.textures[ textureIndex ]; + const sourceDef = json.images[ sourceIndex ]; + + const cacheKey = ( sourceDef.uri || sourceDef.bufferView ) + ':' + textureDef.sampler; + + if ( this.textureCache[ cacheKey ] ) { + + // See https://github.com/mrdoob/three.js/issues/21559. + return this.textureCache[ cacheKey ]; + + } + + const promise = this.loadImageSource( sourceIndex, loader ).then( function ( texture ) { + + texture.flipY = false; + + texture.name = textureDef.name || sourceDef.name || ''; + + if ( texture.name === '' && typeof sourceDef.uri === 'string' && sourceDef.uri.startsWith( 'data:image/' ) === false ) { + + texture.name = sourceDef.uri; + + } + + const samplers = json.samplers || {}; + const sampler = samplers[ textureDef.sampler ] || {}; + + texture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter; + texture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter; + texture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping; + texture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping; + texture.generateMipmaps = ! texture.isCompressedTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter; + + parser.associations.set( texture, { textures: textureIndex } ); + + return texture; + + } ).catch( function () { + + return null; + + } ); + + this.textureCache[ cacheKey ] = promise; + + return promise; + + } + + loadImageSource( sourceIndex, loader ) { + + const parser = this; + const json = this.json; + const options = this.options; + + if ( this.sourceCache[ sourceIndex ] !== undefined ) { + + return this.sourceCache[ sourceIndex ].then( ( texture ) => texture.clone() ); + + } + + const sourceDef = json.images[ sourceIndex ]; + + const URL = self.URL || self.webkitURL; + + let sourceURI = sourceDef.uri || ''; + let isObjectURL = false; + + if ( sourceDef.bufferView !== undefined ) { + + // Load binary image data from bufferView, if provided. + + sourceURI = parser.getDependency( 'bufferView', sourceDef.bufferView ).then( function ( bufferView ) { + + isObjectURL = true; + const blob = new Blob( [ bufferView ], { type: sourceDef.mimeType } ); + sourceURI = URL.createObjectURL( blob ); + return sourceURI; + + } ); + + } else if ( sourceDef.uri === undefined ) { + + throw new Error( 'THREE.GLTFLoader: Image ' + sourceIndex + ' is missing URI and bufferView' ); + + } + + const promise = Promise.resolve( sourceURI ).then( function ( sourceURI ) { + + return new Promise( function ( resolve, reject ) { + + let onLoad = resolve; + + if ( loader.isImageBitmapLoader === true ) { + + onLoad = function ( imageBitmap ) { + + const texture = new Texture( imageBitmap ); + texture.needsUpdate = true; + + resolve( texture ); + + }; + + } + + loader.load( LoaderUtils.resolveURL( sourceURI, options.path ), onLoad, undefined, reject ); + + } ); + + } ).then( function ( texture ) { + + // Clean up resources and configure Texture. + + if ( isObjectURL === true ) { + + URL.revokeObjectURL( sourceURI ); + + } + + assignExtrasToUserData( texture, sourceDef ); + + texture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType( sourceDef.uri ); + + return texture; + + } ).catch( function ( error ) { + + console.error( 'THREE.GLTFLoader: Couldn\'t load texture', sourceURI ); + throw error; + + } ); + + this.sourceCache[ sourceIndex ] = promise; + return promise; + + } + + /** + * Asynchronously assigns a texture to the given material parameters. + * + * @private + * @param {Object} materialParams + * @param {string} mapName + * @param {Object} mapDef + * @param {string} [colorSpace] + * @return {Promise} + */ + assignTexture( materialParams, mapName, mapDef, colorSpace ) { + + const parser = this; + + return this.getDependency( 'texture', mapDef.index ).then( function ( texture ) { + + if ( ! texture ) return null; + + if ( mapDef.texCoord !== undefined && mapDef.texCoord > 0 ) { + + texture = texture.clone(); + texture.channel = mapDef.texCoord; + + } + + if ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) { + + const transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined; + + if ( transform ) { + + const gltfReference = parser.associations.get( texture ); + texture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform ); + parser.associations.set( texture, gltfReference ); + + } + + } + + if ( colorSpace !== undefined ) { + + texture.colorSpace = colorSpace; + + } + + materialParams[ mapName ] = texture; + + return texture; + + } ); + + } + + /** + * Assigns final material to a Mesh, Line, or Points instance. The instance + * already has a material (generated from the glTF material options alone) + * but reuse of the same glTF material may require multiple threejs materials + * to accommodate different primitive types, defines, etc. New materials will + * be created if necessary, and reused from a cache. + * + * @private + * @param {Object3D} mesh Mesh, Line, or Points instance. + */ + assignFinalMaterial( mesh ) { + + const geometry = mesh.geometry; + let material = mesh.material; + + const useDerivativeTangents = geometry.attributes.tangent === undefined; + const useVertexColors = geometry.attributes.color !== undefined; + const useFlatShading = geometry.attributes.normal === undefined; + + if ( mesh.isPoints ) { + + const cacheKey = 'PointsMaterial:' + material.uuid; + + let pointsMaterial = this.cache.get( cacheKey ); + + if ( ! pointsMaterial ) { + + pointsMaterial = new PointsMaterial(); + Material.prototype.copy.call( pointsMaterial, material ); + pointsMaterial.color.copy( material.color ); + pointsMaterial.map = material.map; + pointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px + + this.cache.add( cacheKey, pointsMaterial ); + + } + + material = pointsMaterial; + + } else if ( mesh.isLine ) { + + const cacheKey = 'LineBasicMaterial:' + material.uuid; + + let lineMaterial = this.cache.get( cacheKey ); + + if ( ! lineMaterial ) { + + lineMaterial = new LineBasicMaterial(); + Material.prototype.copy.call( lineMaterial, material ); + lineMaterial.color.copy( material.color ); + lineMaterial.map = material.map; + + this.cache.add( cacheKey, lineMaterial ); + + } + + material = lineMaterial; + + } + + // Clone the material if it will be modified + if ( useDerivativeTangents || useVertexColors || useFlatShading ) { + + let cacheKey = 'ClonedMaterial:' + material.uuid + ':'; + + if ( useDerivativeTangents ) cacheKey += 'derivative-tangents:'; + if ( useVertexColors ) cacheKey += 'vertex-colors:'; + if ( useFlatShading ) cacheKey += 'flat-shading:'; + + let cachedMaterial = this.cache.get( cacheKey ); + + if ( ! cachedMaterial ) { + + cachedMaterial = material.clone(); + + if ( useVertexColors ) cachedMaterial.vertexColors = true; + if ( useFlatShading ) cachedMaterial.flatShading = true; + + if ( useDerivativeTangents ) { + + // https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995 + if ( cachedMaterial.normalScale ) cachedMaterial.normalScale.y *= - 1; + if ( cachedMaterial.clearcoatNormalScale ) cachedMaterial.clearcoatNormalScale.y *= - 1; + + } + + this.cache.add( cacheKey, cachedMaterial ); + + this.associations.set( cachedMaterial, this.associations.get( material ) ); + + } + + material = cachedMaterial; + + } + + mesh.material = material; + + } + + getMaterialType( /* materialIndex */ ) { + + return MeshStandardMaterial; + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials + * + * @private + * @param {number} materialIndex + * @return {Promise} + */ + loadMaterial( materialIndex ) { + + const parser = this; + const json = this.json; + const extensions = this.extensions; + const materialDef = json.materials[ materialIndex ]; + + let materialType; + const materialParams = {}; + const materialExtensions = materialDef.extensions || {}; + + const pending = []; + + if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) { + + const kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ]; + materialType = kmuExtension.getMaterialType(); + pending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) ); + + } else { + + // Specification: + // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material + + const metallicRoughness = materialDef.pbrMetallicRoughness || {}; + + materialParams.color = new Color( 1.0, 1.0, 1.0 ); + materialParams.opacity = 1.0; + + if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { + + const array = metallicRoughness.baseColorFactor; + + materialParams.color.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace ); + materialParams.opacity = array[ 3 ]; + + } + + if ( metallicRoughness.baseColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, SRGBColorSpace ) ); + + } + + materialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0; + materialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0; + + if ( metallicRoughness.metallicRoughnessTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) ); + pending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) ); + + } + + materialType = this._invokeOne( function ( ext ) { + + return ext.getMaterialType && ext.getMaterialType( materialIndex ); + + } ); + + pending.push( Promise.all( this._invokeAll( function ( ext ) { + + return ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams ); + + } ) ) ); + + } + + if ( materialDef.doubleSided === true ) { + + materialParams.side = DoubleSide; + + } + + const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE; + + if ( alphaMode === ALPHA_MODES.BLEND ) { + + materialParams.transparent = true; + + // See: https://github.com/mrdoob/three.js/issues/17706 + materialParams.depthWrite = false; + + } else { + + materialParams.transparent = false; + + if ( alphaMode === ALPHA_MODES.MASK ) { + + materialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5; + + } + + } + + if ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) ); + + materialParams.normalScale = new Vector2( 1, 1 ); + + if ( materialDef.normalTexture.scale !== undefined ) { + + const scale = materialDef.normalTexture.scale; + + materialParams.normalScale.set( scale, scale ); + + } + + } + + if ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) ); + + if ( materialDef.occlusionTexture.strength !== undefined ) { + + materialParams.aoMapIntensity = materialDef.occlusionTexture.strength; + + } + + } + + if ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) { + + const emissiveFactor = materialDef.emissiveFactor; + materialParams.emissive = new Color().setRGB( emissiveFactor[ 0 ], emissiveFactor[ 1 ], emissiveFactor[ 2 ], LinearSRGBColorSpace ); + + } + + if ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture, SRGBColorSpace ) ); + + } + + return Promise.all( pending ).then( function () { + + const material = new materialType( materialParams ); + + if ( materialDef.name ) material.name = materialDef.name; + + assignExtrasToUserData( material, materialDef ); + + parser.associations.set( material, { materials: materialIndex } ); + + if ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef ); + + return material; + + } ); + + } + + /** + * When Object3D instances are targeted by animation, they need unique names. + * + * @private + * @param {string} originalName + * @return {string} + */ + createUniqueName( originalName ) { + + const sanitizedName = PropertyBinding.sanitizeNodeName( originalName || '' ); + + if ( sanitizedName in this.nodeNamesUsed ) { + + return sanitizedName + '_' + ( ++ this.nodeNamesUsed[ sanitizedName ] ); + + } else { + + this.nodeNamesUsed[ sanitizedName ] = 0; + + return sanitizedName; + + } + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry + * + * Creates BufferGeometries from primitives. + * + * @private + * @param {Array} primitives + * @return {Promise>} + */ + loadGeometries( primitives ) { + + const parser = this; + const extensions = this.extensions; + const cache = this.primitiveCache; + + function createDracoPrimitive( primitive ) { + + return extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] + .decodePrimitive( primitive, parser ) + .then( function ( geometry ) { + + return addPrimitiveAttributes( geometry, primitive, parser ); + + } ); + + } + + const pending = []; + + for ( let i = 0, il = primitives.length; i < il; i ++ ) { + + const primitive = primitives[ i ]; + const cacheKey = createPrimitiveKey( primitive ); + + // See if we've already created this geometry + const cached = cache[ cacheKey ]; + + if ( cached ) { + + // Use the cached geometry if it exists + pending.push( cached.promise ); + + } else { + + let geometryPromise; + + if ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) { + + // Use DRACO geometry if available + geometryPromise = createDracoPrimitive( primitive ); + + } else { + + // Otherwise create a new geometry + geometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser ); + + } + + // Cache this geometry + cache[ cacheKey ] = { primitive: primitive, promise: geometryPromise }; + + pending.push( geometryPromise ); + + } + + } + + return Promise.all( pending ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes + * + * @private + * @param {number} meshIndex + * @return {Promise} + */ + loadMesh( meshIndex ) { + + const parser = this; + const json = this.json; + const extensions = this.extensions; + + const meshDef = json.meshes[ meshIndex ]; + const primitives = meshDef.primitives; + + const pending = []; + + for ( let i = 0, il = primitives.length; i < il; i ++ ) { + + const material = primitives[ i ].material === undefined + ? createDefaultMaterial( this.cache ) + : this.getDependency( 'material', primitives[ i ].material ); + + pending.push( material ); + + } + + pending.push( parser.loadGeometries( primitives ) ); + + return Promise.all( pending ).then( function ( results ) { + + const materials = results.slice( 0, results.length - 1 ); + const geometries = results[ results.length - 1 ]; + + const meshes = []; + + for ( let i = 0, il = geometries.length; i < il; i ++ ) { + + const geometry = geometries[ i ]; + const primitive = primitives[ i ]; + + // 1. create Mesh + + let mesh; + + const material = materials[ i ]; + + if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES || + primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || + primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || + primitive.mode === undefined ) { + + // .isSkinnedMesh isn't in glTF spec. See ._markDefs() + mesh = meshDef.isSkinnedMesh === true + ? new SkinnedMesh( geometry, material ) + : new Mesh( geometry, material ); + + if ( mesh.isSkinnedMesh === true ) { + + // normalize skin weights to fix malformed assets (see #15319) + mesh.normalizeSkinWeights(); + + } + + if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) { + + mesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) { + + mesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode ); + + } + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) { + + mesh = new LineSegments( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) { + + mesh = new Line( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) { + + mesh = new LineLoop( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) { + + mesh = new Points( geometry, material ); + + } else { + + throw new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode ); + + } + + if ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) { + + updateMorphTargets( mesh, meshDef ); + + } + + mesh.name = parser.createUniqueName( meshDef.name || ( 'mesh_' + meshIndex ) ); + + assignExtrasToUserData( mesh, meshDef ); + + if ( primitive.extensions ) addUnknownExtensionsToUserData( extensions, mesh, primitive ); + + parser.assignFinalMaterial( mesh ); + + meshes.push( mesh ); + + } + + for ( let i = 0, il = meshes.length; i < il; i ++ ) { + + parser.associations.set( meshes[ i ], { + meshes: meshIndex, + primitives: i + } ); + + } + + if ( meshes.length === 1 ) { + + if ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, meshes[ 0 ], meshDef ); + + return meshes[ 0 ]; + + } + + const group = new Group(); + + if ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, group, meshDef ); + + parser.associations.set( group, { meshes: meshIndex } ); + + for ( let i = 0, il = meshes.length; i < il; i ++ ) { + + group.add( meshes[ i ] ); + + } + + return group; + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras + * + * @private + * @param {number} cameraIndex + * @return {Promise} + */ + loadCamera( cameraIndex ) { + + let camera; + const cameraDef = this.json.cameras[ cameraIndex ]; + const params = cameraDef[ cameraDef.type ]; + + if ( ! params ) { + + console.warn( 'THREE.GLTFLoader: Missing camera parameters.' ); + return; + + } + + if ( cameraDef.type === 'perspective' ) { + + camera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 ); + + } else if ( cameraDef.type === 'orthographic' ) { + + camera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar ); + + } + + if ( cameraDef.name ) camera.name = this.createUniqueName( cameraDef.name ); + + assignExtrasToUserData( camera, cameraDef ); + + return Promise.resolve( camera ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins + * + * @private + * @param {number} skinIndex + * @return {Promise} + */ + loadSkin( skinIndex ) { + + const skinDef = this.json.skins[ skinIndex ]; + + const pending = []; + + for ( let i = 0, il = skinDef.joints.length; i < il; i ++ ) { + + pending.push( this._loadNodeShallow( skinDef.joints[ i ] ) ); + + } + + if ( skinDef.inverseBindMatrices !== undefined ) { + + pending.push( this.getDependency( 'accessor', skinDef.inverseBindMatrices ) ); + + } else { + + pending.push( null ); + + } + + return Promise.all( pending ).then( function ( results ) { + + const inverseBindMatrices = results.pop(); + const jointNodes = results; + + // Note that bones (joint nodes) may or may not be in the + // scene graph at this time. + + const bones = []; + const boneInverses = []; + + for ( let i = 0, il = jointNodes.length; i < il; i ++ ) { + + const jointNode = jointNodes[ i ]; + + if ( jointNode ) { + + bones.push( jointNode ); + + const mat = new Matrix4(); + + if ( inverseBindMatrices !== null ) { + + mat.fromArray( inverseBindMatrices.array, i * 16 ); + + } + + boneInverses.push( mat ); + + } else { + + console.warn( 'THREE.GLTFLoader: Joint "%s" could not be found.', skinDef.joints[ i ] ); + + } + + } + + return new Skeleton( bones, boneInverses ); + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations + * + * @private + * @param {number} animationIndex + * @return {Promise} + */ + loadAnimation( animationIndex ) { + + const json = this.json; + const parser = this; + + const animationDef = json.animations[ animationIndex ]; + const animationName = animationDef.name ? animationDef.name : 'animation_' + animationIndex; + + const pendingNodes = []; + const pendingInputAccessors = []; + const pendingOutputAccessors = []; + const pendingSamplers = []; + const pendingTargets = []; + + for ( let i = 0, il = animationDef.channels.length; i < il; i ++ ) { + + const channel = animationDef.channels[ i ]; + const sampler = animationDef.samplers[ channel.sampler ]; + const target = channel.target; + const name = target.node; + const input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input; + const output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output; + + if ( target.node === undefined ) continue; + + pendingNodes.push( this.getDependency( 'node', name ) ); + pendingInputAccessors.push( this.getDependency( 'accessor', input ) ); + pendingOutputAccessors.push( this.getDependency( 'accessor', output ) ); + pendingSamplers.push( sampler ); + pendingTargets.push( target ); + + } + + return Promise.all( [ + + Promise.all( pendingNodes ), + Promise.all( pendingInputAccessors ), + Promise.all( pendingOutputAccessors ), + Promise.all( pendingSamplers ), + Promise.all( pendingTargets ) + + ] ).then( function ( dependencies ) { + + const nodes = dependencies[ 0 ]; + const inputAccessors = dependencies[ 1 ]; + const outputAccessors = dependencies[ 2 ]; + const samplers = dependencies[ 3 ]; + const targets = dependencies[ 4 ]; + + const tracks = []; + + for ( let i = 0, il = nodes.length; i < il; i ++ ) { + + const node = nodes[ i ]; + const inputAccessor = inputAccessors[ i ]; + const outputAccessor = outputAccessors[ i ]; + const sampler = samplers[ i ]; + const target = targets[ i ]; + + if ( node === undefined ) continue; + + if ( node.updateMatrix ) { + + node.updateMatrix(); + + } + + const createdTracks = parser._createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target ); + + if ( createdTracks ) { + + for ( let k = 0; k < createdTracks.length; k ++ ) { + + tracks.push( createdTracks[ k ] ); + + } + + } + + } + + return new AnimationClip( animationName, undefined, tracks ); + + } ); + + } + + createNodeMesh( nodeIndex ) { + + const json = this.json; + const parser = this; + const nodeDef = json.nodes[ nodeIndex ]; + + if ( nodeDef.mesh === undefined ) return null; + + return parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) { + + const node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh ); + + // if weights are provided on the node, override weights on the mesh. + if ( nodeDef.weights !== undefined ) { + + node.traverse( function ( o ) { + + if ( ! o.isMesh ) return; + + for ( let i = 0, il = nodeDef.weights.length; i < il; i ++ ) { + + o.morphTargetInfluences[ i ] = nodeDef.weights[ i ]; + + } + + } ); + + } + + return node; + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy + * + * @private + * @param {number} nodeIndex + * @return {Promise} + */ + loadNode( nodeIndex ) { + + const json = this.json; + const parser = this; + + const nodeDef = json.nodes[ nodeIndex ]; + + const nodePending = parser._loadNodeShallow( nodeIndex ); + + const childPending = []; + const childrenDef = nodeDef.children || []; + + for ( let i = 0, il = childrenDef.length; i < il; i ++ ) { + + childPending.push( parser.getDependency( 'node', childrenDef[ i ] ) ); + + } + + const skeletonPending = nodeDef.skin === undefined + ? Promise.resolve( null ) + : parser.getDependency( 'skin', nodeDef.skin ); + + return Promise.all( [ + nodePending, + Promise.all( childPending ), + skeletonPending + ] ).then( function ( results ) { + + const node = results[ 0 ]; + const children = results[ 1 ]; + const skeleton = results[ 2 ]; + + if ( skeleton !== null ) { + + // This full traverse should be fine because + // child glTF nodes have not been added to this node yet. + node.traverse( function ( mesh ) { + + if ( ! mesh.isSkinnedMesh ) return; + + mesh.bind( skeleton, _identityMatrix ); + + } ); + + } + + for ( let i = 0, il = children.length; i < il; i ++ ) { + + node.add( children[ i ] ); + + } + + return node; + + } ); + + } + + // ._loadNodeShallow() parses a single node. + // skin and child nodes are created and added in .loadNode() (no '_' prefix). + _loadNodeShallow( nodeIndex ) { + + const json = this.json; + const extensions = this.extensions; + const parser = this; + + // This method is called from .loadNode() and .loadSkin(). + // Cache a node to avoid duplication. + + if ( this.nodeCache[ nodeIndex ] !== undefined ) { + + return this.nodeCache[ nodeIndex ]; + + } + + const nodeDef = json.nodes[ nodeIndex ]; + + // reserve node's name before its dependencies, so the root has the intended name. + const nodeName = nodeDef.name ? parser.createUniqueName( nodeDef.name ) : ''; + + const pending = []; + + const meshPromise = parser._invokeOne( function ( ext ) { + + return ext.createNodeMesh && ext.createNodeMesh( nodeIndex ); + + } ); + + if ( meshPromise ) { + + pending.push( meshPromise ); + + } + + if ( nodeDef.camera !== undefined ) { + + pending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) { + + return parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera ); + + } ) ); + + } + + parser._invokeAll( function ( ext ) { + + return ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex ); + + } ).forEach( function ( promise ) { + + pending.push( promise ); + + } ); + + this.nodeCache[ nodeIndex ] = Promise.all( pending ).then( function ( objects ) { + + let node; + + // .isBone isn't in glTF spec. See ._markDefs + if ( nodeDef.isBone === true ) { + + node = new Bone(); + + } else if ( objects.length > 1 ) { + + node = new Group(); + + } else if ( objects.length === 1 ) { + + node = objects[ 0 ]; + + } else { + + node = new Object3D(); + + } + + if ( node !== objects[ 0 ] ) { + + for ( let i = 0, il = objects.length; i < il; i ++ ) { + + node.add( objects[ i ] ); + + } + + } + + if ( nodeDef.name ) { + + node.userData.name = nodeDef.name; + node.name = nodeName; + + } + + assignExtrasToUserData( node, nodeDef ); + + if ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef ); + + if ( nodeDef.matrix !== undefined ) { + + const matrix = new Matrix4(); + matrix.fromArray( nodeDef.matrix ); + node.applyMatrix4( matrix ); + + } else { + + if ( nodeDef.translation !== undefined ) { + + node.position.fromArray( nodeDef.translation ); + + } + + if ( nodeDef.rotation !== undefined ) { + + node.quaternion.fromArray( nodeDef.rotation ); + + } + + if ( nodeDef.scale !== undefined ) { + + node.scale.fromArray( nodeDef.scale ); + + } + + } + + if ( ! parser.associations.has( node ) ) { + + parser.associations.set( node, {} ); + + } + + parser.associations.get( node ).nodes = nodeIndex; + + return node; + + } ); + + return this.nodeCache[ nodeIndex ]; + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes + * + * @private + * @param {number} sceneIndex + * @return {Promise} + */ + loadScene( sceneIndex ) { + + const extensions = this.extensions; + const sceneDef = this.json.scenes[ sceneIndex ]; + const parser = this; + + // Loader returns Group, not Scene. + // See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172 + const scene = new Group(); + if ( sceneDef.name ) scene.name = parser.createUniqueName( sceneDef.name ); + + assignExtrasToUserData( scene, sceneDef ); + + if ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef ); + + const nodeIds = sceneDef.nodes || []; + + const pending = []; + + for ( let i = 0, il = nodeIds.length; i < il; i ++ ) { + + pending.push( parser.getDependency( 'node', nodeIds[ i ] ) ); + + } + + return Promise.all( pending ).then( function ( nodes ) { + + for ( let i = 0, il = nodes.length; i < il; i ++ ) { + + scene.add( nodes[ i ] ); + + } + + // Removes dangling associations, associations that reference a node that + // didn't make it into the scene. + const reduceAssociations = ( node ) => { + + const reducedAssociations = new Map(); + + for ( const [ key, value ] of parser.associations ) { + + if ( key instanceof Material || key instanceof Texture ) { + + reducedAssociations.set( key, value ); + + } + + } + + node.traverse( ( node ) => { + + const mappings = parser.associations.get( node ); + + if ( mappings != null ) { + + reducedAssociations.set( node, mappings ); + + } + + } ); + + return reducedAssociations; + + }; + + parser.associations = reduceAssociations( scene ); + + return scene; + + } ); + + } + + _createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target ) { + + const tracks = []; + + const targetName = node.name ? node.name : node.uuid; + const targetNames = []; + + if ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) { + + node.traverse( function ( object ) { + + if ( object.morphTargetInfluences ) { + + targetNames.push( object.name ? object.name : object.uuid ); + + } + + } ); + + } else { + + targetNames.push( targetName ); + + } + + let TypedKeyframeTrack; + + switch ( PATH_PROPERTIES[ target.path ] ) { + + case PATH_PROPERTIES.weights: + + TypedKeyframeTrack = NumberKeyframeTrack; + break; + + case PATH_PROPERTIES.rotation: + + TypedKeyframeTrack = QuaternionKeyframeTrack; + break; + + case PATH_PROPERTIES.translation: + case PATH_PROPERTIES.scale: + + TypedKeyframeTrack = VectorKeyframeTrack; + break; + + default: + + switch ( outputAccessor.itemSize ) { + + case 1: + TypedKeyframeTrack = NumberKeyframeTrack; + break; + case 2: + case 3: + default: + TypedKeyframeTrack = VectorKeyframeTrack; + break; + + } + + break; + + } + + const interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear; + + + const outputArray = this._getArrayFromAccessor( outputAccessor ); + + for ( let j = 0, jl = targetNames.length; j < jl; j ++ ) { + + const track = new TypedKeyframeTrack( + targetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ], + inputAccessor.array, + outputArray, + interpolation + ); + + // Override interpolation with custom factory method. + if ( sampler.interpolation === 'CUBICSPLINE' ) { + + this._createCubicSplineTrackInterpolant( track ); + + } + + tracks.push( track ); + + } + + return tracks; + + } + + _getArrayFromAccessor( accessor ) { + + let outputArray = accessor.array; + + if ( accessor.normalized ) { + + const scale = getNormalizedComponentScale( outputArray.constructor ); + const scaled = new Float32Array( outputArray.length ); + + for ( let j = 0, jl = outputArray.length; j < jl; j ++ ) { + + scaled[ j ] = outputArray[ j ] * scale; + + } + + outputArray = scaled; + + } + + return outputArray; + + } + + _createCubicSplineTrackInterpolant( track ) { + + track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) { + + // A CUBICSPLINE keyframe in glTF has three output values for each input value, + // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize() + // must be divided by three to get the interpolant's sampleSize argument. + + const interpolantType = ( this instanceof QuaternionKeyframeTrack ) ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant; + + return new interpolantType( this.times, this.values, this.getValueSize() / 3, result ); + + }; + + // Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants. + track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true; + + } + +} + +/** + * + * @private + * @param {BufferGeometry} geometry + * @param {GLTF.Primitive} primitiveDef + * @param {GLTFParser} parser + */ +function computeBounds( geometry, primitiveDef, parser ) { + + const attributes = primitiveDef.attributes; + + const box = new Box3(); + + if ( attributes.POSITION !== undefined ) { + + const accessor = parser.json.accessors[ attributes.POSITION ]; + + const min = accessor.min; + const max = accessor.max; + + // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement. + + if ( min !== undefined && max !== undefined ) { + + box.set( + new Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ), + new Vector3( max[ 0 ], max[ 1 ], max[ 2 ] ) + ); + + if ( accessor.normalized ) { + + const boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] ); + box.min.multiplyScalar( boxScale ); + box.max.multiplyScalar( boxScale ); + + } + + } else { + + console.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' ); + + return; + + } + + } else { + + return; + + } + + const targets = primitiveDef.targets; + + if ( targets !== undefined ) { + + const maxDisplacement = new Vector3(); + const vector = new Vector3(); + + for ( let i = 0, il = targets.length; i < il; i ++ ) { + + const target = targets[ i ]; + + if ( target.POSITION !== undefined ) { + + const accessor = parser.json.accessors[ target.POSITION ]; + const min = accessor.min; + const max = accessor.max; + + // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement. + + if ( min !== undefined && max !== undefined ) { + + // we need to get max of absolute components because target weight is [-1,1] + vector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) ); + vector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) ); + vector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) ); + + + if ( accessor.normalized ) { + + const boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] ); + vector.multiplyScalar( boxScale ); + + } + + // Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative + // to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets + // are used to implement key-frame animations and as such only two are active at a time - this results in very large + // boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size. + maxDisplacement.max( vector ); + + } else { + + console.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' ); + + } + + } + + } + + // As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets. + box.expandByVector( maxDisplacement ); + + } + + geometry.boundingBox = box; + + const sphere = new Sphere(); + + box.getCenter( sphere.center ); + sphere.radius = box.min.distanceTo( box.max ) / 2; + + geometry.boundingSphere = sphere; + +} + +/** + * + * @private + * @param {BufferGeometry} geometry + * @param {GLTF.Primitive} primitiveDef + * @param {GLTFParser} parser + * @return {Promise} + */ +function addPrimitiveAttributes( geometry, primitiveDef, parser ) { + + const attributes = primitiveDef.attributes; + + const pending = []; + + function assignAttributeAccessor( accessorIndex, attributeName ) { + + return parser.getDependency( 'accessor', accessorIndex ) + .then( function ( accessor ) { + + geometry.setAttribute( attributeName, accessor ); + + } ); + + } + + for ( const gltfAttributeName in attributes ) { + + const threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase(); + + // Skip attributes already provided by e.g. Draco extension. + if ( threeAttributeName in geometry.attributes ) continue; + + pending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) ); + + } + + if ( primitiveDef.indices !== undefined && ! geometry.index ) { + + const accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) { + + geometry.setIndex( accessor ); + + } ); + + pending.push( accessor ); + + } + + if ( ColorManagement.workingColorSpace !== LinearSRGBColorSpace && 'COLOR_0' in attributes ) { + + console.warn( `THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ColorManagement.workingColorSpace}" not supported.` ); + + } + + assignExtrasToUserData( geometry, primitiveDef ); + + computeBounds( geometry, primitiveDef, parser ); + + return Promise.all( pending ).then( function () { + + return primitiveDef.targets !== undefined + ? addMorphTargets( geometry, primitiveDef.targets, parser ) + : geometry; + + } ); + +} + +/** + * Loader result of `GLTFLoader`. + * + * @typedef {Object} GLTFLoader~LoadObject + * @property {Array} animations - An array of animation clips. + * @property {Object} asset - Meta data about the loaded asset. + * @property {Array} cameras - An array of cameras. + * @property {GLTFParser} parser - A reference to the internal parser. + * @property {Group} scene - The default scene. + * @property {Array} scenes - glTF assets might define multiple scenes. + * @property {Object} userData - Additional data. + **/ + +export { GLTFLoader }; diff --git a/web/vendor/addons/postprocessing/EffectComposer.js b/web/vendor/addons/postprocessing/EffectComposer.js new file mode 100644 index 0000000..2c1b2ad --- /dev/null +++ b/web/vendor/addons/postprocessing/EffectComposer.js @@ -0,0 +1,361 @@ +import { + Clock, + HalfFloatType, + NoBlending, + Vector2, + WebGLRenderTarget +} from 'three'; +import { CopyShader } from '../shaders/CopyShader.js'; +import { ShaderPass } from './ShaderPass.js'; +import { ClearMaskPass, MaskPass } from './MaskPass.js'; + +/** + * Used to implement post-processing effects in three.js. + * The class manages a chain of post-processing passes to produce the final visual result. + * Post-processing passes are executed in order of their addition/insertion. + * The last pass is automatically rendered to screen. + * + * This module can only be used with {@link WebGLRenderer}. + * + * ```js + * const composer = new EffectComposer( renderer ); + * + * // adding some passes + * const renderPass = new RenderPass( scene, camera ); + * composer.addPass( renderPass ); + * + * const glitchPass = new GlitchPass(); + * composer.addPass( glitchPass ); + * + * const outputPass = new OutputPass() + * composer.addPass( outputPass ); + * + * function animate() { + * + * composer.render(); // instead of renderer.render() + * + * } + * ``` + */ +class EffectComposer { + + /** + * Constructs a new effect composer. + * + * @param {WebGLRenderer} renderer - The renderer. + * @param {WebGLRenderTarget} [renderTarget] - This render target and a clone will + * be used as the internal read and write buffers. If not given, the composer creates + * the buffers automatically. + */ + constructor( renderer, renderTarget ) { + + /** + * The renderer. + * + * @type {WebGLRenderer} + */ + this.renderer = renderer; + + this._pixelRatio = renderer.getPixelRatio(); + + if ( renderTarget === undefined ) { + + const size = renderer.getSize( new Vector2() ); + this._width = size.width; + this._height = size.height; + + renderTarget = new WebGLRenderTarget( this._width * this._pixelRatio, this._height * this._pixelRatio, { type: HalfFloatType } ); + renderTarget.texture.name = 'EffectComposer.rt1'; + + } else { + + this._width = renderTarget.width; + this._height = renderTarget.height; + + } + + this.renderTarget1 = renderTarget; + this.renderTarget2 = renderTarget.clone(); + this.renderTarget2.texture.name = 'EffectComposer.rt2'; + + /** + * A reference to the internal write buffer. Passes usually write + * their result into this buffer. + * + * @type {WebGLRenderTarget} + */ + this.writeBuffer = this.renderTarget1; + + /** + * A reference to the internal read buffer. Passes usually read + * the previous render result from this buffer. + * + * @type {WebGLRenderTarget} + */ + this.readBuffer = this.renderTarget2; + + /** + * Whether the final pass is rendered to the screen (default framebuffer) or not. + * + * @type {boolean} + * @default true + */ + this.renderToScreen = true; + + /** + * An array representing the (ordered) chain of post-processing passes. + * + * @type {Array} + */ + this.passes = []; + + /** + * A copy pass used for internal swap operations. + * + * @private + * @type {ShaderPass} + */ + this.copyPass = new ShaderPass( CopyShader ); + this.copyPass.material.blending = NoBlending; + + /** + * The intenral clock for managing time data. + * + * @private + * @type {Clock} + */ + this.clock = new Clock(); + + } + + /** + * Swaps the internal read/write buffers. + */ + swapBuffers() { + + const tmp = this.readBuffer; + this.readBuffer = this.writeBuffer; + this.writeBuffer = tmp; + + } + + /** + * Adds the given pass to the pass chain. + * + * @param {Pass} pass - The pass to add. + */ + addPass( pass ) { + + this.passes.push( pass ); + pass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio ); + + } + + /** + * Inserts the given pass at a given index. + * + * @param {Pass} pass - The pass to insert. + * @param {number} index - The index into the pass chain. + */ + insertPass( pass, index ) { + + this.passes.splice( index, 0, pass ); + pass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio ); + + } + + /** + * Removes the given pass from the pass chain. + * + * @param {Pass} pass - The pass to remove. + */ + removePass( pass ) { + + const index = this.passes.indexOf( pass ); + + if ( index !== - 1 ) { + + this.passes.splice( index, 1 ); + + } + + } + + /** + * Returns `true` if the pass for the given index is the last enabled pass in the pass chain. + * + * @param {number} passIndex - The pass index. + * @return {boolean} Whether the the pass for the given index is the last pass in the pass chain. + */ + isLastEnabledPass( passIndex ) { + + for ( let i = passIndex + 1; i < this.passes.length; i ++ ) { + + if ( this.passes[ i ].enabled ) { + + return false; + + } + + } + + return true; + + } + + /** + * Executes all enabled post-processing passes in order to produce the final frame. + * + * @param {number} deltaTime - The delta time in seconds. If not given, the composer computes + * its own time delta value. + */ + render( deltaTime ) { + + // deltaTime value is in seconds + + if ( deltaTime === undefined ) { + + deltaTime = this.clock.getDelta(); + + } + + const currentRenderTarget = this.renderer.getRenderTarget(); + + let maskActive = false; + + for ( let i = 0, il = this.passes.length; i < il; i ++ ) { + + const pass = this.passes[ i ]; + + if ( pass.enabled === false ) continue; + + pass.renderToScreen = ( this.renderToScreen && this.isLastEnabledPass( i ) ); + pass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive ); + + if ( pass.needsSwap ) { + + if ( maskActive ) { + + const context = this.renderer.getContext(); + const stencil = this.renderer.state.buffers.stencil; + + //context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff ); + stencil.setFunc( context.NOTEQUAL, 1, 0xffffffff ); + + this.copyPass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime ); + + //context.stencilFunc( context.EQUAL, 1, 0xffffffff ); + stencil.setFunc( context.EQUAL, 1, 0xffffffff ); + + } + + this.swapBuffers(); + + } + + if ( MaskPass !== undefined ) { + + if ( pass instanceof MaskPass ) { + + maskActive = true; + + } else if ( pass instanceof ClearMaskPass ) { + + maskActive = false; + + } + + } + + } + + this.renderer.setRenderTarget( currentRenderTarget ); + + } + + /** + * Resets the internal state of the EffectComposer. + * + * @param {WebGLRenderTarget} [renderTarget] - This render target has the same purpose like + * the one from the constructor. If set, it is used to setup the read and write buffers. + */ + reset( renderTarget ) { + + if ( renderTarget === undefined ) { + + const size = this.renderer.getSize( new Vector2() ); + this._pixelRatio = this.renderer.getPixelRatio(); + this._width = size.width; + this._height = size.height; + + renderTarget = this.renderTarget1.clone(); + renderTarget.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio ); + + } + + this.renderTarget1.dispose(); + this.renderTarget2.dispose(); + this.renderTarget1 = renderTarget; + this.renderTarget2 = renderTarget.clone(); + + this.writeBuffer = this.renderTarget1; + this.readBuffer = this.renderTarget2; + + } + + /** + * Resizes the internal read and write buffers as well as all passes. Similar to {@link WebGLRenderer#setSize}, + * this method honors the current pixel ration. + * + * @param {number} width - The width in logical pixels. + * @param {number} height - The height in logical pixels. + */ + setSize( width, height ) { + + this._width = width; + this._height = height; + + const effectiveWidth = this._width * this._pixelRatio; + const effectiveHeight = this._height * this._pixelRatio; + + this.renderTarget1.setSize( effectiveWidth, effectiveHeight ); + this.renderTarget2.setSize( effectiveWidth, effectiveHeight ); + + for ( let i = 0; i < this.passes.length; i ++ ) { + + this.passes[ i ].setSize( effectiveWidth, effectiveHeight ); + + } + + } + + /** + * Sets device pixel ratio. This is usually used for HiDPI device to prevent blurring output. + * Setting the pixel ratio will automatically resize the composer. + * + * @param {number} pixelRatio - The pixel ratio to set. + */ + setPixelRatio( pixelRatio ) { + + this._pixelRatio = pixelRatio; + + this.setSize( this._width, this._height ); + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever the composer is no longer used in your app. + */ + dispose() { + + this.renderTarget1.dispose(); + this.renderTarget2.dispose(); + + this.copyPass.dispose(); + + } + +} + +export { EffectComposer }; diff --git a/web/vendor/addons/postprocessing/MaskPass.js b/web/vendor/addons/postprocessing/MaskPass.js new file mode 100644 index 0000000..e6e46de --- /dev/null +++ b/web/vendor/addons/postprocessing/MaskPass.js @@ -0,0 +1,194 @@ +import { Pass } from './Pass.js'; + +/** + * This pass can be used to define a mask during post processing. + * Meaning only areas of subsequent post processing are affected + * which lie in the masking area of this pass. Internally, the masking + * is implemented with the stencil buffer. + * + * ```js + * const maskPass = new MaskPass( scene, camera ); + * composer.addPass( maskPass ); + * ``` + * + * @augments Pass + */ +class MaskPass extends Pass { + + /** + * Constructs a new mask pass. + * + * @param {Scene} scene - The 3D objects in this scene will define the mask. + * @param {Camera} camera - The camera. + */ + constructor( scene, camera ) { + + super(); + + /** + * The scene that defines the mask. + * + * @type {Scene} + */ + this.scene = scene; + + /** + * The camera. + * + * @type {Camera} + */ + this.camera = camera; + + /** + * Overwritten to perform a clear operation by default. + * + * @type {boolean} + * @default true + */ + this.clear = true; + + /** + * Overwritten to disable the swap. + * + * @type {boolean} + * @default false + */ + this.needsSwap = false; + + /** + * Whether to inverse the mask or not. + * + * @type {boolean} + * @default false + */ + this.inverse = false; + + } + + /** + * Performs a mask pass with the configured scene and camera. + * + * @param {WebGLRenderer} renderer - The renderer. + * @param {WebGLRenderTarget} writeBuffer - The write buffer. This buffer is intended as the rendering + * destination for the pass. + * @param {WebGLRenderTarget} readBuffer - The read buffer. The pass can access the result from the + * previous pass from this buffer. + * @param {number} deltaTime - The delta time in seconds. + * @param {boolean} maskActive - Whether masking is active or not. + */ + render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) { + + const context = renderer.getContext(); + const state = renderer.state; + + // don't update color or depth + + state.buffers.color.setMask( false ); + state.buffers.depth.setMask( false ); + + // lock buffers + + state.buffers.color.setLocked( true ); + state.buffers.depth.setLocked( true ); + + // set up stencil + + let writeValue, clearValue; + + if ( this.inverse ) { + + writeValue = 0; + clearValue = 1; + + } else { + + writeValue = 1; + clearValue = 0; + + } + + state.buffers.stencil.setTest( true ); + state.buffers.stencil.setOp( context.REPLACE, context.REPLACE, context.REPLACE ); + state.buffers.stencil.setFunc( context.ALWAYS, writeValue, 0xffffffff ); + state.buffers.stencil.setClear( clearValue ); + state.buffers.stencil.setLocked( true ); + + // draw into the stencil buffer + + renderer.setRenderTarget( readBuffer ); + if ( this.clear ) renderer.clear(); + renderer.render( this.scene, this.camera ); + + renderer.setRenderTarget( writeBuffer ); + if ( this.clear ) renderer.clear(); + renderer.render( this.scene, this.camera ); + + // unlock color and depth buffer and make them writable for subsequent rendering/clearing + + state.buffers.color.setLocked( false ); + state.buffers.depth.setLocked( false ); + + state.buffers.color.setMask( true ); + state.buffers.depth.setMask( true ); + + // only render where stencil is set to 1 + + state.buffers.stencil.setLocked( false ); + state.buffers.stencil.setFunc( context.EQUAL, 1, 0xffffffff ); // draw if == 1 + state.buffers.stencil.setOp( context.KEEP, context.KEEP, context.KEEP ); + state.buffers.stencil.setLocked( true ); + + } + +} + +/** + * This pass can be used to clear a mask previously defined with {@link MaskPass}. + * + * ```js + * const clearPass = new ClearMaskPass(); + * composer.addPass( clearPass ); + * ``` + * + * @augments Pass + */ +class ClearMaskPass extends Pass { + + /** + * Constructs a new clear mask pass. + */ + constructor() { + + super(); + + /** + * Overwritten to disable the swap. + * + * @type {boolean} + * @default false + */ + this.needsSwap = false; + + } + + /** + * Performs the clear of the currently defined mask. + * + * @param {WebGLRenderer} renderer - The renderer. + * @param {WebGLRenderTarget} writeBuffer - The write buffer. This buffer is intended as the rendering + * destination for the pass. + * @param {WebGLRenderTarget} readBuffer - The read buffer. The pass can access the result from the + * previous pass from this buffer. + * @param {number} deltaTime - The delta time in seconds. + * @param {boolean} maskActive - Whether masking is active or not. + */ + render( renderer /*, writeBuffer, readBuffer, deltaTime, maskActive */ ) { + + renderer.state.buffers.stencil.setLocked( false ); + renderer.state.buffers.stencil.setTest( false ); + + } + +} + +export { MaskPass, ClearMaskPass }; diff --git a/web/vendor/addons/postprocessing/OutputPass.js b/web/vendor/addons/postprocessing/OutputPass.js new file mode 100644 index 0000000..5323d22 --- /dev/null +++ b/web/vendor/addons/postprocessing/OutputPass.js @@ -0,0 +1,138 @@ +import { + ColorManagement, + RawShaderMaterial, + UniformsUtils, + LinearToneMapping, + ReinhardToneMapping, + CineonToneMapping, + AgXToneMapping, + ACESFilmicToneMapping, + NeutralToneMapping, + CustomToneMapping, + SRGBTransfer +} from 'three'; +import { Pass, FullScreenQuad } from './Pass.js'; +import { OutputShader } from '../shaders/OutputShader.js'; + +/** + * This pass is responsible for including tone mapping and color space conversion + * into your pass chain. In most cases, this pass should be included at the end + * of each pass chain. If a pass requires sRGB input (e.g. like FXAA), the pass + * must follow `OutputPass` in the pass chain. + * + * The tone mapping and color space settings are extracted from the renderer. + * + * ```js + * const outputPass = new OutputPass(); + * composer.addPass( outputPass ); + * ``` + * + * @augments Pass + */ +class OutputPass extends Pass { + + /** + * Constructs a new output pass. + */ + constructor() { + + super(); + + /** + * The pass uniforms. + * + * @type {Object} + */ + this.uniforms = UniformsUtils.clone( OutputShader.uniforms ); + + /** + * The pass material. + * + * @type {RawShaderMaterial} + */ + this.material = new RawShaderMaterial( { + name: OutputShader.name, + uniforms: this.uniforms, + vertexShader: OutputShader.vertexShader, + fragmentShader: OutputShader.fragmentShader + } ); + + // internals + + this._fsQuad = new FullScreenQuad( this.material ); + + this._outputColorSpace = null; + this._toneMapping = null; + + } + + /** + * Performs the output pass. + * + * @param {WebGLRenderer} renderer - The renderer. + * @param {WebGLRenderTarget} writeBuffer - The write buffer. This buffer is intended as the rendering + * destination for the pass. + * @param {WebGLRenderTarget} readBuffer - The read buffer. The pass can access the result from the + * previous pass from this buffer. + * @param {number} deltaTime - The delta time in seconds. + * @param {boolean} maskActive - Whether masking is active or not. + */ + render( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive */ ) { + + this.uniforms[ 'tDiffuse' ].value = readBuffer.texture; + this.uniforms[ 'toneMappingExposure' ].value = renderer.toneMappingExposure; + + // rebuild defines if required + + if ( this._outputColorSpace !== renderer.outputColorSpace || this._toneMapping !== renderer.toneMapping ) { + + this._outputColorSpace = renderer.outputColorSpace; + this._toneMapping = renderer.toneMapping; + + this.material.defines = {}; + + if ( ColorManagement.getTransfer( this._outputColorSpace ) === SRGBTransfer ) this.material.defines.SRGB_TRANSFER = ''; + + if ( this._toneMapping === LinearToneMapping ) this.material.defines.LINEAR_TONE_MAPPING = ''; + else if ( this._toneMapping === ReinhardToneMapping ) this.material.defines.REINHARD_TONE_MAPPING = ''; + else if ( this._toneMapping === CineonToneMapping ) this.material.defines.CINEON_TONE_MAPPING = ''; + else if ( this._toneMapping === ACESFilmicToneMapping ) this.material.defines.ACES_FILMIC_TONE_MAPPING = ''; + else if ( this._toneMapping === AgXToneMapping ) this.material.defines.AGX_TONE_MAPPING = ''; + else if ( this._toneMapping === NeutralToneMapping ) this.material.defines.NEUTRAL_TONE_MAPPING = ''; + else if ( this._toneMapping === CustomToneMapping ) this.material.defines.CUSTOM_TONE_MAPPING = ''; + + this.material.needsUpdate = true; + + } + + // + + if ( this.renderToScreen === true ) { + + renderer.setRenderTarget( null ); + this._fsQuad.render( renderer ); + + } else { + + renderer.setRenderTarget( writeBuffer ); + if ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); + this._fsQuad.render( renderer ); + + } + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever the pass is no longer used in your app. + */ + dispose() { + + this.material.dispose(); + this._fsQuad.dispose(); + + } + +} + +export { OutputPass }; diff --git a/web/vendor/addons/postprocessing/Pass.js b/web/vendor/addons/postprocessing/Pass.js new file mode 100644 index 0000000..6312923 --- /dev/null +++ b/web/vendor/addons/postprocessing/Pass.js @@ -0,0 +1,189 @@ +import { + BufferGeometry, + Float32BufferAttribute, + OrthographicCamera, + Mesh +} from 'three'; + +/** + * Abstract base class for all post processing passes. + * + * This module is only relevant for post processing with {@link WebGLRenderer}. + * + * @abstract + */ +class Pass { + + /** + * Constructs a new pass. + */ + constructor() { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isPass = true; + + /** + * If set to `true`, the pass is processed by the composer. + * + * @type {boolean} + * @default true + */ + this.enabled = true; + + /** + * If set to `true`, the pass indicates to swap read and write buffer after rendering. + * + * @type {boolean} + * @default true + */ + this.needsSwap = true; + + /** + * If set to `true`, the pass clears its buffer before rendering + * + * @type {boolean} + * @default false + */ + this.clear = false; + + /** + * If set to `true`, the result of the pass is rendered to screen. The last pass in the composers + * pass chain gets automatically rendered to screen, no matter how this property is configured. + * + * @type {boolean} + * @default false + */ + this.renderToScreen = false; + + } + + /** + * Sets the size of the pass. + * + * @abstract + * @param {number} width - The width to set. + * @param {number} height - The width to set. + */ + setSize( /* width, height */ ) {} + + /** + * This method holds the render logic of a pass. It must be implemented in all derived classes. + * + * @abstract + * @param {WebGLRenderer} renderer - The renderer. + * @param {WebGLRenderTarget} writeBuffer - The write buffer. This buffer is intended as the rendering + * destination for the pass. + * @param {WebGLRenderTarget} readBuffer - The read buffer. The pass can access the result from the + * previous pass from this buffer. + * @param {number} deltaTime - The delta time in seconds. + * @param {boolean} maskActive - Whether masking is active or not. + */ + render( /* renderer, writeBuffer, readBuffer, deltaTime, maskActive */ ) { + + console.error( 'THREE.Pass: .render() must be implemented in derived pass.' ); + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever the pass is no longer used in your app. + * + * @abstract + */ + dispose() {} + +} + +// Helper for passes that need to fill the viewport with a single quad. + +const _camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 ); + +// https://github.com/mrdoob/three.js/pull/21358 + +class FullscreenTriangleGeometry extends BufferGeometry { + + constructor() { + + super(); + + this.setAttribute( 'position', new Float32BufferAttribute( [ - 1, 3, 0, - 1, - 1, 0, 3, - 1, 0 ], 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( [ 0, 2, 0, 0, 2, 0 ], 2 ) ); + + } + +} + +const _geometry = new FullscreenTriangleGeometry(); + + +/** + * This module is a helper for passes which need to render a full + * screen effect which is quite common in context of post processing. + * + * The intended usage is to reuse a single full screen quad for rendering + * subsequent passes by just reassigning the `material` reference. + * + * This module can only be used with {@link WebGLRenderer}. + * + * @augments Mesh + */ +class FullScreenQuad { + + /** + * Constructs a new full screen quad. + * + * @param {?Material} material - The material to render te full screen quad with. + */ + constructor( material ) { + + this._mesh = new Mesh( _geometry, material ); + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever the instance is no longer used in your app. + */ + dispose() { + + this._mesh.geometry.dispose(); + + } + + /** + * Renders the full screen quad. + * + * @param {WebGLRenderer} renderer - The renderer. + */ + render( renderer ) { + + renderer.render( this._mesh, _camera ); + + } + + /** + * The quad's material. + * + * @type {?Material} + */ + get material() { + + return this._mesh.material; + + } + + set material( value ) { + + this._mesh.material = value; + + } + +} + +export { Pass, FullScreenQuad }; diff --git a/web/vendor/addons/postprocessing/RenderPass.js b/web/vendor/addons/postprocessing/RenderPass.js new file mode 100644 index 0000000..bbb72ec --- /dev/null +++ b/web/vendor/addons/postprocessing/RenderPass.js @@ -0,0 +1,182 @@ +import { + Color +} from 'three'; +import { Pass } from './Pass.js'; + +/** + * This class represents a render pass. It takes a camera and a scene and produces + * a beauty pass for subsequent post processing effects. + * + * ```js + * const renderPass = new RenderPass( scene, camera ); + * composer.addPass( renderPass ); + * ``` + * + * @augments Pass + */ +class RenderPass extends Pass { + + /** + * Constructs a new render pass. + * + * @param {Scene} scene - The scene to render. + * @param {Camera} camera - The camera. + * @param {?Material} [overrideMaterial=null] - The override material. If set, this material is used + * for all objects in the scene. + * @param {?(number|Color|string)} [clearColor=null] - The clear color of the render pass. + * @param {?number} [clearAlpha=null] - The clear alpha of the render pass. + */ + constructor( scene, camera, overrideMaterial = null, clearColor = null, clearAlpha = null ) { + + super(); + + /** + * The scene to render. + * + * @type {Scene} + */ + this.scene = scene; + + /** + * The camera. + * + * @type {Camera} + */ + this.camera = camera; + + /** + * The override material. If set, this material is used + * for all objects in the scene. + * + * @type {?Material} + * @default null + */ + this.overrideMaterial = overrideMaterial; + + /** + * The clear color of the render pass. + * + * @type {?(number|Color|string)} + * @default null + */ + this.clearColor = clearColor; + + /** + * The clear alpha of the render pass. + * + * @type {?number} + * @default null + */ + this.clearAlpha = clearAlpha; + + /** + * Overwritten to perform a clear operation by default. + * + * @type {boolean} + * @default true + */ + this.clear = true; + + /** + * If set to `true`, only the depth can be cleared when `clear` is to `false`. + * + * @type {boolean} + * @default false + */ + this.clearDepth = false; + + /** + * Overwritten to disable the swap. + * + * @type {boolean} + * @default false + */ + this.needsSwap = false; + this._oldClearColor = new Color(); + + } + + /** + * Performs a beauty pass with the configured scene and camera. + * + * @param {WebGLRenderer} renderer - The renderer. + * @param {WebGLRenderTarget} writeBuffer - The write buffer. This buffer is intended as the rendering + * destination for the pass. + * @param {WebGLRenderTarget} readBuffer - The read buffer. The pass can access the result from the + * previous pass from this buffer. + * @param {number} deltaTime - The delta time in seconds. + * @param {boolean} maskActive - Whether masking is active or not. + */ + render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) { + + const oldAutoClear = renderer.autoClear; + renderer.autoClear = false; + + let oldClearAlpha, oldOverrideMaterial; + + if ( this.overrideMaterial !== null ) { + + oldOverrideMaterial = this.scene.overrideMaterial; + + this.scene.overrideMaterial = this.overrideMaterial; + + } + + if ( this.clearColor !== null ) { + + renderer.getClearColor( this._oldClearColor ); + renderer.setClearColor( this.clearColor, renderer.getClearAlpha() ); + + } + + if ( this.clearAlpha !== null ) { + + oldClearAlpha = renderer.getClearAlpha(); + renderer.setClearAlpha( this.clearAlpha ); + + } + + if ( this.clearDepth == true ) { + + renderer.clearDepth(); + + } + + renderer.setRenderTarget( this.renderToScreen ? null : readBuffer ); + + if ( this.clear === true ) { + + // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600 + renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); + + } + + renderer.render( this.scene, this.camera ); + + // restore + + if ( this.clearColor !== null ) { + + renderer.setClearColor( this._oldClearColor ); + + } + + if ( this.clearAlpha !== null ) { + + renderer.setClearAlpha( oldClearAlpha ); + + } + + if ( this.overrideMaterial !== null ) { + + this.scene.overrideMaterial = oldOverrideMaterial; + + } + + renderer.autoClear = oldAutoClear; + + } + +} + +export { RenderPass }; diff --git a/web/vendor/addons/postprocessing/ShaderPass.js b/web/vendor/addons/postprocessing/ShaderPass.js new file mode 100644 index 0000000..d0da905 --- /dev/null +++ b/web/vendor/addons/postprocessing/ShaderPass.js @@ -0,0 +1,134 @@ +import { + ShaderMaterial, + UniformsUtils +} from 'three'; +import { Pass, FullScreenQuad } from './Pass.js'; + +/** + * This pass can be used to create a post processing effect + * with a raw GLSL shader object. Useful for implementing custom + * effects. + * + * ```js + * const fxaaPass = new ShaderPass( FXAAShader ); + * composer.addPass( fxaaPass ); + * ``` + * + * @augments Pass + */ +class ShaderPass extends Pass { + + /** + * Constructs a new shader pass. + * + * @param {Object|ShaderMaterial} [shader] - A shader object holding vertex and fragment shader as well as + * defines and uniforms. It's also valid to pass a custom shader material. + * @param {string} [textureID='tDiffuse'] - The name of the texture uniform that should sample + * the read buffer. + */ + constructor( shader, textureID = 'tDiffuse' ) { + + super(); + + /** + * The name of the texture uniform that should sample the read buffer. + * + * @type {string} + * @default 'tDiffuse' + */ + this.textureID = textureID; + + /** + * The pass uniforms. + * + * @type {?Object} + */ + this.uniforms = null; + + /** + * The pass material. + * + * @type {?ShaderMaterial} + */ + this.material = null; + + if ( shader instanceof ShaderMaterial ) { + + this.uniforms = shader.uniforms; + + this.material = shader; + + } else if ( shader ) { + + this.uniforms = UniformsUtils.clone( shader.uniforms ); + + this.material = new ShaderMaterial( { + + name: ( shader.name !== undefined ) ? shader.name : 'unspecified', + defines: Object.assign( {}, shader.defines ), + uniforms: this.uniforms, + vertexShader: shader.vertexShader, + fragmentShader: shader.fragmentShader + + } ); + + } + + // internals + + this._fsQuad = new FullScreenQuad( this.material ); + + } + + /** + * Performs the shader pass. + * + * @param {WebGLRenderer} renderer - The renderer. + * @param {WebGLRenderTarget} writeBuffer - The write buffer. This buffer is intended as the rendering + * destination for the pass. + * @param {WebGLRenderTarget} readBuffer - The read buffer. The pass can access the result from the + * previous pass from this buffer. + * @param {number} deltaTime - The delta time in seconds. + * @param {boolean} maskActive - Whether masking is active or not. + */ + render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) { + + if ( this.uniforms[ this.textureID ] ) { + + this.uniforms[ this.textureID ].value = readBuffer.texture; + + } + + this._fsQuad.material = this.material; + + if ( this.renderToScreen ) { + + renderer.setRenderTarget( null ); + this._fsQuad.render( renderer ); + + } else { + + renderer.setRenderTarget( writeBuffer ); + // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600 + if ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); + this._fsQuad.render( renderer ); + + } + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever the pass is no longer used in your app. + */ + dispose() { + + this.material.dispose(); + + this._fsQuad.dispose(); + + } + +} + +export { ShaderPass }; diff --git a/web/vendor/addons/postprocessing/UnrealBloomPass.js b/web/vendor/addons/postprocessing/UnrealBloomPass.js new file mode 100644 index 0000000..62e89e5 --- /dev/null +++ b/web/vendor/addons/postprocessing/UnrealBloomPass.js @@ -0,0 +1,491 @@ +import { + AdditiveBlending, + Color, + HalfFloatType, + MeshBasicMaterial, + ShaderMaterial, + UniformsUtils, + Vector2, + Vector3, + WebGLRenderTarget +} from 'three'; +import { Pass, FullScreenQuad } from './Pass.js'; +import { CopyShader } from '../shaders/CopyShader.js'; +import { LuminosityHighPassShader } from '../shaders/LuminosityHighPassShader.js'; + +/** + * This pass is inspired by the bloom pass of Unreal Engine. It creates a + * mip map chain of bloom textures and blurs them with different radii. Because + * of the weighted combination of mips, and because larger blurs are done on + * higher mips, this effect provides good quality and performance. + * + * When using this pass, tone mapping must be enabled in the renderer settings. + * + * Reference: + * - [Bloom in Unreal Engine]{@link https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/Bloom/} + * + * ```js + * const resolution = new THREE.Vector2( window.innerWidth, window.innerHeight ); + * const bloomPass = new UnrealBloomPass( resolution, 1.5, 0.4, 0.85 ); + * composer.addPass( bloomPass ); + * ``` + * + * @augments Pass + */ +class UnrealBloomPass extends Pass { + + /** + * Constructs a new Unreal Bloom pass. + * + * @param {Vector2} [resolution] - The effect's resolution. + * @param {number} [strength=1] - The Bloom strength. + * @param {number} radius - The Bloom radius. + * @param {number} threshold - The luminance threshold limits which bright areas contribute to the Bloom effect. + */ + constructor( resolution, strength = 1, radius, threshold ) { + + super(); + + /** + * The Bloom strength. + * + * @type {number} + * @default 1 + */ + this.strength = strength; + + /** + * The Bloom radius. + * + * @type {number} + */ + this.radius = radius; + + /** + * The luminance threshold limits which bright areas contribute to the Bloom effect. + * + * @type {number} + */ + this.threshold = threshold; + + /** + * The effect's resolution. + * + * @type {Vector2} + * @default (256,256) + */ + this.resolution = ( resolution !== undefined ) ? new Vector2( resolution.x, resolution.y ) : new Vector2( 256, 256 ); + + /** + * The effect's clear color + * + * @type {Color} + * @default (0,0,0) + */ + this.clearColor = new Color( 0, 0, 0 ); + + /** + * Overwritten to disable the swap. + * + * @type {boolean} + * @default false + */ + this.needsSwap = false; + + // internals + + // render targets + this.renderTargetsHorizontal = []; + this.renderTargetsVertical = []; + this.nMips = 5; + let resx = Math.round( this.resolution.x / 2 ); + let resy = Math.round( this.resolution.y / 2 ); + + this.renderTargetBright = new WebGLRenderTarget( resx, resy, { type: HalfFloatType } ); + this.renderTargetBright.texture.name = 'UnrealBloomPass.bright'; + this.renderTargetBright.texture.generateMipmaps = false; + + for ( let i = 0; i < this.nMips; i ++ ) { + + const renderTargetHorizontal = new WebGLRenderTarget( resx, resy, { type: HalfFloatType } ); + + renderTargetHorizontal.texture.name = 'UnrealBloomPass.h' + i; + renderTargetHorizontal.texture.generateMipmaps = false; + + this.renderTargetsHorizontal.push( renderTargetHorizontal ); + + const renderTargetVertical = new WebGLRenderTarget( resx, resy, { type: HalfFloatType } ); + + renderTargetVertical.texture.name = 'UnrealBloomPass.v' + i; + renderTargetVertical.texture.generateMipmaps = false; + + this.renderTargetsVertical.push( renderTargetVertical ); + + resx = Math.round( resx / 2 ); + + resy = Math.round( resy / 2 ); + + } + + // luminosity high pass material + + const highPassShader = LuminosityHighPassShader; + this.highPassUniforms = UniformsUtils.clone( highPassShader.uniforms ); + + this.highPassUniforms[ 'luminosityThreshold' ].value = threshold; + this.highPassUniforms[ 'smoothWidth' ].value = 0.01; + + this.materialHighPassFilter = new ShaderMaterial( { + uniforms: this.highPassUniforms, + vertexShader: highPassShader.vertexShader, + fragmentShader: highPassShader.fragmentShader + } ); + + // gaussian blur materials + + this.separableBlurMaterials = []; + const kernelSizeArray = [ 3, 5, 7, 9, 11 ]; + resx = Math.round( this.resolution.x / 2 ); + resy = Math.round( this.resolution.y / 2 ); + + for ( let i = 0; i < this.nMips; i ++ ) { + + this.separableBlurMaterials.push( this._getSeparableBlurMaterial( kernelSizeArray[ i ] ) ); + + this.separableBlurMaterials[ i ].uniforms[ 'invSize' ].value = new Vector2( 1 / resx, 1 / resy ); + + resx = Math.round( resx / 2 ); + + resy = Math.round( resy / 2 ); + + } + + // composite material + + this.compositeMaterial = this._getCompositeMaterial( this.nMips ); + this.compositeMaterial.uniforms[ 'blurTexture1' ].value = this.renderTargetsVertical[ 0 ].texture; + this.compositeMaterial.uniforms[ 'blurTexture2' ].value = this.renderTargetsVertical[ 1 ].texture; + this.compositeMaterial.uniforms[ 'blurTexture3' ].value = this.renderTargetsVertical[ 2 ].texture; + this.compositeMaterial.uniforms[ 'blurTexture4' ].value = this.renderTargetsVertical[ 3 ].texture; + this.compositeMaterial.uniforms[ 'blurTexture5' ].value = this.renderTargetsVertical[ 4 ].texture; + this.compositeMaterial.uniforms[ 'bloomStrength' ].value = strength; + this.compositeMaterial.uniforms[ 'bloomRadius' ].value = 0.1; + + const bloomFactors = [ 1.0, 0.8, 0.6, 0.4, 0.2 ]; + this.compositeMaterial.uniforms[ 'bloomFactors' ].value = bloomFactors; + this.bloomTintColors = [ new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ) ]; + this.compositeMaterial.uniforms[ 'bloomTintColors' ].value = this.bloomTintColors; + + // blend material + + this.copyUniforms = UniformsUtils.clone( CopyShader.uniforms ); + + this.blendMaterial = new ShaderMaterial( { + uniforms: this.copyUniforms, + vertexShader: CopyShader.vertexShader, + fragmentShader: CopyShader.fragmentShader, + blending: AdditiveBlending, + depthTest: false, + depthWrite: false, + transparent: true + } ); + + this._oldClearColor = new Color(); + this._oldClearAlpha = 1; + + this._basic = new MeshBasicMaterial(); + + this._fsQuad = new FullScreenQuad( null ); + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever the pass is no longer used in your app. + */ + dispose() { + + for ( let i = 0; i < this.renderTargetsHorizontal.length; i ++ ) { + + this.renderTargetsHorizontal[ i ].dispose(); + + } + + for ( let i = 0; i < this.renderTargetsVertical.length; i ++ ) { + + this.renderTargetsVertical[ i ].dispose(); + + } + + this.renderTargetBright.dispose(); + + // + + for ( let i = 0; i < this.separableBlurMaterials.length; i ++ ) { + + this.separableBlurMaterials[ i ].dispose(); + + } + + this.compositeMaterial.dispose(); + this.blendMaterial.dispose(); + this._basic.dispose(); + + // + + this._fsQuad.dispose(); + + } + + /** + * Sets the size of the pass. + * + * @param {number} width - The width to set. + * @param {number} height - The width to set. + */ + setSize( width, height ) { + + let resx = Math.round( width / 2 ); + let resy = Math.round( height / 2 ); + + this.renderTargetBright.setSize( resx, resy ); + + for ( let i = 0; i < this.nMips; i ++ ) { + + this.renderTargetsHorizontal[ i ].setSize( resx, resy ); + this.renderTargetsVertical[ i ].setSize( resx, resy ); + + this.separableBlurMaterials[ i ].uniforms[ 'invSize' ].value = new Vector2( 1 / resx, 1 / resy ); + + resx = Math.round( resx / 2 ); + resy = Math.round( resy / 2 ); + + } + + } + + /** + * Performs the Bloom pass. + * + * @param {WebGLRenderer} renderer - The renderer. + * @param {WebGLRenderTarget} writeBuffer - The write buffer. This buffer is intended as the rendering + * destination for the pass. + * @param {WebGLRenderTarget} readBuffer - The read buffer. The pass can access the result from the + * previous pass from this buffer. + * @param {number} deltaTime - The delta time in seconds. + * @param {boolean} maskActive - Whether masking is active or not. + */ + render( renderer, writeBuffer, readBuffer, deltaTime, maskActive ) { + + renderer.getClearColor( this._oldClearColor ); + this._oldClearAlpha = renderer.getClearAlpha(); + const oldAutoClear = renderer.autoClear; + renderer.autoClear = false; + + renderer.setClearColor( this.clearColor, 0 ); + + if ( maskActive ) renderer.state.buffers.stencil.setTest( false ); + + // Render input to screen + + if ( this.renderToScreen ) { + + this._fsQuad.material = this._basic; + this._basic.map = readBuffer.texture; + + renderer.setRenderTarget( null ); + renderer.clear(); + this._fsQuad.render( renderer ); + + } + + // 1. Extract Bright Areas + + this.highPassUniforms[ 'tDiffuse' ].value = readBuffer.texture; + this.highPassUniforms[ 'luminosityThreshold' ].value = this.threshold; + this._fsQuad.material = this.materialHighPassFilter; + + renderer.setRenderTarget( this.renderTargetBright ); + renderer.clear(); + this._fsQuad.render( renderer ); + + // 2. Blur All the mips progressively + + let inputRenderTarget = this.renderTargetBright; + + for ( let i = 0; i < this.nMips; i ++ ) { + + this._fsQuad.material = this.separableBlurMaterials[ i ]; + + this.separableBlurMaterials[ i ].uniforms[ 'colorTexture' ].value = inputRenderTarget.texture; + this.separableBlurMaterials[ i ].uniforms[ 'direction' ].value = UnrealBloomPass.BlurDirectionX; + renderer.setRenderTarget( this.renderTargetsHorizontal[ i ] ); + renderer.clear(); + this._fsQuad.render( renderer ); + + this.separableBlurMaterials[ i ].uniforms[ 'colorTexture' ].value = this.renderTargetsHorizontal[ i ].texture; + this.separableBlurMaterials[ i ].uniforms[ 'direction' ].value = UnrealBloomPass.BlurDirectionY; + renderer.setRenderTarget( this.renderTargetsVertical[ i ] ); + renderer.clear(); + this._fsQuad.render( renderer ); + + inputRenderTarget = this.renderTargetsVertical[ i ]; + + } + + // Composite All the mips + + this._fsQuad.material = this.compositeMaterial; + this.compositeMaterial.uniforms[ 'bloomStrength' ].value = this.strength; + this.compositeMaterial.uniforms[ 'bloomRadius' ].value = this.radius; + this.compositeMaterial.uniforms[ 'bloomTintColors' ].value = this.bloomTintColors; + + renderer.setRenderTarget( this.renderTargetsHorizontal[ 0 ] ); + renderer.clear(); + this._fsQuad.render( renderer ); + + // Blend it additively over the input texture + + this._fsQuad.material = this.blendMaterial; + this.copyUniforms[ 'tDiffuse' ].value = this.renderTargetsHorizontal[ 0 ].texture; + + if ( maskActive ) renderer.state.buffers.stencil.setTest( true ); + + if ( this.renderToScreen ) { + + renderer.setRenderTarget( null ); + this._fsQuad.render( renderer ); + + } else { + + renderer.setRenderTarget( readBuffer ); + this._fsQuad.render( renderer ); + + } + + // Restore renderer settings + + renderer.setClearColor( this._oldClearColor, this._oldClearAlpha ); + renderer.autoClear = oldAutoClear; + + } + + // internals + + _getSeparableBlurMaterial( kernelRadius ) { + + const coefficients = []; + + for ( let i = 0; i < kernelRadius; i ++ ) { + + coefficients.push( 0.39894 * Math.exp( - 0.5 * i * i / ( kernelRadius * kernelRadius ) ) / kernelRadius ); + + } + + return new ShaderMaterial( { + + defines: { + 'KERNEL_RADIUS': kernelRadius + }, + + uniforms: { + 'colorTexture': { value: null }, + 'invSize': { value: new Vector2( 0.5, 0.5 ) }, // inverse texture size + 'direction': { value: new Vector2( 0.5, 0.5 ) }, + 'gaussianCoefficients': { value: coefficients } // precomputed Gaussian coefficients + }, + + vertexShader: + `varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); + }`, + + fragmentShader: + `#include + varying vec2 vUv; + uniform sampler2D colorTexture; + uniform vec2 invSize; + uniform vec2 direction; + uniform float gaussianCoefficients[KERNEL_RADIUS]; + + void main() { + float weightSum = gaussianCoefficients[0]; + vec3 diffuseSum = texture2D( colorTexture, vUv ).rgb * weightSum; + for( int i = 1; i < KERNEL_RADIUS; i ++ ) { + float x = float(i); + float w = gaussianCoefficients[i]; + vec2 uvOffset = direction * invSize * x; + vec3 sample1 = texture2D( colorTexture, vUv + uvOffset ).rgb; + vec3 sample2 = texture2D( colorTexture, vUv - uvOffset ).rgb; + diffuseSum += (sample1 + sample2) * w; + weightSum += 2.0 * w; + } + gl_FragColor = vec4(diffuseSum/weightSum, 1.0); + }` + } ); + + } + + _getCompositeMaterial( nMips ) { + + return new ShaderMaterial( { + + defines: { + 'NUM_MIPS': nMips + }, + + uniforms: { + 'blurTexture1': { value: null }, + 'blurTexture2': { value: null }, + 'blurTexture3': { value: null }, + 'blurTexture4': { value: null }, + 'blurTexture5': { value: null }, + 'bloomStrength': { value: 1.0 }, + 'bloomFactors': { value: null }, + 'bloomTintColors': { value: null }, + 'bloomRadius': { value: 0.0 } + }, + + vertexShader: + `varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); + }`, + + fragmentShader: + `varying vec2 vUv; + uniform sampler2D blurTexture1; + uniform sampler2D blurTexture2; + uniform sampler2D blurTexture3; + uniform sampler2D blurTexture4; + uniform sampler2D blurTexture5; + uniform float bloomStrength; + uniform float bloomRadius; + uniform float bloomFactors[NUM_MIPS]; + uniform vec3 bloomTintColors[NUM_MIPS]; + + float lerpBloomFactor(const in float factor) { + float mirrorFactor = 1.2 - factor; + return mix(factor, mirrorFactor, bloomRadius); + } + + void main() { + gl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) + + lerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) + + lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) + + lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) + + lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) ); + }` + } ); + + } + +} + +UnrealBloomPass.BlurDirectionX = new Vector2( 1.0, 0.0 ); +UnrealBloomPass.BlurDirectionY = new Vector2( 0.0, 1.0 ); + +export { UnrealBloomPass }; diff --git a/web/vendor/addons/shaders/CopyShader.js b/web/vendor/addons/shaders/CopyShader.js new file mode 100644 index 0000000..12fe827 --- /dev/null +++ b/web/vendor/addons/shaders/CopyShader.js @@ -0,0 +1,49 @@ +/** @module CopyShader */ + +/** + * Full-screen copy shader pass. + * + * @constant + * @type {ShaderMaterial~Shader} + */ +const CopyShader = { + + name: 'CopyShader', + + uniforms: { + + 'tDiffuse': { value: null }, + 'opacity': { value: 1.0 } + + }, + + vertexShader: /* glsl */` + + varying vec2 vUv; + + void main() { + + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); + + }`, + + fragmentShader: /* glsl */` + + uniform float opacity; + + uniform sampler2D tDiffuse; + + varying vec2 vUv; + + void main() { + + vec4 texel = texture2D( tDiffuse, vUv ); + gl_FragColor = opacity * texel; + + + }` + +}; + +export { CopyShader }; diff --git a/web/vendor/addons/shaders/LuminosityHighPassShader.js b/web/vendor/addons/shaders/LuminosityHighPassShader.js new file mode 100644 index 0000000..e981a3f --- /dev/null +++ b/web/vendor/addons/shaders/LuminosityHighPassShader.js @@ -0,0 +1,65 @@ +import { + Color +} from 'three'; + +/** @module LuminosityHighPassShader */ + +/** + * Luminosity high pass shader. + * + * @constant + * @type {ShaderMaterial~Shader} + */ +const LuminosityHighPassShader = { + + name: 'LuminosityHighPassShader', + + uniforms: { + + 'tDiffuse': { value: null }, + 'luminosityThreshold': { value: 1.0 }, + 'smoothWidth': { value: 1.0 }, + 'defaultColor': { value: new Color( 0x000000 ) }, + 'defaultOpacity': { value: 0.0 } + + }, + + vertexShader: /* glsl */` + + varying vec2 vUv; + + void main() { + + vUv = uv; + + gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); + + }`, + + fragmentShader: /* glsl */` + + uniform sampler2D tDiffuse; + uniform vec3 defaultColor; + uniform float defaultOpacity; + uniform float luminosityThreshold; + uniform float smoothWidth; + + varying vec2 vUv; + + void main() { + + vec4 texel = texture2D( tDiffuse, vUv ); + + float v = luminance( texel.xyz ); + + vec4 outputColor = vec4( defaultColor.rgb, defaultOpacity ); + + float alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v ); + + gl_FragColor = mix( outputColor, texel, alpha ); + + }` + +}; + +export { LuminosityHighPassShader }; diff --git a/web/vendor/addons/shaders/OutputShader.js b/web/vendor/addons/shaders/OutputShader.js new file mode 100644 index 0000000..cf77344 --- /dev/null +++ b/web/vendor/addons/shaders/OutputShader.js @@ -0,0 +1,100 @@ +/** @module OutputShader */ + +/** + * Performs tone mapping and color space conversion for + * FX workflows. + * + * Used by {@link OutputPass}. + * + * @constant + * @type {ShaderMaterial~Shader} + */ +const OutputShader = { + + name: 'OutputShader', + + uniforms: { + + 'tDiffuse': { value: null }, + 'toneMappingExposure': { value: 1 } + + }, + + vertexShader: /* glsl */` + precision highp float; + + uniform mat4 modelViewMatrix; + uniform mat4 projectionMatrix; + + attribute vec3 position; + attribute vec2 uv; + + varying vec2 vUv; + + void main() { + + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); + + }`, + + fragmentShader: /* glsl */` + + precision highp float; + + uniform sampler2D tDiffuse; + + #include + #include + + varying vec2 vUv; + + void main() { + + gl_FragColor = texture2D( tDiffuse, vUv ); + + // tone mapping + + #ifdef LINEAR_TONE_MAPPING + + gl_FragColor.rgb = LinearToneMapping( gl_FragColor.rgb ); + + #elif defined( REINHARD_TONE_MAPPING ) + + gl_FragColor.rgb = ReinhardToneMapping( gl_FragColor.rgb ); + + #elif defined( CINEON_TONE_MAPPING ) + + gl_FragColor.rgb = CineonToneMapping( gl_FragColor.rgb ); + + #elif defined( ACES_FILMIC_TONE_MAPPING ) + + gl_FragColor.rgb = ACESFilmicToneMapping( gl_FragColor.rgb ); + + #elif defined( AGX_TONE_MAPPING ) + + gl_FragColor.rgb = AgXToneMapping( gl_FragColor.rgb ); + + #elif defined( NEUTRAL_TONE_MAPPING ) + + gl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb ); + + #elif defined( CUSTOM_TONE_MAPPING ) + + gl_FragColor.rgb = CustomToneMapping( gl_FragColor.rgb ); + + #endif + + // color space + + #ifdef SRGB_TRANSFER + + gl_FragColor = sRGBTransferOETF( gl_FragColor ); + + #endif + + }` + +}; + +export { OutputShader }; diff --git a/web/vendor/addons/shaders/VignetteShader.js b/web/vendor/addons/shaders/VignetteShader.js new file mode 100644 index 0000000..3e7838f --- /dev/null +++ b/web/vendor/addons/shaders/VignetteShader.js @@ -0,0 +1,53 @@ +/** @module VignetteShader */ + +/** + * Based on [PaintEffect postprocess from ro.me]{@link http://code.google.com/p/3-dreams-of-black/source/browse/deploy/js/effects/PaintEffect.js}. + * + * @constant + * @type {ShaderMaterial~Shader} + */ +const VignetteShader = { + + name: 'VignetteShader', + + uniforms: { + + 'tDiffuse': { value: null }, + 'offset': { value: 1.0 }, + 'darkness': { value: 1.0 } + + }, + + vertexShader: /* glsl */` + + varying vec2 vUv; + + void main() { + + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); + + }`, + + fragmentShader: /* glsl */` + + uniform float offset; + uniform float darkness; + + uniform sampler2D tDiffuse; + + varying vec2 vUv; + + void main() { + + // Eskil's vignette + + vec4 texel = texture2D( tDiffuse, vUv ); + vec2 uv = ( vUv - vec2( 0.5 ) ) * vec2( offset ); + gl_FragColor = vec4( mix( texel.rgb, vec3( 1.0 - darkness ), dot( uv, uv ) ), texel.a ); + + }` + +}; + +export { VignetteShader }; diff --git a/web/vendor/addons/utils/BufferGeometryUtils.js b/web/vendor/addons/utils/BufferGeometryUtils.js new file mode 100644 index 0000000..60494bc --- /dev/null +++ b/web/vendor/addons/utils/BufferGeometryUtils.js @@ -0,0 +1,1432 @@ +import { + BufferAttribute, + BufferGeometry, + Float32BufferAttribute, + InstancedBufferAttribute, + InterleavedBuffer, + InterleavedBufferAttribute, + TriangleFanDrawMode, + TriangleStripDrawMode, + TrianglesDrawMode, + Vector3, +} from 'three'; + +/** @module BufferGeometryUtils */ + +/** + * Computes vertex tangents using the MikkTSpace algorithm. MikkTSpace generates the same tangents consistently, + * and is used in most modelling tools and normal map bakers. Use MikkTSpace for materials with normal maps, + * because inconsistent tangents may lead to subtle visual issues in the normal map, particularly around mirrored + * UV seams. + * + * In comparison to this method, {@link BufferGeometry#computeTangents} (a custom algorithm) generates tangents that + * probably will not match the tangents in other software. The custom algorithm is sufficient for general use with a + * custom material, and may be faster than MikkTSpace. + * + * Returns the original BufferGeometry. Indexed geometries will be de-indexed. Requires position, normal, and uv attributes. + * + * @param {BufferGeometry} geometry - The geometry to compute tangents for. + * @param {Object} MikkTSpace - Instance of `examples/jsm/libs/mikktspace.module.js`, or `mikktspace` npm package. + * Await `MikkTSpace.ready` before use. + * @param {boolean} [negateSign=true] - Whether to negate the sign component (.w) of each tangent. + * Required for normal map conventions in some formats, including glTF. + * @return {BufferGeometry} The updated geometry. + */ +function computeMikkTSpaceTangents( geometry, MikkTSpace, negateSign = true ) { + + if ( ! MikkTSpace || ! MikkTSpace.isReady ) { + + throw new Error( 'BufferGeometryUtils: Initialized MikkTSpace library required.' ); + + } + + if ( ! geometry.hasAttribute( 'position' ) || ! geometry.hasAttribute( 'normal' ) || ! geometry.hasAttribute( 'uv' ) ) { + + throw new Error( 'BufferGeometryUtils: Tangents require "position", "normal", and "uv" attributes.' ); + + } + + function getAttributeArray( attribute ) { + + if ( attribute.normalized || attribute.isInterleavedBufferAttribute ) { + + const dstArray = new Float32Array( attribute.count * attribute.itemSize ); + + for ( let i = 0, j = 0; i < attribute.count; i ++ ) { + + dstArray[ j ++ ] = attribute.getX( i ); + dstArray[ j ++ ] = attribute.getY( i ); + + if ( attribute.itemSize > 2 ) { + + dstArray[ j ++ ] = attribute.getZ( i ); + + } + + } + + return dstArray; + + } + + if ( attribute.array instanceof Float32Array ) { + + return attribute.array; + + } + + return new Float32Array( attribute.array ); + + } + + // MikkTSpace algorithm requires non-indexed input. + + const _geometry = geometry.index ? geometry.toNonIndexed() : geometry; + + // Compute vertex tangents. + + const tangents = MikkTSpace.generateTangents( + + getAttributeArray( _geometry.attributes.position ), + getAttributeArray( _geometry.attributes.normal ), + getAttributeArray( _geometry.attributes.uv ) + + ); + + // Texture coordinate convention of glTF differs from the apparent + // default of the MikkTSpace library; .w component must be flipped. + + if ( negateSign ) { + + for ( let i = 3; i < tangents.length; i += 4 ) { + + tangents[ i ] *= - 1; + + } + + } + + // + + _geometry.setAttribute( 'tangent', new BufferAttribute( tangents, 4 ) ); + + if ( geometry !== _geometry ) { + + geometry.copy( _geometry ); + + } + + return geometry; + +} + +/** + * Merges a set of geometries into a single instance. All geometries must have compatible attributes. + * + * @param {Array} geometries - The geometries to merge. + * @param {boolean} [useGroups=false] - Whether to use groups or not. + * @return {?BufferGeometry} The merged geometry. Returns `null` if the merge does not succeed. + */ +function mergeGeometries( geometries, useGroups = false ) { + + const isIndexed = geometries[ 0 ].index !== null; + + const attributesUsed = new Set( Object.keys( geometries[ 0 ].attributes ) ); + const morphAttributesUsed = new Set( Object.keys( geometries[ 0 ].morphAttributes ) ); + + const attributes = {}; + const morphAttributes = {}; + + const morphTargetsRelative = geometries[ 0 ].morphTargetsRelative; + + const mergedGeometry = new BufferGeometry(); + + let offset = 0; + + for ( let i = 0; i < geometries.length; ++ i ) { + + const geometry = geometries[ i ]; + let attributesCount = 0; + + // ensure that all geometries are indexed, or none + + if ( isIndexed !== ( geometry.index !== null ) ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.' ); + return null; + + } + + // gather attributes, exit early if they're different + + for ( const name in geometry.attributes ) { + + if ( ! attributesUsed.has( name ) ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure "' + name + '" attribute exists among all geometries, or in none of them.' ); + return null; + + } + + if ( attributes[ name ] === undefined ) attributes[ name ] = []; + + attributes[ name ].push( geometry.attributes[ name ] ); + + attributesCount ++; + + } + + // ensure geometries have the same number of attributes + + if ( attributesCount !== attributesUsed.size ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. Make sure all geometries have the same number of attributes.' ); + return null; + + } + + // gather morph attributes, exit early if they're different + + if ( morphTargetsRelative !== geometry.morphTargetsRelative ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. .morphTargetsRelative must be consistent throughout all geometries.' ); + return null; + + } + + for ( const name in geometry.morphAttributes ) { + + if ( ! morphAttributesUsed.has( name ) ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. .morphAttributes must be consistent throughout all geometries.' ); + return null; + + } + + if ( morphAttributes[ name ] === undefined ) morphAttributes[ name ] = []; + + morphAttributes[ name ].push( geometry.morphAttributes[ name ] ); + + } + + if ( useGroups ) { + + let count; + + if ( isIndexed ) { + + count = geometry.index.count; + + } else if ( geometry.attributes.position !== undefined ) { + + count = geometry.attributes.position.count; + + } else { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. The geometry must have either an index or a position attribute' ); + return null; + + } + + mergedGeometry.addGroup( offset, count, i ); + + offset += count; + + } + + } + + // merge indices + + if ( isIndexed ) { + + let indexOffset = 0; + const mergedIndex = []; + + for ( let i = 0; i < geometries.length; ++ i ) { + + const index = geometries[ i ].index; + + for ( let j = 0; j < index.count; ++ j ) { + + mergedIndex.push( index.getX( j ) + indexOffset ); + + } + + indexOffset += geometries[ i ].attributes.position.count; + + } + + mergedGeometry.setIndex( mergedIndex ); + + } + + // merge attributes + + for ( const name in attributes ) { + + const mergedAttribute = mergeAttributes( attributes[ name ] ); + + if ( ! mergedAttribute ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the ' + name + ' attribute.' ); + return null; + + } + + mergedGeometry.setAttribute( name, mergedAttribute ); + + } + + // merge morph attributes + + for ( const name in morphAttributes ) { + + const numMorphTargets = morphAttributes[ name ][ 0 ].length; + + if ( numMorphTargets === 0 ) break; + + mergedGeometry.morphAttributes = mergedGeometry.morphAttributes || {}; + mergedGeometry.morphAttributes[ name ] = []; + + for ( let i = 0; i < numMorphTargets; ++ i ) { + + const morphAttributesToMerge = []; + + for ( let j = 0; j < morphAttributes[ name ].length; ++ j ) { + + morphAttributesToMerge.push( morphAttributes[ name ][ j ][ i ] ); + + } + + const mergedMorphAttribute = mergeAttributes( morphAttributesToMerge ); + + if ( ! mergedMorphAttribute ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the ' + name + ' morphAttribute.' ); + return null; + + } + + mergedGeometry.morphAttributes[ name ].push( mergedMorphAttribute ); + + } + + } + + return mergedGeometry; + +} + +/** + * Merges a set of attributes into a single instance. All attributes must have compatible properties and types. + * Instances of {@link InterleavedBufferAttribute} are not supported. + * + * @param {Array} attributes - The attributes to merge. + * @return {?BufferAttribute} The merged attribute. Returns `null` if the merge does not succeed. + */ +function mergeAttributes( attributes ) { + + let TypedArray; + let itemSize; + let normalized; + let gpuType = - 1; + let arrayLength = 0; + + for ( let i = 0; i < attributes.length; ++ i ) { + + const attribute = attributes[ i ]; + + if ( TypedArray === undefined ) TypedArray = attribute.array.constructor; + if ( TypedArray !== attribute.array.constructor ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes.' ); + return null; + + } + + if ( itemSize === undefined ) itemSize = attribute.itemSize; + if ( itemSize !== attribute.itemSize ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes.' ); + return null; + + } + + if ( normalized === undefined ) normalized = attribute.normalized; + if ( normalized !== attribute.normalized ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes.' ); + return null; + + } + + if ( gpuType === - 1 ) gpuType = attribute.gpuType; + if ( gpuType !== attribute.gpuType ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes.' ); + return null; + + } + + arrayLength += attribute.count * itemSize; + + } + + const array = new TypedArray( arrayLength ); + const result = new BufferAttribute( array, itemSize, normalized ); + let offset = 0; + + for ( let i = 0; i < attributes.length; ++ i ) { + + const attribute = attributes[ i ]; + if ( attribute.isInterleavedBufferAttribute ) { + + const tupleOffset = offset / itemSize; + for ( let j = 0, l = attribute.count; j < l; j ++ ) { + + for ( let c = 0; c < itemSize; c ++ ) { + + const value = attribute.getComponent( j, c ); + result.setComponent( j + tupleOffset, c, value ); + + } + + } + + } else { + + array.set( attribute.array, offset ); + + } + + offset += attribute.count * itemSize; + + } + + if ( gpuType !== undefined ) { + + result.gpuType = gpuType; + + } + + return result; + +} + +/** + * Performs a deep clone of the given buffer attribute. + * + * @param {BufferAttribute} attribute - The attribute to clone. + * @return {BufferAttribute} The cloned attribute. + */ +function deepCloneAttribute( attribute ) { + + if ( attribute.isInstancedInterleavedBufferAttribute || attribute.isInterleavedBufferAttribute ) { + + return deinterleaveAttribute( attribute ); + + } + + if ( attribute.isInstancedBufferAttribute ) { + + return new InstancedBufferAttribute().copy( attribute ); + + } + + return new BufferAttribute().copy( attribute ); + +} + +/** + * Interleaves a set of attributes and returns a new array of corresponding attributes that share a + * single {@link InterleavedBuffer} instance. All attributes must have compatible types. + * + * @param {Array} attributes - The attributes to interleave. + * @return {Array} An array of interleaved attributes. If interleave does not succeed, the method returns `null`. + */ +function interleaveAttributes( attributes ) { + + // Interleaves the provided attributes into an InterleavedBuffer and returns + // a set of InterleavedBufferAttributes for each attribute + let TypedArray; + let arrayLength = 0; + let stride = 0; + + // calculate the length and type of the interleavedBuffer + for ( let i = 0, l = attributes.length; i < l; ++ i ) { + + const attribute = attributes[ i ]; + + if ( TypedArray === undefined ) TypedArray = attribute.array.constructor; + if ( TypedArray !== attribute.array.constructor ) { + + console.error( 'AttributeBuffers of different types cannot be interleaved' ); + return null; + + } + + arrayLength += attribute.array.length; + stride += attribute.itemSize; + + } + + // Create the set of buffer attributes + const interleavedBuffer = new InterleavedBuffer( new TypedArray( arrayLength ), stride ); + let offset = 0; + const res = []; + const getters = [ 'getX', 'getY', 'getZ', 'getW' ]; + const setters = [ 'setX', 'setY', 'setZ', 'setW' ]; + + for ( let j = 0, l = attributes.length; j < l; j ++ ) { + + const attribute = attributes[ j ]; + const itemSize = attribute.itemSize; + const count = attribute.count; + const iba = new InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, attribute.normalized ); + res.push( iba ); + + offset += itemSize; + + // Move the data for each attribute into the new interleavedBuffer + // at the appropriate offset + for ( let c = 0; c < count; c ++ ) { + + for ( let k = 0; k < itemSize; k ++ ) { + + iba[ setters[ k ] ]( c, attribute[ getters[ k ] ]( c ) ); + + } + + } + + } + + return res; + +} + +/** + * Returns a new, non-interleaved version of the given attribute. + * + * @param {InterleavedBufferAttribute} attribute - The interleaved attribute. + * @return {BufferAttribute} The non-interleaved attribute. + */ +function deinterleaveAttribute( attribute ) { + + const cons = attribute.data.array.constructor; + const count = attribute.count; + const itemSize = attribute.itemSize; + const normalized = attribute.normalized; + + const array = new cons( count * itemSize ); + let newAttribute; + if ( attribute.isInstancedInterleavedBufferAttribute ) { + + newAttribute = new InstancedBufferAttribute( array, itemSize, normalized, attribute.meshPerAttribute ); + + } else { + + newAttribute = new BufferAttribute( array, itemSize, normalized ); + + } + + for ( let i = 0; i < count; i ++ ) { + + newAttribute.setX( i, attribute.getX( i ) ); + + if ( itemSize >= 2 ) { + + newAttribute.setY( i, attribute.getY( i ) ); + + } + + if ( itemSize >= 3 ) { + + newAttribute.setZ( i, attribute.getZ( i ) ); + + } + + if ( itemSize >= 4 ) { + + newAttribute.setW( i, attribute.getW( i ) ); + + } + + } + + return newAttribute; + +} + +/** + * Deinterleaves all attributes on the given geometry. + * + * @param {BufferGeometry} geometry - The geometry to deinterleave. + */ +function deinterleaveGeometry( geometry ) { + + const attributes = geometry.attributes; + const morphTargets = geometry.morphTargets; + const attrMap = new Map(); + + for ( const key in attributes ) { + + const attr = attributes[ key ]; + if ( attr.isInterleavedBufferAttribute ) { + + if ( ! attrMap.has( attr ) ) { + + attrMap.set( attr, deinterleaveAttribute( attr ) ); + + } + + attributes[ key ] = attrMap.get( attr ); + + } + + } + + for ( const key in morphTargets ) { + + const attr = morphTargets[ key ]; + if ( attr.isInterleavedBufferAttribute ) { + + if ( ! attrMap.has( attr ) ) { + + attrMap.set( attr, deinterleaveAttribute( attr ) ); + + } + + morphTargets[ key ] = attrMap.get( attr ); + + } + + } + +} + +/** + * Returns the amount of bytes used by all attributes to represent the geometry. + * + * @param {BufferGeometry} geometry - The geometry. + * @return {number} The estimate bytes used. + */ +function estimateBytesUsed( geometry ) { + + // Return the estimated memory used by this geometry in bytes + // Calculate using itemSize, count, and BYTES_PER_ELEMENT to account + // for InterleavedBufferAttributes. + let mem = 0; + for ( const name in geometry.attributes ) { + + const attr = geometry.getAttribute( name ); + mem += attr.count * attr.itemSize * attr.array.BYTES_PER_ELEMENT; + + } + + const indices = geometry.getIndex(); + mem += indices ? indices.count * indices.itemSize * indices.array.BYTES_PER_ELEMENT : 0; + return mem; + +} + +/** + * Returns a new geometry with vertices for which all similar vertex attributes (within tolerance) are merged. + * + * @param {BufferGeometry} geometry - The geometry to merge vertices for. + * @param {number} [tolerance=1e-4] - The tolerance value. + * @return {BufferGeometry} - The new geometry with merged vertices. + */ +function mergeVertices( geometry, tolerance = 1e-4 ) { + + tolerance = Math.max( tolerance, Number.EPSILON ); + + // Generate an index buffer if the geometry doesn't have one, or optimize it + // if it's already available. + const hashToIndex = {}; + const indices = geometry.getIndex(); + const positions = geometry.getAttribute( 'position' ); + const vertexCount = indices ? indices.count : positions.count; + + // next value for triangle indices + let nextIndex = 0; + + // attributes and new attribute arrays + const attributeNames = Object.keys( geometry.attributes ); + const tmpAttributes = {}; + const tmpMorphAttributes = {}; + const newIndices = []; + const getters = [ 'getX', 'getY', 'getZ', 'getW' ]; + const setters = [ 'setX', 'setY', 'setZ', 'setW' ]; + + // Initialize the arrays, allocating space conservatively. Extra + // space will be trimmed in the last step. + for ( let i = 0, l = attributeNames.length; i < l; i ++ ) { + + const name = attributeNames[ i ]; + const attr = geometry.attributes[ name ]; + + tmpAttributes[ name ] = new attr.constructor( + new attr.array.constructor( attr.count * attr.itemSize ), + attr.itemSize, + attr.normalized + ); + + const morphAttributes = geometry.morphAttributes[ name ]; + if ( morphAttributes ) { + + if ( ! tmpMorphAttributes[ name ] ) tmpMorphAttributes[ name ] = []; + morphAttributes.forEach( ( morphAttr, i ) => { + + const array = new morphAttr.array.constructor( morphAttr.count * morphAttr.itemSize ); + tmpMorphAttributes[ name ][ i ] = new morphAttr.constructor( array, morphAttr.itemSize, morphAttr.normalized ); + + } ); + + } + + } + + // convert the error tolerance to an amount of decimal places to truncate to + const halfTolerance = tolerance * 0.5; + const exponent = Math.log10( 1 / tolerance ); + const hashMultiplier = Math.pow( 10, exponent ); + const hashAdditive = halfTolerance * hashMultiplier; + for ( let i = 0; i < vertexCount; i ++ ) { + + const index = indices ? indices.getX( i ) : i; + + // Generate a hash for the vertex attributes at the current index 'i' + let hash = ''; + for ( let j = 0, l = attributeNames.length; j < l; j ++ ) { + + const name = attributeNames[ j ]; + const attribute = geometry.getAttribute( name ); + const itemSize = attribute.itemSize; + + for ( let k = 0; k < itemSize; k ++ ) { + + // double tilde truncates the decimal value + hash += `${ ~ ~ ( attribute[ getters[ k ] ]( index ) * hashMultiplier + hashAdditive ) },`; + + } + + } + + // Add another reference to the vertex if it's already + // used by another index + if ( hash in hashToIndex ) { + + newIndices.push( hashToIndex[ hash ] ); + + } else { + + // copy data to the new index in the temporary attributes + for ( let j = 0, l = attributeNames.length; j < l; j ++ ) { + + const name = attributeNames[ j ]; + const attribute = geometry.getAttribute( name ); + const morphAttributes = geometry.morphAttributes[ name ]; + const itemSize = attribute.itemSize; + const newArray = tmpAttributes[ name ]; + const newMorphArrays = tmpMorphAttributes[ name ]; + + for ( let k = 0; k < itemSize; k ++ ) { + + const getterFunc = getters[ k ]; + const setterFunc = setters[ k ]; + newArray[ setterFunc ]( nextIndex, attribute[ getterFunc ]( index ) ); + + if ( morphAttributes ) { + + for ( let m = 0, ml = morphAttributes.length; m < ml; m ++ ) { + + newMorphArrays[ m ][ setterFunc ]( nextIndex, morphAttributes[ m ][ getterFunc ]( index ) ); + + } + + } + + } + + } + + hashToIndex[ hash ] = nextIndex; + newIndices.push( nextIndex ); + nextIndex ++; + + } + + } + + // generate result BufferGeometry + const result = geometry.clone(); + for ( const name in geometry.attributes ) { + + const tmpAttribute = tmpAttributes[ name ]; + + result.setAttribute( name, new tmpAttribute.constructor( + tmpAttribute.array.slice( 0, nextIndex * tmpAttribute.itemSize ), + tmpAttribute.itemSize, + tmpAttribute.normalized, + ) ); + + if ( ! ( name in tmpMorphAttributes ) ) continue; + + for ( let j = 0; j < tmpMorphAttributes[ name ].length; j ++ ) { + + const tmpMorphAttribute = tmpMorphAttributes[ name ][ j ]; + + result.morphAttributes[ name ][ j ] = new tmpMorphAttribute.constructor( + tmpMorphAttribute.array.slice( 0, nextIndex * tmpMorphAttribute.itemSize ), + tmpMorphAttribute.itemSize, + tmpMorphAttribute.normalized, + ); + + } + + } + + // indices + + result.setIndex( newIndices ); + + return result; + +} + +/** + * Returns a new indexed geometry based on `TrianglesDrawMode` draw mode. + * This mode corresponds to the `gl.TRIANGLES` primitive in WebGL. + * + * @param {BufferGeometry} geometry - The geometry to convert. + * @param {number} drawMode - The current draw mode. + * @return {BufferGeometry} The new geometry using `TrianglesDrawMode`. + */ +function toTrianglesDrawMode( geometry, drawMode ) { + + if ( drawMode === TrianglesDrawMode ) { + + console.warn( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.' ); + return geometry; + + } + + if ( drawMode === TriangleFanDrawMode || drawMode === TriangleStripDrawMode ) { + + let index = geometry.getIndex(); + + // generate index if not present + + if ( index === null ) { + + const indices = []; + + const position = geometry.getAttribute( 'position' ); + + if ( position !== undefined ) { + + for ( let i = 0; i < position.count; i ++ ) { + + indices.push( i ); + + } + + geometry.setIndex( indices ); + index = geometry.getIndex(); + + } else { + + console.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' ); + return geometry; + + } + + } + + // + + const numberOfTriangles = index.count - 2; + const newIndices = []; + + if ( drawMode === TriangleFanDrawMode ) { + + // gl.TRIANGLE_FAN + + for ( let i = 1; i <= numberOfTriangles; i ++ ) { + + newIndices.push( index.getX( 0 ) ); + newIndices.push( index.getX( i ) ); + newIndices.push( index.getX( i + 1 ) ); + + } + + } else { + + // gl.TRIANGLE_STRIP + + for ( let i = 0; i < numberOfTriangles; i ++ ) { + + if ( i % 2 === 0 ) { + + newIndices.push( index.getX( i ) ); + newIndices.push( index.getX( i + 1 ) ); + newIndices.push( index.getX( i + 2 ) ); + + } else { + + newIndices.push( index.getX( i + 2 ) ); + newIndices.push( index.getX( i + 1 ) ); + newIndices.push( index.getX( i ) ); + + } + + } + + } + + if ( ( newIndices.length / 3 ) !== numberOfTriangles ) { + + console.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' ); + + } + + // build final geometry + + const newGeometry = geometry.clone(); + newGeometry.setIndex( newIndices ); + newGeometry.clearGroups(); + + return newGeometry; + + } else { + + console.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:', drawMode ); + return geometry; + + } + +} + +/** + * Calculates the morphed attributes of a morphed/skinned BufferGeometry. + * + * Helpful for Raytracing or Decals (i.e. a `DecalGeometry` applied to a morphed Object with a `BufferGeometry` + * will use the original `BufferGeometry`, not the morphed/skinned one, generating an incorrect result. + * Using this function to create a shadow `Object3`D the `DecalGeometry` can be correctly generated). + * + * @param {Mesh|Line|Points} object - The 3D object to compute morph attributes for. + * @return {Object} An object with original position/normal attributes and morphed ones. + */ +function computeMorphedAttributes( object ) { + + const _vA = new Vector3(); + const _vB = new Vector3(); + const _vC = new Vector3(); + + const _tempA = new Vector3(); + const _tempB = new Vector3(); + const _tempC = new Vector3(); + + const _morphA = new Vector3(); + const _morphB = new Vector3(); + const _morphC = new Vector3(); + + function _calculateMorphedAttributeData( + object, + attribute, + morphAttribute, + morphTargetsRelative, + a, + b, + c, + modifiedAttributeArray + ) { + + _vA.fromBufferAttribute( attribute, a ); + _vB.fromBufferAttribute( attribute, b ); + _vC.fromBufferAttribute( attribute, c ); + + const morphInfluences = object.morphTargetInfluences; + + if ( morphAttribute && morphInfluences ) { + + _morphA.set( 0, 0, 0 ); + _morphB.set( 0, 0, 0 ); + _morphC.set( 0, 0, 0 ); + + for ( let i = 0, il = morphAttribute.length; i < il; i ++ ) { + + const influence = morphInfluences[ i ]; + const morph = morphAttribute[ i ]; + + if ( influence === 0 ) continue; + + _tempA.fromBufferAttribute( morph, a ); + _tempB.fromBufferAttribute( morph, b ); + _tempC.fromBufferAttribute( morph, c ); + + if ( morphTargetsRelative ) { + + _morphA.addScaledVector( _tempA, influence ); + _morphB.addScaledVector( _tempB, influence ); + _morphC.addScaledVector( _tempC, influence ); + + } else { + + _morphA.addScaledVector( _tempA.sub( _vA ), influence ); + _morphB.addScaledVector( _tempB.sub( _vB ), influence ); + _morphC.addScaledVector( _tempC.sub( _vC ), influence ); + + } + + } + + _vA.add( _morphA ); + _vB.add( _morphB ); + _vC.add( _morphC ); + + } + + if ( object.isSkinnedMesh ) { + + object.applyBoneTransform( a, _vA ); + object.applyBoneTransform( b, _vB ); + object.applyBoneTransform( c, _vC ); + + } + + modifiedAttributeArray[ a * 3 + 0 ] = _vA.x; + modifiedAttributeArray[ a * 3 + 1 ] = _vA.y; + modifiedAttributeArray[ a * 3 + 2 ] = _vA.z; + modifiedAttributeArray[ b * 3 + 0 ] = _vB.x; + modifiedAttributeArray[ b * 3 + 1 ] = _vB.y; + modifiedAttributeArray[ b * 3 + 2 ] = _vB.z; + modifiedAttributeArray[ c * 3 + 0 ] = _vC.x; + modifiedAttributeArray[ c * 3 + 1 ] = _vC.y; + modifiedAttributeArray[ c * 3 + 2 ] = _vC.z; + + } + + const geometry = object.geometry; + const material = object.material; + + let a, b, c; + const index = geometry.index; + const positionAttribute = geometry.attributes.position; + const morphPosition = geometry.morphAttributes.position; + const morphTargetsRelative = geometry.morphTargetsRelative; + const normalAttribute = geometry.attributes.normal; + const morphNormal = geometry.morphAttributes.position; + + const groups = geometry.groups; + const drawRange = geometry.drawRange; + let i, j, il, jl; + let group; + let start, end; + + const modifiedPosition = new Float32Array( positionAttribute.count * positionAttribute.itemSize ); + const modifiedNormal = new Float32Array( normalAttribute.count * normalAttribute.itemSize ); + + if ( index !== null ) { + + // indexed buffer geometry + + if ( Array.isArray( material ) ) { + + for ( i = 0, il = groups.length; i < il; i ++ ) { + + group = groups[ i ]; + + start = Math.max( group.start, drawRange.start ); + end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); + + for ( j = start, jl = end; j < jl; j += 3 ) { + + a = index.getX( j ); + b = index.getX( j + 1 ); + c = index.getX( j + 2 ); + + _calculateMorphedAttributeData( + object, + positionAttribute, + morphPosition, + morphTargetsRelative, + a, b, c, + modifiedPosition + ); + + _calculateMorphedAttributeData( + object, + normalAttribute, + morphNormal, + morphTargetsRelative, + a, b, c, + modifiedNormal + ); + + } + + } + + } else { + + start = Math.max( 0, drawRange.start ); + end = Math.min( index.count, ( drawRange.start + drawRange.count ) ); + + for ( i = start, il = end; i < il; i += 3 ) { + + a = index.getX( i ); + b = index.getX( i + 1 ); + c = index.getX( i + 2 ); + + _calculateMorphedAttributeData( + object, + positionAttribute, + morphPosition, + morphTargetsRelative, + a, b, c, + modifiedPosition + ); + + _calculateMorphedAttributeData( + object, + normalAttribute, + morphNormal, + morphTargetsRelative, + a, b, c, + modifiedNormal + ); + + } + + } + + } else { + + // non-indexed buffer geometry + + if ( Array.isArray( material ) ) { + + for ( i = 0, il = groups.length; i < il; i ++ ) { + + group = groups[ i ]; + + start = Math.max( group.start, drawRange.start ); + end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); + + for ( j = start, jl = end; j < jl; j += 3 ) { + + a = j; + b = j + 1; + c = j + 2; + + _calculateMorphedAttributeData( + object, + positionAttribute, + morphPosition, + morphTargetsRelative, + a, b, c, + modifiedPosition + ); + + _calculateMorphedAttributeData( + object, + normalAttribute, + morphNormal, + morphTargetsRelative, + a, b, c, + modifiedNormal + ); + + } + + } + + } else { + + start = Math.max( 0, drawRange.start ); + end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) ); + + for ( i = start, il = end; i < il; i += 3 ) { + + a = i; + b = i + 1; + c = i + 2; + + _calculateMorphedAttributeData( + object, + positionAttribute, + morphPosition, + morphTargetsRelative, + a, b, c, + modifiedPosition + ); + + _calculateMorphedAttributeData( + object, + normalAttribute, + morphNormal, + morphTargetsRelative, + a, b, c, + modifiedNormal + ); + + } + + } + + } + + const morphedPositionAttribute = new Float32BufferAttribute( modifiedPosition, 3 ); + const morphedNormalAttribute = new Float32BufferAttribute( modifiedNormal, 3 ); + + return { + + positionAttribute: positionAttribute, + normalAttribute: normalAttribute, + morphedPositionAttribute: morphedPositionAttribute, + morphedNormalAttribute: morphedNormalAttribute + + }; + +} + +/** + * Merges the {@link BufferGeometry#groups} for the given geometry. + * + * @param {BufferGeometry} geometry - The geometry to modify. + * @return {BufferGeometry} - The updated geometry + */ +function mergeGroups( geometry ) { + + if ( geometry.groups.length === 0 ) { + + console.warn( 'THREE.BufferGeometryUtils.mergeGroups(): No groups are defined. Nothing to merge.' ); + return geometry; + + } + + let groups = geometry.groups; + + // sort groups by material index + + groups = groups.sort( ( a, b ) => { + + if ( a.materialIndex !== b.materialIndex ) return a.materialIndex - b.materialIndex; + + return a.start - b.start; + + } ); + + // create index for non-indexed geometries + + if ( geometry.getIndex() === null ) { + + const positionAttribute = geometry.getAttribute( 'position' ); + const indices = []; + + for ( let i = 0; i < positionAttribute.count; i += 3 ) { + + indices.push( i, i + 1, i + 2 ); + + } + + geometry.setIndex( indices ); + + } + + // sort index + + const index = geometry.getIndex(); + + const newIndices = []; + + for ( let i = 0; i < groups.length; i ++ ) { + + const group = groups[ i ]; + + const groupStart = group.start; + const groupLength = groupStart + group.count; + + for ( let j = groupStart; j < groupLength; j ++ ) { + + newIndices.push( index.getX( j ) ); + + } + + } + + geometry.dispose(); // Required to force buffer recreation + geometry.setIndex( newIndices ); + + // update groups indices + + let start = 0; + + for ( let i = 0; i < groups.length; i ++ ) { + + const group = groups[ i ]; + + group.start = start; + start += group.count; + + } + + // merge groups + + let currentGroup = groups[ 0 ]; + + geometry.groups = [ currentGroup ]; + + for ( let i = 1; i < groups.length; i ++ ) { + + const group = groups[ i ]; + + if ( currentGroup.materialIndex === group.materialIndex ) { + + currentGroup.count += group.count; + + } else { + + currentGroup = group; + geometry.groups.push( currentGroup ); + + } + + } + + return geometry; + +} + +/** + * Modifies the supplied geometry if it is non-indexed, otherwise creates a new, + * non-indexed geometry. Returns the geometry with smooth normals everywhere except + * faces that meet at an angle greater than the crease angle. + * + * @param {BufferGeometry} geometry - The geometry to modify. + * @param {number} [creaseAngle=Math.PI/3] - The crease angle in radians. + * @return {BufferGeometry} - The updated geometry + */ +function toCreasedNormals( geometry, creaseAngle = Math.PI / 3 /* 60 degrees */ ) { + + const creaseDot = Math.cos( creaseAngle ); + const hashMultiplier = ( 1 + 1e-10 ) * 1e2; + + // reusable vectors + const verts = [ new Vector3(), new Vector3(), new Vector3() ]; + const tempVec1 = new Vector3(); + const tempVec2 = new Vector3(); + const tempNorm = new Vector3(); + const tempNorm2 = new Vector3(); + + // hashes a vector + function hashVertex( v ) { + + const x = ~ ~ ( v.x * hashMultiplier ); + const y = ~ ~ ( v.y * hashMultiplier ); + const z = ~ ~ ( v.z * hashMultiplier ); + return `${x},${y},${z}`; + + } + + // BufferGeometry.toNonIndexed() warns if the geometry is non-indexed + // and returns the original geometry + const resultGeometry = geometry.index ? geometry.toNonIndexed() : geometry; + const posAttr = resultGeometry.attributes.position; + const vertexMap = {}; + + // find all the normals shared by commonly located vertices + for ( let i = 0, l = posAttr.count / 3; i < l; i ++ ) { + + const i3 = 3 * i; + const a = verts[ 0 ].fromBufferAttribute( posAttr, i3 + 0 ); + const b = verts[ 1 ].fromBufferAttribute( posAttr, i3 + 1 ); + const c = verts[ 2 ].fromBufferAttribute( posAttr, i3 + 2 ); + + tempVec1.subVectors( c, b ); + tempVec2.subVectors( a, b ); + + // add the normal to the map for all vertices + const normal = new Vector3().crossVectors( tempVec1, tempVec2 ).normalize(); + for ( let n = 0; n < 3; n ++ ) { + + const vert = verts[ n ]; + const hash = hashVertex( vert ); + if ( ! ( hash in vertexMap ) ) { + + vertexMap[ hash ] = []; + + } + + vertexMap[ hash ].push( normal ); + + } + + } + + // average normals from all vertices that share a common location if they are within the + // provided crease threshold + const normalArray = new Float32Array( posAttr.count * 3 ); + const normAttr = new BufferAttribute( normalArray, 3, false ); + for ( let i = 0, l = posAttr.count / 3; i < l; i ++ ) { + + // get the face normal for this vertex + const i3 = 3 * i; + const a = verts[ 0 ].fromBufferAttribute( posAttr, i3 + 0 ); + const b = verts[ 1 ].fromBufferAttribute( posAttr, i3 + 1 ); + const c = verts[ 2 ].fromBufferAttribute( posAttr, i3 + 2 ); + + tempVec1.subVectors( c, b ); + tempVec2.subVectors( a, b ); + + tempNorm.crossVectors( tempVec1, tempVec2 ).normalize(); + + // average all normals that meet the threshold and set the normal value + for ( let n = 0; n < 3; n ++ ) { + + const vert = verts[ n ]; + const hash = hashVertex( vert ); + const otherNormals = vertexMap[ hash ]; + tempNorm2.set( 0, 0, 0 ); + + for ( let k = 0, lk = otherNormals.length; k < lk; k ++ ) { + + const otherNorm = otherNormals[ k ]; + if ( tempNorm.dot( otherNorm ) > creaseDot ) { + + tempNorm2.add( otherNorm ); + + } + + } + + tempNorm2.normalize(); + normAttr.setXYZ( i3 + n, tempNorm2.x, tempNorm2.y, tempNorm2.z ); + + } + + } + + resultGeometry.setAttribute( 'normal', normAttr ); + return resultGeometry; + +} + +export { + computeMikkTSpaceTangents, + mergeGeometries, + mergeAttributes, + deepCloneAttribute, + deinterleaveAttribute, + deinterleaveGeometry, + interleaveAttributes, + estimateBytesUsed, + mergeVertices, + toTrianglesDrawMode, + computeMorphedAttributes, + mergeGroups, + toCreasedNormals +}; diff --git a/web/vendor/addons/utils/SkeletonUtils.js b/web/vendor/addons/utils/SkeletonUtils.js new file mode 100644 index 0000000..e208c74 --- /dev/null +++ b/web/vendor/addons/utils/SkeletonUtils.js @@ -0,0 +1,490 @@ +import { + AnimationClip, + AnimationMixer, + Matrix4, + Quaternion, + QuaternionKeyframeTrack, + SkeletonHelper, + Vector3, + VectorKeyframeTrack +} from 'three'; + +/** + * @module SkeletonUtils + * @three_import import * as SkeletonUtils from 'three/addons/utils/SkeletonUtils.js'; + */ + +function getBoneName( bone, options ) { + + if ( options.getBoneName !== undefined ) { + + return options.getBoneName( bone ); + + } + + return options.names[ bone.name ]; + +} + +/** + * Retargets the skeleton from the given source 3D object to the + * target 3D object. + * + * @param {Object3D} target - The target 3D object. + * @param {Object3D} source - The source 3D object. + * @param {module:SkeletonUtils~RetargetOptions} options - The options. + */ +function retarget( target, source, options = {} ) { + + const quat = new Quaternion(), + scale = new Vector3(), + relativeMatrix = new Matrix4(), + globalMatrix = new Matrix4(); + + options.preserveBoneMatrix = options.preserveBoneMatrix !== undefined ? options.preserveBoneMatrix : true; + options.preserveBonePositions = options.preserveBonePositions !== undefined ? options.preserveBonePositions : true; + options.useTargetMatrix = options.useTargetMatrix !== undefined ? options.useTargetMatrix : false; + options.hip = options.hip !== undefined ? options.hip : 'hip'; + options.hipInfluence = options.hipInfluence !== undefined ? options.hipInfluence : new Vector3( 1, 1, 1 ); + options.scale = options.scale !== undefined ? options.scale : 1; + options.names = options.names || {}; + + const sourceBones = source.isObject3D ? source.skeleton.bones : getBones( source ), + bones = target.isObject3D ? target.skeleton.bones : getBones( target ); + + let bone, name, boneTo, + bonesPosition; + + // reset bones + + if ( target.isObject3D ) { + + target.skeleton.pose(); + + } else { + + options.useTargetMatrix = true; + options.preserveBoneMatrix = false; + + } + + if ( options.preserveBonePositions ) { + + bonesPosition = []; + + for ( let i = 0; i < bones.length; i ++ ) { + + bonesPosition.push( bones[ i ].position.clone() ); + + } + + } + + if ( options.preserveBoneMatrix ) { + + // reset matrix + + target.updateMatrixWorld(); + + target.matrixWorld.identity(); + + // reset children matrix + + for ( let i = 0; i < target.children.length; ++ i ) { + + target.children[ i ].updateMatrixWorld( true ); + + } + + } + + for ( let i = 0; i < bones.length; ++ i ) { + + bone = bones[ i ]; + name = getBoneName( bone, options ); + + boneTo = getBoneByName( name, sourceBones ); + + globalMatrix.copy( bone.matrixWorld ); + + if ( boneTo ) { + + boneTo.updateMatrixWorld(); + + if ( options.useTargetMatrix ) { + + relativeMatrix.copy( boneTo.matrixWorld ); + + } else { + + relativeMatrix.copy( target.matrixWorld ).invert(); + relativeMatrix.multiply( boneTo.matrixWorld ); + + } + + // ignore scale to extract rotation + + scale.setFromMatrixScale( relativeMatrix ); + relativeMatrix.scale( scale.set( 1 / scale.x, 1 / scale.y, 1 / scale.z ) ); + + // apply to global matrix + + globalMatrix.makeRotationFromQuaternion( quat.setFromRotationMatrix( relativeMatrix ) ); + + if ( target.isObject3D ) { + + if ( options.localOffsets ) { + + if ( options.localOffsets[ bone.name ] ) { + + globalMatrix.multiply( options.localOffsets[ bone.name ] ); + + } + + } + + } + + globalMatrix.copyPosition( relativeMatrix ); + + } + + if ( name === options.hip ) { + + globalMatrix.elements[ 12 ] *= options.scale * options.hipInfluence.x; + globalMatrix.elements[ 13 ] *= options.scale * options.hipInfluence.y; + globalMatrix.elements[ 14 ] *= options.scale * options.hipInfluence.z; + + if ( options.hipPosition !== undefined ) { + + globalMatrix.elements[ 12 ] += options.hipPosition.x * options.scale; + globalMatrix.elements[ 13 ] += options.hipPosition.y * options.scale; + globalMatrix.elements[ 14 ] += options.hipPosition.z * options.scale; + + } + + } + + if ( bone.parent ) { + + bone.matrix.copy( bone.parent.matrixWorld ).invert(); + bone.matrix.multiply( globalMatrix ); + + } else { + + bone.matrix.copy( globalMatrix ); + + } + + bone.matrix.decompose( bone.position, bone.quaternion, bone.scale ); + + bone.updateMatrixWorld(); + + } + + if ( options.preserveBonePositions ) { + + for ( let i = 0; i < bones.length; ++ i ) { + + bone = bones[ i ]; + name = getBoneName( bone, options ) || bone.name; + + if ( name !== options.hip ) { + + bone.position.copy( bonesPosition[ i ] ); + + } + + } + + } + + if ( options.preserveBoneMatrix ) { + + // restore matrix + + target.updateMatrixWorld( true ); + + } + +} + +/** + * Retargets the animation clip of the source object to the + * target 3D object. + * + * @param {Object3D} target - The target 3D object. + * @param {Object3D} source - The source 3D object. + * @param {AnimationClip} clip - The animation clip. + * @param {module:SkeletonUtils~RetargetOptions} options - The options. + * @return {AnimationClip} The retargeted animation clip. + */ +function retargetClip( target, source, clip, options = {} ) { + + options.useFirstFramePosition = options.useFirstFramePosition !== undefined ? options.useFirstFramePosition : false; + + // Calculate the fps from the source clip based on the track with the most frames, unless fps is already provided. + options.fps = options.fps !== undefined ? options.fps : ( Math.max( ...clip.tracks.map( track => track.times.length ) ) / clip.duration ); + options.names = options.names || []; + + if ( ! source.isObject3D ) { + + source = getHelperFromSkeleton( source ); + + } + + const numFrames = Math.round( clip.duration * ( options.fps / 1000 ) * 1000 ), + delta = clip.duration / ( numFrames - 1 ), + convertedTracks = [], + mixer = new AnimationMixer( source ), + bones = getBones( target.skeleton ), + boneDatas = []; + + let positionOffset, + bone, boneTo, boneData, + name; + + mixer.clipAction( clip ).play(); + + // trim + + let start = 0, end = numFrames; + + if ( options.trim !== undefined ) { + + start = Math.round( options.trim[ 0 ] * options.fps ); + end = Math.min( Math.round( options.trim[ 1 ] * options.fps ), numFrames ) - start; + + mixer.update( options.trim[ 0 ] ); + + } else { + + mixer.update( 0 ); + + } + + source.updateMatrixWorld(); + + // + + for ( let frame = 0; frame < end; ++ frame ) { + + const time = frame * delta; + + retarget( target, source, options ); + + for ( let j = 0; j < bones.length; ++ j ) { + + bone = bones[ j ]; + name = getBoneName( bone, options ) || bone.name; + boneTo = getBoneByName( name, source.skeleton ); + + if ( boneTo ) { + + boneData = boneDatas[ j ] = boneDatas[ j ] || { bone: bone }; + + if ( options.hip === name ) { + + if ( ! boneData.pos ) { + + boneData.pos = { + times: new Float32Array( end ), + values: new Float32Array( end * 3 ) + }; + + } + + if ( options.useFirstFramePosition ) { + + if ( frame === 0 ) { + + positionOffset = bone.position.clone(); + + } + + bone.position.sub( positionOffset ); + + } + + boneData.pos.times[ frame ] = time; + + bone.position.toArray( boneData.pos.values, frame * 3 ); + + } + + if ( ! boneData.quat ) { + + boneData.quat = { + times: new Float32Array( end ), + values: new Float32Array( end * 4 ) + }; + + } + + boneData.quat.times[ frame ] = time; + + bone.quaternion.toArray( boneData.quat.values, frame * 4 ); + + } + + } + + if ( frame === end - 2 ) { + + // last mixer update before final loop iteration + // make sure we do not go over or equal to clip duration + mixer.update( delta - 0.0000001 ); + + } else { + + mixer.update( delta ); + + } + + source.updateMatrixWorld(); + + } + + for ( let i = 0; i < boneDatas.length; ++ i ) { + + boneData = boneDatas[ i ]; + + if ( boneData ) { + + if ( boneData.pos ) { + + convertedTracks.push( new VectorKeyframeTrack( + '.bones[' + boneData.bone.name + '].position', + boneData.pos.times, + boneData.pos.values + ) ); + + } + + convertedTracks.push( new QuaternionKeyframeTrack( + '.bones[' + boneData.bone.name + '].quaternion', + boneData.quat.times, + boneData.quat.values + ) ); + + } + + } + + mixer.uncacheAction( clip ); + + return new AnimationClip( clip.name, - 1, convertedTracks ); + +} + +/** + * Clones the given 3D object and its descendants, ensuring that any `SkinnedMesh` instances are + * correctly associated with their bones. Bones are also cloned, and must be descendants of the + * object passed to this method. Other data, like geometries and materials, are reused by reference. + * + * @param {Object3D} source - The 3D object to clone. + * @return {Object3D} The cloned 3D object. + */ +function clone( source ) { + + const sourceLookup = new Map(); + const cloneLookup = new Map(); + + const clone = source.clone(); + + parallelTraverse( source, clone, function ( sourceNode, clonedNode ) { + + sourceLookup.set( clonedNode, sourceNode ); + cloneLookup.set( sourceNode, clonedNode ); + + } ); + + clone.traverse( function ( node ) { + + if ( ! node.isSkinnedMesh ) return; + + const clonedMesh = node; + const sourceMesh = sourceLookup.get( node ); + const sourceBones = sourceMesh.skeleton.bones; + + clonedMesh.skeleton = sourceMesh.skeleton.clone(); + clonedMesh.bindMatrix.copy( sourceMesh.bindMatrix ); + + clonedMesh.skeleton.bones = sourceBones.map( function ( bone ) { + + return cloneLookup.get( bone ); + + } ); + + clonedMesh.bind( clonedMesh.skeleton, clonedMesh.bindMatrix ); + + } ); + + return clone; + +} + +// internal helper + +function getBoneByName( name, skeleton ) { + + for ( let i = 0, bones = getBones( skeleton ); i < bones.length; i ++ ) { + + if ( name === bones[ i ].name ) + + return bones[ i ]; + + } + +} + +function getBones( skeleton ) { + + return Array.isArray( skeleton ) ? skeleton : skeleton.bones; + +} + + +function getHelperFromSkeleton( skeleton ) { + + const source = new SkeletonHelper( skeleton.bones[ 0 ] ); + source.skeleton = skeleton; + + return source; + +} + +function parallelTraverse( a, b, callback ) { + + callback( a, b ); + + for ( let i = 0; i < a.children.length; i ++ ) { + + parallelTraverse( a.children[ i ], b.children[ i ], callback ); + + } + +} + +/** + * Retarget options of `SkeletonUtils`. + * + * @typedef {Object} module:SkeletonUtils~RetargetOptions + * @property {boolean} [useFirstFramePosition=false] - Whether to use the position of the first frame or not. + * @property {number} [fps] - The FPS of the clip. + * @property {Object} [names] - A dictionary for mapping target to source bone names. + * @property {function(string):string} [getBoneName] - A function for mapping bone names. Alternative to `names`. + * @property {Array} [trim] - Whether to trim the clip or not. If set the array should hold two values for the start and end. + * @property {boolean} [preserveBoneMatrix=true] - Whether to preserve bone matrices or not. + * @property {boolean} [preserveBonePositions=true] - Whether to preserve bone positions or not. + * @property {boolean} [useTargetMatrix=false] - Whether to use the target matrix or not. + * @property {string} [hip='hip'] - The name of the source's hip bone. + * @property {Vector3} [hipInfluence=(1,1,1)] - The hip influence. + * @property {number} [scale=1] - The scale. + **/ + +export { + retarget, + retargetClip, + clone, +}; diff --git a/web/vendor/three.core.js b/web/vendor/three.core.js new file mode 100644 index 0000000..43bbc26 --- /dev/null +++ b/web/vendor/three.core.js @@ -0,0 +1,57362 @@ +/** + * @license + * Copyright 2010-2025 Three.js Authors + * SPDX-License-Identifier: MIT + */ +const REVISION = '175'; + +/** + * Represents mouse buttons and interaction types in context of controls. + * + * @type {ConstantsMouse} + * @constant + */ +const MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 }; + +/** + * Represents touch interaction types in context of controls. + * + * @type {ConstantsTouch} + * @constant + */ +const TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 }; + +/** + * Disables face culling. + * + * @type {number} + * @constant + */ +const CullFaceNone = 0; + +/** + * Culls back faces. + * + * @type {number} + * @constant + */ +const CullFaceBack = 1; + +/** + * Culls front faces. + * + * @type {number} + * @constant + */ +const CullFaceFront = 2; + +/** + * Culls both front and back faces. + * + * @type {number} + * @constant + */ +const CullFaceFrontBack = 3; + +/** + * Gives unfiltered shadow maps - fastest, but lowest quality. + * + * @type {number} + * @constant + */ +const BasicShadowMap = 0; + +/** + * Filters shadow maps using the Percentage-Closer Filtering (PCF) algorithm. + * + * @type {number} + * @constant + */ +const PCFShadowMap = 1; + +/** + * Filters shadow maps using the Percentage-Closer Filtering (PCF) algorithm with + * better soft shadows especially when using low-resolution shadow maps. + * + * @type {number} + * @constant + */ +const PCFSoftShadowMap = 2; + +/** + * Filters shadow maps using the Variance Shadow Map (VSM) algorithm. + * When using VSMShadowMap all shadow receivers will also cast shadows. + * + * @type {number} + * @constant + */ +const VSMShadowMap = 3; + +/** + * Only front faces are rendered. + * + * @type {number} + * @constant + */ +const FrontSide = 0; + +/** + * Only back faces are rendered. + * + * @type {number} + * @constant + */ +const BackSide = 1; + +/** + * Both front and back faces are rendered. + * + * @type {number} + * @constant + */ +const DoubleSide = 2; + +/** + * No blending is performed which effectively disables + * alpha transparency. + * + * @type {number} + * @constant + */ +const NoBlending = 0; + +/** + * The default blending. + * + * @type {number} + * @constant + */ +const NormalBlending = 1; + +/** + * Represents additive blending. + * + * @type {number} + * @constant + */ +const AdditiveBlending = 2; + +/** + * Represents subtractive blending. + * + * @type {number} + * @constant + */ +const SubtractiveBlending = 3; + +/** + * Represents multiply blending. + * + * @type {number} + * @constant + */ +const MultiplyBlending = 4; + +/** + * Represents custom blending. + * + * @type {number} + * @constant + */ +const CustomBlending = 5; + +/** + * A `source + destination` blending equation. + * + * @type {number} + * @constant + */ +const AddEquation = 100; + +/** + * A `source - destination` blending equation. + * + * @type {number} + * @constant + */ +const SubtractEquation = 101; + +/** + * A `destination - source` blending equation. + * + * @type {number} + * @constant + */ +const ReverseSubtractEquation = 102; + +/** + * A blend equation that uses the minimum of source and destination. + * + * @type {number} + * @constant + */ +const MinEquation = 103; + +/** + * A blend equation that uses the maximum of source and destination. + * + * @type {number} + * @constant + */ +const MaxEquation = 104; + +/** + * Multiplies all colors by `0`. + * + * @type {number} + * @constant + */ +const ZeroFactor = 200; + +/** + * Multiplies all colors by `1`. + * + * @type {number} + * @constant + */ +const OneFactor = 201; + +/** + * Multiplies all colors by the source colors. + * + * @type {number} + * @constant + */ +const SrcColorFactor = 202; + +/** + * Multiplies all colors by `1` minus each source color. + * + * @type {number} + * @constant + */ +const OneMinusSrcColorFactor = 203; + +/** + * Multiplies all colors by the source alpha value. + * + * @type {number} + * @constant + */ +const SrcAlphaFactor = 204; + +/** + * Multiplies all colors by 1 minus the source alpha value. + * + * @type {number} + * @constant + */ +const OneMinusSrcAlphaFactor = 205; + +/** + * Multiplies all colors by the destination alpha value. + * + * @type {number} + * @constant + */ +const DstAlphaFactor = 206; + +/** + * Multiplies all colors by `1` minus the destination alpha value. + * + * @type {number} + * @constant + */ +const OneMinusDstAlphaFactor = 207; + +/** + * Multiplies all colors by the destination color. + * + * @type {number} + * @constant + */ +const DstColorFactor = 208; + +/** + * Multiplies all colors by `1` minus each destination color. + * + * @type {number} + * @constant + */ +const OneMinusDstColorFactor = 209; + +/** + * Multiplies the RGB colors by the smaller of either the source alpha + * value or the value of `1` minus the destination alpha value. The alpha + * value is multiplied by `1`. + * + * @type {number} + * @constant + */ +const SrcAlphaSaturateFactor = 210; + +/** + * Multiplies all colors by a constant color. + * + * @type {number} + * @constant + */ +const ConstantColorFactor = 211; + +/** + * Multiplies all colors by `1` minus a constant color. + * + * @type {number} + * @constant + */ +const OneMinusConstantColorFactor = 212; + +/** + * Multiplies all colors by a constant alpha value. + * + * @type {number} + * @constant + */ +const ConstantAlphaFactor = 213; + +/** + * Multiplies all colors by 1 minus a constant alpha value. + * + * @type {number} + * @constant + */ +const OneMinusConstantAlphaFactor = 214; + +/** + * Never pass. + * + * @type {number} + * @constant + */ +const NeverDepth = 0; + +/** + * Always pass. + * + * @type {number} + * @constant + */ +const AlwaysDepth = 1; + +/** + * Pass if the incoming value is less than the depth buffer value. + * + * @type {number} + * @constant + */ +const LessDepth = 2; + +/** + * Pass if the incoming value is less than or equal to the depth buffer value. + * + * @type {number} + * @constant + */ +const LessEqualDepth = 3; + +/** + * Pass if the incoming value equals the depth buffer value. + * + * @type {number} + * @constant + */ +const EqualDepth = 4; + +/** + * Pass if the incoming value is greater than or equal to the depth buffer value. + * + * @type {number} + * @constant + */ +const GreaterEqualDepth = 5; + +/** + * Pass if the incoming value is greater than the depth buffer value. + * + * @type {number} + * @constant + */ +const GreaterDepth = 6; + +/** + * Pass if the incoming value is not equal to the depth buffer value. + * + * @type {number} + * @constant + */ +const NotEqualDepth = 7; + +/** + * Multiplies the environment map color with the surface color. + * + * @type {number} + * @constant + */ +const MultiplyOperation = 0; + +/** + * Uses reflectivity to blend between the two colors. + * + * @type {number} + * @constant + */ +const MixOperation = 1; + +/** + * Adds the two colors. + * + * @type {number} + * @constant + */ +const AddOperation = 2; + +/** + * No tone mapping is applied. + * + * @type {number} + * @constant + */ +const NoToneMapping = 0; + +/** + * Linear tone mapping. + * + * @type {number} + * @constant + */ +const LinearToneMapping = 1; + +/** + * Reinhard tone mapping. + * + * @type {number} + * @constant + */ +const ReinhardToneMapping = 2; + +/** + * Cineon tone mapping. + * + * @type {number} + * @constant + */ +const CineonToneMapping = 3; + +/** + * ACES Filmic tone mapping. + * + * @type {number} + * @constant + */ +const ACESFilmicToneMapping = 4; + +/** + * Custom tone mapping. + * + * Expects a custom implementation by modifying shader code of the material's fragment shader. + * + * @type {number} + * @constant + */ +const CustomToneMapping = 5; + +/** + * AgX tone mapping. + * + * @type {number} + * @constant + */ +const AgXToneMapping = 6; + +/** + * Neutral tone mapping. + * + * Implementation based on the Khronos 3D Commerce Group standard tone mapping. + * + * @type {number} + * @constant + */ +const NeutralToneMapping = 7; + +/** + * The skinned mesh shares the same world space as the skeleton. + * + * @type {string} + * @constant + */ +const AttachedBindMode = 'attached'; + +/** + * The skinned mesh does not share the same world space as the skeleton. + * This is useful when a skeleton is shared across multiple skinned meshes. + * + * @type {string} + * @constant + */ +const DetachedBindMode = 'detached'; + +/** + * Maps textures using the geometry's UV coordinates. + * + * @type {number} + * @constant + */ +const UVMapping = 300; + +/** + * Reflection mapping for cube textures. + * + * @type {number} + * @constant + */ +const CubeReflectionMapping = 301; + +/** + * Refraction mapping for cube textures. + * + * @type {number} + * @constant + */ +const CubeRefractionMapping = 302; + +/** + * Reflection mapping for equirectangular textures. + * + * @type {number} + * @constant + */ +const EquirectangularReflectionMapping = 303; + +/** + * Refraction mapping for equirectangular textures. + * + * @type {number} + * @constant + */ +const EquirectangularRefractionMapping = 304; + +/** + * Reflection mapping for PMREM textures. + * + * @type {number} + * @constant + */ +const CubeUVReflectionMapping = 306; + +/** + * The texture will simply repeat to infinity. + * + * @type {number} + * @constant + */ +const RepeatWrapping = 1000; + +/** + * The last pixel of the texture stretches to the edge of the mesh. + * + * @type {number} + * @constant + */ +const ClampToEdgeWrapping = 1001; + +/** + * The texture will repeats to infinity, mirroring on each repeat. + * + * @type {number} + * @constant + */ +const MirroredRepeatWrapping = 1002; + +/** + * Returns the value of the texture element that is nearest (in Manhattan distance) + * to the specified texture coordinates. + * + * @type {number} + * @constant + */ +const NearestFilter = 1003; + +/** + * Chooses the mipmap that most closely matches the size of the pixel being textured + * and uses the `NearestFilter` criterion (the texel nearest to the center of the pixel) + * to produce a texture value. + * + * @type {number} + * @constant + */ +const NearestMipmapNearestFilter = 1004; +const NearestMipMapNearestFilter = 1004; // legacy + +/** + * Chooses the two mipmaps that most closely match the size of the pixel being textured and + * uses the `NearestFilter` criterion to produce a texture value from each mipmap. + * The final texture value is a weighted average of those two values. + * + * @type {number} + * @constant + */ +const NearestMipmapLinearFilter = 1005; +const NearestMipMapLinearFilter = 1005; // legacy + +/** + * Returns the weighted average of the four texture elements that are closest to the specified + * texture coordinates, and can include items wrapped or repeated from other parts of a texture, + * depending on the values of `wrapS` and `wrapT`, and on the exact mapping. + * + * @type {number} + * @constant + */ +const LinearFilter = 1006; + +/** + * Chooses the mipmap that most closely matches the size of the pixel being textured and uses + * the `LinearFilter` criterion (a weighted average of the four texels that are closest to the + * center of the pixel) to produce a texture value. + * + * @type {number} + * @constant + */ +const LinearMipmapNearestFilter = 1007; +const LinearMipMapNearestFilter = 1007; // legacy + +/** + * Chooses the two mipmaps that most closely match the size of the pixel being textured and uses + * the `LinearFilter` criterion to produce a texture value from each mipmap. The final texture value + * is a weighted average of those two values. + * + * @type {number} + * @constant + */ +const LinearMipmapLinearFilter = 1008; +const LinearMipMapLinearFilter = 1008; // legacy + +/** + * An unsigned byte data type for textures. + * + * @type {number} + * @constant + */ +const UnsignedByteType = 1009; + +/** + * A byte data type for textures. + * + * @type {number} + * @constant + */ +const ByteType = 1010; + +/** + * A short data type for textures. + * + * @type {number} + * @constant + */ +const ShortType = 1011; + +/** + * An unsigned short data type for textures. + * + * @type {number} + * @constant + */ +const UnsignedShortType = 1012; + +/** + * An int data type for textures. + * + * @type {number} + * @constant + */ +const IntType = 1013; + +/** + * An unsigned int data type for textures. + * + * @type {number} + * @constant + */ +const UnsignedIntType = 1014; + +/** + * A float data type for textures. + * + * @type {number} + * @constant + */ +const FloatType = 1015; + +/** + * A half float data type for textures. + * + * @type {number} + * @constant + */ +const HalfFloatType = 1016; + +/** + * An unsigned short 4_4_4_4 (packed) data type for textures. + * + * @type {number} + * @constant + */ +const UnsignedShort4444Type = 1017; + +/** + * An unsigned short 5_5_5_1 (packed) data type for textures. + * + * @type {number} + * @constant + */ +const UnsignedShort5551Type = 1018; + +/** + * An unsigned int 24_8 data type for textures. + * + * @type {number} + * @constant + */ +const UnsignedInt248Type = 1020; + +/** + * An unsigned int 5_9_9_9 (packed) data type for textures. + * + * @type {number} + * @constant + */ +const UnsignedInt5999Type = 35902; + +/** + * Discards the red, green and blue components and reads just the alpha component. + * + * @type {number} + * @constant + */ +const AlphaFormat = 1021; + +/** + * Discards the alpha component and reads the red, green and blue component. + * + * @type {number} + * @constant + */ +const RGBFormat = 1022; + +/** + * Reads the red, green, blue and alpha components. + * + * @type {number} + * @constant + */ +const RGBAFormat = 1023; + +/** + * reads each element as a single luminance component. This is then converted to a floating point, + * clamped to the range `[0,1]`, and then assembled into an RGBA element by placing the luminance value + * in the red, green and blue channels, and attaching 1.0 to the alpha channel. + * + * @type {number} + * @constant + */ +const LuminanceFormat = 1024; + +/** + * Reads each element as a luminance/alpha double. The same process occurs as for the `LuminanceFormat`, + * except that the alpha channel may have values other than `1.0`. + * + * @type {number} + * @constant + */ +const LuminanceAlphaFormat = 1025; + +/** + * Reads each element as a single depth value, converts it to floating point, and clamps to the range `[0,1]`. + * + * @type {number} + * @constant + */ +const DepthFormat = 1026; + +/** + * Reads each element is a pair of depth and stencil values. The depth component of the pair is interpreted as + * in `DepthFormat`. The stencil component is interpreted based on the depth + stencil internal format. + * + * @type {number} + * @constant + */ +const DepthStencilFormat = 1027; + +/** + * Discards the green, blue and alpha components and reads just the red component. + * + * @type {number} + * @constant + */ +const RedFormat = 1028; + +/** + * Discards the green, blue and alpha components and reads just the red component. The texels are read as integers instead of floating point. + * + * @type {number} + * @constant + */ +const RedIntegerFormat = 1029; + +/** + * Discards the alpha, and blue components and reads the red, and green components. + * + * @type {number} + * @constant + */ +const RGFormat = 1030; + +/** + * Discards the alpha, and blue components and reads the red, and green components. The texels are read as integers instead of floating point. + * + * @type {number} + * @constant + */ +const RGIntegerFormat = 1031; + +/** + * Discards the alpha component and reads the red, green and blue component. The texels are read as integers instead of floating point. + * + * @type {number} + * @constant + */ +const RGBIntegerFormat = 1032; + +/** + * Reads the red, green, blue and alpha components. The texels are read as integers instead of floating point. + * + * @type {number} + * @constant + */ +const RGBAIntegerFormat = 1033; + +/** + * A DXT1-compressed image in an RGB image format. + * + * @type {number} + * @constant + */ +const RGB_S3TC_DXT1_Format = 33776; + +/** + * A DXT1-compressed image in an RGB image format with a simple on/off alpha value. + * + * @type {number} + * @constant + */ +const RGBA_S3TC_DXT1_Format = 33777; + +/** + * A DXT3-compressed image in an RGBA image format. Compared to a 32-bit RGBA texture, it offers 4:1 compression. + * + * @type {number} + * @constant + */ +const RGBA_S3TC_DXT3_Format = 33778; + +/** + * A DXT5-compressed image in an RGBA image format. It also provides a 4:1 compression, but differs to the DXT3 + * compression in how the alpha compression is done. + * + * @type {number} + * @constant + */ +const RGBA_S3TC_DXT5_Format = 33779; + +/** + * PVRTC RGB compression in 4-bit mode. One block for each 4×4 pixels. + * + * @type {number} + * @constant + */ +const RGB_PVRTC_4BPPV1_Format = 35840; + +/** + * PVRTC RGB compression in 2-bit mode. One block for each 8×4 pixels. + * + * @type {number} + * @constant + */ +const RGB_PVRTC_2BPPV1_Format = 35841; + +/** + * PVRTC RGBA compression in 4-bit mode. One block for each 4×4 pixels. + * + * @type {number} + * @constant + */ +const RGBA_PVRTC_4BPPV1_Format = 35842; + +/** + * PVRTC RGBA compression in 2-bit mode. One block for each 8×4 pixels. + * + * @type {number} + * @constant + */ +const RGBA_PVRTC_2BPPV1_Format = 35843; + +/** + * ETC1 RGB format. + * + * @type {number} + * @constant + */ +const RGB_ETC1_Format = 36196; + +/** + * ETC2 RGB format. + * + * @type {number} + * @constant + */ +const RGB_ETC2_Format = 37492; + +/** + * ETC2 RGBA format. + * + * @type {number} + * @constant + */ +const RGBA_ETC2_EAC_Format = 37496; + +/** + * ASTC RGBA 4x4 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_4x4_Format = 37808; + +/** + * ASTC RGBA 5x4 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_5x4_Format = 37809; + +/** + * ASTC RGBA 5x5 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_5x5_Format = 37810; + +/** + * ASTC RGBA 6x5 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_6x5_Format = 37811; + +/** + * ASTC RGBA 6x6 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_6x6_Format = 37812; + +/** + * ASTC RGBA 8x5 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_8x5_Format = 37813; + +/** + * ASTC RGBA 8x6 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_8x6_Format = 37814; + +/** + * ASTC RGBA 8x8 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_8x8_Format = 37815; + +/** + * ASTC RGBA 10x5 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_10x5_Format = 37816; + +/** + * ASTC RGBA 10x6 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_10x6_Format = 37817; + +/** + * ASTC RGBA 10x8 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_10x8_Format = 37818; + +/** + * ASTC RGBA 10x10 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_10x10_Format = 37819; + +/** + * ASTC RGBA 12x10 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_12x10_Format = 37820; + +/** + * ASTC RGBA 12x12 format. + * + * @type {number} + * @constant + */ +const RGBA_ASTC_12x12_Format = 37821; + +/** + * BPTC RGBA format. + * + * @type {number} + * @constant + */ +const RGBA_BPTC_Format = 36492; + +/** + * BPTC Signed RGB format. + * + * @type {number} + * @constant + */ +const RGB_BPTC_SIGNED_Format = 36494; + +/** + * BPTC Unsigned RGB format. + * + * @type {number} + * @constant + */ +const RGB_BPTC_UNSIGNED_Format = 36495; + +/** + * RGTC1 Red format. + * + * @type {number} + * @constant + */ +const RED_RGTC1_Format = 36283; + +/** + * RGTC1 Signed Red format. + * + * @type {number} + * @constant + */ +const SIGNED_RED_RGTC1_Format = 36284; + +/** + * RGTC2 Red Green format. + * + * @type {number} + * @constant + */ +const RED_GREEN_RGTC2_Format = 36285; + +/** + * RGTC2 Signed Red Green format. + * + * @type {number} + * @constant + */ +const SIGNED_RED_GREEN_RGTC2_Format = 36286; + +/** + * Animations are played once. + * + * @type {number} + * @constant + */ +const LoopOnce = 2200; + +/** + * Animations are played with a chosen number of repetitions, each time jumping from + * the end of the clip directly to its beginning. + * + * @type {number} + * @constant + */ +const LoopRepeat = 2201; + +/** + * Animations are played with a chosen number of repetitions, alternately playing forward + * and backward. + * + * @type {number} + * @constant + */ +const LoopPingPong = 2202; + +/** + * Discrete interpolation mode for keyframe tracks. + * + * @type {number} + * @constant + */ +const InterpolateDiscrete = 2300; + +/** + * Linear interpolation mode for keyframe tracks. + * + * @type {number} + * @constant + */ +const InterpolateLinear = 2301; + +/** + * Smooth interpolation mode for keyframe tracks. + * + * @type {number} + * @constant + */ +const InterpolateSmooth = 2302; + +/** + * Zero curvature ending for animations. + * + * @type {number} + * @constant + */ +const ZeroCurvatureEnding = 2400; + +/** + * Zero slope ending for animations. + * + * @type {number} + * @constant + */ +const ZeroSlopeEnding = 2401; + +/** + * Wrap around ending for animations. + * + * @type {number} + * @constant + */ +const WrapAroundEnding = 2402; + +/** + * Default animation blend mode. + * + * @type {number} + * @constant + */ +const NormalAnimationBlendMode = 2500; + +/** + * Additive animation blend mode. Can be used to layer motions on top of + * each other to build complex performances from smaller re-usable assets. + * + * @type {number} + * @constant + */ +const AdditiveAnimationBlendMode = 2501; + +/** + * For every three vertices draw a single triangle. + * + * @type {number} + * @constant + */ +const TrianglesDrawMode = 0; + +/** + * For each vertex draw a triangle from the last three vertices. + * + * @type {number} + * @constant + */ +const TriangleStripDrawMode = 1; + +/** + * For each vertex draw a triangle from the first vertex and the last two vertices. + * + * @type {number} + * @constant + */ +const TriangleFanDrawMode = 2; + +/** + * Basic depth packing. + * + * @type {number} + * @constant + */ +const BasicDepthPacking = 3200; + +/** + * A depth value is packed into 32 bit RGBA. + * + * @type {number} + * @constant + */ +const RGBADepthPacking = 3201; + +/** + * A depth value is packed into 24 bit RGB. + * + * @type {number} + * @constant + */ +const RGBDepthPacking = 3202; + +/** + * A depth value is packed into 16 bit RG. + * + * @type {number} + * @constant + */ +const RGDepthPacking = 3203; + +/** + * Normal information is relative to the underlying surface. + * + * @type {number} + * @constant + */ +const TangentSpaceNormalMap = 0; + +/** + * Normal information is relative to the object orientation. + * + * @type {number} + * @constant + */ +const ObjectSpaceNormalMap = 1; + +// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available. + +/** + * No color space. + * + * @type {string} + * @constant + */ +const NoColorSpace = ''; + +/** + * sRGB color space. + * + * @type {string} + * @constant + */ +const SRGBColorSpace = 'srgb'; + +/** + * sRGB-linear color space. + * + * @type {string} + * @constant + */ +const LinearSRGBColorSpace = 'srgb-linear'; + +/** + * Linear transfer function. + * + * @type {string} + * @constant + */ +const LinearTransfer = 'linear'; + +/** + * sRGB transfer function. + * + * @type {string} + * @constant + */ +const SRGBTransfer = 'srgb'; + +/** + * Sets the stencil buffer value to `0`. + * + * @type {number} + * @constant + */ +const ZeroStencilOp = 0; + +/** + * Keeps the current value. + * + * @type {number} + * @constant + */ +const KeepStencilOp = 7680; + +/** + * Sets the stencil buffer value to the specified reference value. + * + * @type {number} + * @constant + */ +const ReplaceStencilOp = 7681; + +/** + * Increments the current stencil buffer value. Clamps to the maximum representable unsigned value. + * + * @type {number} + * @constant + */ +const IncrementStencilOp = 7682; + +/** + * Decrements the current stencil buffer value. Clamps to `0`. + * + * @type {number} + * @constant + */ +const DecrementStencilOp = 7683; + +/** + * Increments the current stencil buffer value. Wraps stencil buffer value to zero when incrementing + * the maximum representable unsigned value. + * + * @type {number} + * @constant + */ +const IncrementWrapStencilOp = 34055; + +/** + * Decrements the current stencil buffer value. Wraps stencil buffer value to the maximum representable + * unsigned value when decrementing a stencil buffer value of `0`. + * + * @type {number} + * @constant + */ +const DecrementWrapStencilOp = 34056; + +/** + * Inverts the current stencil buffer value bitwise. + * + * @type {number} + * @constant + */ +const InvertStencilOp = 5386; + +/** + * Will never return true. + * + * @type {number} + * @constant + */ +const NeverStencilFunc = 512; + +/** + * Will return true if the stencil reference value is less than the current stencil value. + * + * @type {number} + * @constant + */ +const LessStencilFunc = 513; + +/** + * Will return true if the stencil reference value is equal to the current stencil value. + * + * @type {number} + * @constant + */ +const EqualStencilFunc = 514; + +/** + * Will return true if the stencil reference value is less than or equal to the current stencil value. + * + * @type {number} + * @constant + */ +const LessEqualStencilFunc = 515; + +/** + * Will return true if the stencil reference value is greater than the current stencil value. + * + * @type {number} + * @constant + */ +const GreaterStencilFunc = 516; + +/** + * Will return true if the stencil reference value is not equal to the current stencil value. + * + * @type {number} + * @constant + */ +const NotEqualStencilFunc = 517; + +/** + * Will return true if the stencil reference value is greater than or equal to the current stencil value. + * + * @type {number} + * @constant + */ +const GreaterEqualStencilFunc = 518; + +/** + * Will always return true. + * + * @type {number} + * @constant + */ +const AlwaysStencilFunc = 519; + +/** + * Never pass. + * + * @type {number} + * @constant + */ +const NeverCompare = 512; + +/** + * Pass if the incoming value is less than the texture value. + * + * @type {number} + * @constant + */ +const LessCompare = 513; + +/** + * Pass if the incoming value equals the texture value. + * + * @type {number} + * @constant + */ +const EqualCompare = 514; + +/** + * Pass if the incoming value is less than or equal to the texture value. + * + * @type {number} + * @constant + */ +const LessEqualCompare = 515; + +/** + * Pass if the incoming value is greater than the texture value. + * + * @type {number} + * @constant + */ +const GreaterCompare = 516; + +/** + * Pass if the incoming value is not equal to the texture value. + * + * @type {number} + * @constant + */ +const NotEqualCompare = 517; + +/** + * Pass if the incoming value is greater than or equal to the texture value. + * + * @type {number} + * @constant + */ +const GreaterEqualCompare = 518; + +/** + * Always pass. + * + * @type {number} + * @constant + */ +const AlwaysCompare = 519; + +/** + * The contents are intended to be specified once by the application, and used many + * times as the source for drawing and image specification commands. + * + * @type {number} + * @constant + */ +const StaticDrawUsage = 35044; + +/** + * The contents are intended to be respecified repeatedly by the application, and + * used many times as the source for drawing and image specification commands. + * + * @type {number} + * @constant + */ +const DynamicDrawUsage = 35048; + +/** + * The contents are intended to be specified once by the application, and used at most + * a few times as the source for drawing and image specification commands. + * + * @type {number} + * @constant + */ +const StreamDrawUsage = 35040; + +/** + * The contents are intended to be specified once by reading data from the 3D API, and queried + * many times by the application. + * + * @type {number} + * @constant + */ +const StaticReadUsage = 35045; + +/** + * The contents are intended to be respecified repeatedly by reading data from the 3D API, and queried + * many times by the application. + * + * @type {number} + * @constant + */ +const DynamicReadUsage = 35049; + +/** + * The contents are intended to be specified once by reading data from the 3D API, and queried at most + * a few times by the application + * + * @type {number} + * @constant + */ +const StreamReadUsage = 35041; + +/** + * The contents are intended to be specified once by reading data from the 3D API, and used many times as + * the source for WebGL drawing and image specification commands. + * + * @type {number} + * @constant + */ +const StaticCopyUsage = 35046; + +/** + * The contents are intended to be respecified repeatedly by reading data from the 3D API, and used many times + * as the source for WebGL drawing and image specification commands. + * + * @type {number} + * @constant + */ +const DynamicCopyUsage = 35050; + +/** + * The contents are intended to be specified once by reading data from the 3D API, and used at most a few times + * as the source for WebGL drawing and image specification commands. + * + * @type {number} + * @constant + */ +const StreamCopyUsage = 35042; + +/** + * GLSL 1 shader code. + * + * @type {string} + * @constant + */ +const GLSL1 = '100'; + +/** + * GLSL 3 shader code. + * + * @type {string} + * @constant + */ +const GLSL3 = '300 es'; + +/** + * WebGL coordinate system. + * + * @type {number} + * @constant + */ +const WebGLCoordinateSystem = 2000; + +/** + * WebGPU coordinate system. + * + * @type {number} + * @constant + */ +const WebGPUCoordinateSystem = 2001; + +/** + * Represents the different timestamp query types. + * + * @type {ConstantsTimestampQuery} + * @constant + */ +const TimestampQuery = { + COMPUTE: 'compute', + RENDER: 'render' +}; + +/** + * This type represents mouse buttons and interaction types in context of controls. + * + * @typedef {Object} ConstantsMouse + * @property {number} MIDDLE - The left mouse button. + * @property {number} LEFT - The middle mouse button. + * @property {number} RIGHT - The right mouse button. + * @property {number} ROTATE - A rotate interaction. + * @property {number} DOLLY - A dolly interaction. + * @property {number} PAN - A pan interaction. + **/ + +/** + * This type represents touch interaction types in context of controls. + * + * @typedef {Object} ConstantsTouch + * @property {number} ROTATE - A rotate interaction. + * @property {number} PAN - A pan interaction. + * @property {number} DOLLY_PAN - The dolly-pan interaction. + * @property {number} DOLLY_ROTATE - A dolly-rotate interaction. + **/ + +/** + * This type represents the different timestamp query types. + * + * @typedef {Object} ConstantsTimestampQuery + * @property {string} COMPUTE - A `compute` timestamp query. + * @property {string} RENDER - A `render` timestamp query. + **/ + +/** + * This modules allows to dispatch event objects on custom JavaScript objects. + * + * Main repository: [eventdispatcher.js]{@link https://github.com/mrdoob/eventdispatcher.js/} + * + * Code Example: + * ```js + * class Car extends EventDispatcher { + * start() { + * this.dispatchEvent( { type: 'start', message: 'vroom vroom!' } ); + * } + *}; + * + * // Using events with the custom object + * const car = new Car(); + * car.addEventListener( 'start', function ( event ) { + * alert( event.message ); + * } ); + * + * car.start(); + * ``` + */ +class EventDispatcher { + + /** + * Adds the given event listener to the given event type. + * + * @param {string} type - The type of event to listen to. + * @param {Function} listener - The function that gets called when the event is fired. + */ + addEventListener( type, listener ) { + + if ( this._listeners === undefined ) this._listeners = {}; + + const listeners = this._listeners; + + if ( listeners[ type ] === undefined ) { + + listeners[ type ] = []; + + } + + if ( listeners[ type ].indexOf( listener ) === -1 ) { + + listeners[ type ].push( listener ); + + } + + } + + /** + * Returns `true` if the given event listener has been added to the given event type. + * + * @param {string} type - The type of event. + * @param {Function} listener - The listener to check. + * @return {boolean} Whether the given event listener has been added to the given event type. + */ + hasEventListener( type, listener ) { + + const listeners = this._listeners; + + if ( listeners === undefined ) return false; + + return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== -1; + + } + + /** + * Removes the given event listener from the given event type. + * + * @param {string} type - The type of event. + * @param {Function} listener - The listener to remove. + */ + removeEventListener( type, listener ) { + + const listeners = this._listeners; + + if ( listeners === undefined ) return; + + const listenerArray = listeners[ type ]; + + if ( listenerArray !== undefined ) { + + const index = listenerArray.indexOf( listener ); + + if ( index !== -1 ) { + + listenerArray.splice( index, 1 ); + + } + + } + + } + + /** + * Dispatches an event object. + * + * @param {Object} event - The event that gets fired. + */ + dispatchEvent( event ) { + + const listeners = this._listeners; + + if ( listeners === undefined ) return; + + const listenerArray = listeners[ event.type ]; + + if ( listenerArray !== undefined ) { + + event.target = this; + + // Make a copy, in case listeners are removed while iterating. + const array = listenerArray.slice( 0 ); + + for ( let i = 0, l = array.length; i < l; i ++ ) { + + array[ i ].call( this, event ); + + } + + event.target = null; + + } + + } + +} + +const _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ]; + +let _seed = 1234567; + + +const DEG2RAD = Math.PI / 180; +const RAD2DEG = 180 / Math.PI; + +/** + * Generate a [UUID]{@link https://en.wikipedia.org/wiki/Universally_unique_identifier} + * (universally unique identifier). + * + * @return {string} The UUID. + */ +function generateUUID() { + + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136 + + const d0 = Math.random() * 0xffffffff | 0; + const d1 = Math.random() * 0xffffffff | 0; + const d2 = Math.random() * 0xffffffff | 0; + const d3 = Math.random() * 0xffffffff | 0; + const uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' + + _lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' + + _lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] + + _lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ]; + + // .toLowerCase() here flattens concatenated strings to save heap memory space. + return uuid.toLowerCase(); + +} + +/** + * Clamps the given value between min and max. + * + * @param {number} value - The value to clamp. + * @param {number} min - The min value. + * @param {number} max - The max value. + * @return {number} The clamped value. + */ +function clamp( value, min, max ) { + + return Math.max( min, Math.min( max, value ) ); + +} + +/** + * Computes the Euclidean modulo of the given parameters that + * is `( ( n % m ) + m ) % m`. + * + * @param {number} n - The first parameter. + * @param {number} m - The second parameter. + * @return {number} The Euclidean modulo. + */ +function euclideanModulo( n, m ) { + + // https://en.wikipedia.org/wiki/Modulo_operation + + return ( ( n % m ) + m ) % m; + +} + +/** + * Performs a linear mapping from range `` to range `` + * for the given value. + * + * @param {number} x - The value to be mapped. + * @param {number} a1 - Minimum value for range A. + * @param {number} a2 - Maximum value for range A. + * @param {number} b1 - Minimum value for range B. + * @param {number} b2 - Maximum value for range B. + * @return {number} The mapped value. + */ +function mapLinear( x, a1, a2, b1, b2 ) { + + return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + +} + +/** + * Returns the percentage in the closed interval `[0, 1]` of the given value + * between the start and end point. + * + * @param {number} x - The start point + * @param {number} y - The end point. + * @param {number} value - A value between start and end. + * @return {number} The interpolation factor. + */ +function inverseLerp( x, y, value ) { + + // https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/ + + if ( x !== y ) { + + return ( value - x ) / ( y - x ); + + } else { + + return 0; + + } + +} + +/** + * Returns a value linearly interpolated from two known points based on the given interval - + * `t = 0` will return `x` and `t = 1` will return `y`. + * + * @param {number} x - The start point + * @param {number} y - The end point. + * @param {number} t - The interpolation factor in the closed interval `[0, 1]`. + * @return {number} The interpolated value. + */ +function lerp( x, y, t ) { + + return ( 1 - t ) * x + t * y; + +} + +/** + * Smoothly interpolate a number from `x` to `y` in a spring-like manner using a delta + * time to maintain frame rate independent movement. For details, see + * [Frame rate independent damping using lerp]{@link http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/}. + * + * @param {number} x - The current point. + * @param {number} y - The target point. + * @param {number} lambda - A higher lambda value will make the movement more sudden, + * and a lower value will make the movement more gradual. + * @param {number} dt - Delta time in seconds. + * @return {number} The interpolated value. + */ +function damp( x, y, lambda, dt ) { + + return lerp( x, y, 1 - Math.exp( - lambda * dt ) ); + +} + +/** + * Returns a value that alternates between `0` and the given `length` parameter. + * + * @param {number} x - The value to pingpong. + * @param {number} [length=1] - The positive value the function will pingpong to. + * @return {number} The alternated value. + */ +function pingpong( x, length = 1 ) { + + // https://www.desmos.com/calculator/vcsjnyz7x4 + + return length - Math.abs( euclideanModulo( x, length * 2 ) - length ); + +} + +/** + * Returns a value in the range `[0,1]` that represents the percentage that `x` has + * moved between `min` and `max`, but smoothed or slowed down the closer `x` is to + * the `min` and `max`. + * + * See [Smoothstep]{@link http://en.wikipedia.org/wiki/Smoothstep} for more details. + * + * @param {number} x - The value to evaluate based on its position between min and max. + * @param {number} min - The min value. Any x value below min will be `0`. + * @param {number} max - The max value. Any x value above max will be `1`. + * @return {number} The alternated value. + */ +function smoothstep( x, min, max ) { + + if ( x <= min ) return 0; + if ( x >= max ) return 1; + + x = ( x - min ) / ( max - min ); + + return x * x * ( 3 - 2 * x ); + +} + +/** + * A [variation on smoothstep]{@link https://en.wikipedia.org/wiki/Smoothstep#Variations} + * that has zero 1st and 2nd order derivatives at x=0 and x=1. + * + * @param {number} x - The value to evaluate based on its position between min and max. + * @param {number} min - The min value. Any x value below min will be `0`. + * @param {number} max - The max value. Any x value above max will be `1`. + * @return {number} The alternated value. + */ +function smootherstep( x, min, max ) { + + if ( x <= min ) return 0; + if ( x >= max ) return 1; + + x = ( x - min ) / ( max - min ); + + return x * x * x * ( x * ( x * 6 - 15 ) + 10 ); + +} + +/** + * Returns a random integer from `` interval. + * + * @param {number} low - The lower value boundary. + * @param {number} high - The upper value boundary + * @return {number} A random integer. + */ +function randInt( low, high ) { + + return low + Math.floor( Math.random() * ( high - low + 1 ) ); + +} + +/** + * Returns a random float from `` interval. + * + * @param {number} low - The lower value boundary. + * @param {number} high - The upper value boundary + * @return {number} A random float. + */ +function randFloat( low, high ) { + + return low + Math.random() * ( high - low ); + +} + +/** + * Returns a random integer from `<-range/2, range/2>` interval. + * + * @param {number} range - Defines the value range. + * @return {number} A random float. + */ +function randFloatSpread( range ) { + + return range * ( 0.5 - Math.random() ); + +} + +/** + * Returns a deterministic pseudo-random float in the interval `[0, 1]`. + * + * @param {number} [s] - The integer seed. + * @return {number} A random float. + */ +function seededRandom( s ) { + + if ( s !== undefined ) _seed = s; + + // Mulberry32 generator + + let t = _seed += 0x6D2B79F5; + + t = Math.imul( t ^ t >>> 15, t | 1 ); + + t ^= t + Math.imul( t ^ t >>> 7, t | 61 ); + + return ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296; + +} + +/** + * Converts degrees to radians. + * + * @param {number} degrees - A value in degrees. + * @return {number} The converted value in radians. + */ +function degToRad( degrees ) { + + return degrees * DEG2RAD; + +} + +/** + * Converts radians to degrees. + * + * @param {number} radians - A value in radians. + * @return {number} The converted value in degrees. + */ +function radToDeg( radians ) { + + return radians * RAD2DEG; + +} + +/** + * Returns `true` if the given number is a power of two. + * + * @param {number} value - The value to check. + * @return {boolean} Whether the given number is a power of two or not. + */ +function isPowerOfTwo( value ) { + + return ( value & ( value - 1 ) ) === 0 && value !== 0; + +} + +/** + * Returns the smallest power of two that is greater than or equal to the given number. + * + * @param {number} value - The value to find a POT for. + * @return {number} The smallest power of two that is greater than or equal to the given number. + */ +function ceilPowerOfTwo( value ) { + + return Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) ); + +} + +/** + * Returns the largest power of two that is less than or equal to the given number. + * + * @param {number} value - The value to find a POT for. + * @return {number} The largest power of two that is less than or equal to the given number. + */ +function floorPowerOfTwo( value ) { + + return Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) ); + +} + +/** + * Sets the given quaternion from the [Intrinsic Proper Euler Angles]{@link https://en.wikipedia.org/wiki/Euler_angles} + * defined by the given angles and order. + * + * Rotations are applied to the axes in the order specified by order: + * rotation by angle `a` is applied first, then by angle `b`, then by angle `c`. + * + * @param {Quaternion} q - The quaternion to set. + * @param {number} a - The rotation applied to the first axis, in radians. + * @param {number} b - The rotation applied to the second axis, in radians. + * @param {number} c - The rotation applied to the third axis, in radians. + * @param {('XYX'|'XZX'|'YXY'|'YZY'|'ZXZ'|'ZYZ')} order - A string specifying the axes order. + */ +function setQuaternionFromProperEuler( q, a, b, c, order ) { + + const cos = Math.cos; + const sin = Math.sin; + + const c2 = cos( b / 2 ); + const s2 = sin( b / 2 ); + + const c13 = cos( ( a + c ) / 2 ); + const s13 = sin( ( a + c ) / 2 ); + + const c1_3 = cos( ( a - c ) / 2 ); + const s1_3 = sin( ( a - c ) / 2 ); + + const c3_1 = cos( ( c - a ) / 2 ); + const s3_1 = sin( ( c - a ) / 2 ); + + switch ( order ) { + + case 'XYX': + q.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 ); + break; + + case 'YZY': + q.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 ); + break; + + case 'ZXZ': + q.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 ); + break; + + case 'XZX': + q.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 ); + break; + + case 'YXY': + q.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 ); + break; + + case 'ZYZ': + q.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 ); + break; + + default: + console.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order ); + + } + +} + +/** + * Denormalizes the given value according to the given typed array. + * + * @param {number} value - The value to denormalize. + * @param {TypedArray} array - The typed array that defines the data type of the value. + * @return {number} The denormalize (float) value in the range `[0,1]`. + */ +function denormalize( value, array ) { + + switch ( array.constructor ) { + + case Float32Array: + + return value; + + case Uint32Array: + + return value / 4294967295.0; + + case Uint16Array: + + return value / 65535.0; + + case Uint8Array: + + return value / 255.0; + + case Int32Array: + + return Math.max( value / 2147483647.0, -1 ); + + case Int16Array: + + return Math.max( value / 32767.0, -1 ); + + case Int8Array: + + return Math.max( value / 127.0, -1 ); + + default: + + throw new Error( 'Invalid component type.' ); + + } + +} + +/** + * Normalizes the given value according to the given typed array. + * + * @param {number} value - The float value in the range `[0,1]` to normalize. + * @param {TypedArray} array - The typed array that defines the data type of the value. + * @return {number} The normalize value. + */ +function normalize( value, array ) { + + switch ( array.constructor ) { + + case Float32Array: + + return value; + + case Uint32Array: + + return Math.round( value * 4294967295.0 ); + + case Uint16Array: + + return Math.round( value * 65535.0 ); + + case Uint8Array: + + return Math.round( value * 255.0 ); + + case Int32Array: + + return Math.round( value * 2147483647.0 ); + + case Int16Array: + + return Math.round( value * 32767.0 ); + + case Int8Array: + + return Math.round( value * 127.0 ); + + default: + + throw new Error( 'Invalid component type.' ); + + } + +} + +/** + * @class + * @classdesc A collection of math utility functions. + * @hideconstructor + */ +const MathUtils = { + DEG2RAD: DEG2RAD, + RAD2DEG: RAD2DEG, + /** + * Generate a [UUID]{@link https://en.wikipedia.org/wiki/Universally_unique_identifier} + * (universally unique identifier). + * + * @static + * @method + * @return {string} The UUID. + */ + generateUUID: generateUUID, + /** + * Clamps the given value between min and max. + * + * @static + * @method + * @param {number} value - The value to clamp. + * @param {number} min - The min value. + * @param {number} max - The max value. + * @return {number} The clamped value. + */ + clamp: clamp, + /** + * Computes the Euclidean modulo of the given parameters that + * is `( ( n % m ) + m ) % m`. + * + * @static + * @method + * @param {number} n - The first parameter. + * @param {number} m - The second parameter. + * @return {number} The Euclidean modulo. + */ + euclideanModulo: euclideanModulo, + /** + * Performs a linear mapping from range `` to range `` + * for the given value. + * + * @static + * @method + * @param {number} x - The value to be mapped. + * @param {number} a1 - Minimum value for range A. + * @param {number} a2 - Maximum value for range A. + * @param {number} b1 - Minimum value for range B. + * @param {number} b2 - Maximum value for range B. + * @return {number} The mapped value. + */ + mapLinear: mapLinear, + /** + * Returns the percentage in the closed interval `[0, 1]` of the given value + * between the start and end point. + * + * @static + * @method + * @param {number} x - The start point + * @param {number} y - The end point. + * @param {number} value - A value between start and end. + * @return {number} The interpolation factor. + */ + inverseLerp: inverseLerp, + /** + * Returns a value linearly interpolated from two known points based on the given interval - + * `t = 0` will return `x` and `t = 1` will return `y`. + * + * @static + * @method + * @param {number} x - The start point + * @param {number} y - The end point. + * @param {number} t - The interpolation factor in the closed interval `[0, 1]`. + * @return {number} The interpolated value. + */ + lerp: lerp, + /** + * Smoothly interpolate a number from `x` to `y` in a spring-like manner using a delta + * time to maintain frame rate independent movement. For details, see + * [Frame rate independent damping using lerp]{@link http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/}. + * + * @static + * @method + * @param {number} x - The current point. + * @param {number} y - The target point. + * @param {number} lambda - A higher lambda value will make the movement more sudden, + * and a lower value will make the movement more gradual. + * @param {number} dt - Delta time in seconds. + * @return {number} The interpolated value. + */ + damp: damp, + /** + * Returns a value that alternates between `0` and the given `length` parameter. + * + * @static + * @method + * @param {number} x - The value to pingpong. + * @param {number} [length=1] - The positive value the function will pingpong to. + * @return {number} The alternated value. + */ + pingpong: pingpong, + /** + * Returns a value in the range `[0,1]` that represents the percentage that `x` has + * moved between `min` and `max`, but smoothed or slowed down the closer `x` is to + * the `min` and `max`. + * + * See [Smoothstep]{@link http://en.wikipedia.org/wiki/Smoothstep} for more details. + * + * @static + * @method + * @param {number} x - The value to evaluate based on its position between min and max. + * @param {number} min - The min value. Any x value below min will be `0`. + * @param {number} max - The max value. Any x value above max will be `1`. + * @return {number} The alternated value. + */ + smoothstep: smoothstep, + /** + * A [variation on smoothstep]{@link https://en.wikipedia.org/wiki/Smoothstep#Variations} + * that has zero 1st and 2nd order derivatives at x=0 and x=1. + * + * @static + * @method + * @param {number} x - The value to evaluate based on its position between min and max. + * @param {number} min - The min value. Any x value below min will be `0`. + * @param {number} max - The max value. Any x value above max will be `1`. + * @return {number} The alternated value. + */ + smootherstep: smootherstep, + /** + * Returns a random integer from `` interval. + * + * @static + * @method + * @param {number} low - The lower value boundary. + * @param {number} high - The upper value boundary + * @return {number} A random integer. + */ + randInt: randInt, + /** + * Returns a random float from `` interval. + * + * @static + * @method + * @param {number} low - The lower value boundary. + * @param {number} high - The upper value boundary + * @return {number} A random float. + */ + randFloat: randFloat, + /** + * Returns a random integer from `<-range/2, range/2>` interval. + * + * @static + * @method + * @param {number} range - Defines the value range. + * @return {number} A random float. + */ + randFloatSpread: randFloatSpread, + /** + * Returns a deterministic pseudo-random float in the interval `[0, 1]`. + * + * @static + * @method + * @param {number} [s] - The integer seed. + * @return {number} A random float. + */ + seededRandom: seededRandom, + /** + * Converts degrees to radians. + * + * @static + * @method + * @param {number} degrees - A value in degrees. + * @return {number} The converted value in radians. + */ + degToRad: degToRad, + /** + * Converts radians to degrees. + * + * @static + * @method + * @param {number} radians - A value in radians. + * @return {number} The converted value in degrees. + */ + radToDeg: radToDeg, + /** + * Returns `true` if the given number is a power of two. + * + * @static + * @method + * @param {number} value - The value to check. + * @return {boolean} Whether the given number is a power of two or not. + */ + isPowerOfTwo: isPowerOfTwo, + /** + * Returns the smallest power of two that is greater than or equal to the given number. + * + * @static + * @method + * @param {number} value - The value to find a POT for. + * @return {number} The smallest power of two that is greater than or equal to the given number. + */ + ceilPowerOfTwo: ceilPowerOfTwo, + /** + * Returns the largest power of two that is less than or equal to the given number. + * + * @static + * @method + * @param {number} value - The value to find a POT for. + * @return {number} The largest power of two that is less than or equal to the given number. + */ + floorPowerOfTwo: floorPowerOfTwo, + /** + * Sets the given quaternion from the [Intrinsic Proper Euler Angles]{@link https://en.wikipedia.org/wiki/Euler_angles} + * defined by the given angles and order. + * + * Rotations are applied to the axes in the order specified by order: + * rotation by angle `a` is applied first, then by angle `b`, then by angle `c`. + * + * @static + * @method + * @param {Quaternion} q - The quaternion to set. + * @param {number} a - The rotation applied to the first axis, in radians. + * @param {number} b - The rotation applied to the second axis, in radians. + * @param {number} c - The rotation applied to the third axis, in radians. + * @param {('XYX'|'XZX'|'YXY'|'YZY'|'ZXZ'|'ZYZ')} order - A string specifying the axes order. + */ + setQuaternionFromProperEuler: setQuaternionFromProperEuler, + /** + * Normalizes the given value according to the given typed array. + * + * @static + * @method + * @param {number} value - The float value in the range `[0,1]` to normalize. + * @param {TypedArray} array - The typed array that defines the data type of the value. + * @return {number} The normalize value. + */ + normalize: normalize, + /** + * Denormalizes the given value according to the given typed array. + * + * @static + * @method + * @param {number} value - The value to denormalize. + * @param {TypedArray} array - The typed array that defines the data type of the value. + * @return {number} The denormalize (float) value in the range `[0,1]`. + */ + denormalize: denormalize +}; + +/** + * Class representing a 2D vector. A 2D vector is an ordered pair of numbers + * (labeled x and y), which can be used to represent a number of things, such as: + * + * - A point in 2D space (i.e. a position on a plane). + * - A direction and length across a plane. In three.js the length will + * always be the Euclidean distance(straight-line distance) from `(0, 0)` to `(x, y)` + * and the direction is also measured from `(0, 0)` towards `(x, y)`. + * - Any arbitrary ordered pair of numbers. + * + * There are other things a 2D vector can be used to represent, such as + * momentum vectors, complex numbers and so on, however these are the most + * common uses in three.js. + * + * Iterating through a vector instance will yield its components `(x, y)` in + * the corresponding order. + * ```js + * const a = new THREE.Vector2( 0, 1 ); + * + * //no arguments; will be initialised to (0, 0) + * const b = new THREE.Vector2( ); + * + * const d = a.distanceTo( b ); + * ``` + */ +class Vector2 { + + /** + * Constructs a new 2D vector. + * + * @param {number} [x=0] - The x value of this vector. + * @param {number} [y=0] - The y value of this vector. + */ + constructor( x = 0, y = 0 ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + Vector2.prototype.isVector2 = true; + + /** + * The x value of this vector. + * + * @type {number} + */ + this.x = x; + + /** + * The y value of this vector. + * + * @type {number} + */ + this.y = y; + + } + + /** + * Alias for {@link Vector2#x}. + * + * @type {number} + */ + get width() { + + return this.x; + + } + + set width( value ) { + + this.x = value; + + } + + /** + * Alias for {@link Vector2#y}. + * + * @type {number} + */ + get height() { + + return this.y; + + } + + set height( value ) { + + this.y = value; + + } + + /** + * Sets the vector components. + * + * @param {number} x - The value of the x component. + * @param {number} y - The value of the y component. + * @return {Vector2} A reference to this vector. + */ + set( x, y ) { + + this.x = x; + this.y = y; + + return this; + + } + + /** + * Sets the vector components to the same value. + * + * @param {number} scalar - The value to set for all vector components. + * @return {Vector2} A reference to this vector. + */ + setScalar( scalar ) { + + this.x = scalar; + this.y = scalar; + + return this; + + } + + /** + * Sets the vector's x component to the given value + * + * @param {number} x - The value to set. + * @return {Vector2} A reference to this vector. + */ + setX( x ) { + + this.x = x; + + return this; + + } + + /** + * Sets the vector's y component to the given value + * + * @param {number} y - The value to set. + * @return {Vector2} A reference to this vector. + */ + setY( y ) { + + this.y = y; + + return this; + + } + + /** + * Allows to set a vector component with an index. + * + * @param {number} index - The component index. `0` equals to x, `1` equals to y. + * @param {number} value - The value to set. + * @return {Vector2} A reference to this vector. + */ + setComponent( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + } + + /** + * Returns the value of the vector component which matches the given index. + * + * @param {number} index - The component index. `0` equals to x, `1` equals to y. + * @return {number} A vector component value. + */ + getComponent( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + default: throw new Error( 'index is out of range: ' + index ); + + } + + } + + /** + * Returns a new vector with copied values from this instance. + * + * @return {Vector2} A clone of this instance. + */ + clone() { + + return new this.constructor( this.x, this.y ); + + } + + /** + * Copies the values of the given vector to this instance. + * + * @param {Vector2} v - The vector to copy. + * @return {Vector2} A reference to this vector. + */ + copy( v ) { + + this.x = v.x; + this.y = v.y; + + return this; + + } + + /** + * Adds the given vector to this instance. + * + * @param {Vector2} v - The vector to add. + * @return {Vector2} A reference to this vector. + */ + add( v ) { + + this.x += v.x; + this.y += v.y; + + return this; + + } + + /** + * Adds the given scalar value to all components of this instance. + * + * @param {number} s - The scalar to add. + * @return {Vector2} A reference to this vector. + */ + addScalar( s ) { + + this.x += s; + this.y += s; + + return this; + + } + + /** + * Adds the given vectors and stores the result in this instance. + * + * @param {Vector2} a - The first vector. + * @param {Vector2} b - The second vector. + * @return {Vector2} A reference to this vector. + */ + addVectors( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + + return this; + + } + + /** + * Adds the given vector scaled by the given factor to this instance. + * + * @param {Vector2} v - The vector. + * @param {number} s - The factor that scales `v`. + * @return {Vector2} A reference to this vector. + */ + addScaledVector( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + + return this; + + } + + /** + * Subtracts the given vector from this instance. + * + * @param {Vector2} v - The vector to subtract. + * @return {Vector2} A reference to this vector. + */ + sub( v ) { + + this.x -= v.x; + this.y -= v.y; + + return this; + + } + + /** + * Subtracts the given scalar value from all components of this instance. + * + * @param {number} s - The scalar to subtract. + * @return {Vector2} A reference to this vector. + */ + subScalar( s ) { + + this.x -= s; + this.y -= s; + + return this; + + } + + /** + * Subtracts the given vectors and stores the result in this instance. + * + * @param {Vector2} a - The first vector. + * @param {Vector2} b - The second vector. + * @return {Vector2} A reference to this vector. + */ + subVectors( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + + return this; + + } + + /** + * Multiplies the given vector with this instance. + * + * @param {Vector2} v - The vector to multiply. + * @return {Vector2} A reference to this vector. + */ + multiply( v ) { + + this.x *= v.x; + this.y *= v.y; + + return this; + + } + + /** + * Multiplies the given scalar value with all components of this instance. + * + * @param {number} scalar - The scalar to multiply. + * @return {Vector2} A reference to this vector. + */ + multiplyScalar( scalar ) { + + this.x *= scalar; + this.y *= scalar; + + return this; + + } + + /** + * Divides this instance by the given vector. + * + * @param {Vector2} v - The vector to divide. + * @return {Vector2} A reference to this vector. + */ + divide( v ) { + + this.x /= v.x; + this.y /= v.y; + + return this; + + } + + /** + * Divides this vector by the given scalar. + * + * @param {number} scalar - The scalar to divide. + * @return {Vector2} A reference to this vector. + */ + divideScalar( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + } + + /** + * Multiplies this vector (with an implicit 1 as the 3rd component) by + * the given 3x3 matrix. + * + * @param {Matrix3} m - The matrix to apply. + * @return {Vector2} A reference to this vector. + */ + applyMatrix3( m ) { + + const x = this.x, y = this.y; + const e = m.elements; + + this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ]; + this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ]; + + return this; + + } + + /** + * If this vector's x or y value is greater than the given vector's x or y + * value, replace that value with the corresponding min value. + * + * @param {Vector2} v - The vector. + * @return {Vector2} A reference to this vector. + */ + min( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + + return this; + + } + + /** + * If this vector's x or y value is less than the given vector's x or y + * value, replace that value with the corresponding max value. + * + * @param {Vector2} v - The vector. + * @return {Vector2} A reference to this vector. + */ + max( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + + return this; + + } + + /** + * If this vector's x or y value is greater than the max vector's x or y + * value, it is replaced by the corresponding value. + * If this vector's x or y value is less than the min vector's x or y value, + * it is replaced by the corresponding value. + * + * @param {Vector2} min - The minimum x and y values. + * @param {Vector2} max - The maximum x and y values in the desired range. + * @return {Vector2} A reference to this vector. + */ + clamp( min, max ) { + + // assumes min < max, componentwise + + this.x = clamp( this.x, min.x, max.x ); + this.y = clamp( this.y, min.y, max.y ); + + return this; + + } + + /** + * If this vector's x or y values are greater than the max value, they are + * replaced by the max value. + * If this vector's x or y values are less than the min value, they are + * replaced by the min value. + * + * @param {number} minVal - The minimum value the components will be clamped to. + * @param {number} maxVal - The maximum value the components will be clamped to. + * @return {Vector2} A reference to this vector. + */ + clampScalar( minVal, maxVal ) { + + this.x = clamp( this.x, minVal, maxVal ); + this.y = clamp( this.y, minVal, maxVal ); + + return this; + + } + + /** + * If this vector's length is greater than the max value, it is replaced by + * the max value. + * If this vector's length is less than the min value, it is replaced by the + * min value. + * + * @param {number} min - The minimum value the vector length will be clamped to. + * @param {number} max - The maximum value the vector length will be clamped to. + * @return {Vector2} A reference to this vector. + */ + clampLength( min, max ) { + + const length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) ); + + } + + /** + * The components of this vector are rounded down to the nearest integer value. + * + * @return {Vector2} A reference to this vector. + */ + floor() { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + + return this; + + } + + /** + * The components of this vector are rounded up to the nearest integer value. + * + * @return {Vector2} A reference to this vector. + */ + ceil() { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + + return this; + + } + + /** + * The components of this vector are rounded to the nearest integer value + * + * @return {Vector2} A reference to this vector. + */ + round() { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + + return this; + + } + + /** + * The components of this vector are rounded towards zero (up if negative, + * down if positive) to an integer value. + * + * @return {Vector2} A reference to this vector. + */ + roundToZero() { + + this.x = Math.trunc( this.x ); + this.y = Math.trunc( this.y ); + + return this; + + } + + /** + * Inverts this vector - i.e. sets x = -x and y = -y. + * + * @return {Vector2} A reference to this vector. + */ + negate() { + + this.x = - this.x; + this.y = - this.y; + + return this; + + } + + /** + * Calculates the dot product of the given vector with this instance. + * + * @param {Vector2} v - The vector to compute the dot product with. + * @return {number} The result of the dot product. + */ + dot( v ) { + + return this.x * v.x + this.y * v.y; + + } + + /** + * Calculates the cross product of the given vector with this instance. + * + * @param {Vector2} v - The vector to compute the cross product with. + * @return {number} The result of the cross product. + */ + cross( v ) { + + return this.x * v.y - this.y * v.x; + + } + + /** + * Computes the square of the Euclidean length (straight-line length) from + * (0, 0) to (x, y). If you are comparing the lengths of vectors, you should + * compare the length squared instead as it is slightly more efficient to calculate. + * + * @return {number} The square length of this vector. + */ + lengthSq() { + + return this.x * this.x + this.y * this.y; + + } + + /** + * Computes the Euclidean length (straight-line length) from (0, 0) to (x, y). + * + * @return {number} The length of this vector. + */ + length() { + + return Math.sqrt( this.x * this.x + this.y * this.y ); + + } + + /** + * Computes the Manhattan length of this vector. + * + * @return {number} The length of this vector. + */ + manhattanLength() { + + return Math.abs( this.x ) + Math.abs( this.y ); + + } + + /** + * Converts this vector to a unit vector - that is, sets it equal to a vector + * with the same direction as this one, but with a vector length of `1`. + * + * @return {Vector2} A reference to this vector. + */ + normalize() { + + return this.divideScalar( this.length() || 1 ); + + } + + /** + * Computes the angle in radians of this vector with respect to the positive x-axis. + * + * @return {number} The angle in radians. + */ + angle() { + + const angle = Math.atan2( - this.y, - this.x ) + Math.PI; + + return angle; + + } + + /** + * Returns the angle between the given vector and this instance in radians. + * + * @param {Vector2} v - The vector to compute the angle with. + * @return {number} The angle in radians. + */ + angleTo( v ) { + + const denominator = Math.sqrt( this.lengthSq() * v.lengthSq() ); + + if ( denominator === 0 ) return Math.PI / 2; + + const theta = this.dot( v ) / denominator; + + // clamp, to handle numerical problems + + return Math.acos( clamp( theta, -1, 1 ) ); + + } + + /** + * Computes the distance from the given vector to this instance. + * + * @param {Vector2} v - The vector to compute the distance to. + * @return {number} The distance. + */ + distanceTo( v ) { + + return Math.sqrt( this.distanceToSquared( v ) ); + + } + + /** + * Computes the squared distance from the given vector to this instance. + * If you are just comparing the distance with another distance, you should compare + * the distance squared instead as it is slightly more efficient to calculate. + * + * @param {Vector2} v - The vector to compute the squared distance to. + * @return {number} The squared distance. + */ + distanceToSquared( v ) { + + const dx = this.x - v.x, dy = this.y - v.y; + return dx * dx + dy * dy; + + } + + /** + * Computes the Manhattan distance from the given vector to this instance. + * + * @param {Vector2} v - The vector to compute the Manhattan distance to. + * @return {number} The Manhattan distance. + */ + manhattanDistanceTo( v ) { + + return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ); + + } + + /** + * Sets this vector to a vector with the same direction as this one, but + * with the specified length. + * + * @param {number} length - The new length of this vector. + * @return {Vector2} A reference to this vector. + */ + setLength( length ) { + + return this.normalize().multiplyScalar( length ); + + } + + /** + * Linearly interpolates between the given vector and this instance, where + * alpha is the percent distance along the line - alpha = 0 will be this + * vector, and alpha = 1 will be the given one. + * + * @param {Vector2} v - The vector to interpolate towards. + * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`. + * @return {Vector2} A reference to this vector. + */ + lerp( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + + return this; + + } + + /** + * Linearly interpolates between the given vectors, where alpha is the percent + * distance along the line - alpha = 0 will be first vector, and alpha = 1 will + * be the second one. The result is stored in this instance. + * + * @param {Vector2} v1 - The first vector. + * @param {Vector2} v2 - The second vector. + * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`. + * @return {Vector2} A reference to this vector. + */ + lerpVectors( v1, v2, alpha ) { + + this.x = v1.x + ( v2.x - v1.x ) * alpha; + this.y = v1.y + ( v2.y - v1.y ) * alpha; + + return this; + + } + + /** + * Returns `true` if this vector is equal with the given one. + * + * @param {Vector2} v - The vector to test for equality. + * @return {boolean} Whether this vector is equal with the given one. + */ + equals( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) ); + + } + + /** + * Sets this vector's x value to be `array[ offset ]` and y + * value to be `array[ offset + 1 ]`. + * + * @param {Array} array - An array holding the vector component values. + * @param {number} [offset=0] - The offset into the array. + * @return {Vector2} A reference to this vector. + */ + fromArray( array, offset = 0 ) { + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + + return this; + + } + + /** + * Writes the components of this vector to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the vector components. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The vector components. + */ + toArray( array = [], offset = 0 ) { + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + + return array; + + } + + /** + * Sets the components of this vector from the given buffer attribute. + * + * @param {BufferAttribute} attribute - The buffer attribute holding vector data. + * @param {number} index - The index into the attribute. + * @return {Vector2} A reference to this vector. + */ + fromBufferAttribute( attribute, index ) { + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + + return this; + + } + + /** + * Rotates this vector around the given center by the given angle. + * + * @param {Vector2} center - The point around which to rotate. + * @param {number} angle - The angle to rotate, in radians. + * @return {Vector2} A reference to this vector. + */ + rotateAround( center, angle ) { + + const c = Math.cos( angle ), s = Math.sin( angle ); + + const x = this.x - center.x; + const y = this.y - center.y; + + this.x = x * c - y * s + center.x; + this.y = x * s + y * c + center.y; + + return this; + + } + + /** + * Sets each component of this vector to a pseudo-random value between `0` and + * `1`, excluding `1`. + * + * @return {Vector2} A reference to this vector. + */ + random() { + + this.x = Math.random(); + this.y = Math.random(); + + return this; + + } + + *[ Symbol.iterator ]() { + + yield this.x; + yield this.y; + + } + +} + +/** + * Represents a 3x3 matrix. + * + * A Note on Row-Major and Column-Major Ordering: + * + * The constructor and {@link Matrix3#set} method take arguments in + * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order} + * order, while internally they are stored in the {@link Matrix3#elements} array in column-major order. + * This means that calling: + * ```js + * const m = new THREE.Matrix(); + * m.set( 11, 12, 13, + * 21, 22, 23, + * 31, 32, 33 ); + * ``` + * will result in the elements array containing: + * ```js + * m.elements = [ 11, 21, 31, + * 12, 22, 32, + * 13, 23, 33 ]; + * ``` + * and internally all calculations are performed using column-major ordering. + * However, as the actual ordering makes no difference mathematically and + * most people are used to thinking about matrices in row-major order, the + * three.js documentation shows matrices in row-major order. Just bear in + * mind that if you are reading the source code, you'll have to take the + * transpose of any matrices outlined here to make sense of the calculations. + */ +class Matrix3 { + + /** + * Constructs a new 3x3 matrix. The arguments are supposed to be + * in row-major order. If no arguments are provided, the constructor + * initializes the matrix as an identity matrix. + * + * @param {number} [n11] - 1-1 matrix element. + * @param {number} [n12] - 1-2 matrix element. + * @param {number} [n13] - 1-3 matrix element. + * @param {number} [n21] - 2-1 matrix element. + * @param {number} [n22] - 2-2 matrix element. + * @param {number} [n23] - 2-3 matrix element. + * @param {number} [n31] - 3-1 matrix element. + * @param {number} [n32] - 3-2 matrix element. + * @param {number} [n33] - 3-3 matrix element. + */ + constructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + Matrix3.prototype.isMatrix3 = true; + + /** + * A column-major list of matrix values. + * + * @type {Array} + */ + this.elements = [ + + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 + + ]; + + if ( n11 !== undefined ) { + + this.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 ); + + } + + } + + /** + * Sets the elements of the matrix.The arguments are supposed to be + * in row-major order. + * + * @param {number} [n11] - 1-1 matrix element. + * @param {number} [n12] - 1-2 matrix element. + * @param {number} [n13] - 1-3 matrix element. + * @param {number} [n21] - 2-1 matrix element. + * @param {number} [n22] - 2-2 matrix element. + * @param {number} [n23] - 2-3 matrix element. + * @param {number} [n31] - 3-1 matrix element. + * @param {number} [n32] - 3-2 matrix element. + * @param {number} [n33] - 3-3 matrix element. + * @return {Matrix3} A reference to this matrix. + */ + set( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) { + + const te = this.elements; + + te[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31; + te[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32; + te[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33; + + return this; + + } + + /** + * Sets this matrix to the 3x3 identity matrix. + * + * @return {Matrix3} A reference to this matrix. + */ + identity() { + + this.set( + + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 + + ); + + return this; + + } + + /** + * Copies the values of the given matrix to this instance. + * + * @param {Matrix3} m - The matrix to copy. + * @return {Matrix3} A reference to this matrix. + */ + copy( m ) { + + const te = this.elements; + const me = m.elements; + + te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; + te[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; + te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ]; + + return this; + + } + + /** + * Extracts the basis of this matrix into the three axis vectors provided. + * + * @param {Vector3} xAxis - The basis's x axis. + * @param {Vector3} yAxis - The basis's y axis. + * @param {Vector3} zAxis - The basis's z axis. + * @return {Matrix3} A reference to this matrix. + */ + extractBasis( xAxis, yAxis, zAxis ) { + + xAxis.setFromMatrix3Column( this, 0 ); + yAxis.setFromMatrix3Column( this, 1 ); + zAxis.setFromMatrix3Column( this, 2 ); + + return this; + + } + + /** + * Set this matrix to the upper 3x3 matrix of the given 4x4 matrix. + * + * @param {Matrix4} m - The 4x4 matrix. + * @return {Matrix3} A reference to this matrix. + */ + setFromMatrix4( m ) { + + const me = m.elements; + + this.set( + + me[ 0 ], me[ 4 ], me[ 8 ], + me[ 1 ], me[ 5 ], me[ 9 ], + me[ 2 ], me[ 6 ], me[ 10 ] + + ); + + return this; + + } + + /** + * Post-multiplies this matrix by the given 3x3 matrix. + * + * @param {Matrix3} m - The matrix to multiply with. + * @return {Matrix3} A reference to this matrix. + */ + multiply( m ) { + + return this.multiplyMatrices( this, m ); + + } + + /** + * Pre-multiplies this matrix by the given 3x3 matrix. + * + * @param {Matrix3} m - The matrix to multiply with. + * @return {Matrix3} A reference to this matrix. + */ + premultiply( m ) { + + return this.multiplyMatrices( m, this ); + + } + + /** + * Multiples the given 3x3 matrices and stores the result + * in this matrix. + * + * @param {Matrix3} a - The first matrix. + * @param {Matrix3} b - The second matrix. + * @return {Matrix3} A reference to this matrix. + */ + multiplyMatrices( a, b ) { + + const ae = a.elements; + const be = b.elements; + const te = this.elements; + + const a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ]; + const a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ]; + const a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ]; + + const b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ]; + const b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ]; + const b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ]; + + te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31; + te[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32; + te[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33; + + te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31; + te[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32; + te[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33; + + te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31; + te[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32; + te[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33; + + return this; + + } + + /** + * Multiplies every component of the matrix by the given scalar. + * + * @param {number} s - The scalar. + * @return {Matrix3} A reference to this matrix. + */ + multiplyScalar( s ) { + + const te = this.elements; + + te[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s; + te[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s; + te[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s; + + return this; + + } + + /** + * Computes and returns the determinant of this matrix. + * + * @return {number} The determinant. + */ + determinant() { + + const te = this.elements; + + const a = te[ 0 ], b = te[ 1 ], c = te[ 2 ], + d = te[ 3 ], e = te[ 4 ], f = te[ 5 ], + g = te[ 6 ], h = te[ 7 ], i = te[ 8 ]; + + return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g; + + } + + /** + * Inverts this matrix, using the [analytic method]{@link https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution}. + * You can not invert with a determinant of zero. If you attempt this, the method produces + * a zero matrix instead. + * + * @return {Matrix3} A reference to this matrix. + */ + invert() { + + const te = this.elements, + + n11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], + n12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ], + n13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ], + + t11 = n33 * n22 - n32 * n23, + t12 = n32 * n13 - n33 * n12, + t13 = n23 * n12 - n22 * n13, + + det = n11 * t11 + n21 * t12 + n31 * t13; + + if ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 ); + + const detInv = 1 / det; + + te[ 0 ] = t11 * detInv; + te[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv; + te[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv; + + te[ 3 ] = t12 * detInv; + te[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv; + te[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv; + + te[ 6 ] = t13 * detInv; + te[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv; + te[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv; + + return this; + + } + + /** + * Transposes this matrix in place. + * + * @return {Matrix3} A reference to this matrix. + */ + transpose() { + + let tmp; + const m = this.elements; + + tmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp; + tmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp; + tmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp; + + return this; + + } + + /** + * Computes the normal matrix which is the inverse transpose of the upper + * left 3x3 portion of the given 4x4 matrix. + * + * @param {Matrix4} matrix4 - The 4x4 matrix. + * @return {Matrix3} A reference to this matrix. + */ + getNormalMatrix( matrix4 ) { + + return this.setFromMatrix4( matrix4 ).invert().transpose(); + + } + + /** + * Transposes this matrix into the supplied array, and returns itself unchanged. + * + * @param {Array} r - An array to store the transposed matrix elements. + * @return {Matrix3} A reference to this matrix. + */ + transposeIntoArray( r ) { + + const m = this.elements; + + r[ 0 ] = m[ 0 ]; + r[ 1 ] = m[ 3 ]; + r[ 2 ] = m[ 6 ]; + r[ 3 ] = m[ 1 ]; + r[ 4 ] = m[ 4 ]; + r[ 5 ] = m[ 7 ]; + r[ 6 ] = m[ 2 ]; + r[ 7 ] = m[ 5 ]; + r[ 8 ] = m[ 8 ]; + + return this; + + } + + /** + * Sets the UV transform matrix from offset, repeat, rotation, and center. + * + * @param {number} tx - Offset x. + * @param {number} ty - Offset y. + * @param {number} sx - Repeat x. + * @param {number} sy - Repeat y. + * @param {number} rotation - Rotation, in radians. Positive values rotate counterclockwise. + * @param {number} cx - Center x of rotation. + * @param {number} cy - Center y of rotation + * @return {Matrix3} A reference to this matrix. + */ + setUvTransform( tx, ty, sx, sy, rotation, cx, cy ) { + + const c = Math.cos( rotation ); + const s = Math.sin( rotation ); + + this.set( + sx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx, + - sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty, + 0, 0, 1 + ); + + return this; + + } + + /** + * Scales this matrix with the given scalar values. + * + * @param {number} sx - The amount to scale in the X axis. + * @param {number} sy - The amount to scale in the Y axis. + * @return {Matrix3} A reference to this matrix. + */ + scale( sx, sy ) { + + this.premultiply( _m3.makeScale( sx, sy ) ); + + return this; + + } + + /** + * Rotates this matrix by the given angle. + * + * @param {number} theta - The rotation in radians. + * @return {Matrix3} A reference to this matrix. + */ + rotate( theta ) { + + this.premultiply( _m3.makeRotation( - theta ) ); + + return this; + + } + + /** + * Translates this matrix by the given scalar values. + * + * @param {number} tx - The amount to translate in the X axis. + * @param {number} ty - The amount to translate in the Y axis. + * @return {Matrix3} A reference to this matrix. + */ + translate( tx, ty ) { + + this.premultiply( _m3.makeTranslation( tx, ty ) ); + + return this; + + } + + // for 2D Transforms + + /** + * Sets this matrix as a 2D translation transform. + * + * @param {number|Vector2} x - The amount to translate in the X axis or alternatively a translation vector. + * @param {number} y - The amount to translate in the Y axis. + * @return {Matrix3} A reference to this matrix. + */ + makeTranslation( x, y ) { + + if ( x.isVector2 ) { + + this.set( + + 1, 0, x.x, + 0, 1, x.y, + 0, 0, 1 + + ); + + } else { + + this.set( + + 1, 0, x, + 0, 1, y, + 0, 0, 1 + + ); + + } + + return this; + + } + + /** + * Sets this matrix as a 2D rotational transformation. + * + * @param {number} theta - The rotation in radians. + * @return {Matrix3} A reference to this matrix. + */ + makeRotation( theta ) { + + // counterclockwise + + const c = Math.cos( theta ); + const s = Math.sin( theta ); + + this.set( + + c, - s, 0, + s, c, 0, + 0, 0, 1 + + ); + + return this; + + } + + /** + * Sets this matrix as a 2D scale transform. + * + * @param {number} x - The amount to scale in the X axis. + * @param {number} y - The amount to scale in the Y axis. + * @return {Matrix3} A reference to this matrix. + */ + makeScale( x, y ) { + + this.set( + + x, 0, 0, + 0, y, 0, + 0, 0, 1 + + ); + + return this; + + } + + /** + * Returns `true` if this matrix is equal with the given one. + * + * @param {Matrix3} matrix - The matrix to test for equality. + * @return {boolean} Whether this matrix is equal with the given one. + */ + equals( matrix ) { + + const te = this.elements; + const me = matrix.elements; + + for ( let i = 0; i < 9; i ++ ) { + + if ( te[ i ] !== me[ i ] ) return false; + + } + + return true; + + } + + /** + * Sets the elements of the matrix from the given array. + * + * @param {Array} array - The matrix elements in column-major order. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Matrix3} A reference to this matrix. + */ + fromArray( array, offset = 0 ) { + + for ( let i = 0; i < 9; i ++ ) { + + this.elements[ i ] = array[ i + offset ]; + + } + + return this; + + } + + /** + * Writes the elements of this matrix to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the matrix elements in column-major order. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The matrix elements in column-major order. + */ + toArray( array = [], offset = 0 ) { + + const te = this.elements; + + array[ offset ] = te[ 0 ]; + array[ offset + 1 ] = te[ 1 ]; + array[ offset + 2 ] = te[ 2 ]; + + array[ offset + 3 ] = te[ 3 ]; + array[ offset + 4 ] = te[ 4 ]; + array[ offset + 5 ] = te[ 5 ]; + + array[ offset + 6 ] = te[ 6 ]; + array[ offset + 7 ] = te[ 7 ]; + array[ offset + 8 ] = te[ 8 ]; + + return array; + + } + + /** + * Returns a matrix with copied values from this instance. + * + * @return {Matrix3} A clone of this instance. + */ + clone() { + + return new this.constructor().fromArray( this.elements ); + + } + +} + +const _m3 = /*@__PURE__*/ new Matrix3(); + +function arrayNeedsUint32( array ) { + + // assumes larger values usually on last + + for ( let i = array.length - 1; i >= 0; -- i ) { + + if ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565 + + } + + return false; + +} + +const TYPED_ARRAYS = { + Int8Array: Int8Array, + Uint8Array: Uint8Array, + Uint8ClampedArray: Uint8ClampedArray, + Int16Array: Int16Array, + Uint16Array: Uint16Array, + Int32Array: Int32Array, + Uint32Array: Uint32Array, + Float32Array: Float32Array, + Float64Array: Float64Array +}; + +function getTypedArray( type, buffer ) { + + return new TYPED_ARRAYS[ type ]( buffer ); + +} + +function createElementNS( name ) { + + return document.createElementNS( 'http://www.w3.org/1999/xhtml', name ); + +} + +function createCanvasElement() { + + const canvas = createElementNS( 'canvas' ); + canvas.style.display = 'block'; + return canvas; + +} + +const _cache = {}; + +function warnOnce( message ) { + + if ( message in _cache ) return; + + _cache[ message ] = true; + + console.warn( message ); + +} + +function probeAsync( gl, sync, interval ) { + + return new Promise( function ( resolve, reject ) { + + function probe() { + + switch ( gl.clientWaitSync( sync, gl.SYNC_FLUSH_COMMANDS_BIT, 0 ) ) { + + case gl.WAIT_FAILED: + reject(); + break; + + case gl.TIMEOUT_EXPIRED: + setTimeout( probe, interval ); + break; + + default: + resolve(); + + } + + } + + setTimeout( probe, interval ); + + } ); + +} + +function toNormalizedProjectionMatrix( projectionMatrix ) { + + const m = projectionMatrix.elements; + + // Convert [-1, 1] to [0, 1] projection matrix + m[ 2 ] = 0.5 * m[ 2 ] + 0.5 * m[ 3 ]; + m[ 6 ] = 0.5 * m[ 6 ] + 0.5 * m[ 7 ]; + m[ 10 ] = 0.5 * m[ 10 ] + 0.5 * m[ 11 ]; + m[ 14 ] = 0.5 * m[ 14 ] + 0.5 * m[ 15 ]; + +} + +function toReversedProjectionMatrix( projectionMatrix ) { + + const m = projectionMatrix.elements; + const isPerspectiveMatrix = m[ 11 ] === -1; + + // Reverse [0, 1] projection matrix + if ( isPerspectiveMatrix ) { + + m[ 10 ] = - m[ 10 ] - 1; + m[ 14 ] = - m[ 14 ]; + + } else { + + m[ 10 ] = - m[ 10 ]; + m[ 14 ] = - m[ 14 ] + 1; + + } + +} + +const LINEAR_REC709_TO_XYZ = /*@__PURE__*/ new Matrix3().set( + 0.4123908, 0.3575843, 0.1804808, + 0.2126390, 0.7151687, 0.0721923, + 0.0193308, 0.1191948, 0.9505322 +); + +const XYZ_TO_LINEAR_REC709 = /*@__PURE__*/ new Matrix3().set( + 3.2409699, -1.5373832, -0.4986108, + -0.9692436, 1.8759675, 0.0415551, + 0.0556301, -0.203977, 1.0569715 +); + +function createColorManagement() { + + const ColorManagement = { + + enabled: true, + + workingColorSpace: LinearSRGBColorSpace, + + /** + * Implementations of supported color spaces. + * + * Required: + * - primaries: chromaticity coordinates [ rx ry gx gy bx by ] + * - whitePoint: reference white [ x y ] + * - transfer: transfer function (pre-defined) + * - toXYZ: Matrix3 RGB to XYZ transform + * - fromXYZ: Matrix3 XYZ to RGB transform + * - luminanceCoefficients: RGB luminance coefficients + * + * Optional: + * - outputColorSpaceConfig: { drawingBufferColorSpace: ColorSpace } + * - workingColorSpaceConfig: { unpackColorSpace: ColorSpace } + * + * Reference: + * - https://www.russellcottrell.com/photo/matrixCalculator.htm + */ + spaces: {}, + + convert: function ( color, sourceColorSpace, targetColorSpace ) { + + if ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) { + + return color; + + } + + if ( this.spaces[ sourceColorSpace ].transfer === SRGBTransfer ) { + + color.r = SRGBToLinear( color.r ); + color.g = SRGBToLinear( color.g ); + color.b = SRGBToLinear( color.b ); + + } + + if ( this.spaces[ sourceColorSpace ].primaries !== this.spaces[ targetColorSpace ].primaries ) { + + color.applyMatrix3( this.spaces[ sourceColorSpace ].toXYZ ); + color.applyMatrix3( this.spaces[ targetColorSpace ].fromXYZ ); + + } + + if ( this.spaces[ targetColorSpace ].transfer === SRGBTransfer ) { + + color.r = LinearToSRGB( color.r ); + color.g = LinearToSRGB( color.g ); + color.b = LinearToSRGB( color.b ); + + } + + return color; + + }, + + fromWorkingColorSpace: function ( color, targetColorSpace ) { + + return this.convert( color, this.workingColorSpace, targetColorSpace ); + + }, + + toWorkingColorSpace: function ( color, sourceColorSpace ) { + + return this.convert( color, sourceColorSpace, this.workingColorSpace ); + + }, + + getPrimaries: function ( colorSpace ) { + + return this.spaces[ colorSpace ].primaries; + + }, + + getTransfer: function ( colorSpace ) { + + if ( colorSpace === NoColorSpace ) return LinearTransfer; + + return this.spaces[ colorSpace ].transfer; + + }, + + getLuminanceCoefficients: function ( target, colorSpace = this.workingColorSpace ) { + + return target.fromArray( this.spaces[ colorSpace ].luminanceCoefficients ); + + }, + + define: function ( colorSpaces ) { + + Object.assign( this.spaces, colorSpaces ); + + }, + + // Internal APIs + + _getMatrix: function ( targetMatrix, sourceColorSpace, targetColorSpace ) { + + return targetMatrix + .copy( this.spaces[ sourceColorSpace ].toXYZ ) + .multiply( this.spaces[ targetColorSpace ].fromXYZ ); + + }, + + _getDrawingBufferColorSpace: function ( colorSpace ) { + + return this.spaces[ colorSpace ].outputColorSpaceConfig.drawingBufferColorSpace; + + }, + + _getUnpackColorSpace: function ( colorSpace = this.workingColorSpace ) { + + return this.spaces[ colorSpace ].workingColorSpaceConfig.unpackColorSpace; + + } + + }; + + /****************************************************************************** + * sRGB definitions + */ + + const REC709_PRIMARIES = [ 0.640, 0.330, 0.300, 0.600, 0.150, 0.060 ]; + const REC709_LUMINANCE_COEFFICIENTS = [ 0.2126, 0.7152, 0.0722 ]; + const D65 = [ 0.3127, 0.3290 ]; + + ColorManagement.define( { + + [ LinearSRGBColorSpace ]: { + primaries: REC709_PRIMARIES, + whitePoint: D65, + transfer: LinearTransfer, + toXYZ: LINEAR_REC709_TO_XYZ, + fromXYZ: XYZ_TO_LINEAR_REC709, + luminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS, + workingColorSpaceConfig: { unpackColorSpace: SRGBColorSpace }, + outputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace } + }, + + [ SRGBColorSpace ]: { + primaries: REC709_PRIMARIES, + whitePoint: D65, + transfer: SRGBTransfer, + toXYZ: LINEAR_REC709_TO_XYZ, + fromXYZ: XYZ_TO_LINEAR_REC709, + luminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS, + outputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace } + }, + + } ); + + return ColorManagement; + +} + +const ColorManagement = /*@__PURE__*/ createColorManagement(); + +function SRGBToLinear( c ) { + + return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 ); + +} + +function LinearToSRGB( c ) { + + return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055; + +} + +let _canvas; + +/** + * A class containing utility functions for images. + * + * @hideconstructor + */ +class ImageUtils { + + /** + * Returns a data URI containing a representation of the given image. + * + * @param {(HTMLImageElement|HTMLCanvasElement)} image - The image object. + * @param {string} [type='image/png'] - Indicates the image format. + * @return {string} The data URI. + */ + static getDataURL( image, type = 'image/png' ) { + + if ( /^data:/i.test( image.src ) ) { + + return image.src; + + } + + if ( typeof HTMLCanvasElement === 'undefined' ) { + + return image.src; + + } + + let canvas; + + if ( image instanceof HTMLCanvasElement ) { + + canvas = image; + + } else { + + if ( _canvas === undefined ) _canvas = createElementNS( 'canvas' ); + + _canvas.width = image.width; + _canvas.height = image.height; + + const context = _canvas.getContext( '2d' ); + + if ( image instanceof ImageData ) { + + context.putImageData( image, 0, 0 ); + + } else { + + context.drawImage( image, 0, 0, image.width, image.height ); + + } + + canvas = _canvas; + + } + + return canvas.toDataURL( type ); + + } + + /** + * Converts the given sRGB image data to linear color space. + * + * @param {(HTMLImageElement|HTMLCanvasElement|ImageBitmap|Object)} image - The image object. + * @return {HTMLCanvasElement|Object} The converted image. + */ + static sRGBToLinear( image ) { + + if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) || + ( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) || + ( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) { + + const canvas = createElementNS( 'canvas' ); + + canvas.width = image.width; + canvas.height = image.height; + + const context = canvas.getContext( '2d' ); + context.drawImage( image, 0, 0, image.width, image.height ); + + const imageData = context.getImageData( 0, 0, image.width, image.height ); + const data = imageData.data; + + for ( let i = 0; i < data.length; i ++ ) { + + data[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255; + + } + + context.putImageData( imageData, 0, 0 ); + + return canvas; + + } else if ( image.data ) { + + const data = image.data.slice( 0 ); + + for ( let i = 0; i < data.length; i ++ ) { + + if ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) { + + data[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 ); + + } else { + + // assuming float + + data[ i ] = SRGBToLinear( data[ i ] ); + + } + + } + + return { + data: data, + width: image.width, + height: image.height + }; + + } else { + + console.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' ); + return image; + + } + + } + +} + +let _sourceId = 0; + +/** + * Represents the data source of a texture. + * + * The main purpose of this class is to decouple the data definition from the texture + * definition so the same data can be used with multiple texture instances. + */ +class Source { + + /** + * Constructs a new video texture. + * + * @param {any} [data=null] - The data definition of a texture. + */ + constructor( data = null ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isSource = true; + + /** + * The ID of the source. + * + * @name Source#id + * @type {number} + * @readonly + */ + Object.defineProperty( this, 'id', { value: _sourceId ++ } ); + + /** + * The UUID of the source. + * + * @type {string} + * @readonly + */ + this.uuid = generateUUID(); + + /** + * The data definition of a texture. + * + * @type {any} + */ + this.data = data; + + /** + * This property is only relevant when {@link Source#needsUpdate} is set to `true` and + * provides more control on how texture data should be processed. When `dataReady` is set + * to `false`, the engine performs the memory allocation (if necessary) but does not transfer + * the data into the GPU memory. + * + * @type {boolean} + * @default true + */ + this.dataReady = true; + + /** + * This starts at `0` and counts how many times {@link Source#needsUpdate} is set to `true`. + * + * @type {number} + * @readonly + * @default 0 + */ + this.version = 0; + + } + + /** + * When the property is set to `true`, the engine allocates the memory + * for the texture (if necessary) and triggers the actual texture upload + * to the GPU next time the source is used. + * + * @type {boolean} + * @default false + * @param {boolean} value + */ + set needsUpdate( value ) { + + if ( value === true ) this.version ++; + + } + + /** + * Serializes the source into JSON. + * + * @param {?(Object|string)} meta - An optional value holding meta information about the serialization. + * @return {Object} A JSON object representing the serialized source. + * @see {@link ObjectLoader#parse} + */ + toJSON( meta ) { + + const isRootObject = ( meta === undefined || typeof meta === 'string' ); + + if ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) { + + return meta.images[ this.uuid ]; + + } + + const output = { + uuid: this.uuid, + url: '' + }; + + const data = this.data; + + if ( data !== null ) { + + let url; + + if ( Array.isArray( data ) ) { + + // cube texture + + url = []; + + for ( let i = 0, l = data.length; i < l; i ++ ) { + + if ( data[ i ].isDataTexture ) { + + url.push( serializeImage( data[ i ].image ) ); + + } else { + + url.push( serializeImage( data[ i ] ) ); + + } + + } + + } else { + + // texture + + url = serializeImage( data ); + + } + + output.url = url; + + } + + if ( ! isRootObject ) { + + meta.images[ this.uuid ] = output; + + } + + return output; + + } + +} + +function serializeImage( image ) { + + if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) || + ( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) || + ( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) { + + // default images + + return ImageUtils.getDataURL( image ); + + } else { + + if ( image.data ) { + + // images of DataTexture + + return { + data: Array.from( image.data ), + width: image.width, + height: image.height, + type: image.data.constructor.name + }; + + } else { + + console.warn( 'THREE.Texture: Unable to serialize Texture.' ); + return {}; + + } + + } + +} + +let _textureId = 0; + +/** + * Base class for all textures. + * + * Note: After the initial use of a texture, its dimensions, format, and type + * cannot be changed. Instead, call {@link Texture#dispose} on the texture and instantiate a new one. + * + * @augments EventDispatcher + */ +class Texture extends EventDispatcher { + + /** + * Constructs a new texture. + * + * @param {?Object} [image=Texture.DEFAULT_IMAGE] - The image holding the texture data. + * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping. + * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value. + * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value. + * @param {number} [magFilter=LinearFilter] - The mag filter value. + * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value. + * @param {number} [format=RGBAFormat] - The texture format. + * @param {number} [type=UnsignedByteType] - The texture type. + * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value. + * @param {string} [colorSpace=NoColorSpace] - The color space. + */ + constructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isTexture = true; + + /** + * The ID of the texture. + * + * @name Texture#id + * @type {number} + * @readonly + */ + Object.defineProperty( this, 'id', { value: _textureId ++ } ); + + /** + * The UUID of the material. + * + * @type {string} + * @readonly + */ + this.uuid = generateUUID(); + + /** + * The name of the material. + * + * @type {string} + */ + this.name = ''; + + /** + * The data definition of a texture. A reference to the data source can be + * shared across textures. This is often useful in context of spritesheets + * where multiple textures render the same data but with different texture + * transformations. + * + * @type {Source} + */ + this.source = new Source( image ); + + /** + * An array holding user-defined mipmaps. + * + * @type {Array} + */ + this.mipmaps = []; + + /** + * How the texture is applied to the object. The value `UVMapping` + * is the default, where texture or uv coordinates are used to apply the map. + * + * @type {(UVMapping|CubeReflectionMapping|CubeRefractionMapping|EquirectangularReflectionMapping|EquirectangularRefractionMapping|CubeUVReflectionMapping)} + * @default UVMapping + */ + this.mapping = mapping; + + /** + * Lets you select the uv attribute to map the texture to. `0` for `uv`, + * `1` for `uv1`, `2` for `uv2` and `3` for `uv3`. + * + * @type {number} + * @default 0 + */ + this.channel = 0; + + /** + * This defines how the texture is wrapped horizontally and corresponds to + * *U* in UV mapping. + * + * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)} + * @default ClampToEdgeWrapping + */ + this.wrapS = wrapS; + + /** + * This defines how the texture is wrapped horizontally and corresponds to + * *V* in UV mapping. + * + * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)} + * @default ClampToEdgeWrapping + */ + this.wrapT = wrapT; + + /** + * How the texture is sampled when a texel covers more than one pixel. + * + * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)} + * @default LinearFilter + */ + this.magFilter = magFilter; + + /** + * How the texture is sampled when a texel covers less than one pixel. + * + * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)} + * @default LinearMipmapLinearFilter + */ + this.minFilter = minFilter; + + /** + * The number of samples taken along the axis through the pixel that has the + * highest density of texels. By default, this value is `1`. A higher value + * gives a less blurry result than a basic mipmap, at the cost of more + * texture samples being used. + * + * @type {number} + * @default 0 + */ + this.anisotropy = anisotropy; + + /** + * The format of the texture. + * + * @type {number} + * @default RGBAFormat + */ + this.format = format; + + /** + * The default internal format is derived from {@link Texture#format} and {@link Texture#type} and + * defines how the texture data is going to be stored on the GPU. + * + * This property allows to overwrite the default format. + * + * @type {?string} + * @default null + */ + this.internalFormat = null; + + /** + * The data type of the texture. + * + * @type {number} + * @default UnsignedByteType + */ + this.type = type; + + /** + * How much a single repetition of the texture is offset from the beginning, + * in each direction U and V. Typical range is `0.0` to `1.0`. + * + * @type {Vector2} + * @default (0,0) + */ + this.offset = new Vector2( 0, 0 ); + + /** + * How many times the texture is repeated across the surface, in each + * direction U and V. If repeat is set greater than `1` in either direction, + * the corresponding wrap parameter should also be set to `RepeatWrapping` + * or `MirroredRepeatWrapping` to achieve the desired tiling effect. + * + * @type {Vector2} + * @default (1,1) + */ + this.repeat = new Vector2( 1, 1 ); + + /** + * The point around which rotation occurs. A value of `(0.5, 0.5)` corresponds + * to the center of the texture. Default is `(0, 0)`, the lower left. + * + * @type {Vector2} + * @default (0,0) + */ + this.center = new Vector2( 0, 0 ); + + /** + * How much the texture is rotated around the center point, in radians. + * Positive values are counter-clockwise. + * + * @type {number} + * @default 0 + */ + this.rotation = 0; + + /** + * Whether to update the texture's uv-transformation {@link Texture#matrix} + * from the properties {@link Texture#offset}, {@link Texture#repeat}, + * {@link Texture#rotation}, and {@link Texture#center}. + * + * Set this to `false` if you are specifying the uv-transform matrix directly. + * + * @type {boolean} + * @default true + */ + this.matrixAutoUpdate = true; + + /** + * The uv-transformation matrix of the texture. + * + * @type {Matrix3} + */ + this.matrix = new Matrix3(); + + /** + * Whether to generate mipmaps (if possible) for a texture. + * + * Set this to `false` if you are creating mipmaps manually. + * + * @type {boolean} + * @default true + */ + this.generateMipmaps = true; + + /** + * If set to `true`, the alpha channel, if present, is multiplied into the + * color channels when the texture is uploaded to the GPU. + * + * Note that this property has no effect when using `ImageBitmap`. You need to + * configure premultiply alpha on bitmap creation instead. + * + * @type {boolean} + * @default false + */ + this.premultiplyAlpha = false; + + /** + * If set to `true`, the texture is flipped along the vertical axis when + * uploaded to the GPU. + * + * Note that this property has no effect when using `ImageBitmap`. You need to + * configure the flip on bitmap creation instead. + * + * @type {boolean} + * @default true + */ + this.flipY = true; + + /** + * Specifies the alignment requirements for the start of each pixel row in memory. + * The allowable values are `1` (byte-alignment), `2` (rows aligned to even-numbered bytes), + * `4` (word-alignment), and `8` (rows start on double-word boundaries). + * + * @type {number} + * @default 4 + */ + this.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml) + + /** + * Textures containing color data should be annotated with `SRGBColorSpace` or `LinearSRGBColorSpace`. + * + * @type {string} + * @default NoColorSpace + */ + this.colorSpace = colorSpace; + + /** + * An object that can be used to store custom data about the texture. It + * should not hold references to functions as these will not be cloned. + * + * @type {Object} + */ + this.userData = {}; + + /** + * This starts at `0` and counts how many times {@link Texture#needsUpdate} is set to `true`. + * + * @type {number} + * @readonly + * @default 0 + */ + this.version = 0; + + /** + * A callback function, called when the texture is updated (e.g., when + * {@link Texture#needsUpdate} has been set to true and then the texture is used). + * + * @type {?Function} + * @default null + */ + this.onUpdate = null; + + /** + * An optional back reference to the textures render target. + * + * @type {?(RenderTarget|WebGLRenderTarget)} + * @default null + */ + this.renderTarget = null; + + /** + * Indicates whether a texture belongs to a render target or not. + * + * @type {boolean} + * @readonly + * @default false + */ + this.isRenderTargetTexture = false; + + /** + * Indicates whether this texture should be processed by `PMREMGenerator` or not + * (only relevant for render target textures). + * + * @type {number} + * @readonly + * @default 0 + */ + this.pmremVersion = 0; + + } + + /** + * The image object holding the texture data. + * + * @type {?Object} + */ + get image() { + + return this.source.data; + + } + + set image( value = null ) { + + this.source.data = value; + + } + + /** + * Updates the texture transformation matrix from the from the properties {@link Texture#offset}, + * {@link Texture#repeat}, {@link Texture#rotation}, and {@link Texture#center}. + */ + updateMatrix() { + + this.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y ); + + } + + /** + * Returns a new texture with copied values from this instance. + * + * @return {Texture} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + + /** + * Copies the values of the given texture to this instance. + * + * @param {Texture} source - The texture to copy. + * @return {Texture} A reference to this instance. + */ + copy( source ) { + + this.name = source.name; + + this.source = source.source; + this.mipmaps = source.mipmaps.slice( 0 ); + + this.mapping = source.mapping; + this.channel = source.channel; + + this.wrapS = source.wrapS; + this.wrapT = source.wrapT; + + this.magFilter = source.magFilter; + this.minFilter = source.minFilter; + + this.anisotropy = source.anisotropy; + + this.format = source.format; + this.internalFormat = source.internalFormat; + this.type = source.type; + + this.offset.copy( source.offset ); + this.repeat.copy( source.repeat ); + this.center.copy( source.center ); + this.rotation = source.rotation; + + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrix.copy( source.matrix ); + + this.generateMipmaps = source.generateMipmaps; + this.premultiplyAlpha = source.premultiplyAlpha; + this.flipY = source.flipY; + this.unpackAlignment = source.unpackAlignment; + this.colorSpace = source.colorSpace; + + this.renderTarget = source.renderTarget; + this.isRenderTargetTexture = source.isRenderTargetTexture; + + this.userData = JSON.parse( JSON.stringify( source.userData ) ); + + this.needsUpdate = true; + + return this; + + } + + /** + * Serializes the texture into JSON. + * + * @param {?(Object|string)} meta - An optional value holding meta information about the serialization. + * @return {Object} A JSON object representing the serialized texture. + * @see {@link ObjectLoader#parse} + */ + toJSON( meta ) { + + const isRootObject = ( meta === undefined || typeof meta === 'string' ); + + if ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) { + + return meta.textures[ this.uuid ]; + + } + + const output = { + + metadata: { + version: 4.6, + type: 'Texture', + generator: 'Texture.toJSON' + }, + + uuid: this.uuid, + name: this.name, + + image: this.source.toJSON( meta ).uuid, + + mapping: this.mapping, + channel: this.channel, + + repeat: [ this.repeat.x, this.repeat.y ], + offset: [ this.offset.x, this.offset.y ], + center: [ this.center.x, this.center.y ], + rotation: this.rotation, + + wrap: [ this.wrapS, this.wrapT ], + + format: this.format, + internalFormat: this.internalFormat, + type: this.type, + colorSpace: this.colorSpace, + + minFilter: this.minFilter, + magFilter: this.magFilter, + anisotropy: this.anisotropy, + + flipY: this.flipY, + + generateMipmaps: this.generateMipmaps, + premultiplyAlpha: this.premultiplyAlpha, + unpackAlignment: this.unpackAlignment + + }; + + if ( Object.keys( this.userData ).length > 0 ) output.userData = this.userData; + + if ( ! isRootObject ) { + + meta.textures[ this.uuid ] = output; + + } + + return output; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + * + * @fires Texture#dispose + */ + dispose() { + + /** + * Fires when the texture has been disposed of. + * + * @event Texture#dispose + * @type {Object} + */ + this.dispatchEvent( { type: 'dispose' } ); + + } + + /** + * Transforms the given uv vector with the textures uv transformation matrix. + * + * @param {Vector2} uv - The uv vector. + * @return {Vector2} The transformed uv vector. + */ + transformUv( uv ) { + + if ( this.mapping !== UVMapping ) return uv; + + uv.applyMatrix3( this.matrix ); + + if ( uv.x < 0 || uv.x > 1 ) { + + switch ( this.wrapS ) { + + case RepeatWrapping: + + uv.x = uv.x - Math.floor( uv.x ); + break; + + case ClampToEdgeWrapping: + + uv.x = uv.x < 0 ? 0 : 1; + break; + + case MirroredRepeatWrapping: + + if ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) { + + uv.x = Math.ceil( uv.x ) - uv.x; + + } else { + + uv.x = uv.x - Math.floor( uv.x ); + + } + + break; + + } + + } + + if ( uv.y < 0 || uv.y > 1 ) { + + switch ( this.wrapT ) { + + case RepeatWrapping: + + uv.y = uv.y - Math.floor( uv.y ); + break; + + case ClampToEdgeWrapping: + + uv.y = uv.y < 0 ? 0 : 1; + break; + + case MirroredRepeatWrapping: + + if ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) { + + uv.y = Math.ceil( uv.y ) - uv.y; + + } else { + + uv.y = uv.y - Math.floor( uv.y ); + + } + + break; + + } + + } + + if ( this.flipY ) { + + uv.y = 1 - uv.y; + + } + + return uv; + + } + + /** + * Setting this property to `true` indicates the engine the texture + * must be updated in the next render. This triggers a texture upload + * to the GPU and ensures correct texture parameter configuration. + * + * @type {boolean} + * @default false + * @param {boolean} value + */ + set needsUpdate( value ) { + + if ( value === true ) { + + this.version ++; + this.source.needsUpdate = true; + + } + + } + + /** + * Setting this property to `true` indicates the engine the PMREM + * must be regenerated. + * + * @type {boolean} + * @default false + * @param {boolean} value + */ + set needsPMREMUpdate( value ) { + + if ( value === true ) { + + this.pmremVersion ++; + + } + + } + +} + +/** + * The default image for all textures. + * + * @static + * @type {?Image} + * @default null + */ +Texture.DEFAULT_IMAGE = null; + +/** + * The default mapping for all textures. + * + * @static + * @type {number} + * @default UVMapping + */ +Texture.DEFAULT_MAPPING = UVMapping; + +/** + * The default anisotropy value for all textures. + * + * @static + * @type {number} + * @default 1 + */ +Texture.DEFAULT_ANISOTROPY = 1; + +/** + * Class representing a 4D vector. A 4D vector is an ordered quadruplet of numbers + * (labeled x, y, z and w), which can be used to represent a number of things, such as: + * + * - A point in 4D space. + * - A direction and length in 4D space. In three.js the length will + * always be the Euclidean distance(straight-line distance) from `(0, 0, 0, 0)` to `(x, y, z, w)` + * and the direction is also measured from `(0, 0, 0, 0)` towards `(x, y, z, w)`. + * - Any arbitrary ordered quadruplet of numbers. + * + * There are other things a 4D vector can be used to represent, however these + * are the most common uses in *three.js*. + * + * Iterating through a vector instance will yield its components `(x, y, z, w)` in + * the corresponding order. + * ```js + * const a = new THREE.Vector4( 0, 1, 0, 0 ); + * + * //no arguments; will be initialised to (0, 0, 0, 1) + * const b = new THREE.Vector4( ); + * + * const d = a.dot( b ); + * ``` + */ +class Vector4 { + + /** + * Constructs a new 4D vector. + * + * @param {number} [x=0] - The x value of this vector. + * @param {number} [y=0] - The y value of this vector. + * @param {number} [z=0] - The z value of this vector. + * @param {number} [w=1] - The w value of this vector. + */ + constructor( x = 0, y = 0, z = 0, w = 1 ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + Vector4.prototype.isVector4 = true; + + /** + * The x value of this vector. + * + * @type {number} + */ + this.x = x; + + /** + * The y value of this vector. + * + * @type {number} + */ + this.y = y; + + /** + * The z value of this vector. + * + * @type {number} + */ + this.z = z; + + /** + * The w value of this vector. + * + * @type {number} + */ + this.w = w; + + } + + /** + * Alias for {@link Vector4#z}. + * + * @type {number} + */ + get width() { + + return this.z; + + } + + set width( value ) { + + this.z = value; + + } + + /** + * Alias for {@link Vector4#w}. + * + * @type {number} + */ + get height() { + + return this.w; + + } + + set height( value ) { + + this.w = value; + + } + + /** + * Sets the vector components. + * + * @param {number} x - The value of the x component. + * @param {number} y - The value of the y component. + * @param {number} z - The value of the z component. + * @param {number} w - The value of the w component. + * @return {Vector4} A reference to this vector. + */ + set( x, y, z, w ) { + + this.x = x; + this.y = y; + this.z = z; + this.w = w; + + return this; + + } + + /** + * Sets the vector components to the same value. + * + * @param {number} scalar - The value to set for all vector components. + * @return {Vector4} A reference to this vector. + */ + setScalar( scalar ) { + + this.x = scalar; + this.y = scalar; + this.z = scalar; + this.w = scalar; + + return this; + + } + + /** + * Sets the vector's x component to the given value + * + * @param {number} x - The value to set. + * @return {Vector4} A reference to this vector. + */ + setX( x ) { + + this.x = x; + + return this; + + } + + /** + * Sets the vector's y component to the given value + * + * @param {number} y - The value to set. + * @return {Vector4} A reference to this vector. + */ + setY( y ) { + + this.y = y; + + return this; + + } + + /** + * Sets the vector's z component to the given value + * + * @param {number} z - The value to set. + * @return {Vector4} A reference to this vector. + */ + setZ( z ) { + + this.z = z; + + return this; + + } + + /** + * Sets the vector's w component to the given value + * + * @param {number} w - The value to set. + * @return {Vector4} A reference to this vector. + */ + setW( w ) { + + this.w = w; + + return this; + + } + + /** + * Allows to set a vector component with an index. + * + * @param {number} index - The component index. `0` equals to x, `1` equals to y, + * `2` equals to z, `3` equals to w. + * @param {number} value - The value to set. + * @return {Vector4} A reference to this vector. + */ + setComponent( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + case 2: this.z = value; break; + case 3: this.w = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + } + + /** + * Returns the value of the vector component which matches the given index. + * + * @param {number} index - The component index. `0` equals to x, `1` equals to y, + * `2` equals to z, `3` equals to w. + * @return {number} A vector component value. + */ + getComponent( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + case 2: return this.z; + case 3: return this.w; + default: throw new Error( 'index is out of range: ' + index ); + + } + + } + + /** + * Returns a new vector with copied values from this instance. + * + * @return {Vector4} A clone of this instance. + */ + clone() { + + return new this.constructor( this.x, this.y, this.z, this.w ); + + } + + /** + * Copies the values of the given vector to this instance. + * + * @param {Vector3|Vector4} v - The vector to copy. + * @return {Vector4} A reference to this vector. + */ + copy( v ) { + + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = ( v.w !== undefined ) ? v.w : 1; + + return this; + + } + + /** + * Adds the given vector to this instance. + * + * @param {Vector4} v - The vector to add. + * @return {Vector4} A reference to this vector. + */ + add( v ) { + + this.x += v.x; + this.y += v.y; + this.z += v.z; + this.w += v.w; + + return this; + + } + + /** + * Adds the given scalar value to all components of this instance. + * + * @param {number} s - The scalar to add. + * @return {Vector4} A reference to this vector. + */ + addScalar( s ) { + + this.x += s; + this.y += s; + this.z += s; + this.w += s; + + return this; + + } + + /** + * Adds the given vectors and stores the result in this instance. + * + * @param {Vector4} a - The first vector. + * @param {Vector4} b - The second vector. + * @return {Vector4} A reference to this vector. + */ + addVectors( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + this.w = a.w + b.w; + + return this; + + } + + /** + * Adds the given vector scaled by the given factor to this instance. + * + * @param {Vector4} v - The vector. + * @param {number} s - The factor that scales `v`. + * @return {Vector4} A reference to this vector. + */ + addScaledVector( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + this.w += v.w * s; + + return this; + + } + + /** + * Subtracts the given vector from this instance. + * + * @param {Vector4} v - The vector to subtract. + * @return {Vector4} A reference to this vector. + */ + sub( v ) { + + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + this.w -= v.w; + + return this; + + } + + /** + * Subtracts the given scalar value from all components of this instance. + * + * @param {number} s - The scalar to subtract. + * @return {Vector4} A reference to this vector. + */ + subScalar( s ) { + + this.x -= s; + this.y -= s; + this.z -= s; + this.w -= s; + + return this; + + } + + /** + * Subtracts the given vectors and stores the result in this instance. + * + * @param {Vector4} a - The first vector. + * @param {Vector4} b - The second vector. + * @return {Vector4} A reference to this vector. + */ + subVectors( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + this.w = a.w - b.w; + + return this; + + } + + /** + * Multiplies the given vector with this instance. + * + * @param {Vector4} v - The vector to multiply. + * @return {Vector4} A reference to this vector. + */ + multiply( v ) { + + this.x *= v.x; + this.y *= v.y; + this.z *= v.z; + this.w *= v.w; + + return this; + + } + + /** + * Multiplies the given scalar value with all components of this instance. + * + * @param {number} scalar - The scalar to multiply. + * @return {Vector4} A reference to this vector. + */ + multiplyScalar( scalar ) { + + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + this.w *= scalar; + + return this; + + } + + /** + * Multiplies this vector with the given 4x4 matrix. + * + * @param {Matrix4} m - The 4x4 matrix. + * @return {Vector4} A reference to this vector. + */ + applyMatrix4( m ) { + + const x = this.x, y = this.y, z = this.z, w = this.w; + const e = m.elements; + + this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w; + this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w; + this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w; + this.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w; + + return this; + + } + + /** + * Divides this instance by the given vector. + * + * @param {Vector4} v - The vector to divide. + * @return {Vector4} A reference to this vector. + */ + divide( v ) { + + this.x /= v.x; + this.y /= v.y; + this.z /= v.z; + this.w /= v.w; + + return this; + + } + + /** + * Divides this vector by the given scalar. + * + * @param {number} scalar - The scalar to divide. + * @return {Vector4} A reference to this vector. + */ + divideScalar( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + } + + /** + * Sets the x, y and z components of this + * vector to the quaternion's axis and w to the angle. + * + * @param {Quaternion} q - The Quaternion to set. + * @return {Vector4} A reference to this vector. + */ + setAxisAngleFromQuaternion( q ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm + + // q is assumed to be normalized + + this.w = 2 * Math.acos( q.w ); + + const s = Math.sqrt( 1 - q.w * q.w ); + + if ( s < 0.0001 ) { + + this.x = 1; + this.y = 0; + this.z = 0; + + } else { + + this.x = q.x / s; + this.y = q.y / s; + this.z = q.z / s; + + } + + return this; + + } + + /** + * Sets the x, y and z components of this + * vector to the axis of rotation and w to the angle. + * + * @param {Matrix4} m - A 4x4 matrix of which the upper left 3x3 matrix is a pure rotation matrix. + * @return {Vector4} A reference to this vector. + */ + setAxisAngleFromRotationMatrix( m ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + let angle, x, y, z; // variables for result + const epsilon = 0.01, // margin to allow for rounding errors + epsilon2 = 0.1, // margin to distinguish between 0 and 180 degrees + + te = m.elements, + + m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], + m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], + m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; + + if ( ( Math.abs( m12 - m21 ) < epsilon ) && + ( Math.abs( m13 - m31 ) < epsilon ) && + ( Math.abs( m23 - m32 ) < epsilon ) ) { + + // singularity found + // first check for identity matrix which must have +1 for all terms + // in leading diagonal and zero in other terms + + if ( ( Math.abs( m12 + m21 ) < epsilon2 ) && + ( Math.abs( m13 + m31 ) < epsilon2 ) && + ( Math.abs( m23 + m32 ) < epsilon2 ) && + ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) { + + // this singularity is identity matrix so angle = 0 + + this.set( 1, 0, 0, 0 ); + + return this; // zero angle, arbitrary axis + + } + + // otherwise this singularity is angle = 180 + + angle = Math.PI; + + const xx = ( m11 + 1 ) / 2; + const yy = ( m22 + 1 ) / 2; + const zz = ( m33 + 1 ) / 2; + const xy = ( m12 + m21 ) / 4; + const xz = ( m13 + m31 ) / 4; + const yz = ( m23 + m32 ) / 4; + + if ( ( xx > yy ) && ( xx > zz ) ) { + + // m11 is the largest diagonal term + + if ( xx < epsilon ) { + + x = 0; + y = 0.707106781; + z = 0.707106781; + + } else { + + x = Math.sqrt( xx ); + y = xy / x; + z = xz / x; + + } + + } else if ( yy > zz ) { + + // m22 is the largest diagonal term + + if ( yy < epsilon ) { + + x = 0.707106781; + y = 0; + z = 0.707106781; + + } else { + + y = Math.sqrt( yy ); + x = xy / y; + z = yz / y; + + } + + } else { + + // m33 is the largest diagonal term so base result on this + + if ( zz < epsilon ) { + + x = 0.707106781; + y = 0.707106781; + z = 0; + + } else { + + z = Math.sqrt( zz ); + x = xz / z; + y = yz / z; + + } + + } + + this.set( x, y, z, angle ); + + return this; // return 180 deg rotation + + } + + // as we have reached here there are no singularities so we can handle normally + + let s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) + + ( m13 - m31 ) * ( m13 - m31 ) + + ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize + + if ( Math.abs( s ) < 0.001 ) s = 1; + + // prevent divide by zero, should not happen if matrix is orthogonal and should be + // caught by singularity test above, but I've left it in just in case + + this.x = ( m32 - m23 ) / s; + this.y = ( m13 - m31 ) / s; + this.z = ( m21 - m12 ) / s; + this.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 ); + + return this; + + } + + /** + * Sets the vector components to the position elements of the + * given transformation matrix. + * + * @param {Matrix4} m - The 4x4 matrix. + * @return {Vector4} A reference to this vector. + */ + setFromMatrixPosition( m ) { + + const e = m.elements; + + this.x = e[ 12 ]; + this.y = e[ 13 ]; + this.z = e[ 14 ]; + this.w = e[ 15 ]; + + return this; + + } + + /** + * If this vector's x, y, z or w value is greater than the given vector's x, y, z or w + * value, replace that value with the corresponding min value. + * + * @param {Vector4} v - The vector. + * @return {Vector4} A reference to this vector. + */ + min( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + this.z = Math.min( this.z, v.z ); + this.w = Math.min( this.w, v.w ); + + return this; + + } + + /** + * If this vector's x, y, z or w value is less than the given vector's x, y, z or w + * value, replace that value with the corresponding max value. + * + * @param {Vector4} v - The vector. + * @return {Vector4} A reference to this vector. + */ + max( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + this.z = Math.max( this.z, v.z ); + this.w = Math.max( this.w, v.w ); + + return this; + + } + + /** + * If this vector's x, y, z or w value is greater than the max vector's x, y, z or w + * value, it is replaced by the corresponding value. + * If this vector's x, y, z or w value is less than the min vector's x, y, z or w value, + * it is replaced by the corresponding value. + * + * @param {Vector4} min - The minimum x, y and z values. + * @param {Vector4} max - The maximum x, y and z values in the desired range. + * @return {Vector4} A reference to this vector. + */ + clamp( min, max ) { + + // assumes min < max, componentwise + + this.x = clamp( this.x, min.x, max.x ); + this.y = clamp( this.y, min.y, max.y ); + this.z = clamp( this.z, min.z, max.z ); + this.w = clamp( this.w, min.w, max.w ); + + return this; + + } + + /** + * If this vector's x, y, z or w values are greater than the max value, they are + * replaced by the max value. + * If this vector's x, y, z or w values are less than the min value, they are + * replaced by the min value. + * + * @param {number} minVal - The minimum value the components will be clamped to. + * @param {number} maxVal - The maximum value the components will be clamped to. + * @return {Vector4} A reference to this vector. + */ + clampScalar( minVal, maxVal ) { + + this.x = clamp( this.x, minVal, maxVal ); + this.y = clamp( this.y, minVal, maxVal ); + this.z = clamp( this.z, minVal, maxVal ); + this.w = clamp( this.w, minVal, maxVal ); + + return this; + + } + + /** + * If this vector's length is greater than the max value, it is replaced by + * the max value. + * If this vector's length is less than the min value, it is replaced by the + * min value. + * + * @param {number} min - The minimum value the vector length will be clamped to. + * @param {number} max - The maximum value the vector length will be clamped to. + * @return {Vector4} A reference to this vector. + */ + clampLength( min, max ) { + + const length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) ); + + } + + /** + * The components of this vector are rounded down to the nearest integer value. + * + * @return {Vector4} A reference to this vector. + */ + floor() { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + this.z = Math.floor( this.z ); + this.w = Math.floor( this.w ); + + return this; + + } + + /** + * The components of this vector are rounded up to the nearest integer value. + * + * @return {Vector4} A reference to this vector. + */ + ceil() { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + this.z = Math.ceil( this.z ); + this.w = Math.ceil( this.w ); + + return this; + + } + + /** + * The components of this vector are rounded to the nearest integer value + * + * @return {Vector4} A reference to this vector. + */ + round() { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + this.z = Math.round( this.z ); + this.w = Math.round( this.w ); + + return this; + + } + + /** + * The components of this vector are rounded towards zero (up if negative, + * down if positive) to an integer value. + * + * @return {Vector4} A reference to this vector. + */ + roundToZero() { + + this.x = Math.trunc( this.x ); + this.y = Math.trunc( this.y ); + this.z = Math.trunc( this.z ); + this.w = Math.trunc( this.w ); + + return this; + + } + + /** + * Inverts this vector - i.e. sets x = -x, y = -y, z = -z, w = -w. + * + * @return {Vector4} A reference to this vector. + */ + negate() { + + this.x = - this.x; + this.y = - this.y; + this.z = - this.z; + this.w = - this.w; + + return this; + + } + + /** + * Calculates the dot product of the given vector with this instance. + * + * @param {Vector4} v - The vector to compute the dot product with. + * @return {number} The result of the dot product. + */ + dot( v ) { + + return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w; + + } + + /** + * Computes the square of the Euclidean length (straight-line length) from + * (0, 0, 0, 0) to (x, y, z, w). If you are comparing the lengths of vectors, you should + * compare the length squared instead as it is slightly more efficient to calculate. + * + * @return {number} The square length of this vector. + */ + lengthSq() { + + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + + } + + /** + * Computes the Euclidean length (straight-line length) from (0, 0, 0, 0) to (x, y, z, w). + * + * @return {number} The length of this vector. + */ + length() { + + return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w ); + + } + + /** + * Computes the Manhattan length of this vector. + * + * @return {number} The length of this vector. + */ + manhattanLength() { + + return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w ); + + } + + /** + * Converts this vector to a unit vector - that is, sets it equal to a vector + * with the same direction as this one, but with a vector length of `1`. + * + * @return {Vector4} A reference to this vector. + */ + normalize() { + + return this.divideScalar( this.length() || 1 ); + + } + + /** + * Sets this vector to a vector with the same direction as this one, but + * with the specified length. + * + * @param {number} length - The new length of this vector. + * @return {Vector4} A reference to this vector. + */ + setLength( length ) { + + return this.normalize().multiplyScalar( length ); + + } + + /** + * Linearly interpolates between the given vector and this instance, where + * alpha is the percent distance along the line - alpha = 0 will be this + * vector, and alpha = 1 will be the given one. + * + * @param {Vector4} v - The vector to interpolate towards. + * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`. + * @return {Vector4} A reference to this vector. + */ + lerp( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + this.z += ( v.z - this.z ) * alpha; + this.w += ( v.w - this.w ) * alpha; + + return this; + + } + + /** + * Linearly interpolates between the given vectors, where alpha is the percent + * distance along the line - alpha = 0 will be first vector, and alpha = 1 will + * be the second one. The result is stored in this instance. + * + * @param {Vector4} v1 - The first vector. + * @param {Vector4} v2 - The second vector. + * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`. + * @return {Vector4} A reference to this vector. + */ + lerpVectors( v1, v2, alpha ) { + + this.x = v1.x + ( v2.x - v1.x ) * alpha; + this.y = v1.y + ( v2.y - v1.y ) * alpha; + this.z = v1.z + ( v2.z - v1.z ) * alpha; + this.w = v1.w + ( v2.w - v1.w ) * alpha; + + return this; + + } + + /** + * Returns `true` if this vector is equal with the given one. + * + * @param {Vector4} v - The vector to test for equality. + * @return {boolean} Whether this vector is equal with the given one. + */ + equals( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) ); + + } + + /** + * Sets this vector's x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]`, + * z value to be `array[ offset + 2 ]`, w value to be `array[ offset + 3 ]`. + * + * @param {Array} array - An array holding the vector component values. + * @param {number} [offset=0] - The offset into the array. + * @return {Vector4} A reference to this vector. + */ + fromArray( array, offset = 0 ) { + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + this.z = array[ offset + 2 ]; + this.w = array[ offset + 3 ]; + + return this; + + } + + /** + * Writes the components of this vector to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the vector components. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The vector components. + */ + toArray( array = [], offset = 0 ) { + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + array[ offset + 2 ] = this.z; + array[ offset + 3 ] = this.w; + + return array; + + } + + /** + * Sets the components of this vector from the given buffer attribute. + * + * @param {BufferAttribute} attribute - The buffer attribute holding vector data. + * @param {number} index - The index into the attribute. + * @return {Vector4} A reference to this vector. + */ + fromBufferAttribute( attribute, index ) { + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + this.z = attribute.getZ( index ); + this.w = attribute.getW( index ); + + return this; + + } + + /** + * Sets each component of this vector to a pseudo-random value between `0` and + * `1`, excluding `1`. + * + * @return {Vector4} A reference to this vector. + */ + random() { + + this.x = Math.random(); + this.y = Math.random(); + this.z = Math.random(); + this.w = Math.random(); + + return this; + + } + + *[ Symbol.iterator ]() { + + yield this.x; + yield this.y; + yield this.z; + yield this.w; + + } + +} + +/** + * A render target is a buffer where the video card draws pixels for a scene + * that is being rendered in the background. It is used in different effects, + * such as applying postprocessing to a rendered image before displaying it + * on the screen. + * + * @augments EventDispatcher + */ +class RenderTarget extends EventDispatcher { + + /** + * Render target options. + * + * @typedef {Object} RenderTarget~Options + * @property {boolean} [generateMipmaps=false] - Whether to generate mipmaps or not. + * @property {number} [magFilter=LinearFilter] - The mag filter. + * @property {number} [minFilter=LinearFilter] - The min filter. + * @property {number} [format=RGBAFormat] - The texture format. + * @property {number} [type=UnsignedByteType] - The texture type. + * @property {?string} [internalFormat=null] - The texture's internal format. + * @property {number} [wrapS=ClampToEdgeWrapping] - The texture's uv wrapping mode. + * @property {number} [wrapT=ClampToEdgeWrapping] - The texture's uv wrapping mode. + * @property {number} [anisotropy=1] - The texture's anisotropy value. + * @property {string} [colorSpace=NoColorSpace] - The texture's color space. + * @property {boolean} [depthBuffer=true] - Whether to allocate a depth buffer or not. + * @property {boolean} [stencilBuffer=false] - Whether to allocate a stencil buffer or not. + * @property {boolean} [resolveDepthBuffer=true] - Whether to resolve the depth buffer or not. + * @property {boolean} [resolveStencilBuffer=true] - Whether to resolve the stencil buffer or not. + * @property {?Texture} [depthTexture=null] - Reference to a depth texture. + * @property {number} [samples=0] - The MSAA samples count. + * @property {number} [count=1] - Defines the number of color attachments . Must be at least `1`. + */ + + /** + * Constructs a new render target. + * + * @param {number} [width=1] - The width of the render target. + * @param {number} [height=1] - The height of the render target. + * @param {RenderTarget~Options} [options] - The configuration object. + */ + constructor( width = 1, height = 1, options = {} ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isRenderTarget = true; + + /** + * The width of the render target. + * + * @type {number} + * @default 1 + */ + this.width = width; + + /** + * The height of the render target. + * + * @type {number} + * @default 1 + */ + this.height = height; + + /** + * The depth of the render target. + * + * @type {number} + * @default 1 + */ + this.depth = 1; + + /** + * A rectangular area inside the render target's viewport. Fragments that are + * outside the area will be discarded. + * + * @type {Vector4} + * @default (0,0,width,height) + */ + this.scissor = new Vector4( 0, 0, width, height ); + + /** + * Indicates whether the scissor test should be enabled when rendering into + * this render target or not. + * + * @type {boolean} + * @default false + */ + this.scissorTest = false; + + /** + * A rectangular area representing the render target's viewport. + * + * @type {Vector4} + * @default (0,0,width,height) + */ + this.viewport = new Vector4( 0, 0, width, height ); + + const image = { width: width, height: height, depth: 1 }; + + options = Object.assign( { + generateMipmaps: false, + internalFormat: null, + minFilter: LinearFilter, + depthBuffer: true, + stencilBuffer: false, + resolveDepthBuffer: true, + resolveStencilBuffer: true, + depthTexture: null, + samples: 0, + count: 1 + }, options ); + + const texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace ); + + texture.flipY = false; + texture.generateMipmaps = options.generateMipmaps; + texture.internalFormat = options.internalFormat; + + /** + * An array of textures. Each color attachment is represented as a separate texture. + * Has at least a single entry for the default color attachment. + * + * @type {Array} + */ + this.textures = []; + + const count = options.count; + for ( let i = 0; i < count; i ++ ) { + + this.textures[ i ] = texture.clone(); + this.textures[ i ].isRenderTargetTexture = true; + this.textures[ i ].renderTarget = this; + + } + + /** + * Whether to allocate a depth buffer or not. + * + * @type {boolean} + * @default true + */ + this.depthBuffer = options.depthBuffer; + + /** + * Whether to allocate a stencil buffer or not. + * + * @type {boolean} + * @default false + */ + this.stencilBuffer = options.stencilBuffer; + + /** + * Whether to resolve the depth buffer or not. + * + * @type {boolean} + * @default true + */ + this.resolveDepthBuffer = options.resolveDepthBuffer; + + /** + * Whether to resolve the stencil buffer or not. + * + * @type {boolean} + * @default true + */ + this.resolveStencilBuffer = options.resolveStencilBuffer; + + this._depthTexture = options.depthTexture; + + /** + * The number of MSAA samples. + * + * A value of `0` disables MSAA. + * + * @type {number} + * @default 0 + */ + this.samples = options.samples; + + } + + /** + * The texture representing the default color attachment. + * + * @type {Texture} + */ + get texture() { + + return this.textures[ 0 ]; + + } + + set texture( value ) { + + this.textures[ 0 ] = value; + + } + + set depthTexture( current ) { + + if ( this._depthTexture !== null ) this._depthTexture.renderTarget = null; + if ( current !== null ) current.renderTarget = this; + + this._depthTexture = current; + + } + + /** + * Instead of saving the depth in a renderbuffer, a texture + * can be used instead which is useful for further processing + * e.g. in context of post-processing. + * + * @type {?DepthTexture} + * @default null + */ + get depthTexture() { + + return this._depthTexture; + + } + + /** + * Sets the size of this render target. + * + * @param {number} width - The width. + * @param {number} height - The height. + * @param {number} [depth=1] - The depth. + */ + setSize( width, height, depth = 1 ) { + + if ( this.width !== width || this.height !== height || this.depth !== depth ) { + + this.width = width; + this.height = height; + this.depth = depth; + + for ( let i = 0, il = this.textures.length; i < il; i ++ ) { + + this.textures[ i ].image.width = width; + this.textures[ i ].image.height = height; + this.textures[ i ].image.depth = depth; + + } + + this.dispose(); + + } + + this.viewport.set( 0, 0, width, height ); + this.scissor.set( 0, 0, width, height ); + + } + + /** + * Returns a new render target with copied values from this instance. + * + * @return {RenderTarget} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + + /** + * Copies the settings of the given render target. This is a structural copy so + * no resources are shared between render targets after the copy. That includes + * all MRT textures and the depth texture. + * + * @param {RenderTarget} source - The render target to copy. + * @return {RenderTarget} A reference to this instance. + */ + copy( source ) { + + this.width = source.width; + this.height = source.height; + this.depth = source.depth; + + this.scissor.copy( source.scissor ); + this.scissorTest = source.scissorTest; + + this.viewport.copy( source.viewport ); + + this.textures.length = 0; + + for ( let i = 0, il = source.textures.length; i < il; i ++ ) { + + this.textures[ i ] = source.textures[ i ].clone(); + this.textures[ i ].isRenderTargetTexture = true; + this.textures[ i ].renderTarget = this; + + // ensure image object is not shared, see #20328 + + const image = Object.assign( {}, source.textures[ i ].image ); + this.textures[ i ].source = new Source( image ); + + } + + this.depthBuffer = source.depthBuffer; + this.stencilBuffer = source.stencilBuffer; + + this.resolveDepthBuffer = source.resolveDepthBuffer; + this.resolveStencilBuffer = source.resolveStencilBuffer; + + if ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone(); + + this.samples = source.samples; + + return this; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + * + * @fires RenderTarget#dispose + */ + dispose() { + + this.dispatchEvent( { type: 'dispose' } ); + + } + +} + +/** + * A render target used in context of {@link WebGLRenderer}. + * + * @augments RenderTarget + */ +class WebGLRenderTarget extends RenderTarget { + + /** + * Constructs a new 3D render target. + * + * @param {number} [width=1] - The width of the render target. + * @param {number} [height=1] - The height of the render target. + * @param {RenderTarget~Options} [options] - The configuration object. + */ + constructor( width = 1, height = 1, options = {} ) { + + super( width, height, options ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isWebGLRenderTarget = true; + + } + +} + +/** + * Creates an array of textures directly from raw buffer data. + * + * @augments Texture + */ +class DataArrayTexture extends Texture { + + /** + * Constructs a new data array texture. + * + * @param {?TypedArray} [data=null] - The buffer data. + * @param {number} [width=1] - The width of the texture. + * @param {number} [height=1] - The height of the texture. + * @param {number} [depth=1] - The depth of the texture. + */ + constructor( data = null, width = 1, height = 1, depth = 1 ) { + + super( null ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isDataArrayTexture = true; + + /** + * The image definition of a data texture. + * + * @type {{data:TypedArray,width:number,height:number,depth:number}} + */ + this.image = { data, width, height, depth }; + + /** + * How the texture is sampled when a texel covers more than one pixel. + * + * Overwritten and set to `NearestFilter` by default. + * + * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)} + * @default NearestFilter + */ + this.magFilter = NearestFilter; + + /** + * How the texture is sampled when a texel covers less than one pixel. + * + * Overwritten and set to `NearestFilter` by default. + * + * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)} + * @default NearestFilter + */ + this.minFilter = NearestFilter; + + /** + * This defines how the texture is wrapped in the depth and corresponds to + * *W* in UVW mapping. + * + * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)} + * @default ClampToEdgeWrapping + */ + this.wrapR = ClampToEdgeWrapping; + + /** + * Whether to generate mipmaps (if possible) for a texture. + * + * Overwritten and set to `false` by default. + * + * @type {boolean} + * @default false + */ + this.generateMipmaps = false; + + /** + * If set to `true`, the texture is flipped along the vertical axis when + * uploaded to the GPU. + * + * Overwritten and set to `false` by default. + * + * @type {boolean} + * @default false + */ + this.flipY = false; + + /** + * Specifies the alignment requirements for the start of each pixel row in memory. + * + * Overwritten and set to `1` by default. + * + * @type {boolean} + * @default 1 + */ + this.unpackAlignment = 1; + + /** + * A set of all layers which need to be updated in the texture. + * + * @type {Set} + */ + this.layerUpdates = new Set(); + + } + + /** + * Describes that a specific layer of the texture needs to be updated. + * Normally when {@link Texture#needsUpdate} is set to `true`, the + * entire data texture array is sent to the GPU. Marking specific + * layers will only transmit subsets of all mipmaps associated with a + * specific depth in the array which is often much more performant. + * + * @param {number} layerIndex - The layer index that should be updated. + */ + addLayerUpdate( layerIndex ) { + + this.layerUpdates.add( layerIndex ); + + } + + /** + * Resets the layer updates registry. + */ + clearLayerUpdates() { + + this.layerUpdates.clear(); + + } + +} + +/** + * An array render target used in context of {@link WebGLRenderer}. + * + * @augments WebGLRenderTarget + */ +class WebGLArrayRenderTarget extends WebGLRenderTarget { + + /** + * Constructs a new array render target. + * + * @param {number} [width=1] - The width of the render target. + * @param {number} [height=1] - The height of the render target. + * @param {number} [depth=1] - The height of the render target. + * @param {RenderTarget~Options} [options] - The configuration object. + */ + constructor( width = 1, height = 1, depth = 1, options = {} ) { + + super( width, height, options ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isWebGLArrayRenderTarget = true; + + this.depth = depth; + + /** + * Overwritten with a different texture type. + * + * @type {DataArrayTexture} + */ + this.texture = new DataArrayTexture( null, width, height, depth ); + + this.texture.isRenderTargetTexture = true; + + } + +} + +/** + * Creates a three-dimensional texture from raw data, with parameters to + * divide it into width, height, and depth. + * + * @augments Texture + */ +class Data3DTexture extends Texture { + + /** + * Constructs a new data array texture. + * + * @param {?TypedArray} [data=null] - The buffer data. + * @param {number} [width=1] - The width of the texture. + * @param {number} [height=1] - The height of the texture. + * @param {number} [depth=1] - The depth of the texture. + */ + constructor( data = null, width = 1, height = 1, depth = 1 ) { + + // We're going to add .setXXX() methods for setting properties later. + // Users can still set in Data3DTexture directly. + // + // const texture = new THREE.Data3DTexture( data, width, height, depth ); + // texture.anisotropy = 16; + // + // See #14839 + + super( null ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isData3DTexture = true; + + /** + * The image definition of a data texture. + * + * @type {{data:TypedArray,width:number,height:number,depth:number}} + */ + this.image = { data, width, height, depth }; + + /** + * How the texture is sampled when a texel covers more than one pixel. + * + * Overwritten and set to `NearestFilter` by default. + * + * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)} + * @default NearestFilter + */ + this.magFilter = NearestFilter; + + /** + * How the texture is sampled when a texel covers less than one pixel. + * + * Overwritten and set to `NearestFilter` by default. + * + * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)} + * @default NearestFilter + */ + this.minFilter = NearestFilter; + + /** + * This defines how the texture is wrapped in the depth and corresponds to + * *W* in UVW mapping. + * + * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)} + * @default ClampToEdgeWrapping + */ + this.wrapR = ClampToEdgeWrapping; + + /** + * Whether to generate mipmaps (if possible) for a texture. + * + * Overwritten and set to `false` by default. + * + * @type {boolean} + * @default false + */ + this.generateMipmaps = false; + + /** + * If set to `true`, the texture is flipped along the vertical axis when + * uploaded to the GPU. + * + * Overwritten and set to `false` by default. + * + * @type {boolean} + * @default false + */ + this.flipY = false; + + /** + * Specifies the alignment requirements for the start of each pixel row in memory. + * + * Overwritten and set to `1` by default. + * + * @type {boolean} + * @default 1 + */ + this.unpackAlignment = 1; + + } + +} + +/** + * A 3D render target used in context of {@link WebGLRenderer}. + * + * @augments WebGLRenderTarget + */ +class WebGL3DRenderTarget extends WebGLRenderTarget { + + /** + * Constructs a new 3D render target. + * + * @param {number} [width=1] - The width of the render target. + * @param {number} [height=1] - The height of the render target. + * @param {number} [depth=1] - The height of the render target. + * @param {RenderTarget~Options} [options] - The configuration object. + */ + constructor( width = 1, height = 1, depth = 1, options = {} ) { + + super( width, height, options ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isWebGL3DRenderTarget = true; + + this.depth = depth; + + /** + * Overwritten with a different texture type. + * + * @type {Data3DTexture} + */ + this.texture = new Data3DTexture( null, width, height, depth ); + + this.texture.isRenderTargetTexture = true; + + } + +} + +/** + * Class for representing a Quaternion. Quaternions are used in three.js to represent rotations. + * + * Iterating through a vector instance will yield its components `(x, y, z, w)` in + * the corresponding order. + * + * Note that three.js expects Quaternions to be normalized. + * ```js + * const quaternion = new THREE.Quaternion(); + * quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 ); + * + * const vector = new THREE.Vector3( 1, 0, 0 ); + * vector.applyQuaternion( quaternion ); + * ``` + */ +class Quaternion { + + /** + * Constructs a new quaternion. + * + * @param {number} [x=0] - The x value of this quaternion. + * @param {number} [y=0] - The y value of this quaternion. + * @param {number} [z=0] - The z value of this quaternion. + * @param {number} [w=1] - The w value of this quaternion. + */ + constructor( x = 0, y = 0, z = 0, w = 1 ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isQuaternion = true; + + this._x = x; + this._y = y; + this._z = z; + this._w = w; + + } + + /** + * Interpolates between two quaternions via SLERP. This implementation assumes the + * quaternion data are managed in flat arrays. + * + * @param {Array} dst - The destination array. + * @param {number} dstOffset - An offset into the destination array. + * @param {Array} src0 - The source array of the first quaternion. + * @param {number} srcOffset0 - An offset into the first source array. + * @param {Array} src1 - The source array of the second quaternion. + * @param {number} srcOffset1 - An offset into the second source array. + * @param {number} t - The interpolation factor in the range `[0,1]`. + * @see {@link Quaternion#slerp} + */ + static slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) { + + // fuzz-free, array-based Quaternion SLERP operation + + let x0 = src0[ srcOffset0 + 0 ], + y0 = src0[ srcOffset0 + 1 ], + z0 = src0[ srcOffset0 + 2 ], + w0 = src0[ srcOffset0 + 3 ]; + + const x1 = src1[ srcOffset1 + 0 ], + y1 = src1[ srcOffset1 + 1 ], + z1 = src1[ srcOffset1 + 2 ], + w1 = src1[ srcOffset1 + 3 ]; + + if ( t === 0 ) { + + dst[ dstOffset + 0 ] = x0; + dst[ dstOffset + 1 ] = y0; + dst[ dstOffset + 2 ] = z0; + dst[ dstOffset + 3 ] = w0; + return; + + } + + if ( t === 1 ) { + + dst[ dstOffset + 0 ] = x1; + dst[ dstOffset + 1 ] = y1; + dst[ dstOffset + 2 ] = z1; + dst[ dstOffset + 3 ] = w1; + return; + + } + + if ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) { + + let s = 1 - t; + const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, + dir = ( cos >= 0 ? 1 : -1 ), + sqrSin = 1 - cos * cos; + + // Skip the Slerp for tiny steps to avoid numeric problems: + if ( sqrSin > Number.EPSILON ) { + + const sin = Math.sqrt( sqrSin ), + len = Math.atan2( sin, cos * dir ); + + s = Math.sin( s * len ) / sin; + t = Math.sin( t * len ) / sin; + + } + + const tDir = t * dir; + + x0 = x0 * s + x1 * tDir; + y0 = y0 * s + y1 * tDir; + z0 = z0 * s + z1 * tDir; + w0 = w0 * s + w1 * tDir; + + // Normalize in case we just did a lerp: + if ( s === 1 - t ) { + + const f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 ); + + x0 *= f; + y0 *= f; + z0 *= f; + w0 *= f; + + } + + } + + dst[ dstOffset ] = x0; + dst[ dstOffset + 1 ] = y0; + dst[ dstOffset + 2 ] = z0; + dst[ dstOffset + 3 ] = w0; + + } + + /** + * Multiplies two quaternions. This implementation assumes the quaternion data are managed + * in flat arrays. + * + * @param {Array} dst - The destination array. + * @param {number} dstOffset - An offset into the destination array. + * @param {Array} src0 - The source array of the first quaternion. + * @param {number} srcOffset0 - An offset into the first source array. + * @param {Array} src1 - The source array of the second quaternion. + * @param {number} srcOffset1 - An offset into the second source array. + * @return {Array} The destination array. + * @see {@link Quaternion#multiplyQuaternions}. + */ + static multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) { + + const x0 = src0[ srcOffset0 ]; + const y0 = src0[ srcOffset0 + 1 ]; + const z0 = src0[ srcOffset0 + 2 ]; + const w0 = src0[ srcOffset0 + 3 ]; + + const x1 = src1[ srcOffset1 ]; + const y1 = src1[ srcOffset1 + 1 ]; + const z1 = src1[ srcOffset1 + 2 ]; + const w1 = src1[ srcOffset1 + 3 ]; + + dst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1; + dst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1; + dst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1; + dst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1; + + return dst; + + } + + /** + * The x value of this quaternion. + * + * @type {number} + * @default 0 + */ + get x() { + + return this._x; + + } + + set x( value ) { + + this._x = value; + this._onChangeCallback(); + + } + + /** + * The y value of this quaternion. + * + * @type {number} + * @default 0 + */ + get y() { + + return this._y; + + } + + set y( value ) { + + this._y = value; + this._onChangeCallback(); + + } + + /** + * The z value of this quaternion. + * + * @type {number} + * @default 0 + */ + get z() { + + return this._z; + + } + + set z( value ) { + + this._z = value; + this._onChangeCallback(); + + } + + /** + * The w value of this quaternion. + * + * @type {number} + * @default 1 + */ + get w() { + + return this._w; + + } + + set w( value ) { + + this._w = value; + this._onChangeCallback(); + + } + + /** + * Sets the quaternion components. + * + * @param {number} x - The x value of this quaternion. + * @param {number} y - The y value of this quaternion. + * @param {number} z - The z value of this quaternion. + * @param {number} w - The w value of this quaternion. + * @return {Quaternion} A reference to this quaternion. + */ + set( x, y, z, w ) { + + this._x = x; + this._y = y; + this._z = z; + this._w = w; + + this._onChangeCallback(); + + return this; + + } + + /** + * Returns a new quaternion with copied values from this instance. + * + * @return {Quaternion} A clone of this instance. + */ + clone() { + + return new this.constructor( this._x, this._y, this._z, this._w ); + + } + + /** + * Copies the values of the given quaternion to this instance. + * + * @param {Quaternion} quaternion - The quaternion to copy. + * @return {Quaternion} A reference to this quaternion. + */ + copy( quaternion ) { + + this._x = quaternion.x; + this._y = quaternion.y; + this._z = quaternion.z; + this._w = quaternion.w; + + this._onChangeCallback(); + + return this; + + } + + /** + * Sets this quaternion from the rotation specified by the given + * Euler angles. + * + * @param {Euler} euler - The Euler angles. + * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not. + * @return {Quaternion} A reference to this quaternion. + */ + setFromEuler( euler, update = true ) { + + const x = euler._x, y = euler._y, z = euler._z, order = euler._order; + + // http://www.mathworks.com/matlabcentral/fileexchange/ + // 20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/ + // content/SpinCalc.m + + const cos = Math.cos; + const sin = Math.sin; + + const c1 = cos( x / 2 ); + const c2 = cos( y / 2 ); + const c3 = cos( z / 2 ); + + const s1 = sin( x / 2 ); + const s2 = sin( y / 2 ); + const s3 = sin( z / 2 ); + + switch ( order ) { + + case 'XYZ': + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + break; + + case 'YXZ': + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + break; + + case 'ZXY': + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + break; + + case 'ZYX': + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + break; + + case 'YZX': + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + break; + + case 'XZY': + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + break; + + default: + console.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order ); + + } + + if ( update === true ) this._onChangeCallback(); + + return this; + + } + + /** + * Sets this quaternion from the given axis and angle. + * + * @param {Vector3} axis - The normalized axis. + * @param {number} angle - The angle in radians. + * @return {Quaternion} A reference to this quaternion. + */ + setFromAxisAngle( axis, angle ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm + + const halfAngle = angle / 2, s = Math.sin( halfAngle ); + + this._x = axis.x * s; + this._y = axis.y * s; + this._z = axis.z * s; + this._w = Math.cos( halfAngle ); + + this._onChangeCallback(); + + return this; + + } + + /** + * Sets this quaternion from the given rotation matrix. + * + * @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled). + * @return {Quaternion} A reference to this quaternion. + */ + setFromRotationMatrix( m ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + const te = m.elements, + + m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], + m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], + m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ], + + trace = m11 + m22 + m33; + + if ( trace > 0 ) { + + const s = 0.5 / Math.sqrt( trace + 1.0 ); + + this._w = 0.25 / s; + this._x = ( m32 - m23 ) * s; + this._y = ( m13 - m31 ) * s; + this._z = ( m21 - m12 ) * s; + + } else if ( m11 > m22 && m11 > m33 ) { + + const s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 ); + + this._w = ( m32 - m23 ) / s; + this._x = 0.25 * s; + this._y = ( m12 + m21 ) / s; + this._z = ( m13 + m31 ) / s; + + } else if ( m22 > m33 ) { + + const s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 ); + + this._w = ( m13 - m31 ) / s; + this._x = ( m12 + m21 ) / s; + this._y = 0.25 * s; + this._z = ( m23 + m32 ) / s; + + } else { + + const s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 ); + + this._w = ( m21 - m12 ) / s; + this._x = ( m13 + m31 ) / s; + this._y = ( m23 + m32 ) / s; + this._z = 0.25 * s; + + } + + this._onChangeCallback(); + + return this; + + } + + /** + * Sets this quaternion to the rotation required to rotate the direction vector + * `vFrom` to the direction vector `vTo`. + * + * @param {Vector3} vFrom - The first (normalized) direction vector. + * @param {Vector3} vTo - The second (normalized) direction vector. + * @return {Quaternion} A reference to this quaternion. + */ + setFromUnitVectors( vFrom, vTo ) { + + // assumes direction vectors vFrom and vTo are normalized + + let r = vFrom.dot( vTo ) + 1; + + if ( r < Number.EPSILON ) { + + // vFrom and vTo point in opposite directions + + r = 0; + + if ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) { + + this._x = - vFrom.y; + this._y = vFrom.x; + this._z = 0; + this._w = r; + + } else { + + this._x = 0; + this._y = - vFrom.z; + this._z = vFrom.y; + this._w = r; + + } + + } else { + + // crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3 + + this._x = vFrom.y * vTo.z - vFrom.z * vTo.y; + this._y = vFrom.z * vTo.x - vFrom.x * vTo.z; + this._z = vFrom.x * vTo.y - vFrom.y * vTo.x; + this._w = r; + + } + + return this.normalize(); + + } + + /** + * Returns the angle between this quaternion and the given one in radians. + * + * @param {Quaternion} q - The quaternion to compute the angle with. + * @return {number} The angle in radians. + */ + angleTo( q ) { + + return 2 * Math.acos( Math.abs( clamp( this.dot( q ), -1, 1 ) ) ); + + } + + /** + * Rotates this quaternion by a given angular step to the given quaternion. + * The method ensures that the final quaternion will not overshoot `q`. + * + * @param {Quaternion} q - The target quaternion. + * @param {number} step - The angular step in radians. + * @return {Quaternion} A reference to this quaternion. + */ + rotateTowards( q, step ) { + + const angle = this.angleTo( q ); + + if ( angle === 0 ) return this; + + const t = Math.min( 1, step / angle ); + + this.slerp( q, t ); + + return this; + + } + + /** + * Sets this quaternion to the identity quaternion; that is, to the + * quaternion that represents "no rotation". + * + * @return {Quaternion} A reference to this quaternion. + */ + identity() { + + return this.set( 0, 0, 0, 1 ); + + } + + /** + * Inverts this quaternion via {@link Quaternion#conjugate}. The + * quaternion is assumed to have unit length. + * + * @return {Quaternion} A reference to this quaternion. + */ + invert() { + + return this.conjugate(); + + } + + /** + * Returns the rotational conjugate of this quaternion. The conjugate of a + * quaternion represents the same rotation in the opposite direction about + * the rotational axis. + * + * @return {Quaternion} A reference to this quaternion. + */ + conjugate() { + + this._x *= -1; + this._y *= -1; + this._z *= -1; + + this._onChangeCallback(); + + return this; + + } + + /** + * Calculates the dot product of this quaternion and the given one. + * + * @param {Quaternion} v - The quaternion to compute the dot product with. + * @return {number} The result of the dot product. + */ + dot( v ) { + + return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w; + + } + + /** + * Computes the squared Euclidean length (straight-line length) of this quaternion, + * considered as a 4 dimensional vector. This can be useful if you are comparing the + * lengths of two quaternions, as this is a slightly more efficient calculation than + * {@link Quaternion#length}. + * + * @return {number} The squared Euclidean length. + */ + lengthSq() { + + return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w; + + } + + /** + * Computes the Euclidean length (straight-line length) of this quaternion, + * considered as a 4 dimensional vector. + * + * @return {number} The Euclidean length. + */ + length() { + + return Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w ); + + } + + /** + * Normalizes this quaternion - that is, calculated the quaternion that performs + * the same rotation as this one, but has a length equal to `1`. + * + * @return {Quaternion} A reference to this quaternion. + */ + normalize() { + + let l = this.length(); + + if ( l === 0 ) { + + this._x = 0; + this._y = 0; + this._z = 0; + this._w = 1; + + } else { + + l = 1 / l; + + this._x = this._x * l; + this._y = this._y * l; + this._z = this._z * l; + this._w = this._w * l; + + } + + this._onChangeCallback(); + + return this; + + } + + /** + * Multiplies this quaternion by the given one. + * + * @param {Quaternion} q - The quaternion. + * @return {Quaternion} A reference to this quaternion. + */ + multiply( q ) { + + return this.multiplyQuaternions( this, q ); + + } + + /** + * Pre-multiplies this quaternion by the given one. + * + * @param {Quaternion} q - The quaternion. + * @return {Quaternion} A reference to this quaternion. + */ + premultiply( q ) { + + return this.multiplyQuaternions( q, this ); + + } + + /** + * Multiplies the given quaternions and stores the result in this instance. + * + * @param {Quaternion} a - The first quaternion. + * @param {Quaternion} b - The second quaternion. + * @return {Quaternion} A reference to this quaternion. + */ + multiplyQuaternions( a, b ) { + + // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm + + const qax = a._x, qay = a._y, qaz = a._z, qaw = a._w; + const qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w; + + this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; + this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; + this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; + this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; + + this._onChangeCallback(); + + return this; + + } + + /** + * Performs a spherical linear interpolation between quaternions. + * + * @param {Quaternion} qb - The target quaternion. + * @param {number} t - The interpolation factor in the closed interval `[0, 1]`. + * @return {Quaternion} A reference to this quaternion. + */ + slerp( qb, t ) { + + if ( t === 0 ) return this; + if ( t === 1 ) return this.copy( qb ); + + const x = this._x, y = this._y, z = this._z, w = this._w; + + // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/ + + let cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z; + + if ( cosHalfTheta < 0 ) { + + this._w = - qb._w; + this._x = - qb._x; + this._y = - qb._y; + this._z = - qb._z; + + cosHalfTheta = - cosHalfTheta; + + } else { + + this.copy( qb ); + + } + + if ( cosHalfTheta >= 1.0 ) { + + this._w = w; + this._x = x; + this._y = y; + this._z = z; + + return this; + + } + + const sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta; + + if ( sqrSinHalfTheta <= Number.EPSILON ) { + + const s = 1 - t; + this._w = s * w + t * this._w; + this._x = s * x + t * this._x; + this._y = s * y + t * this._y; + this._z = s * z + t * this._z; + + this.normalize(); // normalize calls _onChangeCallback() + + return this; + + } + + const sinHalfTheta = Math.sqrt( sqrSinHalfTheta ); + const halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta ); + const ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta, + ratioB = Math.sin( t * halfTheta ) / sinHalfTheta; + + this._w = ( w * ratioA + this._w * ratioB ); + this._x = ( x * ratioA + this._x * ratioB ); + this._y = ( y * ratioA + this._y * ratioB ); + this._z = ( z * ratioA + this._z * ratioB ); + + this._onChangeCallback(); + + return this; + + } + + /** + * Performs a spherical linear interpolation between the given quaternions + * and stores the result in this quaternion. + * + * @param {Quaternion} qa - The source quaternion. + * @param {Quaternion} qb - The target quaternion. + * @param {number} t - The interpolation factor in the closed interval `[0, 1]`. + * @return {Quaternion} A reference to this quaternion. + */ + slerpQuaternions( qa, qb, t ) { + + return this.copy( qa ).slerp( qb, t ); + + } + + /** + * Sets this quaternion to a uniformly random, normalized quaternion. + * + * @return {Quaternion} A reference to this quaternion. + */ + random() { + + // Ken Shoemake + // Uniform random rotations + // D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992. + + const theta1 = 2 * Math.PI * Math.random(); + const theta2 = 2 * Math.PI * Math.random(); + + const x0 = Math.random(); + const r1 = Math.sqrt( 1 - x0 ); + const r2 = Math.sqrt( x0 ); + + return this.set( + r1 * Math.sin( theta1 ), + r1 * Math.cos( theta1 ), + r2 * Math.sin( theta2 ), + r2 * Math.cos( theta2 ), + ); + + } + + /** + * Returns `true` if this quaternion is equal with the given one. + * + * @param {Quaternion} quaternion - The quaternion to test for equality. + * @return {boolean} Whether this quaternion is equal with the given one. + */ + equals( quaternion ) { + + return ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w ); + + } + + /** + * Sets this quaternion's components from the given array. + * + * @param {Array} array - An array holding the quaternion component values. + * @param {number} [offset=0] - The offset into the array. + * @return {Quaternion} A reference to this quaternion. + */ + fromArray( array, offset = 0 ) { + + this._x = array[ offset ]; + this._y = array[ offset + 1 ]; + this._z = array[ offset + 2 ]; + this._w = array[ offset + 3 ]; + + this._onChangeCallback(); + + return this; + + } + + /** + * Writes the components of this quaternion to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the quaternion components. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The quaternion components. + */ + toArray( array = [], offset = 0 ) { + + array[ offset ] = this._x; + array[ offset + 1 ] = this._y; + array[ offset + 2 ] = this._z; + array[ offset + 3 ] = this._w; + + return array; + + } + + /** + * Sets the components of this quaternion from the given buffer attribute. + * + * @param {BufferAttribute} attribute - The buffer attribute holding quaternion data. + * @param {number} index - The index into the attribute. + * @return {Quaternion} A reference to this quaternion. + */ + fromBufferAttribute( attribute, index ) { + + this._x = attribute.getX( index ); + this._y = attribute.getY( index ); + this._z = attribute.getZ( index ); + this._w = attribute.getW( index ); + + this._onChangeCallback(); + + return this; + + } + + /** + * This methods defines the serialization result of this class. Returns the + * numerical elements of this quaternion in an array of format `[x, y, z, w]`. + * + * @return {Array} The serialized quaternion. + */ + toJSON() { + + return this.toArray(); + + } + + _onChange( callback ) { + + this._onChangeCallback = callback; + + return this; + + } + + _onChangeCallback() {} + + *[ Symbol.iterator ]() { + + yield this._x; + yield this._y; + yield this._z; + yield this._w; + + } + +} + +/** + * Class representing a 3D vector. A 3D vector is an ordered triplet of numbers + * (labeled x, y and z), which can be used to represent a number of things, such as: + * + * - A point in 3D space. + * - A direction and length in 3D space. In three.js the length will + * always be the Euclidean distance(straight-line distance) from `(0, 0, 0)` to `(x, y, z)` + * and the direction is also measured from `(0, 0, 0)` towards `(x, y, z)`. + * - Any arbitrary ordered triplet of numbers. + * + * There are other things a 3D vector can be used to represent, such as + * momentum vectors and so on, however these are the most + * common uses in three.js. + * + * Iterating through a vector instance will yield its components `(x, y, z)` in + * the corresponding order. + * ```js + * const a = new THREE.Vector3( 0, 1, 0 ); + * + * //no arguments; will be initialised to (0, 0, 0) + * const b = new THREE.Vector3( ); + * + * const d = a.distanceTo( b ); + * ``` + */ +class Vector3 { + + /** + * Constructs a new 3D vector. + * + * @param {number} [x=0] - The x value of this vector. + * @param {number} [y=0] - The y value of this vector. + * @param {number} [z=0] - The z value of this vector. + */ + constructor( x = 0, y = 0, z = 0 ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + Vector3.prototype.isVector3 = true; + + /** + * The x value of this vector. + * + * @type {number} + */ + this.x = x; + + /** + * The y value of this vector. + * + * @type {number} + */ + this.y = y; + + /** + * The z value of this vector. + * + * @type {number} + */ + this.z = z; + + } + + /** + * Sets the vector components. + * + * @param {number} x - The value of the x component. + * @param {number} y - The value of the y component. + * @param {number} z - The value of the z component. + * @return {Vector3} A reference to this vector. + */ + set( x, y, z ) { + + if ( z === undefined ) z = this.z; // sprite.scale.set(x,y) + + this.x = x; + this.y = y; + this.z = z; + + return this; + + } + + /** + * Sets the vector components to the same value. + * + * @param {number} scalar - The value to set for all vector components. + * @return {Vector3} A reference to this vector. + */ + setScalar( scalar ) { + + this.x = scalar; + this.y = scalar; + this.z = scalar; + + return this; + + } + + /** + * Sets the vector's x component to the given value + * + * @param {number} x - The value to set. + * @return {Vector3} A reference to this vector. + */ + setX( x ) { + + this.x = x; + + return this; + + } + + /** + * Sets the vector's y component to the given value + * + * @param {number} y - The value to set. + * @return {Vector3} A reference to this vector. + */ + setY( y ) { + + this.y = y; + + return this; + + } + + /** + * Sets the vector's z component to the given value + * + * @param {number} z - The value to set. + * @return {Vector3} A reference to this vector. + */ + setZ( z ) { + + this.z = z; + + return this; + + } + + /** + * Allows to set a vector component with an index. + * + * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z. + * @param {number} value - The value to set. + * @return {Vector3} A reference to this vector. + */ + setComponent( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + case 2: this.z = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + } + + /** + * Returns the value of the vector component which matches the given index. + * + * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z. + * @return {number} A vector component value. + */ + getComponent( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + case 2: return this.z; + default: throw new Error( 'index is out of range: ' + index ); + + } + + } + + /** + * Returns a new vector with copied values from this instance. + * + * @return {Vector3} A clone of this instance. + */ + clone() { + + return new this.constructor( this.x, this.y, this.z ); + + } + + /** + * Copies the values of the given vector to this instance. + * + * @param {Vector3} v - The vector to copy. + * @return {Vector3} A reference to this vector. + */ + copy( v ) { + + this.x = v.x; + this.y = v.y; + this.z = v.z; + + return this; + + } + + /** + * Adds the given vector to this instance. + * + * @param {Vector3} v - The vector to add. + * @return {Vector3} A reference to this vector. + */ + add( v ) { + + this.x += v.x; + this.y += v.y; + this.z += v.z; + + return this; + + } + + /** + * Adds the given scalar value to all components of this instance. + * + * @param {number} s - The scalar to add. + * @return {Vector3} A reference to this vector. + */ + addScalar( s ) { + + this.x += s; + this.y += s; + this.z += s; + + return this; + + } + + /** + * Adds the given vectors and stores the result in this instance. + * + * @param {Vector3} a - The first vector. + * @param {Vector3} b - The second vector. + * @return {Vector3} A reference to this vector. + */ + addVectors( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + + return this; + + } + + /** + * Adds the given vector scaled by the given factor to this instance. + * + * @param {Vector3|Vector4} v - The vector. + * @param {number} s - The factor that scales `v`. + * @return {Vector3} A reference to this vector. + */ + addScaledVector( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + + return this; + + } + + /** + * Subtracts the given vector from this instance. + * + * @param {Vector3} v - The vector to subtract. + * @return {Vector3} A reference to this vector. + */ + sub( v ) { + + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + + return this; + + } + + /** + * Subtracts the given scalar value from all components of this instance. + * + * @param {number} s - The scalar to subtract. + * @return {Vector3} A reference to this vector. + */ + subScalar( s ) { + + this.x -= s; + this.y -= s; + this.z -= s; + + return this; + + } + + /** + * Subtracts the given vectors and stores the result in this instance. + * + * @param {Vector3} a - The first vector. + * @param {Vector3} b - The second vector. + * @return {Vector3} A reference to this vector. + */ + subVectors( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + + return this; + + } + + /** + * Multiplies the given vector with this instance. + * + * @param {Vector3} v - The vector to multiply. + * @return {Vector3} A reference to this vector. + */ + multiply( v ) { + + this.x *= v.x; + this.y *= v.y; + this.z *= v.z; + + return this; + + } + + /** + * Multiplies the given scalar value with all components of this instance. + * + * @param {number} scalar - The scalar to multiply. + * @return {Vector3} A reference to this vector. + */ + multiplyScalar( scalar ) { + + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + + return this; + + } + + /** + * Multiplies the given vectors and stores the result in this instance. + * + * @param {Vector3} a - The first vector. + * @param {Vector3} b - The second vector. + * @return {Vector3} A reference to this vector. + */ + multiplyVectors( a, b ) { + + this.x = a.x * b.x; + this.y = a.y * b.y; + this.z = a.z * b.z; + + return this; + + } + + /** + * Applies the given Euler rotation to this vector. + * + * @param {Euler} euler - The Euler angles. + * @return {Vector3} A reference to this vector. + */ + applyEuler( euler ) { + + return this.applyQuaternion( _quaternion$4.setFromEuler( euler ) ); + + } + + /** + * Applies a rotation specified by an axis and an angle to this vector. + * + * @param {Vector3} axis - A normalized vector representing the rotation axis. + * @param {number} angle - The angle in radians. + * @return {Vector3} A reference to this vector. + */ + applyAxisAngle( axis, angle ) { + + return this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) ); + + } + + /** + * Multiplies this vector with the given 3x3 matrix. + * + * @param {Matrix3} m - The 3x3 matrix. + * @return {Vector3} A reference to this vector. + */ + applyMatrix3( m ) { + + const x = this.x, y = this.y, z = this.z; + const e = m.elements; + + this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z; + this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z; + this.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z; + + return this; + + } + + /** + * Multiplies this vector by the given normal matrix and normalizes + * the result. + * + * @param {Matrix3} m - The normal matrix. + * @return {Vector3} A reference to this vector. + */ + applyNormalMatrix( m ) { + + return this.applyMatrix3( m ).normalize(); + + } + + /** + * Multiplies this vector (with an implicit 1 in the 4th dimension) by m, and + * divides by perspective. + * + * @param {Matrix4} m - The matrix to apply. + * @return {Vector3} A reference to this vector. + */ + applyMatrix4( m ) { + + const x = this.x, y = this.y, z = this.z; + const e = m.elements; + + const w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] ); + + this.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w; + this.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w; + this.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w; + + return this; + + } + + /** + * Applies the given Quaternion to this vector. + * + * @param {Quaternion} q - The Quaternion. + * @return {Vector3} A reference to this vector. + */ + applyQuaternion( q ) { + + // quaternion q is assumed to have unit length + + const vx = this.x, vy = this.y, vz = this.z; + const qx = q.x, qy = q.y, qz = q.z, qw = q.w; + + // t = 2 * cross( q.xyz, v ); + const tx = 2 * ( qy * vz - qz * vy ); + const ty = 2 * ( qz * vx - qx * vz ); + const tz = 2 * ( qx * vy - qy * vx ); + + // v + q.w * t + cross( q.xyz, t ); + this.x = vx + qw * tx + qy * tz - qz * ty; + this.y = vy + qw * ty + qz * tx - qx * tz; + this.z = vz + qw * tz + qx * ty - qy * tx; + + return this; + + } + + /** + * Projects this vector from world space into the camera's normalized + * device coordinate (NDC) space. + * + * @param {Camera} camera - The camera. + * @return {Vector3} A reference to this vector. + */ + project( camera ) { + + return this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix ); + + } + + /** + * Unprojects this vector from the camera's normalized device coordinate (NDC) + * space into world space. + * + * @param {Camera} camera - The camera. + * @return {Vector3} A reference to this vector. + */ + unproject( camera ) { + + return this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld ); + + } + + /** + * Transforms the direction of this vector by a matrix (the upper left 3 x 3 + * subset of the given 4x4 matrix and then normalizes the result. + * + * @param {Matrix4} m - The matrix. + * @return {Vector3} A reference to this vector. + */ + transformDirection( m ) { + + // input: THREE.Matrix4 affine matrix + // vector interpreted as a direction + + const x = this.x, y = this.y, z = this.z; + const e = m.elements; + + this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z; + this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z; + this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z; + + return this.normalize(); + + } + + /** + * Divides this instance by the given vector. + * + * @param {Vector3} v - The vector to divide. + * @return {Vector3} A reference to this vector. + */ + divide( v ) { + + this.x /= v.x; + this.y /= v.y; + this.z /= v.z; + + return this; + + } + + /** + * Divides this vector by the given scalar. + * + * @param {number} scalar - The scalar to divide. + * @return {Vector3} A reference to this vector. + */ + divideScalar( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + } + + /** + * If this vector's x, y or z value is greater than the given vector's x, y or z + * value, replace that value with the corresponding min value. + * + * @param {Vector3} v - The vector. + * @return {Vector3} A reference to this vector. + */ + min( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + this.z = Math.min( this.z, v.z ); + + return this; + + } + + /** + * If this vector's x, y or z value is less than the given vector's x, y or z + * value, replace that value with the corresponding max value. + * + * @param {Vector3} v - The vector. + * @return {Vector3} A reference to this vector. + */ + max( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + this.z = Math.max( this.z, v.z ); + + return this; + + } + + /** + * If this vector's x, y or z value is greater than the max vector's x, y or z + * value, it is replaced by the corresponding value. + * If this vector's x, y or z value is less than the min vector's x, y or z value, + * it is replaced by the corresponding value. + * + * @param {Vector3} min - The minimum x, y and z values. + * @param {Vector3} max - The maximum x, y and z values in the desired range. + * @return {Vector3} A reference to this vector. + */ + clamp( min, max ) { + + // assumes min < max, componentwise + + this.x = clamp( this.x, min.x, max.x ); + this.y = clamp( this.y, min.y, max.y ); + this.z = clamp( this.z, min.z, max.z ); + + return this; + + } + + /** + * If this vector's x, y or z values are greater than the max value, they are + * replaced by the max value. + * If this vector's x, y or z values are less than the min value, they are + * replaced by the min value. + * + * @param {number} minVal - The minimum value the components will be clamped to. + * @param {number} maxVal - The maximum value the components will be clamped to. + * @return {Vector3} A reference to this vector. + */ + clampScalar( minVal, maxVal ) { + + this.x = clamp( this.x, minVal, maxVal ); + this.y = clamp( this.y, minVal, maxVal ); + this.z = clamp( this.z, minVal, maxVal ); + + return this; + + } + + /** + * If this vector's length is greater than the max value, it is replaced by + * the max value. + * If this vector's length is less than the min value, it is replaced by the + * min value. + * + * @param {number} min - The minimum value the vector length will be clamped to. + * @param {number} max - The maximum value the vector length will be clamped to. + * @return {Vector3} A reference to this vector. + */ + clampLength( min, max ) { + + const length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) ); + + } + + /** + * The components of this vector are rounded down to the nearest integer value. + * + * @return {Vector3} A reference to this vector. + */ + floor() { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + this.z = Math.floor( this.z ); + + return this; + + } + + /** + * The components of this vector are rounded up to the nearest integer value. + * + * @return {Vector3} A reference to this vector. + */ + ceil() { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + this.z = Math.ceil( this.z ); + + return this; + + } + + /** + * The components of this vector are rounded to the nearest integer value + * + * @return {Vector3} A reference to this vector. + */ + round() { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + this.z = Math.round( this.z ); + + return this; + + } + + /** + * The components of this vector are rounded towards zero (up if negative, + * down if positive) to an integer value. + * + * @return {Vector3} A reference to this vector. + */ + roundToZero() { + + this.x = Math.trunc( this.x ); + this.y = Math.trunc( this.y ); + this.z = Math.trunc( this.z ); + + return this; + + } + + /** + * Inverts this vector - i.e. sets x = -x, y = -y and z = -z. + * + * @return {Vector3} A reference to this vector. + */ + negate() { + + this.x = - this.x; + this.y = - this.y; + this.z = - this.z; + + return this; + + } + + /** + * Calculates the dot product of the given vector with this instance. + * + * @param {Vector3} v - The vector to compute the dot product with. + * @return {number} The result of the dot product. + */ + dot( v ) { + + return this.x * v.x + this.y * v.y + this.z * v.z; + + } + + // TODO lengthSquared? + + /** + * Computes the square of the Euclidean length (straight-line length) from + * (0, 0, 0) to (x, y, z). If you are comparing the lengths of vectors, you should + * compare the length squared instead as it is slightly more efficient to calculate. + * + * @return {number} The square length of this vector. + */ + lengthSq() { + + return this.x * this.x + this.y * this.y + this.z * this.z; + + } + + /** + * Computes the Euclidean length (straight-line length) from (0, 0, 0) to (x, y, z). + * + * @return {number} The length of this vector. + */ + length() { + + return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z ); + + } + + /** + * Computes the Manhattan length of this vector. + * + * @return {number} The length of this vector. + */ + manhattanLength() { + + return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ); + + } + + /** + * Converts this vector to a unit vector - that is, sets it equal to a vector + * with the same direction as this one, but with a vector length of `1`. + * + * @return {Vector3} A reference to this vector. + */ + normalize() { + + return this.divideScalar( this.length() || 1 ); + + } + + /** + * Sets this vector to a vector with the same direction as this one, but + * with the specified length. + * + * @param {number} length - The new length of this vector. + * @return {Vector3} A reference to this vector. + */ + setLength( length ) { + + return this.normalize().multiplyScalar( length ); + + } + + /** + * Linearly interpolates between the given vector and this instance, where + * alpha is the percent distance along the line - alpha = 0 will be this + * vector, and alpha = 1 will be the given one. + * + * @param {Vector3} v - The vector to interpolate towards. + * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`. + * @return {Vector3} A reference to this vector. + */ + lerp( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + this.z += ( v.z - this.z ) * alpha; + + return this; + + } + + /** + * Linearly interpolates between the given vectors, where alpha is the percent + * distance along the line - alpha = 0 will be first vector, and alpha = 1 will + * be the second one. The result is stored in this instance. + * + * @param {Vector3} v1 - The first vector. + * @param {Vector3} v2 - The second vector. + * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`. + * @return {Vector3} A reference to this vector. + */ + lerpVectors( v1, v2, alpha ) { + + this.x = v1.x + ( v2.x - v1.x ) * alpha; + this.y = v1.y + ( v2.y - v1.y ) * alpha; + this.z = v1.z + ( v2.z - v1.z ) * alpha; + + return this; + + } + + /** + * Calculates the cross product of the given vector with this instance. + * + * @param {Vector3} v - The vector to compute the cross product with. + * @return {Vector3} The result of the cross product. + */ + cross( v ) { + + return this.crossVectors( this, v ); + + } + + /** + * Calculates the cross product of the given vectors and stores the result + * in this instance. + * + * @param {Vector3} a - The first vector. + * @param {Vector3} b - The second vector. + * @return {Vector3} A reference to this vector. + */ + crossVectors( a, b ) { + + const ax = a.x, ay = a.y, az = a.z; + const bx = b.x, by = b.y, bz = b.z; + + this.x = ay * bz - az * by; + this.y = az * bx - ax * bz; + this.z = ax * by - ay * bx; + + return this; + + } + + /** + * Projects this vector onto the given one. + * + * @param {Vector3} v - The vector to project to. + * @return {Vector3} A reference to this vector. + */ + projectOnVector( v ) { + + const denominator = v.lengthSq(); + + if ( denominator === 0 ) return this.set( 0, 0, 0 ); + + const scalar = v.dot( this ) / denominator; + + return this.copy( v ).multiplyScalar( scalar ); + + } + + /** + * Projects this vector onto a plane by subtracting this + * vector projected onto the plane's normal from this vector. + * + * @param {Vector3} planeNormal - The plane normal. + * @return {Vector3} A reference to this vector. + */ + projectOnPlane( planeNormal ) { + + _vector$c.copy( this ).projectOnVector( planeNormal ); + + return this.sub( _vector$c ); + + } + + /** + * Reflects this vector off a plane orthogonal to the given normal vector. + * + * @param {Vector3} normal - The (normalized) normal vector. + * @return {Vector3} A reference to this vector. + */ + reflect( normal ) { + + return this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) ); + + } + /** + * Returns the angle between the given vector and this instance in radians. + * + * @param {Vector3} v - The vector to compute the angle with. + * @return {number} The angle in radians. + */ + angleTo( v ) { + + const denominator = Math.sqrt( this.lengthSq() * v.lengthSq() ); + + if ( denominator === 0 ) return Math.PI / 2; + + const theta = this.dot( v ) / denominator; + + // clamp, to handle numerical problems + + return Math.acos( clamp( theta, -1, 1 ) ); + + } + + /** + * Computes the distance from the given vector to this instance. + * + * @param {Vector3} v - The vector to compute the distance to. + * @return {number} The distance. + */ + distanceTo( v ) { + + return Math.sqrt( this.distanceToSquared( v ) ); + + } + + /** + * Computes the squared distance from the given vector to this instance. + * If you are just comparing the distance with another distance, you should compare + * the distance squared instead as it is slightly more efficient to calculate. + * + * @param {Vector3} v - The vector to compute the squared distance to. + * @return {number} The squared distance. + */ + distanceToSquared( v ) { + + const dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z; + + return dx * dx + dy * dy + dz * dz; + + } + + /** + * Computes the Manhattan distance from the given vector to this instance. + * + * @param {Vector3} v - The vector to compute the Manhattan distance to. + * @return {number} The Manhattan distance. + */ + manhattanDistanceTo( v ) { + + return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z ); + + } + + /** + * Sets the vector components from the given spherical coordinates. + * + * @param {Spherical} s - The spherical coordinates. + * @return {Vector3} A reference to this vector. + */ + setFromSpherical( s ) { + + return this.setFromSphericalCoords( s.radius, s.phi, s.theta ); + + } + + /** + * Sets the vector components from the given spherical coordinates. + * + * @param {number} radius - The radius. + * @param {number} phi - The phi angle in radians. + * @param {number} theta - The theta angle in radians. + * @return {Vector3} A reference to this vector. + */ + setFromSphericalCoords( radius, phi, theta ) { + + const sinPhiRadius = Math.sin( phi ) * radius; + + this.x = sinPhiRadius * Math.sin( theta ); + this.y = Math.cos( phi ) * radius; + this.z = sinPhiRadius * Math.cos( theta ); + + return this; + + } + + /** + * Sets the vector components from the given cylindrical coordinates. + * + * @param {Cylindrical} c - The cylindrical coordinates. + * @return {Vector3} A reference to this vector. + */ + setFromCylindrical( c ) { + + return this.setFromCylindricalCoords( c.radius, c.theta, c.y ); + + } + + /** + * Sets the vector components from the given cylindrical coordinates. + * + * @param {number} radius - The radius. + * @param {number} theta - The theta angle in radians. + * @param {number} y - The y value. + * @return {Vector3} A reference to this vector. + */ + setFromCylindricalCoords( radius, theta, y ) { + + this.x = radius * Math.sin( theta ); + this.y = y; + this.z = radius * Math.cos( theta ); + + return this; + + } + + /** + * Sets the vector components to the position elements of the + * given transformation matrix. + * + * @param {Matrix4} m - The 4x4 matrix. + * @return {Vector3} A reference to this vector. + */ + setFromMatrixPosition( m ) { + + const e = m.elements; + + this.x = e[ 12 ]; + this.y = e[ 13 ]; + this.z = e[ 14 ]; + + return this; + + } + + /** + * Sets the vector components to the scale elements of the + * given transformation matrix. + * + * @param {Matrix4} m - The 4x4 matrix. + * @return {Vector3} A reference to this vector. + */ + setFromMatrixScale( m ) { + + const sx = this.setFromMatrixColumn( m, 0 ).length(); + const sy = this.setFromMatrixColumn( m, 1 ).length(); + const sz = this.setFromMatrixColumn( m, 2 ).length(); + + this.x = sx; + this.y = sy; + this.z = sz; + + return this; + + } + + /** + * Sets the vector components from the specified matrix column. + * + * @param {Matrix4} m - The 4x4 matrix. + * @param {number} index - The column index. + * @return {Vector3} A reference to this vector. + */ + setFromMatrixColumn( m, index ) { + + return this.fromArray( m.elements, index * 4 ); + + } + + /** + * Sets the vector components from the specified matrix column. + * + * @param {Matrix3} m - The 3x3 matrix. + * @param {number} index - The column index. + * @return {Vector3} A reference to this vector. + */ + setFromMatrix3Column( m, index ) { + + return this.fromArray( m.elements, index * 3 ); + + } + + /** + * Sets the vector components from the given Euler angles. + * + * @param {Euler} e - The Euler angles to set. + * @return {Vector3} A reference to this vector. + */ + setFromEuler( e ) { + + this.x = e._x; + this.y = e._y; + this.z = e._z; + + return this; + + } + + /** + * Sets the vector components from the RGB components of the + * given color. + * + * @param {Color} c - The color to set. + * @return {Vector3} A reference to this vector. + */ + setFromColor( c ) { + + this.x = c.r; + this.y = c.g; + this.z = c.b; + + return this; + + } + + /** + * Returns `true` if this vector is equal with the given one. + * + * @param {Vector3} v - The vector to test for equality. + * @return {boolean} Whether this vector is equal with the given one. + */ + equals( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) ); + + } + + /** + * Sets this vector's x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]` + * and z value to be `array[ offset + 2 ]`. + * + * @param {Array} array - An array holding the vector component values. + * @param {number} [offset=0] - The offset into the array. + * @return {Vector3} A reference to this vector. + */ + fromArray( array, offset = 0 ) { + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + this.z = array[ offset + 2 ]; + + return this; + + } + + /** + * Writes the components of this vector to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the vector components. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The vector components. + */ + toArray( array = [], offset = 0 ) { + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + array[ offset + 2 ] = this.z; + + return array; + + } + + /** + * Sets the components of this vector from the given buffer attribute. + * + * @param {BufferAttribute} attribute - The buffer attribute holding vector data. + * @param {number} index - The index into the attribute. + * @return {Vector3} A reference to this vector. + */ + fromBufferAttribute( attribute, index ) { + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + this.z = attribute.getZ( index ); + + return this; + + } + + /** + * Sets each component of this vector to a pseudo-random value between `0` and + * `1`, excluding `1`. + * + * @return {Vector3} A reference to this vector. + */ + random() { + + this.x = Math.random(); + this.y = Math.random(); + this.z = Math.random(); + + return this; + + } + + /** + * Sets this vector to a uniformly random point on a unit sphere. + * + * @return {Vector3} A reference to this vector. + */ + randomDirection() { + + // https://mathworld.wolfram.com/SpherePointPicking.html + + const theta = Math.random() * Math.PI * 2; + const u = Math.random() * 2 - 1; + const c = Math.sqrt( 1 - u * u ); + + this.x = c * Math.cos( theta ); + this.y = u; + this.z = c * Math.sin( theta ); + + return this; + + } + + *[ Symbol.iterator ]() { + + yield this.x; + yield this.y; + yield this.z; + + } + +} + +const _vector$c = /*@__PURE__*/ new Vector3(); +const _quaternion$4 = /*@__PURE__*/ new Quaternion(); + +/** + * Represents an axis-aligned bounding box (AABB) in 3D space. + */ +class Box3 { + + /** + * Constructs a new bounding box. + * + * @param {Vector3} [min=(Infinity,Infinity,Infinity)] - A vector representing the lower boundary of the box. + * @param {Vector3} [max=(-Infinity,-Infinity,-Infinity)] - A vector representing the upper boundary of the box. + */ + constructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isBox3 = true; + + /** + * The lower boundary of the box. + * + * @type {Vector3} + */ + this.min = min; + + /** + * The upper boundary of the box. + * + * @type {Vector3} + */ + this.max = max; + + } + + /** + * Sets the lower and upper boundaries of this box. + * Please note that this method only copies the values from the given objects. + * + * @param {Vector3} min - The lower boundary of the box. + * @param {Vector3} max - The upper boundary of the box. + * @return {Box3} A reference to this bounding box. + */ + set( min, max ) { + + this.min.copy( min ); + this.max.copy( max ); + + return this; + + } + + /** + * Sets the upper and lower bounds of this box so it encloses the position data + * in the given array. + * + * @param {Array} array - An array holding 3D position data. + * @return {Box3} A reference to this bounding box. + */ + setFromArray( array ) { + + this.makeEmpty(); + + for ( let i = 0, il = array.length; i < il; i += 3 ) { + + this.expandByPoint( _vector$b.fromArray( array, i ) ); + + } + + return this; + + } + + /** + * Sets the upper and lower bounds of this box so it encloses the position data + * in the given buffer attribute. + * + * @param {BufferAttribute} attribute - A buffer attribute holding 3D position data. + * @return {Box3} A reference to this bounding box. + */ + setFromBufferAttribute( attribute ) { + + this.makeEmpty(); + + for ( let i = 0, il = attribute.count; i < il; i ++ ) { + + this.expandByPoint( _vector$b.fromBufferAttribute( attribute, i ) ); + + } + + return this; + + } + + /** + * Sets the upper and lower bounds of this box so it encloses the position data + * in the given array. + * + * @param {Array} points - An array holding 3D position data as instances of {@link Vector3}. + * @return {Box3} A reference to this bounding box. + */ + setFromPoints( points ) { + + this.makeEmpty(); + + for ( let i = 0, il = points.length; i < il; i ++ ) { + + this.expandByPoint( points[ i ] ); + + } + + return this; + + } + + /** + * Centers this box on the given center vector and sets this box's width, height and + * depth to the given size values. + * + * @param {Vector3} center - The center of the box. + * @param {Vector3} size - The x, y and z dimensions of the box. + * @return {Box3} A reference to this bounding box. + */ + setFromCenterAndSize( center, size ) { + + const halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 ); + + this.min.copy( center ).sub( halfSize ); + this.max.copy( center ).add( halfSize ); + + return this; + + } + + /** + * Computes the world-axis-aligned bounding box for the given 3D object + * (including its children), accounting for the object's, and children's, + * world transforms. The function may result in a larger box than strictly necessary. + * + * @param {Object3D} object - The 3D object to compute the bounding box for. + * @param {boolean} [precise=false] - If set to `true`, the method computes the smallest + * world-axis-aligned bounding box at the expense of more computation. + * @return {Box3} A reference to this bounding box. + */ + setFromObject( object, precise = false ) { + + this.makeEmpty(); + + return this.expandByObject( object, precise ); + + } + + /** + * Returns a new box with copied values from this instance. + * + * @return {Box3} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + + /** + * Copies the values of the given box to this instance. + * + * @param {Box3} box - The box to copy. + * @return {Box3} A reference to this bounding box. + */ + copy( box ) { + + this.min.copy( box.min ); + this.max.copy( box.max ); + + return this; + + } + + /** + * Makes this box empty which means in encloses a zero space in 3D. + * + * @return {Box3} A reference to this bounding box. + */ + makeEmpty() { + + this.min.x = this.min.y = this.min.z = + Infinity; + this.max.x = this.max.y = this.max.z = - Infinity; + + return this; + + } + + /** + * Returns true if this box includes zero points within its bounds. + * Note that a box with equal lower and upper bounds still includes one + * point, the one both bounds share. + * + * @return {boolean} Whether this box is empty or not. + */ + isEmpty() { + + // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes + + return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z ); + + } + + /** + * Returns the center point of this box. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The center point. + */ + getCenter( target ) { + + return this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); + + } + + /** + * Returns the dimensions of this box. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The size. + */ + getSize( target ) { + + return this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min ); + + } + + /** + * Expands the boundaries of this box to include the given point. + * + * @param {Vector3} point - The point that should be included by the bounding box. + * @return {Box3} A reference to this bounding box. + */ + expandByPoint( point ) { + + this.min.min( point ); + this.max.max( point ); + + return this; + + } + + /** + * Expands this box equilaterally by the given vector. The width of this + * box will be expanded by the x component of the vector in both + * directions. The height of this box will be expanded by the y component of + * the vector in both directions. The depth of this box will be + * expanded by the z component of the vector in both directions. + * + * @param {Vector3} vector - The vector that should expand the bounding box. + * @return {Box3} A reference to this bounding box. + */ + expandByVector( vector ) { + + this.min.sub( vector ); + this.max.add( vector ); + + return this; + + } + + /** + * Expands each dimension of the box by the given scalar. If negative, the + * dimensions of the box will be contracted. + * + * @param {number} scalar - The scalar value that should expand the bounding box. + * @return {Box3} A reference to this bounding box. + */ + expandByScalar( scalar ) { + + this.min.addScalar( - scalar ); + this.max.addScalar( scalar ); + + return this; + + } + + /** + * Expands the boundaries of this box to include the given 3D object and + * its children, accounting for the object's, and children's, world + * transforms. The function may result in a larger box than strictly + * necessary (unless the precise parameter is set to true). + * + * @param {Object3D} object - The 3D object that should expand the bounding box. + * @param {boolean} precise - If set to `true`, the method expands the bounding box + * as little as necessary at the expense of more computation. + * @return {Box3} A reference to this bounding box. + */ + expandByObject( object, precise = false ) { + + // Computes the world-axis-aligned bounding box of an object (including its children), + // accounting for both the object's, and children's, world transforms + + object.updateWorldMatrix( false, false ); + + const geometry = object.geometry; + + if ( geometry !== undefined ) { + + const positionAttribute = geometry.getAttribute( 'position' ); + + // precise AABB computation based on vertex data requires at least a position attribute. + // instancing isn't supported so far and uses the normal (conservative) code path. + + if ( precise === true && positionAttribute !== undefined && object.isInstancedMesh !== true ) { + + for ( let i = 0, l = positionAttribute.count; i < l; i ++ ) { + + if ( object.isMesh === true ) { + + object.getVertexPosition( i, _vector$b ); + + } else { + + _vector$b.fromBufferAttribute( positionAttribute, i ); + + } + + _vector$b.applyMatrix4( object.matrixWorld ); + this.expandByPoint( _vector$b ); + + } + + } else { + + if ( object.boundingBox !== undefined ) { + + // object-level bounding box + + if ( object.boundingBox === null ) { + + object.computeBoundingBox(); + + } + + _box$4.copy( object.boundingBox ); + + + } else { + + // geometry-level bounding box + + if ( geometry.boundingBox === null ) { + + geometry.computeBoundingBox(); + + } + + _box$4.copy( geometry.boundingBox ); + + } + + _box$4.applyMatrix4( object.matrixWorld ); + + this.union( _box$4 ); + + } + + } + + const children = object.children; + + for ( let i = 0, l = children.length; i < l; i ++ ) { + + this.expandByObject( children[ i ], precise ); + + } + + return this; + + } + + /** + * Returns `true` if the given point lies within or on the boundaries of this box. + * + * @param {Vector3} point - The point to test. + * @return {boolean} Whether the bounding box contains the given point or not. + */ + containsPoint( point ) { + + return point.x >= this.min.x && point.x <= this.max.x && + point.y >= this.min.y && point.y <= this.max.y && + point.z >= this.min.z && point.z <= this.max.z; + + } + + /** + * Returns `true` if this bounding box includes the entirety of the given bounding box. + * If this box and the given one are identical, this function also returns `true`. + * + * @param {Box3} box - The bounding box to test. + * @return {boolean} Whether the bounding box contains the given bounding box or not. + */ + containsBox( box ) { + + return this.min.x <= box.min.x && box.max.x <= this.max.x && + this.min.y <= box.min.y && box.max.y <= this.max.y && + this.min.z <= box.min.z && box.max.z <= this.max.z; + + } + + /** + * Returns a point as a proportion of this box's width, height and depth. + * + * @param {Vector3} point - A point in 3D space. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} A point as a proportion of this box's width, height and depth. + */ + getParameter( point, target ) { + + // This can potentially have a divide by zero if the box + // has a size dimension of 0. + + return target.set( + ( point.x - this.min.x ) / ( this.max.x - this.min.x ), + ( point.y - this.min.y ) / ( this.max.y - this.min.y ), + ( point.z - this.min.z ) / ( this.max.z - this.min.z ) + ); + + } + + /** + * Returns `true` if the given bounding box intersects with this bounding box. + * + * @param {Box3} box - The bounding box to test. + * @return {boolean} Whether the given bounding box intersects with this bounding box. + */ + intersectsBox( box ) { + + // using 6 splitting planes to rule out intersections. + return box.max.x >= this.min.x && box.min.x <= this.max.x && + box.max.y >= this.min.y && box.min.y <= this.max.y && + box.max.z >= this.min.z && box.min.z <= this.max.z; + + } + + /** + * Returns `true` if the given bounding sphere intersects with this bounding box. + * + * @param {Sphere} sphere - The bounding sphere to test. + * @return {boolean} Whether the given bounding sphere intersects with this bounding box. + */ + intersectsSphere( sphere ) { + + // Find the point on the AABB closest to the sphere center. + this.clampPoint( sphere.center, _vector$b ); + + // If that point is inside the sphere, the AABB and sphere intersect. + return _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius ); + + } + + /** + * Returns `true` if the given plane intersects with this bounding box. + * + * @param {Plane} plane - The plane to test. + * @return {boolean} Whether the given plane intersects with this bounding box. + */ + intersectsPlane( plane ) { + + // We compute the minimum and maximum dot product values. If those values + // are on the same side (back or front) of the plane, then there is no intersection. + + let min, max; + + if ( plane.normal.x > 0 ) { + + min = plane.normal.x * this.min.x; + max = plane.normal.x * this.max.x; + + } else { + + min = plane.normal.x * this.max.x; + max = plane.normal.x * this.min.x; + + } + + if ( plane.normal.y > 0 ) { + + min += plane.normal.y * this.min.y; + max += plane.normal.y * this.max.y; + + } else { + + min += plane.normal.y * this.max.y; + max += plane.normal.y * this.min.y; + + } + + if ( plane.normal.z > 0 ) { + + min += plane.normal.z * this.min.z; + max += plane.normal.z * this.max.z; + + } else { + + min += plane.normal.z * this.max.z; + max += plane.normal.z * this.min.z; + + } + + return ( min <= - plane.constant && max >= - plane.constant ); + + } + + /** + * Returns `true` if the given triangle intersects with this bounding box. + * + * @param {Triangle} triangle - The triangle to test. + * @return {boolean} Whether the given triangle intersects with this bounding box. + */ + intersectsTriangle( triangle ) { + + if ( this.isEmpty() ) { + + return false; + + } + + // compute box center and extents + this.getCenter( _center ); + _extents.subVectors( this.max, _center ); + + // translate triangle to aabb origin + _v0$2.subVectors( triangle.a, _center ); + _v1$7.subVectors( triangle.b, _center ); + _v2$4.subVectors( triangle.c, _center ); + + // compute edge vectors for triangle + _f0.subVectors( _v1$7, _v0$2 ); + _f1.subVectors( _v2$4, _v1$7 ); + _f2.subVectors( _v0$2, _v2$4 ); + + // test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb + // make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation + // axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned) + let axes = [ + 0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y, + _f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x, + - _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0 + ]; + if ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) { + + return false; + + } + + // test 3 face normals from the aabb + axes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ]; + if ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) { + + return false; + + } + + // finally testing the face normal of the triangle + // use already existing triangle edge vectors here + _triangleNormal.crossVectors( _f0, _f1 ); + axes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ]; + + return satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ); + + } + + /** + * Clamps the given point within the bounds of this box. + * + * @param {Vector3} point - The point to clamp. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The clamped point. + */ + clampPoint( point, target ) { + + return target.copy( point ).clamp( this.min, this.max ); + + } + + /** + * Returns the euclidean distance from any edge of this box to the specified point. If + * the given point lies inside of this box, the distance will be `0`. + * + * @param {Vector3} point - The point to compute the distance to. + * @return {number} The euclidean distance. + */ + distanceToPoint( point ) { + + return this.clampPoint( point, _vector$b ).distanceTo( point ); + + } + + /** + * Returns a bounding sphere that encloses this bounding box. + * + * @param {Sphere} target - The target sphere that is used to store the method's result. + * @return {Sphere} The bounding sphere that encloses this bounding box. + */ + getBoundingSphere( target ) { + + if ( this.isEmpty() ) { + + target.makeEmpty(); + + } else { + + this.getCenter( target.center ); + + target.radius = this.getSize( _vector$b ).length() * 0.5; + + } + + return target; + + } + + /** + * Computes the intersection of this bounding box and the given one, setting the upper + * bound of this box to the lesser of the two boxes' upper bounds and the + * lower bound of this box to the greater of the two boxes' lower bounds. If + * there's no overlap, makes this box empty. + * + * @param {Box3} box - The bounding box to intersect with. + * @return {Box3} A reference to this bounding box. + */ + intersect( box ) { + + this.min.max( box.min ); + this.max.min( box.max ); + + // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values. + if ( this.isEmpty() ) this.makeEmpty(); + + return this; + + } + + /** + * Computes the union of this box and another and the given one, setting the upper + * bound of this box to the greater of the two boxes' upper bounds and the + * lower bound of this box to the lesser of the two boxes' lower bounds. + * + * @param {Box3} box - The bounding box that will be unioned with this instance. + * @return {Box3} A reference to this bounding box. + */ + union( box ) { + + this.min.min( box.min ); + this.max.max( box.max ); + + return this; + + } + + /** + * Transforms this bounding box by the given 4x4 transformation matrix. + * + * @param {Matrix4} matrix - The transformation matrix. + * @return {Box3} A reference to this bounding box. + */ + applyMatrix4( matrix ) { + + // transform of empty box is an empty box. + if ( this.isEmpty() ) return this; + + // NOTE: I am using a binary pattern to specify all 2^3 combinations below + _points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000 + _points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001 + _points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010 + _points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011 + _points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100 + _points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101 + _points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110 + _points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111 + + this.setFromPoints( _points ); + + return this; + + } + + /** + * Adds the given offset to both the upper and lower bounds of this bounding box, + * effectively moving it in 3D space. + * + * @param {Vector3} offset - The offset that should be used to translate the bounding box. + * @return {Box3} A reference to this bounding box. + */ + translate( offset ) { + + this.min.add( offset ); + this.max.add( offset ); + + return this; + + } + + /** + * Returns `true` if this bounding box is equal with the given one. + * + * @param {Box3} box - The box to test for equality. + * @return {boolean} Whether this bounding box is equal with the given one. + */ + equals( box ) { + + return box.min.equals( this.min ) && box.max.equals( this.max ); + + } + +} + +const _points = [ + /*@__PURE__*/ new Vector3(), + /*@__PURE__*/ new Vector3(), + /*@__PURE__*/ new Vector3(), + /*@__PURE__*/ new Vector3(), + /*@__PURE__*/ new Vector3(), + /*@__PURE__*/ new Vector3(), + /*@__PURE__*/ new Vector3(), + /*@__PURE__*/ new Vector3() +]; + +const _vector$b = /*@__PURE__*/ new Vector3(); + +const _box$4 = /*@__PURE__*/ new Box3(); + +// triangle centered vertices + +const _v0$2 = /*@__PURE__*/ new Vector3(); +const _v1$7 = /*@__PURE__*/ new Vector3(); +const _v2$4 = /*@__PURE__*/ new Vector3(); + +// triangle edge vectors + +const _f0 = /*@__PURE__*/ new Vector3(); +const _f1 = /*@__PURE__*/ new Vector3(); +const _f2 = /*@__PURE__*/ new Vector3(); + +const _center = /*@__PURE__*/ new Vector3(); +const _extents = /*@__PURE__*/ new Vector3(); +const _triangleNormal = /*@__PURE__*/ new Vector3(); +const _testAxis = /*@__PURE__*/ new Vector3(); + +function satForAxes( axes, v0, v1, v2, extents ) { + + for ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) { + + _testAxis.fromArray( axes, i ); + // project the aabb onto the separating axis + const r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z ); + // project all 3 vertices of the triangle onto the separating axis + const p0 = v0.dot( _testAxis ); + const p1 = v1.dot( _testAxis ); + const p2 = v2.dot( _testAxis ); + // actual test, basically see if either of the most extreme of the triangle points intersects r + if ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) { + + // points of the projected triangle are outside the projected half-length of the aabb + // the axis is separating and we can exit + return false; + + } + + } + + return true; + +} + +const _box$3 = /*@__PURE__*/ new Box3(); +const _v1$6 = /*@__PURE__*/ new Vector3(); +const _v2$3 = /*@__PURE__*/ new Vector3(); + +/** + * An analytical 3D sphere defined by a center and radius. This class is mainly + * used as a Bounding Sphere for 3D objects. + */ +class Sphere { + + /** + * Constructs a new sphere. + * + * @param {Vector3} [center=(0,0,0)] - The center of the sphere + * @param {number} [radius=-1] - The radius of the sphere. + */ + constructor( center = new Vector3(), radius = -1 ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isSphere = true; + + /** + * The center of the sphere + * + * @type {Vector3} + */ + this.center = center; + + /** + * The radius of the sphere. + * + * @type {number} + */ + this.radius = radius; + + } + + /** + * Sets the sphere's components by copying the given values. + * + * @param {Vector3} center - The center. + * @param {number} radius - The radius. + * @return {Sphere} A reference to this sphere. + */ + set( center, radius ) { + + this.center.copy( center ); + this.radius = radius; + + return this; + + } + + /** + * Computes the minimum bounding sphere for list of points. + * If the optional center point is given, it is used as the sphere's + * center. Otherwise, the center of the axis-aligned bounding box + * encompassing the points is calculated. + * + * @param {Array} points - A list of points in 3D space. + * @param {Vector3} [optionalCenter] - The center of the sphere. + * @return {Sphere} A reference to this sphere. + */ + setFromPoints( points, optionalCenter ) { + + const center = this.center; + + if ( optionalCenter !== undefined ) { + + center.copy( optionalCenter ); + + } else { + + _box$3.setFromPoints( points ).getCenter( center ); + + } + + let maxRadiusSq = 0; + + for ( let i = 0, il = points.length; i < il; i ++ ) { + + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) ); + + } + + this.radius = Math.sqrt( maxRadiusSq ); + + return this; + + } + + /** + * Copies the values of the given sphere to this instance. + * + * @param {Sphere} sphere - The sphere to copy. + * @return {Sphere} A reference to this sphere. + */ + copy( sphere ) { + + this.center.copy( sphere.center ); + this.radius = sphere.radius; + + return this; + + } + + /** + * Returns `true` if the sphere is empty (the radius set to a negative number). + * + * Spheres with a radius of `0` contain only their center point and are not + * considered to be empty. + * + * @return {boolean} Whether this sphere is empty or not. + */ + isEmpty() { + + return ( this.radius < 0 ); + + } + + /** + * Makes this sphere empty which means in encloses a zero space in 3D. + * + * @return {Sphere} A reference to this sphere. + */ + makeEmpty() { + + this.center.set( 0, 0, 0 ); + this.radius = -1; + + return this; + + } + + /** + * Returns `true` if this sphere contains the given point inclusive of + * the surface of the sphere. + * + * @param {Vector3} point - The point to check. + * @return {boolean} Whether this sphere contains the given point or not. + */ + containsPoint( point ) { + + return ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) ); + + } + + /** + * Returns the closest distance from the boundary of the sphere to the + * given point. If the sphere contains the point, the distance will + * be negative. + * + * @param {Vector3} point - The point to compute the distance to. + * @return {number} The distance to the point. + */ + distanceToPoint( point ) { + + return ( point.distanceTo( this.center ) - this.radius ); + + } + + /** + * Returns `true` if this sphere intersects with the given one. + * + * @param {Sphere} sphere - The sphere to test. + * @return {boolean} Whether this sphere intersects with the given one or not. + */ + intersectsSphere( sphere ) { + + const radiusSum = this.radius + sphere.radius; + + return sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum ); + + } + + /** + * Returns `true` if this sphere intersects with the given box. + * + * @param {Box3} box - The box to test. + * @return {boolean} Whether this sphere intersects with the given box or not. + */ + intersectsBox( box ) { + + return box.intersectsSphere( this ); + + } + + /** + * Returns `true` if this sphere intersects with the given plane. + * + * @param {Plane} plane - The plane to test. + * @return {boolean} Whether this sphere intersects with the given plane or not. + */ + intersectsPlane( plane ) { + + return Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius; + + } + + /** + * Clamps a point within the sphere. If the point is outside the sphere, it + * will clamp it to the closest point on the edge of the sphere. Points + * already inside the sphere will not be affected. + * + * @param {Vector3} point - The plane to clamp. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The clamped point. + */ + clampPoint( point, target ) { + + const deltaLengthSq = this.center.distanceToSquared( point ); + + target.copy( point ); + + if ( deltaLengthSq > ( this.radius * this.radius ) ) { + + target.sub( this.center ).normalize(); + target.multiplyScalar( this.radius ).add( this.center ); + + } + + return target; + + } + + /** + * Returns a bounding box that encloses this sphere. + * + * @param {Box3} target - The target box that is used to store the method's result. + * @return {Box3} The bounding box that encloses this sphere. + */ + getBoundingBox( target ) { + + if ( this.isEmpty() ) { + + // Empty sphere produces empty bounding box + target.makeEmpty(); + return target; + + } + + target.set( this.center, this.center ); + target.expandByScalar( this.radius ); + + return target; + + } + + /** + * Transforms this sphere with the given 4x4 transformation matrix. + * + * @param {Matrix4} matrix - The transformation matrix. + * @return {Sphere} A reference to this sphere. + */ + applyMatrix4( matrix ) { + + this.center.applyMatrix4( matrix ); + this.radius = this.radius * matrix.getMaxScaleOnAxis(); + + return this; + + } + + /** + * Translates the sphere's center by the given offset. + * + * @param {Vector3} offset - The offset. + * @return {Sphere} A reference to this sphere. + */ + translate( offset ) { + + this.center.add( offset ); + + return this; + + } + + /** + * Expands the boundaries of this sphere to include the given point. + * + * @param {Vector3} point - The point to include. + * @return {Sphere} A reference to this sphere. + */ + expandByPoint( point ) { + + if ( this.isEmpty() ) { + + this.center.copy( point ); + + this.radius = 0; + + return this; + + } + + _v1$6.subVectors( point, this.center ); + + const lengthSq = _v1$6.lengthSq(); + + if ( lengthSq > ( this.radius * this.radius ) ) { + + // calculate the minimal sphere + + const length = Math.sqrt( lengthSq ); + + const delta = ( length - this.radius ) * 0.5; + + this.center.addScaledVector( _v1$6, delta / length ); + + this.radius += delta; + + } + + return this; + + } + + /** + * Expands this sphere to enclose both the original sphere and the given sphere. + * + * @param {Sphere} sphere - The sphere to include. + * @return {Sphere} A reference to this sphere. + */ + union( sphere ) { + + if ( sphere.isEmpty() ) { + + return this; + + } + + if ( this.isEmpty() ) { + + this.copy( sphere ); + + return this; + + } + + if ( this.center.equals( sphere.center ) === true ) { + + this.radius = Math.max( this.radius, sphere.radius ); + + } else { + + _v2$3.subVectors( sphere.center, this.center ).setLength( sphere.radius ); + + this.expandByPoint( _v1$6.copy( sphere.center ).add( _v2$3 ) ); + + this.expandByPoint( _v1$6.copy( sphere.center ).sub( _v2$3 ) ); + + } + + return this; + + } + + /** + * Returns `true` if this sphere is equal with the given one. + * + * @param {Sphere} sphere - The sphere to test for equality. + * @return {boolean} Whether this bounding sphere is equal with the given one. + */ + equals( sphere ) { + + return sphere.center.equals( this.center ) && ( sphere.radius === this.radius ); + + } + + /** + * Returns a new sphere with copied values from this instance. + * + * @return {Sphere} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + +} + +const _vector$a = /*@__PURE__*/ new Vector3(); +const _segCenter = /*@__PURE__*/ new Vector3(); +const _segDir = /*@__PURE__*/ new Vector3(); +const _diff = /*@__PURE__*/ new Vector3(); + +const _edge1 = /*@__PURE__*/ new Vector3(); +const _edge2 = /*@__PURE__*/ new Vector3(); +const _normal$1 = /*@__PURE__*/ new Vector3(); + +/** + * A ray that emits from an origin in a certain direction. The class is used by + * {@link Raycaster} to assist with raycasting. Raycasting is used for + * mouse picking (working out what objects in the 3D space the mouse is over) + * amongst other things. + */ +class Ray { + + /** + * Constructs a new ray. + * + * @param {Vector3} [origin=(0,0,0)] - The origin of the ray. + * @param {Vector3} [direction=(0,0,-1)] - The (normalized) direction of the ray. + */ + constructor( origin = new Vector3(), direction = new Vector3( 0, 0, -1 ) ) { + + /** + * The origin of the ray. + * + * @type {Vector3} + */ + this.origin = origin; + + /** + * The (normalized) direction of the ray. + * + * @type {Vector3} + */ + this.direction = direction; + + } + + /** + * Sets the ray's components by copying the given values. + * + * @param {Vector3} origin - The origin. + * @param {Vector3} direction - The direction. + * @return {Ray} A reference to this ray. + */ + set( origin, direction ) { + + this.origin.copy( origin ); + this.direction.copy( direction ); + + return this; + + } + + /** + * Copies the values of the given ray to this instance. + * + * @param {Ray} ray - The ray to copy. + * @return {Ray} A reference to this ray. + */ + copy( ray ) { + + this.origin.copy( ray.origin ); + this.direction.copy( ray.direction ); + + return this; + + } + + /** + * Returns a vector that is located at a given distance along this ray. + * + * @param {number} t - The distance along the ray to retrieve a position for. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} A position on the ray. + */ + at( t, target ) { + + return target.copy( this.origin ).addScaledVector( this.direction, t ); + + } + + /** + * Adjusts the direction of the ray to point at the given vector in world space. + * + * @param {Vector3} v - The target position. + * @return {Ray} A reference to this ray. + */ + lookAt( v ) { + + this.direction.copy( v ).sub( this.origin ).normalize(); + + return this; + + } + + /** + * Shift the origin of this ray along its direction by the given distance. + * + * @param {number} t - The distance along the ray to interpolate. + * @return {Ray} A reference to this ray. + */ + recast( t ) { + + this.origin.copy( this.at( t, _vector$a ) ); + + return this; + + } + + /** + * Returns the point along this ray that is closest to the given point. + * + * @param {Vector3} point - A point in 3D space to get the closet location on the ray for. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The closest point on this ray. + */ + closestPointToPoint( point, target ) { + + target.subVectors( point, this.origin ); + + const directionDistance = target.dot( this.direction ); + + if ( directionDistance < 0 ) { + + return target.copy( this.origin ); + + } + + return target.copy( this.origin ).addScaledVector( this.direction, directionDistance ); + + } + + /** + * Returns the distance of the closest approach between this ray and the given point. + * + * @param {Vector3} point - A point in 3D space to compute the distance to. + * @return {number} The distance. + */ + distanceToPoint( point ) { + + return Math.sqrt( this.distanceSqToPoint( point ) ); + + } + + /** + * Returns the squared distance of the closest approach between this ray and the given point. + * + * @param {Vector3} point - A point in 3D space to compute the distance to. + * @return {number} The squared distance. + */ + distanceSqToPoint( point ) { + + const directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction ); + + // point behind the ray + + if ( directionDistance < 0 ) { + + return this.origin.distanceToSquared( point ); + + } + + _vector$a.copy( this.origin ).addScaledVector( this.direction, directionDistance ); + + return _vector$a.distanceToSquared( point ); + + } + + /** + * Returns the squared distance between this ray and the given line segment. + * + * @param {Vector3} v0 - The start point of the line segment. + * @param {Vector3} v1 - The end point of the line segment. + * @param {Vector3} [optionalPointOnRay] - When provided, it receives the point on this ray that is closest to the segment. + * @param {Vector3} [optionalPointOnSegment] - When provided, it receives the point on the line segment that is closest to this ray. + * @return {number} The squared distance. + */ + distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) { + + // from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h + // It returns the min distance between the ray and the segment + // defined by v0 and v1 + // It can also set two optional targets : + // - The closest point on the ray + // - The closest point on the segment + + _segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 ); + _segDir.copy( v1 ).sub( v0 ).normalize(); + _diff.copy( this.origin ).sub( _segCenter ); + + const segExtent = v0.distanceTo( v1 ) * 0.5; + const a01 = - this.direction.dot( _segDir ); + const b0 = _diff.dot( this.direction ); + const b1 = - _diff.dot( _segDir ); + const c = _diff.lengthSq(); + const det = Math.abs( 1 - a01 * a01 ); + let s0, s1, sqrDist, extDet; + + if ( det > 0 ) { + + // The ray and segment are not parallel. + + s0 = a01 * b1 - b0; + s1 = a01 * b0 - b1; + extDet = segExtent * det; + + if ( s0 >= 0 ) { + + if ( s1 >= - extDet ) { + + if ( s1 <= extDet ) { + + // region 0 + // Minimum at interior points of ray and segment. + + const invDet = 1 / det; + s0 *= invDet; + s1 *= invDet; + sqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c; + + } else { + + // region 1 + + s1 = segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } else { + + // region 5 + + s1 = - segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } else { + + if ( s1 <= - extDet ) { + + // region 4 + + s0 = Math.max( 0, - ( - a01 * segExtent + b0 ) ); + s1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } else if ( s1 <= extDet ) { + + // region 3 + + s0 = 0; + s1 = Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = s1 * ( s1 + 2 * b1 ) + c; + + } else { + + // region 2 + + s0 = Math.max( 0, - ( a01 * segExtent + b0 ) ); + s1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } + + } else { + + // Ray and segment are parallel. + + s1 = ( a01 > 0 ) ? - segExtent : segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + if ( optionalPointOnRay ) { + + optionalPointOnRay.copy( this.origin ).addScaledVector( this.direction, s0 ); + + } + + if ( optionalPointOnSegment ) { + + optionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 ); + + } + + return sqrDist; + + } + + /** + * Intersects this ray with the given sphere, returning the intersection + * point or `null` if there is no intersection. + * + * @param {Sphere} sphere - The sphere to intersect. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The intersection point. + */ + intersectSphere( sphere, target ) { + + _vector$a.subVectors( sphere.center, this.origin ); + const tca = _vector$a.dot( this.direction ); + const d2 = _vector$a.dot( _vector$a ) - tca * tca; + const radius2 = sphere.radius * sphere.radius; + + if ( d2 > radius2 ) return null; + + const thc = Math.sqrt( radius2 - d2 ); + + // t0 = first intersect point - entrance on front of sphere + const t0 = tca - thc; + + // t1 = second intersect point - exit point on back of sphere + const t1 = tca + thc; + + // test to see if t1 is behind the ray - if so, return null + if ( t1 < 0 ) return null; + + // test to see if t0 is behind the ray: + // if it is, the ray is inside the sphere, so return the second exit point scaled by t1, + // in order to always return an intersect point that is in front of the ray. + if ( t0 < 0 ) return this.at( t1, target ); + + // else t0 is in front of the ray, so return the first collision point scaled by t0 + return this.at( t0, target ); + + } + + /** + * Returns `true` if this ray intersects with the given sphere. + * + * @param {Sphere} sphere - The sphere to intersect. + * @return {boolean} Whether this ray intersects with the given sphere or not. + */ + intersectsSphere( sphere ) { + + return this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius ); + + } + + /** + * Computes the distance from the ray's origin to the given plane. Returns `null` if the ray + * does not intersect with the plane. + * + * @param {Plane} plane - The plane to compute the distance to. + * @return {?number} Whether this ray intersects with the given sphere or not. + */ + distanceToPlane( plane ) { + + const denominator = plane.normal.dot( this.direction ); + + if ( denominator === 0 ) { + + // line is coplanar, return origin + if ( plane.distanceToPoint( this.origin ) === 0 ) { + + return 0; + + } + + // Null is preferable to undefined since undefined means.... it is undefined + + return null; + + } + + const t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator; + + // Return if the ray never intersects the plane + + return t >= 0 ? t : null; + + } + + /** + * Intersects this ray with the given plane, returning the intersection + * point or `null` if there is no intersection. + * + * @param {Plane} plane - The plane to intersect. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The intersection point. + */ + intersectPlane( plane, target ) { + + const t = this.distanceToPlane( plane ); + + if ( t === null ) { + + return null; + + } + + return this.at( t, target ); + + } + + /** + * Returns `true` if this ray intersects with the given plane. + * + * @param {Plane} plane - The plane to intersect. + * @return {boolean} Whether this ray intersects with the given plane or not. + */ + intersectsPlane( plane ) { + + // check if the ray lies on the plane first + + const distToPoint = plane.distanceToPoint( this.origin ); + + if ( distToPoint === 0 ) { + + return true; + + } + + const denominator = plane.normal.dot( this.direction ); + + if ( denominator * distToPoint < 0 ) { + + return true; + + } + + // ray origin is behind the plane (and is pointing behind it) + + return false; + + } + + /** + * Intersects this ray with the given bounding box, returning the intersection + * point or `null` if there is no intersection. + * + * @param {Box3} box - The box to intersect. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The intersection point. + */ + intersectBox( box, target ) { + + let tmin, tmax, tymin, tymax, tzmin, tzmax; + + const invdirx = 1 / this.direction.x, + invdiry = 1 / this.direction.y, + invdirz = 1 / this.direction.z; + + const origin = this.origin; + + if ( invdirx >= 0 ) { + + tmin = ( box.min.x - origin.x ) * invdirx; + tmax = ( box.max.x - origin.x ) * invdirx; + + } else { + + tmin = ( box.max.x - origin.x ) * invdirx; + tmax = ( box.min.x - origin.x ) * invdirx; + + } + + if ( invdiry >= 0 ) { + + tymin = ( box.min.y - origin.y ) * invdiry; + tymax = ( box.max.y - origin.y ) * invdiry; + + } else { + + tymin = ( box.max.y - origin.y ) * invdiry; + tymax = ( box.min.y - origin.y ) * invdiry; + + } + + if ( ( tmin > tymax ) || ( tymin > tmax ) ) return null; + + if ( tymin > tmin || isNaN( tmin ) ) tmin = tymin; + + if ( tymax < tmax || isNaN( tmax ) ) tmax = tymax; + + if ( invdirz >= 0 ) { + + tzmin = ( box.min.z - origin.z ) * invdirz; + tzmax = ( box.max.z - origin.z ) * invdirz; + + } else { + + tzmin = ( box.max.z - origin.z ) * invdirz; + tzmax = ( box.min.z - origin.z ) * invdirz; + + } + + if ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null; + + if ( tzmin > tmin || tmin !== tmin ) tmin = tzmin; + + if ( tzmax < tmax || tmax !== tmax ) tmax = tzmax; + + //return point closest to the ray (positive side) + + if ( tmax < 0 ) return null; + + return this.at( tmin >= 0 ? tmin : tmax, target ); + + } + + /** + * Returns `true` if this ray intersects with the given box. + * + * @param {Box3} box - The box to intersect. + * @return {boolean} Whether this ray intersects with the given box or not. + */ + intersectsBox( box ) { + + return this.intersectBox( box, _vector$a ) !== null; + + } + + /** + * Intersects this ray with the given triangle, returning the intersection + * point or `null` if there is no intersection. + * + * @param {Vector3} a - The first vertex of the triangle. + * @param {Vector3} b - The second vertex of the triangle. + * @param {Vector3} c - The third vertex of the triangle. + * @param {boolean} backfaceCulling - Whether to use backface culling or not. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The intersection point. + */ + intersectTriangle( a, b, c, backfaceCulling, target ) { + + // Compute the offset origin, edges, and normal. + + // from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h + + _edge1.subVectors( b, a ); + _edge2.subVectors( c, a ); + _normal$1.crossVectors( _edge1, _edge2 ); + + // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction, + // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by + // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2)) + // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q)) + // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N) + let DdN = this.direction.dot( _normal$1 ); + let sign; + + if ( DdN > 0 ) { + + if ( backfaceCulling ) return null; + sign = 1; + + } else if ( DdN < 0 ) { + + sign = -1; + DdN = - DdN; + + } else { + + return null; + + } + + _diff.subVectors( this.origin, a ); + const DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) ); + + // b1 < 0, no intersection + if ( DdQxE2 < 0 ) { + + return null; + + } + + const DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) ); + + // b2 < 0, no intersection + if ( DdE1xQ < 0 ) { + + return null; + + } + + // b1+b2 > 1, no intersection + if ( DdQxE2 + DdE1xQ > DdN ) { + + return null; + + } + + // Line intersects triangle, check if ray does. + const QdN = - sign * _diff.dot( _normal$1 ); + + // t < 0, no intersection + if ( QdN < 0 ) { + + return null; + + } + + // Ray intersects triangle. + return this.at( QdN / DdN, target ); + + } + + /** + * Transforms this ray with the given 4x4 transformation matrix. + * + * @param {Matrix4} matrix4 - The transformation matrix. + * @return {Ray} A reference to this ray. + */ + applyMatrix4( matrix4 ) { + + this.origin.applyMatrix4( matrix4 ); + this.direction.transformDirection( matrix4 ); + + return this; + + } + + /** + * Returns `true` if this ray is equal with the given one. + * + * @param {Ray} ray - The ray to test for equality. + * @return {boolean} Whether this ray is equal with the given one. + */ + equals( ray ) { + + return ray.origin.equals( this.origin ) && ray.direction.equals( this.direction ); + + } + + /** + * Returns a new ray with copied values from this instance. + * + * @return {Ray} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + +} + +/** + * Represents a 4x4 matrix. + * + * The most common use of a 4x4 matrix in 3D computer graphics is as a transformation matrix. + * For an introduction to transformation matrices as used in WebGL, check out [this tutorial]{@link https://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices} + * + * This allows a 3D vector representing a point in 3D space to undergo + * transformations such as translation, rotation, shear, scale, reflection, + * orthogonal or perspective projection and so on, by being multiplied by the + * matrix. This is known as `applying` the matrix to the vector. + * + * A Note on Row-Major and Column-Major Ordering: + * + * The constructor and {@link Matrix3#set} method take arguments in + * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order} + * order, while internally they are stored in the {@link Matrix3#elements} array in column-major order. + * This means that calling: + * ```js + * const m = new THREE.Matrix4(); + * m.set( 11, 12, 13, 14, + * 21, 22, 23, 24, + * 31, 32, 33, 34, + * 41, 42, 43, 44 ); + * ``` + * will result in the elements array containing: + * ```js + * m.elements = [ 11, 21, 31, 41, + * 12, 22, 32, 42, + * 13, 23, 33, 43, + * 14, 24, 34, 44 ]; + * ``` + * and internally all calculations are performed using column-major ordering. + * However, as the actual ordering makes no difference mathematically and + * most people are used to thinking about matrices in row-major order, the + * three.js documentation shows matrices in row-major order. Just bear in + * mind that if you are reading the source code, you'll have to take the + * transpose of any matrices outlined here to make sense of the calculations. + */ +class Matrix4 { + + /** + * Constructs a new 4x4 matrix. The arguments are supposed to be + * in row-major order. If no arguments are provided, the constructor + * initializes the matrix as an identity matrix. + * + * @param {number} [n11] - 1-1 matrix element. + * @param {number} [n12] - 1-2 matrix element. + * @param {number} [n13] - 1-3 matrix element. + * @param {number} [n14] - 1-4 matrix element. + * @param {number} [n21] - 2-1 matrix element. + * @param {number} [n22] - 2-2 matrix element. + * @param {number} [n23] - 2-3 matrix element. + * @param {number} [n24] - 2-4 matrix element. + * @param {number} [n31] - 3-1 matrix element. + * @param {number} [n32] - 3-2 matrix element. + * @param {number} [n33] - 3-3 matrix element. + * @param {number} [n34] - 3-4 matrix element. + * @param {number} [n41] - 4-1 matrix element. + * @param {number} [n42] - 4-2 matrix element. + * @param {number} [n43] - 4-3 matrix element. + * @param {number} [n44] - 4-4 matrix element. + */ + constructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + Matrix4.prototype.isMatrix4 = true; + + /** + * A column-major list of matrix values. + * + * @type {Array} + */ + this.elements = [ + + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ]; + + if ( n11 !== undefined ) { + + this.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ); + + } + + } + + /** + * Sets the elements of the matrix.The arguments are supposed to be + * in row-major order. + * + * @param {number} [n11] - 1-1 matrix element. + * @param {number} [n12] - 1-2 matrix element. + * @param {number} [n13] - 1-3 matrix element. + * @param {number} [n14] - 1-4 matrix element. + * @param {number} [n21] - 2-1 matrix element. + * @param {number} [n22] - 2-2 matrix element. + * @param {number} [n23] - 2-3 matrix element. + * @param {number} [n24] - 2-4 matrix element. + * @param {number} [n31] - 3-1 matrix element. + * @param {number} [n32] - 3-2 matrix element. + * @param {number} [n33] - 3-3 matrix element. + * @param {number} [n34] - 3-4 matrix element. + * @param {number} [n41] - 4-1 matrix element. + * @param {number} [n42] - 4-2 matrix element. + * @param {number} [n43] - 4-3 matrix element. + * @param {number} [n44] - 4-4 matrix element. + * @return {Matrix4} A reference to this matrix. + */ + set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) { + + const te = this.elements; + + te[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14; + te[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24; + te[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34; + te[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44; + + return this; + + } + + /** + * Sets this matrix to the 4x4 identity matrix. + * + * @return {Matrix4} A reference to this matrix. + */ + identity() { + + this.set( + + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + } + + /** + * Returns a matrix with copied values from this instance. + * + * @return {Matrix4} A clone of this instance. + */ + clone() { + + return new Matrix4().fromArray( this.elements ); + + } + + /** + * Copies the values of the given matrix to this instance. + * + * @param {Matrix4} m - The matrix to copy. + * @return {Matrix4} A reference to this matrix. + */ + copy( m ) { + + const te = this.elements; + const me = m.elements; + + te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ]; + te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; + te[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ]; + te[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ]; + + return this; + + } + + /** + * Copies the translation component of the given matrix + * into this matrix's translation component. + * + * @param {Matrix4} m - The matrix to copy the translation component. + * @return {Matrix4} A reference to this matrix. + */ + copyPosition( m ) { + + const te = this.elements, me = m.elements; + + te[ 12 ] = me[ 12 ]; + te[ 13 ] = me[ 13 ]; + te[ 14 ] = me[ 14 ]; + + return this; + + } + + /** + * Set the upper 3x3 elements of this matrix to the values of given 3x3 matrix. + * + * @param {Matrix3} m - The 3x3 matrix. + * @return {Matrix4} A reference to this matrix. + */ + setFromMatrix3( m ) { + + const me = m.elements; + + this.set( + + me[ 0 ], me[ 3 ], me[ 6 ], 0, + me[ 1 ], me[ 4 ], me[ 7 ], 0, + me[ 2 ], me[ 5 ], me[ 8 ], 0, + 0, 0, 0, 1 + + ); + + return this; + + } + + /** + * Extracts the basis of this matrix into the three axis vectors provided. + * + * @param {Vector3} xAxis - The basis's x axis. + * @param {Vector3} yAxis - The basis's y axis. + * @param {Vector3} zAxis - The basis's z axis. + * @return {Matrix4} A reference to this matrix. + */ + extractBasis( xAxis, yAxis, zAxis ) { + + xAxis.setFromMatrixColumn( this, 0 ); + yAxis.setFromMatrixColumn( this, 1 ); + zAxis.setFromMatrixColumn( this, 2 ); + + return this; + + } + + /** + * Sets the given basis vectors to this matrix. + * + * @param {Vector3} xAxis - The basis's x axis. + * @param {Vector3} yAxis - The basis's y axis. + * @param {Vector3} zAxis - The basis's z axis. + * @return {Matrix4} A reference to this matrix. + */ + makeBasis( xAxis, yAxis, zAxis ) { + + this.set( + xAxis.x, yAxis.x, zAxis.x, 0, + xAxis.y, yAxis.y, zAxis.y, 0, + xAxis.z, yAxis.z, zAxis.z, 0, + 0, 0, 0, 1 + ); + + return this; + + } + + /** + * Extracts the rotation component of the given matrix + * into this matrix's rotation component. + * + * Note: This method does not support reflection matrices. + * + * @param {Matrix4} m - The matrix. + * @return {Matrix4} A reference to this matrix. + */ + extractRotation( m ) { + + const te = this.elements; + const me = m.elements; + + const scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length(); + const scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length(); + const scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length(); + + te[ 0 ] = me[ 0 ] * scaleX; + te[ 1 ] = me[ 1 ] * scaleX; + te[ 2 ] = me[ 2 ] * scaleX; + te[ 3 ] = 0; + + te[ 4 ] = me[ 4 ] * scaleY; + te[ 5 ] = me[ 5 ] * scaleY; + te[ 6 ] = me[ 6 ] * scaleY; + te[ 7 ] = 0; + + te[ 8 ] = me[ 8 ] * scaleZ; + te[ 9 ] = me[ 9 ] * scaleZ; + te[ 10 ] = me[ 10 ] * scaleZ; + te[ 11 ] = 0; + + te[ 12 ] = 0; + te[ 13 ] = 0; + te[ 14 ] = 0; + te[ 15 ] = 1; + + return this; + + } + + /** + * Sets the rotation component (the upper left 3x3 matrix) of this matrix to + * the rotation specified by the given Euler angles. The rest of + * the matrix is set to the identity. Depending on the {@link Euler#order}, + * there are six possible outcomes. See [this page]{@link https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix} + * for a complete list. + * + * @param {Euler} euler - The Euler angles. + * @return {Matrix4} A reference to this matrix. + */ + makeRotationFromEuler( euler ) { + + const te = this.elements; + + const x = euler.x, y = euler.y, z = euler.z; + const a = Math.cos( x ), b = Math.sin( x ); + const c = Math.cos( y ), d = Math.sin( y ); + const e = Math.cos( z ), f = Math.sin( z ); + + if ( euler.order === 'XYZ' ) { + + const ae = a * e, af = a * f, be = b * e, bf = b * f; + + te[ 0 ] = c * e; + te[ 4 ] = - c * f; + te[ 8 ] = d; + + te[ 1 ] = af + be * d; + te[ 5 ] = ae - bf * d; + te[ 9 ] = - b * c; + + te[ 2 ] = bf - ae * d; + te[ 6 ] = be + af * d; + te[ 10 ] = a * c; + + } else if ( euler.order === 'YXZ' ) { + + const ce = c * e, cf = c * f, de = d * e, df = d * f; + + te[ 0 ] = ce + df * b; + te[ 4 ] = de * b - cf; + te[ 8 ] = a * d; + + te[ 1 ] = a * f; + te[ 5 ] = a * e; + te[ 9 ] = - b; + + te[ 2 ] = cf * b - de; + te[ 6 ] = df + ce * b; + te[ 10 ] = a * c; + + } else if ( euler.order === 'ZXY' ) { + + const ce = c * e, cf = c * f, de = d * e, df = d * f; + + te[ 0 ] = ce - df * b; + te[ 4 ] = - a * f; + te[ 8 ] = de + cf * b; + + te[ 1 ] = cf + de * b; + te[ 5 ] = a * e; + te[ 9 ] = df - ce * b; + + te[ 2 ] = - a * d; + te[ 6 ] = b; + te[ 10 ] = a * c; + + } else if ( euler.order === 'ZYX' ) { + + const ae = a * e, af = a * f, be = b * e, bf = b * f; + + te[ 0 ] = c * e; + te[ 4 ] = be * d - af; + te[ 8 ] = ae * d + bf; + + te[ 1 ] = c * f; + te[ 5 ] = bf * d + ae; + te[ 9 ] = af * d - be; + + te[ 2 ] = - d; + te[ 6 ] = b * c; + te[ 10 ] = a * c; + + } else if ( euler.order === 'YZX' ) { + + const ac = a * c, ad = a * d, bc = b * c, bd = b * d; + + te[ 0 ] = c * e; + te[ 4 ] = bd - ac * f; + te[ 8 ] = bc * f + ad; + + te[ 1 ] = f; + te[ 5 ] = a * e; + te[ 9 ] = - b * e; + + te[ 2 ] = - d * e; + te[ 6 ] = ad * f + bc; + te[ 10 ] = ac - bd * f; + + } else if ( euler.order === 'XZY' ) { + + const ac = a * c, ad = a * d, bc = b * c, bd = b * d; + + te[ 0 ] = c * e; + te[ 4 ] = - f; + te[ 8 ] = d * e; + + te[ 1 ] = ac * f + bd; + te[ 5 ] = a * e; + te[ 9 ] = ad * f - bc; + + te[ 2 ] = bc * f - ad; + te[ 6 ] = b * e; + te[ 10 ] = bd * f + ac; + + } + + // bottom row + te[ 3 ] = 0; + te[ 7 ] = 0; + te[ 11 ] = 0; + + // last column + te[ 12 ] = 0; + te[ 13 ] = 0; + te[ 14 ] = 0; + te[ 15 ] = 1; + + return this; + + } + + /** + * Sets the rotation component of this matrix to the rotation specified by + * the given Quaternion as outlined [here]{@link https://en.wikipedia.org/wiki/Rotation_matrix#Quaternion} + * The rest of the matrix is set to the identity. + * + * @param {Quaternion} q - The Quaternion. + * @return {Matrix4} A reference to this matrix. + */ + makeRotationFromQuaternion( q ) { + + return this.compose( _zero, q, _one ); + + } + + /** + * Sets the rotation component of the transformation matrix, looking from `eye` towards + * `target`, and oriented by the up-direction. + * + * @param {Vector3} eye - The eye vector. + * @param {Vector3} target - The target vector. + * @param {Vector3} up - The up vector. + * @return {Matrix4} A reference to this matrix. + */ + lookAt( eye, target, up ) { + + const te = this.elements; + + _z.subVectors( eye, target ); + + if ( _z.lengthSq() === 0 ) { + + // eye and target are in the same position + + _z.z = 1; + + } + + _z.normalize(); + _x.crossVectors( up, _z ); + + if ( _x.lengthSq() === 0 ) { + + // up and z are parallel + + if ( Math.abs( up.z ) === 1 ) { + + _z.x += 0.0001; + + } else { + + _z.z += 0.0001; + + } + + _z.normalize(); + _x.crossVectors( up, _z ); + + } + + _x.normalize(); + _y.crossVectors( _z, _x ); + + te[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x; + te[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y; + te[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z; + + return this; + + } + + /** + * Post-multiplies this matrix by the given 4x4 matrix. + * + * @param {Matrix4} m - The matrix to multiply with. + * @return {Matrix4} A reference to this matrix. + */ + multiply( m ) { + + return this.multiplyMatrices( this, m ); + + } + + /** + * Pre-multiplies this matrix by the given 4x4 matrix. + * + * @param {Matrix4} m - The matrix to multiply with. + * @return {Matrix4} A reference to this matrix. + */ + premultiply( m ) { + + return this.multiplyMatrices( m, this ); + + } + + /** + * Multiples the given 4x4 matrices and stores the result + * in this matrix. + * + * @param {Matrix4} a - The first matrix. + * @param {Matrix4} b - The second matrix. + * @return {Matrix4} A reference to this matrix. + */ + multiplyMatrices( a, b ) { + + const ae = a.elements; + const be = b.elements; + const te = this.elements; + + const a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ]; + const a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ]; + const a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ]; + const a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ]; + + const b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ]; + const b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ]; + const b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ]; + const b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ]; + + te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; + te[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; + te[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; + te[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; + + te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; + te[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; + te[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; + te[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; + + te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; + te[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; + te[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; + te[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; + + te[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; + te[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; + te[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; + te[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; + + return this; + + } + + /** + * Multiplies every component of the matrix by the given scalar. + * + * @param {number} s - The scalar. + * @return {Matrix4} A reference to this matrix. + */ + multiplyScalar( s ) { + + const te = this.elements; + + te[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s; + te[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s; + te[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s; + te[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s; + + return this; + + } + + /** + * Computes and returns the determinant of this matrix. + * + * Based on the method outlined [here]{@link http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.html}. + * + * @return {number} The determinant. + */ + determinant() { + + const te = this.elements; + + const n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ]; + const n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ]; + const n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ]; + const n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ]; + + //TODO: make this more efficient + + return ( + n41 * ( + + n14 * n23 * n32 + - n13 * n24 * n32 + - n14 * n22 * n33 + + n12 * n24 * n33 + + n13 * n22 * n34 + - n12 * n23 * n34 + ) + + n42 * ( + + n11 * n23 * n34 + - n11 * n24 * n33 + + n14 * n21 * n33 + - n13 * n21 * n34 + + n13 * n24 * n31 + - n14 * n23 * n31 + ) + + n43 * ( + + n11 * n24 * n32 + - n11 * n22 * n34 + - n14 * n21 * n32 + + n12 * n21 * n34 + + n14 * n22 * n31 + - n12 * n24 * n31 + ) + + n44 * ( + - n13 * n22 * n31 + - n11 * n23 * n32 + + n11 * n22 * n33 + + n13 * n21 * n32 + - n12 * n21 * n33 + + n12 * n23 * n31 + ) + + ); + + } + + /** + * Transposes this matrix in place. + * + * @return {Matrix4} A reference to this matrix. + */ + transpose() { + + const te = this.elements; + let tmp; + + tmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp; + tmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp; + tmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp; + + tmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp; + tmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp; + tmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp; + + return this; + + } + + /** + * Sets the position component for this matrix from the given vector, + * without affecting the rest of the matrix. + * + * @param {number|Vector3} x - The x component of the vector or alternatively the vector object. + * @param {number} y - The y component of the vector. + * @param {number} z - The z component of the vector. + * @return {Matrix4} A reference to this matrix. + */ + setPosition( x, y, z ) { + + const te = this.elements; + + if ( x.isVector3 ) { + + te[ 12 ] = x.x; + te[ 13 ] = x.y; + te[ 14 ] = x.z; + + } else { + + te[ 12 ] = x; + te[ 13 ] = y; + te[ 14 ] = z; + + } + + return this; + + } + + /** + * Inverts this matrix, using the [analytic method]{@link https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution}. + * You can not invert with a determinant of zero. If you attempt this, the method produces + * a zero matrix instead. + * + * @return {Matrix4} A reference to this matrix. + */ + invert() { + + // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm + const te = this.elements, + + n11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ], + n12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ], + n13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ], + n14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ], + + t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, + t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, + t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, + t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; + + const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14; + + if ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ); + + const detInv = 1 / det; + + te[ 0 ] = t11 * detInv; + te[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv; + te[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv; + te[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv; + + te[ 4 ] = t12 * detInv; + te[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv; + te[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv; + te[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv; + + te[ 8 ] = t13 * detInv; + te[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv; + te[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv; + te[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv; + + te[ 12 ] = t14 * detInv; + te[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv; + te[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv; + te[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv; + + return this; + + } + + /** + * Multiplies the columns of this matrix by the given vector. + * + * @param {Vector3} v - The scale vector. + * @return {Matrix4} A reference to this matrix. + */ + scale( v ) { + + const te = this.elements; + const x = v.x, y = v.y, z = v.z; + + te[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z; + te[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z; + te[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z; + te[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z; + + return this; + + } + + /** + * Gets the maximum scale value of the three axes. + * + * @return {number} The maximum scale. + */ + getMaxScaleOnAxis() { + + const te = this.elements; + + const scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ]; + const scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ]; + const scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ]; + + return Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) ); + + } + + /** + * Sets this matrix as a translation transform from the given vector. + * + * @param {number|Vector3} x - The amount to translate in the X axis or alternatively a translation vector. + * @param {number} y - The amount to translate in the Y axis. + * @param {number} z - The amount to translate in the z axis. + * @return {Matrix4} A reference to this matrix. + */ + makeTranslation( x, y, z ) { + + if ( x.isVector3 ) { + + this.set( + + 1, 0, 0, x.x, + 0, 1, 0, x.y, + 0, 0, 1, x.z, + 0, 0, 0, 1 + + ); + + } else { + + this.set( + + 1, 0, 0, x, + 0, 1, 0, y, + 0, 0, 1, z, + 0, 0, 0, 1 + + ); + + } + + return this; + + } + + /** + * Sets this matrix as a rotational transformation around the X axis by + * the given angle. + * + * @param {number} theta - The rotation in radians. + * @return {Matrix4} A reference to this matrix. + */ + makeRotationX( theta ) { + + const c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + 1, 0, 0, 0, + 0, c, - s, 0, + 0, s, c, 0, + 0, 0, 0, 1 + + ); + + return this; + + } + + /** + * Sets this matrix as a rotational transformation around the Y axis by + * the given angle. + * + * @param {number} theta - The rotation in radians. + * @return {Matrix4} A reference to this matrix. + */ + makeRotationY( theta ) { + + const c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + c, 0, s, 0, + 0, 1, 0, 0, + - s, 0, c, 0, + 0, 0, 0, 1 + + ); + + return this; + + } + + /** + * Sets this matrix as a rotational transformation around the Z axis by + * the given angle. + * + * @param {number} theta - The rotation in radians. + * @return {Matrix4} A reference to this matrix. + */ + makeRotationZ( theta ) { + + const c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + c, - s, 0, 0, + s, c, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + } + + /** + * Sets this matrix as a rotational transformation around the given axis by + * the given angle. + * + * This is a somewhat controversial but mathematically sound alternative to + * rotating via Quaternions. See the discussion [here]{@link https://www.gamedev.net/articles/programming/math-and-physics/do-we-really-need-quaternions-r1199}. + * + * @param {Vector3} axis - The normalized rotation axis. + * @param {number} angle - The rotation in radians. + * @return {Matrix4} A reference to this matrix. + */ + makeRotationAxis( axis, angle ) { + + // Based on http://www.gamedev.net/reference/articles/article1199.asp + + const c = Math.cos( angle ); + const s = Math.sin( angle ); + const t = 1 - c; + const x = axis.x, y = axis.y, z = axis.z; + const tx = t * x, ty = t * y; + + this.set( + + tx * x + c, tx * y - s * z, tx * z + s * y, 0, + tx * y + s * z, ty * y + c, ty * z - s * x, 0, + tx * z - s * y, ty * z + s * x, t * z * z + c, 0, + 0, 0, 0, 1 + + ); + + return this; + + } + + /** + * Sets this matrix as a scale transformation. + * + * @param {number} x - The amount to scale in the X axis. + * @param {number} y - The amount to scale in the Y axis. + * @param {number} z - The amount to scale in the Z axis. + * @return {Matrix4} A reference to this matrix. + */ + makeScale( x, y, z ) { + + this.set( + + x, 0, 0, 0, + 0, y, 0, 0, + 0, 0, z, 0, + 0, 0, 0, 1 + + ); + + return this; + + } + + /** + * Sets this matrix as a shear transformation. + * + * @param {number} xy - The amount to shear X by Y. + * @param {number} xz - The amount to shear X by Z. + * @param {number} yx - The amount to shear Y by X. + * @param {number} yz - The amount to shear Y by Z. + * @param {number} zx - The amount to shear Z by X. + * @param {number} zy - The amount to shear Z by Y. + * @return {Matrix4} A reference to this matrix. + */ + makeShear( xy, xz, yx, yz, zx, zy ) { + + this.set( + + 1, yx, zx, 0, + xy, 1, zy, 0, + xz, yz, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + } + + /** + * Sets this matrix to the transformation composed of the given position, + * rotation (Quaternion) and scale. + * + * @param {Vector3} position - The position vector. + * @param {Quaternion} quaternion - The rotation as a Quaternion. + * @param {Vector3} scale - The scale vector. + * @return {Matrix4} A reference to this matrix. + */ + compose( position, quaternion, scale ) { + + const te = this.elements; + + const x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w; + const x2 = x + x, y2 = y + y, z2 = z + z; + const xx = x * x2, xy = x * y2, xz = x * z2; + const yy = y * y2, yz = y * z2, zz = z * z2; + const wx = w * x2, wy = w * y2, wz = w * z2; + + const sx = scale.x, sy = scale.y, sz = scale.z; + + te[ 0 ] = ( 1 - ( yy + zz ) ) * sx; + te[ 1 ] = ( xy + wz ) * sx; + te[ 2 ] = ( xz - wy ) * sx; + te[ 3 ] = 0; + + te[ 4 ] = ( xy - wz ) * sy; + te[ 5 ] = ( 1 - ( xx + zz ) ) * sy; + te[ 6 ] = ( yz + wx ) * sy; + te[ 7 ] = 0; + + te[ 8 ] = ( xz + wy ) * sz; + te[ 9 ] = ( yz - wx ) * sz; + te[ 10 ] = ( 1 - ( xx + yy ) ) * sz; + te[ 11 ] = 0; + + te[ 12 ] = position.x; + te[ 13 ] = position.y; + te[ 14 ] = position.z; + te[ 15 ] = 1; + + return this; + + } + + /** + * Decomposes this matrix into its position, rotation and scale components + * and provides the result in the given objects. + * + * Note: Not all matrices are decomposable in this way. For example, if an + * object has a non-uniformly scaled parent, then the object's world matrix + * may not be decomposable, and this method may not be appropriate. + * + * @param {Vector3} position - The position vector. + * @param {Quaternion} quaternion - The rotation as a Quaternion. + * @param {Vector3} scale - The scale vector. + * @return {Matrix4} A reference to this matrix. + */ + decompose( position, quaternion, scale ) { + + const te = this.elements; + + let sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length(); + const sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length(); + const sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length(); + + // if determine is negative, we need to invert one scale + const det = this.determinant(); + if ( det < 0 ) sx = - sx; + + position.x = te[ 12 ]; + position.y = te[ 13 ]; + position.z = te[ 14 ]; + + // scale the rotation part + _m1$2.copy( this ); + + const invSX = 1 / sx; + const invSY = 1 / sy; + const invSZ = 1 / sz; + + _m1$2.elements[ 0 ] *= invSX; + _m1$2.elements[ 1 ] *= invSX; + _m1$2.elements[ 2 ] *= invSX; + + _m1$2.elements[ 4 ] *= invSY; + _m1$2.elements[ 5 ] *= invSY; + _m1$2.elements[ 6 ] *= invSY; + + _m1$2.elements[ 8 ] *= invSZ; + _m1$2.elements[ 9 ] *= invSZ; + _m1$2.elements[ 10 ] *= invSZ; + + quaternion.setFromRotationMatrix( _m1$2 ); + + scale.x = sx; + scale.y = sy; + scale.z = sz; + + return this; + + } + + /** + * Creates a perspective projection matrix. This is used internally by + * {@link PerspectiveCamera#updateProjectionMatrix}. + + * @param {number} left - Left boundary of the viewing frustum at the near plane. + * @param {number} right - Right boundary of the viewing frustum at the near plane. + * @param {number} top - Top boundary of the viewing frustum at the near plane. + * @param {number} bottom - Bottom boundary of the viewing frustum at the near plane. + * @param {number} near - The distance from the camera to the near plane. + * @param {number} far - The distance from the camera to the far plane. + * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system. + * @return {Matrix4} A reference to this matrix. + */ + makePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) { + + const te = this.elements; + const x = 2 * near / ( right - left ); + const y = 2 * near / ( top - bottom ); + + const a = ( right + left ) / ( right - left ); + const b = ( top + bottom ) / ( top - bottom ); + + let c, d; + + if ( coordinateSystem === WebGLCoordinateSystem ) { + + c = - ( far + near ) / ( far - near ); + d = ( -2 * far * near ) / ( far - near ); + + } else if ( coordinateSystem === WebGPUCoordinateSystem ) { + + c = - far / ( far - near ); + d = ( - far * near ) / ( far - near ); + + } else { + + throw new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem ); + + } + + te[ 0 ] = x; te[ 4 ] = 0; te[ 8 ] = a; te[ 12 ] = 0; + te[ 1 ] = 0; te[ 5 ] = y; te[ 9 ] = b; te[ 13 ] = 0; + te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = c; te[ 14 ] = d; + te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = -1; te[ 15 ] = 0; + + return this; + + } + + /** + * Creates a orthographic projection matrix. This is used internally by + * {@link OrthographicCamera#updateProjectionMatrix}. + + * @param {number} left - Left boundary of the viewing frustum at the near plane. + * @param {number} right - Right boundary of the viewing frustum at the near plane. + * @param {number} top - Top boundary of the viewing frustum at the near plane. + * @param {number} bottom - Bottom boundary of the viewing frustum at the near plane. + * @param {number} near - The distance from the camera to the near plane. + * @param {number} far - The distance from the camera to the far plane. + * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system. + * @return {Matrix4} A reference to this matrix. + */ + makeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) { + + const te = this.elements; + const w = 1.0 / ( right - left ); + const h = 1.0 / ( top - bottom ); + const p = 1.0 / ( far - near ); + + const x = ( right + left ) * w; + const y = ( top + bottom ) * h; + + let z, zInv; + + if ( coordinateSystem === WebGLCoordinateSystem ) { + + z = ( far + near ) * p; + zInv = -2 * p; + + } else if ( coordinateSystem === WebGPUCoordinateSystem ) { + + z = near * p; + zInv = -1 * p; + + } else { + + throw new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem ); + + } + + te[ 0 ] = 2 * w; te[ 4 ] = 0; te[ 8 ] = 0; te[ 12 ] = - x; + te[ 1 ] = 0; te[ 5 ] = 2 * h; te[ 9 ] = 0; te[ 13 ] = - y; + te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = zInv; te[ 14 ] = - z; + te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = 0; te[ 15 ] = 1; + + return this; + + } + + /** + * Returns `true` if this matrix is equal with the given one. + * + * @param {Matrix4} matrix - The matrix to test for equality. + * @return {boolean} Whether this matrix is equal with the given one. + */ + equals( matrix ) { + + const te = this.elements; + const me = matrix.elements; + + for ( let i = 0; i < 16; i ++ ) { + + if ( te[ i ] !== me[ i ] ) return false; + + } + + return true; + + } + + /** + * Sets the elements of the matrix from the given array. + * + * @param {Array} array - The matrix elements in column-major order. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Matrix4} A reference to this matrix. + */ + fromArray( array, offset = 0 ) { + + for ( let i = 0; i < 16; i ++ ) { + + this.elements[ i ] = array[ i + offset ]; + + } + + return this; + + } + + /** + * Writes the elements of this matrix to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the matrix elements in column-major order. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The matrix elements in column-major order. + */ + toArray( array = [], offset = 0 ) { + + const te = this.elements; + + array[ offset ] = te[ 0 ]; + array[ offset + 1 ] = te[ 1 ]; + array[ offset + 2 ] = te[ 2 ]; + array[ offset + 3 ] = te[ 3 ]; + + array[ offset + 4 ] = te[ 4 ]; + array[ offset + 5 ] = te[ 5 ]; + array[ offset + 6 ] = te[ 6 ]; + array[ offset + 7 ] = te[ 7 ]; + + array[ offset + 8 ] = te[ 8 ]; + array[ offset + 9 ] = te[ 9 ]; + array[ offset + 10 ] = te[ 10 ]; + array[ offset + 11 ] = te[ 11 ]; + + array[ offset + 12 ] = te[ 12 ]; + array[ offset + 13 ] = te[ 13 ]; + array[ offset + 14 ] = te[ 14 ]; + array[ offset + 15 ] = te[ 15 ]; + + return array; + + } + +} + +const _v1$5 = /*@__PURE__*/ new Vector3(); +const _m1$2 = /*@__PURE__*/ new Matrix4(); +const _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 ); +const _one = /*@__PURE__*/ new Vector3( 1, 1, 1 ); +const _x = /*@__PURE__*/ new Vector3(); +const _y = /*@__PURE__*/ new Vector3(); +const _z = /*@__PURE__*/ new Vector3(); + +const _matrix$2 = /*@__PURE__*/ new Matrix4(); +const _quaternion$3 = /*@__PURE__*/ new Quaternion(); + +/** + * A class representing Euler angles. + * + * Euler angles describe a rotational transformation by rotating an object on + * its various axes in specified amounts per axis, and a specified axis + * order. + * + * Iterating through an instance will yield its components (x, y, z, + * order) in the corresponding order. + * + * ```js + * const a = new THREE.Euler( 0, 1, 1.57, 'XYZ' ); + * const b = new THREE.Vector3( 1, 0, 1 ); + * b.applyEuler(a); + * ``` + */ +class Euler { + + /** + * Constructs a new euler instance. + * + * @param {number} [x=0] - The angle of the x axis in radians. + * @param {number} [y=0] - The angle of the y axis in radians. + * @param {number} [z=0] - The angle of the z axis in radians. + * @param {string} [order=Euler.DEFAULT_ORDER] - A string representing the order that the rotations are applied. + */ + constructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isEuler = true; + + this._x = x; + this._y = y; + this._z = z; + this._order = order; + + } + + /** + * The angle of the x axis in radians. + * + * @type {number} + * @default 0 + */ + get x() { + + return this._x; + + } + + set x( value ) { + + this._x = value; + this._onChangeCallback(); + + } + + /** + * The angle of the y axis in radians. + * + * @type {number} + * @default 0 + */ + get y() { + + return this._y; + + } + + set y( value ) { + + this._y = value; + this._onChangeCallback(); + + } + + /** + * The angle of the z axis in radians. + * + * @type {number} + * @default 0 + */ + get z() { + + return this._z; + + } + + set z( value ) { + + this._z = value; + this._onChangeCallback(); + + } + + /** + * A string representing the order that the rotations are applied. + * + * @type {string} + * @default 'XYZ' + */ + get order() { + + return this._order; + + } + + set order( value ) { + + this._order = value; + this._onChangeCallback(); + + } + + /** + * Sets the Euler components. + * + * @param {number} x - The angle of the x axis in radians. + * @param {number} y - The angle of the y axis in radians. + * @param {number} z - The angle of the z axis in radians. + * @param {string} [order] - A string representing the order that the rotations are applied. + * @return {Euler} A reference to this Euler instance. + */ + set( x, y, z, order = this._order ) { + + this._x = x; + this._y = y; + this._z = z; + this._order = order; + + this._onChangeCallback(); + + return this; + + } + + /** + * Returns a new Euler instance with copied values from this instance. + * + * @return {Euler} A clone of this instance. + */ + clone() { + + return new this.constructor( this._x, this._y, this._z, this._order ); + + } + + /** + * Copies the values of the given Euler instance to this instance. + * + * @param {Euler} euler - The Euler instance to copy. + * @return {Euler} A reference to this Euler instance. + */ + copy( euler ) { + + this._x = euler._x; + this._y = euler._y; + this._z = euler._z; + this._order = euler._order; + + this._onChangeCallback(); + + return this; + + } + + /** + * Sets the angles of this Euler instance from a pure rotation matrix. + * + * @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled). + * @param {string} [order] - A string representing the order that the rotations are applied. + * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not. + * @return {Euler} A reference to this Euler instance. + */ + setFromRotationMatrix( m, order = this._order, update = true ) { + + const te = m.elements; + const m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ]; + const m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ]; + const m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; + + switch ( order ) { + + case 'XYZ': + + this._y = Math.asin( clamp( m13, -1, 1 ) ); + + if ( Math.abs( m13 ) < 0.9999999 ) { + + this._x = Math.atan2( - m23, m33 ); + this._z = Math.atan2( - m12, m11 ); + + } else { + + this._x = Math.atan2( m32, m22 ); + this._z = 0; + + } + + break; + + case 'YXZ': + + this._x = Math.asin( - clamp( m23, -1, 1 ) ); + + if ( Math.abs( m23 ) < 0.9999999 ) { + + this._y = Math.atan2( m13, m33 ); + this._z = Math.atan2( m21, m22 ); + + } else { + + this._y = Math.atan2( - m31, m11 ); + this._z = 0; + + } + + break; + + case 'ZXY': + + this._x = Math.asin( clamp( m32, -1, 1 ) ); + + if ( Math.abs( m32 ) < 0.9999999 ) { + + this._y = Math.atan2( - m31, m33 ); + this._z = Math.atan2( - m12, m22 ); + + } else { + + this._y = 0; + this._z = Math.atan2( m21, m11 ); + + } + + break; + + case 'ZYX': + + this._y = Math.asin( - clamp( m31, -1, 1 ) ); + + if ( Math.abs( m31 ) < 0.9999999 ) { + + this._x = Math.atan2( m32, m33 ); + this._z = Math.atan2( m21, m11 ); + + } else { + + this._x = 0; + this._z = Math.atan2( - m12, m22 ); + + } + + break; + + case 'YZX': + + this._z = Math.asin( clamp( m21, -1, 1 ) ); + + if ( Math.abs( m21 ) < 0.9999999 ) { + + this._x = Math.atan2( - m23, m22 ); + this._y = Math.atan2( - m31, m11 ); + + } else { + + this._x = 0; + this._y = Math.atan2( m13, m33 ); + + } + + break; + + case 'XZY': + + this._z = Math.asin( - clamp( m12, -1, 1 ) ); + + if ( Math.abs( m12 ) < 0.9999999 ) { + + this._x = Math.atan2( m32, m22 ); + this._y = Math.atan2( m13, m11 ); + + } else { + + this._x = Math.atan2( - m23, m33 ); + this._y = 0; + + } + + break; + + default: + + console.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order ); + + } + + this._order = order; + + if ( update === true ) this._onChangeCallback(); + + return this; + + } + + /** + * Sets the angles of this Euler instance from a normalized quaternion. + * + * @param {Quaternion} q - A normalized Quaternion. + * @param {string} [order] - A string representing the order that the rotations are applied. + * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not. + * @return {Euler} A reference to this Euler instance. + */ + setFromQuaternion( q, order, update ) { + + _matrix$2.makeRotationFromQuaternion( q ); + + return this.setFromRotationMatrix( _matrix$2, order, update ); + + } + + /** + * Sets the angles of this Euler instance from the given vector. + * + * @param {Vector3} v - The vector. + * @param {string} [order] - A string representing the order that the rotations are applied. + * @return {Euler} A reference to this Euler instance. + */ + setFromVector3( v, order = this._order ) { + + return this.set( v.x, v.y, v.z, order ); + + } + + /** + * Resets the euler angle with a new order by creating a quaternion from this + * euler angle and then setting this euler angle with the quaternion and the + * new order. + * + * Warning: This discards revolution information. + * + * @param {string} [newOrder] - A string representing the new order that the rotations are applied. + * @return {Euler} A reference to this Euler instance. + */ + reorder( newOrder ) { + + _quaternion$3.setFromEuler( this ); + + return this.setFromQuaternion( _quaternion$3, newOrder ); + + } + + /** + * Returns `true` if this Euler instance is equal with the given one. + * + * @param {Euler} euler - The Euler instance to test for equality. + * @return {boolean} Whether this Euler instance is equal with the given one. + */ + equals( euler ) { + + return ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order ); + + } + + /** + * Sets this Euler instance's components to values from the given array. The first three + * entries of the array are assign to the x,y and z components. An optional fourth entry + * defines the Euler order. + * + * @param {Array} array - An array holding the Euler component values. + * @return {Euler} A reference to this Euler instance. + */ + fromArray( array ) { + + this._x = array[ 0 ]; + this._y = array[ 1 ]; + this._z = array[ 2 ]; + if ( array[ 3 ] !== undefined ) this._order = array[ 3 ]; + + this._onChangeCallback(); + + return this; + + } + + /** + * Writes the components of this Euler instance to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the Euler components. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The Euler components. + */ + toArray( array = [], offset = 0 ) { + + array[ offset ] = this._x; + array[ offset + 1 ] = this._y; + array[ offset + 2 ] = this._z; + array[ offset + 3 ] = this._order; + + return array; + + } + + _onChange( callback ) { + + this._onChangeCallback = callback; + + return this; + + } + + _onChangeCallback() {} + + *[ Symbol.iterator ]() { + + yield this._x; + yield this._y; + yield this._z; + yield this._order; + + } + +} + +/** + * The default Euler angle order. + * + * @static + * @type {string} + * @default 'XYZ' + */ +Euler.DEFAULT_ORDER = 'XYZ'; + +/** + * A layers object assigns an 3D object to 1 or more of 32 + * layers numbered `0` to `31` - internally the layers are stored as a + * bit mask], and by default all 3D objects are a member of layer `0`. + * + * This can be used to control visibility - an object must share a layer with + * a camera to be visible when that camera's view is + * rendered. + * + * All classes that inherit from {@link Object3D} have an `layers` property which + * is an instance of this class. + */ +class Layers { + + /** + * Constructs a new layers instance, with membership + * initially set to layer `0`. + */ + constructor() { + + /** + * A bit mask storing which of the 32 layers this layers object is currently + * a member of. + * + * @type {number} + */ + this.mask = 1 | 0; + + } + + /** + * Sets membership to the given layer, and remove membership all other layers. + * + * @param {number} layer - The layer to set. + */ + set( layer ) { + + this.mask = ( 1 << layer | 0 ) >>> 0; + + } + + /** + * Adds membership of the given layer. + * + * @param {number} layer - The layer to enable. + */ + enable( layer ) { + + this.mask |= 1 << layer | 0; + + } + + /** + * Adds membership to all layers. + */ + enableAll() { + + this.mask = 0xffffffff | 0; + + } + + /** + * Toggles the membership of the given layer. + * + * @param {number} layer - The layer to toggle. + */ + toggle( layer ) { + + this.mask ^= 1 << layer | 0; + + } + + /** + * Removes membership of the given layer. + * + * @param {number} layer - The layer to enable. + */ + disable( layer ) { + + this.mask &= ~ ( 1 << layer | 0 ); + + } + + /** + * Removes the membership from all layers. + */ + disableAll() { + + this.mask = 0; + + } + + /** + * Returns `true` if this and the given layers object have at least one + * layer in common. + * + * @param {Layers} layers - The layers to test. + * @return {boolean } Whether this and the given layers object have at least one layer in common or not. + */ + test( layers ) { + + return ( this.mask & layers.mask ) !== 0; + + } + + /** + * Returns `true` if the given layer is enabled. + * + * @param {number} layer - The layer to test. + * @return {boolean } Whether the given layer is enabled or not. + */ + isEnabled( layer ) { + + return ( this.mask & ( 1 << layer | 0 ) ) !== 0; + + } + +} + +let _object3DId = 0; + +const _v1$4 = /*@__PURE__*/ new Vector3(); +const _q1 = /*@__PURE__*/ new Quaternion(); +const _m1$1 = /*@__PURE__*/ new Matrix4(); +const _target = /*@__PURE__*/ new Vector3(); + +const _position$3 = /*@__PURE__*/ new Vector3(); +const _scale$2 = /*@__PURE__*/ new Vector3(); +const _quaternion$2 = /*@__PURE__*/ new Quaternion(); + +const _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 ); +const _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 ); +const _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 ); + +/** + * Fires when the object has been added to its parent object. + * + * @event Object3D#added + * @type {Object} + */ +const _addedEvent = { type: 'added' }; + +/** + * Fires when the object has been removed from its parent object. + * + * @event Object3D#removed + * @type {Object} + */ +const _removedEvent = { type: 'removed' }; + +/** + * Fires when a new child object has been added. + * + * @event Object3D#childadded + * @type {Object} + */ +const _childaddedEvent = { type: 'childadded', child: null }; + +/** + * Fires when a new child object has been added. + * + * @event Object3D#childremoved + * @type {Object} + */ +const _childremovedEvent = { type: 'childremoved', child: null }; + +/** + * This is the base class for most objects in three.js and provides a set of + * properties and methods for manipulating objects in 3D space. + * + * @augments EventDispatcher + */ +class Object3D extends EventDispatcher { + + /** + * Constructs a new 3D object. + */ + constructor() { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isObject3D = true; + + /** + * The ID of the 3D object. + * + * @name Object3D#id + * @type {number} + * @readonly + */ + Object.defineProperty( this, 'id', { value: _object3DId ++ } ); + + /** + * The UUID of the 3D object. + * + * @type {string} + * @readonly + */ + this.uuid = generateUUID(); + + /** + * The name of the 3D object. + * + * @type {string} + */ + this.name = ''; + + /** + * The type property is used for detecting the object type + * in context of serialization/deserialization. + * + * @type {string} + * @readonly + */ + this.type = 'Object3D'; + + /** + * A reference to the parent object. + * + * @type {?Object3D} + * @default null + */ + this.parent = null; + + /** + * An array holding the child 3D objects of this instance. + * + * @type {Array} + */ + this.children = []; + + /** + * Defines the `up` direction of the 3D object which influences + * the orientation via methods like {@link Object3D#lookAt}. + * + * The default values for all 3D objects is defined by `Object3D.DEFAULT_UP`. + * + * @type {Vector3} + */ + this.up = Object3D.DEFAULT_UP.clone(); + + const position = new Vector3(); + const rotation = new Euler(); + const quaternion = new Quaternion(); + const scale = new Vector3( 1, 1, 1 ); + + function onRotationChange() { + + quaternion.setFromEuler( rotation, false ); + + } + + function onQuaternionChange() { + + rotation.setFromQuaternion( quaternion, undefined, false ); + + } + + rotation._onChange( onRotationChange ); + quaternion._onChange( onQuaternionChange ); + + Object.defineProperties( this, { + /** + * Represents the object's local position. + * + * @name Object3D#position + * @type {Vector3} + * @default (0,0,0) + */ + position: { + configurable: true, + enumerable: true, + value: position + }, + /** + * Represents the object's local rotation as Euler angles, in radians. + * + * @name Object3D#rotation + * @type {Euler} + * @default (0,0,0) + */ + rotation: { + configurable: true, + enumerable: true, + value: rotation + }, + /** + * Represents the object's local rotation as Quaternions. + * + * @name Object3D#quaternion + * @type {Quaternion} + */ + quaternion: { + configurable: true, + enumerable: true, + value: quaternion + }, + /** + * Represents the object's local scale. + * + * @name Object3D#scale + * @type {Vector3} + * @default (1,1,1) + */ + scale: { + configurable: true, + enumerable: true, + value: scale + }, + /** + * Represents the object's model-view matrix. + * + * @name Object3D#modelViewMatrix + * @type {Matrix4} + */ + modelViewMatrix: { + value: new Matrix4() + }, + /** + * Represents the object's normal matrix. + * + * @name Object3D#normalMatrix + * @type {Matrix3} + */ + normalMatrix: { + value: new Matrix3() + } + } ); + + /** + * Represents the object's transformation matrix in local space. + * + * @type {Matrix4} + */ + this.matrix = new Matrix4(); + + /** + * Represents the object's transformation matrix in world space. + * If the 3D object has no parent, then it's identical to the local transformation matrix + * + * @type {Matrix4} + */ + this.matrixWorld = new Matrix4(); + + /** + * When set to `true`, the engine automatically computes the local matrix from position, + * rotation and scale every frame. + * + * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_AUTO_UPDATE`. + * + * @type {boolean} + * @default true + */ + this.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE; + + /** + * When set to `true`, the engine automatically computes the world matrix from the current local + * matrix and the object's transformation hierarchy. + * + * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE`. + * + * @type {boolean} + * @default true + */ + this.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer + + /** + * When set to `true`, it calculates the world matrix in that frame and resets this property + * to `false`. + * + * @type {boolean} + * @default false + */ + this.matrixWorldNeedsUpdate = false; + + /** + * The layer membership of the 3D object. The 3D object is only visible if it has + * at least one layer in common with the camera in use. This property can also be + * used to filter out unwanted objects in ray-intersection tests when using {@link Raycaster}. + * + * @type {Layers} + */ + this.layers = new Layers(); + + /** + * When set to `true`, the 3D object gets rendered. + * + * @type {boolean} + * @default true + */ + this.visible = true; + + /** + * When set to `true`, the 3D object gets rendered into shadow maps. + * + * @type {boolean} + * @default false + */ + this.castShadow = false; + + /** + * When set to `true`, the 3D object is affected by shadows in the scene. + * + * @type {boolean} + * @default false + */ + this.receiveShadow = false; + + /** + * When set to `true`, the 3D object is honored by view frustum culling. + * + * @type {boolean} + * @default true + */ + this.frustumCulled = true; + + /** + * This value allows the default rendering order of scene graph objects to be + * overridden although opaque and transparent objects remain sorted independently. + * When this property is set for an instance of {@link Group},all descendants + * objects will be sorted and rendered together. Sorting is from lowest to highest + * render order. + * + * @type {number} + * @default 0 + */ + this.renderOrder = 0; + + /** + * An array holding the animation clips of the 3D object. + * + * @type {Array} + */ + this.animations = []; + + /** + * Custom depth material to be used when rendering to the depth map. Can only be used + * in context of meshes. When shadow-casting with a {@link DirectionalLight} or {@link SpotLight}, + * if you are modifying vertex positions in the vertex shader you must specify a custom depth + * material for proper shadows. + * + * Only relevant in context of {@link WebGLRenderer}. + * + * @type {(Material|undefined)} + * @default undefined + */ + this.customDepthMaterial = undefined; + + /** + * Same as {@link Object3D#customDepthMaterial}, but used with {@link PointLight}. + * + * Only relevant in context of {@link WebGLRenderer}. + * + * @type {(Material|undefined)} + * @default undefined + */ + this.customDistanceMaterial = undefined; + + /** + * An object that can be used to store custom data about the 3D object. It + * should not hold references to functions as these will not be cloned. + * + * @type {Object} + */ + this.userData = {}; + + } + + /** + * A callback that is executed immediately before a 3D object is rendered to a shadow map. + * + * @param {Renderer|WebGLRenderer} renderer - The renderer. + * @param {Object3D} object - The 3D object. + * @param {Camera} camera - The camera that is used to render the scene. + * @param {Camera} shadowCamera - The shadow camera. + * @param {BufferGeometry} geometry - The 3D object's geometry. + * @param {Material} depthMaterial - The depth material. + * @param {Object} group - The geometry group data. + */ + onBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {} + + /** + * A callback that is executed immediately after a 3D object is rendered to a shadow map. + * + * @param {Renderer|WebGLRenderer} renderer - The renderer. + * @param {Object3D} object - The 3D object. + * @param {Camera} camera - The camera that is used to render the scene. + * @param {Camera} shadowCamera - The shadow camera. + * @param {BufferGeometry} geometry - The 3D object's geometry. + * @param {Material} depthMaterial - The depth material. + * @param {Object} group - The geometry group data. + */ + onAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {} + + /** + * A callback that is executed immediately before a 3D object is rendered. + * + * @param {Renderer|WebGLRenderer} renderer - The renderer. + * @param {Object3D} object - The 3D object. + * @param {Camera} camera - The camera that is used to render the scene. + * @param {BufferGeometry} geometry - The 3D object's geometry. + * @param {Material} material - The 3D object's material. + * @param {Object} group - The geometry group data. + */ + onBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {} + + /** + * A callback that is executed immediately after a 3D object is rendered. + * + * @param {Renderer|WebGLRenderer} renderer - The renderer. + * @param {Object3D} object - The 3D object. + * @param {Camera} camera - The camera that is used to render the scene. + * @param {BufferGeometry} geometry - The 3D object's geometry. + * @param {Material} material - The 3D object's material. + * @param {Object} group - The geometry group data. + */ + onAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {} + + /** + * Applies the given transformation matrix to the object and updates the object's position, + * rotation and scale. + * + * @param {Matrix4} matrix - The transformation matrix. + */ + applyMatrix4( matrix ) { + + if ( this.matrixAutoUpdate ) this.updateMatrix(); + + this.matrix.premultiply( matrix ); + + this.matrix.decompose( this.position, this.quaternion, this.scale ); + + } + + /** + * Applies a rotation represented by given the quaternion to the 3D object. + * + * @param {Quaternion} q - The quaternion. + * @return {Object3D} A reference to this instance. + */ + applyQuaternion( q ) { + + this.quaternion.premultiply( q ); + + return this; + + } + + /** + * Sets the given rotation represented as an axis/angle couple to the 3D object. + * + * @param {Vector3} axis - The (normalized) axis vector. + * @param {number} angle - The angle in radians. + */ + setRotationFromAxisAngle( axis, angle ) { + + // assumes axis is normalized + + this.quaternion.setFromAxisAngle( axis, angle ); + + } + + /** + * Sets the given rotation represented as Euler angles to the 3D object. + * + * @param {Euler} euler - The Euler angles. + */ + setRotationFromEuler( euler ) { + + this.quaternion.setFromEuler( euler, true ); + + } + + /** + * Sets the given rotation represented as rotation matrix to the 3D object. + * + * @param {Matrix4} m - Although a 4x4 matrix is expected, the upper 3x3 portion must be + * a pure rotation matrix (i.e, unscaled). + */ + setRotationFromMatrix( m ) { + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + this.quaternion.setFromRotationMatrix( m ); + + } + + /** + * Sets the given rotation represented as a Quaternion to the 3D object. + * + * @param {Quaternion} q - The Quaternion + */ + setRotationFromQuaternion( q ) { + + // assumes q is normalized + + this.quaternion.copy( q ); + + } + + /** + * Rotates the 3D object along an axis in local space. + * + * @param {Vector3} axis - The (normalized) axis vector. + * @param {number} angle - The angle in radians. + * @return {Object3D} A reference to this instance. + */ + rotateOnAxis( axis, angle ) { + + // rotate object on axis in object space + // axis is assumed to be normalized + + _q1.setFromAxisAngle( axis, angle ); + + this.quaternion.multiply( _q1 ); + + return this; + + } + + /** + * Rotates the 3D object along an axis in world space. + * + * @param {Vector3} axis - The (normalized) axis vector. + * @param {number} angle - The angle in radians. + * @return {Object3D} A reference to this instance. + */ + rotateOnWorldAxis( axis, angle ) { + + // rotate object on axis in world space + // axis is assumed to be normalized + // method assumes no rotated parent + + _q1.setFromAxisAngle( axis, angle ); + + this.quaternion.premultiply( _q1 ); + + return this; + + } + + /** + * Rotates the 3D object around its X axis in local space. + * + * @param {number} angle - The angle in radians. + * @return {Object3D} A reference to this instance. + */ + rotateX( angle ) { + + return this.rotateOnAxis( _xAxis, angle ); + + } + + /** + * Rotates the 3D object around its Y axis in local space. + * + * @param {number} angle - The angle in radians. + * @return {Object3D} A reference to this instance. + */ + rotateY( angle ) { + + return this.rotateOnAxis( _yAxis, angle ); + + } + + /** + * Rotates the 3D object around its Z axis in local space. + * + * @param {number} angle - The angle in radians. + * @return {Object3D} A reference to this instance. + */ + rotateZ( angle ) { + + return this.rotateOnAxis( _zAxis, angle ); + + } + + /** + * Translate the 3D object by a distance along the given axis in local space. + * + * @param {Vector3} axis - The (normalized) axis vector. + * @param {number} distance - The distance in world units. + * @return {Object3D} A reference to this instance. + */ + translateOnAxis( axis, distance ) { + + // translate object by distance along axis in object space + // axis is assumed to be normalized + + _v1$4.copy( axis ).applyQuaternion( this.quaternion ); + + this.position.add( _v1$4.multiplyScalar( distance ) ); + + return this; + + } + + /** + * Translate the 3D object by a distance along its X-axis in local space. + * + * @param {number} distance - The distance in world units. + * @return {Object3D} A reference to this instance. + */ + translateX( distance ) { + + return this.translateOnAxis( _xAxis, distance ); + + } + + /** + * Translate the 3D object by a distance along its Y-axis in local space. + * + * @param {number} distance - The distance in world units. + * @return {Object3D} A reference to this instance. + */ + translateY( distance ) { + + return this.translateOnAxis( _yAxis, distance ); + + } + + /** + * Translate the 3D object by a distance along its Z-axis in local space. + * + * @param {number} distance - The distance in world units. + * @return {Object3D} A reference to this instance. + */ + translateZ( distance ) { + + return this.translateOnAxis( _zAxis, distance ); + + } + + /** + * Converts the given vector from this 3D object's local space to world space. + * + * @param {Vector3} vector - The vector to convert. + * @return {Vector3} The converted vector. + */ + localToWorld( vector ) { + + this.updateWorldMatrix( true, false ); + + return vector.applyMatrix4( this.matrixWorld ); + + } + + /** + * Converts the given vector from this 3D object's word space to local space. + * + * @param {Vector3} vector - The vector to convert. + * @return {Vector3} The converted vector. + */ + worldToLocal( vector ) { + + this.updateWorldMatrix( true, false ); + + return vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() ); + + } + + /** + * Rotates the object to face a point in world space. + * + * This method does not support objects having non-uniformly-scaled parent(s). + * + * @param {number|Vector3} x - The x coordinate in world space. Alternatively, a vector representing a position in world space + * @param {number} [y] - The y coordinate in world space. + * @param {number} [z] - The z coordinate in world space. + */ + lookAt( x, y, z ) { + + // This method does not support objects having non-uniformly-scaled parent(s) + + if ( x.isVector3 ) { + + _target.copy( x ); + + } else { + + _target.set( x, y, z ); + + } + + const parent = this.parent; + + this.updateWorldMatrix( true, false ); + + _position$3.setFromMatrixPosition( this.matrixWorld ); + + if ( this.isCamera || this.isLight ) { + + _m1$1.lookAt( _position$3, _target, this.up ); + + } else { + + _m1$1.lookAt( _target, _position$3, this.up ); + + } + + this.quaternion.setFromRotationMatrix( _m1$1 ); + + if ( parent ) { + + _m1$1.extractRotation( parent.matrixWorld ); + _q1.setFromRotationMatrix( _m1$1 ); + this.quaternion.premultiply( _q1.invert() ); + + } + + } + + /** + * Adds the given 3D object as a child to this 3D object. An arbitrary number of + * objects may be added. Any current parent on an object passed in here will be + * removed, since an object can have at most one parent. + * + * @fires Object3D#added + * @fires Object3D#childadded + * @param {Object3D} object - The 3D object to add. + * @return {Object3D} A reference to this instance. + */ + add( object ) { + + if ( arguments.length > 1 ) { + + for ( let i = 0; i < arguments.length; i ++ ) { + + this.add( arguments[ i ] ); + + } + + return this; + + } + + if ( object === this ) { + + console.error( 'THREE.Object3D.add: object can\'t be added as a child of itself.', object ); + return this; + + } + + if ( object && object.isObject3D ) { + + object.removeFromParent(); + object.parent = this; + this.children.push( object ); + + object.dispatchEvent( _addedEvent ); + + _childaddedEvent.child = object; + this.dispatchEvent( _childaddedEvent ); + _childaddedEvent.child = null; + + } else { + + console.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object ); + + } + + return this; + + } + + /** + * Removes the given 3D object as child from this 3D object. + * An arbitrary number of objects may be removed. + * + * @fires Object3D#removed + * @fires Object3D#childremoved + * @param {Object3D} object - The 3D object to remove. + * @return {Object3D} A reference to this instance. + */ + remove( object ) { + + if ( arguments.length > 1 ) { + + for ( let i = 0; i < arguments.length; i ++ ) { + + this.remove( arguments[ i ] ); + + } + + return this; + + } + + const index = this.children.indexOf( object ); + + if ( index !== -1 ) { + + object.parent = null; + this.children.splice( index, 1 ); + + object.dispatchEvent( _removedEvent ); + + _childremovedEvent.child = object; + this.dispatchEvent( _childremovedEvent ); + _childremovedEvent.child = null; + + } + + return this; + + } + + /** + * Removes this 3D object from its current parent. + * + * @fires Object3D#removed + * @fires Object3D#childremoved + * @return {Object3D} A reference to this instance. + */ + removeFromParent() { + + const parent = this.parent; + + if ( parent !== null ) { + + parent.remove( this ); + + } + + return this; + + } + + /** + * Removes all child objects. + * + * @fires Object3D#removed + * @fires Object3D#childremoved + * @return {Object3D} A reference to this instance. + */ + clear() { + + return this.remove( ... this.children ); + + } + + /** + * Adds the given 3D object as a child of this 3D object, while maintaining the object's world + * transform. This method does not support scene graphs having non-uniformly-scaled nodes(s). + * + * @fires Object3D#added + * @fires Object3D#childadded + * @param {Object3D} object - The 3D object to attach. + * @return {Object3D} A reference to this instance. + */ + attach( object ) { + + // adds object as a child of this, while maintaining the object's world transform + + // Note: This method does not support scene graphs having non-uniformly-scaled nodes(s) + + this.updateWorldMatrix( true, false ); + + _m1$1.copy( this.matrixWorld ).invert(); + + if ( object.parent !== null ) { + + object.parent.updateWorldMatrix( true, false ); + + _m1$1.multiply( object.parent.matrixWorld ); + + } + + object.applyMatrix4( _m1$1 ); + + object.removeFromParent(); + object.parent = this; + this.children.push( object ); + + object.updateWorldMatrix( false, true ); + + object.dispatchEvent( _addedEvent ); + + _childaddedEvent.child = object; + this.dispatchEvent( _childaddedEvent ); + _childaddedEvent.child = null; + + return this; + + } + + /** + * Searches through the 3D object and its children, starting with the 3D object + * itself, and returns the first with a matching ID. + * + * @param {number} id - The id. + * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found. + */ + getObjectById( id ) { + + return this.getObjectByProperty( 'id', id ); + + } + + /** + * Searches through the 3D object and its children, starting with the 3D object + * itself, and returns the first with a matching name. + * + * @param {string} name - The name. + * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found. + */ + getObjectByName( name ) { + + return this.getObjectByProperty( 'name', name ); + + } + + /** + * Searches through the 3D object and its children, starting with the 3D object + * itself, and returns the first with a matching property value. + * + * @param {string} name - The name of the property. + * @param {any} value - The value. + * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found. + */ + getObjectByProperty( name, value ) { + + if ( this[ name ] === value ) return this; + + for ( let i = 0, l = this.children.length; i < l; i ++ ) { + + const child = this.children[ i ]; + const object = child.getObjectByProperty( name, value ); + + if ( object !== undefined ) { + + return object; + + } + + } + + return undefined; + + } + + /** + * Searches through the 3D object and its children, starting with the 3D object + * itself, and returns all 3D objects with a matching property value. + * + * @param {string} name - The name of the property. + * @param {any} value - The value. + * @param {Array} result - The method stores the result in this array. + * @return {Array} The found 3D objects. + */ + getObjectsByProperty( name, value, result = [] ) { + + if ( this[ name ] === value ) result.push( this ); + + const children = this.children; + + for ( let i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].getObjectsByProperty( name, value, result ); + + } + + return result; + + } + + /** + * Returns a vector representing the position of the 3D object in world space. + * + * @param {Vector3} target - The target vector the result is stored to. + * @return {Vector3} The 3D object's position in world space. + */ + getWorldPosition( target ) { + + this.updateWorldMatrix( true, false ); + + return target.setFromMatrixPosition( this.matrixWorld ); + + } + + /** + * Returns a Quaternion representing the position of the 3D object in world space. + * + * @param {Quaternion} target - The target Quaternion the result is stored to. + * @return {Quaternion} The 3D object's rotation in world space. + */ + getWorldQuaternion( target ) { + + this.updateWorldMatrix( true, false ); + + this.matrixWorld.decompose( _position$3, target, _scale$2 ); + + return target; + + } + + /** + * Returns a vector representing the scale of the 3D object in world space. + * + * @param {Vector3} target - The target vector the result is stored to. + * @return {Vector3} The 3D object's scale in world space. + */ + getWorldScale( target ) { + + this.updateWorldMatrix( true, false ); + + this.matrixWorld.decompose( _position$3, _quaternion$2, target ); + + return target; + + } + + /** + * Returns a vector representing the ("look") direction of the 3D object in world space. + * + * @param {Vector3} target - The target vector the result is stored to. + * @return {Vector3} The 3D object's direction in world space. + */ + getWorldDirection( target ) { + + this.updateWorldMatrix( true, false ); + + const e = this.matrixWorld.elements; + + return target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize(); + + } + + /** + * Abstract method to get intersections between a casted ray and this + * 3D object. Renderable 3D objects such as {@link Mesh}, {@link Line} or {@link Points} + * implement this method in order to use raycasting. + * + * @abstract + * @param {Raycaster} raycaster - The raycaster. + * @param {Array} intersects - An array holding the result of the method. + */ + raycast( /* raycaster, intersects */ ) {} + + /** + * Executes the callback on this 3D object and all descendants. + * + * Note: Modifying the scene graph inside the callback is discouraged. + * + * @param {Function} callback - A callback function that allows to process the current 3D object. + */ + traverse( callback ) { + + callback( this ); + + const children = this.children; + + for ( let i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].traverse( callback ); + + } + + } + + /** + * Like {@link Object3D#traverse}, but the callback will only be executed for visible 3D objects. + * Descendants of invisible 3D objects are not traversed. + * + * Note: Modifying the scene graph inside the callback is discouraged. + * + * @param {Function} callback - A callback function that allows to process the current 3D object. + */ + traverseVisible( callback ) { + + if ( this.visible === false ) return; + + callback( this ); + + const children = this.children; + + for ( let i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].traverseVisible( callback ); + + } + + } + + /** + * Like {@link Object3D#traverse}, but the callback will only be executed for all ancestors. + * + * Note: Modifying the scene graph inside the callback is discouraged. + * + * @param {Function} callback - A callback function that allows to process the current 3D object. + */ + traverseAncestors( callback ) { + + const parent = this.parent; + + if ( parent !== null ) { + + callback( parent ); + + parent.traverseAncestors( callback ); + + } + + } + + /** + * Updates the transformation matrix in local space by computing it from the current + * position, rotation and scale values. + */ + updateMatrix() { + + this.matrix.compose( this.position, this.quaternion, this.scale ); + + this.matrixWorldNeedsUpdate = true; + + } + + /** + * Updates the transformation matrix in world space of this 3D objects and its descendants. + * + * To ensure correct results, this method also recomputes the 3D object's transformation matrix in + * local space. The computation of the local and world matrix can be controlled with the + * {@link Object3D#matrixAutoUpdate} and {@link Object3D#matrixWorldAutoUpdate} flags which are both + * `true` by default. Set these flags to `false` if you need more control over the update matrix process. + * + * @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even + * when {@link Object3D#matrixWorldAutoUpdate} is set to `false`. + */ + updateMatrixWorld( force ) { + + if ( this.matrixAutoUpdate ) this.updateMatrix(); + + if ( this.matrixWorldNeedsUpdate || force ) { + + if ( this.matrixWorldAutoUpdate === true ) { + + if ( this.parent === null ) { + + this.matrixWorld.copy( this.matrix ); + + } else { + + this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); + + } + + } + + this.matrixWorldNeedsUpdate = false; + + force = true; + + } + + // make sure descendants are updated if required + + const children = this.children; + + for ( let i = 0, l = children.length; i < l; i ++ ) { + + const child = children[ i ]; + + child.updateMatrixWorld( force ); + + } + + } + + /** + * An alternative version of {@link Object3D#updateMatrixWorld} with more control over the + * update of ancestor and descendant nodes. + * + * @param {boolean} [updateParents=false] Whether ancestor nodes should be updated or not. + * @param {boolean} [updateChildren=false] Whether descendant nodes should be updated or not. + */ + updateWorldMatrix( updateParents, updateChildren ) { + + const parent = this.parent; + + if ( updateParents === true && parent !== null ) { + + parent.updateWorldMatrix( true, false ); + + } + + if ( this.matrixAutoUpdate ) this.updateMatrix(); + + if ( this.matrixWorldAutoUpdate === true ) { + + if ( this.parent === null ) { + + this.matrixWorld.copy( this.matrix ); + + } else { + + this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); + + } + + } + + // make sure descendants are updated + + if ( updateChildren === true ) { + + const children = this.children; + + for ( let i = 0, l = children.length; i < l; i ++ ) { + + const child = children[ i ]; + + child.updateWorldMatrix( false, true ); + + } + + } + + } + + /** + * Serializes the 3D object into JSON. + * + * @param {?(Object|string)} meta - An optional value holding meta information about the serialization. + * @return {Object} A JSON object representing the serialized 3D object. + * @see {@link ObjectLoader#parse} + */ + toJSON( meta ) { + + // meta is a string when called from JSON.stringify + const isRootObject = ( meta === undefined || typeof meta === 'string' ); + + const output = {}; + + // meta is a hash used to collect geometries, materials. + // not providing it implies that this is the root object + // being serialized. + if ( isRootObject ) { + + // initialize meta obj + meta = { + geometries: {}, + materials: {}, + textures: {}, + images: {}, + shapes: {}, + skeletons: {}, + animations: {}, + nodes: {} + }; + + output.metadata = { + version: 4.6, + type: 'Object', + generator: 'Object3D.toJSON' + }; + + } + + // standard Object3D serialization + + const object = {}; + + object.uuid = this.uuid; + object.type = this.type; + + if ( this.name !== '' ) object.name = this.name; + if ( this.castShadow === true ) object.castShadow = true; + if ( this.receiveShadow === true ) object.receiveShadow = true; + if ( this.visible === false ) object.visible = false; + if ( this.frustumCulled === false ) object.frustumCulled = false; + if ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder; + if ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData; + + object.layers = this.layers.mask; + object.matrix = this.matrix.toArray(); + object.up = this.up.toArray(); + + if ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false; + + // object specific properties + + if ( this.isInstancedMesh ) { + + object.type = 'InstancedMesh'; + object.count = this.count; + object.instanceMatrix = this.instanceMatrix.toJSON(); + if ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON(); + + } + + if ( this.isBatchedMesh ) { + + object.type = 'BatchedMesh'; + object.perObjectFrustumCulled = this.perObjectFrustumCulled; + object.sortObjects = this.sortObjects; + + object.drawRanges = this._drawRanges; + object.reservedRanges = this._reservedRanges; + + object.visibility = this._visibility; + object.active = this._active; + object.bounds = this._bounds.map( bound => ( { + boxInitialized: bound.boxInitialized, + boxMin: bound.box.min.toArray(), + boxMax: bound.box.max.toArray(), + + sphereInitialized: bound.sphereInitialized, + sphereRadius: bound.sphere.radius, + sphereCenter: bound.sphere.center.toArray() + } ) ); + + object.maxInstanceCount = this._maxInstanceCount; + object.maxVertexCount = this._maxVertexCount; + object.maxIndexCount = this._maxIndexCount; + + object.geometryInitialized = this._geometryInitialized; + object.geometryCount = this._geometryCount; + + object.matricesTexture = this._matricesTexture.toJSON( meta ); + + if ( this._colorsTexture !== null ) object.colorsTexture = this._colorsTexture.toJSON( meta ); + + if ( this.boundingSphere !== null ) { + + object.boundingSphere = { + center: object.boundingSphere.center.toArray(), + radius: object.boundingSphere.radius + }; + + } + + if ( this.boundingBox !== null ) { + + object.boundingBox = { + min: object.boundingBox.min.toArray(), + max: object.boundingBox.max.toArray() + }; + + } + + } + + // + + function serialize( library, element ) { + + if ( library[ element.uuid ] === undefined ) { + + library[ element.uuid ] = element.toJSON( meta ); + + } + + return element.uuid; + + } + + if ( this.isScene ) { + + if ( this.background ) { + + if ( this.background.isColor ) { + + object.background = this.background.toJSON(); + + } else if ( this.background.isTexture ) { + + object.background = this.background.toJSON( meta ).uuid; + + } + + } + + if ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) { + + object.environment = this.environment.toJSON( meta ).uuid; + + } + + } else if ( this.isMesh || this.isLine || this.isPoints ) { + + object.geometry = serialize( meta.geometries, this.geometry ); + + const parameters = this.geometry.parameters; + + if ( parameters !== undefined && parameters.shapes !== undefined ) { + + const shapes = parameters.shapes; + + if ( Array.isArray( shapes ) ) { + + for ( let i = 0, l = shapes.length; i < l; i ++ ) { + + const shape = shapes[ i ]; + + serialize( meta.shapes, shape ); + + } + + } else { + + serialize( meta.shapes, shapes ); + + } + + } + + } + + if ( this.isSkinnedMesh ) { + + object.bindMode = this.bindMode; + object.bindMatrix = this.bindMatrix.toArray(); + + if ( this.skeleton !== undefined ) { + + serialize( meta.skeletons, this.skeleton ); + + object.skeleton = this.skeleton.uuid; + + } + + } + + if ( this.material !== undefined ) { + + if ( Array.isArray( this.material ) ) { + + const uuids = []; + + for ( let i = 0, l = this.material.length; i < l; i ++ ) { + + uuids.push( serialize( meta.materials, this.material[ i ] ) ); + + } + + object.material = uuids; + + } else { + + object.material = serialize( meta.materials, this.material ); + + } + + } + + // + + if ( this.children.length > 0 ) { + + object.children = []; + + for ( let i = 0; i < this.children.length; i ++ ) { + + object.children.push( this.children[ i ].toJSON( meta ).object ); + + } + + } + + // + + if ( this.animations.length > 0 ) { + + object.animations = []; + + for ( let i = 0; i < this.animations.length; i ++ ) { + + const animation = this.animations[ i ]; + + object.animations.push( serialize( meta.animations, animation ) ); + + } + + } + + if ( isRootObject ) { + + const geometries = extractFromCache( meta.geometries ); + const materials = extractFromCache( meta.materials ); + const textures = extractFromCache( meta.textures ); + const images = extractFromCache( meta.images ); + const shapes = extractFromCache( meta.shapes ); + const skeletons = extractFromCache( meta.skeletons ); + const animations = extractFromCache( meta.animations ); + const nodes = extractFromCache( meta.nodes ); + + if ( geometries.length > 0 ) output.geometries = geometries; + if ( materials.length > 0 ) output.materials = materials; + if ( textures.length > 0 ) output.textures = textures; + if ( images.length > 0 ) output.images = images; + if ( shapes.length > 0 ) output.shapes = shapes; + if ( skeletons.length > 0 ) output.skeletons = skeletons; + if ( animations.length > 0 ) output.animations = animations; + if ( nodes.length > 0 ) output.nodes = nodes; + + } + + output.object = object; + + return output; + + // extract data from the cache hash + // remove metadata on each item + // and return as array + function extractFromCache( cache ) { + + const values = []; + for ( const key in cache ) { + + const data = cache[ key ]; + delete data.metadata; + values.push( data ); + + } + + return values; + + } + + } + + /** + * Returns a new 3D object with copied values from this instance. + * + * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are also cloned. + * @return {Object3D} A clone of this instance. + */ + clone( recursive ) { + + return new this.constructor().copy( this, recursive ); + + } + + /** + * Copies the values of the given 3D object to this instance. + * + * @param {Object3D} source - The 3D object to copy. + * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are cloned. + * @return {Object3D} A reference to this instance. + */ + copy( source, recursive = true ) { + + this.name = source.name; + + this.up.copy( source.up ); + + this.position.copy( source.position ); + this.rotation.order = source.rotation.order; + this.quaternion.copy( source.quaternion ); + this.scale.copy( source.scale ); + + this.matrix.copy( source.matrix ); + this.matrixWorld.copy( source.matrixWorld ); + + this.matrixAutoUpdate = source.matrixAutoUpdate; + + this.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate; + this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate; + + this.layers.mask = source.layers.mask; + this.visible = source.visible; + + this.castShadow = source.castShadow; + this.receiveShadow = source.receiveShadow; + + this.frustumCulled = source.frustumCulled; + this.renderOrder = source.renderOrder; + + this.animations = source.animations.slice(); + + this.userData = JSON.parse( JSON.stringify( source.userData ) ); + + if ( recursive === true ) { + + for ( let i = 0; i < source.children.length; i ++ ) { + + const child = source.children[ i ]; + this.add( child.clone() ); + + } + + } + + return this; + + } + +} + +/** + * The default up direction for objects, also used as the default + * position for {@link DirectionalLight} and {@link HemisphereLight}. + * + * @static + * @type {Vector3} + * @default (0,1,0) + */ +Object3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 ); + +/** + * The default setting for {@link Object3D#matrixAutoUpdate} for + * newly created 3D objects. + * + * @static + * @type {boolean} + * @default true + */ +Object3D.DEFAULT_MATRIX_AUTO_UPDATE = true; + +/** + * The default setting for {@link Object3D#matrixWorldAutoUpdate} for + * newly created 3D objects. + * + * @static + * @type {boolean} + * @default true + */ +Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true; + +const _v0$1 = /*@__PURE__*/ new Vector3(); +const _v1$3 = /*@__PURE__*/ new Vector3(); +const _v2$2 = /*@__PURE__*/ new Vector3(); +const _v3$2 = /*@__PURE__*/ new Vector3(); + +const _vab = /*@__PURE__*/ new Vector3(); +const _vac = /*@__PURE__*/ new Vector3(); +const _vbc = /*@__PURE__*/ new Vector3(); +const _vap = /*@__PURE__*/ new Vector3(); +const _vbp = /*@__PURE__*/ new Vector3(); +const _vcp = /*@__PURE__*/ new Vector3(); + +const _v40 = /*@__PURE__*/ new Vector4(); +const _v41 = /*@__PURE__*/ new Vector4(); +const _v42 = /*@__PURE__*/ new Vector4(); + +/** + * A geometric triangle as defined by three vectors representing its three corners. + */ +class Triangle { + + /** + * Constructs a new triangle. + * + * @param {Vector3} [a=(0,0,0)] - The first corner of the triangle. + * @param {Vector3} [b=(0,0,0)] - The second corner of the triangle. + * @param {Vector3} [c=(0,0,0)] - The third corner of the triangle. + */ + constructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) { + + /** + * The first corner of the triangle. + * + * @type {Vector3} + */ + this.a = a; + + /** + * The second corner of the triangle. + * + * @type {Vector3} + */ + this.b = b; + + /** + * The third corner of the triangle. + * + * @type {Vector3} + */ + this.c = c; + + } + + /** + * Computes the normal vector of a triangle. + * + * @param {Vector3} a - The first corner of the triangle. + * @param {Vector3} b - The second corner of the triangle. + * @param {Vector3} c - The third corner of the triangle. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The triangle's normal. + */ + static getNormal( a, b, c, target ) { + + target.subVectors( c, b ); + _v0$1.subVectors( a, b ); + target.cross( _v0$1 ); + + const targetLengthSq = target.lengthSq(); + if ( targetLengthSq > 0 ) { + + return target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) ); + + } + + return target.set( 0, 0, 0 ); + + } + + /** + * Computes a barycentric coordinates from the given vector. + * Returns `null` if the triangle is degenerate. + * + * @param {Vector3} point - A point in 3D space. + * @param {Vector3} a - The first corner of the triangle. + * @param {Vector3} b - The second corner of the triangle. + * @param {Vector3} c - The third corner of the triangle. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The barycentric coordinates for the given point + */ + static getBarycoord( point, a, b, c, target ) { + + // based on: http://www.blackpawn.com/texts/pointinpoly/default.html + + _v0$1.subVectors( c, a ); + _v1$3.subVectors( b, a ); + _v2$2.subVectors( point, a ); + + const dot00 = _v0$1.dot( _v0$1 ); + const dot01 = _v0$1.dot( _v1$3 ); + const dot02 = _v0$1.dot( _v2$2 ); + const dot11 = _v1$3.dot( _v1$3 ); + const dot12 = _v1$3.dot( _v2$2 ); + + const denom = ( dot00 * dot11 - dot01 * dot01 ); + + // collinear or singular triangle + if ( denom === 0 ) { + + target.set( 0, 0, 0 ); + return null; + + } + + const invDenom = 1 / denom; + const u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom; + const v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom; + + // barycentric coordinates must always sum to 1 + return target.set( 1 - u - v, v, u ); + + } + + /** + * Returns `true` if the given point, when projected onto the plane of the + * triangle, lies within the triangle. + * + * @param {Vector3} point - The point in 3D space to test. + * @param {Vector3} a - The first corner of the triangle. + * @param {Vector3} b - The second corner of the triangle. + * @param {Vector3} c - The third corner of the triangle. + * @return {boolean} Whether the given point, when projected onto the plane of the + * triangle, lies within the triangle or not. + */ + static containsPoint( point, a, b, c ) { + + // if the triangle is degenerate then we can't contain a point + if ( this.getBarycoord( point, a, b, c, _v3$2 ) === null ) { + + return false; + + } + + return ( _v3$2.x >= 0 ) && ( _v3$2.y >= 0 ) && ( ( _v3$2.x + _v3$2.y ) <= 1 ); + + } + + /** + * Computes the value barycentrically interpolated for the given point on the + * triangle. Returns `null` if the triangle is degenerate. + * + * @param {Vector3} point - Position of interpolated point. + * @param {Vector3} p1 - The first corner of the triangle. + * @param {Vector3} p2 - The second corner of the triangle. + * @param {Vector3} p3 - The third corner of the triangle. + * @param {Vector3} v1 - Value to interpolate of first vertex. + * @param {Vector3} v2 - Value to interpolate of second vertex. + * @param {Vector3} v3 - Value to interpolate of third vertex. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The interpolated value. + */ + static getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) { + + if ( this.getBarycoord( point, p1, p2, p3, _v3$2 ) === null ) { + + target.x = 0; + target.y = 0; + if ( 'z' in target ) target.z = 0; + if ( 'w' in target ) target.w = 0; + return null; + + } + + target.setScalar( 0 ); + target.addScaledVector( v1, _v3$2.x ); + target.addScaledVector( v2, _v3$2.y ); + target.addScaledVector( v3, _v3$2.z ); + + return target; + + } + + /** + * Computes the value barycentrically interpolated for the given attribute and indices. + * + * @param {BufferAttribute} attr - The attribute to interpolate. + * @param {number} i1 - Index of first vertex. + * @param {number} i2 - Index of second vertex. + * @param {number} i3 - Index of third vertex. + * @param {Vector3} barycoord - The barycoordinate value to use to interpolate. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The interpolated attribute value. + */ + static getInterpolatedAttribute( attr, i1, i2, i3, barycoord, target ) { + + _v40.setScalar( 0 ); + _v41.setScalar( 0 ); + _v42.setScalar( 0 ); + + _v40.fromBufferAttribute( attr, i1 ); + _v41.fromBufferAttribute( attr, i2 ); + _v42.fromBufferAttribute( attr, i3 ); + + target.setScalar( 0 ); + target.addScaledVector( _v40, barycoord.x ); + target.addScaledVector( _v41, barycoord.y ); + target.addScaledVector( _v42, barycoord.z ); + + return target; + + } + + /** + * Returns `true` if the triangle is oriented towards the given direction. + * + * @param {Vector3} a - The first corner of the triangle. + * @param {Vector3} b - The second corner of the triangle. + * @param {Vector3} c - The third corner of the triangle. + * @param {Vector3} direction - The (normalized) direction vector. + * @return {boolean} Whether the triangle is oriented towards the given direction or not. + */ + static isFrontFacing( a, b, c, direction ) { + + _v0$1.subVectors( c, b ); + _v1$3.subVectors( a, b ); + + // strictly front facing + return ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false; + + } + + /** + * Sets the triangle's vertices by copying the given values. + * + * @param {Vector3} a - The first corner of the triangle. + * @param {Vector3} b - The second corner of the triangle. + * @param {Vector3} c - The third corner of the triangle. + * @return {Triangle} A reference to this triangle. + */ + set( a, b, c ) { + + this.a.copy( a ); + this.b.copy( b ); + this.c.copy( c ); + + return this; + + } + + /** + * Sets the triangle's vertices by copying the given array values. + * + * @param {Array} points - An array with 3D points. + * @param {number} i0 - The array index representing the first corner of the triangle. + * @param {number} i1 - The array index representing the second corner of the triangle. + * @param {number} i2 - The array index representing the third corner of the triangle. + * @return {Triangle} A reference to this triangle. + */ + setFromPointsAndIndices( points, i0, i1, i2 ) { + + this.a.copy( points[ i0 ] ); + this.b.copy( points[ i1 ] ); + this.c.copy( points[ i2 ] ); + + return this; + + } + + /** + * Sets the triangle's vertices by copying the given attribute values. + * + * @param {BufferAttribute} attribute - A buffer attribute with 3D points data. + * @param {number} i0 - The attribute index representing the first corner of the triangle. + * @param {number} i1 - The attribute index representing the second corner of the triangle. + * @param {number} i2 - The attribute index representing the third corner of the triangle. + * @return {Triangle} A reference to this triangle. + */ + setFromAttributeAndIndices( attribute, i0, i1, i2 ) { + + this.a.fromBufferAttribute( attribute, i0 ); + this.b.fromBufferAttribute( attribute, i1 ); + this.c.fromBufferAttribute( attribute, i2 ); + + return this; + + } + + /** + * Returns a new triangle with copied values from this instance. + * + * @return {Triangle} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + + /** + * Copies the values of the given triangle to this instance. + * + * @param {Triangle} triangle - The triangle to copy. + * @return {Triangle} A reference to this triangle. + */ + copy( triangle ) { + + this.a.copy( triangle.a ); + this.b.copy( triangle.b ); + this.c.copy( triangle.c ); + + return this; + + } + + /** + * Computes the area of the triangle. + * + * @return {number} The triangle's area. + */ + getArea() { + + _v0$1.subVectors( this.c, this.b ); + _v1$3.subVectors( this.a, this.b ); + + return _v0$1.cross( _v1$3 ).length() * 0.5; + + } + + /** + * Computes the midpoint of the triangle. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The triangle's midpoint. + */ + getMidpoint( target ) { + + return target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 ); + + } + + /** + * Computes the normal of the triangle. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The triangle's normal. + */ + getNormal( target ) { + + return Triangle.getNormal( this.a, this.b, this.c, target ); + + } + + /** + * Computes a plane the triangle lies within. + * + * @param {Plane} target - The target vector that is used to store the method's result. + * @return {Plane} The plane the triangle lies within. + */ + getPlane( target ) { + + return target.setFromCoplanarPoints( this.a, this.b, this.c ); + + } + + /** + * Computes a barycentric coordinates from the given vector. + * Returns `null` if the triangle is degenerate. + * + * @param {Vector3} point - A point in 3D space. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The barycentric coordinates for the given point + */ + getBarycoord( point, target ) { + + return Triangle.getBarycoord( point, this.a, this.b, this.c, target ); + + } + + /** + * Computes the value barycentrically interpolated for the given point on the + * triangle. Returns `null` if the triangle is degenerate. + * + * @param {Vector3} point - Position of interpolated point. + * @param {Vector3} v1 - Value to interpolate of first vertex. + * @param {Vector3} v2 - Value to interpolate of second vertex. + * @param {Vector3} v3 - Value to interpolate of third vertex. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The interpolated value. + */ + getInterpolation( point, v1, v2, v3, target ) { + + return Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target ); + + } + + /** + * Returns `true` if the given point, when projected onto the plane of the + * triangle, lies within the triangle. + * + * @param {Vector3} point - The point in 3D space to test. + * @return {boolean} Whether the given point, when projected onto the plane of the + * triangle, lies within the triangle or not. + */ + containsPoint( point ) { + + return Triangle.containsPoint( point, this.a, this.b, this.c ); + + } + + /** + * Returns `true` if the triangle is oriented towards the given direction. + * + * @param {Vector3} direction - The (normalized) direction vector. + * @return {boolean} Whether the triangle is oriented towards the given direction or not. + */ + isFrontFacing( direction ) { + + return Triangle.isFrontFacing( this.a, this.b, this.c, direction ); + + } + + /** + * Returns `true` if this triangle intersects with the given box. + * + * @param {Box3} box - The box to intersect. + * @return {boolean} Whether this triangle intersects with the given box or not. + */ + intersectsBox( box ) { + + return box.intersectsTriangle( this ); + + } + + /** + * Returns the closest point on the triangle to the given point. + * + * @param {Vector3} p - The point to compute the closest point for. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The closest point on the triangle. + */ + closestPointToPoint( p, target ) { + + const a = this.a, b = this.b, c = this.c; + let v, w; + + // algorithm thanks to Real-Time Collision Detection by Christer Ericson, + // published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc., + // under the accompanying license; see chapter 5.1.5 for detailed explanation. + // basically, we're distinguishing which of the voronoi regions of the triangle + // the point lies in with the minimum amount of redundant computation. + + _vab.subVectors( b, a ); + _vac.subVectors( c, a ); + _vap.subVectors( p, a ); + const d1 = _vab.dot( _vap ); + const d2 = _vac.dot( _vap ); + if ( d1 <= 0 && d2 <= 0 ) { + + // vertex region of A; barycentric coords (1, 0, 0) + return target.copy( a ); + + } + + _vbp.subVectors( p, b ); + const d3 = _vab.dot( _vbp ); + const d4 = _vac.dot( _vbp ); + if ( d3 >= 0 && d4 <= d3 ) { + + // vertex region of B; barycentric coords (0, 1, 0) + return target.copy( b ); + + } + + const vc = d1 * d4 - d3 * d2; + if ( vc <= 0 && d1 >= 0 && d3 <= 0 ) { + + v = d1 / ( d1 - d3 ); + // edge region of AB; barycentric coords (1-v, v, 0) + return target.copy( a ).addScaledVector( _vab, v ); + + } + + _vcp.subVectors( p, c ); + const d5 = _vab.dot( _vcp ); + const d6 = _vac.dot( _vcp ); + if ( d6 >= 0 && d5 <= d6 ) { + + // vertex region of C; barycentric coords (0, 0, 1) + return target.copy( c ); + + } + + const vb = d5 * d2 - d1 * d6; + if ( vb <= 0 && d2 >= 0 && d6 <= 0 ) { + + w = d2 / ( d2 - d6 ); + // edge region of AC; barycentric coords (1-w, 0, w) + return target.copy( a ).addScaledVector( _vac, w ); + + } + + const va = d3 * d6 - d5 * d4; + if ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) { + + _vbc.subVectors( c, b ); + w = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) ); + // edge region of BC; barycentric coords (0, 1-w, w) + return target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC + + } + + // face region + const denom = 1 / ( va + vb + vc ); + // u = va * denom + v = vb * denom; + w = vc * denom; + + return target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w ); + + } + + /** + * Returns `true` if this triangle is equal with the given one. + * + * @param {Triangle} triangle - The triangle to test for equality. + * @return {boolean} Whether this triangle is equal with the given one. + */ + equals( triangle ) { + + return triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c ); + + } + +} + +const _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF, + 'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2, + 'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50, + 'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B, + 'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B, + 'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F, + 'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3, + 'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222, + 'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700, + 'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4, + 'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00, + 'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3, + 'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA, + 'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32, + 'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3, + 'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC, + 'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD, + 'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6, + 'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9, + 'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F, + 'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE, + 'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA, + 'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0, + 'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 }; + +const _hslA = { h: 0, s: 0, l: 0 }; +const _hslB = { h: 0, s: 0, l: 0 }; + +function hue2rgb( p, q, t ) { + + if ( t < 0 ) t += 1; + if ( t > 1 ) t -= 1; + if ( t < 1 / 6 ) return p + ( q - p ) * 6 * t; + if ( t < 1 / 2 ) return q; + if ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t ); + return p; + +} + +/** + * A Color instance is represented by RGB components in the linear working + * color space, which defaults to `LinearSRGBColorSpace`. Inputs + * conventionally using `SRGBColorSpace` (such as hexadecimals and CSS + * strings) are converted to the working color space automatically. + * + * ```js + * // converted automatically from SRGBColorSpace to LinearSRGBColorSpace + * const color = new THREE.Color().setHex( 0x112233 ); + * ``` + * Source color spaces may be specified explicitly, to ensure correct conversions. + * ```js + * // assumed already LinearSRGBColorSpace; no conversion + * const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5 ); + * + * // converted explicitly from SRGBColorSpace to LinearSRGBColorSpace + * const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5, SRGBColorSpace ); + * ``` + * If THREE.ColorManagement is disabled, no conversions occur. For details, + * see Color management. Iterating through a Color instance will yield + * its components (r, g, b) in the corresponding order. A Color can be initialised + * in any of the following ways: + * ```js + * //empty constructor - will default white + * const color1 = new THREE.Color(); + * + * //Hexadecimal color (recommended) + * const color2 = new THREE.Color( 0xff0000 ); + * + * //RGB string + * const color3 = new THREE.Color("rgb(255, 0, 0)"); + * const color4 = new THREE.Color("rgb(100%, 0%, 0%)"); + * + * //X11 color name - all 140 color names are supported. + * //Note the lack of CamelCase in the name + * const color5 = new THREE.Color( 'skyblue' ); + * //HSL string + * const color6 = new THREE.Color("hsl(0, 100%, 50%)"); + * + * //Separate RGB values between 0 and 1 + * const color7 = new THREE.Color( 1, 0, 0 ); + * ``` + */ +class Color { + + /** + * Constructs a new color. + * + * Note that standard method of specifying color in three.js is with a hexadecimal triplet, + * and that method is used throughout the rest of the documentation. + * + * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are + * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance. + * @param {number} [g] - The green component. + * @param {number} [b] - The blue component. + */ + constructor( r, g, b ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isColor = true; + + /** + * The red component. + * + * @type {number} + * @default 1 + */ + this.r = 1; + + /** + * The green component. + * + * @type {number} + * @default 1 + */ + this.g = 1; + + /** + * The blue component. + * + * @type {number} + * @default 1 + */ + this.b = 1; + + return this.set( r, g, b ); + + } + + /** + * Sets the colors's components from the given values. + * + * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are + * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance. + * @param {number} [g] - The green component. + * @param {number} [b] - The blue component. + * @return {Color} A reference to this color. + */ + set( r, g, b ) { + + if ( g === undefined && b === undefined ) { + + // r is THREE.Color, hex or string + + const value = r; + + if ( value && value.isColor ) { + + this.copy( value ); + + } else if ( typeof value === 'number' ) { + + this.setHex( value ); + + } else if ( typeof value === 'string' ) { + + this.setStyle( value ); + + } + + } else { + + this.setRGB( r, g, b ); + + } + + return this; + + } + + /** + * Sets the colors's components to the given scalar value. + * + * @param {number} scalar - The scalar value. + * @return {Color} A reference to this color. + */ + setScalar( scalar ) { + + this.r = scalar; + this.g = scalar; + this.b = scalar; + + return this; + + } + + /** + * Sets this color from a hexadecimal value. + * + * @param {number} hex - The hexadecimal value. + * @param {string} [colorSpace=SRGBColorSpace] - The color space. + * @return {Color} A reference to this color. + */ + setHex( hex, colorSpace = SRGBColorSpace ) { + + hex = Math.floor( hex ); + + this.r = ( hex >> 16 & 255 ) / 255; + this.g = ( hex >> 8 & 255 ) / 255; + this.b = ( hex & 255 ) / 255; + + ColorManagement.toWorkingColorSpace( this, colorSpace ); + + return this; + + } + + /** + * Sets this color from RGB values. + * + * @param {number} r - Red channel value between `0.0` and `1.0`. + * @param {number} g - Green channel value between `0.0` and `1.0`. + * @param {number} b - Blue channel value between `0.0` and `1.0`. + * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space. + * @return {Color} A reference to this color. + */ + setRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) { + + this.r = r; + this.g = g; + this.b = b; + + ColorManagement.toWorkingColorSpace( this, colorSpace ); + + return this; + + } + + /** + * Sets this color from RGB values. + * + * @param {number} h - Hue value between `0.0` and `1.0`. + * @param {number} s - Saturation value between `0.0` and `1.0`. + * @param {number} l - Lightness value between `0.0` and `1.0`. + * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space. + * @return {Color} A reference to this color. + */ + setHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) { + + // h,s,l ranges are in 0.0 - 1.0 + h = euclideanModulo( h, 1 ); + s = clamp( s, 0, 1 ); + l = clamp( l, 0, 1 ); + + if ( s === 0 ) { + + this.r = this.g = this.b = l; + + } else { + + const p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s ); + const q = ( 2 * l ) - p; + + this.r = hue2rgb( q, p, h + 1 / 3 ); + this.g = hue2rgb( q, p, h ); + this.b = hue2rgb( q, p, h - 1 / 3 ); + + } + + ColorManagement.toWorkingColorSpace( this, colorSpace ); + + return this; + + } + + /** + * Sets this color from a CSS-style string. For example, `rgb(250, 0,0)`, + * `rgb(100%, 0%, 0%)`, `hsl(0, 100%, 50%)`, `#ff0000`, `#f00`, or `red` ( or + * any [X11 color name]{@link https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart} - + * all 140 color names are supported). + * + * @param {string} style - Color as a CSS-style string. + * @param {string} [colorSpace=SRGBColorSpace] - The color space. + * @return {Color} A reference to this color. + */ + setStyle( style, colorSpace = SRGBColorSpace ) { + + function handleAlpha( string ) { + + if ( string === undefined ) return; + + if ( parseFloat( string ) < 1 ) { + + console.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' ); + + } + + } + + + let m; + + if ( m = /^(\w+)\(([^\)]*)\)/.exec( style ) ) { + + // rgb / hsl + + let color; + const name = m[ 1 ]; + const components = m[ 2 ]; + + switch ( name ) { + + case 'rgb': + case 'rgba': + + if ( color = /^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec( components ) ) { + + // rgb(255,0,0) rgba(255,0,0,0.5) + + handleAlpha( color[ 4 ] ); + + return this.setRGB( + Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255, + Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255, + Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255, + colorSpace + ); + + } + + if ( color = /^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec( components ) ) { + + // rgb(100%,0%,0%) rgba(100%,0%,0%,0.5) + + handleAlpha( color[ 4 ] ); + + return this.setRGB( + Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100, + Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100, + Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100, + colorSpace + ); + + } + + break; + + case 'hsl': + case 'hsla': + + if ( color = /^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec( components ) ) { + + // hsl(120,50%,50%) hsla(120,50%,50%,0.5) + + handleAlpha( color[ 4 ] ); + + return this.setHSL( + parseFloat( color[ 1 ] ) / 360, + parseFloat( color[ 2 ] ) / 100, + parseFloat( color[ 3 ] ) / 100, + colorSpace + ); + + } + + break; + + default: + + console.warn( 'THREE.Color: Unknown color model ' + style ); + + } + + } else if ( m = /^\#([A-Fa-f\d]+)$/.exec( style ) ) { + + // hex color + + const hex = m[ 1 ]; + const size = hex.length; + + if ( size === 3 ) { + + // #ff0 + return this.setRGB( + parseInt( hex.charAt( 0 ), 16 ) / 15, + parseInt( hex.charAt( 1 ), 16 ) / 15, + parseInt( hex.charAt( 2 ), 16 ) / 15, + colorSpace + ); + + } else if ( size === 6 ) { + + // #ff0000 + return this.setHex( parseInt( hex, 16 ), colorSpace ); + + } else { + + console.warn( 'THREE.Color: Invalid hex color ' + style ); + + } + + } else if ( style && style.length > 0 ) { + + return this.setColorName( style, colorSpace ); + + } + + return this; + + } + + /** + * Sets this color from a color name. Faster than {@link Color#setStyle} if + * you don't need the other CSS-style formats. + * + * For convenience, the list of names is exposed in `Color.NAMES` as a hash. + * ```js + * Color.NAMES.aliceblue // returns 0xF0F8FF + * ``` + * + * @param {string} style - The color name. + * @param {string} [colorSpace=SRGBColorSpace] - The color space. + * @return {Color} A reference to this color. + */ + setColorName( style, colorSpace = SRGBColorSpace ) { + + // color keywords + const hex = _colorKeywords[ style.toLowerCase() ]; + + if ( hex !== undefined ) { + + // red + this.setHex( hex, colorSpace ); + + } else { + + // unknown color + console.warn( 'THREE.Color: Unknown color ' + style ); + + } + + return this; + + } + + /** + * Returns a new color with copied values from this instance. + * + * @return {Color} A clone of this instance. + */ + clone() { + + return new this.constructor( this.r, this.g, this.b ); + + } + + /** + * Copies the values of the given color to this instance. + * + * @param {Color} color - The color to copy. + * @return {Color} A reference to this color. + */ + copy( color ) { + + this.r = color.r; + this.g = color.g; + this.b = color.b; + + return this; + + } + + /** + * Copies the given color into this color, and then converts this color from + * `SRGBColorSpace` to `LinearSRGBColorSpace`. + * + * @param {Color} color - The color to copy/convert. + * @return {Color} A reference to this color. + */ + copySRGBToLinear( color ) { + + this.r = SRGBToLinear( color.r ); + this.g = SRGBToLinear( color.g ); + this.b = SRGBToLinear( color.b ); + + return this; + + } + + /** + * Copies the given color into this color, and then converts this color from + * `LinearSRGBColorSpace` to `SRGBColorSpace`. + * + * @param {Color} color - The color to copy/convert. + * @return {Color} A reference to this color. + */ + copyLinearToSRGB( color ) { + + this.r = LinearToSRGB( color.r ); + this.g = LinearToSRGB( color.g ); + this.b = LinearToSRGB( color.b ); + + return this; + + } + + /** + * Converts this color from `SRGBColorSpace` to `LinearSRGBColorSpace`. + * + * @return {Color} A reference to this color. + */ + convertSRGBToLinear() { + + this.copySRGBToLinear( this ); + + return this; + + } + + /** + * Converts this color from `LinearSRGBColorSpace` to `SRGBColorSpace`. + * + * @return {Color} A reference to this color. + */ + convertLinearToSRGB() { + + this.copyLinearToSRGB( this ); + + return this; + + } + + /** + * Returns the hexadecimal value of this color. + * + * @param {string} [colorSpace=SRGBColorSpace] - The color space. + * @return {number} The hexadecimal value. + */ + getHex( colorSpace = SRGBColorSpace ) { + + ColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace ); + + return Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) ); + + } + + /** + * Returns the hexadecimal value of this color as a string (for example, 'FFFFFF'). + * + * @param {string} [colorSpace=SRGBColorSpace] - The color space. + * @return {string} The hexadecimal value as a string. + */ + getHexString( colorSpace = SRGBColorSpace ) { + + return ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( -6 ); + + } + + /** + * Converts the colors RGB values into the HSL format and stores them into the + * given target object. + * + * @param {{h:number,s:number,l:number}} target - The target object that is used to store the method's result. + * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space. + * @return {{h:number,s:number,l:number}} The HSL representation of this color. + */ + getHSL( target, colorSpace = ColorManagement.workingColorSpace ) { + + // h,s,l ranges are in 0.0 - 1.0 + + ColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace ); + + const r = _color.r, g = _color.g, b = _color.b; + + const max = Math.max( r, g, b ); + const min = Math.min( r, g, b ); + + let hue, saturation; + const lightness = ( min + max ) / 2.0; + + if ( min === max ) { + + hue = 0; + saturation = 0; + + } else { + + const delta = max - min; + + saturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min ); + + switch ( max ) { + + case r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break; + case g: hue = ( b - r ) / delta + 2; break; + case b: hue = ( r - g ) / delta + 4; break; + + } + + hue /= 6; + + } + + target.h = hue; + target.s = saturation; + target.l = lightness; + + return target; + + } + + /** + * Returns the RGB values of this color and stores them into the given target object. + * + * @param {Color} target - The target color that is used to store the method's result. + * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space. + * @return {Color} The RGB representation of this color. + */ + getRGB( target, colorSpace = ColorManagement.workingColorSpace ) { + + ColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace ); + + target.r = _color.r; + target.g = _color.g; + target.b = _color.b; + + return target; + + } + + /** + * Returns the value of this color as a CSS style string. Example: `rgb(255,0,0)`. + * + * @param {string} [colorSpace=SRGBColorSpace] - The color space. + * @return {string} The CSS representation of this color. + */ + getStyle( colorSpace = SRGBColorSpace ) { + + ColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace ); + + const r = _color.r, g = _color.g, b = _color.b; + + if ( colorSpace !== SRGBColorSpace ) { + + // Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/). + return `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`; + + } + + return `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`; + + } + + /** + * Adds the given HSL values to this color's values. + * Internally, this converts the color's RGB values to HSL, adds HSL + * and then converts the color back to RGB. + * + * @param {number} h - Hue value between `0.0` and `1.0`. + * @param {number} s - Saturation value between `0.0` and `1.0`. + * @param {number} l - Lightness value between `0.0` and `1.0`. + * @return {Color} A reference to this color. + */ + offsetHSL( h, s, l ) { + + this.getHSL( _hslA ); + + return this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l ); + + } + + /** + * Adds the RGB values of the given color to the RGB values of this color. + * + * @param {Color} color - The color to add. + * @return {Color} A reference to this color. + */ + add( color ) { + + this.r += color.r; + this.g += color.g; + this.b += color.b; + + return this; + + } + + /** + * Adds the RGB values of the given colors and stores the result in this instance. + * + * @param {Color} color1 - The first color. + * @param {Color} color2 - The second color. + * @return {Color} A reference to this color. + */ + addColors( color1, color2 ) { + + this.r = color1.r + color2.r; + this.g = color1.g + color2.g; + this.b = color1.b + color2.b; + + return this; + + } + + /** + * Adds the given scalar value to the RGB values of this color. + * + * @param {number} s - The scalar to add. + * @return {Color} A reference to this color. + */ + addScalar( s ) { + + this.r += s; + this.g += s; + this.b += s; + + return this; + + } + + /** + * Subtracts the RGB values of the given color from the RGB values of this color. + * + * @param {Color} color - The color to subtract. + * @return {Color} A reference to this color. + */ + sub( color ) { + + this.r = Math.max( 0, this.r - color.r ); + this.g = Math.max( 0, this.g - color.g ); + this.b = Math.max( 0, this.b - color.b ); + + return this; + + } + + /** + * Multiplies the RGB values of the given color with the RGB values of this color. + * + * @param {Color} color - The color to multiply. + * @return {Color} A reference to this color. + */ + multiply( color ) { + + this.r *= color.r; + this.g *= color.g; + this.b *= color.b; + + return this; + + } + + /** + * Multiplies the given scalar value with the RGB values of this color. + * + * @param {number} s - The scalar to multiply. + * @return {Color} A reference to this color. + */ + multiplyScalar( s ) { + + this.r *= s; + this.g *= s; + this.b *= s; + + return this; + + } + + /** + * Linearly interpolates this color's RGB values toward the RGB values of the + * given color. The alpha argument can be thought of as the ratio between + * the two colors, where `0.0` is this color and `1.0` is the first argument. + * + * @param {Color} color - The color to converge on. + * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`. + * @return {Color} A reference to this color. + */ + lerp( color, alpha ) { + + this.r += ( color.r - this.r ) * alpha; + this.g += ( color.g - this.g ) * alpha; + this.b += ( color.b - this.b ) * alpha; + + return this; + + } + + /** + * Linearly interpolates between the given colors and stores the result in this instance. + * The alpha argument can be thought of as the ratio between the two colors, where `0.0` + * is the first and `1.0` is the second color. + * + * @param {Color} color1 - The first color. + * @param {Color} color2 - The second color. + * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`. + * @return {Color} A reference to this color. + */ + lerpColors( color1, color2, alpha ) { + + this.r = color1.r + ( color2.r - color1.r ) * alpha; + this.g = color1.g + ( color2.g - color1.g ) * alpha; + this.b = color1.b + ( color2.b - color1.b ) * alpha; + + return this; + + } + + /** + * Linearly interpolates this color's HSL values toward the HSL values of the + * given color. It differs from {@link Color#lerp} by not interpolating straight + * from one color to the other, but instead going through all the hues in between + * those two colors. The alpha argument can be thought of as the ratio between + * the two colors, where 0.0 is this color and 1.0 is the first argument. + * + * @param {Color} color - The color to converge on. + * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`. + * @return {Color} A reference to this color. + */ + lerpHSL( color, alpha ) { + + this.getHSL( _hslA ); + color.getHSL( _hslB ); + + const h = lerp( _hslA.h, _hslB.h, alpha ); + const s = lerp( _hslA.s, _hslB.s, alpha ); + const l = lerp( _hslA.l, _hslB.l, alpha ); + + this.setHSL( h, s, l ); + + return this; + + } + + /** + * Sets the color's RGB components from the given 3D vector. + * + * @param {Vector3} v - The vector to set. + * @return {Color} A reference to this color. + */ + setFromVector3( v ) { + + this.r = v.x; + this.g = v.y; + this.b = v.z; + + return this; + + } + + /** + * Transforms this color with the given 3x3 matrix. + * + * @param {Matrix3} m - The matrix. + * @return {Color} A reference to this color. + */ + applyMatrix3( m ) { + + const r = this.r, g = this.g, b = this.b; + const e = m.elements; + + this.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b; + this.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b; + this.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b; + + return this; + + } + + /** + * Returns `true` if this color is equal with the given one. + * + * @param {Color} c - The color to test for equality. + * @return {boolean} Whether this bounding color is equal with the given one. + */ + equals( c ) { + + return ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b ); + + } + + /** + * Sets this color's RGB components from the given array. + * + * @param {Array} array - An array holding the RGB values. + * @param {number} [offset=0] - The offset into the array. + * @return {Color} A reference to this color. + */ + fromArray( array, offset = 0 ) { + + this.r = array[ offset ]; + this.g = array[ offset + 1 ]; + this.b = array[ offset + 2 ]; + + return this; + + } + + /** + * Writes the RGB components of this color to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the color components. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The color components. + */ + toArray( array = [], offset = 0 ) { + + array[ offset ] = this.r; + array[ offset + 1 ] = this.g; + array[ offset + 2 ] = this.b; + + return array; + + } + + /** + * Sets the components of this color from the given buffer attribute. + * + * @param {BufferAttribute} attribute - The buffer attribute holding color data. + * @param {number} index - The index into the attribute. + * @return {Color} A reference to this color. + */ + fromBufferAttribute( attribute, index ) { + + this.r = attribute.getX( index ); + this.g = attribute.getY( index ); + this.b = attribute.getZ( index ); + + return this; + + } + + /** + * This methods defines the serialization result of this class. Returns the color + * as a hexadecimal value. + * + * @return {number} The hexadecimal value. + */ + toJSON() { + + return this.getHex(); + + } + + *[ Symbol.iterator ]() { + + yield this.r; + yield this.g; + yield this.b; + + } + +} + +const _color = /*@__PURE__*/ new Color(); + +/** + * A dictionary with X11 color names. + * + * Note that multiple words such as Dark Orange become the string 'darkorange'. + * + * @static + * @type {Object} + */ +Color.NAMES = _colorKeywords; + +let _materialId = 0; + +/** + * Abstract base class for materials. + * + * Materials define the appearance of renderable 3D objects. + * + * @abstract + * @augments EventDispatcher + */ +class Material extends EventDispatcher { + + /** + * Constructs a new material. + */ + constructor() { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isMaterial = true; + + /** + * The ID of the material. + * + * @name Material#id + * @type {number} + * @readonly + */ + Object.defineProperty( this, 'id', { value: _materialId ++ } ); + + /** + * The UUID of the material. + * + * @type {string} + * @readonly + */ + this.uuid = generateUUID(); + + /** + * The name of the material. + * + * @type {string} + */ + this.name = ''; + + /** + * The type property is used for detecting the object type + * in context of serialization/deserialization. + * + * @type {string} + * @readonly + */ + this.type = 'Material'; + + /** + * Defines the blending type of the material. + * + * It must be set to `CustomBlending` if custom blending properties like + * {@link Material#blendSrc}, {@link Material#blendDst} or {@link Material#blendEquation} + * should have any effect. + * + * @type {(NoBlending|NormalBlending|AdditiveBlending|SubtractiveBlending|MultiplyBlending|CustomBlending)} + * @default NormalBlending + */ + this.blending = NormalBlending; + + /** + * Defines which side of faces will be rendered - front, back or both. + * + * @type {(FrontSide|BackSide|DoubleSide)} + * @default FrontSide + */ + this.side = FrontSide; + + /** + * If set to `true`, vertex colors should be used. + * + * The engine supports RGB and RGBA vertex colors depending on whether a three (RGB) or + * four (RGBA) component color buffer attribute is used. + * + * @type {boolean} + * @default false + */ + this.vertexColors = false; + + /** + * Defines how transparent the material is. + * A value of `0.0` indicates fully transparent, `1.0` is fully opaque. + * + * If the {@link Material#transparent} is not set to `true`, + * the material will remain fully opaque and this value will only affect its color. + * + * @type {number} + * @default 1 + */ + this.opacity = 1; + + /** + * Defines whether this material is transparent. This has an effect on + * rendering as transparent objects need special treatment and are rendered + * after non-transparent objects. + * + * When set to true, the extent to which the material is transparent is + * controlled by {@link Material#opacity}. + * + * @type {boolean} + * @default false + */ + this.transparent = false; + + /** + * Enables alpha hashed transparency, an alternative to {@link Material#transparent} or + * {@link Material#alphaTest}. The material will not be rendered if opacity is lower than + * a random threshold. Randomization introduces some grain or noise, but approximates alpha + * blending without the associated problems of sorting. Using TAA can reduce the resulting noise. + * + * @type {boolean} + * @default false + */ + this.alphaHash = false; + + /** + * Defines the blending source factor. + * + * @type {(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)} + * @default SrcAlphaFactor + */ + this.blendSrc = SrcAlphaFactor; + + /** + * Defines the blending destination factor. + * + * @type {(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)} + * @default OneMinusSrcAlphaFactor + */ + this.blendDst = OneMinusSrcAlphaFactor; + + /** + * Defines the blending equation. + * + * @type {(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)} + * @default AddEquation + */ + this.blendEquation = AddEquation; + + /** + * Defines the blending source alpha factor. + * + * @type {?(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)} + * @default null + */ + this.blendSrcAlpha = null; + + /** + * Defines the blending destination alpha factor. + * + * @type {?(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)} + * @default null + */ + this.blendDstAlpha = null; + + /** + * Defines the blending equation of the alpha channel. + * + * @type {?(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)} + * @default null + */ + this.blendEquationAlpha = null; + + /** + * Represents the RGB values of the constant blend color. + * + * This property has only an effect when using custom blending with `ConstantColor` or `OneMinusConstantColor`. + * + * @type {Color} + * @default (0,0,0) + */ + this.blendColor = new Color( 0, 0, 0 ); + + /** + * Represents the alpha value of the constant blend color. + * + * This property has only an effect when using custom blending with `ConstantAlpha` or `OneMinusConstantAlpha`. + * + * @type {number} + * @default 0 + */ + this.blendAlpha = 0; + + /** + * Defines the depth function. + * + * @type {(NeverDepth|AlwaysDepth|LessDepth|LessEqualDepth|EqualDepth|GreaterEqualDepth|GreaterDepth|NotEqualDepth)} + * @default LessEqualDepth + */ + this.depthFunc = LessEqualDepth; + + /** + * Whether to have depth test enabled when rendering this material. + * When the depth test is disabled, the depth write will also be implicitly disabled. + * + * @type {boolean} + * @default true + */ + this.depthTest = true; + + /** + * Whether rendering this material has any effect on the depth buffer. + * + * When drawing 2D overlays it can be useful to disable the depth writing in + * order to layer several things together without creating z-index artifacts. + * + * @type {boolean} + * @default true + */ + this.depthWrite = true; + + /** + * The bit mask to use when writing to the stencil buffer. + * + * @type {number} + * @default 0xff + */ + this.stencilWriteMask = 0xff; + + /** + * The stencil comparison function to use. + * + * @type {NeverStencilFunc|LessStencilFunc|EqualStencilFunc|LessEqualStencilFunc|GreaterStencilFunc|NotEqualStencilFunc|GreaterEqualStencilFunc|AlwaysStencilFunc} + * @default AlwaysStencilFunc + */ + this.stencilFunc = AlwaysStencilFunc; + + /** + * The value to use when performing stencil comparisons or stencil operations. + * + * @type {number} + * @default 0 + */ + this.stencilRef = 0; + + /** + * The bit mask to use when comparing against the stencil buffer. + * + * @type {number} + * @default 0xff + */ + this.stencilFuncMask = 0xff; + + /** + * Which stencil operation to perform when the comparison function returns `false`. + * + * @type {ZeroStencilOp|KeepStencilOp|ReplaceStencilOp|IncrementStencilOp|DecrementStencilOp|IncrementWrapStencilOp|DecrementWrapStencilOp|InvertStencilOp} + * @default KeepStencilOp + */ + this.stencilFail = KeepStencilOp; + + /** + * Which stencil operation to perform when the comparison function returns + * `true` but the depth test fails. + * + * @type {ZeroStencilOp|KeepStencilOp|ReplaceStencilOp|IncrementStencilOp|DecrementStencilOp|IncrementWrapStencilOp|DecrementWrapStencilOp|InvertStencilOp} + * @default KeepStencilOp + */ + this.stencilZFail = KeepStencilOp; + + /** + * Which stencil operation to perform when the comparison function returns + * `true` and the depth test passes. + * + * @type {ZeroStencilOp|KeepStencilOp|ReplaceStencilOp|IncrementStencilOp|DecrementStencilOp|IncrementWrapStencilOp|DecrementWrapStencilOp|InvertStencilOp} + * @default KeepStencilOp + */ + this.stencilZPass = KeepStencilOp; + + /** + * Whether stencil operations are performed against the stencil buffer. In + * order to perform writes or comparisons against the stencil buffer this + * value must be `true`. + * + * @type {boolean} + * @default false + */ + this.stencilWrite = false; + + /** + * User-defined clipping planes specified as THREE.Plane objects in world + * space. These planes apply to the objects this material is attached to. + * Points in space whose signed distance to the plane is negative are clipped + * (not rendered). This requires {@link WebGLRenderer#localClippingEnabled} to + * be `true`. + * + * @type {?Array} + * @default null + */ + this.clippingPlanes = null; + + /** + * Changes the behavior of clipping planes so that only their intersection is + * clipped, rather than their union. + * + * @type {boolean} + * @default false + */ + this.clipIntersection = false; + + /** + * Defines whether to clip shadows according to the clipping planes specified + * on this material. + * + * @type {boolean} + * @default false + */ + this.clipShadows = false; + + /** + * Defines which side of faces cast shadows. If `null`, the side casting shadows + * is determined as follows: + * + * - When {@link Material#side} is set to `FrontSide`, the back side cast shadows. + * - When {@link Material#side} is set to `BackSide`, the front side cast shadows. + * - When {@link Material#side} is set to `DoubleSide`, both sides cast shadows. + * + * @type {?(FrontSide|BackSide|DoubleSide)} + * @default null + */ + this.shadowSide = null; + + /** + * Whether to render the material's color. + * + * This can be used in conjunction with {@link Object3D#renderOder} to create invisible + * objects that occlude other objects. + * + * @type {boolean} + * @default true + */ + this.colorWrite = true; + + /** + * Override the renderer's default precision for this material. + * + * @type {?('highp'|'mediump'|'lowp')} + * @default null + */ + this.precision = null; + + /** + * Whether to use polygon offset or not. When enabled, each fragment's depth value will + * be offset after it is interpolated from the depth values of the appropriate vertices. + * The offset is added before the depth test is performed and before the value is written + * into the depth buffer. + * + * Can be useful for rendering hidden-line images, for applying decals to surfaces, and for + * rendering solids with highlighted edges. + * + * @type {boolean} + * @default false + */ + this.polygonOffset = false; + + /** + * Specifies a scale factor that is used to create a variable depth offset for each polygon. + * + * @type {number} + * @default 0 + */ + this.polygonOffsetFactor = 0; + + /** + * Is multiplied by an implementation-specific value to create a constant depth offset. + * + * @type {number} + * @default 0 + */ + this.polygonOffsetUnits = 0; + + /** + * Whether to apply dithering to the color to remove the appearance of banding. + * + * @type {boolean} + * @default false + */ + this.dithering = false; + + /** + * Whether alpha to coverage should be enabled or not. Can only be used with MSAA-enabled contexts + * (meaning when the renderer was created with *antialias* parameter set to `true`). Enabling this + * will smooth aliasing on clip plane edges and alphaTest-clipped edges. + * + * @type {boolean} + * @default false + */ + this.alphaToCoverage = false; + + /** + * Whether to premultiply the alpha (transparency) value. + * + * @type {boolean} + * @default false + */ + this.premultipliedAlpha = false; + + /** + * Whether double-sided, transparent objects should be rendered with a single pass or not. + * + * The engine renders double-sided, transparent objects with two draw calls (back faces first, + * then front faces) to mitigate transparency artifacts. There are scenarios however where this + * approach produces no quality gains but still doubles draw calls e.g. when rendering flat + * vegetation like grass sprites. In these cases, set the `forceSinglePass` flag to `true` to + * disable the two pass rendering to avoid performance issues. + * + * @type {boolean} + * @default false + */ + this.forceSinglePass = false; + + /** + * Whether it's possible to override the material with {@link Scene#overrideMaterial} or not. + * + * @type {boolean} + * @default true + */ + this.allowOverride = true; + + /** + * Defines whether 3D objects using this material are visible. + * + * @type {boolean} + * @default true + */ + this.visible = true; + + /** + * Defines whether this material is tone mapped according to the renderer's tone mapping setting. + * + * It is ignored when rendering to a render target or using post processing or when using + * `WebGPURenderer`. In all these cases, all materials are honored by tone mapping. + * + * @type {boolean} + * @default true + */ + this.toneMapped = true; + + /** + * An object that can be used to store custom data about the Material. It + * should not hold references to functions as these will not be cloned. + * + * @type {Object} + */ + this.userData = {}; + + /** + * This starts at `0` and counts how many times {@link Material#needsUpdate} is set to `true`. + * + * @type {number} + * @readonly + * @default 0 + */ + this.version = 0; + + this._alphaTest = 0; + + } + + /** + * Sets the alpha value to be used when running an alpha test. The material + * will not be rendered if the opacity is lower than this value. + * + * @type {number} + * @readonly + * @default 0 + */ + get alphaTest() { + + return this._alphaTest; + + } + + set alphaTest( value ) { + + if ( this._alphaTest > 0 !== value > 0 ) { + + this.version ++; + + } + + this._alphaTest = value; + + } + + /** + * An optional callback that is executed immediately before the material is used to render a 3D object. + * + * This method can only be used when rendering with {@link WebGLRenderer}. + * + * @param {WebGLRenderer} renderer - The renderer. + * @param {Scene} scene - The scene. + * @param {Camera} camera - The camera that is used to render the scene. + * @param {BufferGeometry} geometry - The 3D object's geometry. + * @param {Object3D} object - The 3D object. + * @param {Object} group - The geometry group data. + */ + onBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {} + + /** + * An optional callback that is executed immediately before the shader + * program is compiled. This function is called with the shader source code + * as a parameter. Useful for the modification of built-in materials. + * + * This method can only be used when rendering with {@link WebGLRenderer}. The + * recommended approach when customizing materials is to use `WebGPURenderer` with the new + * Node Material system and [TSL]{@link https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language}. + * + * @param {{vertexShader:string,fragmentShader:string,uniforms:Object}} shaderobject - The object holds the uniforms and the vertex and fragment shader source. + * @param {WebGLRenderer} renderer - A reference to the renderer. + */ + onBeforeCompile( /* shaderobject, renderer */ ) {} + + /** + * In case {@link Material#onBeforeCompile} is used, this callback can be used to identify + * values of settings used in `onBeforeCompile()`, so three.js can reuse a cached + * shader or recompile the shader for this material as needed. + * + * This method can only be used when rendering with {@link WebGLRenderer}. + * + * @return {string} The custom program cache key. + */ + customProgramCacheKey() { + + return this.onBeforeCompile.toString(); + + } + + /** + * This method can be used to set default values from parameter objects. + * It is a generic implementation so it can be used with different types + * of materials. + * + * @param {Object} [values] - The material values to set. + */ + setValues( values ) { + + if ( values === undefined ) return; + + for ( const key in values ) { + + const newValue = values[ key ]; + + if ( newValue === undefined ) { + + console.warn( `THREE.Material: parameter '${ key }' has value of undefined.` ); + continue; + + } + + const currentValue = this[ key ]; + + if ( currentValue === undefined ) { + + console.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` ); + continue; + + } + + if ( currentValue && currentValue.isColor ) { + + currentValue.set( newValue ); + + } else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) { + + currentValue.copy( newValue ); + + } else { + + this[ key ] = newValue; + + } + + } + + } + + /** + * Serializes the material into JSON. + * + * @param {?(Object|string)} meta - An optional value holding meta information about the serialization. + * @return {Object} A JSON object representing the serialized material. + * @see {@link ObjectLoader#parse} + */ + toJSON( meta ) { + + const isRootObject = ( meta === undefined || typeof meta === 'string' ); + + if ( isRootObject ) { + + meta = { + textures: {}, + images: {} + }; + + } + + const data = { + metadata: { + version: 4.6, + type: 'Material', + generator: 'Material.toJSON' + } + }; + + // standard Material serialization + data.uuid = this.uuid; + data.type = this.type; + + if ( this.name !== '' ) data.name = this.name; + + if ( this.color && this.color.isColor ) data.color = this.color.getHex(); + + if ( this.roughness !== undefined ) data.roughness = this.roughness; + if ( this.metalness !== undefined ) data.metalness = this.metalness; + + if ( this.sheen !== undefined ) data.sheen = this.sheen; + if ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex(); + if ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness; + if ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex(); + if ( this.emissiveIntensity !== undefined && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity; + + if ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex(); + if ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity; + if ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex(); + if ( this.shininess !== undefined ) data.shininess = this.shininess; + if ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat; + if ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness; + + if ( this.clearcoatMap && this.clearcoatMap.isTexture ) { + + data.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid; + + } + + if ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) { + + data.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid; + + } + + if ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) { + + data.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid; + data.clearcoatNormalScale = this.clearcoatNormalScale.toArray(); + + } + + if ( this.dispersion !== undefined ) data.dispersion = this.dispersion; + + if ( this.iridescence !== undefined ) data.iridescence = this.iridescence; + if ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR; + if ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange; + + if ( this.iridescenceMap && this.iridescenceMap.isTexture ) { + + data.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid; + + } + + if ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) { + + data.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid; + + } + + if ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy; + if ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation; + + if ( this.anisotropyMap && this.anisotropyMap.isTexture ) { + + data.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid; + + } + + if ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid; + if ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid; + if ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid; + + if ( this.lightMap && this.lightMap.isTexture ) { + + data.lightMap = this.lightMap.toJSON( meta ).uuid; + data.lightMapIntensity = this.lightMapIntensity; + + } + + if ( this.aoMap && this.aoMap.isTexture ) { + + data.aoMap = this.aoMap.toJSON( meta ).uuid; + data.aoMapIntensity = this.aoMapIntensity; + + } + + if ( this.bumpMap && this.bumpMap.isTexture ) { + + data.bumpMap = this.bumpMap.toJSON( meta ).uuid; + data.bumpScale = this.bumpScale; + + } + + if ( this.normalMap && this.normalMap.isTexture ) { + + data.normalMap = this.normalMap.toJSON( meta ).uuid; + data.normalMapType = this.normalMapType; + data.normalScale = this.normalScale.toArray(); + + } + + if ( this.displacementMap && this.displacementMap.isTexture ) { + + data.displacementMap = this.displacementMap.toJSON( meta ).uuid; + data.displacementScale = this.displacementScale; + data.displacementBias = this.displacementBias; + + } + + if ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid; + if ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid; + + if ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid; + if ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid; + if ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid; + if ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid; + + if ( this.envMap && this.envMap.isTexture ) { + + data.envMap = this.envMap.toJSON( meta ).uuid; + + if ( this.combine !== undefined ) data.combine = this.combine; + + } + + if ( this.envMapRotation !== undefined ) data.envMapRotation = this.envMapRotation.toArray(); + if ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity; + if ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity; + if ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio; + + if ( this.gradientMap && this.gradientMap.isTexture ) { + + data.gradientMap = this.gradientMap.toJSON( meta ).uuid; + + } + + if ( this.transmission !== undefined ) data.transmission = this.transmission; + if ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid; + if ( this.thickness !== undefined ) data.thickness = this.thickness; + if ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid; + if ( this.attenuationDistance !== undefined && this.attenuationDistance !== Infinity ) data.attenuationDistance = this.attenuationDistance; + if ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex(); + + if ( this.size !== undefined ) data.size = this.size; + if ( this.shadowSide !== null ) data.shadowSide = this.shadowSide; + if ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation; + + if ( this.blending !== NormalBlending ) data.blending = this.blending; + if ( this.side !== FrontSide ) data.side = this.side; + if ( this.vertexColors === true ) data.vertexColors = true; + + if ( this.opacity < 1 ) data.opacity = this.opacity; + if ( this.transparent === true ) data.transparent = true; + + if ( this.blendSrc !== SrcAlphaFactor ) data.blendSrc = this.blendSrc; + if ( this.blendDst !== OneMinusSrcAlphaFactor ) data.blendDst = this.blendDst; + if ( this.blendEquation !== AddEquation ) data.blendEquation = this.blendEquation; + if ( this.blendSrcAlpha !== null ) data.blendSrcAlpha = this.blendSrcAlpha; + if ( this.blendDstAlpha !== null ) data.blendDstAlpha = this.blendDstAlpha; + if ( this.blendEquationAlpha !== null ) data.blendEquationAlpha = this.blendEquationAlpha; + if ( this.blendColor && this.blendColor.isColor ) data.blendColor = this.blendColor.getHex(); + if ( this.blendAlpha !== 0 ) data.blendAlpha = this.blendAlpha; + + if ( this.depthFunc !== LessEqualDepth ) data.depthFunc = this.depthFunc; + if ( this.depthTest === false ) data.depthTest = this.depthTest; + if ( this.depthWrite === false ) data.depthWrite = this.depthWrite; + if ( this.colorWrite === false ) data.colorWrite = this.colorWrite; + + if ( this.stencilWriteMask !== 0xff ) data.stencilWriteMask = this.stencilWriteMask; + if ( this.stencilFunc !== AlwaysStencilFunc ) data.stencilFunc = this.stencilFunc; + if ( this.stencilRef !== 0 ) data.stencilRef = this.stencilRef; + if ( this.stencilFuncMask !== 0xff ) data.stencilFuncMask = this.stencilFuncMask; + if ( this.stencilFail !== KeepStencilOp ) data.stencilFail = this.stencilFail; + if ( this.stencilZFail !== KeepStencilOp ) data.stencilZFail = this.stencilZFail; + if ( this.stencilZPass !== KeepStencilOp ) data.stencilZPass = this.stencilZPass; + if ( this.stencilWrite === true ) data.stencilWrite = this.stencilWrite; + + // rotation (SpriteMaterial) + if ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation; + + if ( this.polygonOffset === true ) data.polygonOffset = true; + if ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor; + if ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits; + + if ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth; + if ( this.dashSize !== undefined ) data.dashSize = this.dashSize; + if ( this.gapSize !== undefined ) data.gapSize = this.gapSize; + if ( this.scale !== undefined ) data.scale = this.scale; + + if ( this.dithering === true ) data.dithering = true; + + if ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest; + if ( this.alphaHash === true ) data.alphaHash = true; + if ( this.alphaToCoverage === true ) data.alphaToCoverage = true; + if ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true; + if ( this.forceSinglePass === true ) data.forceSinglePass = true; + + if ( this.wireframe === true ) data.wireframe = true; + if ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth; + if ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap; + if ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin; + + if ( this.flatShading === true ) data.flatShading = true; + + if ( this.visible === false ) data.visible = false; + + if ( this.toneMapped === false ) data.toneMapped = false; + + if ( this.fog === false ) data.fog = false; + + if ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData; + + // TODO: Copied from Object3D.toJSON + + function extractFromCache( cache ) { + + const values = []; + + for ( const key in cache ) { + + const data = cache[ key ]; + delete data.metadata; + values.push( data ); + + } + + return values; + + } + + if ( isRootObject ) { + + const textures = extractFromCache( meta.textures ); + const images = extractFromCache( meta.images ); + + if ( textures.length > 0 ) data.textures = textures; + if ( images.length > 0 ) data.images = images; + + } + + return data; + + } + + /** + * Returns a new material with copied values from this instance. + * + * @return {Material} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + + /** + * Copies the values of the given material to this instance. + * + * @param {Material} source - The material to copy. + * @return {Material} A reference to this instance. + */ + copy( source ) { + + this.name = source.name; + + this.blending = source.blending; + this.side = source.side; + this.vertexColors = source.vertexColors; + + this.opacity = source.opacity; + this.transparent = source.transparent; + + this.blendSrc = source.blendSrc; + this.blendDst = source.blendDst; + this.blendEquation = source.blendEquation; + this.blendSrcAlpha = source.blendSrcAlpha; + this.blendDstAlpha = source.blendDstAlpha; + this.blendEquationAlpha = source.blendEquationAlpha; + this.blendColor.copy( source.blendColor ); + this.blendAlpha = source.blendAlpha; + + this.depthFunc = source.depthFunc; + this.depthTest = source.depthTest; + this.depthWrite = source.depthWrite; + + this.stencilWriteMask = source.stencilWriteMask; + this.stencilFunc = source.stencilFunc; + this.stencilRef = source.stencilRef; + this.stencilFuncMask = source.stencilFuncMask; + this.stencilFail = source.stencilFail; + this.stencilZFail = source.stencilZFail; + this.stencilZPass = source.stencilZPass; + this.stencilWrite = source.stencilWrite; + + const srcPlanes = source.clippingPlanes; + let dstPlanes = null; + + if ( srcPlanes !== null ) { + + const n = srcPlanes.length; + dstPlanes = new Array( n ); + + for ( let i = 0; i !== n; ++ i ) { + + dstPlanes[ i ] = srcPlanes[ i ].clone(); + + } + + } + + this.clippingPlanes = dstPlanes; + this.clipIntersection = source.clipIntersection; + this.clipShadows = source.clipShadows; + + this.shadowSide = source.shadowSide; + + this.colorWrite = source.colorWrite; + + this.precision = source.precision; + + this.polygonOffset = source.polygonOffset; + this.polygonOffsetFactor = source.polygonOffsetFactor; + this.polygonOffsetUnits = source.polygonOffsetUnits; + + this.dithering = source.dithering; + + this.alphaTest = source.alphaTest; + this.alphaHash = source.alphaHash; + this.alphaToCoverage = source.alphaToCoverage; + this.premultipliedAlpha = source.premultipliedAlpha; + this.forceSinglePass = source.forceSinglePass; + + this.visible = source.visible; + + this.toneMapped = source.toneMapped; + + this.userData = JSON.parse( JSON.stringify( source.userData ) ); + + return this; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + * + * @fires Material#dispose + */ + dispose() { + + /** + * Fires when the material has been disposed of. + * + * @event Material#dispose + * @type {Object} + */ + this.dispatchEvent( { type: 'dispose' } ); + + } + + /** + * Setting this property to `true` indicates the engine the material + * needs to be recompiled. + * + * @type {boolean} + * @default false + * @param {boolean} value + */ + set needsUpdate( value ) { + + if ( value === true ) this.version ++; + + } + + onBuild( /* shaderobject, renderer */ ) { + + console.warn( 'Material: onBuild() has been removed.' ); // @deprecated, r166 + + } + +} + +/** + * A material for drawing geometries in a simple shaded (flat or wireframe) way. + * + * This material is not affected by lights. + * + * @augments Material + */ +class MeshBasicMaterial extends Material { + + /** + * Constructs a new mesh basic material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isMeshBasicMaterial = true; + + this.type = 'MeshBasicMaterial'; + + /** + * Color of the material. + * + * @type {Color} + * @default (1,1,1) + */ + this.color = new Color( 0xffffff ); // emissive + + /** + * The color map. May optionally include an alpha channel, typically combined + * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map + * color is modulated by the diffuse `color`. + * + * @type {?Texture} + * @default null + */ + this.map = null; + + /** + * The light map. Requires a second set of UVs. + * + * @type {?Texture} + * @default null + */ + this.lightMap = null; + + /** + * Intensity of the baked light. + * + * @type {number} + * @default 1 + */ + this.lightMapIntensity = 1.0; + + /** + * The red channel of this texture is used as the ambient occlusion map. + * Requires a second set of UVs. + * + * @type {?Texture} + * @default null + */ + this.aoMap = null; + + /** + * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0` + * disables ambient occlusion. Where intensity is `1` and the AO map's + * red channel is also `1`, ambient light is fully occluded on a surface. + * + * @type {number} + * @default 1 + */ + this.aoMapIntensity = 1.0; + + /** + * Specular map used by the material. + * + * @type {?Texture} + * @default null + */ + this.specularMap = null; + + /** + * The alpha map is a grayscale texture that controls the opacity across the + * surface (black: fully transparent; white: fully opaque). + * + * Only the color of the texture is used, ignoring the alpha channel if one + * exists. For RGB and RGBA textures, the renderer will use the green channel + * when sampling this texture due to the extra bit of precision provided for + * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and + * luminance/alpha textures will also still work as expected. + * + * @type {?Texture} + * @default null + */ + this.alphaMap = null; + + /** + * The environment map. + * + * @type {?Texture} + * @default null + */ + this.envMap = null; + + /** + * The rotation of the environment map in radians. + * + * @type {Euler} + * @default (0,0,0) + */ + this.envMapRotation = new Euler(); + + /** + * How to combine the result of the surface's color with the environment map, if any. + * + * When set to `MixOperation`, the {@link MeshBasicMaterial#reflectivity} is used to + * blend between the two colors. + * + * @type {(MultiplyOperation|MixOperation|AddOperation)} + * @default MultiplyOperation + */ + this.combine = MultiplyOperation; + + /** + * How much the environment map affects the surface. + * The valid range is between `0` (no reflections) and `1` (full reflections). + * + * @type {number} + * @default 1 + */ + this.reflectivity = 1; + + /** + * The index of refraction (IOR) of air (approximately 1) divided by the + * index of refraction of the material. It is used with environment mapping + * modes {@link CubeRefractionMapping} and {@link EquirectangularRefractionMapping}. + * The refraction ratio should not exceed `1`. + * + * @type {number} + * @default 0.98 + */ + this.refractionRatio = 0.98; + + /** + * Renders the geometry as a wireframe. + * + * @type {boolean} + * @default false + */ + this.wireframe = false; + + /** + * Controls the thickness of the wireframe. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {number} + * @default 1 + */ + this.wireframeLinewidth = 1; + + /** + * Defines appearance of wireframe ends. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {('round'|'bevel'|'miter')} + * @default 'round' + */ + this.wireframeLinecap = 'round'; + + /** + * Defines appearance of wireframe joints. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {('round'|'bevel'|'miter')} + * @default 'round' + */ + this.wireframeLinejoin = 'round'; + + /** + * Whether the material is affected by fog or not. + * + * @type {boolean} + * @default true + */ + this.fog = true; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.envMapRotation.copy( source.envMapRotation ); + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.fog = source.fog; + + return this; + + } + +} + +// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf + +const _tables = /*@__PURE__*/ _generateTables(); + +function _generateTables() { + + // float32 to float16 helpers + + const buffer = new ArrayBuffer( 4 ); + const floatView = new Float32Array( buffer ); + const uint32View = new Uint32Array( buffer ); + + const baseTable = new Uint32Array( 512 ); + const shiftTable = new Uint32Array( 512 ); + + for ( let i = 0; i < 256; ++ i ) { + + const e = i - 127; + + // very small number (0, -0) + + if ( e < -27 ) { + + baseTable[ i ] = 0x0000; + baseTable[ i | 0x100 ] = 0x8000; + shiftTable[ i ] = 24; + shiftTable[ i | 0x100 ] = 24; + + // small number (denorm) + + } else if ( e < -14 ) { + + baseTable[ i ] = 0x0400 >> ( - e - 14 ); + baseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000; + shiftTable[ i ] = - e - 1; + shiftTable[ i | 0x100 ] = - e - 1; + + // normal number + + } else if ( e <= 15 ) { + + baseTable[ i ] = ( e + 15 ) << 10; + baseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000; + shiftTable[ i ] = 13; + shiftTable[ i | 0x100 ] = 13; + + // large number (Infinity, -Infinity) + + } else if ( e < 128 ) { + + baseTable[ i ] = 0x7c00; + baseTable[ i | 0x100 ] = 0xfc00; + shiftTable[ i ] = 24; + shiftTable[ i | 0x100 ] = 24; + + // stay (NaN, Infinity, -Infinity) + + } else { + + baseTable[ i ] = 0x7c00; + baseTable[ i | 0x100 ] = 0xfc00; + shiftTable[ i ] = 13; + shiftTable[ i | 0x100 ] = 13; + + } + + } + + // float16 to float32 helpers + + const mantissaTable = new Uint32Array( 2048 ); + const exponentTable = new Uint32Array( 64 ); + const offsetTable = new Uint32Array( 64 ); + + for ( let i = 1; i < 1024; ++ i ) { + + let m = i << 13; // zero pad mantissa bits + let e = 0; // zero exponent + + // normalized + while ( ( m & 0x00800000 ) === 0 ) { + + m <<= 1; + e -= 0x00800000; // decrement exponent + + } + + m &= -8388609; // clear leading 1 bit + e += 0x38800000; // adjust bias + + mantissaTable[ i ] = m | e; + + } + + for ( let i = 1024; i < 2048; ++ i ) { + + mantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 ); + + } + + for ( let i = 1; i < 31; ++ i ) { + + exponentTable[ i ] = i << 23; + + } + + exponentTable[ 31 ] = 0x47800000; + exponentTable[ 32 ] = 0x80000000; + + for ( let i = 33; i < 63; ++ i ) { + + exponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 ); + + } + + exponentTable[ 63 ] = 0xc7800000; + + for ( let i = 1; i < 64; ++ i ) { + + if ( i !== 32 ) { + + offsetTable[ i ] = 1024; + + } + + } + + return { + floatView: floatView, + uint32View: uint32View, + baseTable: baseTable, + shiftTable: shiftTable, + mantissaTable: mantissaTable, + exponentTable: exponentTable, + offsetTable: offsetTable + }; + +} + +/** + * Returns a half precision floating point value (FP16) from the given single + * precision floating point value (FP32). + * + * @param {number} val - A single precision floating point value. + * @return {number} The FP16 value. + */ +function toHalfFloat( val ) { + + if ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' ); + + val = clamp( val, -65504, 65504 ); + + _tables.floatView[ 0 ] = val; + const f = _tables.uint32View[ 0 ]; + const e = ( f >> 23 ) & 0x1ff; + return _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] ); + +} + +/** + * Returns a single precision floating point value (FP32) from the given half + * precision floating point value (FP16). + * + * @param {number} val - A half precision floating point value. + * @return {number} The FP32 value. + */ +function fromHalfFloat( val ) { + + const m = val >> 10; + _tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ]; + return _tables.floatView[ 0 ]; + +} + +/** + * A class containing utility functions for data. + * + * @hideconstructor + */ +class DataUtils { + + /** + * Returns a half precision floating point value (FP16) from the given single + * precision floating point value (FP32). + * + * @param {number} val - A single precision floating point value. + * @return {number} The FP16 value. + */ + static toHalfFloat( val ) { + + return toHalfFloat( val ); + + } + + /** + * Returns a single precision floating point value (FP32) from the given half + * precision floating point value (FP16). + * + * @param {number} val - A half precision floating point value. + * @return {number} The FP32 value. + */ + static fromHalfFloat( val ) { + + return fromHalfFloat( val ); + + } + +} + +const _vector$9 = /*@__PURE__*/ new Vector3(); +const _vector2$1 = /*@__PURE__*/ new Vector2(); + +let _id$2 = 0; + +/** + * This class stores data for an attribute (such as vertex positions, face + * indices, normals, colors, UVs, and any custom attributes ) associated with + * a geometry, which allows for more efficient passing of data to the GPU. + * + * When working with vector-like data, the `fromBufferAttribute( attribute, index )` + * helper methods on vector and color class might be helpful. E.g. {@link Vector3#fromBufferAttribute}. + */ +class BufferAttribute { + + /** + * Constructs a new buffer attribute. + * + * @param {TypedArray} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor( array, itemSize, normalized = false ) { + + if ( Array.isArray( array ) ) { + + throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + + } + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isBufferAttribute = true; + + /** + * The ID of the buffer attribute. + * + * @name BufferAttribute#id + * @type {number} + * @readonly + */ + Object.defineProperty( this, 'id', { value: _id$2 ++ } ); + + /** + * The name of the buffer attribute. + * + * @type {string} + */ + this.name = ''; + + /** + * The array holding the attribute data. It should have `itemSize * numVertices` + * elements, where `numVertices` is the number of vertices in the associated geometry. + * + * @type {TypedArray} + */ + this.array = array; + + /** + * The number of values of the array that should be associated with a particular vertex. + * For instance, if this attribute is storing a 3-component vector (such as a position, + * normal, or color), then the value should be `3`. + * + * @type {number} + */ + this.itemSize = itemSize; + + /** + * Represents the number of items this buffer attribute stores. It is internally computed + * by dividing the `array` length by the `itemSize`. + * + * @type {number} + * @readonly + */ + this.count = array !== undefined ? array.length / itemSize : 0; + + /** + * Applies to integer data only. Indicates how the underlying data in the buffer maps to + * the values in the GLSL code. For instance, if `array` is an instance of `UInt16Array`, + * and `normalized` is `true`, the values `0 -+65535` in the array data will be mapped to + * `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted + * to floats unmodified, i.e. `65535` becomes `65535.0f`. + * + * @type {boolean} + */ + this.normalized = normalized; + + /** + * Defines the intended usage pattern of the data store for optimization purposes. + * + * Note: After the initial use of a buffer, its usage cannot be changed. Instead, + * instantiate a new one and set the desired usage before the next render. + * + * @type {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} + * @default StaticDrawUsage + */ + this.usage = StaticDrawUsage; + + /** + * This can be used to only update some components of stored vectors (for example, just the + * component related to color). Use the `addUpdateRange()` function to add ranges to this array. + * + * @type {Array} + */ + this.updateRanges = []; + + /** + * Configures the bound GPU type for use in shaders. + * + * Note: this only has an effect for integer arrays and is not configurable for float arrays. + * For lower precision float types, use `Float16BufferAttribute`. + * + * @type {(FloatType|IntType)} + * @default FloatType + */ + this.gpuType = FloatType; + + /** + * A version number, incremented every time the `needsUpdate` is set to `true`. + * + * @type {number} + */ + this.version = 0; + + } + + /** + * A callback function that is executed after the renderer has transferred the attribute + * array data to the GPU. + */ + onUploadCallback() {} + + /** + * Flag to indicate that this attribute has changed and should be re-sent to + * the GPU. Set this to `true` when you modify the value of the array. + * + * @type {number} + * @default false + * @param {boolean} value + */ + set needsUpdate( value ) { + + if ( value === true ) this.version ++; + + } + + /** + * Sets the usage of this buffer attribute. + * + * @param {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} value - The usage to set. + * @return {BufferAttribute} A reference to this buffer attribute. + */ + setUsage( value ) { + + this.usage = value; + + return this; + + } + + /** + * Adds a range of data in the data array to be updated on the GPU. + * + * @param {number} start - Position at which to start update. + * @param {number} count - The number of components to update. + */ + addUpdateRange( start, count ) { + + this.updateRanges.push( { start, count } ); + + } + + /** + * Clears the update ranges. + */ + clearUpdateRanges() { + + this.updateRanges.length = 0; + + } + + /** + * Copies the values of the given buffer attribute to this instance. + * + * @param {BufferAttribute} source - The buffer attribute to copy. + * @return {BufferAttribute} A reference to this instance. + */ + copy( source ) { + + this.name = source.name; + this.array = new source.array.constructor( source.array ); + this.itemSize = source.itemSize; + this.count = source.count; + this.normalized = source.normalized; + + this.usage = source.usage; + this.gpuType = source.gpuType; + + return this; + + } + + /** + * Copies a vector from the given buffer attribute to this one. The start + * and destination position in the attribute buffers are represented by the + * given indices. + * + * @param {number} index1 - The destination index into this buffer attribute. + * @param {BufferAttribute} attribute - The buffer attribute to copy from. + * @param {number} index2 - The source index into the given buffer attribute. + * @return {BufferAttribute} A reference to this instance. + */ + copyAt( index1, attribute, index2 ) { + + index1 *= this.itemSize; + index2 *= attribute.itemSize; + + for ( let i = 0, l = this.itemSize; i < l; i ++ ) { + + this.array[ index1 + i ] = attribute.array[ index2 + i ]; + + } + + return this; + + } + + /** + * Copies the given array data into this buffer attribute. + * + * @param {(TypedArray|Array)} array - The array to copy. + * @return {BufferAttribute} A reference to this instance. + */ + copyArray( array ) { + + this.array.set( array ); + + return this; + + } + + /** + * Applies the given 3x3 matrix to the given attribute. Works with + * item size `2` and `3`. + * + * @param {Matrix3} m - The matrix to apply. + * @return {BufferAttribute} A reference to this instance. + */ + applyMatrix3( m ) { + + if ( this.itemSize === 2 ) { + + for ( let i = 0, l = this.count; i < l; i ++ ) { + + _vector2$1.fromBufferAttribute( this, i ); + _vector2$1.applyMatrix3( m ); + + this.setXY( i, _vector2$1.x, _vector2$1.y ); + + } + + } else if ( this.itemSize === 3 ) { + + for ( let i = 0, l = this.count; i < l; i ++ ) { + + _vector$9.fromBufferAttribute( this, i ); + _vector$9.applyMatrix3( m ); + + this.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z ); + + } + + } + + return this; + + } + + /** + * Applies the given 4x4 matrix to the given attribute. Only works with + * item size `3`. + * + * @param {Matrix4} m - The matrix to apply. + * @return {BufferAttribute} A reference to this instance. + */ + applyMatrix4( m ) { + + for ( let i = 0, l = this.count; i < l; i ++ ) { + + _vector$9.fromBufferAttribute( this, i ); + + _vector$9.applyMatrix4( m ); + + this.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z ); + + } + + return this; + + } + + /** + * Applies the given 3x3 normal matrix to the given attribute. Only works with + * item size `3`. + * + * @param {Matrix3} m - The normal matrix to apply. + * @return {BufferAttribute} A reference to this instance. + */ + applyNormalMatrix( m ) { + + for ( let i = 0, l = this.count; i < l; i ++ ) { + + _vector$9.fromBufferAttribute( this, i ); + + _vector$9.applyNormalMatrix( m ); + + this.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z ); + + } + + return this; + + } + + /** + * Applies the given 4x4 matrix to the given attribute. Only works with + * item size `3` and with direction vectors. + * + * @param {Matrix4} m - The matrix to apply. + * @return {BufferAttribute} A reference to this instance. + */ + transformDirection( m ) { + + for ( let i = 0, l = this.count; i < l; i ++ ) { + + _vector$9.fromBufferAttribute( this, i ); + + _vector$9.transformDirection( m ); + + this.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z ); + + } + + return this; + + } + + /** + * Sets the given array data in the buffer attribute. + * + * @param {(TypedArray|Array)} value - The array data to set. + * @param {number} [offset=0] - The offset in this buffer attribute's array. + * @return {BufferAttribute} A reference to this instance. + */ + set( value, offset = 0 ) { + + // Matching BufferAttribute constructor, do not normalize the array. + this.array.set( value, offset ); + + return this; + + } + + /** + * Returns the given component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} component - The component index. + * @return {number} The returned value. + */ + getComponent( index, component ) { + + let value = this.array[ index * this.itemSize + component ]; + + if ( this.normalized ) value = denormalize( value, this.array ); + + return value; + + } + + /** + * Sets the given value to the given component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} component - The component index. + * @param {number} value - The value to set. + * @return {BufferAttribute} A reference to this instance. + */ + setComponent( index, component, value ) { + + if ( this.normalized ) value = normalize( value, this.array ); + + this.array[ index * this.itemSize + component ] = value; + + return this; + + } + + /** + * Returns the x component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @return {number} The x component. + */ + getX( index ) { + + let x = this.array[ index * this.itemSize ]; + + if ( this.normalized ) x = denormalize( x, this.array ); + + return x; + + } + + /** + * Sets the x component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} x - The value to set. + * @return {BufferAttribute} A reference to this instance. + */ + setX( index, x ) { + + if ( this.normalized ) x = normalize( x, this.array ); + + this.array[ index * this.itemSize ] = x; + + return this; + + } + + /** + * Returns the y component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @return {number} The y component. + */ + getY( index ) { + + let y = this.array[ index * this.itemSize + 1 ]; + + if ( this.normalized ) y = denormalize( y, this.array ); + + return y; + + } + + /** + * Sets the y component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} y - The value to set. + * @return {BufferAttribute} A reference to this instance. + */ + setY( index, y ) { + + if ( this.normalized ) y = normalize( y, this.array ); + + this.array[ index * this.itemSize + 1 ] = y; + + return this; + + } + + /** + * Returns the z component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @return {number} The z component. + */ + getZ( index ) { + + let z = this.array[ index * this.itemSize + 2 ]; + + if ( this.normalized ) z = denormalize( z, this.array ); + + return z; + + } + + /** + * Sets the z component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} z - The value to set. + * @return {BufferAttribute} A reference to this instance. + */ + setZ( index, z ) { + + if ( this.normalized ) z = normalize( z, this.array ); + + this.array[ index * this.itemSize + 2 ] = z; + + return this; + + } + + /** + * Returns the w component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @return {number} The w component. + */ + getW( index ) { + + let w = this.array[ index * this.itemSize + 3 ]; + + if ( this.normalized ) w = denormalize( w, this.array ); + + return w; + + } + + /** + * Sets the w component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} w - The value to set. + * @return {BufferAttribute} A reference to this instance. + */ + setW( index, w ) { + + if ( this.normalized ) w = normalize( w, this.array ); + + this.array[ index * this.itemSize + 3 ] = w; + + return this; + + } + + /** + * Sets the x and y component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} x - The value for the x component to set. + * @param {number} y - The value for the y component to set. + * @return {BufferAttribute} A reference to this instance. + */ + setXY( index, x, y ) { + + index *= this.itemSize; + + if ( this.normalized ) { + + x = normalize( x, this.array ); + y = normalize( y, this.array ); + + } + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + + return this; + + } + + /** + * Sets the x, y and z component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} x - The value for the x component to set. + * @param {number} y - The value for the y component to set. + * @param {number} z - The value for the z component to set. + * @return {BufferAttribute} A reference to this instance. + */ + setXYZ( index, x, y, z ) { + + index *= this.itemSize; + + if ( this.normalized ) { + + x = normalize( x, this.array ); + y = normalize( y, this.array ); + z = normalize( z, this.array ); + + } + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + this.array[ index + 2 ] = z; + + return this; + + } + + /** + * Sets the x, y, z and w component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} x - The value for the x component to set. + * @param {number} y - The value for the y component to set. + * @param {number} z - The value for the z component to set. + * @param {number} w - The value for the w component to set. + * @return {BufferAttribute} A reference to this instance. + */ + setXYZW( index, x, y, z, w ) { + + index *= this.itemSize; + + if ( this.normalized ) { + + x = normalize( x, this.array ); + y = normalize( y, this.array ); + z = normalize( z, this.array ); + w = normalize( w, this.array ); + + } + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + this.array[ index + 2 ] = z; + this.array[ index + 3 ] = w; + + return this; + + } + + /** + * Sets the given callback function that is executed after the Renderer has transferred + * the attribute array data to the GPU. Can be used to perform clean-up operations after + * the upload when attribute data are not needed anymore on the CPU side. + * + * @param {Function} callback - The `onUpload()` callback. + * @return {BufferAttribute} A reference to this instance. + */ + onUpload( callback ) { + + this.onUploadCallback = callback; + + return this; + + } + + /** + * Returns a new buffer attribute with copied values from this instance. + * + * @return {BufferAttribute} A clone of this instance. + */ + clone() { + + return new this.constructor( this.array, this.itemSize ).copy( this ); + + } + + /** + * Serializes the buffer attribute into JSON. + * + * @return {Object} A JSON object representing the serialized buffer attribute. + */ + toJSON() { + + const data = { + itemSize: this.itemSize, + type: this.array.constructor.name, + array: Array.from( this.array ), + normalized: this.normalized + }; + + if ( this.name !== '' ) data.name = this.name; + if ( this.usage !== StaticDrawUsage ) data.usage = this.usage; + + return data; + + } + +} + +/** + * Convenient class that can be used when creating a `Int8` buffer attribute with + * a plain `Array` instance. + * + * @augments BufferAttribute + */ +class Int8BufferAttribute extends BufferAttribute { + + /** + * Constructs a new buffer attribute. + * + * @param {(Array|Int8Array)} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor( array, itemSize, normalized ) { + + super( new Int8Array( array ), itemSize, normalized ); + + } + +} + +/** + * Convenient class that can be used when creating a `UInt8` buffer attribute with + * a plain `Array` instance. + * + * @augments BufferAttribute + */ +class Uint8BufferAttribute extends BufferAttribute { + + /** + * Constructs a new buffer attribute. + * + * @param {(Array|Uint8Array)} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor( array, itemSize, normalized ) { + + super( new Uint8Array( array ), itemSize, normalized ); + + } + +} + +/** + * Convenient class that can be used when creating a `UInt8Clamped` buffer attribute with + * a plain `Array` instance. + * + * @augments BufferAttribute + */ +class Uint8ClampedBufferAttribute extends BufferAttribute { + + /** + * Constructs a new buffer attribute. + * + * @param {(Array|Uint8ClampedArray)} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor( array, itemSize, normalized ) { + + super( new Uint8ClampedArray( array ), itemSize, normalized ); + + } + +} + +/** + * Convenient class that can be used when creating a `Int16` buffer attribute with + * a plain `Array` instance. + * + * @augments BufferAttribute + */ +class Int16BufferAttribute extends BufferAttribute { + + /** + * Constructs a new buffer attribute. + * + * @param {(Array|Int16Array)} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor( array, itemSize, normalized ) { + + super( new Int16Array( array ), itemSize, normalized ); + + } + +} + +/** + * Convenient class that can be used when creating a `UInt16` buffer attribute with + * a plain `Array` instance. + * + * @augments BufferAttribute + */ +class Uint16BufferAttribute extends BufferAttribute { + + /** + * Constructs a new buffer attribute. + * + * @param {(Array|Uint16Array)} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor( array, itemSize, normalized ) { + + super( new Uint16Array( array ), itemSize, normalized ); + + } + +} + +/** + * Convenient class that can be used when creating a `Int32` buffer attribute with + * a plain `Array` instance. + * + * @augments BufferAttribute + */ +class Int32BufferAttribute extends BufferAttribute { + + /** + * Constructs a new buffer attribute. + * + * @param {(Array|Int32Array)} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor( array, itemSize, normalized ) { + + super( new Int32Array( array ), itemSize, normalized ); + + } + +} + +/** + * Convenient class that can be used when creating a `UInt32` buffer attribute with + * a plain `Array` instance. + * + * @augments BufferAttribute + */ +class Uint32BufferAttribute extends BufferAttribute { + + /** + * Constructs a new buffer attribute. + * + * @param {(Array|Uint32Array)} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor( array, itemSize, normalized ) { + + super( new Uint32Array( array ), itemSize, normalized ); + + } + +} + +/** + * Convenient class that can be used when creating a `Float16` buffer attribute with + * a plain `Array` instance. + * + * This class automatically converts to to and from FP16 since `Float16Array` is not + * natively supported in JavaScript. + * + * @augments BufferAttribute + */ +class Float16BufferAttribute extends BufferAttribute { + + /** + * Constructs a new buffer attribute. + * + * @param {(Array|Uint16Array)} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor( array, itemSize, normalized ) { + + super( new Uint16Array( array ), itemSize, normalized ); + + this.isFloat16BufferAttribute = true; + + } + + getX( index ) { + + let x = fromHalfFloat( this.array[ index * this.itemSize ] ); + + if ( this.normalized ) x = denormalize( x, this.array ); + + return x; + + } + + setX( index, x ) { + + if ( this.normalized ) x = normalize( x, this.array ); + + this.array[ index * this.itemSize ] = toHalfFloat( x ); + + return this; + + } + + getY( index ) { + + let y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] ); + + if ( this.normalized ) y = denormalize( y, this.array ); + + return y; + + } + + setY( index, y ) { + + if ( this.normalized ) y = normalize( y, this.array ); + + this.array[ index * this.itemSize + 1 ] = toHalfFloat( y ); + + return this; + + } + + getZ( index ) { + + let z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] ); + + if ( this.normalized ) z = denormalize( z, this.array ); + + return z; + + } + + setZ( index, z ) { + + if ( this.normalized ) z = normalize( z, this.array ); + + this.array[ index * this.itemSize + 2 ] = toHalfFloat( z ); + + return this; + + } + + getW( index ) { + + let w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] ); + + if ( this.normalized ) w = denormalize( w, this.array ); + + return w; + + } + + setW( index, w ) { + + if ( this.normalized ) w = normalize( w, this.array ); + + this.array[ index * this.itemSize + 3 ] = toHalfFloat( w ); + + return this; + + } + + setXY( index, x, y ) { + + index *= this.itemSize; + + if ( this.normalized ) { + + x = normalize( x, this.array ); + y = normalize( y, this.array ); + + } + + this.array[ index + 0 ] = toHalfFloat( x ); + this.array[ index + 1 ] = toHalfFloat( y ); + + return this; + + } + + setXYZ( index, x, y, z ) { + + index *= this.itemSize; + + if ( this.normalized ) { + + x = normalize( x, this.array ); + y = normalize( y, this.array ); + z = normalize( z, this.array ); + + } + + this.array[ index + 0 ] = toHalfFloat( x ); + this.array[ index + 1 ] = toHalfFloat( y ); + this.array[ index + 2 ] = toHalfFloat( z ); + + return this; + + } + + setXYZW( index, x, y, z, w ) { + + index *= this.itemSize; + + if ( this.normalized ) { + + x = normalize( x, this.array ); + y = normalize( y, this.array ); + z = normalize( z, this.array ); + w = normalize( w, this.array ); + + } + + this.array[ index + 0 ] = toHalfFloat( x ); + this.array[ index + 1 ] = toHalfFloat( y ); + this.array[ index + 2 ] = toHalfFloat( z ); + this.array[ index + 3 ] = toHalfFloat( w ); + + return this; + + } + +} + +/** + * Convenient class that can be used when creating a `Float32` buffer attribute with + * a plain `Array` instance. + * + * @augments BufferAttribute + */ +class Float32BufferAttribute extends BufferAttribute { + + /** + * Constructs a new buffer attribute. + * + * @param {(Array|Float32Array)} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor( array, itemSize, normalized ) { + + super( new Float32Array( array ), itemSize, normalized ); + + } + +} + +let _id$1 = 0; + +const _m1 = /*@__PURE__*/ new Matrix4(); +const _obj = /*@__PURE__*/ new Object3D(); +const _offset = /*@__PURE__*/ new Vector3(); +const _box$2 = /*@__PURE__*/ new Box3(); +const _boxMorphTargets = /*@__PURE__*/ new Box3(); +const _vector$8 = /*@__PURE__*/ new Vector3(); + +/** + * A representation of mesh, line, or point geometry. Includes vertex + * positions, face indices, normals, colors, UVs, and custom attributes + * within buffers, reducing the cost of passing all this data to the GPU. + * + * ```js + * const geometry = new THREE.BufferGeometry(); + * // create a simple square shape. We duplicate the top left and bottom right + * // vertices because each vertex needs to appear once per triangle. + * const vertices = new Float32Array( [ + * -1.0, -1.0, 1.0, // v0 + * 1.0, -1.0, 1.0, // v1 + * 1.0, 1.0, 1.0, // v2 + * + * 1.0, 1.0, 1.0, // v3 + * -1.0, 1.0, 1.0, // v4 + * -1.0, -1.0, 1.0 // v5 + * ] ); + * // itemSize = 3 because there are 3 values (components) per vertex + * geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) ); + * const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } ); + * const mesh = new THREE.Mesh( geometry, material ); + * ``` + * + * @augments EventDispatcher + */ +class BufferGeometry extends EventDispatcher { + + /** + * Constructs a new geometry. + */ + constructor() { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isBufferGeometry = true; + + /** + * The ID of the geometry. + * + * @name BufferGeometry#id + * @type {number} + * @readonly + */ + Object.defineProperty( this, 'id', { value: _id$1 ++ } ); + + /** + * The UUID of the geometry. + * + * @type {string} + * @readonly + */ + this.uuid = generateUUID(); + + /** + * The name of the geometry. + * + * @type {string} + */ + this.name = ''; + this.type = 'BufferGeometry'; + + /** + * Allows for vertices to be re-used across multiple triangles; this is + * called using "indexed triangles". Each triangle is associated with the + * indices of three vertices. This attribute therefore stores the index of + * each vertex for each triangular face. If this attribute is not set, the + * renderer assumes that each three contiguous positions represent a single triangle. + * + * @type {?BufferAttribute} + * @default null + */ + this.index = null; + + /** + * A (storage) buffer attribute which was generated with a compute shader and + * now defines indirect draw calls. + * + * Can only be used with {@link WebGPURenderer} and a WebGPU backend. + * + * @type {?BufferAttribute} + * @default null + */ + this.indirect = null; + + /** + * This dictionary has as id the name of the attribute to be set and as value + * the buffer attribute to set it to. Rather than accessing this property directly, + * use `setAttribute()` and `getAttribute()` to access attributes of this geometry. + * + * @type {Object} + */ + this.attributes = {}; + + /** + * This dictionary holds the morph targets of the geometry. + * + * Note: Once the geometry has been rendered, the morph attribute data cannot + * be changed. You will have to call `dispose()?, and create a new geometry instance. + * + * @type {Object} + */ + this.morphAttributes = {}; + + /** + * Used to control the morph target behavior; when set to `true`, the morph + * target data is treated as relative offsets, rather than as absolute + * positions/normals. + * + * @type {boolean} + * @default false + */ + this.morphTargetsRelative = false; + + /** + * Split the geometry into groups, each of which will be rendered in a + * separate draw call. This allows an array of materials to be used with the geometry. + * + * Use `addGroup()` and `clearGroups()` to edit groups, rather than modifying this array directly. + * + * Every vertex and index must belong to exactly one group — groups must not share vertices or + * indices, and must not leave vertices or indices unused. + * + * @type {Array} + */ + this.groups = []; + + /** + * Bounding box for the geometry which can be calculated with `computeBoundingBox()`. + * + * @type {Box3} + * @default null + */ + this.boundingBox = null; + + /** + * Bounding sphere for the geometry which can be calculated with `computeBoundingSphere()`. + * + * @type {Sphere} + * @default null + */ + this.boundingSphere = null; + + /** + * Determines the part of the geometry to render. This should not be set directly, + * instead use `setDrawRange()`. + * + * @type {{start:number,count:number}} + */ + this.drawRange = { start: 0, count: Infinity }; + + /** + * An object that can be used to store custom data about the geometry. + * It should not hold references to functions as these will not be cloned. + * + * @type {Object} + */ + this.userData = {}; + + } + + /** + * Returns the index of this geometry. + * + * @return {?BufferAttribute} The index. Returns `null` if no index is defined. + */ + getIndex() { + + return this.index; + + } + + /** + * Sets the given index to this geometry. + * + * @param {Array|BufferAttribute} index - The index to set. + * @return {BufferGeometry} A reference to this instance. + */ + setIndex( index ) { + + if ( Array.isArray( index ) ) { + + this.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 ); + + } else { + + this.index = index; + + } + + return this; + + } + + /** + * Sets the given indirect attribute to this geometry. + * + * @param {BufferAttribute} indirect - The attribute holding indirect draw calls. + * @return {BufferGeometry} A reference to this instance. + */ + setIndirect( indirect ) { + + this.indirect = indirect; + + return this; + + } + + /** + * Returns the indirect attribute of this geometry. + * + * @return {?BufferAttribute} The indirect attribute. Returns `null` if no indirect attribute is defined. + */ + getIndirect() { + + return this.indirect; + + } + + /** + * Returns the buffer attribute for the given name. + * + * @param {string} name - The attribute name. + * @return {BufferAttribute|InterleavedBufferAttribute|undefined} The buffer attribute. + * Returns `undefined` if not attribute has been found. + */ + getAttribute( name ) { + + return this.attributes[ name ]; + + } + + /** + * Sets the given attribute for the given name. + * + * @param {string} name - The attribute name. + * @param {BufferAttribute|InterleavedBufferAttribute} attribute - The attribute to set. + * @return {BufferGeometry} A reference to this instance. + */ + setAttribute( name, attribute ) { + + this.attributes[ name ] = attribute; + + return this; + + } + + /** + * Deletes the attribute for the given name. + * + * @param {string} name - The attribute name to delete. + * @return {BufferGeometry} A reference to this instance. + */ + deleteAttribute( name ) { + + delete this.attributes[ name ]; + + return this; + + } + + /** + * Returns `true` if this geometry has an attribute for the given name. + * + * @param {string} name - The attribute name. + * @return {boolean} Whether this geometry has an attribute for the given name or not. + */ + hasAttribute( name ) { + + return this.attributes[ name ] !== undefined; + + } + + /** + * Adds a group to this geometry. + * + * @param {number} start - The first element in this draw call. That is the first + * vertex for non-indexed geometry, otherwise the first triangle index. + * @param {number} count - Specifies how many vertices (or indices) are part of this group. + * @param {number} [materialIndex=0] - The material array index to use. + */ + addGroup( start, count, materialIndex = 0 ) { + + this.groups.push( { + + start: start, + count: count, + materialIndex: materialIndex + + } ); + + } + + /** + * Clears all groups. + */ + clearGroups() { + + this.groups = []; + + } + + /** + * Sets the draw range for this geometry. + * + * @param {number} start - The first vertex for non-indexed geometry, otherwise the first triangle index. + * @param {number} count - For non-indexed BufferGeometry, `count` is the number of vertices to render. + * For indexed BufferGeometry, `count` is the number of indices to render. + */ + setDrawRange( start, count ) { + + this.drawRange.start = start; + this.drawRange.count = count; + + } + + /** + * Applies the given 4x4 transformation matrix to the geometry. + * + * @param {Matrix4} matrix - The matrix to apply. + * @return {BufferGeometry} A reference to this instance. + */ + applyMatrix4( matrix ) { + + const position = this.attributes.position; + + if ( position !== undefined ) { + + position.applyMatrix4( matrix ); + + position.needsUpdate = true; + + } + + const normal = this.attributes.normal; + + if ( normal !== undefined ) { + + const normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + normal.applyNormalMatrix( normalMatrix ); + + normal.needsUpdate = true; + + } + + const tangent = this.attributes.tangent; + + if ( tangent !== undefined ) { + + tangent.transformDirection( matrix ); + + tangent.needsUpdate = true; + + } + + if ( this.boundingBox !== null ) { + + this.computeBoundingBox(); + + } + + if ( this.boundingSphere !== null ) { + + this.computeBoundingSphere(); + + } + + return this; + + } + + /** + * Applies the rotation represented by the Quaternion to the geometry. + * + * @param {Quaternion} q - The Quaternion to apply. + * @return {BufferGeometry} A reference to this instance. + */ + applyQuaternion( q ) { + + _m1.makeRotationFromQuaternion( q ); + + this.applyMatrix4( _m1 ); + + return this; + + } + + /** + * Rotates the geometry about the X axis. This is typically done as a one time + * operation, and not during a loop. Use {@link Object3D#rotation} for typical + * real-time mesh rotation. + * + * @param {number} angle - The angle in radians. + * @return {BufferGeometry} A reference to this instance. + */ + rotateX( angle ) { + + // rotate geometry around world x-axis + + _m1.makeRotationX( angle ); + + this.applyMatrix4( _m1 ); + + return this; + + } + + /** + * Rotates the geometry about the Y axis. This is typically done as a one time + * operation, and not during a loop. Use {@link Object3D#rotation} for typical + * real-time mesh rotation. + * + * @param {number} angle - The angle in radians. + * @return {BufferGeometry} A reference to this instance. + */ + rotateY( angle ) { + + // rotate geometry around world y-axis + + _m1.makeRotationY( angle ); + + this.applyMatrix4( _m1 ); + + return this; + + } + + /** + * Rotates the geometry about the Z axis. This is typically done as a one time + * operation, and not during a loop. Use {@link Object3D#rotation} for typical + * real-time mesh rotation. + * + * @param {number} angle - The angle in radians. + * @return {BufferGeometry} A reference to this instance. + */ + rotateZ( angle ) { + + // rotate geometry around world z-axis + + _m1.makeRotationZ( angle ); + + this.applyMatrix4( _m1 ); + + return this; + + } + + /** + * Translates the geometry. This is typically done as a one time + * operation, and not during a loop. Use {@link Object3D#position} for typical + * real-time mesh rotation. + * + * @param {number} x - The x offset. + * @param {number} y - The y offset. + * @param {number} z - The z offset. + * @return {BufferGeometry} A reference to this instance. + */ + translate( x, y, z ) { + + // translate geometry + + _m1.makeTranslation( x, y, z ); + + this.applyMatrix4( _m1 ); + + return this; + + } + + /** + * Scales the geometry. This is typically done as a one time + * operation, and not during a loop. Use {@link Object3D#scale} for typical + * real-time mesh rotation. + * + * @param {number} x - The x scale. + * @param {number} y - The y scale. + * @param {number} z - The z scale. + * @return {BufferGeometry} A reference to this instance. + */ + scale( x, y, z ) { + + // scale geometry + + _m1.makeScale( x, y, z ); + + this.applyMatrix4( _m1 ); + + return this; + + } + + /** + * Rotates the geometry to face a point in 3D space. This is typically done as a one time + * operation, and not during a loop. Use {@link Object3D#lookAt} for typical + * real-time mesh rotation. + * + * @param {Vector3} vector - The target point. + * @return {BufferGeometry} A reference to this instance. + */ + lookAt( vector ) { + + _obj.lookAt( vector ); + + _obj.updateMatrix(); + + this.applyMatrix4( _obj.matrix ); + + return this; + + } + + /** + * Center the geometry based on its bounding box. + * + * @return {BufferGeometry} A reference to this instance. + */ + center() { + + this.computeBoundingBox(); + + this.boundingBox.getCenter( _offset ).negate(); + + this.translate( _offset.x, _offset.y, _offset.z ); + + return this; + + } + + /** + * Defines a geometry by creating a `position` attribute based on the given array of points. The array + * can hold 2D or 3D vectors. When using two-dimensional data, the `z` coordinate for all vertices is + * set to `0`. + * + * If the method is used with an existing `position` attribute, the vertex data are overwritten with the + * data from the array. The length of the array must match the vertex count. + * + * @param {Array|Array} points - The points. + * @return {BufferGeometry} A reference to this instance. + */ + setFromPoints( points ) { + + const positionAttribute = this.getAttribute( 'position' ); + + if ( positionAttribute === undefined ) { + + const position = []; + + for ( let i = 0, l = points.length; i < l; i ++ ) { + + const point = points[ i ]; + position.push( point.x, point.y, point.z || 0 ); + + } + + this.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) ); + + } else { + + const l = Math.min( points.length, positionAttribute.count ); // make sure data do not exceed buffer size + + for ( let i = 0; i < l; i ++ ) { + + const point = points[ i ]; + positionAttribute.setXYZ( i, point.x, point.y, point.z || 0 ); + + } + + if ( points.length > positionAttribute.count ) { + + console.warn( 'THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' ); + + } + + positionAttribute.needsUpdate = true; + + } + + return this; + + } + + /** + * Computes the bounding box of the geometry, and updates the `boundingBox` member. + * The bounding box is not computed by the engine; it must be computed by your app. + * You may need to recompute the bounding box if the geometry vertices are modified. + */ + computeBoundingBox() { + + if ( this.boundingBox === null ) { + + this.boundingBox = new Box3(); + + } + + const position = this.attributes.position; + const morphAttributesPosition = this.morphAttributes.position; + + if ( position && position.isGLBufferAttribute ) { + + console.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this ); + + this.boundingBox.set( + new Vector3( - Infinity, - Infinity, - Infinity ), + new Vector3( + Infinity, + Infinity, + Infinity ) + ); + + return; + + } + + if ( position !== undefined ) { + + this.boundingBox.setFromBufferAttribute( position ); + + // process morph attributes if present + + if ( morphAttributesPosition ) { + + for ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { + + const morphAttribute = morphAttributesPosition[ i ]; + _box$2.setFromBufferAttribute( morphAttribute ); + + if ( this.morphTargetsRelative ) { + + _vector$8.addVectors( this.boundingBox.min, _box$2.min ); + this.boundingBox.expandByPoint( _vector$8 ); + + _vector$8.addVectors( this.boundingBox.max, _box$2.max ); + this.boundingBox.expandByPoint( _vector$8 ); + + } else { + + this.boundingBox.expandByPoint( _box$2.min ); + this.boundingBox.expandByPoint( _box$2.max ); + + } + + } + + } + + } else { + + this.boundingBox.makeEmpty(); + + } + + if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) { + + console.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this ); + + } + + } + + /** + * Computes the bounding sphere of the geometry, and updates the `boundingSphere` member. + * The engine automatically computes the bounding sphere when it is needed, e.g., for ray casting or view frustum culling. + * You may need to recompute the bounding sphere if the geometry vertices are modified. + */ + computeBoundingSphere() { + + if ( this.boundingSphere === null ) { + + this.boundingSphere = new Sphere(); + + } + + const position = this.attributes.position; + const morphAttributesPosition = this.morphAttributes.position; + + if ( position && position.isGLBufferAttribute ) { + + console.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this ); + + this.boundingSphere.set( new Vector3(), Infinity ); + + return; + + } + + if ( position ) { + + // first, find the center of the bounding sphere + + const center = this.boundingSphere.center; + + _box$2.setFromBufferAttribute( position ); + + // process morph attributes if present + + if ( morphAttributesPosition ) { + + for ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { + + const morphAttribute = morphAttributesPosition[ i ]; + _boxMorphTargets.setFromBufferAttribute( morphAttribute ); + + if ( this.morphTargetsRelative ) { + + _vector$8.addVectors( _box$2.min, _boxMorphTargets.min ); + _box$2.expandByPoint( _vector$8 ); + + _vector$8.addVectors( _box$2.max, _boxMorphTargets.max ); + _box$2.expandByPoint( _vector$8 ); + + } else { + + _box$2.expandByPoint( _boxMorphTargets.min ); + _box$2.expandByPoint( _boxMorphTargets.max ); + + } + + } + + } + + _box$2.getCenter( center ); + + // second, try to find a boundingSphere with a radius smaller than the + // boundingSphere of the boundingBox: sqrt(3) smaller in the best case + + let maxRadiusSq = 0; + + for ( let i = 0, il = position.count; i < il; i ++ ) { + + _vector$8.fromBufferAttribute( position, i ); + + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) ); + + } + + // process morph attributes if present + + if ( morphAttributesPosition ) { + + for ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { + + const morphAttribute = morphAttributesPosition[ i ]; + const morphTargetsRelative = this.morphTargetsRelative; + + for ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) { + + _vector$8.fromBufferAttribute( morphAttribute, j ); + + if ( morphTargetsRelative ) { + + _offset.fromBufferAttribute( position, j ); + _vector$8.add( _offset ); + + } + + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) ); + + } + + } + + } + + this.boundingSphere.radius = Math.sqrt( maxRadiusSq ); + + if ( isNaN( this.boundingSphere.radius ) ) { + + console.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this ); + + } + + } + + } + + /** + * Calculates and adds a tangent attribute to this geometry. + * + * The computation is only supported for indexed geometries and if position, normal, and uv attributes + * are defined. When using a tangent space normal map, prefer the MikkTSpace algorithm provided by + * {@link BufferGeometryUtils#computeMikkTSpaceTangents} instead. + */ + computeTangents() { + + const index = this.index; + const attributes = this.attributes; + + // based on http://www.terathon.com/code/tangent.html + // (per vertex tangents) + + if ( index === null || + attributes.position === undefined || + attributes.normal === undefined || + attributes.uv === undefined ) { + + console.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' ); + return; + + } + + const positionAttribute = attributes.position; + const normalAttribute = attributes.normal; + const uvAttribute = attributes.uv; + + if ( this.hasAttribute( 'tangent' ) === false ) { + + this.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * positionAttribute.count ), 4 ) ); + + } + + const tangentAttribute = this.getAttribute( 'tangent' ); + + const tan1 = [], tan2 = []; + + for ( let i = 0; i < positionAttribute.count; i ++ ) { + + tan1[ i ] = new Vector3(); + tan2[ i ] = new Vector3(); + + } + + const vA = new Vector3(), + vB = new Vector3(), + vC = new Vector3(), + + uvA = new Vector2(), + uvB = new Vector2(), + uvC = new Vector2(), + + sdir = new Vector3(), + tdir = new Vector3(); + + function handleTriangle( a, b, c ) { + + vA.fromBufferAttribute( positionAttribute, a ); + vB.fromBufferAttribute( positionAttribute, b ); + vC.fromBufferAttribute( positionAttribute, c ); + + uvA.fromBufferAttribute( uvAttribute, a ); + uvB.fromBufferAttribute( uvAttribute, b ); + uvC.fromBufferAttribute( uvAttribute, c ); + + vB.sub( vA ); + vC.sub( vA ); + + uvB.sub( uvA ); + uvC.sub( uvA ); + + const r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y ); + + // silently ignore degenerate uv triangles having coincident or colinear vertices + + if ( ! isFinite( r ) ) return; + + sdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r ); + tdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r ); + + tan1[ a ].add( sdir ); + tan1[ b ].add( sdir ); + tan1[ c ].add( sdir ); + + tan2[ a ].add( tdir ); + tan2[ b ].add( tdir ); + tan2[ c ].add( tdir ); + + } + + let groups = this.groups; + + if ( groups.length === 0 ) { + + groups = [ { + start: 0, + count: index.count + } ]; + + } + + for ( let i = 0, il = groups.length; i < il; ++ i ) { + + const group = groups[ i ]; + + const start = group.start; + const count = group.count; + + for ( let j = start, jl = start + count; j < jl; j += 3 ) { + + handleTriangle( + index.getX( j + 0 ), + index.getX( j + 1 ), + index.getX( j + 2 ) + ); + + } + + } + + const tmp = new Vector3(), tmp2 = new Vector3(); + const n = new Vector3(), n2 = new Vector3(); + + function handleVertex( v ) { + + n.fromBufferAttribute( normalAttribute, v ); + n2.copy( n ); + + const t = tan1[ v ]; + + // Gram-Schmidt orthogonalize + + tmp.copy( t ); + tmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize(); + + // Calculate handedness + + tmp2.crossVectors( n2, t ); + const test = tmp2.dot( tan2[ v ] ); + const w = ( test < 0.0 ) ? -1 : 1.0; + + tangentAttribute.setXYZW( v, tmp.x, tmp.y, tmp.z, w ); + + } + + for ( let i = 0, il = groups.length; i < il; ++ i ) { + + const group = groups[ i ]; + + const start = group.start; + const count = group.count; + + for ( let j = start, jl = start + count; j < jl; j += 3 ) { + + handleVertex( index.getX( j + 0 ) ); + handleVertex( index.getX( j + 1 ) ); + handleVertex( index.getX( j + 2 ) ); + + } + + } + + } + + /** + * Computes vertex normals for the given vertex data. For indexed geometries, the method sets + * each vertex normal to be the average of the face normals of the faces that share that vertex. + * For non-indexed geometries, vertices are not shared, and the method sets each vertex normal + * to be the same as the face normal. + */ + computeVertexNormals() { + + const index = this.index; + const positionAttribute = this.getAttribute( 'position' ); + + if ( positionAttribute !== undefined ) { + + let normalAttribute = this.getAttribute( 'normal' ); + + if ( normalAttribute === undefined ) { + + normalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 ); + this.setAttribute( 'normal', normalAttribute ); + + } else { + + // reset existing normals to zero + + for ( let i = 0, il = normalAttribute.count; i < il; i ++ ) { + + normalAttribute.setXYZ( i, 0, 0, 0 ); + + } + + } + + const pA = new Vector3(), pB = new Vector3(), pC = new Vector3(); + const nA = new Vector3(), nB = new Vector3(), nC = new Vector3(); + const cb = new Vector3(), ab = new Vector3(); + + // indexed elements + + if ( index ) { + + for ( let i = 0, il = index.count; i < il; i += 3 ) { + + const vA = index.getX( i + 0 ); + const vB = index.getX( i + 1 ); + const vC = index.getX( i + 2 ); + + pA.fromBufferAttribute( positionAttribute, vA ); + pB.fromBufferAttribute( positionAttribute, vB ); + pC.fromBufferAttribute( positionAttribute, vC ); + + cb.subVectors( pC, pB ); + ab.subVectors( pA, pB ); + cb.cross( ab ); + + nA.fromBufferAttribute( normalAttribute, vA ); + nB.fromBufferAttribute( normalAttribute, vB ); + nC.fromBufferAttribute( normalAttribute, vC ); + + nA.add( cb ); + nB.add( cb ); + nC.add( cb ); + + normalAttribute.setXYZ( vA, nA.x, nA.y, nA.z ); + normalAttribute.setXYZ( vB, nB.x, nB.y, nB.z ); + normalAttribute.setXYZ( vC, nC.x, nC.y, nC.z ); + + } + + } else { + + // non-indexed elements (unconnected triangle soup) + + for ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) { + + pA.fromBufferAttribute( positionAttribute, i + 0 ); + pB.fromBufferAttribute( positionAttribute, i + 1 ); + pC.fromBufferAttribute( positionAttribute, i + 2 ); + + cb.subVectors( pC, pB ); + ab.subVectors( pA, pB ); + cb.cross( ab ); + + normalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z ); + normalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z ); + normalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z ); + + } + + } + + this.normalizeNormals(); + + normalAttribute.needsUpdate = true; + + } + + } + + /** + * Ensures every normal vector in a geometry will have a magnitude of `1`. This will + * correct lighting on the geometry surfaces. + */ + normalizeNormals() { + + const normals = this.attributes.normal; + + for ( let i = 0, il = normals.count; i < il; i ++ ) { + + _vector$8.fromBufferAttribute( normals, i ); + + _vector$8.normalize(); + + normals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z ); + + } + + } + + /** + * Return a new non-index version of this indexed geometry. If the geometry + * is already non-indexed, the method is a NOOP. + * + * @return {BufferGeometry} The non-indexed version of this indexed geometry. + */ + toNonIndexed() { + + function convertBufferAttribute( attribute, indices ) { + + const array = attribute.array; + const itemSize = attribute.itemSize; + const normalized = attribute.normalized; + + const array2 = new array.constructor( indices.length * itemSize ); + + let index = 0, index2 = 0; + + for ( let i = 0, l = indices.length; i < l; i ++ ) { + + if ( attribute.isInterleavedBufferAttribute ) { + + index = indices[ i ] * attribute.data.stride + attribute.offset; + + } else { + + index = indices[ i ] * itemSize; + + } + + for ( let j = 0; j < itemSize; j ++ ) { + + array2[ index2 ++ ] = array[ index ++ ]; + + } + + } + + return new BufferAttribute( array2, itemSize, normalized ); + + } + + // + + if ( this.index === null ) { + + console.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' ); + return this; + + } + + const geometry2 = new BufferGeometry(); + + const indices = this.index.array; + const attributes = this.attributes; + + // attributes + + for ( const name in attributes ) { + + const attribute = attributes[ name ]; + + const newAttribute = convertBufferAttribute( attribute, indices ); + + geometry2.setAttribute( name, newAttribute ); + + } + + // morph attributes + + const morphAttributes = this.morphAttributes; + + for ( const name in morphAttributes ) { + + const morphArray = []; + const morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes + + for ( let i = 0, il = morphAttribute.length; i < il; i ++ ) { + + const attribute = morphAttribute[ i ]; + + const newAttribute = convertBufferAttribute( attribute, indices ); + + morphArray.push( newAttribute ); + + } + + geometry2.morphAttributes[ name ] = morphArray; + + } + + geometry2.morphTargetsRelative = this.morphTargetsRelative; + + // groups + + const groups = this.groups; + + for ( let i = 0, l = groups.length; i < l; i ++ ) { + + const group = groups[ i ]; + geometry2.addGroup( group.start, group.count, group.materialIndex ); + + } + + return geometry2; + + } + + /** + * Serializes the geometry into JSON. + * + * @return {Object} A JSON object representing the serialized geometry. + */ + toJSON() { + + const data = { + metadata: { + version: 4.6, + type: 'BufferGeometry', + generator: 'BufferGeometry.toJSON' + } + }; + + // standard BufferGeometry serialization + + data.uuid = this.uuid; + data.type = this.type; + if ( this.name !== '' ) data.name = this.name; + if ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData; + + if ( this.parameters !== undefined ) { + + const parameters = this.parameters; + + for ( const key in parameters ) { + + if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ]; + + } + + return data; + + } + + // for simplicity the code assumes attributes are not shared across geometries, see #15811 + + data.data = { attributes: {} }; + + const index = this.index; + + if ( index !== null ) { + + data.data.index = { + type: index.array.constructor.name, + array: Array.prototype.slice.call( index.array ) + }; + + } + + const attributes = this.attributes; + + for ( const key in attributes ) { + + const attribute = attributes[ key ]; + + data.data.attributes[ key ] = attribute.toJSON( data.data ); + + } + + const morphAttributes = {}; + let hasMorphAttributes = false; + + for ( const key in this.morphAttributes ) { + + const attributeArray = this.morphAttributes[ key ]; + + const array = []; + + for ( let i = 0, il = attributeArray.length; i < il; i ++ ) { + + const attribute = attributeArray[ i ]; + + array.push( attribute.toJSON( data.data ) ); + + } + + if ( array.length > 0 ) { + + morphAttributes[ key ] = array; + + hasMorphAttributes = true; + + } + + } + + if ( hasMorphAttributes ) { + + data.data.morphAttributes = morphAttributes; + data.data.morphTargetsRelative = this.morphTargetsRelative; + + } + + const groups = this.groups; + + if ( groups.length > 0 ) { + + data.data.groups = JSON.parse( JSON.stringify( groups ) ); + + } + + const boundingSphere = this.boundingSphere; + + if ( boundingSphere !== null ) { + + data.data.boundingSphere = { + center: boundingSphere.center.toArray(), + radius: boundingSphere.radius + }; + + } + + return data; + + } + + /** + * Returns a new geometry with copied values from this instance. + * + * @return {BufferGeometry} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + + /** + * Copies the values of the given geometry to this instance. + * + * @param {BufferGeometry} source - The geometry to copy. + * @return {BufferGeometry} A reference to this instance. + */ + copy( source ) { + + // reset + + this.index = null; + this.attributes = {}; + this.morphAttributes = {}; + this.groups = []; + this.boundingBox = null; + this.boundingSphere = null; + + // used for storing cloned, shared data + + const data = {}; + + // name + + this.name = source.name; + + // index + + const index = source.index; + + if ( index !== null ) { + + this.setIndex( index.clone() ); + + } + + // attributes + + const attributes = source.attributes; + + for ( const name in attributes ) { + + const attribute = attributes[ name ]; + this.setAttribute( name, attribute.clone( data ) ); + + } + + // morph attributes + + const morphAttributes = source.morphAttributes; + + for ( const name in morphAttributes ) { + + const array = []; + const morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes + + for ( let i = 0, l = morphAttribute.length; i < l; i ++ ) { + + array.push( morphAttribute[ i ].clone( data ) ); + + } + + this.morphAttributes[ name ] = array; + + } + + this.morphTargetsRelative = source.morphTargetsRelative; + + // groups + + const groups = source.groups; + + for ( let i = 0, l = groups.length; i < l; i ++ ) { + + const group = groups[ i ]; + this.addGroup( group.start, group.count, group.materialIndex ); + + } + + // bounding box + + const boundingBox = source.boundingBox; + + if ( boundingBox !== null ) { + + this.boundingBox = boundingBox.clone(); + + } + + // bounding sphere + + const boundingSphere = source.boundingSphere; + + if ( boundingSphere !== null ) { + + this.boundingSphere = boundingSphere.clone(); + + } + + // draw range + + this.drawRange.start = source.drawRange.start; + this.drawRange.count = source.drawRange.count; + + // user data + + this.userData = source.userData; + + return this; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + * + * @fires BufferGeometry#dispose + */ + dispose() { + + this.dispatchEvent( { type: 'dispose' } ); + + } + +} + +const _inverseMatrix$3 = /*@__PURE__*/ new Matrix4(); +const _ray$3 = /*@__PURE__*/ new Ray(); +const _sphere$6 = /*@__PURE__*/ new Sphere(); +const _sphereHitAt = /*@__PURE__*/ new Vector3(); + +const _vA$1 = /*@__PURE__*/ new Vector3(); +const _vB$1 = /*@__PURE__*/ new Vector3(); +const _vC$1 = /*@__PURE__*/ new Vector3(); + +const _tempA = /*@__PURE__*/ new Vector3(); +const _morphA = /*@__PURE__*/ new Vector3(); + +const _intersectionPoint = /*@__PURE__*/ new Vector3(); +const _intersectionPointWorld = /*@__PURE__*/ new Vector3(); + +/** + * Class representing triangular polygon mesh based objects. + * + * ```js + * const geometry = new THREE.BoxGeometry( 1, 1, 1 ); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); + * const mesh = new THREE.Mesh( geometry, material ); + * scene.add( mesh ); + * ``` + * + * @augments Object3D + */ +class Mesh extends Object3D { + + /** + * Constructs a new mesh. + * + * @param {BufferGeometry} [geometry] - The mesh geometry. + * @param {Material|Array} [material] - The mesh material. + */ + constructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isMesh = true; + + this.type = 'Mesh'; + + /** + * The mesh geometry. + * + * @type {BufferGeometry} + */ + this.geometry = geometry; + + /** + * The mesh material. + * + * @type {Material|Array} + * @default MeshBasicMaterial + */ + this.material = material; + + /** + * A dictionary representing the morph targets in the geometry. The key is the + * morph targets name, the value its attribute index. This member is `undefined` + * by default and only set when morph targets are detected in the geometry. + * + * @type {Object|undefined} + * @default undefined + */ + this.morphTargetDictionary = undefined; + + /** + * An array of weights typically in the range `[0,1]` that specify how much of the morph + * is applied. This member is `undefined` by default and only set when morph targets are + * detected in the geometry. + * + * @type {Array|undefined} + * @default undefined + */ + this.morphTargetInfluences = undefined; + + this.updateMorphTargets(); + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + if ( source.morphTargetInfluences !== undefined ) { + + this.morphTargetInfluences = source.morphTargetInfluences.slice(); + + } + + if ( source.morphTargetDictionary !== undefined ) { + + this.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary ); + + } + + this.material = Array.isArray( source.material ) ? source.material.slice() : source.material; + this.geometry = source.geometry; + + return this; + + } + + /** + * Sets the values of {@link Mesh#morphTargetDictionary} and {@link Mesh#morphTargetInfluences} + * to make sure existing morph targets can influence this 3D object. + */ + updateMorphTargets() { + + const geometry = this.geometry; + + const morphAttributes = geometry.morphAttributes; + const keys = Object.keys( morphAttributes ); + + if ( keys.length > 0 ) { + + const morphAttribute = morphAttributes[ keys[ 0 ] ]; + + if ( morphAttribute !== undefined ) { + + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + + for ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) { + + const name = morphAttribute[ m ].name || String( m ); + + this.morphTargetInfluences.push( 0 ); + this.morphTargetDictionary[ name ] = m; + + } + + } + + } + + } + + /** + * Returns the local-space position of the vertex at the given index, taking into + * account the current animation state of both morph targets and skinning. + * + * @param {number} index - The vertex index. + * @param {Vector3} target - The target object that is used to store the method's result. + * @return {Vector3} The vertex position in local space. + */ + getVertexPosition( index, target ) { + + const geometry = this.geometry; + const position = geometry.attributes.position; + const morphPosition = geometry.morphAttributes.position; + const morphTargetsRelative = geometry.morphTargetsRelative; + + target.fromBufferAttribute( position, index ); + + const morphInfluences = this.morphTargetInfluences; + + if ( morphPosition && morphInfluences ) { + + _morphA.set( 0, 0, 0 ); + + for ( let i = 0, il = morphPosition.length; i < il; i ++ ) { + + const influence = morphInfluences[ i ]; + const morphAttribute = morphPosition[ i ]; + + if ( influence === 0 ) continue; + + _tempA.fromBufferAttribute( morphAttribute, index ); + + if ( morphTargetsRelative ) { + + _morphA.addScaledVector( _tempA, influence ); + + } else { + + _morphA.addScaledVector( _tempA.sub( target ), influence ); + + } + + } + + target.add( _morphA ); + + } + + return target; + + } + + /** + * Computes intersection points between a casted ray and this line. + * + * @param {Raycaster} raycaster - The raycaster. + * @param {Array} intersects - The target array that holds the intersection points. + */ + raycast( raycaster, intersects ) { + + const geometry = this.geometry; + const material = this.material; + const matrixWorld = this.matrixWorld; + + if ( material === undefined ) return; + + // test with bounding sphere in world space + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + + _sphere$6.copy( geometry.boundingSphere ); + _sphere$6.applyMatrix4( matrixWorld ); + + // check distance from ray origin to bounding sphere + + _ray$3.copy( raycaster.ray ).recast( raycaster.near ); + + if ( _sphere$6.containsPoint( _ray$3.origin ) === false ) { + + if ( _ray$3.intersectSphere( _sphere$6, _sphereHitAt ) === null ) return; + + if ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return; + + } + + // convert ray to local space of mesh + + _inverseMatrix$3.copy( matrixWorld ).invert(); + _ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 ); + + // test with bounding box in local space + + if ( geometry.boundingBox !== null ) { + + if ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return; + + } + + // test for intersections with geometry + + this._computeIntersections( raycaster, intersects, _ray$3 ); + + } + + _computeIntersections( raycaster, intersects, rayLocalSpace ) { + + let intersection; + + const geometry = this.geometry; + const material = this.material; + + const index = geometry.index; + const position = geometry.attributes.position; + const uv = geometry.attributes.uv; + const uv1 = geometry.attributes.uv1; + const normal = geometry.attributes.normal; + const groups = geometry.groups; + const drawRange = geometry.drawRange; + + if ( index !== null ) { + + // indexed buffer geometry + + if ( Array.isArray( material ) ) { + + for ( let i = 0, il = groups.length; i < il; i ++ ) { + + const group = groups[ i ]; + const groupMaterial = material[ group.materialIndex ]; + + const start = Math.max( group.start, drawRange.start ); + const end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) ); + + for ( let j = start, jl = end; j < jl; j += 3 ) { + + const a = index.getX( j ); + const b = index.getX( j + 1 ); + const c = index.getX( j + 2 ); + + intersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics + intersection.face.materialIndex = group.materialIndex; + intersects.push( intersection ); + + } + + } + + } + + } else { + + const start = Math.max( 0, drawRange.start ); + const end = Math.min( index.count, ( drawRange.start + drawRange.count ) ); + + for ( let i = start, il = end; i < il; i += 3 ) { + + const a = index.getX( i ); + const b = index.getX( i + 1 ); + const c = index.getX( i + 2 ); + + intersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics + intersects.push( intersection ); + + } + + } + + } + + } else if ( position !== undefined ) { + + // non-indexed buffer geometry + + if ( Array.isArray( material ) ) { + + for ( let i = 0, il = groups.length; i < il; i ++ ) { + + const group = groups[ i ]; + const groupMaterial = material[ group.materialIndex ]; + + const start = Math.max( group.start, drawRange.start ); + const end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) ); + + for ( let j = start, jl = end; j < jl; j += 3 ) { + + const a = j; + const b = j + 1; + const c = j + 2; + + intersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics + intersection.face.materialIndex = group.materialIndex; + intersects.push( intersection ); + + } + + } + + } + + } else { + + const start = Math.max( 0, drawRange.start ); + const end = Math.min( position.count, ( drawRange.start + drawRange.count ) ); + + for ( let i = start, il = end; i < il; i += 3 ) { + + const a = i; + const b = i + 1; + const c = i + 2; + + intersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics + intersects.push( intersection ); + + } + + } + + } + + } + + } + +} + +function checkIntersection$1( object, material, raycaster, ray, pA, pB, pC, point ) { + + let intersect; + + if ( material.side === BackSide ) { + + intersect = ray.intersectTriangle( pC, pB, pA, true, point ); + + } else { + + intersect = ray.intersectTriangle( pA, pB, pC, ( material.side === FrontSide ), point ); + + } + + if ( intersect === null ) return null; + + _intersectionPointWorld.copy( point ); + _intersectionPointWorld.applyMatrix4( object.matrixWorld ); + + const distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld ); + + if ( distance < raycaster.near || distance > raycaster.far ) return null; + + return { + distance: distance, + point: _intersectionPointWorld.clone(), + object: object + }; + +} + +function checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, normal, a, b, c ) { + + object.getVertexPosition( a, _vA$1 ); + object.getVertexPosition( b, _vB$1 ); + object.getVertexPosition( c, _vC$1 ); + + const intersection = checkIntersection$1( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint ); + + if ( intersection ) { + + const barycoord = new Vector3(); + Triangle.getBarycoord( _intersectionPoint, _vA$1, _vB$1, _vC$1, barycoord ); + + if ( uv ) { + + intersection.uv = Triangle.getInterpolatedAttribute( uv, a, b, c, barycoord, new Vector2() ); + + } + + if ( uv1 ) { + + intersection.uv1 = Triangle.getInterpolatedAttribute( uv1, a, b, c, barycoord, new Vector2() ); + + } + + if ( normal ) { + + intersection.normal = Triangle.getInterpolatedAttribute( normal, a, b, c, barycoord, new Vector3() ); + + if ( intersection.normal.dot( ray.direction ) > 0 ) { + + intersection.normal.multiplyScalar( -1 ); + + } + + } + + const face = { + a: a, + b: b, + c: c, + normal: new Vector3(), + materialIndex: 0 + }; + + Triangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal ); + + intersection.face = face; + intersection.barycoord = barycoord; + + } + + return intersection; + +} + +/** + * A geometry class for a rectangular cuboid with a given width, height, and depth. + * On creation, the cuboid is centred on the origin, with each edge parallel to one + * of the axes. + * + * ```js + * const geometry = new THREE.BoxGeometry( 1, 1, 1 ); + * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); + * const cube = new THREE.Mesh( geometry, material ); + * scene.add( cube ); + * ``` + * + * @augments BufferGeometry + */ +class BoxGeometry extends BufferGeometry { + + /** + * Constructs a new box geometry. + * + * @param {number} [width=1] - The width. That is, the length of the edges parallel to the X axis. + * @param {number} [height=1] - The height. That is, the length of the edges parallel to the Y axis. + * @param {number} [depth=1] - The depth. That is, the length of the edges parallel to the Z axis. + * @param {number} [widthSegments=1] - Number of segmented rectangular faces along the width of the sides. + * @param {number} [heightSegments=1] - Number of segmented rectangular faces along the height of the sides. + * @param {number} [depthSegments=1] - Number of segmented rectangular faces along the depth of the sides. + */ + constructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) { + + super(); + + this.type = 'BoxGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + width: width, + height: height, + depth: depth, + widthSegments: widthSegments, + heightSegments: heightSegments, + depthSegments: depthSegments + }; + + const scope = this; + + // segments + + widthSegments = Math.floor( widthSegments ); + heightSegments = Math.floor( heightSegments ); + depthSegments = Math.floor( depthSegments ); + + // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + + // helper variables + + let numberOfVertices = 0; + let groupStart = 0; + + // build each side of the box geometry + + buildPlane( 'z', 'y', 'x', -1, -1, depth, height, width, depthSegments, heightSegments, 0 ); // px + buildPlane( 'z', 'y', 'x', 1, -1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx + buildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py + buildPlane( 'x', 'z', 'y', 1, -1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny + buildPlane( 'x', 'y', 'z', 1, -1, width, height, depth, widthSegments, heightSegments, 4 ); // pz + buildPlane( 'x', 'y', 'z', -1, -1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz + + // build geometry + + this.setIndex( indices ); + this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + function buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) { + + const segmentWidth = width / gridX; + const segmentHeight = height / gridY; + + const widthHalf = width / 2; + const heightHalf = height / 2; + const depthHalf = depth / 2; + + const gridX1 = gridX + 1; + const gridY1 = gridY + 1; + + let vertexCounter = 0; + let groupCount = 0; + + const vector = new Vector3(); + + // generate vertices, normals and uvs + + for ( let iy = 0; iy < gridY1; iy ++ ) { + + const y = iy * segmentHeight - heightHalf; + + for ( let ix = 0; ix < gridX1; ix ++ ) { + + const x = ix * segmentWidth - widthHalf; + + // set values to correct vector component + + vector[ u ] = x * udir; + vector[ v ] = y * vdir; + vector[ w ] = depthHalf; + + // now apply vector to vertex buffer + + vertices.push( vector.x, vector.y, vector.z ); + + // set values to correct vector component + + vector[ u ] = 0; + vector[ v ] = 0; + vector[ w ] = depth > 0 ? 1 : -1; + + // now apply vector to normal buffer + + normals.push( vector.x, vector.y, vector.z ); + + // uvs + + uvs.push( ix / gridX ); + uvs.push( 1 - ( iy / gridY ) ); + + // counters + + vertexCounter += 1; + + } + + } + + // indices + + // 1. you need three indices to draw a single face + // 2. a single segment consists of two faces + // 3. so we need to generate six (2*3) indices per segment + + for ( let iy = 0; iy < gridY; iy ++ ) { + + for ( let ix = 0; ix < gridX; ix ++ ) { + + const a = numberOfVertices + ix + gridX1 * iy; + const b = numberOfVertices + ix + gridX1 * ( iy + 1 ); + const c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 ); + const d = numberOfVertices + ( ix + 1 ) + gridX1 * iy; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + // increase counter + + groupCount += 6; + + } + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, materialIndex ); + + // calculate new start value for groups + + groupStart += groupCount; + + // update total number of vertices + + numberOfVertices += vertexCounter; + + } + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {BoxGeometry} A new instance. + */ + static fromJSON( data ) { + + return new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments ); + + } + +} + +// Uniform Utilities + +function cloneUniforms( src ) { + + const dst = {}; + + for ( const u in src ) { + + dst[ u ] = {}; + + for ( const p in src[ u ] ) { + + const property = src[ u ][ p ]; + + if ( property && ( property.isColor || + property.isMatrix3 || property.isMatrix4 || + property.isVector2 || property.isVector3 || property.isVector4 || + property.isTexture || property.isQuaternion ) ) { + + if ( property.isRenderTargetTexture ) { + + console.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' ); + dst[ u ][ p ] = null; + + } else { + + dst[ u ][ p ] = property.clone(); + + } + + } else if ( Array.isArray( property ) ) { + + dst[ u ][ p ] = property.slice(); + + } else { + + dst[ u ][ p ] = property; + + } + + } + + } + + return dst; + +} + +function mergeUniforms( uniforms ) { + + const merged = {}; + + for ( let u = 0; u < uniforms.length; u ++ ) { + + const tmp = cloneUniforms( uniforms[ u ] ); + + for ( const p in tmp ) { + + merged[ p ] = tmp[ p ]; + + } + + } + + return merged; + +} + +function cloneUniformsGroups( src ) { + + const dst = []; + + for ( let u = 0; u < src.length; u ++ ) { + + dst.push( src[ u ].clone() ); + + } + + return dst; + +} + +function getUnlitUniformColorSpace( renderer ) { + + const currentRenderTarget = renderer.getRenderTarget(); + + if ( currentRenderTarget === null ) { + + // https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398 + return renderer.outputColorSpace; + + } + + // https://github.com/mrdoob/three.js/issues/27868 + if ( currentRenderTarget.isXRRenderTarget === true ) { + + return currentRenderTarget.texture.colorSpace; + + } + + return ColorManagement.workingColorSpace; + +} + +// Legacy + +const UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms }; + +var default_vertex = "void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}"; + +var default_fragment = "void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}"; + +/** + * A material rendered with custom shaders. A shader is a small program written in GLSL. + * that runs on the GPU. You may want to use a custom shader if you need to implement an + * effect not included with any of the built-in materials. + * + * There are the following notes to bear in mind when using a `ShaderMaterial`: + * + * - `ShaderMaterial` can only be used with {@link WebGLRenderer}. + * - Built in attributes and uniforms are passed to the shaders along with your code. If + * you don't want that, use {@link RawShaderMaterial} instead. + * - You can use the directive `#pragma unroll_loop_start` and `#pragma unroll_loop_end` + * in order to unroll a `for` loop in GLSL by the shader preprocessor. The directive has + * to be placed right above the loop. The loop formatting has to correspond to a defined standard. + * - The loop has to be [normalized]{@link https://en.wikipedia.org/wiki/Normalized_loop}. + * - The loop variable has to be *i*. + * - The value `UNROLLED_LOOP_INDEX` will be replaced with the explicitly + * value of *i* for the given iteration and can be used in preprocessor + * statements. + * + * ```js + * const material = new THREE.ShaderMaterial( { + * uniforms: { + * time: { value: 1.0 }, + * resolution: { value: new THREE.Vector2() } + * }, + * vertexShader: document.getElementById( 'vertexShader' ).textContent, + * fragmentShader: document.getElementById( 'fragmentShader' ).textContent + * } ); + * ``` + * + * @augments Material + */ +class ShaderMaterial extends Material { + + /** + * Constructs a new shader material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isShaderMaterial = true; + + this.type = 'ShaderMaterial'; + + /** + * Defines custom constants using `#define` directives within the GLSL code + * for both the vertex shader and the fragment shader; each key/value pair + * yields another directive. + * ```js + * defines: { + * FOO: 15, + * BAR: true + * } + * ``` + * Yields the lines: + * ``` + * #define FOO 15 + * #define BAR true + * ``` + * + * @type {Object} + */ + this.defines = {}; + + /** + * An object of the form: + * ```js + * { + * "uniform1": { value: 1.0 }, + * "uniform2": { value: 2 } + * } + * ``` + * specifying the uniforms to be passed to the shader code; keys are uniform + * names, values are definitions of the form + * ``` + * { + * value: 1.0 + * } + * ``` + * where `value` is the value of the uniform. Names must match the name of + * the uniform, as defined in the GLSL code. Note that uniforms are refreshed + * on every frame, so updating the value of the uniform will immediately + * update the value available to the GLSL code. + * + * @type {Object} + */ + this.uniforms = {}; + + /** + * An array holding uniforms groups for configuring UBOs. + * + * @type {Array} + */ + this.uniformsGroups = []; + + /** + * Vertex shader GLSL code. This is the actual code for the shader. + * + * @type {string} + */ + this.vertexShader = default_vertex; + + /** + * Fragment shader GLSL code. This is the actual code for the shader. + * + * @type {string} + */ + this.fragmentShader = default_fragment; + + /** + * Controls line thickness or lines. + * + * WebGL and WebGPU ignore this setting and always render line primitives with a + * width of one pixel. + * + * @type {number} + * @default 1 + */ + this.linewidth = 1; + + /** + * Renders the geometry as a wireframe. + * + * @type {boolean} + * @default false + */ + this.wireframe = false; + + /** + * Controls the thickness of the wireframe. + * + * WebGL and WebGPU ignore this property and always render + * 1 pixel wide lines. + * + * @type {number} + * @default 1 + */ + this.wireframeLinewidth = 1; + + /** + * Define whether the material color is affected by global fog settings; `true` + * to pass fog uniforms to the shader. + * + * @type {boolean} + * @default false + */ + this.fog = false; + + /** + * Defines whether this material uses lighting; `true` to pass uniform data + * related to lighting to this shader. + * + * @type {boolean} + * @default false + */ + this.lights = false; + + /** + * Defines whether this material supports clipping; `true` to let the renderer + * pass the clippingPlanes uniform. + * + * @type {boolean} + * @default false + */ + this.clipping = false; + + /** + * Overwritten and set to `true` by default. + * + * @type {boolean} + * @default true + */ + this.forceSinglePass = true; + + /** + * This object allows to enable certain WebGL 2 extensions. + * + * - clipCullDistance: set to `true` to use vertex shader clipping + * - multiDraw: set to `true` to use vertex shader multi_draw / enable gl_DrawID + * + * @type {{clipCullDistance:false,multiDraw:false}} + */ + this.extensions = { + clipCullDistance: false, // set to use vertex shader clipping + multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID + }; + + /** + * When the rendered geometry doesn't include these attributes but the + * material does, these default values will be passed to the shaders. This + * avoids errors when buffer data is missing. + * + * - color: [ 1, 1, 1 ] + * - uv: [ 0, 0 ] + * - uv1: [ 0, 0 ] + * + * @type {Object} + */ + this.defaultAttributeValues = { + 'color': [ 1, 1, 1 ], + 'uv': [ 0, 0 ], + 'uv1': [ 0, 0 ] + }; + + /** + * If set, this calls [gl.bindAttribLocation]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindAttribLocation} + * to bind a generic vertex index to an attribute variable. + * + * @type {string|undefined} + * @default undefined + */ + this.index0AttributeName = undefined; + + /** + * Can be used to force a uniform update while changing uniforms in + * {@link Object3D#onBeforeRender}. + * + * @type {boolean} + * @default false + */ + this.uniformsNeedUpdate = false; + + /** + * Defines the GLSL version of custom shader code. + * + * @type {?(GLSL1|GLSL3)} + * @default null + */ + this.glslVersion = null; + + if ( parameters !== undefined ) { + + this.setValues( parameters ); + + } + + } + + copy( source ) { + + super.copy( source ); + + this.fragmentShader = source.fragmentShader; + this.vertexShader = source.vertexShader; + + this.uniforms = cloneUniforms( source.uniforms ); + this.uniformsGroups = cloneUniformsGroups( source.uniformsGroups ); + + this.defines = Object.assign( {}, source.defines ); + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + this.fog = source.fog; + this.lights = source.lights; + this.clipping = source.clipping; + + this.extensions = Object.assign( {}, source.extensions ); + + this.glslVersion = source.glslVersion; + + return this; + + } + + toJSON( meta ) { + + const data = super.toJSON( meta ); + + data.glslVersion = this.glslVersion; + data.uniforms = {}; + + for ( const name in this.uniforms ) { + + const uniform = this.uniforms[ name ]; + const value = uniform.value; + + if ( value && value.isTexture ) { + + data.uniforms[ name ] = { + type: 't', + value: value.toJSON( meta ).uuid + }; + + } else if ( value && value.isColor ) { + + data.uniforms[ name ] = { + type: 'c', + value: value.getHex() + }; + + } else if ( value && value.isVector2 ) { + + data.uniforms[ name ] = { + type: 'v2', + value: value.toArray() + }; + + } else if ( value && value.isVector3 ) { + + data.uniforms[ name ] = { + type: 'v3', + value: value.toArray() + }; + + } else if ( value && value.isVector4 ) { + + data.uniforms[ name ] = { + type: 'v4', + value: value.toArray() + }; + + } else if ( value && value.isMatrix3 ) { + + data.uniforms[ name ] = { + type: 'm3', + value: value.toArray() + }; + + } else if ( value && value.isMatrix4 ) { + + data.uniforms[ name ] = { + type: 'm4', + value: value.toArray() + }; + + } else { + + data.uniforms[ name ] = { + value: value + }; + + // note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far + + } + + } + + if ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines; + + data.vertexShader = this.vertexShader; + data.fragmentShader = this.fragmentShader; + + data.lights = this.lights; + data.clipping = this.clipping; + + const extensions = {}; + + for ( const key in this.extensions ) { + + if ( this.extensions[ key ] === true ) extensions[ key ] = true; + + } + + if ( Object.keys( extensions ).length > 0 ) data.extensions = extensions; + + return data; + + } + +} + +/** + * Abstract base class for cameras. This class should always be inherited + * when you build a new camera. + * + * @abstract + * @augments Object3D + */ +class Camera extends Object3D { + + /** + * Constructs a new camera. + */ + constructor() { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isCamera = true; + + this.type = 'Camera'; + + /** + * The inverse of the camera's world matrix. + * + * @type {Matrix4} + */ + this.matrixWorldInverse = new Matrix4(); + + /** + * The camera's projection matrix. + * + * @type {Matrix4} + */ + this.projectionMatrix = new Matrix4(); + + /** + * The inverse of the camera's projection matrix. + * + * @type {Matrix4} + */ + this.projectionMatrixInverse = new Matrix4(); + + /** + * The coordinate system in which the camera is used. + * + * @type {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} + */ + this.coordinateSystem = WebGLCoordinateSystem; + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + this.matrixWorldInverse.copy( source.matrixWorldInverse ); + + this.projectionMatrix.copy( source.projectionMatrix ); + this.projectionMatrixInverse.copy( source.projectionMatrixInverse ); + + this.coordinateSystem = source.coordinateSystem; + + return this; + + } + + /** + * Returns a vector representing the ("look") direction of the 3D object in world space. + * + * This method is overwritten since cameras have a different forward vector compared to other + * 3D objects. A camera looks down its local, negative z-axis by default. + * + * @param {Vector3} target - The target vector the result is stored to. + * @return {Vector3} The 3D object's direction in world space. + */ + getWorldDirection( target ) { + + return super.getWorldDirection( target ).negate(); + + } + + updateMatrixWorld( force ) { + + super.updateMatrixWorld( force ); + + this.matrixWorldInverse.copy( this.matrixWorld ).invert(); + + } + + updateWorldMatrix( updateParents, updateChildren ) { + + super.updateWorldMatrix( updateParents, updateChildren ); + + this.matrixWorldInverse.copy( this.matrixWorld ).invert(); + + } + + clone() { + + return new this.constructor().copy( this ); + + } + +} + +const _v3$1 = /*@__PURE__*/ new Vector3(); +const _minTarget = /*@__PURE__*/ new Vector2(); +const _maxTarget = /*@__PURE__*/ new Vector2(); + +/** + * Camera that uses [perspective projection]{@link https://en.wikipedia.org/wiki/Perspective_(graphical)}. + * + * This projection mode is designed to mimic the way the human eye sees. It + * is the most common projection mode used for rendering a 3D scene. + * + * ```js + * const camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 ); + * scene.add( camera ); + * ``` + * + * @augments Camera + */ +class PerspectiveCamera extends Camera { + + /** + * Constructs a new perspective camera. + * + * @param {number} [fov=50] - The vertical field of view. + * @param {number} [aspect=1] - The aspect ratio. + * @param {number} [near=0.1] - The camera's near plane. + * @param {number} [far=2000] - The camera's far plane. + */ + constructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isPerspectiveCamera = true; + + this.type = 'PerspectiveCamera'; + + /** + * The vertical field of view, from bottom to top of view, + * in degrees. + * + * @type {number} + * @default 50 + */ + this.fov = fov; + + /** + * The zoom factor of the camera. + * + * @type {number} + * @default 1 + */ + this.zoom = 1; + + /** + * The camera's near plane. The valid range is greater than `0` + * and less than the current value of {@link PerspectiveCamera#far}. + * + * Note that, unlike for the {@link OrthographicCamera}, `0` is not a + * valid value for a perspective camera's near plane. + * + * @type {number} + * @default 0.1 + */ + this.near = near; + + /** + * The camera's far plane. Must be greater than the + * current value of {@link PerspectiveCamera#near}. + * + * @type {number} + * @default 2000 + */ + this.far = far; + + /** + * Object distance used for stereoscopy and depth-of-field effects. This + * parameter does not influence the projection matrix unless a + * {@link StereoCamera} is being used. + * + * @type {number} + * @default 10 + */ + this.focus = 10; + + /** + * The aspect ratio, usually the canvas width / canvas height. + * + * @type {number} + * @default 1 + */ + this.aspect = aspect; + + /** + * Represents the frustum window specification. This property should not be edited + * directly but via {@link PerspectiveCamera#setViewOffset} and {@link PerspectiveCamera#clearViewOffset}. + * + * @type {?Object} + * @default null + */ + this.view = null; + + /** + * Film size used for the larger axis. Default is `35` (millimeters). This + * parameter does not influence the projection matrix unless {@link PerspectiveCamera#filmOffset} + * is set to a nonzero value. + * + * @type {number} + * @default 35 + */ + this.filmGauge = 35; + + /** + * Horizontal off-center offset in the same unit as {@link PerspectiveCamera#filmGauge}. + * + * @type {number} + * @default 0 + */ + this.filmOffset = 0; + + this.updateProjectionMatrix(); + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + this.fov = source.fov; + this.zoom = source.zoom; + + this.near = source.near; + this.far = source.far; + this.focus = source.focus; + + this.aspect = source.aspect; + this.view = source.view === null ? null : Object.assign( {}, source.view ); + + this.filmGauge = source.filmGauge; + this.filmOffset = source.filmOffset; + + return this; + + } + + /** + * Sets the FOV by focal length in respect to the current {@link PerspectiveCamera#filmGauge}. + * + * The default film gauge is 35, so that the focal length can be specified for + * a 35mm (full frame) camera. + * + * @param {number} focalLength - Values for focal length and film gauge must have the same unit. + */ + setFocalLength( focalLength ) { + + /** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */ + const vExtentSlope = 0.5 * this.getFilmHeight() / focalLength; + + this.fov = RAD2DEG * 2 * Math.atan( vExtentSlope ); + this.updateProjectionMatrix(); + + } + + /** + * Returns the focal length from the current {@link PerspectiveCamera#fov} and + * {@link PerspectiveCamera#filmGauge}. + * + * @return {number} The computed focal length. + */ + getFocalLength() { + + const vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov ); + + return 0.5 * this.getFilmHeight() / vExtentSlope; + + } + + /** + * Returns the current vertical field of view angle in degrees considering {@link PerspectiveCamera#zoom}. + * + * @return {number} The effective FOV. + */ + getEffectiveFOV() { + + return RAD2DEG * 2 * Math.atan( + Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom ); + + } + + /** + * Returns the width of the image on the film. If {@link PerspectiveCamera#aspect} is greater than or + * equal to one (landscape format), the result equals {@link PerspectiveCamera#filmGauge}. + * + * @return {number} The film width. + */ + getFilmWidth() { + + // film not completely covered in portrait format (aspect < 1) + return this.filmGauge * Math.min( this.aspect, 1 ); + + } + + /** + * Returns the height of the image on the film. If {@link PerspectiveCamera#aspect} is greater than or + * equal to one (landscape format), the result equals {@link PerspectiveCamera#filmGauge}. + * + * @return {number} The film width. + */ + getFilmHeight() { + + // film not completely covered in landscape format (aspect > 1) + return this.filmGauge / Math.max( this.aspect, 1 ); + + } + + /** + * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction. + * Sets `minTarget` and `maxTarget` to the coordinates of the lower-left and upper-right corners of the view rectangle. + * + * @param {number} distance - The viewing distance. + * @param {Vector2} minTarget - The lower-left corner of the view rectangle is written into this vector. + * @param {Vector2} maxTarget - The upper-right corner of the view rectangle is written into this vector. + */ + getViewBounds( distance, minTarget, maxTarget ) { + + _v3$1.set( -1, -1, 0.5 ).applyMatrix4( this.projectionMatrixInverse ); + + minTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z ); + + _v3$1.set( 1, 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse ); + + maxTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z ); + + } + + /** + * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction. + * + * @param {number} distance - The viewing distance. + * @param {Vector2} target - The target vector that is used to store result where x is width and y is height. + * @returns {Vector2} The view size. + */ + getViewSize( distance, target ) { + + this.getViewBounds( distance, _minTarget, _maxTarget ); + + return target.subVectors( _maxTarget, _minTarget ); + + } + + /** + * Sets an offset in a larger frustum. This is useful for multi-window or + * multi-monitor/multi-machine setups. + * + * For example, if you have 3x2 monitors and each monitor is 1920x1080 and + * the monitors are in grid like this + *``` + * +---+---+---+ + * | A | B | C | + * +---+---+---+ + * | D | E | F | + * +---+---+---+ + *``` + * then for each monitor you would call it like this: + *```js + * const w = 1920; + * const h = 1080; + * const fullWidth = w * 3; + * const fullHeight = h * 2; + * + * // --A-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); + * // --B-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); + * // --C-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); + * // --D-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); + * // --E-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); + * // --F-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); + * ``` + * + * Note there is no reason monitors have to be the same size or in a grid. + * + * @param {number} fullWidth - The full width of multiview setup. + * @param {number} fullHeight - The full height of multiview setup. + * @param {number} x - The horizontal offset of the subcamera. + * @param {number} y - The vertical offset of the subcamera. + * @param {number} width - The width of subcamera. + * @param {number} height - The height of subcamera. + */ + setViewOffset( fullWidth, fullHeight, x, y, width, height ) { + + this.aspect = fullWidth / fullHeight; + + if ( this.view === null ) { + + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + + } + + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + + this.updateProjectionMatrix(); + + } + + /** + * Removes the view offset from the projection matrix. + */ + clearViewOffset() { + + if ( this.view !== null ) { + + this.view.enabled = false; + + } + + this.updateProjectionMatrix(); + + } + + /** + * Updates the camera's projection matrix. Must be called after any change of + * camera properties. + */ + updateProjectionMatrix() { + + const near = this.near; + let top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom; + let height = 2 * top; + let width = this.aspect * height; + let left = -0.5 * width; + const view = this.view; + + if ( this.view !== null && this.view.enabled ) { + + const fullWidth = view.fullWidth, + fullHeight = view.fullHeight; + + left += view.offsetX * width / fullWidth; + top -= view.offsetY * height / fullHeight; + width *= view.width / fullWidth; + height *= view.height / fullHeight; + + } + + const skew = this.filmOffset; + if ( skew !== 0 ) left += near * skew / this.getFilmWidth(); + + this.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem ); + + this.projectionMatrixInverse.copy( this.projectionMatrix ).invert(); + + } + + toJSON( meta ) { + + const data = super.toJSON( meta ); + + data.object.fov = this.fov; + data.object.zoom = this.zoom; + + data.object.near = this.near; + data.object.far = this.far; + data.object.focus = this.focus; + + data.object.aspect = this.aspect; + + if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); + + data.object.filmGauge = this.filmGauge; + data.object.filmOffset = this.filmOffset; + + return data; + + } + +} + +const fov = -90; // negative fov is not an error +const aspect = 1; + +/** + * A special type of camera that is positioned in 3D space to render its surroundings into a + * cube render target. The render target can then be used as an environment map for rendering + * realtime reflections in your scene. + * + * ```js + * // Create cube render target + * const cubeRenderTarget = new THREE.WebGLCubeRenderTarget( 256, { generateMipmaps: true, minFilter: THREE.LinearMipmapLinearFilter } ); + * + * // Create cube camera + * const cubeCamera = new THREE.CubeCamera( 1, 100000, cubeRenderTarget ); + * scene.add( cubeCamera ); + * + * // Create car + * const chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeRenderTarget.texture } ); + * const car = new THREE.Mesh( carGeometry, chromeMaterial ); + * scene.add( car ); + * + * // Update the render target cube + * car.visible = false; + * cubeCamera.position.copy( car.position ); + * cubeCamera.update( renderer, scene ); + * + * // Render the scene + * car.visible = true; + * renderer.render( scene, camera ); + * ``` + * + * @augments Object3D + */ +class CubeCamera extends Object3D { + + /** + * Constructs a new cube camera. + * + * @param {number} near - The camera's near plane. + * @param {number} far - The camera's far plane. + * @param {WebGLCubeRenderTarget} renderTarget - The cube render target. + */ + constructor( near, far, renderTarget ) { + + super(); + + this.type = 'CubeCamera'; + + /** + * A reference to the cube render target. + * + * @type {WebGLCubeRenderTarget} + */ + this.renderTarget = renderTarget; + + /** + * The current active coordinate system. + * + * @type {?(WebGLCoordinateSystem|WebGPUCoordinateSystem)} + * @default null + */ + this.coordinateSystem = null; + + /** + * The current active mipmap level + * + * @type {number} + * @default 0 + */ + this.activeMipmapLevel = 0; + + const cameraPX = new PerspectiveCamera( fov, aspect, near, far ); + cameraPX.layers = this.layers; + this.add( cameraPX ); + + const cameraNX = new PerspectiveCamera( fov, aspect, near, far ); + cameraNX.layers = this.layers; + this.add( cameraNX ); + + const cameraPY = new PerspectiveCamera( fov, aspect, near, far ); + cameraPY.layers = this.layers; + this.add( cameraPY ); + + const cameraNY = new PerspectiveCamera( fov, aspect, near, far ); + cameraNY.layers = this.layers; + this.add( cameraNY ); + + const cameraPZ = new PerspectiveCamera( fov, aspect, near, far ); + cameraPZ.layers = this.layers; + this.add( cameraPZ ); + + const cameraNZ = new PerspectiveCamera( fov, aspect, near, far ); + cameraNZ.layers = this.layers; + this.add( cameraNZ ); + + } + + /** + * Must be called when the coordinate system of the cube camera is changed. + */ + updateCoordinateSystem() { + + const coordinateSystem = this.coordinateSystem; + + const cameras = this.children.concat(); + + const [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras; + + for ( const camera of cameras ) this.remove( camera ); + + if ( coordinateSystem === WebGLCoordinateSystem ) { + + cameraPX.up.set( 0, 1, 0 ); + cameraPX.lookAt( 1, 0, 0 ); + + cameraNX.up.set( 0, 1, 0 ); + cameraNX.lookAt( -1, 0, 0 ); + + cameraPY.up.set( 0, 0, -1 ); + cameraPY.lookAt( 0, 1, 0 ); + + cameraNY.up.set( 0, 0, 1 ); + cameraNY.lookAt( 0, -1, 0 ); + + cameraPZ.up.set( 0, 1, 0 ); + cameraPZ.lookAt( 0, 0, 1 ); + + cameraNZ.up.set( 0, 1, 0 ); + cameraNZ.lookAt( 0, 0, -1 ); + + } else if ( coordinateSystem === WebGPUCoordinateSystem ) { + + cameraPX.up.set( 0, -1, 0 ); + cameraPX.lookAt( -1, 0, 0 ); + + cameraNX.up.set( 0, -1, 0 ); + cameraNX.lookAt( 1, 0, 0 ); + + cameraPY.up.set( 0, 0, 1 ); + cameraPY.lookAt( 0, 1, 0 ); + + cameraNY.up.set( 0, 0, -1 ); + cameraNY.lookAt( 0, -1, 0 ); + + cameraPZ.up.set( 0, -1, 0 ); + cameraPZ.lookAt( 0, 0, 1 ); + + cameraNZ.up.set( 0, -1, 0 ); + cameraNZ.lookAt( 0, 0, -1 ); + + } else { + + throw new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem ); + + } + + for ( const camera of cameras ) { + + this.add( camera ); + + camera.updateMatrixWorld(); + + } + + } + + /** + * Calling this method will render the given scene with the given renderer + * into the cube render target of the camera. + * + * @param {(Renderer|WebGLRenderer)} renderer - The renderer. + * @param {Scene} scene - The scene to render. + */ + update( renderer, scene ) { + + if ( this.parent === null ) this.updateMatrixWorld(); + + const { renderTarget, activeMipmapLevel } = this; + + if ( this.coordinateSystem !== renderer.coordinateSystem ) { + + this.coordinateSystem = renderer.coordinateSystem; + + this.updateCoordinateSystem(); + + } + + const [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children; + + const currentRenderTarget = renderer.getRenderTarget(); + const currentActiveCubeFace = renderer.getActiveCubeFace(); + const currentActiveMipmapLevel = renderer.getActiveMipmapLevel(); + + const currentXrEnabled = renderer.xr.enabled; + + renderer.xr.enabled = false; + + const generateMipmaps = renderTarget.texture.generateMipmaps; + + renderTarget.texture.generateMipmaps = false; + + renderer.setRenderTarget( renderTarget, 0, activeMipmapLevel ); + renderer.render( scene, cameraPX ); + + renderer.setRenderTarget( renderTarget, 1, activeMipmapLevel ); + renderer.render( scene, cameraNX ); + + renderer.setRenderTarget( renderTarget, 2, activeMipmapLevel ); + renderer.render( scene, cameraPY ); + + renderer.setRenderTarget( renderTarget, 3, activeMipmapLevel ); + renderer.render( scene, cameraNY ); + + renderer.setRenderTarget( renderTarget, 4, activeMipmapLevel ); + renderer.render( scene, cameraPZ ); + + // mipmaps are generated during the last call of render() + // at this point, all sides of the cube render target are defined + + renderTarget.texture.generateMipmaps = generateMipmaps; + + renderer.setRenderTarget( renderTarget, 5, activeMipmapLevel ); + renderer.render( scene, cameraNZ ); + + renderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel ); + + renderer.xr.enabled = currentXrEnabled; + + renderTarget.texture.needsPMREMUpdate = true; + + } + +} + +/** + * Creates a cube texture made up of six images. + * + * ```js + * const loader = new THREE.CubeTextureLoader(); + * loader.setPath( 'textures/cube/pisa/' ); + * + * const textureCube = loader.load( [ + * 'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png' + * ] ); + * + * const material = new THREE.MeshBasicMaterial( { color: 0xffffff, envMap: textureCube } ); + * ``` + * + * @augments Texture + */ +class CubeTexture extends Texture { + + /** + * Constructs a new cube texture. + * + * @param {Array} [images=[]] - An array holding a image for each side of a cube. + * @param {number} [mapping=CubeReflectionMapping] - The texture mapping. + * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value. + * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value. + * @param {number} [magFilter=LinearFilter] - The mag filter value. + * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value. + * @param {number} [format=RGBAFormat] - The texture format. + * @param {number} [type=UnsignedByteType] - The texture type. + * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value. + * @param {string} [colorSpace=NoColorSpace] - The color space value. + */ + constructor( images = [], mapping = CubeReflectionMapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) { + + super( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isCubeTexture = true; + + /** + * If set to `true`, the texture is flipped along the vertical axis when + * uploaded to the GPU. + * + * Overwritten and set to `false` by default. + * + * @type {boolean} + * @default false + */ + this.flipY = false; + + } + + /** + * Alias for {@link CubeTexture#image}. + * + * @type {Array} + */ + get images() { + + return this.image; + + } + + set images( value ) { + + this.image = value; + + } + +} + +/** + * A cube render target used in context of {@link WebGLRenderer}. + * + * @augments WebGLRenderTarget + */ +class WebGLCubeRenderTarget extends WebGLRenderTarget { + + /** + * Constructs a new cube render target. + * + * @param {number} [size=1] - The size of the render target. + * @param {RenderTarget~Options} [options] - The configuration object. + */ + constructor( size = 1, options = {} ) { + + super( size, size, options ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isWebGLCubeRenderTarget = true; + + const image = { width: size, height: size, depth: 1 }; + const images = [ image, image, image, image, image, image ]; + + /** + * Overwritten with a different texture type. + * + * @type {DataArrayTexture} + */ + this.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace ); + + // By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js) + // in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words, + // in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly. + + // three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped + // and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture + // as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures). + + this.texture.isRenderTargetTexture = true; + + this.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false; + this.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter; + + } + + /** + * Converts the given equirectangular texture to a cube map. + * + * @param {WebGLRenderer} renderer - The renderer. + * @param {Texture} texture - The equirectangular texture. + * @return {WebGLCubeRenderTarget} A reference to this cube render target. + */ + fromEquirectangularTexture( renderer, texture ) { + + this.texture.type = texture.type; + this.texture.colorSpace = texture.colorSpace; + + this.texture.generateMipmaps = texture.generateMipmaps; + this.texture.minFilter = texture.minFilter; + this.texture.magFilter = texture.magFilter; + + const shader = { + + uniforms: { + tEquirect: { value: null }, + }, + + vertexShader: /* glsl */` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `, + + fragmentShader: /* glsl */` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + ` + }; + + const geometry = new BoxGeometry( 5, 5, 5 ); + + const material = new ShaderMaterial( { + + name: 'CubemapFromEquirect', + + uniforms: cloneUniforms( shader.uniforms ), + vertexShader: shader.vertexShader, + fragmentShader: shader.fragmentShader, + side: BackSide, + blending: NoBlending + + } ); + + material.uniforms.tEquirect.value = texture; + + const mesh = new Mesh( geometry, material ); + + const currentMinFilter = texture.minFilter; + + // Avoid blurred poles + if ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter; + + const camera = new CubeCamera( 1, 10, this ); + camera.update( renderer, mesh ); + + texture.minFilter = currentMinFilter; + + mesh.geometry.dispose(); + mesh.material.dispose(); + + return this; + + } + + /** + * Clears this cube render target. + * + * @param {WebGLRenderer} renderer - The renderer. + * @param {boolean} [color=true] - Whether the color buffer should be cleared or not. + * @param {boolean} [depth=true] - Whether the depth buffer should be cleared or not. + * @param {boolean} [stencil=true] - Whether the stencil buffer should be cleared or not. + */ + clear( renderer, color = true, depth = true, stencil = true ) { + + const currentRenderTarget = renderer.getRenderTarget(); + + for ( let i = 0; i < 6; i ++ ) { + + renderer.setRenderTarget( this, i ); + + renderer.clear( color, depth, stencil ); + + } + + renderer.setRenderTarget( currentRenderTarget ); + + } + +} + +/** + * This is almost identical to an {@link Object3D}. Its purpose is to + * make working with groups of objects syntactically clearer. + * + * ```js + * // Create a group and add the two cubes. + * // These cubes can now be rotated / scaled etc as a group. + * const group = new THREE.Group(); + * + * group.add( meshA ); + * group.add( meshB ); + * + * scene.add( group ); + * ``` + * + * @augments Object3D + */ +class Group extends Object3D { + + constructor() { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isGroup = true; + + this.type = 'Group'; + + } + +} + +const _moveEvent = { type: 'move' }; + +/** + * Class for representing a XR controller with its + * different coordinate systems. + * + * @private + */ +class WebXRController { + + /** + * Constructs a new XR controller. + */ + constructor() { + + /** + * A group representing the target ray space + * of the XR controller. + * + * @private + * @type {?Group} + * @default null + */ + this._targetRay = null; + + /** + * A group representing the grip space + * of the XR controller. + * + * @private + * @type {?Group} + * @default null + */ + this._grip = null; + + /** + * A group representing the hand space + * of the XR controller. + * + * @private + * @type {?Group} + * @default null + */ + this._hand = null; + + } + + /** + * Returns a group representing the hand space of the XR controller. + * + * @return {Group} A group representing the hand space of the XR controller. + */ + getHandSpace() { + + if ( this._hand === null ) { + + this._hand = new Group(); + this._hand.matrixAutoUpdate = false; + this._hand.visible = false; + + this._hand.joints = {}; + this._hand.inputState = { pinching: false }; + + } + + return this._hand; + + } + + /** + * Returns a group representing the target ray space of the XR controller. + * + * @return {Group} A group representing the target ray space of the XR controller. + */ + getTargetRaySpace() { + + if ( this._targetRay === null ) { + + this._targetRay = new Group(); + this._targetRay.matrixAutoUpdate = false; + this._targetRay.visible = false; + this._targetRay.hasLinearVelocity = false; + this._targetRay.linearVelocity = new Vector3(); + this._targetRay.hasAngularVelocity = false; + this._targetRay.angularVelocity = new Vector3(); + + } + + return this._targetRay; + + } + + /** + * Returns a group representing the grip space of the XR controller. + * + * @return {Group} A group representing the grip space of the XR controller. + */ + getGripSpace() { + + if ( this._grip === null ) { + + this._grip = new Group(); + this._grip.matrixAutoUpdate = false; + this._grip.visible = false; + this._grip.hasLinearVelocity = false; + this._grip.linearVelocity = new Vector3(); + this._grip.hasAngularVelocity = false; + this._grip.angularVelocity = new Vector3(); + + } + + return this._grip; + + } + + /** + * Dispatches the given event to the groups representing + * the different coordinate spaces of the XR controller. + * + * @param {Object} event - The event to dispatch. + * @return {WebXRController} A reference to this instance. + */ + dispatchEvent( event ) { + + if ( this._targetRay !== null ) { + + this._targetRay.dispatchEvent( event ); + + } + + if ( this._grip !== null ) { + + this._grip.dispatchEvent( event ); + + } + + if ( this._hand !== null ) { + + this._hand.dispatchEvent( event ); + + } + + return this; + + } + + /** + * Connects the controller with the given XR input source. + * + * @param {XRInputSource} inputSource - The input source. + * @return {WebXRController} A reference to this instance. + */ + connect( inputSource ) { + + if ( inputSource && inputSource.hand ) { + + const hand = this._hand; + + if ( hand ) { + + for ( const inputjoint of inputSource.hand.values() ) { + + // Initialize hand with joints when connected + this._getHandJoint( hand, inputjoint ); + + } + + } + + } + + this.dispatchEvent( { type: 'connected', data: inputSource } ); + + return this; + + } + + /** + * Disconnects the controller from the given XR input source. + * + * @param {XRInputSource} inputSource - The input source. + * @return {WebXRController} A reference to this instance. + */ + disconnect( inputSource ) { + + this.dispatchEvent( { type: 'disconnected', data: inputSource } ); + + if ( this._targetRay !== null ) { + + this._targetRay.visible = false; + + } + + if ( this._grip !== null ) { + + this._grip.visible = false; + + } + + if ( this._hand !== null ) { + + this._hand.visible = false; + + } + + return this; + + } + + /** + * Updates the controller with the given input source, XR frame and reference space. + * This updates the transformations of the groups that represent the different + * coordinate systems of the controller. + * + * @param {XRInputSource} inputSource - The input source. + * @param {XRFrame} frame - The XR frame. + * @param {XRReferenceSpace} referenceSpace - The reference space. + * @return {WebXRController} A reference to this instance. + */ + update( inputSource, frame, referenceSpace ) { + + let inputPose = null; + let gripPose = null; + let handPose = null; + + const targetRay = this._targetRay; + const grip = this._grip; + const hand = this._hand; + + if ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) { + + if ( hand && inputSource.hand ) { + + handPose = true; + + for ( const inputjoint of inputSource.hand.values() ) { + + // Update the joints groups with the XRJoint poses + const jointPose = frame.getJointPose( inputjoint, referenceSpace ); + + // The transform of this joint will be updated with the joint pose on each frame + const joint = this._getHandJoint( hand, inputjoint ); + + if ( jointPose !== null ) { + + joint.matrix.fromArray( jointPose.transform.matrix ); + joint.matrix.decompose( joint.position, joint.rotation, joint.scale ); + joint.matrixWorldNeedsUpdate = true; + joint.jointRadius = jointPose.radius; + + } + + joint.visible = jointPose !== null; + + } + + // Custom events + + // Check pinchz + const indexTip = hand.joints[ 'index-finger-tip' ]; + const thumbTip = hand.joints[ 'thumb-tip' ]; + const distance = indexTip.position.distanceTo( thumbTip.position ); + + const distanceToPinch = 0.02; + const threshold = 0.005; + + if ( hand.inputState.pinching && distance > distanceToPinch + threshold ) { + + hand.inputState.pinching = false; + this.dispatchEvent( { + type: 'pinchend', + handedness: inputSource.handedness, + target: this + } ); + + } else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) { + + hand.inputState.pinching = true; + this.dispatchEvent( { + type: 'pinchstart', + handedness: inputSource.handedness, + target: this + } ); + + } + + } else { + + if ( grip !== null && inputSource.gripSpace ) { + + gripPose = frame.getPose( inputSource.gripSpace, referenceSpace ); + + if ( gripPose !== null ) { + + grip.matrix.fromArray( gripPose.transform.matrix ); + grip.matrix.decompose( grip.position, grip.rotation, grip.scale ); + grip.matrixWorldNeedsUpdate = true; + + if ( gripPose.linearVelocity ) { + + grip.hasLinearVelocity = true; + grip.linearVelocity.copy( gripPose.linearVelocity ); + + } else { + + grip.hasLinearVelocity = false; + + } + + if ( gripPose.angularVelocity ) { + + grip.hasAngularVelocity = true; + grip.angularVelocity.copy( gripPose.angularVelocity ); + + } else { + + grip.hasAngularVelocity = false; + + } + + } + + } + + } + + if ( targetRay !== null ) { + + inputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace ); + + // Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it + if ( inputPose === null && gripPose !== null ) { + + inputPose = gripPose; + + } + + if ( inputPose !== null ) { + + targetRay.matrix.fromArray( inputPose.transform.matrix ); + targetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale ); + targetRay.matrixWorldNeedsUpdate = true; + + if ( inputPose.linearVelocity ) { + + targetRay.hasLinearVelocity = true; + targetRay.linearVelocity.copy( inputPose.linearVelocity ); + + } else { + + targetRay.hasLinearVelocity = false; + + } + + if ( inputPose.angularVelocity ) { + + targetRay.hasAngularVelocity = true; + targetRay.angularVelocity.copy( inputPose.angularVelocity ); + + } else { + + targetRay.hasAngularVelocity = false; + + } + + this.dispatchEvent( _moveEvent ); + + } + + } + + + } + + if ( targetRay !== null ) { + + targetRay.visible = ( inputPose !== null ); + + } + + if ( grip !== null ) { + + grip.visible = ( gripPose !== null ); + + } + + if ( hand !== null ) { + + hand.visible = ( handPose !== null ); + + } + + return this; + + } + + /** + * Returns a group representing the hand joint for the given input joint. + * + * @private + * @param {Group} hand - The group representing the hand space. + * @param {XRHandJoint} inputjoint - The XR frame. + * @return {Group} A group representing the hand joint for the given input joint. + */ + _getHandJoint( hand, inputjoint ) { + + if ( hand.joints[ inputjoint.jointName ] === undefined ) { + + const joint = new Group(); + joint.matrixAutoUpdate = false; + joint.visible = false; + hand.joints[ inputjoint.jointName ] = joint; + + hand.add( joint ); + + } + + return hand.joints[ inputjoint.jointName ]; + + } + +} + +/** + * This class can be used to define an exponential squared fog, + * which gives a clear view near the camera and a faster than exponentially + * densening fog farther from the camera. + * + * ```js + * const scene = new THREE.Scene(); + * scene.fog = new THREE.FogExp2( 0xcccccc, 0.002 ); + * ``` + */ +class FogExp2 { + + /** + * Constructs a new fog. + * + * @param {number|Color} color - The fog's color. + * @param {number} [density=0.00025] - Defines how fast the fog will grow dense. + */ + constructor( color, density = 0.00025 ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isFogExp2 = true; + + /** + * The name of the fog. + * + * @type {string} + */ + this.name = ''; + + /** + * The fog's color. + * + * @type {Color} + */ + this.color = new Color( color ); + + /** + * Defines how fast the fog will grow dense. + * + * @type {number} + * @default 0.00025 + */ + this.density = density; + + } + + /** + * Returns a new fog with copied values from this instance. + * + * @return {FogExp2} A clone of this instance. + */ + clone() { + + return new FogExp2( this.color, this.density ); + + } + + /** + * Serializes the fog into JSON. + * + * @param {?(Object|string)} meta - An optional value holding meta information about the serialization. + * @return {Object} A JSON object representing the serialized fog + */ + toJSON( /* meta */ ) { + + return { + type: 'FogExp2', + name: this.name, + color: this.color.getHex(), + density: this.density + }; + + } + +} + +/** + * This class can be used to define a linear fog that grows linearly denser + * with the distance. + * + * ```js + * const scene = new THREE.Scene(); + * scene.fog = new THREE.Fog( 0xcccccc, 10, 15 ); + * ``` + */ +class Fog { + + /** + * Constructs a new fog. + * + * @param {number|Color} color - The fog's color. + * @param {number} [near=1] - The minimum distance to start applying fog. + * @param {number} [far=1000] - The maximum distance at which fog stops being calculated and applied. + */ + constructor( color, near = 1, far = 1000 ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isFog = true; + + /** + * The name of the fog. + * + * @type {string} + */ + this.name = ''; + + /** + * The fog's color. + * + * @type {Color} + */ + this.color = new Color( color ); + + /** + * The minimum distance to start applying fog. Objects that are less than + * `near` units from the active camera won't be affected by fog. + * + * @type {number} + * @default 1 + */ + this.near = near; + + /** + * The maximum distance at which fog stops being calculated and applied. + * Objects that are more than `far` units away from the active camera won't + * be affected by fog. + * + * @type {number} + * @default 1000 + */ + this.far = far; + + } + + /** + * Returns a new fog with copied values from this instance. + * + * @return {Fog} A clone of this instance. + */ + clone() { + + return new Fog( this.color, this.near, this.far ); + + } + + /** + * Serializes the fog into JSON. + * + * @param {?(Object|string)} meta - An optional value holding meta information about the serialization. + * @return {Object} A JSON object representing the serialized fog + */ + toJSON( /* meta */ ) { + + return { + type: 'Fog', + name: this.name, + color: this.color.getHex(), + near: this.near, + far: this.far + }; + + } + +} + +/** + * Scenes allow you to set up what is to be rendered and where by three.js. + * This is where you place 3D objects like meshes, lines or lights. + * + * @augments Object3D + */ +class Scene extends Object3D { + + /** + * Constructs a new scene. + */ + constructor() { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isScene = true; + + this.type = 'Scene'; + + /** + * Defines the background of the scene. Valid inputs are: + * + * - A color for defining a uniform colored background. + * - A texture for defining a (flat) textured background. + * - Cube textures or equirectangular textures for defining a skybox. + * + * @type {?(Color|Texture)} + * @default null + */ + this.background = null; + + /** + * Sets the environment map for all physical materials in the scene. However, + * it's not possible to overwrite an existing texture assigned to the `envMap` + * material property. + * + * @type {?Texture} + * @default null + */ + this.environment = null; + + /** + * A fog instance defining the type of fog that affects everything + * rendered in the scene. + * + * @type {?(Fog|FogExp2)} + * @default null + */ + this.fog = null; + + /** + * Sets the blurriness of the background. Only influences environment maps + * assigned to {@link Scene#background}. Valid input is a float between `0` + * and `1`. + * + * @type {number} + * @default 0 + */ + this.backgroundBlurriness = 0; + + /** + * Attenuates the color of the background. Only applies to background textures. + * + * @type {number} + * @default 1 + */ + this.backgroundIntensity = 1; + + /** + * The rotation of the background in radians. Only influences environment maps + * assigned to {@link Scene#background}. + * + * @type {Euler} + * @default (0,0,0) + */ + this.backgroundRotation = new Euler(); + + /** + * Attenuates the color of the environment. Only influences environment maps + * assigned to {@link Scene#environment}. + * + * @type {number} + * @default 1 + */ + this.environmentIntensity = 1; + + /** + * The rotation of the environment map in radians. Only influences physical materials + * in the scene when {@link Scene#environment} is used. + * + * @type {Euler} + * @default (0,0,0) + */ + this.environmentRotation = new Euler(); + + /** + * Forces everything in the scene to be rendered with the defined material. It is possible + * to exclude materials from override by setting {@link Material#allowOverride} to `false`. + * + * @type {?Material} + * @default null + */ + this.overrideMaterial = null; + + if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) { + + __THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); + + } + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + if ( source.background !== null ) this.background = source.background.clone(); + if ( source.environment !== null ) this.environment = source.environment.clone(); + if ( source.fog !== null ) this.fog = source.fog.clone(); + + this.backgroundBlurriness = source.backgroundBlurriness; + this.backgroundIntensity = source.backgroundIntensity; + this.backgroundRotation.copy( source.backgroundRotation ); + + this.environmentIntensity = source.environmentIntensity; + this.environmentRotation.copy( source.environmentRotation ); + + if ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone(); + + this.matrixAutoUpdate = source.matrixAutoUpdate; + + return this; + + } + + toJSON( meta ) { + + const data = super.toJSON( meta ); + + if ( this.fog !== null ) data.object.fog = this.fog.toJSON(); + + if ( this.backgroundBlurriness > 0 ) data.object.backgroundBlurriness = this.backgroundBlurriness; + if ( this.backgroundIntensity !== 1 ) data.object.backgroundIntensity = this.backgroundIntensity; + data.object.backgroundRotation = this.backgroundRotation.toArray(); + + if ( this.environmentIntensity !== 1 ) data.object.environmentIntensity = this.environmentIntensity; + data.object.environmentRotation = this.environmentRotation.toArray(); + + return data; + + } + +} + +/** + * "Interleaved" means that multiple attributes, possibly of different types, + * (e.g., position, normal, uv, color) are packed into a single array buffer. + * + * An introduction into interleaved arrays can be found here: [Interleaved array basics]{@link https://blog.tojicode.com/2011/05/interleaved-array-basics.html} + */ +class InterleavedBuffer { + + /** + * Constructs a new interleaved buffer. + * + * @param {TypedArray} array - A typed array with a shared buffer storing attribute data. + * @param {number} stride - The number of typed-array elements per vertex. + */ + constructor( array, stride ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isInterleavedBuffer = true; + + /** + * A typed array with a shared buffer storing attribute data. + * + * @type {TypedArray} + */ + this.array = array; + + /** + * The number of typed-array elements per vertex. + * + * @type {number} + */ + this.stride = stride; + + /** + * The total number of elements in the array + * + * @type {number} + * @readonly + */ + this.count = array !== undefined ? array.length / stride : 0; + + /** + * Defines the intended usage pattern of the data store for optimization purposes. + * + * Note: After the initial use of a buffer, its usage cannot be changed. Instead, + * instantiate a new one and set the desired usage before the next render. + * + * @type {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} + * @default StaticDrawUsage + */ + this.usage = StaticDrawUsage; + + /** + * This can be used to only update some components of stored vectors (for example, just the + * component related to color). Use the `addUpdateRange()` function to add ranges to this array. + * + * @type {Array} + */ + this.updateRanges = []; + + /** + * A version number, incremented every time the `needsUpdate` is set to `true`. + * + * @type {number} + */ + this.version = 0; + + /** + * The UUID of the interleaved buffer. + * + * @type {string} + * @readonly + */ + this.uuid = generateUUID(); + + } + + /** + * A callback function that is executed after the renderer has transferred the attribute array + * data to the GPU. + */ + onUploadCallback() {} + + /** + * Flag to indicate that this attribute has changed and should be re-sent to + * the GPU. Set this to `true` when you modify the value of the array. + * + * @type {number} + * @default false + * @param {boolean} value + */ + set needsUpdate( value ) { + + if ( value === true ) this.version ++; + + } + + /** + * Sets the usage of this interleaved buffer. + * + * @param {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} value - The usage to set. + * @return {InterleavedBuffer} A reference to this interleaved buffer. + */ + setUsage( value ) { + + this.usage = value; + + return this; + + } + + /** + * Adds a range of data in the data array to be updated on the GPU. + * + * @param {number} start - Position at which to start update. + * @param {number} count - The number of components to update. + */ + addUpdateRange( start, count ) { + + this.updateRanges.push( { start, count } ); + + } + + /** + * Clears the update ranges. + */ + clearUpdateRanges() { + + this.updateRanges.length = 0; + + } + + /** + * Copies the values of the given interleaved buffer to this instance. + * + * @param {InterleavedBuffer} source - The interleaved buffer to copy. + * @return {InterleavedBuffer} A reference to this instance. + */ + copy( source ) { + + this.array = new source.array.constructor( source.array ); + this.count = source.count; + this.stride = source.stride; + this.usage = source.usage; + + return this; + + } + + /** + * Copies a vector from the given interleaved buffer to this one. The start + * and destination position in the attribute buffers are represented by the + * given indices. + * + * @param {number} index1 - The destination index into this interleaved buffer. + * @param {InterleavedBuffer} interleavedBuffer - The interleaved buffer to copy from. + * @param {number} index2 - The source index into the given interleaved buffer. + * @return {InterleavedBuffer} A reference to this instance. + */ + copyAt( index1, interleavedBuffer, index2 ) { + + index1 *= this.stride; + index2 *= interleavedBuffer.stride; + + for ( let i = 0, l = this.stride; i < l; i ++ ) { + + this.array[ index1 + i ] = interleavedBuffer.array[ index2 + i ]; + + } + + return this; + + } + + /** + * Sets the given array data in the interleaved buffer. + * + * @param {(TypedArray|Array)} value - The array data to set. + * @param {number} [offset=0] - The offset in this interleaved buffer's array. + * @return {InterleavedBuffer} A reference to this instance. + */ + set( value, offset = 0 ) { + + this.array.set( value, offset ); + + return this; + + } + + /** + * Returns a new interleaved buffer with copied values from this instance. + * + * @param {Object} [data] - An object with shared array buffers that allows to retain shared structures. + * @return {InterleavedBuffer} A clone of this instance. + */ + clone( data ) { + + if ( data.arrayBuffers === undefined ) { + + data.arrayBuffers = {}; + + } + + if ( this.array.buffer._uuid === undefined ) { + + this.array.buffer._uuid = generateUUID(); + + } + + if ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) { + + data.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer; + + } + + const array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] ); + + const ib = new this.constructor( array, this.stride ); + ib.setUsage( this.usage ); + + return ib; + + } + + /** + * Sets the given callback function that is executed after the Renderer has transferred + * the array data to the GPU. Can be used to perform clean-up operations after + * the upload when data are not needed anymore on the CPU side. + * + * @param {Function} callback - The `onUpload()` callback. + * @return {InterleavedBuffer} A reference to this instance. + */ + onUpload( callback ) { + + this.onUploadCallback = callback; + + return this; + + } + + /** + * Serializes the interleaved buffer into JSON. + * + * @param {Object} [data] - An optional value holding meta information about the serialization. + * @return {Object} A JSON object representing the serialized interleaved buffer. + */ + toJSON( data ) { + + if ( data.arrayBuffers === undefined ) { + + data.arrayBuffers = {}; + + } + + // generate UUID for array buffer if necessary + + if ( this.array.buffer._uuid === undefined ) { + + this.array.buffer._uuid = generateUUID(); + + } + + if ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) { + + data.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) ); + + } + + // + + return { + uuid: this.uuid, + buffer: this.array.buffer._uuid, + type: this.array.constructor.name, + stride: this.stride + }; + + } + +} + +const _vector$7 = /*@__PURE__*/ new Vector3(); + +/** + * An alternative version of a buffer attribute with interleaved data. Interleaved + * attributes share a common interleaved data storage ({@link InterleavedBuffer}) and refer with + * different offsets into the buffer. + */ +class InterleavedBufferAttribute { + + /** + * Constructs a new interleaved buffer attribute. + * + * @param {InterleavedBuffer} interleavedBuffer - The buffer holding the interleaved data. + * @param {number} itemSize - The item size. + * @param {number} offset - The attribute offset into the buffer. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor( interleavedBuffer, itemSize, offset, normalized = false ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isInterleavedBufferAttribute = true; + + /** + * The name of the buffer attribute. + * + * @type {string} + */ + this.name = ''; + + /** + * The buffer holding the interleaved data. + * + * @type {InterleavedBuffer} + */ + this.data = interleavedBuffer; + + /** + * The item size, see {@link BufferAttribute#itemSize}. + * + * @type {number} + */ + this.itemSize = itemSize; + + /** + * The attribute offset into the buffer. + * + * @type {number} + */ + this.offset = offset; + + /** + * Whether the data are normalized or not, see {@link BufferAttribute#normalized} + * + * @type {InterleavedBuffer} + */ + this.normalized = normalized; + + } + + /** + * The item count of this buffer attribute. + * + * @type {number} + * @readonly + */ + get count() { + + return this.data.count; + + } + + /** + * The array holding the interleaved buffer attribute data. + * + * @type {TypedArray} + */ + get array() { + + return this.data.array; + + } + + /** + * Flag to indicate that this attribute has changed and should be re-sent to + * the GPU. Set this to `true` when you modify the value of the array. + * + * @type {number} + * @default false + * @param {boolean} value + */ + set needsUpdate( value ) { + + this.data.needsUpdate = value; + + } + + /** + * Applies the given 4x4 matrix to the given attribute. Only works with + * item size `3`. + * + * @param {Matrix4} m - The matrix to apply. + * @return {InterleavedBufferAttribute} A reference to this instance. + */ + applyMatrix4( m ) { + + for ( let i = 0, l = this.data.count; i < l; i ++ ) { + + _vector$7.fromBufferAttribute( this, i ); + + _vector$7.applyMatrix4( m ); + + this.setXYZ( i, _vector$7.x, _vector$7.y, _vector$7.z ); + + } + + return this; + + } + + /** + * Applies the given 3x3 normal matrix to the given attribute. Only works with + * item size `3`. + * + * @param {Matrix3} m - The normal matrix to apply. + * @return {InterleavedBufferAttribute} A reference to this instance. + */ + applyNormalMatrix( m ) { + + for ( let i = 0, l = this.count; i < l; i ++ ) { + + _vector$7.fromBufferAttribute( this, i ); + + _vector$7.applyNormalMatrix( m ); + + this.setXYZ( i, _vector$7.x, _vector$7.y, _vector$7.z ); + + } + + return this; + + } + + /** + * Applies the given 4x4 matrix to the given attribute. Only works with + * item size `3` and with direction vectors. + * + * @param {Matrix4} m - The matrix to apply. + * @return {InterleavedBufferAttribute} A reference to this instance. + */ + transformDirection( m ) { + + for ( let i = 0, l = this.count; i < l; i ++ ) { + + _vector$7.fromBufferAttribute( this, i ); + + _vector$7.transformDirection( m ); + + this.setXYZ( i, _vector$7.x, _vector$7.y, _vector$7.z ); + + } + + return this; + + } + + /** + * Returns the given component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} component - The component index. + * @return {number} The returned value. + */ + getComponent( index, component ) { + + let value = this.array[ index * this.data.stride + this.offset + component ]; + + if ( this.normalized ) value = denormalize( value, this.array ); + + return value; + + } + + /** + * Sets the given value to the given component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} component - The component index. + * @param {number} value - The value to set. + * @return {InterleavedBufferAttribute} A reference to this instance. + */ + setComponent( index, component, value ) { + + if ( this.normalized ) value = normalize( value, this.array ); + + this.data.array[ index * this.data.stride + this.offset + component ] = value; + + return this; + + } + + /** + * Sets the x component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} x - The value to set. + * @return {InterleavedBufferAttribute} A reference to this instance. + */ + setX( index, x ) { + + if ( this.normalized ) x = normalize( x, this.array ); + + this.data.array[ index * this.data.stride + this.offset ] = x; + + return this; + + } + + /** + * Sets the y component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} y - The value to set. + * @return {InterleavedBufferAttribute} A reference to this instance. + */ + setY( index, y ) { + + if ( this.normalized ) y = normalize( y, this.array ); + + this.data.array[ index * this.data.stride + this.offset + 1 ] = y; + + return this; + + } + + /** + * Sets the z component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} z - The value to set. + * @return {InterleavedBufferAttribute} A reference to this instance. + */ + setZ( index, z ) { + + if ( this.normalized ) z = normalize( z, this.array ); + + this.data.array[ index * this.data.stride + this.offset + 2 ] = z; + + return this; + + } + + /** + * Sets the w component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} w - The value to set. + * @return {InterleavedBufferAttribute} A reference to this instance. + */ + setW( index, w ) { + + if ( this.normalized ) w = normalize( w, this.array ); + + this.data.array[ index * this.data.stride + this.offset + 3 ] = w; + + return this; + + } + + /** + * Returns the x component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @return {number} The x component. + */ + getX( index ) { + + let x = this.data.array[ index * this.data.stride + this.offset ]; + + if ( this.normalized ) x = denormalize( x, this.array ); + + return x; + + } + + /** + * Returns the y component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @return {number} The y component. + */ + getY( index ) { + + let y = this.data.array[ index * this.data.stride + this.offset + 1 ]; + + if ( this.normalized ) y = denormalize( y, this.array ); + + return y; + + } + + /** + * Returns the z component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @return {number} The z component. + */ + getZ( index ) { + + let z = this.data.array[ index * this.data.stride + this.offset + 2 ]; + + if ( this.normalized ) z = denormalize( z, this.array ); + + return z; + + } + + /** + * Returns the w component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @return {number} The w component. + */ + getW( index ) { + + let w = this.data.array[ index * this.data.stride + this.offset + 3 ]; + + if ( this.normalized ) w = denormalize( w, this.array ); + + return w; + + } + + /** + * Sets the x and y component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} x - The value for the x component to set. + * @param {number} y - The value for the y component to set. + * @return {InterleavedBufferAttribute} A reference to this instance. + */ + setXY( index, x, y ) { + + index = index * this.data.stride + this.offset; + + if ( this.normalized ) { + + x = normalize( x, this.array ); + y = normalize( y, this.array ); + + } + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + + return this; + + } + + /** + * Sets the x, y and z component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} x - The value for the x component to set. + * @param {number} y - The value for the y component to set. + * @param {number} z - The value for the z component to set. + * @return {InterleavedBufferAttribute} A reference to this instance. + */ + setXYZ( index, x, y, z ) { + + index = index * this.data.stride + this.offset; + + if ( this.normalized ) { + + x = normalize( x, this.array ); + y = normalize( y, this.array ); + z = normalize( z, this.array ); + + } + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + this.data.array[ index + 2 ] = z; + + return this; + + } + + /** + * Sets the x, y, z and w component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} x - The value for the x component to set. + * @param {number} y - The value for the y component to set. + * @param {number} z - The value for the z component to set. + * @param {number} w - The value for the w component to set. + * @return {InterleavedBufferAttribute} A reference to this instance. + */ + setXYZW( index, x, y, z, w ) { + + index = index * this.data.stride + this.offset; + + if ( this.normalized ) { + + x = normalize( x, this.array ); + y = normalize( y, this.array ); + z = normalize( z, this.array ); + w = normalize( w, this.array ); + + } + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + this.data.array[ index + 2 ] = z; + this.data.array[ index + 3 ] = w; + + return this; + + } + + /** + * Returns a new buffer attribute with copied values from this instance. + * + * If no parameter is provided, cloning an interleaved buffer attribute will de-interleave buffer data. + * + * @param {Object} [data] - An object with interleaved buffers that allows to retain the interleaved property. + * @return {BufferAttribute|InterleavedBufferAttribute} A clone of this instance. + */ + clone( data ) { + + if ( data === undefined ) { + + console.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' ); + + const array = []; + + for ( let i = 0; i < this.count; i ++ ) { + + const index = i * this.data.stride + this.offset; + + for ( let j = 0; j < this.itemSize; j ++ ) { + + array.push( this.data.array[ index + j ] ); + + } + + } + + return new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized ); + + } else { + + if ( data.interleavedBuffers === undefined ) { + + data.interleavedBuffers = {}; + + } + + if ( data.interleavedBuffers[ this.data.uuid ] === undefined ) { + + data.interleavedBuffers[ this.data.uuid ] = this.data.clone( data ); + + } + + return new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized ); + + } + + } + + /** + * Serializes the buffer attribute into JSON. + * + * If no parameter is provided, cloning an interleaved buffer attribute will de-interleave buffer data. + * + * @param {Object} [data] - An optional value holding meta information about the serialization. + * @return {Object} A JSON object representing the serialized buffer attribute. + */ + toJSON( data ) { + + if ( data === undefined ) { + + console.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' ); + + const array = []; + + for ( let i = 0; i < this.count; i ++ ) { + + const index = i * this.data.stride + this.offset; + + for ( let j = 0; j < this.itemSize; j ++ ) { + + array.push( this.data.array[ index + j ] ); + + } + + } + + // de-interleave data and save it as an ordinary buffer attribute for now + + return { + itemSize: this.itemSize, + type: this.array.constructor.name, + array: array, + normalized: this.normalized + }; + + } else { + + // save as true interleaved attribute + + if ( data.interleavedBuffers === undefined ) { + + data.interleavedBuffers = {}; + + } + + if ( data.interleavedBuffers[ this.data.uuid ] === undefined ) { + + data.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data ); + + } + + return { + isInterleavedBufferAttribute: true, + itemSize: this.itemSize, + data: this.data.uuid, + offset: this.offset, + normalized: this.normalized + }; + + } + + } + +} + +/** + * A material for rendering instances of {@link Sprite}. + * + * ```js + * const map = new THREE.TextureLoader().load( 'textures/sprite.png' ); + * const material = new THREE.SpriteMaterial( { map: map, color: 0xffffff } ); + * + * const sprite = new THREE.Sprite( material ); + * sprite.scale.set(200, 200, 1) + * scene.add( sprite ); + * ``` + * + * @augments Material + */ +class SpriteMaterial extends Material { + + /** + * Constructs a new sprite material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isSpriteMaterial = true; + + this.type = 'SpriteMaterial'; + + /** + * Color of the material. + * + * @type {Color} + * @default (1,1,1) + */ + this.color = new Color( 0xffffff ); + + /** + * The color map. May optionally include an alpha channel, typically combined + * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map + * color is modulated by the diffuse `color`. + * + * @type {?Texture} + * @default null + */ + this.map = null; + + /** + * The alpha map is a grayscale texture that controls the opacity across the + * surface (black: fully transparent; white: fully opaque). + * + * Only the color of the texture is used, ignoring the alpha channel if one + * exists. For RGB and RGBA textures, the renderer will use the green channel + * when sampling this texture due to the extra bit of precision provided for + * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and + * luminance/alpha textures will also still work as expected. + * + * @type {?Texture} + * @default null + */ + this.alphaMap = null; + + /** + * The rotation of the sprite in radians. + * + * @type {number} + * @default 0 + */ + this.rotation = 0; + + /** + * Specifies whether size of the sprite is attenuated by the camera depth (perspective camera only). + * + * @type {boolean} + * @default true + */ + this.sizeAttenuation = true; + + /** + * Overwritten since sprite materials are transparent + * by default. + * + * @type {boolean} + * @default true + */ + this.transparent = true; + + /** + * Whether the material is affected by fog or not. + * + * @type {boolean} + * @default true + */ + this.fog = true; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.alphaMap = source.alphaMap; + + this.rotation = source.rotation; + + this.sizeAttenuation = source.sizeAttenuation; + + this.fog = source.fog; + + return this; + + } + +} + +let _geometry; + +const _intersectPoint = /*@__PURE__*/ new Vector3(); +const _worldScale = /*@__PURE__*/ new Vector3(); +const _mvPosition = /*@__PURE__*/ new Vector3(); + +const _alignedPosition = /*@__PURE__*/ new Vector2(); +const _rotatedPosition = /*@__PURE__*/ new Vector2(); +const _viewWorldMatrix = /*@__PURE__*/ new Matrix4(); + +const _vA = /*@__PURE__*/ new Vector3(); +const _vB = /*@__PURE__*/ new Vector3(); +const _vC = /*@__PURE__*/ new Vector3(); + +const _uvA = /*@__PURE__*/ new Vector2(); +const _uvB = /*@__PURE__*/ new Vector2(); +const _uvC = /*@__PURE__*/ new Vector2(); + +/** + * A sprite is a plane that always faces towards the camera, generally with a + * partially transparent texture applied. + * + * Sprites do not cast shadows, setting {@link Object3D#castShadow} to `true` will + * have no effect. + * + * ```js + * const map = new THREE.TextureLoader().load( 'sprite.png' ); + * const material = new THREE.SpriteMaterial( { map: map } ); + * + * const sprite = new THREE.Sprite( material ); + * scene.add( sprite ); + * ``` + * + * @augments Object3D + */ +class Sprite extends Object3D { + + /** + * Constructs a new sprite. + * + * @param {SpriteMaterial} [material] - The sprite material. + */ + constructor( material = new SpriteMaterial() ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isSprite = true; + + this.type = 'Sprite'; + + if ( _geometry === undefined ) { + + _geometry = new BufferGeometry(); + + const float32Array = new Float32Array( [ + -0.5, -0.5, 0, 0, 0, + 0.5, -0.5, 0, 1, 0, + 0.5, 0.5, 0, 1, 1, + -0.5, 0.5, 0, 0, 1 + ] ); + + const interleavedBuffer = new InterleavedBuffer( float32Array, 5 ); + + _geometry.setIndex( [ 0, 1, 2, 0, 2, 3 ] ); + _geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) ); + _geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) ); + + } + + /** + * The sprite geometry. + * + * @type {BufferGeometry} + */ + this.geometry = _geometry; + + /** + * The sprite material. + * + * @type {SpriteMaterial} + */ + this.material = material; + + /** + * The sprite's anchor point, and the point around which the sprite rotates. + * A value of `(0.5, 0.5)` corresponds to the midpoint of the sprite. A value + * of `(0, 0)` corresponds to the lower left corner of the sprite. + * + * @type {Vector2} + * @default (0.5,0.5) + */ + this.center = new Vector2( 0.5, 0.5 ); + + } + + /** + * Computes intersection points between a casted ray and this sprite. + * + * @param {Raycaster} raycaster - The raycaster. + * @param {Array} intersects - The target array that holds the intersection points. + */ + raycast( raycaster, intersects ) { + + if ( raycaster.camera === null ) { + + console.error( 'THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.' ); + + } + + _worldScale.setFromMatrixScale( this.matrixWorld ); + + _viewWorldMatrix.copy( raycaster.camera.matrixWorld ); + this.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld ); + + _mvPosition.setFromMatrixPosition( this.modelViewMatrix ); + + if ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) { + + _worldScale.multiplyScalar( - _mvPosition.z ); + + } + + const rotation = this.material.rotation; + let sin, cos; + + if ( rotation !== 0 ) { + + cos = Math.cos( rotation ); + sin = Math.sin( rotation ); + + } + + const center = this.center; + + transformVertex( _vA.set( -0.5, -0.5, 0 ), _mvPosition, center, _worldScale, sin, cos ); + transformVertex( _vB.set( 0.5, -0.5, 0 ), _mvPosition, center, _worldScale, sin, cos ); + transformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos ); + + _uvA.set( 0, 0 ); + _uvB.set( 1, 0 ); + _uvC.set( 1, 1 ); + + // check first triangle + let intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint ); + + if ( intersect === null ) { + + // check second triangle + transformVertex( _vB.set( -0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos ); + _uvB.set( 0, 1 ); + + intersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint ); + if ( intersect === null ) { + + return; + + } + + } + + const distance = raycaster.ray.origin.distanceTo( _intersectPoint ); + + if ( distance < raycaster.near || distance > raycaster.far ) return; + + intersects.push( { + + distance: distance, + point: _intersectPoint.clone(), + uv: Triangle.getInterpolation( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ), + face: null, + object: this + + } ); + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + if ( source.center !== undefined ) this.center.copy( source.center ); + + this.material = source.material; + + return this; + + } + +} + +function transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) { + + // compute position in camera space + _alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale ); + + // to check if rotation is not zero + if ( sin !== undefined ) { + + _rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y ); + _rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y ); + + } else { + + _rotatedPosition.copy( _alignedPosition ); + + } + + + vertexPosition.copy( mvPosition ); + vertexPosition.x += _rotatedPosition.x; + vertexPosition.y += _rotatedPosition.y; + + // transform to world space + vertexPosition.applyMatrix4( _viewWorldMatrix ); + +} + +const _v1$2 = /*@__PURE__*/ new Vector3(); +const _v2$1 = /*@__PURE__*/ new Vector3(); + +/** + * A component for providing a basic Level of Detail (LOD) mechanism. + * + * Every LOD level is associated with an object, and rendering can be switched + * between them at the distances specified. Typically you would create, say, + * three meshes, one for far away (low detail), one for mid range (medium + * detail) and one for close up (high detail). + * + * ```js + * const lod = new THREE.LOD(); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); + * + * //Create spheres with 3 levels of detail and create new LOD levels for them + * for( let i = 0; i < 3; i++ ) { + * + * const geometry = new THREE.IcosahedronGeometry( 10, 3 - i ); + * const mesh = new THREE.Mesh( geometry, material ); + * lod.addLevel( mesh, i * 75 ); + * + * } + * + * scene.add( lod ); + * ``` + * + * @augments Object3D + */ +class LOD extends Object3D { + + /** + * Constructs a new LOD. + */ + constructor() { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isLOD = true; + + /** + * The current LOD index. + * + * @private + * @type {number} + * @default 0 + */ + this._currentLevel = 0; + + this.type = 'LOD'; + + Object.defineProperties( this, { + /** + * This array holds the LOD levels. + * + * @name LOD#levels + * @type {Array<{object:Object3D,distance:number,hysteresis:number}>} + */ + levels: { + enumerable: true, + value: [] + } + } ); + + /** + * Whether the LOD object is updated automatically by the renderer per frame + * or not. If set to `false`, you have to call {@link LOD#update} in the + * render loop by yourself. + * + * @type {boolean} + * @default true + */ + this.autoUpdate = true; + + } + + copy( source ) { + + super.copy( source, false ); + + const levels = source.levels; + + for ( let i = 0, l = levels.length; i < l; i ++ ) { + + const level = levels[ i ]; + + this.addLevel( level.object.clone(), level.distance, level.hysteresis ); + + } + + this.autoUpdate = source.autoUpdate; + + return this; + + } + + /** + * Adds a mesh that will display at a certain distance and greater. Typically + * the further away the distance, the lower the detail on the mesh. + * + * @param {Object3D} object - The 3D object to display at this level. + * @param {number} [distance=0] - The distance at which to display this level of detail. + * @param {number} [hysteresis=0] - Threshold used to avoid flickering at LOD boundaries, as a fraction of distance. + * @return {LOD} A reference to this instance. + */ + addLevel( object, distance = 0, hysteresis = 0 ) { + + distance = Math.abs( distance ); + + const levels = this.levels; + + let l; + + for ( l = 0; l < levels.length; l ++ ) { + + if ( distance < levels[ l ].distance ) { + + break; + + } + + } + + levels.splice( l, 0, { distance: distance, hysteresis: hysteresis, object: object } ); + + this.add( object ); + + return this; + + } + + /** + * Removes an existing level, based on the distance from the camera. + * Returns `true` when the level has been removed. Otherwise `false`. + * + * @param {number} distance - Distance of the level to remove. + * @return {boolean} Whether the level has been removed or not. + */ + removeLevel( distance ) { + + const levels = this.levels; + + for ( let i = 0; i < levels.length; i ++ ) { + + if ( levels[ i ].distance === distance ) { + + const removedElements = levels.splice( i, 1 ); + this.remove( removedElements[ 0 ].object ); + + return true; + + } + + } + + return false; + + } + + /** + * Returns the currently active LOD level index. + * + * @return {number} The current active LOD level index. + */ + getCurrentLevel() { + + return this._currentLevel; + + } + + /** + * Returns a reference to the first 3D object that is greater than + * the given distance. + * + * @param {number} distance - The LOD distance. + * @return {Object3D|null} The found 3D object. `null` if no 3D object has been found. + */ + getObjectForDistance( distance ) { + + const levels = this.levels; + + if ( levels.length > 0 ) { + + let i, l; + + for ( i = 1, l = levels.length; i < l; i ++ ) { + + let levelDistance = levels[ i ].distance; + + if ( levels[ i ].object.visible ) { + + levelDistance -= levelDistance * levels[ i ].hysteresis; + + } + + if ( distance < levelDistance ) { + + break; + + } + + } + + return levels[ i - 1 ].object; + + } + + return null; + + } + + /** + * Computes intersection points between a casted ray and this LOD. + * + * @param {Raycaster} raycaster - The raycaster. + * @param {Array} intersects - The target array that holds the intersection points. + */ + raycast( raycaster, intersects ) { + + const levels = this.levels; + + if ( levels.length > 0 ) { + + _v1$2.setFromMatrixPosition( this.matrixWorld ); + + const distance = raycaster.ray.origin.distanceTo( _v1$2 ); + + this.getObjectForDistance( distance ).raycast( raycaster, intersects ); + + } + + } + + /** + * Updates the LOD by computing which LOD level should be visible according + * to the current distance of the given camera. + * + * @param {Camera} camera - The camera the scene is rendered with. + */ + update( camera ) { + + const levels = this.levels; + + if ( levels.length > 1 ) { + + _v1$2.setFromMatrixPosition( camera.matrixWorld ); + _v2$1.setFromMatrixPosition( this.matrixWorld ); + + const distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom; + + levels[ 0 ].object.visible = true; + + let i, l; + + for ( i = 1, l = levels.length; i < l; i ++ ) { + + let levelDistance = levels[ i ].distance; + + if ( levels[ i ].object.visible ) { + + levelDistance -= levelDistance * levels[ i ].hysteresis; + + } + + if ( distance >= levelDistance ) { + + levels[ i - 1 ].object.visible = false; + levels[ i ].object.visible = true; + + } else { + + break; + + } + + } + + this._currentLevel = i - 1; + + for ( ; i < l; i ++ ) { + + levels[ i ].object.visible = false; + + } + + } + + } + + toJSON( meta ) { + + const data = super.toJSON( meta ); + + if ( this.autoUpdate === false ) data.object.autoUpdate = false; + + data.object.levels = []; + + const levels = this.levels; + + for ( let i = 0, l = levels.length; i < l; i ++ ) { + + const level = levels[ i ]; + + data.object.levels.push( { + object: level.object.uuid, + distance: level.distance, + hysteresis: level.hysteresis + } ); + + } + + return data; + + } + +} + +const _basePosition = /*@__PURE__*/ new Vector3(); + +const _skinIndex = /*@__PURE__*/ new Vector4(); +const _skinWeight = /*@__PURE__*/ new Vector4(); + +const _vector3 = /*@__PURE__*/ new Vector3(); +const _matrix4 = /*@__PURE__*/ new Matrix4(); +const _vertex = /*@__PURE__*/ new Vector3(); + +const _sphere$5 = /*@__PURE__*/ new Sphere(); +const _inverseMatrix$2 = /*@__PURE__*/ new Matrix4(); +const _ray$2 = /*@__PURE__*/ new Ray(); + +/** + * A mesh that has a {@link Skeleton} that can then be used to animate the + * vertices of the geometry with skinning/skeleton animation. + * + * Next to a valid skeleton, the skinned mesh requires skin indices and weights + * as buffer attributes in its geometry. These attribute define which bones affect a single + * vertex to a certain extend. + * + * Typically skinned meshes are not created manually but loaders like {@link GLTFLoader} + * or {@link FBXLoader } import respective models. + * + * @augments Mesh + */ +class SkinnedMesh extends Mesh { + + /** + * Constructs a new skinned mesh. + * + * @param {BufferGeometry} [geometry] - The mesh geometry. + * @param {Material|Array} [material] - The mesh material. + */ + constructor( geometry, material ) { + + super( geometry, material ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isSkinnedMesh = true; + + this.type = 'SkinnedMesh'; + + /** + * `AttachedBindMode` means the skinned mesh shares the same world space as the skeleton. + * This is not true when using `DetachedBindMode` which is useful when sharing a skeleton + * across multiple skinned meshes. + * + * @type {(AttachedBindMode|DetachedBindMode)} + * @default AttachedBindMode + */ + this.bindMode = AttachedBindMode; + + /** + * The base matrix that is used for the bound bone transforms. + * + * @type {Matrix4} + */ + this.bindMatrix = new Matrix4(); + + /** + * The base matrix that is used for resetting the bound bone transforms. + * + * @type {Matrix4} + */ + this.bindMatrixInverse = new Matrix4(); + + /** + * The bounding box of the skinned mesh. Can be computed via {@link SkinnedMesh#computeBoundingBox}. + * + * @type {?Box3} + * @default null + */ + this.boundingBox = null; + + /** + * The bounding sphere of the skinned mesh. Can be computed via {@link SkinnedMesh#computeBoundingSphere}. + * + * @type {?Sphere} + * @default null + */ + this.boundingSphere = null; + + } + + /** + * Computes the bounding box of the skinned mesh, and updates {@link SkinnedMesh#boundingBox}. + * The bounding box is not automatically computed by the engine; this method must be called by your app. + * If the skinned mesh is animated, the bounding box should be recomputed per frame in order to reflect + * the current animation state. + */ + computeBoundingBox() { + + const geometry = this.geometry; + + if ( this.boundingBox === null ) { + + this.boundingBox = new Box3(); + + } + + this.boundingBox.makeEmpty(); + + const positionAttribute = geometry.getAttribute( 'position' ); + + for ( let i = 0; i < positionAttribute.count; i ++ ) { + + this.getVertexPosition( i, _vertex ); + this.boundingBox.expandByPoint( _vertex ); + + } + + } + + /** + * Computes the bounding sphere of the skinned mesh, and updates {@link SkinnedMesh#boundingSphere}. + * The bounding sphere is automatically computed by the engine once when it is needed, e.g., for ray casting + * and view frustum culling. If the skinned mesh is animated, the bounding sphere should be recomputed + * per frame in order to reflect the current animation state. + */ + computeBoundingSphere() { + + const geometry = this.geometry; + + if ( this.boundingSphere === null ) { + + this.boundingSphere = new Sphere(); + + } + + this.boundingSphere.makeEmpty(); + + const positionAttribute = geometry.getAttribute( 'position' ); + + for ( let i = 0; i < positionAttribute.count; i ++ ) { + + this.getVertexPosition( i, _vertex ); + this.boundingSphere.expandByPoint( _vertex ); + + } + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + this.bindMode = source.bindMode; + this.bindMatrix.copy( source.bindMatrix ); + this.bindMatrixInverse.copy( source.bindMatrixInverse ); + + this.skeleton = source.skeleton; + + if ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone(); + if ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone(); + + return this; + + } + + raycast( raycaster, intersects ) { + + const material = this.material; + const matrixWorld = this.matrixWorld; + + if ( material === undefined ) return; + + // test with bounding sphere in world space + + if ( this.boundingSphere === null ) this.computeBoundingSphere(); + + _sphere$5.copy( this.boundingSphere ); + _sphere$5.applyMatrix4( matrixWorld ); + + if ( raycaster.ray.intersectsSphere( _sphere$5 ) === false ) return; + + // convert ray to local space of skinned mesh + + _inverseMatrix$2.copy( matrixWorld ).invert(); + _ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 ); + + // test with bounding box in local space + + if ( this.boundingBox !== null ) { + + if ( _ray$2.intersectsBox( this.boundingBox ) === false ) return; + + } + + // test for intersections with geometry + + this._computeIntersections( raycaster, intersects, _ray$2 ); + + } + + getVertexPosition( index, target ) { + + super.getVertexPosition( index, target ); + + this.applyBoneTransform( index, target ); + + return target; + + } + + /** + * Binds the given skeleton to the skinned mesh. + * + * @param {Skeleton} skeleton - The skeleton to bind. + * @param {Matrix4} [bindMatrix] - The bind matrix. If no bind matrix is provided, + * the skinned mesh's world matrix will be used instead. + */ + bind( skeleton, bindMatrix ) { + + this.skeleton = skeleton; + + if ( bindMatrix === undefined ) { + + this.updateMatrixWorld( true ); + + this.skeleton.calculateInverses(); + + bindMatrix = this.matrixWorld; + + } + + this.bindMatrix.copy( bindMatrix ); + this.bindMatrixInverse.copy( bindMatrix ).invert(); + + } + + /** + * This method sets the skinned mesh in the rest pose). + */ + pose() { + + this.skeleton.pose(); + + } + + /** + * Normalizes the skin weights which are defined as a buffer attribute + * in the skinned mesh's geometry. + */ + normalizeSkinWeights() { + + const vector = new Vector4(); + + const skinWeight = this.geometry.attributes.skinWeight; + + for ( let i = 0, l = skinWeight.count; i < l; i ++ ) { + + vector.fromBufferAttribute( skinWeight, i ); + + const scale = 1.0 / vector.manhattanLength(); + + if ( scale !== Infinity ) { + + vector.multiplyScalar( scale ); + + } else { + + vector.set( 1, 0, 0, 0 ); // do something reasonable + + } + + skinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w ); + + } + + } + + updateMatrixWorld( force ) { + + super.updateMatrixWorld( force ); + + if ( this.bindMode === AttachedBindMode ) { + + this.bindMatrixInverse.copy( this.matrixWorld ).invert(); + + } else if ( this.bindMode === DetachedBindMode ) { + + this.bindMatrixInverse.copy( this.bindMatrix ).invert(); + + } else { + + console.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode ); + + } + + } + + /** + * Applies the bone transform associated with the given index to the given + * vertex position. Returns the updated vector. + * + * @param {number} index - The vertex index. + * @param {Vector3} target - The target object that is used to store the method's result. + * the skinned mesh's world matrix will be used instead. + * @return {Vector3} The updated vertex position. + */ + applyBoneTransform( index, target ) { + + const skeleton = this.skeleton; + const geometry = this.geometry; + + _skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index ); + _skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index ); + + _basePosition.copy( target ).applyMatrix4( this.bindMatrix ); + + target.set( 0, 0, 0 ); + + for ( let i = 0; i < 4; i ++ ) { + + const weight = _skinWeight.getComponent( i ); + + if ( weight !== 0 ) { + + const boneIndex = _skinIndex.getComponent( i ); + + _matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] ); + + target.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight ); + + } + + } + + return target.applyMatrix4( this.bindMatrixInverse ); + + } + +} + +/** + * A bone which is part of a {@link Skeleton}. The skeleton in turn is used by + * the {@link SkinnedMesh}. + * + * ```js + * const root = new THREE.Bone(); + * const child = new THREE.Bone(); + * + * root.add( child ); + * child.position.y = 5; + * ``` + * + * @augments Object3D + */ +class Bone extends Object3D { + + /** + * Constructs a new bone. + */ + constructor() { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isBone = true; + + this.type = 'Bone'; + + } + +} + +/** + * Creates a texture directly from raw buffer data. + * + * The interpretation of the data depends on type and format: If the type is + * `UnsignedByteType`, a `Uint8Array` will be useful for addressing the + * texel data. If the format is `RGBAFormat`, data needs four values for + * one texel; Red, Green, Blue and Alpha (typically the opacity). + * + * @augments Texture + */ +class DataTexture extends Texture { + + /** + * Constructs a new data texture. + * + * @param {?TypedArray} [data=null] - The buffer data. + * @param {number} [width=1] - The width of the texture. + * @param {number} [height=1] - The height of the texture. + * @param {number} [format=RGBAFormat] - The texture format. + * @param {number} [type=UnsignedByteType] - The texture type. + * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping. + * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value. + * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value. + * @param {number} [magFilter=NearestFilter] - The mag filter value. + * @param {number} [minFilter=NearestFilter] - The min filter value. + * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value. + * @param {string} [colorSpace=NoColorSpace] - The color space. + */ + constructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) { + + super( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isDataTexture = true; + + /** + * The image definition of a data texture. + * + * @type {{data:TypedArray,width:number,height:number}} + */ + this.image = { data: data, width: width, height: height }; + + /** + * Whether to generate mipmaps (if possible) for a texture. + * + * Overwritten and set to `false` by default. + * + * @type {boolean} + * @default false + */ + this.generateMipmaps = false; + + /** + * If set to `true`, the texture is flipped along the vertical axis when + * uploaded to the GPU. + * + * Overwritten and set to `false` by default. + * + * @type {boolean} + * @default false + */ + this.flipY = false; + + /** + * Specifies the alignment requirements for the start of each pixel row in memory. + * + * Overwritten and set to `1` by default. + * + * @type {boolean} + * @default 1 + */ + this.unpackAlignment = 1; + + } + +} + +const _offsetMatrix = /*@__PURE__*/ new Matrix4(); +const _identityMatrix = /*@__PURE__*/ new Matrix4(); + +/** + * Class for representing the armatures in `three.js`. The skeleton + * is defined by a hierarchy of bones. + * + * ```js + * const bones = []; + * + * const shoulder = new THREE.Bone(); + * const elbow = new THREE.Bone(); + * const hand = new THREE.Bone(); + * + * shoulder.add( elbow ); + * elbow.add( hand ); + * + * bones.push( shoulder , elbow, hand); + * + * shoulder.position.y = -5; + * elbow.position.y = 0; + * hand.position.y = 5; + * + * const armSkeleton = new THREE.Skeleton( bones ); + * ``` + */ +class Skeleton { + + /** + * Constructs a new skeleton. + * + * @param {Array} [bones] - An array of bones. + * @param {Array} [boneInverses] - An array of bone inverse matrices. + * If not provided, these matrices will be computed automatically via {@link Skeleton#calculateInverses}. + */ + constructor( bones = [], boneInverses = [] ) { + + this.uuid = generateUUID(); + + /** + * An array of bones defining the skeleton. + * + * @type {Array} + */ + this.bones = bones.slice( 0 ); + + /** + * An array of bone inverse matrices. + * + * @type {Array} + */ + this.boneInverses = boneInverses; + + /** + * An array buffer holding the bone data. + * Input data for {@link Skeleton#boneTexture}. + * + * @type {?Float32Array} + * @default null + */ + this.boneMatrices = null; + + /** + * A texture holding the bone data for use + * in the vertex shader. + * + * @type {?DataTexture} + * @default null + */ + this.boneTexture = null; + + this.init(); + + } + + /** + * Initializes the skeleton. This method gets automatically called by the constructor + * but depending on how the skeleton is created it might be necessary to call this method + * manually. + */ + init() { + + const bones = this.bones; + const boneInverses = this.boneInverses; + + this.boneMatrices = new Float32Array( bones.length * 16 ); + + // calculate inverse bone matrices if necessary + + if ( boneInverses.length === 0 ) { + + this.calculateInverses(); + + } else { + + // handle special case + + if ( bones.length !== boneInverses.length ) { + + console.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' ); + + this.boneInverses = []; + + for ( let i = 0, il = this.bones.length; i < il; i ++ ) { + + this.boneInverses.push( new Matrix4() ); + + } + + } + + } + + } + + /** + * Computes the bone inverse matrices. This method resets {@link Skeleton#boneInverses} + * and fills it with new matrices. + */ + calculateInverses() { + + this.boneInverses.length = 0; + + for ( let i = 0, il = this.bones.length; i < il; i ++ ) { + + const inverse = new Matrix4(); + + if ( this.bones[ i ] ) { + + inverse.copy( this.bones[ i ].matrixWorld ).invert(); + + } + + this.boneInverses.push( inverse ); + + } + + } + + /** + * Resets the skeleton to the base pose. + */ + pose() { + + // recover the bind-time world matrices + + for ( let i = 0, il = this.bones.length; i < il; i ++ ) { + + const bone = this.bones[ i ]; + + if ( bone ) { + + bone.matrixWorld.copy( this.boneInverses[ i ] ).invert(); + + } + + } + + // compute the local matrices, positions, rotations and scales + + for ( let i = 0, il = this.bones.length; i < il; i ++ ) { + + const bone = this.bones[ i ]; + + if ( bone ) { + + if ( bone.parent && bone.parent.isBone ) { + + bone.matrix.copy( bone.parent.matrixWorld ).invert(); + bone.matrix.multiply( bone.matrixWorld ); + + } else { + + bone.matrix.copy( bone.matrixWorld ); + + } + + bone.matrix.decompose( bone.position, bone.quaternion, bone.scale ); + + } + + } + + } + + /** + * Resets the skeleton to the base pose. + */ + update() { + + const bones = this.bones; + const boneInverses = this.boneInverses; + const boneMatrices = this.boneMatrices; + const boneTexture = this.boneTexture; + + // flatten bone matrices to array + + for ( let i = 0, il = bones.length; i < il; i ++ ) { + + // compute the offset between the current and the original transform + + const matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix; + + _offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] ); + _offsetMatrix.toArray( boneMatrices, i * 16 ); + + } + + if ( boneTexture !== null ) { + + boneTexture.needsUpdate = true; + + } + + } + + /** + * Returns a new skeleton with copied values from this instance. + * + * @return {Skeleton} A clone of this instance. + */ + clone() { + + return new Skeleton( this.bones, this.boneInverses ); + + } + + /** + * Computes a data texture for passing bone data to the vertex shader. + * + * @return {Skeleton} A reference of this instance. + */ + computeBoneTexture() { + + // layout (1 matrix = 4 pixels) + // RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4) + // with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8) + // 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16) + // 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32) + // 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64) + + let size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix + size = Math.ceil( size / 4 ) * 4; + size = Math.max( size, 4 ); + + const boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel + boneMatrices.set( this.boneMatrices ); // copy current values + + const boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType ); + boneTexture.needsUpdate = true; + + this.boneMatrices = boneMatrices; + this.boneTexture = boneTexture; + + return this; + + } + + /** + * Searches through the skeleton's bone array and returns the first with a + * matching name. + * + * @param {string} name - The name of the bone. + * @return {Bone|undefined} The found bone. `undefined` if no bone has been found. + */ + getBoneByName( name ) { + + for ( let i = 0, il = this.bones.length; i < il; i ++ ) { + + const bone = this.bones[ i ]; + + if ( bone.name === name ) { + + return bone; + + } + + } + + return undefined; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose( ) { + + if ( this.boneTexture !== null ) { + + this.boneTexture.dispose(); + + this.boneTexture = null; + + } + + } + + /** + * Setups the skeleton by the given JSON and bones. + * + * @param {Object} json - The skeleton as serialized JSON. + * @param {Object} bones - An array of bones. + * @return {Skeleton} A reference of this instance. + */ + fromJSON( json, bones ) { + + this.uuid = json.uuid; + + for ( let i = 0, l = json.bones.length; i < l; i ++ ) { + + const uuid = json.bones[ i ]; + let bone = bones[ uuid ]; + + if ( bone === undefined ) { + + console.warn( 'THREE.Skeleton: No bone found with UUID:', uuid ); + bone = new Bone(); + + } + + this.bones.push( bone ); + this.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) ); + + } + + this.init(); + + return this; + + } + + /** + * Serializes the skeleton into JSON. + * + * @return {Object} A JSON object representing the serialized skeleton. + * @see {@link ObjectLoader#parse} + */ + toJSON() { + + const data = { + metadata: { + version: 4.6, + type: 'Skeleton', + generator: 'Skeleton.toJSON' + }, + bones: [], + boneInverses: [] + }; + + data.uuid = this.uuid; + + const bones = this.bones; + const boneInverses = this.boneInverses; + + for ( let i = 0, l = bones.length; i < l; i ++ ) { + + const bone = bones[ i ]; + data.bones.push( bone.uuid ); + + const boneInverse = boneInverses[ i ]; + data.boneInverses.push( boneInverse.toArray() ); + + } + + return data; + + } + +} + +/** + * An instanced version of a buffer attribute. + * + * @augments BufferAttribute + */ +class InstancedBufferAttribute extends BufferAttribute { + + /** + * Constructs a new instanced buffer attribute. + * + * @param {TypedArray} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + * @param {number} [meshPerAttribute=1] - How often a value of this buffer attribute should be repeated. + */ + constructor( array, itemSize, normalized, meshPerAttribute = 1 ) { + + super( array, itemSize, normalized ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isInstancedBufferAttribute = true; + + /** + * Defines how often a value of this buffer attribute should be repeated. A + * value of one means that each value of the instanced attribute is used for + * a single instance. A value of two means that each value is used for two + * consecutive instances (and so on). + * + * @type {number} + * @default 1 + */ + this.meshPerAttribute = meshPerAttribute; + + } + + copy( source ) { + + super.copy( source ); + + this.meshPerAttribute = source.meshPerAttribute; + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.meshPerAttribute = this.meshPerAttribute; + + data.isInstancedBufferAttribute = true; + + return data; + + } + +} + +const _instanceLocalMatrix = /*@__PURE__*/ new Matrix4(); +const _instanceWorldMatrix = /*@__PURE__*/ new Matrix4(); + +const _instanceIntersects = []; + +const _box3 = /*@__PURE__*/ new Box3(); +const _identity = /*@__PURE__*/ new Matrix4(); +const _mesh$1 = /*@__PURE__*/ new Mesh(); +const _sphere$4 = /*@__PURE__*/ new Sphere(); + +/** + * A special version of a mesh with instanced rendering support. Use + * this class if you have to render a large number of objects with the same + * geometry and material(s) but with different world transformations. The usage + * of 'InstancedMesh' will help you to reduce the number of draw calls and thus + * improve the overall rendering performance in your application. + * + * @augments Mesh + */ +class InstancedMesh extends Mesh { + + /** + * Constructs a new instanced mesh. + * + * @param {BufferGeometry} [geometry] - The mesh geometry. + * @param {Material|Array} [material] - The mesh material. + * @param {number} count - The number of instances. + */ + constructor( geometry, material, count ) { + + super( geometry, material ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isInstancedMesh = true; + + /** + * Represents the local transformation of all instances. You have to set its + * {@link BufferAttribute#needsUpdate} flag to true if you modify instanced data + * via {@link InstancedMesh#setMatrixAt}. + * + * @type {InstancedBufferAttribute} + */ + this.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 ); + + /** + * Represents the color of all instances. You have to set its + * {@link BufferAttribute#needsUpdate} flag to true if you modify instanced data + * via {@link InstancedMesh#setColorAt}. + * + * @type {?InstancedBufferAttribute} + * @default null + */ + this.instanceColor = null; + + /** + * Represents the morph target weights of all instances. You have to set its + * {@link Texture#needsUpdate} flag to true if you modify instanced data + * via {@link InstancedMesh#setMorphAt}. + * + * @type {?DataTexture} + * @default null + */ + this.morphTexture = null; + + /** + * The number of instances. + * + * @type {number} + */ + this.count = count; + + /** + * The bounding box of the instanced mesh. Can be computed via {@link InstancedMesh#computeBoundingBox}. + * + * @type {?Box3} + * @default null + */ + this.boundingBox = null; + + /** + * The bounding sphere of the instanced mesh. Can be computed via {@link InstancedMesh#computeBoundingSphere}. + * + * @type {?Sphere} + * @default null + */ + this.boundingSphere = null; + + for ( let i = 0; i < count; i ++ ) { + + this.setMatrixAt( i, _identity ); + + } + + } + + /** + * Computes the bounding box of the instanced mesh, and updates {@link InstancedMesh#boundingBox}. + * The bounding box is not automatically computed by the engine; this method must be called by your app. + * You may need to recompute the bounding box if an instance is transformed via {@link InstancedMesh#setMatrixAt}. + */ + computeBoundingBox() { + + const geometry = this.geometry; + const count = this.count; + + if ( this.boundingBox === null ) { + + this.boundingBox = new Box3(); + + } + + if ( geometry.boundingBox === null ) { + + geometry.computeBoundingBox(); + + } + + this.boundingBox.makeEmpty(); + + for ( let i = 0; i < count; i ++ ) { + + this.getMatrixAt( i, _instanceLocalMatrix ); + + _box3.copy( geometry.boundingBox ).applyMatrix4( _instanceLocalMatrix ); + + this.boundingBox.union( _box3 ); + + } + + } + + /** + * Computes the bounding sphere of the instanced mesh, and updates {@link InstancedMesh#boundingSphere} + * The engine automatically computes the bounding sphere when it is needed, e.g., for ray casting or view frustum culling. + * You may need to recompute the bounding sphere if an instance is transformed via {@link InstancedMesh#setMatrixAt}. + */ + computeBoundingSphere() { + + const geometry = this.geometry; + const count = this.count; + + if ( this.boundingSphere === null ) { + + this.boundingSphere = new Sphere(); + + } + + if ( geometry.boundingSphere === null ) { + + geometry.computeBoundingSphere(); + + } + + this.boundingSphere.makeEmpty(); + + for ( let i = 0; i < count; i ++ ) { + + this.getMatrixAt( i, _instanceLocalMatrix ); + + _sphere$4.copy( geometry.boundingSphere ).applyMatrix4( _instanceLocalMatrix ); + + this.boundingSphere.union( _sphere$4 ); + + } + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + this.instanceMatrix.copy( source.instanceMatrix ); + + if ( source.morphTexture !== null ) this.morphTexture = source.morphTexture.clone(); + if ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone(); + + this.count = source.count; + + if ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone(); + if ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone(); + + return this; + + } + + /** + * Gets the color of the defined instance. + * + * @param {number} index - The instance index. + * @param {Color} color - The target object that is used to store the method's result. + */ + getColorAt( index, color ) { + + color.fromArray( this.instanceColor.array, index * 3 ); + + } + + /** + * Gets the local transformation matrix of the defined instance. + * + * @param {number} index - The instance index. + * @param {Matrix4} matrix - The target object that is used to store the method's result. + */ + getMatrixAt( index, matrix ) { + + matrix.fromArray( this.instanceMatrix.array, index * 16 ); + + } + + /** + * Gets the morph target weights of the defined instance. + * + * @param {number} index - The instance index. + * @param {Mesh} object - The target object that is used to store the method's result. + */ + getMorphAt( index, object ) { + + const objectInfluences = object.morphTargetInfluences; + + const array = this.morphTexture.source.data.data; + + const len = objectInfluences.length + 1; // All influences + the baseInfluenceSum + + const dataIndex = index * len + 1; // Skip the baseInfluenceSum at the beginning + + for ( let i = 0; i < objectInfluences.length; i ++ ) { + + objectInfluences[ i ] = array[ dataIndex + i ]; + + } + + } + + raycast( raycaster, intersects ) { + + const matrixWorld = this.matrixWorld; + const raycastTimes = this.count; + + _mesh$1.geometry = this.geometry; + _mesh$1.material = this.material; + + if ( _mesh$1.material === undefined ) return; + + // test with bounding sphere first + + if ( this.boundingSphere === null ) this.computeBoundingSphere(); + + _sphere$4.copy( this.boundingSphere ); + _sphere$4.applyMatrix4( matrixWorld ); + + if ( raycaster.ray.intersectsSphere( _sphere$4 ) === false ) return; + + // now test each instance + + for ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) { + + // calculate the world matrix for each instance + + this.getMatrixAt( instanceId, _instanceLocalMatrix ); + + _instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix ); + + // the mesh represents this single instance + + _mesh$1.matrixWorld = _instanceWorldMatrix; + + _mesh$1.raycast( raycaster, _instanceIntersects ); + + // process the result of raycast + + for ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) { + + const intersect = _instanceIntersects[ i ]; + intersect.instanceId = instanceId; + intersect.object = this; + intersects.push( intersect ); + + } + + _instanceIntersects.length = 0; + + } + + } + + /** + * Sets the given color to the defined instance. Make sure you set the `needsUpdate` flag of + * {@link InstancedMesh#instanceColor} to `true` after updating all the colors. + * + * @param {number} index - The instance index. + * @param {Color} color - The instance color. + */ + setColorAt( index, color ) { + + if ( this.instanceColor === null ) { + + this.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ).fill( 1 ), 3 ); + + } + + color.toArray( this.instanceColor.array, index * 3 ); + + } + + /** + * Sets the given local transformation matrix to the defined instance. Make sure you set the `needsUpdate` flag of + * {@link InstancedMesh#instanceMatrix} to `true` after updating all the colors. + * + * @param {number} index - The instance index. + * @param {Matrix4} matrix - The local transformation. + */ + setMatrixAt( index, matrix ) { + + matrix.toArray( this.instanceMatrix.array, index * 16 ); + + } + + /** + * Sets the morph target weights to the defined instance. Make sure you set the `needsUpdate` flag of + * {@link InstancedMesh#morphTexture} to `true` after updating all the influences. + * + * @param {number} index - The instance index. + * @param {Mesh} object - A mesh which `morphTargetInfluences` property containing the morph target weights + * of a single instance. + */ + setMorphAt( index, object ) { + + const objectInfluences = object.morphTargetInfluences; + + const len = objectInfluences.length + 1; // morphBaseInfluence + all influences + + if ( this.morphTexture === null ) { + + this.morphTexture = new DataTexture( new Float32Array( len * this.count ), len, this.count, RedFormat, FloatType ); + + } + + const array = this.morphTexture.source.data.data; + + let morphInfluencesSum = 0; + + for ( let i = 0; i < objectInfluences.length; i ++ ) { + + morphInfluencesSum += objectInfluences[ i ]; + + } + + const morphBaseInfluence = this.geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum; + + const dataIndex = len * index; + + array[ dataIndex ] = morphBaseInfluence; + + array.set( objectInfluences, dataIndex + 1 ); + + } + + updateMorphTargets() { + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + this.dispatchEvent( { type: 'dispose' } ); + + if ( this.morphTexture !== null ) { + + this.morphTexture.dispose(); + this.morphTexture = null; + + } + + } + +} + +const _vector1 = /*@__PURE__*/ new Vector3(); +const _vector2 = /*@__PURE__*/ new Vector3(); +const _normalMatrix = /*@__PURE__*/ new Matrix3(); + +/** + * A two dimensional surface that extends infinitely in 3D space, represented + * in [Hessian normal form]{@link http://mathworld.wolfram.com/HessianNormalForm.html} + * by a unit length normal vector and a constant. + */ +class Plane { + + /** + * Constructs a new plane. + * + * @param {Vector3} [normal=(1,0,0)] - A unit length vector defining the normal of the plane. + * @param {number} [constant=0] - The signed distance from the origin to the plane. + */ + constructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isPlane = true; + + /** + * A unit length vector defining the normal of the plane. + * + * @type {Vector3} + */ + this.normal = normal; + + /** + * The signed distance from the origin to the plane. + * + * @type {number} + * @default 0 + */ + this.constant = constant; + + } + + /** + * Sets the plane components by copying the given values. + * + * @param {Vector3} normal - The normal. + * @param {number} constant - The constant. + * @return {Plane} A reference to this plane. + */ + set( normal, constant ) { + + this.normal.copy( normal ); + this.constant = constant; + + return this; + + } + + /** + * Sets the plane components by defining `x`, `y`, `z` as the + * plane normal and `w` as the constant. + * + * @param {number} x - The value for the normal's x component. + * @param {number} y - The value for the normal's y component. + * @param {number} z - The value for the normal's z component. + * @param {number} w - The constant value. + * @return {Plane} A reference to this plane. + */ + setComponents( x, y, z, w ) { + + this.normal.set( x, y, z ); + this.constant = w; + + return this; + + } + + /** + * Sets the plane from the given normal and coplanar point (that is a point + * that lies onto the plane). + * + * @param {Vector3} normal - The normal. + * @param {Vector3} point - A coplanar point. + * @return {Plane} A reference to this plane. + */ + setFromNormalAndCoplanarPoint( normal, point ) { + + this.normal.copy( normal ); + this.constant = - point.dot( this.normal ); + + return this; + + } + + /** + * Sets the plane from three coplanar points. The winding order is + * assumed to be counter-clockwise, and determines the direction of + * the plane normal. + * + * @param {Vector3} a - The first coplanar point. + * @param {Vector3} b - The second coplanar point. + * @param {Vector3} c - The third coplanar point. + * @return {Plane} A reference to this plane. + */ + setFromCoplanarPoints( a, b, c ) { + + const normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize(); + + // Q: should an error be thrown if normal is zero (e.g. degenerate plane)? + + this.setFromNormalAndCoplanarPoint( normal, a ); + + return this; + + } + + /** + * Copies the values of the given plane to this instance. + * + * @param {Plane} plane - The plane to copy. + * @return {Plane} A reference to this plane. + */ + copy( plane ) { + + this.normal.copy( plane.normal ); + this.constant = plane.constant; + + return this; + + } + + /** + * Normalizes the plane normal and adjusts the constant accordingly. + * + * @return {Plane} A reference to this plane. + */ + normalize() { + + // Note: will lead to a divide by zero if the plane is invalid. + + const inverseNormalLength = 1.0 / this.normal.length(); + this.normal.multiplyScalar( inverseNormalLength ); + this.constant *= inverseNormalLength; + + return this; + + } + + /** + * Negates both the plane normal and the constant. + * + * @return {Plane} A reference to this plane. + */ + negate() { + + this.constant *= -1; + this.normal.negate(); + + return this; + + } + + /** + * Returns the signed distance from the given point to this plane. + * + * @param {Vector3} point - The point to compute the distance for. + * @return {number} The signed distance. + */ + distanceToPoint( point ) { + + return this.normal.dot( point ) + this.constant; + + } + + /** + * Returns the signed distance from the given sphere to this plane. + * + * @param {Sphere} sphere - The sphere to compute the distance for. + * @return {number} The signed distance. + */ + distanceToSphere( sphere ) { + + return this.distanceToPoint( sphere.center ) - sphere.radius; + + } + + /** + * Projects a the given point onto the plane. + * + * @param {Vector3} point - The point to project. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The projected point on the plane. + */ + projectPoint( point, target ) { + + return target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) ); + + } + + /** + * Returns the intersection point of the passed line and the plane. Returns + * `null` if the line does not intersect. Returns the line's starting point if + * the line is coplanar with the plane. + * + * @param {Line3} line - The line to compute the intersection for. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The intersection point. + */ + intersectLine( line, target ) { + + const direction = line.delta( _vector1 ); + + const denominator = this.normal.dot( direction ); + + if ( denominator === 0 ) { + + // line is coplanar, return origin + if ( this.distanceToPoint( line.start ) === 0 ) { + + return target.copy( line.start ); + + } + + // Unsure if this is the correct method to handle this case. + return null; + + } + + const t = - ( line.start.dot( this.normal ) + this.constant ) / denominator; + + if ( t < 0 || t > 1 ) { + + return null; + + } + + return target.copy( line.start ).addScaledVector( direction, t ); + + } + + /** + * Returns `true` if the given line segment intersects with (passes through) the plane. + * + * @param {Line3} line - The line to test. + * @return {boolean} Whether the given line segment intersects with the plane or not. + */ + intersectsLine( line ) { + + // Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it. + + const startSign = this.distanceToPoint( line.start ); + const endSign = this.distanceToPoint( line.end ); + + return ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 ); + + } + + /** + * Returns `true` if the given bounding box intersects with the plane. + * + * @param {Box3} box - The bounding box to test. + * @return {boolean} Whether the given bounding box intersects with the plane or not. + */ + intersectsBox( box ) { + + return box.intersectsPlane( this ); + + } + + /** + * Returns `true` if the given bounding sphere intersects with the plane. + * + * @param {Sphere} sphere - The bounding sphere to test. + * @return {boolean} Whether the given bounding sphere intersects with the plane or not. + */ + intersectsSphere( sphere ) { + + return sphere.intersectsPlane( this ); + + } + + /** + * Returns a coplanar vector to the plane, by calculating the + * projection of the normal at the origin onto the plane. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The coplanar point. + */ + coplanarPoint( target ) { + + return target.copy( this.normal ).multiplyScalar( - this.constant ); + + } + + /** + * Apply a 4x4 matrix to the plane. The matrix must be an affine, homogeneous transform. + * + * The optional normal matrix can be pre-computed like so: + * ```js + * const optionalNormalMatrix = new THREE.Matrix3().getNormalMatrix( matrix ); + * ``` + * + * @param {Matrix4} matrix - The transformation matrix. + * @param {Matrix4} [optionalNormalMatrix] - A pre-computed normal matrix. + * @return {Plane} A reference to this plane. + */ + applyMatrix4( matrix, optionalNormalMatrix ) { + + const normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix ); + + const referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix ); + + const normal = this.normal.applyMatrix3( normalMatrix ).normalize(); + + this.constant = - referencePoint.dot( normal ); + + return this; + + } + + /** + * Translates the plane by the distance defined by the given offset vector. + * Note that this only affects the plane constant and will not affect the normal vector. + * + * @param {Vector3} offset - The offset vector. + * @return {Plane} A reference to this plane. + */ + translate( offset ) { + + this.constant -= offset.dot( this.normal ); + + return this; + + } + + /** + * Returns `true` if this plane is equal with the given one. + * + * @param {Plane} plane - The plane to test for equality. + * @return {boolean} Whether this plane is equal with the given one. + */ + equals( plane ) { + + return plane.normal.equals( this.normal ) && ( plane.constant === this.constant ); + + } + + /** + * Returns a new plane with copied values from this instance. + * + * @return {Plane} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + +} + +const _sphere$3 = /*@__PURE__*/ new Sphere(); +const _vector$6 = /*@__PURE__*/ new Vector3(); + +/** + * Frustums are used to determine what is inside the camera's field of view. + * They help speed up the rendering process - objects which lie outside a camera's + * frustum can safely be excluded from rendering. + * + * This class is mainly intended for use internally by a renderer. + */ +class Frustum { + + /** + * Constructs a new frustum. + * + * @param {Plane} [p0] - The first plane that encloses the frustum. + * @param {Plane} [p1] - The second plane that encloses the frustum. + * @param {Plane} [p2] - The third plane that encloses the frustum. + * @param {Plane} [p3] - The fourth plane that encloses the frustum. + * @param {Plane} [p4] - The fifth plane that encloses the frustum. + * @param {Plane} [p5] - The sixth plane that encloses the frustum. + */ + constructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) { + + /** + * This array holds the planes that enclose the frustum. + * + * @type {Array} + */ + this.planes = [ p0, p1, p2, p3, p4, p5 ]; + + } + + /** + * Sets the frustum planes by copying the given planes. + * + * @param {Plane} [p0] - The first plane that encloses the frustum. + * @param {Plane} [p1] - The second plane that encloses the frustum. + * @param {Plane} [p2] - The third plane that encloses the frustum. + * @param {Plane} [p3] - The fourth plane that encloses the frustum. + * @param {Plane} [p4] - The fifth plane that encloses the frustum. + * @param {Plane} [p5] - The sixth plane that encloses the frustum. + * @return {Frustum} A reference to this frustum. + */ + set( p0, p1, p2, p3, p4, p5 ) { + + const planes = this.planes; + + planes[ 0 ].copy( p0 ); + planes[ 1 ].copy( p1 ); + planes[ 2 ].copy( p2 ); + planes[ 3 ].copy( p3 ); + planes[ 4 ].copy( p4 ); + planes[ 5 ].copy( p5 ); + + return this; + + } + + /** + * Copies the values of the given frustum to this instance. + * + * @param {Frustum} frustum - The frustum to copy. + * @return {Frustum} A reference to this frustum. + */ + copy( frustum ) { + + const planes = this.planes; + + for ( let i = 0; i < 6; i ++ ) { + + planes[ i ].copy( frustum.planes[ i ] ); + + } + + return this; + + } + + /** + * Sets the frustum planes from the given projection matrix. + * + * @param {Matrix4} m - The projection matrix. + * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} coordinateSystem - The coordinate system. + * @return {Frustum} A reference to this frustum. + */ + setFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) { + + const planes = this.planes; + const me = m.elements; + const me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ]; + const me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ]; + const me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ]; + const me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ]; + + planes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize(); + planes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize(); + planes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize(); + planes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize(); + planes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); + + if ( coordinateSystem === WebGLCoordinateSystem ) { + + planes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize(); + + } else if ( coordinateSystem === WebGPUCoordinateSystem ) { + + planes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize(); + + } else { + + throw new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem ); + + } + + return this; + + } + + /** + * Returns `true` if the 3D object's bounding sphere is intersecting this frustum. + * + * Note that the 3D object must have a geometry so that the bounding sphere can be calculated. + * + * @param {Object3D} object - The 3D object to test. + * @return {boolean} Whether the 3D object's bounding sphere is intersecting this frustum or not. + */ + intersectsObject( object ) { + + if ( object.boundingSphere !== undefined ) { + + if ( object.boundingSphere === null ) object.computeBoundingSphere(); + + _sphere$3.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld ); + + } else { + + const geometry = object.geometry; + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + + _sphere$3.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld ); + + } + + return this.intersectsSphere( _sphere$3 ); + + } + + /** + * Returns `true` if the given sprite is intersecting this frustum. + * + * @param {Sprite} sprite - The sprite to test. + * @return {boolean} Whether the sprite is intersecting this frustum or not. + */ + intersectsSprite( sprite ) { + + _sphere$3.center.set( 0, 0, 0 ); + _sphere$3.radius = 0.7071067811865476; + _sphere$3.applyMatrix4( sprite.matrixWorld ); + + return this.intersectsSphere( _sphere$3 ); + + } + + /** + * Returns `true` if the given bounding sphere is intersecting this frustum. + * + * @param {Sphere} sphere - The bounding sphere to test. + * @return {boolean} Whether the bounding sphere is intersecting this frustum or not. + */ + intersectsSphere( sphere ) { + + const planes = this.planes; + const center = sphere.center; + const negRadius = - sphere.radius; + + for ( let i = 0; i < 6; i ++ ) { + + const distance = planes[ i ].distanceToPoint( center ); + + if ( distance < negRadius ) { + + return false; + + } + + } + + return true; + + } + + /** + * Returns `true` if the given bounding box is intersecting this frustum. + * + * @param {Box3} box - The bounding box to test. + * @return {boolean} Whether the bounding box is intersecting this frustum or not. + */ + intersectsBox( box ) { + + const planes = this.planes; + + for ( let i = 0; i < 6; i ++ ) { + + const plane = planes[ i ]; + + // corner at max distance + + _vector$6.x = plane.normal.x > 0 ? box.max.x : box.min.x; + _vector$6.y = plane.normal.y > 0 ? box.max.y : box.min.y; + _vector$6.z = plane.normal.z > 0 ? box.max.z : box.min.z; + + if ( plane.distanceToPoint( _vector$6 ) < 0 ) { + + return false; + + } + + } + + return true; + + } + + /** + * Returns `true` if the given point lies within the frustum. + * + * @param {Vector3} point - The point to test. + * @return {boolean} Whether the point lies within this frustum or not. + */ + containsPoint( point ) { + + const planes = this.planes; + + for ( let i = 0; i < 6; i ++ ) { + + if ( planes[ i ].distanceToPoint( point ) < 0 ) { + + return false; + + } + + } + + return true; + + } + + /** + * Returns a new frustum with copied values from this instance. + * + * @return {Frustum} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + +} + +function ascIdSort( a, b ) { + + return a - b; + +} + +function sortOpaque( a, b ) { + + return a.z - b.z; + +} + +function sortTransparent( a, b ) { + + return b.z - a.z; + +} + +class MultiDrawRenderList { + + constructor() { + + this.index = 0; + this.pool = []; + this.list = []; + + } + + push( start, count, z, index ) { + + const pool = this.pool; + const list = this.list; + if ( this.index >= pool.length ) { + + pool.push( { + + start: -1, + count: -1, + z: -1, + index: -1, + + } ); + + } + + const item = pool[ this.index ]; + list.push( item ); + this.index ++; + + item.start = start; + item.count = count; + item.z = z; + item.index = index; + + } + + reset() { + + this.list.length = 0; + this.index = 0; + + } + +} + +const _matrix$1 = /*@__PURE__*/ new Matrix4(); +const _whiteColor = /*@__PURE__*/ new Color( 1, 1, 1 ); +const _frustum = /*@__PURE__*/ new Frustum(); +const _box$1 = /*@__PURE__*/ new Box3(); +const _sphere$2 = /*@__PURE__*/ new Sphere(); +const _vector$5 = /*@__PURE__*/ new Vector3(); +const _forward = /*@__PURE__*/ new Vector3(); +const _temp = /*@__PURE__*/ new Vector3(); +const _renderList = /*@__PURE__*/ new MultiDrawRenderList(); +const _mesh = /*@__PURE__*/ new Mesh(); +const _batchIntersects = []; + +// copies data from attribute "src" into "target" starting at "targetOffset" +function copyAttributeData( src, target, targetOffset = 0 ) { + + const itemSize = target.itemSize; + if ( src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor ) { + + // use the component getters and setters if the array data cannot + // be copied directly + const vertexCount = src.count; + for ( let i = 0; i < vertexCount; i ++ ) { + + for ( let c = 0; c < itemSize; c ++ ) { + + target.setComponent( i + targetOffset, c, src.getComponent( i, c ) ); + + } + + } + + } else { + + // faster copy approach using typed array set function + target.array.set( src.array, targetOffset * itemSize ); + + } + + target.needsUpdate = true; + +} + +// safely copies array contents to a potentially smaller array +function copyArrayContents( src, target ) { + + if ( src.constructor !== target.constructor ) { + + // if arrays are of a different type (eg due to index size increasing) then data must be per-element copied + const len = Math.min( src.length, target.length ); + for ( let i = 0; i < len; i ++ ) { + + target[ i ] = src[ i ]; + + } + + } else { + + // if the arrays use the same data layout we can use a fast block copy + const len = Math.min( src.length, target.length ); + target.set( new src.constructor( src.buffer, 0, len ) ); + + } + +} + +/** + * A special version of a mesh with multi draw batch rendering support. Use + * this class if you have to render a large number of objects with the same + * material but with different geometries or world transformations. The usage of + * `BatchedMesh` will help you to reduce the number of draw calls and thus improve the overall + * rendering performance in your application. + * + * ```js + * const box = new THREE.BoxGeometry( 1, 1, 1 ); + * const sphere = new THREE.SphereGeometry( 1, 12, 12 ); + * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); + * + * // initialize and add geometries into the batched mesh + * const batchedMesh = new BatchedMesh( 10, 5000, 10000, material ); + * const boxGeometryId = batchedMesh.addGeometry( box ); + * const sphereGeometryId = batchedMesh.addGeometry( sphere ); + * + * // create instances of those geometries + * const boxInstancedId1 = batchedMesh.addInstance( boxGeometryId ); + * const boxInstancedId2 = batchedMesh.addInstance( boxGeometryId ); + * + * const sphereInstancedId1 = batchedMesh.addInstance( sphereGeometryId ); + * const sphereInstancedId2 = batchedMesh.addInstance( sphereGeometryId ); + * + * // position the geometries + * batchedMesh.setMatrixAt( boxInstancedId1, boxMatrix1 ); + * batchedMesh.setMatrixAt( boxInstancedId2, boxMatrix2 ); + * + * batchedMesh.setMatrixAt( sphereInstancedId1, sphereMatrix1 ); + * batchedMesh.setMatrixAt( sphereInstancedId2, sphereMatrix2 ); + * + * scene.add( batchedMesh ); + * ``` + * + * @augments Mesh + */ +class BatchedMesh extends Mesh { + + /** + * Constructs a new batched mesh. + * + * @param {number} maxInstanceCount - The maximum number of individual instances planned to be added and rendered. + * @param {number} maxVertexCount - The maximum number of vertices to be used by all unique geometries. + * @param {number} [maxIndexCount=maxVertexCount*2] - The maximum number of indices to be used by all unique geometries + * @param {Material|Array} [material] - The mesh material. + */ + constructor( maxInstanceCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) { + + super( new BufferGeometry(), material ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isBatchedMesh = true; + + /** + * When set ot `true`, the individual objects of a batch are frustum culled. + * + * @type {boolean} + * @default true + */ + this.perObjectFrustumCulled = true; + + /** + * When set to `true`, the individual objects of a batch are sorted to improve overdraw-related artifacts. + * If the material is marked as "transparent" objects are rendered back to front and if not then they are + * rendered front to back. + * + * @type {boolean} + * @default true + */ + this.sortObjects = true; + + /** + * The bounding box of the batched mesh. Can be computed via {@link BatchedMesh#computeBoundingBox}. + * + * @type {?Box3} + * @default null + */ + this.boundingBox = null; + + /** + * The bounding sphere of the batched mesh. Can be computed via {@link BatchedMesh#computeBoundingSphere}. + * + * @type {?Sphere} + * @default null + */ + this.boundingSphere = null; + + /** + * Takes a sort a function that is run before render. The function takes a list of instances to + * sort and a camera. The objects in the list include a "z" field to perform a depth-ordered + * sort with. + * + * @type {?Function} + * @default null + */ + this.customSort = null; + + // stores visible, active, and geometry id per instance and reserved buffer ranges for geometries + this._instanceInfo = []; + this._geometryInfo = []; + + // instance, geometry ids that have been set as inactive, and are available to be overwritten + this._availableInstanceIds = []; + this._availableGeometryIds = []; + + // used to track where the next point is that geometry should be inserted + this._nextIndexStart = 0; + this._nextVertexStart = 0; + this._geometryCount = 0; + + // flags + this._visibilityChanged = true; + this._geometryInitialized = false; + + // cached user options + this._maxInstanceCount = maxInstanceCount; + this._maxVertexCount = maxVertexCount; + this._maxIndexCount = maxIndexCount; + + // buffers for multi draw + this._multiDrawCounts = new Int32Array( maxInstanceCount ); + this._multiDrawStarts = new Int32Array( maxInstanceCount ); + this._multiDrawCount = 0; + this._multiDrawInstances = null; + + // Local matrix per geometry by using data texture + this._matricesTexture = null; + this._indirectTexture = null; + this._colorsTexture = null; + + this._initMatricesTexture(); + this._initIndirectTexture(); + + } + + /** + * The maximum number of individual instances that can be stored in the batch. + * + * @type {number} + * @readonly + */ + get maxInstanceCount() { + + return this._maxInstanceCount; + + } + + /** + * The instance count. + * + * @type {number} + * @readonly + */ + get instanceCount() { + + return this._instanceInfo.length - this._availableInstanceIds.length; + + } + + /** + * The number of unused vertices. + * + * @type {number} + * @readonly + */ + get unusedVertexCount() { + + return this._maxVertexCount - this._nextVertexStart; + + } + + /** + * The number of unused indices. + * + * @type {number} + * @readonly + */ + get unusedIndexCount() { + + return this._maxIndexCount - this._nextIndexStart; + + } + + _initMatricesTexture() { + + // layout (1 matrix = 4 pixels) + // RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4) + // with 8x8 pixel texture max 16 matrices * 4 pixels = (8 * 8) + // 16x16 pixel texture max 64 matrices * 4 pixels = (16 * 16) + // 32x32 pixel texture max 256 matrices * 4 pixels = (32 * 32) + // 64x64 pixel texture max 1024 matrices * 4 pixels = (64 * 64) + + let size = Math.sqrt( this._maxInstanceCount * 4 ); // 4 pixels needed for 1 matrix + size = Math.ceil( size / 4 ) * 4; + size = Math.max( size, 4 ); + + const matricesArray = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel + const matricesTexture = new DataTexture( matricesArray, size, size, RGBAFormat, FloatType ); + + this._matricesTexture = matricesTexture; + + } + + _initIndirectTexture() { + + let size = Math.sqrt( this._maxInstanceCount ); + size = Math.ceil( size ); + + const indirectArray = new Uint32Array( size * size ); + const indirectTexture = new DataTexture( indirectArray, size, size, RedIntegerFormat, UnsignedIntType ); + + this._indirectTexture = indirectTexture; + + } + + _initColorsTexture() { + + let size = Math.sqrt( this._maxInstanceCount ); + size = Math.ceil( size ); + + // 4 floats per RGBA pixel initialized to white + const colorsArray = new Float32Array( size * size * 4 ).fill( 1 ); + const colorsTexture = new DataTexture( colorsArray, size, size, RGBAFormat, FloatType ); + colorsTexture.colorSpace = ColorManagement.workingColorSpace; + + this._colorsTexture = colorsTexture; + + } + + _initializeGeometry( reference ) { + + const geometry = this.geometry; + const maxVertexCount = this._maxVertexCount; + const maxIndexCount = this._maxIndexCount; + if ( this._geometryInitialized === false ) { + + for ( const attributeName in reference.attributes ) { + + const srcAttribute = reference.getAttribute( attributeName ); + const { array, itemSize, normalized } = srcAttribute; + + const dstArray = new array.constructor( maxVertexCount * itemSize ); + const dstAttribute = new BufferAttribute( dstArray, itemSize, normalized ); + + geometry.setAttribute( attributeName, dstAttribute ); + + } + + if ( reference.getIndex() !== null ) { + + // Reserve last u16 index for primitive restart. + const indexArray = maxVertexCount > 65535 + ? new Uint32Array( maxIndexCount ) + : new Uint16Array( maxIndexCount ); + + geometry.setIndex( new BufferAttribute( indexArray, 1 ) ); + + } + + this._geometryInitialized = true; + + } + + } + + // Make sure the geometry is compatible with the existing combined geometry attributes + _validateGeometry( geometry ) { + + // check to ensure the geometries are using consistent attributes and indices + const batchGeometry = this.geometry; + if ( Boolean( geometry.getIndex() ) !== Boolean( batchGeometry.getIndex() ) ) { + + throw new Error( 'THREE.BatchedMesh: All geometries must consistently have "index".' ); + + } + + for ( const attributeName in batchGeometry.attributes ) { + + if ( ! geometry.hasAttribute( attributeName ) ) { + + throw new Error( `THREE.BatchedMesh: Added geometry missing "${ attributeName }". All geometries must have consistent attributes.` ); + + } + + const srcAttribute = geometry.getAttribute( attributeName ); + const dstAttribute = batchGeometry.getAttribute( attributeName ); + if ( srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized ) { + + throw new Error( 'THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.' ); + + } + + } + + } + + /** + * Validates the instance defined by the given ID. + * + * @param {number} instanceId - The instance to validate. + */ + validateInstanceId( instanceId ) { + + const instanceInfo = this._instanceInfo; + if ( instanceId < 0 || instanceId >= instanceInfo.length || instanceInfo[ instanceId ].active === false ) { + + throw new Error( `THREE.BatchedMesh: Invalid instanceId ${instanceId}. Instance is either out of range or has been deleted.` ); + + } + + } + + /** + * Validates the geometry defined by the given ID. + * + * @param {number} geometryId - The geometry to validate. + */ + validateGeometryId( geometryId ) { + + const geometryInfoList = this._geometryInfo; + if ( geometryId < 0 || geometryId >= geometryInfoList.length || geometryInfoList[ geometryId ].active === false ) { + + throw new Error( `THREE.BatchedMesh: Invalid geometryId ${geometryId}. Geometry is either out of range or has been deleted.` ); + + } + + } + + /** + * Takes a sort a function that is run before render. The function takes a list of instances to + * sort and a camera. The objects in the list include a "z" field to perform a depth-ordered sort with. + * + * @param {Function} func - The custom sort function. + * @return {BatchedMesh} A reference to this batched mesh. + */ + setCustomSort( func ) { + + this.customSort = func; + return this; + + } + + /** + * Computes the bounding box, updating {@link BatchedMesh#boundingBox}. + * Bounding boxes aren't computed by default. They need to be explicitly computed, + * otherwise they are `null`. + */ + computeBoundingBox() { + + if ( this.boundingBox === null ) { + + this.boundingBox = new Box3(); + + } + + const boundingBox = this.boundingBox; + const instanceInfo = this._instanceInfo; + + boundingBox.makeEmpty(); + for ( let i = 0, l = instanceInfo.length; i < l; i ++ ) { + + if ( instanceInfo[ i ].active === false ) continue; + + const geometryId = instanceInfo[ i ].geometryIndex; + this.getMatrixAt( i, _matrix$1 ); + this.getBoundingBoxAt( geometryId, _box$1 ).applyMatrix4( _matrix$1 ); + boundingBox.union( _box$1 ); + + } + + } + + /** + * Computes the bounding sphere, updating {@link BatchedMesh#boundingSphere}. + * Bounding spheres aren't computed by default. They need to be explicitly computed, + * otherwise they are `null`. + */ + computeBoundingSphere() { + + if ( this.boundingSphere === null ) { + + this.boundingSphere = new Sphere(); + + } + + const boundingSphere = this.boundingSphere; + const instanceInfo = this._instanceInfo; + + boundingSphere.makeEmpty(); + for ( let i = 0, l = instanceInfo.length; i < l; i ++ ) { + + if ( instanceInfo[ i ].active === false ) continue; + + const geometryId = instanceInfo[ i ].geometryIndex; + this.getMatrixAt( i, _matrix$1 ); + this.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 ); + boundingSphere.union( _sphere$2 ); + + } + + } + + /** + * Adds a new instance to the batch using the geometry of the given ID and returns + * a new id referring to the new instance to be used by other functions. + * + * @param {number} geometryId - The ID of a previously added geometry via {@link BatchedMesh#addGeometry}. + * @return {number} The instance ID. + */ + addInstance( geometryId ) { + + const atCapacity = this._instanceInfo.length >= this.maxInstanceCount; + + // ensure we're not over geometry + if ( atCapacity && this._availableInstanceIds.length === 0 ) { + + throw new Error( 'THREE.BatchedMesh: Maximum item count reached.' ); + + } + + const instanceInfo = { + visible: true, + active: true, + geometryIndex: geometryId, + }; + + let drawId = null; + + // Prioritize using previously freed instance ids + if ( this._availableInstanceIds.length > 0 ) { + + this._availableInstanceIds.sort( ascIdSort ); + + drawId = this._availableInstanceIds.shift(); + this._instanceInfo[ drawId ] = instanceInfo; + + } else { + + drawId = this._instanceInfo.length; + this._instanceInfo.push( instanceInfo ); + + } + + const matricesTexture = this._matricesTexture; + _matrix$1.identity().toArray( matricesTexture.image.data, drawId * 16 ); + matricesTexture.needsUpdate = true; + + const colorsTexture = this._colorsTexture; + if ( colorsTexture ) { + + _whiteColor.toArray( colorsTexture.image.data, drawId * 4 ); + colorsTexture.needsUpdate = true; + + } + + this._visibilityChanged = true; + return drawId; + + } + + /** + * Adds the given geometry to the batch and returns the associated + * geometry id referring to it to be used in other functions. + * + * @param {BufferGeometry} geometry - The geometry to add. + * @param {number} [reservedVertexCount=-1] - Optional parameter specifying the amount of + * vertex buffer space to reserve for the added geometry. This is necessary if it is planned + * to set a new geometry at this index at a later time that is larger than the original geometry. + * Defaults to the length of the given geometry vertex buffer. + * @param {number} [reservedIndexCount=-1] - Optional parameter specifying the amount of index + * buffer space to reserve for the added geometry. This is necessary if it is planned to set a + * new geometry at this index at a later time that is larger than the original geometry. Defaults to + * the length of the given geometry index buffer. + * @return {number} The geometry ID. + */ + addGeometry( geometry, reservedVertexCount = -1, reservedIndexCount = -1 ) { + + this._initializeGeometry( geometry ); + + this._validateGeometry( geometry ); + + const geometryInfo = { + // geometry information + vertexStart: -1, + vertexCount: -1, + reservedVertexCount: -1, + + indexStart: -1, + indexCount: -1, + reservedIndexCount: -1, + + // draw range information + start: -1, + count: -1, + + // state + boundingBox: null, + boundingSphere: null, + active: true, + }; + + const geometryInfoList = this._geometryInfo; + geometryInfo.vertexStart = this._nextVertexStart; + geometryInfo.reservedVertexCount = reservedVertexCount === -1 ? geometry.getAttribute( 'position' ).count : reservedVertexCount; + + const index = geometry.getIndex(); + const hasIndex = index !== null; + if ( hasIndex ) { + + geometryInfo.indexStart = this._nextIndexStart; + geometryInfo.reservedIndexCount = reservedIndexCount === -1 ? index.count : reservedIndexCount; + + } + + if ( + geometryInfo.indexStart !== -1 && + geometryInfo.indexStart + geometryInfo.reservedIndexCount > this._maxIndexCount || + geometryInfo.vertexStart + geometryInfo.reservedVertexCount > this._maxVertexCount + ) { + + throw new Error( 'THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.' ); + + } + + // update id + let geometryId; + if ( this._availableGeometryIds.length > 0 ) { + + this._availableGeometryIds.sort( ascIdSort ); + + geometryId = this._availableGeometryIds.shift(); + geometryInfoList[ geometryId ] = geometryInfo; + + + } else { + + geometryId = this._geometryCount; + this._geometryCount ++; + geometryInfoList.push( geometryInfo ); + + } + + // update the geometry + this.setGeometryAt( geometryId, geometry ); + + // increment the next geometry position + this._nextIndexStart = geometryInfo.indexStart + geometryInfo.reservedIndexCount; + this._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount; + + return geometryId; + + } + + /** + * Replaces the geometry at the given ID with the provided geometry. Throws an error if there + * is not enough space reserved for geometry. Calling this will change all instances that are + * rendering that geometry. + * + * @param {number} geometryId - The ID of the geometry that should be replaced with the given geometry. + * @param {BufferGeometry} geometry - The new geometry. + * @return {number} The geometry ID. + */ + setGeometryAt( geometryId, geometry ) { + + if ( geometryId >= this._geometryCount ) { + + throw new Error( 'THREE.BatchedMesh: Maximum geometry count reached.' ); + + } + + this._validateGeometry( geometry ); + + const batchGeometry = this.geometry; + const hasIndex = batchGeometry.getIndex() !== null; + const dstIndex = batchGeometry.getIndex(); + const srcIndex = geometry.getIndex(); + const geometryInfo = this._geometryInfo[ geometryId ]; + if ( + hasIndex && + srcIndex.count > geometryInfo.reservedIndexCount || + geometry.attributes.position.count > geometryInfo.reservedVertexCount + ) { + + throw new Error( 'THREE.BatchedMesh: Reserved space not large enough for provided geometry.' ); + + } + + // copy geometry buffer data over + const vertexStart = geometryInfo.vertexStart; + const reservedVertexCount = geometryInfo.reservedVertexCount; + geometryInfo.vertexCount = geometry.getAttribute( 'position' ).count; + + for ( const attributeName in batchGeometry.attributes ) { + + // copy attribute data + const srcAttribute = geometry.getAttribute( attributeName ); + const dstAttribute = batchGeometry.getAttribute( attributeName ); + copyAttributeData( srcAttribute, dstAttribute, vertexStart ); + + // fill the rest in with zeroes + const itemSize = srcAttribute.itemSize; + for ( let i = srcAttribute.count, l = reservedVertexCount; i < l; i ++ ) { + + const index = vertexStart + i; + for ( let c = 0; c < itemSize; c ++ ) { + + dstAttribute.setComponent( index, c, 0 ); + + } + + } + + dstAttribute.needsUpdate = true; + dstAttribute.addUpdateRange( vertexStart * itemSize, reservedVertexCount * itemSize ); + + } + + // copy index + if ( hasIndex ) { + + const indexStart = geometryInfo.indexStart; + const reservedIndexCount = geometryInfo.reservedIndexCount; + geometryInfo.indexCount = geometry.getIndex().count; + + // copy index data over + for ( let i = 0; i < srcIndex.count; i ++ ) { + + dstIndex.setX( indexStart + i, vertexStart + srcIndex.getX( i ) ); + + } + + // fill the rest in with zeroes + for ( let i = srcIndex.count, l = reservedIndexCount; i < l; i ++ ) { + + dstIndex.setX( indexStart + i, vertexStart ); + + } + + dstIndex.needsUpdate = true; + dstIndex.addUpdateRange( indexStart, geometryInfo.reservedIndexCount ); + + } + + // update the draw range + geometryInfo.start = hasIndex ? geometryInfo.indexStart : geometryInfo.vertexStart; + geometryInfo.count = hasIndex ? geometryInfo.indexCount : geometryInfo.vertexCount; + + // store the bounding boxes + geometryInfo.boundingBox = null; + if ( geometry.boundingBox !== null ) { + + geometryInfo.boundingBox = geometry.boundingBox.clone(); + + } + + geometryInfo.boundingSphere = null; + if ( geometry.boundingSphere !== null ) { + + geometryInfo.boundingSphere = geometry.boundingSphere.clone(); + + } + + this._visibilityChanged = true; + return geometryId; + + } + + /** + * Deletes the geometry defined by the given ID from this batch. Any instances referencing + * this geometry will also be removed as a side effect. + * + * @param {number} geometryId - The ID of the geometry to remove from the batch. + * @return {BatchedMesh} A reference to this batched mesh. + */ + deleteGeometry( geometryId ) { + + const geometryInfoList = this._geometryInfo; + if ( geometryId >= geometryInfoList.length || geometryInfoList[ geometryId ].active === false ) { + + return this; + + } + + // delete any instances associated with this geometry + const instanceInfo = this._instanceInfo; + for ( let i = 0, l = instanceInfo.length; i < l; i ++ ) { + + if ( instanceInfo[ i ].active && instanceInfo[ i ].geometryIndex === geometryId ) { + + this.deleteInstance( i ); + + } + + } + + geometryInfoList[ geometryId ].active = false; + this._availableGeometryIds.push( geometryId ); + this._visibilityChanged = true; + + return this; + + } + + /** + * Deletes an existing instance from the batch using the given ID. + * + * @param {number} instanceId - The ID of the instance to remove from the batch. + * @return {BatchedMesh} A reference to this batched mesh. + */ + deleteInstance( instanceId ) { + + this.validateInstanceId( instanceId ); + + this._instanceInfo[ instanceId ].active = false; + this._availableInstanceIds.push( instanceId ); + this._visibilityChanged = true; + + return this; + + } + + /** + * Repacks the sub geometries in [name] to remove any unused space remaining from + * previously deleted geometry, freeing up space to add new geometry. + * + * @param {number} instanceId - The ID of the instance to remove from the batch. + * @return {BatchedMesh} A reference to this batched mesh. + */ + optimize() { + + // track the next indices to copy data to + let nextVertexStart = 0; + let nextIndexStart = 0; + + // Iterate over all geometry ranges in order sorted from earliest in the geometry buffer to latest + // in the geometry buffer. Because draw range objects can be reused there is no guarantee of their order. + const geometryInfoList = this._geometryInfo; + const indices = geometryInfoList + .map( ( e, i ) => i ) + .sort( ( a, b ) => { + + return geometryInfoList[ a ].vertexStart - geometryInfoList[ b ].vertexStart; + + } ); + + const geometry = this.geometry; + for ( let i = 0, l = geometryInfoList.length; i < l; i ++ ) { + + // if a geometry range is inactive then don't copy anything + const index = indices[ i ]; + const geometryInfo = geometryInfoList[ index ]; + if ( geometryInfo.active === false ) { + + continue; + + } + + // if a geometry contains an index buffer then shift it, as well + if ( geometry.index !== null ) { + + if ( geometryInfo.indexStart !== nextIndexStart ) { + + const { indexStart, vertexStart, reservedIndexCount } = geometryInfo; + const index = geometry.index; + const array = index.array; + + // shift the index pointers based on how the vertex data will shift + // adjusting the index must happen first so the original vertex start value is available + const elementDelta = nextVertexStart - vertexStart; + for ( let j = indexStart; j < indexStart + reservedIndexCount; j ++ ) { + + array[ j ] = array[ j ] + elementDelta; + + } + + index.array.copyWithin( nextIndexStart, indexStart, indexStart + reservedIndexCount ); + index.addUpdateRange( nextIndexStart, reservedIndexCount ); + + geometryInfo.indexStart = nextIndexStart; + + } + + nextIndexStart += geometryInfo.reservedIndexCount; + + } + + // if a geometry needs to be moved then copy attribute data to overwrite unused space + if ( geometryInfo.vertexStart !== nextVertexStart ) { + + const { vertexStart, reservedVertexCount } = geometryInfo; + const attributes = geometry.attributes; + for ( const key in attributes ) { + + const attribute = attributes[ key ]; + const { array, itemSize } = attribute; + array.copyWithin( nextVertexStart * itemSize, vertexStart * itemSize, ( vertexStart + reservedVertexCount ) * itemSize ); + attribute.addUpdateRange( nextVertexStart * itemSize, reservedVertexCount * itemSize ); + + } + + geometryInfo.vertexStart = nextVertexStart; + + } + + nextVertexStart += geometryInfo.reservedVertexCount; + geometryInfo.start = geometry.index ? geometryInfo.indexStart : geometryInfo.vertexStart; + + // step the next geometry points to the shifted position + this._nextIndexStart = geometry.index ? geometryInfo.indexStart + geometryInfo.reservedIndexCount : 0; + this._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount; + + } + + return this; + + } + + /** + * Returns the bounding box for the given geometry. + * + * @param {number} geometryId - The ID of the geometry to return the bounding box for. + * @param {Box3} target - The target object that is used to store the method's result. + * @return {Box3|null} The geometry's bounding box. Returns `null` if no geometry has been found for the given ID. + */ + getBoundingBoxAt( geometryId, target ) { + + if ( geometryId >= this._geometryCount ) { + + return null; + + } + + // compute bounding box + const geometry = this.geometry; + const geometryInfo = this._geometryInfo[ geometryId ]; + if ( geometryInfo.boundingBox === null ) { + + const box = new Box3(); + const index = geometry.index; + const position = geometry.attributes.position; + for ( let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i ++ ) { + + let iv = i; + if ( index ) { + + iv = index.getX( iv ); + + } + + box.expandByPoint( _vector$5.fromBufferAttribute( position, iv ) ); + + } + + geometryInfo.boundingBox = box; + + } + + target.copy( geometryInfo.boundingBox ); + return target; + + } + + /** + * Returns the bounding sphere for the given geometry. + * + * @param {number} geometryId - The ID of the geometry to return the bounding sphere for. + * @param {Sphere} target - The target object that is used to store the method's result. + * @return {Sphere|null} The geometry's bounding sphere. Returns `null` if no geometry has been found for the given ID. + */ + getBoundingSphereAt( geometryId, target ) { + + if ( geometryId >= this._geometryCount ) { + + return null; + + } + + // compute bounding sphere + const geometry = this.geometry; + const geometryInfo = this._geometryInfo[ geometryId ]; + if ( geometryInfo.boundingSphere === null ) { + + const sphere = new Sphere(); + this.getBoundingBoxAt( geometryId, _box$1 ); + _box$1.getCenter( sphere.center ); + + const index = geometry.index; + const position = geometry.attributes.position; + + let maxRadiusSq = 0; + for ( let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i ++ ) { + + let iv = i; + if ( index ) { + + iv = index.getX( iv ); + + } + + _vector$5.fromBufferAttribute( position, iv ); + maxRadiusSq = Math.max( maxRadiusSq, sphere.center.distanceToSquared( _vector$5 ) ); + + } + + sphere.radius = Math.sqrt( maxRadiusSq ); + geometryInfo.boundingSphere = sphere; + + } + + target.copy( geometryInfo.boundingSphere ); + return target; + + } + + /** + * Sets the given local transformation matrix to the defined instance. + * Negatively scaled matrices are not supported. + * + * @param {number} instanceId - The ID of an instance to set the matrix of. + * @param {Matrix4} matrix - A 4x4 matrix representing the local transformation of a single instance. + * @return {BatchedMesh} A reference to this batched mesh. + */ + setMatrixAt( instanceId, matrix ) { + + this.validateInstanceId( instanceId ); + + const matricesTexture = this._matricesTexture; + const matricesArray = this._matricesTexture.image.data; + matrix.toArray( matricesArray, instanceId * 16 ); + matricesTexture.needsUpdate = true; + + return this; + + } + + /** + * Returns the local transformation matrix of the defined instance. + * + * @param {number} instanceId - The ID of an instance to get the matrix of. + * @param {Matrix4} matrix - The target object that is used to store the method's result. + * @return {Matrix4} The instance's local transformation matrix. + */ + getMatrixAt( instanceId, matrix ) { + + this.validateInstanceId( instanceId ); + return matrix.fromArray( this._matricesTexture.image.data, instanceId * 16 ); + + } + + /** + * Sets the given color to the defined instance. + * + * @param {number} instanceId - The ID of an instance to set the color of. + * @param {Color} color - The color to set the instance to. + * @return {BatchedMesh} A reference to this batched mesh. + */ + setColorAt( instanceId, color ) { + + this.validateInstanceId( instanceId ); + + if ( this._colorsTexture === null ) { + + this._initColorsTexture(); + + } + + color.toArray( this._colorsTexture.image.data, instanceId * 4 ); + this._colorsTexture.needsUpdate = true; + + return this; + + } + + /** + * Returns the color of the defined instance. + * + * @param {number} instanceId - The ID of an instance to get the color of. + * @param {Color} color - The target object that is used to store the method's result. + * @return {Color} The instance's color. + */ + getColorAt( instanceId, color ) { + + this.validateInstanceId( instanceId ); + return color.fromArray( this._colorsTexture.image.data, instanceId * 4 ); + + } + + /** + * Sets the visibility of the instance. + * + * @param {number} instanceId - The id of the instance to set the visibility of. + * @param {boolean} visible - Whether the instance is visible or not. + * @return {BatchedMesh} A reference to this batched mesh. + */ + setVisibleAt( instanceId, visible ) { + + this.validateInstanceId( instanceId ); + + if ( this._instanceInfo[ instanceId ].visible === visible ) { + + return this; + + } + + this._instanceInfo[ instanceId ].visible = visible; + this._visibilityChanged = true; + + return this; + + } + + /** + * Returns the visibility state of the defined instance. + * + * @param {number} instanceId - The ID of an instance to get the visibility state of. + * @return {boolean} Whether the instance is visible or not. + */ + getVisibleAt( instanceId ) { + + this.validateInstanceId( instanceId ); + + return this._instanceInfo[ instanceId ].visible; + + } + + /** + * Sets the geometry ID of the instance at the given index. + * + * @param {number} instanceId - The ID of the instance to set the geometry ID of. + * @param {number} geometryId - The geometry ID to be use by the instance. + * @return {BatchedMesh} A reference to this batched mesh. + */ + setGeometryIdAt( instanceId, geometryId ) { + + this.validateInstanceId( instanceId ); + this.validateGeometryId( geometryId ); + + this._instanceInfo[ instanceId ].geometryIndex = geometryId; + + return this; + + } + + /** + * Returns the geometry ID of the defined instance. + * + * @param {number} instanceId - The ID of an instance to get the geometry ID of. + * @return {number} The instance's geometry ID. + */ + getGeometryIdAt( instanceId ) { + + this.validateInstanceId( instanceId ); + + return this._instanceInfo[ instanceId ].geometryIndex; + + } + + /** + * Get the range representing the subset of triangles related to the attached geometry, + * indicating the starting offset and count, or `null` if invalid. + * + * @param {number} geometryId - The id of the geometry to get the range of. + * @param {Object} [target] - The target object that is used to store the method's result. + * @return {{ + * vertexStart:number,vertexCount:number,reservedVertexCount:number, + * indexStart:number,indexCount:number,reservedIndexCount:number, + * start:number,count:number + * }} The result object with range data. + */ + getGeometryRangeAt( geometryId, target = {} ) { + + this.validateGeometryId( geometryId ); + + const geometryInfo = this._geometryInfo[ geometryId ]; + target.vertexStart = geometryInfo.vertexStart; + target.vertexCount = geometryInfo.vertexCount; + target.reservedVertexCount = geometryInfo.reservedVertexCount; + + target.indexStart = geometryInfo.indexStart; + target.indexCount = geometryInfo.indexCount; + target.reservedIndexCount = geometryInfo.reservedIndexCount; + + target.start = geometryInfo.start; + target.count = geometryInfo.count; + + return target; + + } + + /** + * Resizes the necessary buffers to support the provided number of instances. + * If the provided arguments shrink the number of instances but there are not enough + * unused Ids at the end of the list then an error is thrown. + * + * @param {number} maxInstanceCount - The max number of individual instances that can be added and rendered by the batch. + */ + setInstanceCount( maxInstanceCount ) { + + // shrink the available instances as much as possible + const availableInstanceIds = this._availableInstanceIds; + const instanceInfo = this._instanceInfo; + availableInstanceIds.sort( ascIdSort ); + while ( availableInstanceIds[ availableInstanceIds.length - 1 ] === instanceInfo.length ) { + + instanceInfo.pop(); + availableInstanceIds.pop(); + + } + + // throw an error if it can't be shrunk to the desired size + if ( maxInstanceCount < instanceInfo.length ) { + + throw new Error( `BatchedMesh: Instance ids outside the range ${ maxInstanceCount } are being used. Cannot shrink instance count.` ); + + } + + // copy the multi draw counts + const multiDrawCounts = new Int32Array( maxInstanceCount ); + const multiDrawStarts = new Int32Array( maxInstanceCount ); + copyArrayContents( this._multiDrawCounts, multiDrawCounts ); + copyArrayContents( this._multiDrawStarts, multiDrawStarts ); + + this._multiDrawCounts = multiDrawCounts; + this._multiDrawStarts = multiDrawStarts; + this._maxInstanceCount = maxInstanceCount; + + // update texture data for instance sampling + const indirectTexture = this._indirectTexture; + const matricesTexture = this._matricesTexture; + const colorsTexture = this._colorsTexture; + + indirectTexture.dispose(); + this._initIndirectTexture(); + copyArrayContents( indirectTexture.image.data, this._indirectTexture.image.data ); + + matricesTexture.dispose(); + this._initMatricesTexture(); + copyArrayContents( matricesTexture.image.data, this._matricesTexture.image.data ); + + if ( colorsTexture ) { + + colorsTexture.dispose(); + this._initColorsTexture(); + copyArrayContents( colorsTexture.image.data, this._colorsTexture.image.data ); + + } + + } + + /** + * Resizes the available space in the batch's vertex and index buffer attributes to the provided sizes. + * If the provided arguments shrink the geometry buffers but there is not enough unused space at the + * end of the geometry attributes then an error is thrown. + * + * @param {number} maxVertexCount - The maximum number of vertices to be used by all unique geometries to resize to. + * @param {number} maxIndexCount - The maximum number of indices to be used by all unique geometries to resize to. + */ + setGeometrySize( maxVertexCount, maxIndexCount ) { + + // Check if we can shrink to the requested vertex attribute size + const validRanges = [ ...this._geometryInfo ].filter( info => info.active ); + const requiredVertexLength = Math.max( ...validRanges.map( range => range.vertexStart + range.reservedVertexCount ) ); + if ( requiredVertexLength > maxVertexCount ) { + + throw new Error( `BatchedMesh: Geometry vertex values are being used outside the range ${ maxIndexCount }. Cannot shrink further.` ); + + } + + // Check if we can shrink to the requested index attribute size + if ( this.geometry.index ) { + + const requiredIndexLength = Math.max( ...validRanges.map( range => range.indexStart + range.reservedIndexCount ) ); + if ( requiredIndexLength > maxIndexCount ) { + + throw new Error( `BatchedMesh: Geometry index values are being used outside the range ${ maxIndexCount }. Cannot shrink further.` ); + + } + + } + + // + + // dispose of the previous geometry + const oldGeometry = this.geometry; + oldGeometry.dispose(); + + // recreate the geometry needed based on the previous variant + this._maxVertexCount = maxVertexCount; + this._maxIndexCount = maxIndexCount; + + if ( this._geometryInitialized ) { + + this._geometryInitialized = false; + this.geometry = new BufferGeometry(); + this._initializeGeometry( oldGeometry ); + + } + + // copy data from the previous geometry + const geometry = this.geometry; + if ( oldGeometry.index ) { + + copyArrayContents( oldGeometry.index.array, geometry.index.array ); + + } + + for ( const key in oldGeometry.attributes ) { + + copyArrayContents( oldGeometry.attributes[ key ].array, geometry.attributes[ key ].array ); + + } + + } + + raycast( raycaster, intersects ) { + + const instanceInfo = this._instanceInfo; + const geometryInfoList = this._geometryInfo; + const matrixWorld = this.matrixWorld; + const batchGeometry = this.geometry; + + // iterate over each geometry + _mesh.material = this.material; + _mesh.geometry.index = batchGeometry.index; + _mesh.geometry.attributes = batchGeometry.attributes; + if ( _mesh.geometry.boundingBox === null ) { + + _mesh.geometry.boundingBox = new Box3(); + + } + + if ( _mesh.geometry.boundingSphere === null ) { + + _mesh.geometry.boundingSphere = new Sphere(); + + } + + for ( let i = 0, l = instanceInfo.length; i < l; i ++ ) { + + if ( ! instanceInfo[ i ].visible || ! instanceInfo[ i ].active ) { + + continue; + + } + + const geometryId = instanceInfo[ i ].geometryIndex; + const geometryInfo = geometryInfoList[ geometryId ]; + _mesh.geometry.setDrawRange( geometryInfo.start, geometryInfo.count ); + + // get the intersects + this.getMatrixAt( i, _mesh.matrixWorld ).premultiply( matrixWorld ); + this.getBoundingBoxAt( geometryId, _mesh.geometry.boundingBox ); + this.getBoundingSphereAt( geometryId, _mesh.geometry.boundingSphere ); + _mesh.raycast( raycaster, _batchIntersects ); + + // add batch id to the intersects + for ( let j = 0, l = _batchIntersects.length; j < l; j ++ ) { + + const intersect = _batchIntersects[ j ]; + intersect.object = this; + intersect.batchId = i; + intersects.push( intersect ); + + } + + _batchIntersects.length = 0; + + } + + _mesh.material = null; + _mesh.geometry.index = null; + _mesh.geometry.attributes = {}; + _mesh.geometry.setDrawRange( 0, Infinity ); + + } + + copy( source ) { + + super.copy( source ); + + this.geometry = source.geometry.clone(); + this.perObjectFrustumCulled = source.perObjectFrustumCulled; + this.sortObjects = source.sortObjects; + this.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null; + this.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null; + + this._geometryInfo = source._geometryInfo.map( info => ( { + ...info, + + boundingBox: info.boundingBox !== null ? info.boundingBox.clone() : null, + boundingSphere: info.boundingSphere !== null ? info.boundingSphere.clone() : null, + } ) ); + this._instanceInfo = source._instanceInfo.map( info => ( { ...info } ) ); + + this._maxInstanceCount = source._maxInstanceCount; + this._maxVertexCount = source._maxVertexCount; + this._maxIndexCount = source._maxIndexCount; + + this._geometryInitialized = source._geometryInitialized; + this._geometryCount = source._geometryCount; + this._multiDrawCounts = source._multiDrawCounts.slice(); + this._multiDrawStarts = source._multiDrawStarts.slice(); + + this._matricesTexture = source._matricesTexture.clone(); + this._matricesTexture.image.data = this._matricesTexture.image.data.slice(); + + if ( this._colorsTexture !== null ) { + + this._colorsTexture = source._colorsTexture.clone(); + this._colorsTexture.image.data = this._colorsTexture.image.data.slice(); + + } + + return this; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + // Assuming the geometry is not shared with other meshes + this.geometry.dispose(); + + this._matricesTexture.dispose(); + this._matricesTexture = null; + + this._indirectTexture.dispose(); + this._indirectTexture = null; + + if ( this._colorsTexture !== null ) { + + this._colorsTexture.dispose(); + this._colorsTexture = null; + + } + + } + + onBeforeRender( renderer, scene, camera, geometry, material/*, _group*/ ) { + + // if visibility has not changed and frustum culling and object sorting is not required + // then skip iterating over all items + if ( ! this._visibilityChanged && ! this.perObjectFrustumCulled && ! this.sortObjects ) { + + return; + + } + + // the indexed version of the multi draw function requires specifying the start + // offset in bytes. + const index = geometry.getIndex(); + const bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT; + + const instanceInfo = this._instanceInfo; + const multiDrawStarts = this._multiDrawStarts; + const multiDrawCounts = this._multiDrawCounts; + const geometryInfoList = this._geometryInfo; + const perObjectFrustumCulled = this.perObjectFrustumCulled; + const indirectTexture = this._indirectTexture; + const indirectArray = indirectTexture.image.data; + + // prepare the frustum in the local frame + if ( perObjectFrustumCulled ) { + + _matrix$1 + .multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse ) + .multiply( this.matrixWorld ); + _frustum.setFromProjectionMatrix( + _matrix$1, + renderer.coordinateSystem + ); + + } + + let multiDrawCount = 0; + if ( this.sortObjects ) { + + // get the camera position in the local frame + _matrix$1.copy( this.matrixWorld ).invert(); + _vector$5.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4( _matrix$1 ); + _forward.set( 0, 0, -1 ).transformDirection( camera.matrixWorld ).transformDirection( _matrix$1 ); + + for ( let i = 0, l = instanceInfo.length; i < l; i ++ ) { + + if ( instanceInfo[ i ].visible && instanceInfo[ i ].active ) { + + const geometryId = instanceInfo[ i ].geometryIndex; + + // get the bounds in world space + this.getMatrixAt( i, _matrix$1 ); + this.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 ); + + // determine whether the batched geometry is within the frustum + let culled = false; + if ( perObjectFrustumCulled ) { + + culled = ! _frustum.intersectsSphere( _sphere$2 ); + + } + + if ( ! culled ) { + + // get the distance from camera used for sorting + const geometryInfo = geometryInfoList[ geometryId ]; + const z = _temp.subVectors( _sphere$2.center, _vector$5 ).dot( _forward ); + _renderList.push( geometryInfo.start, geometryInfo.count, z, i ); + + } + + } + + } + + // Sort the draw ranges and prep for rendering + const list = _renderList.list; + const customSort = this.customSort; + if ( customSort === null ) { + + list.sort( material.transparent ? sortTransparent : sortOpaque ); + + } else { + + customSort.call( this, list, camera ); + + } + + for ( let i = 0, l = list.length; i < l; i ++ ) { + + const item = list[ i ]; + multiDrawStarts[ multiDrawCount ] = item.start * bytesPerElement; + multiDrawCounts[ multiDrawCount ] = item.count; + indirectArray[ multiDrawCount ] = item.index; + multiDrawCount ++; + + } + + _renderList.reset(); + + } else { + + for ( let i = 0, l = instanceInfo.length; i < l; i ++ ) { + + if ( instanceInfo[ i ].visible && instanceInfo[ i ].active ) { + + const geometryId = instanceInfo[ i ].geometryIndex; + + // determine whether the batched geometry is within the frustum + let culled = false; + if ( perObjectFrustumCulled ) { + + // get the bounds in world space + this.getMatrixAt( i, _matrix$1 ); + this.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 ); + culled = ! _frustum.intersectsSphere( _sphere$2 ); + + } + + if ( ! culled ) { + + const geometryInfo = geometryInfoList[ geometryId ]; + multiDrawStarts[ multiDrawCount ] = geometryInfo.start * bytesPerElement; + multiDrawCounts[ multiDrawCount ] = geometryInfo.count; + indirectArray[ multiDrawCount ] = i; + multiDrawCount ++; + + } + + } + + } + + } + + indirectTexture.needsUpdate = true; + this._multiDrawCount = multiDrawCount; + this._visibilityChanged = false; + + } + + onBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial/* , group */ ) { + + this.onBeforeRender( renderer, null, shadowCamera, geometry, depthMaterial ); + + } + +} + +/** + * A material for rendering line primitives. + * + * Materials define the appearance of renderable 3D objects. + * + * ```js + * const material = new THREE.LineBasicMaterial( { color: 0xffffff } ); + * ``` + * + * @augments Material + */ +class LineBasicMaterial extends Material { + + /** + * Constructs a new line basic material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isLineBasicMaterial = true; + + this.type = 'LineBasicMaterial'; + + /** + * Color of the material. + * + * @type {Color} + * @default (1,1,1) + */ + this.color = new Color( 0xffffff ); + + /** + * Sets the color of the lines using data from a texture. The texture map + * color is modulated by the diffuse `color`. + * + * @type {?Texture} + * @default null + */ + this.map = null; + + /** + * Controls line thickness or lines. + * + * Can only be used with {@link SVGRenderer}. WebGL and WebGPU + * ignore this setting and always render line primitives with a + * width of one pixel. + * + * @type {number} + * @default 1 + */ + this.linewidth = 1; + + /** + * Defines appearance of line ends. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {('butt'|'round'|'square')} + * @default 'round' + */ + this.linecap = 'round'; + + /** + * Defines appearance of line joints. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {('round'|'bevel'|'miter')} + * @default 'round' + */ + this.linejoin = 'round'; + + /** + * Whether the material is affected by fog or not. + * + * @type {boolean} + * @default true + */ + this.fog = true; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.linewidth = source.linewidth; + this.linecap = source.linecap; + this.linejoin = source.linejoin; + + this.fog = source.fog; + + return this; + + } + +} + +const _vStart = /*@__PURE__*/ new Vector3(); +const _vEnd = /*@__PURE__*/ new Vector3(); + +const _inverseMatrix$1 = /*@__PURE__*/ new Matrix4(); +const _ray$1 = /*@__PURE__*/ new Ray(); +const _sphere$1 = /*@__PURE__*/ new Sphere(); + +const _intersectPointOnRay = /*@__PURE__*/ new Vector3(); +const _intersectPointOnSegment = /*@__PURE__*/ new Vector3(); + +/** + * A continuous line. The line are rendered by connecting consecutive + * vertices with straight lines. + * + * ```js + * const material = new THREE.LineBasicMaterial( { color: 0x0000ff } ); + * + * const points = []; + * points.push( new THREE.Vector3( - 10, 0, 0 ) ); + * points.push( new THREE.Vector3( 0, 10, 0 ) ); + * points.push( new THREE.Vector3( 10, 0, 0 ) ); + * + * const geometry = new THREE.BufferGeometry().setFromPoints( points ); + * + * const line = new THREE.Line( geometry, material ); + * scene.add( line ); + * ``` + * + * @augments Object3D + */ +class Line extends Object3D { + + /** + * Constructs a new line. + * + * @param {BufferGeometry} [geometry] - The line geometry. + * @param {Material|Array} [material] - The line material. + */ + constructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isLine = true; + + this.type = 'Line'; + + /** + * The line geometry. + * + * @type {BufferGeometry} + */ + this.geometry = geometry; + + /** + * The line material. + * + * @type {Material|Array} + * @default LineBasicMaterial + */ + this.material = material; + + /** + * A dictionary representing the morph targets in the geometry. The key is the + * morph targets name, the value its attribute index. This member is `undefined` + * by default and only set when morph targets are detected in the geometry. + * + * @type {Object|undefined} + * @default undefined + */ + this.morphTargetDictionary = undefined; + + /** + * An array of weights typically in the range `[0,1]` that specify how much of the morph + * is applied. This member is `undefined` by default and only set when morph targets are + * detected in the geometry. + * + * @type {Array|undefined} + * @default undefined + */ + this.morphTargetInfluences = undefined; + + this.updateMorphTargets(); + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + this.material = Array.isArray( source.material ) ? source.material.slice() : source.material; + this.geometry = source.geometry; + + return this; + + } + + /** + * Computes an array of distance values which are necessary for rendering dashed lines. + * For each vertex in the geometry, the method calculates the cumulative length from the + * current point to the very beginning of the line. + * + * @return {Line} A reference to this line. + */ + computeLineDistances() { + + const geometry = this.geometry; + + // we assume non-indexed geometry + + if ( geometry.index === null ) { + + const positionAttribute = geometry.attributes.position; + const lineDistances = [ 0 ]; + + for ( let i = 1, l = positionAttribute.count; i < l; i ++ ) { + + _vStart.fromBufferAttribute( positionAttribute, i - 1 ); + _vEnd.fromBufferAttribute( positionAttribute, i ); + + lineDistances[ i ] = lineDistances[ i - 1 ]; + lineDistances[ i ] += _vStart.distanceTo( _vEnd ); + + } + + geometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); + + } else { + + console.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); + + } + + return this; + + } + + /** + * Computes intersection points between a casted ray and this line. + * + * @param {Raycaster} raycaster - The raycaster. + * @param {Array} intersects - The target array that holds the intersection points. + */ + raycast( raycaster, intersects ) { + + const geometry = this.geometry; + const matrixWorld = this.matrixWorld; + const threshold = raycaster.params.Line.threshold; + const drawRange = geometry.drawRange; + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + + _sphere$1.copy( geometry.boundingSphere ); + _sphere$1.applyMatrix4( matrixWorld ); + _sphere$1.radius += threshold; + + if ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return; + + // + + _inverseMatrix$1.copy( matrixWorld ).invert(); + _ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 ); + + const localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); + const localThresholdSq = localThreshold * localThreshold; + + const step = this.isLineSegments ? 2 : 1; + + const index = geometry.index; + const attributes = geometry.attributes; + const positionAttribute = attributes.position; + + if ( index !== null ) { + + const start = Math.max( 0, drawRange.start ); + const end = Math.min( index.count, ( drawRange.start + drawRange.count ) ); + + for ( let i = start, l = end - 1; i < l; i += step ) { + + const a = index.getX( i ); + const b = index.getX( i + 1 ); + + const intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b, i ); + + if ( intersect ) { + + intersects.push( intersect ); + + } + + } + + if ( this.isLineLoop ) { + + const a = index.getX( end - 1 ); + const b = index.getX( start ); + + const intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b, end - 1 ); + + if ( intersect ) { + + intersects.push( intersect ); + + } + + } + + } else { + + const start = Math.max( 0, drawRange.start ); + const end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) ); + + for ( let i = start, l = end - 1; i < l; i += step ) { + + const intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, i, i + 1, i ); + + if ( intersect ) { + + intersects.push( intersect ); + + } + + } + + if ( this.isLineLoop ) { + + const intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, end - 1, start, end - 1 ); + + if ( intersect ) { + + intersects.push( intersect ); + + } + + } + + } + + } + + /** + * Sets the values of {@link Line#morphTargetDictionary} and {@link Line#morphTargetInfluences} + * to make sure existing morph targets can influence this 3D object. + */ + updateMorphTargets() { + + const geometry = this.geometry; + + const morphAttributes = geometry.morphAttributes; + const keys = Object.keys( morphAttributes ); + + if ( keys.length > 0 ) { + + const morphAttribute = morphAttributes[ keys[ 0 ] ]; + + if ( morphAttribute !== undefined ) { + + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + + for ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) { + + const name = morphAttribute[ m ].name || String( m ); + + this.morphTargetInfluences.push( 0 ); + this.morphTargetDictionary[ name ] = m; + + } + + } + + } + + } + +} + +function checkIntersection( object, raycaster, ray, thresholdSq, a, b, i ) { + + const positionAttribute = object.geometry.attributes.position; + + _vStart.fromBufferAttribute( positionAttribute, a ); + _vEnd.fromBufferAttribute( positionAttribute, b ); + + const distSq = ray.distanceSqToSegment( _vStart, _vEnd, _intersectPointOnRay, _intersectPointOnSegment ); + + if ( distSq > thresholdSq ) return; + + _intersectPointOnRay.applyMatrix4( object.matrixWorld ); // Move back to world space for distance calculation + + const distance = raycaster.ray.origin.distanceTo( _intersectPointOnRay ); + + if ( distance < raycaster.near || distance > raycaster.far ) return; + + return { + + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: _intersectPointOnSegment.clone().applyMatrix4( object.matrixWorld ), + index: i, + face: null, + faceIndex: null, + barycoord: null, + object: object + + }; + +} + +const _start = /*@__PURE__*/ new Vector3(); +const _end = /*@__PURE__*/ new Vector3(); + +/** + * A series of lines drawn between pairs of vertices. + * + * @augments Line + */ +class LineSegments extends Line { + + /** + * Constructs a new line segments. + * + * @param {BufferGeometry} [geometry] - The line geometry. + * @param {Material|Array} [material] - The line material. + */ + constructor( geometry, material ) { + + super( geometry, material ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isLineSegments = true; + + this.type = 'LineSegments'; + + } + + computeLineDistances() { + + const geometry = this.geometry; + + // we assume non-indexed geometry + + if ( geometry.index === null ) { + + const positionAttribute = geometry.attributes.position; + const lineDistances = []; + + for ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) { + + _start.fromBufferAttribute( positionAttribute, i ); + _end.fromBufferAttribute( positionAttribute, i + 1 ); + + lineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ]; + lineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end ); + + } + + geometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); + + } else { + + console.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); + + } + + return this; + + } + +} + +/** + * A continuous line. This is nearly the same as {@link Line} the only difference + * is that the last vertex is connected with the first vertex in order to close + * the line to form a loop. + * + * @augments Line + */ +class LineLoop extends Line { + + /** + * Constructs a new line loop. + * + * @param {BufferGeometry} [geometry] - The line geometry. + * @param {Material|Array} [material] - The line material. + */ + constructor( geometry, material ) { + + super( geometry, material ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isLineLoop = true; + + this.type = 'LineLoop'; + + } + +} + +/** + * A material for rendering point primitives. + * + * Materials define the appearance of renderable 3D objects. + * + * ```js + * const vertices = []; + * + * for ( let i = 0; i < 10000; i ++ ) { + * const x = THREE.MathUtils.randFloatSpread( 2000 ); + * const y = THREE.MathUtils.randFloatSpread( 2000 ); + * const z = THREE.MathUtils.randFloatSpread( 2000 ); + * + * vertices.push( x, y, z ); + * } + * + * const geometry = new THREE.BufferGeometry(); + * geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) ); + * const material = new THREE.PointsMaterial( { color: 0x888888 } ); + * const points = new THREE.Points( geometry, material ); + * scene.add( points ); + * ``` + * + * @augments Material + */ +class PointsMaterial extends Material { + + /** + * Constructs a new points material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isPointsMaterial = true; + + this.type = 'PointsMaterial'; + + /** + * Color of the material. + * + * @type {Color} + * @default (1,1,1) + */ + this.color = new Color( 0xffffff ); + + /** + * The color map. May optionally include an alpha channel, typically combined + * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map + * color is modulated by the diffuse `color`. + * + * @type {?Texture} + * @default null + */ + this.map = null; + + /** + * The alpha map is a grayscale texture that controls the opacity across the + * surface (black: fully transparent; white: fully opaque). + * + * Only the color of the texture is used, ignoring the alpha channel if one + * exists. For RGB and RGBA textures, the renderer will use the green channel + * when sampling this texture due to the extra bit of precision provided for + * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and + * luminance/alpha textures will also still work as expected. + * + * @type {?Texture} + * @default null + */ + this.alphaMap = null; + + /** + * Defines the size of the points in pixels. + * + * Might be capped if the value exceeds hardware dependent parameters like [gl.ALIASED_POINT_SIZE_RANGE]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getParamete}. + * + * @type {number} + * @default 1 + */ + this.size = 1; + + /** + * Specifies whether size of individual points is attenuated by the camera depth (perspective camera only). + * + * @type {boolean} + * @default true + */ + this.sizeAttenuation = true; + + /** + * Whether the material is affected by fog or not. + * + * @type {boolean} + * @default true + */ + this.fog = true; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.alphaMap = source.alphaMap; + + this.size = source.size; + this.sizeAttenuation = source.sizeAttenuation; + + this.fog = source.fog; + + return this; + + } + +} + +const _inverseMatrix = /*@__PURE__*/ new Matrix4(); +const _ray = /*@__PURE__*/ new Ray(); +const _sphere = /*@__PURE__*/ new Sphere(); +const _position$2 = /*@__PURE__*/ new Vector3(); + +/** + * A class for displaying points or point clouds. + * + * @augments Object3D + */ +class Points extends Object3D { + + /** + * Constructs a new point cloud. + * + * @param {BufferGeometry} [geometry] - The points geometry. + * @param {Material|Array} [material] - The points material. + */ + constructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isPoints = true; + + this.type = 'Points'; + + /** + * The points geometry. + * + * @type {BufferGeometry} + */ + this.geometry = geometry; + + /** + * The line material. + * + * @type {Material|Array} + * @default PointsMaterial + */ + this.material = material; + + /** + * A dictionary representing the morph targets in the geometry. The key is the + * morph targets name, the value its attribute index. This member is `undefined` + * by default and only set when morph targets are detected in the geometry. + * + * @type {Object|undefined} + * @default undefined + */ + this.morphTargetDictionary = undefined; + + /** + * An array of weights typically in the range `[0,1]` that specify how much of the morph + * is applied. This member is `undefined` by default and only set when morph targets are + * detected in the geometry. + * + * @type {Array|undefined} + * @default undefined + */ + this.morphTargetInfluences = undefined; + + this.updateMorphTargets(); + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + this.material = Array.isArray( source.material ) ? source.material.slice() : source.material; + this.geometry = source.geometry; + + return this; + + } + + /** + * Computes intersection points between a casted ray and this point cloud. + * + * @param {Raycaster} raycaster - The raycaster. + * @param {Array} intersects - The target array that holds the intersection points. + */ + raycast( raycaster, intersects ) { + + const geometry = this.geometry; + const matrixWorld = this.matrixWorld; + const threshold = raycaster.params.Points.threshold; + const drawRange = geometry.drawRange; + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + + _sphere.copy( geometry.boundingSphere ); + _sphere.applyMatrix4( matrixWorld ); + _sphere.radius += threshold; + + if ( raycaster.ray.intersectsSphere( _sphere ) === false ) return; + + // + + _inverseMatrix.copy( matrixWorld ).invert(); + _ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix ); + + const localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); + const localThresholdSq = localThreshold * localThreshold; + + const index = geometry.index; + const attributes = geometry.attributes; + const positionAttribute = attributes.position; + + if ( index !== null ) { + + const start = Math.max( 0, drawRange.start ); + const end = Math.min( index.count, ( drawRange.start + drawRange.count ) ); + + for ( let i = start, il = end; i < il; i ++ ) { + + const a = index.getX( i ); + + _position$2.fromBufferAttribute( positionAttribute, a ); + + testPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this ); + + } + + } else { + + const start = Math.max( 0, drawRange.start ); + const end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) ); + + for ( let i = start, l = end; i < l; i ++ ) { + + _position$2.fromBufferAttribute( positionAttribute, i ); + + testPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this ); + + } + + } + + } + + /** + * Sets the values of {@link Points#morphTargetDictionary} and {@link Points#morphTargetInfluences} + * to make sure existing morph targets can influence this 3D object. + */ + updateMorphTargets() { + + const geometry = this.geometry; + + const morphAttributes = geometry.morphAttributes; + const keys = Object.keys( morphAttributes ); + + if ( keys.length > 0 ) { + + const morphAttribute = morphAttributes[ keys[ 0 ] ]; + + if ( morphAttribute !== undefined ) { + + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + + for ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) { + + const name = morphAttribute[ m ].name || String( m ); + + this.morphTargetInfluences.push( 0 ); + this.morphTargetDictionary[ name ] = m; + + } + + } + + } + + } + +} + +function testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) { + + const rayPointDistanceSq = _ray.distanceSqToPoint( point ); + + if ( rayPointDistanceSq < localThresholdSq ) { + + const intersectPoint = new Vector3(); + + _ray.closestPointToPoint( point, intersectPoint ); + intersectPoint.applyMatrix4( matrixWorld ); + + const distance = raycaster.ray.origin.distanceTo( intersectPoint ); + + if ( distance < raycaster.near || distance > raycaster.far ) return; + + intersects.push( { + + distance: distance, + distanceToRay: Math.sqrt( rayPointDistanceSq ), + point: intersectPoint, + index: index, + face: null, + faceIndex: null, + barycoord: null, + object: object + + } ); + + } + +} + +/** + * A texture for use with a video. + * + * ```js + * // assuming you have created a HTML video element with id="video" + * const video = document.getElementById( 'video' ); + * const texture = new THREE.VideoTexture( video ); + * ``` + * + * Note: After the initial use of a texture, its dimensions, format, and type + * cannot be changed. Instead, call {@link Texture#dispose} on the texture and instantiate a new one. + * + * @augments Texture + */ +class VideoTexture extends Texture { + + /** + * Constructs a new video texture. + * + * @param {Video} video - The video element to use as a data source for the texture. + * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping. + * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value. + * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value. + * @param {number} [magFilter=LinearFilter] - The mag filter value. + * @param {number} [minFilter=LinearFilter] - The min filter value. + * @param {number} [format=RGBAFormat] - The texture format. + * @param {number} [type=UnsignedByteType] - The texture type. + * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value. + */ + constructor( video, mapping, wrapS, wrapT, magFilter = LinearFilter, minFilter = LinearFilter, format, type, anisotropy ) { + + super( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isVideoTexture = true; + + /** + * Whether to generate mipmaps (if possible) for a texture. + * + * Overwritten and set to `false` by default. + * + * @type {boolean} + * @default false + */ + this.generateMipmaps = false; + + const scope = this; + + function updateVideo() { + + scope.needsUpdate = true; + video.requestVideoFrameCallback( updateVideo ); + + } + + if ( 'requestVideoFrameCallback' in video ) { + + video.requestVideoFrameCallback( updateVideo ); + + } + + } + + clone() { + + return new this.constructor( this.image ).copy( this ); + + } + + /** + * This method is called automatically by the renderer and sets {@link Texture#needsUpdate} + * to `true` every time a new frame is available. + * + * Only relevant if `requestVideoFrameCallback` is not supported in the browser. + */ + update() { + + const video = this.image; + const hasVideoFrameCallback = 'requestVideoFrameCallback' in video; + + if ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) { + + this.needsUpdate = true; + + } + + } + +} + +/** + * This class can be used as an alternative way to define video data. Instead of using + * an instance of `HTMLVideoElement` like with `VideoTexture`, `VideoFrameTexture` expects each frame is + * defined manually via {@link VideoFrameTexture#setFrame}. A typical use case for this module is when + * video frames are decoded with the WebCodecs API. + * + * ```js + * const texture = new THREE.VideoFrameTexture(); + * texture.setFrame( frame ); + * ``` + * + * @augments VideoTexture + */ +class VideoFrameTexture extends VideoTexture { + + /** + * Constructs a new video frame texture. + * + * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping. + * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value. + * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value. + * @param {number} [magFilter=LinearFilter] - The mag filter value. + * @param {number} [minFilter=LinearFilter] - The min filter value. + * @param {number} [format=RGBAFormat] - The texture format. + * @param {number} [type=UnsignedByteType] - The texture type. + * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value. + */ + constructor( mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { + + super( {}, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isVideoFrameTexture = true; + + } + + /** + * This method overwritten with an empty implementation since + * this type of texture is updated via `setFrame()`. + */ + update() {} + + clone() { + + return new this.constructor().copy( this ); // restoring Texture.clone() + + } + + /** + * Sets the current frame of the video. This will automatically update the texture + * so the data can be used for rendering. + * + * @param {VideoFrame} frame - The video frame. + */ + setFrame( frame ) { + + this.image = frame; + this.needsUpdate = true; + + } + +} + +/** + * This class can only be used in combination with `copyFramebufferToTexture()` methods + * of renderers. It extracts the contents of the current bound framebuffer and provides it + * as a texture for further usage. + * + * ```js + * const pixelRatio = window.devicePixelRatio; + * const textureSize = 128 * pixelRatio; + * + * const frameTexture = new FramebufferTexture( textureSize, textureSize ); + * + * // calculate start position for copying part of the frame data + * const vector = new Vector2(); + * vector.x = ( window.innerWidth * pixelRatio / 2 ) - ( textureSize / 2 ); + * vector.y = ( window.innerHeight * pixelRatio / 2 ) - ( textureSize / 2 ); + * + * renderer.render( scene, camera ); + * + * // copy part of the rendered frame into the framebuffer texture + * renderer.copyFramebufferToTexture( frameTexture, vector ); + * ``` + * + * @augments Texture + */ +class FramebufferTexture extends Texture { + + /** + * Constructs a new framebuffer texture. + * + * @param {number} width - The width of the texture. + * @param {number} height - The height of the texture. + */ + constructor( width, height ) { + + super( { width, height } ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isFramebufferTexture = true; + + /** + * How the texture is sampled when a texel covers more than one pixel. + * + * Overwritten and set to `NearestFilter` by default to disable filtering. + * + * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)} + * @default NearestFilter + */ + this.magFilter = NearestFilter; + + /** + * How the texture is sampled when a texel covers less than one pixel. + * + * Overwritten and set to `NearestFilter` by default to disable filtering. + * + * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)} + * @default NearestFilter + */ + this.minFilter = NearestFilter; + + /** + * Whether to generate mipmaps (if possible) for a texture. + * + * Overwritten and set to `false` by default. + * + * @type {boolean} + * @default false + */ + this.generateMipmaps = false; + + this.needsUpdate = true; + + } + +} + +/** + * Creates a texture based on data in compressed form. + * + * These texture are usually loaded with {@link CompressedTextureLoader}. + * + * @augments Texture + */ +class CompressedTexture extends Texture { + + /** + * Constructs a new compressed texture. + * + * @param {Array} mipmaps - This array holds for all mipmaps (including the bases mip) + * the data and dimensions. + * @param {number} width - The width of the texture. + * @param {number} height - The height of the texture. + * @param {number} [format=RGBAFormat] - The texture format. + * @param {number} [type=UnsignedByteType] - The texture type. + * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping. + * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value. + * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value. + * @param {number} [magFilter=LinearFilter] - The mag filter value. + * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value. + * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value. + * @param {string} [colorSpace=NoColorSpace] - The color space. + */ + constructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) { + + super( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isCompressedTexture = true; + + /** + * The image property of a compressed texture just defines its dimensions. + * + * @type {{width:number,height:number}} + */ + this.image = { width: width, height: height }; + + /** + * This array holds for all mipmaps (including the bases mip) the data and dimensions. + * + * @type {Array} + */ + this.mipmaps = mipmaps; + + /** + * If set to `true`, the texture is flipped along the vertical axis when + * uploaded to the GPU. + * + * Overwritten and set to `false` by default since it is not possible to + * flip compressed textures. + * + * @type {boolean} + * @default false + * @readonly + */ + this.flipY = false; + + /** + * Whether to generate mipmaps (if possible) for a texture. + * + * Overwritten and set to `false` by default since it is not + * possible to generate mipmaps for compressed data. Mipmaps + * must be embedded in the compressed texture file. + * + * @type {boolean} + * @default false + * @readonly + */ + this.generateMipmaps = false; + + } + +} + +/** + * Creates a texture 2D array based on data in compressed form. + * + * These texture are usually loaded with {@link CompressedTextureLoader}. + * + * @augments CompressedTexture + */ +class CompressedArrayTexture extends CompressedTexture { + + /** + * Constructs a new compressed array texture. + * + * @param {Array} mipmaps - This array holds for all mipmaps (including the bases mip) + * the data and dimensions. + * @param {number} width - The width of the texture. + * @param {number} height - The height of the texture. + * @param {number} depth - The depth of the texture. + * @param {number} [format=RGBAFormat] - The min filter value. + * @param {number} [type=UnsignedByteType] - The min filter value. + */ + constructor( mipmaps, width, height, depth, format, type ) { + + super( mipmaps, width, height, format, type ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isCompressedArrayTexture = true; + + /** + * The image property of a compressed texture just defines its dimensions. + * + * @name CompressedArrayTexture#image + * @type {{width:number,height:number,depth:number}} + */ + this.image.depth = depth; + + /** + * This defines how the texture is wrapped in the depth and corresponds to + * *W* in UVW mapping. + * + * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)} + * @default ClampToEdgeWrapping + */ + this.wrapR = ClampToEdgeWrapping; + + /** + * A set of all layers which need to be updated in the texture. + * + * @type {Set} + */ + this.layerUpdates = new Set(); + + } + + /** + * Describes that a specific layer of the texture needs to be updated. + * Normally when {@link Texture#needsUpdate} is set to `true`, the + * entire compressed texture array is sent to the GPU. Marking specific + * layers will only transmit subsets of all mipmaps associated with a + * specific depth in the array which is often much more performant. + * + * @param {number} layerIndex - The layer index that should be updated. + */ + addLayerUpdate( layerIndex ) { + + this.layerUpdates.add( layerIndex ); + + } + + /** + * Resets the layer updates registry. + */ + clearLayerUpdates() { + + this.layerUpdates.clear(); + + } + +} + +/** + * Creates a cube texture based on data in compressed form. + * + * These texture are usually loaded with {@link CompressedTextureLoader}. + * + * @augments CompressedTexture + */ +class CompressedCubeTexture extends CompressedTexture { + + /** + * Constructs a new compressed texture. + * + * @param {Array} images - An array of compressed textures. + * @param {number} [format=RGBAFormat] - The texture format. + * @param {number} [type=UnsignedByteType] - The texture type. + */ + constructor( images, format, type ) { + + super( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isCompressedCubeTexture = true; + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isCubeTexture = true; + + this.image = images; + + } + +} + +/** + * Creates a texture from a canvas element. + * + * This is almost the same as the base texture class, except that it sets {@link Texture#needsUpdate} + * to `true` immediately since a canvas can directly be used for rendering. + * + * @augments Texture + */ +class CanvasTexture extends Texture { + + /** + * Constructs a new texture. + * + * @param {HTMLCanvasElement} [canvas] - The HTML canvas element. + * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping. + * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value. + * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value. + * @param {number} [magFilter=LinearFilter] - The mag filter value. + * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value. + * @param {number} [format=RGBAFormat] - The texture format. + * @param {number} [type=UnsignedByteType] - The texture type. + * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value. + */ + constructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { + + super( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isCanvasTexture = true; + + this.needsUpdate = true; + + } + +} + +/** + * This class can be used to automatically save the depth information of a + * rendering into a texture. + * + * @augments Texture + */ +class DepthTexture extends Texture { + + /** + * Constructs a new depth texture. + * + * @param {number} width - The width of the texture. + * @param {number} height - The height of the texture. + * @param {number} [type=UnsignedIntType] - The texture type. + * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping. + * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value. + * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value. + * @param {number} [magFilter=LinearFilter] - The mag filter value. + * @param {number} [minFilter=LinearFilter] - The min filter value. + * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value. + * @param {number} [format=DepthFormat] - The texture format. + */ + constructor( width, height, type = UnsignedIntType, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, format = DepthFormat ) { + + if ( format !== DepthFormat && format !== DepthStencilFormat ) { + + throw new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' ); + + } + + super( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isDepthTexture = true; + + /** + * The image property of a depth texture just defines its dimensions. + * + * @type {{width:number,height:number}} + */ + this.image = { width: width, height: height }; + + /** + * If set to `true`, the texture is flipped along the vertical axis when + * uploaded to the GPU. + * + * Overwritten and set to `false` by default. + * + * @type {boolean} + * @default false + */ + this.flipY = false; + + /** + * Whether to generate mipmaps (if possible) for a texture. + * + * Overwritten and set to `false` by default. + * + * @type {boolean} + * @default false + */ + this.generateMipmaps = false; + + /** + * The depth compare function. + * + * @type {?(NeverCompare|LessCompare|EqualCompare|LessEqualCompare|GreaterCompare|NotEqualCompare|GreaterEqualCompare|AlwaysCompare)} + * @default null + */ + this.compareFunction = null; + + } + + + copy( source ) { + + super.copy( source ); + + this.source = new Source( Object.assign( {}, source.image ) ); // see #30540 + this.compareFunction = source.compareFunction; + + return this; + + } + + toJSON( meta ) { + + const data = super.toJSON( meta ); + + if ( this.compareFunction !== null ) data.compareFunction = this.compareFunction; + + return data; + + } + +} + +/** + * An abstract base class for creating an analytic curve object that contains methods + * for interpolation. + * + * @abstract + */ +class Curve { + + /** + * Constructs a new curve. + */ + constructor() { + + /** + * The type property is used for detecting the object type + * in context of serialization/deserialization. + * + * @type {string} + * @readonly + */ + this.type = 'Curve'; + + /** + * This value determines the amount of divisions when calculating the + * cumulative segment lengths of a curve via {@link Curve#getLengths}. To ensure + * precision when using methods like {@link Curve#getSpacedPoints}, it is + * recommended to increase the value of this property if the curve is very large. + * + * @type {number} + * @default 200 + */ + this.arcLengthDivisions = 200; + + /** + * Must be set to `true` if the curve parameters have changed. + * + * @type {boolean} + * @default false + */ + this.needsUpdate = false; + + /** + * An internal cache that holds precomputed curve length values. + * + * @private + * @type {?Array} + * @default null + */ + this.cacheArcLengths = null; + + } + + /** + * This method returns a vector in 2D or 3D space (depending on the curve definition) + * for the given interpolation factor. + * + * @abstract + * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`. + * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to. + * @return {(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition. + */ + getPoint( /* t, optionalTarget */ ) { + + console.warn( 'THREE.Curve: .getPoint() not implemented.' ); + + } + + /** + * This method returns a vector in 2D or 3D space (depending on the curve definition) + * for the given interpolation factor. Unlike {@link Curve#getPoint}, this method honors the length + * of the curve which equidistant samples. + * + * @param {number} u - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`. + * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to. + * @return {(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition. + */ + getPointAt( u, optionalTarget ) { + + const t = this.getUtoTmapping( u ); + return this.getPoint( t, optionalTarget ); + + } + + /** + * This method samples the curve via {@link Curve#getPoint} and returns an array of points representing + * the curve shape. + * + * @param {number} [divisions=5] - The number of divisions. + * @return {Array<(Vector2|Vector3)>} An array holding the sampled curve values. The number of points is `divisions + 1`. + */ + getPoints( divisions = 5 ) { + + const points = []; + + for ( let d = 0; d <= divisions; d ++ ) { + + points.push( this.getPoint( d / divisions ) ); + + } + + return points; + + } + + // Get sequence of points using getPointAt( u ) + + /** + * This method samples the curve via {@link Curve#getPointAt} and returns an array of points representing + * the curve shape. Unlike {@link Curve#getPoints}, this method returns equi-spaced points across the entire + * curve. + * + * @param {number} [divisions=5] - The number of divisions. + * @return {Array<(Vector2|Vector3)>} An array holding the sampled curve values. The number of points is `divisions + 1`. + */ + getSpacedPoints( divisions = 5 ) { + + const points = []; + + for ( let d = 0; d <= divisions; d ++ ) { + + points.push( this.getPointAt( d / divisions ) ); + + } + + return points; + + } + + /** + * Returns the total arc length of the curve. + * + * @return {number} The length of the curve. + */ + getLength() { + + const lengths = this.getLengths(); + return lengths[ lengths.length - 1 ]; + + } + + /** + * Returns an array of cumulative segment lengths of the curve. + * + * @param {number} [divisions=this.arcLengthDivisions] - The number of divisions. + * @return {Array} An array holding the cumulative segment lengths. + */ + getLengths( divisions = this.arcLengthDivisions ) { + + if ( this.cacheArcLengths && + ( this.cacheArcLengths.length === divisions + 1 ) && + ! this.needsUpdate ) { + + return this.cacheArcLengths; + + } + + this.needsUpdate = false; + + const cache = []; + let current, last = this.getPoint( 0 ); + let sum = 0; + + cache.push( 0 ); + + for ( let p = 1; p <= divisions; p ++ ) { + + current = this.getPoint( p / divisions ); + sum += current.distanceTo( last ); + cache.push( sum ); + last = current; + + } + + this.cacheArcLengths = cache; + + return cache; // { sums: cache, sum: sum }; Sum is in the last element. + + } + + /** + * Update the cumulative segment distance cache. The method must be called + * every time curve parameters are changed. If an updated curve is part of a + * composed curve like {@link CurvePath}, this method must be called on the + * composed curve, too. + */ + updateArcLengths() { + + this.needsUpdate = true; + this.getLengths(); + + } + + /** + * Given an interpolation factor in the range `[0,1]`, this method returns an updated + * interpolation factor in the same range that can be ued to sample equidistant points + * from a curve. + * + * @param {number} u - The interpolation factor. + * @param {?number} distance - An optional distance on the curve. + * @return {number} The updated interpolation factor. + */ + getUtoTmapping( u, distance = null ) { + + const arcLengths = this.getLengths(); + + let i = 0; + const il = arcLengths.length; + + let targetArcLength; // The targeted u distance value to get + + if ( distance ) { + + targetArcLength = distance; + + } else { + + targetArcLength = u * arcLengths[ il - 1 ]; + + } + + // binary search for the index with largest value smaller than target u distance + + let low = 0, high = il - 1, comparison; + + while ( low <= high ) { + + i = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats + + comparison = arcLengths[ i ] - targetArcLength; + + if ( comparison < 0 ) { + + low = i + 1; + + } else if ( comparison > 0 ) { + + high = i - 1; + + } else { + + high = i; + break; + + // DONE + + } + + } + + i = high; + + if ( arcLengths[ i ] === targetArcLength ) { + + return i / ( il - 1 ); + + } + + // we could get finer grain at lengths, or use simple interpolation between two points + + const lengthBefore = arcLengths[ i ]; + const lengthAfter = arcLengths[ i + 1 ]; + + const segmentLength = lengthAfter - lengthBefore; + + // determine where we are between the 'before' and 'after' points + + const segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength; + + // add that fractional amount to t + + const t = ( i + segmentFraction ) / ( il - 1 ); + + return t; + + } + + /** + * Returns a unit vector tangent for the given interpolation factor. + * If the derived curve does not implement its tangent derivation, + * two points a small delta apart will be used to find its gradient + * which seems to give a reasonable approximation. + * + * @param {number} t - The interpolation factor. + * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to. + * @return {(Vector2|Vector3)} The tangent vector. + */ + getTangent( t, optionalTarget ) { + + const delta = 0.0001; + let t1 = t - delta; + let t2 = t + delta; + + // Capping in case of danger + + if ( t1 < 0 ) t1 = 0; + if ( t2 > 1 ) t2 = 1; + + const pt1 = this.getPoint( t1 ); + const pt2 = this.getPoint( t2 ); + + const tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() ); + + tangent.copy( pt2 ).sub( pt1 ).normalize(); + + return tangent; + + } + + /** + * Same as {@link Curve#getTangent} but with equidistant samples. + * + * @param {number} u - The interpolation factor. + * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to. + * @return {(Vector2|Vector3)} The tangent vector. + * @see {@link Curve#getPointAt} + */ + getTangentAt( u, optionalTarget ) { + + const t = this.getUtoTmapping( u ); + return this.getTangent( t, optionalTarget ); + + } + + /** + * Generates the Frenet Frames. Requires a curve definition in 3D space. Used + * in geometries like {@link TubeGeometry} or {@link ExtrudeGeometry}. + * + * @param {number} segments - The number of segments. + * @param {boolean} [closed=false] - Whether the curve is closed or not. + * @return {{tangents: Array, normals: Array, binormals: Array}} The Frenet Frames. + */ + computeFrenetFrames( segments, closed = false ) { + + // see http://www.cs.indiana.edu/pub/techreports/TR425.pdf + + const normal = new Vector3(); + + const tangents = []; + const normals = []; + const binormals = []; + + const vec = new Vector3(); + const mat = new Matrix4(); + + // compute the tangent vectors for each segment on the curve + + for ( let i = 0; i <= segments; i ++ ) { + + const u = i / segments; + + tangents[ i ] = this.getTangentAt( u, new Vector3() ); + + } + + // select an initial normal vector perpendicular to the first tangent vector, + // and in the direction of the minimum tangent xyz component + + normals[ 0 ] = new Vector3(); + binormals[ 0 ] = new Vector3(); + let min = Number.MAX_VALUE; + const tx = Math.abs( tangents[ 0 ].x ); + const ty = Math.abs( tangents[ 0 ].y ); + const tz = Math.abs( tangents[ 0 ].z ); + + if ( tx <= min ) { + + min = tx; + normal.set( 1, 0, 0 ); + + } + + if ( ty <= min ) { + + min = ty; + normal.set( 0, 1, 0 ); + + } + + if ( tz <= min ) { + + normal.set( 0, 0, 1 ); + + } + + vec.crossVectors( tangents[ 0 ], normal ).normalize(); + + normals[ 0 ].crossVectors( tangents[ 0 ], vec ); + binormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] ); + + + // compute the slowly-varying normal and binormal vectors for each segment on the curve + + for ( let i = 1; i <= segments; i ++ ) { + + normals[ i ] = normals[ i - 1 ].clone(); + + binormals[ i ] = binormals[ i - 1 ].clone(); + + vec.crossVectors( tangents[ i - 1 ], tangents[ i ] ); + + if ( vec.length() > Number.EPSILON ) { + + vec.normalize(); + + const theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), -1, 1 ) ); // clamp for floating pt errors + + normals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) ); + + } + + binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); + + } + + // if the curve is closed, postprocess the vectors so the first and last normal vectors are the same + + if ( closed === true ) { + + let theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), -1, 1 ) ); + theta /= segments; + + if ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) { + + theta = - theta; + + } + + for ( let i = 1; i <= segments; i ++ ) { + + // twist a little... + normals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) ); + binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); + + } + + } + + return { + tangents: tangents, + normals: normals, + binormals: binormals + }; + + } + + /** + * Returns a new curve with copied values from this instance. + * + * @return {Curve} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + + /** + * Copies the values of the given curve to this instance. + * + * @param {Curve} source - The curve to copy. + * @return {Curve} A reference to this curve. + */ + copy( source ) { + + this.arcLengthDivisions = source.arcLengthDivisions; + + return this; + + } + + /** + * Serializes the curve into JSON. + * + * @return {Object} A JSON object representing the serialized curve. + * @see {@link ObjectLoader#parse} + */ + toJSON() { + + const data = { + metadata: { + version: 4.6, + type: 'Curve', + generator: 'Curve.toJSON' + } + }; + + data.arcLengthDivisions = this.arcLengthDivisions; + data.type = this.type; + + return data; + + } + + /** + * Deserializes the curve from the given JSON. + * + * @param {Object} json - The JSON holding the serialized curve. + * @return {Curve} A reference to this curve. + */ + fromJSON( json ) { + + this.arcLengthDivisions = json.arcLengthDivisions; + + return this; + + } + +} + +/** + * A curve representing an ellipse. + * + * ```js + * const curve = new THREE.EllipseCurve( + * 0, 0, + * 10, 10, + * 0, 2 * Math.PI, + * false, + * 0 + * ); + * + * const points = curve.getPoints( 50 ); + * const geometry = new THREE.BufferGeometry().setFromPoints( points ); + * + * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } ); + * + * // Create the final object to add to the scene + * const ellipse = new THREE.Line( geometry, material ); + * ``` + * + * @augments Curve + */ +class EllipseCurve extends Curve { + + /** + * Constructs a new ellipse curve. + * + * @param {number} [aX=0] - The X center of the ellipse. + * @param {number} [aY=0] - The Y center of the ellipse. + * @param {number} [xRadius=1] - The radius of the ellipse in the x direction. + * @param {number} [yRadius=1] - The radius of the ellipse in the y direction. + * @param {number} [aStartAngle=0] - The start angle of the curve in radians starting from the positive X axis. + * @param {number} [aEndAngle=Math.PI*2] - The end angle of the curve in radians starting from the positive X axis. + * @param {boolean} [aClockwise=false] - Whether the ellipse is drawn clockwise or not. + * @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis. + */ + constructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isEllipseCurve = true; + + this.type = 'EllipseCurve'; + + /** + * The X center of the ellipse. + * + * @type {number} + * @default 0 + */ + this.aX = aX; + + /** + * The Y center of the ellipse. + * + * @type {number} + * @default 0 + */ + this.aY = aY; + + /** + * The radius of the ellipse in the x direction. + * Setting the this value equal to the {@link EllipseCurve#yRadius} will result in a circle. + * + * @type {number} + * @default 1 + */ + this.xRadius = xRadius; + + /** + * The radius of the ellipse in the y direction. + * Setting the this value equal to the {@link EllipseCurve#xRadius} will result in a circle. + * + * @type {number} + * @default 1 + */ + this.yRadius = yRadius; + + /** + * The start angle of the curve in radians starting from the positive X axis. + * + * @type {number} + * @default 0 + */ + this.aStartAngle = aStartAngle; + + /** + * The end angle of the curve in radians starting from the positive X axis. + * + * @type {number} + * @default Math.PI*2 + */ + this.aEndAngle = aEndAngle; + + /** + * Whether the ellipse is drawn clockwise or not. + * + * @type {boolean} + * @default false + */ + this.aClockwise = aClockwise; + + /** + * The rotation angle of the ellipse in radians, counterclockwise from the positive X axis. + * + * @type {number} + * @default 0 + */ + this.aRotation = aRotation; + + } + + /** + * Returns a point on the curve. + * + * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`. + * @param {Vector2} [optionalTarget] - The optional target vector the result is written to. + * @return {Vector2} The position on the curve. + */ + getPoint( t, optionalTarget = new Vector2() ) { + + const point = optionalTarget; + + const twoPi = Math.PI * 2; + let deltaAngle = this.aEndAngle - this.aStartAngle; + const samePoints = Math.abs( deltaAngle ) < Number.EPSILON; + + // ensures that deltaAngle is 0 .. 2 PI + while ( deltaAngle < 0 ) deltaAngle += twoPi; + while ( deltaAngle > twoPi ) deltaAngle -= twoPi; + + if ( deltaAngle < Number.EPSILON ) { + + if ( samePoints ) { + + deltaAngle = 0; + + } else { + + deltaAngle = twoPi; + + } + + } + + if ( this.aClockwise === true && ! samePoints ) { + + if ( deltaAngle === twoPi ) { + + deltaAngle = - twoPi; + + } else { + + deltaAngle = deltaAngle - twoPi; + + } + + } + + const angle = this.aStartAngle + t * deltaAngle; + let x = this.aX + this.xRadius * Math.cos( angle ); + let y = this.aY + this.yRadius * Math.sin( angle ); + + if ( this.aRotation !== 0 ) { + + const cos = Math.cos( this.aRotation ); + const sin = Math.sin( this.aRotation ); + + const tx = x - this.aX; + const ty = y - this.aY; + + // Rotate the point about the center of the ellipse. + x = tx * cos - ty * sin + this.aX; + y = tx * sin + ty * cos + this.aY; + + } + + return point.set( x, y ); + + } + + copy( source ) { + + super.copy( source ); + + this.aX = source.aX; + this.aY = source.aY; + + this.xRadius = source.xRadius; + this.yRadius = source.yRadius; + + this.aStartAngle = source.aStartAngle; + this.aEndAngle = source.aEndAngle; + + this.aClockwise = source.aClockwise; + + this.aRotation = source.aRotation; + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.aX = this.aX; + data.aY = this.aY; + + data.xRadius = this.xRadius; + data.yRadius = this.yRadius; + + data.aStartAngle = this.aStartAngle; + data.aEndAngle = this.aEndAngle; + + data.aClockwise = this.aClockwise; + + data.aRotation = this.aRotation; + + return data; + + } + + fromJSON( json ) { + + super.fromJSON( json ); + + this.aX = json.aX; + this.aY = json.aY; + + this.xRadius = json.xRadius; + this.yRadius = json.yRadius; + + this.aStartAngle = json.aStartAngle; + this.aEndAngle = json.aEndAngle; + + this.aClockwise = json.aClockwise; + + this.aRotation = json.aRotation; + + return this; + + } + +} + +/** + * A curve representing an arc. + * + * @augments EllipseCurve + */ +class ArcCurve extends EllipseCurve { + + /** + * Constructs a new arc curve. + * + * @param {number} [aX=0] - The X center of the ellipse. + * @param {number} [aY=0] - The Y center of the ellipse. + * @param {number} [aRadius=1] - The radius of the ellipse in the x direction. + * @param {number} [aStartAngle=0] - The start angle of the curve in radians starting from the positive X axis. + * @param {number} [aEndAngle=Math.PI*2] - The end angle of the curve in radians starting from the positive X axis. + * @param {boolean} [aClockwise=false] - Whether the ellipse is drawn clockwise or not. + */ + constructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + super( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isArcCurve = true; + + this.type = 'ArcCurve'; + + } + +} + +function CubicPoly() { + + /** + * Centripetal CatmullRom Curve - which is useful for avoiding + * cusps and self-intersections in non-uniform catmull rom curves. + * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf + * + * curve.type accepts centripetal(default), chordal and catmullrom + * curve.tension is used for catmullrom which defaults to 0.5 + */ + + /* + Based on an optimized c++ solution in + - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/ + - http://ideone.com/NoEbVM + + This CubicPoly class could be used for reusing some variables and calculations, + but for three.js curve use, it could be possible inlined and flatten into a single function call + which can be placed in CurveUtils. + */ + + let c0 = 0, c1 = 0, c2 = 0, c3 = 0; + + /* + * Compute coefficients for a cubic polynomial + * p(s) = c0 + c1*s + c2*s^2 + c3*s^3 + * such that + * p(0) = x0, p(1) = x1 + * and + * p'(0) = t0, p'(1) = t1. + */ + function init( x0, x1, t0, t1 ) { + + c0 = x0; + c1 = t0; + c2 = -3 * x0 + 3 * x1 - 2 * t0 - t1; + c3 = 2 * x0 - 2 * x1 + t0 + t1; + + } + + return { + + initCatmullRom: function ( x0, x1, x2, x3, tension ) { + + init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) ); + + }, + + initNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) { + + // compute tangents when parameterized in [t1,t2] + let t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1; + let t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2; + + // rescale tangents for parametrization in [0,1] + t1 *= dt1; + t2 *= dt1; + + init( x1, x2, t1, t2 ); + + }, + + calc: function ( t ) { + + const t2 = t * t; + const t3 = t2 * t; + return c0 + c1 * t + c2 * t2 + c3 * t3; + + } + + }; + +} + +// + +const tmp = /*@__PURE__*/ new Vector3(); +const px = /*@__PURE__*/ new CubicPoly(); +const py = /*@__PURE__*/ new CubicPoly(); +const pz = /*@__PURE__*/ new CubicPoly(); + +/** + * A curve representing a Catmull-Rom spline. + * + * ```js + * //Create a closed wavey loop + * const curve = new THREE.CatmullRomCurve3( [ + * new THREE.Vector3( -10, 0, 10 ), + * new THREE.Vector3( -5, 5, 5 ), + * new THREE.Vector3( 0, 0, 0 ), + * new THREE.Vector3( 5, -5, 5 ), + * new THREE.Vector3( 10, 0, 10 ) + * ] ); + * + * const points = curve.getPoints( 50 ); + * const geometry = new THREE.BufferGeometry().setFromPoints( points ); + * + * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } ); + * + * // Create the final object to add to the scene + * const curveObject = new THREE.Line( geometry, material ); + * ``` + * + * @augments Curve + */ +class CatmullRomCurve3 extends Curve { + + /** + * Constructs a new Catmull-Rom curve. + * + * @param {Array} [points] - An array of 3D points defining the curve. + * @param {boolean} [closed=false] - Whether the curve is closed or not. + * @param {('centripetal'|'chordal'|'catmullrom')} [curveType='centripetal'] - The curve type. + * @param {number} [tension=0.5] - Tension of the curve. + */ + constructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isCatmullRomCurve3 = true; + + this.type = 'CatmullRomCurve3'; + + /** + * An array of 3D points defining the curve. + * + * @type {Array} + */ + this.points = points; + + /** + * Whether the curve is closed or not. + * + * @type {boolean} + * @default false + */ + this.closed = closed; + + /** + * The curve type. + * + * @type {('centripetal'|'chordal'|'catmullrom')} + * @default 'centripetal' + */ + this.curveType = curveType; + + /** + * Tension of the curve. + * + * @type {number} + * @default 0.5 + */ + this.tension = tension; + + } + + /** + * Returns a point on the curve. + * + * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`. + * @param {Vector3} [optionalTarget] - The optional target vector the result is written to. + * @return {Vector3} The position on the curve. + */ + getPoint( t, optionalTarget = new Vector3() ) { + + const point = optionalTarget; + + const points = this.points; + const l = points.length; + + const p = ( l - ( this.closed ? 0 : 1 ) ) * t; + let intPoint = Math.floor( p ); + let weight = p - intPoint; + + if ( this.closed ) { + + intPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l; + + } else if ( weight === 0 && intPoint === l - 1 ) { + + intPoint = l - 2; + weight = 1; + + } + + let p0, p3; // 4 points (p1 & p2 defined below) + + if ( this.closed || intPoint > 0 ) { + + p0 = points[ ( intPoint - 1 ) % l ]; + + } else { + + // extrapolate first point + tmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] ); + p0 = tmp; + + } + + const p1 = points[ intPoint % l ]; + const p2 = points[ ( intPoint + 1 ) % l ]; + + if ( this.closed || intPoint + 2 < l ) { + + p3 = points[ ( intPoint + 2 ) % l ]; + + } else { + + // extrapolate last point + tmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] ); + p3 = tmp; + + } + + if ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) { + + // init Centripetal / Chordal Catmull-Rom + const pow = this.curveType === 'chordal' ? 0.5 : 0.25; + let dt0 = Math.pow( p0.distanceToSquared( p1 ), pow ); + let dt1 = Math.pow( p1.distanceToSquared( p2 ), pow ); + let dt2 = Math.pow( p2.distanceToSquared( p3 ), pow ); + + // safety check for repeated points + if ( dt1 < 1e-4 ) dt1 = 1.0; + if ( dt0 < 1e-4 ) dt0 = dt1; + if ( dt2 < 1e-4 ) dt2 = dt1; + + px.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 ); + py.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 ); + pz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 ); + + } else if ( this.curveType === 'catmullrom' ) { + + px.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension ); + py.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension ); + pz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension ); + + } + + point.set( + px.calc( weight ), + py.calc( weight ), + pz.calc( weight ) + ); + + return point; + + } + + copy( source ) { + + super.copy( source ); + + this.points = []; + + for ( let i = 0, l = source.points.length; i < l; i ++ ) { + + const point = source.points[ i ]; + + this.points.push( point.clone() ); + + } + + this.closed = source.closed; + this.curveType = source.curveType; + this.tension = source.tension; + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.points = []; + + for ( let i = 0, l = this.points.length; i < l; i ++ ) { + + const point = this.points[ i ]; + data.points.push( point.toArray() ); + + } + + data.closed = this.closed; + data.curveType = this.curveType; + data.tension = this.tension; + + return data; + + } + + fromJSON( json ) { + + super.fromJSON( json ); + + this.points = []; + + for ( let i = 0, l = json.points.length; i < l; i ++ ) { + + const point = json.points[ i ]; + this.points.push( new Vector3().fromArray( point ) ); + + } + + this.closed = json.closed; + this.curveType = json.curveType; + this.tension = json.tension; + + return this; + + } + +} + +// Bezier Curves formulas obtained from: https://en.wikipedia.org/wiki/B%C3%A9zier_curve + +/** + * Computes a point on a Catmull-Rom spline. + * + * @param {number} t - The interpolation factor. + * @param {number} p0 - The first control point. + * @param {number} p1 - The second control point. + * @param {number} p2 - The third control point. + * @param {number} p3 - The fourth control point. + * @return {number} The calculated point on a Catmull-Rom spline. + */ +function CatmullRom( t, p0, p1, p2, p3 ) { + + const v0 = ( p2 - p0 ) * 0.5; + const v1 = ( p3 - p1 ) * 0.5; + const t2 = t * t; + const t3 = t * t2; + return ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( -3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1; + +} + +// + +function QuadraticBezierP0( t, p ) { + + const k = 1 - t; + return k * k * p; + +} + +function QuadraticBezierP1( t, p ) { + + return 2 * ( 1 - t ) * t * p; + +} + +function QuadraticBezierP2( t, p ) { + + return t * t * p; + +} + +/** + * Computes a point on a Quadratic Bezier curve. + * + * @param {number} t - The interpolation factor. + * @param {number} p0 - The first control point. + * @param {number} p1 - The second control point. + * @param {number} p2 - The third control point. + * @return {number} The calculated point on a Quadratic Bezier curve. + */ +function QuadraticBezier( t, p0, p1, p2 ) { + + return QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) + + QuadraticBezierP2( t, p2 ); + +} + +// + +function CubicBezierP0( t, p ) { + + const k = 1 - t; + return k * k * k * p; + +} + +function CubicBezierP1( t, p ) { + + const k = 1 - t; + return 3 * k * k * t * p; + +} + +function CubicBezierP2( t, p ) { + + return 3 * ( 1 - t ) * t * t * p; + +} + +function CubicBezierP3( t, p ) { + + return t * t * t * p; + +} + +/** + * Computes a point on a Cubic Bezier curve. + * + * @param {number} t - The interpolation factor. + * @param {number} p0 - The first control point. + * @param {number} p1 - The second control point. + * @param {number} p2 - The third control point. + * @param {number} p3 - The fourth control point. + * @return {number} The calculated point on a Cubic Bezier curve. + */ +function CubicBezier( t, p0, p1, p2, p3 ) { + + return CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) + + CubicBezierP3( t, p3 ); + +} + +/** + * A curve representing a 2D Cubic Bezier curve. + * + * ```js + * const curve = new THREE.CubicBezierCurve( + * new THREE.Vector2( - 0, 0 ), + * new THREE.Vector2( - 5, 15 ), + * new THREE.Vector2( 20, 15 ), + * new THREE.Vector2( 10, 0 ) + * ); + * + * const points = curve.getPoints( 50 ); + * const geometry = new THREE.BufferGeometry().setFromPoints( points ); + * + * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } ); + * + * // Create the final object to add to the scene + * const curveObject = new THREE.Line( geometry, material ); + * ``` + * + * @augments Curve + */ +class CubicBezierCurve extends Curve { + + /** + * Constructs a new Cubic Bezier curve. + * + * @param {Vector2} [v0] - The start point. + * @param {Vector2} [v1] - The first control point. + * @param {Vector2} [v2] - The second control point. + * @param {Vector2} [v3] - The end point. + */ + constructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isCubicBezierCurve = true; + + this.type = 'CubicBezierCurve'; + + /** + * The start point. + * + * @type {Vector2} + */ + this.v0 = v0; + + /** + * The first control point. + * + * @type {Vector2} + */ + this.v1 = v1; + + /** + * The second control point. + * + * @type {Vector2} + */ + this.v2 = v2; + + /** + * The end point. + * + * @type {Vector2} + */ + this.v3 = v3; + + } + + /** + * Returns a point on the curve. + * + * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`. + * @param {Vector2} [optionalTarget] - The optional target vector the result is written to. + * @return {Vector2} The position on the curve. + */ + getPoint( t, optionalTarget = new Vector2() ) { + + const point = optionalTarget; + + const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; + + point.set( + CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), + CubicBezier( t, v0.y, v1.y, v2.y, v3.y ) + ); + + return point; + + } + + copy( source ) { + + super.copy( source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + this.v3.copy( source.v3 ); + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + data.v3 = this.v3.toArray(); + + return data; + + } + + fromJSON( json ) { + + super.fromJSON( json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + this.v3.fromArray( json.v3 ); + + return this; + + } + +} + +/** + * A curve representing a 3D Cubic Bezier curve. + * + * @augments Curve + */ +class CubicBezierCurve3 extends Curve { + + /** + * Constructs a new Cubic Bezier curve. + * + * @param {Vector3} [v0] - The start point. + * @param {Vector3} [v1] - The first control point. + * @param {Vector3} [v2] - The second control point. + * @param {Vector3} [v3] - The end point. + */ + constructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isCubicBezierCurve3 = true; + + this.type = 'CubicBezierCurve3'; + + /** + * The start point. + * + * @type {Vector3} + */ + this.v0 = v0; + + /** + * The first control point. + * + * @type {Vector3} + */ + this.v1 = v1; + + /** + * The second control point. + * + * @type {Vector3} + */ + this.v2 = v2; + + /** + * The end point. + * + * @type {Vector3} + */ + this.v3 = v3; + + } + + /** + * Returns a point on the curve. + * + * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`. + * @param {Vector3} [optionalTarget] - The optional target vector the result is written to. + * @return {Vector3} The position on the curve. + */ + getPoint( t, optionalTarget = new Vector3() ) { + + const point = optionalTarget; + + const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; + + point.set( + CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), + CubicBezier( t, v0.y, v1.y, v2.y, v3.y ), + CubicBezier( t, v0.z, v1.z, v2.z, v3.z ) + ); + + return point; + + } + + copy( source ) { + + super.copy( source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + this.v3.copy( source.v3 ); + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + data.v3 = this.v3.toArray(); + + return data; + + } + + fromJSON( json ) { + + super.fromJSON( json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + this.v3.fromArray( json.v3 ); + + return this; + + } + +} + +/** + * A curve representing a 2D line segment. + * + * @augments Curve + */ +class LineCurve extends Curve { + + /** + * Constructs a new line curve. + * + * @param {Vector2} [v1] - The start point. + * @param {Vector2} [v2] - The end point. + */ + constructor( v1 = new Vector2(), v2 = new Vector2() ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isLineCurve = true; + + this.type = 'LineCurve'; + + /** + * The start point. + * + * @type {Vector2} + */ + this.v1 = v1; + + /** + * The end point. + * + * @type {Vector2} + */ + this.v2 = v2; + + } + + /** + * Returns a point on the line. + * + * @param {number} t - A interpolation factor representing a position on the line. Must be in the range `[0,1]`. + * @param {Vector2} [optionalTarget] - The optional target vector the result is written to. + * @return {Vector2} The position on the line. + */ + getPoint( t, optionalTarget = new Vector2() ) { + + const point = optionalTarget; + + if ( t === 1 ) { + + point.copy( this.v2 ); + + } else { + + point.copy( this.v2 ).sub( this.v1 ); + point.multiplyScalar( t ).add( this.v1 ); + + } + + return point; + + } + + // Line curve is linear, so we can overwrite default getPointAt + getPointAt( u, optionalTarget ) { + + return this.getPoint( u, optionalTarget ); + + } + + getTangent( t, optionalTarget = new Vector2() ) { + + return optionalTarget.subVectors( this.v2, this.v1 ).normalize(); + + } + + getTangentAt( u, optionalTarget ) { + + return this.getTangent( u, optionalTarget ); + + } + + copy( source ) { + + super.copy( source ); + + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + } + + fromJSON( json ) { + + super.fromJSON( json ); + + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + } + +} + +/** + * A curve representing a 3D line segment. + * + * @augments Curve + */ +class LineCurve3 extends Curve { + + /** + * Constructs a new line curve. + * + * @param {Vector3} [v1] - The start point. + * @param {Vector3} [v2] - The end point. + */ + constructor( v1 = new Vector3(), v2 = new Vector3() ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isLineCurve3 = true; + + this.type = 'LineCurve3'; + + /** + * The start point. + * + * @type {Vector3} + */ + this.v1 = v1; + + /** + * The end point. + * + * @type {Vector2} + */ + this.v2 = v2; + + } + + /** + * Returns a point on the line. + * + * @param {number} t - A interpolation factor representing a position on the line. Must be in the range `[0,1]`. + * @param {Vector3} [optionalTarget] - The optional target vector the result is written to. + * @return {Vector3} The position on the line. + */ + getPoint( t, optionalTarget = new Vector3() ) { + + const point = optionalTarget; + + if ( t === 1 ) { + + point.copy( this.v2 ); + + } else { + + point.copy( this.v2 ).sub( this.v1 ); + point.multiplyScalar( t ).add( this.v1 ); + + } + + return point; + + } + + // Line curve is linear, so we can overwrite default getPointAt + getPointAt( u, optionalTarget ) { + + return this.getPoint( u, optionalTarget ); + + } + + getTangent( t, optionalTarget = new Vector3() ) { + + return optionalTarget.subVectors( this.v2, this.v1 ).normalize(); + + } + + getTangentAt( u, optionalTarget ) { + + return this.getTangent( u, optionalTarget ); + + } + + copy( source ) { + + super.copy( source ); + + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + } + + fromJSON( json ) { + + super.fromJSON( json ); + + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + } + +} + +/** + * A curve representing a 2D Quadratic Bezier curve. + * + * ```js + * const curve = new THREE.QuadraticBezierCurve( + * new THREE.Vector2( - 10, 0 ), + * new THREE.Vector2( 20, 15 ), + * new THREE.Vector2( 10, 0 ) + * ) + * + * const points = curve.getPoints( 50 ); + * const geometry = new THREE.BufferGeometry().setFromPoints( points ); + * + * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } ); + * + * // Create the final object to add to the scene + * const curveObject = new THREE.Line( geometry, material ); + * ``` + * + * @augments Curve + */ +class QuadraticBezierCurve extends Curve { + + /** + * Constructs a new Quadratic Bezier curve. + * + * @param {Vector2} [v0] - The start point. + * @param {Vector2} [v1] - The control point. + * @param {Vector2} [v2] - The end point. + */ + constructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isQuadraticBezierCurve = true; + + this.type = 'QuadraticBezierCurve'; + + /** + * The start point. + * + * @type {Vector2} + */ + this.v0 = v0; + + /** + * The control point. + * + * @type {Vector2} + */ + this.v1 = v1; + + /** + * The end point. + * + * @type {Vector2} + */ + this.v2 = v2; + + } + + /** + * Returns a point on the curve. + * + * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`. + * @param {Vector2} [optionalTarget] - The optional target vector the result is written to. + * @return {Vector2} The position on the curve. + */ + getPoint( t, optionalTarget = new Vector2() ) { + + const point = optionalTarget; + + const v0 = this.v0, v1 = this.v1, v2 = this.v2; + + point.set( + QuadraticBezier( t, v0.x, v1.x, v2.x ), + QuadraticBezier( t, v0.y, v1.y, v2.y ) + ); + + return point; + + } + + copy( source ) { + + super.copy( source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + } + + fromJSON( json ) { + + super.fromJSON( json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + } + +} + +/** + * A curve representing a 3D Quadratic Bezier curve. + * + * @augments Curve + */ +class QuadraticBezierCurve3 extends Curve { + + /** + * Constructs a new Quadratic Bezier curve. + * + * @param {Vector3} [v0] - The start point. + * @param {Vector3} [v1] - The control point. + * @param {Vector3} [v2] - The end point. + */ + constructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isQuadraticBezierCurve3 = true; + + this.type = 'QuadraticBezierCurve3'; + + /** + * The start point. + * + * @type {Vector3} + */ + this.v0 = v0; + + /** + * The control point. + * + * @type {Vector3} + */ + this.v1 = v1; + + /** + * The end point. + * + * @type {Vector3} + */ + this.v2 = v2; + + } + + /** + * Returns a point on the curve. + * + * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`. + * @param {Vector3} [optionalTarget] - The optional target vector the result is written to. + * @return {Vector3} The position on the curve. + */ + getPoint( t, optionalTarget = new Vector3() ) { + + const point = optionalTarget; + + const v0 = this.v0, v1 = this.v1, v2 = this.v2; + + point.set( + QuadraticBezier( t, v0.x, v1.x, v2.x ), + QuadraticBezier( t, v0.y, v1.y, v2.y ), + QuadraticBezier( t, v0.z, v1.z, v2.z ) + ); + + return point; + + } + + copy( source ) { + + super.copy( source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + } + + fromJSON( json ) { + + super.fromJSON( json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + } + +} + +/** + * A curve representing a 2D spline curve. + * + * ```js + * // Create a sine-like wave + * const curve = new THREE.SplineCurve( [ + * new THREE.Vector2( -10, 0 ), + * new THREE.Vector2( -5, 5 ), + * new THREE.Vector2( 0, 0 ), + * new THREE.Vector2( 5, -5 ), + * new THREE.Vector2( 10, 0 ) + * ] ); + * + * const points = curve.getPoints( 50 ); + * const geometry = new THREE.BufferGeometry().setFromPoints( points ); + * + * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } ); + * + * // Create the final object to add to the scene + * const splineObject = new THREE.Line( geometry, material ); + * ``` + * + * @augments Curve + */ +class SplineCurve extends Curve { + + /** + * Constructs a new 2D spline curve. + * + * @param {Array} [points] - An array of 2D points defining the curve. + */ + constructor( points = [] ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isSplineCurve = true; + + this.type = 'SplineCurve'; + + /** + * An array of 2D points defining the curve. + * + * @type {Array} + */ + this.points = points; + + } + + /** + * Returns a point on the curve. + * + * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`. + * @param {Vector2} [optionalTarget] - The optional target vector the result is written to. + * @return {Vector2} The position on the curve. + */ + getPoint( t, optionalTarget = new Vector2() ) { + + const point = optionalTarget; + + const points = this.points; + const p = ( points.length - 1 ) * t; + + const intPoint = Math.floor( p ); + const weight = p - intPoint; + + const p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ]; + const p1 = points[ intPoint ]; + const p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ]; + const p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ]; + + point.set( + CatmullRom( weight, p0.x, p1.x, p2.x, p3.x ), + CatmullRom( weight, p0.y, p1.y, p2.y, p3.y ) + ); + + return point; + + } + + copy( source ) { + + super.copy( source ); + + this.points = []; + + for ( let i = 0, l = source.points.length; i < l; i ++ ) { + + const point = source.points[ i ]; + + this.points.push( point.clone() ); + + } + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.points = []; + + for ( let i = 0, l = this.points.length; i < l; i ++ ) { + + const point = this.points[ i ]; + data.points.push( point.toArray() ); + + } + + return data; + + } + + fromJSON( json ) { + + super.fromJSON( json ); + + this.points = []; + + for ( let i = 0, l = json.points.length; i < l; i ++ ) { + + const point = json.points[ i ]; + this.points.push( new Vector2().fromArray( point ) ); + + } + + return this; + + } + +} + +var Curves = /*#__PURE__*/Object.freeze({ + __proto__: null, + ArcCurve: ArcCurve, + CatmullRomCurve3: CatmullRomCurve3, + CubicBezierCurve: CubicBezierCurve, + CubicBezierCurve3: CubicBezierCurve3, + EllipseCurve: EllipseCurve, + LineCurve: LineCurve, + LineCurve3: LineCurve3, + QuadraticBezierCurve: QuadraticBezierCurve, + QuadraticBezierCurve3: QuadraticBezierCurve3, + SplineCurve: SplineCurve +}); + +/** + * A base class extending {@link Curve}. `CurvePath` is simply an + * array of connected curves, but retains the API of a curve. + * + * @augments Curve + */ +class CurvePath extends Curve { + + /** + * Constructs a new curve path. + */ + constructor() { + + super(); + + this.type = 'CurvePath'; + + /** + * An array of curves defining the + * path. + * + * @type {Array} + */ + this.curves = []; + + /** + * Whether the path should automatically be closed + * by a line curve. + * + * @type {boolean} + * @default false + */ + this.autoClose = false; + + } + + /** + * Adds a curve to this curve path. + * + * @param {Curve} curve - The curve to add. + */ + add( curve ) { + + this.curves.push( curve ); + + } + + /** + * Adds a line curve to close the path. + * + * @return {CurvePath} A reference to this curve path. + */ + closePath() { + + // Add a line curve if start and end of lines are not connected + const startPoint = this.curves[ 0 ].getPoint( 0 ); + const endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 ); + + if ( ! startPoint.equals( endPoint ) ) { + + const lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3'; + this.curves.push( new Curves[ lineType ]( endPoint, startPoint ) ); + + } + + return this; + + } + + /** + * This method returns a vector in 2D or 3D space (depending on the curve definitions) + * for the given interpolation factor. + * + * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`. + * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to. + * @return {?(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition. + */ + getPoint( t, optionalTarget ) { + + // To get accurate point with reference to + // entire path distance at time t, + // following has to be done: + + // 1. Length of each sub path have to be known + // 2. Locate and identify type of curve + // 3. Get t for the curve + // 4. Return curve.getPointAt(t') + + const d = t * this.getLength(); + const curveLengths = this.getCurveLengths(); + let i = 0; + + // To think about boundaries points. + + while ( i < curveLengths.length ) { + + if ( curveLengths[ i ] >= d ) { + + const diff = curveLengths[ i ] - d; + const curve = this.curves[ i ]; + + const segmentLength = curve.getLength(); + const u = segmentLength === 0 ? 0 : 1 - diff / segmentLength; + + return curve.getPointAt( u, optionalTarget ); + + } + + i ++; + + } + + return null; + + // loop where sum != 0, sum > d , sum+1 } The curve lengths. + */ + getCurveLengths() { + + // Compute lengths and cache them + // We cannot overwrite getLengths() because UtoT mapping uses it. + // We use cache values if curves and cache array are same length + + if ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) { + + return this.cacheLengths; + + } + + // Get length of sub-curve + // Push sums into cached array + + const lengths = []; + let sums = 0; + + for ( let i = 0, l = this.curves.length; i < l; i ++ ) { + + sums += this.curves[ i ].getLength(); + lengths.push( sums ); + + } + + this.cacheLengths = lengths; + + return lengths; + + } + + getSpacedPoints( divisions = 40 ) { + + const points = []; + + for ( let i = 0; i <= divisions; i ++ ) { + + points.push( this.getPoint( i / divisions ) ); + + } + + if ( this.autoClose ) { + + points.push( points[ 0 ] ); + + } + + return points; + + } + + getPoints( divisions = 12 ) { + + const points = []; + let last; + + for ( let i = 0, curves = this.curves; i < curves.length; i ++ ) { + + const curve = curves[ i ]; + const resolution = curve.isEllipseCurve ? divisions * 2 + : ( curve.isLineCurve || curve.isLineCurve3 ) ? 1 + : curve.isSplineCurve ? divisions * curve.points.length + : divisions; + + const pts = curve.getPoints( resolution ); + + for ( let j = 0; j < pts.length; j ++ ) { + + const point = pts[ j ]; + + if ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates + + points.push( point ); + last = point; + + } + + } + + if ( this.autoClose && points.length > 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) { + + points.push( points[ 0 ] ); + + } + + return points; + + } + + copy( source ) { + + super.copy( source ); + + this.curves = []; + + for ( let i = 0, l = source.curves.length; i < l; i ++ ) { + + const curve = source.curves[ i ]; + + this.curves.push( curve.clone() ); + + } + + this.autoClose = source.autoClose; + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.autoClose = this.autoClose; + data.curves = []; + + for ( let i = 0, l = this.curves.length; i < l; i ++ ) { + + const curve = this.curves[ i ]; + data.curves.push( curve.toJSON() ); + + } + + return data; + + } + + fromJSON( json ) { + + super.fromJSON( json ); + + this.autoClose = json.autoClose; + this.curves = []; + + for ( let i = 0, l = json.curves.length; i < l; i ++ ) { + + const curve = json.curves[ i ]; + this.curves.push( new Curves[ curve.type ]().fromJSON( curve ) ); + + } + + return this; + + } + +} + +/** + * A 2D path representation. The class provides methods for creating paths + * and contours of 2D shapes similar to the 2D Canvas API. + * + * ```js + * const path = new THREE.Path(); + * + * path.lineTo( 0, 0.8 ); + * path.quadraticCurveTo( 0, 1, 0.2, 1 ); + * path.lineTo( 1, 1 ); + * + * const points = path.getPoints(); + * + * const geometry = new THREE.BufferGeometry().setFromPoints( points ); + * const material = new THREE.LineBasicMaterial( { color: 0xffffff } ); + * + * const line = new THREE.Line( geometry, material ); + * scene.add( line ); + * ``` + * + * @augments CurvePath + */ +class Path extends CurvePath { + + /** + * Constructs a new path. + * + * @param {Array} [points] - An array of 2D points defining the path. + */ + constructor( points ) { + + super(); + + this.type = 'Path'; + + /** + * The current offset of the path. Any new curve added will start here. + * + * @type {Vector2} + */ + this.currentPoint = new Vector2(); + + if ( points ) { + + this.setFromPoints( points ); + + } + + } + + /** + * Creates a path from the given list of points. The points are added + * to the path as instances of {@link LineCurve}. + * + * @param {Array} points - An array of 2D points. + * @return {Path} A reference to this path. + */ + setFromPoints( points ) { + + this.moveTo( points[ 0 ].x, points[ 0 ].y ); + + for ( let i = 1, l = points.length; i < l; i ++ ) { + + this.lineTo( points[ i ].x, points[ i ].y ); + + } + + return this; + + } + + /** + * Moves {@link Path#currentPoint} to the given point. + * + * @param {number} x - The x coordinate. + * @param {number} y - The y coordinate. + * @return {Path} A reference to this path. + */ + moveTo( x, y ) { + + this.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying? + + return this; + + } + + /** + * Adds an instance of {@link LineCurve} to the path by connecting + * the current point with the given one. + * + * @param {number} x - The x coordinate of the end point. + * @param {number} y - The y coordinate of the end point. + * @return {Path} A reference to this path. + */ + lineTo( x, y ) { + + const curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) ); + this.curves.push( curve ); + + this.currentPoint.set( x, y ); + + return this; + + } + + /** + * Adds an instance of {@link QuadraticBezierCurve} to the path by connecting + * the current point with the given one. + * + * @param {number} aCPx - The x coordinate of the control point. + * @param {number} aCPy - The y coordinate of the control point. + * @param {number} aX - The x coordinate of the end point. + * @param {number} aY - The y coordinate of the end point. + * @return {Path} A reference to this path. + */ + quadraticCurveTo( aCPx, aCPy, aX, aY ) { + + const curve = new QuadraticBezierCurve( + this.currentPoint.clone(), + new Vector2( aCPx, aCPy ), + new Vector2( aX, aY ) + ); + + this.curves.push( curve ); + + this.currentPoint.set( aX, aY ); + + return this; + + } + + /** + * Adds an instance of {@link CubicBezierCurve} to the path by connecting + * the current point with the given one. + * + * @param {number} aCP1x - The x coordinate of the first control point. + * @param {number} aCP1y - The y coordinate of the first control point. + * @param {number} aCP2x - The x coordinate of the second control point. + * @param {number} aCP2y - The y coordinate of the second control point. + * @param {number} aX - The x coordinate of the end point. + * @param {number} aY - The y coordinate of the end point. + * @return {Path} A reference to this path. + */ + bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { + + const curve = new CubicBezierCurve( + this.currentPoint.clone(), + new Vector2( aCP1x, aCP1y ), + new Vector2( aCP2x, aCP2y ), + new Vector2( aX, aY ) + ); + + this.curves.push( curve ); + + this.currentPoint.set( aX, aY ); + + return this; + + } + + /** + * Adds an instance of {@link SplineCurve} to the path by connecting + * the current point with the given list of points. + * + * @param {Array} pts - An array of points in 2D space. + * @return {Path} A reference to this path. + */ + splineThru( pts ) { + + const npts = [ this.currentPoint.clone() ].concat( pts ); + + const curve = new SplineCurve( npts ); + this.curves.push( curve ); + + this.currentPoint.copy( pts[ pts.length - 1 ] ); + + return this; + + } + + /** + * Adds an arc as an instance of {@link EllipseCurve} to the path, positioned relative + * to the current point. + * + * @param {number} aX - The x coordinate of the center of the arc offsetted from the previous curve. + * @param {number} aY - The y coordinate of the center of the arc offsetted from the previous curve. + * @param {number} aRadius - The radius of the arc. + * @param {number} aStartAngle - The start angle in radians. + * @param {number} aEndAngle - The end angle in radians. + * @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not. + * @return {Path} A reference to this path. + */ + arc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + const x0 = this.currentPoint.x; + const y0 = this.currentPoint.y; + + this.absarc( aX + x0, aY + y0, aRadius, + aStartAngle, aEndAngle, aClockwise ); + + return this; + + } + + /** + * Adds an absolutely positioned arc as an instance of {@link EllipseCurve} to the path. + * + * @param {number} aX - The x coordinate of the center of the arc. + * @param {number} aY - The y coordinate of the center of the arc. + * @param {number} aRadius - The radius of the arc. + * @param {number} aStartAngle - The start angle in radians. + * @param {number} aEndAngle - The end angle in radians. + * @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not. + * @return {Path} A reference to this path. + */ + absarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + this.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); + + return this; + + } + + /** + * Adds an ellipse as an instance of {@link EllipseCurve} to the path, positioned relative + * to the current point + * + * @param {number} aX - The x coordinate of the center of the ellipse offsetted from the previous curve. + * @param {number} aY - The y coordinate of the center of the ellipse offsetted from the previous curve. + * @param {number} xRadius - The radius of the ellipse in the x axis. + * @param {number} yRadius - The radius of the ellipse in the y axis. + * @param {number} aStartAngle - The start angle in radians. + * @param {number} aEndAngle - The end angle in radians. + * @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not. + * @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis. + * @return {Path} A reference to this path. + */ + ellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + const x0 = this.currentPoint.x; + const y0 = this.currentPoint.y; + + this.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); + + return this; + + } + + /** + * Adds an absolutely positioned ellipse as an instance of {@link EllipseCurve} to the path. + * + * @param {number} aX - The x coordinate of the absolute center of the ellipse. + * @param {number} aY - The y coordinate of the absolute center of the ellipse. + * @param {number} xRadius - The radius of the ellipse in the x axis. + * @param {number} yRadius - The radius of the ellipse in the y axis. + * @param {number} aStartAngle - The start angle in radians. + * @param {number} aEndAngle - The end angle in radians. + * @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not. + * @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis. + * @return {Path} A reference to this path. + */ + absellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + const curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); + + if ( this.curves.length > 0 ) { + + // if a previous curve is present, attempt to join + const firstPoint = curve.getPoint( 0 ); + + if ( ! firstPoint.equals( this.currentPoint ) ) { + + this.lineTo( firstPoint.x, firstPoint.y ); + + } + + } + + this.curves.push( curve ); + + const lastPoint = curve.getPoint( 1 ); + this.currentPoint.copy( lastPoint ); + + return this; + + } + + copy( source ) { + + super.copy( source ); + + this.currentPoint.copy( source.currentPoint ); + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.currentPoint = this.currentPoint.toArray(); + + return data; + + } + + fromJSON( json ) { + + super.fromJSON( json ); + + this.currentPoint.fromArray( json.currentPoint ); + + return this; + + } + +} + +/** + * Creates meshes with axial symmetry like vases. The lathe rotates around the Y axis. + * + * ```js + * const points = []; + * for ( let i = 0; i < 10; i ++ ) { + * points.push( new THREE.Vector2( Math.sin( i * 0.2 ) * 10 + 5, ( i - 5 ) * 2 ) ); + * } + * const geometry = new THREE.LatheGeometry( points ); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); + * const lathe = new THREE.Mesh( geometry, material ); + * scene.add( lathe ); + * ``` + * + * @augments BufferGeometry + */ +class LatheGeometry extends BufferGeometry { + + /** + * Constructs a new lathe geometry. + * + * @param {Array} [points] - An array of points in 2D space. The x-coordinate of each point + * must be greater than zero. + * @param {number} [segments=12] - The number of circumference segments to generate. + * @param {number} [phiStart=0] - The starting angle in radians. + * @param {number} [phiLength=Math.PI*2] - The radian (0 to 2PI) range of the lathed section 2PI is a + * closed lathe, less than 2PI is a portion. + */ + constructor( points = [ new Vector2( 0, -0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) { + + super(); + + this.type = 'LatheGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + points: points, + segments: segments, + phiStart: phiStart, + phiLength: phiLength + }; + + segments = Math.floor( segments ); + + // clamp phiLength so it's in range of [ 0, 2PI ] + + phiLength = clamp( phiLength, 0, Math.PI * 2 ); + + // buffers + + const indices = []; + const vertices = []; + const uvs = []; + const initNormals = []; + const normals = []; + + // helper variables + + const inverseSegments = 1.0 / segments; + const vertex = new Vector3(); + const uv = new Vector2(); + const normal = new Vector3(); + const curNormal = new Vector3(); + const prevNormal = new Vector3(); + let dx = 0; + let dy = 0; + + // pre-compute normals for initial "meridian" + + for ( let j = 0; j <= ( points.length - 1 ); j ++ ) { + + switch ( j ) { + + case 0: // special handling for 1st vertex on path + + dx = points[ j + 1 ].x - points[ j ].x; + dy = points[ j + 1 ].y - points[ j ].y; + + normal.x = dy * 1.0; + normal.y = - dx; + normal.z = dy * 0.0; + + prevNormal.copy( normal ); + + normal.normalize(); + + initNormals.push( normal.x, normal.y, normal.z ); + + break; + + case ( points.length - 1 ): // special handling for last Vertex on path + + initNormals.push( prevNormal.x, prevNormal.y, prevNormal.z ); + + break; + + default: // default handling for all vertices in between + + dx = points[ j + 1 ].x - points[ j ].x; + dy = points[ j + 1 ].y - points[ j ].y; + + normal.x = dy * 1.0; + normal.y = - dx; + normal.z = dy * 0.0; + + curNormal.copy( normal ); + + normal.x += prevNormal.x; + normal.y += prevNormal.y; + normal.z += prevNormal.z; + + normal.normalize(); + + initNormals.push( normal.x, normal.y, normal.z ); + + prevNormal.copy( curNormal ); + + } + + } + + // generate vertices, uvs and normals + + for ( let i = 0; i <= segments; i ++ ) { + + const phi = phiStart + i * inverseSegments * phiLength; + + const sin = Math.sin( phi ); + const cos = Math.cos( phi ); + + for ( let j = 0; j <= ( points.length - 1 ); j ++ ) { + + // vertex + + vertex.x = points[ j ].x * sin; + vertex.y = points[ j ].y; + vertex.z = points[ j ].x * cos; + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // uv + + uv.x = i / segments; + uv.y = j / ( points.length - 1 ); + + uvs.push( uv.x, uv.y ); + + // normal + + const x = initNormals[ 3 * j + 0 ] * sin; + const y = initNormals[ 3 * j + 1 ]; + const z = initNormals[ 3 * j + 0 ] * cos; + + normals.push( x, y, z ); + + } + + } + + // indices + + for ( let i = 0; i < segments; i ++ ) { + + for ( let j = 0; j < ( points.length - 1 ); j ++ ) { + + const base = j + i * points.length; + + const a = base; + const b = base + points.length; + const c = base + points.length + 1; + const d = base + 1; + + // faces + + indices.push( a, b, d ); + indices.push( c, d, b ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {LatheGeometry} A new instance. + */ + static fromJSON( data ) { + + return new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength ); + + } + +} + +/** + * A geometry class for a capsule with given radii and height. It is constructed using a lathe. + * + * ```js + * const geometry = new THREE.CapsuleGeometry( 1, 1, 4, 8 ); + * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); + * const capsule = new THREE.Mesh( geometry, material ); + * scene.add( capsule ); + * ``` + * + * @augments LatheGeometry + */ +class CapsuleGeometry extends LatheGeometry { + + /** + * Constructs a new capsule geometry. + * + * @param {number} [radius=1] - Radius of the capsule. + * @param {number} [length=1] - Length of the middle section. + * @param {number} [capSegments=4] - Number of curve segments used to build the caps. + * @param {number} [radialSegments=8] - Number of segmented faces around the circumference of the capsule. + */ + constructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) { + + const path = new Path(); + path.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 ); + path.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 ); + + super( path.getPoints( capSegments ), radialSegments ); + + this.type = 'CapsuleGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + radius: radius, + length: length, + capSegments: capSegments, + radialSegments: radialSegments, + }; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {CapsuleGeometry} A new instance. + */ + static fromJSON( data ) { + + return new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments ); + + } + +} + +/** + * A simple shape of Euclidean geometry. It is constructed from a + * number of triangular segments that are oriented around a central point and + * extend as far out as a given radius. It is built counter-clockwise from a + * start angle and a given central angle. It can also be used to create + * regular polygons, where the number of segments determines the number of + * sides. + * + * ```js + * const geometry = new THREE.CircleGeometry( 5, 32 ); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); + * const circle = new THREE.Mesh( geometry, material ); + * scene.add( circle ) + * ``` + * + * @augments BufferGeometry + */ +class CircleGeometry extends BufferGeometry { + + /** + * Constructs a new circle geometry. + * + * @param {number} [radius=1] - Radius of the circle. + * @param {number} [segments=32] - Number of segments (triangles), minimum = `3`. + * @param {number} [thetaStart=0] - Start angle for first segment in radians. + * @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta, + * of the circular sector in radians. The default value results in a complete circle. + */ + constructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) { + + super(); + + this.type = 'CircleGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + radius: radius, + segments: segments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + segments = Math.max( 3, segments ); + + // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + + // helper variables + + const vertex = new Vector3(); + const uv = new Vector2(); + + // center point + + vertices.push( 0, 0, 0 ); + normals.push( 0, 0, 1 ); + uvs.push( 0.5, 0.5 ); + + for ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) { + + const segment = thetaStart + s / segments * thetaLength; + + // vertex + + vertex.x = radius * Math.cos( segment ); + vertex.y = radius * Math.sin( segment ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, 0, 1 ); + + // uvs + + uv.x = ( vertices[ i ] / radius + 1 ) / 2; + uv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2; + + uvs.push( uv.x, uv.y ); + + } + + // indices + + for ( let i = 1; i <= segments; i ++ ) { + + indices.push( i, i + 1, 0 ); + + } + + // build geometry + + this.setIndex( indices ); + this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {CircleGeometry} A new instance. + */ + static fromJSON( data ) { + + return new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength ); + + } + +} + +/** + * A geometry class for representing a cylinder. + * + * ```js + * const geometry = new THREE.CylinderGeometry( 5, 5, 20, 32 ); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); + * const cylinder = new THREE.Mesh( geometry, material ); + * scene.add( cylinder ); + * ``` + * + * @augments BufferGeometry + */ +class CylinderGeometry extends BufferGeometry { + + /** + * Constructs a new cylinder geometry. + * + * @param {number} [radiusTop=1] - Radius of the cylinder at the top. + * @param {number} [radiusBottom=1] - Radius of the cylinder at the bottom. + * @param {number} [height=1] - Height of the cylinder. + * @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cylinder. + * @param {number} [heightSegments=1] - Number of rows of faces along the height of the cylinder. + * @param {boolean} [openEnded=false] - Whether the base of the cylinder is open or capped. + * @param {number} [thetaStart=0] - Start angle for first segment, in radians. + * @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians. + * The default value results in a complete cylinder. + */ + constructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) { + + super(); + + this.type = 'CylinderGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + radiusTop: radiusTop, + radiusBottom: radiusBottom, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + const scope = this; + + radialSegments = Math.floor( radialSegments ); + heightSegments = Math.floor( heightSegments ); + + // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + + // helper variables + + let index = 0; + const indexArray = []; + const halfHeight = height / 2; + let groupStart = 0; + + // generate geometry + + generateTorso(); + + if ( openEnded === false ) { + + if ( radiusTop > 0 ) generateCap( true ); + if ( radiusBottom > 0 ) generateCap( false ); + + } + + // build geometry + + this.setIndex( indices ); + this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + function generateTorso() { + + const normal = new Vector3(); + const vertex = new Vector3(); + + let groupCount = 0; + + // this will be used to calculate the normal + const slope = ( radiusBottom - radiusTop ) / height; + + // generate vertices, normals and uvs + + for ( let y = 0; y <= heightSegments; y ++ ) { + + const indexRow = []; + + const v = y / heightSegments; + + // calculate the radius of the current row + + const radius = v * ( radiusBottom - radiusTop ) + radiusTop; + + for ( let x = 0; x <= radialSegments; x ++ ) { + + const u = x / radialSegments; + + const theta = u * thetaLength + thetaStart; + + const sinTheta = Math.sin( theta ); + const cosTheta = Math.cos( theta ); + + // vertex + + vertex.x = radius * sinTheta; + vertex.y = - v * height + halfHeight; + vertex.z = radius * cosTheta; + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normal.set( sinTheta, slope, cosTheta ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u, 1 - v ); + + // save index of vertex in respective row + + indexRow.push( index ++ ); + + } + + // now save vertices of the row in our index array + + indexArray.push( indexRow ); + + } + + // generate indices + + for ( let x = 0; x < radialSegments; x ++ ) { + + for ( let y = 0; y < heightSegments; y ++ ) { + + // we use the index array to access the correct indices + + const a = indexArray[ y ][ x ]; + const b = indexArray[ y + 1 ][ x ]; + const c = indexArray[ y + 1 ][ x + 1 ]; + const d = indexArray[ y ][ x + 1 ]; + + // faces + + if ( radiusTop > 0 || y !== 0 ) { + + indices.push( a, b, d ); + groupCount += 3; + + } + + if ( radiusBottom > 0 || y !== heightSegments - 1 ) { + + indices.push( b, c, d ); + groupCount += 3; + + } + + } + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, 0 ); + + // calculate new start value for groups + + groupStart += groupCount; + + } + + function generateCap( top ) { + + // save the index of the first center vertex + const centerIndexStart = index; + + const uv = new Vector2(); + const vertex = new Vector3(); + + let groupCount = 0; + + const radius = ( top === true ) ? radiusTop : radiusBottom; + const sign = ( top === true ) ? 1 : -1; + + // first we generate the center vertex data of the cap. + // because the geometry needs one set of uvs per face, + // we must generate a center vertex per face/segment + + for ( let x = 1; x <= radialSegments; x ++ ) { + + // vertex + + vertices.push( 0, halfHeight * sign, 0 ); + + // normal + + normals.push( 0, sign, 0 ); + + // uv + + uvs.push( 0.5, 0.5 ); + + // increase index + + index ++; + + } + + // save the index of the last center vertex + const centerIndexEnd = index; + + // now we generate the surrounding vertices, normals and uvs + + for ( let x = 0; x <= radialSegments; x ++ ) { + + const u = x / radialSegments; + const theta = u * thetaLength + thetaStart; + + const cosTheta = Math.cos( theta ); + const sinTheta = Math.sin( theta ); + + // vertex + + vertex.x = radius * sinTheta; + vertex.y = halfHeight * sign; + vertex.z = radius * cosTheta; + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, sign, 0 ); + + // uv + + uv.x = ( cosTheta * 0.5 ) + 0.5; + uv.y = ( sinTheta * 0.5 * sign ) + 0.5; + uvs.push( uv.x, uv.y ); + + // increase index + + index ++; + + } + + // generate indices + + for ( let x = 0; x < radialSegments; x ++ ) { + + const c = centerIndexStart + x; + const i = centerIndexEnd + x; + + if ( top === true ) { + + // face top + + indices.push( i, i + 1, c ); + + } else { + + // face bottom + + indices.push( i + 1, i, c ); + + } + + groupCount += 3; + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, top === true ? 1 : 2 ); + + // calculate new start value for groups + + groupStart += groupCount; + + } + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {CylinderGeometry} A new instance. + */ + static fromJSON( data ) { + + return new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength ); + + } + +} + +/** + * A geometry class for representing a cone. + * + * ```js + * const geometry = new THREE.ConeGeometry( 5, 20, 32 ); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); + * const cone = new THREE.Mesh(geometry, material ); + * scene.add( cone ); + * ``` + * + * @augments CylinderGeometry + */ +class ConeGeometry extends CylinderGeometry { + + /** + * Constructs a new cone geometry. + * + * @param {number} [radius=1] - Radius of the cone base. + * @param {number} [height=1] - Height of the cone. + * @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cone. + * @param {number} [heightSegments=1] - Number of rows of faces along the height of the cone. + * @param {boolean} [openEnded=false] - Whether the base of the cone is open or capped. + * @param {number} [thetaStart=0] - Start angle for first segment, in radians. + * @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians. + * The default value results in a complete cone. + */ + constructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) { + + super( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); + + this.type = 'ConeGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + radius: radius, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {ConeGeometry} A new instance. + */ + static fromJSON( data ) { + + return new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength ); + + } + +} + +/** + * A polyhedron is a solid in three dimensions with flat faces. This class + * will take an array of vertices, project them onto a sphere, and then + * divide them up to the desired level of detail. + * + * @augments BufferGeometry + */ +class PolyhedronGeometry extends BufferGeometry { + + /** + * Constructs a new polyhedron geometry. + * + * @param {Array} [vertices] - A flat array of vertices describing the base shape. + * @param {Array} [indices] - A flat array of indices describing the base shape. + * @param {number} [radius=1] - The radius of the shape. + * @param {number} [detail=0] - How many levels to subdivide the geometry. The more detail, the smoother the shape. + */ + constructor( vertices = [], indices = [], radius = 1, detail = 0 ) { + + super(); + + this.type = 'PolyhedronGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + vertices: vertices, + indices: indices, + radius: radius, + detail: detail + }; + + // default buffer data + + const vertexBuffer = []; + const uvBuffer = []; + + // the subdivision creates the vertex buffer data + + subdivide( detail ); + + // all vertices should lie on a conceptual sphere with a given radius + + applyRadius( radius ); + + // finally, create the uv data + + generateUVs(); + + // build non-indexed geometry + + this.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) ); + this.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) ); + + if ( detail === 0 ) { + + this.computeVertexNormals(); // flat normals + + } else { + + this.normalizeNormals(); // smooth normals + + } + + // helper functions + + function subdivide( detail ) { + + const a = new Vector3(); + const b = new Vector3(); + const c = new Vector3(); + + // iterate over all faces and apply a subdivision with the given detail value + + for ( let i = 0; i < indices.length; i += 3 ) { + + // get the vertices of the face + + getVertexByIndex( indices[ i + 0 ], a ); + getVertexByIndex( indices[ i + 1 ], b ); + getVertexByIndex( indices[ i + 2 ], c ); + + // perform subdivision + + subdivideFace( a, b, c, detail ); + + } + + } + + function subdivideFace( a, b, c, detail ) { + + const cols = detail + 1; + + // we use this multidimensional array as a data structure for creating the subdivision + + const v = []; + + // construct all of the vertices for this subdivision + + for ( let i = 0; i <= cols; i ++ ) { + + v[ i ] = []; + + const aj = a.clone().lerp( c, i / cols ); + const bj = b.clone().lerp( c, i / cols ); + + const rows = cols - i; + + for ( let j = 0; j <= rows; j ++ ) { + + if ( j === 0 && i === cols ) { + + v[ i ][ j ] = aj; + + } else { + + v[ i ][ j ] = aj.clone().lerp( bj, j / rows ); + + } + + } + + } + + // construct all of the faces + + for ( let i = 0; i < cols; i ++ ) { + + for ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) { + + const k = Math.floor( j / 2 ); + + if ( j % 2 === 0 ) { + + pushVertex( v[ i ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k ] ); + pushVertex( v[ i ][ k ] ); + + } else { + + pushVertex( v[ i ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k ] ); + + } + + } + + } + + } + + function applyRadius( radius ) { + + const vertex = new Vector3(); + + // iterate over the entire buffer and apply the radius to each vertex + + for ( let i = 0; i < vertexBuffer.length; i += 3 ) { + + vertex.x = vertexBuffer[ i + 0 ]; + vertex.y = vertexBuffer[ i + 1 ]; + vertex.z = vertexBuffer[ i + 2 ]; + + vertex.normalize().multiplyScalar( radius ); + + vertexBuffer[ i + 0 ] = vertex.x; + vertexBuffer[ i + 1 ] = vertex.y; + vertexBuffer[ i + 2 ] = vertex.z; + + } + + } + + function generateUVs() { + + const vertex = new Vector3(); + + for ( let i = 0; i < vertexBuffer.length; i += 3 ) { + + vertex.x = vertexBuffer[ i + 0 ]; + vertex.y = vertexBuffer[ i + 1 ]; + vertex.z = vertexBuffer[ i + 2 ]; + + const u = azimuth( vertex ) / 2 / Math.PI + 0.5; + const v = inclination( vertex ) / Math.PI + 0.5; + uvBuffer.push( u, 1 - v ); + + } + + correctUVs(); + + correctSeam(); + + } + + function correctSeam() { + + // handle case when face straddles the seam, see #3269 + + for ( let i = 0; i < uvBuffer.length; i += 6 ) { + + // uv data of a single face + + const x0 = uvBuffer[ i + 0 ]; + const x1 = uvBuffer[ i + 2 ]; + const x2 = uvBuffer[ i + 4 ]; + + const max = Math.max( x0, x1, x2 ); + const min = Math.min( x0, x1, x2 ); + + // 0.9 is somewhat arbitrary + + if ( max > 0.9 && min < 0.1 ) { + + if ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1; + if ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1; + if ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1; + + } + + } + + } + + function pushVertex( vertex ) { + + vertexBuffer.push( vertex.x, vertex.y, vertex.z ); + + } + + function getVertexByIndex( index, vertex ) { + + const stride = index * 3; + + vertex.x = vertices[ stride + 0 ]; + vertex.y = vertices[ stride + 1 ]; + vertex.z = vertices[ stride + 2 ]; + + } + + function correctUVs() { + + const a = new Vector3(); + const b = new Vector3(); + const c = new Vector3(); + + const centroid = new Vector3(); + + const uvA = new Vector2(); + const uvB = new Vector2(); + const uvC = new Vector2(); + + for ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) { + + a.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] ); + b.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] ); + c.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] ); + + uvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] ); + uvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] ); + uvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] ); + + centroid.copy( a ).add( b ).add( c ).divideScalar( 3 ); + + const azi = azimuth( centroid ); + + correctUV( uvA, j + 0, a, azi ); + correctUV( uvB, j + 2, b, azi ); + correctUV( uvC, j + 4, c, azi ); + + } + + } + + function correctUV( uv, stride, vector, azimuth ) { + + if ( ( azimuth < 0 ) && ( uv.x === 1 ) ) { + + uvBuffer[ stride ] = uv.x - 1; + + } + + if ( ( vector.x === 0 ) && ( vector.z === 0 ) ) { + + uvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5; + + } + + } + + // Angle around the Y axis, counter-clockwise when looking from above. + + function azimuth( vector ) { + + return Math.atan2( vector.z, - vector.x ); + + } + + + // Angle above the XZ plane. + + function inclination( vector ) { + + return Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) ); + + } + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {PolyhedronGeometry} A new instance. + */ + static fromJSON( data ) { + + return new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details ); + + } + +} + +/** + * A geometry class for representing a dodecahedron. + * + * ```js + * const geometry = new THREE.DodecahedronGeometry(); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); + * const dodecahedron = new THREE.Mesh( geometry, material ); + * scene.add( dodecahedron ); + * ``` + * + * @augments PolyhedronGeometry + */ +class DodecahedronGeometry extends PolyhedronGeometry { + + /** + * Constructs a new dodecahedron geometry. + * + * @param {number} [radius=1] - Radius of the dodecahedron. + * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a dodecahedron. + */ + constructor( radius = 1, detail = 0 ) { + + const t = ( 1 + Math.sqrt( 5 ) ) / 2; + const r = 1 / t; + + const vertices = [ + + // (±1, ±1, ±1) + -1, -1, -1, -1, -1, 1, + -1, 1, -1, -1, 1, 1, + 1, -1, -1, 1, -1, 1, + 1, 1, -1, 1, 1, 1, + + // (0, ±1/φ, ±φ) + 0, - r, - t, 0, - r, t, + 0, r, - t, 0, r, t, + + // (±1/φ, ±φ, 0) + - r, - t, 0, - r, t, 0, + r, - t, 0, r, t, 0, + + // (±φ, 0, ±1/φ) + - t, 0, - r, t, 0, - r, + - t, 0, r, t, 0, r + ]; + + const indices = [ + 3, 11, 7, 3, 7, 15, 3, 15, 13, + 7, 19, 17, 7, 17, 6, 7, 6, 15, + 17, 4, 8, 17, 8, 10, 17, 10, 6, + 8, 0, 16, 8, 16, 2, 8, 2, 10, + 0, 12, 1, 0, 1, 18, 0, 18, 16, + 6, 10, 2, 6, 2, 13, 6, 13, 15, + 2, 16, 18, 2, 18, 3, 2, 3, 13, + 18, 1, 9, 18, 9, 11, 18, 11, 3, + 4, 14, 12, 4, 12, 0, 4, 0, 8, + 11, 9, 5, 11, 5, 19, 11, 19, 7, + 19, 5, 14, 19, 14, 4, 19, 4, 17, + 1, 12, 14, 1, 14, 5, 1, 5, 9 + ]; + + super( vertices, indices, radius, detail ); + + this.type = 'DodecahedronGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + radius: radius, + detail: detail + }; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {DodecahedronGeometry} A new instance. + */ + static fromJSON( data ) { + + return new DodecahedronGeometry( data.radius, data.detail ); + + } + +} + +const _v0 = /*@__PURE__*/ new Vector3(); +const _v1$1 = /*@__PURE__*/ new Vector3(); +const _normal = /*@__PURE__*/ new Vector3(); +const _triangle = /*@__PURE__*/ new Triangle(); + +/** + * Can be used as a helper object to view the edges of a geometry. + * + * ```js + * const geometry = new THREE.BoxGeometry(); + * const edges = new THREE.EdgesGeometry( geometry ); + * const line = new THREE.LineSegments( edges ); + * scene.add( line ); + * ``` + * + * Note: It is not yet possible to serialize/deserialize instances of this class. + * + * @augments BufferGeometry + */ +class EdgesGeometry extends BufferGeometry { + + /** + * Constructs a new edges geometry. + * + * @param {?BufferGeometry} [geometry=null] - The geometry. + * @param {number} [thresholdAngle=1] - An edge is only rendered if the angle (in degrees) + * between the face normals of the adjoining faces exceeds this value. + */ + constructor( geometry = null, thresholdAngle = 1 ) { + + super(); + + this.type = 'EdgesGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + geometry: geometry, + thresholdAngle: thresholdAngle + }; + + if ( geometry !== null ) { + + const precisionPoints = 4; + const precision = Math.pow( 10, precisionPoints ); + const thresholdDot = Math.cos( DEG2RAD * thresholdAngle ); + + const indexAttr = geometry.getIndex(); + const positionAttr = geometry.getAttribute( 'position' ); + const indexCount = indexAttr ? indexAttr.count : positionAttr.count; + + const indexArr = [ 0, 0, 0 ]; + const vertKeys = [ 'a', 'b', 'c' ]; + const hashes = new Array( 3 ); + + const edgeData = {}; + const vertices = []; + for ( let i = 0; i < indexCount; i += 3 ) { + + if ( indexAttr ) { + + indexArr[ 0 ] = indexAttr.getX( i ); + indexArr[ 1 ] = indexAttr.getX( i + 1 ); + indexArr[ 2 ] = indexAttr.getX( i + 2 ); + + } else { + + indexArr[ 0 ] = i; + indexArr[ 1 ] = i + 1; + indexArr[ 2 ] = i + 2; + + } + + const { a, b, c } = _triangle; + a.fromBufferAttribute( positionAttr, indexArr[ 0 ] ); + b.fromBufferAttribute( positionAttr, indexArr[ 1 ] ); + c.fromBufferAttribute( positionAttr, indexArr[ 2 ] ); + _triangle.getNormal( _normal ); + + // create hashes for the edge from the vertices + hashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`; + hashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`; + hashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`; + + // skip degenerate triangles + if ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) { + + continue; + + } + + // iterate over every edge + for ( let j = 0; j < 3; j ++ ) { + + // get the first and next vertex making up the edge + const jNext = ( j + 1 ) % 3; + const vecHash0 = hashes[ j ]; + const vecHash1 = hashes[ jNext ]; + const v0 = _triangle[ vertKeys[ j ] ]; + const v1 = _triangle[ vertKeys[ jNext ] ]; + + const hash = `${ vecHash0 }_${ vecHash1 }`; + const reverseHash = `${ vecHash1 }_${ vecHash0 }`; + + if ( reverseHash in edgeData && edgeData[ reverseHash ] ) { + + // if we found a sibling edge add it into the vertex array if + // it meets the angle threshold and delete the edge from the map. + if ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) { + + vertices.push( v0.x, v0.y, v0.z ); + vertices.push( v1.x, v1.y, v1.z ); + + } + + edgeData[ reverseHash ] = null; + + } else if ( ! ( hash in edgeData ) ) { + + // if we've already got an edge here then skip adding a new one + edgeData[ hash ] = { + + index0: indexArr[ j ], + index1: indexArr[ jNext ], + normal: _normal.clone(), + + }; + + } + + } + + } + + // iterate over all remaining, unmatched edges and add them to the vertex array + for ( const key in edgeData ) { + + if ( edgeData[ key ] ) { + + const { index0, index1 } = edgeData[ key ]; + _v0.fromBufferAttribute( positionAttr, index0 ); + _v1$1.fromBufferAttribute( positionAttr, index1 ); + + vertices.push( _v0.x, _v0.y, _v0.z ); + vertices.push( _v1$1.x, _v1$1.y, _v1$1.z ); + + } + + } + + this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + + } + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + +} + +/** + * Defines an arbitrary 2d shape plane using paths with optional holes. It + * can be used with {@link ExtrudeGeometry}, {@link ShapeGeometry}, to get + * points, or to get triangulated faces. + * + * ```js + * const heartShape = new THREE.Shape(); + * + * heartShape.moveTo( 25, 25 ); + * heartShape.bezierCurveTo( 25, 25, 20, 0, 0, 0 ); + * heartShape.bezierCurveTo( - 30, 0, - 30, 35, - 30, 35 ); + * heartShape.bezierCurveTo( - 30, 55, - 10, 77, 25, 95 ); + * heartShape.bezierCurveTo( 60, 77, 80, 55, 80, 35 ); + * heartShape.bezierCurveTo( 80, 35, 80, 0, 50, 0 ); + * heartShape.bezierCurveTo( 35, 0, 25, 25, 25, 25 ); + * + * const extrudeSettings = { + * depth: 8, + * bevelEnabled: true, + * bevelSegments: 2, + * steps: 2, + * bevelSize: 1, + * bevelThickness: 1 + * }; + * + * const geometry = new THREE.ExtrudeGeometry( heartShape, extrudeSettings ); + * const mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial() ); + * ``` + * + * @augments Path + */ +class Shape extends Path { + + /** + * Constructs a new shape. + * + * @param {Array} [points] - An array of 2D points defining the shape. + */ + constructor( points ) { + + super( points ); + + /** + * The UUID of the shape. + * + * @type {string} + * @readonly + */ + this.uuid = generateUUID(); + + this.type = 'Shape'; + + /** + * Defines the holes in the shape. Hole definitions must use the + * opposite winding order (CW/CCW) than the outer shape. + * + * @type {Array} + * @readonly + */ + this.holes = []; + + } + + /** + * Returns an array representing each contour of the holes + * as a list of 2D points. + * + * @param {number} divisions - The fineness of the result. + * @return {Array>} The holes as a series of 2D points. + */ + getPointsHoles( divisions ) { + + const holesPts = []; + + for ( let i = 0, l = this.holes.length; i < l; i ++ ) { + + holesPts[ i ] = this.holes[ i ].getPoints( divisions ); + + } + + return holesPts; + + } + + // get points of shape and holes (keypoints based on segments parameter) + + /** + * Returns an object that holds contour data for the shape and its holes as + * arrays of 2D points. + * + * @param {number} divisions - The fineness of the result. + * @return {{shape:Array,holes:Array>}} An object with contour data. + */ + extractPoints( divisions ) { + + return { + + shape: this.getPoints( divisions ), + holes: this.getPointsHoles( divisions ) + + }; + + } + + copy( source ) { + + super.copy( source ); + + this.holes = []; + + for ( let i = 0, l = source.holes.length; i < l; i ++ ) { + + const hole = source.holes[ i ]; + + this.holes.push( hole.clone() ); + + } + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.uuid = this.uuid; + data.holes = []; + + for ( let i = 0, l = this.holes.length; i < l; i ++ ) { + + const hole = this.holes[ i ]; + data.holes.push( hole.toJSON() ); + + } + + return data; + + } + + fromJSON( json ) { + + super.fromJSON( json ); + + this.uuid = json.uuid; + this.holes = []; + + for ( let i = 0, l = json.holes.length; i < l; i ++ ) { + + const hole = json.holes[ i ]; + this.holes.push( new Path().fromJSON( hole ) ); + + } + + return this; + + } + +} + +/* eslint-disable */ +// copy of mapbox/earcut version 3.0.1 +// https://github.com/mapbox/earcut/tree/v3.0.1 + +function earcut(data, holeIndices, dim = 2) { + + const hasHoles = holeIndices && holeIndices.length; + const outerLen = hasHoles ? holeIndices[0] * dim : data.length; + let outerNode = linkedList(data, 0, outerLen, dim, true); + const triangles = []; + + if (!outerNode || outerNode.next === outerNode.prev) return triangles; + + let minX, minY, invSize; + + if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim); + + // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox + if (data.length > 80 * dim) { + minX = Infinity; + minY = Infinity; + let maxX = -Infinity; + let maxY = -Infinity; + + for (let i = dim; i < outerLen; i += dim) { + const x = data[i]; + const y = data[i + 1]; + if (x < minX) minX = x; + if (y < minY) minY = y; + if (x > maxX) maxX = x; + if (y > maxY) maxY = y; + } + + // minX, minY and invSize are later used to transform coords into integers for z-order calculation + invSize = Math.max(maxX - minX, maxY - minY); + invSize = invSize !== 0 ? 32767 / invSize : 0; + } + + earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0); + + return triangles; +} + +// create a circular doubly linked list from polygon points in the specified winding order +function linkedList(data, start, end, dim, clockwise) { + let last; + + if (clockwise === (signedArea(data, start, end, dim) > 0)) { + for (let i = start; i < end; i += dim) last = insertNode(i / dim | 0, data[i], data[i + 1], last); + } else { + for (let i = end - dim; i >= start; i -= dim) last = insertNode(i / dim | 0, data[i], data[i + 1], last); + } + + if (last && equals(last, last.next)) { + removeNode(last); + last = last.next; + } + + return last; +} + +// eliminate colinear or duplicate points +function filterPoints(start, end) { + if (!start) return start; + if (!end) end = start; + + let p = start, + again; + do { + again = false; + + if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) { + removeNode(p); + p = end = p.prev; + if (p === p.next) break; + again = true; + + } else { + p = p.next; + } + } while (again || p !== end); + + return end; +} + +// main ear slicing loop which triangulates a polygon (given as a linked list) +function earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) { + if (!ear) return; + + // interlink polygon nodes in z-order + if (!pass && invSize) indexCurve(ear, minX, minY, invSize); + + let stop = ear; + + // iterate through ears, slicing them one by one + while (ear.prev !== ear.next) { + const prev = ear.prev; + const next = ear.next; + + if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) { + triangles.push(prev.i, ear.i, next.i); // cut off the triangle + + removeNode(ear); + + // skipping the next vertex leads to less sliver triangles + ear = next.next; + stop = next.next; + + continue; + } + + ear = next; + + // if we looped through the whole remaining polygon and can't find any more ears + if (ear === stop) { + // try filtering points and slicing again + if (!pass) { + earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1); + + // if this didn't work, try curing all small self-intersections locally + } else if (pass === 1) { + ear = cureLocalIntersections(filterPoints(ear), triangles); + earcutLinked(ear, triangles, dim, minX, minY, invSize, 2); + + // as a last resort, try splitting the remaining polygon into two + } else if (pass === 2) { + splitEarcut(ear, triangles, dim, minX, minY, invSize); + } + + break; + } + } +} + +// check whether a polygon node forms a valid ear with adjacent nodes +function isEar(ear) { + const a = ear.prev, + b = ear, + c = ear.next; + + if (area(a, b, c) >= 0) return false; // reflex, can't be an ear + + // now make sure we don't have other points inside the potential ear + const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y; + + // triangle bbox + const x0 = Math.min(ax, bx, cx), + y0 = Math.min(ay, by, cy), + x1 = Math.max(ax, bx, cx), + y1 = Math.max(ay, by, cy); + + let p = c.next; + while (p !== a) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && + pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && + area(p.prev, p, p.next) >= 0) return false; + p = p.next; + } + + return true; +} + +function isEarHashed(ear, minX, minY, invSize) { + const a = ear.prev, + b = ear, + c = ear.next; + + if (area(a, b, c) >= 0) return false; // reflex, can't be an ear + + const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y; + + // triangle bbox + const x0 = Math.min(ax, bx, cx), + y0 = Math.min(ay, by, cy), + x1 = Math.max(ax, bx, cx), + y1 = Math.max(ay, by, cy); + + // z-order range for the current triangle bbox; + const minZ = zOrder(x0, y0, minX, minY, invSize), + maxZ = zOrder(x1, y1, minX, minY, invSize); + + let p = ear.prevZ, + n = ear.nextZ; + + // look for points inside the triangle in both directions + while (p && p.z >= minZ && n && n.z <= maxZ) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && + pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false; + p = p.prevZ; + + if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && + pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false; + n = n.nextZ; + } + + // look for remaining points in decreasing z-order + while (p && p.z >= minZ) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && + pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false; + p = p.prevZ; + } + + // look for remaining points in increasing z-order + while (n && n.z <= maxZ) { + if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && + pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false; + n = n.nextZ; + } + + return true; +} + +// go through all polygon nodes and cure small local self-intersections +function cureLocalIntersections(start, triangles) { + let p = start; + do { + const a = p.prev, + b = p.next.next; + + if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) { + + triangles.push(a.i, p.i, b.i); + + // remove two nodes involved + removeNode(p); + removeNode(p.next); + + p = start = b; + } + p = p.next; + } while (p !== start); + + return filterPoints(p); +} + +// try splitting polygon into two and triangulate them independently +function splitEarcut(start, triangles, dim, minX, minY, invSize) { + // look for a valid diagonal that divides the polygon into two + let a = start; + do { + let b = a.next.next; + while (b !== a.prev) { + if (a.i !== b.i && isValidDiagonal(a, b)) { + // split the polygon in two by the diagonal + let c = splitPolygon(a, b); + + // filter colinear points around the cuts + a = filterPoints(a, a.next); + c = filterPoints(c, c.next); + + // run earcut on each half + earcutLinked(a, triangles, dim, minX, minY, invSize, 0); + earcutLinked(c, triangles, dim, minX, minY, invSize, 0); + return; + } + b = b.next; + } + a = a.next; + } while (a !== start); +} + +// link every hole into the outer loop, producing a single-ring polygon without holes +function eliminateHoles(data, holeIndices, outerNode, dim) { + const queue = []; + + for (let i = 0, len = holeIndices.length; i < len; i++) { + const start = holeIndices[i] * dim; + const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length; + const list = linkedList(data, start, end, dim, false); + if (list === list.next) list.steiner = true; + queue.push(getLeftmost(list)); + } + + queue.sort(compareXYSlope); + + // process holes from left to right + for (let i = 0; i < queue.length; i++) { + outerNode = eliminateHole(queue[i], outerNode); + } + + return outerNode; +} + +function compareXYSlope(a, b) { + let result = a.x - b.x; + // when the left-most point of 2 holes meet at a vertex, sort the holes counterclockwise so that when we find + // the bridge to the outer shell is always the point that they meet at. + if (result === 0) { + result = a.y - b.y; + if (result === 0) { + const aSlope = (a.next.y - a.y) / (a.next.x - a.x); + const bSlope = (b.next.y - b.y) / (b.next.x - b.x); + result = aSlope - bSlope; + } + } + return result; +} + +// find a bridge between vertices that connects hole with an outer ring and and link it +function eliminateHole(hole, outerNode) { + const bridge = findHoleBridge(hole, outerNode); + if (!bridge) { + return outerNode; + } + + const bridgeReverse = splitPolygon(bridge, hole); + + // filter collinear points around the cuts + filterPoints(bridgeReverse, bridgeReverse.next); + return filterPoints(bridge, bridge.next); +} + +// David Eberly's algorithm for finding a bridge between hole and outer polygon +function findHoleBridge(hole, outerNode) { + let p = outerNode; + const hx = hole.x; + const hy = hole.y; + let qx = -Infinity; + let m; + + // find a segment intersected by a ray from the hole's leftmost point to the left; + // segment's endpoint with lesser x will be potential connection point + // unless they intersect at a vertex, then choose the vertex + if (equals(hole, p)) return p; + do { + if (equals(hole, p.next)) return p.next; + else if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) { + const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y); + if (x <= hx && x > qx) { + qx = x; + m = p.x < p.next.x ? p : p.next; + if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint + } + } + p = p.next; + } while (p !== outerNode); + + if (!m) return null; + + // look for points inside the triangle of hole point, segment intersection and endpoint; + // if there are no points found, we have a valid connection; + // otherwise choose the point of the minimum angle with the ray as connection point + + const stop = m; + const mx = m.x; + const my = m.y; + let tanMin = Infinity; + + p = m; + + do { + if (hx >= p.x && p.x >= mx && hx !== p.x && + pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) { + + const tan = Math.abs(hy - p.y) / (hx - p.x); // tangential + + if (locallyInside(p, hole) && + (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) { + m = p; + tanMin = tan; + } + } + + p = p.next; + } while (p !== stop); + + return m; +} + +// whether sector in vertex m contains sector in vertex p in the same coordinates +function sectorContainsSector(m, p) { + return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0; +} + +// interlink polygon nodes in z-order +function indexCurve(start, minX, minY, invSize) { + let p = start; + do { + if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize); + p.prevZ = p.prev; + p.nextZ = p.next; + p = p.next; + } while (p !== start); + + p.prevZ.nextZ = null; + p.prevZ = null; + + sortLinked(p); +} + +// Simon Tatham's linked list merge sort algorithm +// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html +function sortLinked(list) { + let numMerges; + let inSize = 1; + + do { + let p = list; + let e; + list = null; + let tail = null; + numMerges = 0; + + while (p) { + numMerges++; + let q = p; + let pSize = 0; + for (let i = 0; i < inSize; i++) { + pSize++; + q = q.nextZ; + if (!q) break; + } + let qSize = inSize; + + while (pSize > 0 || (qSize > 0 && q)) { + + if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) { + e = p; + p = p.nextZ; + pSize--; + } else { + e = q; + q = q.nextZ; + qSize--; + } + + if (tail) tail.nextZ = e; + else list = e; + + e.prevZ = tail; + tail = e; + } + + p = q; + } + + tail.nextZ = null; + inSize *= 2; + + } while (numMerges > 1); + + return list; +} + +// z-order of a point given coords and inverse of the longer side of data bbox +function zOrder(x, y, minX, minY, invSize) { + // coords are transformed into non-negative 15-bit integer range + x = (x - minX) * invSize | 0; + y = (y - minY) * invSize | 0; + + x = (x | (x << 8)) & 0x00FF00FF; + x = (x | (x << 4)) & 0x0F0F0F0F; + x = (x | (x << 2)) & 0x33333333; + x = (x | (x << 1)) & 0x55555555; + + y = (y | (y << 8)) & 0x00FF00FF; + y = (y | (y << 4)) & 0x0F0F0F0F; + y = (y | (y << 2)) & 0x33333333; + y = (y | (y << 1)) & 0x55555555; + + return x | (y << 1); +} + +// find the leftmost node of a polygon ring +function getLeftmost(start) { + let p = start, + leftmost = start; + do { + if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p; + p = p.next; + } while (p !== start); + + return leftmost; +} + +// check if a point lies within a convex triangle +function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) { + return (cx - px) * (ay - py) >= (ax - px) * (cy - py) && + (ax - px) * (by - py) >= (bx - px) * (ay - py) && + (bx - px) * (cy - py) >= (cx - px) * (by - py); +} + +// check if a point lies within a convex triangle but false if its equal to the first point of the triangle +function pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, px, py) { + return !(ax === px && ay === py) && pointInTriangle(ax, ay, bx, by, cx, cy, px, py); +} + +// check if a diagonal between two polygon nodes is valid (lies in polygon interior) +function isValidDiagonal(a, b) { + return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges + (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible + (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors + equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case +} + +// signed area of a triangle +function area(p, q, r) { + return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); +} + +// check if two points are equal +function equals(p1, p2) { + return p1.x === p2.x && p1.y === p2.y; +} + +// check if two segments intersect +function intersects(p1, q1, p2, q2) { + const o1 = sign(area(p1, q1, p2)); + const o2 = sign(area(p1, q1, q2)); + const o3 = sign(area(p2, q2, p1)); + const o4 = sign(area(p2, q2, q1)); + + if (o1 !== o2 && o3 !== o4) return true; // general case + + if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1 + if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1 + if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2 + if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2 + + return false; +} + +// for collinear points p, q, r, check if point q lies on segment pr +function onSegment(p, q, r) { + return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y); +} + +function sign(num) { + return num > 0 ? 1 : num < 0 ? -1 : 0; +} + +// check if a polygon diagonal intersects any polygon segments +function intersectsPolygon(a, b) { + let p = a; + do { + if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && + intersects(p, p.next, a, b)) return true; + p = p.next; + } while (p !== a); + + return false; +} + +// check if a polygon diagonal is locally inside the polygon +function locallyInside(a, b) { + return area(a.prev, a, a.next) < 0 ? + area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : + area(a, b, a.prev) < 0 || area(a, a.next, b) < 0; +} + +// check if the middle point of a polygon diagonal is inside the polygon +function middleInside(a, b) { + let p = a; + let inside = false; + const px = (a.x + b.x) / 2; + const py = (a.y + b.y) / 2; + do { + if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y && + (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x)) + inside = !inside; + p = p.next; + } while (p !== a); + + return inside; +} + +// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two; +// if one belongs to the outer ring and another to a hole, it merges it into a single ring +function splitPolygon(a, b) { + const a2 = createNode(a.i, a.x, a.y), + b2 = createNode(b.i, b.x, b.y), + an = a.next, + bp = b.prev; + + a.next = b; + b.prev = a; + + a2.next = an; + an.prev = a2; + + b2.next = a2; + a2.prev = b2; + + bp.next = b2; + b2.prev = bp; + + return b2; +} + +// create a node and optionally link it with previous one (in a circular doubly linked list) +function insertNode(i, x, y, last) { + const p = createNode(i, x, y); + + if (!last) { + p.prev = p; + p.next = p; + + } else { + p.next = last.next; + p.prev = last; + last.next.prev = p; + last.next = p; + } + return p; +} + +function removeNode(p) { + p.next.prev = p.prev; + p.prev.next = p.next; + + if (p.prevZ) p.prevZ.nextZ = p.nextZ; + if (p.nextZ) p.nextZ.prevZ = p.prevZ; +} + +function createNode(i, x, y) { + return { + i, // vertex index in coordinates array + x, y, // vertex coordinates + prev: null, // previous and next vertex nodes in a polygon ring + next: null, + z: 0, // z-order curve value + prevZ: null, // previous and next nodes in z-order + nextZ: null, + steiner: false // indicates whether this is a steiner point + }; +} + +function signedArea(data, start, end, dim) { + let sum = 0; + for (let i = start, j = end - dim; i < end; i += dim) { + sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]); + j = i; + } + return sum; +} + +class Earcut { + + /** + * Triangulates the given shape definition by returning an array of triangles. + * + * @param {Array} data - An array with 2D points. + * @param {Array} holeIndices - An array with indices defining holes. + * @param {number} [dim=2] - The number of coordinates per vertex in the input array. + * @return {Array} An array representing the triangulated faces. Each face is defined by three consecutive numbers + * representing vertex indices. + */ + static triangulate( data, holeIndices, dim = 2 ) { + + return earcut( data, holeIndices, dim ); + + } + +} + +/** + * A class containing utility functions for shapes. + * + * @hideconstructor + */ +class ShapeUtils { + + /** + * Calculate area of a ( 2D ) contour polygon. + * + * @param {Array} contour - An array of 2D points. + * @return {number} The area. + */ + static area( contour ) { + + const n = contour.length; + let a = 0.0; + + for ( let p = n - 1, q = 0; q < n; p = q ++ ) { + + a += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y; + + } + + return a * 0.5; + + } + + /** + * Returns `true` if the given contour uses a clockwise winding order. + * + * @param {Array} pts - An array of 2D points defining a polygon. + * @return {boolean} Whether the given contour uses a clockwise winding order or not. + */ + static isClockWise( pts ) { + + return ShapeUtils.area( pts ) < 0; + + } + + /** + * Triangulates the given shape definition. + * + * @param {Array} contour - An array of 2D points defining the contour. + * @param {Array>} holes - An array that holds arrays of 2D points defining the holes. + * @return {Array>} An array that holds for each face definition an array with three indices. + */ + static triangulateShape( contour, holes ) { + + const vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ] + const holeIndices = []; // array of hole indices + const faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ] + + removeDupEndPts( contour ); + addContour( vertices, contour ); + + // + + let holeIndex = contour.length; + + holes.forEach( removeDupEndPts ); + + for ( let i = 0; i < holes.length; i ++ ) { + + holeIndices.push( holeIndex ); + holeIndex += holes[ i ].length; + addContour( vertices, holes[ i ] ); + + } + + // + + const triangles = Earcut.triangulate( vertices, holeIndices ); + + // + + for ( let i = 0; i < triangles.length; i += 3 ) { + + faces.push( triangles.slice( i, i + 3 ) ); + + } + + return faces; + + } + +} + +function removeDupEndPts( points ) { + + const l = points.length; + + if ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) { + + points.pop(); + + } + +} + +function addContour( vertices, contour ) { + + for ( let i = 0; i < contour.length; i ++ ) { + + vertices.push( contour[ i ].x ); + vertices.push( contour[ i ].y ); + + } + +} + +/** + * Creates extruded geometry from a path shape. + * + * ```js + * const length = 12, width = 8; + * + * const shape = new THREE.Shape(); + * shape.moveTo( 0,0 ); + * shape.lineTo( 0, width ); + * shape.lineTo( length, width ); + * shape.lineTo( length, 0 ); + * shape.lineTo( 0, 0 ); + * + * const geometry = new THREE.ExtrudeGeometry( shape ); + * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); + * const mesh = new THREE.Mesh( geometry, material ) ; + * scene.add( mesh ); + * ``` + * + * @augments BufferGeometry + */ +class ExtrudeGeometry extends BufferGeometry { + + /** + * Constructs a new extrude geometry. + * + * @param {Shape|Array} [shapes] - A shape or an array of shapes. + * @param {ExtrudeGeometry~Options} [options] - The extrude settings. + */ + constructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( -0.5, 0.5 ), new Vector2( -0.5, -0.5 ), new Vector2( 0.5, -0.5 ) ] ), options = {} ) { + + super(); + + this.type = 'ExtrudeGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + shapes: shapes, + options: options + }; + + shapes = Array.isArray( shapes ) ? shapes : [ shapes ]; + + const scope = this; + + const verticesArray = []; + const uvArray = []; + + for ( let i = 0, l = shapes.length; i < l; i ++ ) { + + const shape = shapes[ i ]; + addShape( shape ); + + } + + // build geometry + + this.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) ); + + this.computeVertexNormals(); + + // functions + + function addShape( shape ) { + + const placeholder = []; + + // options + + const curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12; + const steps = options.steps !== undefined ? options.steps : 1; + const depth = options.depth !== undefined ? options.depth : 1; + + let bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; + let bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2; + let bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1; + let bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0; + let bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3; + + const extrudePath = options.extrudePath; + + const uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator; + + // + + let extrudePts, extrudeByPath = false; + let splineTube, binormal, normal, position2; + + if ( extrudePath ) { + + extrudePts = extrudePath.getSpacedPoints( steps ); + + extrudeByPath = true; + bevelEnabled = false; // bevels not supported for path extrusion + + // SETUP TNB variables + + // TODO1 - have a .isClosed in spline? + + splineTube = extrudePath.computeFrenetFrames( steps, false ); + + // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length); + + binormal = new Vector3(); + normal = new Vector3(); + position2 = new Vector3(); + + } + + // Safeguards if bevels are not enabled + + if ( ! bevelEnabled ) { + + bevelSegments = 0; + bevelThickness = 0; + bevelSize = 0; + bevelOffset = 0; + + } + + // Variables initialization + + const shapePoints = shape.extractPoints( curveSegments ); + + let vertices = shapePoints.shape; + const holes = shapePoints.holes; + + const reverse = ! ShapeUtils.isClockWise( vertices ); + + if ( reverse ) { + + vertices = vertices.reverse(); + + // Maybe we should also check if holes are in the opposite direction, just to be safe ... + + for ( let h = 0, hl = holes.length; h < hl; h ++ ) { + + const ahole = holes[ h ]; + + if ( ShapeUtils.isClockWise( ahole ) ) { + + holes[ h ] = ahole.reverse(); + + } + + } + + } + + /**Merges index-adjacent points that are within a threshold distance of each other. Array is modified in-place. Threshold distance is empirical, and scaled based on the magnitude of point coordinates. + * @param {Array} points + */ + function mergeOverlappingPoints( points ) { + + const THRESHOLD = 1e-10; + const THRESHOLD_SQ = THRESHOLD * THRESHOLD; + let prevPos = points[ 0 ]; + for ( let i = 1; i <= points.length; i ++ ) { + + const currentIndex = i % points.length; + const currentPos = points[ currentIndex ]; + const dx = currentPos.x - prevPos.x; + const dy = currentPos.y - prevPos.y; + const distSq = dx * dx + dy * dy; + + const scalingFactorSqrt = Math.max( + Math.abs( currentPos.x ), + Math.abs( currentPos.y ), + Math.abs( prevPos.x ), + Math.abs( prevPos.y ) + ); + const thesholdSqScaled = THRESHOLD_SQ * scalingFactorSqrt * scalingFactorSqrt; + if ( distSq <= thesholdSqScaled ) { + + points.splice( currentIndex, 1 ); + i --; + continue; + + } + + prevPos = currentPos; + + } + + } + + mergeOverlappingPoints( vertices ); + holes.forEach( mergeOverlappingPoints ); + + const numHoles = holes.length; + + /* Vertices */ + + const contour = vertices; // vertices has all points but contour has only points of circumference + + for ( let h = 0; h < numHoles; h ++ ) { + + const ahole = holes[ h ]; + + vertices = vertices.concat( ahole ); + + } + + + function scalePt2( pt, vec, size ) { + + if ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' ); + + return pt.clone().addScaledVector( vec, size ); + + } + + const vlen = vertices.length; + + + // Find directions for point movement + + + function getBevelVec( inPt, inPrev, inNext ) { + + // computes for inPt the corresponding point inPt' on a new contour + // shifted by 1 unit (length of normalized vector) to the left + // if we walk along contour clockwise, this new contour is outside the old one + // + // inPt' is the intersection of the two lines parallel to the two + // adjacent edges of inPt at a distance of 1 unit on the left side. + + let v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt + + // good reading for geometry algorithms (here: line-line intersection) + // http://geomalgorithms.com/a05-_intersect-1.html + + const v_prev_x = inPt.x - inPrev.x, + v_prev_y = inPt.y - inPrev.y; + const v_next_x = inNext.x - inPt.x, + v_next_y = inNext.y - inPt.y; + + const v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y ); + + // check for collinear edges + const collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x ); + + if ( Math.abs( collinear0 ) > Number.EPSILON ) { + + // not collinear + + // length of vectors for normalizing + + const v_prev_len = Math.sqrt( v_prev_lensq ); + const v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y ); + + // shift adjacent points by unit vectors to the left + + const ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len ); + const ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len ); + + const ptNextShift_x = ( inNext.x - v_next_y / v_next_len ); + const ptNextShift_y = ( inNext.y + v_next_x / v_next_len ); + + // scaling factor for v_prev to intersection point + + const sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y - + ( ptNextShift_y - ptPrevShift_y ) * v_next_x ) / + ( v_prev_x * v_next_y - v_prev_y * v_next_x ); + + // vector from inPt to intersection point + + v_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x ); + v_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y ); + + // Don't normalize!, otherwise sharp corners become ugly + // but prevent crazy spikes + const v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y ); + if ( v_trans_lensq <= 2 ) { + + return new Vector2( v_trans_x, v_trans_y ); + + } else { + + shrink_by = Math.sqrt( v_trans_lensq / 2 ); + + } + + } else { + + // handle special case of collinear edges + + let direction_eq = false; // assumes: opposite + + if ( v_prev_x > Number.EPSILON ) { + + if ( v_next_x > Number.EPSILON ) { + + direction_eq = true; + + } + + } else { + + if ( v_prev_x < - Number.EPSILON ) { + + if ( v_next_x < - Number.EPSILON ) { + + direction_eq = true; + + } + + } else { + + if ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) { + + direction_eq = true; + + } + + } + + } + + if ( direction_eq ) { + + // console.log("Warning: lines are a straight sequence"); + v_trans_x = - v_prev_y; + v_trans_y = v_prev_x; + shrink_by = Math.sqrt( v_prev_lensq ); + + } else { + + // console.log("Warning: lines are a straight spike"); + v_trans_x = v_prev_x; + v_trans_y = v_prev_y; + shrink_by = Math.sqrt( v_prev_lensq / 2 ); + + } + + } + + return new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by ); + + } + + + const contourMovements = []; + + for ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { + + if ( j === il ) j = 0; + if ( k === il ) k = 0; + + // (j)---(i)---(k) + // console.log('i,j,k', i, j , k) + + contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] ); + + } + + const holesMovements = []; + let oneHoleMovements, verticesMovements = contourMovements.concat(); + + for ( let h = 0, hl = numHoles; h < hl; h ++ ) { + + const ahole = holes[ h ]; + + oneHoleMovements = []; + + for ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { + + if ( j === il ) j = 0; + if ( k === il ) k = 0; + + // (j)---(i)---(k) + oneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] ); + + } + + holesMovements.push( oneHoleMovements ); + verticesMovements = verticesMovements.concat( oneHoleMovements ); + + } + + const contractedContourVertices = []; + const expandedHoleVertices = []; + + // Loop bevelSegments, 1 for the front, 1 for the back + + for ( let b = 0; b < bevelSegments; b ++ ) { + + //for ( b = bevelSegments; b > 0; b -- ) { + + const t = b / bevelSegments; + const z = bevelThickness * Math.cos( t * Math.PI / 2 ); + const bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset; + + // contract shape + + for ( let i = 0, il = contour.length; i < il; i ++ ) { + + const vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); + + v( vert.x, vert.y, - z ); + if ( t == 0 ) contractedContourVertices.push( vert ); + + } + + // expand holes + + for ( let h = 0, hl = numHoles; h < hl; h ++ ) { + + const ahole = holes[ h ]; + oneHoleMovements = holesMovements[ h ]; + const oneHoleVertices = []; + for ( let i = 0, il = ahole.length; i < il; i ++ ) { + + const vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); + + v( vert.x, vert.y, - z ); + if ( t == 0 ) oneHoleVertices.push( vert ); + + } + + if ( t == 0 ) expandedHoleVertices.push( oneHoleVertices ); + + } + + } + + const faces = ShapeUtils.triangulateShape( contractedContourVertices, expandedHoleVertices ); + + const flen = faces.length; + + const bs = bevelSize + bevelOffset; + + // Back facing vertices + + for ( let i = 0; i < vlen; i ++ ) { + + const vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, 0 ); + + } else { + + // v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x ); + + normal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x ); + binormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y ); + + position2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal ); + + v( position2.x, position2.y, position2.z ); + + } + + } + + // Add stepped vertices... + // Including front facing vertices + + for ( let s = 1; s <= steps; s ++ ) { + + for ( let i = 0; i < vlen; i ++ ) { + + const vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, depth / steps * s ); + + } else { + + // v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x ); + + normal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x ); + binormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y ); + + position2.copy( extrudePts[ s ] ).add( normal ).add( binormal ); + + v( position2.x, position2.y, position2.z ); + + } + + } + + } + + + // Add bevel segments planes + + //for ( b = 1; b <= bevelSegments; b ++ ) { + for ( let b = bevelSegments - 1; b >= 0; b -- ) { + + const t = b / bevelSegments; + const z = bevelThickness * Math.cos( t * Math.PI / 2 ); + const bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset; + + // contract shape + + for ( let i = 0, il = contour.length; i < il; i ++ ) { + + const vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); + v( vert.x, vert.y, depth + z ); + + } + + // expand holes + + for ( let h = 0, hl = holes.length; h < hl; h ++ ) { + + const ahole = holes[ h ]; + oneHoleMovements = holesMovements[ h ]; + + for ( let i = 0, il = ahole.length; i < il; i ++ ) { + + const vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, depth + z ); + + } else { + + v( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z ); + + } + + } + + } + + } + + /* Faces */ + + // Top and bottom faces + + buildLidFaces(); + + // Sides faces + + buildSideFaces(); + + + ///// Internal functions + + function buildLidFaces() { + + const start = verticesArray.length / 3; + + if ( bevelEnabled ) { + + let layer = 0; // steps + 1 + let offset = vlen * layer; + + // Bottom faces + + for ( let i = 0; i < flen; i ++ ) { + + const face = faces[ i ]; + f3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset ); + + } + + layer = steps + bevelSegments * 2; + offset = vlen * layer; + + // Top faces + + for ( let i = 0; i < flen; i ++ ) { + + const face = faces[ i ]; + f3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset ); + + } + + } else { + + // Bottom faces + + for ( let i = 0; i < flen; i ++ ) { + + const face = faces[ i ]; + f3( face[ 2 ], face[ 1 ], face[ 0 ] ); + + } + + // Top faces + + for ( let i = 0; i < flen; i ++ ) { + + const face = faces[ i ]; + f3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps ); + + } + + } + + scope.addGroup( start, verticesArray.length / 3 - start, 0 ); + + } + + // Create faces for the z-sides of the shape + + function buildSideFaces() { + + const start = verticesArray.length / 3; + let layeroffset = 0; + sidewalls( contour, layeroffset ); + layeroffset += contour.length; + + for ( let h = 0, hl = holes.length; h < hl; h ++ ) { + + const ahole = holes[ h ]; + sidewalls( ahole, layeroffset ); + + //, true + layeroffset += ahole.length; + + } + + + scope.addGroup( start, verticesArray.length / 3 - start, 1 ); + + + } + + function sidewalls( contour, layeroffset ) { + + let i = contour.length; + + while ( -- i >= 0 ) { + + const j = i; + let k = i - 1; + if ( k < 0 ) k = contour.length - 1; + + //console.log('b', i,j, i-1, k,vertices.length); + + for ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) { + + const slen1 = vlen * s; + const slen2 = vlen * ( s + 1 ); + + const a = layeroffset + j + slen1, + b = layeroffset + k + slen1, + c = layeroffset + k + slen2, + d = layeroffset + j + slen2; + + f4( a, b, c, d ); + + } + + } + + } + + function v( x, y, z ) { + + placeholder.push( x ); + placeholder.push( y ); + placeholder.push( z ); + + } + + + function f3( a, b, c ) { + + addVertex( a ); + addVertex( b ); + addVertex( c ); + + const nextIndex = verticesArray.length / 3; + const uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); + + addUV( uvs[ 0 ] ); + addUV( uvs[ 1 ] ); + addUV( uvs[ 2 ] ); + + } + + function f4( a, b, c, d ) { + + addVertex( a ); + addVertex( b ); + addVertex( d ); + + addVertex( b ); + addVertex( c ); + addVertex( d ); + + + const nextIndex = verticesArray.length / 3; + const uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); + + addUV( uvs[ 0 ] ); + addUV( uvs[ 1 ] ); + addUV( uvs[ 3 ] ); + + addUV( uvs[ 1 ] ); + addUV( uvs[ 2 ] ); + addUV( uvs[ 3 ] ); + + } + + function addVertex( index ) { + + verticesArray.push( placeholder[ index * 3 + 0 ] ); + verticesArray.push( placeholder[ index * 3 + 1 ] ); + verticesArray.push( placeholder[ index * 3 + 2 ] ); + + } + + + function addUV( vector2 ) { + + uvArray.push( vector2.x ); + uvArray.push( vector2.y ); + + } + + } + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + const shapes = this.parameters.shapes; + const options = this.parameters.options; + + return toJSON$1( shapes, options, data ); + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @param {Array} shapes - An array of shapes. + * @return {ExtrudeGeometry} A new instance. + */ + static fromJSON( data, shapes ) { + + const geometryShapes = []; + + for ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) { + + const shape = shapes[ data.shapes[ j ] ]; + + geometryShapes.push( shape ); + + } + + const extrudePath = data.options.extrudePath; + + if ( extrudePath !== undefined ) { + + data.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath ); + + } + + return new ExtrudeGeometry( geometryShapes, data.options ); + + } + +} + +const WorldUVGenerator = { + + generateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) { + + const a_x = vertices[ indexA * 3 ]; + const a_y = vertices[ indexA * 3 + 1 ]; + const b_x = vertices[ indexB * 3 ]; + const b_y = vertices[ indexB * 3 + 1 ]; + const c_x = vertices[ indexC * 3 ]; + const c_y = vertices[ indexC * 3 + 1 ]; + + return [ + new Vector2( a_x, a_y ), + new Vector2( b_x, b_y ), + new Vector2( c_x, c_y ) + ]; + + }, + + generateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) { + + const a_x = vertices[ indexA * 3 ]; + const a_y = vertices[ indexA * 3 + 1 ]; + const a_z = vertices[ indexA * 3 + 2 ]; + const b_x = vertices[ indexB * 3 ]; + const b_y = vertices[ indexB * 3 + 1 ]; + const b_z = vertices[ indexB * 3 + 2 ]; + const c_x = vertices[ indexC * 3 ]; + const c_y = vertices[ indexC * 3 + 1 ]; + const c_z = vertices[ indexC * 3 + 2 ]; + const d_x = vertices[ indexD * 3 ]; + const d_y = vertices[ indexD * 3 + 1 ]; + const d_z = vertices[ indexD * 3 + 2 ]; + + if ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) { + + return [ + new Vector2( a_x, 1 - a_z ), + new Vector2( b_x, 1 - b_z ), + new Vector2( c_x, 1 - c_z ), + new Vector2( d_x, 1 - d_z ) + ]; + + } else { + + return [ + new Vector2( a_y, 1 - a_z ), + new Vector2( b_y, 1 - b_z ), + new Vector2( c_y, 1 - c_z ), + new Vector2( d_y, 1 - d_z ) + ]; + + } + + } + +}; + +function toJSON$1( shapes, options, data ) { + + data.shapes = []; + + if ( Array.isArray( shapes ) ) { + + for ( let i = 0, l = shapes.length; i < l; i ++ ) { + + const shape = shapes[ i ]; + + data.shapes.push( shape.uuid ); + + } + + } else { + + data.shapes.push( shapes.uuid ); + + } + + data.options = Object.assign( {}, options ); + + if ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON(); + + return data; + +} + +/** + * A geometry class for representing an icosahedron. + * + * ```js + * const geometry = new THREE.IcosahedronGeometry(); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); + * const icosahedron = new THREE.Mesh( geometry, material ); + * scene.add( icosahedron ); + * ``` + * + * @augments PolyhedronGeometry + */ +class IcosahedronGeometry extends PolyhedronGeometry { + + /** + * Constructs a new icosahedron geometry. + * + * @param {number} [radius=1] - Radius of the icosahedron. + * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a icosahedron. + */ + constructor( radius = 1, detail = 0 ) { + + const t = ( 1 + Math.sqrt( 5 ) ) / 2; + + const vertices = [ + -1, t, 0, 1, t, 0, -1, - t, 0, 1, - t, 0, + 0, -1, t, 0, 1, t, 0, -1, - t, 0, 1, - t, + t, 0, -1, t, 0, 1, - t, 0, -1, - t, 0, 1 + ]; + + const indices = [ + 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, + 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, + 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, + 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1 + ]; + + super( vertices, indices, radius, detail ); + + this.type = 'IcosahedronGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + radius: radius, + detail: detail + }; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {IcosahedronGeometry} A new instance. + */ + static fromJSON( data ) { + + return new IcosahedronGeometry( data.radius, data.detail ); + + } + +} + +/** + * A geometry class for representing an octahedron. + * + * ```js + * const geometry = new THREE.OctahedronGeometry(); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); + * const octahedron = new THREE.Mesh( geometry, material ); + * scene.add( octahedron ); + * ``` + * + * @augments PolyhedronGeometry + */ +class OctahedronGeometry extends PolyhedronGeometry { + + /** + * Constructs a new octahedron geometry. + * + * @param {number} [radius=1] - Radius of the octahedron. + * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a octahedron. + */ + constructor( radius = 1, detail = 0 ) { + + const vertices = [ + 1, 0, 0, -1, 0, 0, 0, 1, 0, + 0, -1, 0, 0, 0, 1, 0, 0, -1 + ]; + + const indices = [ + 0, 2, 4, 0, 4, 3, 0, 3, 5, + 0, 5, 2, 1, 2, 5, 1, 5, 3, + 1, 3, 4, 1, 4, 2 + ]; + + super( vertices, indices, radius, detail ); + + this.type = 'OctahedronGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + radius: radius, + detail: detail + }; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {OctahedronGeometry} A new instance. + */ + static fromJSON( data ) { + + return new OctahedronGeometry( data.radius, data.detail ); + + } + +} + +/** + * A geometry class for representing a plane. + * + * ```js + * const geometry = new THREE.PlaneGeometry( 1, 1 ); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00, side: THREE.DoubleSide } ); + * const plane = new THREE.Mesh( geometry, material ); + * scene.add( plane ); + * ``` + * + * @augments BufferGeometry + */ +class PlaneGeometry extends BufferGeometry { + + /** + * Constructs a new plane geometry. + * + * @param {number} [width=1] - The width along the X axis. + * @param {number} [height=1] - The height along the Y axis + * @param {number} [widthSegments=1] - The number of segments along the X axis. + * @param {number} [heightSegments=1] - The number of segments along the Y axis. + */ + constructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) { + + super(); + + this.type = 'PlaneGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + width: width, + height: height, + widthSegments: widthSegments, + heightSegments: heightSegments + }; + + const width_half = width / 2; + const height_half = height / 2; + + const gridX = Math.floor( widthSegments ); + const gridY = Math.floor( heightSegments ); + + const gridX1 = gridX + 1; + const gridY1 = gridY + 1; + + const segment_width = width / gridX; + const segment_height = height / gridY; + + // + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + + for ( let iy = 0; iy < gridY1; iy ++ ) { + + const y = iy * segment_height - height_half; + + for ( let ix = 0; ix < gridX1; ix ++ ) { + + const x = ix * segment_width - width_half; + + vertices.push( x, - y, 0 ); + + normals.push( 0, 0, 1 ); + + uvs.push( ix / gridX ); + uvs.push( 1 - ( iy / gridY ) ); + + } + + } + + for ( let iy = 0; iy < gridY; iy ++ ) { + + for ( let ix = 0; ix < gridX; ix ++ ) { + + const a = ix + gridX1 * iy; + const b = ix + gridX1 * ( iy + 1 ); + const c = ( ix + 1 ) + gridX1 * ( iy + 1 ); + const d = ( ix + 1 ) + gridX1 * iy; + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + this.setIndex( indices ); + this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {PlaneGeometry} A new instance. + */ + static fromJSON( data ) { + + return new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments ); + + } + +} + +/** + * A class for generating a two-dimensional ring geometry. + * + * ```js + * const geometry = new THREE.RingGeometry( 1, 5, 32 ); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00, side: THREE.DoubleSide } ); + * const mesh = new THREE.Mesh( geometry, material ); + * scene.add( mesh ); + * ``` + * + * @augments BufferGeometry + */ +class RingGeometry extends BufferGeometry { + + /** + * Constructs a new ring geometry. + * + * @param {number} [innerRadius=0.5] - The inner radius of the ring. + * @param {number} [outerRadius=1] - The outer radius of the ring. + * @param {number} [thetaSegments=32] - Number of segments. A higher number means the ring will be more round. Minimum is `3`. + * @param {number} [phiSegments=1] - Number of segments per ring segment. Minimum is `1`. + * @param {number} [thetaStart=0] - Starting angle in radians. + * @param {number} [thetaLength=Math.PI*2] - Central angle in radians. + */ + constructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) { + + super(); + + this.type = 'RingGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + innerRadius: innerRadius, + outerRadius: outerRadius, + thetaSegments: thetaSegments, + phiSegments: phiSegments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + thetaSegments = Math.max( 3, thetaSegments ); + phiSegments = Math.max( 1, phiSegments ); + + // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + + // some helper variables + + let radius = innerRadius; + const radiusStep = ( ( outerRadius - innerRadius ) / phiSegments ); + const vertex = new Vector3(); + const uv = new Vector2(); + + // generate vertices, normals and uvs + + for ( let j = 0; j <= phiSegments; j ++ ) { + + for ( let i = 0; i <= thetaSegments; i ++ ) { + + // values are generate from the inside of the ring to the outside + + const segment = thetaStart + i / thetaSegments * thetaLength; + + // vertex + + vertex.x = radius * Math.cos( segment ); + vertex.y = radius * Math.sin( segment ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, 0, 1 ); + + // uv + + uv.x = ( vertex.x / outerRadius + 1 ) / 2; + uv.y = ( vertex.y / outerRadius + 1 ) / 2; + + uvs.push( uv.x, uv.y ); + + } + + // increase the radius for next row of vertices + + radius += radiusStep; + + } + + // indices + + for ( let j = 0; j < phiSegments; j ++ ) { + + const thetaSegmentLevel = j * ( thetaSegments + 1 ); + + for ( let i = 0; i < thetaSegments; i ++ ) { + + const segment = i + thetaSegmentLevel; + + const a = segment; + const b = segment + thetaSegments + 1; + const c = segment + thetaSegments + 2; + const d = segment + 1; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {RingGeometry} A new instance. + */ + static fromJSON( data ) { + + return new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength ); + + } + +} + +/** + * Creates an one-sided polygonal geometry from one or more path shapes. + * + * ```js + * const arcShape = new THREE.Shape() + * .moveTo( 5, 1 ) + * .absarc( 1, 1, 4, 0, Math.PI * 2, false ); + * + * const geometry = new THREE.ShapeGeometry( arcShape ); + * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00, side: THREE.DoubleSide } ); + * const mesh = new THREE.Mesh( geometry, material ) ; + * scene.add( mesh ); + * ``` + * + * @augments BufferGeometry + */ +class ShapeGeometry extends BufferGeometry { + + /** + * Constructs a new shape geometry. + * + * @param {Shape|Array} [shapes] - A shape or an array of shapes. + * @param {number} [curveSegments=12] - Number of segments per shape. + */ + constructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( -0.5, -0.5 ), new Vector2( 0.5, -0.5 ) ] ), curveSegments = 12 ) { + + super(); + + this.type = 'ShapeGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + shapes: shapes, + curveSegments: curveSegments + }; + + // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + + // helper variables + + let groupStart = 0; + let groupCount = 0; + + // allow single and array values for "shapes" parameter + + if ( Array.isArray( shapes ) === false ) { + + addShape( shapes ); + + } else { + + for ( let i = 0; i < shapes.length; i ++ ) { + + addShape( shapes[ i ] ); + + this.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support + + groupStart += groupCount; + groupCount = 0; + + } + + } + + // build geometry + + this.setIndex( indices ); + this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + + // helper functions + + function addShape( shape ) { + + const indexOffset = vertices.length / 3; + const points = shape.extractPoints( curveSegments ); + + let shapeVertices = points.shape; + const shapeHoles = points.holes; + + // check direction of vertices + + if ( ShapeUtils.isClockWise( shapeVertices ) === false ) { + + shapeVertices = shapeVertices.reverse(); + + } + + for ( let i = 0, l = shapeHoles.length; i < l; i ++ ) { + + const shapeHole = shapeHoles[ i ]; + + if ( ShapeUtils.isClockWise( shapeHole ) === true ) { + + shapeHoles[ i ] = shapeHole.reverse(); + + } + + } + + const faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles ); + + // join vertices of inner and outer paths to a single array + + for ( let i = 0, l = shapeHoles.length; i < l; i ++ ) { + + const shapeHole = shapeHoles[ i ]; + shapeVertices = shapeVertices.concat( shapeHole ); + + } + + // vertices, normals, uvs + + for ( let i = 0, l = shapeVertices.length; i < l; i ++ ) { + + const vertex = shapeVertices[ i ]; + + vertices.push( vertex.x, vertex.y, 0 ); + normals.push( 0, 0, 1 ); + uvs.push( vertex.x, vertex.y ); // world uvs + + } + + // indices + + for ( let i = 0, l = faces.length; i < l; i ++ ) { + + const face = faces[ i ]; + + const a = face[ 0 ] + indexOffset; + const b = face[ 1 ] + indexOffset; + const c = face[ 2 ] + indexOffset; + + indices.push( a, b, c ); + groupCount += 3; + + } + + } + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + const shapes = this.parameters.shapes; + + return toJSON( shapes, data ); + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @param {Array} shapes - An array of shapes. + * @return {ShapeGeometry} A new instance. + */ + static fromJSON( data, shapes ) { + + const geometryShapes = []; + + for ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) { + + const shape = shapes[ data.shapes[ j ] ]; + + geometryShapes.push( shape ); + + } + + return new ShapeGeometry( geometryShapes, data.curveSegments ); + + } + +} + +function toJSON( shapes, data ) { + + data.shapes = []; + + if ( Array.isArray( shapes ) ) { + + for ( let i = 0, l = shapes.length; i < l; i ++ ) { + + const shape = shapes[ i ]; + + data.shapes.push( shape.uuid ); + + } + + } else { + + data.shapes.push( shapes.uuid ); + + } + + return data; + +} + +/** + * A class for generating a sphere geometry. + * + * ```js + * const geometry = new THREE.SphereGeometry( 15, 32, 16 ); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); + * const sphere = new THREE.Mesh( geometry, material ); + * scene.add( sphere ); + * ``` + * + * @augments BufferGeometry + */ +class SphereGeometry extends BufferGeometry { + + /** + * Constructs a new sphere geometry. + * + * @param {number} [radius=1] - The sphere radius. + * @param {number} [widthSegments=32] - The number of horizontal segments. Minimum value is `3`. + * @param {number} [heightSegments=16] - The number of vertical segments. Minimum value is `2`. + * @param {number} [phiStart=0] - The horizontal starting angle in radians. + * @param {number} [phiLength=Math.PI*2] - The horizontal sweep angle size. + * @param {number} [thetaStart=0] - The vertical starting angle in radians. + * @param {number} [thetaLength=Math.PI] - The vertical sweep angle size. + */ + constructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) { + + super(); + + this.type = 'SphereGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + radius: radius, + widthSegments: widthSegments, + heightSegments: heightSegments, + phiStart: phiStart, + phiLength: phiLength, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + widthSegments = Math.max( 3, Math.floor( widthSegments ) ); + heightSegments = Math.max( 2, Math.floor( heightSegments ) ); + + const thetaEnd = Math.min( thetaStart + thetaLength, Math.PI ); + + let index = 0; + const grid = []; + + const vertex = new Vector3(); + const normal = new Vector3(); + + // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + + // generate vertices, normals and uvs + + for ( let iy = 0; iy <= heightSegments; iy ++ ) { + + const verticesRow = []; + + const v = iy / heightSegments; + + // special case for the poles + + let uOffset = 0; + + if ( iy === 0 && thetaStart === 0 ) { + + uOffset = 0.5 / widthSegments; + + } else if ( iy === heightSegments && thetaEnd === Math.PI ) { + + uOffset = -0.5 / widthSegments; + + } + + for ( let ix = 0; ix <= widthSegments; ix ++ ) { + + const u = ix / widthSegments; + + // vertex + + vertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); + vertex.y = radius * Math.cos( thetaStart + v * thetaLength ); + vertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normal.copy( vertex ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u + uOffset, 1 - v ); + + verticesRow.push( index ++ ); + + } + + grid.push( verticesRow ); + + } + + // indices + + for ( let iy = 0; iy < heightSegments; iy ++ ) { + + for ( let ix = 0; ix < widthSegments; ix ++ ) { + + const a = grid[ iy ][ ix + 1 ]; + const b = grid[ iy ][ ix ]; + const c = grid[ iy + 1 ][ ix ]; + const d = grid[ iy + 1 ][ ix + 1 ]; + + if ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d ); + if ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {SphereGeometry} A new instance. + */ + static fromJSON( data ) { + + return new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength ); + + } + +} + +/** + * A geometry class for representing an tetrahedron. + * + * ```js + * const geometry = new THREE.TetrahedronGeometry(); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); + * const tetrahedron = new THREE.Mesh( geometry, material ); + * scene.add( tetrahedron ); + * ``` + * + * @augments PolyhedronGeometry + */ +class TetrahedronGeometry extends PolyhedronGeometry { + + /** + * Constructs a new tetrahedron geometry. + * + * @param {number} [radius=1] - Radius of the tetrahedron. + * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a tetrahedron. + */ + constructor( radius = 1, detail = 0 ) { + + const vertices = [ + 1, 1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1 + ]; + + const indices = [ + 2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1 + ]; + + super( vertices, indices, radius, detail ); + + this.type = 'TetrahedronGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + radius: radius, + detail: detail + }; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {TetrahedronGeometry} A new instance. + */ + static fromJSON( data ) { + + return new TetrahedronGeometry( data.radius, data.detail ); + + } + +} + +/** + * A geometry class for representing an torus. + * + * ```js + * const geometry = new THREE.TorusGeometry( 10, 3, 16, 100 ); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); + * const torus = new THREE.Mesh( geometry, material ); + * scene.add( torus ); + * ``` + * + * @augments BufferGeometry + */ +class TorusGeometry extends BufferGeometry { + + /** + * Constructs a new torus geometry. + * + * @param {number} [radius=1] - Radius of the torus, from the center of the torus to the center of the tube. + * @param {number} [tube=0.4] - Radius of the tube. Must be smaller than `radius`. + * @param {number} [radialSegments=12] - The number of radial segments. + * @param {number} [tubularSegments=48] - The number of tubular segments. + * @param {number} [arc=Math.PI*2] - Central angle in radians. + */ + constructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) { + + super(); + + this.type = 'TorusGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + radius: radius, + tube: tube, + radialSegments: radialSegments, + tubularSegments: tubularSegments, + arc: arc + }; + + radialSegments = Math.floor( radialSegments ); + tubularSegments = Math.floor( tubularSegments ); + + // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + + // helper variables + + const center = new Vector3(); + const vertex = new Vector3(); + const normal = new Vector3(); + + // generate vertices, normals and uvs + + for ( let j = 0; j <= radialSegments; j ++ ) { + + for ( let i = 0; i <= tubularSegments; i ++ ) { + + const u = i / tubularSegments * arc; + const v = j / radialSegments * Math.PI * 2; + + // vertex + + vertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u ); + vertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u ); + vertex.z = tube * Math.sin( v ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + center.x = radius * Math.cos( u ); + center.y = radius * Math.sin( u ); + normal.subVectors( vertex, center ).normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( i / tubularSegments ); + uvs.push( j / radialSegments ); + + } + + } + + // generate indices + + for ( let j = 1; j <= radialSegments; j ++ ) { + + for ( let i = 1; i <= tubularSegments; i ++ ) { + + // indices + + const a = ( tubularSegments + 1 ) * j + i - 1; + const b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1; + const c = ( tubularSegments + 1 ) * ( j - 1 ) + i; + const d = ( tubularSegments + 1 ) * j + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {TorusGeometry} A new instance. + */ + static fromJSON( data ) { + + return new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc ); + + } + +} + +/** + * Creates a torus knot, the particular shape of which is defined by a pair + * of coprime integers, p and q. If p and q are not coprime, the result will + * be a torus link. + * + * ```js + * const geometry = new THREE.TorusKnotGeometry( 10, 3, 100, 16 ); + * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); + * const torusKnot = new THREE.Mesh( geometry, material ); + * scene.add( torusKnot ); + * ``` + * + * @augments BufferGeometry + */ +class TorusKnotGeometry extends BufferGeometry { + + /** + * Constructs a new torus knot geometry. + * + * @param {number} [radius=1] - Radius of the torus knot. + * @param {number} [tube=0.4] - Radius of the tube. + * @param {number} [tubularSegments=64] - The number of tubular segments. + * @param {number} [radialSegments=8] - The number of radial segments. + * @param {number} [p=2] - This value determines, how many times the geometry winds around its axis of rotational symmetry. + * @param {number} [q=3] - This value determines, how many times the geometry winds around a circle in the interior of the torus. + */ + constructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) { + + super(); + + this.type = 'TorusKnotGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + radius: radius, + tube: tube, + tubularSegments: tubularSegments, + radialSegments: radialSegments, + p: p, + q: q + }; + + tubularSegments = Math.floor( tubularSegments ); + radialSegments = Math.floor( radialSegments ); + + // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + + // helper variables + + const vertex = new Vector3(); + const normal = new Vector3(); + + const P1 = new Vector3(); + const P2 = new Vector3(); + + const B = new Vector3(); + const T = new Vector3(); + const N = new Vector3(); + + // generate vertices, normals and uvs + + for ( let i = 0; i <= tubularSegments; ++ i ) { + + // the radian "u" is used to calculate the position on the torus curve of the current tubular segment + + const u = i / tubularSegments * p * Math.PI * 2; + + // now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead. + // these points are used to create a special "coordinate space", which is necessary to calculate the correct vertex positions + + calculatePositionOnCurve( u, p, q, radius, P1 ); + calculatePositionOnCurve( u + 0.01, p, q, radius, P2 ); + + // calculate orthonormal basis + + T.subVectors( P2, P1 ); + N.addVectors( P2, P1 ); + B.crossVectors( T, N ); + N.crossVectors( B, T ); + + // normalize B, N. T can be ignored, we don't use it + + B.normalize(); + N.normalize(); + + for ( let j = 0; j <= radialSegments; ++ j ) { + + // now calculate the vertices. they are nothing more than an extrusion of the torus curve. + // because we extrude a shape in the xy-plane, there is no need to calculate a z-value. + + const v = j / radialSegments * Math.PI * 2; + const cx = - tube * Math.cos( v ); + const cy = tube * Math.sin( v ); + + // now calculate the final vertex position. + // first we orient the extrusion with our basis vectors, then we add it to the current position on the curve + + vertex.x = P1.x + ( cx * N.x + cy * B.x ); + vertex.y = P1.y + ( cx * N.y + cy * B.y ); + vertex.z = P1.z + ( cx * N.z + cy * B.z ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal) + + normal.subVectors( vertex, P1 ).normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( i / tubularSegments ); + uvs.push( j / radialSegments ); + + } + + } + + // generate indices + + for ( let j = 1; j <= tubularSegments; j ++ ) { + + for ( let i = 1; i <= radialSegments; i ++ ) { + + // indices + + const a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); + const b = ( radialSegments + 1 ) * j + ( i - 1 ); + const c = ( radialSegments + 1 ) * j + i; + const d = ( radialSegments + 1 ) * ( j - 1 ) + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // this function calculates the current position on the torus curve + + function calculatePositionOnCurve( u, p, q, radius, position ) { + + const cu = Math.cos( u ); + const su = Math.sin( u ); + const quOverP = q / p * u; + const cs = Math.cos( quOverP ); + + position.x = radius * ( 2 + cs ) * 0.5 * cu; + position.y = radius * ( 2 + cs ) * su * 0.5; + position.z = radius * Math.sin( quOverP ) * 0.5; + + } + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {TorusKnotGeometry} A new instance. + */ + static fromJSON( data ) { + + return new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q ); + + } + +} + +/** + * Creates a tube that extrudes along a 3D curve. + * + * ```js + * class CustomSinCurve extends THREE.Curve { + * + * getPoint( t, optionalTarget = new THREE.Vector3() ) { + * + * const tx = t * 3 - 1.5; + * const ty = Math.sin( 2 * Math.PI * t ); + * const tz = 0; + * + * return optionalTarget.set( tx, ty, tz ); + * } + * + * } + * + * const path = new CustomSinCurve( 10 ); + * const geometry = new THREE.TubeGeometry( path, 20, 2, 8, false ); + * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); + * const mesh = new THREE.Mesh( geometry, material ); + * scene.add( mesh ); + * ``` + * + * @augments BufferGeometry + */ +class TubeGeometry extends BufferGeometry { + + /** + * Constructs a new tube geometry. + * + * @param {Curve} [path=QuadraticBezierCurve3] - A 3D curve defining the path of the tube. + * @param {number} [tubularSegments=64] - The number of segments that make up the tube. + * @param {number} [radius=1] -The radius of the tube. + * @param {number} [radialSegments=8] - The number of segments that make up the cross-section. + * @param {boolean} [closed=false] - Whether the tube is closed or not. + */ + constructor( path = new QuadraticBezierCurve3( new Vector3( -1, -1, 0 ), new Vector3( -1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) { + + super(); + + this.type = 'TubeGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + path: path, + tubularSegments: tubularSegments, + radius: radius, + radialSegments: radialSegments, + closed: closed + }; + + const frames = path.computeFrenetFrames( tubularSegments, closed ); + + // expose internals + + this.tangents = frames.tangents; + this.normals = frames.normals; + this.binormals = frames.binormals; + + // helper variables + + const vertex = new Vector3(); + const normal = new Vector3(); + const uv = new Vector2(); + let P = new Vector3(); + + // buffer + + const vertices = []; + const normals = []; + const uvs = []; + const indices = []; + + // create buffer data + + generateBufferData(); + + // build geometry + + this.setIndex( indices ); + this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // functions + + function generateBufferData() { + + for ( let i = 0; i < tubularSegments; i ++ ) { + + generateSegment( i ); + + } + + // if the geometry is not closed, generate the last row of vertices and normals + // at the regular position on the given path + // + // if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ) + + generateSegment( ( closed === false ) ? tubularSegments : 0 ); + + // uvs are generated in a separate function. + // this makes it easy compute correct values for closed geometries + + generateUVs(); + + // finally create faces + + generateIndices(); + + } + + function generateSegment( i ) { + + // we use getPointAt to sample evenly distributed points from the given path + + P = path.getPointAt( i / tubularSegments, P ); + + // retrieve corresponding normal and binormal + + const N = frames.normals[ i ]; + const B = frames.binormals[ i ]; + + // generate normals and vertices for the current segment + + for ( let j = 0; j <= radialSegments; j ++ ) { + + const v = j / radialSegments * Math.PI * 2; + + const sin = Math.sin( v ); + const cos = - Math.cos( v ); + + // normal + + normal.x = ( cos * N.x + sin * B.x ); + normal.y = ( cos * N.y + sin * B.y ); + normal.z = ( cos * N.z + sin * B.z ); + normal.normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // vertex + + vertex.x = P.x + radius * normal.x; + vertex.y = P.y + radius * normal.y; + vertex.z = P.z + radius * normal.z; + + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } + + function generateIndices() { + + for ( let j = 1; j <= tubularSegments; j ++ ) { + + for ( let i = 1; i <= radialSegments; i ++ ) { + + const a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); + const b = ( radialSegments + 1 ) * j + ( i - 1 ); + const c = ( radialSegments + 1 ) * j + i; + const d = ( radialSegments + 1 ) * ( j - 1 ) + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + } + + function generateUVs() { + + for ( let i = 0; i <= tubularSegments; i ++ ) { + + for ( let j = 0; j <= radialSegments; j ++ ) { + + uv.x = i / tubularSegments; + uv.y = j / radialSegments; + + uvs.push( uv.x, uv.y ); + + } + + } + + } + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.path = this.parameters.path.toJSON(); + + return data; + + } + + /** + * Factory method for creating an instance of this class from the given + * JSON object. + * + * @param {Object} data - A JSON object representing the serialized geometry. + * @return {TubeGeometry} A new instance. + */ + static fromJSON( data ) { + + // This only works for built-in curves (e.g. CatmullRomCurve3). + // User defined curves or instances of CurvePath will not be deserialized. + return new TubeGeometry( + new Curves[ data.path.type ]().fromJSON( data.path ), + data.tubularSegments, + data.radius, + data.radialSegments, + data.closed + ); + + } + +} + +/** + * Can be used as a helper object to visualize a geometry as a wireframe. + * + * ```js + * const geometry = new THREE.SphereGeometry(); + * + * const wireframe = new THREE.WireframeGeometry( geometry ); + * + * const line = new THREE.LineSegments( wireframe ); + * line.material.depthWrite = false; + * line.material.opacity = 0.25; + * line.material.transparent = true; + * + * scene.add( line ); + * ``` + * + * Note: It is not yet possible to serialize/deserialize instances of this class. + * + * @augments BufferGeometry + */ +class WireframeGeometry extends BufferGeometry { + + /** + * Constructs a new wireframe geometry. + * + * @param {?BufferGeometry} [geometry=null] - The geometry. + */ + constructor( geometry = null ) { + + super(); + + this.type = 'WireframeGeometry'; + + /** + * Holds the constructor parameters that have been + * used to generate the geometry. Any modification + * after instantiation does not change the geometry. + * + * @type {Object} + */ + this.parameters = { + geometry: geometry + }; + + if ( geometry !== null ) { + + // buffer + + const vertices = []; + const edges = new Set(); + + // helper variables + + const start = new Vector3(); + const end = new Vector3(); + + if ( geometry.index !== null ) { + + // indexed BufferGeometry + + const position = geometry.attributes.position; + const indices = geometry.index; + let groups = geometry.groups; + + if ( groups.length === 0 ) { + + groups = [ { start: 0, count: indices.count, materialIndex: 0 } ]; + + } + + // create a data structure that contains all edges without duplicates + + for ( let o = 0, ol = groups.length; o < ol; ++ o ) { + + const group = groups[ o ]; + + const groupStart = group.start; + const groupCount = group.count; + + for ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) { + + for ( let j = 0; j < 3; j ++ ) { + + const index1 = indices.getX( i + j ); + const index2 = indices.getX( i + ( j + 1 ) % 3 ); + + start.fromBufferAttribute( position, index1 ); + end.fromBufferAttribute( position, index2 ); + + if ( isUniqueEdge( start, end, edges ) === true ) { + + vertices.push( start.x, start.y, start.z ); + vertices.push( end.x, end.y, end.z ); + + } + + } + + } + + } + + } else { + + // non-indexed BufferGeometry + + const position = geometry.attributes.position; + + for ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) { + + for ( let j = 0; j < 3; j ++ ) { + + // three edges per triangle, an edge is represented as (index1, index2) + // e.g. the first triangle has the following edges: (0,1),(1,2),(2,0) + + const index1 = 3 * i + j; + const index2 = 3 * i + ( ( j + 1 ) % 3 ); + + start.fromBufferAttribute( position, index1 ); + end.fromBufferAttribute( position, index2 ); + + if ( isUniqueEdge( start, end, edges ) === true ) { + + vertices.push( start.x, start.y, start.z ); + vertices.push( end.x, end.y, end.z ); + + } + + } + + } + + } + + // build geometry + + this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + + } + + } + + copy( source ) { + + super.copy( source ); + + this.parameters = Object.assign( {}, source.parameters ); + + return this; + + } + +} + +function isUniqueEdge( start, end, edges ) { + + const hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`; + const hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge + + if ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) { + + return false; + + } else { + + edges.add( hash1 ); + edges.add( hash2 ); + return true; + + } + +} + +var Geometries = /*#__PURE__*/Object.freeze({ + __proto__: null, + BoxGeometry: BoxGeometry, + CapsuleGeometry: CapsuleGeometry, + CircleGeometry: CircleGeometry, + ConeGeometry: ConeGeometry, + CylinderGeometry: CylinderGeometry, + DodecahedronGeometry: DodecahedronGeometry, + EdgesGeometry: EdgesGeometry, + ExtrudeGeometry: ExtrudeGeometry, + IcosahedronGeometry: IcosahedronGeometry, + LatheGeometry: LatheGeometry, + OctahedronGeometry: OctahedronGeometry, + PlaneGeometry: PlaneGeometry, + PolyhedronGeometry: PolyhedronGeometry, + RingGeometry: RingGeometry, + ShapeGeometry: ShapeGeometry, + SphereGeometry: SphereGeometry, + TetrahedronGeometry: TetrahedronGeometry, + TorusGeometry: TorusGeometry, + TorusKnotGeometry: TorusKnotGeometry, + TubeGeometry: TubeGeometry, + WireframeGeometry: WireframeGeometry +}); + +/** + * This material can receive shadows, but otherwise is completely transparent. + * + * ```js + * const geometry = new THREE.PlaneGeometry( 2000, 2000 ); + * geometry.rotateX( - Math.PI / 2 ); + * + * const material = new THREE.ShadowMaterial(); + * material.opacity = 0.2; + * + * const plane = new THREE.Mesh( geometry, material ); + * plane.position.y = -200; + * plane.receiveShadow = true; + * scene.add( plane ); + * ``` + * + * @augments Material + */ +class ShadowMaterial extends Material { + + /** + * Constructs a new shadow material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isShadowMaterial = true; + + this.type = 'ShadowMaterial'; + + /** + * Color of the material. + * + * @type {Color} + * @default (0,0,0) + */ + this.color = new Color( 0x000000 ); + + /** + * Overwritten since shadow materials are transparent + * by default. + * + * @type {boolean} + * @default true + */ + this.transparent = true; + + /** + * Whether the material is affected by fog or not. + * + * @type {boolean} + * @default true + */ + this.fog = true; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.color.copy( source.color ); + + this.fog = source.fog; + + return this; + + } + +} + +/** + * This class works just like {@link ShaderMaterial}, except that definitions + * of built-in uniforms and attributes are not automatically prepended to the + * GLSL shader code. + * + * `RawShaderMaterial` can only be used with {@link WebGLRenderer}. + * + * @augments ShaderMaterial + */ +class RawShaderMaterial extends ShaderMaterial { + + /** + * Constructs a new raw shader material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super( parameters ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isRawShaderMaterial = true; + + this.type = 'RawShaderMaterial'; + + } + +} + +/** + * A standard physically based material, using Metallic-Roughness workflow. + * + * Physically based rendering (PBR) has recently become the standard in many + * 3D applications, such as [Unity]{@link https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/}, + * [Unreal]{@link https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/} and + * [3D Studio Max]{@link http://area.autodesk.com/blogs/the-3ds-max-blog/what039s-new-for-rendering-in-3ds-max-2017}. + * + * This approach differs from older approaches in that instead of using + * approximations for the way in which light interacts with a surface, a + * physically correct model is used. The idea is that, instead of tweaking + * materials to look good under specific lighting, a material can be created + * that will react 'correctly' under all lighting scenarios. + * + * In practice this gives a more accurate and realistic looking result than + * the {@link MeshLambertMaterial} or {@link MeshPhongMaterial}, at the cost of + * being somewhat more computationally expensive. `MeshStandardMaterial` uses per-fragment + * shading. + * + * Note that for best results you should always specify an environment map when using this material. + * + * For a non-technical introduction to the concept of PBR and how to set up a + * PBR material, check out these articles by the people at [marmoset]{@link https://www.marmoset.co}: + * + * - [Basic Theory of Physically Based Rendering]{@link https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/} + * - [Physically Based Rendering and You Can Too]{@link https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/} + * + * Technical details of the approach used in three.js (and most other PBR systems) can be found is this + * [paper from Disney]{@link https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf} + * (pdf), by Brent Burley. + * + * @augments Material + */ +class MeshStandardMaterial extends Material { + + /** + * Constructs a new mesh standard material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isMeshStandardMaterial = true; + + this.type = 'MeshStandardMaterial'; + + this.defines = { 'STANDARD': '' }; + + /** + * Color of the material. + * + * @type {Color} + * @default (1,1,1) + */ + this.color = new Color( 0xffffff ); // diffuse + + /** + * How rough the material appears. `0.0` means a smooth mirror reflection, `1.0` + * means fully diffuse. If `roughnessMap` is also provided, + * both values are multiplied. + * + * @type {number} + * @default 1 + */ + this.roughness = 1.0; + + /** + * How much the material is like a metal. Non-metallic materials such as wood + * or stone use `0.0`, metallic use `1.0`, with nothing (usually) in between. + * A value between `0.0` and `1.0` could be used for a rusty metal look. + * If `metalnessMap` is also provided, both values are multiplied. + * + * @type {number} + * @default 0 + */ + this.metalness = 0.0; + + /** + * The color map. May optionally include an alpha channel, typically combined + * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map + * color is modulated by the diffuse `color`. + * + * @type {?Texture} + * @default null + */ + this.map = null; + + /** + * The light map. Requires a second set of UVs. + * + * @type {?Texture} + * @default null + */ + this.lightMap = null; + + /** + * Intensity of the baked light. + * + * @type {number} + * @default 1 + */ + this.lightMapIntensity = 1.0; + + /** + * The red channel of this texture is used as the ambient occlusion map. + * Requires a second set of UVs. + * + * @type {?Texture} + * @default null + */ + this.aoMap = null; + + /** + * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0` + * disables ambient occlusion. Where intensity is `1` and the AO map's + * red channel is also `1`, ambient light is fully occluded on a surface. + * + * @type {number} + * @default 1 + */ + this.aoMapIntensity = 1.0; + + /** + * Emissive (light) color of the material, essentially a solid color + * unaffected by other lighting. + * + * @type {Color} + * @default (0,0,0) + */ + this.emissive = new Color( 0x000000 ); + + /** + * Intensity of the emissive light. Modulates the emissive color. + * + * @type {number} + * @default 1 + */ + this.emissiveIntensity = 1.0; + + /** + * Set emissive (glow) map. The emissive map color is modulated by the + * emissive color and the emissive intensity. If you have an emissive map, + * be sure to set the emissive color to something other than black. + * + * @type {?Texture} + * @default null + */ + this.emissiveMap = null; + + /** + * The texture to create a bump map. The black and white values map to the + * perceived depth in relation to the lights. Bump doesn't actually affect + * the geometry of the object, only the lighting. If a normal map is defined + * this will be ignored. + * + * @type {?Texture} + * @default null + */ + this.bumpMap = null; + + /** + * How much the bump map affects the material. Typical range is `[0,1]`. + * + * @type {number} + * @default 1 + */ + this.bumpScale = 1; + + /** + * The texture to create a normal map. The RGB values affect the surface + * normal for each pixel fragment and change the way the color is lit. Normal + * maps do not change the actual shape of the surface, only the lighting. In + * case the material has a normal map authored using the left handed + * convention, the `y` component of `normalScale` should be negated to compensate + * for the different handedness. + * + * @type {?Texture} + * @default null + */ + this.normalMap = null; + + /** + * The type of normal map. + * + * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)} + * @default TangentSpaceNormalMap + */ + this.normalMapType = TangentSpaceNormalMap; + + /** + * How much the normal map affects the material. Typical value range is `[0,1]`. + * + * @type {Vector2} + * @default (1,1) + */ + this.normalScale = new Vector2( 1, 1 ); + + /** + * The displacement map affects the position of the mesh's vertices. Unlike + * other maps which only affect the light and shade of the material the + * displaced vertices can cast shadows, block other objects, and otherwise + * act as real geometry. The displacement texture is an image where the value + * of each pixel (white being the highest) is mapped against, and + * repositions, the vertices of the mesh. + * + * @type {?Texture} + * @default null + */ + this.displacementMap = null; + + /** + * How much the displacement map affects the mesh (where black is no + * displacement, and white is maximum displacement). Without a displacement + * map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementScale = 1; + + /** + * The offset of the displacement map's values on the mesh's vertices. + * The bias is added to the scaled sample of the displacement map. + * Without a displacement map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementBias = 0; + + /** + * The green channel of this texture is used to alter the roughness of the + * material. + * + * @type {?Texture} + * @default null + */ + this.roughnessMap = null; + + /** + * The blue channel of this texture is used to alter the metalness of the + * material. + * + * @type {?Texture} + * @default null + */ + this.metalnessMap = null; + + /** + * The alpha map is a grayscale texture that controls the opacity across the + * surface (black: fully transparent; white: fully opaque). + * + * Only the color of the texture is used, ignoring the alpha channel if one + * exists. For RGB and RGBA textures, the renderer will use the green channel + * when sampling this texture due to the extra bit of precision provided for + * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and + * luminance/alpha textures will also still work as expected. + * + * @type {?Texture} + * @default null + */ + this.alphaMap = null; + + /** + * The environment map. To ensure a physically correct rendering, environment maps + * are internally pre-processed with {@link PMREMGenerator}. + * + * @type {?Texture} + * @default null + */ + this.envMap = null; + + /** + * The rotation of the environment map in radians. + * + * @type {Euler} + * @default (0,0,0) + */ + this.envMapRotation = new Euler(); + + /** + * Scales the effect of the environment map by multiplying its color. + * + * @type {number} + * @default 1 + */ + this.envMapIntensity = 1.0; + + /** + * Renders the geometry as a wireframe. + * + * @type {boolean} + * @default false + */ + this.wireframe = false; + + /** + * Controls the thickness of the wireframe. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {number} + * @default 1 + */ + this.wireframeLinewidth = 1; + + /** + * Defines appearance of wireframe ends. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {('round'|'bevel'|'miter')} + * @default 'round' + */ + this.wireframeLinecap = 'round'; + + /** + * Defines appearance of wireframe joints. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {('round'|'bevel'|'miter')} + * @default 'round' + */ + this.wireframeLinejoin = 'round'; + + /** + * Whether the material is rendered with flat shading or not. + * + * @type {boolean} + * @default false + */ + this.flatShading = false; + + /** + * Whether the material is affected by fog or not. + * + * @type {boolean} + * @default true + */ + this.fog = true; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.defines = { 'STANDARD': '' }; + + this.color.copy( source.color ); + this.roughness = source.roughness; + this.metalness = source.metalness; + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.roughnessMap = source.roughnessMap; + + this.metalnessMap = source.metalnessMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.envMapRotation.copy( source.envMapRotation ); + this.envMapIntensity = source.envMapIntensity; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.flatShading = source.flatShading; + + this.fog = source.fog; + + return this; + + } + +} + +/** + * An extension of the {@link MeshStandardMaterial}, providing more advanced + * physically-based rendering properties: + * + * - Anisotropy: Ability to represent the anisotropic property of materials + * as observable with brushed metals. + * - Clearcoat: Some materials — like car paints, carbon fiber, and wet surfaces — require + * a clear, reflective layer on top of another layer that may be irregular or rough. + * Clearcoat approximates this effect, without the need for a separate transparent surface. + * - Iridescence: Allows to render the effect where hue varies depending on the viewing + * angle and illumination angle. This can be seen on soap bubbles, oil films, or on the + * wings of many insects. + * - Physically-based transparency: One limitation of {@link Material#opacity} is that highly + * transparent materials are less reflective. Physically-based transmission provides a more + * realistic option for thin, transparent surfaces like glass. + * - Advanced reflectivity: More flexible reflectivity for non-metallic materials. + * - Sheen: Can be used for representing cloth and fabric materials. + * + * As a result of these complex shading features, `MeshPhysicalMaterial` has a + * higher performance cost, per pixel, than other three.js materials. Most + * effects are disabled by default, and add cost as they are enabled. For + * best results, always specify an environment map when using this material. + * + * @augments MeshStandardMaterial + */ +class MeshPhysicalMaterial extends MeshStandardMaterial { + + /** + * Constructs a new mesh physical material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isMeshPhysicalMaterial = true; + + this.defines = { + + 'STANDARD': '', + 'PHYSICAL': '' + + }; + + this.type = 'MeshPhysicalMaterial'; + + /** + * The rotation of the anisotropy in tangent, bitangent space, measured in radians + * counter-clockwise from the tangent. When `anisotropyMap` is present, this + * property provides additional rotation to the vectors in the texture. + * + * @type {number} + * @default 1 + */ + this.anisotropyRotation = 0; + + /** + * Red and green channels represent the anisotropy direction in `[-1, 1]` tangent, + * bitangent space, to be rotated by `anisotropyRotation`. The blue channel + * contains strength as `[0, 1]` to be multiplied by `anisotropy`. + * + * @type {?Texture} + * @default null + */ + this.anisotropyMap = null; + + /** + * The red channel of this texture is multiplied against `clearcoat`, + * for per-pixel control over a coating's intensity. + * + * @type {?Texture} + * @default null + */ + this.clearcoatMap = null; + + /** + * Roughness of the clear coat layer, from `0.0` to `1.0`. + * + * @type {number} + * @default 0 + */ + this.clearcoatRoughness = 0.0; + + /** + * The green channel of this texture is multiplied against + * `clearcoatRoughness`, for per-pixel control over a coating's roughness. + * + * @type {?Texture} + * @default null + */ + this.clearcoatRoughnessMap = null; + + /** + * How much `clearcoatNormalMap` affects the clear coat layer, from + * `(0,0)` to `(1,1)`. + * + * @type {Vector2} + * @default (1,1) + */ + this.clearcoatNormalScale = new Vector2( 1, 1 ); + + /** + * Can be used to enable independent normals for the clear coat layer. + * + * @type {?Texture} + * @default null + */ + this.clearcoatNormalMap = null; + + /** + * Index-of-refraction for non-metallic materials, from `1.0` to `2.333`. + * + * @type {number} + * @default 1.5 + */ + this.ior = 1.5; + + /** + * Degree of reflectivity, from `0.0` to `1.0`. Default is `0.5`, which + * corresponds to an index-of-refraction of `1.5`. + * + * This models the reflectivity of non-metallic materials. It has no effect + * when `metalness` is `1.0` + * + * @name MeshPhysicalMaterial#reflectivity + * @type {number} + * @default 0.5 + */ + Object.defineProperty( this, 'reflectivity', { + get: function () { + + return ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) ); + + }, + set: function ( reflectivity ) { + + this.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity ); + + } + } ); + + /** + * The red channel of this texture is multiplied against `iridescence`, for per-pixel + * control over iridescence. + * + * @type {?Texture} + * @default null + */ + this.iridescenceMap = null; + + /** + * Strength of the iridescence RGB color shift effect, represented by an index-of-refraction. + * Between `1.0` to `2.333`. + * + * @type {number} + * @default 1.3 + */ + this.iridescenceIOR = 1.3; + + /** + *Array of exactly 2 elements, specifying minimum and maximum thickness of the iridescence layer. + Thickness of iridescence layer has an equivalent effect of the one `thickness` has on `ior`. + * + * @type {Array} + * @default [100,400] + */ + this.iridescenceThicknessRange = [ 100, 400 ]; + + /** + * A texture that defines the thickness of the iridescence layer, stored in the green channel. + * Minimum and maximum values of thickness are defined by `iridescenceThicknessRange` array: + * - `0.0` in the green channel will result in thickness equal to first element of the array. + * - `1.0` in the green channel will result in thickness equal to second element of the array. + * - Values in-between will linearly interpolate between the elements of the array. + * + * @type {?Texture} + * @default null + */ + this.iridescenceThicknessMap = null; + + /** + * The sheen tint. + * + * @type {Color} + * @default (0,0,0) + */ + this.sheenColor = new Color( 0x000000 ); + + /** + * The RGB channels of this texture are multiplied against `sheenColor`, for per-pixel control + * over sheen tint. + * + * @type {?Texture} + * @default null + */ + this.sheenColorMap = null; + + /** + * Roughness of the sheen layer, from `0.0` to `1.0`. + * + * @type {number} + * @default 1 + */ + this.sheenRoughness = 1.0; + + /** + * The alpha channel of this texture is multiplied against `sheenRoughness`, for per-pixel control + * over sheen roughness. + * + * @type {?Texture} + * @default null + */ + this.sheenRoughnessMap = null; + + /** + * The red channel of this texture is multiplied against `transmission`, for per-pixel control over + * optical transparency. + * + * @type {?Texture} + * @default null + */ + this.transmissionMap = null; + + /** + * The thickness of the volume beneath the surface. The value is given in the + * coordinate space of the mesh. If the value is `0` the material is + * thin-walled. Otherwise the material is a volume boundary. + * + * @type {number} + * @default 0 + */ + this.thickness = 0; + + /** + * A texture that defines the thickness, stored in the green channel. This will + * be multiplied by `thickness`. + * + * @type {?Texture} + * @default null + */ + this.thicknessMap = null; + + /** + * Density of the medium given as the average distance that light travels in + * the medium before interacting with a particle. The value is given in world + * space units, and must be greater than zero. + * + * @type {number} + * @default Infinity + */ + this.attenuationDistance = Infinity; + + /** + * The color that white light turns into due to absorption when reaching the + * attenuation distance. + * + * @type {Color} + * @default (1,1,1) + */ + this.attenuationColor = new Color( 1, 1, 1 ); + + /** + * A float that scales the amount of specular reflection for non-metals only. + * When set to zero, the model is effectively Lambertian. From `0.0` to `1.0`. + * + * @type {number} + * @default 1 + */ + this.specularIntensity = 1.0; + + /** + * The alpha channel of this texture is multiplied against `specularIntensity`, + * for per-pixel control over specular intensity. + * + * @type {?Texture} + * @default null + */ + this.specularIntensityMap = null; + + /** + * Tints the specular reflection at normal incidence for non-metals only. + * + * @type {Color} + * @default (1,1,1) + */ + this.specularColor = new Color( 1, 1, 1 ); + + /** + * The RGB channels of this texture are multiplied against `specularColor`, + * for per-pixel control over specular color. + * + * @type {?Texture} + * @default null + */ + this.specularColorMap = null; + + this._anisotropy = 0; + this._clearcoat = 0; + this._dispersion = 0; + this._iridescence = 0; + this._sheen = 0.0; + this._transmission = 0; + + this.setValues( parameters ); + + } + + /** + * The anisotropy strength. + * + * @type {number} + * @default 0 + */ + get anisotropy() { + + return this._anisotropy; + + } + + set anisotropy( value ) { + + if ( this._anisotropy > 0 !== value > 0 ) { + + this.version ++; + + } + + this._anisotropy = value; + + } + + /** + * Represents the intensity of the clear coat layer, from `0.0` to `1.0`. Use + * clear coat related properties to enable multilayer materials that have a + * thin translucent layer over the base layer. + * + * @type {number} + * @default 0 + */ + get clearcoat() { + + return this._clearcoat; + + } + + set clearcoat( value ) { + + if ( this._clearcoat > 0 !== value > 0 ) { + + this.version ++; + + } + + this._clearcoat = value; + + } + /** + * The intensity of the iridescence layer, simulating RGB color shift based on the angle between + * the surface and the viewer, from `0.0` to `1.0`. + * + * @type {number} + * @default 0 + */ + get iridescence() { + + return this._iridescence; + + } + + set iridescence( value ) { + + if ( this._iridescence > 0 !== value > 0 ) { + + this.version ++; + + } + + this._iridescence = value; + + } + + /** + * Defines the strength of the angular separation of colors (chromatic aberration) transmitting + * through a relatively clear volume. Any value zero or larger is valid, the typical range of + * realistic values is `[0, 1]`. This property can be only be used with transmissive objects. + * + * @type {number} + * @default 0 + */ + get dispersion() { + + return this._dispersion; + + } + + set dispersion( value ) { + + if ( this._dispersion > 0 !== value > 0 ) { + + this.version ++; + + } + + this._dispersion = value; + + } + + /** + * The intensity of the sheen layer, from `0.0` to `1.0`. + * + * @type {number} + * @default 0 + */ + get sheen() { + + return this._sheen; + + } + + set sheen( value ) { + + if ( this._sheen > 0 !== value > 0 ) { + + this.version ++; + + } + + this._sheen = value; + + } + + /** + * Degree of transmission (or optical transparency), from `0.0` to `1.0`. + * + * Thin, transparent or semitransparent, plastic or glass materials remain + * largely reflective even if they are fully transmissive. The transmission + * property can be used to model these materials. + * + * When transmission is non-zero, `opacity` should be set to `1`. + * + * @type {number} + * @default 0 + */ + get transmission() { + + return this._transmission; + + } + + set transmission( value ) { + + if ( this._transmission > 0 !== value > 0 ) { + + this.version ++; + + } + + this._transmission = value; + + } + + copy( source ) { + + super.copy( source ); + + this.defines = { + + 'STANDARD': '', + 'PHYSICAL': '' + + }; + + this.anisotropy = source.anisotropy; + this.anisotropyRotation = source.anisotropyRotation; + this.anisotropyMap = source.anisotropyMap; + + this.clearcoat = source.clearcoat; + this.clearcoatMap = source.clearcoatMap; + this.clearcoatRoughness = source.clearcoatRoughness; + this.clearcoatRoughnessMap = source.clearcoatRoughnessMap; + this.clearcoatNormalMap = source.clearcoatNormalMap; + this.clearcoatNormalScale.copy( source.clearcoatNormalScale ); + + this.dispersion = source.dispersion; + this.ior = source.ior; + + this.iridescence = source.iridescence; + this.iridescenceMap = source.iridescenceMap; + this.iridescenceIOR = source.iridescenceIOR; + this.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ]; + this.iridescenceThicknessMap = source.iridescenceThicknessMap; + + this.sheen = source.sheen; + this.sheenColor.copy( source.sheenColor ); + this.sheenColorMap = source.sheenColorMap; + this.sheenRoughness = source.sheenRoughness; + this.sheenRoughnessMap = source.sheenRoughnessMap; + + this.transmission = source.transmission; + this.transmissionMap = source.transmissionMap; + + this.thickness = source.thickness; + this.thicknessMap = source.thicknessMap; + this.attenuationDistance = source.attenuationDistance; + this.attenuationColor.copy( source.attenuationColor ); + + this.specularIntensity = source.specularIntensity; + this.specularIntensityMap = source.specularIntensityMap; + this.specularColor.copy( source.specularColor ); + this.specularColorMap = source.specularColorMap; + + return this; + + } + +} + +/** + * A material for shiny surfaces with specular highlights. + * + * The material uses a non-physically based [Blinn-Phong]{@link https://en.wikipedia.org/wiki/Blinn-Phong_shading_model} + * model for calculating reflectance. Unlike the Lambertian model used in the + * {@link MeshLambertMaterial} this can simulate shiny surfaces with specular + * highlights (such as varnished wood). `MeshPhongMaterial` uses per-fragment shading. + * + * Performance will generally be greater when using this material over the + * {@link MeshStandardMaterial} or {@link MeshPhysicalMaterial}, at the cost of + * some graphical accuracy. + * + * @augments Material + */ +class MeshPhongMaterial extends Material { + + /** + * Constructs a new mesh phong material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isMeshPhongMaterial = true; + + this.type = 'MeshPhongMaterial'; + + /** + * Color of the material. + * + * @type {Color} + * @default (1,1,1) + */ + this.color = new Color( 0xffffff ); // diffuse + + /** + * Specular color of the material. The default color is set to `0x111111` (very dark grey) + * + * This defines how shiny the material is and the color of its shine. + * + * @type {Color} + */ + this.specular = new Color( 0x111111 ); + + /** + * How shiny the specular highlight is; a higher value gives a sharper highlight. + * + * @type {number} + * @default 30 + */ + this.shininess = 30; + + /** + * The color map. May optionally include an alpha channel, typically combined + * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map + * color is modulated by the diffuse `color`. + * + * @type {?Texture} + * @default null + */ + this.map = null; + + /** + * The light map. Requires a second set of UVs. + * + * @type {?Texture} + * @default null + */ + this.lightMap = null; + + /** + * Intensity of the baked light. + * + * @type {number} + * @default 1 + */ + this.lightMapIntensity = 1.0; + + /** + * The red channel of this texture is used as the ambient occlusion map. + * Requires a second set of UVs. + * + * @type {?Texture} + * @default null + */ + this.aoMap = null; + + /** + * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0` + * disables ambient occlusion. Where intensity is `1` and the AO map's + * red channel is also `1`, ambient light is fully occluded on a surface. + * + * @type {number} + * @default 1 + */ + this.aoMapIntensity = 1.0; + + /** + * Emissive (light) color of the material, essentially a solid color + * unaffected by other lighting. + * + * @type {Color} + * @default (0,0,0) + */ + this.emissive = new Color( 0x000000 ); + + /** + * Intensity of the emissive light. Modulates the emissive color. + * + * @type {number} + * @default 1 + */ + this.emissiveIntensity = 1.0; + + /** + * Set emissive (glow) map. The emissive map color is modulated by the + * emissive color and the emissive intensity. If you have an emissive map, + * be sure to set the emissive color to something other than black. + * + * @type {?Texture} + * @default null + */ + this.emissiveMap = null; + + /** + * The texture to create a bump map. The black and white values map to the + * perceived depth in relation to the lights. Bump doesn't actually affect + * the geometry of the object, only the lighting. If a normal map is defined + * this will be ignored. + * + * @type {?Texture} + * @default null + */ + this.bumpMap = null; + + /** + * How much the bump map affects the material. Typical range is `[0,1]`. + * + * @type {number} + * @default 1 + */ + this.bumpScale = 1; + + /** + * The texture to create a normal map. The RGB values affect the surface + * normal for each pixel fragment and change the way the color is lit. Normal + * maps do not change the actual shape of the surface, only the lighting. In + * case the material has a normal map authored using the left handed + * convention, the `y` component of `normalScale` should be negated to compensate + * for the different handedness. + * + * @type {?Texture} + * @default null + */ + this.normalMap = null; + + /** + * The type of normal map. + * + * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)} + * @default TangentSpaceNormalMap + */ + this.normalMapType = TangentSpaceNormalMap; + + /** + * How much the normal map affects the material. Typical value range is `[0,1]`. + * + * @type {Vector2} + * @default (1,1) + */ + this.normalScale = new Vector2( 1, 1 ); + + /** + * The displacement map affects the position of the mesh's vertices. Unlike + * other maps which only affect the light and shade of the material the + * displaced vertices can cast shadows, block other objects, and otherwise + * act as real geometry. The displacement texture is an image where the value + * of each pixel (white being the highest) is mapped against, and + * repositions, the vertices of the mesh. + * + * @type {?Texture} + * @default null + */ + this.displacementMap = null; + + /** + * How much the displacement map affects the mesh (where black is no + * displacement, and white is maximum displacement). Without a displacement + * map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementScale = 1; + + /** + * The offset of the displacement map's values on the mesh's vertices. + * The bias is added to the scaled sample of the displacement map. + * Without a displacement map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementBias = 0; + + /** + * The specular map value affects both how much the specular surface + * highlight contributes and how much of the environment map affects the + * surface. + * + * @type {?Texture} + * @default null + */ + this.specularMap = null; + + /** + * The alpha map is a grayscale texture that controls the opacity across the + * surface (black: fully transparent; white: fully opaque). + * + * Only the color of the texture is used, ignoring the alpha channel if one + * exists. For RGB and RGBA textures, the renderer will use the green channel + * when sampling this texture due to the extra bit of precision provided for + * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and + * luminance/alpha textures will also still work as expected. + * + * @type {?Texture} + * @default null + */ + this.alphaMap = null; + + /** + * The environment map. + * + * @type {?Texture} + * @default null + */ + this.envMap = null; + + /** + * The rotation of the environment map in radians. + * + * @type {Euler} + * @default (0,0,0) + */ + this.envMapRotation = new Euler(); + + /** + * How to combine the result of the surface's color with the environment map, if any. + * + * When set to `MixOperation`, the {@link MeshBasicMaterial#reflectivity} is used to + * blend between the two colors. + * + * @type {(MultiplyOperation|MixOperation|AddOperation)} + * @default MultiplyOperation + */ + this.combine = MultiplyOperation; + + /** + * How much the environment map affects the surface. + * The valid range is between `0` (no reflections) and `1` (full reflections). + * + * @type {number} + * @default 1 + */ + this.reflectivity = 1; + + /** + * The index of refraction (IOR) of air (approximately 1) divided by the + * index of refraction of the material. It is used with environment mapping + * modes {@link CubeRefractionMapping} and {@link EquirectangularRefractionMapping}. + * The refraction ratio should not exceed `1`. + * + * @type {number} + * @default 0.98 + */ + this.refractionRatio = 0.98; + + /** + * Renders the geometry as a wireframe. + * + * @type {boolean} + * @default false + */ + this.wireframe = false; + + /** + * Controls the thickness of the wireframe. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {number} + * @default 1 + */ + this.wireframeLinewidth = 1; + + /** + * Defines appearance of wireframe ends. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {('round'|'bevel'|'miter')} + * @default 'round' + */ + this.wireframeLinecap = 'round'; + + /** + * Defines appearance of wireframe joints. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {('round'|'bevel'|'miter')} + * @default 'round' + */ + this.wireframeLinejoin = 'round'; + + /** + * Whether the material is rendered with flat shading or not. + * + * @type {boolean} + * @default false + */ + this.flatShading = false; + + /** + * Whether the material is affected by fog or not. + * + * @type {boolean} + * @default true + */ + this.fog = true; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.color.copy( source.color ); + this.specular.copy( source.specular ); + this.shininess = source.shininess; + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.envMapRotation.copy( source.envMapRotation ); + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.flatShading = source.flatShading; + + this.fog = source.fog; + + return this; + + } + +} + +/** + * A material implementing toon shading. + * + * @augments Material + */ +class MeshToonMaterial extends Material { + + /** + * Constructs a new mesh toon material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isMeshToonMaterial = true; + + this.defines = { 'TOON': '' }; + + this.type = 'MeshToonMaterial'; + + /** + * Color of the material. + * + * @type {Color} + * @default (1,1,1) + */ + this.color = new Color( 0xffffff ); + + /** + * The color map. May optionally include an alpha channel, typically combined + * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map + * color is modulated by the diffuse `color`. + * + * @type {?Texture} + * @default null + */ + this.map = null; + + /** + * Gradient map for toon shading. It's required to set + * {@link Texture#minFilter} and {@link Texture#magFilter} to {@linkNearestFilter} + * when using this type of texture. + * + * @type {?Texture} + * @default null + */ + this.gradientMap = null; + + /** + * The light map. Requires a second set of UVs. + * + * @type {?Texture} + * @default null + */ + this.lightMap = null; + + /** + * Intensity of the baked light. + * + * @type {number} + * @default 1 + */ + this.lightMapIntensity = 1.0; + + /** + * The red channel of this texture is used as the ambient occlusion map. + * Requires a second set of UVs. + * + * @type {?Texture} + * @default null + */ + this.aoMap = null; + + /** + * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0` + * disables ambient occlusion. Where intensity is `1` and the AO map's + * red channel is also `1`, ambient light is fully occluded on a surface. + * + * @type {number} + * @default 1 + */ + this.aoMapIntensity = 1.0; + + /** + * Emissive (light) color of the material, essentially a solid color + * unaffected by other lighting. + * + * @type {Color} + * @default (0,0,0) + */ + this.emissive = new Color( 0x000000 ); + + /** + * Intensity of the emissive light. Modulates the emissive color. + * + * @type {number} + * @default 1 + */ + this.emissiveIntensity = 1.0; + + /** + * Set emissive (glow) map. The emissive map color is modulated by the + * emissive color and the emissive intensity. If you have an emissive map, + * be sure to set the emissive color to something other than black. + * + * @type {?Texture} + * @default null + */ + this.emissiveMap = null; + + /** + * The texture to create a bump map. The black and white values map to the + * perceived depth in relation to the lights. Bump doesn't actually affect + * the geometry of the object, only the lighting. If a normal map is defined + * this will be ignored. + * + * @type {?Texture} + * @default null + */ + this.bumpMap = null; + + /** + * How much the bump map affects the material. Typical range is `[0,1]`. + * + * @type {number} + * @default 1 + */ + this.bumpScale = 1; + + /** + * The texture to create a normal map. The RGB values affect the surface + * normal for each pixel fragment and change the way the color is lit. Normal + * maps do not change the actual shape of the surface, only the lighting. In + * case the material has a normal map authored using the left handed + * convention, the `y` component of `normalScale` should be negated to compensate + * for the different handedness. + * + * @type {?Texture} + * @default null + */ + this.normalMap = null; + + /** + * The type of normal map. + * + * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)} + * @default TangentSpaceNormalMap + */ + this.normalMapType = TangentSpaceNormalMap; + + /** + * How much the normal map affects the material. Typical value range is `[0,1]`. + * + * @type {Vector2} + * @default (1,1) + */ + this.normalScale = new Vector2( 1, 1 ); + + /** + * The displacement map affects the position of the mesh's vertices. Unlike + * other maps which only affect the light and shade of the material the + * displaced vertices can cast shadows, block other objects, and otherwise + * act as real geometry. The displacement texture is an image where the value + * of each pixel (white being the highest) is mapped against, and + * repositions, the vertices of the mesh. + * + * @type {?Texture} + * @default null + */ + this.displacementMap = null; + + /** + * How much the displacement map affects the mesh (where black is no + * displacement, and white is maximum displacement). Without a displacement + * map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementScale = 1; + + /** + * The offset of the displacement map's values on the mesh's vertices. + * The bias is added to the scaled sample of the displacement map. + * Without a displacement map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementBias = 0; + + /** + * The alpha map is a grayscale texture that controls the opacity across the + * surface (black: fully transparent; white: fully opaque). + * + * Only the color of the texture is used, ignoring the alpha channel if one + * exists. For RGB and RGBA textures, the renderer will use the green channel + * when sampling this texture due to the extra bit of precision provided for + * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and + * luminance/alpha textures will also still work as expected. + * + * @type {?Texture} + * @default null + */ + this.alphaMap = null; + + /** + * Renders the geometry as a wireframe. + * + * @type {boolean} + * @default false + */ + this.wireframe = false; + + /** + * Controls the thickness of the wireframe. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {number} + * @default 1 + */ + this.wireframeLinewidth = 1; + + /** + * Defines appearance of wireframe ends. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {('round'|'bevel'|'miter')} + * @default 'round' + */ + this.wireframeLinecap = 'round'; + + /** + * Defines appearance of wireframe joints. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {('round'|'bevel'|'miter')} + * @default 'round' + */ + this.wireframeLinejoin = 'round'; + + /** + * Whether the material is affected by fog or not. + * + * @type {boolean} + * @default true + */ + this.fog = true; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.color.copy( source.color ); + + this.map = source.map; + this.gradientMap = source.gradientMap; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.alphaMap = source.alphaMap; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.fog = source.fog; + + return this; + + } + +} + +/** + * A material that maps the normal vectors to RGB colors. + * + * @augments Material + */ +class MeshNormalMaterial extends Material { + + /** + * Constructs a new mesh normal material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isMeshNormalMaterial = true; + + this.type = 'MeshNormalMaterial'; + + /** + * The texture to create a bump map. The black and white values map to the + * perceived depth in relation to the lights. Bump doesn't actually affect + * the geometry of the object, only the lighting. If a normal map is defined + * this will be ignored. + * + * @type {?Texture} + * @default null + */ + this.bumpMap = null; + + /** + * How much the bump map affects the material. Typical range is `[0,1]`. + * + * @type {number} + * @default 1 + */ + this.bumpScale = 1; + + /** + * The texture to create a normal map. The RGB values affect the surface + * normal for each pixel fragment and change the way the color is lit. Normal + * maps do not change the actual shape of the surface, only the lighting. In + * case the material has a normal map authored using the left handed + * convention, the `y` component of `normalScale` should be negated to compensate + * for the different handedness. + * + * @type {?Texture} + * @default null + */ + this.normalMap = null; + + /** + * The type of normal map. + * + * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)} + * @default TangentSpaceNormalMap + */ + this.normalMapType = TangentSpaceNormalMap; + + /** + * How much the normal map affects the material. Typical value range is `[0,1]`. + * + * @type {Vector2} + * @default (1,1) + */ + this.normalScale = new Vector2( 1, 1 ); + + /** + * The displacement map affects the position of the mesh's vertices. Unlike + * other maps which only affect the light and shade of the material the + * displaced vertices can cast shadows, block other objects, and otherwise + * act as real geometry. The displacement texture is an image where the value + * of each pixel (white being the highest) is mapped against, and + * repositions, the vertices of the mesh. + * + * @type {?Texture} + * @default null + */ + this.displacementMap = null; + + /** + * How much the displacement map affects the mesh (where black is no + * displacement, and white is maximum displacement). Without a displacement + * map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementScale = 1; + + /** + * The offset of the displacement map's values on the mesh's vertices. + * The bias is added to the scaled sample of the displacement map. + * Without a displacement map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementBias = 0; + + /** + * Renders the geometry as a wireframe. + * + * @type {boolean} + * @default false + */ + this.wireframe = false; + + /** + * Controls the thickness of the wireframe. + * + * WebGL and WebGPU ignore this property and always render + * 1 pixel wide lines. + * + * @type {number} + * @default 1 + */ + this.wireframeLinewidth = 1; + + /** + * Whether the material is rendered with flat shading or not. + * + * @type {boolean} + * @default false + */ + this.flatShading = false; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + this.flatShading = source.flatShading; + + return this; + + } + +} + +/** + * A material for non-shiny surfaces, without specular highlights. + * + * The material uses a non-physically based [Lambertian]{@link https://en.wikipedia.org/wiki/Lambertian_reflectance} + * model for calculating reflectance. This can simulate some surfaces (such + * as untreated wood or stone) well, but cannot simulate shiny surfaces with + * specular highlights (such as varnished wood). `MeshLambertMaterial` uses per-fragment + * shading. + * + * Due to the simplicity of the reflectance and illumination models, + * performance will be greater when using this material over the + * {@link MeshPhongMaterial}, {@link MeshStandardMaterial} or + * {@link MeshPhysicalMaterial}, at the cost of some graphical accuracy. + * + * @augments Material + */ +class MeshLambertMaterial extends Material { + + /** + * Constructs a new mesh lambert material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isMeshLambertMaterial = true; + + this.type = 'MeshLambertMaterial'; + + /** + * Color of the material. + * + * @type {Color} + * @default (1,1,1) + */ + this.color = new Color( 0xffffff ); // diffuse + + /** + * The color map. May optionally include an alpha channel, typically combined + * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map + * color is modulated by the diffuse `color`. + * + * @type {?Texture} + * @default null + */ + this.map = null; + + /** + * The light map. Requires a second set of UVs. + * + * @type {?Texture} + * @default null + */ + this.lightMap = null; + + /** + * Intensity of the baked light. + * + * @type {number} + * @default 1 + */ + this.lightMapIntensity = 1.0; + + /** + * The red channel of this texture is used as the ambient occlusion map. + * Requires a second set of UVs. + * + * @type {?Texture} + * @default null + */ + this.aoMap = null; + + /** + * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0` + * disables ambient occlusion. Where intensity is `1` and the AO map's + * red channel is also `1`, ambient light is fully occluded on a surface. + * + * @type {number} + * @default 1 + */ + this.aoMapIntensity = 1.0; + + /** + * Emissive (light) color of the material, essentially a solid color + * unaffected by other lighting. + * + * @type {Color} + * @default (0,0,0) + */ + this.emissive = new Color( 0x000000 ); + + /** + * Intensity of the emissive light. Modulates the emissive color. + * + * @type {number} + * @default 1 + */ + this.emissiveIntensity = 1.0; + + /** + * Set emissive (glow) map. The emissive map color is modulated by the + * emissive color and the emissive intensity. If you have an emissive map, + * be sure to set the emissive color to something other than black. + * + * @type {?Texture} + * @default null + */ + this.emissiveMap = null; + + /** + * The texture to create a bump map. The black and white values map to the + * perceived depth in relation to the lights. Bump doesn't actually affect + * the geometry of the object, only the lighting. If a normal map is defined + * this will be ignored. + * + * @type {?Texture} + * @default null + */ + this.bumpMap = null; + + /** + * How much the bump map affects the material. Typical range is `[0,1]`. + * + * @type {number} + * @default 1 + */ + this.bumpScale = 1; + + /** + * The texture to create a normal map. The RGB values affect the surface + * normal for each pixel fragment and change the way the color is lit. Normal + * maps do not change the actual shape of the surface, only the lighting. In + * case the material has a normal map authored using the left handed + * convention, the `y` component of `normalScale` should be negated to compensate + * for the different handedness. + * + * @type {?Texture} + * @default null + */ + this.normalMap = null; + + /** + * The type of normal map. + * + * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)} + * @default TangentSpaceNormalMap + */ + this.normalMapType = TangentSpaceNormalMap; + + /** + * How much the normal map affects the material. Typical value range is `[0,1]`. + * + * @type {Vector2} + * @default (1,1) + */ + this.normalScale = new Vector2( 1, 1 ); + + /** + * The displacement map affects the position of the mesh's vertices. Unlike + * other maps which only affect the light and shade of the material the + * displaced vertices can cast shadows, block other objects, and otherwise + * act as real geometry. The displacement texture is an image where the value + * of each pixel (white being the highest) is mapped against, and + * repositions, the vertices of the mesh. + * + * @type {?Texture} + * @default null + */ + this.displacementMap = null; + + /** + * How much the displacement map affects the mesh (where black is no + * displacement, and white is maximum displacement). Without a displacement + * map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementScale = 1; + + /** + * The offset of the displacement map's values on the mesh's vertices. + * The bias is added to the scaled sample of the displacement map. + * Without a displacement map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementBias = 0; + + /** + * Specular map used by the material. + * + * @type {?Texture} + * @default null + */ + this.specularMap = null; + + /** + * The alpha map is a grayscale texture that controls the opacity across the + * surface (black: fully transparent; white: fully opaque). + * + * Only the color of the texture is used, ignoring the alpha channel if one + * exists. For RGB and RGBA textures, the renderer will use the green channel + * when sampling this texture due to the extra bit of precision provided for + * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and + * luminance/alpha textures will also still work as expected. + * + * @type {?Texture} + * @default null + */ + this.alphaMap = null; + + /** + * The environment map. + * + * @type {?Texture} + * @default null + */ + this.envMap = null; + + /** + * The rotation of the environment map in radians. + * + * @type {Euler} + * @default (0,0,0) + */ + this.envMapRotation = new Euler(); + + /** + * How to combine the result of the surface's color with the environment map, if any. + * + * When set to `MixOperation`, the {@link MeshBasicMaterial#reflectivity} is used to + * blend between the two colors. + * + * @type {(MultiplyOperation|MixOperation|AddOperation)} + * @default MultiplyOperation + */ + this.combine = MultiplyOperation; + + /** + * How much the environment map affects the surface. + * The valid range is between `0` (no reflections) and `1` (full reflections). + * + * @type {number} + * @default 1 + */ + this.reflectivity = 1; + + /** + * The index of refraction (IOR) of air (approximately 1) divided by the + * index of refraction of the material. It is used with environment mapping + * modes {@link CubeRefractionMapping} and {@link EquirectangularRefractionMapping}. + * The refraction ratio should not exceed `1`. + * + * @type {number} + * @default 0.98 + */ + this.refractionRatio = 0.98; + + /** + * Renders the geometry as a wireframe. + * + * @type {boolean} + * @default false + */ + this.wireframe = false; + + /** + * Controls the thickness of the wireframe. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {number} + * @default 1 + */ + this.wireframeLinewidth = 1; + + /** + * Defines appearance of wireframe ends. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {('round'|'bevel'|'miter')} + * @default 'round' + */ + this.wireframeLinecap = 'round'; + + /** + * Defines appearance of wireframe joints. + * + * Can only be used with {@link SVGRenderer}. + * + * @type {('round'|'bevel'|'miter')} + * @default 'round' + */ + this.wireframeLinejoin = 'round'; + + /** + * Whether the material is rendered with flat shading or not. + * + * @type {boolean} + * @default false + */ + this.flatShading = false; + + /** + * Whether the material is affected by fog or not. + * + * @type {boolean} + * @default true + */ + this.fog = true; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.envMapRotation.copy( source.envMapRotation ); + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.flatShading = source.flatShading; + + this.fog = source.fog; + + return this; + + } + +} + +/** + * A material for drawing geometry by depth. Depth is based off of the camera + * near and far plane. White is nearest, black is farthest. + * + * @augments Material + */ +class MeshDepthMaterial extends Material { + + /** + * Constructs a new mesh depth material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isMeshDepthMaterial = true; + + this.type = 'MeshDepthMaterial'; + + /** + * Type for depth packing. + * + * @type {(BasicDepthPacking|RGBADepthPacking|RGBDepthPacking|RGDepthPacking)} + * @default BasicDepthPacking + */ + this.depthPacking = BasicDepthPacking; + + /** + * The color map. May optionally include an alpha channel, typically combined + * with {@link Material#transparent} or {@link Material#alphaTest}. + * + * @type {?Texture} + * @default null + */ + this.map = null; + + /** + * The alpha map is a grayscale texture that controls the opacity across the + * surface (black: fully transparent; white: fully opaque). + * + * Only the color of the texture is used, ignoring the alpha channel if one + * exists. For RGB and RGBA textures, the renderer will use the green channel + * when sampling this texture due to the extra bit of precision provided for + * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and + * luminance/alpha textures will also still work as expected. + * + * @type {?Texture} + * @default null + */ + this.alphaMap = null; + + /** + * The displacement map affects the position of the mesh's vertices. Unlike + * other maps which only affect the light and shade of the material the + * displaced vertices can cast shadows, block other objects, and otherwise + * act as real geometry. The displacement texture is an image where the value + * of each pixel (white being the highest) is mapped against, and + * repositions, the vertices of the mesh. + * + * @type {?Texture} + * @default null + */ + this.displacementMap = null; + + /** + * How much the displacement map affects the mesh (where black is no + * displacement, and white is maximum displacement). Without a displacement + * map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementScale = 1; + + /** + * The offset of the displacement map's values on the mesh's vertices. + * The bias is added to the scaled sample of the displacement map. + * Without a displacement map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementBias = 0; + + /** + * Renders the geometry as a wireframe. + * + * @type {boolean} + * @default false + */ + this.wireframe = false; + + /** + * Controls the thickness of the wireframe. + * + * WebGL and WebGPU ignore this property and always render + * 1 pixel wide lines. + * + * @type {number} + * @default 1 + */ + this.wireframeLinewidth = 1; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.depthPacking = source.depthPacking; + + this.map = source.map; + + this.alphaMap = source.alphaMap; + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + return this; + + } + +} + +/** + * A material used internally for implementing shadow mapping with + * point lights. + * + * Can also be used to customize the shadow casting of an object by assigning + * an instance of `MeshDistanceMaterial` to {@link Object3D#customDistanceMaterial}. + * The following examples demonstrates this approach in order to ensure + * transparent parts of objects do no cast shadows. + * + * @augments Material + */ +class MeshDistanceMaterial extends Material { + + /** + * Constructs a new mesh distance material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isMeshDistanceMaterial = true; + + this.type = 'MeshDistanceMaterial'; + + /** + * The color map. May optionally include an alpha channel, typically combined + * with {@link Material#transparent} or {@link Material#alphaTest}. + * + * @type {?Texture} + * @default null + */ + this.map = null; + + /** + * The alpha map is a grayscale texture that controls the opacity across the + * surface (black: fully transparent; white: fully opaque). + * + * Only the color of the texture is used, ignoring the alpha channel if one + * exists. For RGB and RGBA textures, the renderer will use the green channel + * when sampling this texture due to the extra bit of precision provided for + * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and + * luminance/alpha textures will also still work as expected. + * + * @type {?Texture} + * @default null + */ + this.alphaMap = null; + + /** + * The displacement map affects the position of the mesh's vertices. Unlike + * other maps which only affect the light and shade of the material the + * displaced vertices can cast shadows, block other objects, and otherwise + * act as real geometry. The displacement texture is an image where the value + * of each pixel (white being the highest) is mapped against, and + * repositions, the vertices of the mesh. + * + * @type {?Texture} + * @default null + */ + this.displacementMap = null; + + /** + * How much the displacement map affects the mesh (where black is no + * displacement, and white is maximum displacement). Without a displacement + * map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementScale = 1; + + /** + * The offset of the displacement map's values on the mesh's vertices. + * The bias is added to the scaled sample of the displacement map. + * Without a displacement map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementBias = 0; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.map = source.map; + + this.alphaMap = source.alphaMap; + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + return this; + + } + +} + +/** + * This material is defined by a MatCap (or Lit Sphere) texture, which encodes the + * material color and shading. + * + * `MeshMatcapMaterial` does not respond to lights since the matcap image file encodes + * baked lighting. It will cast a shadow onto an object that receives shadows + * (and shadow clipping works), but it will not self-shadow or receive + * shadows. + * + * @augments Material + */ +class MeshMatcapMaterial extends Material { + + /** + * Constructs a new mesh matcap material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isMeshMatcapMaterial = true; + + this.defines = { 'MATCAP': '' }; + + this.type = 'MeshMatcapMaterial'; + + /** + * Color of the material. + * + * @type {Color} + * @default (1,1,1) + */ + this.color = new Color( 0xffffff ); // diffuse + + /** + * The matcap map. + * + * @type {?Texture} + * @default null + */ + this.matcap = null; + + /** + * The color map. May optionally include an alpha channel, typically combined + * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map + * color is modulated by the diffuse `color`. + * + * @type {?Texture} + * @default null + */ + this.map = null; + + /** + * The texture to create a bump map. The black and white values map to the + * perceived depth in relation to the lights. Bump doesn't actually affect + * the geometry of the object, only the lighting. If a normal map is defined + * this will be ignored. + * + * @type {?Texture} + * @default null + */ + this.bumpMap = null; + + /** + * How much the bump map affects the material. Typical range is `[0,1]`. + * + * @type {number} + * @default 1 + */ + this.bumpScale = 1; + + /** + * The texture to create a normal map. The RGB values affect the surface + * normal for each pixel fragment and change the way the color is lit. Normal + * maps do not change the actual shape of the surface, only the lighting. In + * case the material has a normal map authored using the left handed + * convention, the `y` component of `normalScale` should be negated to compensate + * for the different handedness. + * + * @type {?Texture} + * @default null + */ + this.normalMap = null; + + /** + * The type of normal map. + * + * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)} + * @default TangentSpaceNormalMap + */ + this.normalMapType = TangentSpaceNormalMap; + + /** + * How much the normal map affects the material. Typical value range is `[0,1]`. + * + * @type {Vector2} + * @default (1,1) + */ + this.normalScale = new Vector2( 1, 1 ); + + /** + * The displacement map affects the position of the mesh's vertices. Unlike + * other maps which only affect the light and shade of the material the + * displaced vertices can cast shadows, block other objects, and otherwise + * act as real geometry. The displacement texture is an image where the value + * of each pixel (white being the highest) is mapped against, and + * repositions, the vertices of the mesh. + * + * @type {?Texture} + * @default null + */ + this.displacementMap = null; + + /** + * How much the displacement map affects the mesh (where black is no + * displacement, and white is maximum displacement). Without a displacement + * map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementScale = 1; + + /** + * The offset of the displacement map's values on the mesh's vertices. + * The bias is added to the scaled sample of the displacement map. + * Without a displacement map set, this value is not applied. + * + * @type {number} + * @default 0 + */ + this.displacementBias = 0; + + /** + * The alpha map is a grayscale texture that controls the opacity across the + * surface (black: fully transparent; white: fully opaque). + * + * Only the color of the texture is used, ignoring the alpha channel if one + * exists. For RGB and RGBA textures, the renderer will use the green channel + * when sampling this texture due to the extra bit of precision provided for + * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and + * luminance/alpha textures will also still work as expected. + * + * @type {?Texture} + * @default null + */ + this.alphaMap = null; + + /** + * Whether the material is rendered with flat shading or not. + * + * @type {boolean} + * @default false + */ + this.flatShading = false; + + /** + * Whether the material is affected by fog or not. + * + * @type {boolean} + * @default true + */ + this.fog = true; + + this.setValues( parameters ); + + } + + + copy( source ) { + + super.copy( source ); + + this.defines = { 'MATCAP': '' }; + + this.color.copy( source.color ); + + this.matcap = source.matcap; + + this.map = source.map; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.alphaMap = source.alphaMap; + + this.flatShading = source.flatShading; + + this.fog = source.fog; + + return this; + + } + +} + +/** + * A material for rendering line primitives. + * + * Materials define the appearance of renderable 3D objects. + * + * ```js + * const material = new THREE.LineDashedMaterial( { + * color: 0xffffff, + * scale: 1, + * dashSize: 3, + * gapSize: 1, + * } ); + * ``` + * + * @augments LineBasicMaterial + */ +class LineDashedMaterial extends LineBasicMaterial { + + /** + * Constructs a new line dashed material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor( parameters ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isLineDashedMaterial = true; + this.type = 'LineDashedMaterial'; + + /** + * The scale of the dashed part of a line. + * + * @type {number} + * @default 1 + */ + this.scale = 1; + + /** + * The size of the dash. This is both the gap with the stroke. + * + * @type {number} + * @default 3 + */ + this.dashSize = 3; + + /** + * The size of the gap. + * + * @type {number} + * @default 1 + */ + this.gapSize = 1; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.scale = source.scale; + this.dashSize = source.dashSize; + this.gapSize = source.gapSize; + + return this; + + } + +} + +/** + * Converts an array to a specific type. + * + * @param {TypedArray|Array} array - The array to convert. + * @param {TypedArray.constructor} type - The constructor of a typed array that defines the new type. + * @return {TypedArray} The converted array. + */ +function convertArray( array, type ) { + + if ( ! array || array.constructor === type ) return array; + + if ( typeof type.BYTES_PER_ELEMENT === 'number' ) { + + return new type( array ); // create typed array + + } + + return Array.prototype.slice.call( array ); // create Array + +} + +/** + * Returns `true` if the given object is a typed array. + * + * @param {any} object - The object to check. + * @return {boolean} Whether the given object is a typed array. + */ +function isTypedArray( object ) { + + return ArrayBuffer.isView( object ) && ! ( object instanceof DataView ); + +} + +/** + * Returns an array by which times and values can be sorted. + * + * @param {Array} times - The keyframe time values. + * @return {Array} The array. + */ +function getKeyframeOrder( times ) { + + function compareTime( i, j ) { + + return times[ i ] - times[ j ]; + + } + + const n = times.length; + const result = new Array( n ); + for ( let i = 0; i !== n; ++ i ) result[ i ] = i; + + result.sort( compareTime ); + + return result; + +} + +/** + * Sorts the given array by the previously computed order via `getKeyframeOrder()`. + * + * @param {Array} values - The values to sort. + * @param {number} stride - The stride. + * @param {Array} order - The sort order. + * @return {Array} The sorted values. + */ +function sortedArray( values, stride, order ) { + + const nValues = values.length; + const result = new values.constructor( nValues ); + + for ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) { + + const srcOffset = order[ i ] * stride; + + for ( let j = 0; j !== stride; ++ j ) { + + result[ dstOffset ++ ] = values[ srcOffset + j ]; + + } + + } + + return result; + +} + +/** + * Used for parsing AOS keyframe formats. + * + * @param {Array} jsonKeys - A list of JSON keyframes. + * @param {Array} times - This array will be filled with keyframe times by this function. + * @param {Array} values - This array will be filled with keyframe values by this function. + * @param {string} valuePropertyName - The name of the property to use. + */ +function flattenJSON( jsonKeys, times, values, valuePropertyName ) { + + let i = 1, key = jsonKeys[ 0 ]; + + while ( key !== undefined && key[ valuePropertyName ] === undefined ) { + + key = jsonKeys[ i ++ ]; + + } + + if ( key === undefined ) return; // no data + + let value = key[ valuePropertyName ]; + if ( value === undefined ) return; // no data + + if ( Array.isArray( value ) ) { + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + values.push( ...value ); // push all elements + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } else if ( value.toArray !== undefined ) { + + // ...assume THREE.Math-ish + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + value.toArray( values, values.length ); + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } else { + + // otherwise push as-is + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + values.push( value ); + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } + +} + +/** + * Creates a new clip, containing only the segment of the original clip between the given frames. + * + * @param {AnimationClip} sourceClip - The values to sort. + * @param {string} name - The name of the clip. + * @param {number} startFrame - The start frame. + * @param {number} endFrame - The end frame. + * @param {number} [fps=30] - The FPS. + * @return {AnimationClip} The new sub clip. + */ +function subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) { + + const clip = sourceClip.clone(); + + clip.name = name; + + const tracks = []; + + for ( let i = 0; i < clip.tracks.length; ++ i ) { + + const track = clip.tracks[ i ]; + const valueSize = track.getValueSize(); + + const times = []; + const values = []; + + for ( let j = 0; j < track.times.length; ++ j ) { + + const frame = track.times[ j ] * fps; + + if ( frame < startFrame || frame >= endFrame ) continue; + + times.push( track.times[ j ] ); + + for ( let k = 0; k < valueSize; ++ k ) { + + values.push( track.values[ j * valueSize + k ] ); + + } + + } + + if ( times.length === 0 ) continue; + + track.times = convertArray( times, track.times.constructor ); + track.values = convertArray( values, track.values.constructor ); + + tracks.push( track ); + + } + + clip.tracks = tracks; + + // find minimum .times value across all tracks in the trimmed clip + + let minStartTime = Infinity; + + for ( let i = 0; i < clip.tracks.length; ++ i ) { + + if ( minStartTime > clip.tracks[ i ].times[ 0 ] ) { + + minStartTime = clip.tracks[ i ].times[ 0 ]; + + } + + } + + // shift all tracks such that clip begins at t=0 + + for ( let i = 0; i < clip.tracks.length; ++ i ) { + + clip.tracks[ i ].shift( -1 * minStartTime ); + + } + + clip.resetDuration(); + + return clip; + +} + +/** + * Converts the keyframes of the given animation clip to an additive format. + * + * @param {AnimationClip} targetClip - The clip to make additive. + * @param {number} [referenceFrame=0] - The reference frame. + * @param {AnimationClip} [referenceClip=targetClip] - The reference clip. + * @param {number} [fps=30] - The FPS. + * @return {AnimationClip} The updated clip which is now additive. + */ +function makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) { + + if ( fps <= 0 ) fps = 30; + + const numTracks = referenceClip.tracks.length; + const referenceTime = referenceFrame / fps; + + // Make each track's values relative to the values at the reference frame + for ( let i = 0; i < numTracks; ++ i ) { + + const referenceTrack = referenceClip.tracks[ i ]; + const referenceTrackType = referenceTrack.ValueTypeName; + + // Skip this track if it's non-numeric + if ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue; + + // Find the track in the target clip whose name and type matches the reference track + const targetTrack = targetClip.tracks.find( function ( track ) { + + return track.name === referenceTrack.name + && track.ValueTypeName === referenceTrackType; + + } ); + + if ( targetTrack === undefined ) continue; + + let referenceOffset = 0; + const referenceValueSize = referenceTrack.getValueSize(); + + if ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) { + + referenceOffset = referenceValueSize / 3; + + } + + let targetOffset = 0; + const targetValueSize = targetTrack.getValueSize(); + + if ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) { + + targetOffset = targetValueSize / 3; + + } + + const lastIndex = referenceTrack.times.length - 1; + let referenceValue; + + // Find the value to subtract out of the track + if ( referenceTime <= referenceTrack.times[ 0 ] ) { + + // Reference frame is earlier than the first keyframe, so just use the first keyframe + const startIndex = referenceOffset; + const endIndex = referenceValueSize - referenceOffset; + referenceValue = referenceTrack.values.slice( startIndex, endIndex ); + + } else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) { + + // Reference frame is after the last keyframe, so just use the last keyframe + const startIndex = lastIndex * referenceValueSize + referenceOffset; + const endIndex = startIndex + referenceValueSize - referenceOffset; + referenceValue = referenceTrack.values.slice( startIndex, endIndex ); + + } else { + + // Interpolate to the reference value + const interpolant = referenceTrack.createInterpolant(); + const startIndex = referenceOffset; + const endIndex = referenceValueSize - referenceOffset; + interpolant.evaluate( referenceTime ); + referenceValue = interpolant.resultBuffer.slice( startIndex, endIndex ); + + } + + // Conjugate the quaternion + if ( referenceTrackType === 'quaternion' ) { + + const referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate(); + referenceQuat.toArray( referenceValue ); + + } + + // Subtract the reference value from all of the track values + + const numTimes = targetTrack.times.length; + for ( let j = 0; j < numTimes; ++ j ) { + + const valueStart = j * targetValueSize + targetOffset; + + if ( referenceTrackType === 'quaternion' ) { + + // Multiply the conjugate for quaternion track types + Quaternion.multiplyQuaternionsFlat( + targetTrack.values, + valueStart, + referenceValue, + 0, + targetTrack.values, + valueStart + ); + + } else { + + const valueEnd = targetValueSize - targetOffset * 2; + + // Subtract each value for all other numeric track types + for ( let k = 0; k < valueEnd; ++ k ) { + + targetTrack.values[ valueStart + k ] -= referenceValue[ k ]; + + } + + } + + } + + } + + targetClip.blendMode = AdditiveAnimationBlendMode; + + return targetClip; + +} + +/** + * A class with various methods to assist with animations. + * + * @hideconstructor + */ +class AnimationUtils { + + /** + * Converts an array to a specific type + * + * @static + * @param {TypedArray|Array} array - The array to convert. + * @param {TypedArray.constructor} type - The constructor of a type array. + * @return {TypedArray} The converted array + */ + static convertArray( array, type ) { + + return convertArray( array, type ); + + } + + /** + * Returns `true` if the given object is a typed array. + * + * @static + * @param {any} object - The object to check. + * @return {boolean} Whether the given object is a typed array. + */ + static isTypedArray( object ) { + + return isTypedArray( object ); + + } + + /** + * Returns an array by which times and values can be sorted. + * + * @static + * @param {Array} times - The keyframe time values. + * @return {Array} The array. + */ + static getKeyframeOrder( times ) { + + return getKeyframeOrder( times ); + + } + + /** + * Sorts the given array by the previously computed order via `getKeyframeOrder()`. + * + * @static + * @param {Array} values - The values to sort. + * @param {number} stride - The stride. + * @param {Array} order - The sort order. + * @return {Array} The sorted values. + */ + static sortedArray( values, stride, order ) { + + return sortedArray( values, stride, order ); + + } + + /** + * Used for parsing AOS keyframe formats. + * + * @static + * @param {Array} jsonKeys - A list of JSON keyframes. + * @param {Array} times - This array will be filled with keyframe times by this method. + * @param {Array} values - This array will be filled with keyframe values by this method. + * @param {string} valuePropertyName - The name of the property to use. + */ + static flattenJSON( jsonKeys, times, values, valuePropertyName ) { + + flattenJSON( jsonKeys, times, values, valuePropertyName ); + + } + + /** + * Creates a new clip, containing only the segment of the original clip between the given frames. + * + * @static + * @param {AnimationClip} sourceClip - The values to sort. + * @param {string} name - The name of the clip. + * @param {number} startFrame - The start frame. + * @param {number} endFrame - The end frame. + * @param {number} [fps=30] - The FPS. + * @return {AnimationClip} The new sub clip. + */ + static subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) { + + return subclip( sourceClip, name, startFrame, endFrame, fps ); + + } + + /** + * Converts the keyframes of the given animation clip to an additive format. + * + * @static + * @param {AnimationClip} targetClip - The clip to make additive. + * @param {number} [referenceFrame=0] - The reference frame. + * @param {AnimationClip} [referenceClip=targetClip] - The reference clip. + * @param {number} [fps=30] - The FPS. + * @return {AnimationClip} The updated clip which is now additive. + */ + static makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) { + + return makeClipAdditive( targetClip, referenceFrame, referenceClip, fps ); + + } + +} + +/** + * Abstract base class of interpolants over parametric samples. + * + * The parameter domain is one dimensional, typically the time or a path + * along a curve defined by the data. + * + * The sample values can have any dimensionality and derived classes may + * apply special interpretations to the data. + * + * This class provides the interval seek in a Template Method, deferring + * the actual interpolation to derived classes. + * + * Time complexity is O(1) for linear access crossing at most two points + * and O(log N) for random access, where N is the number of positions. + * + * References: {@link http://www.oodesign.com/template-method-pattern.html} + * + * @abstract + */ +class Interpolant { + + /** + * Constructs a new interpolant. + * + * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors. + * @param {TypedArray} sampleValues - The sample values. + * @param {number} sampleSize - The sample size + * @param {TypedArray} [resultBuffer] - The result buffer. + */ + constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + /** + * The parameter positions. + * + * @type {TypedArray} + */ + this.parameterPositions = parameterPositions; + + /** + * A cache index. + * + * @private + * @type {number} + * @default 0 + */ + this._cachedIndex = 0; + + /** + * The result buffer. + * + * @type {TypedArray} + */ + this.resultBuffer = resultBuffer !== undefined ? resultBuffer : new sampleValues.constructor( sampleSize ); + + /** + * The sample values. + * + * @type {TypedArray} + */ + this.sampleValues = sampleValues; + + /** + * The value size. + * + * @type {TypedArray} + */ + this.valueSize = sampleSize; + + /** + * The interpolation settings. + * + * @type {?Object} + * @default null + */ + this.settings = null; + + /** + * The default settings object. + * + * @type {Object} + */ + this.DefaultSettings_ = {}; + + } + + /** + * Evaluate the interpolant at position `t`. + * + * @param {number} t - The interpolation factor. + * @return {TypedArray} The result buffer. + */ + evaluate( t ) { + + const pp = this.parameterPositions; + let i1 = this._cachedIndex, + t1 = pp[ i1 ], + t0 = pp[ i1 - 1 ]; + + validate_interval: { + + seek: { + + let right; + + linear_scan: { + + //- See http://jsperf.com/comparison-to-undefined/3 + //- slower code: + //- + //- if ( t >= t1 || t1 === undefined ) { + forward_scan: if ( ! ( t < t1 ) ) { + + for ( let giveUpAt = i1 + 2; ; ) { + + if ( t1 === undefined ) { + + if ( t < t0 ) break forward_scan; + + // after end + + i1 = pp.length; + this._cachedIndex = i1; + return this.copySampleValue_( i1 - 1 ); + + } + + if ( i1 === giveUpAt ) break; // this loop + + t0 = t1; + t1 = pp[ ++ i1 ]; + + if ( t < t1 ) { + + // we have arrived at the sought interval + break seek; + + } + + } + + // prepare binary search on the right side of the index + right = pp.length; + break linear_scan; + + } + + //- slower code: + //- if ( t < t0 || t0 === undefined ) { + if ( ! ( t >= t0 ) ) { + + // looping? + + const t1global = pp[ 1 ]; + + if ( t < t1global ) { + + i1 = 2; // + 1, using the scan for the details + t0 = t1global; + + } + + // linear reverse scan + + for ( let giveUpAt = i1 - 2; ; ) { + + if ( t0 === undefined ) { + + // before start + + this._cachedIndex = 0; + return this.copySampleValue_( 0 ); + + } + + if ( i1 === giveUpAt ) break; // this loop + + t1 = t0; + t0 = pp[ -- i1 - 1 ]; + + if ( t >= t0 ) { + + // we have arrived at the sought interval + break seek; + + } + + } + + // prepare binary search on the left side of the index + right = i1; + i1 = 0; + break linear_scan; + + } + + // the interval is valid + + break validate_interval; + + } // linear scan + + // binary search + + while ( i1 < right ) { + + const mid = ( i1 + right ) >>> 1; + + if ( t < pp[ mid ] ) { + + right = mid; + + } else { + + i1 = mid + 1; + + } + + } + + t1 = pp[ i1 ]; + t0 = pp[ i1 - 1 ]; + + // check boundary cases, again + + if ( t0 === undefined ) { + + this._cachedIndex = 0; + return this.copySampleValue_( 0 ); + + } + + if ( t1 === undefined ) { + + i1 = pp.length; + this._cachedIndex = i1; + return this.copySampleValue_( i1 - 1 ); + + } + + } // seek + + this._cachedIndex = i1; + + this.intervalChanged_( i1, t0, t1 ); + + } // validate_interval + + return this.interpolate_( i1, t0, t, t1 ); + + } + + /** + * Returns the interpolation settings. + * + * @return {Object} The interpolation settings. + */ + getSettings_() { + + return this.settings || this.DefaultSettings_; + + } + + /** + * Copies a sample value to the result buffer. + * + * @param {number} index - An index into the sample value buffer. + * @return {TypedArray} The result buffer. + */ + copySampleValue_( index ) { + + // copies a sample value to the result buffer + + const result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + offset = index * stride; + + for ( let i = 0; i !== stride; ++ i ) { + + result[ i ] = values[ offset + i ]; + + } + + return result; + + } + + /** + * Copies a sample value to the result buffer. + * + * @abstract + * @param {number} i1 - An index into the sample value buffer. + * @param {number} t0 - The previous interpolation factor. + * @param {number} t - The current interpolation factor. + * @param {number} t1 - The next interpolation factor. + * @return {TypedArray} The result buffer. + */ + interpolate_( /* i1, t0, t, t1 */ ) { + + throw new Error( 'call to abstract method' ); + // implementations shall return this.resultBuffer + + } + + /** + * Optional method that is executed when the interval has changed. + * + * @param {number} i1 - An index into the sample value buffer. + * @param {number} t0 - The previous interpolation factor. + * @param {number} t - The current interpolation factor. + */ + intervalChanged_( /* i1, t0, t1 */ ) { + + // empty + + } + +} + +/** + * Fast and simple cubic spline interpolant. + * + * It was derived from a Hermitian construction setting the first derivative + * at each sample position to the linear slope between neighboring positions + * over their parameter interval. + * + * @augments Interpolant + */ +class CubicInterpolant extends Interpolant { + + /** + * Constructs a new cubic interpolant. + * + * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors. + * @param {TypedArray} sampleValues - The sample values. + * @param {number} sampleSize - The sample size + * @param {TypedArray} [resultBuffer] - The result buffer. + */ + constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + super( parameterPositions, sampleValues, sampleSize, resultBuffer ); + + this._weightPrev = -0; + this._offsetPrev = -0; + this._weightNext = -0; + this._offsetNext = -0; + + this.DefaultSettings_ = { + + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + + }; + + } + + intervalChanged_( i1, t0, t1 ) { + + const pp = this.parameterPositions; + let iPrev = i1 - 2, + iNext = i1 + 1, + + tPrev = pp[ iPrev ], + tNext = pp[ iNext ]; + + if ( tPrev === undefined ) { + + switch ( this.getSettings_().endingStart ) { + + case ZeroSlopeEnding: + + // f'(t0) = 0 + iPrev = i1; + tPrev = 2 * t0 - t1; + + break; + + case WrapAroundEnding: + + // use the other end of the curve + iPrev = pp.length - 2; + tPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ]; + + break; + + default: // ZeroCurvatureEnding + + // f''(t0) = 0 a.k.a. Natural Spline + iPrev = i1; + tPrev = t1; + + } + + } + + if ( tNext === undefined ) { + + switch ( this.getSettings_().endingEnd ) { + + case ZeroSlopeEnding: + + // f'(tN) = 0 + iNext = i1; + tNext = 2 * t1 - t0; + + break; + + case WrapAroundEnding: + + // use the other end of the curve + iNext = 1; + tNext = t1 + pp[ 1 ] - pp[ 0 ]; + + break; + + default: // ZeroCurvatureEnding + + // f''(tN) = 0, a.k.a. Natural Spline + iNext = i1 - 1; + tNext = t0; + + } + + } + + const halfDt = ( t1 - t0 ) * 0.5, + stride = this.valueSize; + + this._weightPrev = halfDt / ( t0 - tPrev ); + this._weightNext = halfDt / ( tNext - t1 ); + this._offsetPrev = iPrev * stride; + this._offsetNext = iNext * stride; + + } + + interpolate_( i1, t0, t, t1 ) { + + const result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + o1 = i1 * stride, o0 = o1 - stride, + oP = this._offsetPrev, oN = this._offsetNext, + wP = this._weightPrev, wN = this._weightNext, + + p = ( t - t0 ) / ( t1 - t0 ), + pp = p * p, + ppp = pp * p; + + // evaluate polynomials + + const sP = - wP * ppp + 2 * wP * pp - wP * p; + const s0 = ( 1 + wP ) * ppp + ( -1.5 - 2 * wP ) * pp + ( -0.5 + wP ) * p + 1; + const s1 = ( -1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p; + const sN = wN * ppp - wN * pp; + + // combine data linearly + + for ( let i = 0; i !== stride; ++ i ) { + + result[ i ] = + sP * values[ oP + i ] + + s0 * values[ o0 + i ] + + s1 * values[ o1 + i ] + + sN * values[ oN + i ]; + + } + + return result; + + } + +} + +/** + * A basic linear interpolant. + * + * @augments Interpolant + */ +class LinearInterpolant extends Interpolant { + + /** + * Constructs a new linear interpolant. + * + * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors. + * @param {TypedArray} sampleValues - The sample values. + * @param {number} sampleSize - The sample size + * @param {TypedArray} [resultBuffer] - The result buffer. + */ + constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + super( parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + interpolate_( i1, t0, t, t1 ) { + + const result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + offset1 = i1 * stride, + offset0 = offset1 - stride, + + weight1 = ( t - t0 ) / ( t1 - t0 ), + weight0 = 1 - weight1; + + for ( let i = 0; i !== stride; ++ i ) { + + result[ i ] = + values[ offset0 + i ] * weight0 + + values[ offset1 + i ] * weight1; + + } + + return result; + + } + +} + +/** + * Interpolant that evaluates to the sample value at the position preceding + * the parameter. + * + * @augments Interpolant + */ +class DiscreteInterpolant extends Interpolant { + + /** + * Constructs a new discrete interpolant. + * + * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors. + * @param {TypedArray} sampleValues - The sample values. + * @param {number} sampleSize - The sample size + * @param {TypedArray} [resultBuffer] - The result buffer. + */ + constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + super( parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + interpolate_( i1 /*, t0, t, t1 */ ) { + + return this.copySampleValue_( i1 - 1 ); + + } + +} + +/** + * Represents s a timed sequence of keyframes, which are composed of lists of + * times and related values, and which are used to animate a specific property + * of an object. + */ +class KeyframeTrack { + + /** + * Constructs a new keyframe track. + * + * @param {string} name - The keyframe track's name. + * @param {Array} times - A list of keyframe times. + * @param {Array} values - A list of keyframe values. + * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type. + */ + constructor( name, times, values, interpolation ) { + + if ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' ); + if ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name ); + + /** + * The track's name can refer to morph targets or bones or + * possibly other values within an animated object. See {@link PropertyBinding#parseTrackName} + * for the forms of strings that can be parsed for property binding. + * + * @type {string} + */ + this.name = name; + + /** + * The keyframe times. + * + * @type {Float32Array} + */ + this.times = convertArray( times, this.TimeBufferType ); + + /** + * The keyframe values. + * + * @type {Float32Array} + */ + this.values = convertArray( values, this.ValueBufferType ); + + this.setInterpolation( interpolation || this.DefaultInterpolation ); + + } + + /** + * Converts the keyframe track to JSON. + * + * @static + * @param {KeyframeTrack} track - The keyframe track to serialize. + * @return {Object} The serialized keyframe track as JSON. + */ + static toJSON( track ) { + + const trackType = track.constructor; + + let json; + + // derived classes can define a static toJSON method + if ( trackType.toJSON !== this.toJSON ) { + + json = trackType.toJSON( track ); + + } else { + + // by default, we assume the data can be serialized as-is + json = { + + 'name': track.name, + 'times': convertArray( track.times, Array ), + 'values': convertArray( track.values, Array ) + + }; + + const interpolation = track.getInterpolation(); + + if ( interpolation !== track.DefaultInterpolation ) { + + json.interpolation = interpolation; + + } + + } + + json.type = track.ValueTypeName; // mandatory + + return json; + + } + + /** + * Factory method for creating a new discrete interpolant. + * + * @static + * @param {TypedArray} [result] - The result buffer. + * @return {DiscreteInterpolant} The new interpolant. + */ + InterpolantFactoryMethodDiscrete( result ) { + + return new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result ); + + } + + /** + * Factory method for creating a new linear interpolant. + * + * @static + * @param {TypedArray} [result] - The result buffer. + * @return {LinearInterpolant} The new interpolant. + */ + InterpolantFactoryMethodLinear( result ) { + + return new LinearInterpolant( this.times, this.values, this.getValueSize(), result ); + + } + + /** + * Factory method for creating a new smooth interpolant. + * + * @static + * @param {TypedArray} [result] - The result buffer. + * @return {CubicInterpolant} The new interpolant. + */ + InterpolantFactoryMethodSmooth( result ) { + + return new CubicInterpolant( this.times, this.values, this.getValueSize(), result ); + + } + + /** + * Defines the interpolation factor method for this keyframe track. + * + * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} interpolation - The interpolation type. + * @return {KeyframeTrack} A reference to this keyframe track. + */ + setInterpolation( interpolation ) { + + let factoryMethod; + + switch ( interpolation ) { + + case InterpolateDiscrete: + + factoryMethod = this.InterpolantFactoryMethodDiscrete; + + break; + + case InterpolateLinear: + + factoryMethod = this.InterpolantFactoryMethodLinear; + + break; + + case InterpolateSmooth: + + factoryMethod = this.InterpolantFactoryMethodSmooth; + + break; + + } + + if ( factoryMethod === undefined ) { + + const message = 'unsupported interpolation for ' + + this.ValueTypeName + ' keyframe track named ' + this.name; + + if ( this.createInterpolant === undefined ) { + + // fall back to default, unless the default itself is messed up + if ( interpolation !== this.DefaultInterpolation ) { + + this.setInterpolation( this.DefaultInterpolation ); + + } else { + + throw new Error( message ); // fatal, in this case + + } + + } + + console.warn( 'THREE.KeyframeTrack:', message ); + return this; + + } + + this.createInterpolant = factoryMethod; + + return this; + + } + + /** + * Returns the current interpolation type. + * + * @return {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} The interpolation type. + */ + getInterpolation() { + + switch ( this.createInterpolant ) { + + case this.InterpolantFactoryMethodDiscrete: + + return InterpolateDiscrete; + + case this.InterpolantFactoryMethodLinear: + + return InterpolateLinear; + + case this.InterpolantFactoryMethodSmooth: + + return InterpolateSmooth; + + } + + } + + /** + * Returns the value size. + * + * @return {number} The value size. + */ + getValueSize() { + + return this.values.length / this.times.length; + + } + + /** + * Moves all keyframes either forward or backward in time. + * + * @param {number} timeOffset - The offset to move the time values. + * @return {KeyframeTrack} A reference to this keyframe track. + */ + shift( timeOffset ) { + + if ( timeOffset !== 0.0 ) { + + const times = this.times; + + for ( let i = 0, n = times.length; i !== n; ++ i ) { + + times[ i ] += timeOffset; + + } + + } + + return this; + + } + + /** + * Scale all keyframe times by a factor (useful for frame - seconds conversions). + * + * @param {number} timeScale - The time scale. + * @return {KeyframeTrack} A reference to this keyframe track. + */ + scale( timeScale ) { + + if ( timeScale !== 1.0 ) { + + const times = this.times; + + for ( let i = 0, n = times.length; i !== n; ++ i ) { + + times[ i ] *= timeScale; + + } + + } + + return this; + + } + + /** + * Removes keyframes before and after animation without changing any values within the defined time range. + * + * Note: The method does not shift around keys to the start of the track time, because for interpolated + * keys this will change their values + * + * @param {number} startTime - The start time. + * @param {number} endTime - The end time. + * @return {KeyframeTrack} A reference to this keyframe track. + */ + trim( startTime, endTime ) { + + const times = this.times, + nKeys = times.length; + + let from = 0, + to = nKeys - 1; + + while ( from !== nKeys && times[ from ] < startTime ) { + + ++ from; + + } + + while ( to !== -1 && times[ to ] > endTime ) { + + -- to; + + } + + ++ to; // inclusive -> exclusive bound + + if ( from !== 0 || to !== nKeys ) { + + // empty tracks are forbidden, so keep at least one keyframe + if ( from >= to ) { + + to = Math.max( to, 1 ); + from = to - 1; + + } + + const stride = this.getValueSize(); + this.times = times.slice( from, to ); + this.values = this.values.slice( from * stride, to * stride ); + + } + + return this; + + } + + /** + * Performs minimal validation on the keyframe track. Returns `true` if the values + * are valid. + * + * @return {boolean} Whether the keyframes are valid or not. + */ + validate() { + + let valid = true; + + const valueSize = this.getValueSize(); + if ( valueSize - Math.floor( valueSize ) !== 0 ) { + + console.error( 'THREE.KeyframeTrack: Invalid value size in track.', this ); + valid = false; + + } + + const times = this.times, + values = this.values, + + nKeys = times.length; + + if ( nKeys === 0 ) { + + console.error( 'THREE.KeyframeTrack: Track is empty.', this ); + valid = false; + + } + + let prevTime = null; + + for ( let i = 0; i !== nKeys; i ++ ) { + + const currTime = times[ i ]; + + if ( typeof currTime === 'number' && isNaN( currTime ) ) { + + console.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime ); + valid = false; + break; + + } + + if ( prevTime !== null && prevTime > currTime ) { + + console.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime ); + valid = false; + break; + + } + + prevTime = currTime; + + } + + if ( values !== undefined ) { + + if ( isTypedArray( values ) ) { + + for ( let i = 0, n = values.length; i !== n; ++ i ) { + + const value = values[ i ]; + + if ( isNaN( value ) ) { + + console.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value ); + valid = false; + break; + + } + + } + + } + + } + + return valid; + + } + + /** + * Optimizes this keyframe track by removing equivalent sequential keys (which are + * common in morph target sequences). + * + * @return {AnimationClip} A reference to this animation clip. + */ + optimize() { + + // (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0) + + // times or values may be shared with other tracks, so overwriting is unsafe + const times = this.times.slice(), + values = this.values.slice(), + stride = this.getValueSize(), + + smoothInterpolation = this.getInterpolation() === InterpolateSmooth, + + lastIndex = times.length - 1; + + let writeIndex = 1; + + for ( let i = 1; i < lastIndex; ++ i ) { + + let keep = false; + + const time = times[ i ]; + const timeNext = times[ i + 1 ]; + + // remove adjacent keyframes scheduled at the same time + + if ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) { + + if ( ! smoothInterpolation ) { + + // remove unnecessary keyframes same as their neighbors + + const offset = i * stride, + offsetP = offset - stride, + offsetN = offset + stride; + + for ( let j = 0; j !== stride; ++ j ) { + + const value = values[ offset + j ]; + + if ( value !== values[ offsetP + j ] || + value !== values[ offsetN + j ] ) { + + keep = true; + break; + + } + + } + + } else { + + keep = true; + + } + + } + + // in-place compaction + + if ( keep ) { + + if ( i !== writeIndex ) { + + times[ writeIndex ] = times[ i ]; + + const readOffset = i * stride, + writeOffset = writeIndex * stride; + + for ( let j = 0; j !== stride; ++ j ) { + + values[ writeOffset + j ] = values[ readOffset + j ]; + + } + + } + + ++ writeIndex; + + } + + } + + // flush last keyframe (compaction looks ahead) + + if ( lastIndex > 0 ) { + + times[ writeIndex ] = times[ lastIndex ]; + + for ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) { + + values[ writeOffset + j ] = values[ readOffset + j ]; + + } + + ++ writeIndex; + + } + + if ( writeIndex !== times.length ) { + + this.times = times.slice( 0, writeIndex ); + this.values = values.slice( 0, writeIndex * stride ); + + } else { + + this.times = times; + this.values = values; + + } + + return this; + + } + + /** + * Returns a new keyframe track with copied values from this instance. + * + * @return {KeyframeTrack} A clone of this instance. + */ + clone() { + + const times = this.times.slice(); + const values = this.values.slice(); + + const TypedKeyframeTrack = this.constructor; + const track = new TypedKeyframeTrack( this.name, times, values ); + + // Interpolant argument to constructor is not saved, so copy the factory method directly. + track.createInterpolant = this.createInterpolant; + + return track; + + } + +} + +/** + * The value type name. + * + * @type {String} + * @default '' + */ +KeyframeTrack.prototype.ValueTypeName = ''; + +/** + * The time buffer type of this keyframe track. + * + * @type {TypedArray|Array} + * @default Float32Array.constructor + */ +KeyframeTrack.prototype.TimeBufferType = Float32Array; + +/** + * The value buffer type of this keyframe track. + * + * @type {TypedArray|Array} + * @default Float32Array.constructor + */ +KeyframeTrack.prototype.ValueBufferType = Float32Array; + +/** + * The default interpolation type of this keyframe track. + * + * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} + * @default InterpolateLinear + */ +KeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear; + +/** + * A track for boolean keyframe values. + * + * @augments KeyframeTrack + */ +class BooleanKeyframeTrack extends KeyframeTrack { + + /** + * Constructs a new boolean keyframe track. + * + * This keyframe track type has no `interpolation` parameter because the + * interpolation is always discrete. + * + * @param {string} name - The keyframe track's name. + * @param {Array} times - A list of keyframe times. + * @param {Array} values - A list of keyframe values. + */ + constructor( name, times, values ) { + + super( name, times, values ); + + } + +} + +/** + * The value type name. + * + * @type {String} + * @default 'bool' + */ +BooleanKeyframeTrack.prototype.ValueTypeName = 'bool'; + +/** + * The value buffer type of this keyframe track. + * + * @type {TypedArray|Array} + * @default Array.constructor + */ +BooleanKeyframeTrack.prototype.ValueBufferType = Array; + +/** + * The default interpolation type of this keyframe track. + * + * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} + * @default InterpolateDiscrete + */ +BooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete; +BooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined; +BooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined; + +/** + * A track for color keyframe values. + * + * @augments KeyframeTrack + */ +class ColorKeyframeTrack extends KeyframeTrack { + + /** + * Constructs a new color keyframe track. + * + * @param {string} name - The keyframe track's name. + * @param {Array} times - A list of keyframe times. + * @param {Array} values - A list of keyframe values. + * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type. + */ + constructor( name, times, values, interpolation ) { + + super( name, times, values, interpolation ); + + } + +} + +/** + * The value type name. + * + * @type {String} + * @default 'color' + */ +ColorKeyframeTrack.prototype.ValueTypeName = 'color'; + +/** + * A track for numeric keyframe values. + * + * @augments KeyframeTrack + */ +class NumberKeyframeTrack extends KeyframeTrack { + + /** + * Constructs a new number keyframe track. + * + * @param {string} name - The keyframe track's name. + * @param {Array} times - A list of keyframe times. + * @param {Array} values - A list of keyframe values. + * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type. + */ + constructor( name, times, values, interpolation ) { + + super( name, times, values, interpolation ); + + } + +} + +/** + * The value type name. + * + * @type {String} + * @default 'number' + */ +NumberKeyframeTrack.prototype.ValueTypeName = 'number'; + +/** + * Spherical linear unit quaternion interpolant. + * + * @augments Interpolant + */ +class QuaternionLinearInterpolant extends Interpolant { + + /** + * Constructs a new SLERP interpolant. + * + * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors. + * @param {TypedArray} sampleValues - The sample values. + * @param {number} sampleSize - The sample size + * @param {TypedArray} [resultBuffer] - The result buffer. + */ + constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + super( parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + interpolate_( i1, t0, t, t1 ) { + + const result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + alpha = ( t - t0 ) / ( t1 - t0 ); + + let offset = i1 * stride; + + for ( let end = offset + stride; offset !== end; offset += 4 ) { + + Quaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha ); + + } + + return result; + + } + +} + +/** + * A track for Quaternion keyframe values. + * + * @augments KeyframeTrack + */ +class QuaternionKeyframeTrack extends KeyframeTrack { + + /** + * Constructs a new Quaternion keyframe track. + * + * @param {string} name - The keyframe track's name. + * @param {Array} times - A list of keyframe times. + * @param {Array} values - A list of keyframe values. + * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type. + */ + constructor( name, times, values, interpolation ) { + + super( name, times, values, interpolation ); + + } + + /** + * Overwritten so the method returns Quaternion based interpolant. + * + * @static + * @param {TypedArray} [result] - The result buffer. + * @return {QuaternionLinearInterpolant} The new interpolant. + */ + InterpolantFactoryMethodLinear( result ) { + + return new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result ); + + } + +} + +/** + * The value type name. + * + * @type {String} + * @default 'quaternion' + */ +QuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion'; +// ValueBufferType is inherited +// DefaultInterpolation is inherited; +QuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined; + +/** + * A track for string keyframe values. + * + * @augments KeyframeTrack + */ +class StringKeyframeTrack extends KeyframeTrack { + + /** + * Constructs a new string keyframe track. + * + * This keyframe track type has no `interpolation` parameter because the + * interpolation is always discrete. + * + * @param {string} name - The keyframe track's name. + * @param {Array} times - A list of keyframe times. + * @param {Array} values - A list of keyframe values. + */ + constructor( name, times, values ) { + + super( name, times, values ); + + } + +} + +/** + * The value type name. + * + * @type {String} + * @default 'string' + */ +StringKeyframeTrack.prototype.ValueTypeName = 'string'; + +/** + * The value buffer type of this keyframe track. + * + * @type {TypedArray|Array} + * @default Array.constructor + */ +StringKeyframeTrack.prototype.ValueBufferType = Array; + +/** + * The default interpolation type of this keyframe track. + * + * @type {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} + * @default InterpolateDiscrete + */ +StringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete; +StringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined; +StringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined; + +/** + * A track for vector keyframe values. + * + * @augments KeyframeTrack + */ +class VectorKeyframeTrack extends KeyframeTrack { + + /** + * Constructs a new vector keyframe track. + * + * @param {string} name - The keyframe track's name. + * @param {Array} times - A list of keyframe times. + * @param {Array} values - A list of keyframe values. + * @param {(InterpolateLinear|InterpolateDiscrete|InterpolateSmooth)} [interpolation] - The interpolation type. + */ + constructor( name, times, values, interpolation ) { + + super( name, times, values, interpolation ); + + } + +} + +/** + * The value type name. + * + * @type {String} + * @default 'vector' + */ +VectorKeyframeTrack.prototype.ValueTypeName = 'vector'; + +/** + * A reusable set of keyframe tracks which represent an animation. + */ +class AnimationClip { + + /** + * Constructs a new animation clip. + * + * Note: Instead of instantiating an AnimationClip directly with the constructor, you can + * use the static interface of this class for creating clips. In most cases though, animation clips + * will automatically be created by loaders when importing animated 3D assets. + * + * @param {string} [name=''] - The clip's name. + * @param {number} [duration=-1] - The clip's duration in seconds. If a negative value is passed, + * the duration will be calculated from the passed keyframes. + * @param {Array} tracks - An array of keyframe tracks. + * @param {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} [blendMode=NormalAnimationBlendMode] - Defines how the animation + * is blended/combined when two or more animations are simultaneously played. + */ + constructor( name = '', duration = -1, tracks = [], blendMode = NormalAnimationBlendMode ) { + + /** + * The clip's name. + * + * @type {string} + */ + this.name = name; + + /** + * An array of keyframe tracks. + * + * @type {Array} + */ + this.tracks = tracks; + + /** + * The clip's duration in seconds. + * + * @type {number} + */ + this.duration = duration; + + /** + * Defines how the animation is blended/combined when two or more animations + * are simultaneously played. + * + * @type {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} + */ + this.blendMode = blendMode; + + /** + * The UUID of the animation clip. + * + * @type {string} + * @readonly + */ + this.uuid = generateUUID(); + + // this means it should figure out its duration by scanning the tracks + if ( this.duration < 0 ) { + + this.resetDuration(); + + } + + } + + /** + * Factory method for creating an animation clip from the given JSON. + * + * @static + * @param {Object} json - The serialized animation clip. + * @return {AnimationClip} The new animation clip. + */ + static parse( json ) { + + const tracks = [], + jsonTracks = json.tracks, + frameTime = 1.0 / ( json.fps || 1.0 ); + + for ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) { + + tracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) ); + + } + + const clip = new this( json.name, json.duration, tracks, json.blendMode ); + clip.uuid = json.uuid; + + return clip; + + } + + /** + * Serializes the given animation clip into JSON. + * + * @static + * @param {AnimationClip} clip - The animation clip to serialize. + * @return {Object} The JSON object. + */ + static toJSON( clip ) { + + const tracks = [], + clipTracks = clip.tracks; + + const json = { + + 'name': clip.name, + 'duration': clip.duration, + 'tracks': tracks, + 'uuid': clip.uuid, + 'blendMode': clip.blendMode + + }; + + for ( let i = 0, n = clipTracks.length; i !== n; ++ i ) { + + tracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) ); + + } + + return json; + + } + + /** + * Returns a new animation clip from the passed morph targets array of a + * geometry, taking a name and the number of frames per second. + * + * Note: The fps parameter is required, but the animation speed can be + * overridden via {@link AnimationAction#setDuration}. + * + * @static + * @param {string} name - The name of the animation clip. + * @param {Array} morphTargetSequence - A sequence of morph targets. + * @param {number} fps - The Frames-Per-Second value. + * @param {boolean} noLoop - Whether the clip should be no loop or not. + * @return {AnimationClip} The new animation clip. + */ + static CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) { + + const numMorphTargets = morphTargetSequence.length; + const tracks = []; + + for ( let i = 0; i < numMorphTargets; i ++ ) { + + let times = []; + let values = []; + + times.push( + ( i + numMorphTargets - 1 ) % numMorphTargets, + i, + ( i + 1 ) % numMorphTargets ); + + values.push( 0, 1, 0 ); + + const order = getKeyframeOrder( times ); + times = sortedArray( times, 1, order ); + values = sortedArray( values, 1, order ); + + // if there is a key at the first frame, duplicate it as the + // last frame as well for perfect loop. + if ( ! noLoop && times[ 0 ] === 0 ) { + + times.push( numMorphTargets ); + values.push( values[ 0 ] ); + + } + + tracks.push( + new NumberKeyframeTrack( + '.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']', + times, values + ).scale( 1.0 / fps ) ); + + } + + return new this( name, -1, tracks ); + + } + + /** + * Searches for an animation clip by name, taking as its first parameter + * either an array of clips, or a mesh or geometry that contains an + * array named "animations" property. + * + * @static + * @param {(Array|Object3D)} objectOrClipArray - The array or object to search through. + * @param {string} name - The name to search for. + * @return {?AnimationClip} The found animation clip. Returns `null` if no clip has been found. + */ + static findByName( objectOrClipArray, name ) { + + let clipArray = objectOrClipArray; + + if ( ! Array.isArray( objectOrClipArray ) ) { + + const o = objectOrClipArray; + clipArray = o.geometry && o.geometry.animations || o.animations; + + } + + for ( let i = 0; i < clipArray.length; i ++ ) { + + if ( clipArray[ i ].name === name ) { + + return clipArray[ i ]; + + } + + } + + return null; + + } + + /** + * Returns an array of new AnimationClips created from the morph target + * sequences of a geometry, trying to sort morph target names into + * animation-group-based patterns like "Walk_001, Walk_002, Run_001, Run_002...". + * + * See {@link MD2Loader#parse} as an example for how the method should be used. + * + * @static + * @param {Array} morphTargets - A sequence of morph targets. + * @param {number} fps - The Frames-Per-Second value. + * @param {boolean} noLoop - Whether the clip should be no loop or not. + * @return {Array} An array of new animation clips. + */ + static CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) { + + const animationToMorphTargets = {}; + + // tested with https://regex101.com/ on trick sequences + // such flamingo_flyA_003, flamingo_run1_003, crdeath0059 + const pattern = /^([\w-]*?)([\d]+)$/; + + // sort morph target names into animation groups based + // patterns like Walk_001, Walk_002, Run_001, Run_002 + for ( let i = 0, il = morphTargets.length; i < il; i ++ ) { + + const morphTarget = morphTargets[ i ]; + const parts = morphTarget.name.match( pattern ); + + if ( parts && parts.length > 1 ) { + + const name = parts[ 1 ]; + + let animationMorphTargets = animationToMorphTargets[ name ]; + + if ( ! animationMorphTargets ) { + + animationToMorphTargets[ name ] = animationMorphTargets = []; + + } + + animationMorphTargets.push( morphTarget ); + + } + + } + + const clips = []; + + for ( const name in animationToMorphTargets ) { + + clips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) ); + + } + + return clips; + + } + + /** + * Parses the `animation.hierarchy` format and returns a new animation clip. + * + * @static + * @deprecated since r175. + * @param {Object} animation - A serialized animation clip as JSON. + * @param {Array} bones - An array of bones. + * @return {?AnimationClip} The new animation clip. + */ + static parseAnimation( animation, bones ) { + + console.warn( 'THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185' ); + + if ( ! animation ) { + + console.error( 'THREE.AnimationClip: No animation in JSONLoader data.' ); + return null; + + } + + const addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) { + + // only return track if there are actually keys. + if ( animationKeys.length !== 0 ) { + + const times = []; + const values = []; + + flattenJSON( animationKeys, times, values, propertyName ); + + // empty keys are filtered out, so check again + if ( times.length !== 0 ) { + + destTracks.push( new trackType( trackName, times, values ) ); + + } + + } + + }; + + const tracks = []; + + const clipName = animation.name || 'default'; + const fps = animation.fps || 30; + const blendMode = animation.blendMode; + + // automatic length determination in AnimationClip. + let duration = animation.length || -1; + + const hierarchyTracks = animation.hierarchy || []; + + for ( let h = 0; h < hierarchyTracks.length; h ++ ) { + + const animationKeys = hierarchyTracks[ h ].keys; + + // skip empty tracks + if ( ! animationKeys || animationKeys.length === 0 ) continue; + + // process morph targets + if ( animationKeys[ 0 ].morphTargets ) { + + // figure out all morph targets used in this track + const morphTargetNames = {}; + + let k; + + for ( k = 0; k < animationKeys.length; k ++ ) { + + if ( animationKeys[ k ].morphTargets ) { + + for ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) { + + morphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = -1; + + } + + } + + } + + // create a track for each morph target with all zero + // morphTargetInfluences except for the keys in which + // the morphTarget is named. + for ( const morphTargetName in morphTargetNames ) { + + const times = []; + const values = []; + + for ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) { + + const animationKey = animationKeys[ k ]; + + times.push( animationKey.time ); + values.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 ); + + } + + tracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) ); + + } + + duration = morphTargetNames.length * fps; + + } else { + + // ...assume skeletal animation + + const boneName = '.bones[' + bones[ h ].name + ']'; + + addNonemptyTrack( + VectorKeyframeTrack, boneName + '.position', + animationKeys, 'pos', tracks ); + + addNonemptyTrack( + QuaternionKeyframeTrack, boneName + '.quaternion', + animationKeys, 'rot', tracks ); + + addNonemptyTrack( + VectorKeyframeTrack, boneName + '.scale', + animationKeys, 'scl', tracks ); + + } + + } + + if ( tracks.length === 0 ) { + + return null; + + } + + const clip = new this( clipName, duration, tracks, blendMode ); + + return clip; + + } + + /** + * Sets the duration of this clip to the duration of its longest keyframe track. + * + * @return {AnimationClip} A reference to this animation clip. + */ + resetDuration() { + + const tracks = this.tracks; + let duration = 0; + + for ( let i = 0, n = tracks.length; i !== n; ++ i ) { + + const track = this.tracks[ i ]; + + duration = Math.max( duration, track.times[ track.times.length - 1 ] ); + + } + + this.duration = duration; + + return this; + + } + + /** + * Trims all tracks to the clip's duration. + * + * @return {AnimationClip} A reference to this animation clip. + */ + trim() { + + for ( let i = 0; i < this.tracks.length; i ++ ) { + + this.tracks[ i ].trim( 0, this.duration ); + + } + + return this; + + } + + /** + * Performs minimal validation on each track in the clip. Returns `true` if all + * tracks are valid. + * + * @return {boolean} Whether the clip's keyframes are valid or not. + */ + validate() { + + let valid = true; + + for ( let i = 0; i < this.tracks.length; i ++ ) { + + valid = valid && this.tracks[ i ].validate(); + + } + + return valid; + + } + + /** + * Optimizes each track by removing equivalent sequential keys (which are + * common in morph target sequences). + * + * @return {AnimationClip} A reference to this animation clip. + */ + optimize() { + + for ( let i = 0; i < this.tracks.length; i ++ ) { + + this.tracks[ i ].optimize(); + + } + + return this; + + } + + /** + * Returns a new animation clip with copied values from this instance. + * + * @return {AnimationClip} A clone of this instance. + */ + clone() { + + const tracks = []; + + for ( let i = 0; i < this.tracks.length; i ++ ) { + + tracks.push( this.tracks[ i ].clone() ); + + } + + return new this.constructor( this.name, this.duration, tracks, this.blendMode ); + + } + + /** + * Serializes this animation clip into JSON. + * + * @return {Object} The JSON object. + */ + toJSON() { + + return this.constructor.toJSON( this ); + + } + +} + +function getTrackTypeForValueTypeName( typeName ) { + + switch ( typeName.toLowerCase() ) { + + case 'scalar': + case 'double': + case 'float': + case 'number': + case 'integer': + + return NumberKeyframeTrack; + + case 'vector': + case 'vector2': + case 'vector3': + case 'vector4': + + return VectorKeyframeTrack; + + case 'color': + + return ColorKeyframeTrack; + + case 'quaternion': + + return QuaternionKeyframeTrack; + + case 'bool': + case 'boolean': + + return BooleanKeyframeTrack; + + case 'string': + + return StringKeyframeTrack; + + } + + throw new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName ); + +} + +function parseKeyframeTrack( json ) { + + if ( json.type === undefined ) { + + throw new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' ); + + } + + const trackType = getTrackTypeForValueTypeName( json.type ); + + if ( json.times === undefined ) { + + const times = [], values = []; + + flattenJSON( json.keys, times, values, 'value' ); + + json.times = times; + json.values = values; + + } + + // derived classes can define a static parse method + if ( trackType.parse !== undefined ) { + + return trackType.parse( json ); + + } else { + + // by default, we assume a constructor compatible with the base + return new trackType( json.name, json.times, json.values, json.interpolation ); + + } + +} + +/** + * @class + * @classdesc A simple caching system, used internally by {@link FileLoader}. + * To enable caching across all loaders that use {@link FileLoader}, add `THREE.Cache.enabled = true.` once in your app. + * @hideconstructor + */ +const Cache = { + + /** + * Whether caching is enabled or not. + * + * @static + * @type {boolean} + * @default false + */ + enabled: false, + + /** + * A dictionary that holds cached files. + * + * @static + * @type {Object} + */ + files: {}, + + /** + * Adds a cache entry with a key to reference the file. If this key already + * holds a file, it is overwritten. + * + * @static + * @param {string} key - The key to reference the cached file. + * @param {Object} file - The file to be cached. + */ + add: function ( key, file ) { + + if ( this.enabled === false ) return; + + // console.log( 'THREE.Cache', 'Adding key:', key ); + + this.files[ key ] = file; + + }, + + /** + * Gets the cached value for the given key. + * + * @static + * @param {string} key - The key to reference the cached file. + * @return {Object|undefined} The cached file. If the key does not exist `undefined` is returned. + */ + get: function ( key ) { + + if ( this.enabled === false ) return; + + // console.log( 'THREE.Cache', 'Checking key:', key ); + + return this.files[ key ]; + + }, + + /** + * Removes the cached file associated with the given key. + * + * @static + * @param {string} key - The key to reference the cached file. + */ + remove: function ( key ) { + + delete this.files[ key ]; + + }, + + /** + * Remove all values from the cache. + * + * @static + */ + clear: function () { + + this.files = {}; + + } + +}; + +/** + * Handles and keeps track of loaded and pending data. A default global + * instance of this class is created and used by loaders if not supplied + * manually. + * + * In general that should be sufficient, however there are times when it can + * be useful to have separate loaders - for example if you want to show + * separate loading bars for objects and textures. + * + * ```js + * const manager = new THREE.LoadingManager(); + * manager.onLoad = () => console.log( 'Loading complete!' ); + * + * const loader1 = new OBJLoader( manager ); + * const loader2 = new ColladaLoader( manager ); + * ``` + */ +class LoadingManager { + + /** + * Constructs a new loading manager. + * + * @param {Function} [onLoad] - Executes when all items have been loaded. + * @param {Function} [onProgress] - Executes when single items have been loaded. + * @param {Function} [onError] - Executes when an error occurs. + */ + constructor( onLoad, onProgress, onError ) { + + const scope = this; + + let isLoading = false; + let itemsLoaded = 0; + let itemsTotal = 0; + let urlModifier = undefined; + const handlers = []; + + // Refer to #5689 for the reason why we don't set .onStart + // in the constructor + + /** + * Executes when an item starts loading. + * + * @type {Function|undefined} + * @default undefined + */ + this.onStart = undefined; + + /** + * Executes when all items have been loaded. + * + * @type {Function|undefined} + * @default undefined + */ + this.onLoad = onLoad; + + /** + * Executes when single items have been loaded. + * + * @type {Function|undefined} + * @default undefined + */ + this.onProgress = onProgress; + + /** + * Executes when an error occurs. + * + * @type {Function|undefined} + * @default undefined + */ + this.onError = onError; + + /** + * This should be called by any loader using the manager when the loader + * starts loading an item. + * + * @param {string} url - The URL to load. + */ + this.itemStart = function ( url ) { + + itemsTotal ++; + + if ( isLoading === false ) { + + if ( scope.onStart !== undefined ) { + + scope.onStart( url, itemsLoaded, itemsTotal ); + + } + + } + + isLoading = true; + + }; + + /** + * This should be called by any loader using the manager when the loader + * ended loading an item. + * + * @param {string} url - The URL of the loaded item. + */ + this.itemEnd = function ( url ) { + + itemsLoaded ++; + + if ( scope.onProgress !== undefined ) { + + scope.onProgress( url, itemsLoaded, itemsTotal ); + + } + + if ( itemsLoaded === itemsTotal ) { + + isLoading = false; + + if ( scope.onLoad !== undefined ) { + + scope.onLoad(); + + } + + } + + }; + + /** + * This should be called by any loader using the manager when the loader + * encounters an error when loading an item. + * + * @param {string} url - The URL of the item that produces an error. + */ + this.itemError = function ( url ) { + + if ( scope.onError !== undefined ) { + + scope.onError( url ); + + } + + }; + + /** + * Given a URL, uses the URL modifier callback (if any) and returns a + * resolved URL. If no URL modifier is set, returns the original URL. + * + * @param {string} url - The URL to load. + * @return {string} The resolved URL. + */ + this.resolveURL = function ( url ) { + + if ( urlModifier ) { + + return urlModifier( url ); + + } + + return url; + + }; + + /** + * If provided, the callback will be passed each resource URL before a + * request is sent. The callback may return the original URL, or a new URL to + * override loading behavior. This behavior can be used to load assets from + * .ZIP files, drag-and-drop APIs, and Data URIs. + * + * ```js + * const blobs = {'fish.gltf': blob1, 'diffuse.png': blob2, 'normal.png': blob3}; + * + * const manager = new THREE.LoadingManager(); + * + * // Initialize loading manager with URL callback. + * const objectURLs = []; + * manager.setURLModifier( ( url ) => { + * + * url = URL.createObjectURL( blobs[ url ] ); + * objectURLs.push( url ); + * return url; + * + * } ); + * + * // Load as usual, then revoke the blob URLs. + * const loader = new GLTFLoader( manager ); + * loader.load( 'fish.gltf', (gltf) => { + * + * scene.add( gltf.scene ); + * objectURLs.forEach( ( url ) => URL.revokeObjectURL( url ) ); + * + * } ); + * ``` + * + * @param {function(string):string} transform - URL modifier callback. Called with an URL and must return a resolved URL. + * @return {LoadingManager} A reference to this loading manager. + */ + this.setURLModifier = function ( transform ) { + + urlModifier = transform; + + return this; + + }; + + /** + * Registers a loader with the given regular expression. Can be used to + * define what loader should be used in order to load specific files. A + * typical use case is to overwrite the default loader for textures. + * + * ```js + * // add handler for TGA textures + * manager.addHandler( /\.tga$/i, new TGALoader() ); + * ``` + * + * @param {string} regex - A regular expression. + * @param {Loader} loader - A loader that should handle matched cases. + * @return {LoadingManager} A reference to this loading manager. + */ + this.addHandler = function ( regex, loader ) { + + handlers.push( regex, loader ); + + return this; + + }; + + /** + * Removes the loader for the given regular expression. + * + * @param {string} regex - A regular expression. + * @return {LoadingManager} A reference to this loading manager. + */ + this.removeHandler = function ( regex ) { + + const index = handlers.indexOf( regex ); + + if ( index !== -1 ) { + + handlers.splice( index, 2 ); + + } + + return this; + + }; + + /** + * Can be used to retrieve the registered loader for the given file path. + * + * @param {string} file - The file path. + * @return {?Loader} The registered loader. Returns `null` if no loader was found. + */ + this.getHandler = function ( file ) { + + for ( let i = 0, l = handlers.length; i < l; i += 2 ) { + + const regex = handlers[ i ]; + const loader = handlers[ i + 1 ]; + + if ( regex.global ) regex.lastIndex = 0; // see #17920 + + if ( regex.test( file ) ) { + + return loader; + + } + + } + + return null; + + }; + + } + +} + +/** + * The global default loading manager. + * + * @constant + * @type {LoadingManager} + */ +const DefaultLoadingManager = /*@__PURE__*/ new LoadingManager(); + +/** + * Abstract base class for loaders. + * + * @abstract + */ +class Loader { + + /** + * Constructs a new loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + /** + * The loading manager. + * + * @type {LoadingManager} + * @default DefaultLoadingManager + */ + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + /** + * The crossOrigin string to implement CORS for loading the url from a + * different domain that allows CORS. + * + * @type {string} + * @default 'anonymous' + */ + this.crossOrigin = 'anonymous'; + + /** + * Whether the XMLHttpRequest uses credentials. + * + * @type {boolean} + * @default false + */ + this.withCredentials = false; + + /** + * The base path from which the asset will be loaded. + * + * @type {string} + */ + this.path = ''; + + /** + * The base path from which additional resources like textures will be loaded. + * + * @type {string} + */ + this.resourcePath = ''; + + /** + * The [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header} + * used in HTTP request. + * + * @type {Object} + */ + this.requestHeader = {}; + + } + + /** + * This method needs to be implemented by all concrete loaders. It holds the + * logic for loading assets from the backend. + * + * @param {string} url - The path/URL of the file to be loaded. + * @param {Function} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} [onProgress] - Executed while the loading is in progress. + * @param {onErrorCallback} [onError] - Executed when errors occur. + */ + load( /* url, onLoad, onProgress, onError */ ) {} + + /** + * A async version of {@link Loader#load}. + * + * @param {string} url - The path/URL of the file to be loaded. + * @param {onProgressCallback} [onProgress] - Executed while the loading is in progress. + * @return {Promise} A Promise that resolves when the asset has been loaded. + */ + loadAsync( url, onProgress ) { + + const scope = this; + + return new Promise( function ( resolve, reject ) { + + scope.load( url, resolve, onProgress, reject ); + + } ); + + } + + /** + * This method needs to be implemented by all concrete loaders. It holds the + * logic for parsing the asset into three.js entities. + * + * @param {any} data - The data to parse. + */ + parse( /* data */ ) {} + + /** + * Sets the `crossOrigin` String to implement CORS for loading the URL + * from a different domain that allows CORS. + * + * @param {string} crossOrigin - The `crossOrigin` value. + * @return {Loader} A reference to this instance. + */ + setCrossOrigin( crossOrigin ) { + + this.crossOrigin = crossOrigin; + return this; + + } + + /** + * Whether the XMLHttpRequest uses credentials such as cookies, authorization + * headers or TLS client certificates, see [XMLHttpRequest.withCredentials]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials}. + * + * Note: This setting has no effect if you are loading files locally or from the same domain. + * + * @param {boolean} value - The `withCredentials` value. + * @return {Loader} A reference to this instance. + */ + setWithCredentials( value ) { + + this.withCredentials = value; + return this; + + } + + /** + * Sets the base path for the asset. + * + * @param {string} path - The base path. + * @return {Loader} A reference to this instance. + */ + setPath( path ) { + + this.path = path; + return this; + + } + + /** + * Sets the base path for dependent resources like textures. + * + * @param {string} resourcePath - The resource path. + * @return {Loader} A reference to this instance. + */ + setResourcePath( resourcePath ) { + + this.resourcePath = resourcePath; + return this; + + } + + /** + * Sets the given request header. + * + * @param {Object} requestHeader - A [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header} + * for configuring the HTTP request. + * @return {Loader} A reference to this instance. + */ + setRequestHeader( requestHeader ) { + + this.requestHeader = requestHeader; + return this; + + } + +} + +/** + * Callback for onProgress in loaders. + * + * @callback onProgressCallback + * @param {ProgressEvent} event - An instance of `ProgressEvent` that represents the current loading status. + */ + +/** + * Callback for onError in loaders. + * + * @callback onErrorCallback + * @param {Error} error - The error which occurred during the loading process. + */ + +/** + * The default material name that is used by loaders + * when creating materials for loaded 3D objects. + * + * Note: Not all loaders might honor this setting. + * + * @static + * @type {string} + * @default '__DEFAULT' + */ +Loader.DEFAULT_MATERIAL_NAME = '__DEFAULT'; + +const loading = {}; + +class HttpError extends Error { + + constructor( message, response ) { + + super( message ); + this.response = response; + + } + +} + +/** + * A low level class for loading resources with the Fetch API, used internally by + * most loaders. It can also be used directly to load any file type that does + * not have a loader. + * + * This loader supports caching. If you want to use it, add `THREE.Cache.enabled = true;` + * once to your application. + * + * ```js + * const loader = new THREE.FileLoader(); + * const data = await loader.loadAsync( 'example.txt' ); + * ``` + * + * @augments Loader + */ +class FileLoader extends Loader { + + /** + * Constructs a new file loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + super( manager ); + + /** + * The expected mime type. + * + * @type {string} + */ + this.mimeType = ''; + + /** + * The expected response type. + * + * @type {('arraybuffer'|'blob'|'document'|'json'|'')} + * @default '' + */ + this.responseType = ''; + + } + + /** + * Starts loading from the given URL and pass the loaded response to the `onLoad()` callback. + * + * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. + * @param {function(any)} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} [onProgress] - Executed while the loading is in progress. + * @param {onErrorCallback} [onError] - Executed when errors occur. + * @return {any|undefined} The cached resource if available. + */ + load( url, onLoad, onProgress, onError ) { + + if ( url === undefined ) url = ''; + + if ( this.path !== undefined ) url = this.path + url; + + url = this.manager.resolveURL( url ); + + const cached = Cache.get( url ); + + if ( cached !== undefined ) { + + this.manager.itemStart( url ); + + setTimeout( () => { + + if ( onLoad ) onLoad( cached ); + + this.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + // Check if request is duplicate + + if ( loading[ url ] !== undefined ) { + + loading[ url ].push( { + + onLoad: onLoad, + onProgress: onProgress, + onError: onError + + } ); + + return; + + } + + // Initialise array for duplicate requests + loading[ url ] = []; + + loading[ url ].push( { + onLoad: onLoad, + onProgress: onProgress, + onError: onError, + } ); + + // create request + const req = new Request( url, { + headers: new Headers( this.requestHeader ), + credentials: this.withCredentials ? 'include' : 'same-origin', + // An abort controller could be added within a future PR + } ); + + // record states ( avoid data race ) + const mimeType = this.mimeType; + const responseType = this.responseType; + + // start the fetch + fetch( req ) + .then( response => { + + if ( response.status === 200 || response.status === 0 ) { + + // Some browsers return HTTP Status 0 when using non-http protocol + // e.g. 'file://' or 'data://'. Handle as success. + + if ( response.status === 0 ) { + + console.warn( 'THREE.FileLoader: HTTP Status 0 received.' ); + + } + + // Workaround: Checking if response.body === undefined for Alipay browser #23548 + + if ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) { + + return response; + + } + + const callbacks = loading[ url ]; + const reader = response.body.getReader(); + + // Nginx needs X-File-Size check + // https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content + const contentLength = response.headers.get( 'X-File-Size' ) || response.headers.get( 'Content-Length' ); + const total = contentLength ? parseInt( contentLength ) : 0; + const lengthComputable = total !== 0; + let loaded = 0; + + // periodically read data into the new stream tracking while download progress + const stream = new ReadableStream( { + start( controller ) { + + readData(); + + function readData() { + + reader.read().then( ( { done, value } ) => { + + if ( done ) { + + controller.close(); + + } else { + + loaded += value.byteLength; + + const event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } ); + for ( let i = 0, il = callbacks.length; i < il; i ++ ) { + + const callback = callbacks[ i ]; + if ( callback.onProgress ) callback.onProgress( event ); + + } + + controller.enqueue( value ); + readData(); + + } + + }, ( e ) => { + + controller.error( e ); + + } ); + + } + + } + + } ); + + return new Response( stream ); + + } else { + + throw new HttpError( `fetch for "${response.url}" responded with ${response.status}: ${response.statusText}`, response ); + + } + + } ) + .then( response => { + + switch ( responseType ) { + + case 'arraybuffer': + + return response.arrayBuffer(); + + case 'blob': + + return response.blob(); + + case 'document': + + return response.text() + .then( text => { + + const parser = new DOMParser(); + return parser.parseFromString( text, mimeType ); + + } ); + + case 'json': + + return response.json(); + + default: + + if ( mimeType === '' ) { + + return response.text(); + + } else { + + // sniff encoding + const re = /charset="?([^;"\s]*)"?/i; + const exec = re.exec( mimeType ); + const label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined; + const decoder = new TextDecoder( label ); + return response.arrayBuffer().then( ab => decoder.decode( ab ) ); + + } + + } + + } ) + .then( data => { + + // Add to cache only on HTTP success, so that we do not cache + // error response bodies as proper responses to requests. + Cache.add( url, data ); + + const callbacks = loading[ url ]; + delete loading[ url ]; + + for ( let i = 0, il = callbacks.length; i < il; i ++ ) { + + const callback = callbacks[ i ]; + if ( callback.onLoad ) callback.onLoad( data ); + + } + + } ) + .catch( err => { + + // Abort errors and other errors are handled the same + + const callbacks = loading[ url ]; + + if ( callbacks === undefined ) { + + // When onLoad was called and url was deleted in `loading` + this.manager.itemError( url ); + throw err; + + } + + delete loading[ url ]; + + for ( let i = 0, il = callbacks.length; i < il; i ++ ) { + + const callback = callbacks[ i ]; + if ( callback.onError ) callback.onError( err ); + + } + + this.manager.itemError( url ); + + } ) + .finally( () => { + + this.manager.itemEnd( url ); + + } ); + + this.manager.itemStart( url ); + + } + + /** + * Sets the expected response type. + * + * @param {('arraybuffer'|'blob'|'document'|'json'|'')} value - The response type. + * @return {FileLoader} A reference to this file loader. + */ + setResponseType( value ) { + + this.responseType = value; + return this; + + } + + /** + * Sets the expected mime type of the loaded file. + * + * @param {string} value - The mime type. + * @return {FileLoader} A reference to this file loader. + */ + setMimeType( value ) { + + this.mimeType = value; + return this; + + } + +} + +/** + * Class for loading animation clips in the JSON format. The files are internally + * loaded via {@link FileLoader}. + * + * ```js + * const loader = new THREE.AnimationLoader(); + * const animations = await loader.loadAsync( 'animations/animation.js' ); + * ``` + * + * @augments Loader + */ +class AnimationLoader extends Loader { + + /** + * Constructs a new animation loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + super( manager ); + + } + + /** + * Starts loading from the given URL and pass the loaded animations as an array + * holding instances of {@link AnimationClip} to the `onLoad()` callback. + * + * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. + * @param {function(Array)} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} onProgress - Executed while the loading is in progress. + * @param {onErrorCallback} onError - Executed when errors occur. + */ + load( url, onLoad, onProgress, onError ) { + + const scope = this; + + const loader = new FileLoader( this.manager ); + loader.setPath( this.path ); + loader.setRequestHeader( this.requestHeader ); + loader.setWithCredentials( this.withCredentials ); + loader.load( url, function ( text ) { + + try { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + } catch ( e ) { + + if ( onError ) { + + onError( e ); + + } else { + + console.error( e ); + + } + + scope.manager.itemError( url ); + + } + + }, onProgress, onError ); + + } + + /** + * Parses the given JSON object and returns an array of animation clips. + * + * @param {Object} json - The serialized animation clips. + * @return {Array} The parsed animation clips. + */ + parse( json ) { + + const animations = []; + + for ( let i = 0; i < json.length; i ++ ) { + + const clip = AnimationClip.parse( json[ i ] ); + + animations.push( clip ); + + } + + return animations; + + } + +} + +/** + * Abstract base class for loading compressed texture formats S3TC, ASTC or ETC. + * Textures are internally loaded via {@link FileLoader}. + * + * Derived classes have to implement the `parse()` method which holds the parsing + * for the respective format. + * + * @abstract + * @augments Loader + */ +class CompressedTextureLoader extends Loader { + + /** + * Constructs a new compressed texture loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + super( manager ); + + } + + /** + * Starts loading from the given URL and passes the loaded compressed texture + * to the `onLoad()` callback. The method also returns a new texture object which can + * directly be used for material creation. If you do it this way, the texture + * may pop up in your scene once the respective loading process is finished. + * + * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. + * @param {function(CompressedTexture)} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} onProgress - Executed while the loading is in progress. + * @param {onErrorCallback} onError - Executed when errors occur. + * @return {CompressedTexture} The compressed texture. + */ + load( url, onLoad, onProgress, onError ) { + + const scope = this; + + const images = []; + + const texture = new CompressedTexture(); + + const loader = new FileLoader( this.manager ); + loader.setPath( this.path ); + loader.setResponseType( 'arraybuffer' ); + loader.setRequestHeader( this.requestHeader ); + loader.setWithCredentials( scope.withCredentials ); + + let loaded = 0; + + function loadTexture( i ) { + + loader.load( url[ i ], function ( buffer ) { + + const texDatas = scope.parse( buffer, true ); + + images[ i ] = { + width: texDatas.width, + height: texDatas.height, + format: texDatas.format, + mipmaps: texDatas.mipmaps + }; + + loaded += 1; + + if ( loaded === 6 ) { + + if ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter; + + texture.image = images; + texture.format = texDatas.format; + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture ); + + } + + }, onProgress, onError ); + + } + + if ( Array.isArray( url ) ) { + + for ( let i = 0, il = url.length; i < il; ++ i ) { + + loadTexture( i ); + + } + + } else { + + // compressed cubemap texture stored in a single DDS file + + loader.load( url, function ( buffer ) { + + const texDatas = scope.parse( buffer, true ); + + if ( texDatas.isCubemap ) { + + const faces = texDatas.mipmaps.length / texDatas.mipmapCount; + + for ( let f = 0; f < faces; f ++ ) { + + images[ f ] = { mipmaps: [] }; + + for ( let i = 0; i < texDatas.mipmapCount; i ++ ) { + + images[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] ); + images[ f ].format = texDatas.format; + images[ f ].width = texDatas.width; + images[ f ].height = texDatas.height; + + } + + } + + texture.image = images; + + } else { + + texture.image.width = texDatas.width; + texture.image.height = texDatas.height; + texture.mipmaps = texDatas.mipmaps; + + } + + if ( texDatas.mipmapCount === 1 ) { + + texture.minFilter = LinearFilter; + + } + + texture.format = texDatas.format; + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture ); + + }, onProgress, onError ); + + } + + return texture; + + } + +} + +/** + * A loader for loading images. The class loads images with the HTML `Image` API. + * + * ```js + * const loader = new THREE.ImageLoader(); + * const image = await loader.loadAsync( 'image.png' ); + * ``` + * Please note that `ImageLoader` has dropped support for progress + * events in `r84`. For an `ImageLoader` that supports progress events, see + * [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-275785639}. + * + * @augments Loader + */ +class ImageLoader extends Loader { + + /** + * Constructs a new image loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + super( manager ); + + } + + /** + * Starts loading from the given URL and passes the loaded image + * to the `onLoad()` callback. The method also returns a new `Image` object which can + * directly be used for texture creation. If you do it this way, the texture + * may pop up in your scene once the respective loading process is finished. + * + * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. + * @param {function(Image)} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} onProgress - Unsupported in this loader. + * @param {onErrorCallback} onError - Executed when errors occur. + * @return {Image} The image. + */ + load( url, onLoad, onProgress, onError ) { + + if ( this.path !== undefined ) url = this.path + url; + + url = this.manager.resolveURL( url ); + + const scope = this; + + const cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + setTimeout( function () { + + if ( onLoad ) onLoad( cached ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + const image = createElementNS( 'img' ); + + function onImageLoad() { + + removeEventListeners(); + + Cache.add( url, this ); + + if ( onLoad ) onLoad( this ); + + scope.manager.itemEnd( url ); + + } + + function onImageError( event ) { + + removeEventListeners(); + + if ( onError ) onError( event ); + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } + + function removeEventListeners() { + + image.removeEventListener( 'load', onImageLoad, false ); + image.removeEventListener( 'error', onImageError, false ); + + } + + image.addEventListener( 'load', onImageLoad, false ); + image.addEventListener( 'error', onImageError, false ); + + if ( url.slice( 0, 5 ) !== 'data:' ) { + + if ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin; + + } + + scope.manager.itemStart( url ); + + image.src = url; + + return image; + + } + +} + +/** + * Class for loading cube textures. Images are internally loaded via {@link ImageLoader}. + * + * The loader returns an instance of {@link CubeTexture} and expects the cube map to + * be defined as six separate images representing the sides of a cube. Other cube map definitions + * like vertical and horizontal cross, column and row layouts are not supported. + * + * Note that, by convention, cube maps are specified in a coordinate system + * in which positive-x is to the right when looking up the positive-z axis -- + * in other words, using a left-handed coordinate system. Since three.js uses + * a right-handed coordinate system, environment maps used in three.js will + * have pos-x and neg-x swapped. + * + * The loaded cube texture is in sRGB color space. Meaning {@link Texture#colorSpace} + * is set to `SRGBColorSpace` by default. + * + * ```js + * const loader = new THREE.CubeTextureLoader().setPath( 'textures/cubeMaps/' ); + * const cubeTexture = await loader.loadAsync( [ + * 'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png' + * ] ); + * scene.background = cubeTexture; + * ``` + * + * @augments Loader + */ +class CubeTextureLoader extends Loader { + + /** + * Constructs a new cube texture loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + super( manager ); + + } + + /** + * Starts loading from the given URL and pass the fully loaded cube texture + * to the `onLoad()` callback. The method also returns a new cube texture object which can + * directly be used for material creation. If you do it this way, the cube texture + * may pop up in your scene once the respective loading process is finished. + * + * @param {Array} urls - Array of 6 URLs to images, one for each side of the + * cube texture. The urls should be specified in the following order: pos-x, + * neg-x, pos-y, neg-y, pos-z, neg-z. An array of data URIs are allowed as well. + * @param {function(CubeTexture)} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} onProgress - Unsupported in this loader. + * @param {onErrorCallback} onError - Executed when errors occur. + * @return {CubeTexture} The cube texture. + */ + load( urls, onLoad, onProgress, onError ) { + + const texture = new CubeTexture(); + texture.colorSpace = SRGBColorSpace; + + const loader = new ImageLoader( this.manager ); + loader.setCrossOrigin( this.crossOrigin ); + loader.setPath( this.path ); + + let loaded = 0; + + function loadTexture( i ) { + + loader.load( urls[ i ], function ( image ) { + + texture.images[ i ] = image; + + loaded ++; + + if ( loaded === 6 ) { + + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture ); + + } + + }, undefined, onError ); + + } + + for ( let i = 0; i < urls.length; ++ i ) { + + loadTexture( i ); + + } + + return texture; + + } + +} + +/** + * Abstract base class for loading binary texture formats RGBE, EXR or TGA. + * Textures are internally loaded via {@link FileLoader}. + * + * Derived classes have to implement the `parse()` method which holds the parsing + * for the respective format. + * + * @abstract + * @augments Loader + */ +class DataTextureLoader extends Loader { + + /** + * Constructs a new data texture loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + super( manager ); + + } + + /** + * Starts loading from the given URL and passes the loaded data texture + * to the `onLoad()` callback. The method also returns a new texture object which can + * directly be used for material creation. If you do it this way, the texture + * may pop up in your scene once the respective loading process is finished. + * + * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. + * @param {function(DataTexture)} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} onProgress - Executed while the loading is in progress. + * @param {onErrorCallback} onError - Executed when errors occur. + * @return {DataTexture} The data texture. + */ + load( url, onLoad, onProgress, onError ) { + + const scope = this; + + const texture = new DataTexture(); + + const loader = new FileLoader( this.manager ); + loader.setResponseType( 'arraybuffer' ); + loader.setRequestHeader( this.requestHeader ); + loader.setPath( this.path ); + loader.setWithCredentials( scope.withCredentials ); + loader.load( url, function ( buffer ) { + + let texData; + + try { + + texData = scope.parse( buffer ); + + } catch ( error ) { + + if ( onError !== undefined ) { + + onError( error ); + + } else { + + console.error( error ); + return; + + } + + } + + if ( texData.image !== undefined ) { + + texture.image = texData.image; + + } else if ( texData.data !== undefined ) { + + texture.image.width = texData.width; + texture.image.height = texData.height; + texture.image.data = texData.data; + + } + + texture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping; + texture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping; + + texture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter; + texture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter; + + texture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1; + + if ( texData.colorSpace !== undefined ) { + + texture.colorSpace = texData.colorSpace; + + } + + if ( texData.flipY !== undefined ) { + + texture.flipY = texData.flipY; + + } + + if ( texData.format !== undefined ) { + + texture.format = texData.format; + + } + + if ( texData.type !== undefined ) { + + texture.type = texData.type; + + } + + if ( texData.mipmaps !== undefined ) { + + texture.mipmaps = texData.mipmaps; + texture.minFilter = LinearMipmapLinearFilter; // presumably... + + } + + if ( texData.mipmapCount === 1 ) { + + texture.minFilter = LinearFilter; + + } + + if ( texData.generateMipmaps !== undefined ) { + + texture.generateMipmaps = texData.generateMipmaps; + + } + + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture, texData ); + + }, onProgress, onError ); + + + return texture; + + } + +} + +/** + * Class for loading textures. Images are internally + * loaded via {@link ImageLoader}. + * + * ```js + * const loader = new THREE.TextureLoader(); + * const texture = await loader.loadAsync( 'textures/land_ocean_ice_cloud_2048.jpg' ); + * + * const material = new THREE.MeshBasicMaterial( { map:texture } ); + * ``` + * Please note that `TextureLoader` has dropped support for progress + * events in `r84`. For a `TextureLoader` that supports progress events, see + * [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-293260145}. + * + * @augments Loader + */ +class TextureLoader extends Loader { + + /** + * Constructs a new texture loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + super( manager ); + + } + + /** + * Starts loading from the given URL and pass the fully loaded texture + * to the `onLoad()` callback. The method also returns a new texture object which can + * directly be used for material creation. If you do it this way, the texture + * may pop up in your scene once the respective loading process is finished. + * + * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. + * @param {function(Texture)} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} onProgress - Unsupported in this loader. + * @param {onErrorCallback} onError - Executed when errors occur. + * @return {Texture} The texture. + */ + load( url, onLoad, onProgress, onError ) { + + const texture = new Texture(); + + const loader = new ImageLoader( this.manager ); + loader.setCrossOrigin( this.crossOrigin ); + loader.setPath( this.path ); + + loader.load( url, function ( image ) { + + texture.image = image; + texture.needsUpdate = true; + + if ( onLoad !== undefined ) { + + onLoad( texture ); + + } + + }, onProgress, onError ); + + return texture; + + } + +} + +/** + * Abstract base class for lights - all other light types inherit the + * properties and methods described here. + * + * @abstract + * @augments Object3D + */ +class Light extends Object3D { + + /** + * Constructs a new light. + * + * @param {(number|Color|string)} [color=0xffffff] - The light's color. + * @param {number} [intensity=1] - The light's strength/intensity. + */ + constructor( color, intensity = 1 ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isLight = true; + + this.type = 'Light'; + + /** + * The light's color. + * + * @type {Color} + */ + this.color = new Color( color ); + + /** + * The light's intensity. + * + * @type {number} + * @default 1 + */ + this.intensity = intensity; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + // Empty here in base class; some subclasses override. + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + this.color.copy( source.color ); + this.intensity = source.intensity; + + return this; + + } + + toJSON( meta ) { + + const data = super.toJSON( meta ); + + data.object.color = this.color.getHex(); + data.object.intensity = this.intensity; + + if ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex(); + + if ( this.distance !== undefined ) data.object.distance = this.distance; + if ( this.angle !== undefined ) data.object.angle = this.angle; + if ( this.decay !== undefined ) data.object.decay = this.decay; + if ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra; + + if ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON(); + if ( this.target !== undefined ) data.object.target = this.target.uuid; + + return data; + + } + +} + +/** + * A light source positioned directly above the scene, with color fading from + * the sky color to the ground color. + * + * This light cannot be used to cast shadows. + * + * ```js + * const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 ); + * scene.add( light ); + * ``` + * + * @augments Light + */ +class HemisphereLight extends Light { + + /** + * Constructs a new hemisphere light. + * + * @param {(number|Color|string)} [skyColor=0xffffff] - The light's sky color. + * @param {(number|Color|string)} [groundColor=0xffffff] - The light's ground color. + * @param {number} [intensity=1] - The light's strength/intensity. + */ + constructor( skyColor, groundColor, intensity ) { + + super( skyColor, intensity ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isHemisphereLight = true; + + this.type = 'HemisphereLight'; + + this.position.copy( Object3D.DEFAULT_UP ); + this.updateMatrix(); + + /** + * The light's ground color. + * + * @type {Color} + */ + this.groundColor = new Color( groundColor ); + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + this.groundColor.copy( source.groundColor ); + + return this; + + } + +} + +const _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4(); +const _lightPositionWorld$1 = /*@__PURE__*/ new Vector3(); +const _lookTarget$1 = /*@__PURE__*/ new Vector3(); + +/** + * Abstract base class for light shadow classes. These classes + * represent the shadow configuration for different light types. + * + * @abstract + */ +class LightShadow { + + /** + * Constructs a new light shadow. + * + * @param {Camera} camera - The light's view of the world. + */ + constructor( camera ) { + + /** + * The light's view of the world. + * + * @type {Camera} + */ + this.camera = camera; + + /** + * The intensity of the shadow. The default is `1`. + * Valid values are in the range `[0, 1]`. + * + * @type {number} + * @default 1 + */ + this.intensity = 1; + + /** + * Shadow map bias, how much to add or subtract from the normalized depth + * when deciding whether a surface is in shadow. + * + * The default is `0`. Very tiny adjustments here (in the order of `0.0001`) + * may help reduce artifacts in shadows. + * + * @type {number} + * @default 0 + */ + this.bias = 0; + + /** + * Defines how much the position used to query the shadow map is offset along + * the object normal. The default is `0`. Increasing this value can be used to + * reduce shadow acne especially in large scenes where light shines onto + * geometry at a shallow angle. The cost is that shadows may appear distorted. + * + * @type {number} + * @default 0 + */ + this.normalBias = 0; + + /** + * Setting this to values greater than 1 will blur the edges of the shadow. + * High values will cause unwanted banding effects in the shadows - a greater + * map size will allow for a higher value to be used here before these effects + * become visible. + * + * The property has no effect when the shadow map type is `PCFSoftShadowMap` and + * and it is recommended to increase softness by decreasing the shadow map size instead. + * + * The property has no effect when the shadow map type is `BasicShadowMap`. + * + * @type {number} + * @default 1 + */ + this.radius = 1; + + /** + * The amount of samples to use when blurring a VSM shadow map. + * + * @type {number} + * @default 8 + */ + this.blurSamples = 8; + + /** + * Defines the width and height of the shadow map. Higher values give better quality + * shadows at the cost of computation time. Values must be powers of two. + * + * @type {Vector2} + * @default (512,512) + */ + this.mapSize = new Vector2( 512, 512 ); + + /** + * The depth map generated using the internal camera; a location beyond a + * pixel's depth is in shadow. Computed internally during rendering. + * + * @type {?RenderTarget} + * @default null + */ + this.map = null; + + /** + * The distribution map generated using the internal camera; an occlusion is + * calculated based on the distribution of depths. Computed internally during + * rendering. + * + * @type {?RenderTarget} + * @default null + */ + this.mapPass = null; + + /** + * Model to shadow camera space, to compute location and depth in shadow map. + * This is computed internally during rendering. + * + * @type {Matrix4} + */ + this.matrix = new Matrix4(); + + /** + * Enables automatic updates of the light's shadow. If you do not require dynamic + * lighting / shadows, you may set this to `false`. + * + * @type {boolean} + * @default true + */ + this.autoUpdate = true; + + /** + * When set to `true`, shadow maps will be updated in the next `render` call. + * If you have set {@link LightShadow#autoUpdate} to `false`, you will need to + * set this property to `true` and then make a render call to update the light's shadow. + * + * @type {boolean} + * @default false + */ + this.needsUpdate = false; + + this._frustum = new Frustum(); + this._frameExtents = new Vector2( 1, 1 ); + + this._viewportCount = 1; + + this._viewports = [ + + new Vector4( 0, 0, 1, 1 ) + + ]; + + } + + /** + * Used internally by the renderer to get the number of viewports that need + * to be rendered for this shadow. + * + * @return {number} The viewport count. + */ + getViewportCount() { + + return this._viewportCount; + + } + + /** + * Gets the shadow cameras frustum. Used internally by the renderer to cull objects. + * + * @return {Frustum} The shadow camera frustum. + */ + getFrustum() { + + return this._frustum; + + } + + /** + * Update the matrices for the camera and shadow, used internally by the renderer. + * + * @param {Light} light - The light for which the shadow is being rendered. + */ + updateMatrices( light ) { + + const shadowCamera = this.camera; + const shadowMatrix = this.matrix; + + _lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld ); + shadowCamera.position.copy( _lightPositionWorld$1 ); + + _lookTarget$1.setFromMatrixPosition( light.target.matrixWorld ); + shadowCamera.lookAt( _lookTarget$1 ); + shadowCamera.updateMatrixWorld(); + + _projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse ); + this._frustum.setFromProjectionMatrix( _projScreenMatrix$1 ); + + shadowMatrix.set( + 0.5, 0.0, 0.0, 0.5, + 0.0, 0.5, 0.0, 0.5, + 0.0, 0.0, 0.5, 0.5, + 0.0, 0.0, 0.0, 1.0 + ); + + shadowMatrix.multiply( _projScreenMatrix$1 ); + + } + + /** + * Returns a viewport definition for the given viewport index. + * + * @param {number} viewportIndex - The viewport index. + * @return {Vector4} The viewport. + */ + getViewport( viewportIndex ) { + + return this._viewports[ viewportIndex ]; + + } + + /** + * Returns the frame extends. + * + * @return {Vector2} The frame extends. + */ + getFrameExtents() { + + return this._frameExtents; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + if ( this.map ) { + + this.map.dispose(); + + } + + if ( this.mapPass ) { + + this.mapPass.dispose(); + + } + + } + + /** + * Copies the values of the given light shadow instance to this instance. + * + * @param {LightShadow} source - The light shadow to copy. + * @return {LightShadow} A reference to this light shadow instance. + */ + copy( source ) { + + this.camera = source.camera.clone(); + + this.intensity = source.intensity; + + this.bias = source.bias; + this.radius = source.radius; + + this.mapSize.copy( source.mapSize ); + + return this; + + } + + /** + * Returns a new light shadow instance with copied values from this instance. + * + * @return {LightShadow} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + + /** + * Serializes the light shadow into JSON. + * + * @return {Object} A JSON object representing the serialized light shadow. + * @see {@link ObjectLoader#parse} + */ + toJSON() { + + const object = {}; + + if ( this.intensity !== 1 ) object.intensity = this.intensity; + if ( this.bias !== 0 ) object.bias = this.bias; + if ( this.normalBias !== 0 ) object.normalBias = this.normalBias; + if ( this.radius !== 1 ) object.radius = this.radius; + if ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray(); + + object.camera = this.camera.toJSON( false ).object; + delete object.camera.matrix; + + return object; + + } + +} + +/** + * Represents the shadow configuration of directional lights. + * + * @augments LightShadow + */ +class SpotLightShadow extends LightShadow { + + /** + * Constructs a new spot light shadow. + */ + constructor() { + + super( new PerspectiveCamera( 50, 1, 0.5, 500 ) ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isSpotLightShadow = true; + + /** + * Used to focus the shadow camera. The camera's field of view is set as a + * percentage of the spotlight's field-of-view. Range is `[0, 1]`. + * + * @type {number} + * @default 1 + */ + this.focus = 1; + + } + + updateMatrices( light ) { + + const camera = this.camera; + + const fov = RAD2DEG * 2 * light.angle * this.focus; + const aspect = this.mapSize.width / this.mapSize.height; + const far = light.distance || camera.far; + + if ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) { + + camera.fov = fov; + camera.aspect = aspect; + camera.far = far; + camera.updateProjectionMatrix(); + + } + + super.updateMatrices( light ); + + } + + copy( source ) { + + super.copy( source ); + + this.focus = source.focus; + + return this; + + } + +} + +/** + * This light gets emitted from a single point in one direction, along a cone + * that increases in size the further from the light it gets. + * + * This light can cast shadows - see the {@link SpotLightShadow} for details. + * + * ```js + * // white spotlight shining from the side, modulated by a texture + * const spotLight = new THREE.SpotLight( 0xffffff ); + * spotLight.position.set( 100, 1000, 100 ); + * spotLight.map = new THREE.TextureLoader().load( url ); + * + * spotLight.castShadow = true; + * spotLight.shadow.mapSize.width = 1024; + * spotLight.shadow.mapSize.height = 1024; + * spotLight.shadow.camera.near = 500; + * spotLight.shadow.camera.far = 4000; + * spotLight.shadow.camera.fov = 30;s + * ``` + * + * @augments Light + */ +class SpotLight extends Light { + + /** + * Constructs a new spot light. + * + * @param {(number|Color|string)} [color=0xffffff] - The light's color. + * @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd). + * @param {number} [distance=0] - Maximum range of the light. `0` means no limit. + * @param {number} [angle=Math.PI/3] - Maximum angle of light dispersion from its direction whose upper bound is `Math.PI/2`. + * @param {number} [penumbra=0] - Percent of the spotlight cone that is attenuated due to penumbra. Value range is `[0,1]`. + * @param {number} [decay=2] - The amount the light dims along the distance of the light. + */ + constructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) { + + super( color, intensity ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isSpotLight = true; + + this.type = 'SpotLight'; + + this.position.copy( Object3D.DEFAULT_UP ); + this.updateMatrix(); + + /** + * The spot light points from its position to the + * target's position. + * + * For the target's position to be changed to anything other + * than the default, it must be added to the scene. + * + * It is also possible to set the target to be another 3D object + * in the scene. The light will now track the target object. + * + * @type {Object3D} + */ + this.target = new Object3D(); + + /** + * Maximum range of the light. `0` means no limit. + * + * @type {number} + * @default 0 + */ + this.distance = distance; + + /** + * Maximum angle of light dispersion from its direction whose upper bound is `Math.PI/2`. + * + * @type {number} + * @default Math.PI/3 + */ + this.angle = angle; + + /** + * Percent of the spotlight cone that is attenuated due to penumbra. + * Value range is `[0,1]`. + * + * @type {number} + * @default 0 + */ + this.penumbra = penumbra; + + /** + * The amount the light dims along the distance of the light. In context of + * physically-correct rendering the default value should not be changed. + * + * @type {number} + * @default 2 + */ + this.decay = decay; + + /** + * A texture used to modulate the color of the light. The spot light + * color is mixed with the RGB value of this texture, with a ratio + * corresponding to its alpha value. The cookie-like masking effect is + * reproduced using pixel values (0, 0, 0, 1-cookie_value). + * + * *Warning*: This property is disabled if {@link Object3D#castShadow} is set to `false`. + * + * @type {?Texture} + * @default null + */ + this.map = null; + + /** + * This property holds the light's shadow configuration. + * + * @type {SpotLightShadow} + */ + this.shadow = new SpotLightShadow(); + + } + + /** + * The light's power. Power is the luminous power of the light measured in lumens (lm). + * Changing the power will also change the light's intensity. + * + * @type {number} + */ + get power() { + + // compute the light's luminous power (in lumens) from its intensity (in candela) + // by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd) + return this.intensity * Math.PI; + + } + + set power( power ) { + + // set the light's intensity (in candela) from the desired luminous power (in lumens) + this.intensity = power / Math.PI; + + } + + dispose() { + + this.shadow.dispose(); + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + this.distance = source.distance; + this.angle = source.angle; + this.penumbra = source.penumbra; + this.decay = source.decay; + + this.target = source.target.clone(); + + this.shadow = source.shadow.clone(); + + return this; + + } + +} + +const _projScreenMatrix = /*@__PURE__*/ new Matrix4(); +const _lightPositionWorld = /*@__PURE__*/ new Vector3(); +const _lookTarget = /*@__PURE__*/ new Vector3(); + +/** + * Represents the shadow configuration of point lights. + * + * @augments LightShadow + */ +class PointLightShadow extends LightShadow { + + /** + * Constructs a new point light shadow. + */ + constructor() { + + super( new PerspectiveCamera( 90, 1, 0.5, 500 ) ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isPointLightShadow = true; + + this._frameExtents = new Vector2( 4, 2 ); + + this._viewportCount = 6; + + this._viewports = [ + // These viewports map a cube-map onto a 2D texture with the + // following orientation: + // + // xzXZ + // y Y + // + // X - Positive x direction + // x - Negative x direction + // Y - Positive y direction + // y - Negative y direction + // Z - Positive z direction + // z - Negative z direction + + // positive X + new Vector4( 2, 1, 1, 1 ), + // negative X + new Vector4( 0, 1, 1, 1 ), + // positive Z + new Vector4( 3, 1, 1, 1 ), + // negative Z + new Vector4( 1, 1, 1, 1 ), + // positive Y + new Vector4( 3, 0, 1, 1 ), + // negative Y + new Vector4( 1, 0, 1, 1 ) + ]; + + this._cubeDirections = [ + new Vector3( 1, 0, 0 ), new Vector3( -1, 0, 0 ), new Vector3( 0, 0, 1 ), + new Vector3( 0, 0, -1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, -1, 0 ) + ]; + + this._cubeUps = [ + new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), + new Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ), new Vector3( 0, 0, -1 ) + ]; + + } + + /** + * Update the matrices for the camera and shadow, used internally by the renderer. + * + * @param {Light} light - The light for which the shadow is being rendered. + * @param {number} [viewportIndex=0] - The viewport index. + */ + updateMatrices( light, viewportIndex = 0 ) { + + const camera = this.camera; + const shadowMatrix = this.matrix; + + const far = light.distance || camera.far; + + if ( far !== camera.far ) { + + camera.far = far; + camera.updateProjectionMatrix(); + + } + + _lightPositionWorld.setFromMatrixPosition( light.matrixWorld ); + camera.position.copy( _lightPositionWorld ); + + _lookTarget.copy( camera.position ); + _lookTarget.add( this._cubeDirections[ viewportIndex ] ); + camera.up.copy( this._cubeUps[ viewportIndex ] ); + camera.lookAt( _lookTarget ); + camera.updateMatrixWorld(); + + shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z ); + + _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse ); + this._frustum.setFromProjectionMatrix( _projScreenMatrix ); + + } + +} + +/** + * A light that gets emitted from a single point in all directions. A common + * use case for this is to replicate the light emitted from a bare + * lightbulb. + * + * This light can cast shadows - see the {@link PointLightShadow} for details. + * + * ```js + * const light = new THREE.PointLight( 0xff0000, 1, 100 ); + * light.position.set( 50, 50, 50 ); + * scene.add( light ); + * ``` + * + * @augments Light + */ +class PointLight extends Light { + + /** + * Constructs a new point light. + * + * @param {(number|Color|string)} [color=0xffffff] - The light's color. + * @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd). + * @param {number} [distance=0] - Maximum range of the light. `0` means no limit. + * @param {number} [decay=2] - The amount the light dims along the distance of the light. + */ + constructor( color, intensity, distance = 0, decay = 2 ) { + + super( color, intensity ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isPointLight = true; + + this.type = 'PointLight'; + + /** + * When distance is zero, light will attenuate according to inverse-square + * law to infinite distance. When distance is non-zero, light will attenuate + * according to inverse-square law until near the distance cutoff, where it + * will then attenuate quickly and smoothly to 0. Inherently, cutoffs are not + * physically correct. + * + * @type {number} + * @default 0 + */ + this.distance = distance; + + /** + * The amount the light dims along the distance of the light. In context of + * physically-correct rendering the default value should not be changed. + * + * @type {number} + * @default 2 + */ + this.decay = decay; + + /** + * This property holds the light's shadow configuration. + * + * @type {PointLightShadow} + */ + this.shadow = new PointLightShadow(); + + } + + /** + * The light's power. Power is the luminous power of the light measured in lumens (lm). + * Changing the power will also change the light's intensity. + * + * @type {number} + */ + get power() { + + // compute the light's luminous power (in lumens) from its intensity (in candela) + // for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd) + return this.intensity * 4 * Math.PI; + + } + + set power( power ) { + + // set the light's intensity (in candela) from the desired luminous power (in lumens) + this.intensity = power / ( 4 * Math.PI ); + + } + + dispose() { + + this.shadow.dispose(); + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + this.distance = source.distance; + this.decay = source.decay; + + this.shadow = source.shadow.clone(); + + return this; + + } + +} + +/** + * Camera that uses [orthographic projection]{@link https://en.wikipedia.org/wiki/Orthographic_projection}. + * + * In this projection mode, an object's size in the rendered image stays + * constant regardless of its distance from the camera. This can be useful + * for rendering 2D scenes and UI elements, amongst other things. + * + * ```js + * const camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 ); + * scene.add( camera ); + * ``` + * + * @augments Camera + */ +class OrthographicCamera extends Camera { + + /** + * Constructs a new orthographic camera. + * + * @param {number} [left=-1] - The left plane of the camera's frustum. + * @param {number} [right=1] - The right plane of the camera's frustum. + * @param {number} [top=1] - The top plane of the camera's frustum. + * @param {number} [bottom=-1] - The bottom plane of the camera's frustum. + * @param {number} [near=0.1] - The camera's near plane. + * @param {number} [far=2000] - The camera's far plane. + */ + constructor( left = -1, right = 1, top = 1, bottom = -1, near = 0.1, far = 2000 ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isOrthographicCamera = true; + + this.type = 'OrthographicCamera'; + + /** + * The zoom factor of the camera. + * + * @type {number} + * @default 1 + */ + this.zoom = 1; + + /** + * Represents the frustum window specification. This property should not be edited + * directly but via {@link PerspectiveCamera#setViewOffset} and {@link PerspectiveCamera#clearViewOffset}. + * + * @type {?Object} + * @default null + */ + this.view = null; + + /** + * The left plane of the camera's frustum. + * + * @type {number} + * @default -1 + */ + this.left = left; + + /** + * The right plane of the camera's frustum. + * + * @type {number} + * @default 1 + */ + this.right = right; + + /** + * The top plane of the camera's frustum. + * + * @type {number} + * @default 1 + */ + this.top = top; + + /** + * The bottom plane of the camera's frustum. + * + * @type {number} + * @default -1 + */ + this.bottom = bottom; + + /** + * The camera's near plane. The valid range is greater than `0` + * and less than the current value of {@link OrthographicCamera#far}. + * + * Note that, unlike for the {@link PerspectiveCamera}, `0` is a + * valid value for an orthographic camera's near plane. + * + * @type {number} + * @default 0.1 + */ + this.near = near; + + /** + * The camera's far plane. Must be greater than the + * current value of {@link OrthographicCamera#near}. + * + * @type {number} + * @default 2000 + */ + this.far = far; + + this.updateProjectionMatrix(); + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + this.left = source.left; + this.right = source.right; + this.top = source.top; + this.bottom = source.bottom; + this.near = source.near; + this.far = source.far; + + this.zoom = source.zoom; + this.view = source.view === null ? null : Object.assign( {}, source.view ); + + return this; + + } + + /** + * Sets an offset in a larger frustum. This is useful for multi-window or + * multi-monitor/multi-machine setups. + * + * @param {number} fullWidth - The full width of multiview setup. + * @param {number} fullHeight - The full height of multiview setup. + * @param {number} x - The horizontal offset of the subcamera. + * @param {number} y - The vertical offset of the subcamera. + * @param {number} width - The width of subcamera. + * @param {number} height - The height of subcamera. + * @see {@link PerspectiveCamera#setViewOffset} + */ + setViewOffset( fullWidth, fullHeight, x, y, width, height ) { + + if ( this.view === null ) { + + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + + } + + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + + this.updateProjectionMatrix(); + + } + + /** + * Removes the view offset from the projection matrix. + */ + clearViewOffset() { + + if ( this.view !== null ) { + + this.view.enabled = false; + + } + + this.updateProjectionMatrix(); + + } + + /** + * Updates the camera's projection matrix. Must be called after any change of + * camera properties. + */ + updateProjectionMatrix() { + + const dx = ( this.right - this.left ) / ( 2 * this.zoom ); + const dy = ( this.top - this.bottom ) / ( 2 * this.zoom ); + const cx = ( this.right + this.left ) / 2; + const cy = ( this.top + this.bottom ) / 2; + + let left = cx - dx; + let right = cx + dx; + let top = cy + dy; + let bottom = cy - dy; + + if ( this.view !== null && this.view.enabled ) { + + const scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom; + const scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom; + + left += scaleW * this.view.offsetX; + right = left + scaleW * this.view.width; + top -= scaleH * this.view.offsetY; + bottom = top - scaleH * this.view.height; + + } + + this.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem ); + + this.projectionMatrixInverse.copy( this.projectionMatrix ).invert(); + + } + + toJSON( meta ) { + + const data = super.toJSON( meta ); + + data.object.zoom = this.zoom; + data.object.left = this.left; + data.object.right = this.right; + data.object.top = this.top; + data.object.bottom = this.bottom; + data.object.near = this.near; + data.object.far = this.far; + + if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); + + return data; + + } + +} + +/** + * Represents the shadow configuration of directional lights. + * + * @augments LightShadow + */ +class DirectionalLightShadow extends LightShadow { + + /** + * Constructs a new directional light shadow. + */ + constructor() { + + super( new OrthographicCamera( -5, 5, 5, -5, 0.5, 500 ) ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isDirectionalLightShadow = true; + + } + +} + +/** + * A light that gets emitted in a specific direction. This light will behave + * as though it is infinitely far away and the rays produced from it are all + * parallel. The common use case for this is to simulate daylight; the sun is + * far enough away that its position can be considered to be infinite, and + * all light rays coming from it are parallel. + * + * A common point of confusion for directional lights is that setting the + * rotation has no effect. This is because three.js's DirectionalLight is the + * equivalent to what is often called a 'Target Direct Light' in other + * applications. + * + * This means that its direction is calculated as pointing from the light's + * {@link Object3D#position} to the {@link DirectionalLight#target} position + * (as opposed to a 'Free Direct Light' that just has a rotation + * component). + * + * This light can cast shadows - see the {@link DirectionalLightShadow} for details. + * + * ```js + * // White directional light at half intensity shining from the top. + * const directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 ); + * scene.add( directionalLight ); + * ``` + * + * @augments Light + */ +class DirectionalLight extends Light { + + /** + * Constructs a new directional light. + * + * @param {(number|Color|string)} [color=0xffffff] - The light's color. + * @param {number} [intensity=1] - The light's strength/intensity. + */ + constructor( color, intensity ) { + + super( color, intensity ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isDirectionalLight = true; + + this.type = 'DirectionalLight'; + + this.position.copy( Object3D.DEFAULT_UP ); + this.updateMatrix(); + + /** + * The directional light points from its position to the + * target's position. + * + * For the target's position to be changed to anything other + * than the default, it must be added to the scene. + * + * It is also possible to set the target to be another 3D object + * in the scene. The light will now track the target object. + * + * @type {Object3D} + */ + this.target = new Object3D(); + + /** + * This property holds the light's shadow configuration. + * + * @type {DirectionalLightShadow} + */ + this.shadow = new DirectionalLightShadow(); + + } + + dispose() { + + this.shadow.dispose(); + + } + + copy( source ) { + + super.copy( source ); + + this.target = source.target.clone(); + this.shadow = source.shadow.clone(); + + return this; + + } + +} + +/** + * This light globally illuminates all objects in the scene equally. + * + * It cannot be used to cast shadows as it does not have a direction. + * + * ```js + * const light = new THREE.AmbientLight( 0x404040 ); // soft white light + * scene.add( light ); + * ``` + * + * @augments Light + */ +class AmbientLight extends Light { + + /** + * Constructs a new ambient light. + * + * @param {(number|Color|string)} [color=0xffffff] - The light's color. + * @param {number} [intensity=1] - The light's strength/intensity. + */ + constructor( color, intensity ) { + + super( color, intensity ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isAmbientLight = true; + + this.type = 'AmbientLight'; + + } + +} + +/** + * This class emits light uniformly across the face a rectangular plane. + * This light type can be used to simulate light sources such as bright + * windows or strip lighting. + * + * Important Notes: + * + * - There is no shadow support. + * - Only PBR materials are supported. + * - You have to include `RectAreaLightUniformsLib` (`WebGLRenderer`) or `RectAreaLightTexturesLib` (`WebGPURenderer`) + * into your app and init the uniforms/textures. + * + * ```js + * RectAreaLightUniformsLib.init(); // only relevant for WebGLRenderer + * THREE.RectAreaLightNode.setLTC( RectAreaLightTexturesLib.init() ); // only relevant for WebGPURenderer + * + * const intensity = 1; const width = 10; const height = 10; + * const rectLight = new THREE.RectAreaLight( 0xffffff, intensity, width, height ); + * rectLight.position.set( 5, 5, 0 ); + * rectLight.lookAt( 0, 0, 0 ); + * scene.add( rectLight ) + * ``` + * + * @augments Light + */ +class RectAreaLight extends Light { + + /** + * Constructs a new area light. + * + * @param {(number|Color|string)} [color=0xffffff] - The light's color. + * @param {number} [intensity=1] - The light's strength/intensity. + * @param {number} [width=10] - The width of the light. + * @param {number} [height=10] - The height of the light. + */ + constructor( color, intensity, width = 10, height = 10 ) { + + super( color, intensity ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isRectAreaLight = true; + + this.type = 'RectAreaLight'; + + /** + * The width of the light. + * + * @type {number} + * @default 10 + */ + this.width = width; + + /** + * The height of the light. + * + * @type {number} + * @default 10 + */ + this.height = height; + + } + + /** + * The light's power. Power is the luminous power of the light measured in lumens (lm). + * Changing the power will also change the light's intensity. + * + * @type {number} + */ + get power() { + + // compute the light's luminous power (in lumens) from its intensity (in nits) + return this.intensity * this.width * this.height * Math.PI; + + } + + set power( power ) { + + // set the light's intensity (in nits) from the desired luminous power (in lumens) + this.intensity = power / ( this.width * this.height * Math.PI ); + + } + + copy( source ) { + + super.copy( source ); + + this.width = source.width; + this.height = source.height; + + return this; + + } + + toJSON( meta ) { + + const data = super.toJSON( meta ); + + data.object.width = this.width; + data.object.height = this.height; + + return data; + + } + +} + +/** + * Represents a third-order spherical harmonics (SH). Light probes use this class + * to encode lighting information. + * + * - Primary reference: {@link https://graphics.stanford.edu/papers/envmap/envmap.pdf} + * - Secondary reference: {@link https://www.ppsloan.org/publications/StupidSH36.pdf} + */ +class SphericalHarmonics3 { + + /** + * Constructs a new spherical harmonics. + */ + constructor() { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isSphericalHarmonics3 = true; + + /** + * An array holding the (9) SH coefficients. + * + * @type {Array} + */ + this.coefficients = []; + + for ( let i = 0; i < 9; i ++ ) { + + this.coefficients.push( new Vector3() ); + + } + + } + + /** + * Sets the given SH coefficients to this instance by copying + * the values. + * + * @param {Array} coefficients - The SH coefficients. + * @return {SphericalHarmonics3} A reference to this spherical harmonics. + */ + set( coefficients ) { + + for ( let i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].copy( coefficients[ i ] ); + + } + + return this; + + } + + /** + * Sets all SH coefficients to `0`. + * + * @return {SphericalHarmonics3} A reference to this spherical harmonics. + */ + zero() { + + for ( let i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].set( 0, 0, 0 ); + + } + + return this; + + } + + /** + * Returns the radiance in the direction of the given normal. + * + * @param {Vector3} normal - The normal vector (assumed to be unit length) + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The radiance. + */ + getAt( normal, target ) { + + // normal is assumed to be unit length + + const x = normal.x, y = normal.y, z = normal.z; + + const coeff = this.coefficients; + + // band 0 + target.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 ); + + // band 1 + target.addScaledVector( coeff[ 1 ], 0.488603 * y ); + target.addScaledVector( coeff[ 2 ], 0.488603 * z ); + target.addScaledVector( coeff[ 3 ], 0.488603 * x ); + + // band 2 + target.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) ); + target.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) ); + target.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) ); + target.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) ); + target.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) ); + + return target; + + } + + /** + * Returns the irradiance (radiance convolved with cosine lobe) in the + * direction of the given normal. + * + * @param {Vector3} normal - The normal vector (assumed to be unit length) + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The irradiance. + */ + getIrradianceAt( normal, target ) { + + // normal is assumed to be unit length + + const x = normal.x, y = normal.y, z = normal.z; + + const coeff = this.coefficients; + + // band 0 + target.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095 + + // band 1 + target.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603 + target.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z ); + target.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x ); + + // band 2 + target.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548 + target.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z ); + target.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3 + target.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z ); + target.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274 + + return target; + + } + + /** + * Adds the given SH to this instance. + * + * @param {SphericalHarmonics3} sh - The SH to add. + * @return {SphericalHarmonics3} A reference to this spherical harmonics. + */ + add( sh ) { + + for ( let i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].add( sh.coefficients[ i ] ); + + } + + return this; + + } + + /** + * A convenience method for performing {@link SphericalHarmonics3#add} and + * {@link SphericalHarmonics3#scale} at once. + * + * @param {SphericalHarmonics3} sh - The SH to add. + * @param {number} s - The scale factor. + * @return {SphericalHarmonics3} A reference to this spherical harmonics. + */ + addScaledSH( sh, s ) { + + for ( let i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s ); + + } + + return this; + + } + + /** + * Scales this SH by the given scale factor. + * + * @param {number} s - The scale factor. + * @return {SphericalHarmonics3} A reference to this spherical harmonics. + */ + scale( s ) { + + for ( let i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].multiplyScalar( s ); + + } + + return this; + + } + + /** + * Linear interpolates between the given SH and this instance by the given + * alpha factor. + * + * @param {SphericalHarmonics3} sh - The SH to interpolate with. + * @param {number} alpha - The alpha factor. + * @return {SphericalHarmonics3} A reference to this spherical harmonics. + */ + lerp( sh, alpha ) { + + for ( let i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].lerp( sh.coefficients[ i ], alpha ); + + } + + return this; + + } + + /** + * Returns `true` if this spherical harmonics is equal with the given one. + * + * @param {SphericalHarmonics3} sh - The spherical harmonics to test for equality. + * @return {boolean} Whether this spherical harmonics is equal with the given one. + */ + equals( sh ) { + + for ( let i = 0; i < 9; i ++ ) { + + if ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) { + + return false; + + } + + } + + return true; + + } + + /** + * Copies the values of the given spherical harmonics to this instance. + * + * @param {SphericalHarmonics3} sh - The spherical harmonics to copy. + * @return {SphericalHarmonics3} A reference to this spherical harmonics. + */ + copy( sh ) { + + return this.set( sh.coefficients ); + + } + + /** + * Returns a new spherical harmonics with copied values from this instance. + * + * @return {SphericalHarmonics3} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + + /** + * Sets the SH coefficients of this instance from the given array. + * + * @param {Array} array - An array holding the SH coefficients. + * @param {number} [offset=0] - The array offset where to start copying. + * @return {SphericalHarmonics3} A clone of this instance. + */ + fromArray( array, offset = 0 ) { + + const coefficients = this.coefficients; + + for ( let i = 0; i < 9; i ++ ) { + + coefficients[ i ].fromArray( array, offset + ( i * 3 ) ); + + } + + return this; + + } + + /** + * Returns an array with the SH coefficients, or copies them into the provided + * array. The coefficients are represented as numbers. + * + * @param {Array} [array=[]] - The target array. + * @param {number} [offset=0] - The array offset where to start copying. + * @return {Array} An array with flat SH coefficients. + */ + toArray( array = [], offset = 0 ) { + + const coefficients = this.coefficients; + + for ( let i = 0; i < 9; i ++ ) { + + coefficients[ i ].toArray( array, offset + ( i * 3 ) ); + + } + + return array; + + } + + /** + * Computes the SH basis for the given normal vector. + * + * @param {Vector3} normal - The normal. + * @param {Array} shBasis - The target array holding the SH basis. + */ + static getBasisAt( normal, shBasis ) { + + // normal is assumed to be unit length + + const x = normal.x, y = normal.y, z = normal.z; + + // band 0 + shBasis[ 0 ] = 0.282095; + + // band 1 + shBasis[ 1 ] = 0.488603 * y; + shBasis[ 2 ] = 0.488603 * z; + shBasis[ 3 ] = 0.488603 * x; + + // band 2 + shBasis[ 4 ] = 1.092548 * x * y; + shBasis[ 5 ] = 1.092548 * y * z; + shBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 ); + shBasis[ 7 ] = 1.092548 * x * z; + shBasis[ 8 ] = 0.546274 * ( x * x - y * y ); + + } + +} + +/** + * Light probes are an alternative way of adding light to a 3D scene. Unlike + * classical light sources (e.g. directional, point or spot lights), light + * probes do not emit light. Instead they store information about light + * passing through 3D space. During rendering, the light that hits a 3D + * object is approximated by using the data from the light probe. + * + * Light probes are usually created from (radiance) environment maps. The + * class {@link LightProbeGenerator} can be used to create light probes from + * cube textures or render targets. However, light estimation data could also + * be provided in other forms e.g. by WebXR. This enables the rendering of + * augmented reality content that reacts to real world lighting. + * + * The current probe implementation in three.js supports so-called diffuse + * light probes. This type of light probe is functionally equivalent to an + * irradiance environment map. + * + * @augments Light + */ +class LightProbe extends Light { + + /** + * Constructs a new light probe. + * + * @param {SphericalHarmonics3} sh - The spherical harmonics which represents encoded lighting information. + * @param {number} [intensity=1] - The light's strength/intensity. + */ + constructor( sh = new SphericalHarmonics3(), intensity = 1 ) { + + super( undefined, intensity ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isLightProbe = true; + + /** + * A light probe uses spherical harmonics to encode lighting information. + * + * @type {SphericalHarmonics3} + */ + this.sh = sh; + + } + + copy( source ) { + + super.copy( source ); + + this.sh.copy( source.sh ); + + return this; + + } + + /** + * Deserializes the light prove from the given JSON. + * + * @param {Object} json - The JSON holding the serialized light probe. + * @return {LightProbe} A reference to this light probe. + */ + fromJSON( json ) { + + this.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON(); + this.sh.fromArray( json.sh ); + + return this; + + } + + toJSON( meta ) { + + const data = super.toJSON( meta ); + + data.object.sh = this.sh.toArray(); + + return data; + + } + +} + +/** + * Class for loading geometries. The files are internally + * loaded via {@link FileLoader}. + * + * ```js + * const loader = new THREE.MaterialLoader(); + * const material = await loader.loadAsync( 'material.json' ); + * ``` + * This loader does not support node materials. Use {@link NodeMaterialLoader} instead. + * + * @augments Loader + */ +class MaterialLoader extends Loader { + + /** + * Constructs a new material loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + super( manager ); + + /** + * A dictionary holding textures used by the material. + * + * @type {Object} + */ + this.textures = {}; + + } + + /** + * Starts loading from the given URL and pass the loaded material to the `onLoad()` callback. + * + * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. + * @param {function(Material)} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} onProgress - Executed while the loading is in progress. + * @param {onErrorCallback} onError - Executed when errors occur. + */ + load( url, onLoad, onProgress, onError ) { + + const scope = this; + + const loader = new FileLoader( scope.manager ); + loader.setPath( scope.path ); + loader.setRequestHeader( scope.requestHeader ); + loader.setWithCredentials( scope.withCredentials ); + loader.load( url, function ( text ) { + + try { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + } catch ( e ) { + + if ( onError ) { + + onError( e ); + + } else { + + console.error( e ); + + } + + scope.manager.itemError( url ); + + } + + }, onProgress, onError ); + + } + + /** + * Parses the given JSON object and returns a material. + * + * @param {Object} json - The serialized material. + * @return {Material} The parsed material. + */ + parse( json ) { + + const textures = this.textures; + + function getTexture( name ) { + + if ( textures[ name ] === undefined ) { + + console.warn( 'THREE.MaterialLoader: Undefined texture', name ); + + } + + return textures[ name ]; + + } + + const material = this.createMaterialFromType( json.type ); + + if ( json.uuid !== undefined ) material.uuid = json.uuid; + if ( json.name !== undefined ) material.name = json.name; + if ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color ); + if ( json.roughness !== undefined ) material.roughness = json.roughness; + if ( json.metalness !== undefined ) material.metalness = json.metalness; + if ( json.sheen !== undefined ) material.sheen = json.sheen; + if ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor ); + if ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness; + if ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive ); + if ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular ); + if ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity; + if ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor ); + if ( json.shininess !== undefined ) material.shininess = json.shininess; + if ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat; + if ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness; + if ( json.dispersion !== undefined ) material.dispersion = json.dispersion; + if ( json.iridescence !== undefined ) material.iridescence = json.iridescence; + if ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR; + if ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange; + if ( json.transmission !== undefined ) material.transmission = json.transmission; + if ( json.thickness !== undefined ) material.thickness = json.thickness; + if ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance; + if ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor ); + if ( json.anisotropy !== undefined ) material.anisotropy = json.anisotropy; + if ( json.anisotropyRotation !== undefined ) material.anisotropyRotation = json.anisotropyRotation; + if ( json.fog !== undefined ) material.fog = json.fog; + if ( json.flatShading !== undefined ) material.flatShading = json.flatShading; + if ( json.blending !== undefined ) material.blending = json.blending; + if ( json.combine !== undefined ) material.combine = json.combine; + if ( json.side !== undefined ) material.side = json.side; + if ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide; + if ( json.opacity !== undefined ) material.opacity = json.opacity; + if ( json.transparent !== undefined ) material.transparent = json.transparent; + if ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest; + if ( json.alphaHash !== undefined ) material.alphaHash = json.alphaHash; + if ( json.depthFunc !== undefined ) material.depthFunc = json.depthFunc; + if ( json.depthTest !== undefined ) material.depthTest = json.depthTest; + if ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite; + if ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite; + if ( json.blendSrc !== undefined ) material.blendSrc = json.blendSrc; + if ( json.blendDst !== undefined ) material.blendDst = json.blendDst; + if ( json.blendEquation !== undefined ) material.blendEquation = json.blendEquation; + if ( json.blendSrcAlpha !== undefined ) material.blendSrcAlpha = json.blendSrcAlpha; + if ( json.blendDstAlpha !== undefined ) material.blendDstAlpha = json.blendDstAlpha; + if ( json.blendEquationAlpha !== undefined ) material.blendEquationAlpha = json.blendEquationAlpha; + if ( json.blendColor !== undefined && material.blendColor !== undefined ) material.blendColor.setHex( json.blendColor ); + if ( json.blendAlpha !== undefined ) material.blendAlpha = json.blendAlpha; + if ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask; + if ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc; + if ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef; + if ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask; + if ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail; + if ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail; + if ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass; + if ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite; + + if ( json.wireframe !== undefined ) material.wireframe = json.wireframe; + if ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth; + if ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap; + if ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin; + + if ( json.rotation !== undefined ) material.rotation = json.rotation; + + if ( json.linewidth !== undefined ) material.linewidth = json.linewidth; + if ( json.dashSize !== undefined ) material.dashSize = json.dashSize; + if ( json.gapSize !== undefined ) material.gapSize = json.gapSize; + if ( json.scale !== undefined ) material.scale = json.scale; + + if ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset; + if ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor; + if ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits; + + if ( json.dithering !== undefined ) material.dithering = json.dithering; + + if ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage; + if ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha; + if ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass; + + if ( json.visible !== undefined ) material.visible = json.visible; + + if ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped; + + if ( json.userData !== undefined ) material.userData = json.userData; + + if ( json.vertexColors !== undefined ) { + + if ( typeof json.vertexColors === 'number' ) { + + material.vertexColors = ( json.vertexColors > 0 ) ? true : false; + + } else { + + material.vertexColors = json.vertexColors; + + } + + } + + // Shader Material + + if ( json.uniforms !== undefined ) { + + for ( const name in json.uniforms ) { + + const uniform = json.uniforms[ name ]; + + material.uniforms[ name ] = {}; + + switch ( uniform.type ) { + + case 't': + material.uniforms[ name ].value = getTexture( uniform.value ); + break; + + case 'c': + material.uniforms[ name ].value = new Color().setHex( uniform.value ); + break; + + case 'v2': + material.uniforms[ name ].value = new Vector2().fromArray( uniform.value ); + break; + + case 'v3': + material.uniforms[ name ].value = new Vector3().fromArray( uniform.value ); + break; + + case 'v4': + material.uniforms[ name ].value = new Vector4().fromArray( uniform.value ); + break; + + case 'm3': + material.uniforms[ name ].value = new Matrix3().fromArray( uniform.value ); + break; + + case 'm4': + material.uniforms[ name ].value = new Matrix4().fromArray( uniform.value ); + break; + + default: + material.uniforms[ name ].value = uniform.value; + + } + + } + + } + + if ( json.defines !== undefined ) material.defines = json.defines; + if ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader; + if ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader; + if ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion; + + if ( json.extensions !== undefined ) { + + for ( const key in json.extensions ) { + + material.extensions[ key ] = json.extensions[ key ]; + + } + + } + + if ( json.lights !== undefined ) material.lights = json.lights; + if ( json.clipping !== undefined ) material.clipping = json.clipping; + + // for PointsMaterial + + if ( json.size !== undefined ) material.size = json.size; + if ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation; + + // maps + + if ( json.map !== undefined ) material.map = getTexture( json.map ); + if ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap ); + + if ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap ); + + if ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap ); + if ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale; + + if ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap ); + if ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType; + if ( json.normalScale !== undefined ) { + + let normalScale = json.normalScale; + + if ( Array.isArray( normalScale ) === false ) { + + // Blender exporter used to export a scalar. See #7459 + + normalScale = [ normalScale, normalScale ]; + + } + + material.normalScale = new Vector2().fromArray( normalScale ); + + } + + if ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap ); + if ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale; + if ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias; + + if ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap ); + if ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap ); + + if ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap ); + if ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity; + + if ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap ); + if ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap ); + if ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap ); + + if ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap ); + if ( json.envMapRotation !== undefined ) material.envMapRotation.fromArray( json.envMapRotation ); + if ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity; + + if ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity; + if ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio; + + if ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap ); + if ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity; + + if ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap ); + if ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity; + + if ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap ); + + if ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap ); + if ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap ); + if ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap ); + if ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale ); + + if ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap ); + if ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap ); + + if ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap ); + if ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap ); + + if ( json.anisotropyMap !== undefined ) material.anisotropyMap = getTexture( json.anisotropyMap ); + + if ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap ); + if ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap ); + + return material; + + } + + /** + * Textures are not embedded in the material JSON so they have + * to be injected before the loading process starts. + * + * @param {Object} value - A dictionary holding textures for material properties. + * @return {MaterialLoader} A reference to this material loader. + */ + setTextures( value ) { + + this.textures = value; + return this; + + } + + /** + * Creates a material for the given type. + * + * @param {string} type - The material type. + * @return {Material} The new material. + */ + createMaterialFromType( type ) { + + return MaterialLoader.createMaterialFromType( type ); + + } + + /** + * Creates a material for the given type. + * + * @static + * @param {string} type - The material type. + * @return {Material} The new material. + */ + static createMaterialFromType( type ) { + + const materialLib = { + ShadowMaterial, + SpriteMaterial, + RawShaderMaterial, + ShaderMaterial, + PointsMaterial, + MeshPhysicalMaterial, + MeshStandardMaterial, + MeshPhongMaterial, + MeshToonMaterial, + MeshNormalMaterial, + MeshLambertMaterial, + MeshDepthMaterial, + MeshDistanceMaterial, + MeshBasicMaterial, + MeshMatcapMaterial, + LineDashedMaterial, + LineBasicMaterial, + Material + }; + + return new materialLib[ type ](); + + } + +} + +/** + * A class with loader utility functions. + */ +class LoaderUtils { + + /** + * Extracts the base URL from the given URL. + * + * @param {string} url -The URL to extract the base URL from. + * @return {string} The extracted base URL. + */ + static extractUrlBase( url ) { + + const index = url.lastIndexOf( '/' ); + + if ( index === -1 ) return './'; + + return url.slice( 0, index + 1 ); + + } + + /** + * Resolves relative URLs against the given path. Absolute paths, data urls, + * and blob URLs will be returned as is. Invalid URLs will return an empty + * string. + * + * @param {string} url -The URL to resolve. + * @param {string} path - The base path for relative URLs to be resolved against. + * @return {string} The resolved URL. + */ + static resolveURL( url, path ) { + + // Invalid URL + if ( typeof url !== 'string' || url === '' ) return ''; + + // Host Relative URL + if ( /^https?:\/\//i.test( path ) && /^\//.test( url ) ) { + + path = path.replace( /(^https?:\/\/[^\/]+).*/i, '$1' ); + + } + + // Absolute URL http://,https://,// + if ( /^(https?:)?\/\//i.test( url ) ) return url; + + // Data URI + if ( /^data:.*,.*$/i.test( url ) ) return url; + + // Blob URL + if ( /^blob:.*$/i.test( url ) ) return url; + + // Relative URL + return path + url; + + } + +} + +/** + * An instanced version of a geometry. + */ +class InstancedBufferGeometry extends BufferGeometry { + + /** + * Constructs a new instanced buffer geometry. + */ + constructor() { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isInstancedBufferGeometry = true; + + this.type = 'InstancedBufferGeometry'; + + /** + * The instance count. + * + * @type {number} + * @default Infinity + */ + this.instanceCount = Infinity; + + } + + copy( source ) { + + super.copy( source ); + + this.instanceCount = source.instanceCount; + + return this; + + } + + toJSON() { + + const data = super.toJSON(); + + data.instanceCount = this.instanceCount; + + data.isInstancedBufferGeometry = true; + + return data; + + } + +} + +/** + * Class for loading geometries. The files are internally + * loaded via {@link FileLoader}. + * + * ```js + * const loader = new THREE.BufferGeometryLoader(); + * const geometry = await loader.loadAsync( 'models/json/pressure.json' ); + * + * const material = new THREE.MeshBasicMaterial( { color: 0xF5F5F5 } ); + * const object = new THREE.Mesh( geometry, material ); + * scene.add( object ); + * ``` + * + * @augments Loader + */ +class BufferGeometryLoader extends Loader { + + /** + * Constructs a new geometry loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + super( manager ); + + } + + /** + * Starts loading from the given URL and pass the loaded geometry to the `onLoad()` callback. + * + * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. + * @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} onProgress - Executed while the loading is in progress. + * @param {onErrorCallback} onError - Executed when errors occur. + */ + load( url, onLoad, onProgress, onError ) { + + const scope = this; + + const loader = new FileLoader( scope.manager ); + loader.setPath( scope.path ); + loader.setRequestHeader( scope.requestHeader ); + loader.setWithCredentials( scope.withCredentials ); + loader.load( url, function ( text ) { + + try { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + } catch ( e ) { + + if ( onError ) { + + onError( e ); + + } else { + + console.error( e ); + + } + + scope.manager.itemError( url ); + + } + + }, onProgress, onError ); + + } + + /** + * Parses the given JSON object and returns a geometry. + * + * @param {Object} json - The serialized geometry. + * @return {BufferGeometry} The parsed geometry. + */ + parse( json ) { + + const interleavedBufferMap = {}; + const arrayBufferMap = {}; + + function getInterleavedBuffer( json, uuid ) { + + if ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ]; + + const interleavedBuffers = json.interleavedBuffers; + const interleavedBuffer = interleavedBuffers[ uuid ]; + + const buffer = getArrayBuffer( json, interleavedBuffer.buffer ); + + const array = getTypedArray( interleavedBuffer.type, buffer ); + const ib = new InterleavedBuffer( array, interleavedBuffer.stride ); + ib.uuid = interleavedBuffer.uuid; + + interleavedBufferMap[ uuid ] = ib; + + return ib; + + } + + function getArrayBuffer( json, uuid ) { + + if ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ]; + + const arrayBuffers = json.arrayBuffers; + const arrayBuffer = arrayBuffers[ uuid ]; + + const ab = new Uint32Array( arrayBuffer ).buffer; + + arrayBufferMap[ uuid ] = ab; + + return ab; + + } + + const geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry(); + + const index = json.data.index; + + if ( index !== undefined ) { + + const typedArray = getTypedArray( index.type, index.array ); + geometry.setIndex( new BufferAttribute( typedArray, 1 ) ); + + } + + const attributes = json.data.attributes; + + for ( const key in attributes ) { + + const attribute = attributes[ key ]; + let bufferAttribute; + + if ( attribute.isInterleavedBufferAttribute ) { + + const interleavedBuffer = getInterleavedBuffer( json.data, attribute.data ); + bufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized ); + + } else { + + const typedArray = getTypedArray( attribute.type, attribute.array ); + const bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute; + bufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized ); + + } + + if ( attribute.name !== undefined ) bufferAttribute.name = attribute.name; + if ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage ); + + geometry.setAttribute( key, bufferAttribute ); + + } + + const morphAttributes = json.data.morphAttributes; + + if ( morphAttributes ) { + + for ( const key in morphAttributes ) { + + const attributeArray = morphAttributes[ key ]; + + const array = []; + + for ( let i = 0, il = attributeArray.length; i < il; i ++ ) { + + const attribute = attributeArray[ i ]; + let bufferAttribute; + + if ( attribute.isInterleavedBufferAttribute ) { + + const interleavedBuffer = getInterleavedBuffer( json.data, attribute.data ); + bufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized ); + + } else { + + const typedArray = getTypedArray( attribute.type, attribute.array ); + bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ); + + } + + if ( attribute.name !== undefined ) bufferAttribute.name = attribute.name; + array.push( bufferAttribute ); + + } + + geometry.morphAttributes[ key ] = array; + + } + + } + + const morphTargetsRelative = json.data.morphTargetsRelative; + + if ( morphTargetsRelative ) { + + geometry.morphTargetsRelative = true; + + } + + const groups = json.data.groups || json.data.drawcalls || json.data.offsets; + + if ( groups !== undefined ) { + + for ( let i = 0, n = groups.length; i !== n; ++ i ) { + + const group = groups[ i ]; + + geometry.addGroup( group.start, group.count, group.materialIndex ); + + } + + } + + const boundingSphere = json.data.boundingSphere; + + if ( boundingSphere !== undefined ) { + + const center = new Vector3(); + + if ( boundingSphere.center !== undefined ) { + + center.fromArray( boundingSphere.center ); + + } + + geometry.boundingSphere = new Sphere( center, boundingSphere.radius ); + + } + + if ( json.name ) geometry.name = json.name; + if ( json.userData ) geometry.userData = json.userData; + + return geometry; + + } + +} + +/** + * A loader for loading a JSON resource in the [JSON Object/Scene format]{@link https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4}. + * The files are internally loaded via {@link FileLoader}. + * + * ```js + * const loader = new THREE.ObjectLoader(); + * const obj = await loader.loadAsync( 'models/json/example.json' ); + * scene.add( obj ); + * + * // Alternatively, to parse a previously loaded JSON structure + * const object = await loader.parseAsync( a_json_object ); + * scene.add( object ); + * ``` + * + * @augments Loader + */ +class ObjectLoader extends Loader { + + /** + * Constructs a new object loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + super( manager ); + + } + + /** + * Starts loading from the given URL and pass the loaded 3D object to the `onLoad()` callback. + * + * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. + * @param {function(Object3D)} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} onProgress - Executed while the loading is in progress. + * @param {onErrorCallback} onError - Executed when errors occur. + */ + load( url, onLoad, onProgress, onError ) { + + const scope = this; + + const path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path; + this.resourcePath = this.resourcePath || path; + + const loader = new FileLoader( this.manager ); + loader.setPath( this.path ); + loader.setRequestHeader( this.requestHeader ); + loader.setWithCredentials( this.withCredentials ); + loader.load( url, function ( text ) { + + let json = null; + + try { + + json = JSON.parse( text ); + + } catch ( error ) { + + if ( onError !== undefined ) onError( error ); + + console.error( 'THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message ); + + return; + + } + + const metadata = json.metadata; + + if ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) { + + if ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\'t load ' + url ) ); + + console.error( 'THREE.ObjectLoader: Can\'t load ' + url ); + return; + + } + + scope.parse( json, onLoad ); + + }, onProgress, onError ); + + } + + /** + * Async version of {@link ObjectLoader#load}. + * + * @async + * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. + * @param {onProgressCallback} onProgress - Executed while the loading is in progress. + * @return {Promise} A Promise that resolves with the loaded 3D object. + */ + async loadAsync( url, onProgress ) { + + const scope = this; + + const path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path; + this.resourcePath = this.resourcePath || path; + + const loader = new FileLoader( this.manager ); + loader.setPath( this.path ); + loader.setRequestHeader( this.requestHeader ); + loader.setWithCredentials( this.withCredentials ); + + const text = await loader.loadAsync( url, onProgress ); + + const json = JSON.parse( text ); + + const metadata = json.metadata; + + if ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) { + + throw new Error( 'THREE.ObjectLoader: Can\'t load ' + url ); + + } + + return await scope.parseAsync( json ); + + } + + /** + * Parses the given JSON. This is used internally by {@link ObjectLoader#load} + * but can also be used directly to parse a previously loaded JSON structure. + * + * @param {Object} json - The serialized 3D object. + * @param {onLoad} onLoad - Executed when all resources (e.g. textures) have been fully loaded. + * @return {Object3D} The parsed 3D object. + */ + parse( json, onLoad ) { + + const animations = this.parseAnimations( json.animations ); + const shapes = this.parseShapes( json.shapes ); + const geometries = this.parseGeometries( json.geometries, shapes ); + + const images = this.parseImages( json.images, function () { + + if ( onLoad !== undefined ) onLoad( object ); + + } ); + + const textures = this.parseTextures( json.textures, images ); + const materials = this.parseMaterials( json.materials, textures ); + + const object = this.parseObject( json.object, geometries, materials, textures, animations ); + const skeletons = this.parseSkeletons( json.skeletons, object ); + + this.bindSkeletons( object, skeletons ); + this.bindLightTargets( object ); + + // + + if ( onLoad !== undefined ) { + + let hasImages = false; + + for ( const uuid in images ) { + + if ( images[ uuid ].data instanceof HTMLImageElement ) { + + hasImages = true; + break; + + } + + } + + if ( hasImages === false ) onLoad( object ); + + } + + return object; + + } + + /** + * Async version of {@link ObjectLoader#parse}. + * + * @param {Object} json - The serialized 3D object. + * @return {Promise} A Promise that resolves with the parsed 3D object. + */ + async parseAsync( json ) { + + const animations = this.parseAnimations( json.animations ); + const shapes = this.parseShapes( json.shapes ); + const geometries = this.parseGeometries( json.geometries, shapes ); + + const images = await this.parseImagesAsync( json.images ); + + const textures = this.parseTextures( json.textures, images ); + const materials = this.parseMaterials( json.materials, textures ); + + const object = this.parseObject( json.object, geometries, materials, textures, animations ); + const skeletons = this.parseSkeletons( json.skeletons, object ); + + this.bindSkeletons( object, skeletons ); + this.bindLightTargets( object ); + + return object; + + } + + // internals + + parseShapes( json ) { + + const shapes = {}; + + if ( json !== undefined ) { + + for ( let i = 0, l = json.length; i < l; i ++ ) { + + const shape = new Shape().fromJSON( json[ i ] ); + + shapes[ shape.uuid ] = shape; + + } + + } + + return shapes; + + } + + parseSkeletons( json, object ) { + + const skeletons = {}; + const bones = {}; + + // generate bone lookup table + + object.traverse( function ( child ) { + + if ( child.isBone ) bones[ child.uuid ] = child; + + } ); + + // create skeletons + + if ( json !== undefined ) { + + for ( let i = 0, l = json.length; i < l; i ++ ) { + + const skeleton = new Skeleton().fromJSON( json[ i ], bones ); + + skeletons[ skeleton.uuid ] = skeleton; + + } + + } + + return skeletons; + + } + + parseGeometries( json, shapes ) { + + const geometries = {}; + + if ( json !== undefined ) { + + const bufferGeometryLoader = new BufferGeometryLoader(); + + for ( let i = 0, l = json.length; i < l; i ++ ) { + + let geometry; + const data = json[ i ]; + + switch ( data.type ) { + + case 'BufferGeometry': + case 'InstancedBufferGeometry': + + geometry = bufferGeometryLoader.parse( data ); + break; + + default: + + if ( data.type in Geometries ) { + + geometry = Geometries[ data.type ].fromJSON( data, shapes ); + + } else { + + console.warn( `THREE.ObjectLoader: Unsupported geometry type "${ data.type }"` ); + + } + + } + + geometry.uuid = data.uuid; + + if ( data.name !== undefined ) geometry.name = data.name; + if ( data.userData !== undefined ) geometry.userData = data.userData; + + geometries[ data.uuid ] = geometry; + + } + + } + + return geometries; + + } + + parseMaterials( json, textures ) { + + const cache = {}; // MultiMaterial + const materials = {}; + + if ( json !== undefined ) { + + const loader = new MaterialLoader(); + loader.setTextures( textures ); + + for ( let i = 0, l = json.length; i < l; i ++ ) { + + const data = json[ i ]; + + if ( cache[ data.uuid ] === undefined ) { + + cache[ data.uuid ] = loader.parse( data ); + + } + + materials[ data.uuid ] = cache[ data.uuid ]; + + } + + } + + return materials; + + } + + parseAnimations( json ) { + + const animations = {}; + + if ( json !== undefined ) { + + for ( let i = 0; i < json.length; i ++ ) { + + const data = json[ i ]; + + const clip = AnimationClip.parse( data ); + + animations[ clip.uuid ] = clip; + + } + + } + + return animations; + + } + + parseImages( json, onLoad ) { + + const scope = this; + const images = {}; + + let loader; + + function loadImage( url ) { + + scope.manager.itemStart( url ); + + return loader.load( url, function () { + + scope.manager.itemEnd( url ); + + }, undefined, function () { + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } ); + + } + + function deserializeImage( image ) { + + if ( typeof image === 'string' ) { + + const url = image; + + const path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( url ) ? url : scope.resourcePath + url; + + return loadImage( path ); + + } else { + + if ( image.data ) { + + return { + data: getTypedArray( image.type, image.data ), + width: image.width, + height: image.height + }; + + } else { + + return null; + + } + + } + + } + + if ( json !== undefined && json.length > 0 ) { + + const manager = new LoadingManager( onLoad ); + + loader = new ImageLoader( manager ); + loader.setCrossOrigin( this.crossOrigin ); + + for ( let i = 0, il = json.length; i < il; i ++ ) { + + const image = json[ i ]; + const url = image.url; + + if ( Array.isArray( url ) ) { + + // load array of images e.g CubeTexture + + const imageArray = []; + + for ( let j = 0, jl = url.length; j < jl; j ++ ) { + + const currentUrl = url[ j ]; + + const deserializedImage = deserializeImage( currentUrl ); + + if ( deserializedImage !== null ) { + + if ( deserializedImage instanceof HTMLImageElement ) { + + imageArray.push( deserializedImage ); + + } else { + + // special case: handle array of data textures for cube textures + + imageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) ); + + } + + } + + } + + images[ image.uuid ] = new Source( imageArray ); + + } else { + + // load single image + + const deserializedImage = deserializeImage( image.url ); + images[ image.uuid ] = new Source( deserializedImage ); + + + } + + } + + } + + return images; + + } + + async parseImagesAsync( json ) { + + const scope = this; + const images = {}; + + let loader; + + async function deserializeImage( image ) { + + if ( typeof image === 'string' ) { + + const url = image; + + const path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( url ) ? url : scope.resourcePath + url; + + return await loader.loadAsync( path ); + + } else { + + if ( image.data ) { + + return { + data: getTypedArray( image.type, image.data ), + width: image.width, + height: image.height + }; + + } else { + + return null; + + } + + } + + } + + if ( json !== undefined && json.length > 0 ) { + + loader = new ImageLoader( this.manager ); + loader.setCrossOrigin( this.crossOrigin ); + + for ( let i = 0, il = json.length; i < il; i ++ ) { + + const image = json[ i ]; + const url = image.url; + + if ( Array.isArray( url ) ) { + + // load array of images e.g CubeTexture + + const imageArray = []; + + for ( let j = 0, jl = url.length; j < jl; j ++ ) { + + const currentUrl = url[ j ]; + + const deserializedImage = await deserializeImage( currentUrl ); + + if ( deserializedImage !== null ) { + + if ( deserializedImage instanceof HTMLImageElement ) { + + imageArray.push( deserializedImage ); + + } else { + + // special case: handle array of data textures for cube textures + + imageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) ); + + } + + } + + } + + images[ image.uuid ] = new Source( imageArray ); + + } else { + + // load single image + + const deserializedImage = await deserializeImage( image.url ); + images[ image.uuid ] = new Source( deserializedImage ); + + } + + } + + } + + return images; + + } + + parseTextures( json, images ) { + + function parseConstant( value, type ) { + + if ( typeof value === 'number' ) return value; + + console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value ); + + return type[ value ]; + + } + + const textures = {}; + + if ( json !== undefined ) { + + for ( let i = 0, l = json.length; i < l; i ++ ) { + + const data = json[ i ]; + + if ( data.image === undefined ) { + + console.warn( 'THREE.ObjectLoader: No "image" specified for', data.uuid ); + + } + + if ( images[ data.image ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined image', data.image ); + + } + + const source = images[ data.image ]; + const image = source.data; + + let texture; + + if ( Array.isArray( image ) ) { + + texture = new CubeTexture(); + + if ( image.length === 6 ) texture.needsUpdate = true; + + } else { + + if ( image && image.data ) { + + texture = new DataTexture(); + + } else { + + texture = new Texture(); + + } + + if ( image ) texture.needsUpdate = true; // textures can have undefined image data + + } + + texture.source = source; + + texture.uuid = data.uuid; + + if ( data.name !== undefined ) texture.name = data.name; + + if ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING ); + if ( data.channel !== undefined ) texture.channel = data.channel; + + if ( data.offset !== undefined ) texture.offset.fromArray( data.offset ); + if ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat ); + if ( data.center !== undefined ) texture.center.fromArray( data.center ); + if ( data.rotation !== undefined ) texture.rotation = data.rotation; + + if ( data.wrap !== undefined ) { + + texture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING ); + texture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING ); + + } + + if ( data.format !== undefined ) texture.format = data.format; + if ( data.internalFormat !== undefined ) texture.internalFormat = data.internalFormat; + if ( data.type !== undefined ) texture.type = data.type; + if ( data.colorSpace !== undefined ) texture.colorSpace = data.colorSpace; + + if ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER ); + if ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER ); + if ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy; + + if ( data.flipY !== undefined ) texture.flipY = data.flipY; + + if ( data.generateMipmaps !== undefined ) texture.generateMipmaps = data.generateMipmaps; + if ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha; + if ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment; + if ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction; + + if ( data.userData !== undefined ) texture.userData = data.userData; + + textures[ data.uuid ] = texture; + + } + + } + + return textures; + + } + + parseObject( data, geometries, materials, textures, animations ) { + + let object; + + function getGeometry( name ) { + + if ( geometries[ name ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined geometry', name ); + + } + + return geometries[ name ]; + + } + + function getMaterial( name ) { + + if ( name === undefined ) return undefined; + + if ( Array.isArray( name ) ) { + + const array = []; + + for ( let i = 0, l = name.length; i < l; i ++ ) { + + const uuid = name[ i ]; + + if ( materials[ uuid ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined material', uuid ); + + } + + array.push( materials[ uuid ] ); + + } + + return array; + + } + + if ( materials[ name ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined material', name ); + + } + + return materials[ name ]; + + } + + function getTexture( uuid ) { + + if ( textures[ uuid ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined texture', uuid ); + + } + + return textures[ uuid ]; + + } + + let geometry, material; + + switch ( data.type ) { + + case 'Scene': + + object = new Scene(); + + if ( data.background !== undefined ) { + + if ( Number.isInteger( data.background ) ) { + + object.background = new Color( data.background ); + + } else { + + object.background = getTexture( data.background ); + + } + + } + + if ( data.environment !== undefined ) { + + object.environment = getTexture( data.environment ); + + } + + if ( data.fog !== undefined ) { + + if ( data.fog.type === 'Fog' ) { + + object.fog = new Fog( data.fog.color, data.fog.near, data.fog.far ); + + } else if ( data.fog.type === 'FogExp2' ) { + + object.fog = new FogExp2( data.fog.color, data.fog.density ); + + } + + if ( data.fog.name !== '' ) { + + object.fog.name = data.fog.name; + + } + + } + + if ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness; + if ( data.backgroundIntensity !== undefined ) object.backgroundIntensity = data.backgroundIntensity; + if ( data.backgroundRotation !== undefined ) object.backgroundRotation.fromArray( data.backgroundRotation ); + + if ( data.environmentIntensity !== undefined ) object.environmentIntensity = data.environmentIntensity; + if ( data.environmentRotation !== undefined ) object.environmentRotation.fromArray( data.environmentRotation ); + + break; + + case 'PerspectiveCamera': + + object = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far ); + + if ( data.focus !== undefined ) object.focus = data.focus; + if ( data.zoom !== undefined ) object.zoom = data.zoom; + if ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge; + if ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset; + if ( data.view !== undefined ) object.view = Object.assign( {}, data.view ); + + break; + + case 'OrthographicCamera': + + object = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far ); + + if ( data.zoom !== undefined ) object.zoom = data.zoom; + if ( data.view !== undefined ) object.view = Object.assign( {}, data.view ); + + break; + + case 'AmbientLight': + + object = new AmbientLight( data.color, data.intensity ); + + break; + + case 'DirectionalLight': + + object = new DirectionalLight( data.color, data.intensity ); + object.target = data.target || ''; + + break; + + case 'PointLight': + + object = new PointLight( data.color, data.intensity, data.distance, data.decay ); + + break; + + case 'RectAreaLight': + + object = new RectAreaLight( data.color, data.intensity, data.width, data.height ); + + break; + + case 'SpotLight': + + object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay ); + object.target = data.target || ''; + + break; + + case 'HemisphereLight': + + object = new HemisphereLight( data.color, data.groundColor, data.intensity ); + + break; + + case 'LightProbe': + + object = new LightProbe().fromJSON( data ); + + break; + + case 'SkinnedMesh': + + geometry = getGeometry( data.geometry ); + material = getMaterial( data.material ); + + object = new SkinnedMesh( geometry, material ); + + if ( data.bindMode !== undefined ) object.bindMode = data.bindMode; + if ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix ); + if ( data.skeleton !== undefined ) object.skeleton = data.skeleton; + + break; + + case 'Mesh': + + geometry = getGeometry( data.geometry ); + material = getMaterial( data.material ); + + object = new Mesh( geometry, material ); + + break; + + case 'InstancedMesh': + + geometry = getGeometry( data.geometry ); + material = getMaterial( data.material ); + const count = data.count; + const instanceMatrix = data.instanceMatrix; + const instanceColor = data.instanceColor; + + object = new InstancedMesh( geometry, material, count ); + object.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 ); + if ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize ); + + break; + + case 'BatchedMesh': + + geometry = getGeometry( data.geometry ); + material = getMaterial( data.material ); + + object = new BatchedMesh( data.maxInstanceCount, data.maxVertexCount, data.maxIndexCount, material ); + object.geometry = geometry; + object.perObjectFrustumCulled = data.perObjectFrustumCulled; + object.sortObjects = data.sortObjects; + + object._drawRanges = data.drawRanges; + object._reservedRanges = data.reservedRanges; + + object._visibility = data.visibility; + object._active = data.active; + object._bounds = data.bounds.map( bound => { + + const box = new Box3(); + box.min.fromArray( bound.boxMin ); + box.max.fromArray( bound.boxMax ); + + const sphere = new Sphere(); + sphere.radius = bound.sphereRadius; + sphere.center.fromArray( bound.sphereCenter ); + + return { + boxInitialized: bound.boxInitialized, + box: box, + + sphereInitialized: bound.sphereInitialized, + sphere: sphere + }; + + } ); + + object._maxInstanceCount = data.maxInstanceCount; + object._maxVertexCount = data.maxVertexCount; + object._maxIndexCount = data.maxIndexCount; + + object._geometryInitialized = data.geometryInitialized; + object._geometryCount = data.geometryCount; + + object._matricesTexture = getTexture( data.matricesTexture.uuid ); + if ( data.colorsTexture !== undefined ) object._colorsTexture = getTexture( data.colorsTexture.uuid ); + + break; + + case 'LOD': + + object = new LOD(); + + break; + + case 'Line': + + object = new Line( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'LineLoop': + + object = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'LineSegments': + + object = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'PointCloud': + case 'Points': + + object = new Points( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'Sprite': + + object = new Sprite( getMaterial( data.material ) ); + + break; + + case 'Group': + + object = new Group(); + + break; + + case 'Bone': + + object = new Bone(); + + break; + + default: + + object = new Object3D(); + + } + + object.uuid = data.uuid; + + if ( data.name !== undefined ) object.name = data.name; + + if ( data.matrix !== undefined ) { + + object.matrix.fromArray( data.matrix ); + + if ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate; + if ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale ); + + } else { + + if ( data.position !== undefined ) object.position.fromArray( data.position ); + if ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation ); + if ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion ); + if ( data.scale !== undefined ) object.scale.fromArray( data.scale ); + + } + + if ( data.up !== undefined ) object.up.fromArray( data.up ); + + if ( data.castShadow !== undefined ) object.castShadow = data.castShadow; + if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow; + + if ( data.shadow ) { + + if ( data.shadow.intensity !== undefined ) object.shadow.intensity = data.shadow.intensity; + if ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias; + if ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias; + if ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius; + if ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize ); + if ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera ); + + } + + if ( data.visible !== undefined ) object.visible = data.visible; + if ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled; + if ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder; + if ( data.userData !== undefined ) object.userData = data.userData; + if ( data.layers !== undefined ) object.layers.mask = data.layers; + + if ( data.children !== undefined ) { + + const children = data.children; + + for ( let i = 0; i < children.length; i ++ ) { + + object.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) ); + + } + + } + + if ( data.animations !== undefined ) { + + const objectAnimations = data.animations; + + for ( let i = 0; i < objectAnimations.length; i ++ ) { + + const uuid = objectAnimations[ i ]; + + object.animations.push( animations[ uuid ] ); + + } + + } + + if ( data.type === 'LOD' ) { + + if ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate; + + const levels = data.levels; + + for ( let l = 0; l < levels.length; l ++ ) { + + const level = levels[ l ]; + const child = object.getObjectByProperty( 'uuid', level.object ); + + if ( child !== undefined ) { + + object.addLevel( child, level.distance, level.hysteresis ); + + } + + } + + } + + return object; + + } + + bindSkeletons( object, skeletons ) { + + if ( Object.keys( skeletons ).length === 0 ) return; + + object.traverse( function ( child ) { + + if ( child.isSkinnedMesh === true && child.skeleton !== undefined ) { + + const skeleton = skeletons[ child.skeleton ]; + + if ( skeleton === undefined ) { + + console.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton ); + + } else { + + child.bind( skeleton, child.bindMatrix ); + + } + + } + + } ); + + } + + bindLightTargets( object ) { + + object.traverse( function ( child ) { + + if ( child.isDirectionalLight || child.isSpotLight ) { + + const uuid = child.target; + + const target = object.getObjectByProperty( 'uuid', uuid ); + + if ( target !== undefined ) { + + child.target = target; + + } else { + + child.target = new Object3D(); + + } + + } + + } ); + + } + +} + +const TEXTURE_MAPPING = { + UVMapping: UVMapping, + CubeReflectionMapping: CubeReflectionMapping, + CubeRefractionMapping: CubeRefractionMapping, + EquirectangularReflectionMapping: EquirectangularReflectionMapping, + EquirectangularRefractionMapping: EquirectangularRefractionMapping, + CubeUVReflectionMapping: CubeUVReflectionMapping +}; + +const TEXTURE_WRAPPING = { + RepeatWrapping: RepeatWrapping, + ClampToEdgeWrapping: ClampToEdgeWrapping, + MirroredRepeatWrapping: MirroredRepeatWrapping +}; + +const TEXTURE_FILTER = { + NearestFilter: NearestFilter, + NearestMipmapNearestFilter: NearestMipmapNearestFilter, + NearestMipmapLinearFilter: NearestMipmapLinearFilter, + LinearFilter: LinearFilter, + LinearMipmapNearestFilter: LinearMipmapNearestFilter, + LinearMipmapLinearFilter: LinearMipmapLinearFilter +}; + +/** + * A loader for loading images as an [ImageBitmap]{@link https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap}. + * An `ImageBitmap` provides an asynchronous and resource efficient pathway to prepare + * textures for rendering. + * + * Note that {@link Texture#flipY} and {@link Texture#premultiplyAlpha} are ignored with image bitmaps. + * They needs these configuration on bitmap creation unlike regular images need them on uploading to GPU. + * + * You need to set the equivalent options via {@link ImageBitmapLoader#setOptions} instead. + * + * Also note that unlike {@link FileLoader}, this loader does not avoid multiple concurrent requests to the same URL. + * + * ```js + * const loader = new THREE.ImageBitmapLoader(); + * loader.setOptions( { imageOrientation: 'flipY' } ); // set options if needed + * const imageBitmap = await loader.loadAsync( 'image.png' ); + * + * const texture = new THREE.Texture( imageBitmap ); + * texture.needsUpdate = true; + * ``` + * + * @augments Loader + */ +class ImageBitmapLoader extends Loader { + + /** + * Constructs a new image bitmap loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + super( manager ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isImageBitmapLoader = true; + + if ( typeof createImageBitmap === 'undefined' ) { + + console.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' ); + + } + + if ( typeof fetch === 'undefined' ) { + + console.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' ); + + } + + /** + * Represents the loader options. + * + * @type {Object} + * @default {premultiplyAlpha:'none'} + */ + this.options = { premultiplyAlpha: 'none' }; + + } + + /** + * Sets the given loader options. The structure of the object must match the `options` parameter of + * [createImageBitmap]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap}. + * + * @param {Object} options - The loader options to set. + * @return {ImageBitmapLoader} A reference to this image bitmap loader. + */ + setOptions( options ) { + + this.options = options; + + return this; + + } + + /** + * Starts loading from the given URL and pass the loaded image bitmap to the `onLoad()` callback. + * + * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. + * @param {function(ImageBitmap)} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} onProgress - Unsupported in this loader. + * @param {onErrorCallback} onError - Executed when errors occur. + * @return {ImageBitmap|undefined} The image bitmap. + */ + load( url, onLoad, onProgress, onError ) { + + if ( url === undefined ) url = ''; + + if ( this.path !== undefined ) url = this.path + url; + + url = this.manager.resolveURL( url ); + + const scope = this; + + const cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + // If cached is a promise, wait for it to resolve + if ( cached.then ) { + + cached.then( imageBitmap => { + + if ( onLoad ) onLoad( imageBitmap ); + + scope.manager.itemEnd( url ); + + } ).catch( e => { + + if ( onError ) onError( e ); + + } ); + return; + + } + + // If cached is not a promise (i.e., it's already an imageBitmap) + setTimeout( function () { + + if ( onLoad ) onLoad( cached ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + const fetchOptions = {}; + fetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include'; + fetchOptions.headers = this.requestHeader; + + const promise = fetch( url, fetchOptions ).then( function ( res ) { + + return res.blob(); + + } ).then( function ( blob ) { + + return createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) ); + + } ).then( function ( imageBitmap ) { + + Cache.add( url, imageBitmap ); + + if ( onLoad ) onLoad( imageBitmap ); + + scope.manager.itemEnd( url ); + + return imageBitmap; + + } ).catch( function ( e ) { + + if ( onError ) onError( e ); + + Cache.remove( url ); + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } ); + + Cache.add( url, promise ); + scope.manager.itemStart( url ); + + } + +} + +let _context; + +/** + * Manages the global audio context in the engine. + * + * @hideconstructor + */ +class AudioContext { + + /** + * Returns the global native audio context. + * + * @return {AudioContext} The native audio context. + */ + static getContext() { + + if ( _context === undefined ) { + + _context = new ( window.AudioContext || window.webkitAudioContext )(); + + } + + return _context; + + } + + /** + * Allows to set the global native audio context from outside. + * + * @param {AudioContext} value - The native context to set. + */ + static setContext( value ) { + + _context = value; + + } + +} + +/** + * Class for loading audio buffers. Audios are internally + * loaded via {@link FileLoader}. + * + * ```js + * const audioListener = new THREE.AudioListener(); + * const ambientSound = new THREE.Audio( audioListener ); + * + * const loader = new THREE.AudioLoader(); + * const audioBuffer = await loader.loadAsync( 'audio/ambient_ocean.ogg' ); + * + * ambientSound.setBuffer( audioBuffer ); + * ambientSound.play(); + * ``` + * + * @augments Loader + */ +class AudioLoader extends Loader { + + /** + * Constructs a new audio loader. + * + * @param {LoadingManager} [manager] - The loading manager. + */ + constructor( manager ) { + + super( manager ); + + } + + /** + * Starts loading from the given URL and passes the loaded audio buffer + * to the `onLoad()` callback. + * + * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. + * @param {function(AudioBuffer)} onLoad - Executed when the loading process has been finished. + * @param {onProgressCallback} onProgress - Executed while the loading is in progress. + * @param {onErrorCallback} onError - Executed when errors occur. + */ + load( url, onLoad, onProgress, onError ) { + + const scope = this; + + const loader = new FileLoader( this.manager ); + loader.setResponseType( 'arraybuffer' ); + loader.setPath( this.path ); + loader.setRequestHeader( this.requestHeader ); + loader.setWithCredentials( this.withCredentials ); + loader.load( url, function ( buffer ) { + + try { + + // Create a copy of the buffer. The `decodeAudioData` method + // detaches the buffer when complete, preventing reuse. + const bufferCopy = buffer.slice( 0 ); + + const context = AudioContext.getContext(); + context.decodeAudioData( bufferCopy, function ( audioBuffer ) { + + onLoad( audioBuffer ); + + } ).catch( handleError ); + + } catch ( e ) { + + handleError( e ); + + } + + }, onProgress, onError ); + + function handleError( e ) { + + if ( onError ) { + + onError( e ); + + } else { + + console.error( e ); + + } + + scope.manager.itemError( url ); + + } + + } + +} + +const _eyeRight = /*@__PURE__*/ new Matrix4(); +const _eyeLeft = /*@__PURE__*/ new Matrix4(); +const _projectionMatrix = /*@__PURE__*/ new Matrix4(); + +/** + * A special type of camera that uses two perspective cameras with + * stereoscopic projection. Can be used for rendering stereo effects + * like [3D Anaglyph]{@link https://en.wikipedia.org/wiki/Anaglyph_3D} or + * [Parallax Barrier]{@link https://en.wikipedia.org/wiki/parallax_barrier}. + */ +class StereoCamera { + + /** + * Constructs a new stereo camera. + */ + constructor() { + + /** + * The type property is used for detecting the object type + * in context of serialization/deserialization. + * + * @type {string} + * @readonly + */ + this.type = 'StereoCamera'; + + /** + * The aspect. + * + * @type {number} + * @default 1 + */ + this.aspect = 1; + + /** + * The eye separation which represents the distance + * between the left and right camera. + * + * @type {number} + * @default 0.064 + */ + this.eyeSep = 0.064; + + /** + * The camera representing the left eye. This is added to layer `1` so objects to be + * rendered by the left camera must also be added to this layer. + * + * @type {PerspectiveCamera} + */ + this.cameraL = new PerspectiveCamera(); + this.cameraL.layers.enable( 1 ); + this.cameraL.matrixAutoUpdate = false; + + /** + * The camera representing the right eye. This is added to layer `2` so objects to be + * rendered by the right camera must also be added to this layer. + * + * @type {PerspectiveCamera} + */ + this.cameraR = new PerspectiveCamera(); + this.cameraR.layers.enable( 2 ); + this.cameraR.matrixAutoUpdate = false; + + this._cache = { + focus: null, + fov: null, + aspect: null, + near: null, + far: null, + zoom: null, + eyeSep: null + }; + + } + + /** + * Updates the stereo camera based on the given perspective camera. + * + * @param {PerspectiveCamera} camera - The perspective camera. + */ + update( camera ) { + + const cache = this._cache; + + const needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov || + cache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near || + cache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep; + + if ( needsUpdate ) { + + cache.focus = camera.focus; + cache.fov = camera.fov; + cache.aspect = camera.aspect * this.aspect; + cache.near = camera.near; + cache.far = camera.far; + cache.zoom = camera.zoom; + cache.eyeSep = this.eyeSep; + + // Off-axis stereoscopic effect based on + // http://paulbourke.net/stereographics/stereorender/ + + _projectionMatrix.copy( camera.projectionMatrix ); + const eyeSepHalf = cache.eyeSep / 2; + const eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus; + const ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom; + let xmin, xmax; + + // translate xOffset + + _eyeLeft.elements[ 12 ] = - eyeSepHalf; + _eyeRight.elements[ 12 ] = eyeSepHalf; + + // for left eye + + xmin = - ymax * cache.aspect + eyeSepOnProjection; + xmax = ymax * cache.aspect + eyeSepOnProjection; + + _projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin ); + _projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); + + this.cameraL.projectionMatrix.copy( _projectionMatrix ); + + // for right eye + + xmin = - ymax * cache.aspect - eyeSepOnProjection; + xmax = ymax * cache.aspect - eyeSepOnProjection; + + _projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin ); + _projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); + + this.cameraR.projectionMatrix.copy( _projectionMatrix ); + + } + + this.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft ); + this.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight ); + + } + +} + +/** + * This type of camera can be used in order to efficiently render a scene with a + * predefined set of cameras. This is an important performance aspect for + * rendering VR scenes. + * + * An instance of `ArrayCamera` always has an array of sub cameras. It's mandatory + * to define for each sub camera the `viewport` property which determines the + * part of the viewport that is rendered with this camera. + * + * @augments PerspectiveCamera + */ +class ArrayCamera extends PerspectiveCamera { + + /** + * Constructs a new array camera. + * + * @param {Array} [array=[]] - An array of perspective sub cameras. + */ + constructor( array = [] ) { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isArrayCamera = true; + + /** + * An array of perspective sub cameras. + * + * @type {Array} + */ + this.cameras = array; + this.index = 0; + + } + +} + +/** + * Class for keeping track of time. + */ +class Clock { + + /** + * Constructs a new clock. + * + * @param {boolean} [autoStart=true] - Whether to automatically start the clock when + * `getDelta()` is called for the first time. + */ + constructor( autoStart = true ) { + + /** + * If set to `true`, the clock starts automatically when `getDelta()` is called + * for the first time. + * + * @type {boolean} + * @default true + */ + this.autoStart = autoStart; + + /** + * Holds the time at which the clock's `start()` method was last called. + * + * @type {number} + * @default 0 + */ + this.startTime = 0; + + /** + * Holds the time at which the clock's `start()`, `getElapsedTime()` or + * `getDelta()` methods were last called. + * + * @type {number} + * @default 0 + */ + this.oldTime = 0; + + /** + * Keeps track of the total time that the clock has been running. + * + * @type {number} + * @default 0 + */ + this.elapsedTime = 0; + + /** + * Whether the clock is running or not. + * + * @type {boolean} + * @default true + */ + this.running = false; + + } + + /** + * Starts the clock. When `autoStart` is set to `true`, the method is automatically + * called by the class. + */ + start() { + + this.startTime = now(); + + this.oldTime = this.startTime; + this.elapsedTime = 0; + this.running = true; + + } + + /** + * Stops the clock. + */ + stop() { + + this.getElapsedTime(); + this.running = false; + this.autoStart = false; + + } + + /** + * Returns the elapsed time in seconds. + * + * @return {number} The elapsed time. + */ + getElapsedTime() { + + this.getDelta(); + return this.elapsedTime; + + } + + /** + * Returns the delta time in seconds. + * + * @return {number} The delta time. + */ + getDelta() { + + let diff = 0; + + if ( this.autoStart && ! this.running ) { + + this.start(); + return 0; + + } + + if ( this.running ) { + + const newTime = now(); + + diff = ( newTime - this.oldTime ) / 1000; + this.oldTime = newTime; + + this.elapsedTime += diff; + + } + + return diff; + + } + +} + +function now() { + + return performance.now(); + +} + +const _position$1 = /*@__PURE__*/ new Vector3(); +const _quaternion$1 = /*@__PURE__*/ new Quaternion(); +const _scale$1 = /*@__PURE__*/ new Vector3(); +const _orientation$1 = /*@__PURE__*/ new Vector3(); + +/** + * The class represents a virtual listener of the all positional and non-positional audio effects + * in the scene. A three.js application usually creates a single listener. It is a mandatory + * constructor parameter for audios entities like {@link Audio} and {@link PositionalAudio}. + * + * In most cases, the listener object is a child of the camera. So the 3D transformation of the + * camera represents the 3D transformation of the listener. + * + * @augments Object3D + */ +class AudioListener extends Object3D { + + /** + * Constructs a new audio listener. + */ + constructor() { + + super(); + + this.type = 'AudioListener'; + + /** + * The native audio context. + * + * @type {AudioContext} + * @readonly + */ + this.context = AudioContext.getContext(); + + /** + * The gain node used for volume control. + * + * @type {GainNode} + * @readonly + */ + this.gain = this.context.createGain(); + this.gain.connect( this.context.destination ); + + /** + * An optional filter. + * + * Defined via {@link AudioListener#setFilter}. + * + * @type {?AudioNode} + * @default null + * @readonly + */ + this.filter = null; + + /** + * Time delta values required for `linearRampToValueAtTime()` usage. + * + * @type {number} + * @default 0 + * @readonly + */ + this.timeDelta = 0; + + // private + + this._clock = new Clock(); + + } + + /** + * Returns the listener's input node. + * + * This method is used by other audio nodes to connect to this listener. + * + * @return {GainNode} The input node. + */ + getInput() { + + return this.gain; + + } + + /** + * Removes the current filter from this listener. + * + * @return {AudioListener} A reference to this listener. + */ + removeFilter() { + + if ( this.filter !== null ) { + + this.gain.disconnect( this.filter ); + this.filter.disconnect( this.context.destination ); + this.gain.connect( this.context.destination ); + this.filter = null; + + } + + return this; + + } + + /** + * Returns the current set filter. + * + * @return {?AudioNode} The filter. + */ + getFilter() { + + return this.filter; + + } + + /** + * Sets the given filter to this listener. + * + * @param {AudioNode} value - The filter to set. + * @return {AudioListener} A reference to this listener. + */ + setFilter( value ) { + + if ( this.filter !== null ) { + + this.gain.disconnect( this.filter ); + this.filter.disconnect( this.context.destination ); + + } else { + + this.gain.disconnect( this.context.destination ); + + } + + this.filter = value; + this.gain.connect( this.filter ); + this.filter.connect( this.context.destination ); + + return this; + + } + + /** + * Returns the applications master volume. + * + * @return {number} The master volume. + */ + getMasterVolume() { + + return this.gain.gain.value; + + } + + /** + * Sets the applications master volume. This volume setting affects + * all audio nodes in the scene. + * + * @param {number} value - The master volume to set. + * @return {AudioListener} A reference to this listener. + */ + setMasterVolume( value ) { + + this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); + + return this; + + } + + updateMatrixWorld( force ) { + + super.updateMatrixWorld( force ); + + const listener = this.context.listener; + const up = this.up; + + this.timeDelta = this._clock.getDelta(); + + this.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 ); + + _orientation$1.set( 0, 0, -1 ).applyQuaternion( _quaternion$1 ); + + if ( listener.positionX ) { + + // code path for Chrome (see #14393) + + const endTime = this.context.currentTime + this.timeDelta; + + listener.positionX.linearRampToValueAtTime( _position$1.x, endTime ); + listener.positionY.linearRampToValueAtTime( _position$1.y, endTime ); + listener.positionZ.linearRampToValueAtTime( _position$1.z, endTime ); + listener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime ); + listener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime ); + listener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime ); + listener.upX.linearRampToValueAtTime( up.x, endTime ); + listener.upY.linearRampToValueAtTime( up.y, endTime ); + listener.upZ.linearRampToValueAtTime( up.z, endTime ); + + } else { + + listener.setPosition( _position$1.x, _position$1.y, _position$1.z ); + listener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z ); + + } + + } + +} + +/** + * Represents a non-positional ( global ) audio object. + * + * This and related audio modules make use of the [Web Audio API]{@link https://www.w3.org/TR/webaudio-1.1/}. + * + * ```js + * // create an AudioListener and add it to the camera + * const listener = new THREE.AudioListener(); + * camera.add( listener ); + * + * // create a global audio source + * const sound = new THREE.Audio( listener ); + * + * // load a sound and set it as the Audio object's buffer + * const audioLoader = new THREE.AudioLoader(); + * audioLoader.load( 'sounds/ambient.ogg', function( buffer ) { + * sound.setBuffer( buffer ); + * sound.setLoop( true ); + * sound.setVolume( 0.5 ); + * sound.play(); + * }); + * ``` + * + * @augments Object3D + */ +class Audio extends Object3D { + + /** + * Constructs a new audio. + * + * @param {AudioListener} listener - The global audio listener. + */ + constructor( listener ) { + + super(); + + this.type = 'Audio'; + + /** + * The global audio listener. + * + * @type {AudioListener} + * @readonly + */ + this.listener = listener; + + /** + * The audio context. + * + * @type {AudioContext} + * @readonly + */ + this.context = listener.context; + + /** + * The gain node used for volume control. + * + * @type {GainNode} + * @readonly + */ + this.gain = this.context.createGain(); + this.gain.connect( listener.getInput() ); + + /** + * Whether to start playback automatically or not. + * + * @type {boolean} + * @default false + */ + this.autoplay = false; + + /** + * A reference to an audio buffer. + * + * Defined via {@link Audio#setBuffer}. + * + * @type {?AudioBuffer} + * @default null + * @readonly + */ + this.buffer = null; + + /** + * Modify pitch, measured in cents. +/- 100 is a semitone. + * +/- 1200 is an octave. + * + * Defined via {@link Audio#setDetune}. + * + * @type {number} + * @default 0 + * @readonly + */ + this.detune = 0; + + /** + * Whether the audio should loop or not. + * + * Defined via {@link Audio#setLoop}. + * + * @type {boolean} + * @default false + * @readonly + */ + this.loop = false; + + /** + * Defines where in the audio buffer the replay should + * start, in seconds. + * + * @type {number} + * @default 0 + */ + this.loopStart = 0; + + /** + * Defines where in the audio buffer the replay should + * stop, in seconds. + * + * @type {number} + * @default 0 + */ + this.loopEnd = 0; + + /** + * An offset to the time within the audio buffer the playback + * should begin, in seconds. + * + * @type {number} + * @default 0 + */ + this.offset = 0; + + /** + * Overrides the default duration of the audio. + * + * @type {undefined|number} + * @default undefined + */ + this.duration = undefined; + + /** + * The playback speed. + * + * Defined via {@link Audio#setPlaybackRate}. + * + * @type {number} + * @readonly + * @default 1 + */ + this.playbackRate = 1; + + /** + * Indicates whether the audio is playing or not. + * + * This flag will be automatically set when using {@link Audio#play}, + * {@link Audio#pause}, {@link Audio#stop}. + * + * @type {boolean} + * @readonly + * @default false + */ + this.isPlaying = false; + + /** + * Indicates whether the audio playback can be controlled + * with method like {@link Audio#play} or {@link Audio#pause}. + * + * This flag will be automatically set when audio sources are + * defined. + * + * @type {boolean} + * @readonly + * @default true + */ + this.hasPlaybackControl = true; + + /** + * Holds a reference to the current audio source. + * + * The property is automatically by one of the `set*()` methods. + * + * @type {?AudioNode} + * @readonly + * @default null + */ + this.source = null; + + /** + * Defines the source type. + * + * The property is automatically by one of the `set*()` methods. + * + * @type {('empty'|'audioNode'|'mediaNode'|'mediaStreamNode'|'buffer')} + * @readonly + * @default 'empty' + */ + this.sourceType = 'empty'; + + this._startedAt = 0; + this._progress = 0; + this._connected = false; + + /** + * Can be used to apply a variety of low-order filters to create + * more complex sound effects e.g. via `BiquadFilterNode`. + * + * The property is automatically set by {@link Audio#setFilters}. + * + * @type {Array} + * @readonly + */ + this.filters = []; + + } + + /** + * Returns the output audio node. + * + * @return {GainNode} The output node. + */ + getOutput() { + + return this.gain; + + } + + /** + * Sets the given audio node as the source of this instance. + * + * {@link Audio#sourceType} is set to `audioNode` and {@link Audio#hasPlaybackControl} to `false`. + * + * @param {AudioNode} audioNode - The audio node like an instance of `OscillatorNode`. + * @return {Audio} A reference to this instance. + */ + setNodeSource( audioNode ) { + + this.hasPlaybackControl = false; + this.sourceType = 'audioNode'; + this.source = audioNode; + this.connect(); + + return this; + + } + + /** + * Sets the given media element as the source of this instance. + * + * {@link Audio#sourceType} is set to `mediaNode` and {@link Audio#hasPlaybackControl} to `false`. + * + * @param {HTMLMediaElement} mediaElement - The media element. + * @return {Audio} A reference to this instance. + */ + setMediaElementSource( mediaElement ) { + + this.hasPlaybackControl = false; + this.sourceType = 'mediaNode'; + this.source = this.context.createMediaElementSource( mediaElement ); + this.connect(); + + return this; + + } + + /** + * Sets the given media stream as the source of this instance. + * + * {@link Audio#sourceType} is set to `mediaStreamNode` and {@link Audio#hasPlaybackControl} to `false`. + * + * @param {MediaStream} mediaStream - The media stream. + * @return {Audio} A reference to this instance. + */ + setMediaStreamSource( mediaStream ) { + + this.hasPlaybackControl = false; + this.sourceType = 'mediaStreamNode'; + this.source = this.context.createMediaStreamSource( mediaStream ); + this.connect(); + + return this; + + } + + /** + * Sets the given audio buffer as the source of this instance. + * + * {@link Audio#sourceType} is set to `buffer` and {@link Audio#hasPlaybackControl} to `true`. + * + * @param {AudioBuffer} audioBuffer - The audio buffer. + * @return {Audio} A reference to this instance. + */ + setBuffer( audioBuffer ) { + + this.buffer = audioBuffer; + this.sourceType = 'buffer'; + + if ( this.autoplay ) this.play(); + + return this; + + } + + /** + * Starts the playback of the audio. + * + * Can only be used with compatible audio sources that allow playback control. + * + * @param {number} [delay=0] - The delay, in seconds, at which the audio should start playing. + * @return {Audio|undefined} A reference to this instance. + */ + play( delay = 0 ) { + + if ( this.isPlaying === true ) { + + console.warn( 'THREE.Audio: Audio is already playing.' ); + return; + + } + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this._startedAt = this.context.currentTime + delay; + + const source = this.context.createBufferSource(); + source.buffer = this.buffer; + source.loop = this.loop; + source.loopStart = this.loopStart; + source.loopEnd = this.loopEnd; + source.onended = this.onEnded.bind( this ); + source.start( this._startedAt, this._progress + this.offset, this.duration ); + + this.isPlaying = true; + + this.source = source; + + this.setDetune( this.detune ); + this.setPlaybackRate( this.playbackRate ); + + return this.connect(); + + } + + /** + * Pauses the playback of the audio. + * + * Can only be used with compatible audio sources that allow playback control. + * + * @return {Audio|undefined} A reference to this instance. + */ + pause() { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + if ( this.isPlaying === true ) { + + // update current progress + + this._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate; + + if ( this.loop === true ) { + + // ensure _progress does not exceed duration with looped audios + + this._progress = this._progress % ( this.duration || this.buffer.duration ); + + } + + this.source.stop(); + this.source.onended = null; + + this.isPlaying = false; + + } + + return this; + + } + + /** + * Stops the playback of the audio. + * + * Can only be used with compatible audio sources that allow playback control. + * + * @param {number} [delay=0] - The delay, in seconds, at which the audio should stop playing. + * @return {Audio|undefined} A reference to this instance. + */ + stop( delay = 0 ) { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this._progress = 0; + + if ( this.source !== null ) { + + this.source.stop( this.context.currentTime + delay ); + this.source.onended = null; + + } + + this.isPlaying = false; + + return this; + + } + + /** + * Connects to the audio source. This is used internally on + * initialisation and when setting / removing filters. + * + * @return {Audio} A reference to this instance. + */ + connect() { + + if ( this.filters.length > 0 ) { + + this.source.connect( this.filters[ 0 ] ); + + for ( let i = 1, l = this.filters.length; i < l; i ++ ) { + + this.filters[ i - 1 ].connect( this.filters[ i ] ); + + } + + this.filters[ this.filters.length - 1 ].connect( this.getOutput() ); + + } else { + + this.source.connect( this.getOutput() ); + + } + + this._connected = true; + + return this; + + } + + /** + * Disconnects to the audio source. This is used internally on + * initialisation and when setting / removing filters. + * + * @return {Audio|undefined} A reference to this instance. + */ + disconnect() { + + if ( this._connected === false ) { + + return; + + } + + if ( this.filters.length > 0 ) { + + this.source.disconnect( this.filters[ 0 ] ); + + for ( let i = 1, l = this.filters.length; i < l; i ++ ) { + + this.filters[ i - 1 ].disconnect( this.filters[ i ] ); + + } + + this.filters[ this.filters.length - 1 ].disconnect( this.getOutput() ); + + } else { + + this.source.disconnect( this.getOutput() ); + + } + + this._connected = false; + + return this; + + } + + /** + * Returns the current set filters. + * + * @return {Array} The list of filters. + */ + getFilters() { + + return this.filters; + + } + + /** + * Sets an array of filters and connects them with the audio source. + * + * @param {Array} [value] - A list of filters. + * @return {Audio} A reference to this instance. + */ + setFilters( value ) { + + if ( ! value ) value = []; + + if ( this._connected === true ) { + + this.disconnect(); + this.filters = value.slice(); + this.connect(); + + } else { + + this.filters = value.slice(); + + } + + return this; + + } + + /** + * Defines the detuning of oscillation in cents. + * + * @param {number} value - The detuning of oscillation in cents. + * @return {Audio} A reference to this instance. + */ + setDetune( value ) { + + this.detune = value; + + if ( this.isPlaying === true && this.source.detune !== undefined ) { + + this.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 ); + + } + + return this; + + } + + /** + * Returns the detuning of oscillation in cents. + * + * @return {number} The detuning of oscillation in cents. + */ + getDetune() { + + return this.detune; + + } + + /** + * Returns the first filter in the list of filters. + * + * @return {AudioNode|undefined} The first filter in the list of filters. + */ + getFilter() { + + return this.getFilters()[ 0 ]; + + } + + /** + * Applies a single filter node to the audio. + * + * @param {AudioNode} [filter] - The filter to set. + * @return {Audio} A reference to this instance. + */ + setFilter( filter ) { + + return this.setFilters( filter ? [ filter ] : [] ); + + } + + /** + * Sets the playback rate. + * + * Can only be used with compatible audio sources that allow playback control. + * + * @param {number} [value] - The playback rate to set. + * @return {Audio|undefined} A reference to this instance. + */ + setPlaybackRate( value ) { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.playbackRate = value; + + if ( this.isPlaying === true ) { + + this.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 ); + + } + + return this; + + } + + /** + * Returns the current playback rate. + + * @return {number} The playback rate. + */ + getPlaybackRate() { + + return this.playbackRate; + + } + + /** + * Automatically called when playback finished. + */ + onEnded() { + + this.isPlaying = false; + this._progress = 0; + + } + + /** + * Returns the loop flag. + * + * Can only be used with compatible audio sources that allow playback control. + * + * @return {boolean} Whether the audio should loop or not. + */ + getLoop() { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return false; + + } + + return this.loop; + + } + + /** + * Sets the loop flag. + * + * Can only be used with compatible audio sources that allow playback control. + * + * @param {boolean} value - Whether the audio should loop or not. + * @return {Audio|undefined} A reference to this instance. + */ + setLoop( value ) { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.loop = value; + + if ( this.isPlaying === true ) { + + this.source.loop = this.loop; + + } + + return this; + + } + + /** + * Sets the loop start value which defines where in the audio buffer the replay should + * start, in seconds. + * + * @param {number} value - The loop start value. + * @return {Audio} A reference to this instance. + */ + setLoopStart( value ) { + + this.loopStart = value; + + return this; + + } + + /** + * Sets the loop end value which defines where in the audio buffer the replay should + * stop, in seconds. + * + * @param {number} value - The loop end value. + * @return {Audio} A reference to this instance. + */ + setLoopEnd( value ) { + + this.loopEnd = value; + + return this; + + } + + /** + * Returns the volume. + * + * @return {number} The volume. + */ + getVolume() { + + return this.gain.gain.value; + + } + + /** + * Sets the volume. + * + * @param {number} value - The volume to set. + * @return {Audio} A reference to this instance. + */ + setVolume( value ) { + + this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); + + return this; + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + if ( source.sourceType !== 'buffer' ) { + + console.warn( 'THREE.Audio: Audio source type cannot be copied.' ); + + return this; + + } + + this.autoplay = source.autoplay; + + this.buffer = source.buffer; + this.detune = source.detune; + this.loop = source.loop; + this.loopStart = source.loopStart; + this.loopEnd = source.loopEnd; + this.offset = source.offset; + this.duration = source.duration; + this.playbackRate = source.playbackRate; + this.hasPlaybackControl = source.hasPlaybackControl; + this.sourceType = source.sourceType; + + this.filters = source.filters.slice(); + + return this; + + } + + clone( recursive ) { + + return new this.constructor( this.listener ).copy( this, recursive ); + + } + +} + +const _position = /*@__PURE__*/ new Vector3(); +const _quaternion = /*@__PURE__*/ new Quaternion(); +const _scale = /*@__PURE__*/ new Vector3(); +const _orientation = /*@__PURE__*/ new Vector3(); + +/** + * Represents a positional audio object. + * + * ```js + * // create an AudioListener and add it to the camera + * const listener = new THREE.AudioListener(); + * camera.add( listener ); + * + * // create the PositionalAudio object (passing in the listener) + * const sound = new THREE.PositionalAudio( listener ); + * + * // load a sound and set it as the PositionalAudio object's buffer + * const audioLoader = new THREE.AudioLoader(); + * audioLoader.load( 'sounds/song.ogg', function( buffer ) { + * sound.setBuffer( buffer ); + * sound.setRefDistance( 20 ); + * sound.play(); + * }); + * + * // create an object for the sound to play from + * const sphere = new THREE.SphereGeometry( 20, 32, 16 ); + * const material = new THREE.MeshPhongMaterial( { color: 0xff2200 } ); + * const mesh = new THREE.Mesh( sphere, material ); + * scene.add( mesh ); + * + * // finally add the sound to the mesh + * mesh.add( sound ); + * + * @augments Audio + */ +class PositionalAudio extends Audio { + + /** + * Constructs a positional audio. + * + * @param {AudioListener} listener - The global audio listener. + */ + constructor( listener ) { + + super( listener ); + + /** + * The panner node represents the location, direction, and behavior of an audio + * source in 3D space. + * + * @type {PannerNode} + * @readonly + */ + this.panner = this.context.createPanner(); + this.panner.panningModel = 'HRTF'; + this.panner.connect( this.gain ); + + } + + connect() { + + super.connect(); + + this.panner.connect( this.gain ); + + return this; + + } + + disconnect() { + + super.disconnect(); + + this.panner.disconnect( this.gain ); + + return this; + + } + + getOutput() { + + return this.panner; + + } + + /** + * Returns the current reference distance. + * + * @return {number} The reference distance. + */ + getRefDistance() { + + return this.panner.refDistance; + + } + + /** + * Defines the reference distance for reducing volume as the audio source moves + * further from the listener – i.e. the distance at which the volume reduction + * starts taking effect. + * + * @param {number} value - The reference distance to set. + * @return {PositionalAudio} A reference to this instance. + */ + setRefDistance( value ) { + + this.panner.refDistance = value; + + return this; + + } + + /** + * Returns the current rolloff factor. + * + * @return {number} The rolloff factor. + */ + getRolloffFactor() { + + return this.panner.rolloffFactor; + + } + + /** + * Defines how quickly the volume is reduced as the source moves away from the listener. + * + * @param {number} value - The rolloff factor. + * @return {PositionalAudio} A reference to this instance. + */ + setRolloffFactor( value ) { + + this.panner.rolloffFactor = value; + + return this; + + } + + /** + * Returns the current distance model. + * + * @return {('linear'|'inverse'|'exponential')} The distance model. + */ + getDistanceModel() { + + return this.panner.distanceModel; + + } + + /** + * Defines which algorithm to use to reduce the volume of the audio source + * as it moves away from the listener. + * + * Read [the spec]{@link https://www.w3.org/TR/webaudio-1.1/#enumdef-distancemodeltype} + * for more details. + * + * @param {('linear'|'inverse'|'exponential')} value - The distance model to set. + * @return {PositionalAudio} A reference to this instance. + */ + setDistanceModel( value ) { + + this.panner.distanceModel = value; + + return this; + + } + + /** + * Returns the current max distance. + * + * @return {number} The max distance. + */ + getMaxDistance() { + + return this.panner.maxDistance; + + } + + /** + * Defines the maximum distance between the audio source and the listener, + * after which the volume is not reduced any further. + * + * This value is used only by the `linear` distance model. + * + * @param {number} value - The max distance. + * @return {PositionalAudio} A reference to this instance. + */ + setMaxDistance( value ) { + + this.panner.maxDistance = value; + + return this; + + } + + /** + * Sets the directional cone in which the audio can be listened. + * + * @param {number} coneInnerAngle - An angle, in degrees, of a cone inside of which there will be no volume reduction. + * @param {number} coneOuterAngle - An angle, in degrees, of a cone outside of which the volume will be reduced by a constant value, defined by the `coneOuterGain` parameter. + * @param {number} coneOuterGain - The amount of volume reduction outside the cone defined by the `coneOuterAngle`. When set to `0`, no sound can be heard. + * @return {PositionalAudio} A reference to this instance. + */ + setDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) { + + this.panner.coneInnerAngle = coneInnerAngle; + this.panner.coneOuterAngle = coneOuterAngle; + this.panner.coneOuterGain = coneOuterGain; + + return this; + + } + + updateMatrixWorld( force ) { + + super.updateMatrixWorld( force ); + + if ( this.hasPlaybackControl === true && this.isPlaying === false ) return; + + this.matrixWorld.decompose( _position, _quaternion, _scale ); + + _orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion ); + + const panner = this.panner; + + if ( panner.positionX ) { + + // code path for Chrome and Firefox (see #14393) + + const endTime = this.context.currentTime + this.listener.timeDelta; + + panner.positionX.linearRampToValueAtTime( _position.x, endTime ); + panner.positionY.linearRampToValueAtTime( _position.y, endTime ); + panner.positionZ.linearRampToValueAtTime( _position.z, endTime ); + panner.orientationX.linearRampToValueAtTime( _orientation.x, endTime ); + panner.orientationY.linearRampToValueAtTime( _orientation.y, endTime ); + panner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime ); + + } else { + + panner.setPosition( _position.x, _position.y, _position.z ); + panner.setOrientation( _orientation.x, _orientation.y, _orientation.z ); + + } + + } + +} + +/** + * This class can be used to analyse audio data. + * + * ```js + * // create an AudioListener and add it to the camera + * const listener = new THREE.AudioListener(); + * camera.add( listener ); + * + * // create an Audio source + * const sound = new THREE.Audio( listener ); + * + * // load a sound and set it as the Audio object's buffer + * const audioLoader = new THREE.AudioLoader(); + * audioLoader.load( 'sounds/ambient.ogg', function( buffer ) { + * sound.setBuffer( buffer ); + * sound.setLoop(true); + * sound.setVolume(0.5); + * sound.play(); + * }); + * + * // create an AudioAnalyser, passing in the sound and desired fftSize + * const analyser = new THREE.AudioAnalyser( sound, 32 ); + * + * // get the average frequency of the sound + * const data = analyser.getAverageFrequency(); + * ``` + */ +class AudioAnalyser { + + /** + * Constructs a new audio analyzer. + * + * @param {Audio} audio - The audio to analyze. + * @param {number} [fftSize=2048] - The window size in samples that is used when performing a Fast Fourier Transform (FFT) to get frequency domain data. + */ + constructor( audio, fftSize = 2048 ) { + + /** + * The global audio listener. + * + * @type {AnalyserNode} + */ + this.analyser = audio.context.createAnalyser(); + this.analyser.fftSize = fftSize; + + /** + * Holds the analyzed data. + * + * @type {Uint8Array} + */ + this.data = new Uint8Array( this.analyser.frequencyBinCount ); + + audio.getOutput().connect( this.analyser ); + + } + + /** + * Returns an array with frequency data of the audio. + * + * Each item in the array represents the decibel value for a specific frequency. + * The frequencies are spread linearly from 0 to 1/2 of the sample rate. + * For example, for 48000 sample rate, the last item of the array will represent + * the decibel value for 24000 Hz. + * + * @return {Uint8Array} The frequency data. + */ + getFrequencyData() { + + this.analyser.getByteFrequencyData( this.data ); + + return this.data; + + } + + /** + * Returns the average of the frequencies returned by {@link AudioAnalyser#getFrequencyData}. + * + * @return {number} The average frequency. + */ + getAverageFrequency() { + + let value = 0; + const data = this.getFrequencyData(); + + for ( let i = 0; i < data.length; i ++ ) { + + value += data[ i ]; + + } + + return value / data.length; + + } + +} + +/** + * Buffered scene graph property that allows weighted accumulation; used internally. + */ +class PropertyMixer { + + /** + * Constructs a new property mixer. + * + * @param {PropertyBinding} binding - The property binding. + * @param {string} typeName - The keyframe track type name. + * @param {number} valueSize - The keyframe track value size. + */ + constructor( binding, typeName, valueSize ) { + + /** + * The property binding. + * + * @type {PropertyBinding} + */ + this.binding = binding; + + /** + * The keyframe track value size. + * + * @type {number} + */ + this.valueSize = valueSize; + + let mixFunction, + mixFunctionAdditive, + setIdentity; + + // buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ] + // + // interpolators can use .buffer as their .result + // the data then goes to 'incoming' + // + // 'accu0' and 'accu1' are used frame-interleaved for + // the cumulative result and are compared to detect + // changes + // + // 'orig' stores the original state of the property + // + // 'add' is used for additive cumulative results + // + // 'work' is optional and is only present for quaternion types. It is used + // to store intermediate quaternion multiplication results + + switch ( typeName ) { + + case 'quaternion': + mixFunction = this._slerp; + mixFunctionAdditive = this._slerpAdditive; + setIdentity = this._setAdditiveIdentityQuaternion; + + this.buffer = new Float64Array( valueSize * 6 ); + this._workIndex = 5; + break; + + case 'string': + case 'bool': + mixFunction = this._select; + + // Use the regular mix function and for additive on these types, + // additive is not relevant for non-numeric types + mixFunctionAdditive = this._select; + + setIdentity = this._setAdditiveIdentityOther; + + this.buffer = new Array( valueSize * 5 ); + break; + + default: + mixFunction = this._lerp; + mixFunctionAdditive = this._lerpAdditive; + setIdentity = this._setAdditiveIdentityNumeric; + + this.buffer = new Float64Array( valueSize * 5 ); + + } + + this._mixBufferRegion = mixFunction; + this._mixBufferRegionAdditive = mixFunctionAdditive; + this._setIdentity = setIdentity; + this._origIndex = 3; + this._addIndex = 4; + + /** + * TODO + * + * @type {number} + * @default 0 + */ + this.cumulativeWeight = 0; + + /** + * TODO + * + * @type {number} + * @default 0 + */ + this.cumulativeWeightAdditive = 0; + + /** + * TODO + * + * @type {number} + * @default 0 + */ + this.useCount = 0; + + /** + * TODO + * + * @type {number} + * @default 0 + */ + this.referenceCount = 0; + + } + + /** + * Accumulates data in the `incoming` region into `accu`. + * + * @param {number} accuIndex - The accumulation index. + * @param {number} weight - The weight. + */ + accumulate( accuIndex, weight ) { + + // note: happily accumulating nothing when weight = 0, the caller knows + // the weight and shouldn't have made the call in the first place + + const buffer = this.buffer, + stride = this.valueSize, + offset = accuIndex * stride + stride; + + let currentWeight = this.cumulativeWeight; + + if ( currentWeight === 0 ) { + + // accuN := incoming * weight + + for ( let i = 0; i !== stride; ++ i ) { + + buffer[ offset + i ] = buffer[ i ]; + + } + + currentWeight = weight; + + } else { + + // accuN := accuN + incoming * weight + + currentWeight += weight; + const mix = weight / currentWeight; + this._mixBufferRegion( buffer, offset, 0, mix, stride ); + + } + + this.cumulativeWeight = currentWeight; + + } + + /** + * Accumulates data in the `incoming` region into `add`. + * + * @param {number} weight - The weight. + */ + accumulateAdditive( weight ) { + + const buffer = this.buffer, + stride = this.valueSize, + offset = stride * this._addIndex; + + if ( this.cumulativeWeightAdditive === 0 ) { + + // add = identity + + this._setIdentity(); + + } + + // add := add + incoming * weight + + this._mixBufferRegionAdditive( buffer, offset, 0, weight, stride ); + this.cumulativeWeightAdditive += weight; + + } + + /** + * Applies the state of `accu` to the binding when accus differ. + * + * @param {number} accuIndex - The accumulation index. + */ + apply( accuIndex ) { + + const stride = this.valueSize, + buffer = this.buffer, + offset = accuIndex * stride + stride, + + weight = this.cumulativeWeight, + weightAdditive = this.cumulativeWeightAdditive, + + binding = this.binding; + + this.cumulativeWeight = 0; + this.cumulativeWeightAdditive = 0; + + if ( weight < 1 ) { + + // accuN := accuN + original * ( 1 - cumulativeWeight ) + + const originalValueOffset = stride * this._origIndex; + + this._mixBufferRegion( + buffer, offset, originalValueOffset, 1 - weight, stride ); + + } + + if ( weightAdditive > 0 ) { + + // accuN := accuN + additive accuN + + this._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride ); + + } + + for ( let i = stride, e = stride + stride; i !== e; ++ i ) { + + if ( buffer[ i ] !== buffer[ i + stride ] ) { + + // value has changed -> update scene graph + + binding.setValue( buffer, offset ); + break; + + } + + } + + } + + + /** + * Remembers the state of the bound property and copy it to both accus. + */ + saveOriginalState() { + + const binding = this.binding; + + const buffer = this.buffer, + stride = this.valueSize, + + originalValueOffset = stride * this._origIndex; + + binding.getValue( buffer, originalValueOffset ); + + // accu[0..1] := orig -- initially detect changes against the original + for ( let i = stride, e = originalValueOffset; i !== e; ++ i ) { + + buffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ]; + + } + + // Add to identity for additive + this._setIdentity(); + + this.cumulativeWeight = 0; + this.cumulativeWeightAdditive = 0; + + } + + /** + * Applies the state previously taken via {@link PropertyMixer#saveOriginalState} to the binding. + */ + restoreOriginalState() { + + const originalValueOffset = this.valueSize * 3; + this.binding.setValue( this.buffer, originalValueOffset ); + + } + + // internals + + _setAdditiveIdentityNumeric() { + + const startIndex = this._addIndex * this.valueSize; + const endIndex = startIndex + this.valueSize; + + for ( let i = startIndex; i < endIndex; i ++ ) { + + this.buffer[ i ] = 0; + + } + + } + + _setAdditiveIdentityQuaternion() { + + this._setAdditiveIdentityNumeric(); + this.buffer[ this._addIndex * this.valueSize + 3 ] = 1; + + } + + _setAdditiveIdentityOther() { + + const startIndex = this._origIndex * this.valueSize; + const targetIndex = this._addIndex * this.valueSize; + + for ( let i = 0; i < this.valueSize; i ++ ) { + + this.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ]; + + } + + } + + + // mix functions + + _select( buffer, dstOffset, srcOffset, t, stride ) { + + if ( t >= 0.5 ) { + + for ( let i = 0; i !== stride; ++ i ) { + + buffer[ dstOffset + i ] = buffer[ srcOffset + i ]; + + } + + } + + } + + _slerp( buffer, dstOffset, srcOffset, t ) { + + Quaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t ); + + } + + _slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) { + + const workOffset = this._workIndex * stride; + + // Store result in intermediate buffer offset + Quaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset ); + + // Slerp to the intermediate result + Quaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t ); + + } + + _lerp( buffer, dstOffset, srcOffset, t, stride ) { + + const s = 1 - t; + + for ( let i = 0; i !== stride; ++ i ) { + + const j = dstOffset + i; + + buffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t; + + } + + } + + _lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) { + + for ( let i = 0; i !== stride; ++ i ) { + + const j = dstOffset + i; + + buffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t; + + } + + } + +} + +// Characters [].:/ are reserved for track binding syntax. +const _RESERVED_CHARS_RE = '\\[\\]\\.:\\/'; +const _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' ); + +// Attempts to allow node names from any language. ES5's `\w` regexp matches +// only latin characters, and the unicode \p{L} is not yet supported. So +// instead, we exclude reserved characters and match everything else. +const _wordChar = '[^' + _RESERVED_CHARS_RE + ']'; +const _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\.', '' ) + ']'; + +// Parent directories, delimited by '/' or ':'. Currently unused, but must +// be matched to parse the rest of the track name. +const _directoryRe = /*@__PURE__*/ /((?:WC+[\/:])*)/.source.replace( 'WC', _wordChar ); + +// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'. +const _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot ); + +// Object on target node, and accessor. May not contain reserved +// characters. Accessor may contain any character except closing bracket. +const _objectRe = /*@__PURE__*/ /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace( 'WC', _wordChar ); + +// Property and accessor. May not contain reserved characters. Accessor may +// contain any non-bracket characters. +const _propertyRe = /*@__PURE__*/ /\.(WC+)(?:\[(.+)\])?/.source.replace( 'WC', _wordChar ); + +const _trackRe = new RegExp( '' + + '^' + + _directoryRe + + _nodeRe + + _objectRe + + _propertyRe + + '$' +); + +const _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ]; + +class Composite { + + constructor( targetGroup, path, optionalParsedPath ) { + + const parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path ); + + this._targetGroup = targetGroup; + this._bindings = targetGroup.subscribe_( path, parsedPath ); + + } + + getValue( array, offset ) { + + this.bind(); // bind all binding + + const firstValidIndex = this._targetGroup.nCachedObjects_, + binding = this._bindings[ firstValidIndex ]; + + // and only call .getValue on the first + if ( binding !== undefined ) binding.getValue( array, offset ); + + } + + setValue( array, offset ) { + + const bindings = this._bindings; + + for ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].setValue( array, offset ); + + } + + } + + bind() { + + const bindings = this._bindings; + + for ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].bind(); + + } + + } + + unbind() { + + const bindings = this._bindings; + + for ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].unbind(); + + } + + } + +} + +// Note: This class uses a State pattern on a per-method basis: +// 'bind' sets 'this.getValue' / 'setValue' and shadows the +// prototype version of these methods with one that represents +// the bound state. When the property is not found, the methods +// become no-ops. + + +/** + * This holds a reference to a real property in the scene graph; used internally. + */ +class PropertyBinding { + + /** + * Constructs a new property binding. + * + * @param {Object} rootNode - The root node. + * @param {string} path - The path. + * @param {?Object} [parsedPath] - The parsed path. + */ + constructor( rootNode, path, parsedPath ) { + + /** + * The object path to the animated property. + * + * @type {string} + */ + this.path = path; + + /** + * An object holding information about the path. + * + * @type {Object} + */ + this.parsedPath = parsedPath || PropertyBinding.parseTrackName( path ); + + /** + * The object owns the animated property. + * + * @type {?Object} + */ + this.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ); + + /** + * The root node. + * + * @type {Object3D|Skeleton} + */ + this.rootNode = rootNode; + + // initial state of these methods that calls 'bind' + this.getValue = this._getValue_unbound; + this.setValue = this._setValue_unbound; + + } + + + /** + * Factory method for creating a property binding from the given parameters. + * + * @static + * @param {Object} root - The root node. + * @param {string} path - The path. + * @param {?Object} [parsedPath] - The parsed path. + * @return {PropertyBinding|Composite} The created property binding or composite. + */ + static create( root, path, parsedPath ) { + + if ( ! ( root && root.isAnimationObjectGroup ) ) { + + return new PropertyBinding( root, path, parsedPath ); + + } else { + + return new PropertyBinding.Composite( root, path, parsedPath ); + + } + + } + + /** + * Replaces spaces with underscores and removes unsupported characters from + * node names, to ensure compatibility with parseTrackName(). + * + * @param {string} name - Node name to be sanitized. + * @return {string} The sanitized node name. + */ + static sanitizeNodeName( name ) { + + return name.replace( /\s/g, '_' ).replace( _reservedRe, '' ); + + } + + /** + * Parses the given track name (an object path to an animated property) and + * returns an object with information about the path. Matches strings in the following forms: + * + * - nodeName.property + * - nodeName.property[accessor] + * - nodeName.material.property[accessor] + * - uuid.property[accessor] + * - uuid.objectName[objectIndex].propertyName[propertyIndex] + * - parentName/nodeName.property + * - parentName/parentName/nodeName.property[index] + * - .bone[Armature.DEF_cog].position + * - scene:helium_balloon_model:helium_balloon_model.position + * + * @static + * @param {string} trackName - The track name to parse. + * @return {Object} The parsed track name as an object. + */ + static parseTrackName( trackName ) { + + const matches = _trackRe.exec( trackName ); + + if ( matches === null ) { + + throw new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName ); + + } + + const results = { + // directoryName: matches[ 1 ], // (tschw) currently unused + nodeName: matches[ 2 ], + objectName: matches[ 3 ], + objectIndex: matches[ 4 ], + propertyName: matches[ 5 ], // required + propertyIndex: matches[ 6 ] + }; + + const lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' ); + + if ( lastDot !== undefined && lastDot !== -1 ) { + + const objectName = results.nodeName.substring( lastDot + 1 ); + + // Object names must be checked against an allowlist. Otherwise, there + // is no way to parse 'foo.bar.baz': 'baz' must be a property, but + // 'bar' could be the objectName, or part of a nodeName (which can + // include '.' characters). + if ( _supportedObjectNames.indexOf( objectName ) !== -1 ) { + + results.nodeName = results.nodeName.substring( 0, lastDot ); + results.objectName = objectName; + + } + + } + + if ( results.propertyName === null || results.propertyName.length === 0 ) { + + throw new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName ); + + } + + return results; + + } + + /** + * Searches for a node in the hierarchy of the given root object by the given + * node name. + * + * @static + * @param {Object} root - The root object. + * @param {string|number} nodeName - The name of the node. + * @return {?Object} The found node. Returns `null` if no object was found. + */ + static findNode( root, nodeName ) { + + if ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === -1 || nodeName === root.name || nodeName === root.uuid ) { + + return root; + + } + + // search into skeleton bones. + if ( root.skeleton ) { + + const bone = root.skeleton.getBoneByName( nodeName ); + + if ( bone !== undefined ) { + + return bone; + + } + + } + + // search into node subtree. + if ( root.children ) { + + const searchNodeSubtree = function ( children ) { + + for ( let i = 0; i < children.length; i ++ ) { + + const childNode = children[ i ]; + + if ( childNode.name === nodeName || childNode.uuid === nodeName ) { + + return childNode; + + } + + const result = searchNodeSubtree( childNode.children ); + + if ( result ) return result; + + } + + return null; + + }; + + const subTreeNode = searchNodeSubtree( root.children ); + + if ( subTreeNode ) { + + return subTreeNode; + + } + + } + + return null; + + } + + // these are used to "bind" a nonexistent property + _getValue_unavailable() {} + _setValue_unavailable() {} + + // Getters + + _getValue_direct( buffer, offset ) { + + buffer[ offset ] = this.targetObject[ this.propertyName ]; + + } + + _getValue_array( buffer, offset ) { + + const source = this.resolvedProperty; + + for ( let i = 0, n = source.length; i !== n; ++ i ) { + + buffer[ offset ++ ] = source[ i ]; + + } + + } + + _getValue_arrayElement( buffer, offset ) { + + buffer[ offset ] = this.resolvedProperty[ this.propertyIndex ]; + + } + + _getValue_toArray( buffer, offset ) { + + this.resolvedProperty.toArray( buffer, offset ); + + } + + // Direct + + _setValue_direct( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + + } + + _setValue_direct_setNeedsUpdate( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + this.targetObject.needsUpdate = true; + + } + + _setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + // EntireArray + + _setValue_array( buffer, offset ) { + + const dest = this.resolvedProperty; + + for ( let i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + } + + _setValue_array_setNeedsUpdate( buffer, offset ) { + + const dest = this.resolvedProperty; + + for ( let i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + this.targetObject.needsUpdate = true; + + } + + _setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) { + + const dest = this.resolvedProperty; + + for ( let i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + // ArrayElement + + _setValue_arrayElement( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + + } + + _setValue_arrayElement_setNeedsUpdate( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + this.targetObject.needsUpdate = true; + + } + + _setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + // HasToFromArray + + _setValue_fromArray( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + + } + + _setValue_fromArray_setNeedsUpdate( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + this.targetObject.needsUpdate = true; + + } + + _setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + _getValue_unbound( targetArray, offset ) { + + this.bind(); + this.getValue( targetArray, offset ); + + } + + _setValue_unbound( sourceArray, offset ) { + + this.bind(); + this.setValue( sourceArray, offset ); + + } + + /** + * Creates a getter / setter pair for the property tracked by this binding. + */ + bind() { + + let targetObject = this.node; + const parsedPath = this.parsedPath; + + const objectName = parsedPath.objectName; + const propertyName = parsedPath.propertyName; + let propertyIndex = parsedPath.propertyIndex; + + if ( ! targetObject ) { + + targetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ); + + this.node = targetObject; + + } + + // set fail state so we can just 'return' on error + this.getValue = this._getValue_unavailable; + this.setValue = this._setValue_unavailable; + + // ensure there is a value node + if ( ! targetObject ) { + + console.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' ); + return; + + } + + if ( objectName ) { + + let objectIndex = parsedPath.objectIndex; + + // special cases were we need to reach deeper into the hierarchy to get the face materials.... + switch ( objectName ) { + + case 'materials': + + if ( ! targetObject.material ) { + + console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this ); + return; + + } + + if ( ! targetObject.material.materials ) { + + console.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this ); + return; + + } + + targetObject = targetObject.material.materials; + + break; + + case 'bones': + + if ( ! targetObject.skeleton ) { + + console.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this ); + return; + + } + + // potential future optimization: skip this if propertyIndex is already an integer + // and convert the integer string to a true integer. + + targetObject = targetObject.skeleton.bones; + + // support resolving morphTarget names into indices. + for ( let i = 0; i < targetObject.length; i ++ ) { + + if ( targetObject[ i ].name === objectIndex ) { + + objectIndex = i; + break; + + } + + } + + break; + + case 'map': + + if ( 'map' in targetObject ) { + + targetObject = targetObject.map; + break; + + } + + if ( ! targetObject.material ) { + + console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this ); + return; + + } + + if ( ! targetObject.material.map ) { + + console.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this ); + return; + + } + + targetObject = targetObject.material.map; + break; + + default: + + if ( targetObject[ objectName ] === undefined ) { + + console.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this ); + return; + + } + + targetObject = targetObject[ objectName ]; + + } + + + if ( objectIndex !== undefined ) { + + if ( targetObject[ objectIndex ] === undefined ) { + + console.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject ); + return; + + } + + targetObject = targetObject[ objectIndex ]; + + } + + } + + // resolve property + const nodeProperty = targetObject[ propertyName ]; + + if ( nodeProperty === undefined ) { + + const nodeName = parsedPath.nodeName; + + console.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName + + '.' + propertyName + ' but it wasn\'t found.', targetObject ); + return; + + } + + // determine versioning scheme + let versioning = this.Versioning.None; + + this.targetObject = targetObject; + + if ( targetObject.isMaterial === true ) { + + versioning = this.Versioning.NeedsUpdate; + + } else if ( targetObject.isObject3D === true ) { + + versioning = this.Versioning.MatrixWorldNeedsUpdate; + + } + + // determine how the property gets bound + let bindingType = this.BindingType.Direct; + + if ( propertyIndex !== undefined ) { + + // access a sub element of the property array (only primitives are supported right now) + + if ( propertyName === 'morphTargetInfluences' ) { + + // potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer. + + // support resolving morphTarget names into indices. + if ( ! targetObject.geometry ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this ); + return; + + } + + if ( ! targetObject.geometry.morphAttributes ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this ); + return; + + } + + if ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) { + + propertyIndex = targetObject.morphTargetDictionary[ propertyIndex ]; + + } + + } + + bindingType = this.BindingType.ArrayElement; + + this.resolvedProperty = nodeProperty; + this.propertyIndex = propertyIndex; + + } else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) { + + // must use copy for Object3D.Euler/Quaternion + + bindingType = this.BindingType.HasFromToArray; + + this.resolvedProperty = nodeProperty; + + } else if ( Array.isArray( nodeProperty ) ) { + + bindingType = this.BindingType.EntireArray; + + this.resolvedProperty = nodeProperty; + + } else { + + this.propertyName = propertyName; + + } + + // select getter / setter + this.getValue = this.GetterByBindingType[ bindingType ]; + this.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ]; + + } + + /** + * Unbinds the property. + */ + unbind() { + + this.node = null; + + // back to the prototype version of getValue / setValue + // note: avoiding to mutate the shape of 'this' via 'delete' + this.getValue = this._getValue_unbound; + this.setValue = this._setValue_unbound; + + } + +} + +PropertyBinding.Composite = Composite; + +PropertyBinding.prototype.BindingType = { + Direct: 0, + EntireArray: 1, + ArrayElement: 2, + HasFromToArray: 3 +}; + +PropertyBinding.prototype.Versioning = { + None: 0, + NeedsUpdate: 1, + MatrixWorldNeedsUpdate: 2 +}; + +PropertyBinding.prototype.GetterByBindingType = [ + + PropertyBinding.prototype._getValue_direct, + PropertyBinding.prototype._getValue_array, + PropertyBinding.prototype._getValue_arrayElement, + PropertyBinding.prototype._getValue_toArray, + +]; + +PropertyBinding.prototype.SetterByBindingTypeAndVersioning = [ + + [ + // Direct + PropertyBinding.prototype._setValue_direct, + PropertyBinding.prototype._setValue_direct_setNeedsUpdate, + PropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate, + + ], [ + + // EntireArray + + PropertyBinding.prototype._setValue_array, + PropertyBinding.prototype._setValue_array_setNeedsUpdate, + PropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate, + + ], [ + + // ArrayElement + PropertyBinding.prototype._setValue_arrayElement, + PropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate, + PropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate, + + ], [ + + // HasToFromArray + PropertyBinding.prototype._setValue_fromArray, + PropertyBinding.prototype._setValue_fromArray_setNeedsUpdate, + PropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate, + + ] + +]; + +/** + * A group of objects that receives a shared animation state. + * + * Usage: + * + * - Add objects you would otherwise pass as 'root' to the + * constructor or the .clipAction method of AnimationMixer. + * - Instead pass this object as 'root'. + * - You can also add and remove objects later when the mixer is running. + * + * Note: + * + * - Objects of this class appear as one object to the mixer, + * so cache control of the individual objects must be done on the group. + * + * Limitation: + * + * - The animated properties must be compatible among the all objects in the group. + * - A single property can either be controlled through a target group or directly, but not both. + */ +class AnimationObjectGroup { + + /** + * Constructs a new animation group. + * + * @param {...Object3D} arguments - An arbitrary number of 3D objects that share the same animation state. + */ + constructor() { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isAnimationObjectGroup = true; + + /** + * The UUID of the 3D object. + * + * @type {string} + * @readonly + */ + this.uuid = generateUUID(); + + // cached objects followed by the active ones + this._objects = Array.prototype.slice.call( arguments ); + + this.nCachedObjects_ = 0; // threshold + // note: read by PropertyBinding.Composite + + const indices = {}; + this._indicesByUUID = indices; // for bookkeeping + + for ( let i = 0, n = arguments.length; i !== n; ++ i ) { + + indices[ arguments[ i ].uuid ] = i; + + } + + this._paths = []; // inside: string + this._parsedPaths = []; // inside: { we don't care, here } + this._bindings = []; // inside: Array< PropertyBinding > + this._bindingsIndicesByPath = {}; // inside: indices in these arrays + + const scope = this; + + this.stats = { + + objects: { + get total() { + + return scope._objects.length; + + }, + get inUse() { + + return this.total - scope.nCachedObjects_; + + } + }, + get bindingsPerObject() { + + return scope._bindings.length; + + } + + }; + + } + + /** + * Adds an arbitrary number of objects to this animation group. + * + * @param {...Object3D} arguments - The 3D objects to add. + */ + add() { + + const objects = this._objects, + indicesByUUID = this._indicesByUUID, + paths = this._paths, + parsedPaths = this._parsedPaths, + bindings = this._bindings, + nBindings = bindings.length; + + let knownObject = undefined, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_; + + for ( let i = 0, n = arguments.length; i !== n; ++ i ) { + + const object = arguments[ i ], + uuid = object.uuid; + let index = indicesByUUID[ uuid ]; + + if ( index === undefined ) { + + // unknown object -> add it to the ACTIVE region + + index = nObjects ++; + indicesByUUID[ uuid ] = index; + objects.push( object ); + + // accounting is done, now do the same for all bindings + + for ( let j = 0, m = nBindings; j !== m; ++ j ) { + + bindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) ); + + } + + } else if ( index < nCachedObjects ) { + + knownObject = objects[ index ]; + + // move existing object to the ACTIVE region + + const firstActiveIndex = -- nCachedObjects, + lastCachedObject = objects[ firstActiveIndex ]; + + indicesByUUID[ lastCachedObject.uuid ] = index; + objects[ index ] = lastCachedObject; + + indicesByUUID[ uuid ] = firstActiveIndex; + objects[ firstActiveIndex ] = object; + + // accounting is done, now do the same for all bindings + + for ( let j = 0, m = nBindings; j !== m; ++ j ) { + + const bindingsForPath = bindings[ j ], + lastCached = bindingsForPath[ firstActiveIndex ]; + + let binding = bindingsForPath[ index ]; + + bindingsForPath[ index ] = lastCached; + + if ( binding === undefined ) { + + // since we do not bother to create new bindings + // for objects that are cached, the binding may + // or may not exist + + binding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ); + + } + + bindingsForPath[ firstActiveIndex ] = binding; + + } + + } else if ( objects[ index ] !== knownObject ) { + + console.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' + + 'detected. Clean the caches or recreate your infrastructure when reloading scenes.' ); + + } // else the object is already where we want it to be + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + } + + /** + * Removes an arbitrary number of objects to this animation group + * + * @param {...Object3D} arguments - The 3D objects to remove. + */ + remove() { + + const objects = this._objects, + indicesByUUID = this._indicesByUUID, + bindings = this._bindings, + nBindings = bindings.length; + + let nCachedObjects = this.nCachedObjects_; + + for ( let i = 0, n = arguments.length; i !== n; ++ i ) { + + const object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ]; + + if ( index !== undefined && index >= nCachedObjects ) { + + // move existing object into the CACHED region + + const lastCachedIndex = nCachedObjects ++, + firstActiveObject = objects[ lastCachedIndex ]; + + indicesByUUID[ firstActiveObject.uuid ] = index; + objects[ index ] = firstActiveObject; + + indicesByUUID[ uuid ] = lastCachedIndex; + objects[ lastCachedIndex ] = object; + + // accounting is done, now do the same for all bindings + + for ( let j = 0, m = nBindings; j !== m; ++ j ) { + + const bindingsForPath = bindings[ j ], + firstActive = bindingsForPath[ lastCachedIndex ], + binding = bindingsForPath[ index ]; + + bindingsForPath[ index ] = firstActive; + bindingsForPath[ lastCachedIndex ] = binding; + + } + + } + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + } + + /** + * Deallocates all memory resources for the passed 3D objects of this animation group. + * + * @param {...Object3D} arguments - The 3D objects to uncache. + */ + uncache() { + + const objects = this._objects, + indicesByUUID = this._indicesByUUID, + bindings = this._bindings, + nBindings = bindings.length; + + let nCachedObjects = this.nCachedObjects_, + nObjects = objects.length; + + for ( let i = 0, n = arguments.length; i !== n; ++ i ) { + + const object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ]; + + if ( index !== undefined ) { + + delete indicesByUUID[ uuid ]; + + if ( index < nCachedObjects ) { + + // object is cached, shrink the CACHED region + + const firstActiveIndex = -- nCachedObjects, + lastCachedObject = objects[ firstActiveIndex ], + lastIndex = -- nObjects, + lastObject = objects[ lastIndex ]; + + // last cached object takes this object's place + indicesByUUID[ lastCachedObject.uuid ] = index; + objects[ index ] = lastCachedObject; + + // last object goes to the activated slot and pop + indicesByUUID[ lastObject.uuid ] = firstActiveIndex; + objects[ firstActiveIndex ] = lastObject; + objects.pop(); + + // accounting is done, now do the same for all bindings + + for ( let j = 0, m = nBindings; j !== m; ++ j ) { + + const bindingsForPath = bindings[ j ], + lastCached = bindingsForPath[ firstActiveIndex ], + last = bindingsForPath[ lastIndex ]; + + bindingsForPath[ index ] = lastCached; + bindingsForPath[ firstActiveIndex ] = last; + bindingsForPath.pop(); + + } + + } else { + + // object is active, just swap with the last and pop + + const lastIndex = -- nObjects, + lastObject = objects[ lastIndex ]; + + if ( lastIndex > 0 ) { + + indicesByUUID[ lastObject.uuid ] = index; + + } + + objects[ index ] = lastObject; + objects.pop(); + + // accounting is done, now do the same for all bindings + + for ( let j = 0, m = nBindings; j !== m; ++ j ) { + + const bindingsForPath = bindings[ j ]; + + bindingsForPath[ index ] = bindingsForPath[ lastIndex ]; + bindingsForPath.pop(); + + } + + } // cached or active + + } // if object is known + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + } + + // Internal interface used by befriended PropertyBinding.Composite: + + subscribe_( path, parsedPath ) { + + // returns an array of bindings for the given path that is changed + // according to the contained objects in the group + + const indicesByPath = this._bindingsIndicesByPath; + let index = indicesByPath[ path ]; + const bindings = this._bindings; + + if ( index !== undefined ) return bindings[ index ]; + + const paths = this._paths, + parsedPaths = this._parsedPaths, + objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + bindingsForPath = new Array( nObjects ); + + index = bindings.length; + + indicesByPath[ path ] = index; + + paths.push( path ); + parsedPaths.push( parsedPath ); + bindings.push( bindingsForPath ); + + for ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) { + + const object = objects[ i ]; + bindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath ); + + } + + return bindingsForPath; + + } + + unsubscribe_( path ) { + + // tells the group to forget about a property path and no longer + // update the array previously obtained with 'subscribe_' + + const indicesByPath = this._bindingsIndicesByPath, + index = indicesByPath[ path ]; + + if ( index !== undefined ) { + + const paths = this._paths, + parsedPaths = this._parsedPaths, + bindings = this._bindings, + lastBindingsIndex = bindings.length - 1, + lastBindings = bindings[ lastBindingsIndex ], + lastBindingsPath = path[ lastBindingsIndex ]; + + indicesByPath[ lastBindingsPath ] = index; + + bindings[ index ] = lastBindings; + bindings.pop(); + + parsedPaths[ index ] = parsedPaths[ lastBindingsIndex ]; + parsedPaths.pop(); + + paths[ index ] = paths[ lastBindingsIndex ]; + paths.pop(); + + } + + } + +} + +/** + * An instance of `AnimationAction` schedules the playback of an animation which is + * stored in {@link AnimationClip}. + */ +class AnimationAction { + + /** + * Constructs a new animation action. + * + * @param {AnimationMixer} mixer - The mixer that is controlled by this action. + * @param {AnimationClip} clip - The animation clip that holds the actual keyframes. + * @param {?Object3D} [localRoot=null] - The root object on which this action is performed. + * @param {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} [blendMode] - The blend mode. + */ + constructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) { + + this._mixer = mixer; + this._clip = clip; + this._localRoot = localRoot; + + /** + * Defines how the animation is blended/combined when two or more animations + * are simultaneously played. + * + * @type {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} + */ + this.blendMode = blendMode; + + const tracks = clip.tracks, + nTracks = tracks.length, + interpolants = new Array( nTracks ); + + const interpolantSettings = { + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + }; + + for ( let i = 0; i !== nTracks; ++ i ) { + + const interpolant = tracks[ i ].createInterpolant( null ); + interpolants[ i ] = interpolant; + interpolant.settings = interpolantSettings; + + } + + this._interpolantSettings = interpolantSettings; + + this._interpolants = interpolants; // bound by the mixer + + // inside: PropertyMixer (managed by the mixer) + this._propertyBindings = new Array( nTracks ); + + this._cacheIndex = null; // for the memory manager + this._byClipCacheIndex = null; // for the memory manager + + this._timeScaleInterpolant = null; + this._weightInterpolant = null; + + /** + * The loop mode, set via {@link AnimationAction#setLoop}. + * + * @type {(LoopRepeat|LoopOnce|LoopPingPong)} + * @default LoopRepeat + */ + this.loop = LoopRepeat; + this._loopCount = -1; + + // global mixer time when the action is to be started + // it's set back to 'null' upon start of the action + this._startTime = null; + + /** + * The local time of this action (in seconds, starting with `0`). + * + * The value gets clamped or wrapped to `[0,clip.duration]` (according to the + * loop state). + * + * @type {number} + * @default Infinity + */ + this.time = 0; + + /** + * Scaling factor for the {@link AnimationAction#time}. A value of `0` causes the + * animation to pause. Negative values cause the animation to play backwards. + * + * @type {number} + * @default 1 + */ + this.timeScale = 1; + this._effectiveTimeScale = 1; + + /** + * The degree of influence of this action (in the interval `[0, 1]`). Values + * between `0` (no impact) and `1` (full impact) can be used to blend between + * several actions. + * + * @type {number} + * @default 1 + */ + this.weight = 1; + this._effectiveWeight = 1; + + /** + * The number of repetitions of the performed clip over the course of this action. + * Can be set via {@link AnimationAction#setLoop}. + * + * Setting this number has no effect if {@link AnimationAction#loop} is set to + * `THREE:LoopOnce`. + * + * @type {number} + * @default Infinity + */ + this.repetitions = Infinity; + + /** + * If set to `true`, the playback of the action is paused. + * + * @type {boolean} + * @default false + */ + this.paused = false; + + /** + * If set to `false`, the action is disabled so it has no impact. + * + * When the action is re-enabled, the animation continues from its current + * time (setting `enabled` to `false` doesn't reset the action). + * + * @type {boolean} + * @default true + */ + this.enabled = true; + + /** + * If set to true the animation will automatically be paused on its last frame. + * + * If set to false, {@link AnimationAction#enabled} will automatically be switched + * to `false` when the last loop of the action has finished, so that this action has + * no further impact. + * + * Note: This member has no impact if the action is interrupted (it + * has only an effect if its last loop has really finished). + * + * @type {boolean} + * @default false + */ + this.clampWhenFinished = false; + + /** + * Enables smooth interpolation without separate clips for start, loop and end. + * + * @type {boolean} + * @default true + */ + this.zeroSlopeAtStart = true; + + /** + * Enables smooth interpolation without separate clips for start, loop and end. + * + * @type {boolean} + * @default true + */ + this.zeroSlopeAtEnd = true; + + } + + /** + * Starts the playback of the animation. + * + * @return {AnimationAction} A reference to this animation action. + */ + play() { + + this._mixer._activateAction( this ); + + return this; + + } + + /** + * Stops the playback of the animation. + * + * @return {AnimationAction} A reference to this animation action. + */ + stop() { + + this._mixer._deactivateAction( this ); + + return this.reset(); + + } + + /** + * Resets the playback of the animation. + * + * @return {AnimationAction} A reference to this animation action. + */ + reset() { + + this.paused = false; + this.enabled = true; + + this.time = 0; // restart clip + this._loopCount = -1;// forget previous loops + this._startTime = null;// forget scheduling + + return this.stopFading().stopWarping(); + + } + + /** + * Returns `true` if the animation is running. + * + * @return {boolean} Whether the animation is running or not. + */ + isRunning() { + + return this.enabled && ! this.paused && this.timeScale !== 0 && + this._startTime === null && this._mixer._isActiveAction( this ); + + } + + /** + * Returns `true` when {@link AnimationAction#play} has been called. + * + * @return {boolean} Whether the animation is scheduled or not. + */ + isScheduled() { + + return this._mixer._isActiveAction( this ); + + } + + /** + * Defines the time when the animation should start. + * + * @param {number} time - The start time in seconds. + * @return {AnimationAction} A reference to this animation action. + */ + startAt( time ) { + + this._startTime = time; + + return this; + + } + + /** + * Configures the loop settings for this action. + * + * @param {(LoopRepeat|LoopOnce|LoopPingPong)} mode - The loop mode. + * @param {number} repetitions - The number of repetitions. + * @return {AnimationAction} A reference to this animation action. + */ + setLoop( mode, repetitions ) { + + this.loop = mode; + this.repetitions = repetitions; + + return this; + + } + + /** + * Sets the effective weight of this action. + * + * An action has no effect and thus an effective weight of zero when the + * action is disabled. + * + * @param {number} weight - The weight to set. + * @return {AnimationAction} A reference to this animation action. + */ + setEffectiveWeight( weight ) { + + this.weight = weight; + + // note: same logic as when updated at runtime + this._effectiveWeight = this.enabled ? weight : 0; + + return this.stopFading(); + + } + + /** + * Returns the effective weight of this action. + * + * @return {number} The effective weight. + */ + getEffectiveWeight() { + + return this._effectiveWeight; + + } + + /** + * Fades the animation in by increasing its weight gradually from `0` to `1`, + * within the passed time interval. + * + * @param {number} duration - The duration of the fade. + * @return {AnimationAction} A reference to this animation action. + */ + fadeIn( duration ) { + + return this._scheduleFading( duration, 0, 1 ); + + } + + /** + * Fades the animation out by decreasing its weight gradually from `1` to `0`, + * within the passed time interval. + * + * @param {number} duration - The duration of the fade. + * @return {AnimationAction} A reference to this animation action. + */ + fadeOut( duration ) { + + return this._scheduleFading( duration, 1, 0 ); + + } + + /** + * Causes this action to fade in and the given action to fade out, + * within the passed time interval. + * + * @param {AnimationAction} fadeOutAction - The animation action to fade out. + * @param {number} duration - The duration of the fade. + * @param {boolean} [warp=false] - Whether warping should be used or not. + * @return {AnimationAction} A reference to this animation action. + */ + crossFadeFrom( fadeOutAction, duration, warp = false ) { + + fadeOutAction.fadeOut( duration ); + this.fadeIn( duration ); + + if ( warp === true ) { + + const fadeInDuration = this._clip.duration, + fadeOutDuration = fadeOutAction._clip.duration, + + startEndRatio = fadeOutDuration / fadeInDuration, + endStartRatio = fadeInDuration / fadeOutDuration; + + fadeOutAction.warp( 1.0, startEndRatio, duration ); + this.warp( endStartRatio, 1.0, duration ); + + } + + return this; + + } + + /** + * Causes this action to fade out and the given action to fade in, + * within the passed time interval. + * + * @param {AnimationAction} fadeInAction - The animation action to fade in. + * @param {number} duration - The duration of the fade. + * @param {boolean} [warp=false] - Whether warping should be used or not. + * @return {AnimationAction} A reference to this animation action. + */ + crossFadeTo( fadeInAction, duration, warp = false ) { + + return fadeInAction.crossFadeFrom( this, duration, warp ); + + } + + /** + * Stops any fading which is applied to this action. + * + * @return {AnimationAction} A reference to this animation action. + */ + stopFading() { + + const weightInterpolant = this._weightInterpolant; + + if ( weightInterpolant !== null ) { + + this._weightInterpolant = null; + this._mixer._takeBackControlInterpolant( weightInterpolant ); + + } + + return this; + + } + + /** + * Sets the effective time scale of this action. + * + * An action has no effect and thus an effective time scale of zero when the + * action is paused. + * + * @param {number} timeScale - The time scale to set. + * @return {AnimationAction} A reference to this animation action. + */ + setEffectiveTimeScale( timeScale ) { + + this.timeScale = timeScale; + this._effectiveTimeScale = this.paused ? 0 : timeScale; + + return this.stopWarping(); + + } + + /** + * Returns the effective time scale of this action. + * + * @return {number} The effective time scale. + */ + getEffectiveTimeScale() { + + return this._effectiveTimeScale; + + } + + /** + * Sets the duration for a single loop of this action. + * + * @param {number} duration - The duration to set. + * @return {AnimationAction} A reference to this animation action. + */ + setDuration( duration ) { + + this.timeScale = this._clip.duration / duration; + + return this.stopWarping(); + + } + + /** + * Synchronizes this action with the passed other action. + * + * @param {AnimationAction} action - The action to sync with. + * @return {AnimationAction} A reference to this animation action. + */ + syncWith( action ) { + + this.time = action.time; + this.timeScale = action.timeScale; + + return this.stopWarping(); + + } + + /** + * Decelerates this animation's speed to `0` within the passed time interval. + * + * @param {number} duration - The duration. + * @return {AnimationAction} A reference to this animation action. + */ + halt( duration ) { + + return this.warp( this._effectiveTimeScale, 0, duration ); + + } + + /** + * Changes the playback speed, within the passed time interval, by modifying + * {@link AnimationAction#timeScale} gradually from `startTimeScale` to + * `endTimeScale`. + * + * @param {number} startTimeScale - The start time scale. + * @param {number} endTimeScale - The end time scale. + * @param {number} duration - The duration. + * @return {AnimationAction} A reference to this animation action. + */ + warp( startTimeScale, endTimeScale, duration ) { + + const mixer = this._mixer, + now = mixer.time, + timeScale = this.timeScale; + + let interpolant = this._timeScaleInterpolant; + + if ( interpolant === null ) { + + interpolant = mixer._lendControlInterpolant(); + this._timeScaleInterpolant = interpolant; + + } + + const times = interpolant.parameterPositions, + values = interpolant.sampleValues; + + times[ 0 ] = now; + times[ 1 ] = now + duration; + + values[ 0 ] = startTimeScale / timeScale; + values[ 1 ] = endTimeScale / timeScale; + + return this; + + } + + /** + * Stops any scheduled warping which is applied to this action. + * + * @return {AnimationAction} A reference to this animation action. + */ + stopWarping() { + + const timeScaleInterpolant = this._timeScaleInterpolant; + + if ( timeScaleInterpolant !== null ) { + + this._timeScaleInterpolant = null; + this._mixer._takeBackControlInterpolant( timeScaleInterpolant ); + + } + + return this; + + } + + /** + * Returns the animation mixer of this animation action. + * + * @return {AnimationMixer} The animation mixer. + */ + getMixer() { + + return this._mixer; + + } + + /** + * Returns the animation clip of this animation action. + * + * @return {AnimationClip} The animation clip. + */ + getClip() { + + return this._clip; + + } + + /** + * Returns the root object of this animation action. + * + * @return {Object3D} The root object. + */ + getRoot() { + + return this._localRoot || this._mixer._root; + + } + + // Interna + + _update( time, deltaTime, timeDirection, accuIndex ) { + + // called by the mixer + + if ( ! this.enabled ) { + + // call ._updateWeight() to update ._effectiveWeight + + this._updateWeight( time ); + return; + + } + + const startTime = this._startTime; + + if ( startTime !== null ) { + + // check for scheduled start of action + + const timeRunning = ( time - startTime ) * timeDirection; + if ( timeRunning < 0 || timeDirection === 0 ) { + + deltaTime = 0; + + } else { + + + this._startTime = null; // unschedule + deltaTime = timeDirection * timeRunning; + + } + + } + + // apply time scale and advance time + + deltaTime *= this._updateTimeScale( time ); + const clipTime = this._updateTime( deltaTime ); + + // note: _updateTime may disable the action resulting in + // an effective weight of 0 + + const weight = this._updateWeight( time ); + + if ( weight > 0 ) { + + const interpolants = this._interpolants; + const propertyMixers = this._propertyBindings; + + switch ( this.blendMode ) { + + case AdditiveAnimationBlendMode: + + for ( let j = 0, m = interpolants.length; j !== m; ++ j ) { + + interpolants[ j ].evaluate( clipTime ); + propertyMixers[ j ].accumulateAdditive( weight ); + + } + + break; + + case NormalAnimationBlendMode: + default: + + for ( let j = 0, m = interpolants.length; j !== m; ++ j ) { + + interpolants[ j ].evaluate( clipTime ); + propertyMixers[ j ].accumulate( accuIndex, weight ); + + } + + } + + } + + } + + _updateWeight( time ) { + + let weight = 0; + + if ( this.enabled ) { + + weight = this.weight; + const interpolant = this._weightInterpolant; + + if ( interpolant !== null ) { + + const interpolantValue = interpolant.evaluate( time )[ 0 ]; + + weight *= interpolantValue; + + if ( time > interpolant.parameterPositions[ 1 ] ) { + + this.stopFading(); + + if ( interpolantValue === 0 ) { + + // faded out, disable + this.enabled = false; + + } + + } + + } + + } + + this._effectiveWeight = weight; + return weight; + + } + + _updateTimeScale( time ) { + + let timeScale = 0; + + if ( ! this.paused ) { + + timeScale = this.timeScale; + + const interpolant = this._timeScaleInterpolant; + + if ( interpolant !== null ) { + + const interpolantValue = interpolant.evaluate( time )[ 0 ]; + + timeScale *= interpolantValue; + + if ( time > interpolant.parameterPositions[ 1 ] ) { + + this.stopWarping(); + + if ( timeScale === 0 ) { + + // motion has halted, pause + this.paused = true; + + } else { + + // warp done - apply final time scale + this.timeScale = timeScale; + + } + + } + + } + + } + + this._effectiveTimeScale = timeScale; + return timeScale; + + } + + _updateTime( deltaTime ) { + + const duration = this._clip.duration; + const loop = this.loop; + + let time = this.time + deltaTime; + let loopCount = this._loopCount; + + const pingPong = ( loop === LoopPingPong ); + + if ( deltaTime === 0 ) { + + if ( loopCount === -1 ) return time; + + return ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time; + + } + + if ( loop === LoopOnce ) { + + if ( loopCount === -1 ) { + + // just started + + this._loopCount = 0; + this._setEndings( true, true, false ); + + } + + handle_stop: { + + if ( time >= duration ) { + + time = duration; + + } else if ( time < 0 ) { + + time = 0; + + } else { + + this.time = time; + + break handle_stop; + + } + + if ( this.clampWhenFinished ) this.paused = true; + else this.enabled = false; + + this.time = time; + + this._mixer.dispatchEvent( { + type: 'finished', action: this, + direction: deltaTime < 0 ? -1 : 1 + } ); + + } + + } else { // repetitive Repeat or PingPong + + if ( loopCount === -1 ) { + + // just started + + if ( deltaTime >= 0 ) { + + loopCount = 0; + + this._setEndings( true, this.repetitions === 0, pingPong ); + + } else { + + // when looping in reverse direction, the initial + // transition through zero counts as a repetition, + // so leave loopCount at -1 + + this._setEndings( this.repetitions === 0, true, pingPong ); + + } + + } + + if ( time >= duration || time < 0 ) { + + // wrap around + + const loopDelta = Math.floor( time / duration ); // signed + time -= duration * loopDelta; + + loopCount += Math.abs( loopDelta ); + + const pending = this.repetitions - loopCount; + + if ( pending <= 0 ) { + + // have to stop (switch state, clamp time, fire event) + + if ( this.clampWhenFinished ) this.paused = true; + else this.enabled = false; + + time = deltaTime > 0 ? duration : 0; + + this.time = time; + + this._mixer.dispatchEvent( { + type: 'finished', action: this, + direction: deltaTime > 0 ? 1 : -1 + } ); + + } else { + + // keep running + + if ( pending === 1 ) { + + // entering the last round + + const atStart = deltaTime < 0; + this._setEndings( atStart, ! atStart, pingPong ); + + } else { + + this._setEndings( false, false, pingPong ); + + } + + this._loopCount = loopCount; + + this.time = time; + + this._mixer.dispatchEvent( { + type: 'loop', action: this, loopDelta: loopDelta + } ); + + } + + } else { + + this.time = time; + + } + + if ( pingPong && ( loopCount & 1 ) === 1 ) { + + // invert time for the "pong round" + + return duration - time; + + } + + } + + return time; + + } + + _setEndings( atStart, atEnd, pingPong ) { + + const settings = this._interpolantSettings; + + if ( pingPong ) { + + settings.endingStart = ZeroSlopeEnding; + settings.endingEnd = ZeroSlopeEnding; + + } else { + + // assuming for LoopOnce atStart == atEnd == true + + if ( atStart ) { + + settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding; + + } else { + + settings.endingStart = WrapAroundEnding; + + } + + if ( atEnd ) { + + settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding; + + } else { + + settings.endingEnd = WrapAroundEnding; + + } + + } + + } + + _scheduleFading( duration, weightNow, weightThen ) { + + const mixer = this._mixer, now = mixer.time; + let interpolant = this._weightInterpolant; + + if ( interpolant === null ) { + + interpolant = mixer._lendControlInterpolant(); + this._weightInterpolant = interpolant; + + } + + const times = interpolant.parameterPositions, + values = interpolant.sampleValues; + + times[ 0 ] = now; + values[ 0 ] = weightNow; + times[ 1 ] = now + duration; + values[ 1 ] = weightThen; + + return this; + + } + +} + +const _controlInterpolantsResultBuffer = new Float32Array( 1 ); + +/** + * `AnimationMixer` is a player for animations on a particular object in + * the scene. When multiple objects in the scene are animated independently, + * one `AnimationMixer` may be used for each object. + */ +class AnimationMixer extends EventDispatcher { + + /** + * Constructs a new animation mixer. + * + * @param {Object3D} root - The object whose animations shall be played by this mixer. + */ + constructor( root ) { + + super(); + + this._root = root; + this._initMemoryManager(); + this._accuIndex = 0; + + /** + * The global mixer time (in seconds; starting with `0` on the mixer's creation). + * + * @type {number} + * @default 0 + */ + this.time = 0; + + /** + * A scaling factor for the global time. + * + * Note: Setting this member to `0` and later back to `1` is a + * possibility to pause/unpause all actions that are controlled by this + * mixer. + * + * @type {number} + * @default 1 + */ + this.timeScale = 1.0; + + } + + _bindAction( action, prototypeAction ) { + + const root = action._localRoot || this._root, + tracks = action._clip.tracks, + nTracks = tracks.length, + bindings = action._propertyBindings, + interpolants = action._interpolants, + rootUuid = root.uuid, + bindingsByRoot = this._bindingsByRootAndName; + + let bindingsByName = bindingsByRoot[ rootUuid ]; + + if ( bindingsByName === undefined ) { + + bindingsByName = {}; + bindingsByRoot[ rootUuid ] = bindingsByName; + + } + + for ( let i = 0; i !== nTracks; ++ i ) { + + const track = tracks[ i ], + trackName = track.name; + + let binding = bindingsByName[ trackName ]; + + if ( binding !== undefined ) { + + ++ binding.referenceCount; + bindings[ i ] = binding; + + } else { + + binding = bindings[ i ]; + + if ( binding !== undefined ) { + + // existing binding, make sure the cache knows + + if ( binding._cacheIndex === null ) { + + ++ binding.referenceCount; + this._addInactiveBinding( binding, rootUuid, trackName ); + + } + + continue; + + } + + const path = prototypeAction && prototypeAction. + _propertyBindings[ i ].binding.parsedPath; + + binding = new PropertyMixer( + PropertyBinding.create( root, trackName, path ), + track.ValueTypeName, track.getValueSize() ); + + ++ binding.referenceCount; + this._addInactiveBinding( binding, rootUuid, trackName ); + + bindings[ i ] = binding; + + } + + interpolants[ i ].resultBuffer = binding.buffer; + + } + + } + + _activateAction( action ) { + + if ( ! this._isActiveAction( action ) ) { + + if ( action._cacheIndex === null ) { + + // this action has been forgotten by the cache, but the user + // appears to be still using it -> rebind + + const rootUuid = ( action._localRoot || this._root ).uuid, + clipUuid = action._clip.uuid, + actionsForClip = this._actionsByClip[ clipUuid ]; + + this._bindAction( action, + actionsForClip && actionsForClip.knownActions[ 0 ] ); + + this._addInactiveAction( action, clipUuid, rootUuid ); + + } + + const bindings = action._propertyBindings; + + // increment reference counts / sort out state + for ( let i = 0, n = bindings.length; i !== n; ++ i ) { + + const binding = bindings[ i ]; + + if ( binding.useCount ++ === 0 ) { + + this._lendBinding( binding ); + binding.saveOriginalState(); + + } + + } + + this._lendAction( action ); + + } + + } + + _deactivateAction( action ) { + + if ( this._isActiveAction( action ) ) { + + const bindings = action._propertyBindings; + + // decrement reference counts / sort out state + for ( let i = 0, n = bindings.length; i !== n; ++ i ) { + + const binding = bindings[ i ]; + + if ( -- binding.useCount === 0 ) { + + binding.restoreOriginalState(); + this._takeBackBinding( binding ); + + } + + } + + this._takeBackAction( action ); + + } + + } + + // Memory manager + + _initMemoryManager() { + + this._actions = []; // 'nActiveActions' followed by inactive ones + this._nActiveActions = 0; + + this._actionsByClip = {}; + // inside: + // { + // knownActions: Array< AnimationAction > - used as prototypes + // actionByRoot: AnimationAction - lookup + // } + + + this._bindings = []; // 'nActiveBindings' followed by inactive ones + this._nActiveBindings = 0; + + this._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer > + + + this._controlInterpolants = []; // same game as above + this._nActiveControlInterpolants = 0; + + const scope = this; + + this.stats = { + + actions: { + get total() { + + return scope._actions.length; + + }, + get inUse() { + + return scope._nActiveActions; + + } + }, + bindings: { + get total() { + + return scope._bindings.length; + + }, + get inUse() { + + return scope._nActiveBindings; + + } + }, + controlInterpolants: { + get total() { + + return scope._controlInterpolants.length; + + }, + get inUse() { + + return scope._nActiveControlInterpolants; + + } + } + + }; + + } + + // Memory management for AnimationAction objects + + _isActiveAction( action ) { + + const index = action._cacheIndex; + return index !== null && index < this._nActiveActions; + + } + + _addInactiveAction( action, clipUuid, rootUuid ) { + + const actions = this._actions, + actionsByClip = this._actionsByClip; + + let actionsForClip = actionsByClip[ clipUuid ]; + + if ( actionsForClip === undefined ) { + + actionsForClip = { + + knownActions: [ action ], + actionByRoot: {} + + }; + + action._byClipCacheIndex = 0; + + actionsByClip[ clipUuid ] = actionsForClip; + + } else { + + const knownActions = actionsForClip.knownActions; + + action._byClipCacheIndex = knownActions.length; + knownActions.push( action ); + + } + + action._cacheIndex = actions.length; + actions.push( action ); + + actionsForClip.actionByRoot[ rootUuid ] = action; + + } + + _removeInactiveAction( action ) { + + const actions = this._actions, + lastInactiveAction = actions[ actions.length - 1 ], + cacheIndex = action._cacheIndex; + + lastInactiveAction._cacheIndex = cacheIndex; + actions[ cacheIndex ] = lastInactiveAction; + actions.pop(); + + action._cacheIndex = null; + + + const clipUuid = action._clip.uuid, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ], + knownActionsForClip = actionsForClip.knownActions, + + lastKnownAction = + knownActionsForClip[ knownActionsForClip.length - 1 ], + + byClipCacheIndex = action._byClipCacheIndex; + + lastKnownAction._byClipCacheIndex = byClipCacheIndex; + knownActionsForClip[ byClipCacheIndex ] = lastKnownAction; + knownActionsForClip.pop(); + + action._byClipCacheIndex = null; + + + const actionByRoot = actionsForClip.actionByRoot, + rootUuid = ( action._localRoot || this._root ).uuid; + + delete actionByRoot[ rootUuid ]; + + if ( knownActionsForClip.length === 0 ) { + + delete actionsByClip[ clipUuid ]; + + } + + this._removeInactiveBindingsForAction( action ); + + } + + _removeInactiveBindingsForAction( action ) { + + const bindings = action._propertyBindings; + + for ( let i = 0, n = bindings.length; i !== n; ++ i ) { + + const binding = bindings[ i ]; + + if ( -- binding.referenceCount === 0 ) { + + this._removeInactiveBinding( binding ); + + } + + } + + } + + _lendAction( action ) { + + // [ active actions | inactive actions ] + // [ active actions >| inactive actions ] + // s a + // <-swap-> + // a s + + const actions = this._actions, + prevIndex = action._cacheIndex, + + lastActiveIndex = this._nActiveActions ++, + + firstInactiveAction = actions[ lastActiveIndex ]; + + action._cacheIndex = lastActiveIndex; + actions[ lastActiveIndex ] = action; + + firstInactiveAction._cacheIndex = prevIndex; + actions[ prevIndex ] = firstInactiveAction; + + } + + _takeBackAction( action ) { + + // [ active actions | inactive actions ] + // [ active actions |< inactive actions ] + // a s + // <-swap-> + // s a + + const actions = this._actions, + prevIndex = action._cacheIndex, + + firstInactiveIndex = -- this._nActiveActions, + + lastActiveAction = actions[ firstInactiveIndex ]; + + action._cacheIndex = firstInactiveIndex; + actions[ firstInactiveIndex ] = action; + + lastActiveAction._cacheIndex = prevIndex; + actions[ prevIndex ] = lastActiveAction; + + } + + // Memory management for PropertyMixer objects + + _addInactiveBinding( binding, rootUuid, trackName ) { + + const bindingsByRoot = this._bindingsByRootAndName, + bindings = this._bindings; + + let bindingByName = bindingsByRoot[ rootUuid ]; + + if ( bindingByName === undefined ) { + + bindingByName = {}; + bindingsByRoot[ rootUuid ] = bindingByName; + + } + + bindingByName[ trackName ] = binding; + + binding._cacheIndex = bindings.length; + bindings.push( binding ); + + } + + _removeInactiveBinding( binding ) { + + const bindings = this._bindings, + propBinding = binding.binding, + rootUuid = propBinding.rootNode.uuid, + trackName = propBinding.path, + bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ], + + lastInactiveBinding = bindings[ bindings.length - 1 ], + cacheIndex = binding._cacheIndex; + + lastInactiveBinding._cacheIndex = cacheIndex; + bindings[ cacheIndex ] = lastInactiveBinding; + bindings.pop(); + + delete bindingByName[ trackName ]; + + if ( Object.keys( bindingByName ).length === 0 ) { + + delete bindingsByRoot[ rootUuid ]; + + } + + } + + _lendBinding( binding ) { + + const bindings = this._bindings, + prevIndex = binding._cacheIndex, + + lastActiveIndex = this._nActiveBindings ++, + + firstInactiveBinding = bindings[ lastActiveIndex ]; + + binding._cacheIndex = lastActiveIndex; + bindings[ lastActiveIndex ] = binding; + + firstInactiveBinding._cacheIndex = prevIndex; + bindings[ prevIndex ] = firstInactiveBinding; + + } + + _takeBackBinding( binding ) { + + const bindings = this._bindings, + prevIndex = binding._cacheIndex, + + firstInactiveIndex = -- this._nActiveBindings, + + lastActiveBinding = bindings[ firstInactiveIndex ]; + + binding._cacheIndex = firstInactiveIndex; + bindings[ firstInactiveIndex ] = binding; + + lastActiveBinding._cacheIndex = prevIndex; + bindings[ prevIndex ] = lastActiveBinding; + + } + + + // Memory management of Interpolants for weight and time scale + + _lendControlInterpolant() { + + const interpolants = this._controlInterpolants, + lastActiveIndex = this._nActiveControlInterpolants ++; + + let interpolant = interpolants[ lastActiveIndex ]; + + if ( interpolant === undefined ) { + + interpolant = new LinearInterpolant( + new Float32Array( 2 ), new Float32Array( 2 ), + 1, _controlInterpolantsResultBuffer ); + + interpolant.__cacheIndex = lastActiveIndex; + interpolants[ lastActiveIndex ] = interpolant; + + } + + return interpolant; + + } + + _takeBackControlInterpolant( interpolant ) { + + const interpolants = this._controlInterpolants, + prevIndex = interpolant.__cacheIndex, + + firstInactiveIndex = -- this._nActiveControlInterpolants, + + lastActiveInterpolant = interpolants[ firstInactiveIndex ]; + + interpolant.__cacheIndex = firstInactiveIndex; + interpolants[ firstInactiveIndex ] = interpolant; + + lastActiveInterpolant.__cacheIndex = prevIndex; + interpolants[ prevIndex ] = lastActiveInterpolant; + + } + + /** + * Returns an instance of {@link AnimationAction} for the passed clip. + * + * If an action fitting the clip and root parameters doesn't yet exist, it + * will be created by this method. Calling this method several times with the + * same clip and root parameters always returns the same action. + * + * @param {AnimationClip|string} clip - An animation clip or alternatively the name of the animation clip. + * @param {Object3D} [optionalRoot] - An alternative root object. + * @param {(NormalAnimationBlendMode|AdditiveAnimationBlendMode)} [blendMode] - The blend mode. + * @return {?AnimationAction} The animation action. + */ + clipAction( clip, optionalRoot, blendMode ) { + + const root = optionalRoot || this._root, + rootUuid = root.uuid; + + let clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip; + + const clipUuid = clipObject !== null ? clipObject.uuid : clip; + + const actionsForClip = this._actionsByClip[ clipUuid ]; + let prototypeAction = null; + + if ( blendMode === undefined ) { + + if ( clipObject !== null ) { + + blendMode = clipObject.blendMode; + + } else { + + blendMode = NormalAnimationBlendMode; + + } + + } + + if ( actionsForClip !== undefined ) { + + const existingAction = actionsForClip.actionByRoot[ rootUuid ]; + + if ( existingAction !== undefined && existingAction.blendMode === blendMode ) { + + return existingAction; + + } + + // we know the clip, so we don't have to parse all + // the bindings again but can just copy + prototypeAction = actionsForClip.knownActions[ 0 ]; + + // also, take the clip from the prototype action + if ( clipObject === null ) + clipObject = prototypeAction._clip; + + } + + // clip must be known when specified via string + if ( clipObject === null ) return null; + + // allocate all resources required to run it + const newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode ); + + this._bindAction( newAction, prototypeAction ); + + // and make the action known to the memory manager + this._addInactiveAction( newAction, clipUuid, rootUuid ); + + return newAction; + + } + + /** + * Returns an existing animation action for the passed clip. + * + * @param {AnimationClip|string} clip - An animation clip or alternatively the name of the animation clip. + * @param {Object3D} [optionalRoot] - An alternative root object. + * @return {?AnimationAction} The animation action. Returns `null` if no action was found. + */ + existingAction( clip, optionalRoot ) { + + const root = optionalRoot || this._root, + rootUuid = root.uuid, + + clipObject = typeof clip === 'string' ? + AnimationClip.findByName( root, clip ) : clip, + + clipUuid = clipObject ? clipObject.uuid : clip, + + actionsForClip = this._actionsByClip[ clipUuid ]; + + if ( actionsForClip !== undefined ) { + + return actionsForClip.actionByRoot[ rootUuid ] || null; + + } + + return null; + + } + + /** + * Deactivates all previously scheduled actions on this mixer. + * + * @return {AnimationMixer} A reference to thi animation mixer. + */ + stopAllAction() { + + const actions = this._actions, + nActions = this._nActiveActions; + + for ( let i = nActions - 1; i >= 0; -- i ) { + + actions[ i ].stop(); + + } + + return this; + + } + + /** + * Advances the global mixer time and updates the animation. + * + * This is usually done in the render loop by passing the delta + * time from {@link Clock} or {@link Timer}. + * + * @param {number} deltaTime - The delta time in seconds. + * @return {AnimationMixer} A reference to thi animation mixer. + */ + update( deltaTime ) { + + deltaTime *= this.timeScale; + + const actions = this._actions, + nActions = this._nActiveActions, + + time = this.time += deltaTime, + timeDirection = Math.sign( deltaTime ), + + accuIndex = this._accuIndex ^= 1; + + // run active actions + + for ( let i = 0; i !== nActions; ++ i ) { + + const action = actions[ i ]; + + action._update( time, deltaTime, timeDirection, accuIndex ); + + } + + // update scene graph + + const bindings = this._bindings, + nBindings = this._nActiveBindings; + + for ( let i = 0; i !== nBindings; ++ i ) { + + bindings[ i ].apply( accuIndex ); + + } + + return this; + + } + + /** + * Sets the global mixer to a specific time and updates the animation accordingly. + * + * This is useful when you need to jump to an exact time in an animation. The + * input parameter will be scaled by {@link AnimationMixer#timeScale} + * + * @param {number} time - The time to set in seconds. + * @return {AnimationMixer} A reference to thi animation mixer. + */ + setTime( time ) { + + this.time = 0; // Zero out time attribute for AnimationMixer object; + for ( let i = 0; i < this._actions.length; i ++ ) { + + this._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects. + + } + + return this.update( time ); // Update used to set exact time. Returns "this" AnimationMixer object. + + } + + /** + * Returns this mixer's root object. + * + * @return {Object3D} The mixer's root object. + */ + getRoot() { + + return this._root; + + } + + /** + * Deallocates all memory resources for a clip. Before using this method make + * sure to call {@link AnimationAction#stop} for all related actions. + * + * @param {AnimationClip} clip - The clip to uncache. + */ + uncacheClip( clip ) { + + const actions = this._actions, + clipUuid = clip.uuid, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ]; + + if ( actionsForClip !== undefined ) { + + // note: just calling _removeInactiveAction would mess up the + // iteration state and also require updating the state we can + // just throw away + + const actionsToRemove = actionsForClip.knownActions; + + for ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) { + + const action = actionsToRemove[ i ]; + + this._deactivateAction( action ); + + const cacheIndex = action._cacheIndex, + lastInactiveAction = actions[ actions.length - 1 ]; + + action._cacheIndex = null; + action._byClipCacheIndex = null; + + lastInactiveAction._cacheIndex = cacheIndex; + actions[ cacheIndex ] = lastInactiveAction; + actions.pop(); + + this._removeInactiveBindingsForAction( action ); + + } + + delete actionsByClip[ clipUuid ]; + + } + + } + + /** + * Deallocates all memory resources for a root object. Before using this + * method make sure to call {@link AnimationAction#stop} for all related + * actions or alternatively {@link AnimationMixer#stopAllAction} when the + * mixer operates on a single root. + * + * @param {Object3D} root - The root object to uncache. + */ + uncacheRoot( root ) { + + const rootUuid = root.uuid, + actionsByClip = this._actionsByClip; + + for ( const clipUuid in actionsByClip ) { + + const actionByRoot = actionsByClip[ clipUuid ].actionByRoot, + action = actionByRoot[ rootUuid ]; + + if ( action !== undefined ) { + + this._deactivateAction( action ); + this._removeInactiveAction( action ); + + } + + } + + const bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ]; + + if ( bindingByName !== undefined ) { + + for ( const trackName in bindingByName ) { + + const binding = bindingByName[ trackName ]; + binding.restoreOriginalState(); + this._removeInactiveBinding( binding ); + + } + + } + + } + + /** + * Deallocates all memory resources for an action. The action is identified by the + * given clip and an optional root object. Before using this method make + * sure to call {@link AnimationAction#stop} to deactivate the action. + * + * @param {AnimationClip|string} clip - An animation clip or alternatively the name of the animation clip. + * @param {Object3D} [optionalRoot] - An alternative root object. + */ + uncacheAction( clip, optionalRoot ) { + + const action = this.existingAction( clip, optionalRoot ); + + if ( action !== null ) { + + this._deactivateAction( action ); + this._removeInactiveAction( action ); + + } + + } + +} + +/** + * Represents a 3D render target. + * + * @augments RenderTarget + */ +class RenderTarget3D extends RenderTarget { + + /** + * Constructs a new 3D render target. + * + * @param {number} [width=1] - The width of the render target. + * @param {number} [height=1] - The height of the render target. + * @param {number} [depth=1] - The height of the render target. + * @param {RenderTarget~Options} [options] - The configuration object. + */ + constructor( width = 1, height = 1, depth = 1, options = {} ) { + + super( width, height, options ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isRenderTarget3D = true; + + this.depth = depth; + + /** + * Overwritten with a different texture type. + * + * @type {Data3DTexture} + */ + this.texture = new Data3DTexture( null, width, height, depth ); + + this.texture.isRenderTargetTexture = true; + + } + +} + +/** + * Represents an array render target. + * + * @augments RenderTarget + */ +class RenderTargetArray extends RenderTarget { + + /** + * Constructs a new 3D render target. + * + * @param {number} [width=1] - The width of the render target. + * @param {number} [height=1] - The height of the render target. + * @param {number} [depth=1] - The height of the render target. + * @param {RenderTarget~Options} [options] - The configuration object. + */ + constructor( width = 1, height = 1, depth = 1, options = {} ) { + + super( width, height, options ); + + this.isRenderTargetArray = true; + + this.depth = depth; + + /** + * Overwritten with a different texture type. + * + * @type {DataArrayTexture} + */ + this.texture = new DataArrayTexture( null, width, height, depth ); + + this.texture.isRenderTargetTexture = true; + + } + +} + +/** + * Represents a uniform which is a global shader variable. They are passed to shader programs. + * + * When declaring a uniform of a {@link ShaderMaterial}, it is declared by value or by object. + * ```js + * uniforms: { + * time: { value: 1.0 }, + * resolution: new Uniform( new Vector2() ) + * }; + * ``` + * Since this class can only be used in context of {@link ShaderMaterial}, it is only supported + * in {@link WebGLRenderer}. + */ +class Uniform { + + /** + * Constructs a new uniform. + * + * @param {any} value - The uniform value. + */ + constructor( value ) { + + /** + * The uniform value. + * + * @type {any} + */ + this.value = value; + + } + + /** + * Returns a new uniform with copied values from this instance. + * If the value has a `clone()` method, the value is cloned as well. + * + * @return {Uniform} A clone of this instance. + */ + clone() { + + return new Uniform( this.value.clone === undefined ? this.value : this.value.clone() ); + + } + +} + +let _id = 0; + +/** + * A class for managing multiple uniforms in a single group. The renderer will process + * such a definition as a single UBO. + * + * Since this class can only be used in context of {@link ShaderMaterial}, it is only supported + * in {@link WebGLRenderer}. + * + * @augments EventDispatcher + */ +class UniformsGroup extends EventDispatcher { + + /** + * Constructs a new uniforms group. + */ + constructor() { + + super(); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isUniformsGroup = true; + + /** + * The ID of the 3D object. + * + * @name UniformsGroup#id + * @type {number} + * @readonly + */ + Object.defineProperty( this, 'id', { value: _id ++ } ); + + /** + * The name of the uniforms group. + * + * @type {string} + */ + this.name = ''; + + /** + * The buffer usage. + * + * @type {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} + * @default StaticDrawUsage + */ + this.usage = StaticDrawUsage; + + /** + * An array holding the uniforms. + * + * @type {Array} + */ + this.uniforms = []; + + } + + /** + * Adds the given uniform to this uniforms group. + * + * @param {Uniform} uniform - The uniform to add. + * @return {UniformsGroup} A reference to this uniforms group. + */ + add( uniform ) { + + this.uniforms.push( uniform ); + + return this; + + } + + /** + * Removes the given uniform from this uniforms group. + * + * @param {Uniform} uniform - The uniform to remove. + * @return {UniformsGroup} A reference to this uniforms group. + */ + remove( uniform ) { + + const index = this.uniforms.indexOf( uniform ); + + if ( index !== -1 ) this.uniforms.splice( index, 1 ); + + return this; + + } + + /** + * Sets the name of this uniforms group. + * + * @param {string} name - The name to set. + * @return {UniformsGroup} A reference to this uniforms group. + */ + setName( name ) { + + this.name = name; + + return this; + + } + + /** + * Sets the usage of this uniforms group. + * + * @param {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} value - The usage to set. + * @return {UniformsGroup} A reference to this uniforms group. + */ + setUsage( value ) { + + this.usage = value; + + return this; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + * + * @fires Texture#dispose + */ + dispose() { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + /** + * Copies the values of the given uniforms group to this instance. + * + * @param {UniformsGroup} source - The uniforms group to copy. + * @return {UniformsGroup} A reference to this uniforms group. + */ + copy( source ) { + + this.name = source.name; + this.usage = source.usage; + + const uniformsSource = source.uniforms; + + this.uniforms.length = 0; + + for ( let i = 0, l = uniformsSource.length; i < l; i ++ ) { + + const uniforms = Array.isArray( uniformsSource[ i ] ) ? uniformsSource[ i ] : [ uniformsSource[ i ] ]; + + for ( let j = 0; j < uniforms.length; j ++ ) { + + this.uniforms.push( uniforms[ j ].clone() ); + + } + + } + + return this; + + } + + /** + * Returns a new uniforms group with copied values from this instance. + * + * @return {UniformsGroup} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + +} + +/** + * An instanced version of an interleaved buffer. + * + * @augments InterleavedBuffer + */ +class InstancedInterleavedBuffer extends InterleavedBuffer { + + /** + * Constructs a new instanced interleaved buffer. + * + * @param {TypedArray} array - A typed array with a shared buffer storing attribute data. + * @param {number} stride - The number of typed-array elements per vertex. + * @param {number} [meshPerAttribute=1] - Defines how often a value of this interleaved buffer should be repeated. + */ + constructor( array, stride, meshPerAttribute = 1 ) { + + super( array, stride ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isInstancedInterleavedBuffer = true; + + /** + * Defines how often a value of this buffer attribute should be repeated, + * see {@link InstancedBufferAttribute#meshPerAttribute}. + * + * @type {number} + * @default 1 + */ + this.meshPerAttribute = meshPerAttribute; + + } + + copy( source ) { + + super.copy( source ); + + this.meshPerAttribute = source.meshPerAttribute; + + return this; + + } + + clone( data ) { + + const ib = super.clone( data ); + + ib.meshPerAttribute = this.meshPerAttribute; + + return ib; + + } + + toJSON( data ) { + + const json = super.toJSON( data ); + + json.isInstancedInterleavedBuffer = true; + json.meshPerAttribute = this.meshPerAttribute; + + return json; + + } + +} + +/** + * An alternative version of a buffer attribute with more control over the VBO. + * + * The renderer does not construct a VBO for this kind of attribute. Instead, it uses + * whatever VBO is passed in constructor and can later be altered via the `buffer` property. + * + * The most common use case for this class is when some kind of GPGPU calculation interferes + * or even produces the VBOs in question. + * + * Notice that this class can only be used with {@link WebGLRenderer}. + */ +class GLBufferAttribute { + + /** + * Constructs a new GL buffer attribute. + * + * @param {WebGLBuffer} buffer - The native WebGL buffer. + * @param {number} type - The native data type (e.g. `gl.FLOAT`). + * @param {number} itemSize - The item size. + * @param {number} elementSize - The corresponding size (in bytes) for the given `type` parameter. + * @param {number} count - The expected number of vertices in VBO. + */ + constructor( buffer, type, itemSize, elementSize, count ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isGLBufferAttribute = true; + + /** + * The name of the buffer attribute. + * + * @type {string} + */ + this.name = ''; + + /** + * The native WebGL buffer. + * + * @type {WebGLBuffer} + */ + this.buffer = buffer; + + /** + * The native data type. + * + * @type {number} + */ + this.type = type; + + /** + * The item size, see {@link BufferAttribute#itemSize}. + * + * @type {number} + */ + this.itemSize = itemSize; + + /** + * The corresponding size (in bytes) for the given `type` parameter. + * + * @type {number} + */ + this.elementSize = elementSize; + + /** + * The expected number of vertices in VBO. + * + * @type {number} + */ + this.count = count; + + /** + * A version number, incremented every time the `needsUpdate` is set to `true`. + * + * @type {number} + */ + this.version = 0; + + } + + /** + * Flag to indicate that this attribute has changed and should be re-sent to + * the GPU. Set this to `true` when you modify the value of the array. + * + * @type {number} + * @default false + * @param {boolean} value + */ + set needsUpdate( value ) { + + if ( value === true ) this.version ++; + + } + + /** + * Sets the given native WebGL buffer. + * + * @param {WebGLBuffer} buffer - The buffer to set. + * @return {BufferAttribute} A reference to this instance. + */ + setBuffer( buffer ) { + + this.buffer = buffer; + + return this; + + } + + /** + * Sets the given native data type and element size. + * + * @param {number} type - The native data type (e.g. `gl.FLOAT`). + * @param {number} elementSize - The corresponding size (in bytes) for the given `type` parameter. + * @return {BufferAttribute} A reference to this instance. + */ + setType( type, elementSize ) { + + this.type = type; + this.elementSize = elementSize; + + return this; + + } + + /** + * Sets the item size. + * + * @param {number} itemSize - The item size. + * @return {BufferAttribute} A reference to this instance. + */ + setItemSize( itemSize ) { + + this.itemSize = itemSize; + + return this; + + } + + /** + * Sets the count (the expected number of vertices in VBO). + * + * @param {number} count - The count. + * @return {BufferAttribute} A reference to this instance. + */ + setCount( count ) { + + this.count = count; + + return this; + + } + +} + +const _matrix = /*@__PURE__*/ new Matrix4(); + +/** + * This class is designed to assist with raycasting. Raycasting is used for + * mouse picking (working out what objects in the 3d space the mouse is over) + * amongst other things. + */ +class Raycaster { + + /** + * Constructs a new raycaster. + * + * @param {Vector3} origin - The origin vector where the ray casts from. + * @param {Vector3} direction - The (normalized) direction vector that gives direction to the ray. + * @param {number} [near=0] - All results returned are further away than near. Near can't be negative. + * @param {number} [far=Infinity] - All results returned are closer than far. Far can't be lower than near. + */ + constructor( origin, direction, near = 0, far = Infinity ) { + + /** + * The ray used for raycasting. + * + * @type {Ray} + */ + this.ray = new Ray( origin, direction ); + + /** + * All results returned are further away than near. Near can't be negative. + * + * @type {number} + * @default 0 + */ + this.near = near; + + /** + * All results returned are further away than near. Near can't be negative. + * + * @type {number} + * @default Infinity + */ + this.far = far; + + /** + * The camera to use when raycasting against view-dependent objects such as + * billboarded objects like sprites. This field can be set manually or + * is set when calling `setFromCamera()`. + * + * @type {?Camera} + * @default null + */ + this.camera = null; + + /** + * Allows to selectively ignore 3D objects when performing intersection tests. + * The following code example ensures that only 3D objects on layer `1` will be + * honored by raycaster. + * ```js + * raycaster.layers.set( 1 ); + * object.layers.enable( 1 ); + * ``` + * + * @type {Layers} + */ + this.layers = new Layers(); + + + /** + * A parameter object that configures the raycasting. It has the structure: + * + * ``` + * { + * Mesh: {}, + * Line: { threshold: 1 }, + * LOD: {}, + * Points: { threshold: 1 }, + * Sprite: {} + * } + * ``` + * Where `threshold` is the precision of the raycaster when intersecting objects, in world units. + * + * @type {Object} + */ + this.params = { + Mesh: {}, + Line: { threshold: 1 }, + LOD: {}, + Points: { threshold: 1 }, + Sprite: {} + }; + + } + + /** + * Updates the ray with a new origin and direction by copying the values from the arguments. + * + * @param {Vector3} origin - The origin vector where the ray casts from. + * @param {Vector3} direction - The (normalized) direction vector that gives direction to the ray. + */ + set( origin, direction ) { + + // direction is assumed to be normalized (for accurate distance calculations) + + this.ray.set( origin, direction ); + + } + + /** + * Uses the given coordinates and camera to compute a new origin and direction for the internal ray. + * + * @param {Vector2} coords - 2D coordinates of the mouse, in normalized device coordinates (NDC). + * X and Y components should be between `-1` and `1`. + * @param {Camera} camera - The camera from which the ray should originate. + */ + setFromCamera( coords, camera ) { + + if ( camera.isPerspectiveCamera ) { + + this.ray.origin.setFromMatrixPosition( camera.matrixWorld ); + this.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize(); + this.camera = camera; + + } else if ( camera.isOrthographicCamera ) { + + this.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera + this.ray.direction.set( 0, 0, -1 ).transformDirection( camera.matrixWorld ); + this.camera = camera; + + } else { + + console.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type ); + + } + + } + + /** + * Uses the given WebXR controller to compute a new origin and direction for the internal ray. + * + * @param {WebXRController} controller - The controller to copy the position and direction from. + * @return {Raycaster} A reference to this raycaster. + */ + setFromXRController( controller ) { + + _matrix.identity().extractRotation( controller.matrixWorld ); + + this.ray.origin.setFromMatrixPosition( controller.matrixWorld ); + this.ray.direction.set( 0, 0, -1 ).applyMatrix4( _matrix ); + + return this; + + } + + /** + * The intersection point of a raycaster intersection test. + * @typedef {Object} Raycaster~Intersection + * @property {number} distance - The distance from the ray's origin to the intersection point. + * @property {number} distanceToRay - Some 3D objects e.g. {@link Points} provide the distance of the + * intersection to the nearest point on the ray. For other objects it will be `undefined`. + * @property {Vector3} point - The intersection point, in world coordinates. + * @property {Object} face - The face that has been intersected. + * @property {number} faceIndex - The face index. + * @property {Object3D} object - The 3D object that has been intersected. + * @property {Vector2} uv - U,V coordinates at point of intersection. + * @property {Vector2} uv1 - Second set of U,V coordinates at point of intersection. + * @property {Vector3} uv1 - Interpolated normal vector at point of intersection. + * @property {number} instanceId - The index number of the instance where the ray + * intersects the {@link InstancedMesh}. + */ + + /** + * Checks all intersection between the ray and the object with or without the + * descendants. Intersections are returned sorted by distance, closest first. + * + * `Raycaster` delegates to the `raycast()` method of the passed 3D object, when + * evaluating whether the ray intersects the object or not. This allows meshes to respond + * differently to ray casting than lines or points. + * + * Note that for meshes, faces must be pointed towards the origin of the ray in order + * to be detected; intersections of the ray passing through the back of a face will not + * be detected. To raycast against both faces of an object, you'll want to set {@link Material#side} + * to `THREE.DoubleSide`. + * + * @param {Object3D} object - The 3D object to check for intersection with the ray. + * @param {boolean} [recursive=true] - If set to `true`, it also checks all descendants. + * Otherwise it only checks intersection with the object. + * @param {Array} [intersects=[]] The target array that holds the result of the method. + * @return {Array} An array holding the intersection points. + */ + intersectObject( object, recursive = true, intersects = [] ) { + + intersect( object, this, intersects, recursive ); + + intersects.sort( ascSort ); + + return intersects; + + } + + /** + * Checks all intersection between the ray and the objects with or without + * the descendants. Intersections are returned sorted by distance, closest first. + * + * @param {Array} objects - The 3D objects to check for intersection with the ray. + * @param {boolean} [recursive=true] - If set to `true`, it also checks all descendants. + * Otherwise it only checks intersection with the object. + * @param {Array} [intersects=[]] The target array that holds the result of the method. + * @return {Array} An array holding the intersection points. + */ + intersectObjects( objects, recursive = true, intersects = [] ) { + + for ( let i = 0, l = objects.length; i < l; i ++ ) { + + intersect( objects[ i ], this, intersects, recursive ); + + } + + intersects.sort( ascSort ); + + return intersects; + + } + +} + +function ascSort( a, b ) { + + return a.distance - b.distance; + +} + +function intersect( object, raycaster, intersects, recursive ) { + + let propagate = true; + + if ( object.layers.test( raycaster.layers ) ) { + + const result = object.raycast( raycaster, intersects ); + + if ( result === false ) propagate = false; + + } + + if ( propagate === true && recursive === true ) { + + const children = object.children; + + for ( let i = 0, l = children.length; i < l; i ++ ) { + + intersect( children[ i ], raycaster, intersects, true ); + + } + + } + +} + +/** + * This class can be used to represent points in 3D space as + * [Spherical coordinates]{@link https://en.wikipedia.org/wiki/Spherical_coordinate_system}. + */ +class Spherical { + + /** + * Constructs a new spherical. + * + * @param {number} [radius=1] - The radius, or the Euclidean distance (straight-line distance) from the point to the origin. + * @param {number} [phi=0] - The polar angle in radians from the y (up) axis. + * @param {number} [theta=0] - The equator/azimuthal angle in radians around the y (up) axis. + */ + constructor( radius = 1, phi = 0, theta = 0 ) { + + /** + * The radius, or the Euclidean distance (straight-line distance) from the point to the origin. + * + * @type {number} + * @default 1 + */ + this.radius = radius; + + /** + * The polar angle in radians from the y (up) axis. + * + * @type {number} + * @default 0 + */ + this.phi = phi; + + /** + * The equator/azimuthal angle in radians around the y (up) axis. + * + * @type {number} + * @default 0 + */ + this.theta = theta; + + } + + /** + * Sets the spherical components by copying the given values. + * + * @param {number} radius - The radius. + * @param {number} phi - The polar angle. + * @param {number} theta - The azimuthal angle. + * @return {Spherical} A reference to this spherical. + */ + set( radius, phi, theta ) { + + this.radius = radius; + this.phi = phi; + this.theta = theta; + + return this; + + } + + /** + * Copies the values of the given spherical to this instance. + * + * @param {Spherical} other - The spherical to copy. + * @return {Spherical} A reference to this spherical. + */ + copy( other ) { + + this.radius = other.radius; + this.phi = other.phi; + this.theta = other.theta; + + return this; + + } + + /** + * Restricts the polar angle [page:.phi phi] to be between `0.000001` and pi - + * `0.000001`. + * + * @return {Spherical} A reference to this spherical. + */ + makeSafe() { + + const EPS = 0.000001; + this.phi = clamp( this.phi, EPS, Math.PI - EPS ); + + return this; + + } + + /** + * Sets the spherical components from the given vector which is assumed to hold + * Cartesian coordinates. + * + * @param {Vector3} v - The vector to set. + * @return {Spherical} A reference to this spherical. + */ + setFromVector3( v ) { + + return this.setFromCartesianCoords( v.x, v.y, v.z ); + + } + + /** + * Sets the spherical components from the given Cartesian coordinates. + * + * @param {number} x - The x value. + * @param {number} y - The x value. + * @param {number} z - The x value. + * @return {Spherical} A reference to this spherical. + */ + setFromCartesianCoords( x, y, z ) { + + this.radius = Math.sqrt( x * x + y * y + z * z ); + + if ( this.radius === 0 ) { + + this.theta = 0; + this.phi = 0; + + } else { + + this.theta = Math.atan2( x, z ); + this.phi = Math.acos( clamp( y / this.radius, -1, 1 ) ); + + } + + return this; + + } + + /** + * Returns a new spherical with copied values from this instance. + * + * @return {Spherical} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + +} + +/** + * This class can be used to represent points in 3D space as + * [Cylindrical coordinates]{@link https://en.wikipedia.org/wiki/Cylindrical_coordinate_system}. + */ +class Cylindrical { + + /** + * Constructs a new cylindrical. + * + * @param {number} [radius=1] - The distance from the origin to a point in the x-z plane. + * @param {number} [theta=0] - A counterclockwise angle in the x-z plane measured in radians from the positive z-axis. + * @param {number} [y=0] - The height above the x-z plane. + */ + constructor( radius = 1, theta = 0, y = 0 ) { + + /** + * The distance from the origin to a point in the x-z plane. + * + * @type {number} + * @default 1 + */ + this.radius = radius; + + /** + * A counterclockwise angle in the x-z plane measured in radians from the positive z-axis. + * + * @type {number} + * @default 0 + */ + this.theta = theta; + + /** + * The height above the x-z plane. + * + * @type {number} + * @default 0 + */ + this.y = y; + + } + + /** + * Sets the cylindrical components by copying the given values. + * + * @param {number} radius - The radius. + * @param {number} theta - The theta angle. + * @param {number} y - The height value. + * @return {Cylindrical} A reference to this cylindrical. + */ + set( radius, theta, y ) { + + this.radius = radius; + this.theta = theta; + this.y = y; + + return this; + + } + + /** + * Copies the values of the given cylindrical to this instance. + * + * @param {Cylindrical} other - The cylindrical to copy. + * @return {Cylindrical} A reference to this cylindrical. + */ + copy( other ) { + + this.radius = other.radius; + this.theta = other.theta; + this.y = other.y; + + return this; + + } + + /** + * Sets the cylindrical components from the given vector which is assumed to hold + * Cartesian coordinates. + * + * @param {Vector3} v - The vector to set. + * @return {Cylindrical} A reference to this cylindrical. + */ + setFromVector3( v ) { + + return this.setFromCartesianCoords( v.x, v.y, v.z ); + + } + + /** + * Sets the cylindrical components from the given Cartesian coordinates. + * + * @param {number} x - The x value. + * @param {number} y - The x value. + * @param {number} z - The x value. + * @return {Cylindrical} A reference to this cylindrical. + */ + setFromCartesianCoords( x, y, z ) { + + this.radius = Math.sqrt( x * x + z * z ); + this.theta = Math.atan2( x, z ); + this.y = y; + + return this; + + } + + /** + * Returns a new cylindrical with copied values from this instance. + * + * @return {Cylindrical} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + +} + +/** + * Represents a 2x2 matrix. + * + * A Note on Row-Major and Column-Major Ordering: + * + * The constructor and {@link Matrix2#set} method take arguments in + * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order} + * order, while internally they are stored in the {@link Matrix2#elements} array in column-major order. + * This means that calling: + * ```js + * const m = new THREE.Matrix2(); + * m.set( 11, 12, + * 21, 22 ); + * ``` + * will result in the elements array containing: + * ```js + * m.elements = [ 11, 21, + * 12, 22 ]; + * ``` + * and internally all calculations are performed using column-major ordering. + * However, as the actual ordering makes no difference mathematically and + * most people are used to thinking about matrices in row-major order, the + * three.js documentation shows matrices in row-major order. Just bear in + * mind that if you are reading the source code, you'll have to take the + * transpose of any matrices outlined here to make sense of the calculations. + */ +class Matrix2 { + + /** + * Constructs a new 2x2 matrix. The arguments are supposed to be + * in row-major order. If no arguments are provided, the constructor + * initializes the matrix as an identity matrix. + * + * @param {number} [n11] - 1-1 matrix element. + * @param {number} [n12] - 1-2 matrix element. + * @param {number} [n21] - 2-1 matrix element. + * @param {number} [n22] - 2-2 matrix element. + */ + constructor( n11, n12, n21, n22 ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + Matrix2.prototype.isMatrix2 = true; + + /** + * A column-major list of matrix values. + * + * @type {Array} + */ + this.elements = [ + 1, 0, + 0, 1, + ]; + + if ( n11 !== undefined ) { + + this.set( n11, n12, n21, n22 ); + + } + + } + + /** + * Sets this matrix to the 2x2 identity matrix. + * + * @return {Matrix2} A reference to this matrix. + */ + identity() { + + this.set( + 1, 0, + 0, 1, + ); + + return this; + + } + + /** + * Sets the elements of the matrix from the given array. + * + * @param {Array} array - The matrix elements in column-major order. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Matrix2} A reference to this matrix. + */ + fromArray( array, offset = 0 ) { + + for ( let i = 0; i < 4; i ++ ) { + + this.elements[ i ] = array[ i + offset ]; + + } + + return this; + + } + + /** + * Sets the elements of the matrix.The arguments are supposed to be + * in row-major order. + * + * @param {number} n11 - 1-1 matrix element. + * @param {number} n12 - 1-2 matrix element. + * @param {number} n21 - 2-1 matrix element. + * @param {number} n22 - 2-2 matrix element. + * @return {Matrix2} A reference to this matrix. + */ + set( n11, n12, n21, n22 ) { + + const te = this.elements; + + te[ 0 ] = n11; te[ 2 ] = n12; + te[ 1 ] = n21; te[ 3 ] = n22; + + return this; + + } + +} + +const _vector$4 = /*@__PURE__*/ new Vector2(); + +/** + * Represents an axis-aligned bounding box (AABB) in 2D space. + */ +class Box2 { + + /** + * Constructs a new bounding box. + * + * @param {Vector2} [min=(Infinity,Infinity)] - A vector representing the lower boundary of the box. + * @param {Vector2} [max=(-Infinity,-Infinity)] - A vector representing the upper boundary of the box. + */ + constructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) { + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isBox2 = true; + + /** + * The lower boundary of the box. + * + * @type {Vector2} + */ + this.min = min; + + /** + * The upper boundary of the box. + * + * @type {Vector2} + */ + this.max = max; + + } + + /** + * Sets the lower and upper boundaries of this box. + * Please note that this method only copies the values from the given objects. + * + * @param {Vector2} min - The lower boundary of the box. + * @param {Vector2} max - The upper boundary of the box. + * @return {Box2} A reference to this bounding box. + */ + set( min, max ) { + + this.min.copy( min ); + this.max.copy( max ); + + return this; + + } + + /** + * Sets the upper and lower bounds of this box so it encloses the position data + * in the given array. + * + * @param {Array} points - An array holding 2D position data as instances of {@link Vector2}. + * @return {Box2} A reference to this bounding box. + */ + setFromPoints( points ) { + + this.makeEmpty(); + + for ( let i = 0, il = points.length; i < il; i ++ ) { + + this.expandByPoint( points[ i ] ); + + } + + return this; + + } + + /** + * Centers this box on the given center vector and sets this box's width, height and + * depth to the given size values. + * + * @param {Vector2} center - The center of the box. + * @param {Vector2} size - The x and y dimensions of the box. + * @return {Box2} A reference to this bounding box. + */ + setFromCenterAndSize( center, size ) { + + const halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 ); + this.min.copy( center ).sub( halfSize ); + this.max.copy( center ).add( halfSize ); + + return this; + + } + + /** + * Returns a new box with copied values from this instance. + * + * @return {Box2} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + + /** + * Copies the values of the given box to this instance. + * + * @param {Box2} box - The box to copy. + * @return {Box2} A reference to this bounding box. + */ + copy( box ) { + + this.min.copy( box.min ); + this.max.copy( box.max ); + + return this; + + } + + /** + * Makes this box empty which means in encloses a zero space in 2D. + * + * @return {Box2} A reference to this bounding box. + */ + makeEmpty() { + + this.min.x = this.min.y = + Infinity; + this.max.x = this.max.y = - Infinity; + + return this; + + } + + /** + * Returns true if this box includes zero points within its bounds. + * Note that a box with equal lower and upper bounds still includes one + * point, the one both bounds share. + * + * @return {boolean} Whether this box is empty or not. + */ + isEmpty() { + + // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes + + return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ); + + } + + /** + * Returns the center point of this box. + * + * @param {Vector2} target - The target vector that is used to store the method's result. + * @return {Vector2} The center point. + */ + getCenter( target ) { + + return this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); + + } + + /** + * Returns the dimensions of this box. + * + * @param {Vector2} target - The target vector that is used to store the method's result. + * @return {Vector2} The size. + */ + getSize( target ) { + + return this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min ); + + } + + /** + * Expands the boundaries of this box to include the given point. + * + * @param {Vector2} point - The point that should be included by the bounding box. + * @return {Box2} A reference to this bounding box. + */ + expandByPoint( point ) { + + this.min.min( point ); + this.max.max( point ); + + return this; + + } + + /** + * Expands this box equilaterally by the given vector. The width of this + * box will be expanded by the x component of the vector in both + * directions. The height of this box will be expanded by the y component of + * the vector in both directions. + * + * @param {Vector2} vector - The vector that should expand the bounding box. + * @return {Box2} A reference to this bounding box. + */ + expandByVector( vector ) { + + this.min.sub( vector ); + this.max.add( vector ); + + return this; + + } + + /** + * Expands each dimension of the box by the given scalar. If negative, the + * dimensions of the box will be contracted. + * + * @param {number} scalar - The scalar value that should expand the bounding box. + * @return {Box2} A reference to this bounding box. + */ + expandByScalar( scalar ) { + + this.min.addScalar( - scalar ); + this.max.addScalar( scalar ); + + return this; + + } + + /** + * Returns `true` if the given point lies within or on the boundaries of this box. + * + * @param {Vector2} point - The point to test. + * @return {boolean} Whether the bounding box contains the given point or not. + */ + containsPoint( point ) { + + return point.x >= this.min.x && point.x <= this.max.x && + point.y >= this.min.y && point.y <= this.max.y; + + } + + /** + * Returns `true` if this bounding box includes the entirety of the given bounding box. + * If this box and the given one are identical, this function also returns `true`. + * + * @param {Box2} box - The bounding box to test. + * @return {boolean} Whether the bounding box contains the given bounding box or not. + */ + containsBox( box ) { + + return this.min.x <= box.min.x && box.max.x <= this.max.x && + this.min.y <= box.min.y && box.max.y <= this.max.y; + + } + + /** + * Returns a point as a proportion of this box's width and height. + * + * @param {Vector2} point - A point in 2D space. + * @param {Vector2} target - The target vector that is used to store the method's result. + * @return {Vector2} A point as a proportion of this box's width and height. + */ + getParameter( point, target ) { + + // This can potentially have a divide by zero if the box + // has a size dimension of 0. + + return target.set( + ( point.x - this.min.x ) / ( this.max.x - this.min.x ), + ( point.y - this.min.y ) / ( this.max.y - this.min.y ) + ); + + } + + /** + * Returns `true` if the given bounding box intersects with this bounding box. + * + * @param {Box2} box - The bounding box to test. + * @return {boolean} Whether the given bounding box intersects with this bounding box. + */ + intersectsBox( box ) { + + // using 4 splitting planes to rule out intersections + + return box.max.x >= this.min.x && box.min.x <= this.max.x && + box.max.y >= this.min.y && box.min.y <= this.max.y; + + } + + /** + * Clamps the given point within the bounds of this box. + * + * @param {Vector2} point - The point to clamp. + * @param {Vector2} target - The target vector that is used to store the method's result. + * @return {Vector2} The clamped point. + */ + clampPoint( point, target ) { + + return target.copy( point ).clamp( this.min, this.max ); + + } + + /** + * Returns the euclidean distance from any edge of this box to the specified point. If + * the given point lies inside of this box, the distance will be `0`. + * + * @param {Vector2} point - The point to compute the distance to. + * @return {number} The euclidean distance. + */ + distanceToPoint( point ) { + + return this.clampPoint( point, _vector$4 ).distanceTo( point ); + + } + + /** + * Computes the intersection of this bounding box and the given one, setting the upper + * bound of this box to the lesser of the two boxes' upper bounds and the + * lower bound of this box to the greater of the two boxes' lower bounds. If + * there's no overlap, makes this box empty. + * + * @param {Box2} box - The bounding box to intersect with. + * @return {Box2} A reference to this bounding box. + */ + intersect( box ) { + + this.min.max( box.min ); + this.max.min( box.max ); + + if ( this.isEmpty() ) this.makeEmpty(); + + return this; + + } + + /** + * Computes the union of this box and another and the given one, setting the upper + * bound of this box to the greater of the two boxes' upper bounds and the + * lower bound of this box to the lesser of the two boxes' lower bounds. + * + * @param {Box2} box - The bounding box that will be unioned with this instance. + * @return {Box2} A reference to this bounding box. + */ + union( box ) { + + this.min.min( box.min ); + this.max.max( box.max ); + + return this; + + } + + /** + * Adds the given offset to both the upper and lower bounds of this bounding box, + * effectively moving it in 2D space. + * + * @param {Vector2} offset - The offset that should be used to translate the bounding box. + * @return {Box2} A reference to this bounding box. + */ + translate( offset ) { + + this.min.add( offset ); + this.max.add( offset ); + + return this; + + } + + /** + * Returns `true` if this bounding box is equal with the given one. + * + * @param {Box2} box - The box to test for equality. + * @return {boolean} Whether this bounding box is equal with the given one. + */ + equals( box ) { + + return box.min.equals( this.min ) && box.max.equals( this.max ); + + } + +} + +const _startP = /*@__PURE__*/ new Vector3(); +const _startEnd = /*@__PURE__*/ new Vector3(); + +/** + * An analytical line segment in 3D space represented by a start and end point. + */ +class Line3 { + + /** + * Constructs a new line segment. + * + * @param {Vector3} [start=(0,0,0)] - Start of the line segment. + * @param {Vector3} [end=(0,0,0)] - End of the line segment. + */ + constructor( start = new Vector3(), end = new Vector3() ) { + + /** + * Start of the line segment. + * + * @type {Vector3} + */ + this.start = start; + + /** + * End of the line segment. + * + * @type {Vector3} + */ + this.end = end; + + } + + /** + * Sets the start and end values by copying the given vectors. + * + * @param {Vector3} start - The start point. + * @param {Vector3} end - The end point. + * @return {Line3} A reference to this line segment. + */ + set( start, end ) { + + this.start.copy( start ); + this.end.copy( end ); + + return this; + + } + + /** + * Copies the values of the given line segment to this instance. + * + * @param {Line3} line - The line segment to copy. + * @return {Line3} A reference to this line segment. + */ + copy( line ) { + + this.start.copy( line.start ); + this.end.copy( line.end ); + + return this; + + } + + /** + * Returns the center of the line segment. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The center point. + */ + getCenter( target ) { + + return target.addVectors( this.start, this.end ).multiplyScalar( 0.5 ); + + } + + /** + * Returns the delta vector of the line segment's start and end point. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The delta vector. + */ + delta( target ) { + + return target.subVectors( this.end, this.start ); + + } + + /** + * Returns the squared Euclidean distance between the line' start and end point. + * + * @return {number} The squared Euclidean distance. + */ + distanceSq() { + + return this.start.distanceToSquared( this.end ); + + } + + /** + * Returns the Euclidean distance between the line' start and end point. + * + * @return {number} The Euclidean distance. + */ + distance() { + + return this.start.distanceTo( this.end ); + + } + + /** + * Returns a vector at a certain position along the line segment. + * + * @param {number} t - A value between `[0,1]` to represent a position along the line segment. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The delta vector. + */ + at( t, target ) { + + return this.delta( target ).multiplyScalar( t ).add( this.start ); + + } + + /** + * Returns a point parameter based on the closest point as projected on the line segment. + * + * @param {Vector3} point - The point for which to return a point parameter. + * @param {boolean} clampToLine - Whether to clamp the result to the range `[0,1]` or not. + * @return {number} The point parameter. + */ + closestPointToPointParameter( point, clampToLine ) { + + _startP.subVectors( point, this.start ); + _startEnd.subVectors( this.end, this.start ); + + const startEnd2 = _startEnd.dot( _startEnd ); + const startEnd_startP = _startEnd.dot( _startP ); + + let t = startEnd_startP / startEnd2; + + if ( clampToLine ) { + + t = clamp( t, 0, 1 ); + + } + + return t; + + } + + /** + * Returns the closets point on the line for a given point. + * + * @param {Vector3} point - The point to compute the closest point on the line for. + * @param {boolean} clampToLine - Whether to clamp the result to the range `[0,1]` or not. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The closest point on the line. + */ + closestPointToPoint( point, clampToLine, target ) { + + const t = this.closestPointToPointParameter( point, clampToLine ); + + return this.delta( target ).multiplyScalar( t ).add( this.start ); + + } + + /** + * Applies a 4x4 transformation matrix to this line segment. + * + * @param {Matrix4} matrix - The transformation matrix. + * @return {Line3} A reference to this line segment. + */ + applyMatrix4( matrix ) { + + this.start.applyMatrix4( matrix ); + this.end.applyMatrix4( matrix ); + + return this; + + } + + /** + * Returns `true` if this line segment is equal with the given one. + * + * @param {Line3} line - The line segment to test for equality. + * @return {boolean} Whether this line segment is equal with the given one. + */ + equals( line ) { + + return line.start.equals( this.start ) && line.end.equals( this.end ); + + } + + /** + * Returns a new line segment with copied values from this instance. + * + * @return {Line3} A clone of this instance. + */ + clone() { + + return new this.constructor().copy( this ); + + } + +} + +const _vector$3 = /*@__PURE__*/ new Vector3(); + +/** + * This displays a cone shaped helper object for a {@link SpotLight}. + * + * ```js + * const spotLight = new THREE.SpotLight( 0xffffff ); + * spotLight.position.set( 10, 10, 10 ); + * scene.add( spotLight ); + * + * const spotLightHelper = new THREE.SpotLightHelper( spotLight ); + * scene.add( spotLightHelper ); + * ``` + * + * @augments Object3D + */ +class SpotLightHelper extends Object3D { + + /** + * Constructs a new spot light helper. + * + * @param {HemisphereLight} light - The light to be visualized. + * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take + * the color of the light. + */ + constructor( light, color ) { + + super(); + + /** + * The light being visualized. + * + * @type {SpotLight} + */ + this.light = light; + + this.matrixAutoUpdate = false; + + /** + * The color parameter passed in the constructor. + * If not set, the helper will take the color of the light. + * + * @type {number|Color|string} + */ + this.color = color; + + this.type = 'SpotLightHelper'; + + const geometry = new BufferGeometry(); + + const positions = [ + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 1, 0, 1, + 0, 0, 0, -1, 0, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, -1, 1 + ]; + + for ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) { + + const p1 = ( i / l ) * Math.PI * 2; + const p2 = ( j / l ) * Math.PI * 2; + + positions.push( + Math.cos( p1 ), Math.sin( p1 ), 1, + Math.cos( p2 ), Math.sin( p2 ), 1 + ); + + } + + geometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + + const material = new LineBasicMaterial( { fog: false, toneMapped: false } ); + + this.cone = new LineSegments( geometry, material ); + this.add( this.cone ); + + this.update(); + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + this.cone.geometry.dispose(); + this.cone.material.dispose(); + + } + + /** + * Updates the helper to match the position and direction of the + * light being visualized. + */ + update() { + + this.light.updateWorldMatrix( true, false ); + this.light.target.updateWorldMatrix( true, false ); + + // update the local matrix based on the parent and light target transforms + if ( this.parent ) { + + this.parent.updateWorldMatrix( true ); + + this.matrix + .copy( this.parent.matrixWorld ) + .invert() + .multiply( this.light.matrixWorld ); + + } else { + + this.matrix.copy( this.light.matrixWorld ); + + } + + this.matrixWorld.copy( this.light.matrixWorld ); + + const coneLength = this.light.distance ? this.light.distance : 1000; + const coneWidth = coneLength * Math.tan( this.light.angle ); + + this.cone.scale.set( coneWidth, coneWidth, coneLength ); + + _vector$3.setFromMatrixPosition( this.light.target.matrixWorld ); + + this.cone.lookAt( _vector$3 ); + + if ( this.color !== undefined ) { + + this.cone.material.color.set( this.color ); + + } else { + + this.cone.material.color.copy( this.light.color ); + + } + + } + +} + +const _vector$2 = /*@__PURE__*/ new Vector3(); +const _boneMatrix = /*@__PURE__*/ new Matrix4(); +const _matrixWorldInv = /*@__PURE__*/ new Matrix4(); + +/** + * A helper object to assist with visualizing a {@link Skeleton}. + * + * ```js + * const helper = new THREE.SkeletonHelper( skinnedMesh ); + * scene.add( helper ); + * ``` + * + * @augments LineSegments + */ +class SkeletonHelper extends LineSegments { + + /** + * Constructs a new hemisphere light helper. + * + * @param {Object3D} object - Usually an instance of {@link SkinnedMesh}. However, any 3D object + * can be used if it represents a hierarchy of bones (see {@link Bone}). + */ + constructor( object ) { + + const bones = getBoneList( object ); + + const geometry = new BufferGeometry(); + + const vertices = []; + const colors = []; + + const color1 = new Color( 0, 0, 1 ); + const color2 = new Color( 0, 1, 0 ); + + for ( let i = 0; i < bones.length; i ++ ) { + + const bone = bones[ i ]; + + if ( bone.parent && bone.parent.isBone ) { + + vertices.push( 0, 0, 0 ); + vertices.push( 0, 0, 0 ); + colors.push( color1.r, color1.g, color1.b ); + colors.push( color2.r, color2.g, color2.b ); + + } + + } + + geometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + const material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } ); + + super( geometry, material ); + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isSkeletonHelper = true; + + this.type = 'SkeletonHelper'; + + /** + * The object being visualized. + * + * @type {Object3D} + */ + this.root = object; + + /** + * he list of bones that the helper visualizes. + * + * @type {Array} + */ + this.bones = bones; + + this.matrix = object.matrixWorld; + this.matrixAutoUpdate = false; + + } + + updateMatrixWorld( force ) { + + const bones = this.bones; + + const geometry = this.geometry; + const position = geometry.getAttribute( 'position' ); + + _matrixWorldInv.copy( this.root.matrixWorld ).invert(); + + for ( let i = 0, j = 0; i < bones.length; i ++ ) { + + const bone = bones[ i ]; + + if ( bone.parent && bone.parent.isBone ) { + + _boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld ); + _vector$2.setFromMatrixPosition( _boneMatrix ); + position.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z ); + + _boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld ); + _vector$2.setFromMatrixPosition( _boneMatrix ); + position.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z ); + + j += 2; + + } + + } + + geometry.getAttribute( 'position' ).needsUpdate = true; + + super.updateMatrixWorld( force ); + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + this.geometry.dispose(); + this.material.dispose(); + + } + +} + + +function getBoneList( object ) { + + const boneList = []; + + if ( object.isBone === true ) { + + boneList.push( object ); + + } + + for ( let i = 0; i < object.children.length; i ++ ) { + + boneList.push( ...getBoneList( object.children[ i ] ) ); + + } + + return boneList; + +} + +/** + * This displays a helper object consisting of a spherical mesh for + * visualizing an instance of {@link PointLight}. + * + * ```js + * const pointLight = new THREE.PointLight( 0xff0000, 1, 100 ); + * pointLight.position.set( 10, 10, 10 ); + * scene.add( pointLight ); + * + * const sphereSize = 1; + * const pointLightHelper = new THREE.PointLightHelper( pointLight, sphereSize ); + * scene.add( pointLightHelper ); + * ``` + * + * @augments Mesh + */ +class PointLightHelper extends Mesh { + + /** + * Constructs a new point light helper. + * + * @param {PointLight} light - The light to be visualized. + * @param {number} [sphereSize=1] - The size of the sphere helper. + * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take + * the color of the light. + */ + constructor( light, sphereSize, color ) { + + const geometry = new SphereGeometry( sphereSize, 4, 2 ); + const material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } ); + + super( geometry, material ); + + /** + * The light being visualized. + * + * @type {HemisphereLight} + */ + this.light = light; + + /** + * The color parameter passed in the constructor. + * If not set, the helper will take the color of the light. + * + * @type {number|Color|string} + */ + this.color = color; + + this.type = 'PointLightHelper'; + + this.matrix = this.light.matrixWorld; + this.matrixAutoUpdate = false; + + this.update(); + + + /* + // TODO: delete this comment? + const distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 ); + const distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } ); + + this.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial ); + this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial ); + + const d = light.distance; + + if ( d === 0.0 ) { + + this.lightDistance.visible = false; + + } else { + + this.lightDistance.scale.set( d, d, d ); + + } + + this.add( this.lightDistance ); + */ + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + this.geometry.dispose(); + this.material.dispose(); + + } + + /** + * Updates the helper to match the position of the + * light being visualized. + */ + update() { + + this.light.updateWorldMatrix( true, false ); + + if ( this.color !== undefined ) { + + this.material.color.set( this.color ); + + } else { + + this.material.color.copy( this.light.color ); + + } + + /* + const d = this.light.distance; + + if ( d === 0.0 ) { + + this.lightDistance.visible = false; + + } else { + + this.lightDistance.visible = true; + this.lightDistance.scale.set( d, d, d ); + + } + */ + + } + +} + +const _vector$1 = /*@__PURE__*/ new Vector3(); +const _color1 = /*@__PURE__*/ new Color(); +const _color2 = /*@__PURE__*/ new Color(); + +/** + * Creates a visual aid consisting of a spherical mesh for a + * given {@link HemisphereLight}. + * + * ```js + * const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 ); + * const helper = new THREE.HemisphereLightHelper( light, 5 ); + * scene.add( helper ); + * ``` + * + * @augments Object3D + */ +class HemisphereLightHelper extends Object3D { + + /** + * Constructs a new hemisphere light helper. + * + * @param {HemisphereLight} light - The light to be visualized. + * @param {number} [size=1] - The size of the mesh used to visualize the light. + * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take + * the color of the light. + */ + constructor( light, size, color ) { + + super(); + + /** + * The light being visualized. + * + * @type {HemisphereLight} + */ + this.light = light; + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + /** + * The color parameter passed in the constructor. + * If not set, the helper will take the color of the light. + * + * @type {number|Color|string} + */ + this.color = color; + + this.type = 'HemisphereLightHelper'; + + const geometry = new OctahedronGeometry( size ); + geometry.rotateY( Math.PI * 0.5 ); + + this.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } ); + if ( this.color === undefined ) this.material.vertexColors = true; + + const position = geometry.getAttribute( 'position' ); + const colors = new Float32Array( position.count * 3 ); + + geometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) ); + + this.add( new Mesh( geometry, this.material ) ); + + this.update(); + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + this.children[ 0 ].geometry.dispose(); + this.children[ 0 ].material.dispose(); + + } + + /** + * Updates the helper to match the position and direction of the + * light being visualized. + */ + update() { + + const mesh = this.children[ 0 ]; + + if ( this.color !== undefined ) { + + this.material.color.set( this.color ); + + } else { + + const colors = mesh.geometry.getAttribute( 'color' ); + + _color1.copy( this.light.color ); + _color2.copy( this.light.groundColor ); + + for ( let i = 0, l = colors.count; i < l; i ++ ) { + + const color = ( i < ( l / 2 ) ) ? _color1 : _color2; + + colors.setXYZ( i, color.r, color.g, color.b ); + + } + + colors.needsUpdate = true; + + } + + this.light.updateWorldMatrix( true, false ); + + mesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() ); + + } + +} + +/** + * The helper is an object to define grids. Grids are two-dimensional + * arrays of lines. + * + * ```js + * const size = 10; + * const divisions = 10; + * + * const gridHelper = new THREE.GridHelper( size, divisions ); + * scene.add( gridHelper ); + * ``` + * + * @augments LineSegments + */ +class GridHelper extends LineSegments { + + /** + * Constructs a new grid helper. + * + * @param {number} [size=10] - The size of the grid. + * @param {number} [divisions=10] - The number of divisions across the grid. + * @param {number|Color|string} [color1=0x444444] - The color of the center line. + * @param {number|Color|string} [color2=0x888888] - The color of the lines of the grid. + */ + constructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) { + + color1 = new Color( color1 ); + color2 = new Color( color2 ); + + const center = divisions / 2; + const step = size / divisions; + const halfSize = size / 2; + + const vertices = [], colors = []; + + for ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) { + + vertices.push( - halfSize, 0, k, halfSize, 0, k ); + vertices.push( k, 0, - halfSize, k, 0, halfSize ); + + const color = i === center ? color1 : color2; + + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + + } + + const geometry = new BufferGeometry(); + geometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + const material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } ); + + super( geometry, material ); + + this.type = 'GridHelper'; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + this.geometry.dispose(); + this.material.dispose(); + + } + +} + +/** + * This helper is an object to define polar grids. Grids are + * two-dimensional arrays of lines. + * + * ```js + * const radius = 10; + * const sectors = 16; + * const rings = 8; + * const divisions = 64; + * + * const helper = new THREE.PolarGridHelper( radius, sectors, rings, divisions ); + * scene.add( helper ); + * ``` + * + * @augments LineSegments + */ +class PolarGridHelper extends LineSegments { + + /** + * Constructs a new polar grid helper. + * + * @param {number} [radius=10] - The radius of the polar grid. This can be any positive number. + * @param {number} [sectors=16] - The number of sectors the grid will be divided into. This can be any positive integer. + * @param {number} [rings=16] - The number of rings. This can be any positive integer. + * @param {number} [divisions=64] - The number of line segments used for each circle. This can be any positive integer. + * @param {number|Color|string} [color1=0x444444] - The first color used for grid elements. + * @param {number|Color|string} [color2=0x888888] - The second color used for grid elements. + */ + constructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) { + + color1 = new Color( color1 ); + color2 = new Color( color2 ); + + const vertices = []; + const colors = []; + + // create the sectors + + if ( sectors > 1 ) { + + for ( let i = 0; i < sectors; i ++ ) { + + const v = ( i / sectors ) * ( Math.PI * 2 ); + + const x = Math.sin( v ) * radius; + const z = Math.cos( v ) * radius; + + vertices.push( 0, 0, 0 ); + vertices.push( x, 0, z ); + + const color = ( i & 1 ) ? color1 : color2; + + colors.push( color.r, color.g, color.b ); + colors.push( color.r, color.g, color.b ); + + } + + } + + // create the rings + + for ( let i = 0; i < rings; i ++ ) { + + const color = ( i & 1 ) ? color1 : color2; + + const r = radius - ( radius / rings * i ); + + for ( let j = 0; j < divisions; j ++ ) { + + // first vertex + + let v = ( j / divisions ) * ( Math.PI * 2 ); + + let x = Math.sin( v ) * r; + let z = Math.cos( v ) * r; + + vertices.push( x, 0, z ); + colors.push( color.r, color.g, color.b ); + + // second vertex + + v = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 ); + + x = Math.sin( v ) * r; + z = Math.cos( v ) * r; + + vertices.push( x, 0, z ); + colors.push( color.r, color.g, color.b ); + + } + + } + + const geometry = new BufferGeometry(); + geometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + const material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } ); + + super( geometry, material ); + + this.type = 'PolarGridHelper'; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + this.geometry.dispose(); + this.material.dispose(); + + } + +} + +const _v1 = /*@__PURE__*/ new Vector3(); +const _v2 = /*@__PURE__*/ new Vector3(); +const _v3 = /*@__PURE__*/ new Vector3(); + +/** + * Helper object to assist with visualizing a {@link DirectionalLight}'s + * effect on the scene. This consists of plane and a line representing the + * light's position and direction. + * + * ```js + * const light = new THREE.DirectionalLight( 0xFFFFFF ); + * scene.add( light ); + * + * const helper = new THREE.DirectionalLightHelper( light, 5 ); + * scene.add( helper ); + * ``` + * + * @augments Object3D + */ +class DirectionalLightHelper extends Object3D { + + /** + * Constructs a new directional light helper. + * + * @param {DirectionalLight} light - The light to be visualized. + * @param {number} [size=1] - The dimensions of the plane. + * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take + * the color of the light. + */ + constructor( light, size, color ) { + + super(); + + /** + * The light being visualized. + * + * @type {DirectionalLight} + */ + this.light = light; + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + /** + * The color parameter passed in the constructor. + * If not set, the helper will take the color of the light. + * + * @type {number|Color|string} + */ + this.color = color; + + this.type = 'DirectionalLightHelper'; + + if ( size === undefined ) size = 1; + + let geometry = new BufferGeometry(); + geometry.setAttribute( 'position', new Float32BufferAttribute( [ + - size, size, 0, + size, size, 0, + size, - size, 0, + - size, - size, 0, + - size, size, 0 + ], 3 ) ); + + const material = new LineBasicMaterial( { fog: false, toneMapped: false } ); + + /** + * Contains the line showing the location of the directional light. + * + * @type {Line} + */ + this.lightPlane = new Line( geometry, material ); + this.add( this.lightPlane ); + + geometry = new BufferGeometry(); + geometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) ); + + /** + * Represents the target line of the directional light. + * + * @type {Line} + */ + this.targetLine = new Line( geometry, material ); + this.add( this.targetLine ); + + this.update(); + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + this.lightPlane.geometry.dispose(); + this.lightPlane.material.dispose(); + this.targetLine.geometry.dispose(); + this.targetLine.material.dispose(); + + } + + /** + * Updates the helper to match the position and direction of the + * light being visualized. + */ + update() { + + this.light.updateWorldMatrix( true, false ); + this.light.target.updateWorldMatrix( true, false ); + + _v1.setFromMatrixPosition( this.light.matrixWorld ); + _v2.setFromMatrixPosition( this.light.target.matrixWorld ); + _v3.subVectors( _v2, _v1 ); + + this.lightPlane.lookAt( _v2 ); + + if ( this.color !== undefined ) { + + this.lightPlane.material.color.set( this.color ); + this.targetLine.material.color.set( this.color ); + + } else { + + this.lightPlane.material.color.copy( this.light.color ); + this.targetLine.material.color.copy( this.light.color ); + + } + + this.targetLine.lookAt( _v2 ); + this.targetLine.scale.z = _v3.length(); + + } + +} + +const _vector = /*@__PURE__*/ new Vector3(); +const _camera = /*@__PURE__*/ new Camera(); + +/** + * This helps with visualizing what a camera contains in its frustum. It + * visualizes the frustum of a camera using a line segments. + * + * Based on frustum visualization in [lightgl.js shadowmap example]{@link https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html}. + * + * `CameraHelper` must be a child of the scene. + * + * ```js + * const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 ); + * const helper = new THREE.CameraHelper( camera ); + * scene.add( helper ); + * ``` + * + * @augments LineSegments + */ +class CameraHelper extends LineSegments { + + /** + * Constructs a new arrow helper. + * + * @param {Camera} camera - The camera to visualize. + */ + constructor( camera ) { + + const geometry = new BufferGeometry(); + const material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } ); + + const vertices = []; + const colors = []; + + const pointMap = {}; + + // near + + addLine( 'n1', 'n2' ); + addLine( 'n2', 'n4' ); + addLine( 'n4', 'n3' ); + addLine( 'n3', 'n1' ); + + // far + + addLine( 'f1', 'f2' ); + addLine( 'f2', 'f4' ); + addLine( 'f4', 'f3' ); + addLine( 'f3', 'f1' ); + + // sides + + addLine( 'n1', 'f1' ); + addLine( 'n2', 'f2' ); + addLine( 'n3', 'f3' ); + addLine( 'n4', 'f4' ); + + // cone + + addLine( 'p', 'n1' ); + addLine( 'p', 'n2' ); + addLine( 'p', 'n3' ); + addLine( 'p', 'n4' ); + + // up + + addLine( 'u1', 'u2' ); + addLine( 'u2', 'u3' ); + addLine( 'u3', 'u1' ); + + // target + + addLine( 'c', 't' ); + addLine( 'p', 'c' ); + + // cross + + addLine( 'cn1', 'cn2' ); + addLine( 'cn3', 'cn4' ); + + addLine( 'cf1', 'cf2' ); + addLine( 'cf3', 'cf4' ); + + function addLine( a, b ) { + + addPoint( a ); + addPoint( b ); + + } + + function addPoint( id ) { + + vertices.push( 0, 0, 0 ); + colors.push( 0, 0, 0 ); + + if ( pointMap[ id ] === undefined ) { + + pointMap[ id ] = []; + + } + + pointMap[ id ].push( ( vertices.length / 3 ) - 1 ); + + } + + geometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + super( geometry, material ); + + this.type = 'CameraHelper'; + + /** + * The camera being visualized. + * + * @type {Camera} + */ + this.camera = camera; + if ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix(); + + this.matrix = camera.matrixWorld; + this.matrixAutoUpdate = false; + + /** + * This contains the points used to visualize the camera. + * + * @type {Object>} + */ + this.pointMap = pointMap; + + this.update(); + + // colors + + const colorFrustum = new Color( 0xffaa00 ); + const colorCone = new Color( 0xff0000 ); + const colorUp = new Color( 0x00aaff ); + const colorTarget = new Color( 0xffffff ); + const colorCross = new Color( 0x333333 ); + + this.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross ); + + } + + /** + * Defines the colors of the helper. + * + * @param {Color} frustum - The frustum line color. + * @param {Color} cone - The cone line color. + * @param {Color} up - The up line color. + * @param {Color} target - The target line color. + * @param {Color} cross - The cross line color. + */ + setColors( frustum, cone, up, target, cross ) { + + const geometry = this.geometry; + + const colorAttribute = geometry.getAttribute( 'color' ); + + // near + + colorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2 + colorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4 + colorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3 + colorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1 + + // far + + colorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2 + colorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4 + colorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3 + colorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1 + + // sides + + colorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1 + colorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2 + colorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3 + colorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4 + + // cone + + colorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1 + colorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2 + colorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3 + colorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4 + + // up + + colorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2 + colorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3 + colorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1 + + // target + + colorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t + colorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c + + // cross + + colorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2 + colorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4 + + colorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2 + colorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4 + + colorAttribute.needsUpdate = true; + + } + + /** + * Updates the helper based on the projection matrix of the camera. + */ + update() { + + const geometry = this.geometry; + const pointMap = this.pointMap; + + const w = 1, h = 1; + + // we need just camera projection matrix inverse + // world matrix must be identity + + _camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse ); + + // Adjust z values based on coordinate system + const nearZ = this.camera.coordinateSystem === WebGLCoordinateSystem ? -1 : 0; + + // center / target + setPoint( 'c', pointMap, geometry, _camera, 0, 0, nearZ ); + setPoint( 't', pointMap, geometry, _camera, 0, 0, 1 ); + + // near + + setPoint( 'n1', pointMap, geometry, _camera, -1, -1, nearZ ); + setPoint( 'n2', pointMap, geometry, _camera, w, -1, nearZ ); + setPoint( 'n3', pointMap, geometry, _camera, -1, h, nearZ ); + setPoint( 'n4', pointMap, geometry, _camera, w, h, nearZ ); + + // far + + setPoint( 'f1', pointMap, geometry, _camera, -1, -1, 1 ); + setPoint( 'f2', pointMap, geometry, _camera, w, -1, 1 ); + setPoint( 'f3', pointMap, geometry, _camera, -1, h, 1 ); + setPoint( 'f4', pointMap, geometry, _camera, w, h, 1 ); + + // up + + setPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, nearZ ); + setPoint( 'u2', pointMap, geometry, _camera, -1 * 0.7, h * 1.1, nearZ ); + setPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, nearZ ); + + // cross + + setPoint( 'cf1', pointMap, geometry, _camera, -1, 0, 1 ); + setPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 ); + setPoint( 'cf3', pointMap, geometry, _camera, 0, -1, 1 ); + setPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 ); + + setPoint( 'cn1', pointMap, geometry, _camera, -1, 0, nearZ ); + setPoint( 'cn2', pointMap, geometry, _camera, w, 0, nearZ ); + setPoint( 'cn3', pointMap, geometry, _camera, 0, -1, nearZ ); + setPoint( 'cn4', pointMap, geometry, _camera, 0, h, nearZ ); + + geometry.getAttribute( 'position' ).needsUpdate = true; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + this.geometry.dispose(); + this.material.dispose(); + + } + +} + + +function setPoint( point, pointMap, geometry, camera, x, y, z ) { + + _vector.set( x, y, z ).unproject( camera ); + + const points = pointMap[ point ]; + + if ( points !== undefined ) { + + const position = geometry.getAttribute( 'position' ); + + for ( let i = 0, l = points.length; i < l; i ++ ) { + + position.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z ); + + } + + } + +} + +const _box = /*@__PURE__*/ new Box3(); + +/** + * Helper object to graphically show the world-axis-aligned bounding box + * around an object. The actual bounding box is handled with {@link Box3}, + * this is just a visual helper for debugging. It can be automatically + * resized with {@link BoxHelper#update} when the object it's created from + * is transformed. Note that the object must have a geometry for this to work, + * so it won't work with sprites. + * + * ```js + * const sphere = new THREE.SphereGeometry(); + * const object = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( 0xff0000 ) ); + * const box = new THREE.BoxHelper( object, 0xffff00 ); + * scene.add( box ); + * ``` + * + * @augments LineSegments + */ +class BoxHelper extends LineSegments { + + /** + * Constructs a new box helper. + * + * @param {Object3D} [object] - The 3D object to show the world-axis-aligned bounding box. + * @param {number|Color|string} [color=0xffff00] - The box's color. + */ + constructor( object, color = 0xffff00 ) { + + const indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); + const positions = new Float32Array( 8 * 3 ); + + const geometry = new BufferGeometry(); + geometry.setIndex( new BufferAttribute( indices, 1 ) ); + geometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) ); + + super( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) ); + + /** + * The 3D object being visualized. + * + * @type {Object3D} + */ + this.object = object; + this.type = 'BoxHelper'; + + this.matrixAutoUpdate = false; + + this.update(); + + } + + /** + * Updates the helper's geometry to match the dimensions of the object, + * including any children. + */ + update() { + + if ( this.object !== undefined ) { + + _box.setFromObject( this.object ); + + } + + if ( _box.isEmpty() ) return; + + const min = _box.min; + const max = _box.max; + + /* + 5____4 + 1/___0/| + | 6__|_7 + 2/___3/ + + 0: max.x, max.y, max.z + 1: min.x, max.y, max.z + 2: min.x, min.y, max.z + 3: max.x, min.y, max.z + 4: max.x, max.y, min.z + 5: min.x, max.y, min.z + 6: min.x, min.y, min.z + 7: max.x, min.y, min.z + */ + + const position = this.geometry.attributes.position; + const array = position.array; + + array[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z; + array[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z; + array[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z; + array[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z; + array[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z; + array[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z; + array[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z; + array[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z; + + position.needsUpdate = true; + + this.geometry.computeBoundingSphere(); + + } + + /** + * Updates the wireframe box for the passed object. + * + * @param {Object3D} object - The 3D object to create the helper for. + * @return {BoxHelper} A reference to this instance. + */ + setFromObject( object ) { + + this.object = object; + this.update(); + + return this; + + } + + copy( source, recursive ) { + + super.copy( source, recursive ); + + this.object = source.object; + + return this; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + this.geometry.dispose(); + this.material.dispose(); + + } + +} + +/** + * A helper object to visualize an instance of {@link Box3}. + * + * ```js + * const box = new THREE.Box3(); + * box.setFromCenterAndSize( new THREE.Vector3( 1, 1, 1 ), new THREE.Vector3( 2, 1, 3 ) ); + * + * const helper = new THREE.Box3Helper( box, 0xffff00 ); + * scene.add( helper ) + * ``` + * + * @augments LineSegments + */ +class Box3Helper extends LineSegments { + + /** + * Constructs a new box3 helper. + * + * @param {Box3} box - The box to visualize. + * @param {number|Color|string} [color=0xffff00] - The box's color. + */ + constructor( box, color = 0xffff00 ) { + + const indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); + + const positions = [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1 ]; + + const geometry = new BufferGeometry(); + + geometry.setIndex( new BufferAttribute( indices, 1 ) ); + + geometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + + super( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) ); + + /** + * The box being visualized. + * + * @type {Box3} + */ + this.box = box; + + this.type = 'Box3Helper'; + + this.geometry.computeBoundingSphere(); + + } + + updateMatrixWorld( force ) { + + const box = this.box; + + if ( box.isEmpty() ) return; + + box.getCenter( this.position ); + + box.getSize( this.scale ); + + this.scale.multiplyScalar( 0.5 ); + + super.updateMatrixWorld( force ); + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + this.geometry.dispose(); + this.material.dispose(); + + } + +} + +/** + * A helper object to visualize an instance of {@link Plane}. + * + * ```js + * const plane = new THREE.Plane( new THREE.Vector3( 1, 1, 0.2 ), 3 ); + * const helper = new THREE.PlaneHelper( plane, 1, 0xffff00 ); + * scene.add( helper ); + * ``` + * + * @augments Line + */ +class PlaneHelper extends Line { + + /** + * Constructs a new plane helper. + * + * @param {Plane} plane - The plane to be visualized. + * @param {number} [size=1] - The side length of plane helper. + * @param {number|Color|string} [hex=0xffff00] - The helper's color. + */ + constructor( plane, size = 1, hex = 0xffff00 ) { + + const color = hex; + + const positions = [ 1, -1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, 0 ]; + + const geometry = new BufferGeometry(); + geometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + geometry.computeBoundingSphere(); + + super( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) ); + + this.type = 'PlaneHelper'; + + /** + * The plane being visualized. + * + * @type {Plane} + */ + this.plane = plane; + + /** + * The side length of plane helper. + * + * @type {number} + * @default 1 + */ + this.size = size; + + const positions2 = [ 1, 1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, -1, 0, 1, -1, 0 ]; + + const geometry2 = new BufferGeometry(); + geometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); + geometry2.computeBoundingSphere(); + + this.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) ); + + } + + updateMatrixWorld( force ) { + + this.position.set( 0, 0, 0 ); + + this.scale.set( 0.5 * this.size, 0.5 * this.size, 1 ); + + this.lookAt( this.plane.normal ); + + this.translateZ( - this.plane.constant ); + + super.updateMatrixWorld( force ); + + } + + /** + * Updates the helper to match the position and direction of the + * light being visualized. + */ + dispose() { + + this.geometry.dispose(); + this.material.dispose(); + this.children[ 0 ].geometry.dispose(); + this.children[ 0 ].material.dispose(); + + } + +} + +const _axis = /*@__PURE__*/ new Vector3(); +let _lineGeometry, _coneGeometry; + +/** + * An 3D arrow object for visualizing directions. + * + * ```js + * const dir = new THREE.Vector3( 1, 2, 0 ); + * + * //normalize the direction vector (convert to vector of length 1) + * dir.normalize(); + * + * const origin = new THREE.Vector3( 0, 0, 0 ); + * const length = 1; + * const hex = 0xffff00; + * + * const arrowHelper = new THREE.ArrowHelper( dir, origin, length, hex ); + * scene.add( arrowHelper ); + * ``` + * + * @augments Object3D + */ +class ArrowHelper extends Object3D { + + /** + * Constructs a new arrow helper. + * + * @param {Vector3} [dir=(0, 0, 1)] - The (normalized) direction vector. + * @param {Vector3} [origin=(0, 0, 0)] - Point at which the arrow starts. + * @param {number} [length=1] - Length of the arrow in world units. + * @param {(number|Color|string)} [color=0xffff00] - Color of the arrow. + * @param {number} [headLength=length*0.2] - The length of the head of the arrow. + * @param {number} [headWidth=headLength*0.2] - The width of the head of the arrow. + */ + constructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) { + + super(); + + this.type = 'ArrowHelper'; + + if ( _lineGeometry === undefined ) { + + _lineGeometry = new BufferGeometry(); + _lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) ); + + _coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 ); + _coneGeometry.translate( 0, -0.5, 0 ); + + } + + this.position.copy( origin ); + + /** + * The line part of the arrow helper. + * + * @type {Line} + */ + this.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) ); + this.line.matrixAutoUpdate = false; + this.add( this.line ); + + /** + * The cone part of the arrow helper. + * + * @type {Mesh} + */ + this.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) ); + this.cone.matrixAutoUpdate = false; + this.add( this.cone ); + + this.setDirection( dir ); + this.setLength( length, headLength, headWidth ); + + } + + /** + * Sets the direction of the helper. + * + * @param {Vector3} dir - The normalized direction vector. + */ + setDirection( dir ) { + + // dir is assumed to be normalized + + if ( dir.y > 0.99999 ) { + + this.quaternion.set( 0, 0, 0, 1 ); + + } else if ( dir.y < -0.99999 ) { + + this.quaternion.set( 1, 0, 0, 0 ); + + } else { + + _axis.set( dir.z, 0, - dir.x ).normalize(); + + const radians = Math.acos( dir.y ); + + this.quaternion.setFromAxisAngle( _axis, radians ); + + } + + } + + /** + * Sets the length of the helper. + * + * @param {number} length - Length of the arrow in world units. + * @param {number} [headLength=length*0.2] - The length of the head of the arrow. + * @param {number} [headWidth=headLength*0.2] - The width of the head of the arrow. + */ + setLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) { + + this.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458 + this.line.updateMatrix(); + + this.cone.scale.set( headWidth, headLength, headWidth ); + this.cone.position.y = length; + this.cone.updateMatrix(); + + } + + /** + * Sets the color of the helper. + * + * @param {number|Color|string} color - The color to set. + */ + setColor( color ) { + + this.line.material.color.set( color ); + this.cone.material.color.set( color ); + + } + + copy( source ) { + + super.copy( source, false ); + + this.line.copy( source.line ); + this.cone.copy( source.cone ); + + return this; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + this.line.geometry.dispose(); + this.line.material.dispose(); + this.cone.geometry.dispose(); + this.cone.material.dispose(); + + } + +} + +/** + * An axis object to visualize the 3 axes in a simple way. + * The X axis is red. The Y axis is green. The Z axis is blue. + * + * ```js + * const axesHelper = new THREE.AxesHelper( 5 ); + * scene.add( axesHelper ); + * ``` + * + * @augments LineSegments + */ +class AxesHelper extends LineSegments { + + /** + * Constructs a new axes helper. + * + * @param {number} [size=1] - Size of the lines representing the axes. + */ + constructor( size = 1 ) { + + const vertices = [ + 0, 0, 0, size, 0, 0, + 0, 0, 0, 0, size, 0, + 0, 0, 0, 0, 0, size + ]; + + const colors = [ + 1, 0, 0, 1, 0.6, 0, + 0, 1, 0, 0.6, 1, 0, + 0, 0, 1, 0, 0.6, 1 + ]; + + const geometry = new BufferGeometry(); + geometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + const material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } ); + + super( geometry, material ); + + this.type = 'AxesHelper'; + + } + + /** + * Defines the colors of the axes helper. + * + * @param {number|Color|string} xAxisColor - The color for the x axis. + * @param {number|Color|string} yAxisColor - The color for the y axis. + * @param {number|Color|string} zAxisColor - The color for the z axis. + * @return {AxesHelper} A reference to this axes helper. + */ + setColors( xAxisColor, yAxisColor, zAxisColor ) { + + const color = new Color(); + const array = this.geometry.attributes.color.array; + + color.set( xAxisColor ); + color.toArray( array, 0 ); + color.toArray( array, 3 ); + + color.set( yAxisColor ); + color.toArray( array, 6 ); + color.toArray( array, 9 ); + + color.set( zAxisColor ); + color.toArray( array, 12 ); + color.toArray( array, 15 ); + + this.geometry.attributes.color.needsUpdate = true; + + return this; + + } + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + + this.geometry.dispose(); + this.material.dispose(); + + } + +} + +/** + * This class is used to convert a series of paths to an array of + * shapes. It is specifically used in context of fonts and SVG. + */ +class ShapePath { + + /** + * Constructs a new shape path. + */ + constructor() { + + this.type = 'ShapePath'; + + /** + * The color of the shape. + * + * @type {Color} + */ + this.color = new Color(); + + /** + * The paths that have been generated for this shape. + * + * @type {Array} + * @default null + */ + this.subPaths = []; + + /** + * The current path that is being generated. + * + * @type {?Path} + * @default null + */ + this.currentPath = null; + + } + + /** + * Creates a new path and moves it current point to the given one. + * + * @param {number} x - The x coordinate. + * @param {number} y - The y coordinate. + * @return {ShapePath} A reference to this shape path. + */ + moveTo( x, y ) { + + this.currentPath = new Path(); + this.subPaths.push( this.currentPath ); + this.currentPath.moveTo( x, y ); + + return this; + + } + + /** + * Adds an instance of {@link LineCurve} to the path by connecting + * the current point with the given one. + * + * @param {number} x - The x coordinate of the end point. + * @param {number} y - The y coordinate of the end point. + * @return {ShapePath} A reference to this shape path. + */ + lineTo( x, y ) { + + this.currentPath.lineTo( x, y ); + + return this; + + } + + /** + * Adds an instance of {@link QuadraticBezierCurve} to the path by connecting + * the current point with the given one. + * + * @param {number} aCPx - The x coordinate of the control point. + * @param {number} aCPy - The y coordinate of the control point. + * @param {number} aX - The x coordinate of the end point. + * @param {number} aY - The y coordinate of the end point. + * @return {ShapePath} A reference to this shape path. + */ + quadraticCurveTo( aCPx, aCPy, aX, aY ) { + + this.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY ); + + return this; + + } + + /** + * Adds an instance of {@link CubicBezierCurve} to the path by connecting + * the current point with the given one. + * + * @param {number} aCP1x - The x coordinate of the first control point. + * @param {number} aCP1y - The y coordinate of the first control point. + * @param {number} aCP2x - The x coordinate of the second control point. + * @param {number} aCP2y - The y coordinate of the second control point. + * @param {number} aX - The x coordinate of the end point. + * @param {number} aY - The y coordinate of the end point. + * @return {ShapePath} A reference to this shape path. + */ + bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { + + this.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ); + + return this; + + } + + /** + * Adds an instance of {@link SplineCurve} to the path by connecting + * the current point with the given list of points. + * + * @param {Array} pts - An array of points in 2D space. + * @return {ShapePath} A reference to this shape path. + */ + splineThru( pts ) { + + this.currentPath.splineThru( pts ); + + return this; + + } + + /** + * Converts the paths into an array of shapes. + * + * @param {boolean} isCCW - By default solid shapes are defined clockwise (CW) and holes are defined counterclockwise (CCW). + * If this flag is set to `true`, then those are flipped. + * @return {Array} An array of shapes. + */ + toShapes( isCCW ) { + + function toShapesNoHoles( inSubpaths ) { + + const shapes = []; + + for ( let i = 0, l = inSubpaths.length; i < l; i ++ ) { + + const tmpPath = inSubpaths[ i ]; + + const tmpShape = new Shape(); + tmpShape.curves = tmpPath.curves; + + shapes.push( tmpShape ); + + } + + return shapes; + + } + + function isPointInsidePolygon( inPt, inPolygon ) { + + const polyLen = inPolygon.length; + + // inPt on polygon contour => immediate success or + // toggling of inside/outside at every single! intersection point of an edge + // with the horizontal line through inPt, left of inPt + // not counting lowerY endpoints of edges and whole edges on that line + let inside = false; + for ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) { + + let edgeLowPt = inPolygon[ p ]; + let edgeHighPt = inPolygon[ q ]; + + let edgeDx = edgeHighPt.x - edgeLowPt.x; + let edgeDy = edgeHighPt.y - edgeLowPt.y; + + if ( Math.abs( edgeDy ) > Number.EPSILON ) { + + // not parallel + if ( edgeDy < 0 ) { + + edgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx; + edgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy; + + } + + if ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) continue; + + if ( inPt.y === edgeLowPt.y ) { + + if ( inPt.x === edgeLowPt.x ) return true; // inPt is on contour ? + // continue; // no intersection or edgeLowPt => doesn't count !!! + + } else { + + const perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y ); + if ( perpEdge === 0 ) return true; // inPt is on contour ? + if ( perpEdge < 0 ) continue; + inside = ! inside; // true intersection left of inPt + + } + + } else { + + // parallel or collinear + if ( inPt.y !== edgeLowPt.y ) continue; // parallel + // edge lies on the same horizontal line as inPt + if ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) || + ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) ) return true; // inPt: Point on contour ! + // continue; + + } + + } + + return inside; + + } + + const isClockWise = ShapeUtils.isClockWise; + + const subPaths = this.subPaths; + if ( subPaths.length === 0 ) return []; + + let solid, tmpPath, tmpShape; + const shapes = []; + + if ( subPaths.length === 1 ) { + + tmpPath = subPaths[ 0 ]; + tmpShape = new Shape(); + tmpShape.curves = tmpPath.curves; + shapes.push( tmpShape ); + return shapes; + + } + + let holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() ); + holesFirst = isCCW ? ! holesFirst : holesFirst; + + // console.log("Holes first", holesFirst); + + const betterShapeHoles = []; + const newShapes = []; + let newShapeHoles = []; + let mainIdx = 0; + let tmpPoints; + + newShapes[ mainIdx ] = undefined; + newShapeHoles[ mainIdx ] = []; + + for ( let i = 0, l = subPaths.length; i < l; i ++ ) { + + tmpPath = subPaths[ i ]; + tmpPoints = tmpPath.getPoints(); + solid = isClockWise( tmpPoints ); + solid = isCCW ? ! solid : solid; + + if ( solid ) { + + if ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) ) mainIdx ++; + + newShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints }; + newShapes[ mainIdx ].s.curves = tmpPath.curves; + + if ( holesFirst ) mainIdx ++; + newShapeHoles[ mainIdx ] = []; + + //console.log('cw', i); + + } else { + + newShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } ); + + //console.log('ccw', i); + + } + + } + + // only Holes? -> probably all Shapes with wrong orientation + if ( ! newShapes[ 0 ] ) return toShapesNoHoles( subPaths ); + + + if ( newShapes.length > 1 ) { + + let ambiguous = false; + let toChange = 0; + + for ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { + + betterShapeHoles[ sIdx ] = []; + + } + + for ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { + + const sho = newShapeHoles[ sIdx ]; + + for ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) { + + const ho = sho[ hIdx ]; + let hole_unassigned = true; + + for ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) { + + if ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) { + + if ( sIdx !== s2Idx ) toChange ++; + + if ( hole_unassigned ) { + + hole_unassigned = false; + betterShapeHoles[ s2Idx ].push( ho ); + + } else { + + ambiguous = true; + + } + + } + + } + + if ( hole_unassigned ) { + + betterShapeHoles[ sIdx ].push( ho ); + + } + + } + + } + + if ( toChange > 0 && ambiguous === false ) { + + newShapeHoles = betterShapeHoles; + + } + + } + + let tmpHoles; + + for ( let i = 0, il = newShapes.length; i < il; i ++ ) { + + tmpShape = newShapes[ i ].s; + shapes.push( tmpShape ); + tmpHoles = newShapeHoles[ i ]; + + for ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) { + + tmpShape.holes.push( tmpHoles[ j ].h ); + + } + + } + + //console.log("shape", shapes); + + return shapes; + + } + +} + +/** + * Abstract base class for controls. + * + * @abstract + * @augments EventDispatcher + */ +class Controls extends EventDispatcher { + + /** + * Constructs a new controls instance. + * + * @param {Object3D} object - The object that is managed by the controls. + * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners. + */ + constructor( object, domElement = null ) { + + super(); + + /** + * The object that is managed by the controls. + * + * @type {Object3D} + */ + this.object = object; + + /** + * The HTML element used for event listeners. + * + * @type {?HTMLDOMElement} + * @default null + */ + this.domElement = domElement; + + /** + * Whether the controls responds to user input or not. + * + * @type {boolean} + * @default true + */ + this.enabled = true; + + /** + * The internal state of the controls. + * + * @type {number} + * @default -1 + */ + this.state = -1; + + /** + * This object defines the keyboard input of the controls. + * + * @type {Object} + */ + this.keys = {}; + + /** + * This object defines what type of actions are assigned to the available mouse buttons. + * It depends on the control implementation what kind of mouse buttons and actions are supported. + * + * @type {{LEFT: ?number, MIDDLE: ?number, RIGHT: ?number}} + */ + this.mouseButtons = { LEFT: null, MIDDLE: null, RIGHT: null }; + + /** + * This object defines what type of actions are assigned to what kind of touch interaction. + * It depends on the control implementation what kind of touch interaction and actions are supported. + * + * @type {{ONE: ?number, TWO: ?number}} + */ + this.touches = { ONE: null, TWO: null }; + + } + + /** + * Connects the controls to the DOM. This method has so called "side effects" since + * it adds the module's event listeners to the DOM. + * + * @param {HTMLDOMElement} element - The DOM element to connect to. + */ + connect( element ) { + + if ( element === undefined ) { + + console.warn( 'THREE.Controls: connect() now requires an element.' ); // @deprecated, the warning can be removed with r185 + return; + + } + + if ( this.domElement !== null ) this.disconnect(); + + this.domElement = element; + + } + + /** + * Disconnects the controls from the DOM. + */ + disconnect() {} + + /** + * Call this method if you no longer want use to the controls. It frees all internal + * resources and removes all event listeners. + */ + dispose() {} + + /** + * Controls should implement this method if they have to update their internal state + * per simulation step. + * + * @param {number} [delta] - The time delta in seconds. + */ + update( /* delta */ ) {} + +} + +/** + * Scales the texture as large as possible within its surface without cropping + * or stretching the texture. The method preserves the original aspect ratio of + * the texture. Akin to CSS `object-fit: contain` + * + * @param {Texture} texture - The texture. + * @param {number} aspect - The texture's aspect ratio. + * @return {Texture} The updated texture. + */ +function contain( texture, aspect ) { + + const imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1; + + if ( imageAspect > aspect ) { + + texture.repeat.x = 1; + texture.repeat.y = imageAspect / aspect; + + texture.offset.x = 0; + texture.offset.y = ( 1 - texture.repeat.y ) / 2; + + } else { + + texture.repeat.x = aspect / imageAspect; + texture.repeat.y = 1; + + texture.offset.x = ( 1 - texture.repeat.x ) / 2; + texture.offset.y = 0; + + } + + return texture; + +} + +/** + * Scales the texture to the smallest possible size to fill the surface, leaving + * no empty space. The method preserves the original aspect ratio of the texture. + * Akin to CSS `object-fit: cover`. + * + * @param {Texture} texture - The texture. + * @param {number} aspect - The texture's aspect ratio. + * @return {Texture} The updated texture. + */ +function cover( texture, aspect ) { + + const imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1; + + if ( imageAspect > aspect ) { + + texture.repeat.x = aspect / imageAspect; + texture.repeat.y = 1; + + texture.offset.x = ( 1 - texture.repeat.x ) / 2; + texture.offset.y = 0; + + } else { + + texture.repeat.x = 1; + texture.repeat.y = imageAspect / aspect; + + texture.offset.x = 0; + texture.offset.y = ( 1 - texture.repeat.y ) / 2; + + } + + return texture; + +} + +/** + * Configures the texture to the default transformation. Akin to CSS `object-fit: fill`. + * + * @param {Texture} texture - The texture. + * @return {Texture} The updated texture. + */ +function fill( texture ) { + + texture.repeat.x = 1; + texture.repeat.y = 1; + + texture.offset.x = 0; + texture.offset.y = 0; + + return texture; + +} + +/** + * Determines how many bytes must be used to represent the texture. + * + * @param {number} width - The width of the texture. + * @param {number} height - The height of the texture. + * @param {number} format - The texture's format. + * @param {number} type - The texture's type. + * @return {number} The byte length. + */ +function getByteLength( width, height, format, type ) { + + const typeByteLength = getTextureTypeByteLength( type ); + + switch ( format ) { + + // https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml + case AlphaFormat: + return width * height; + case LuminanceFormat: + return width * height; + case LuminanceAlphaFormat: + return width * height * 2; + case RedFormat: + return ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength; + case RedIntegerFormat: + return ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength; + case RGFormat: + return ( ( width * height * 2 ) / typeByteLength.components ) * typeByteLength.byteLength; + case RGIntegerFormat: + return ( ( width * height * 2 ) / typeByteLength.components ) * typeByteLength.byteLength; + case RGBFormat: + return ( ( width * height * 3 ) / typeByteLength.components ) * typeByteLength.byteLength; + case RGBAFormat: + return ( ( width * height * 4 ) / typeByteLength.components ) * typeByteLength.byteLength; + case RGBAIntegerFormat: + return ( ( width * height * 4 ) / typeByteLength.components ) * typeByteLength.byteLength; + + // https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_s3tc_srgb/ + case RGB_S3TC_DXT1_Format: + case RGBA_S3TC_DXT1_Format: + return Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8; + case RGBA_S3TC_DXT3_Format: + case RGBA_S3TC_DXT5_Format: + return Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16; + + // https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_pvrtc/ + case RGB_PVRTC_2BPPV1_Format: + case RGBA_PVRTC_2BPPV1_Format: + return ( Math.max( width, 16 ) * Math.max( height, 8 ) ) / 4; + case RGB_PVRTC_4BPPV1_Format: + case RGBA_PVRTC_4BPPV1_Format: + return ( Math.max( width, 8 ) * Math.max( height, 8 ) ) / 2; + + // https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc/ + case RGB_ETC1_Format: + case RGB_ETC2_Format: + return Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8; + case RGBA_ETC2_EAC_Format: + return Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16; + + // https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_astc/ + case RGBA_ASTC_4x4_Format: + return Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16; + case RGBA_ASTC_5x4_Format: + return Math.floor( ( width + 4 ) / 5 ) * Math.floor( ( height + 3 ) / 4 ) * 16; + case RGBA_ASTC_5x5_Format: + return Math.floor( ( width + 4 ) / 5 ) * Math.floor( ( height + 4 ) / 5 ) * 16; + case RGBA_ASTC_6x5_Format: + return Math.floor( ( width + 5 ) / 6 ) * Math.floor( ( height + 4 ) / 5 ) * 16; + case RGBA_ASTC_6x6_Format: + return Math.floor( ( width + 5 ) / 6 ) * Math.floor( ( height + 5 ) / 6 ) * 16; + case RGBA_ASTC_8x5_Format: + return Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 4 ) / 5 ) * 16; + case RGBA_ASTC_8x6_Format: + return Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 5 ) / 6 ) * 16; + case RGBA_ASTC_8x8_Format: + return Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 7 ) / 8 ) * 16; + case RGBA_ASTC_10x5_Format: + return Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 4 ) / 5 ) * 16; + case RGBA_ASTC_10x6_Format: + return Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 5 ) / 6 ) * 16; + case RGBA_ASTC_10x8_Format: + return Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 7 ) / 8 ) * 16; + case RGBA_ASTC_10x10_Format: + return Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 9 ) / 10 ) * 16; + case RGBA_ASTC_12x10_Format: + return Math.floor( ( width + 11 ) / 12 ) * Math.floor( ( height + 9 ) / 10 ) * 16; + case RGBA_ASTC_12x12_Format: + return Math.floor( ( width + 11 ) / 12 ) * Math.floor( ( height + 11 ) / 12 ) * 16; + + // https://registry.khronos.org/webgl/extensions/EXT_texture_compression_bptc/ + case RGBA_BPTC_Format: + case RGB_BPTC_SIGNED_Format: + case RGB_BPTC_UNSIGNED_Format: + return Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 16; + + // https://registry.khronos.org/webgl/extensions/EXT_texture_compression_rgtc/ + case RED_RGTC1_Format: + case SIGNED_RED_RGTC1_Format: + return Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 8; + case RED_GREEN_RGTC2_Format: + case SIGNED_RED_GREEN_RGTC2_Format: + return Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 16; + + } + + throw new Error( + `Unable to determine texture byte length for ${format} format.`, + ); + +} + +function getTextureTypeByteLength( type ) { + + switch ( type ) { + + case UnsignedByteType: + case ByteType: + return { byteLength: 1, components: 1 }; + case UnsignedShortType: + case ShortType: + case HalfFloatType: + return { byteLength: 2, components: 1 }; + case UnsignedShort4444Type: + case UnsignedShort5551Type: + return { byteLength: 2, components: 4 }; + case UnsignedIntType: + case IntType: + case FloatType: + return { byteLength: 4, components: 1 }; + case UnsignedInt5999Type: + return { byteLength: 4, components: 3 }; + + } + + throw new Error( `Unknown texture type ${type}.` ); + +} + +/** + * A class containing utility functions for textures. + * + * @hideconstructor + */ +class TextureUtils { + + /** + * Scales the texture as large as possible within its surface without cropping + * or stretching the texture. The method preserves the original aspect ratio of + * the texture. Akin to CSS `object-fit: contain` + * + * @param {Texture} texture - The texture. + * @param {number} aspect - The texture's aspect ratio. + * @return {Texture} The updated texture. + */ + static contain( texture, aspect ) { + + return contain( texture, aspect ); + + } + + /** + * Scales the texture to the smallest possible size to fill the surface, leaving + * no empty space. The method preserves the original aspect ratio of the texture. + * Akin to CSS `object-fit: cover`. + * + * @param {Texture} texture - The texture. + * @param {number} aspect - The texture's aspect ratio. + * @return {Texture} The updated texture. + */ + static cover( texture, aspect ) { + + return cover( texture, aspect ); + + } + + /** + * Configures the texture to the default transformation. Akin to CSS `object-fit: fill`. + * + * @param {Texture} texture - The texture. + * @return {Texture} The updated texture. + */ + static fill( texture ) { + + return fill( texture ); + + } + + /** + * Determines how many bytes must be used to represent the texture. + * + * @param {number} width - The width of the texture. + * @param {number} height - The height of the texture. + * @param {number} format - The texture's format. + * @param {number} type - The texture's type. + * @return {number} The byte length. + */ + static getByteLength( width, height, format, type ) { + + return getByteLength( width, height, format, type ); + + } + +} + +if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) { + + __THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: { + revision: REVISION, + } } ) ); + +} + +if ( typeof window !== 'undefined' ) { + + if ( window.__THREE__ ) { + + console.warn( 'WARNING: Multiple instances of Three.js being imported.' ); + + } else { + + window.__THREE__ = REVISION; + + } + +} + +export { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, Controls, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix2, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RAD2DEG, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDepthPacking, RGBFormat, RGBIntegerFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGDepthPacking, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RenderTarget3D, RenderTargetArray, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TextureUtils, TimestampQuery, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLRenderTarget, WebGPUCoordinateSystem, WebXRController, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, arrayNeedsUint32, cloneUniforms, createCanvasElement, createElementNS, getByteLength, getUnlitUniformColorSpace, mergeUniforms, probeAsync, toNormalizedProjectionMatrix, toReversedProjectionMatrix, warnOnce }; diff --git a/web/vendor/three.module.js b/web/vendor/three.module.js new file mode 100644 index 0000000..d82fcb7 --- /dev/null +++ b/web/vendor/three.module.js @@ -0,0 +1,17990 @@ +/** + * @license + * Copyright 2010-2025 Three.js Authors + * SPDX-License-Identifier: MIT + */ +import { Matrix3, Vector2, Color, mergeUniforms, Vector3, CubeUVReflectionMapping, Mesh, BoxGeometry, ShaderMaterial, BackSide, cloneUniforms, Euler, Matrix4, ColorManagement, SRGBTransfer, PlaneGeometry, FrontSide, getUnlitUniformColorSpace, IntType, HalfFloatType, UnsignedByteType, FloatType, RGBAFormat, Plane, EquirectangularReflectionMapping, EquirectangularRefractionMapping, WebGLCubeRenderTarget, CubeReflectionMapping, CubeRefractionMapping, OrthographicCamera, PerspectiveCamera, NoToneMapping, MeshBasicMaterial, NoBlending, WebGLRenderTarget, BufferGeometry, BufferAttribute, LinearSRGBColorSpace, LinearFilter, warnOnce, Uint32BufferAttribute, Uint16BufferAttribute, arrayNeedsUint32, Vector4, DataArrayTexture, CubeTexture, Data3DTexture, LessEqualCompare, DepthTexture, Texture, GLSL3, PCFShadowMap, PCFSoftShadowMap, VSMShadowMap, CustomToneMapping, NeutralToneMapping, AgXToneMapping, ACESFilmicToneMapping, CineonToneMapping, ReinhardToneMapping, LinearToneMapping, LinearTransfer, AddOperation, MixOperation, MultiplyOperation, UniformsUtils, DoubleSide, NormalBlending, TangentSpaceNormalMap, ObjectSpaceNormalMap, Layers, Frustum, MeshDepthMaterial, RGBADepthPacking, MeshDistanceMaterial, NearestFilter, LessEqualDepth, ReverseSubtractEquation, SubtractEquation, AddEquation, OneMinusConstantAlphaFactor, ConstantAlphaFactor, OneMinusConstantColorFactor, ConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, DstAlphaFactor, DstColorFactor, SrcAlphaSaturateFactor, SrcAlphaFactor, SrcColorFactor, OneFactor, ZeroFactor, NotEqualDepth, GreaterDepth, GreaterEqualDepth, EqualDepth, LessDepth, AlwaysDepth, NeverDepth, CullFaceNone, CullFaceBack, CullFaceFront, CustomBlending, MultiplyBlending, SubtractiveBlending, AdditiveBlending, MinEquation, MaxEquation, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NotEqualCompare, GreaterCompare, GreaterEqualCompare, EqualCompare, LessCompare, AlwaysCompare, NeverCompare, NoColorSpace, DepthStencilFormat, getByteLength, DepthFormat, UnsignedIntType, UnsignedInt248Type, UnsignedShortType, createElementNS, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedInt5999Type, ByteType, ShortType, AlphaFormat, RGBFormat, LuminanceFormat, LuminanceAlphaFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBAIntegerFormat, RGB_S3TC_DXT1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_PVRTC_4BPPV1_Format, RGB_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_PVRTC_2BPPV1_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_BPTC_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, EventDispatcher, ArrayCamera, WebXRController, RAD2DEG, createCanvasElement, SRGBColorSpace, REVISION, toNormalizedProjectionMatrix, toReversedProjectionMatrix, probeAsync, WebGLCoordinateSystem } from './three.core.js'; +export { AdditiveAnimationBlendMode, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxHelper, BufferGeometryLoader, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CircleGeometry, Clock, ColorKeyframeTrack, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, Controls, CubeCamera, CubeTextureLoader, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceFrontBack, Curve, CurvePath, CylinderGeometry, Cylindrical, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualStencilFunc, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, Fog, FogExp2, FramebufferTexture, GLBufferAttribute, GLSL1, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, MOUSE, Material, MaterialLoader, MathUtils, Matrix2, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NeverStencilFunc, NormalAnimationBlendMode, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, OctahedronGeometry, Path, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RGBDepthPacking, RGBIntegerFormat, RGDepthPacking, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RenderTarget, RenderTarget3D, RenderTargetArray, ReplaceStencilOp, RingGeometry, Scene, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, TOUCH, TetrahedronGeometry, TextureLoader, TextureUtils, TimestampQuery, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGPUCoordinateSystem, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroSlopeEnding, ZeroStencilOp } from './three.core.js'; + +function WebGLAnimation() { + + let context = null; + let isAnimating = false; + let animationLoop = null; + let requestId = null; + + function onAnimationFrame( time, frame ) { + + animationLoop( time, frame ); + + requestId = context.requestAnimationFrame( onAnimationFrame ); + + } + + return { + + start: function () { + + if ( isAnimating === true ) return; + if ( animationLoop === null ) return; + + requestId = context.requestAnimationFrame( onAnimationFrame ); + + isAnimating = true; + + }, + + stop: function () { + + context.cancelAnimationFrame( requestId ); + + isAnimating = false; + + }, + + setAnimationLoop: function ( callback ) { + + animationLoop = callback; + + }, + + setContext: function ( value ) { + + context = value; + + } + + }; + +} + +function WebGLAttributes( gl ) { + + const buffers = new WeakMap(); + + function createBuffer( attribute, bufferType ) { + + const array = attribute.array; + const usage = attribute.usage; + const size = array.byteLength; + + const buffer = gl.createBuffer(); + + gl.bindBuffer( bufferType, buffer ); + gl.bufferData( bufferType, array, usage ); + + attribute.onUploadCallback(); + + let type; + + if ( array instanceof Float32Array ) { + + type = gl.FLOAT; + + } else if ( array instanceof Uint16Array ) { + + if ( attribute.isFloat16BufferAttribute ) { + + type = gl.HALF_FLOAT; + + } else { + + type = gl.UNSIGNED_SHORT; + + } + + } else if ( array instanceof Int16Array ) { + + type = gl.SHORT; + + } else if ( array instanceof Uint32Array ) { + + type = gl.UNSIGNED_INT; + + } else if ( array instanceof Int32Array ) { + + type = gl.INT; + + } else if ( array instanceof Int8Array ) { + + type = gl.BYTE; + + } else if ( array instanceof Uint8Array ) { + + type = gl.UNSIGNED_BYTE; + + } else if ( array instanceof Uint8ClampedArray ) { + + type = gl.UNSIGNED_BYTE; + + } else { + + throw new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array ); + + } + + return { + buffer: buffer, + type: type, + bytesPerElement: array.BYTES_PER_ELEMENT, + version: attribute.version, + size: size + }; + + } + + function updateBuffer( buffer, attribute, bufferType ) { + + const array = attribute.array; + const updateRanges = attribute.updateRanges; + + gl.bindBuffer( bufferType, buffer ); + + if ( updateRanges.length === 0 ) { + + // Not using update ranges + gl.bufferSubData( bufferType, 0, array ); + + } else { + + // Before applying update ranges, we merge any adjacent / overlapping + // ranges to reduce load on `gl.bufferSubData`. Empirically, this has led + // to performance improvements for applications which make heavy use of + // update ranges. Likely due to GPU command overhead. + // + // Note that to reduce garbage collection between frames, we merge the + // update ranges in-place. This is safe because this method will clear the + // update ranges once updated. + + updateRanges.sort( ( a, b ) => a.start - b.start ); + + // To merge the update ranges in-place, we work from left to right in the + // existing updateRanges array, merging ranges. This may result in a final + // array which is smaller than the original. This index tracks the last + // index representing a merged range, any data after this index can be + // trimmed once the merge algorithm is completed. + let mergeIndex = 0; + + for ( let i = 1; i < updateRanges.length; i ++ ) { + + const previousRange = updateRanges[ mergeIndex ]; + const range = updateRanges[ i ]; + + // We add one here to merge adjacent ranges. This is safe because ranges + // operate over positive integers. + if ( range.start <= previousRange.start + previousRange.count + 1 ) { + + previousRange.count = Math.max( + previousRange.count, + range.start + range.count - previousRange.start + ); + + } else { + + ++ mergeIndex; + updateRanges[ mergeIndex ] = range; + + } + + } + + // Trim the array to only contain the merged ranges. + updateRanges.length = mergeIndex + 1; + + for ( let i = 0, l = updateRanges.length; i < l; i ++ ) { + + const range = updateRanges[ i ]; + + gl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT, + array, range.start, range.count ); + + } + + attribute.clearUpdateRanges(); + + } + + attribute.onUploadCallback(); + + } + + // + + function get( attribute ) { + + if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + + return buffers.get( attribute ); + + } + + function remove( attribute ) { + + if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + + const data = buffers.get( attribute ); + + if ( data ) { + + gl.deleteBuffer( data.buffer ); + + buffers.delete( attribute ); + + } + + } + + function update( attribute, bufferType ) { + + if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + + if ( attribute.isGLBufferAttribute ) { + + const cached = buffers.get( attribute ); + + if ( ! cached || cached.version < attribute.version ) { + + buffers.set( attribute, { + buffer: attribute.buffer, + type: attribute.type, + bytesPerElement: attribute.elementSize, + version: attribute.version + } ); + + } + + return; + + } + + const data = buffers.get( attribute ); + + if ( data === undefined ) { + + buffers.set( attribute, createBuffer( attribute, bufferType ) ); + + } else if ( data.version < attribute.version ) { + + if ( data.size !== attribute.array.byteLength ) { + + throw new Error( 'THREE.WebGLAttributes: The size of the buffer attribute\'s array buffer does not match the original size. Resizing buffer attributes is not supported.' ); + + } + + updateBuffer( data.buffer, attribute, bufferType ); + + data.version = attribute.version; + + } + + } + + return { + + get: get, + remove: remove, + update: update + + }; + +} + +var alphahash_fragment = "#ifdef USE_ALPHAHASH\n\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\n#endif"; + +var alphahash_pars_fragment = "#ifdef USE_ALPHAHASH\n\tconst float ALPHA_HASH_SCALE = 0.05;\n\tfloat hash2D( vec2 value ) {\n\t\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\n\t}\n\tfloat hash3D( vec3 value ) {\n\t\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\n\t}\n\tfloat getAlphaHashThreshold( vec3 position ) {\n\t\tfloat maxDeriv = max(\n\t\t\tlength( dFdx( position.xyz ) ),\n\t\t\tlength( dFdy( position.xyz ) )\n\t\t);\n\t\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\n\t\tvec2 pixScales = vec2(\n\t\t\texp2( floor( log2( pixScale ) ) ),\n\t\t\texp2( ceil( log2( pixScale ) ) )\n\t\t);\n\t\tvec2 alpha = vec2(\n\t\t\thash3D( floor( pixScales.x * position.xyz ) ),\n\t\t\thash3D( floor( pixScales.y * position.xyz ) )\n\t\t);\n\t\tfloat lerpFactor = fract( log2( pixScale ) );\n\t\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\n\t\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\n\t\tvec3 cases = vec3(\n\t\t\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\n\t\t\t( x - 0.5 * a ) / ( 1.0 - a ),\n\t\t\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\n\t\t);\n\t\tfloat threshold = ( x < ( 1.0 - a ) )\n\t\t\t? ( ( x < a ) ? cases.x : cases.y )\n\t\t\t: cases.z;\n\t\treturn clamp( threshold , 1.0e-6, 1.0 );\n\t}\n#endif"; + +var alphamap_fragment = "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\n#endif"; + +var alphamap_pars_fragment = "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif"; + +var alphatest_fragment = "#ifdef USE_ALPHATEST\n\t#ifdef ALPHA_TO_COVERAGE\n\tdiffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\n\tif ( diffuseColor.a == 0.0 ) discard;\n\t#else\n\tif ( diffuseColor.a < alphaTest ) discard;\n\t#endif\n#endif"; + +var alphatest_pars_fragment = "#ifdef USE_ALPHATEST\n\tuniform float alphaTest;\n#endif"; + +var aomap_fragment = "#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_CLEARCOAT ) \n\t\tclearcoatSpecularIndirect *= ambientOcclusion;\n\t#endif\n\t#if defined( USE_SHEEN ) \n\t\tsheenSpecularIndirect *= ambientOcclusion;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\n\t#endif\n#endif"; + +var aomap_pars_fragment = "#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif"; + +var batching_pars_vertex = "#ifdef USE_BATCHING\n\t#if ! defined( GL_ANGLE_multi_draw )\n\t#define gl_DrawID _gl_DrawID\n\tuniform int _gl_DrawID;\n\t#endif\n\tuniform highp sampler2D batchingTexture;\n\tuniform highp usampler2D batchingIdTexture;\n\tmat4 getBatchingMatrix( const in float i ) {\n\t\tint size = textureSize( batchingTexture, 0 ).x;\n\t\tint j = int( i ) * 4;\n\t\tint x = j % size;\n\t\tint y = j / size;\n\t\tvec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\n\t\tvec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\n\t\tvec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\n\t\tvec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\n\t\treturn mat4( v1, v2, v3, v4 );\n\t}\n\tfloat getIndirectIndex( const in int i ) {\n\t\tint size = textureSize( batchingIdTexture, 0 ).x;\n\t\tint x = i % size;\n\t\tint y = i / size;\n\t\treturn float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );\n\t}\n#endif\n#ifdef USE_BATCHING_COLOR\n\tuniform sampler2D batchingColorTexture;\n\tvec3 getBatchingColor( const in float i ) {\n\t\tint size = textureSize( batchingColorTexture, 0 ).x;\n\t\tint j = int( i );\n\t\tint x = j % size;\n\t\tint y = j / size;\n\t\treturn texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb;\n\t}\n#endif"; + +var batching_vertex = "#ifdef USE_BATCHING\n\tmat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );\n#endif"; + +var begin_vertex = "vec3 transformed = vec3( position );\n#ifdef USE_ALPHAHASH\n\tvPosition = vec3( position );\n#endif"; + +var beginnormal_vertex = "vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif"; + +var bsdfs = "float G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n} // validated"; + +var iridescence_fragment = "#ifdef USE_IRIDESCENCE\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t 3.2404542, -0.9692660, 0.0556434,\n\t\t-1.5371385, 1.8760108, -0.2040259,\n\t\t-0.4985314, 0.0415560, 1.0572252\n\t);\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n\t}\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n\t}\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n\t}\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n\t\txyz /= 1.0685e-7;\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\n\t\treturn rgb;\n\t}\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n\t\tvec3 I;\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\t\tif ( cosTheta2Sq < 0.0 ) {\n\t\t\treturn vec3( 1.0 );\n\t\t}\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\n\t\tfloat T121 = 1.0 - R12;\n\t\tfloat phi12 = 0.0;\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\n\t\tfloat phi21 = PI - phi12;\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n\t\tvec3 phi23 = vec3( 0.0 );\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n\t\tvec3 phi = vec3( phi21 ) + phi23;\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n\t\tvec3 r123 = sqrt( R123 );\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n\t\tvec3 C0 = R12 + Rs;\n\t\tI = C0;\n\t\tvec3 Cm = Rs - T121;\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\n\t\t\tCm *= r123;\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n\t\t\tI += Cm * Sm;\n\t\t}\n\t\treturn max( I, vec3( 0.0 ) );\n\t}\n#endif"; + +var bumpmap_pars_fragment = "#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vBumpMapUv );\n\t\tvec2 dSTdy = dFdy( vBumpMapUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\n\t\tvec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif"; + +var clipping_planes_fragment = "#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#ifdef ALPHA_TO_COVERAGE\n\t\tfloat distanceToPlane, distanceGradient;\n\t\tfloat clipOpacity = 1.0;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n\t\t\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\n\t\t\tclipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n\t\t\tif ( clipOpacity == 0.0 ) discard;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\t\tfloat unionClipOpacity = 1.0;\n\t\t\t#pragma unroll_loop_start\n\t\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\t\tplane = clippingPlanes[ i ];\n\t\t\t\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n\t\t\t\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\n\t\t\t\tunionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n\t\t\t}\n\t\t\t#pragma unroll_loop_end\n\t\t\tclipOpacity *= 1.0 - unionClipOpacity;\n\t\t#endif\n\t\tdiffuseColor.a *= clipOpacity;\n\t\tif ( diffuseColor.a == 0.0 ) discard;\n\t#else\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\t\tbool clipped = true;\n\t\t\t#pragma unroll_loop_start\n\t\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\t\tplane = clippingPlanes[ i ];\n\t\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t\t}\n\t\t\t#pragma unroll_loop_end\n\t\t\tif ( clipped ) discard;\n\t\t#endif\n\t#endif\n#endif"; + +var clipping_planes_pars_fragment = "#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif"; + +var clipping_planes_pars_vertex = "#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif"; + +var clipping_planes_vertex = "#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif"; + +var color_fragment = "#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif"; + +var color_pars_fragment = "#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif"; + +var color_pars_vertex = "#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n\tvarying vec3 vColor;\n#endif"; + +var color_vertex = "#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif\n#ifdef USE_BATCHING_COLOR\n\tvec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );\n\tvColor.xyz *= batchingColor.xyz;\n#endif"; + +var common = "#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\n#ifdef USE_ALPHAHASH\n\tvarying vec3 vPosition;\n#endif\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated"; + +var cube_uv_reflection_fragment = "#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define cubeUV_r0 1.0\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif"; + +var defaultnormal_vertex = "vec3 transformedNormal = objectNormal;\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = objectTangent;\n#endif\n#ifdef USE_BATCHING\n\tmat3 bm = mat3( batchingMatrix );\n\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\n\ttransformedNormal = bm * transformedNormal;\n\t#ifdef USE_TANGENT\n\t\ttransformedTangent = bm * transformedTangent;\n\t#endif\n#endif\n#ifdef USE_INSTANCING\n\tmat3 im = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\n\ttransformedNormal = im * transformedNormal;\n\t#ifdef USE_TANGENT\n\t\ttransformedTangent = im * transformedTangent;\n\t#endif\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif"; + +var displacementmap_pars_vertex = "#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif"; + +var displacementmap_vertex = "#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif"; + +var emissivemap_fragment = "#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n\t#ifdef DECODE_VIDEO_TEXTURE_EMISSIVE\n\t\temissiveColor = sRGBTransferEOTF( emissiveColor );\n\t#endif\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif"; + +var emissivemap_pars_fragment = "#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif"; + +var colorspace_fragment = "gl_FragColor = linearToOutputTexel( gl_FragColor );"; + +var colorspace_pars_fragment = "vec4 LinearTransferOETF( in vec4 value ) {\n\treturn value;\n}\nvec4 sRGBTransferEOTF( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 sRGBTransferOETF( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}"; + +var envmap_fragment = "#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif"; + +var envmap_common_pars_fragment = "#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform mat3 envMapRotation;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif"; + +var envmap_pars_fragment = "#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif"; + +var envmap_pars_vertex = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif"; + +var envmap_vertex = "#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif"; + +var fog_vertex = "#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif"; + +var fog_pars_vertex = "#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif"; + +var fog_fragment = "#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif"; + +var fog_pars_fragment = "#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif"; + +var gradientmap_pars_fragment = "#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\tvec2 fw = fwidth( coord ) * 0.5;\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n\t#endif\n}"; + +var lightmap_pars_fragment = "#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif"; + +var lights_lambert_fragment = "LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;"; + +var lights_lambert_pars_fragment = "varying vec3 vViewPosition;\nstruct LambertMaterial {\n\tvec3 diffuseColor;\n\tfloat specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert"; + +var lights_pars_begin = "uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n\tuniform vec3 lightProbe[ 9 ];\n#endif\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif ( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif"; + +var envmap_physical_pars_fragment = "#ifdef USE_ENVMAP\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\t#ifdef USE_ANISOTROPY\n\t\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n\t\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\t\tvec3 bentNormal = cross( bitangent, viewDir );\n\t\t\t\tbentNormal = normalize( cross( bentNormal, bitangent ) );\n\t\t\t\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n\t\t\t\treturn getIBLRadiance( viewDir, bentNormal, roughness );\n\t\t\t#else\n\t\t\t\treturn vec3( 0.0 );\n\t\t\t#endif\n\t\t}\n\t#endif\n#endif"; + +var lights_toon_fragment = "ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;"; + +var lights_toon_pars_fragment = "varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon"; + +var lights_phong_fragment = "BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;"; + +var lights_phong_pars_fragment = "varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong"; + +var lights_physical_fragment = "PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef USE_SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULAR_COLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n\t\t#endif\n\t\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_DISPERSION\n\tmaterial.dispersion = dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\t#ifdef USE_ANISOTROPYMAP\n\t\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n\t\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n\t\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n\t#else\n\t\tvec2 anisotropyV = anisotropyVector;\n\t#endif\n\tmaterial.anisotropy = length( anisotropyV );\n\tif( material.anisotropy == 0.0 ) {\n\t\tanisotropyV = vec2( 1.0, 0.0 );\n\t} else {\n\t\tanisotropyV /= material.anisotropy;\n\t\tmaterial.anisotropy = saturate( material.anisotropy );\n\t}\n\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\n\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\n#endif"; + +var lights_physical_pars_fragment = "struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\tfloat dispersion;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat anisotropy;\n\t\tfloat alphaT;\n\t\tvec3 anisotropyT;\n\t\tvec3 anisotropyB;\n\t#endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n\t\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n\t\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n\t\tfloat v = 0.5 / ( gv + gl );\n\t\treturn saturate(v);\n\t}\n\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n\t\tfloat a2 = alphaT * alphaB;\n\t\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n\t\thighp float v2 = dot( v, v );\n\t\tfloat w2 = a2 / v2;\n\t\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\n\t}\n#endif\n#ifdef USE_CLEARCOAT\n\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n\t\tvec3 f0 = material.clearcoatF0;\n\t\tfloat f90 = material.clearcoatF90;\n\t\tfloat roughness = material.clearcoatRoughness;\n\t\tfloat alpha = pow2( roughness );\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\t\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t\treturn F * ( V * D );\n\t}\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n\tvec3 f0 = material.specularColor;\n\tfloat f90 = material.specularF90;\n\tfloat roughness = material.roughness;\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t#ifdef USE_IRIDESCENCE\n\t\tF = mix( F, material.iridescenceFresnel, material.iridescence );\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat dotTL = dot( material.anisotropyT, lightDir );\n\t\tfloat dotTV = dot( material.anisotropyT, viewDir );\n\t\tfloat dotTH = dot( material.anisotropyT, halfDir );\n\t\tfloat dotBL = dot( material.anisotropyB, lightDir );\n\t\tfloat dotBV = dot( material.anisotropyB, viewDir );\n\t\tfloat dotBH = dot( material.anisotropyB, halfDir );\n\t\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n\t\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n\t#else\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t#endif\n\treturn F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometryNormal;\n\t\tvec3 viewDir = geometryViewDir;\n\t\tvec3 position = geometryPosition;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}"; + +var lights_fragment_begin = "\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n\tgeometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometryPosition, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if defined( USE_LIGHT_PROBES )\n\t\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n\t#endif\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif"; + +var lights_fragment_maps = "#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometryNormal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\t#ifdef USE_ANISOTROPY\n\t\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n\t#else\n\t\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif"; + +var lights_fragment_end = "#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif"; + +var logdepthbuf_fragment = "#if defined( USE_LOGDEPTHBUF )\n\tgl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif"; + +var logdepthbuf_pars_fragment = "#if defined( USE_LOGDEPTHBUF )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif"; + +var logdepthbuf_pars_vertex = "#ifdef USE_LOGDEPTHBUF\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif"; + +var logdepthbuf_vertex = "#ifdef USE_LOGDEPTHBUF\n\tvFragDepth = 1.0 + gl_Position.w;\n\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n#endif"; + +var map_fragment = "#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif"; + +var map_pars_fragment = "#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif"; + +var map_particle_fragment = "#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t#if defined( USE_POINTS_UV )\n\t\tvec2 uv = vUv;\n\t#else\n\t\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\t#endif\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif"; + +var map_particle_pars_fragment = "#if defined( USE_POINTS_UV )\n\tvarying vec2 vUv;\n#else\n\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t\tuniform mat3 uvTransform;\n\t#endif\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif"; + +var metalnessmap_fragment = "float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif"; + +var metalnessmap_pars_fragment = "#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif"; + +var morphinstance_vertex = "#ifdef USE_INSTANCING_MORPH\n\tfloat morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\tfloat morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\tmorphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\n\t}\n#endif"; + +var morphcolor_vertex = "#if defined( USE_MORPHCOLORS )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n\t\t#endif\n\t}\n#endif"; + +var morphnormal_vertex = "#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t}\n#endif"; + +var morphtarget_pars_vertex = "#ifdef USE_MORPHTARGETS\n\t#ifndef USE_INSTANCING_MORPH\n\t\tuniform float morphTargetBaseInfluence;\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t#endif\n\tuniform sampler2DArray morphTargetsTexture;\n\tuniform ivec2 morphTargetsTextureSize;\n\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n\t\tint y = texelIndex / morphTargetsTextureSize.x;\n\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\n\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\n\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\n\t}\n#endif"; + +var morphtarget_vertex = "#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t}\n#endif"; + +var normal_fragment_begin = "float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal *= faceDirection;\n\t#endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\n\t\t#if defined( USE_NORMALMAP )\n\t\t\tvNormalMapUv\n\t\t#elif defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tvClearcoatNormalMapUv\n\t\t#else\n\t\t\tvUv\n\t\t#endif\n\t\t);\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn[0] *= faceDirection;\n\t\ttbn[1] *= faceDirection;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn2[0] *= faceDirection;\n\t\ttbn2[1] *= faceDirection;\n\t#endif\n#endif\nvec3 nonPerturbedNormal = normal;"; + +var normal_fragment_maps = "#ifdef USE_NORMALMAP_OBJECTSPACE\n\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\tnormal = normalize( tbn * mapN );\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif"; + +var normal_pars_fragment = "#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif"; + +var normal_pars_vertex = "#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif"; + +var normal_vertex = "#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif"; + +var normalmap_pars_fragment = "#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( uv.st );\n\t\tvec2 st1 = dFdy( uv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n\t\treturn mat3( T * scale, B * scale, N );\n\t}\n#endif"; + +var clearcoat_normal_fragment_begin = "#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = nonPerturbedNormal;\n#endif"; + +var clearcoat_normal_fragment_maps = "#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif"; + +var clearcoat_pars_fragment = "#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif"; + +var iridescence_pars_fragment = "#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif"; + +var opaque_fragment = "#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );"; + +var packing = "vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.;\nconst float Inv255 = 1. / 255.;\nconst vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );\nconst vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );\nconst vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );\nconst vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );\nvec4 packDepthToRGBA( const in float v ) {\n\tif( v <= 0.0 )\n\t\treturn vec4( 0., 0., 0., 0. );\n\tif( v >= 1.0 )\n\t\treturn vec4( 1., 1., 1., 1. );\n\tfloat vuf;\n\tfloat af = modf( v * PackFactors.a, vuf );\n\tfloat bf = modf( vuf * ShiftRight8, vuf );\n\tfloat gf = modf( vuf * ShiftRight8, vuf );\n\treturn vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );\n}\nvec3 packDepthToRGB( const in float v ) {\n\tif( v <= 0.0 )\n\t\treturn vec3( 0., 0., 0. );\n\tif( v >= 1.0 )\n\t\treturn vec3( 1., 1., 1. );\n\tfloat vuf;\n\tfloat bf = modf( v * PackFactors.b, vuf );\n\tfloat gf = modf( vuf * ShiftRight8, vuf );\n\treturn vec3( vuf * Inv255, gf * PackUpscale, bf );\n}\nvec2 packDepthToRG( const in float v ) {\n\tif( v <= 0.0 )\n\t\treturn vec2( 0., 0. );\n\tif( v >= 1.0 )\n\t\treturn vec2( 1., 1. );\n\tfloat vuf;\n\tfloat gf = modf( v * 256., vuf );\n\treturn vec2( vuf * Inv255, gf );\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors4 );\n}\nfloat unpackRGBToDepth( const in vec3 v ) {\n\treturn dot( v, UnpackFactors3 );\n}\nfloat unpackRGToDepth( const in vec2 v ) {\n\treturn v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;\n}\nvec4 pack2HalfToRGBA( const in vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( const in vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn depth * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * depth - far );\n}"; + +var premultiplied_alpha_fragment = "#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif"; + +var project_vertex = "vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_BATCHING\n\tmvPosition = batchingMatrix * mvPosition;\n#endif\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;"; + +var dithering_fragment = "#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif"; + +var dithering_pars_fragment = "#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif"; + +var roughnessmap_fragment = "float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\n\troughnessFactor *= texelRoughness.g;\n#endif"; + +var roughnessmap_pars_fragment = "#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif"; + +var shadowmap_pars_fragment = "#if NUM_SPOT_LIGHT_COORDS > 0\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn mix( 1.0, shadow, shadowIntensity );\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tfloat shadow = 1.0;\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\t\n\t\tfloat lightToPositionLength = length( lightToPosition );\n\t\tif ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\n\t\t\tfloat dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\t\tdp += shadowBias;\n\t\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\t\tshadow = (\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t\t) * ( 1.0 / 9.0 );\n\t\t\t#else\n\t\t\t\tshadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t\t#endif\n\t\t}\n\t\treturn mix( 1.0, shadow, shadowIntensity );\n\t}\n#endif"; + +var shadowmap_pars_vertex = "#if NUM_SPOT_LIGHT_COORDS > 0\n\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowIntensity;\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif"; + +var shadowmap_vertex = "#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\tvec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition;\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n\t\t#endif\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n#endif"; + +var shadowmask_pars_fragment = "float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}"; + +var skinbase_vertex = "#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif"; + +var skinning_pars_vertex = "#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\tuniform highp sampler2D boneTexture;\n\tmat4 getBoneMatrix( const in float i ) {\n\t\tint size = textureSize( boneTexture, 0 ).x;\n\t\tint j = int( i ) * 4;\n\t\tint x = j % size;\n\t\tint y = j / size;\n\t\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\n\t\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\n\t\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\n\t\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\n\t\treturn mat4( v1, v2, v3, v4 );\n\t}\n#endif"; + +var skinning_vertex = "#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif"; + +var skinnormal_vertex = "#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif"; + +var specularmap_fragment = "float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif"; + +var specularmap_pars_fragment = "#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif"; + +var tonemapping_fragment = "#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif"; + +var tonemapping_pars_fragment = "#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 CineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n\tvec3( 1.6605, - 0.1246, - 0.0182 ),\n\tvec3( - 0.5876, 1.1329, - 0.1006 ),\n\tvec3( - 0.0728, - 0.0083, 1.1187 )\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n\tvec3( 0.6274, 0.0691, 0.0164 ),\n\tvec3( 0.3293, 0.9195, 0.0880 ),\n\tvec3( 0.0433, 0.0113, 0.8956 )\n);\nvec3 agxDefaultContrastApprox( vec3 x ) {\n\tvec3 x2 = x * x;\n\tvec3 x4 = x2 * x2;\n\treturn + 15.5 * x4 * x2\n\t\t- 40.14 * x4 * x\n\t\t+ 31.96 * x4\n\t\t- 6.868 * x2 * x\n\t\t+ 0.4298 * x2\n\t\t+ 0.1191 * x\n\t\t- 0.00232;\n}\nvec3 AgXToneMapping( vec3 color ) {\n\tconst mat3 AgXInsetMatrix = mat3(\n\t\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\n\t\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\n\t\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\n\t);\n\tconst mat3 AgXOutsetMatrix = mat3(\n\t\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\n\t\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\n\t\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\n\t);\n\tconst float AgxMinEv = - 12.47393;\tconst float AgxMaxEv = 4.026069;\n\tcolor *= toneMappingExposure;\n\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\n\tcolor = AgXInsetMatrix * color;\n\tcolor = max( color, 1e-10 );\tcolor = log2( color );\n\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\n\tcolor = clamp( color, 0.0, 1.0 );\n\tcolor = agxDefaultContrastApprox( color );\n\tcolor = AgXOutsetMatrix * color;\n\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\n\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\n\tcolor = clamp( color, 0.0, 1.0 );\n\treturn color;\n}\nvec3 NeutralToneMapping( vec3 color ) {\n\tconst float StartCompression = 0.8 - 0.04;\n\tconst float Desaturation = 0.15;\n\tcolor *= toneMappingExposure;\n\tfloat x = min( color.r, min( color.g, color.b ) );\n\tfloat offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\n\tcolor -= offset;\n\tfloat peak = max( color.r, max( color.g, color.b ) );\n\tif ( peak < StartCompression ) return color;\n\tfloat d = 1. - StartCompression;\n\tfloat newPeak = 1. - d * d / ( peak + d - StartCompression );\n\tcolor *= newPeak / peak;\n\tfloat g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\n\treturn mix( color, vec3( newPeak ), g );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }"; + +var transmission_fragment = "#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmitted = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif"; + +var transmission_pars_fragment = "#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tfloat w0( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n\t}\n\tfloat w1( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n\t}\n\tfloat w2( float a ){\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n\t}\n\tfloat w3( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * a );\n\t}\n\tfloat g0( float a ) {\n\t\treturn w0( a ) + w1( a );\n\t}\n\tfloat g1( float a ) {\n\t\treturn w2( a ) + w3( a );\n\t}\n\tfloat h0( float a ) {\n\t\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n\t}\n\tfloat h1( float a ) {\n\t\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n\t}\n\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n\t\tuv = uv * texelSize.zw + 0.5;\n\t\tvec2 iuv = floor( uv );\n\t\tvec2 fuv = fract( uv );\n\t\tfloat g0x = g0( fuv.x );\n\t\tfloat g1x = g1( fuv.x );\n\t\tfloat h0x = h0( fuv.x );\n\t\tfloat h1x = h1( fuv.x );\n\t\tfloat h0y = h0( fuv.y );\n\t\tfloat h1y = h1( fuv.y );\n\t\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n\t\t\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n\t}\n\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n\t\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n\t\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n\t\tvec2 fLodSizeInv = 1.0 / fLodSize;\n\t\tvec2 cLodSizeInv = 1.0 / cLodSize;\n\t\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n\t\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n\t\treturn mix( fSample, cSample, fract( lod ) );\n\t}\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n\t}\n\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn vec3( 1.0 );\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec4 transmittedLight;\n\t\tvec3 transmittance;\n\t\t#ifdef USE_DISPERSION\n\t\t\tfloat halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;\n\t\t\tvec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );\n\t\t\tfor ( int i = 0; i < 3; i ++ ) {\n\t\t\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );\n\t\t\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\t\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\t\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\t\t\trefractionCoords += 1.0;\n\t\t\t\trefractionCoords /= 2.0;\n\t\t\t\tvec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );\n\t\t\t\ttransmittedLight[ i ] = transmissionSample[ i ];\n\t\t\t\ttransmittedLight.a += transmissionSample.a;\n\t\t\t\ttransmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];\n\t\t\t}\n\t\t\ttransmittedLight.a /= 3.0;\n\t\t#else\n\t\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\t\trefractionCoords += 1.0;\n\t\t\trefractionCoords /= 2.0;\n\t\t\ttransmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\t\ttransmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\t#endif\n\t\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n\t}\n#endif"; + +var uv_pars_fragment = "#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif"; + +var uv_pars_vertex = "#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tuniform mat3 mapTransform;\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform mat3 alphaMapTransform;\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tuniform mat3 lightMapTransform;\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tuniform mat3 aoMapTransform;\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tuniform mat3 bumpMapTransform;\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tuniform mat3 normalMapTransform;\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tuniform mat3 displacementMapTransform;\n\tvarying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tuniform mat3 emissiveMapTransform;\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tuniform mat3 metalnessMapTransform;\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tuniform mat3 roughnessMapTransform;\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tuniform mat3 anisotropyMapTransform;\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tuniform mat3 clearcoatMapTransform;\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform mat3 clearcoatNormalMapTransform;\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform mat3 clearcoatRoughnessMapTransform;\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tuniform mat3 sheenColorMapTransform;\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tuniform mat3 sheenRoughnessMapTransform;\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tuniform mat3 iridescenceMapTransform;\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform mat3 iridescenceThicknessMapTransform;\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tuniform mat3 specularMapTransform;\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tuniform mat3 specularColorMapTransform;\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tuniform mat3 specularIntensityMapTransform;\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif"; + +var uv_vertex = "#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif"; + +var worldpos_vertex = "#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_BATCHING\n\t\tworldPosition = batchingMatrix * worldPosition;\n\t#endif\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif"; + +const vertex$h = "varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}"; + +const fragment$h = "uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}"; + +const vertex$g = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}"; + +const fragment$g = "#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nuniform mat3 backgroundRotation;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}"; + +const vertex$f = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}"; + +const fragment$f = "uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}"; + +const vertex$e = "#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}"; + +const fragment$e = "#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#elif DEPTH_PACKING == 3202\n\t\tgl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );\n\t#elif DEPTH_PACKING == 3203\n\t\tgl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );\n\t#endif\n}"; + +const vertex$d = "#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}"; + +const fragment$d = "#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}"; + +const vertex$c = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}"; + +const fragment$c = "uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include \n\t#include \n}"; + +const vertex$b = "uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const fragment$b = "uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const vertex$a = "#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const fragment$a = "uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const vertex$9 = "#define LAMBERT\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const fragment$9 = "#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const vertex$8 = "#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}"; + +const fragment$8 = "#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const vertex$7 = "#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}"; + +const fragment$7 = "#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}"; + +const vertex$6 = "#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const fragment$6 = "#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const vertex$5 = "#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}"; + +const fragment$5 = "#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_DISPERSION\n\tuniform float dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\tuniform vec2 anisotropyVector;\n\t#ifdef USE_ANISOTROPYMAP\n\t\tuniform sampler2D anisotropyMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const vertex$4 = "#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}"; + +const fragment$4 = "#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const vertex$3 = "uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \n#ifdef USE_POINTS_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\nvoid main() {\n\t#ifdef USE_POINTS_UV\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const fragment$3 = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const vertex$2 = "#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const fragment$2 = "uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}"; + +const vertex$1 = "uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix[ 3 ];\n\tvec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"; + +const fragment$1 = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + +const ShaderChunk = { + alphahash_fragment: alphahash_fragment, + alphahash_pars_fragment: alphahash_pars_fragment, + alphamap_fragment: alphamap_fragment, + alphamap_pars_fragment: alphamap_pars_fragment, + alphatest_fragment: alphatest_fragment, + alphatest_pars_fragment: alphatest_pars_fragment, + aomap_fragment: aomap_fragment, + aomap_pars_fragment: aomap_pars_fragment, + batching_pars_vertex: batching_pars_vertex, + batching_vertex: batching_vertex, + begin_vertex: begin_vertex, + beginnormal_vertex: beginnormal_vertex, + bsdfs: bsdfs, + iridescence_fragment: iridescence_fragment, + bumpmap_pars_fragment: bumpmap_pars_fragment, + clipping_planes_fragment: clipping_planes_fragment, + clipping_planes_pars_fragment: clipping_planes_pars_fragment, + clipping_planes_pars_vertex: clipping_planes_pars_vertex, + clipping_planes_vertex: clipping_planes_vertex, + color_fragment: color_fragment, + color_pars_fragment: color_pars_fragment, + color_pars_vertex: color_pars_vertex, + color_vertex: color_vertex, + common: common, + cube_uv_reflection_fragment: cube_uv_reflection_fragment, + defaultnormal_vertex: defaultnormal_vertex, + displacementmap_pars_vertex: displacementmap_pars_vertex, + displacementmap_vertex: displacementmap_vertex, + emissivemap_fragment: emissivemap_fragment, + emissivemap_pars_fragment: emissivemap_pars_fragment, + colorspace_fragment: colorspace_fragment, + colorspace_pars_fragment: colorspace_pars_fragment, + envmap_fragment: envmap_fragment, + envmap_common_pars_fragment: envmap_common_pars_fragment, + envmap_pars_fragment: envmap_pars_fragment, + envmap_pars_vertex: envmap_pars_vertex, + envmap_physical_pars_fragment: envmap_physical_pars_fragment, + envmap_vertex: envmap_vertex, + fog_vertex: fog_vertex, + fog_pars_vertex: fog_pars_vertex, + fog_fragment: fog_fragment, + fog_pars_fragment: fog_pars_fragment, + gradientmap_pars_fragment: gradientmap_pars_fragment, + lightmap_pars_fragment: lightmap_pars_fragment, + lights_lambert_fragment: lights_lambert_fragment, + lights_lambert_pars_fragment: lights_lambert_pars_fragment, + lights_pars_begin: lights_pars_begin, + lights_toon_fragment: lights_toon_fragment, + lights_toon_pars_fragment: lights_toon_pars_fragment, + lights_phong_fragment: lights_phong_fragment, + lights_phong_pars_fragment: lights_phong_pars_fragment, + lights_physical_fragment: lights_physical_fragment, + lights_physical_pars_fragment: lights_physical_pars_fragment, + lights_fragment_begin: lights_fragment_begin, + lights_fragment_maps: lights_fragment_maps, + lights_fragment_end: lights_fragment_end, + logdepthbuf_fragment: logdepthbuf_fragment, + logdepthbuf_pars_fragment: logdepthbuf_pars_fragment, + logdepthbuf_pars_vertex: logdepthbuf_pars_vertex, + logdepthbuf_vertex: logdepthbuf_vertex, + map_fragment: map_fragment, + map_pars_fragment: map_pars_fragment, + map_particle_fragment: map_particle_fragment, + map_particle_pars_fragment: map_particle_pars_fragment, + metalnessmap_fragment: metalnessmap_fragment, + metalnessmap_pars_fragment: metalnessmap_pars_fragment, + morphinstance_vertex: morphinstance_vertex, + morphcolor_vertex: morphcolor_vertex, + morphnormal_vertex: morphnormal_vertex, + morphtarget_pars_vertex: morphtarget_pars_vertex, + morphtarget_vertex: morphtarget_vertex, + normal_fragment_begin: normal_fragment_begin, + normal_fragment_maps: normal_fragment_maps, + normal_pars_fragment: normal_pars_fragment, + normal_pars_vertex: normal_pars_vertex, + normal_vertex: normal_vertex, + normalmap_pars_fragment: normalmap_pars_fragment, + clearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin, + clearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps, + clearcoat_pars_fragment: clearcoat_pars_fragment, + iridescence_pars_fragment: iridescence_pars_fragment, + opaque_fragment: opaque_fragment, + packing: packing, + premultiplied_alpha_fragment: premultiplied_alpha_fragment, + project_vertex: project_vertex, + dithering_fragment: dithering_fragment, + dithering_pars_fragment: dithering_pars_fragment, + roughnessmap_fragment: roughnessmap_fragment, + roughnessmap_pars_fragment: roughnessmap_pars_fragment, + shadowmap_pars_fragment: shadowmap_pars_fragment, + shadowmap_pars_vertex: shadowmap_pars_vertex, + shadowmap_vertex: shadowmap_vertex, + shadowmask_pars_fragment: shadowmask_pars_fragment, + skinbase_vertex: skinbase_vertex, + skinning_pars_vertex: skinning_pars_vertex, + skinning_vertex: skinning_vertex, + skinnormal_vertex: skinnormal_vertex, + specularmap_fragment: specularmap_fragment, + specularmap_pars_fragment: specularmap_pars_fragment, + tonemapping_fragment: tonemapping_fragment, + tonemapping_pars_fragment: tonemapping_pars_fragment, + transmission_fragment: transmission_fragment, + transmission_pars_fragment: transmission_pars_fragment, + uv_pars_fragment: uv_pars_fragment, + uv_pars_vertex: uv_pars_vertex, + uv_vertex: uv_vertex, + worldpos_vertex: worldpos_vertex, + + background_vert: vertex$h, + background_frag: fragment$h, + backgroundCube_vert: vertex$g, + backgroundCube_frag: fragment$g, + cube_vert: vertex$f, + cube_frag: fragment$f, + depth_vert: vertex$e, + depth_frag: fragment$e, + distanceRGBA_vert: vertex$d, + distanceRGBA_frag: fragment$d, + equirect_vert: vertex$c, + equirect_frag: fragment$c, + linedashed_vert: vertex$b, + linedashed_frag: fragment$b, + meshbasic_vert: vertex$a, + meshbasic_frag: fragment$a, + meshlambert_vert: vertex$9, + meshlambert_frag: fragment$9, + meshmatcap_vert: vertex$8, + meshmatcap_frag: fragment$8, + meshnormal_vert: vertex$7, + meshnormal_frag: fragment$7, + meshphong_vert: vertex$6, + meshphong_frag: fragment$6, + meshphysical_vert: vertex$5, + meshphysical_frag: fragment$5, + meshtoon_vert: vertex$4, + meshtoon_frag: fragment$4, + points_vert: vertex$3, + points_frag: fragment$3, + shadow_vert: vertex$2, + shadow_frag: fragment$2, + sprite_vert: vertex$1, + sprite_frag: fragment$1 +}; + +// Uniforms library for shared webgl shaders +const UniformsLib = { + + common: { + + diffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) }, + opacity: { value: 1.0 }, + + map: { value: null }, + mapTransform: { value: /*@__PURE__*/ new Matrix3() }, + + alphaMap: { value: null }, + alphaMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + + alphaTest: { value: 0 } + + }, + + specularmap: { + + specularMap: { value: null }, + specularMapTransform: { value: /*@__PURE__*/ new Matrix3() } + + }, + + envmap: { + + envMap: { value: null }, + envMapRotation: { value: /*@__PURE__*/ new Matrix3() }, + flipEnvMap: { value: -1 }, + reflectivity: { value: 1.0 }, // basic, lambert, phong + ior: { value: 1.5 }, // physical + refractionRatio: { value: 0.98 }, // basic, lambert, phong + + }, + + aomap: { + + aoMap: { value: null }, + aoMapIntensity: { value: 1 }, + aoMapTransform: { value: /*@__PURE__*/ new Matrix3() } + + }, + + lightmap: { + + lightMap: { value: null }, + lightMapIntensity: { value: 1 }, + lightMapTransform: { value: /*@__PURE__*/ new Matrix3() } + + }, + + bumpmap: { + + bumpMap: { value: null }, + bumpMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + bumpScale: { value: 1 } + + }, + + normalmap: { + + normalMap: { value: null }, + normalMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + normalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) } + + }, + + displacementmap: { + + displacementMap: { value: null }, + displacementMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + displacementScale: { value: 1 }, + displacementBias: { value: 0 } + + }, + + emissivemap: { + + emissiveMap: { value: null }, + emissiveMapTransform: { value: /*@__PURE__*/ new Matrix3() } + + }, + + metalnessmap: { + + metalnessMap: { value: null }, + metalnessMapTransform: { value: /*@__PURE__*/ new Matrix3() } + + }, + + roughnessmap: { + + roughnessMap: { value: null }, + roughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() } + + }, + + gradientmap: { + + gradientMap: { value: null } + + }, + + fog: { + + fogDensity: { value: 0.00025 }, + fogNear: { value: 1 }, + fogFar: { value: 2000 }, + fogColor: { value: /*@__PURE__*/ new Color( 0xffffff ) } + + }, + + lights: { + + ambientLightColor: { value: [] }, + + lightProbe: { value: [] }, + + directionalLights: { value: [], properties: { + direction: {}, + color: {} + } }, + + directionalLightShadows: { value: [], properties: { + shadowIntensity: 1, + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + + directionalShadowMap: { value: [] }, + directionalShadowMatrix: { value: [] }, + + spotLights: { value: [], properties: { + color: {}, + position: {}, + direction: {}, + distance: {}, + coneCos: {}, + penumbraCos: {}, + decay: {} + } }, + + spotLightShadows: { value: [], properties: { + shadowIntensity: 1, + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + + spotLightMap: { value: [] }, + spotShadowMap: { value: [] }, + spotLightMatrix: { value: [] }, + + pointLights: { value: [], properties: { + color: {}, + position: {}, + decay: {}, + distance: {} + } }, + + pointLightShadows: { value: [], properties: { + shadowIntensity: 1, + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {}, + shadowCameraNear: {}, + shadowCameraFar: {} + } }, + + pointShadowMap: { value: [] }, + pointShadowMatrix: { value: [] }, + + hemisphereLights: { value: [], properties: { + direction: {}, + skyColor: {}, + groundColor: {} + } }, + + // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src + rectAreaLights: { value: [], properties: { + color: {}, + position: {}, + width: {}, + height: {} + } }, + + ltc_1: { value: null }, + ltc_2: { value: null } + + }, + + points: { + + diffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) }, + opacity: { value: 1.0 }, + size: { value: 1.0 }, + scale: { value: 1.0 }, + map: { value: null }, + alphaMap: { value: null }, + alphaMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + alphaTest: { value: 0 }, + uvTransform: { value: /*@__PURE__*/ new Matrix3() } + + }, + + sprite: { + + diffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) }, + opacity: { value: 1.0 }, + center: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) }, + rotation: { value: 0.0 }, + map: { value: null }, + mapTransform: { value: /*@__PURE__*/ new Matrix3() }, + alphaMap: { value: null }, + alphaMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + alphaTest: { value: 0 } + + } + +}; + +const ShaderLib = { + + basic: { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.meshbasic_vert, + fragmentShader: ShaderChunk.meshbasic_frag + + }, + + lambert: { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) } + } + ] ), + + vertexShader: ShaderChunk.meshlambert_vert, + fragmentShader: ShaderChunk.meshlambert_frag + + }, + + phong: { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }, + specular: { value: /*@__PURE__*/ new Color( 0x111111 ) }, + shininess: { value: 30 } + } + ] ), + + vertexShader: ShaderChunk.meshphong_vert, + fragmentShader: ShaderChunk.meshphong_frag + + }, + + standard: { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + UniformsLib.common, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.roughnessmap, + UniformsLib.metalnessmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }, + roughness: { value: 1.0 }, + metalness: { value: 0.0 }, + envMapIntensity: { value: 1 } + } + ] ), + + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag + + }, + + toon: { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + UniformsLib.common, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.gradientmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) } + } + ] ), + + vertexShader: ShaderChunk.meshtoon_vert, + fragmentShader: ShaderChunk.meshtoon_frag + + }, + + matcap: { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + UniformsLib.common, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.fog, + { + matcap: { value: null } + } + ] ), + + vertexShader: ShaderChunk.meshmatcap_vert, + fragmentShader: ShaderChunk.meshmatcap_frag + + }, + + points: { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + UniformsLib.points, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.points_vert, + fragmentShader: ShaderChunk.points_frag + + }, + + dashed: { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + UniformsLib.common, + UniformsLib.fog, + { + scale: { value: 1 }, + dashSize: { value: 1 }, + totalSize: { value: 2 } + } + ] ), + + vertexShader: ShaderChunk.linedashed_vert, + fragmentShader: ShaderChunk.linedashed_frag + + }, + + depth: { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + UniformsLib.common, + UniformsLib.displacementmap + ] ), + + vertexShader: ShaderChunk.depth_vert, + fragmentShader: ShaderChunk.depth_frag + + }, + + normal: { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + UniformsLib.common, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + { + opacity: { value: 1.0 } + } + ] ), + + vertexShader: ShaderChunk.meshnormal_vert, + fragmentShader: ShaderChunk.meshnormal_frag + + }, + + sprite: { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + UniformsLib.sprite, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.sprite_vert, + fragmentShader: ShaderChunk.sprite_frag + + }, + + background: { + + uniforms: { + uvTransform: { value: /*@__PURE__*/ new Matrix3() }, + t2D: { value: null }, + backgroundIntensity: { value: 1 } + }, + + vertexShader: ShaderChunk.background_vert, + fragmentShader: ShaderChunk.background_frag + + }, + + backgroundCube: { + + uniforms: { + envMap: { value: null }, + flipEnvMap: { value: -1 }, + backgroundBlurriness: { value: 0 }, + backgroundIntensity: { value: 1 }, + backgroundRotation: { value: /*@__PURE__*/ new Matrix3() } + }, + + vertexShader: ShaderChunk.backgroundCube_vert, + fragmentShader: ShaderChunk.backgroundCube_frag + + }, + + cube: { + + uniforms: { + tCube: { value: null }, + tFlip: { value: -1 }, + opacity: { value: 1.0 } + }, + + vertexShader: ShaderChunk.cube_vert, + fragmentShader: ShaderChunk.cube_frag + + }, + + equirect: { + + uniforms: { + tEquirect: { value: null }, + }, + + vertexShader: ShaderChunk.equirect_vert, + fragmentShader: ShaderChunk.equirect_frag + + }, + + distanceRGBA: { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + UniformsLib.common, + UniformsLib.displacementmap, + { + referencePosition: { value: /*@__PURE__*/ new Vector3() }, + nearDistance: { value: 1 }, + farDistance: { value: 1000 } + } + ] ), + + vertexShader: ShaderChunk.distanceRGBA_vert, + fragmentShader: ShaderChunk.distanceRGBA_frag + + }, + + shadow: { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + UniformsLib.lights, + UniformsLib.fog, + { + color: { value: /*@__PURE__*/ new Color( 0x00000 ) }, + opacity: { value: 1.0 } + }, + ] ), + + vertexShader: ShaderChunk.shadow_vert, + fragmentShader: ShaderChunk.shadow_frag + + } + +}; + +ShaderLib.physical = { + + uniforms: /*@__PURE__*/ mergeUniforms( [ + ShaderLib.standard.uniforms, + { + clearcoat: { value: 0 }, + clearcoatMap: { value: null }, + clearcoatMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + clearcoatNormalMap: { value: null }, + clearcoatNormalMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + clearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }, + clearcoatRoughness: { value: 0 }, + clearcoatRoughnessMap: { value: null }, + clearcoatRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + dispersion: { value: 0 }, + iridescence: { value: 0 }, + iridescenceMap: { value: null }, + iridescenceMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + iridescenceIOR: { value: 1.3 }, + iridescenceThicknessMinimum: { value: 100 }, + iridescenceThicknessMaximum: { value: 400 }, + iridescenceThicknessMap: { value: null }, + iridescenceThicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + sheen: { value: 0 }, + sheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) }, + sheenColorMap: { value: null }, + sheenColorMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + sheenRoughness: { value: 1 }, + sheenRoughnessMap: { value: null }, + sheenRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + transmission: { value: 0 }, + transmissionMap: { value: null }, + transmissionMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + transmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() }, + transmissionSamplerMap: { value: null }, + thickness: { value: 0 }, + thicknessMap: { value: null }, + thicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + attenuationDistance: { value: 0 }, + attenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) }, + specularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) }, + specularColorMap: { value: null }, + specularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + specularIntensity: { value: 1 }, + specularIntensityMap: { value: null }, + specularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + anisotropyVector: { value: /*@__PURE__*/ new Vector2() }, + anisotropyMap: { value: null }, + anisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() }, + } + ] ), + + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag + +}; + +const _rgb = { r: 0, b: 0, g: 0 }; +const _e1$1 = /*@__PURE__*/ new Euler(); +const _m1$1 = /*@__PURE__*/ new Matrix4(); + +function WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha ) { + + const clearColor = new Color( 0x000000 ); + let clearAlpha = alpha === true ? 0 : 1; + + let planeMesh; + let boxMesh; + + let currentBackground = null; + let currentBackgroundVersion = 0; + let currentTonemapping = null; + + function getBackground( scene ) { + + let background = scene.isScene === true ? scene.background : null; + + if ( background && background.isTexture ) { + + const usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background + background = ( usePMREM ? cubeuvmaps : cubemaps ).get( background ); + + } + + return background; + + } + + function render( scene ) { + + let forceClear = false; + const background = getBackground( scene ); + + if ( background === null ) { + + setClear( clearColor, clearAlpha ); + + } else if ( background && background.isColor ) { + + setClear( background, 1 ); + forceClear = true; + + } + + const environmentBlendMode = renderer.xr.getEnvironmentBlendMode(); + + if ( environmentBlendMode === 'additive' ) { + + state.buffers.color.setClear( 0, 0, 0, 1, premultipliedAlpha ); + + } else if ( environmentBlendMode === 'alpha-blend' ) { + + state.buffers.color.setClear( 0, 0, 0, 0, premultipliedAlpha ); + + } + + if ( renderer.autoClear || forceClear ) { + + // buffers might not be writable which is required to ensure a correct clear + + state.buffers.depth.setTest( true ); + state.buffers.depth.setMask( true ); + state.buffers.color.setMask( true ); + + renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); + + } + + } + + function addToRenderList( renderList, scene ) { + + const background = getBackground( scene ); + + if ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) { + + if ( boxMesh === undefined ) { + + boxMesh = new Mesh( + new BoxGeometry( 1, 1, 1 ), + new ShaderMaterial( { + name: 'BackgroundCubeMaterial', + uniforms: cloneUniforms( ShaderLib.backgroundCube.uniforms ), + vertexShader: ShaderLib.backgroundCube.vertexShader, + fragmentShader: ShaderLib.backgroundCube.fragmentShader, + side: BackSide, + depthTest: false, + depthWrite: false, + fog: false, + allowOverride: false + } ) + ); + + boxMesh.geometry.deleteAttribute( 'normal' ); + boxMesh.geometry.deleteAttribute( 'uv' ); + + boxMesh.onBeforeRender = function ( renderer, scene, camera ) { + + this.matrixWorld.copyPosition( camera.matrixWorld ); + + }; + + // add "envMap" material property so the renderer can evaluate it like for built-in materials + Object.defineProperty( boxMesh.material, 'envMap', { + + get: function () { + + return this.uniforms.envMap.value; + + } + + } ); + + objects.update( boxMesh ); + + } + + _e1$1.copy( scene.backgroundRotation ); + + // accommodate left-handed frame + _e1$1.x *= -1; _e1$1.y *= -1; _e1$1.z *= -1; + + if ( background.isCubeTexture && background.isRenderTargetTexture === false ) { + + // environment maps which are not cube render targets or PMREMs follow a different convention + _e1$1.y *= -1; + _e1$1.z *= -1; + + } + + boxMesh.material.uniforms.envMap.value = background; + boxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? -1 : 1; + boxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness; + boxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity; + boxMesh.material.uniforms.backgroundRotation.value.setFromMatrix4( _m1$1.makeRotationFromEuler( _e1$1 ) ); + boxMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer; + + if ( currentBackground !== background || + currentBackgroundVersion !== background.version || + currentTonemapping !== renderer.toneMapping ) { + + boxMesh.material.needsUpdate = true; + + currentBackground = background; + currentBackgroundVersion = background.version; + currentTonemapping = renderer.toneMapping; + + } + + boxMesh.layers.enableAll(); + + // push to the pre-sorted opaque render list + renderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null ); + + } else if ( background && background.isTexture ) { + + if ( planeMesh === undefined ) { + + planeMesh = new Mesh( + new PlaneGeometry( 2, 2 ), + new ShaderMaterial( { + name: 'BackgroundMaterial', + uniforms: cloneUniforms( ShaderLib.background.uniforms ), + vertexShader: ShaderLib.background.vertexShader, + fragmentShader: ShaderLib.background.fragmentShader, + side: FrontSide, + depthTest: false, + depthWrite: false, + fog: false, + allowOverride: false + } ) + ); + + planeMesh.geometry.deleteAttribute( 'normal' ); + + // add "map" material property so the renderer can evaluate it like for built-in materials + Object.defineProperty( planeMesh.material, 'map', { + + get: function () { + + return this.uniforms.t2D.value; + + } + + } ); + + objects.update( planeMesh ); + + } + + planeMesh.material.uniforms.t2D.value = background; + planeMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity; + planeMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer; + + if ( background.matrixAutoUpdate === true ) { + + background.updateMatrix(); + + } + + planeMesh.material.uniforms.uvTransform.value.copy( background.matrix ); + + if ( currentBackground !== background || + currentBackgroundVersion !== background.version || + currentTonemapping !== renderer.toneMapping ) { + + planeMesh.material.needsUpdate = true; + + currentBackground = background; + currentBackgroundVersion = background.version; + currentTonemapping = renderer.toneMapping; + + } + + planeMesh.layers.enableAll(); + + // push to the pre-sorted opaque render list + renderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null ); + + } + + } + + function setClear( color, alpha ) { + + color.getRGB( _rgb, getUnlitUniformColorSpace( renderer ) ); + + state.buffers.color.setClear( _rgb.r, _rgb.g, _rgb.b, alpha, premultipliedAlpha ); + + } + + function dispose() { + + if ( boxMesh !== undefined ) { + + boxMesh.geometry.dispose(); + boxMesh.material.dispose(); + + boxMesh = undefined; + + } + + if ( planeMesh !== undefined ) { + + planeMesh.geometry.dispose(); + planeMesh.material.dispose(); + + planeMesh = undefined; + + } + + } + + return { + + getClearColor: function () { + + return clearColor; + + }, + setClearColor: function ( color, alpha = 1 ) { + + clearColor.set( color ); + clearAlpha = alpha; + setClear( clearColor, clearAlpha ); + + }, + getClearAlpha: function () { + + return clearAlpha; + + }, + setClearAlpha: function ( alpha ) { + + clearAlpha = alpha; + setClear( clearColor, clearAlpha ); + + }, + render: render, + addToRenderList: addToRenderList, + dispose: dispose + + }; + +} + +function WebGLBindingStates( gl, attributes ) { + + const maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS ); + + const bindingStates = {}; + + const defaultState = createBindingState( null ); + let currentState = defaultState; + let forceUpdate = false; + + function setup( object, material, program, geometry, index ) { + + let updateBuffers = false; + + const state = getBindingState( geometry, program, material ); + + if ( currentState !== state ) { + + currentState = state; + bindVertexArrayObject( currentState.object ); + + } + + updateBuffers = needsUpdate( object, geometry, program, index ); + + if ( updateBuffers ) saveCache( object, geometry, program, index ); + + if ( index !== null ) { + + attributes.update( index, gl.ELEMENT_ARRAY_BUFFER ); + + } + + if ( updateBuffers || forceUpdate ) { + + forceUpdate = false; + + setupVertexAttributes( object, material, program, geometry ); + + if ( index !== null ) { + + gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, attributes.get( index ).buffer ); + + } + + } + + } + + function createVertexArrayObject() { + + return gl.createVertexArray(); + + } + + function bindVertexArrayObject( vao ) { + + return gl.bindVertexArray( vao ); + + } + + function deleteVertexArrayObject( vao ) { + + return gl.deleteVertexArray( vao ); + + } + + function getBindingState( geometry, program, material ) { + + const wireframe = ( material.wireframe === true ); + + let programMap = bindingStates[ geometry.id ]; + + if ( programMap === undefined ) { + + programMap = {}; + bindingStates[ geometry.id ] = programMap; + + } + + let stateMap = programMap[ program.id ]; + + if ( stateMap === undefined ) { + + stateMap = {}; + programMap[ program.id ] = stateMap; + + } + + let state = stateMap[ wireframe ]; + + if ( state === undefined ) { + + state = createBindingState( createVertexArrayObject() ); + stateMap[ wireframe ] = state; + + } + + return state; + + } + + function createBindingState( vao ) { + + const newAttributes = []; + const enabledAttributes = []; + const attributeDivisors = []; + + for ( let i = 0; i < maxVertexAttributes; i ++ ) { + + newAttributes[ i ] = 0; + enabledAttributes[ i ] = 0; + attributeDivisors[ i ] = 0; + + } + + return { + + // for backward compatibility on non-VAO support browser + geometry: null, + program: null, + wireframe: false, + + newAttributes: newAttributes, + enabledAttributes: enabledAttributes, + attributeDivisors: attributeDivisors, + object: vao, + attributes: {}, + index: null + + }; + + } + + function needsUpdate( object, geometry, program, index ) { + + const cachedAttributes = currentState.attributes; + const geometryAttributes = geometry.attributes; + + let attributesNum = 0; + + const programAttributes = program.getAttributes(); + + for ( const name in programAttributes ) { + + const programAttribute = programAttributes[ name ]; + + if ( programAttribute.location >= 0 ) { + + const cachedAttribute = cachedAttributes[ name ]; + let geometryAttribute = geometryAttributes[ name ]; + + if ( geometryAttribute === undefined ) { + + if ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix; + if ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor; + + } + + if ( cachedAttribute === undefined ) return true; + + if ( cachedAttribute.attribute !== geometryAttribute ) return true; + + if ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true; + + attributesNum ++; + + } + + } + + if ( currentState.attributesNum !== attributesNum ) return true; + + if ( currentState.index !== index ) return true; + + return false; + + } + + function saveCache( object, geometry, program, index ) { + + const cache = {}; + const attributes = geometry.attributes; + let attributesNum = 0; + + const programAttributes = program.getAttributes(); + + for ( const name in programAttributes ) { + + const programAttribute = programAttributes[ name ]; + + if ( programAttribute.location >= 0 ) { + + let attribute = attributes[ name ]; + + if ( attribute === undefined ) { + + if ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix; + if ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor; + + } + + const data = {}; + data.attribute = attribute; + + if ( attribute && attribute.data ) { + + data.data = attribute.data; + + } + + cache[ name ] = data; + + attributesNum ++; + + } + + } + + currentState.attributes = cache; + currentState.attributesNum = attributesNum; + + currentState.index = index; + + } + + function initAttributes() { + + const newAttributes = currentState.newAttributes; + + for ( let i = 0, il = newAttributes.length; i < il; i ++ ) { + + newAttributes[ i ] = 0; + + } + + } + + function enableAttribute( attribute ) { + + enableAttributeAndDivisor( attribute, 0 ); + + } + + function enableAttributeAndDivisor( attribute, meshPerAttribute ) { + + const newAttributes = currentState.newAttributes; + const enabledAttributes = currentState.enabledAttributes; + const attributeDivisors = currentState.attributeDivisors; + + newAttributes[ attribute ] = 1; + + if ( enabledAttributes[ attribute ] === 0 ) { + + gl.enableVertexAttribArray( attribute ); + enabledAttributes[ attribute ] = 1; + + } + + if ( attributeDivisors[ attribute ] !== meshPerAttribute ) { + + gl.vertexAttribDivisor( attribute, meshPerAttribute ); + attributeDivisors[ attribute ] = meshPerAttribute; + + } + + } + + function disableUnusedAttributes() { + + const newAttributes = currentState.newAttributes; + const enabledAttributes = currentState.enabledAttributes; + + for ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) { + + if ( enabledAttributes[ i ] !== newAttributes[ i ] ) { + + gl.disableVertexAttribArray( i ); + enabledAttributes[ i ] = 0; + + } + + } + + } + + function vertexAttribPointer( index, size, type, normalized, stride, offset, integer ) { + + if ( integer === true ) { + + gl.vertexAttribIPointer( index, size, type, stride, offset ); + + } else { + + gl.vertexAttribPointer( index, size, type, normalized, stride, offset ); + + } + + } + + function setupVertexAttributes( object, material, program, geometry ) { + + initAttributes(); + + const geometryAttributes = geometry.attributes; + + const programAttributes = program.getAttributes(); + + const materialDefaultAttributeValues = material.defaultAttributeValues; + + for ( const name in programAttributes ) { + + const programAttribute = programAttributes[ name ]; + + if ( programAttribute.location >= 0 ) { + + let geometryAttribute = geometryAttributes[ name ]; + + if ( geometryAttribute === undefined ) { + + if ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix; + if ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor; + + } + + if ( geometryAttribute !== undefined ) { + + const normalized = geometryAttribute.normalized; + const size = geometryAttribute.itemSize; + + const attribute = attributes.get( geometryAttribute ); + + // TODO Attribute may not be available on context restore + + if ( attribute === undefined ) continue; + + const buffer = attribute.buffer; + const type = attribute.type; + const bytesPerElement = attribute.bytesPerElement; + + // check for integer attributes + + const integer = ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType ); + + if ( geometryAttribute.isInterleavedBufferAttribute ) { + + const data = geometryAttribute.data; + const stride = data.stride; + const offset = geometryAttribute.offset; + + if ( data.isInstancedInterleavedBuffer ) { + + for ( let i = 0; i < programAttribute.locationSize; i ++ ) { + + enableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute ); + + } + + if ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) { + + geometry._maxInstanceCount = data.meshPerAttribute * data.count; + + } + + } else { + + for ( let i = 0; i < programAttribute.locationSize; i ++ ) { + + enableAttribute( programAttribute.location + i ); + + } + + } + + gl.bindBuffer( gl.ARRAY_BUFFER, buffer ); + + for ( let i = 0; i < programAttribute.locationSize; i ++ ) { + + vertexAttribPointer( + programAttribute.location + i, + size / programAttribute.locationSize, + type, + normalized, + stride * bytesPerElement, + ( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement, + integer + ); + + } + + } else { + + if ( geometryAttribute.isInstancedBufferAttribute ) { + + for ( let i = 0; i < programAttribute.locationSize; i ++ ) { + + enableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute ); + + } + + if ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) { + + geometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count; + + } + + } else { + + for ( let i = 0; i < programAttribute.locationSize; i ++ ) { + + enableAttribute( programAttribute.location + i ); + + } + + } + + gl.bindBuffer( gl.ARRAY_BUFFER, buffer ); + + for ( let i = 0; i < programAttribute.locationSize; i ++ ) { + + vertexAttribPointer( + programAttribute.location + i, + size / programAttribute.locationSize, + type, + normalized, + size * bytesPerElement, + ( size / programAttribute.locationSize ) * i * bytesPerElement, + integer + ); + + } + + } + + } else if ( materialDefaultAttributeValues !== undefined ) { + + const value = materialDefaultAttributeValues[ name ]; + + if ( value !== undefined ) { + + switch ( value.length ) { + + case 2: + gl.vertexAttrib2fv( programAttribute.location, value ); + break; + + case 3: + gl.vertexAttrib3fv( programAttribute.location, value ); + break; + + case 4: + gl.vertexAttrib4fv( programAttribute.location, value ); + break; + + default: + gl.vertexAttrib1fv( programAttribute.location, value ); + + } + + } + + } + + } + + } + + disableUnusedAttributes(); + + } + + function dispose() { + + reset(); + + for ( const geometryId in bindingStates ) { + + const programMap = bindingStates[ geometryId ]; + + for ( const programId in programMap ) { + + const stateMap = programMap[ programId ]; + + for ( const wireframe in stateMap ) { + + deleteVertexArrayObject( stateMap[ wireframe ].object ); + + delete stateMap[ wireframe ]; + + } + + delete programMap[ programId ]; + + } + + delete bindingStates[ geometryId ]; + + } + + } + + function releaseStatesOfGeometry( geometry ) { + + if ( bindingStates[ geometry.id ] === undefined ) return; + + const programMap = bindingStates[ geometry.id ]; + + for ( const programId in programMap ) { + + const stateMap = programMap[ programId ]; + + for ( const wireframe in stateMap ) { + + deleteVertexArrayObject( stateMap[ wireframe ].object ); + + delete stateMap[ wireframe ]; + + } + + delete programMap[ programId ]; + + } + + delete bindingStates[ geometry.id ]; + + } + + function releaseStatesOfProgram( program ) { + + for ( const geometryId in bindingStates ) { + + const programMap = bindingStates[ geometryId ]; + + if ( programMap[ program.id ] === undefined ) continue; + + const stateMap = programMap[ program.id ]; + + for ( const wireframe in stateMap ) { + + deleteVertexArrayObject( stateMap[ wireframe ].object ); + + delete stateMap[ wireframe ]; + + } + + delete programMap[ program.id ]; + + } + + } + + function reset() { + + resetDefaultState(); + forceUpdate = true; + + if ( currentState === defaultState ) return; + + currentState = defaultState; + bindVertexArrayObject( currentState.object ); + + } + + // for backward-compatibility + + function resetDefaultState() { + + defaultState.geometry = null; + defaultState.program = null; + defaultState.wireframe = false; + + } + + return { + + setup: setup, + reset: reset, + resetDefaultState: resetDefaultState, + dispose: dispose, + releaseStatesOfGeometry: releaseStatesOfGeometry, + releaseStatesOfProgram: releaseStatesOfProgram, + + initAttributes: initAttributes, + enableAttribute: enableAttribute, + disableUnusedAttributes: disableUnusedAttributes + + }; + +} + +function WebGLBufferRenderer( gl, extensions, info ) { + + let mode; + + function setMode( value ) { + + mode = value; + + } + + function render( start, count ) { + + gl.drawArrays( mode, start, count ); + + info.update( count, mode, 1 ); + + } + + function renderInstances( start, count, primcount ) { + + if ( primcount === 0 ) return; + + gl.drawArraysInstanced( mode, start, count, primcount ); + + info.update( count, mode, primcount ); + + } + + function renderMultiDraw( starts, counts, drawCount ) { + + if ( drawCount === 0 ) return; + + const extension = extensions.get( 'WEBGL_multi_draw' ); + extension.multiDrawArraysWEBGL( mode, starts, 0, counts, 0, drawCount ); + + let elementCount = 0; + for ( let i = 0; i < drawCount; i ++ ) { + + elementCount += counts[ i ]; + + } + + info.update( elementCount, mode, 1 ); + + } + + function renderMultiDrawInstances( starts, counts, drawCount, primcount ) { + + if ( drawCount === 0 ) return; + + const extension = extensions.get( 'WEBGL_multi_draw' ); + + if ( extension === null ) { + + for ( let i = 0; i < starts.length; i ++ ) { + + renderInstances( starts[ i ], counts[ i ], primcount[ i ] ); + + } + + } else { + + extension.multiDrawArraysInstancedWEBGL( mode, starts, 0, counts, 0, primcount, 0, drawCount ); + + let elementCount = 0; + for ( let i = 0; i < drawCount; i ++ ) { + + elementCount += counts[ i ] * primcount[ i ]; + + } + + info.update( elementCount, mode, 1 ); + + } + + } + + // + + this.setMode = setMode; + this.render = render; + this.renderInstances = renderInstances; + this.renderMultiDraw = renderMultiDraw; + this.renderMultiDrawInstances = renderMultiDrawInstances; + +} + +function WebGLCapabilities( gl, extensions, parameters, utils ) { + + let maxAnisotropy; + + function getMaxAnisotropy() { + + if ( maxAnisotropy !== undefined ) return maxAnisotropy; + + if ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) { + + const extension = extensions.get( 'EXT_texture_filter_anisotropic' ); + + maxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT ); + + } else { + + maxAnisotropy = 0; + + } + + return maxAnisotropy; + + } + + function textureFormatReadable( textureFormat ) { + + if ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== gl.getParameter( gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) { + + return false; + + } + + return true; + + } + + function textureTypeReadable( textureType ) { + + const halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) ); + + if ( textureType !== UnsignedByteType && utils.convert( textureType ) !== gl.getParameter( gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // Edge and Chrome Mac < 52 (#9513) + textureType !== FloatType && ! halfFloatSupportedByExt ) { + + return false; + + } + + return true; + + } + + function getMaxPrecision( precision ) { + + if ( precision === 'highp' ) { + + if ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 && + gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) { + + return 'highp'; + + } + + precision = 'mediump'; + + } + + if ( precision === 'mediump' ) { + + if ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 && + gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) { + + return 'mediump'; + + } + + } + + return 'lowp'; + + } + + let precision = parameters.precision !== undefined ? parameters.precision : 'highp'; + const maxPrecision = getMaxPrecision( precision ); + + if ( maxPrecision !== precision ) { + + console.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' ); + precision = maxPrecision; + + } + + const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true; + const reverseDepthBuffer = parameters.reverseDepthBuffer === true && extensions.has( 'EXT_clip_control' ); + + const maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS ); + const maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS ); + const maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE ); + const maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE ); + + const maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS ); + const maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS ); + const maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS ); + const maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS ); + + const vertexTextures = maxVertexTextures > 0; + + const maxSamples = gl.getParameter( gl.MAX_SAMPLES ); + + return { + + isWebGL2: true, // keeping this for backwards compatibility + + getMaxAnisotropy: getMaxAnisotropy, + getMaxPrecision: getMaxPrecision, + + textureFormatReadable: textureFormatReadable, + textureTypeReadable: textureTypeReadable, + + precision: precision, + logarithmicDepthBuffer: logarithmicDepthBuffer, + reverseDepthBuffer: reverseDepthBuffer, + + maxTextures: maxTextures, + maxVertexTextures: maxVertexTextures, + maxTextureSize: maxTextureSize, + maxCubemapSize: maxCubemapSize, + + maxAttributes: maxAttributes, + maxVertexUniforms: maxVertexUniforms, + maxVaryings: maxVaryings, + maxFragmentUniforms: maxFragmentUniforms, + + vertexTextures: vertexTextures, + + maxSamples: maxSamples + + }; + +} + +function WebGLClipping( properties ) { + + const scope = this; + + let globalState = null, + numGlobalPlanes = 0, + localClippingEnabled = false, + renderingShadows = false; + + const plane = new Plane(), + viewNormalMatrix = new Matrix3(), + + uniform = { value: null, needsUpdate: false }; + + this.uniform = uniform; + this.numPlanes = 0; + this.numIntersection = 0; + + this.init = function ( planes, enableLocalClipping ) { + + const enabled = + planes.length !== 0 || + enableLocalClipping || + // enable state of previous frame - the clipping code has to + // run another frame in order to reset the state: + numGlobalPlanes !== 0 || + localClippingEnabled; + + localClippingEnabled = enableLocalClipping; + + numGlobalPlanes = planes.length; + + return enabled; + + }; + + this.beginShadows = function () { + + renderingShadows = true; + projectPlanes( null ); + + }; + + this.endShadows = function () { + + renderingShadows = false; + + }; + + this.setGlobalState = function ( planes, camera ) { + + globalState = projectPlanes( planes, camera, 0 ); + + }; + + this.setState = function ( material, camera, useCache ) { + + const planes = material.clippingPlanes, + clipIntersection = material.clipIntersection, + clipShadows = material.clipShadows; + + const materialProperties = properties.get( material ); + + if ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) { + + // there's no local clipping + + if ( renderingShadows ) { + + // there's no global clipping + + projectPlanes( null ); + + } else { + + resetGlobalState(); + + } + + } else { + + const nGlobal = renderingShadows ? 0 : numGlobalPlanes, + lGlobal = nGlobal * 4; + + let dstArray = materialProperties.clippingState || null; + + uniform.value = dstArray; // ensure unique state + + dstArray = projectPlanes( planes, camera, lGlobal, useCache ); + + for ( let i = 0; i !== lGlobal; ++ i ) { + + dstArray[ i ] = globalState[ i ]; + + } + + materialProperties.clippingState = dstArray; + this.numIntersection = clipIntersection ? this.numPlanes : 0; + this.numPlanes += nGlobal; + + } + + + }; + + function resetGlobalState() { + + if ( uniform.value !== globalState ) { + + uniform.value = globalState; + uniform.needsUpdate = numGlobalPlanes > 0; + + } + + scope.numPlanes = numGlobalPlanes; + scope.numIntersection = 0; + + } + + function projectPlanes( planes, camera, dstOffset, skipTransform ) { + + const nPlanes = planes !== null ? planes.length : 0; + let dstArray = null; + + if ( nPlanes !== 0 ) { + + dstArray = uniform.value; + + if ( skipTransform !== true || dstArray === null ) { + + const flatSize = dstOffset + nPlanes * 4, + viewMatrix = camera.matrixWorldInverse; + + viewNormalMatrix.getNormalMatrix( viewMatrix ); + + if ( dstArray === null || dstArray.length < flatSize ) { + + dstArray = new Float32Array( flatSize ); + + } + + for ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) { + + plane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix ); + + plane.normal.toArray( dstArray, i4 ); + dstArray[ i4 + 3 ] = plane.constant; + + } + + } + + uniform.value = dstArray; + uniform.needsUpdate = true; + + } + + scope.numPlanes = nPlanes; + scope.numIntersection = 0; + + return dstArray; + + } + +} + +function WebGLCubeMaps( renderer ) { + + let cubemaps = new WeakMap(); + + function mapTextureMapping( texture, mapping ) { + + if ( mapping === EquirectangularReflectionMapping ) { + + texture.mapping = CubeReflectionMapping; + + } else if ( mapping === EquirectangularRefractionMapping ) { + + texture.mapping = CubeRefractionMapping; + + } + + return texture; + + } + + function get( texture ) { + + if ( texture && texture.isTexture ) { + + const mapping = texture.mapping; + + if ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) { + + if ( cubemaps.has( texture ) ) { + + const cubemap = cubemaps.get( texture ).texture; + return mapTextureMapping( cubemap, texture.mapping ); + + } else { + + const image = texture.image; + + if ( image && image.height > 0 ) { + + const renderTarget = new WebGLCubeRenderTarget( image.height ); + renderTarget.fromEquirectangularTexture( renderer, texture ); + cubemaps.set( texture, renderTarget ); + + texture.addEventListener( 'dispose', onTextureDispose ); + + return mapTextureMapping( renderTarget.texture, texture.mapping ); + + } else { + + // image not yet ready. try the conversion next frame + + return null; + + } + + } + + } + + } + + return texture; + + } + + function onTextureDispose( event ) { + + const texture = event.target; + + texture.removeEventListener( 'dispose', onTextureDispose ); + + const cubemap = cubemaps.get( texture ); + + if ( cubemap !== undefined ) { + + cubemaps.delete( texture ); + cubemap.dispose(); + + } + + } + + function dispose() { + + cubemaps = new WeakMap(); + + } + + return { + get: get, + dispose: dispose + }; + +} + +const LOD_MIN = 4; + +// The standard deviations (radians) associated with the extra mips. These are +// chosen to approximate a Trowbridge-Reitz distribution function times the +// geometric shadowing function. These sigma values squared must match the +// variance #defines in cube_uv_reflection_fragment.glsl.js. +const EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ]; + +// The maximum length of the blur for loop. Smaller sigmas will use fewer +// samples and exit early, but not recompile the shader. +const MAX_SAMPLES = 20; + +const _flatCamera = /*@__PURE__*/ new OrthographicCamera(); +const _clearColor = /*@__PURE__*/ new Color(); +let _oldTarget = null; +let _oldActiveCubeFace = 0; +let _oldActiveMipmapLevel = 0; +let _oldXrEnabled = false; + +// Golden Ratio +const PHI = ( 1 + Math.sqrt( 5 ) ) / 2; +const INV_PHI = 1 / PHI; + +// Vertices of a dodecahedron (except the opposites, which represent the +// same axis), used as axis directions evenly spread on a sphere. +const _axisDirections = [ + /*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ), + /*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ), + /*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ), + /*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ), + /*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ), + /*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ), + /*@__PURE__*/ new Vector3( -1, 1, -1 ), + /*@__PURE__*/ new Vector3( 1, 1, -1 ), + /*@__PURE__*/ new Vector3( -1, 1, 1 ), + /*@__PURE__*/ new Vector3( 1, 1, 1 ) ]; + +const _origin = /*@__PURE__*/ new Vector3(); + +/** + * This class generates a Prefiltered, Mipmapped Radiance Environment Map + * (PMREM) from a cubeMap environment texture. This allows different levels of + * blur to be quickly accessed based on material roughness. It is packed into a + * special CubeUV format that allows us to perform custom interpolation so that + * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap + * chain, it only goes down to the LOD_MIN level (above), and then creates extra + * even more filtered 'mips' at the same LOD_MIN resolution, associated with + * higher roughness levels. In this way we maintain resolution to smoothly + * interpolate diffuse lighting while limiting sampling computation. + * + * Paper: Fast, Accurate Image-Based Lighting: + * {@link https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view} +*/ +class PMREMGenerator { + + /** + * Constructs a new PMREM generator. + * + * @param {WebGLRenderer} renderer - The renderer. + */ + constructor( renderer ) { + + this._renderer = renderer; + this._pingPongRenderTarget = null; + + this._lodMax = 0; + this._cubeSize = 0; + this._lodPlanes = []; + this._sizeLods = []; + this._sigmas = []; + + this._blurMaterial = null; + this._cubemapMaterial = null; + this._equirectMaterial = null; + + this._compileMaterial( this._blurMaterial ); + + } + + /** + * Generates a PMREM from a supplied Scene, which can be faster than using an + * image if networking bandwidth is low. Optional sigma specifies a blur radius + * in radians to be applied to the scene before PMREM generation. Optional near + * and far planes ensure the scene is rendered in its entirety. + * + * @param {Scene} scene - The scene to be captured. + * @param {number} [sigma=0] - The blur radius in radians. + * @param {number} [near=0.1] - The near plane distance. + * @param {number} [far=100] - The far plane distance. + * @param {Object} [options={}] - The configuration options. + * @param {number} [options.size=256] - The texture size of the PMREM. + * @param {Vector3} [options.renderTarget=origin] - The position of the internal cube camera that renders the scene. + * @return {WebGLRenderTarget} The resulting PMREM. + */ + fromScene( scene, sigma = 0, near = 0.1, far = 100, options = {} ) { + + const { + size = 256, + position = _origin, + } = options; + + _oldTarget = this._renderer.getRenderTarget(); + _oldActiveCubeFace = this._renderer.getActiveCubeFace(); + _oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel(); + _oldXrEnabled = this._renderer.xr.enabled; + + this._renderer.xr.enabled = false; + + this._setSize( size ); + + const cubeUVRenderTarget = this._allocateTargets(); + cubeUVRenderTarget.depthBuffer = true; + + this._sceneToCubeUV( scene, near, far, cubeUVRenderTarget, position ); + + if ( sigma > 0 ) { + + this._blur( cubeUVRenderTarget, 0, 0, sigma ); + + } + + this._applyPMREM( cubeUVRenderTarget ); + this._cleanup( cubeUVRenderTarget ); + + return cubeUVRenderTarget; + + } + + /** + * Generates a PMREM from an equirectangular texture, which can be either LDR + * or HDR. The ideal input image size is 1k (1024 x 512), + * as this matches best with the 256 x 256 cubemap output. + * + * @param {Texture} equirectangular - The equirectangular texture to be converted. + * @param {?WebGLRenderTarget} [renderTarget=null] - The render target to use. + * @return {WebGLRenderTarget} The resulting PMREM. + */ + fromEquirectangular( equirectangular, renderTarget = null ) { + + return this._fromTexture( equirectangular, renderTarget ); + + } + + /** + * Generates a PMREM from an cubemap texture, which can be either LDR + * or HDR. The ideal input cube size is 256 x 256, + * as this matches best with the 256 x 256 cubemap output. + * + * @param {Texture} cubemap - The cubemap texture to be converted. + * @param {?WebGLRenderTarget} [renderTarget=null] - The render target to use. + * @return {WebGLRenderTarget} The resulting PMREM. + */ + fromCubemap( cubemap, renderTarget = null ) { + + return this._fromTexture( cubemap, renderTarget ); + + } + + /** + * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during + * your texture's network fetch for increased concurrency. + */ + compileCubemapShader() { + + if ( this._cubemapMaterial === null ) { + + this._cubemapMaterial = _getCubemapMaterial(); + this._compileMaterial( this._cubemapMaterial ); + + } + + } + + /** + * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during + * your texture's network fetch for increased concurrency. + */ + compileEquirectangularShader() { + + if ( this._equirectMaterial === null ) { + + this._equirectMaterial = _getEquirectMaterial(); + this._compileMaterial( this._equirectMaterial ); + + } + + } + + /** + * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class, + * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on + * one of them will cause any others to also become unusable. + */ + dispose() { + + this._dispose(); + + if ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose(); + if ( this._equirectMaterial !== null ) this._equirectMaterial.dispose(); + + } + + // private interface + + _setSize( cubeSize ) { + + this._lodMax = Math.floor( Math.log2( cubeSize ) ); + this._cubeSize = Math.pow( 2, this._lodMax ); + + } + + _dispose() { + + if ( this._blurMaterial !== null ) this._blurMaterial.dispose(); + + if ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose(); + + for ( let i = 0; i < this._lodPlanes.length; i ++ ) { + + this._lodPlanes[ i ].dispose(); + + } + + } + + _cleanup( outputTarget ) { + + this._renderer.setRenderTarget( _oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel ); + this._renderer.xr.enabled = _oldXrEnabled; + + outputTarget.scissorTest = false; + _setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height ); + + } + + _fromTexture( texture, renderTarget ) { + + if ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) { + + this._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) ); + + } else { // Equirectangular + + this._setSize( texture.image.width / 4 ); + + } + + _oldTarget = this._renderer.getRenderTarget(); + _oldActiveCubeFace = this._renderer.getActiveCubeFace(); + _oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel(); + _oldXrEnabled = this._renderer.xr.enabled; + + this._renderer.xr.enabled = false; + + const cubeUVRenderTarget = renderTarget || this._allocateTargets(); + this._textureToCubeUV( texture, cubeUVRenderTarget ); + this._applyPMREM( cubeUVRenderTarget ); + this._cleanup( cubeUVRenderTarget ); + + return cubeUVRenderTarget; + + } + + _allocateTargets() { + + const width = 3 * Math.max( this._cubeSize, 16 * 7 ); + const height = 4 * this._cubeSize; + + const params = { + magFilter: LinearFilter, + minFilter: LinearFilter, + generateMipmaps: false, + type: HalfFloatType, + format: RGBAFormat, + colorSpace: LinearSRGBColorSpace, + depthBuffer: false + }; + + const cubeUVRenderTarget = _createRenderTarget( width, height, params ); + + if ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width || this._pingPongRenderTarget.height !== height ) { + + if ( this._pingPongRenderTarget !== null ) { + + this._dispose(); + + } + + this._pingPongRenderTarget = _createRenderTarget( width, height, params ); + + const { _lodMax } = this; + ( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) ); + + this._blurMaterial = _getBlurShader( _lodMax, width, height ); + + } + + return cubeUVRenderTarget; + + } + + _compileMaterial( material ) { + + const tmpMesh = new Mesh( this._lodPlanes[ 0 ], material ); + this._renderer.compile( tmpMesh, _flatCamera ); + + } + + _sceneToCubeUV( scene, near, far, cubeUVRenderTarget, position ) { + + const fov = 90; + const aspect = 1; + const cubeCamera = new PerspectiveCamera( fov, aspect, near, far ); + const upSign = [ 1, -1, 1, 1, 1, 1 ]; + const forwardSign = [ 1, 1, 1, -1, -1, -1 ]; + const renderer = this._renderer; + + const originalAutoClear = renderer.autoClear; + const toneMapping = renderer.toneMapping; + renderer.getClearColor( _clearColor ); + + renderer.toneMapping = NoToneMapping; + renderer.autoClear = false; + + const backgroundMaterial = new MeshBasicMaterial( { + name: 'PMREM.Background', + side: BackSide, + depthWrite: false, + depthTest: false, + } ); + + const backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial ); + + let useSolidColor = false; + const background = scene.background; + + if ( background ) { + + if ( background.isColor ) { + + backgroundMaterial.color.copy( background ); + scene.background = null; + useSolidColor = true; + + } + + } else { + + backgroundMaterial.color.copy( _clearColor ); + useSolidColor = true; + + } + + for ( let i = 0; i < 6; i ++ ) { + + const col = i % 3; + + if ( col === 0 ) { + + cubeCamera.up.set( 0, upSign[ i ], 0 ); + cubeCamera.position.set( position.x, position.y, position.z ); + cubeCamera.lookAt( position.x + forwardSign[ i ], position.y, position.z ); + + } else if ( col === 1 ) { + + cubeCamera.up.set( 0, 0, upSign[ i ] ); + cubeCamera.position.set( position.x, position.y, position.z ); + cubeCamera.lookAt( position.x, position.y + forwardSign[ i ], position.z ); + + + } else { + + cubeCamera.up.set( 0, upSign[ i ], 0 ); + cubeCamera.position.set( position.x, position.y, position.z ); + cubeCamera.lookAt( position.x, position.y, position.z + forwardSign[ i ] ); + + } + + const size = this._cubeSize; + + _setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size ); + + renderer.setRenderTarget( cubeUVRenderTarget ); + + if ( useSolidColor ) { + + renderer.render( backgroundBox, cubeCamera ); + + } + + renderer.render( scene, cubeCamera ); + + } + + backgroundBox.geometry.dispose(); + backgroundBox.material.dispose(); + + renderer.toneMapping = toneMapping; + renderer.autoClear = originalAutoClear; + scene.background = background; + + } + + _textureToCubeUV( texture, cubeUVRenderTarget ) { + + const renderer = this._renderer; + + const isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ); + + if ( isCubeTexture ) { + + if ( this._cubemapMaterial === null ) { + + this._cubemapMaterial = _getCubemapMaterial(); + + } + + this._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? -1 : 1; + + } else { + + if ( this._equirectMaterial === null ) { + + this._equirectMaterial = _getEquirectMaterial(); + + } + + } + + const material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial; + const mesh = new Mesh( this._lodPlanes[ 0 ], material ); + + const uniforms = material.uniforms; + + uniforms[ 'envMap' ].value = texture; + + const size = this._cubeSize; + + _setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size ); + + renderer.setRenderTarget( cubeUVRenderTarget ); + renderer.render( mesh, _flatCamera ); + + } + + _applyPMREM( cubeUVRenderTarget ) { + + const renderer = this._renderer; + const autoClear = renderer.autoClear; + renderer.autoClear = false; + const n = this._lodPlanes.length; + + for ( let i = 1; i < n; i ++ ) { + + const sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] ); + + const poleAxis = _axisDirections[ ( n - i - 1 ) % _axisDirections.length ]; + + this._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis ); + + } + + renderer.autoClear = autoClear; + + } + + /** + * This is a two-pass Gaussian blur for a cubemap. Normally this is done + * vertically and horizontally, but this breaks down on a cube. Here we apply + * the blur latitudinally (around the poles), and then longitudinally (towards + * the poles) to approximate the orthogonally-separable blur. It is least + * accurate at the poles, but still does a decent job. + * + * @private + * @param {WebGLRenderTarget} cubeUVRenderTarget + * @param {number} lodIn + * @param {number} lodOut + * @param {number} sigma + * @param {Vector3} [poleAxis] + */ + _blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) { + + const pingPongRenderTarget = this._pingPongRenderTarget; + + this._halfBlur( + cubeUVRenderTarget, + pingPongRenderTarget, + lodIn, + lodOut, + sigma, + 'latitudinal', + poleAxis ); + + this._halfBlur( + pingPongRenderTarget, + cubeUVRenderTarget, + lodOut, + lodOut, + sigma, + 'longitudinal', + poleAxis ); + + } + + _halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) { + + const renderer = this._renderer; + const blurMaterial = this._blurMaterial; + + if ( direction !== 'latitudinal' && direction !== 'longitudinal' ) { + + console.error( + 'blur direction must be either latitudinal or longitudinal!' ); + + } + + // Number of standard deviations at which to cut off the discrete approximation. + const STANDARD_DEVIATIONS = 3; + + const blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial ); + const blurUniforms = blurMaterial.uniforms; + + const pixels = this._sizeLods[ lodIn ] - 1; + const radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 ); + const sigmaPixels = sigmaRadians / radiansPerPixel; + const samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES; + + if ( samples > MAX_SAMPLES ) { + + console.warn( `sigmaRadians, ${ + sigmaRadians}, is too large and will clip, as it requested ${ + samples} samples when the maximum is set to ${MAX_SAMPLES}` ); + + } + + const weights = []; + let sum = 0; + + for ( let i = 0; i < MAX_SAMPLES; ++ i ) { + + const x = i / sigmaPixels; + const weight = Math.exp( - x * x / 2 ); + weights.push( weight ); + + if ( i === 0 ) { + + sum += weight; + + } else if ( i < samples ) { + + sum += 2 * weight; + + } + + } + + for ( let i = 0; i < weights.length; i ++ ) { + + weights[ i ] = weights[ i ] / sum; + + } + + blurUniforms[ 'envMap' ].value = targetIn.texture; + blurUniforms[ 'samples' ].value = samples; + blurUniforms[ 'weights' ].value = weights; + blurUniforms[ 'latitudinal' ].value = direction === 'latitudinal'; + + if ( poleAxis ) { + + blurUniforms[ 'poleAxis' ].value = poleAxis; + + } + + const { _lodMax } = this; + blurUniforms[ 'dTheta' ].value = radiansPerPixel; + blurUniforms[ 'mipInt' ].value = _lodMax - lodIn; + + const outputSize = this._sizeLods[ lodOut ]; + const x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 ); + const y = 4 * ( this._cubeSize - outputSize ); + + _setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize ); + renderer.setRenderTarget( targetOut ); + renderer.render( blurMesh, _flatCamera ); + + } + +} + + + +function _createPlanes( lodMax ) { + + const lodPlanes = []; + const sizeLods = []; + const sigmas = []; + + let lod = lodMax; + + const totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length; + + for ( let i = 0; i < totalLods; i ++ ) { + + const sizeLod = Math.pow( 2, lod ); + sizeLods.push( sizeLod ); + let sigma = 1.0 / sizeLod; + + if ( i > lodMax - LOD_MIN ) { + + sigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ]; + + } else if ( i === 0 ) { + + sigma = 0; + + } + + sigmas.push( sigma ); + + const texelSize = 1.0 / ( sizeLod - 2 ); + const min = - texelSize; + const max = 1 + texelSize; + const uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ]; + + const cubeFaces = 6; + const vertices = 6; + const positionSize = 3; + const uvSize = 2; + const faceIndexSize = 1; + + const position = new Float32Array( positionSize * vertices * cubeFaces ); + const uv = new Float32Array( uvSize * vertices * cubeFaces ); + const faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces ); + + for ( let face = 0; face < cubeFaces; face ++ ) { + + const x = ( face % 3 ) * 2 / 3 - 1; + const y = face > 2 ? 0 : -1; + const coordinates = [ + x, y, 0, + x + 2 / 3, y, 0, + x + 2 / 3, y + 1, 0, + x, y, 0, + x + 2 / 3, y + 1, 0, + x, y + 1, 0 + ]; + position.set( coordinates, positionSize * vertices * face ); + uv.set( uv1, uvSize * vertices * face ); + const fill = [ face, face, face, face, face, face ]; + faceIndex.set( fill, faceIndexSize * vertices * face ); + + } + + const planes = new BufferGeometry(); + planes.setAttribute( 'position', new BufferAttribute( position, positionSize ) ); + planes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) ); + planes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) ); + lodPlanes.push( planes ); + + if ( lod > LOD_MIN ) { + + lod --; + + } + + } + + return { lodPlanes, sizeLods, sigmas }; + +} + +function _createRenderTarget( width, height, params ) { + + const cubeUVRenderTarget = new WebGLRenderTarget( width, height, params ); + cubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping; + cubeUVRenderTarget.texture.name = 'PMREM.cubeUv'; + cubeUVRenderTarget.scissorTest = true; + return cubeUVRenderTarget; + +} + +function _setViewport( target, x, y, width, height ) { + + target.viewport.set( x, y, width, height ); + target.scissor.set( x, y, width, height ); + +} + +function _getBlurShader( lodMax, width, height ) { + + const weights = new Float32Array( MAX_SAMPLES ); + const poleAxis = new Vector3( 0, 1, 0 ); + const shaderMaterial = new ShaderMaterial( { + + name: 'SphericalGaussianBlur', + + defines: { + 'n': MAX_SAMPLES, + 'CUBEUV_TEXEL_WIDTH': 1.0 / width, + 'CUBEUV_TEXEL_HEIGHT': 1.0 / height, + 'CUBEUV_MAX_MIP': `${lodMax}.0`, + }, + + uniforms: { + 'envMap': { value: null }, + 'samples': { value: 1 }, + 'weights': { value: weights }, + 'latitudinal': { value: false }, + 'dTheta': { value: 0 }, + 'mipInt': { value: 0 }, + 'poleAxis': { value: poleAxis } + }, + + vertexShader: _getCommonVertexShader(), + + fragmentShader: /* glsl */` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `, + + blending: NoBlending, + depthTest: false, + depthWrite: false + + } ); + + return shaderMaterial; + +} + +function _getEquirectMaterial() { + + return new ShaderMaterial( { + + name: 'EquirectangularToCubeUV', + + uniforms: { + 'envMap': { value: null } + }, + + vertexShader: _getCommonVertexShader(), + + fragmentShader: /* glsl */` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `, + + blending: NoBlending, + depthTest: false, + depthWrite: false + + } ); + +} + +function _getCubemapMaterial() { + + return new ShaderMaterial( { + + name: 'CubemapToCubeUV', + + uniforms: { + 'envMap': { value: null }, + 'flipEnvMap': { value: -1 } + }, + + vertexShader: _getCommonVertexShader(), + + fragmentShader: /* glsl */` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `, + + blending: NoBlending, + depthTest: false, + depthWrite: false + + } ); + +} + +function _getCommonVertexShader() { + + return /* glsl */` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `; + +} + +function WebGLCubeUVMaps( renderer ) { + + let cubeUVmaps = new WeakMap(); + + let pmremGenerator = null; + + function get( texture ) { + + if ( texture && texture.isTexture ) { + + const mapping = texture.mapping; + + const isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ); + const isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping ); + + // equirect/cube map to cubeUV conversion + + if ( isEquirectMap || isCubeMap ) { + + let renderTarget = cubeUVmaps.get( texture ); + + const currentPMREMVersion = renderTarget !== undefined ? renderTarget.texture.pmremVersion : 0; + + if ( texture.isRenderTargetTexture && texture.pmremVersion !== currentPMREMVersion ) { + + if ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer ); + + renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget ); + renderTarget.texture.pmremVersion = texture.pmremVersion; + + cubeUVmaps.set( texture, renderTarget ); + + return renderTarget.texture; + + } else { + + if ( renderTarget !== undefined ) { + + return renderTarget.texture; + + } else { + + const image = texture.image; + + if ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) { + + if ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer ); + + renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture ); + renderTarget.texture.pmremVersion = texture.pmremVersion; + + cubeUVmaps.set( texture, renderTarget ); + + texture.addEventListener( 'dispose', onTextureDispose ); + + return renderTarget.texture; + + } else { + + // image not yet ready. try the conversion next frame + + return null; + + } + + } + + } + + } + + } + + return texture; + + } + + function isCubeTextureComplete( image ) { + + let count = 0; + const length = 6; + + for ( let i = 0; i < length; i ++ ) { + + if ( image[ i ] !== undefined ) count ++; + + } + + return count === length; + + + } + + function onTextureDispose( event ) { + + const texture = event.target; + + texture.removeEventListener( 'dispose', onTextureDispose ); + + const cubemapUV = cubeUVmaps.get( texture ); + + if ( cubemapUV !== undefined ) { + + cubeUVmaps.delete( texture ); + cubemapUV.dispose(); + + } + + } + + function dispose() { + + cubeUVmaps = new WeakMap(); + + if ( pmremGenerator !== null ) { + + pmremGenerator.dispose(); + pmremGenerator = null; + + } + + } + + return { + get: get, + dispose: dispose + }; + +} + +function WebGLExtensions( gl ) { + + const extensions = {}; + + function getExtension( name ) { + + if ( extensions[ name ] !== undefined ) { + + return extensions[ name ]; + + } + + let extension; + + switch ( name ) { + + case 'WEBGL_depth_texture': + extension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' ); + break; + + case 'EXT_texture_filter_anisotropic': + extension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' ); + break; + + case 'WEBGL_compressed_texture_s3tc': + extension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' ); + break; + + case 'WEBGL_compressed_texture_pvrtc': + extension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' ); + break; + + default: + extension = gl.getExtension( name ); + + } + + extensions[ name ] = extension; + + return extension; + + } + + return { + + has: function ( name ) { + + return getExtension( name ) !== null; + + }, + + init: function () { + + getExtension( 'EXT_color_buffer_float' ); + getExtension( 'WEBGL_clip_cull_distance' ); + getExtension( 'OES_texture_float_linear' ); + getExtension( 'EXT_color_buffer_half_float' ); + getExtension( 'WEBGL_multisampled_render_to_texture' ); + getExtension( 'WEBGL_render_shared_exponent' ); + + }, + + get: function ( name ) { + + const extension = getExtension( name ); + + if ( extension === null ) { + + warnOnce( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' ); + + } + + return extension; + + } + + }; + +} + +function WebGLGeometries( gl, attributes, info, bindingStates ) { + + const geometries = {}; + const wireframeAttributes = new WeakMap(); + + function onGeometryDispose( event ) { + + const geometry = event.target; + + if ( geometry.index !== null ) { + + attributes.remove( geometry.index ); + + } + + for ( const name in geometry.attributes ) { + + attributes.remove( geometry.attributes[ name ] ); + + } + + geometry.removeEventListener( 'dispose', onGeometryDispose ); + + delete geometries[ geometry.id ]; + + const attribute = wireframeAttributes.get( geometry ); + + if ( attribute ) { + + attributes.remove( attribute ); + wireframeAttributes.delete( geometry ); + + } + + bindingStates.releaseStatesOfGeometry( geometry ); + + if ( geometry.isInstancedBufferGeometry === true ) { + + delete geometry._maxInstanceCount; + + } + + // + + info.memory.geometries --; + + } + + function get( object, geometry ) { + + if ( geometries[ geometry.id ] === true ) return geometry; + + geometry.addEventListener( 'dispose', onGeometryDispose ); + + geometries[ geometry.id ] = true; + + info.memory.geometries ++; + + return geometry; + + } + + function update( geometry ) { + + const geometryAttributes = geometry.attributes; + + // Updating index buffer in VAO now. See WebGLBindingStates. + + for ( const name in geometryAttributes ) { + + attributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER ); + + } + + } + + function updateWireframeAttribute( geometry ) { + + const indices = []; + + const geometryIndex = geometry.index; + const geometryPosition = geometry.attributes.position; + let version = 0; + + if ( geometryIndex !== null ) { + + const array = geometryIndex.array; + version = geometryIndex.version; + + for ( let i = 0, l = array.length; i < l; i += 3 ) { + + const a = array[ i + 0 ]; + const b = array[ i + 1 ]; + const c = array[ i + 2 ]; + + indices.push( a, b, b, c, c, a ); + + } + + } else if ( geometryPosition !== undefined ) { + + const array = geometryPosition.array; + version = geometryPosition.version; + + for ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) { + + const a = i + 0; + const b = i + 1; + const c = i + 2; + + indices.push( a, b, b, c, c, a ); + + } + + } else { + + return; + + } + + const attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 ); + attribute.version = version; + + // Updating index buffer in VAO now. See WebGLBindingStates + + // + + const previousAttribute = wireframeAttributes.get( geometry ); + + if ( previousAttribute ) attributes.remove( previousAttribute ); + + // + + wireframeAttributes.set( geometry, attribute ); + + } + + function getWireframeAttribute( geometry ) { + + const currentAttribute = wireframeAttributes.get( geometry ); + + if ( currentAttribute ) { + + const geometryIndex = geometry.index; + + if ( geometryIndex !== null ) { + + // if the attribute is obsolete, create a new one + + if ( currentAttribute.version < geometryIndex.version ) { + + updateWireframeAttribute( geometry ); + + } + + } + + } else { + + updateWireframeAttribute( geometry ); + + } + + return wireframeAttributes.get( geometry ); + + } + + return { + + get: get, + update: update, + + getWireframeAttribute: getWireframeAttribute + + }; + +} + +function WebGLIndexedBufferRenderer( gl, extensions, info ) { + + let mode; + + function setMode( value ) { + + mode = value; + + } + + let type, bytesPerElement; + + function setIndex( value ) { + + type = value.type; + bytesPerElement = value.bytesPerElement; + + } + + function render( start, count ) { + + gl.drawElements( mode, count, type, start * bytesPerElement ); + + info.update( count, mode, 1 ); + + } + + function renderInstances( start, count, primcount ) { + + if ( primcount === 0 ) return; + + gl.drawElementsInstanced( mode, count, type, start * bytesPerElement, primcount ); + + info.update( count, mode, primcount ); + + } + + function renderMultiDraw( starts, counts, drawCount ) { + + if ( drawCount === 0 ) return; + + const extension = extensions.get( 'WEBGL_multi_draw' ); + extension.multiDrawElementsWEBGL( mode, counts, 0, type, starts, 0, drawCount ); + + let elementCount = 0; + for ( let i = 0; i < drawCount; i ++ ) { + + elementCount += counts[ i ]; + + } + + info.update( elementCount, mode, 1 ); + + + } + + function renderMultiDrawInstances( starts, counts, drawCount, primcount ) { + + if ( drawCount === 0 ) return; + + const extension = extensions.get( 'WEBGL_multi_draw' ); + + if ( extension === null ) { + + for ( let i = 0; i < starts.length; i ++ ) { + + renderInstances( starts[ i ] / bytesPerElement, counts[ i ], primcount[ i ] ); + + } + + } else { + + extension.multiDrawElementsInstancedWEBGL( mode, counts, 0, type, starts, 0, primcount, 0, drawCount ); + + let elementCount = 0; + for ( let i = 0; i < drawCount; i ++ ) { + + elementCount += counts[ i ] * primcount[ i ]; + + } + + info.update( elementCount, mode, 1 ); + + } + + } + + // + + this.setMode = setMode; + this.setIndex = setIndex; + this.render = render; + this.renderInstances = renderInstances; + this.renderMultiDraw = renderMultiDraw; + this.renderMultiDrawInstances = renderMultiDrawInstances; + +} + +function WebGLInfo( gl ) { + + const memory = { + geometries: 0, + textures: 0 + }; + + const render = { + frame: 0, + calls: 0, + triangles: 0, + points: 0, + lines: 0 + }; + + function update( count, mode, instanceCount ) { + + render.calls ++; + + switch ( mode ) { + + case gl.TRIANGLES: + render.triangles += instanceCount * ( count / 3 ); + break; + + case gl.LINES: + render.lines += instanceCount * ( count / 2 ); + break; + + case gl.LINE_STRIP: + render.lines += instanceCount * ( count - 1 ); + break; + + case gl.LINE_LOOP: + render.lines += instanceCount * count; + break; + + case gl.POINTS: + render.points += instanceCount * count; + break; + + default: + console.error( 'THREE.WebGLInfo: Unknown draw mode:', mode ); + break; + + } + + } + + function reset() { + + render.calls = 0; + render.triangles = 0; + render.points = 0; + render.lines = 0; + + } + + return { + memory: memory, + render: render, + programs: null, + autoReset: true, + reset: reset, + update: update + }; + +} + +function WebGLMorphtargets( gl, capabilities, textures ) { + + const morphTextures = new WeakMap(); + const morph = new Vector4(); + + function update( object, geometry, program ) { + + const objectInfluences = object.morphTargetInfluences; + + // the following encodes morph targets into an array of data textures. Each layer represents a single morph target. + + const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color; + const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0; + + let entry = morphTextures.get( geometry ); + + if ( entry === undefined || entry.count !== morphTargetsCount ) { + + if ( entry !== undefined ) entry.texture.dispose(); + + const hasMorphPosition = geometry.morphAttributes.position !== undefined; + const hasMorphNormals = geometry.morphAttributes.normal !== undefined; + const hasMorphColors = geometry.morphAttributes.color !== undefined; + + const morphTargets = geometry.morphAttributes.position || []; + const morphNormals = geometry.morphAttributes.normal || []; + const morphColors = geometry.morphAttributes.color || []; + + let vertexDataCount = 0; + + if ( hasMorphPosition === true ) vertexDataCount = 1; + if ( hasMorphNormals === true ) vertexDataCount = 2; + if ( hasMorphColors === true ) vertexDataCount = 3; + + let width = geometry.attributes.position.count * vertexDataCount; + let height = 1; + + if ( width > capabilities.maxTextureSize ) { + + height = Math.ceil( width / capabilities.maxTextureSize ); + width = capabilities.maxTextureSize; + + } + + const buffer = new Float32Array( width * height * 4 * morphTargetsCount ); + + const texture = new DataArrayTexture( buffer, width, height, morphTargetsCount ); + texture.type = FloatType; + texture.needsUpdate = true; + + // fill buffer + + const vertexDataStride = vertexDataCount * 4; + + for ( let i = 0; i < morphTargetsCount; i ++ ) { + + const morphTarget = morphTargets[ i ]; + const morphNormal = morphNormals[ i ]; + const morphColor = morphColors[ i ]; + + const offset = width * height * 4 * i; + + for ( let j = 0; j < morphTarget.count; j ++ ) { + + const stride = j * vertexDataStride; + + if ( hasMorphPosition === true ) { + + morph.fromBufferAttribute( morphTarget, j ); + + buffer[ offset + stride + 0 ] = morph.x; + buffer[ offset + stride + 1 ] = morph.y; + buffer[ offset + stride + 2 ] = morph.z; + buffer[ offset + stride + 3 ] = 0; + + } + + if ( hasMorphNormals === true ) { + + morph.fromBufferAttribute( morphNormal, j ); + + buffer[ offset + stride + 4 ] = morph.x; + buffer[ offset + stride + 5 ] = morph.y; + buffer[ offset + stride + 6 ] = morph.z; + buffer[ offset + stride + 7 ] = 0; + + } + + if ( hasMorphColors === true ) { + + morph.fromBufferAttribute( morphColor, j ); + + buffer[ offset + stride + 8 ] = morph.x; + buffer[ offset + stride + 9 ] = morph.y; + buffer[ offset + stride + 10 ] = morph.z; + buffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1; + + } + + } + + } + + entry = { + count: morphTargetsCount, + texture: texture, + size: new Vector2( width, height ) + }; + + morphTextures.set( geometry, entry ); + + function disposeTexture() { + + texture.dispose(); + + morphTextures.delete( geometry ); + + geometry.removeEventListener( 'dispose', disposeTexture ); + + } + + geometry.addEventListener( 'dispose', disposeTexture ); + + } + + // + if ( object.isInstancedMesh === true && object.morphTexture !== null ) { + + program.getUniforms().setValue( gl, 'morphTexture', object.morphTexture, textures ); + + } else { + + let morphInfluencesSum = 0; + + for ( let i = 0; i < objectInfluences.length; i ++ ) { + + morphInfluencesSum += objectInfluences[ i ]; + + } + + const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum; + + + program.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence ); + program.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences ); + + } + + program.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures ); + program.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size ); + + } + + return { + + update: update + + }; + +} + +function WebGLObjects( gl, geometries, attributes, info ) { + + let updateMap = new WeakMap(); + + function update( object ) { + + const frame = info.render.frame; + + const geometry = object.geometry; + const buffergeometry = geometries.get( object, geometry ); + + // Update once per frame + + if ( updateMap.get( buffergeometry ) !== frame ) { + + geometries.update( buffergeometry ); + + updateMap.set( buffergeometry, frame ); + + } + + if ( object.isInstancedMesh ) { + + if ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) { + + object.addEventListener( 'dispose', onInstancedMeshDispose ); + + } + + if ( updateMap.get( object ) !== frame ) { + + attributes.update( object.instanceMatrix, gl.ARRAY_BUFFER ); + + if ( object.instanceColor !== null ) { + + attributes.update( object.instanceColor, gl.ARRAY_BUFFER ); + + } + + updateMap.set( object, frame ); + + } + + } + + if ( object.isSkinnedMesh ) { + + const skeleton = object.skeleton; + + if ( updateMap.get( skeleton ) !== frame ) { + + skeleton.update(); + + updateMap.set( skeleton, frame ); + + } + + } + + return buffergeometry; + + } + + function dispose() { + + updateMap = new WeakMap(); + + } + + function onInstancedMeshDispose( event ) { + + const instancedMesh = event.target; + + instancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose ); + + attributes.remove( instancedMesh.instanceMatrix ); + + if ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor ); + + } + + return { + + update: update, + dispose: dispose + + }; + +} + +/** + * Uniforms of a program. + * Those form a tree structure with a special top-level container for the root, + * which you get by calling 'new WebGLUniforms( gl, program )'. + * + * + * Properties of inner nodes including the top-level container: + * + * .seq - array of nested uniforms + * .map - nested uniforms by name + * + * + * Methods of all nodes except the top-level container: + * + * .setValue( gl, value, [textures] ) + * + * uploads a uniform value(s) + * the 'textures' parameter is needed for sampler uniforms + * + * + * Static methods of the top-level container (textures factorizations): + * + * .upload( gl, seq, values, textures ) + * + * sets uniforms in 'seq' to 'values[id].value' + * + * .seqWithValue( seq, values ) : filteredSeq + * + * filters 'seq' entries with corresponding entry in values + * + * + * Methods of the top-level container (textures factorizations): + * + * .setValue( gl, name, value, textures ) + * + * sets uniform with name 'name' to 'value' + * + * .setOptional( gl, obj, prop ) + * + * like .set for an optional property of the object + * + */ + + +const emptyTexture = /*@__PURE__*/ new Texture(); + +const emptyShadowTexture = /*@__PURE__*/ new DepthTexture( 1, 1 ); + +const emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture(); +const empty3dTexture = /*@__PURE__*/ new Data3DTexture(); +const emptyCubeTexture = /*@__PURE__*/ new CubeTexture(); + +// --- Utilities --- + +// Array Caches (provide typed arrays for temporary by size) + +const arrayCacheF32 = []; +const arrayCacheI32 = []; + +// Float32Array caches used for uploading Matrix uniforms + +const mat4array = new Float32Array( 16 ); +const mat3array = new Float32Array( 9 ); +const mat2array = new Float32Array( 4 ); + +// Flattening for arrays of vectors and matrices + +function flatten( array, nBlocks, blockSize ) { + + const firstElem = array[ 0 ]; + + if ( firstElem <= 0 || firstElem > 0 ) return array; + // unoptimized: ! isNaN( firstElem ) + // see http://jacksondunstan.com/articles/983 + + const n = nBlocks * blockSize; + let r = arrayCacheF32[ n ]; + + if ( r === undefined ) { + + r = new Float32Array( n ); + arrayCacheF32[ n ] = r; + + } + + if ( nBlocks !== 0 ) { + + firstElem.toArray( r, 0 ); + + for ( let i = 1, offset = 0; i !== nBlocks; ++ i ) { + + offset += blockSize; + array[ i ].toArray( r, offset ); + + } + + } + + return r; + +} + +function arraysEqual( a, b ) { + + if ( a.length !== b.length ) return false; + + for ( let i = 0, l = a.length; i < l; i ++ ) { + + if ( a[ i ] !== b[ i ] ) return false; + + } + + return true; + +} + +function copyArray( a, b ) { + + for ( let i = 0, l = b.length; i < l; i ++ ) { + + a[ i ] = b[ i ]; + + } + +} + +// Texture unit allocation + +function allocTexUnits( textures, n ) { + + let r = arrayCacheI32[ n ]; + + if ( r === undefined ) { + + r = new Int32Array( n ); + arrayCacheI32[ n ] = r; + + } + + for ( let i = 0; i !== n; ++ i ) { + + r[ i ] = textures.allocateTextureUnit(); + + } + + return r; + +} + +// --- Setters --- + +// Note: Defining these methods externally, because they come in a bunch +// and this way their names minify. + +// Single scalar + +function setValueV1f( gl, v ) { + + const cache = this.cache; + + if ( cache[ 0 ] === v ) return; + + gl.uniform1f( this.addr, v ); + + cache[ 0 ] = v; + +} + +// Single float vector (from flat array or THREE.VectorN) + +function setValueV2f( gl, v ) { + + const cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) { + + gl.uniform2f( this.addr, v.x, v.y ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform2fv( this.addr, v ); + + copyArray( cache, v ); + + } + +} + +function setValueV3f( gl, v ) { + + const cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) { + + gl.uniform3f( this.addr, v.x, v.y, v.z ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + cache[ 2 ] = v.z; + + } + + } else if ( v.r !== undefined ) { + + if ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) { + + gl.uniform3f( this.addr, v.r, v.g, v.b ); + + cache[ 0 ] = v.r; + cache[ 1 ] = v.g; + cache[ 2 ] = v.b; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform3fv( this.addr, v ); + + copyArray( cache, v ); + + } + +} + +function setValueV4f( gl, v ) { + + const cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) { + + gl.uniform4f( this.addr, v.x, v.y, v.z, v.w ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + cache[ 2 ] = v.z; + cache[ 3 ] = v.w; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform4fv( this.addr, v ); + + copyArray( cache, v ); + + } + +} + +// Single matrix (from flat array or THREE.MatrixN) + +function setValueM2( gl, v ) { + + const cache = this.cache; + const elements = v.elements; + + if ( elements === undefined ) { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniformMatrix2fv( this.addr, false, v ); + + copyArray( cache, v ); + + } else { + + if ( arraysEqual( cache, elements ) ) return; + + mat2array.set( elements ); + + gl.uniformMatrix2fv( this.addr, false, mat2array ); + + copyArray( cache, elements ); + + } + +} + +function setValueM3( gl, v ) { + + const cache = this.cache; + const elements = v.elements; + + if ( elements === undefined ) { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniformMatrix3fv( this.addr, false, v ); + + copyArray( cache, v ); + + } else { + + if ( arraysEqual( cache, elements ) ) return; + + mat3array.set( elements ); + + gl.uniformMatrix3fv( this.addr, false, mat3array ); + + copyArray( cache, elements ); + + } + +} + +function setValueM4( gl, v ) { + + const cache = this.cache; + const elements = v.elements; + + if ( elements === undefined ) { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniformMatrix4fv( this.addr, false, v ); + + copyArray( cache, v ); + + } else { + + if ( arraysEqual( cache, elements ) ) return; + + mat4array.set( elements ); + + gl.uniformMatrix4fv( this.addr, false, mat4array ); + + copyArray( cache, elements ); + + } + +} + +// Single integer / boolean + +function setValueV1i( gl, v ) { + + const cache = this.cache; + + if ( cache[ 0 ] === v ) return; + + gl.uniform1i( this.addr, v ); + + cache[ 0 ] = v; + +} + +// Single integer / boolean vector (from flat array or THREE.VectorN) + +function setValueV2i( gl, v ) { + + const cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) { + + gl.uniform2i( this.addr, v.x, v.y ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform2iv( this.addr, v ); + + copyArray( cache, v ); + + } + +} + +function setValueV3i( gl, v ) { + + const cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) { + + gl.uniform3i( this.addr, v.x, v.y, v.z ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + cache[ 2 ] = v.z; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform3iv( this.addr, v ); + + copyArray( cache, v ); + + } + +} + +function setValueV4i( gl, v ) { + + const cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) { + + gl.uniform4i( this.addr, v.x, v.y, v.z, v.w ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + cache[ 2 ] = v.z; + cache[ 3 ] = v.w; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform4iv( this.addr, v ); + + copyArray( cache, v ); + + } + +} + +// Single unsigned integer + +function setValueV1ui( gl, v ) { + + const cache = this.cache; + + if ( cache[ 0 ] === v ) return; + + gl.uniform1ui( this.addr, v ); + + cache[ 0 ] = v; + +} + +// Single unsigned integer vector (from flat array or THREE.VectorN) + +function setValueV2ui( gl, v ) { + + const cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) { + + gl.uniform2ui( this.addr, v.x, v.y ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform2uiv( this.addr, v ); + + copyArray( cache, v ); + + } + +} + +function setValueV3ui( gl, v ) { + + const cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) { + + gl.uniform3ui( this.addr, v.x, v.y, v.z ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + cache[ 2 ] = v.z; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform3uiv( this.addr, v ); + + copyArray( cache, v ); + + } + +} + +function setValueV4ui( gl, v ) { + + const cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) { + + gl.uniform4ui( this.addr, v.x, v.y, v.z, v.w ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + cache[ 2 ] = v.z; + cache[ 3 ] = v.w; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform4uiv( this.addr, v ); + + copyArray( cache, v ); + + } + +} + + +// Single texture (2D / Cube) + +function setValueT1( gl, v, textures ) { + + const cache = this.cache; + const unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + let emptyTexture2D; + + if ( this.type === gl.SAMPLER_2D_SHADOW ) { + + emptyShadowTexture.compareFunction = LessEqualCompare; // #28670 + emptyTexture2D = emptyShadowTexture; + + } else { + + emptyTexture2D = emptyTexture; + + } + + textures.setTexture2D( v || emptyTexture2D, unit ); + +} + +function setValueT3D1( gl, v, textures ) { + + const cache = this.cache; + const unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.setTexture3D( v || empty3dTexture, unit ); + +} + +function setValueT6( gl, v, textures ) { + + const cache = this.cache; + const unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.setTextureCube( v || emptyCubeTexture, unit ); + +} + +function setValueT2DArray1( gl, v, textures ) { + + const cache = this.cache; + const unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.setTexture2DArray( v || emptyArrayTexture, unit ); + +} + +// Helper to pick the right setter for the singular case + +function getSingularSetter( type ) { + + switch ( type ) { + + case 0x1406: return setValueV1f; // FLOAT + case 0x8b50: return setValueV2f; // _VEC2 + case 0x8b51: return setValueV3f; // _VEC3 + case 0x8b52: return setValueV4f; // _VEC4 + + case 0x8b5a: return setValueM2; // _MAT2 + case 0x8b5b: return setValueM3; // _MAT3 + case 0x8b5c: return setValueM4; // _MAT4 + + case 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL + case 0x8b53: case 0x8b57: return setValueV2i; // _VEC2 + case 0x8b54: case 0x8b58: return setValueV3i; // _VEC3 + case 0x8b55: case 0x8b59: return setValueV4i; // _VEC4 + + case 0x1405: return setValueV1ui; // UINT + case 0x8dc6: return setValueV2ui; // _VEC2 + case 0x8dc7: return setValueV3ui; // _VEC3 + case 0x8dc8: return setValueV4ui; // _VEC4 + + case 0x8b5e: // SAMPLER_2D + case 0x8d66: // SAMPLER_EXTERNAL_OES + case 0x8dca: // INT_SAMPLER_2D + case 0x8dd2: // UNSIGNED_INT_SAMPLER_2D + case 0x8b62: // SAMPLER_2D_SHADOW + return setValueT1; + + case 0x8b5f: // SAMPLER_3D + case 0x8dcb: // INT_SAMPLER_3D + case 0x8dd3: // UNSIGNED_INT_SAMPLER_3D + return setValueT3D1; + + case 0x8b60: // SAMPLER_CUBE + case 0x8dcc: // INT_SAMPLER_CUBE + case 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE + case 0x8dc5: // SAMPLER_CUBE_SHADOW + return setValueT6; + + case 0x8dc1: // SAMPLER_2D_ARRAY + case 0x8dcf: // INT_SAMPLER_2D_ARRAY + case 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY + case 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW + return setValueT2DArray1; + + } + +} + + +// Array of scalars + +function setValueV1fArray( gl, v ) { + + gl.uniform1fv( this.addr, v ); + +} + +// Array of vectors (from flat array or array of THREE.VectorN) + +function setValueV2fArray( gl, v ) { + + const data = flatten( v, this.size, 2 ); + + gl.uniform2fv( this.addr, data ); + +} + +function setValueV3fArray( gl, v ) { + + const data = flatten( v, this.size, 3 ); + + gl.uniform3fv( this.addr, data ); + +} + +function setValueV4fArray( gl, v ) { + + const data = flatten( v, this.size, 4 ); + + gl.uniform4fv( this.addr, data ); + +} + +// Array of matrices (from flat array or array of THREE.MatrixN) + +function setValueM2Array( gl, v ) { + + const data = flatten( v, this.size, 4 ); + + gl.uniformMatrix2fv( this.addr, false, data ); + +} + +function setValueM3Array( gl, v ) { + + const data = flatten( v, this.size, 9 ); + + gl.uniformMatrix3fv( this.addr, false, data ); + +} + +function setValueM4Array( gl, v ) { + + const data = flatten( v, this.size, 16 ); + + gl.uniformMatrix4fv( this.addr, false, data ); + +} + +// Array of integer / boolean + +function setValueV1iArray( gl, v ) { + + gl.uniform1iv( this.addr, v ); + +} + +// Array of integer / boolean vectors (from flat array) + +function setValueV2iArray( gl, v ) { + + gl.uniform2iv( this.addr, v ); + +} + +function setValueV3iArray( gl, v ) { + + gl.uniform3iv( this.addr, v ); + +} + +function setValueV4iArray( gl, v ) { + + gl.uniform4iv( this.addr, v ); + +} + +// Array of unsigned integer + +function setValueV1uiArray( gl, v ) { + + gl.uniform1uiv( this.addr, v ); + +} + +// Array of unsigned integer vectors (from flat array) + +function setValueV2uiArray( gl, v ) { + + gl.uniform2uiv( this.addr, v ); + +} + +function setValueV3uiArray( gl, v ) { + + gl.uniform3uiv( this.addr, v ); + +} + +function setValueV4uiArray( gl, v ) { + + gl.uniform4uiv( this.addr, v ); + +} + + +// Array of textures (2D / 3D / Cube / 2DArray) + +function setValueT1Array( gl, v, textures ) { + + const cache = this.cache; + + const n = v.length; + + const units = allocTexUnits( textures, n ); + + if ( ! arraysEqual( cache, units ) ) { + + gl.uniform1iv( this.addr, units ); + + copyArray( cache, units ); + + } + + for ( let i = 0; i !== n; ++ i ) { + + textures.setTexture2D( v[ i ] || emptyTexture, units[ i ] ); + + } + +} + +function setValueT3DArray( gl, v, textures ) { + + const cache = this.cache; + + const n = v.length; + + const units = allocTexUnits( textures, n ); + + if ( ! arraysEqual( cache, units ) ) { + + gl.uniform1iv( this.addr, units ); + + copyArray( cache, units ); + + } + + for ( let i = 0; i !== n; ++ i ) { + + textures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] ); + + } + +} + +function setValueT6Array( gl, v, textures ) { + + const cache = this.cache; + + const n = v.length; + + const units = allocTexUnits( textures, n ); + + if ( ! arraysEqual( cache, units ) ) { + + gl.uniform1iv( this.addr, units ); + + copyArray( cache, units ); + + } + + for ( let i = 0; i !== n; ++ i ) { + + textures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] ); + + } + +} + +function setValueT2DArrayArray( gl, v, textures ) { + + const cache = this.cache; + + const n = v.length; + + const units = allocTexUnits( textures, n ); + + if ( ! arraysEqual( cache, units ) ) { + + gl.uniform1iv( this.addr, units ); + + copyArray( cache, units ); + + } + + for ( let i = 0; i !== n; ++ i ) { + + textures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] ); + + } + +} + + +// Helper to pick the right setter for a pure (bottom-level) array + +function getPureArraySetter( type ) { + + switch ( type ) { + + case 0x1406: return setValueV1fArray; // FLOAT + case 0x8b50: return setValueV2fArray; // _VEC2 + case 0x8b51: return setValueV3fArray; // _VEC3 + case 0x8b52: return setValueV4fArray; // _VEC4 + + case 0x8b5a: return setValueM2Array; // _MAT2 + case 0x8b5b: return setValueM3Array; // _MAT3 + case 0x8b5c: return setValueM4Array; // _MAT4 + + case 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL + case 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2 + case 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3 + case 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4 + + case 0x1405: return setValueV1uiArray; // UINT + case 0x8dc6: return setValueV2uiArray; // _VEC2 + case 0x8dc7: return setValueV3uiArray; // _VEC3 + case 0x8dc8: return setValueV4uiArray; // _VEC4 + + case 0x8b5e: // SAMPLER_2D + case 0x8d66: // SAMPLER_EXTERNAL_OES + case 0x8dca: // INT_SAMPLER_2D + case 0x8dd2: // UNSIGNED_INT_SAMPLER_2D + case 0x8b62: // SAMPLER_2D_SHADOW + return setValueT1Array; + + case 0x8b5f: // SAMPLER_3D + case 0x8dcb: // INT_SAMPLER_3D + case 0x8dd3: // UNSIGNED_INT_SAMPLER_3D + return setValueT3DArray; + + case 0x8b60: // SAMPLER_CUBE + case 0x8dcc: // INT_SAMPLER_CUBE + case 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE + case 0x8dc5: // SAMPLER_CUBE_SHADOW + return setValueT6Array; + + case 0x8dc1: // SAMPLER_2D_ARRAY + case 0x8dcf: // INT_SAMPLER_2D_ARRAY + case 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY + case 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW + return setValueT2DArrayArray; + + } + +} + +// --- Uniform Classes --- + +class SingleUniform { + + constructor( id, activeInfo, addr ) { + + this.id = id; + this.addr = addr; + this.cache = []; + this.type = activeInfo.type; + this.setValue = getSingularSetter( activeInfo.type ); + + // this.path = activeInfo.name; // DEBUG + + } + +} + +class PureArrayUniform { + + constructor( id, activeInfo, addr ) { + + this.id = id; + this.addr = addr; + this.cache = []; + this.type = activeInfo.type; + this.size = activeInfo.size; + this.setValue = getPureArraySetter( activeInfo.type ); + + // this.path = activeInfo.name; // DEBUG + + } + +} + +class StructuredUniform { + + constructor( id ) { + + this.id = id; + + this.seq = []; + this.map = {}; + + } + + setValue( gl, value, textures ) { + + const seq = this.seq; + + for ( let i = 0, n = seq.length; i !== n; ++ i ) { + + const u = seq[ i ]; + u.setValue( gl, value[ u.id ], textures ); + + } + + } + +} + +// --- Top-level --- + +// Parser - builds up the property tree from the path strings + +const RePathPart = /(\w+)(\])?(\[|\.)?/g; + +// extracts +// - the identifier (member name or array index) +// - followed by an optional right bracket (found when array index) +// - followed by an optional left bracket or dot (type of subscript) +// +// Note: These portions can be read in a non-overlapping fashion and +// allow straightforward parsing of the hierarchy that WebGL encodes +// in the uniform names. + +function addUniform( container, uniformObject ) { + + container.seq.push( uniformObject ); + container.map[ uniformObject.id ] = uniformObject; + +} + +function parseUniform( activeInfo, addr, container ) { + + const path = activeInfo.name, + pathLength = path.length; + + // reset RegExp object, because of the early exit of a previous run + RePathPart.lastIndex = 0; + + while ( true ) { + + const match = RePathPart.exec( path ), + matchEnd = RePathPart.lastIndex; + + let id = match[ 1 ]; + const idIsIndex = match[ 2 ] === ']', + subscript = match[ 3 ]; + + if ( idIsIndex ) id = id | 0; // convert to integer + + if ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) { + + // bare name or "pure" bottom-level array "[0]" suffix + + addUniform( container, subscript === undefined ? + new SingleUniform( id, activeInfo, addr ) : + new PureArrayUniform( id, activeInfo, addr ) ); + + break; + + } else { + + // step into inner node / create it in case it doesn't exist + + const map = container.map; + let next = map[ id ]; + + if ( next === undefined ) { + + next = new StructuredUniform( id ); + addUniform( container, next ); + + } + + container = next; + + } + + } + +} + +// Root Container + +class WebGLUniforms { + + constructor( gl, program ) { + + this.seq = []; + this.map = {}; + + const n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS ); + + for ( let i = 0; i < n; ++ i ) { + + const info = gl.getActiveUniform( program, i ), + addr = gl.getUniformLocation( program, info.name ); + + parseUniform( info, addr, this ); + + } + + } + + setValue( gl, name, value, textures ) { + + const u = this.map[ name ]; + + if ( u !== undefined ) u.setValue( gl, value, textures ); + + } + + setOptional( gl, object, name ) { + + const v = object[ name ]; + + if ( v !== undefined ) this.setValue( gl, name, v ); + + } + + static upload( gl, seq, values, textures ) { + + for ( let i = 0, n = seq.length; i !== n; ++ i ) { + + const u = seq[ i ], + v = values[ u.id ]; + + if ( v.needsUpdate !== false ) { + + // note: always updating when .needsUpdate is undefined + u.setValue( gl, v.value, textures ); + + } + + } + + } + + static seqWithValue( seq, values ) { + + const r = []; + + for ( let i = 0, n = seq.length; i !== n; ++ i ) { + + const u = seq[ i ]; + if ( u.id in values ) r.push( u ); + + } + + return r; + + } + +} + +function WebGLShader( gl, type, string ) { + + const shader = gl.createShader( type ); + + gl.shaderSource( shader, string ); + gl.compileShader( shader ); + + return shader; + +} + +// From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/ +const COMPLETION_STATUS_KHR = 0x91B1; + +let programIdCount = 0; + +function handleSource( string, errorLine ) { + + const lines = string.split( '\n' ); + const lines2 = []; + + const from = Math.max( errorLine - 6, 0 ); + const to = Math.min( errorLine + 6, lines.length ); + + for ( let i = from; i < to; i ++ ) { + + const line = i + 1; + lines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` ); + + } + + return lines2.join( '\n' ); + +} + +const _m0 = /*@__PURE__*/ new Matrix3(); + +function getEncodingComponents( colorSpace ) { + + ColorManagement._getMatrix( _m0, ColorManagement.workingColorSpace, colorSpace ); + + const encodingMatrix = `mat3( ${ _m0.elements.map( ( v ) => v.toFixed( 4 ) ) } )`; + + switch ( ColorManagement.getTransfer( colorSpace ) ) { + + case LinearTransfer: + return [ encodingMatrix, 'LinearTransferOETF' ]; + + case SRGBTransfer: + return [ encodingMatrix, 'sRGBTransferOETF' ]; + + default: + console.warn( 'THREE.WebGLProgram: Unsupported color space: ', colorSpace ); + return [ encodingMatrix, 'LinearTransferOETF' ]; + + } + +} + +function getShaderErrors( gl, shader, type ) { + + const status = gl.getShaderParameter( shader, gl.COMPILE_STATUS ); + const errors = gl.getShaderInfoLog( shader ).trim(); + + if ( status && errors === '' ) return ''; + + const errorMatches = /ERROR: 0:(\d+)/.exec( errors ); + if ( errorMatches ) { + + // --enable-privileged-webgl-extension + // console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) ); + + const errorLine = parseInt( errorMatches[ 1 ] ); + return type.toUpperCase() + '\n\n' + errors + '\n\n' + handleSource( gl.getShaderSource( shader ), errorLine ); + + } else { + + return errors; + + } + +} + +function getTexelEncodingFunction( functionName, colorSpace ) { + + const components = getEncodingComponents( colorSpace ); + + return [ + + `vec4 ${functionName}( vec4 value ) {`, + + ` return ${components[ 1 ]}( vec4( value.rgb * ${components[ 0 ]}, value.a ) );`, + + '}', + + ].join( '\n' ); + +} + +function getToneMappingFunction( functionName, toneMapping ) { + + let toneMappingName; + + switch ( toneMapping ) { + + case LinearToneMapping: + toneMappingName = 'Linear'; + break; + + case ReinhardToneMapping: + toneMappingName = 'Reinhard'; + break; + + case CineonToneMapping: + toneMappingName = 'Cineon'; + break; + + case ACESFilmicToneMapping: + toneMappingName = 'ACESFilmic'; + break; + + case AgXToneMapping: + toneMappingName = 'AgX'; + break; + + case NeutralToneMapping: + toneMappingName = 'Neutral'; + break; + + case CustomToneMapping: + toneMappingName = 'Custom'; + break; + + default: + console.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping ); + toneMappingName = 'Linear'; + + } + + return 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }'; + +} + +const _v0 = /*@__PURE__*/ new Vector3(); + +function getLuminanceFunction() { + + ColorManagement.getLuminanceCoefficients( _v0 ); + + const r = _v0.x.toFixed( 4 ); + const g = _v0.y.toFixed( 4 ); + const b = _v0.z.toFixed( 4 ); + + return [ + + 'float luminance( const in vec3 rgb ) {', + + ` const vec3 weights = vec3( ${ r }, ${ g }, ${ b } );`, + + ' return dot( weights, rgb );', + + '}' + + ].join( '\n' ); + +} + +function generateVertexExtensions( parameters ) { + + const chunks = [ + parameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : '', + parameters.extensionMultiDraw ? '#extension GL_ANGLE_multi_draw : require' : '', + ]; + + return chunks.filter( filterEmptyLine ).join( '\n' ); + +} + +function generateDefines( defines ) { + + const chunks = []; + + for ( const name in defines ) { + + const value = defines[ name ]; + + if ( value === false ) continue; + + chunks.push( '#define ' + name + ' ' + value ); + + } + + return chunks.join( '\n' ); + +} + +function fetchAttributeLocations( gl, program ) { + + const attributes = {}; + + const n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES ); + + for ( let i = 0; i < n; i ++ ) { + + const info = gl.getActiveAttrib( program, i ); + const name = info.name; + + let locationSize = 1; + if ( info.type === gl.FLOAT_MAT2 ) locationSize = 2; + if ( info.type === gl.FLOAT_MAT3 ) locationSize = 3; + if ( info.type === gl.FLOAT_MAT4 ) locationSize = 4; + + // console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i ); + + attributes[ name ] = { + type: info.type, + location: gl.getAttribLocation( program, name ), + locationSize: locationSize + }; + + } + + return attributes; + +} + +function filterEmptyLine( string ) { + + return string !== ''; + +} + +function replaceLightNums( string, parameters ) { + + const numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps; + + return string + .replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights ) + .replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights ) + .replace( /NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps ) + .replace( /NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords ) + .replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights ) + .replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights ) + .replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights ) + .replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows ) + .replace( /NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps ) + .replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows ) + .replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows ); + +} + +function replaceClippingPlaneNums( string, parameters ) { + + return string + .replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes ) + .replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) ); + +} + +// Resolve Includes + +const includePattern = /^[ \t]*#include +<([\w\d./]+)>/gm; + +function resolveIncludes( string ) { + + return string.replace( includePattern, includeReplacer ); + +} + +const shaderChunkMap = new Map(); + +function includeReplacer( match, include ) { + + let string = ShaderChunk[ include ]; + + if ( string === undefined ) { + + const newInclude = shaderChunkMap.get( include ); + + if ( newInclude !== undefined ) { + + string = ShaderChunk[ newInclude ]; + console.warn( 'THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.', include, newInclude ); + + } else { + + throw new Error( 'Can not resolve #include <' + include + '>' ); + + } + + } + + return resolveIncludes( string ); + +} + +// Unroll Loops + +const unrollLoopPattern = /#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g; + +function unrollLoops( string ) { + + return string.replace( unrollLoopPattern, loopReplacer ); + +} + +function loopReplacer( match, start, end, snippet ) { + + let string = ''; + + for ( let i = parseInt( start ); i < parseInt( end ); i ++ ) { + + string += snippet + .replace( /\[\s*i\s*\]/g, '[ ' + i + ' ]' ) + .replace( /UNROLLED_LOOP_INDEX/g, i ); + + } + + return string; + +} + +// + +function generatePrecision( parameters ) { + + let precisionstring = `precision ${parameters.precision} float; + precision ${parameters.precision} int; + precision ${parameters.precision} sampler2D; + precision ${parameters.precision} samplerCube; + precision ${parameters.precision} sampler3D; + precision ${parameters.precision} sampler2DArray; + precision ${parameters.precision} sampler2DShadow; + precision ${parameters.precision} samplerCubeShadow; + precision ${parameters.precision} sampler2DArrayShadow; + precision ${parameters.precision} isampler2D; + precision ${parameters.precision} isampler3D; + precision ${parameters.precision} isamplerCube; + precision ${parameters.precision} isampler2DArray; + precision ${parameters.precision} usampler2D; + precision ${parameters.precision} usampler3D; + precision ${parameters.precision} usamplerCube; + precision ${parameters.precision} usampler2DArray; + `; + + if ( parameters.precision === 'highp' ) { + + precisionstring += '\n#define HIGH_PRECISION'; + + } else if ( parameters.precision === 'mediump' ) { + + precisionstring += '\n#define MEDIUM_PRECISION'; + + } else if ( parameters.precision === 'lowp' ) { + + precisionstring += '\n#define LOW_PRECISION'; + + } + + return precisionstring; + +} + +function generateShadowMapTypeDefine( parameters ) { + + let shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC'; + + if ( parameters.shadowMapType === PCFShadowMap ) { + + shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF'; + + } else if ( parameters.shadowMapType === PCFSoftShadowMap ) { + + shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT'; + + } else if ( parameters.shadowMapType === VSMShadowMap ) { + + shadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM'; + + } + + return shadowMapTypeDefine; + +} + +function generateEnvMapTypeDefine( parameters ) { + + let envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; + + if ( parameters.envMap ) { + + switch ( parameters.envMapMode ) { + + case CubeReflectionMapping: + case CubeRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; + break; + + case CubeUVReflectionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV'; + break; + + } + + } + + return envMapTypeDefine; + +} + +function generateEnvMapModeDefine( parameters ) { + + let envMapModeDefine = 'ENVMAP_MODE_REFLECTION'; + + if ( parameters.envMap ) { + + switch ( parameters.envMapMode ) { + + case CubeRefractionMapping: + + envMapModeDefine = 'ENVMAP_MODE_REFRACTION'; + break; + + } + + } + + return envMapModeDefine; + +} + +function generateEnvMapBlendingDefine( parameters ) { + + let envMapBlendingDefine = 'ENVMAP_BLENDING_NONE'; + + if ( parameters.envMap ) { + + switch ( parameters.combine ) { + + case MultiplyOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; + break; + + case MixOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_MIX'; + break; + + case AddOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_ADD'; + break; + + } + + } + + return envMapBlendingDefine; + +} + +function generateCubeUVSize( parameters ) { + + const imageHeight = parameters.envMapCubeUVHeight; + + if ( imageHeight === null ) return null; + + const maxMip = Math.log2( imageHeight ) - 2; + + const texelHeight = 1.0 / imageHeight; + + const texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) ); + + return { texelWidth, texelHeight, maxMip }; + +} + +function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) { + + // TODO Send this event to Three.js DevTools + // console.log( 'WebGLProgram', cacheKey ); + + const gl = renderer.getContext(); + + const defines = parameters.defines; + + let vertexShader = parameters.vertexShader; + let fragmentShader = parameters.fragmentShader; + + const shadowMapTypeDefine = generateShadowMapTypeDefine( parameters ); + const envMapTypeDefine = generateEnvMapTypeDefine( parameters ); + const envMapModeDefine = generateEnvMapModeDefine( parameters ); + const envMapBlendingDefine = generateEnvMapBlendingDefine( parameters ); + const envMapCubeUVSize = generateCubeUVSize( parameters ); + + const customVertexExtensions = generateVertexExtensions( parameters ); + + const customDefines = generateDefines( defines ); + + const program = gl.createProgram(); + + let prefixVertex, prefixFragment; + let versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\n' : ''; + + if ( parameters.isRawShaderMaterial ) { + + prefixVertex = [ + + '#define SHADER_TYPE ' + parameters.shaderType, + '#define SHADER_NAME ' + parameters.shaderName, + + customDefines + + ].filter( filterEmptyLine ).join( '\n' ); + + if ( prefixVertex.length > 0 ) { + + prefixVertex += '\n'; + + } + + prefixFragment = [ + + '#define SHADER_TYPE ' + parameters.shaderType, + '#define SHADER_NAME ' + parameters.shaderName, + + customDefines + + ].filter( filterEmptyLine ).join( '\n' ); + + if ( prefixFragment.length > 0 ) { + + prefixFragment += '\n'; + + } + + } else { + + prefixVertex = [ + + generatePrecision( parameters ), + + '#define SHADER_TYPE ' + parameters.shaderType, + '#define SHADER_NAME ' + parameters.shaderName, + + customDefines, + + parameters.extensionClipCullDistance ? '#define USE_CLIP_DISTANCE' : '', + parameters.batching ? '#define USE_BATCHING' : '', + parameters.batchingColor ? '#define USE_BATCHING_COLOR' : '', + parameters.instancing ? '#define USE_INSTANCING' : '', + parameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '', + parameters.instancingMorph ? '#define USE_INSTANCING_MORPH' : '', + + parameters.useFog && parameters.fog ? '#define USE_FOG' : '', + parameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '', + + parameters.map ? '#define USE_MAP' : '', + parameters.envMap ? '#define USE_ENVMAP' : '', + parameters.envMap ? '#define ' + envMapModeDefine : '', + parameters.lightMap ? '#define USE_LIGHTMAP' : '', + parameters.aoMap ? '#define USE_AOMAP' : '', + parameters.bumpMap ? '#define USE_BUMPMAP' : '', + parameters.normalMap ? '#define USE_NORMALMAP' : '', + parameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '', + parameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '', + parameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '', + parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', + + parameters.anisotropy ? '#define USE_ANISOTROPY' : '', + parameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '', + + parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '', + parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '', + parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '', + + parameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '', + parameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '', + + parameters.specularMap ? '#define USE_SPECULARMAP' : '', + parameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '', + parameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '', + + parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', + parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', + parameters.alphaMap ? '#define USE_ALPHAMAP' : '', + parameters.alphaHash ? '#define USE_ALPHAHASH' : '', + + parameters.transmission ? '#define USE_TRANSMISSION' : '', + parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '', + parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '', + + parameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '', + parameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '', + + // + + parameters.mapUv ? '#define MAP_UV ' + parameters.mapUv : '', + parameters.alphaMapUv ? '#define ALPHAMAP_UV ' + parameters.alphaMapUv : '', + parameters.lightMapUv ? '#define LIGHTMAP_UV ' + parameters.lightMapUv : '', + parameters.aoMapUv ? '#define AOMAP_UV ' + parameters.aoMapUv : '', + parameters.emissiveMapUv ? '#define EMISSIVEMAP_UV ' + parameters.emissiveMapUv : '', + parameters.bumpMapUv ? '#define BUMPMAP_UV ' + parameters.bumpMapUv : '', + parameters.normalMapUv ? '#define NORMALMAP_UV ' + parameters.normalMapUv : '', + parameters.displacementMapUv ? '#define DISPLACEMENTMAP_UV ' + parameters.displacementMapUv : '', + + parameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '', + parameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '', + + parameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '', + + parameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '', + parameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '', + parameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '', + + parameters.iridescenceMapUv ? '#define IRIDESCENCEMAP_UV ' + parameters.iridescenceMapUv : '', + parameters.iridescenceThicknessMapUv ? '#define IRIDESCENCE_THICKNESSMAP_UV ' + parameters.iridescenceThicknessMapUv : '', + + parameters.sheenColorMapUv ? '#define SHEEN_COLORMAP_UV ' + parameters.sheenColorMapUv : '', + parameters.sheenRoughnessMapUv ? '#define SHEEN_ROUGHNESSMAP_UV ' + parameters.sheenRoughnessMapUv : '', + + parameters.specularMapUv ? '#define SPECULARMAP_UV ' + parameters.specularMapUv : '', + parameters.specularColorMapUv ? '#define SPECULAR_COLORMAP_UV ' + parameters.specularColorMapUv : '', + parameters.specularIntensityMapUv ? '#define SPECULAR_INTENSITYMAP_UV ' + parameters.specularIntensityMapUv : '', + + parameters.transmissionMapUv ? '#define TRANSMISSIONMAP_UV ' + parameters.transmissionMapUv : '', + parameters.thicknessMapUv ? '#define THICKNESSMAP_UV ' + parameters.thicknessMapUv : '', + + // + + parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '', + parameters.vertexColors ? '#define USE_COLOR' : '', + parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '', + parameters.vertexUv1s ? '#define USE_UV1' : '', + parameters.vertexUv2s ? '#define USE_UV2' : '', + parameters.vertexUv3s ? '#define USE_UV3' : '', + + parameters.pointsUvs ? '#define USE_POINTS_UV' : '', + + parameters.flatShading ? '#define FLAT_SHADED' : '', + + parameters.skinning ? '#define USE_SKINNING' : '', + + parameters.morphTargets ? '#define USE_MORPHTARGETS' : '', + parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '', + ( parameters.morphColors ) ? '#define USE_MORPHCOLORS' : '', + ( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '', + ( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '', + parameters.doubleSided ? '#define DOUBLE_SIDED' : '', + parameters.flipSided ? '#define FLIP_SIDED' : '', + + parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', + parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', + + parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '', + + parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '', + + parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', + parameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '', + + 'uniform mat4 modelMatrix;', + 'uniform mat4 modelViewMatrix;', + 'uniform mat4 projectionMatrix;', + 'uniform mat4 viewMatrix;', + 'uniform mat3 normalMatrix;', + 'uniform vec3 cameraPosition;', + 'uniform bool isOrthographic;', + + '#ifdef USE_INSTANCING', + + ' attribute mat4 instanceMatrix;', + + '#endif', + + '#ifdef USE_INSTANCING_COLOR', + + ' attribute vec3 instanceColor;', + + '#endif', + + '#ifdef USE_INSTANCING_MORPH', + + ' uniform sampler2D morphTexture;', + + '#endif', + + 'attribute vec3 position;', + 'attribute vec3 normal;', + 'attribute vec2 uv;', + + '#ifdef USE_UV1', + + ' attribute vec2 uv1;', + + '#endif', + + '#ifdef USE_UV2', + + ' attribute vec2 uv2;', + + '#endif', + + '#ifdef USE_UV3', + + ' attribute vec2 uv3;', + + '#endif', + + '#ifdef USE_TANGENT', + + ' attribute vec4 tangent;', + + '#endif', + + '#if defined( USE_COLOR_ALPHA )', + + ' attribute vec4 color;', + + '#elif defined( USE_COLOR )', + + ' attribute vec3 color;', + + '#endif', + + '#ifdef USE_SKINNING', + + ' attribute vec4 skinIndex;', + ' attribute vec4 skinWeight;', + + '#endif', + + '\n' + + ].filter( filterEmptyLine ).join( '\n' ); + + prefixFragment = [ + + generatePrecision( parameters ), + + '#define SHADER_TYPE ' + parameters.shaderType, + '#define SHADER_NAME ' + parameters.shaderName, + + customDefines, + + parameters.useFog && parameters.fog ? '#define USE_FOG' : '', + parameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '', + + parameters.alphaToCoverage ? '#define ALPHA_TO_COVERAGE' : '', + parameters.map ? '#define USE_MAP' : '', + parameters.matcap ? '#define USE_MATCAP' : '', + parameters.envMap ? '#define USE_ENVMAP' : '', + parameters.envMap ? '#define ' + envMapTypeDefine : '', + parameters.envMap ? '#define ' + envMapModeDefine : '', + parameters.envMap ? '#define ' + envMapBlendingDefine : '', + envMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '', + envMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '', + envMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '', + parameters.lightMap ? '#define USE_LIGHTMAP' : '', + parameters.aoMap ? '#define USE_AOMAP' : '', + parameters.bumpMap ? '#define USE_BUMPMAP' : '', + parameters.normalMap ? '#define USE_NORMALMAP' : '', + parameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '', + parameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '', + parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', + + parameters.anisotropy ? '#define USE_ANISOTROPY' : '', + parameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '', + + parameters.clearcoat ? '#define USE_CLEARCOAT' : '', + parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '', + parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '', + parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '', + + parameters.dispersion ? '#define USE_DISPERSION' : '', + + parameters.iridescence ? '#define USE_IRIDESCENCE' : '', + parameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '', + parameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '', + + parameters.specularMap ? '#define USE_SPECULARMAP' : '', + parameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '', + parameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '', + + parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', + parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', + + parameters.alphaMap ? '#define USE_ALPHAMAP' : '', + parameters.alphaTest ? '#define USE_ALPHATEST' : '', + parameters.alphaHash ? '#define USE_ALPHAHASH' : '', + + parameters.sheen ? '#define USE_SHEEN' : '', + parameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '', + parameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '', + + parameters.transmission ? '#define USE_TRANSMISSION' : '', + parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '', + parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '', + + parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '', + parameters.vertexColors || parameters.instancingColor || parameters.batchingColor ? '#define USE_COLOR' : '', + parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '', + parameters.vertexUv1s ? '#define USE_UV1' : '', + parameters.vertexUv2s ? '#define USE_UV2' : '', + parameters.vertexUv3s ? '#define USE_UV3' : '', + + parameters.pointsUvs ? '#define USE_POINTS_UV' : '', + + parameters.gradientMap ? '#define USE_GRADIENTMAP' : '', + + parameters.flatShading ? '#define FLAT_SHADED' : '', + + parameters.doubleSided ? '#define DOUBLE_SIDED' : '', + parameters.flipSided ? '#define FLIP_SIDED' : '', + + parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', + parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', + + parameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '', + + parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '', + + parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '', + parameters.decodeVideoTextureEmissive ? '#define DECODE_VIDEO_TEXTURE_EMISSIVE' : '', + + parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', + parameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '', + + 'uniform mat4 viewMatrix;', + 'uniform vec3 cameraPosition;', + 'uniform bool isOrthographic;', + + ( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '', + ( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below + ( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '', + + parameters.dithering ? '#define DITHERING' : '', + parameters.opaque ? '#define OPAQUE' : '', + + ShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below + getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ), + getLuminanceFunction(), + + parameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '', + + '\n' + + ].filter( filterEmptyLine ).join( '\n' ); + + } + + vertexShader = resolveIncludes( vertexShader ); + vertexShader = replaceLightNums( vertexShader, parameters ); + vertexShader = replaceClippingPlaneNums( vertexShader, parameters ); + + fragmentShader = resolveIncludes( fragmentShader ); + fragmentShader = replaceLightNums( fragmentShader, parameters ); + fragmentShader = replaceClippingPlaneNums( fragmentShader, parameters ); + + vertexShader = unrollLoops( vertexShader ); + fragmentShader = unrollLoops( fragmentShader ); + + if ( parameters.isRawShaderMaterial !== true ) { + + // GLSL 3.0 conversion for built-in materials and ShaderMaterial + + versionString = '#version 300 es\n'; + + prefixVertex = [ + customVertexExtensions, + '#define attribute in', + '#define varying out', + '#define texture2D texture' + ].join( '\n' ) + '\n' + prefixVertex; + + prefixFragment = [ + '#define varying in', + ( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;', + ( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor', + '#define gl_FragDepthEXT gl_FragDepth', + '#define texture2D texture', + '#define textureCube texture', + '#define texture2DProj textureProj', + '#define texture2DLodEXT textureLod', + '#define texture2DProjLodEXT textureProjLod', + '#define textureCubeLodEXT textureLod', + '#define texture2DGradEXT textureGrad', + '#define texture2DProjGradEXT textureProjGrad', + '#define textureCubeGradEXT textureGrad' + ].join( '\n' ) + '\n' + prefixFragment; + + } + + const vertexGlsl = versionString + prefixVertex + vertexShader; + const fragmentGlsl = versionString + prefixFragment + fragmentShader; + + // console.log( '*VERTEX*', vertexGlsl ); + // console.log( '*FRAGMENT*', fragmentGlsl ); + + const glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl ); + const glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl ); + + gl.attachShader( program, glVertexShader ); + gl.attachShader( program, glFragmentShader ); + + // Force a particular attribute to index 0. + + if ( parameters.index0AttributeName !== undefined ) { + + gl.bindAttribLocation( program, 0, parameters.index0AttributeName ); + + } else if ( parameters.morphTargets === true ) { + + // programs with morphTargets displace position out of attribute 0 + gl.bindAttribLocation( program, 0, 'position' ); + + } + + gl.linkProgram( program ); + + function onFirstUse( self ) { + + // check for link errors + if ( renderer.debug.checkShaderErrors ) { + + const programLog = gl.getProgramInfoLog( program ).trim(); + const vertexLog = gl.getShaderInfoLog( glVertexShader ).trim(); + const fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim(); + + let runnable = true; + let haveDiagnostics = true; + + if ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) { + + runnable = false; + + if ( typeof renderer.debug.onShaderError === 'function' ) { + + renderer.debug.onShaderError( gl, program, glVertexShader, glFragmentShader ); + + } else { + + // default error reporting + + const vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' ); + const fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' ); + + console.error( + 'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' + + 'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\n\n' + + 'Material Name: ' + self.name + '\n' + + 'Material Type: ' + self.type + '\n\n' + + 'Program Info Log: ' + programLog + '\n' + + vertexErrors + '\n' + + fragmentErrors + ); + + } + + } else if ( programLog !== '' ) { + + console.warn( 'THREE.WebGLProgram: Program Info Log:', programLog ); + + } else if ( vertexLog === '' || fragmentLog === '' ) { + + haveDiagnostics = false; + + } + + if ( haveDiagnostics ) { + + self.diagnostics = { + + runnable: runnable, + + programLog: programLog, + + vertexShader: { + + log: vertexLog, + prefix: prefixVertex + + }, + + fragmentShader: { + + log: fragmentLog, + prefix: prefixFragment + + } + + }; + + } + + } + + // Clean up + + // Crashes in iOS9 and iOS10. #18402 + // gl.detachShader( program, glVertexShader ); + // gl.detachShader( program, glFragmentShader ); + + gl.deleteShader( glVertexShader ); + gl.deleteShader( glFragmentShader ); + + cachedUniforms = new WebGLUniforms( gl, program ); + cachedAttributes = fetchAttributeLocations( gl, program ); + + } + + // set up caching for uniform locations + + let cachedUniforms; + + this.getUniforms = function () { + + if ( cachedUniforms === undefined ) { + + // Populates cachedUniforms and cachedAttributes + onFirstUse( this ); + + } + + return cachedUniforms; + + }; + + // set up caching for attribute locations + + let cachedAttributes; + + this.getAttributes = function () { + + if ( cachedAttributes === undefined ) { + + // Populates cachedAttributes and cachedUniforms + onFirstUse( this ); + + } + + return cachedAttributes; + + }; + + // indicate when the program is ready to be used. if the KHR_parallel_shader_compile extension isn't supported, + // flag the program as ready immediately. It may cause a stall when it's first used. + + let programReady = ( parameters.rendererExtensionParallelShaderCompile === false ); + + this.isReady = function () { + + if ( programReady === false ) { + + programReady = gl.getProgramParameter( program, COMPLETION_STATUS_KHR ); + + } + + return programReady; + + }; + + // free resource + + this.destroy = function () { + + bindingStates.releaseStatesOfProgram( this ); + + gl.deleteProgram( program ); + this.program = undefined; + + }; + + // + + this.type = parameters.shaderType; + this.name = parameters.shaderName; + this.id = programIdCount ++; + this.cacheKey = cacheKey; + this.usedTimes = 1; + this.program = program; + this.vertexShader = glVertexShader; + this.fragmentShader = glFragmentShader; + + return this; + +} + +let _id = 0; + +class WebGLShaderCache { + + constructor() { + + this.shaderCache = new Map(); + this.materialCache = new Map(); + + } + + update( material ) { + + const vertexShader = material.vertexShader; + const fragmentShader = material.fragmentShader; + + const vertexShaderStage = this._getShaderStage( vertexShader ); + const fragmentShaderStage = this._getShaderStage( fragmentShader ); + + const materialShaders = this._getShaderCacheForMaterial( material ); + + if ( materialShaders.has( vertexShaderStage ) === false ) { + + materialShaders.add( vertexShaderStage ); + vertexShaderStage.usedTimes ++; + + } + + if ( materialShaders.has( fragmentShaderStage ) === false ) { + + materialShaders.add( fragmentShaderStage ); + fragmentShaderStage.usedTimes ++; + + } + + return this; + + } + + remove( material ) { + + const materialShaders = this.materialCache.get( material ); + + for ( const shaderStage of materialShaders ) { + + shaderStage.usedTimes --; + + if ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code ); + + } + + this.materialCache.delete( material ); + + return this; + + } + + getVertexShaderID( material ) { + + return this._getShaderStage( material.vertexShader ).id; + + } + + getFragmentShaderID( material ) { + + return this._getShaderStage( material.fragmentShader ).id; + + } + + dispose() { + + this.shaderCache.clear(); + this.materialCache.clear(); + + } + + _getShaderCacheForMaterial( material ) { + + const cache = this.materialCache; + let set = cache.get( material ); + + if ( set === undefined ) { + + set = new Set(); + cache.set( material, set ); + + } + + return set; + + } + + _getShaderStage( code ) { + + const cache = this.shaderCache; + let stage = cache.get( code ); + + if ( stage === undefined ) { + + stage = new WebGLShaderStage( code ); + cache.set( code, stage ); + + } + + return stage; + + } + +} + +class WebGLShaderStage { + + constructor( code ) { + + this.id = _id ++; + + this.code = code; + this.usedTimes = 0; + + } + +} + +function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) { + + const _programLayers = new Layers(); + const _customShaders = new WebGLShaderCache(); + const _activeChannels = new Set(); + const programs = []; + + const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer; + const SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures; + + let precision = capabilities.precision; + + const shaderIDs = { + MeshDepthMaterial: 'depth', + MeshDistanceMaterial: 'distanceRGBA', + MeshNormalMaterial: 'normal', + MeshBasicMaterial: 'basic', + MeshLambertMaterial: 'lambert', + MeshPhongMaterial: 'phong', + MeshToonMaterial: 'toon', + MeshStandardMaterial: 'physical', + MeshPhysicalMaterial: 'physical', + MeshMatcapMaterial: 'matcap', + LineBasicMaterial: 'basic', + LineDashedMaterial: 'dashed', + PointsMaterial: 'points', + ShadowMaterial: 'shadow', + SpriteMaterial: 'sprite' + }; + + function getChannel( value ) { + + _activeChannels.add( value ); + + if ( value === 0 ) return 'uv'; + + return `uv${ value }`; + + } + + function getParameters( material, lights, shadows, scene, object ) { + + const fog = scene.fog; + const geometry = object.geometry; + const environment = material.isMeshStandardMaterial ? scene.environment : null; + + const envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment ); + const envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null; + + const shaderID = shaderIDs[ material.type ]; + + // heuristics to create shader parameters according to lights in the scene + // (not to blow over maxLights budget) + + if ( material.precision !== null ) { + + precision = capabilities.getMaxPrecision( material.precision ); + + if ( precision !== material.precision ) { + + console.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' ); + + } + + } + + // + + const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color; + const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0; + + let morphTextureStride = 0; + + if ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1; + if ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2; + if ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3; + + // + + let vertexShader, fragmentShader; + let customVertexShaderID, customFragmentShaderID; + + if ( shaderID ) { + + const shader = ShaderLib[ shaderID ]; + + vertexShader = shader.vertexShader; + fragmentShader = shader.fragmentShader; + + } else { + + vertexShader = material.vertexShader; + fragmentShader = material.fragmentShader; + + _customShaders.update( material ); + + customVertexShaderID = _customShaders.getVertexShaderID( material ); + customFragmentShaderID = _customShaders.getFragmentShaderID( material ); + + } + + const currentRenderTarget = renderer.getRenderTarget(); + const reverseDepthBuffer = renderer.state.buffers.depth.getReversed(); + + const IS_INSTANCEDMESH = object.isInstancedMesh === true; + const IS_BATCHEDMESH = object.isBatchedMesh === true; + + const HAS_MAP = !! material.map; + const HAS_MATCAP = !! material.matcap; + const HAS_ENVMAP = !! envMap; + const HAS_AOMAP = !! material.aoMap; + const HAS_LIGHTMAP = !! material.lightMap; + const HAS_BUMPMAP = !! material.bumpMap; + const HAS_NORMALMAP = !! material.normalMap; + const HAS_DISPLACEMENTMAP = !! material.displacementMap; + const HAS_EMISSIVEMAP = !! material.emissiveMap; + + const HAS_METALNESSMAP = !! material.metalnessMap; + const HAS_ROUGHNESSMAP = !! material.roughnessMap; + + const HAS_ANISOTROPY = material.anisotropy > 0; + const HAS_CLEARCOAT = material.clearcoat > 0; + const HAS_DISPERSION = material.dispersion > 0; + const HAS_IRIDESCENCE = material.iridescence > 0; + const HAS_SHEEN = material.sheen > 0; + const HAS_TRANSMISSION = material.transmission > 0; + + const HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap; + + const HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap; + const HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap; + const HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap; + + const HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !! material.iridescenceMap; + const HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !! material.iridescenceThicknessMap; + + const HAS_SHEEN_COLORMAP = HAS_SHEEN && !! material.sheenColorMap; + const HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !! material.sheenRoughnessMap; + + const HAS_SPECULARMAP = !! material.specularMap; + const HAS_SPECULAR_COLORMAP = !! material.specularColorMap; + const HAS_SPECULAR_INTENSITYMAP = !! material.specularIntensityMap; + + const HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !! material.transmissionMap; + const HAS_THICKNESSMAP = HAS_TRANSMISSION && !! material.thicknessMap; + + const HAS_GRADIENTMAP = !! material.gradientMap; + + const HAS_ALPHAMAP = !! material.alphaMap; + + const HAS_ALPHATEST = material.alphaTest > 0; + + const HAS_ALPHAHASH = !! material.alphaHash; + + const HAS_EXTENSIONS = !! material.extensions; + + let toneMapping = NoToneMapping; + + if ( material.toneMapped ) { + + if ( currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true ) { + + toneMapping = renderer.toneMapping; + + } + + } + + const parameters = { + + shaderID: shaderID, + shaderType: material.type, + shaderName: material.name, + + vertexShader: vertexShader, + fragmentShader: fragmentShader, + defines: material.defines, + + customVertexShaderID: customVertexShaderID, + customFragmentShaderID: customFragmentShaderID, + + isRawShaderMaterial: material.isRawShaderMaterial === true, + glslVersion: material.glslVersion, + + precision: precision, + + batching: IS_BATCHEDMESH, + batchingColor: IS_BATCHEDMESH && object._colorsTexture !== null, + instancing: IS_INSTANCEDMESH, + instancingColor: IS_INSTANCEDMESH && object.instanceColor !== null, + instancingMorph: IS_INSTANCEDMESH && object.morphTexture !== null, + + supportsVertexTextures: SUPPORTS_VERTEX_TEXTURES, + outputColorSpace: ( currentRenderTarget === null ) ? renderer.outputColorSpace : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace ), + alphaToCoverage: !! material.alphaToCoverage, + + map: HAS_MAP, + matcap: HAS_MATCAP, + envMap: HAS_ENVMAP, + envMapMode: HAS_ENVMAP && envMap.mapping, + envMapCubeUVHeight: envMapCubeUVHeight, + aoMap: HAS_AOMAP, + lightMap: HAS_LIGHTMAP, + bumpMap: HAS_BUMPMAP, + normalMap: HAS_NORMALMAP, + displacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP, + emissiveMap: HAS_EMISSIVEMAP, + + normalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap, + normalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap, + + metalnessMap: HAS_METALNESSMAP, + roughnessMap: HAS_ROUGHNESSMAP, + + anisotropy: HAS_ANISOTROPY, + anisotropyMap: HAS_ANISOTROPYMAP, + + clearcoat: HAS_CLEARCOAT, + clearcoatMap: HAS_CLEARCOATMAP, + clearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP, + clearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP, + + dispersion: HAS_DISPERSION, + + iridescence: HAS_IRIDESCENCE, + iridescenceMap: HAS_IRIDESCENCEMAP, + iridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP, + + sheen: HAS_SHEEN, + sheenColorMap: HAS_SHEEN_COLORMAP, + sheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP, + + specularMap: HAS_SPECULARMAP, + specularColorMap: HAS_SPECULAR_COLORMAP, + specularIntensityMap: HAS_SPECULAR_INTENSITYMAP, + + transmission: HAS_TRANSMISSION, + transmissionMap: HAS_TRANSMISSIONMAP, + thicknessMap: HAS_THICKNESSMAP, + + gradientMap: HAS_GRADIENTMAP, + + opaque: material.transparent === false && material.blending === NormalBlending && material.alphaToCoverage === false, + + alphaMap: HAS_ALPHAMAP, + alphaTest: HAS_ALPHATEST, + alphaHash: HAS_ALPHAHASH, + + combine: material.combine, + + // + + mapUv: HAS_MAP && getChannel( material.map.channel ), + aoMapUv: HAS_AOMAP && getChannel( material.aoMap.channel ), + lightMapUv: HAS_LIGHTMAP && getChannel( material.lightMap.channel ), + bumpMapUv: HAS_BUMPMAP && getChannel( material.bumpMap.channel ), + normalMapUv: HAS_NORMALMAP && getChannel( material.normalMap.channel ), + displacementMapUv: HAS_DISPLACEMENTMAP && getChannel( material.displacementMap.channel ), + emissiveMapUv: HAS_EMISSIVEMAP && getChannel( material.emissiveMap.channel ), + + metalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ), + roughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ), + + anisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ), + + clearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ), + clearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ), + clearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ), + + iridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel( material.iridescenceMap.channel ), + iridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel( material.iridescenceThicknessMap.channel ), + + sheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel( material.sheenColorMap.channel ), + sheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel( material.sheenRoughnessMap.channel ), + + specularMapUv: HAS_SPECULARMAP && getChannel( material.specularMap.channel ), + specularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel( material.specularColorMap.channel ), + specularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel( material.specularIntensityMap.channel ), + + transmissionMapUv: HAS_TRANSMISSIONMAP && getChannel( material.transmissionMap.channel ), + thicknessMapUv: HAS_THICKNESSMAP && getChannel( material.thicknessMap.channel ), + + alphaMapUv: HAS_ALPHAMAP && getChannel( material.alphaMap.channel ), + + // + + vertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ), + vertexColors: material.vertexColors, + vertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4, + + pointsUvs: object.isPoints === true && !! geometry.attributes.uv && ( HAS_MAP || HAS_ALPHAMAP ), + + fog: !! fog, + useFog: material.fog === true, + fogExp2: ( !! fog && fog.isFogExp2 ), + + flatShading: material.flatShading === true, + + sizeAttenuation: material.sizeAttenuation === true, + logarithmicDepthBuffer: logarithmicDepthBuffer, + reverseDepthBuffer: reverseDepthBuffer, + + skinning: object.isSkinnedMesh === true, + + morphTargets: geometry.morphAttributes.position !== undefined, + morphNormals: geometry.morphAttributes.normal !== undefined, + morphColors: geometry.morphAttributes.color !== undefined, + morphTargetsCount: morphTargetsCount, + morphTextureStride: morphTextureStride, + + numDirLights: lights.directional.length, + numPointLights: lights.point.length, + numSpotLights: lights.spot.length, + numSpotLightMaps: lights.spotLightMap.length, + numRectAreaLights: lights.rectArea.length, + numHemiLights: lights.hemi.length, + + numDirLightShadows: lights.directionalShadowMap.length, + numPointLightShadows: lights.pointShadowMap.length, + numSpotLightShadows: lights.spotShadowMap.length, + numSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps, + + numLightProbes: lights.numLightProbes, + + numClippingPlanes: clipping.numPlanes, + numClipIntersection: clipping.numIntersection, + + dithering: material.dithering, + + shadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0, + shadowMapType: renderer.shadowMap.type, + + toneMapping: toneMapping, + + decodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.map.colorSpace ) === SRGBTransfer ), + decodeVideoTextureEmissive: HAS_EMISSIVEMAP && ( material.emissiveMap.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.emissiveMap.colorSpace ) === SRGBTransfer ), + + premultipliedAlpha: material.premultipliedAlpha, + + doubleSided: material.side === DoubleSide, + flipSided: material.side === BackSide, + + useDepthPacking: material.depthPacking >= 0, + depthPacking: material.depthPacking || 0, + + index0AttributeName: material.index0AttributeName, + + extensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions.has( 'WEBGL_clip_cull_distance' ), + extensionMultiDraw: ( HAS_EXTENSIONS && material.extensions.multiDraw === true || IS_BATCHEDMESH ) && extensions.has( 'WEBGL_multi_draw' ), + + rendererExtensionParallelShaderCompile: extensions.has( 'KHR_parallel_shader_compile' ), + + customProgramCacheKey: material.customProgramCacheKey() + + }; + + // the usage of getChannel() determines the active texture channels for this shader + + parameters.vertexUv1s = _activeChannels.has( 1 ); + parameters.vertexUv2s = _activeChannels.has( 2 ); + parameters.vertexUv3s = _activeChannels.has( 3 ); + + _activeChannels.clear(); + + return parameters; + + } + + function getProgramCacheKey( parameters ) { + + const array = []; + + if ( parameters.shaderID ) { + + array.push( parameters.shaderID ); + + } else { + + array.push( parameters.customVertexShaderID ); + array.push( parameters.customFragmentShaderID ); + + } + + if ( parameters.defines !== undefined ) { + + for ( const name in parameters.defines ) { + + array.push( name ); + array.push( parameters.defines[ name ] ); + + } + + } + + if ( parameters.isRawShaderMaterial === false ) { + + getProgramCacheKeyParameters( array, parameters ); + getProgramCacheKeyBooleans( array, parameters ); + array.push( renderer.outputColorSpace ); + + } + + array.push( parameters.customProgramCacheKey ); + + return array.join(); + + } + + function getProgramCacheKeyParameters( array, parameters ) { + + array.push( parameters.precision ); + array.push( parameters.outputColorSpace ); + array.push( parameters.envMapMode ); + array.push( parameters.envMapCubeUVHeight ); + array.push( parameters.mapUv ); + array.push( parameters.alphaMapUv ); + array.push( parameters.lightMapUv ); + array.push( parameters.aoMapUv ); + array.push( parameters.bumpMapUv ); + array.push( parameters.normalMapUv ); + array.push( parameters.displacementMapUv ); + array.push( parameters.emissiveMapUv ); + array.push( parameters.metalnessMapUv ); + array.push( parameters.roughnessMapUv ); + array.push( parameters.anisotropyMapUv ); + array.push( parameters.clearcoatMapUv ); + array.push( parameters.clearcoatNormalMapUv ); + array.push( parameters.clearcoatRoughnessMapUv ); + array.push( parameters.iridescenceMapUv ); + array.push( parameters.iridescenceThicknessMapUv ); + array.push( parameters.sheenColorMapUv ); + array.push( parameters.sheenRoughnessMapUv ); + array.push( parameters.specularMapUv ); + array.push( parameters.specularColorMapUv ); + array.push( parameters.specularIntensityMapUv ); + array.push( parameters.transmissionMapUv ); + array.push( parameters.thicknessMapUv ); + array.push( parameters.combine ); + array.push( parameters.fogExp2 ); + array.push( parameters.sizeAttenuation ); + array.push( parameters.morphTargetsCount ); + array.push( parameters.morphAttributeCount ); + array.push( parameters.numDirLights ); + array.push( parameters.numPointLights ); + array.push( parameters.numSpotLights ); + array.push( parameters.numSpotLightMaps ); + array.push( parameters.numHemiLights ); + array.push( parameters.numRectAreaLights ); + array.push( parameters.numDirLightShadows ); + array.push( parameters.numPointLightShadows ); + array.push( parameters.numSpotLightShadows ); + array.push( parameters.numSpotLightShadowsWithMaps ); + array.push( parameters.numLightProbes ); + array.push( parameters.shadowMapType ); + array.push( parameters.toneMapping ); + array.push( parameters.numClippingPlanes ); + array.push( parameters.numClipIntersection ); + array.push( parameters.depthPacking ); + + } + + function getProgramCacheKeyBooleans( array, parameters ) { + + _programLayers.disableAll(); + + if ( parameters.supportsVertexTextures ) + _programLayers.enable( 0 ); + if ( parameters.instancing ) + _programLayers.enable( 1 ); + if ( parameters.instancingColor ) + _programLayers.enable( 2 ); + if ( parameters.instancingMorph ) + _programLayers.enable( 3 ); + if ( parameters.matcap ) + _programLayers.enable( 4 ); + if ( parameters.envMap ) + _programLayers.enable( 5 ); + if ( parameters.normalMapObjectSpace ) + _programLayers.enable( 6 ); + if ( parameters.normalMapTangentSpace ) + _programLayers.enable( 7 ); + if ( parameters.clearcoat ) + _programLayers.enable( 8 ); + if ( parameters.iridescence ) + _programLayers.enable( 9 ); + if ( parameters.alphaTest ) + _programLayers.enable( 10 ); + if ( parameters.vertexColors ) + _programLayers.enable( 11 ); + if ( parameters.vertexAlphas ) + _programLayers.enable( 12 ); + if ( parameters.vertexUv1s ) + _programLayers.enable( 13 ); + if ( parameters.vertexUv2s ) + _programLayers.enable( 14 ); + if ( parameters.vertexUv3s ) + _programLayers.enable( 15 ); + if ( parameters.vertexTangents ) + _programLayers.enable( 16 ); + if ( parameters.anisotropy ) + _programLayers.enable( 17 ); + if ( parameters.alphaHash ) + _programLayers.enable( 18 ); + if ( parameters.batching ) + _programLayers.enable( 19 ); + if ( parameters.dispersion ) + _programLayers.enable( 20 ); + if ( parameters.batchingColor ) + _programLayers.enable( 21 ); + + array.push( _programLayers.mask ); + _programLayers.disableAll(); + + if ( parameters.fog ) + _programLayers.enable( 0 ); + if ( parameters.useFog ) + _programLayers.enable( 1 ); + if ( parameters.flatShading ) + _programLayers.enable( 2 ); + if ( parameters.logarithmicDepthBuffer ) + _programLayers.enable( 3 ); + if ( parameters.reverseDepthBuffer ) + _programLayers.enable( 4 ); + if ( parameters.skinning ) + _programLayers.enable( 5 ); + if ( parameters.morphTargets ) + _programLayers.enable( 6 ); + if ( parameters.morphNormals ) + _programLayers.enable( 7 ); + if ( parameters.morphColors ) + _programLayers.enable( 8 ); + if ( parameters.premultipliedAlpha ) + _programLayers.enable( 9 ); + if ( parameters.shadowMapEnabled ) + _programLayers.enable( 10 ); + if ( parameters.doubleSided ) + _programLayers.enable( 11 ); + if ( parameters.flipSided ) + _programLayers.enable( 12 ); + if ( parameters.useDepthPacking ) + _programLayers.enable( 13 ); + if ( parameters.dithering ) + _programLayers.enable( 14 ); + if ( parameters.transmission ) + _programLayers.enable( 15 ); + if ( parameters.sheen ) + _programLayers.enable( 16 ); + if ( parameters.opaque ) + _programLayers.enable( 17 ); + if ( parameters.pointsUvs ) + _programLayers.enable( 18 ); + if ( parameters.decodeVideoTexture ) + _programLayers.enable( 19 ); + if ( parameters.decodeVideoTextureEmissive ) + _programLayers.enable( 20 ); + if ( parameters.alphaToCoverage ) + _programLayers.enable( 21 ); + + array.push( _programLayers.mask ); + + } + + function getUniforms( material ) { + + const shaderID = shaderIDs[ material.type ]; + let uniforms; + + if ( shaderID ) { + + const shader = ShaderLib[ shaderID ]; + uniforms = UniformsUtils.clone( shader.uniforms ); + + } else { + + uniforms = material.uniforms; + + } + + return uniforms; + + } + + function acquireProgram( parameters, cacheKey ) { + + let program; + + // Check if code has been already compiled + for ( let p = 0, pl = programs.length; p < pl; p ++ ) { + + const preexistingProgram = programs[ p ]; + + if ( preexistingProgram.cacheKey === cacheKey ) { + + program = preexistingProgram; + ++ program.usedTimes; + + break; + + } + + } + + if ( program === undefined ) { + + program = new WebGLProgram( renderer, cacheKey, parameters, bindingStates ); + programs.push( program ); + + } + + return program; + + } + + function releaseProgram( program ) { + + if ( -- program.usedTimes === 0 ) { + + // Remove from unordered set + const i = programs.indexOf( program ); + programs[ i ] = programs[ programs.length - 1 ]; + programs.pop(); + + // Free WebGL resources + program.destroy(); + + } + + } + + function releaseShaderCache( material ) { + + _customShaders.remove( material ); + + } + + function dispose() { + + _customShaders.dispose(); + + } + + return { + getParameters: getParameters, + getProgramCacheKey: getProgramCacheKey, + getUniforms: getUniforms, + acquireProgram: acquireProgram, + releaseProgram: releaseProgram, + releaseShaderCache: releaseShaderCache, + // Exposed for resource monitoring & error feedback via renderer.info: + programs: programs, + dispose: dispose + }; + +} + +function WebGLProperties() { + + let properties = new WeakMap(); + + function has( object ) { + + return properties.has( object ); + + } + + function get( object ) { + + let map = properties.get( object ); + + if ( map === undefined ) { + + map = {}; + properties.set( object, map ); + + } + + return map; + + } + + function remove( object ) { + + properties.delete( object ); + + } + + function update( object, key, value ) { + + properties.get( object )[ key ] = value; + + } + + function dispose() { + + properties = new WeakMap(); + + } + + return { + has: has, + get: get, + remove: remove, + update: update, + dispose: dispose + }; + +} + +function painterSortStable( a, b ) { + + if ( a.groupOrder !== b.groupOrder ) { + + return a.groupOrder - b.groupOrder; + + } else if ( a.renderOrder !== b.renderOrder ) { + + return a.renderOrder - b.renderOrder; + + } else if ( a.material.id !== b.material.id ) { + + return a.material.id - b.material.id; + + } else if ( a.z !== b.z ) { + + return a.z - b.z; + + } else { + + return a.id - b.id; + + } + +} + +function reversePainterSortStable( a, b ) { + + if ( a.groupOrder !== b.groupOrder ) { + + return a.groupOrder - b.groupOrder; + + } else if ( a.renderOrder !== b.renderOrder ) { + + return a.renderOrder - b.renderOrder; + + } else if ( a.z !== b.z ) { + + return b.z - a.z; + + } else { + + return a.id - b.id; + + } + +} + + +function WebGLRenderList() { + + const renderItems = []; + let renderItemsIndex = 0; + + const opaque = []; + const transmissive = []; + const transparent = []; + + function init() { + + renderItemsIndex = 0; + + opaque.length = 0; + transmissive.length = 0; + transparent.length = 0; + + } + + function getNextRenderItem( object, geometry, material, groupOrder, z, group ) { + + let renderItem = renderItems[ renderItemsIndex ]; + + if ( renderItem === undefined ) { + + renderItem = { + id: object.id, + object: object, + geometry: geometry, + material: material, + groupOrder: groupOrder, + renderOrder: object.renderOrder, + z: z, + group: group + }; + + renderItems[ renderItemsIndex ] = renderItem; + + } else { + + renderItem.id = object.id; + renderItem.object = object; + renderItem.geometry = geometry; + renderItem.material = material; + renderItem.groupOrder = groupOrder; + renderItem.renderOrder = object.renderOrder; + renderItem.z = z; + renderItem.group = group; + + } + + renderItemsIndex ++; + + return renderItem; + + } + + function push( object, geometry, material, groupOrder, z, group ) { + + const renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group ); + + if ( material.transmission > 0.0 ) { + + transmissive.push( renderItem ); + + } else if ( material.transparent === true ) { + + transparent.push( renderItem ); + + } else { + + opaque.push( renderItem ); + + } + + } + + function unshift( object, geometry, material, groupOrder, z, group ) { + + const renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group ); + + if ( material.transmission > 0.0 ) { + + transmissive.unshift( renderItem ); + + } else if ( material.transparent === true ) { + + transparent.unshift( renderItem ); + + } else { + + opaque.unshift( renderItem ); + + } + + } + + function sort( customOpaqueSort, customTransparentSort ) { + + if ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable ); + if ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable ); + if ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable ); + + } + + function finish() { + + // Clear references from inactive renderItems in the list + + for ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) { + + const renderItem = renderItems[ i ]; + + if ( renderItem.id === null ) break; + + renderItem.id = null; + renderItem.object = null; + renderItem.geometry = null; + renderItem.material = null; + renderItem.group = null; + + } + + } + + return { + + opaque: opaque, + transmissive: transmissive, + transparent: transparent, + + init: init, + push: push, + unshift: unshift, + finish: finish, + + sort: sort + }; + +} + +function WebGLRenderLists() { + + let lists = new WeakMap(); + + function get( scene, renderCallDepth ) { + + const listArray = lists.get( scene ); + let list; + + if ( listArray === undefined ) { + + list = new WebGLRenderList(); + lists.set( scene, [ list ] ); + + } else { + + if ( renderCallDepth >= listArray.length ) { + + list = new WebGLRenderList(); + listArray.push( list ); + + } else { + + list = listArray[ renderCallDepth ]; + + } + + } + + return list; + + } + + function dispose() { + + lists = new WeakMap(); + + } + + return { + get: get, + dispose: dispose + }; + +} + +function UniformsCache() { + + const lights = {}; + + return { + + get: function ( light ) { + + if ( lights[ light.id ] !== undefined ) { + + return lights[ light.id ]; + + } + + let uniforms; + + switch ( light.type ) { + + case 'DirectionalLight': + uniforms = { + direction: new Vector3(), + color: new Color() + }; + break; + + case 'SpotLight': + uniforms = { + position: new Vector3(), + direction: new Vector3(), + color: new Color(), + distance: 0, + coneCos: 0, + penumbraCos: 0, + decay: 0 + }; + break; + + case 'PointLight': + uniforms = { + position: new Vector3(), + color: new Color(), + distance: 0, + decay: 0 + }; + break; + + case 'HemisphereLight': + uniforms = { + direction: new Vector3(), + skyColor: new Color(), + groundColor: new Color() + }; + break; + + case 'RectAreaLight': + uniforms = { + color: new Color(), + position: new Vector3(), + halfWidth: new Vector3(), + halfHeight: new Vector3() + }; + break; + + } + + lights[ light.id ] = uniforms; + + return uniforms; + + } + + }; + +} + +function ShadowUniformsCache() { + + const lights = {}; + + return { + + get: function ( light ) { + + if ( lights[ light.id ] !== undefined ) { + + return lights[ light.id ]; + + } + + let uniforms; + + switch ( light.type ) { + + case 'DirectionalLight': + uniforms = { + shadowIntensity: 1, + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + + case 'SpotLight': + uniforms = { + shadowIntensity: 1, + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + + case 'PointLight': + uniforms = { + shadowIntensity: 1, + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2(), + shadowCameraNear: 1, + shadowCameraFar: 1000 + }; + break; + + // TODO (abelnation): set RectAreaLight shadow uniforms + + } + + lights[ light.id ] = uniforms; + + return uniforms; + + } + + }; + +} + + + +let nextVersion = 0; + +function shadowCastingAndTexturingLightsFirst( lightA, lightB ) { + + return ( lightB.castShadow ? 2 : 0 ) - ( lightA.castShadow ? 2 : 0 ) + ( lightB.map ? 1 : 0 ) - ( lightA.map ? 1 : 0 ); + +} + +function WebGLLights( extensions ) { + + const cache = new UniformsCache(); + + const shadowCache = ShadowUniformsCache(); + + const state = { + + version: 0, + + hash: { + directionalLength: -1, + pointLength: -1, + spotLength: -1, + rectAreaLength: -1, + hemiLength: -1, + + numDirectionalShadows: -1, + numPointShadows: -1, + numSpotShadows: -1, + numSpotMaps: -1, + + numLightProbes: -1 + }, + + ambient: [ 0, 0, 0 ], + probe: [], + directional: [], + directionalShadow: [], + directionalShadowMap: [], + directionalShadowMatrix: [], + spot: [], + spotLightMap: [], + spotShadow: [], + spotShadowMap: [], + spotLightMatrix: [], + rectArea: [], + rectAreaLTC1: null, + rectAreaLTC2: null, + point: [], + pointShadow: [], + pointShadowMap: [], + pointShadowMatrix: [], + hemi: [], + numSpotLightShadowsWithMaps: 0, + numLightProbes: 0 + + }; + + for ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() ); + + const vector3 = new Vector3(); + const matrix4 = new Matrix4(); + const matrix42 = new Matrix4(); + + function setup( lights ) { + + let r = 0, g = 0, b = 0; + + for ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 ); + + let directionalLength = 0; + let pointLength = 0; + let spotLength = 0; + let rectAreaLength = 0; + let hemiLength = 0; + + let numDirectionalShadows = 0; + let numPointShadows = 0; + let numSpotShadows = 0; + let numSpotMaps = 0; + let numSpotShadowsWithMaps = 0; + + let numLightProbes = 0; + + // ordering : [shadow casting + map texturing, map texturing, shadow casting, none ] + lights.sort( shadowCastingAndTexturingLightsFirst ); + + for ( let i = 0, l = lights.length; i < l; i ++ ) { + + const light = lights[ i ]; + + const color = light.color; + const intensity = light.intensity; + const distance = light.distance; + + const shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null; + + if ( light.isAmbientLight ) { + + r += color.r * intensity; + g += color.g * intensity; + b += color.b * intensity; + + } else if ( light.isLightProbe ) { + + for ( let j = 0; j < 9; j ++ ) { + + state.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity ); + + } + + numLightProbes ++; + + } else if ( light.isDirectionalLight ) { + + const uniforms = cache.get( light ); + + uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); + + if ( light.castShadow ) { + + const shadow = light.shadow; + + const shadowUniforms = shadowCache.get( light ); + + shadowUniforms.shadowIntensity = shadow.intensity; + shadowUniforms.shadowBias = shadow.bias; + shadowUniforms.shadowNormalBias = shadow.normalBias; + shadowUniforms.shadowRadius = shadow.radius; + shadowUniforms.shadowMapSize = shadow.mapSize; + + state.directionalShadow[ directionalLength ] = shadowUniforms; + state.directionalShadowMap[ directionalLength ] = shadowMap; + state.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix; + + numDirectionalShadows ++; + + } + + state.directional[ directionalLength ] = uniforms; + + directionalLength ++; + + } else if ( light.isSpotLight ) { + + const uniforms = cache.get( light ); + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + + uniforms.color.copy( color ).multiplyScalar( intensity ); + uniforms.distance = distance; + + uniforms.coneCos = Math.cos( light.angle ); + uniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) ); + uniforms.decay = light.decay; + + state.spot[ spotLength ] = uniforms; + + const shadow = light.shadow; + + if ( light.map ) { + + state.spotLightMap[ numSpotMaps ] = light.map; + numSpotMaps ++; + + // make sure the lightMatrix is up to date + // TODO : do it if required only + shadow.updateMatrices( light ); + + if ( light.castShadow ) numSpotShadowsWithMaps ++; + + } + + state.spotLightMatrix[ spotLength ] = shadow.matrix; + + if ( light.castShadow ) { + + const shadowUniforms = shadowCache.get( light ); + + shadowUniforms.shadowIntensity = shadow.intensity; + shadowUniforms.shadowBias = shadow.bias; + shadowUniforms.shadowNormalBias = shadow.normalBias; + shadowUniforms.shadowRadius = shadow.radius; + shadowUniforms.shadowMapSize = shadow.mapSize; + + state.spotShadow[ spotLength ] = shadowUniforms; + state.spotShadowMap[ spotLength ] = shadowMap; + + numSpotShadows ++; + + } + + spotLength ++; + + } else if ( light.isRectAreaLight ) { + + const uniforms = cache.get( light ); + + uniforms.color.copy( color ).multiplyScalar( intensity ); + + uniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 ); + uniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 ); + + state.rectArea[ rectAreaLength ] = uniforms; + + rectAreaLength ++; + + } else if ( light.isPointLight ) { + + const uniforms = cache.get( light ); + + uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); + uniforms.distance = light.distance; + uniforms.decay = light.decay; + + if ( light.castShadow ) { + + const shadow = light.shadow; + + const shadowUniforms = shadowCache.get( light ); + + shadowUniforms.shadowIntensity = shadow.intensity; + shadowUniforms.shadowBias = shadow.bias; + shadowUniforms.shadowNormalBias = shadow.normalBias; + shadowUniforms.shadowRadius = shadow.radius; + shadowUniforms.shadowMapSize = shadow.mapSize; + shadowUniforms.shadowCameraNear = shadow.camera.near; + shadowUniforms.shadowCameraFar = shadow.camera.far; + + state.pointShadow[ pointLength ] = shadowUniforms; + state.pointShadowMap[ pointLength ] = shadowMap; + state.pointShadowMatrix[ pointLength ] = light.shadow.matrix; + + numPointShadows ++; + + } + + state.point[ pointLength ] = uniforms; + + pointLength ++; + + } else if ( light.isHemisphereLight ) { + + const uniforms = cache.get( light ); + + uniforms.skyColor.copy( light.color ).multiplyScalar( intensity ); + uniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity ); + + state.hemi[ hemiLength ] = uniforms; + + hemiLength ++; + + } + + } + + if ( rectAreaLength > 0 ) { + + if ( extensions.has( 'OES_texture_float_linear' ) === true ) { + + state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1; + state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2; + + } else { + + state.rectAreaLTC1 = UniformsLib.LTC_HALF_1; + state.rectAreaLTC2 = UniformsLib.LTC_HALF_2; + + } + + } + + state.ambient[ 0 ] = r; + state.ambient[ 1 ] = g; + state.ambient[ 2 ] = b; + + const hash = state.hash; + + if ( hash.directionalLength !== directionalLength || + hash.pointLength !== pointLength || + hash.spotLength !== spotLength || + hash.rectAreaLength !== rectAreaLength || + hash.hemiLength !== hemiLength || + hash.numDirectionalShadows !== numDirectionalShadows || + hash.numPointShadows !== numPointShadows || + hash.numSpotShadows !== numSpotShadows || + hash.numSpotMaps !== numSpotMaps || + hash.numLightProbes !== numLightProbes ) { + + state.directional.length = directionalLength; + state.spot.length = spotLength; + state.rectArea.length = rectAreaLength; + state.point.length = pointLength; + state.hemi.length = hemiLength; + + state.directionalShadow.length = numDirectionalShadows; + state.directionalShadowMap.length = numDirectionalShadows; + state.pointShadow.length = numPointShadows; + state.pointShadowMap.length = numPointShadows; + state.spotShadow.length = numSpotShadows; + state.spotShadowMap.length = numSpotShadows; + state.directionalShadowMatrix.length = numDirectionalShadows; + state.pointShadowMatrix.length = numPointShadows; + state.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps; + state.spotLightMap.length = numSpotMaps; + state.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps; + state.numLightProbes = numLightProbes; + + hash.directionalLength = directionalLength; + hash.pointLength = pointLength; + hash.spotLength = spotLength; + hash.rectAreaLength = rectAreaLength; + hash.hemiLength = hemiLength; + + hash.numDirectionalShadows = numDirectionalShadows; + hash.numPointShadows = numPointShadows; + hash.numSpotShadows = numSpotShadows; + hash.numSpotMaps = numSpotMaps; + + hash.numLightProbes = numLightProbes; + + state.version = nextVersion ++; + + } + + } + + function setupView( lights, camera ) { + + let directionalLength = 0; + let pointLength = 0; + let spotLength = 0; + let rectAreaLength = 0; + let hemiLength = 0; + + const viewMatrix = camera.matrixWorldInverse; + + for ( let i = 0, l = lights.length; i < l; i ++ ) { + + const light = lights[ i ]; + + if ( light.isDirectionalLight ) { + + const uniforms = state.directional[ directionalLength ]; + + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + vector3.setFromMatrixPosition( light.target.matrixWorld ); + uniforms.direction.sub( vector3 ); + uniforms.direction.transformDirection( viewMatrix ); + + directionalLength ++; + + } else if ( light.isSpotLight ) { + + const uniforms = state.spot[ spotLength ]; + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + vector3.setFromMatrixPosition( light.target.matrixWorld ); + uniforms.direction.sub( vector3 ); + uniforms.direction.transformDirection( viewMatrix ); + + spotLength ++; + + } else if ( light.isRectAreaLight ) { + + const uniforms = state.rectArea[ rectAreaLength ]; + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + // extract local rotation of light to derive width/height half vectors + matrix42.identity(); + matrix4.copy( light.matrixWorld ); + matrix4.premultiply( viewMatrix ); + matrix42.extractRotation( matrix4 ); + + uniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 ); + uniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 ); + + uniforms.halfWidth.applyMatrix4( matrix42 ); + uniforms.halfHeight.applyMatrix4( matrix42 ); + + rectAreaLength ++; + + } else if ( light.isPointLight ) { + + const uniforms = state.point[ pointLength ]; + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + pointLength ++; + + } else if ( light.isHemisphereLight ) { + + const uniforms = state.hemi[ hemiLength ]; + + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + uniforms.direction.transformDirection( viewMatrix ); + + hemiLength ++; + + } + + } + + } + + return { + setup: setup, + setupView: setupView, + state: state + }; + +} + +function WebGLRenderState( extensions ) { + + const lights = new WebGLLights( extensions ); + + const lightsArray = []; + const shadowsArray = []; + + function init( camera ) { + + state.camera = camera; + + lightsArray.length = 0; + shadowsArray.length = 0; + + } + + function pushLight( light ) { + + lightsArray.push( light ); + + } + + function pushShadow( shadowLight ) { + + shadowsArray.push( shadowLight ); + + } + + function setupLights() { + + lights.setup( lightsArray ); + + } + + function setupLightsView( camera ) { + + lights.setupView( lightsArray, camera ); + + } + + const state = { + lightsArray: lightsArray, + shadowsArray: shadowsArray, + + camera: null, + + lights: lights, + + transmissionRenderTarget: {} + }; + + return { + init: init, + state: state, + setupLights: setupLights, + setupLightsView: setupLightsView, + + pushLight: pushLight, + pushShadow: pushShadow + }; + +} + +function WebGLRenderStates( extensions ) { + + let renderStates = new WeakMap(); + + function get( scene, renderCallDepth = 0 ) { + + const renderStateArray = renderStates.get( scene ); + let renderState; + + if ( renderStateArray === undefined ) { + + renderState = new WebGLRenderState( extensions ); + renderStates.set( scene, [ renderState ] ); + + } else { + + if ( renderCallDepth >= renderStateArray.length ) { + + renderState = new WebGLRenderState( extensions ); + renderStateArray.push( renderState ); + + } else { + + renderState = renderStateArray[ renderCallDepth ]; + + } + + } + + return renderState; + + } + + function dispose() { + + renderStates = new WeakMap(); + + } + + return { + get: get, + dispose: dispose + }; + +} + +const vertex = "void main() {\n\tgl_Position = vec4( position, 1.0 );\n}"; + +const fragment = "uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"; + +function WebGLShadowMap( renderer, objects, capabilities ) { + + let _frustum = new Frustum(); + + const _shadowMapSize = new Vector2(), + _viewportSize = new Vector2(), + + _viewport = new Vector4(), + + _depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ), + _distanceMaterial = new MeshDistanceMaterial(), + + _materialCache = {}, + + _maxTextureSize = capabilities.maxTextureSize; + + const shadowSide = { [ FrontSide ]: BackSide, [ BackSide ]: FrontSide, [ DoubleSide ]: DoubleSide }; + + const shadowMaterialVertical = new ShaderMaterial( { + defines: { + VSM_SAMPLES: 8 + }, + uniforms: { + shadow_pass: { value: null }, + resolution: { value: new Vector2() }, + radius: { value: 4.0 } + }, + + vertexShader: vertex, + fragmentShader: fragment + + } ); + + const shadowMaterialHorizontal = shadowMaterialVertical.clone(); + shadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1; + + const fullScreenTri = new BufferGeometry(); + fullScreenTri.setAttribute( + 'position', + new BufferAttribute( + new Float32Array( [ -1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5 ] ), + 3 + ) + ); + + const fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical ); + + const scope = this; + + this.enabled = false; + + this.autoUpdate = true; + this.needsUpdate = false; + + this.type = PCFShadowMap; + let _previousType = this.type; + + this.render = function ( lights, scene, camera ) { + + if ( scope.enabled === false ) return; + if ( scope.autoUpdate === false && scope.needsUpdate === false ) return; + + if ( lights.length === 0 ) return; + + const currentRenderTarget = renderer.getRenderTarget(); + const activeCubeFace = renderer.getActiveCubeFace(); + const activeMipmapLevel = renderer.getActiveMipmapLevel(); + + const _state = renderer.state; + + // Set GL state for depth map. + _state.setBlending( NoBlending ); + _state.buffers.color.setClear( 1, 1, 1, 1 ); + _state.buffers.depth.setTest( true ); + _state.setScissorTest( false ); + + // check for shadow map type changes + + const toVSM = ( _previousType !== VSMShadowMap && this.type === VSMShadowMap ); + const fromVSM = ( _previousType === VSMShadowMap && this.type !== VSMShadowMap ); + + // render depth map + + for ( let i = 0, il = lights.length; i < il; i ++ ) { + + const light = lights[ i ]; + const shadow = light.shadow; + + if ( shadow === undefined ) { + + console.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' ); + continue; + + } + + if ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue; + + _shadowMapSize.copy( shadow.mapSize ); + + const shadowFrameExtents = shadow.getFrameExtents(); + + _shadowMapSize.multiply( shadowFrameExtents ); + + _viewportSize.copy( shadow.mapSize ); + + if ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) { + + if ( _shadowMapSize.x > _maxTextureSize ) { + + _viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x ); + _shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x; + shadow.mapSize.x = _viewportSize.x; + + } + + if ( _shadowMapSize.y > _maxTextureSize ) { + + _viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y ); + _shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y; + shadow.mapSize.y = _viewportSize.y; + + } + + } + + if ( shadow.map === null || toVSM === true || fromVSM === true ) { + + const pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {}; + + if ( shadow.map !== null ) { + + shadow.map.dispose(); + + } + + shadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars ); + shadow.map.texture.name = light.name + '.shadowMap'; + + shadow.camera.updateProjectionMatrix(); + + } + + renderer.setRenderTarget( shadow.map ); + renderer.clear(); + + const viewportCount = shadow.getViewportCount(); + + for ( let vp = 0; vp < viewportCount; vp ++ ) { + + const viewport = shadow.getViewport( vp ); + + _viewport.set( + _viewportSize.x * viewport.x, + _viewportSize.y * viewport.y, + _viewportSize.x * viewport.z, + _viewportSize.y * viewport.w + ); + + _state.viewport( _viewport ); + + shadow.updateMatrices( light, vp ); + + _frustum = shadow.getFrustum(); + + renderObject( scene, camera, shadow.camera, light, this.type ); + + } + + // do blur pass for VSM + + if ( shadow.isPointLightShadow !== true && this.type === VSMShadowMap ) { + + VSMPass( shadow, camera ); + + } + + shadow.needsUpdate = false; + + } + + _previousType = this.type; + + scope.needsUpdate = false; + + renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel ); + + }; + + function VSMPass( shadow, camera ) { + + const geometry = objects.update( fullScreenMesh ); + + if ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) { + + shadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples; + shadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples; + + shadowMaterialVertical.needsUpdate = true; + shadowMaterialHorizontal.needsUpdate = true; + + } + + if ( shadow.mapPass === null ) { + + shadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y ); + + } + + // vertical pass + + shadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture; + shadowMaterialVertical.uniforms.resolution.value = shadow.mapSize; + shadowMaterialVertical.uniforms.radius.value = shadow.radius; + renderer.setRenderTarget( shadow.mapPass ); + renderer.clear(); + renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null ); + + // horizontal pass + + shadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture; + shadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize; + shadowMaterialHorizontal.uniforms.radius.value = shadow.radius; + renderer.setRenderTarget( shadow.map ); + renderer.clear(); + renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null ); + + } + + function getDepthMaterial( object, material, light, type ) { + + let result = null; + + const customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial; + + if ( customMaterial !== undefined ) { + + result = customMaterial; + + } else { + + result = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial; + + if ( ( renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) || + ( material.displacementMap && material.displacementScale !== 0 ) || + ( material.alphaMap && material.alphaTest > 0 ) || + ( material.map && material.alphaTest > 0 ) ) { + + // in this case we need a unique material instance reflecting the + // appropriate state + + const keyA = result.uuid, keyB = material.uuid; + + let materialsForVariant = _materialCache[ keyA ]; + + if ( materialsForVariant === undefined ) { + + materialsForVariant = {}; + _materialCache[ keyA ] = materialsForVariant; + + } + + let cachedMaterial = materialsForVariant[ keyB ]; + + if ( cachedMaterial === undefined ) { + + cachedMaterial = result.clone(); + materialsForVariant[ keyB ] = cachedMaterial; + material.addEventListener( 'dispose', onMaterialDispose ); + + } + + result = cachedMaterial; + + } + + } + + result.visible = material.visible; + result.wireframe = material.wireframe; + + if ( type === VSMShadowMap ) { + + result.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side; + + } else { + + result.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ]; + + } + + result.alphaMap = material.alphaMap; + result.alphaTest = material.alphaTest; + result.map = material.map; + + result.clipShadows = material.clipShadows; + result.clippingPlanes = material.clippingPlanes; + result.clipIntersection = material.clipIntersection; + + result.displacementMap = material.displacementMap; + result.displacementScale = material.displacementScale; + result.displacementBias = material.displacementBias; + + result.wireframeLinewidth = material.wireframeLinewidth; + result.linewidth = material.linewidth; + + if ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) { + + const materialProperties = renderer.properties.get( result ); + materialProperties.light = light; + + } + + return result; + + } + + function renderObject( object, camera, shadowCamera, light, type ) { + + if ( object.visible === false ) return; + + const visible = object.layers.test( camera.layers ); + + if ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) { + + if ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) { + + object.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld ); + + const geometry = objects.update( object ); + const material = object.material; + + if ( Array.isArray( material ) ) { + + const groups = geometry.groups; + + for ( let k = 0, kl = groups.length; k < kl; k ++ ) { + + const group = groups[ k ]; + const groupMaterial = material[ group.materialIndex ]; + + if ( groupMaterial && groupMaterial.visible ) { + + const depthMaterial = getDepthMaterial( object, groupMaterial, light, type ); + + object.onBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, group ); + + renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group ); + + object.onAfterShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, group ); + + } + + } + + } else if ( material.visible ) { + + const depthMaterial = getDepthMaterial( object, material, light, type ); + + object.onBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, null ); + + renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null ); + + object.onAfterShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, null ); + + } + + } + + } + + const children = object.children; + + for ( let i = 0, l = children.length; i < l; i ++ ) { + + renderObject( children[ i ], camera, shadowCamera, light, type ); + + } + + } + + function onMaterialDispose( event ) { + + const material = event.target; + + material.removeEventListener( 'dispose', onMaterialDispose ); + + // make sure to remove the unique distance/depth materials used for shadow map rendering + + for ( const id in _materialCache ) { + + const cache = _materialCache[ id ]; + + const uuid = event.target.uuid; + + if ( uuid in cache ) { + + const shadowMaterial = cache[ uuid ]; + shadowMaterial.dispose(); + delete cache[ uuid ]; + + } + + } + + } + +} + +const reversedFuncs = { + [ NeverDepth ]: AlwaysDepth, + [ LessDepth ]: GreaterDepth, + [ EqualDepth ]: NotEqualDepth, + [ LessEqualDepth ]: GreaterEqualDepth, + + [ AlwaysDepth ]: NeverDepth, + [ GreaterDepth ]: LessDepth, + [ NotEqualDepth ]: EqualDepth, + [ GreaterEqualDepth ]: LessEqualDepth, +}; + +function WebGLState( gl, extensions ) { + + function ColorBuffer() { + + let locked = false; + + const color = new Vector4(); + let currentColorMask = null; + const currentColorClear = new Vector4( 0, 0, 0, 0 ); + + return { + + setMask: function ( colorMask ) { + + if ( currentColorMask !== colorMask && ! locked ) { + + gl.colorMask( colorMask, colorMask, colorMask, colorMask ); + currentColorMask = colorMask; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( r, g, b, a, premultipliedAlpha ) { + + if ( premultipliedAlpha === true ) { + + r *= a; g *= a; b *= a; + + } + + color.set( r, g, b, a ); + + if ( currentColorClear.equals( color ) === false ) { + + gl.clearColor( r, g, b, a ); + currentColorClear.copy( color ); + + } + + }, + + reset: function () { + + locked = false; + + currentColorMask = null; + currentColorClear.set( -1, 0, 0, 0 ); // set to invalid state + + } + + }; + + } + + function DepthBuffer() { + + let locked = false; + + let currentReversed = false; + let currentDepthMask = null; + let currentDepthFunc = null; + let currentDepthClear = null; + + return { + + setReversed: function ( reversed ) { + + if ( currentReversed !== reversed ) { + + const ext = extensions.get( 'EXT_clip_control' ); + + if ( reversed ) { + + ext.clipControlEXT( ext.LOWER_LEFT_EXT, ext.ZERO_TO_ONE_EXT ); + + } else { + + ext.clipControlEXT( ext.LOWER_LEFT_EXT, ext.NEGATIVE_ONE_TO_ONE_EXT ); + + } + + currentReversed = reversed; + + const oldDepth = currentDepthClear; + currentDepthClear = null; + this.setClear( oldDepth ); + + } + + }, + + getReversed: function () { + + return currentReversed; + + }, + + setTest: function ( depthTest ) { + + if ( depthTest ) { + + enable( gl.DEPTH_TEST ); + + } else { + + disable( gl.DEPTH_TEST ); + + } + + }, + + setMask: function ( depthMask ) { + + if ( currentDepthMask !== depthMask && ! locked ) { + + gl.depthMask( depthMask ); + currentDepthMask = depthMask; + + } + + }, + + setFunc: function ( depthFunc ) { + + if ( currentReversed ) depthFunc = reversedFuncs[ depthFunc ]; + + if ( currentDepthFunc !== depthFunc ) { + + switch ( depthFunc ) { + + case NeverDepth: + + gl.depthFunc( gl.NEVER ); + break; + + case AlwaysDepth: + + gl.depthFunc( gl.ALWAYS ); + break; + + case LessDepth: + + gl.depthFunc( gl.LESS ); + break; + + case LessEqualDepth: + + gl.depthFunc( gl.LEQUAL ); + break; + + case EqualDepth: + + gl.depthFunc( gl.EQUAL ); + break; + + case GreaterEqualDepth: + + gl.depthFunc( gl.GEQUAL ); + break; + + case GreaterDepth: + + gl.depthFunc( gl.GREATER ); + break; + + case NotEqualDepth: + + gl.depthFunc( gl.NOTEQUAL ); + break; + + default: + + gl.depthFunc( gl.LEQUAL ); + + } + + currentDepthFunc = depthFunc; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( depth ) { + + if ( currentDepthClear !== depth ) { + + if ( currentReversed ) { + + depth = 1 - depth; + + } + + gl.clearDepth( depth ); + currentDepthClear = depth; + + } + + }, + + reset: function () { + + locked = false; + + currentDepthMask = null; + currentDepthFunc = null; + currentDepthClear = null; + currentReversed = false; + + } + + }; + + } + + function StencilBuffer() { + + let locked = false; + + let currentStencilMask = null; + let currentStencilFunc = null; + let currentStencilRef = null; + let currentStencilFuncMask = null; + let currentStencilFail = null; + let currentStencilZFail = null; + let currentStencilZPass = null; + let currentStencilClear = null; + + return { + + setTest: function ( stencilTest ) { + + if ( ! locked ) { + + if ( stencilTest ) { + + enable( gl.STENCIL_TEST ); + + } else { + + disable( gl.STENCIL_TEST ); + + } + + } + + }, + + setMask: function ( stencilMask ) { + + if ( currentStencilMask !== stencilMask && ! locked ) { + + gl.stencilMask( stencilMask ); + currentStencilMask = stencilMask; + + } + + }, + + setFunc: function ( stencilFunc, stencilRef, stencilMask ) { + + if ( currentStencilFunc !== stencilFunc || + currentStencilRef !== stencilRef || + currentStencilFuncMask !== stencilMask ) { + + gl.stencilFunc( stencilFunc, stencilRef, stencilMask ); + + currentStencilFunc = stencilFunc; + currentStencilRef = stencilRef; + currentStencilFuncMask = stencilMask; + + } + + }, + + setOp: function ( stencilFail, stencilZFail, stencilZPass ) { + + if ( currentStencilFail !== stencilFail || + currentStencilZFail !== stencilZFail || + currentStencilZPass !== stencilZPass ) { + + gl.stencilOp( stencilFail, stencilZFail, stencilZPass ); + + currentStencilFail = stencilFail; + currentStencilZFail = stencilZFail; + currentStencilZPass = stencilZPass; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( stencil ) { + + if ( currentStencilClear !== stencil ) { + + gl.clearStencil( stencil ); + currentStencilClear = stencil; + + } + + }, + + reset: function () { + + locked = false; + + currentStencilMask = null; + currentStencilFunc = null; + currentStencilRef = null; + currentStencilFuncMask = null; + currentStencilFail = null; + currentStencilZFail = null; + currentStencilZPass = null; + currentStencilClear = null; + + } + + }; + + } + + // + + const colorBuffer = new ColorBuffer(); + const depthBuffer = new DepthBuffer(); + const stencilBuffer = new StencilBuffer(); + + const uboBindings = new WeakMap(); + const uboProgramMap = new WeakMap(); + + let enabledCapabilities = {}; + + let currentBoundFramebuffers = {}; + let currentDrawbuffers = new WeakMap(); + let defaultDrawbuffers = []; + + let currentProgram = null; + + let currentBlendingEnabled = false; + let currentBlending = null; + let currentBlendEquation = null; + let currentBlendSrc = null; + let currentBlendDst = null; + let currentBlendEquationAlpha = null; + let currentBlendSrcAlpha = null; + let currentBlendDstAlpha = null; + let currentBlendColor = new Color( 0, 0, 0 ); + let currentBlendAlpha = 0; + let currentPremultipledAlpha = false; + + let currentFlipSided = null; + let currentCullFace = null; + + let currentLineWidth = null; + + let currentPolygonOffsetFactor = null; + let currentPolygonOffsetUnits = null; + + const maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS ); + + let lineWidthAvailable = false; + let version = 0; + const glVersion = gl.getParameter( gl.VERSION ); + + if ( glVersion.indexOf( 'WebGL' ) !== -1 ) { + + version = parseFloat( /^WebGL (\d)/.exec( glVersion )[ 1 ] ); + lineWidthAvailable = ( version >= 1.0 ); + + } else if ( glVersion.indexOf( 'OpenGL ES' ) !== -1 ) { + + version = parseFloat( /^OpenGL ES (\d)/.exec( glVersion )[ 1 ] ); + lineWidthAvailable = ( version >= 2.0 ); + + } + + let currentTextureSlot = null; + let currentBoundTextures = {}; + + const scissorParam = gl.getParameter( gl.SCISSOR_BOX ); + const viewportParam = gl.getParameter( gl.VIEWPORT ); + + const currentScissor = new Vector4().fromArray( scissorParam ); + const currentViewport = new Vector4().fromArray( viewportParam ); + + function createTexture( type, target, count, dimensions ) { + + const data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4. + const texture = gl.createTexture(); + + gl.bindTexture( type, texture ); + gl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST ); + gl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST ); + + for ( let i = 0; i < count; i ++ ) { + + if ( type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY ) { + + gl.texImage3D( target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data ); + + } else { + + gl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data ); + + } + + } + + return texture; + + } + + const emptyTextures = {}; + emptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 ); + emptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 ); + emptyTextures[ gl.TEXTURE_2D_ARRAY ] = createTexture( gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1 ); + emptyTextures[ gl.TEXTURE_3D ] = createTexture( gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1 ); + + // init + + colorBuffer.setClear( 0, 0, 0, 1 ); + depthBuffer.setClear( 1 ); + stencilBuffer.setClear( 0 ); + + enable( gl.DEPTH_TEST ); + depthBuffer.setFunc( LessEqualDepth ); + + setFlipSided( false ); + setCullFace( CullFaceBack ); + enable( gl.CULL_FACE ); + + setBlending( NoBlending ); + + // + + function enable( id ) { + + if ( enabledCapabilities[ id ] !== true ) { + + gl.enable( id ); + enabledCapabilities[ id ] = true; + + } + + } + + function disable( id ) { + + if ( enabledCapabilities[ id ] !== false ) { + + gl.disable( id ); + enabledCapabilities[ id ] = false; + + } + + } + + function bindFramebuffer( target, framebuffer ) { + + if ( currentBoundFramebuffers[ target ] !== framebuffer ) { + + gl.bindFramebuffer( target, framebuffer ); + + currentBoundFramebuffers[ target ] = framebuffer; + + // gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER + + if ( target === gl.DRAW_FRAMEBUFFER ) { + + currentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer; + + } + + if ( target === gl.FRAMEBUFFER ) { + + currentBoundFramebuffers[ gl.DRAW_FRAMEBUFFER ] = framebuffer; + + } + + return true; + + } + + return false; + + } + + function drawBuffers( renderTarget, framebuffer ) { + + let drawBuffers = defaultDrawbuffers; + + let needsUpdate = false; + + if ( renderTarget ) { + + drawBuffers = currentDrawbuffers.get( framebuffer ); + + if ( drawBuffers === undefined ) { + + drawBuffers = []; + currentDrawbuffers.set( framebuffer, drawBuffers ); + + } + + const textures = renderTarget.textures; + + if ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) { + + for ( let i = 0, il = textures.length; i < il; i ++ ) { + + drawBuffers[ i ] = gl.COLOR_ATTACHMENT0 + i; + + } + + drawBuffers.length = textures.length; + + needsUpdate = true; + + } + + } else { + + if ( drawBuffers[ 0 ] !== gl.BACK ) { + + drawBuffers[ 0 ] = gl.BACK; + + needsUpdate = true; + + } + + } + + if ( needsUpdate ) { + + gl.drawBuffers( drawBuffers ); + + } + + } + + function useProgram( program ) { + + if ( currentProgram !== program ) { + + gl.useProgram( program ); + + currentProgram = program; + + return true; + + } + + return false; + + } + + const equationToGL = { + [ AddEquation ]: gl.FUNC_ADD, + [ SubtractEquation ]: gl.FUNC_SUBTRACT, + [ ReverseSubtractEquation ]: gl.FUNC_REVERSE_SUBTRACT + }; + + equationToGL[ MinEquation ] = gl.MIN; + equationToGL[ MaxEquation ] = gl.MAX; + + const factorToGL = { + [ ZeroFactor ]: gl.ZERO, + [ OneFactor ]: gl.ONE, + [ SrcColorFactor ]: gl.SRC_COLOR, + [ SrcAlphaFactor ]: gl.SRC_ALPHA, + [ SrcAlphaSaturateFactor ]: gl.SRC_ALPHA_SATURATE, + [ DstColorFactor ]: gl.DST_COLOR, + [ DstAlphaFactor ]: gl.DST_ALPHA, + [ OneMinusSrcColorFactor ]: gl.ONE_MINUS_SRC_COLOR, + [ OneMinusSrcAlphaFactor ]: gl.ONE_MINUS_SRC_ALPHA, + [ OneMinusDstColorFactor ]: gl.ONE_MINUS_DST_COLOR, + [ OneMinusDstAlphaFactor ]: gl.ONE_MINUS_DST_ALPHA, + [ ConstantColorFactor ]: gl.CONSTANT_COLOR, + [ OneMinusConstantColorFactor ]: gl.ONE_MINUS_CONSTANT_COLOR, + [ ConstantAlphaFactor ]: gl.CONSTANT_ALPHA, + [ OneMinusConstantAlphaFactor ]: gl.ONE_MINUS_CONSTANT_ALPHA + }; + + function setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, blendColor, blendAlpha, premultipliedAlpha ) { + + if ( blending === NoBlending ) { + + if ( currentBlendingEnabled === true ) { + + disable( gl.BLEND ); + currentBlendingEnabled = false; + + } + + return; + + } + + if ( currentBlendingEnabled === false ) { + + enable( gl.BLEND ); + currentBlendingEnabled = true; + + } + + if ( blending !== CustomBlending ) { + + if ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) { + + if ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) { + + gl.blendEquation( gl.FUNC_ADD ); + + currentBlendEquation = AddEquation; + currentBlendEquationAlpha = AddEquation; + + } + + if ( premultipliedAlpha ) { + + switch ( blending ) { + + case NormalBlending: + gl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA ); + break; + + case AdditiveBlending: + gl.blendFunc( gl.ONE, gl.ONE ); + break; + + case SubtractiveBlending: + gl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE ); + break; + + case MultiplyBlending: + gl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA ); + break; + + default: + console.error( 'THREE.WebGLState: Invalid blending: ', blending ); + break; + + } + + } else { + + switch ( blending ) { + + case NormalBlending: + gl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA ); + break; + + case AdditiveBlending: + gl.blendFunc( gl.SRC_ALPHA, gl.ONE ); + break; + + case SubtractiveBlending: + gl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE ); + break; + + case MultiplyBlending: + gl.blendFunc( gl.ZERO, gl.SRC_COLOR ); + break; + + default: + console.error( 'THREE.WebGLState: Invalid blending: ', blending ); + break; + + } + + } + + currentBlendSrc = null; + currentBlendDst = null; + currentBlendSrcAlpha = null; + currentBlendDstAlpha = null; + currentBlendColor.set( 0, 0, 0 ); + currentBlendAlpha = 0; + + currentBlending = blending; + currentPremultipledAlpha = premultipliedAlpha; + + } + + return; + + } + + // custom blending + + blendEquationAlpha = blendEquationAlpha || blendEquation; + blendSrcAlpha = blendSrcAlpha || blendSrc; + blendDstAlpha = blendDstAlpha || blendDst; + + if ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) { + + gl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] ); + + currentBlendEquation = blendEquation; + currentBlendEquationAlpha = blendEquationAlpha; + + } + + if ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) { + + gl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] ); + + currentBlendSrc = blendSrc; + currentBlendDst = blendDst; + currentBlendSrcAlpha = blendSrcAlpha; + currentBlendDstAlpha = blendDstAlpha; + + } + + if ( blendColor.equals( currentBlendColor ) === false || blendAlpha !== currentBlendAlpha ) { + + gl.blendColor( blendColor.r, blendColor.g, blendColor.b, blendAlpha ); + + currentBlendColor.copy( blendColor ); + currentBlendAlpha = blendAlpha; + + } + + currentBlending = blending; + currentPremultipledAlpha = false; + + } + + function setMaterial( material, frontFaceCW ) { + + material.side === DoubleSide + ? disable( gl.CULL_FACE ) + : enable( gl.CULL_FACE ); + + let flipSided = ( material.side === BackSide ); + if ( frontFaceCW ) flipSided = ! flipSided; + + setFlipSided( flipSided ); + + ( material.blending === NormalBlending && material.transparent === false ) + ? setBlending( NoBlending ) + : setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.blendColor, material.blendAlpha, material.premultipliedAlpha ); + + depthBuffer.setFunc( material.depthFunc ); + depthBuffer.setTest( material.depthTest ); + depthBuffer.setMask( material.depthWrite ); + colorBuffer.setMask( material.colorWrite ); + + const stencilWrite = material.stencilWrite; + stencilBuffer.setTest( stencilWrite ); + if ( stencilWrite ) { + + stencilBuffer.setMask( material.stencilWriteMask ); + stencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask ); + stencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass ); + + } + + setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits ); + + material.alphaToCoverage === true + ? enable( gl.SAMPLE_ALPHA_TO_COVERAGE ) + : disable( gl.SAMPLE_ALPHA_TO_COVERAGE ); + + } + + // + + function setFlipSided( flipSided ) { + + if ( currentFlipSided !== flipSided ) { + + if ( flipSided ) { + + gl.frontFace( gl.CW ); + + } else { + + gl.frontFace( gl.CCW ); + + } + + currentFlipSided = flipSided; + + } + + } + + function setCullFace( cullFace ) { + + if ( cullFace !== CullFaceNone ) { + + enable( gl.CULL_FACE ); + + if ( cullFace !== currentCullFace ) { + + if ( cullFace === CullFaceBack ) { + + gl.cullFace( gl.BACK ); + + } else if ( cullFace === CullFaceFront ) { + + gl.cullFace( gl.FRONT ); + + } else { + + gl.cullFace( gl.FRONT_AND_BACK ); + + } + + } + + } else { + + disable( gl.CULL_FACE ); + + } + + currentCullFace = cullFace; + + } + + function setLineWidth( width ) { + + if ( width !== currentLineWidth ) { + + if ( lineWidthAvailable ) gl.lineWidth( width ); + + currentLineWidth = width; + + } + + } + + function setPolygonOffset( polygonOffset, factor, units ) { + + if ( polygonOffset ) { + + enable( gl.POLYGON_OFFSET_FILL ); + + if ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) { + + gl.polygonOffset( factor, units ); + + currentPolygonOffsetFactor = factor; + currentPolygonOffsetUnits = units; + + } + + } else { + + disable( gl.POLYGON_OFFSET_FILL ); + + } + + } + + function setScissorTest( scissorTest ) { + + if ( scissorTest ) { + + enable( gl.SCISSOR_TEST ); + + } else { + + disable( gl.SCISSOR_TEST ); + + } + + } + + // texture + + function activeTexture( webglSlot ) { + + if ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1; + + if ( currentTextureSlot !== webglSlot ) { + + gl.activeTexture( webglSlot ); + currentTextureSlot = webglSlot; + + } + + } + + function bindTexture( webglType, webglTexture, webglSlot ) { + + if ( webglSlot === undefined ) { + + if ( currentTextureSlot === null ) { + + webglSlot = gl.TEXTURE0 + maxTextures - 1; + + } else { + + webglSlot = currentTextureSlot; + + } + + } + + let boundTexture = currentBoundTextures[ webglSlot ]; + + if ( boundTexture === undefined ) { + + boundTexture = { type: undefined, texture: undefined }; + currentBoundTextures[ webglSlot ] = boundTexture; + + } + + if ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) { + + if ( currentTextureSlot !== webglSlot ) { + + gl.activeTexture( webglSlot ); + currentTextureSlot = webglSlot; + + } + + gl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] ); + + boundTexture.type = webglType; + boundTexture.texture = webglTexture; + + } + + } + + function unbindTexture() { + + const boundTexture = currentBoundTextures[ currentTextureSlot ]; + + if ( boundTexture !== undefined && boundTexture.type !== undefined ) { + + gl.bindTexture( boundTexture.type, null ); + + boundTexture.type = undefined; + boundTexture.texture = undefined; + + } + + } + + function compressedTexImage2D() { + + try { + + gl.compressedTexImage2D( ...arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function compressedTexImage3D() { + + try { + + gl.compressedTexImage3D( ...arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function texSubImage2D() { + + try { + + gl.texSubImage2D( ...arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function texSubImage3D() { + + try { + + gl.texSubImage3D( ...arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function compressedTexSubImage2D() { + + try { + + gl.compressedTexSubImage2D( ...arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function compressedTexSubImage3D() { + + try { + + gl.compressedTexSubImage3D( ...arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function texStorage2D() { + + try { + + gl.texStorage2D( ...arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function texStorage3D() { + + try { + + gl.texStorage3D( ...arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function texImage2D() { + + try { + + gl.texImage2D( ...arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function texImage3D() { + + try { + + gl.texImage3D( ...arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + // + + function scissor( scissor ) { + + if ( currentScissor.equals( scissor ) === false ) { + + gl.scissor( scissor.x, scissor.y, scissor.z, scissor.w ); + currentScissor.copy( scissor ); + + } + + } + + function viewport( viewport ) { + + if ( currentViewport.equals( viewport ) === false ) { + + gl.viewport( viewport.x, viewport.y, viewport.z, viewport.w ); + currentViewport.copy( viewport ); + + } + + } + + function updateUBOMapping( uniformsGroup, program ) { + + let mapping = uboProgramMap.get( program ); + + if ( mapping === undefined ) { + + mapping = new WeakMap(); + + uboProgramMap.set( program, mapping ); + + } + + let blockIndex = mapping.get( uniformsGroup ); + + if ( blockIndex === undefined ) { + + blockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name ); + + mapping.set( uniformsGroup, blockIndex ); + + } + + } + + function uniformBlockBinding( uniformsGroup, program ) { + + const mapping = uboProgramMap.get( program ); + const blockIndex = mapping.get( uniformsGroup ); + + if ( uboBindings.get( program ) !== blockIndex ) { + + // bind shader specific block index to global block point + gl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex ); + + uboBindings.set( program, blockIndex ); + + } + + } + + // + + function reset() { + + // reset state + + gl.disable( gl.BLEND ); + gl.disable( gl.CULL_FACE ); + gl.disable( gl.DEPTH_TEST ); + gl.disable( gl.POLYGON_OFFSET_FILL ); + gl.disable( gl.SCISSOR_TEST ); + gl.disable( gl.STENCIL_TEST ); + gl.disable( gl.SAMPLE_ALPHA_TO_COVERAGE ); + + gl.blendEquation( gl.FUNC_ADD ); + gl.blendFunc( gl.ONE, gl.ZERO ); + gl.blendFuncSeparate( gl.ONE, gl.ZERO, gl.ONE, gl.ZERO ); + gl.blendColor( 0, 0, 0, 0 ); + + gl.colorMask( true, true, true, true ); + gl.clearColor( 0, 0, 0, 0 ); + + gl.depthMask( true ); + gl.depthFunc( gl.LESS ); + + depthBuffer.setReversed( false ); + + gl.clearDepth( 1 ); + + gl.stencilMask( 0xffffffff ); + gl.stencilFunc( gl.ALWAYS, 0, 0xffffffff ); + gl.stencilOp( gl.KEEP, gl.KEEP, gl.KEEP ); + gl.clearStencil( 0 ); + + gl.cullFace( gl.BACK ); + gl.frontFace( gl.CCW ); + + gl.polygonOffset( 0, 0 ); + + gl.activeTexture( gl.TEXTURE0 ); + + gl.bindFramebuffer( gl.FRAMEBUFFER, null ); + gl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null ); + gl.bindFramebuffer( gl.READ_FRAMEBUFFER, null ); + + gl.useProgram( null ); + + gl.lineWidth( 1 ); + + gl.scissor( 0, 0, gl.canvas.width, gl.canvas.height ); + gl.viewport( 0, 0, gl.canvas.width, gl.canvas.height ); + + // reset internals + + enabledCapabilities = {}; + + currentTextureSlot = null; + currentBoundTextures = {}; + + currentBoundFramebuffers = {}; + currentDrawbuffers = new WeakMap(); + defaultDrawbuffers = []; + + currentProgram = null; + + currentBlendingEnabled = false; + currentBlending = null; + currentBlendEquation = null; + currentBlendSrc = null; + currentBlendDst = null; + currentBlendEquationAlpha = null; + currentBlendSrcAlpha = null; + currentBlendDstAlpha = null; + currentBlendColor = new Color( 0, 0, 0 ); + currentBlendAlpha = 0; + currentPremultipledAlpha = false; + + currentFlipSided = null; + currentCullFace = null; + + currentLineWidth = null; + + currentPolygonOffsetFactor = null; + currentPolygonOffsetUnits = null; + + currentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height ); + currentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height ); + + colorBuffer.reset(); + depthBuffer.reset(); + stencilBuffer.reset(); + + } + + return { + + buffers: { + color: colorBuffer, + depth: depthBuffer, + stencil: stencilBuffer + }, + + enable: enable, + disable: disable, + + bindFramebuffer: bindFramebuffer, + drawBuffers: drawBuffers, + + useProgram: useProgram, + + setBlending: setBlending, + setMaterial: setMaterial, + + setFlipSided: setFlipSided, + setCullFace: setCullFace, + + setLineWidth: setLineWidth, + setPolygonOffset: setPolygonOffset, + + setScissorTest: setScissorTest, + + activeTexture: activeTexture, + bindTexture: bindTexture, + unbindTexture: unbindTexture, + compressedTexImage2D: compressedTexImage2D, + compressedTexImage3D: compressedTexImage3D, + texImage2D: texImage2D, + texImage3D: texImage3D, + + updateUBOMapping: updateUBOMapping, + uniformBlockBinding: uniformBlockBinding, + + texStorage2D: texStorage2D, + texStorage3D: texStorage3D, + texSubImage2D: texSubImage2D, + texSubImage3D: texSubImage3D, + compressedTexSubImage2D: compressedTexSubImage2D, + compressedTexSubImage3D: compressedTexSubImage3D, + + scissor: scissor, + viewport: viewport, + + reset: reset + + }; + +} + +function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) { + + const multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null; + const supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : /OculusBrowser/g.test( navigator.userAgent ); + + const _imageDimensions = new Vector2(); + const _videoTextures = new WeakMap(); + let _canvas; + + const _sources = new WeakMap(); // maps WebglTexture objects to instances of Source + + // cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas, + // also OffscreenCanvas.getContext("webgl"), but not OffscreenCanvas.getContext("2d")! + // Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d). + + let useOffscreenCanvas = false; + + try { + + useOffscreenCanvas = typeof OffscreenCanvas !== 'undefined' + // eslint-disable-next-line compat/compat + && ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null; + + } catch ( err ) { + + // Ignore any errors + + } + + function createCanvas( width, height ) { + + // Use OffscreenCanvas when available. Specially needed in web workers + + return useOffscreenCanvas ? + // eslint-disable-next-line compat/compat + new OffscreenCanvas( width, height ) : createElementNS( 'canvas' ); + + } + + function resizeImage( image, needsNewCanvas, maxSize ) { + + let scale = 1; + + const dimensions = getDimensions( image ); + + // handle case if texture exceeds max size + + if ( dimensions.width > maxSize || dimensions.height > maxSize ) { + + scale = maxSize / Math.max( dimensions.width, dimensions.height ); + + } + + // only perform resize if necessary + + if ( scale < 1 ) { + + // only perform resize for certain image types + + if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) || + ( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) || + ( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) || + ( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) ) { + + const width = Math.floor( scale * dimensions.width ); + const height = Math.floor( scale * dimensions.height ); + + if ( _canvas === undefined ) _canvas = createCanvas( width, height ); + + // cube textures can't reuse the same canvas + + const canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas; + + canvas.width = width; + canvas.height = height; + + const context = canvas.getContext( '2d' ); + context.drawImage( image, 0, 0, width, height ); + + console.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + dimensions.width + 'x' + dimensions.height + ') to (' + width + 'x' + height + ').' ); + + return canvas; + + } else { + + if ( 'data' in image ) { + + console.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + dimensions.width + 'x' + dimensions.height + ').' ); + + } + + return image; + + } + + } + + return image; + + } + + function textureNeedsGenerateMipmaps( texture ) { + + return texture.generateMipmaps; + + } + + function generateMipmap( target ) { + + _gl.generateMipmap( target ); + + } + + function getTargetType( texture ) { + + if ( texture.isWebGLCubeRenderTarget ) return _gl.TEXTURE_CUBE_MAP; + if ( texture.isWebGL3DRenderTarget ) return _gl.TEXTURE_3D; + if ( texture.isWebGLArrayRenderTarget || texture.isCompressedArrayTexture ) return _gl.TEXTURE_2D_ARRAY; + return _gl.TEXTURE_2D; + + } + + function getInternalFormat( internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false ) { + + if ( internalFormatName !== null ) { + + if ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ]; + + console.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \'' + internalFormatName + '\'' ); + + } + + let internalFormat = glFormat; + + if ( glFormat === _gl.RED ) { + + if ( glType === _gl.FLOAT ) internalFormat = _gl.R32F; + if ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.R16F; + if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8; + + } + + if ( glFormat === _gl.RED_INTEGER ) { + + if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8UI; + if ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.R16UI; + if ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.R32UI; + if ( glType === _gl.BYTE ) internalFormat = _gl.R8I; + if ( glType === _gl.SHORT ) internalFormat = _gl.R16I; + if ( glType === _gl.INT ) internalFormat = _gl.R32I; + + } + + if ( glFormat === _gl.RG ) { + + if ( glType === _gl.FLOAT ) internalFormat = _gl.RG32F; + if ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RG16F; + if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8; + + } + + if ( glFormat === _gl.RG_INTEGER ) { + + if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8UI; + if ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RG16UI; + if ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RG32UI; + if ( glType === _gl.BYTE ) internalFormat = _gl.RG8I; + if ( glType === _gl.SHORT ) internalFormat = _gl.RG16I; + if ( glType === _gl.INT ) internalFormat = _gl.RG32I; + + } + + if ( glFormat === _gl.RGB_INTEGER ) { + + if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RGB8UI; + if ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RGB16UI; + if ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RGB32UI; + if ( glType === _gl.BYTE ) internalFormat = _gl.RGB8I; + if ( glType === _gl.SHORT ) internalFormat = _gl.RGB16I; + if ( glType === _gl.INT ) internalFormat = _gl.RGB32I; + + } + + if ( glFormat === _gl.RGBA_INTEGER ) { + + if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RGBA8UI; + if ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RGBA16UI; + if ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RGBA32UI; + if ( glType === _gl.BYTE ) internalFormat = _gl.RGBA8I; + if ( glType === _gl.SHORT ) internalFormat = _gl.RGBA16I; + if ( glType === _gl.INT ) internalFormat = _gl.RGBA32I; + + } + + if ( glFormat === _gl.RGB ) { + + if ( glType === _gl.UNSIGNED_INT_5_9_9_9_REV ) internalFormat = _gl.RGB9_E5; + + } + + if ( glFormat === _gl.RGBA ) { + + const transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer( colorSpace ); + + if ( glType === _gl.FLOAT ) internalFormat = _gl.RGBA32F; + if ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGBA16F; + if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = ( transfer === SRGBTransfer ) ? _gl.SRGB8_ALPHA8 : _gl.RGBA8; + if ( glType === _gl.UNSIGNED_SHORT_4_4_4_4 ) internalFormat = _gl.RGBA4; + if ( glType === _gl.UNSIGNED_SHORT_5_5_5_1 ) internalFormat = _gl.RGB5_A1; + + } + + if ( internalFormat === _gl.R16F || internalFormat === _gl.R32F || + internalFormat === _gl.RG16F || internalFormat === _gl.RG32F || + internalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F ) { + + extensions.get( 'EXT_color_buffer_float' ); + + } + + return internalFormat; + + } + + function getInternalDepthFormat( useStencil, depthType ) { + + let glInternalFormat; + if ( useStencil ) { + + if ( depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type ) { + + glInternalFormat = _gl.DEPTH24_STENCIL8; + + } else if ( depthType === FloatType ) { + + glInternalFormat = _gl.DEPTH32F_STENCIL8; + + } else if ( depthType === UnsignedShortType ) { + + glInternalFormat = _gl.DEPTH24_STENCIL8; + console.warn( 'DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.' ); + + } + + } else { + + if ( depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type ) { + + glInternalFormat = _gl.DEPTH_COMPONENT24; + + } else if ( depthType === FloatType ) { + + glInternalFormat = _gl.DEPTH_COMPONENT32F; + + } else if ( depthType === UnsignedShortType ) { + + glInternalFormat = _gl.DEPTH_COMPONENT16; + + } + + } + + return glInternalFormat; + + } + + function getMipLevels( texture, image ) { + + if ( textureNeedsGenerateMipmaps( texture ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) { + + return Math.log2( Math.max( image.width, image.height ) ) + 1; + + } else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) { + + // user-defined mipmaps + + return texture.mipmaps.length; + + } else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) { + + return image.mipmaps.length; + + } else { + + // texture without mipmaps (only base level) + + return 1; + + } + + } + + // + + function onTextureDispose( event ) { + + const texture = event.target; + + texture.removeEventListener( 'dispose', onTextureDispose ); + + deallocateTexture( texture ); + + if ( texture.isVideoTexture ) { + + _videoTextures.delete( texture ); + + } + + } + + function onRenderTargetDispose( event ) { + + const renderTarget = event.target; + + renderTarget.removeEventListener( 'dispose', onRenderTargetDispose ); + + deallocateRenderTarget( renderTarget ); + + } + + // + + function deallocateTexture( texture ) { + + const textureProperties = properties.get( texture ); + + if ( textureProperties.__webglInit === undefined ) return; + + // check if it's necessary to remove the WebGLTexture object + + const source = texture.source; + const webglTextures = _sources.get( source ); + + if ( webglTextures ) { + + const webglTexture = webglTextures[ textureProperties.__cacheKey ]; + webglTexture.usedTimes --; + + // the WebGLTexture object is not used anymore, remove it + + if ( webglTexture.usedTimes === 0 ) { + + deleteTexture( texture ); + + } + + // remove the weak map entry if no WebGLTexture uses the source anymore + + if ( Object.keys( webglTextures ).length === 0 ) { + + _sources.delete( source ); + + } + + } + + properties.remove( texture ); + + } + + function deleteTexture( texture ) { + + const textureProperties = properties.get( texture ); + _gl.deleteTexture( textureProperties.__webglTexture ); + + const source = texture.source; + const webglTextures = _sources.get( source ); + delete webglTextures[ textureProperties.__cacheKey ]; + + info.memory.textures --; + + } + + function deallocateRenderTarget( renderTarget ) { + + const renderTargetProperties = properties.get( renderTarget ); + + if ( renderTarget.depthTexture ) { + + renderTarget.depthTexture.dispose(); + + properties.remove( renderTarget.depthTexture ); + + } + + if ( renderTarget.isWebGLCubeRenderTarget ) { + + for ( let i = 0; i < 6; i ++ ) { + + if ( Array.isArray( renderTargetProperties.__webglFramebuffer[ i ] ) ) { + + for ( let level = 0; level < renderTargetProperties.__webglFramebuffer[ i ].length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ][ level ] ); + + } else { + + _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] ); + + } + + if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] ); + + } + + } else { + + if ( Array.isArray( renderTargetProperties.__webglFramebuffer ) ) { + + for ( let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ level ] ); + + } else { + + _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer ); + + } + + if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer ); + if ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer ); + + if ( renderTargetProperties.__webglColorRenderbuffer ) { + + for ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) { + + if ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] ); + + } + + } + + if ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer ); + + } + + const textures = renderTarget.textures; + + for ( let i = 0, il = textures.length; i < il; i ++ ) { + + const attachmentProperties = properties.get( textures[ i ] ); + + if ( attachmentProperties.__webglTexture ) { + + _gl.deleteTexture( attachmentProperties.__webglTexture ); + + info.memory.textures --; + + } + + properties.remove( textures[ i ] ); + + } + + properties.remove( renderTarget ); + + } + + // + + let textureUnits = 0; + + function resetTextureUnits() { + + textureUnits = 0; + + } + + function allocateTextureUnit() { + + const textureUnit = textureUnits; + + if ( textureUnit >= capabilities.maxTextures ) { + + console.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures ); + + } + + textureUnits += 1; + + return textureUnit; + + } + + function getTextureCacheKey( texture ) { + + const array = []; + + array.push( texture.wrapS ); + array.push( texture.wrapT ); + array.push( texture.wrapR || 0 ); + array.push( texture.magFilter ); + array.push( texture.minFilter ); + array.push( texture.anisotropy ); + array.push( texture.internalFormat ); + array.push( texture.format ); + array.push( texture.type ); + array.push( texture.generateMipmaps ); + array.push( texture.premultiplyAlpha ); + array.push( texture.flipY ); + array.push( texture.unpackAlignment ); + array.push( texture.colorSpace ); + + return array.join(); + + } + + // + + function setTexture2D( texture, slot ) { + + const textureProperties = properties.get( texture ); + + if ( texture.isVideoTexture ) updateVideoTexture( texture ); + + if ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) { + + const image = texture.image; + + if ( image === null ) { + + console.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' ); + + } else if ( image.complete === false ) { + + console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' ); + + } else { + + uploadTexture( textureProperties, texture, slot ); + return; + + } + + } + + state.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot ); + + } + + function setTexture2DArray( texture, slot ) { + + const textureProperties = properties.get( texture ); + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + uploadTexture( textureProperties, texture, slot ); + return; + + } + + state.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot ); + + } + + function setTexture3D( texture, slot ) { + + const textureProperties = properties.get( texture ); + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + uploadTexture( textureProperties, texture, slot ); + return; + + } + + state.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot ); + + } + + function setTextureCube( texture, slot ) { + + const textureProperties = properties.get( texture ); + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + uploadCubeTexture( textureProperties, texture, slot ); + return; + + } + + state.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot ); + + } + + const wrappingToGL = { + [ RepeatWrapping ]: _gl.REPEAT, + [ ClampToEdgeWrapping ]: _gl.CLAMP_TO_EDGE, + [ MirroredRepeatWrapping ]: _gl.MIRRORED_REPEAT + }; + + const filterToGL = { + [ NearestFilter ]: _gl.NEAREST, + [ NearestMipmapNearestFilter ]: _gl.NEAREST_MIPMAP_NEAREST, + [ NearestMipmapLinearFilter ]: _gl.NEAREST_MIPMAP_LINEAR, + + [ LinearFilter ]: _gl.LINEAR, + [ LinearMipmapNearestFilter ]: _gl.LINEAR_MIPMAP_NEAREST, + [ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR + }; + + const compareToGL = { + [ NeverCompare ]: _gl.NEVER, + [ AlwaysCompare ]: _gl.ALWAYS, + [ LessCompare ]: _gl.LESS, + [ LessEqualCompare ]: _gl.LEQUAL, + [ EqualCompare ]: _gl.EQUAL, + [ GreaterEqualCompare ]: _gl.GEQUAL, + [ GreaterCompare ]: _gl.GREATER, + [ NotEqualCompare ]: _gl.NOTEQUAL + }; + + function setTextureParameters( textureType, texture ) { + + if ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false && + ( texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter || + texture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter ) ) { + + console.warn( 'THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' ); + + } + + _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] ); + _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ] ); + + if ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) { + + _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ] ); + + } + + _gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ] ); + _gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ] ); + + if ( texture.compareFunction ) { + + _gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE ); + _gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] ); + + } + + if ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) { + + if ( texture.magFilter === NearestFilter ) return; + if ( texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter ) return; + if ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension + + if ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) { + + const extension = extensions.get( 'EXT_texture_filter_anisotropic' ); + _gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) ); + properties.get( texture ).__currentAnisotropy = texture.anisotropy; + + } + + } + + } + + function initTexture( textureProperties, texture ) { + + let forceUpload = false; + + if ( textureProperties.__webglInit === undefined ) { + + textureProperties.__webglInit = true; + + texture.addEventListener( 'dispose', onTextureDispose ); + + } + + // create Source <-> WebGLTextures mapping if necessary + + const source = texture.source; + let webglTextures = _sources.get( source ); + + if ( webglTextures === undefined ) { + + webglTextures = {}; + _sources.set( source, webglTextures ); + + } + + // check if there is already a WebGLTexture object for the given texture parameters + + const textureCacheKey = getTextureCacheKey( texture ); + + if ( textureCacheKey !== textureProperties.__cacheKey ) { + + // if not, create a new instance of WebGLTexture + + if ( webglTextures[ textureCacheKey ] === undefined ) { + + // create new entry + + webglTextures[ textureCacheKey ] = { + texture: _gl.createTexture(), + usedTimes: 0 + }; + + info.memory.textures ++; + + // when a new instance of WebGLTexture was created, a texture upload is required + // even if the image contents are identical + + forceUpload = true; + + } + + webglTextures[ textureCacheKey ].usedTimes ++; + + // every time the texture cache key changes, it's necessary to check if an instance of + // WebGLTexture can be deleted in order to avoid a memory leak. + + const webglTexture = webglTextures[ textureProperties.__cacheKey ]; + + if ( webglTexture !== undefined ) { + + webglTextures[ textureProperties.__cacheKey ].usedTimes --; + + if ( webglTexture.usedTimes === 0 ) { + + deleteTexture( texture ); + + } + + } + + // store references to cache key and WebGLTexture object + + textureProperties.__cacheKey = textureCacheKey; + textureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture; + + } + + return forceUpload; + + } + + function uploadTexture( textureProperties, texture, slot ) { + + let textureType = _gl.TEXTURE_2D; + + if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY; + if ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D; + + const forceUpload = initTexture( textureProperties, texture ); + const source = texture.source; + + state.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot ); + + const sourceProperties = properties.get( source ); + + if ( source.version !== sourceProperties.__version || forceUpload === true ) { + + state.activeTexture( _gl.TEXTURE0 + slot ); + + const workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace ); + const texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace ); + const unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL; + + _gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY ); + _gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha ); + _gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment ); + _gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion ); + + let image = resizeImage( texture.image, false, capabilities.maxTextureSize ); + image = verifyColorSpace( texture, image ); + + const glFormat = utils.convert( texture.format, texture.colorSpace ); + + const glType = utils.convert( texture.type ); + let glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture ); + + setTextureParameters( textureType, texture ); + + let mipmap; + const mipmaps = texture.mipmaps; + + const useTexStorage = ( texture.isVideoTexture !== true ); + const allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true ); + const dataReady = source.dataReady; + const levels = getMipLevels( texture, image ); + + if ( texture.isDepthTexture ) { + + glInternalFormat = getInternalDepthFormat( texture.format === DepthStencilFormat, texture.type ); + + // + + if ( allocateMemory ) { + + if ( useTexStorage ) { + + state.texStorage2D( _gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height ); + + } else { + + state.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null ); + + } + + } + + } else if ( texture.isDataTexture ) { + + // use manually created mipmaps if available + // if there are no manual mipmaps + // set 0 level mipmap and then use GL to generate other mipmap levels + + if ( mipmaps.length > 0 ) { + + if ( useTexStorage && allocateMemory ) { + + state.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height ); + + } + + for ( let i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + + if ( useTexStorage ) { + + if ( dataReady ) { + + state.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data ); + + } + + } else { + + state.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + } + + texture.generateMipmaps = false; + + } else { + + if ( useTexStorage ) { + + if ( allocateMemory ) { + + state.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height ); + + } + + if ( dataReady ) { + + state.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data ); + + } + + } else { + + state.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data ); + + } + + } + + } else if ( texture.isCompressedTexture ) { + + if ( texture.isCompressedArrayTexture ) { + + if ( useTexStorage && allocateMemory ) { + + state.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height, image.depth ); + + } + + for ( let i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + + if ( texture.format !== RGBAFormat ) { + + if ( glFormat !== null ) { + + if ( useTexStorage ) { + + if ( dataReady ) { + + if ( texture.layerUpdates.size > 0 ) { + + const layerByteLength = getByteLength( mipmap.width, mipmap.height, texture.format, texture.type ); + + for ( const layerIndex of texture.layerUpdates ) { + + const layerData = mipmap.data.subarray( + layerIndex * layerByteLength / mipmap.data.BYTES_PER_ELEMENT, + ( layerIndex + 1 ) * layerByteLength / mipmap.data.BYTES_PER_ELEMENT + ); + state.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, layerIndex, mipmap.width, mipmap.height, 1, glFormat, layerData ); + + } + + texture.clearLayerUpdates(); + + } else { + + state.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data ); + + } + + } + + } else { + + state.compressedTexImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0 ); + + } + + } else { + + console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' ); + + } + + } else { + + if ( useTexStorage ) { + + if ( dataReady ) { + + state.texSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data ); + + } + + } else { + + state.texImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data ); + + } + + } + + } + + } else { + + if ( useTexStorage && allocateMemory ) { + + state.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height ); + + } + + for ( let i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + + if ( texture.format !== RGBAFormat ) { + + if ( glFormat !== null ) { + + if ( useTexStorage ) { + + if ( dataReady ) { + + state.compressedTexSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data ); + + } + + } else { + + state.compressedTexImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + + } + + } else { + + console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' ); + + } + + } else { + + if ( useTexStorage ) { + + if ( dataReady ) { + + state.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data ); + + } + + } else { + + state.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + } + + } + + } + + } else if ( texture.isDataArrayTexture ) { + + if ( useTexStorage ) { + + if ( allocateMemory ) { + + state.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth ); + + } + + if ( dataReady ) { + + if ( texture.layerUpdates.size > 0 ) { + + const layerByteLength = getByteLength( image.width, image.height, texture.format, texture.type ); + + for ( const layerIndex of texture.layerUpdates ) { + + const layerData = image.data.subarray( + layerIndex * layerByteLength / image.data.BYTES_PER_ELEMENT, + ( layerIndex + 1 ) * layerByteLength / image.data.BYTES_PER_ELEMENT + ); + state.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, layerIndex, image.width, image.height, 1, glFormat, glType, layerData ); + + } + + texture.clearLayerUpdates(); + + } else { + + state.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data ); + + } + + } + + } else { + + state.texImage3D( _gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data ); + + } + + } else if ( texture.isData3DTexture ) { + + if ( useTexStorage ) { + + if ( allocateMemory ) { + + state.texStorage3D( _gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth ); + + } + + if ( dataReady ) { + + state.texSubImage3D( _gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data ); + + } + + } else { + + state.texImage3D( _gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data ); + + } + + } else if ( texture.isFramebufferTexture ) { + + if ( allocateMemory ) { + + if ( useTexStorage ) { + + state.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height ); + + } else { + + let width = image.width, height = image.height; + + for ( let i = 0; i < levels; i ++ ) { + + state.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, width, height, 0, glFormat, glType, null ); + + width >>= 1; + height >>= 1; + + } + + } + + } + + } else { + + // regular Texture (image, video, canvas) + + // use manually created mipmaps if available + // if there are no manual mipmaps + // set 0 level mipmap and then use GL to generate other mipmap levels + + if ( mipmaps.length > 0 ) { + + if ( useTexStorage && allocateMemory ) { + + const dimensions = getDimensions( mipmaps[ 0 ] ); + + state.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height ); + + } + + for ( let i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + + if ( useTexStorage ) { + + if ( dataReady ) { + + state.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap ); + + } + + } else { + + state.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap ); + + } + + } + + texture.generateMipmaps = false; + + } else { + + if ( useTexStorage ) { + + if ( allocateMemory ) { + + const dimensions = getDimensions( image ); + + state.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height ); + + } + + if ( dataReady ) { + + state.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image ); + + } + + } else { + + state.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image ); + + } + + } + + } + + if ( textureNeedsGenerateMipmaps( texture ) ) { + + generateMipmap( textureType ); + + } + + sourceProperties.__version = source.version; + + if ( texture.onUpdate ) texture.onUpdate( texture ); + + } + + textureProperties.__version = texture.version; + + } + + function uploadCubeTexture( textureProperties, texture, slot ) { + + if ( texture.image.length !== 6 ) return; + + const forceUpload = initTexture( textureProperties, texture ); + const source = texture.source; + + state.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot ); + + const sourceProperties = properties.get( source ); + + if ( source.version !== sourceProperties.__version || forceUpload === true ) { + + state.activeTexture( _gl.TEXTURE0 + slot ); + + const workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace ); + const texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace ); + const unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL; + + _gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY ); + _gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha ); + _gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment ); + _gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion ); + + const isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ); + const isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture ); + + const cubeImage = []; + + for ( let i = 0; i < 6; i ++ ) { + + if ( ! isCompressed && ! isDataTexture ) { + + cubeImage[ i ] = resizeImage( texture.image[ i ], true, capabilities.maxCubemapSize ); + + } else { + + cubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ]; + + } + + cubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] ); + + } + + const image = cubeImage[ 0 ], + glFormat = utils.convert( texture.format, texture.colorSpace ), + glType = utils.convert( texture.type ), + glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace ); + + const useTexStorage = ( texture.isVideoTexture !== true ); + const allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true ); + const dataReady = source.dataReady; + let levels = getMipLevels( texture, image ); + + setTextureParameters( _gl.TEXTURE_CUBE_MAP, texture ); + + let mipmaps; + + if ( isCompressed ) { + + if ( useTexStorage && allocateMemory ) { + + state.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, image.width, image.height ); + + } + + for ( let i = 0; i < 6; i ++ ) { + + mipmaps = cubeImage[ i ].mipmaps; + + for ( let j = 0; j < mipmaps.length; j ++ ) { + + const mipmap = mipmaps[ j ]; + + if ( texture.format !== RGBAFormat ) { + + if ( glFormat !== null ) { + + if ( useTexStorage ) { + + if ( dataReady ) { + + state.compressedTexSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data ); + + } + + } else { + + state.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + + } + + } else { + + console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' ); + + } + + } else { + + if ( useTexStorage ) { + + if ( dataReady ) { + + state.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data ); + + } + + } else { + + state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + } + + } + + } + + } else { + + mipmaps = texture.mipmaps; + + if ( useTexStorage && allocateMemory ) { + + // TODO: Uniformly handle mipmap definitions + // Normal textures and compressed cube textures define base level + mips with their mipmap array + // Uncompressed cube textures use their mipmap array only for mips (no base level) + + if ( mipmaps.length > 0 ) levels ++; + + const dimensions = getDimensions( cubeImage[ 0 ] ); + + state.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, dimensions.width, dimensions.height ); + + } + + for ( let i = 0; i < 6; i ++ ) { + + if ( isDataTexture ) { + + if ( useTexStorage ) { + + if ( dataReady ) { + + state.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data ); + + } + + } else { + + state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data ); + + } + + for ( let j = 0; j < mipmaps.length; j ++ ) { + + const mipmap = mipmaps[ j ]; + const mipmapImage = mipmap.image[ i ].image; + + if ( useTexStorage ) { + + if ( dataReady ) { + + state.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data ); + + } + + } else { + + state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data ); + + } + + } + + } else { + + if ( useTexStorage ) { + + if ( dataReady ) { + + state.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] ); + + } + + } else { + + state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] ); + + } + + for ( let j = 0; j < mipmaps.length; j ++ ) { + + const mipmap = mipmaps[ j ]; + + if ( useTexStorage ) { + + if ( dataReady ) { + + state.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] ); + + } + + } else { + + state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] ); + + } + + } + + } + + } + + } + + if ( textureNeedsGenerateMipmaps( texture ) ) { + + // We assume images for cube map have the same size. + generateMipmap( _gl.TEXTURE_CUBE_MAP ); + + } + + sourceProperties.__version = source.version; + + if ( texture.onUpdate ) texture.onUpdate( texture ); + + } + + textureProperties.__version = texture.version; + + } + + // Render targets + + // Setup storage for target texture and bind it to correct framebuffer + function setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget, level ) { + + const glFormat = utils.convert( texture.format, texture.colorSpace ); + const glType = utils.convert( texture.type ); + const glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace ); + const renderTargetProperties = properties.get( renderTarget ); + const textureProperties = properties.get( texture ); + + textureProperties.__renderTarget = renderTarget; + + if ( ! renderTargetProperties.__hasExternalTextures ) { + + const width = Math.max( 1, renderTarget.width >> level ); + const height = Math.max( 1, renderTarget.height >> level ); + + if ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) { + + state.texImage3D( textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null ); + + } else { + + state.texImage2D( textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null ); + + } + + } + + state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer ); + + if ( useMultisampledRTT( renderTarget ) ) { + + multisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, textureProperties.__webglTexture, 0, getRenderTargetSamples( renderTarget ) ); + + } else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753 + + _gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, textureProperties.__webglTexture, level ); + + } + + state.bindFramebuffer( _gl.FRAMEBUFFER, null ); + + } + + // Setup storage for internal depth/stencil buffers and bind to correct framebuffer + function setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) { + + _gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer ); + + if ( renderTarget.depthBuffer ) { + + // retrieve the depth attachment types + const depthTexture = renderTarget.depthTexture; + const depthType = depthTexture && depthTexture.isDepthTexture ? depthTexture.type : null; + const glInternalFormat = getInternalDepthFormat( renderTarget.stencilBuffer, depthType ); + const glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT; + + // set up the attachment + const samples = getRenderTargetSamples( renderTarget ); + const isUseMultisampledRTT = useMultisampledRTT( renderTarget ); + if ( isUseMultisampledRTT ) { + + multisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height ); + + } else if ( isMultisample ) { + + _gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height ); + + } else { + + _gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height ); + + } + + _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer ); + + } else { + + const textures = renderTarget.textures; + + for ( let i = 0; i < textures.length; i ++ ) { + + const texture = textures[ i ]; + + const glFormat = utils.convert( texture.format, texture.colorSpace ); + const glType = utils.convert( texture.type ); + const glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace ); + const samples = getRenderTargetSamples( renderTarget ); + + if ( isMultisample && useMultisampledRTT( renderTarget ) === false ) { + + _gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height ); + + } else if ( useMultisampledRTT( renderTarget ) ) { + + multisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height ); + + } else { + + _gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height ); + + } + + } + + } + + _gl.bindRenderbuffer( _gl.RENDERBUFFER, null ); + + } + + // Setup resources for a Depth Texture for a FBO (needs an extension) + function setupDepthTexture( framebuffer, renderTarget ) { + + const isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget ); + if ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' ); + + state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer ); + + if ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) { + + throw new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' ); + + } + + const textureProperties = properties.get( renderTarget.depthTexture ); + textureProperties.__renderTarget = renderTarget; + + // upload an empty depth texture with framebuffer size + if ( ! textureProperties.__webglTexture || + renderTarget.depthTexture.image.width !== renderTarget.width || + renderTarget.depthTexture.image.height !== renderTarget.height ) { + + renderTarget.depthTexture.image.width = renderTarget.width; + renderTarget.depthTexture.image.height = renderTarget.height; + renderTarget.depthTexture.needsUpdate = true; + + } + + setTexture2D( renderTarget.depthTexture, 0 ); + + const webglDepthTexture = textureProperties.__webglTexture; + const samples = getRenderTargetSamples( renderTarget ); + + if ( renderTarget.depthTexture.format === DepthFormat ) { + + if ( useMultisampledRTT( renderTarget ) ) { + + multisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples ); + + } else { + + _gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 ); + + } + + } else if ( renderTarget.depthTexture.format === DepthStencilFormat ) { + + if ( useMultisampledRTT( renderTarget ) ) { + + multisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples ); + + } else { + + _gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 ); + + } + + } else { + + throw new Error( 'Unknown depthTexture format' ); + + } + + } + + // Setup GL resources for a non-texture depth buffer + function setupDepthRenderbuffer( renderTarget ) { + + const renderTargetProperties = properties.get( renderTarget ); + const isCube = ( renderTarget.isWebGLCubeRenderTarget === true ); + + // if the bound depth texture has changed + if ( renderTargetProperties.__boundDepthTexture !== renderTarget.depthTexture ) { + + // fire the dispose event to get rid of stored state associated with the previously bound depth buffer + const depthTexture = renderTarget.depthTexture; + if ( renderTargetProperties.__depthDisposeCallback ) { + + renderTargetProperties.__depthDisposeCallback(); + + } + + // set up dispose listeners to track when the currently attached buffer is implicitly unbound + if ( depthTexture ) { + + const disposeEvent = () => { + + delete renderTargetProperties.__boundDepthTexture; + delete renderTargetProperties.__depthDisposeCallback; + depthTexture.removeEventListener( 'dispose', disposeEvent ); + + }; + + depthTexture.addEventListener( 'dispose', disposeEvent ); + renderTargetProperties.__depthDisposeCallback = disposeEvent; + + } + + renderTargetProperties.__boundDepthTexture = depthTexture; + + } + + if ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) { + + if ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' ); + + setupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget ); + + } else { + + if ( isCube ) { + + renderTargetProperties.__webglDepthbuffer = []; + + for ( let i = 0; i < 6; i ++ ) { + + state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] ); + + if ( renderTargetProperties.__webglDepthbuffer[ i ] === undefined ) { + + renderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false ); + + } else { + + // attach buffer if it's been created already + const glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT; + const renderbuffer = renderTargetProperties.__webglDepthbuffer[ i ]; + _gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer ); + _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer ); + + } + + } + + } else { + + state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer ); + + if ( renderTargetProperties.__webglDepthbuffer === undefined ) { + + renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false ); + + } else { + + // attach buffer if it's been created already + const glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT; + const renderbuffer = renderTargetProperties.__webglDepthbuffer; + _gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer ); + _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer ); + + } + + } + + } + + state.bindFramebuffer( _gl.FRAMEBUFFER, null ); + + } + + // rebind framebuffer with external textures + function rebindTextures( renderTarget, colorTexture, depthTexture ) { + + const renderTargetProperties = properties.get( renderTarget ); + + if ( colorTexture !== undefined ) { + + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0 ); + + } + + if ( depthTexture !== undefined ) { + + setupDepthRenderbuffer( renderTarget ); + + } + + } + + // Set up GL resources for the render target + function setupRenderTarget( renderTarget ) { + + const texture = renderTarget.texture; + + const renderTargetProperties = properties.get( renderTarget ); + const textureProperties = properties.get( texture ); + + renderTarget.addEventListener( 'dispose', onRenderTargetDispose ); + + const textures = renderTarget.textures; + + const isCube = ( renderTarget.isWebGLCubeRenderTarget === true ); + const isMultipleRenderTargets = ( textures.length > 1 ); + + if ( ! isMultipleRenderTargets ) { + + if ( textureProperties.__webglTexture === undefined ) { + + textureProperties.__webglTexture = _gl.createTexture(); + + } + + textureProperties.__version = texture.version; + info.memory.textures ++; + + } + + // Setup framebuffer + + if ( isCube ) { + + renderTargetProperties.__webglFramebuffer = []; + + for ( let i = 0; i < 6; i ++ ) { + + if ( texture.mipmaps && texture.mipmaps.length > 0 ) { + + renderTargetProperties.__webglFramebuffer[ i ] = []; + + for ( let level = 0; level < texture.mipmaps.length; level ++ ) { + + renderTargetProperties.__webglFramebuffer[ i ][ level ] = _gl.createFramebuffer(); + + } + + } else { + + renderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer(); + + } + + } + + } else { + + if ( texture.mipmaps && texture.mipmaps.length > 0 ) { + + renderTargetProperties.__webglFramebuffer = []; + + for ( let level = 0; level < texture.mipmaps.length; level ++ ) { + + renderTargetProperties.__webglFramebuffer[ level ] = _gl.createFramebuffer(); + + } + + } else { + + renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer(); + + } + + if ( isMultipleRenderTargets ) { + + for ( let i = 0, il = textures.length; i < il; i ++ ) { + + const attachmentProperties = properties.get( textures[ i ] ); + + if ( attachmentProperties.__webglTexture === undefined ) { + + attachmentProperties.__webglTexture = _gl.createTexture(); + + info.memory.textures ++; + + } + + } + + } + + if ( ( renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) { + + renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer(); + renderTargetProperties.__webglColorRenderbuffer = []; + + state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer ); + + for ( let i = 0; i < textures.length; i ++ ) { + + const texture = textures[ i ]; + renderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer(); + + _gl.bindRenderbuffer( _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] ); + + const glFormat = utils.convert( texture.format, texture.colorSpace ); + const glType = utils.convert( texture.type ); + const glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, renderTarget.isXRRenderTarget === true ); + const samples = getRenderTargetSamples( renderTarget ); + _gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height ); + + _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] ); + + } + + _gl.bindRenderbuffer( _gl.RENDERBUFFER, null ); + + if ( renderTarget.depthBuffer ) { + + renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true ); + + } + + state.bindFramebuffer( _gl.FRAMEBUFFER, null ); + + } + + } + + // Setup color buffer + + if ( isCube ) { + + state.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture ); + setTextureParameters( _gl.TEXTURE_CUBE_MAP, texture ); + + for ( let i = 0; i < 6; i ++ ) { + + if ( texture.mipmaps && texture.mipmaps.length > 0 ) { + + for ( let level = 0; level < texture.mipmaps.length; level ++ ) { + + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ][ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, level ); + + } + + } else { + + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0 ); + + } + + } + + if ( textureNeedsGenerateMipmaps( texture ) ) { + + generateMipmap( _gl.TEXTURE_CUBE_MAP ); + + } + + state.unbindTexture(); + + } else if ( isMultipleRenderTargets ) { + + for ( let i = 0, il = textures.length; i < il; i ++ ) { + + const attachment = textures[ i ]; + const attachmentProperties = properties.get( attachment ); + + state.bindTexture( _gl.TEXTURE_2D, attachmentProperties.__webglTexture ); + setTextureParameters( _gl.TEXTURE_2D, attachment ); + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, 0 ); + + if ( textureNeedsGenerateMipmaps( attachment ) ) { + + generateMipmap( _gl.TEXTURE_2D ); + + } + + } + + state.unbindTexture(); + + } else { + + let glTextureType = _gl.TEXTURE_2D; + + if ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) { + + glTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY; + + } + + state.bindTexture( glTextureType, textureProperties.__webglTexture ); + setTextureParameters( glTextureType, texture ); + + if ( texture.mipmaps && texture.mipmaps.length > 0 ) { + + for ( let level = 0; level < texture.mipmaps.length; level ++ ) { + + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level ); + + } + + } else { + + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0 ); + + } + + if ( textureNeedsGenerateMipmaps( texture ) ) { + + generateMipmap( glTextureType ); + + } + + state.unbindTexture(); + + } + + // Setup depth and stencil buffers + + if ( renderTarget.depthBuffer ) { + + setupDepthRenderbuffer( renderTarget ); + + } + + } + + function updateRenderTargetMipmap( renderTarget ) { + + const textures = renderTarget.textures; + + for ( let i = 0, il = textures.length; i < il; i ++ ) { + + const texture = textures[ i ]; + + if ( textureNeedsGenerateMipmaps( texture ) ) { + + const targetType = getTargetType( renderTarget ); + const webglTexture = properties.get( texture ).__webglTexture; + + state.bindTexture( targetType, webglTexture ); + generateMipmap( targetType ); + state.unbindTexture(); + + } + + } + + } + + const invalidationArrayRead = []; + const invalidationArrayDraw = []; + + function updateMultisampleRenderTarget( renderTarget ) { + + if ( renderTarget.samples > 0 ) { + + if ( useMultisampledRTT( renderTarget ) === false ) { + + const textures = renderTarget.textures; + const width = renderTarget.width; + const height = renderTarget.height; + let mask = _gl.COLOR_BUFFER_BIT; + const depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT; + const renderTargetProperties = properties.get( renderTarget ); + const isMultipleRenderTargets = ( textures.length > 1 ); + + // If MRT we need to remove FBO attachments + if ( isMultipleRenderTargets ) { + + for ( let i = 0; i < textures.length; i ++ ) { + + state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer ); + _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null ); + + state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer ); + _gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0 ); + + } + + } + + state.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer ); + state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer ); + + for ( let i = 0; i < textures.length; i ++ ) { + + if ( renderTarget.resolveDepthBuffer ) { + + if ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT; + + // resolving stencil is slow with a D3D backend. disable it for all transmission render targets (see #27799) + + if ( renderTarget.stencilBuffer && renderTarget.resolveStencilBuffer ) mask |= _gl.STENCIL_BUFFER_BIT; + + } + + if ( isMultipleRenderTargets ) { + + _gl.framebufferRenderbuffer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] ); + + const webglTexture = properties.get( textures[ i ] ).__webglTexture; + _gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0 ); + + } + + _gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST ); + + if ( supportsInvalidateFramebuffer === true ) { + + invalidationArrayRead.length = 0; + invalidationArrayDraw.length = 0; + + invalidationArrayRead.push( _gl.COLOR_ATTACHMENT0 + i ); + + if ( renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false ) { + + invalidationArrayRead.push( depthStyle ); + invalidationArrayDraw.push( depthStyle ); + + _gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, invalidationArrayDraw ); + + } + + _gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, invalidationArrayRead ); + + } + + } + + state.bindFramebuffer( _gl.READ_FRAMEBUFFER, null ); + state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null ); + + // If MRT since pre-blit we removed the FBO we need to reconstruct the attachments + if ( isMultipleRenderTargets ) { + + for ( let i = 0; i < textures.length; i ++ ) { + + state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer ); + _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] ); + + const webglTexture = properties.get( textures[ i ] ).__webglTexture; + + state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer ); + _gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0 ); + + } + + } + + state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer ); + + } else { + + if ( renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false && supportsInvalidateFramebuffer ) { + + const depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT; + + _gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, [ depthStyle ] ); + + } + + } + + } + + } + + function getRenderTargetSamples( renderTarget ) { + + return Math.min( capabilities.maxSamples, renderTarget.samples ); + + } + + function useMultisampledRTT( renderTarget ) { + + const renderTargetProperties = properties.get( renderTarget ); + + return renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false; + + } + + function updateVideoTexture( texture ) { + + const frame = info.render.frame; + + // Check the last frame we updated the VideoTexture + + if ( _videoTextures.get( texture ) !== frame ) { + + _videoTextures.set( texture, frame ); + texture.update(); + + } + + } + + function verifyColorSpace( texture, image ) { + + const colorSpace = texture.colorSpace; + const format = texture.format; + const type = texture.type; + + if ( texture.isCompressedTexture === true || texture.isVideoTexture === true ) return image; + + if ( colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace ) { + + // sRGB + + if ( ColorManagement.getTransfer( colorSpace ) === SRGBTransfer ) { + + // in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format + + if ( format !== RGBAFormat || type !== UnsignedByteType ) { + + console.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' ); + + } + + } else { + + console.error( 'THREE.WebGLTextures: Unsupported texture color space:', colorSpace ); + + } + + } + + return image; + + } + + function getDimensions( image ) { + + if ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) { + + // if intrinsic data are not available, fallback to width/height + + _imageDimensions.width = image.naturalWidth || image.width; + _imageDimensions.height = image.naturalHeight || image.height; + + } else if ( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) { + + _imageDimensions.width = image.displayWidth; + _imageDimensions.height = image.displayHeight; + + } else { + + _imageDimensions.width = image.width; + _imageDimensions.height = image.height; + + } + + return _imageDimensions; + + } + + // + + this.allocateTextureUnit = allocateTextureUnit; + this.resetTextureUnits = resetTextureUnits; + + this.setTexture2D = setTexture2D; + this.setTexture2DArray = setTexture2DArray; + this.setTexture3D = setTexture3D; + this.setTextureCube = setTextureCube; + this.rebindTextures = rebindTextures; + this.setupRenderTarget = setupRenderTarget; + this.updateRenderTargetMipmap = updateRenderTargetMipmap; + this.updateMultisampleRenderTarget = updateMultisampleRenderTarget; + this.setupDepthRenderbuffer = setupDepthRenderbuffer; + this.setupFrameBufferTexture = setupFrameBufferTexture; + this.useMultisampledRTT = useMultisampledRTT; + +} + +function WebGLUtils( gl, extensions ) { + + function convert( p, colorSpace = NoColorSpace ) { + + let extension; + + const transfer = ColorManagement.getTransfer( colorSpace ); + + if ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE; + if ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4; + if ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1; + if ( p === UnsignedInt5999Type ) return gl.UNSIGNED_INT_5_9_9_9_REV; + + if ( p === ByteType ) return gl.BYTE; + if ( p === ShortType ) return gl.SHORT; + if ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT; + if ( p === IntType ) return gl.INT; + if ( p === UnsignedIntType ) return gl.UNSIGNED_INT; + if ( p === FloatType ) return gl.FLOAT; + if ( p === HalfFloatType ) return gl.HALF_FLOAT; + + if ( p === AlphaFormat ) return gl.ALPHA; + if ( p === RGBFormat ) return gl.RGB; + if ( p === RGBAFormat ) return gl.RGBA; + if ( p === LuminanceFormat ) return gl.LUMINANCE; + if ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA; + if ( p === DepthFormat ) return gl.DEPTH_COMPONENT; + if ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL; + + // WebGL2 formats. + + if ( p === RedFormat ) return gl.RED; + if ( p === RedIntegerFormat ) return gl.RED_INTEGER; + if ( p === RGFormat ) return gl.RG; + if ( p === RGIntegerFormat ) return gl.RG_INTEGER; + if ( p === RGBAIntegerFormat ) return gl.RGBA_INTEGER; + + // S3TC + + if ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) { + + if ( transfer === SRGBTransfer ) { + + extension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' ); + + if ( extension !== null ) { + + if ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT; + if ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; + if ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; + if ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; + + } else { + + return null; + + } + + } else { + + extension = extensions.get( 'WEBGL_compressed_texture_s3tc' ); + + if ( extension !== null ) { + + if ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT; + if ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT; + if ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT; + if ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT; + + } else { + + return null; + + } + + } + + } + + // PVRTC + + if ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_pvrtc' ); + + if ( extension !== null ) { + + if ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + if ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + if ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + if ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + + } else { + + return null; + + } + + } + + // ETC + + if ( p === RGB_ETC1_Format || p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_etc' ); + + if ( extension !== null ) { + + if ( p === RGB_ETC1_Format || p === RGB_ETC2_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2; + if ( p === RGBA_ETC2_EAC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC; + + } else { + + return null; + + } + + } + + // ASTC + + if ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || + p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || + p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || + p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || + p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_astc' ); + + if ( extension !== null ) { + + if ( p === RGBA_ASTC_4x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR; + if ( p === RGBA_ASTC_5x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR; + if ( p === RGBA_ASTC_5x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR; + if ( p === RGBA_ASTC_6x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR; + if ( p === RGBA_ASTC_6x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR; + if ( p === RGBA_ASTC_8x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR; + if ( p === RGBA_ASTC_8x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR; + if ( p === RGBA_ASTC_8x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR; + if ( p === RGBA_ASTC_10x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR; + if ( p === RGBA_ASTC_10x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR; + if ( p === RGBA_ASTC_10x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR; + if ( p === RGBA_ASTC_10x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR; + if ( p === RGBA_ASTC_12x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR; + if ( p === RGBA_ASTC_12x12_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR; + + } else { + + return null; + + } + + } + + // BPTC + + if ( p === RGBA_BPTC_Format || p === RGB_BPTC_SIGNED_Format || p === RGB_BPTC_UNSIGNED_Format ) { + + extension = extensions.get( 'EXT_texture_compression_bptc' ); + + if ( extension !== null ) { + + if ( p === RGBA_BPTC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT; + if ( p === RGB_BPTC_SIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT; + if ( p === RGB_BPTC_UNSIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT; + + } else { + + return null; + + } + + } + + // RGTC + + if ( p === RED_RGTC1_Format || p === SIGNED_RED_RGTC1_Format || p === RED_GREEN_RGTC2_Format || p === SIGNED_RED_GREEN_RGTC2_Format ) { + + extension = extensions.get( 'EXT_texture_compression_rgtc' ); + + if ( extension !== null ) { + + if ( p === RGBA_BPTC_Format ) return extension.COMPRESSED_RED_RGTC1_EXT; + if ( p === SIGNED_RED_RGTC1_Format ) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT; + if ( p === RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT; + if ( p === SIGNED_RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT; + + } else { + + return null; + + } + + } + + // + + if ( p === UnsignedInt248Type ) return gl.UNSIGNED_INT_24_8; + + // if "p" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats) + + return ( gl[ p ] !== undefined ) ? gl[ p ] : null; + + } + + return { convert: convert }; + +} + +const _occlusion_vertex = ` +void main() { + + gl_Position = vec4( position, 1.0 ); + +}`; + +const _occlusion_fragment = ` +uniform sampler2DArray depthColor; +uniform float depthWidth; +uniform float depthHeight; + +void main() { + + vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); + + if ( coord.x >= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`; + +/** + * A XR module that manages the access to the Depth Sensing API. + */ +class WebXRDepthSensing { + + /** + * Constructs a new depth sensing module. + */ + constructor() { + + /** + * A texture representing the depth of the user's environment. + * + * @type {?Texture} + */ + this.texture = null; + + /** + * A plane mesh for visualizing the depth texture. + * + * @type {?Mesh} + */ + this.mesh = null; + + /** + * The depth near value. + * + * @type {number} + */ + this.depthNear = 0; + + /** + * The depth near far. + * + * @type {number} + */ + this.depthFar = 0; + + } + + /** + * Inits the depth sensing module + * + * @param {WebGLRenderer} renderer - The renderer. + * @param {XRWebGLDepthInformation} depthData - The XR depth data. + * @param {XRRenderState} renderState - The XR render state. + */ + init( renderer, depthData, renderState ) { + + if ( this.texture === null ) { + + const texture = new Texture(); + + const texProps = renderer.properties.get( texture ); + texProps.__webglTexture = depthData.texture; + + if ( ( depthData.depthNear !== renderState.depthNear ) || ( depthData.depthFar !== renderState.depthFar ) ) { + + this.depthNear = depthData.depthNear; + this.depthFar = depthData.depthFar; + + } + + this.texture = texture; + + } + + } + + /** + * Returns a plane mesh that visualizes the depth texture. + * + * @param {ArrayCamera} cameraXR - The XR camera. + * @return {?Mesh} The plane mesh. + */ + getMesh( cameraXR ) { + + if ( this.texture !== null ) { + + if ( this.mesh === null ) { + + const viewport = cameraXR.cameras[ 0 ].viewport; + const material = new ShaderMaterial( { + vertexShader: _occlusion_vertex, + fragmentShader: _occlusion_fragment, + uniforms: { + depthColor: { value: this.texture }, + depthWidth: { value: viewport.z }, + depthHeight: { value: viewport.w } + } + } ); + + this.mesh = new Mesh( new PlaneGeometry( 20, 20 ), material ); + + } + + } + + return this.mesh; + + } + + /** + * Resets the module + */ + reset() { + + this.texture = null; + this.mesh = null; + + } + + /** + * Returns a texture representing the depth of the user's environment. + * + * @return {?Texture} The depth texture. + */ + getDepthTexture() { + + return this.texture; + + } + +} + +/** + * This class represents an abstraction of the WebXR Device API and is + * internally used by {@link WebGLRenderer}. `WebXRManager` also provides a public + * interface that allows users to enable/disable XR and perform XR related + * tasks like for instance retrieving controllers. + * + * @augments EventDispatcher + * @hideconstructor + */ +class WebXRManager extends EventDispatcher { + + /** + * Constructs a new WebGL renderer. + * + * @param {WebGLRenderer} renderer - The renderer. + * @param {WebGL2RenderingContext} gl - The rendering context. + */ + constructor( renderer, gl ) { + + super(); + + const scope = this; + + let session = null; + + let framebufferScaleFactor = 1.0; + + let referenceSpace = null; + let referenceSpaceType = 'local-floor'; + // Set default foveation to maximum. + let foveation = 1.0; + let customReferenceSpace = null; + + let pose = null; + let glBinding = null; + let glProjLayer = null; + let glBaseLayer = null; + let xrFrame = null; + + const depthSensing = new WebXRDepthSensing(); + const attributes = gl.getContextAttributes(); + + let initialRenderTarget = null; + let newRenderTarget = null; + + const controllers = []; + const controllerInputSources = []; + + const currentSize = new Vector2(); + let currentPixelRatio = null; + + // + + const cameraL = new PerspectiveCamera(); + cameraL.viewport = new Vector4(); + + const cameraR = new PerspectiveCamera(); + cameraR.viewport = new Vector4(); + + const cameras = [ cameraL, cameraR ]; + + const cameraXR = new ArrayCamera(); + + let _currentDepthNear = null; + let _currentDepthFar = null; + + // + + /** + * Whether the manager's XR camera should be automatically updated or not. + * + * @type {boolean} + * @default true + */ + this.cameraAutoUpdate = true; + + /** + * This flag notifies the renderer to be ready for XR rendering. Set it to `true` + * if you are going to use XR in your app. + * + * @type {boolean} + * @default false + */ + this.enabled = false; + + /** + * Whether XR presentation is active or not. + * + * @type {boolean} + * @readonly + * @default false + */ + this.isPresenting = false; + + /** + * Returns a group representing the `target ray` space of the XR controller. + * Use this space for visualizing 3D objects that support the user in pointing + * tasks like UI interaction. + * + * @param {number} index - The index of the controller. + * @return {Group} A group representing the `target ray` space. + */ + this.getController = function ( index ) { + + let controller = controllers[ index ]; + + if ( controller === undefined ) { + + controller = new WebXRController(); + controllers[ index ] = controller; + + } + + return controller.getTargetRaySpace(); + + }; + + /** + * Returns a group representing the `grip` space of the XR controller. + * Use this space for visualizing 3D objects that support the user in pointing + * tasks like UI interaction. + * + * Note: If you want to show something in the user's hand AND offer a + * pointing ray at the same time, you'll want to attached the handheld object + * to the group returned by `getControllerGrip()` and the ray to the + * group returned by `getController()`. The idea is to have two + * different groups in two different coordinate spaces for the same WebXR + * controller. + * + * @param {number} index - The index of the controller. + * @return {Group} A group representing the `grip` space. + */ + this.getControllerGrip = function ( index ) { + + let controller = controllers[ index ]; + + if ( controller === undefined ) { + + controller = new WebXRController(); + controllers[ index ] = controller; + + } + + return controller.getGripSpace(); + + }; + + /** + * Returns a group representing the `hand` space of the XR controller. + * Use this space for visualizing 3D objects that support the user in pointing + * tasks like UI interaction. + * + * @param {number} index - The index of the controller. + * @return {Group} A group representing the `hand` space. + */ + this.getHand = function ( index ) { + + let controller = controllers[ index ]; + + if ( controller === undefined ) { + + controller = new WebXRController(); + controllers[ index ] = controller; + + } + + return controller.getHandSpace(); + + }; + + // + + function onSessionEvent( event ) { + + const controllerIndex = controllerInputSources.indexOf( event.inputSource ); + + if ( controllerIndex === -1 ) { + + return; + + } + + const controller = controllers[ controllerIndex ]; + + if ( controller !== undefined ) { + + controller.update( event.inputSource, event.frame, customReferenceSpace || referenceSpace ); + controller.dispatchEvent( { type: event.type, data: event.inputSource } ); + + } + + } + + function onSessionEnd() { + + session.removeEventListener( 'select', onSessionEvent ); + session.removeEventListener( 'selectstart', onSessionEvent ); + session.removeEventListener( 'selectend', onSessionEvent ); + session.removeEventListener( 'squeeze', onSessionEvent ); + session.removeEventListener( 'squeezestart', onSessionEvent ); + session.removeEventListener( 'squeezeend', onSessionEvent ); + session.removeEventListener( 'end', onSessionEnd ); + session.removeEventListener( 'inputsourceschange', onInputSourcesChange ); + + for ( let i = 0; i < controllers.length; i ++ ) { + + const inputSource = controllerInputSources[ i ]; + + if ( inputSource === null ) continue; + + controllerInputSources[ i ] = null; + + controllers[ i ].disconnect( inputSource ); + + } + + _currentDepthNear = null; + _currentDepthFar = null; + + depthSensing.reset(); + + // restore framebuffer/rendering state + + renderer.setRenderTarget( initialRenderTarget ); + + glBaseLayer = null; + glProjLayer = null; + glBinding = null; + session = null; + newRenderTarget = null; + + // + + animation.stop(); + + scope.isPresenting = false; + + renderer.setPixelRatio( currentPixelRatio ); + renderer.setSize( currentSize.width, currentSize.height, false ); + + scope.dispatchEvent( { type: 'sessionend' } ); + + } + + /** + * Sets the framebuffer scale factor. + * + * This method can not be used during a XR session. + * + * @param {number} value - The framebuffer scale factor. + */ + this.setFramebufferScaleFactor = function ( value ) { + + framebufferScaleFactor = value; + + if ( scope.isPresenting === true ) { + + console.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' ); + + } + + }; + + /** + * Sets the reference space type. Can be used to configure a spatial relationship with the user's physical + * environment. Depending on how the user moves in 3D space, setting an appropriate reference space can + * improve tracking. Default is `local-floor`. + * + * This method can not be used during a XR session. + * + * @param {string} value - The reference space type. + */ + this.setReferenceSpaceType = function ( value ) { + + referenceSpaceType = value; + + if ( scope.isPresenting === true ) { + + console.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' ); + + } + + }; + + /** + * Returns the XR reference space. + * + * @return {XRReferenceSpace} The XR reference space. + */ + this.getReferenceSpace = function () { + + return customReferenceSpace || referenceSpace; + + }; + + /** + * Sets a custom XR reference space. + * + * @param {XRReferenceSpace} space - The XR reference space. + */ + this.setReferenceSpace = function ( space ) { + + customReferenceSpace = space; + + }; + + /** + * Returns the current base layer. + * + * @return {?(XRWebGLLayer|XRProjectionLayer)} The XR base layer. + */ + this.getBaseLayer = function () { + + return glProjLayer !== null ? glProjLayer : glBaseLayer; + + }; + + /** + * Returns the current XR binding. + * + * @return {?XRWebGLBinding} The XR binding. + */ + this.getBinding = function () { + + return glBinding; + + }; + + /** + * Returns the current XR frame. + * + * @return {?XRFrame} The XR frame. Returns `null` when used outside a XR session. + */ + this.getFrame = function () { + + return xrFrame; + + }; + + /** + * Returns the current XR session. + * + * @return {?XRSession} The XR session. Returns `null` when used outside a XR session. + */ + this.getSession = function () { + + return session; + + }; + + /** + * After a XR session has been requested usually with one of the `*Button` modules, it + * is injected into the renderer with this method. This method triggers the start of + * the actual XR rendering. + * + * @async + * @param {XRSession} value - The XR session to set. + * @return {Promise} A Promise that resolves when the session has been set. + */ + this.setSession = async function ( value ) { + + session = value; + + if ( session !== null ) { + + initialRenderTarget = renderer.getRenderTarget(); + + session.addEventListener( 'select', onSessionEvent ); + session.addEventListener( 'selectstart', onSessionEvent ); + session.addEventListener( 'selectend', onSessionEvent ); + session.addEventListener( 'squeeze', onSessionEvent ); + session.addEventListener( 'squeezestart', onSessionEvent ); + session.addEventListener( 'squeezeend', onSessionEvent ); + session.addEventListener( 'end', onSessionEnd ); + session.addEventListener( 'inputsourceschange', onInputSourcesChange ); + + if ( attributes.xrCompatible !== true ) { + + await gl.makeXRCompatible(); + + } + + currentPixelRatio = renderer.getPixelRatio(); + renderer.getSize( currentSize ); + + // Check that the browser implements the necessary APIs to use an + // XRProjectionLayer rather than an XRWebGLLayer + const useLayers = typeof XRWebGLBinding !== 'undefined' && 'createProjectionLayer' in XRWebGLBinding.prototype; + + if ( ! useLayers ) { + + const layerInit = { + antialias: attributes.antialias, + alpha: true, + depth: attributes.depth, + stencil: attributes.stencil, + framebufferScaleFactor: framebufferScaleFactor + }; + + glBaseLayer = new XRWebGLLayer( session, gl, layerInit ); + + session.updateRenderState( { baseLayer: glBaseLayer } ); + + renderer.setPixelRatio( 1 ); + renderer.setSize( glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false ); + + newRenderTarget = new WebGLRenderTarget( + glBaseLayer.framebufferWidth, + glBaseLayer.framebufferHeight, + { + format: RGBAFormat, + type: UnsignedByteType, + colorSpace: renderer.outputColorSpace, + stencilBuffer: attributes.stencil, + resolveDepthBuffer: ( glBaseLayer.ignoreDepthValues === false ), + resolveStencilBuffer: ( glBaseLayer.ignoreDepthValues === false ) + + } + ); + + } else { + + let depthFormat = null; + let depthType = null; + let glDepthFormat = null; + + if ( attributes.depth ) { + + glDepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24; + depthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat; + depthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType; + + } + + const projectionlayerInit = { + colorFormat: gl.RGBA8, + depthFormat: glDepthFormat, + scaleFactor: framebufferScaleFactor + }; + + glBinding = new XRWebGLBinding( session, gl ); + + glProjLayer = glBinding.createProjectionLayer( projectionlayerInit ); + + session.updateRenderState( { layers: [ glProjLayer ] } ); + + renderer.setPixelRatio( 1 ); + renderer.setSize( glProjLayer.textureWidth, glProjLayer.textureHeight, false ); + + newRenderTarget = new WebGLRenderTarget( + glProjLayer.textureWidth, + glProjLayer.textureHeight, + { + format: RGBAFormat, + type: UnsignedByteType, + depthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ), + stencilBuffer: attributes.stencil, + colorSpace: renderer.outputColorSpace, + samples: attributes.antialias ? 4 : 0, + resolveDepthBuffer: ( glProjLayer.ignoreDepthValues === false ), + resolveStencilBuffer: ( glProjLayer.ignoreDepthValues === false ) + } ); + + } + + newRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278 + + this.setFoveation( foveation ); + + customReferenceSpace = null; + referenceSpace = await session.requestReferenceSpace( referenceSpaceType ); + + animation.setContext( session ); + animation.start(); + + scope.isPresenting = true; + + scope.dispatchEvent( { type: 'sessionstart' } ); + + } + + }; + + /** + * Returns the environment blend mode from the current XR session. + * + * @return {'opaque'|'additive'|'alpha-blend'|undefined} The environment blend mode. Returns `undefined` when used outside of a XR session. + */ + this.getEnvironmentBlendMode = function () { + + if ( session !== null ) { + + return session.environmentBlendMode; + + } + + }; + + /** + * Returns the current depth texture computed via depth sensing. + * + * @return {?Texture} The depth texture. + */ + this.getDepthTexture = function () { + + return depthSensing.getDepthTexture(); + + }; + + function onInputSourcesChange( event ) { + + // Notify disconnected + + for ( let i = 0; i < event.removed.length; i ++ ) { + + const inputSource = event.removed[ i ]; + const index = controllerInputSources.indexOf( inputSource ); + + if ( index >= 0 ) { + + controllerInputSources[ index ] = null; + controllers[ index ].disconnect( inputSource ); + + } + + } + + // Notify connected + + for ( let i = 0; i < event.added.length; i ++ ) { + + const inputSource = event.added[ i ]; + + let controllerIndex = controllerInputSources.indexOf( inputSource ); + + if ( controllerIndex === -1 ) { + + // Assign input source a controller that currently has no input source + + for ( let i = 0; i < controllers.length; i ++ ) { + + if ( i >= controllerInputSources.length ) { + + controllerInputSources.push( inputSource ); + controllerIndex = i; + break; + + } else if ( controllerInputSources[ i ] === null ) { + + controllerInputSources[ i ] = inputSource; + controllerIndex = i; + break; + + } + + } + + // If all controllers do currently receive input we ignore new ones + + if ( controllerIndex === -1 ) break; + + } + + const controller = controllers[ controllerIndex ]; + + if ( controller ) { + + controller.connect( inputSource ); + + } + + } + + } + + // + + const cameraLPos = new Vector3(); + const cameraRPos = new Vector3(); + + /** + * Assumes 2 cameras that are parallel and share an X-axis, and that + * the cameras' projection and world matrices have already been set. + * And that near and far planes are identical for both cameras. + * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765 + * + * @param {ArrayCamera} camera - The camera to update. + * @param {PerspectiveCamera} cameraL - The left camera. + * @param {PerspectiveCamera} cameraR - The right camera. + */ + function setProjectionFromUnion( camera, cameraL, cameraR ) { + + cameraLPos.setFromMatrixPosition( cameraL.matrixWorld ); + cameraRPos.setFromMatrixPosition( cameraR.matrixWorld ); + + const ipd = cameraLPos.distanceTo( cameraRPos ); + + const projL = cameraL.projectionMatrix.elements; + const projR = cameraR.projectionMatrix.elements; + + // VR systems will have identical far and near planes, and + // most likely identical top and bottom frustum extents. + // Use the left camera for these values. + const near = projL[ 14 ] / ( projL[ 10 ] - 1 ); + const far = projL[ 14 ] / ( projL[ 10 ] + 1 ); + const topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ]; + const bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ]; + + const leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ]; + const rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ]; + const left = near * leftFov; + const right = near * rightFov; + + // Calculate the new camera's position offset from the + // left camera. xOffset should be roughly half `ipd`. + const zOffset = ipd / ( - leftFov + rightFov ); + const xOffset = zOffset * - leftFov; + + // TODO: Better way to apply this offset? + cameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale ); + camera.translateX( xOffset ); + camera.translateZ( zOffset ); + camera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale ); + camera.matrixWorldInverse.copy( camera.matrixWorld ).invert(); + + // Check if the projection uses an infinite far plane. + if ( projL[ 10 ] === -1 ) { + + // Use the projection matrix from the left eye. + // The camera offset is sufficient to include the view volumes + // of both eyes (assuming symmetric projections). + camera.projectionMatrix.copy( cameraL.projectionMatrix ); + camera.projectionMatrixInverse.copy( cameraL.projectionMatrixInverse ); + + } else { + + // Find the union of the frustum values of the cameras and scale + // the values so that the near plane's position does not change in world space, + // although must now be relative to the new union camera. + const near2 = near + zOffset; + const far2 = far + zOffset; + const left2 = left - xOffset; + const right2 = right + ( ipd - xOffset ); + const top2 = topFov * far / far2 * near2; + const bottom2 = bottomFov * far / far2 * near2; + + camera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 ); + camera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert(); + + } + + } + + function updateCamera( camera, parent ) { + + if ( parent === null ) { + + camera.matrixWorld.copy( camera.matrix ); + + } else { + + camera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix ); + + } + + camera.matrixWorldInverse.copy( camera.matrixWorld ).invert(); + + } + + /** + * Updates the state of the XR camera. Use this method on app level if you + * set cameraAutoUpdate` to `false`. The method requires the non-XR + * camera of the scene as a parameter. The passed in camera's transformation + * is automatically adjusted to the position of the XR camera when calling + * this method. + * + * @param {Camera} camera - The camera. + */ + this.updateCamera = function ( camera ) { + + if ( session === null ) return; + + let depthNear = camera.near; + let depthFar = camera.far; + + if ( depthSensing.texture !== null ) { + + if ( depthSensing.depthNear > 0 ) depthNear = depthSensing.depthNear; + if ( depthSensing.depthFar > 0 ) depthFar = depthSensing.depthFar; + + } + + cameraXR.near = cameraR.near = cameraL.near = depthNear; + cameraXR.far = cameraR.far = cameraL.far = depthFar; + + if ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far ) { + + // Note that the new renderState won't apply until the next frame. See #18320 + + session.updateRenderState( { + depthNear: cameraXR.near, + depthFar: cameraXR.far + } ); + + _currentDepthNear = cameraXR.near; + _currentDepthFar = cameraXR.far; + + } + + cameraL.layers.mask = camera.layers.mask | 0b010; + cameraR.layers.mask = camera.layers.mask | 0b100; + cameraXR.layers.mask = cameraL.layers.mask | cameraR.layers.mask; + + const parent = camera.parent; + const cameras = cameraXR.cameras; + + updateCamera( cameraXR, parent ); + + for ( let i = 0; i < cameras.length; i ++ ) { + + updateCamera( cameras[ i ], parent ); + + } + + // update projection matrix for proper view frustum culling + + if ( cameras.length === 2 ) { + + setProjectionFromUnion( cameraXR, cameraL, cameraR ); + + } else { + + // assume single camera setup (AR) + + cameraXR.projectionMatrix.copy( cameraL.projectionMatrix ); + + } + + // update user camera and its children + + updateUserCamera( camera, cameraXR, parent ); + + }; + + function updateUserCamera( camera, cameraXR, parent ) { + + if ( parent === null ) { + + camera.matrix.copy( cameraXR.matrixWorld ); + + } else { + + camera.matrix.copy( parent.matrixWorld ); + camera.matrix.invert(); + camera.matrix.multiply( cameraXR.matrixWorld ); + + } + + camera.matrix.decompose( camera.position, camera.quaternion, camera.scale ); + camera.updateMatrixWorld( true ); + + camera.projectionMatrix.copy( cameraXR.projectionMatrix ); + camera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse ); + + if ( camera.isPerspectiveCamera ) { + + camera.fov = RAD2DEG * 2 * Math.atan( 1 / camera.projectionMatrix.elements[ 5 ] ); + camera.zoom = 1; + + } + + } + + /** + * Returns an instance of {@link ArrayCamera} which represents the XR camera + * of the active XR session. For each view it holds a separate camera object. + * + * The camera's `fov` is currently not used and does not reflect the fov of + * the XR camera. If you need the fov on app level, you have to compute in + * manually from the XR camera's projection matrices. + * + * @return {ArrayCamera} The XR camera. + */ + this.getCamera = function () { + + return cameraXR; + + }; + + /** + * Returns the amount of foveation used by the XR compositor for the projection layer. + * + * @return {number} The amount of foveation. + */ + this.getFoveation = function () { + + if ( glProjLayer === null && glBaseLayer === null ) { + + return undefined; + + } + + return foveation; + + }; + + /** + * Sets the foveation value. + * + * @param {number} value - A number in the range `[0,1]` where `0` means no foveation (full resolution) + * and `1` means maximum foveation (the edges render at lower resolution). + */ + this.setFoveation = function ( value ) { + + // 0 = no foveation = full resolution + // 1 = maximum foveation = the edges render at lower resolution + + foveation = value; + + if ( glProjLayer !== null ) { + + glProjLayer.fixedFoveation = value; + + } + + if ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) { + + glBaseLayer.fixedFoveation = value; + + } + + }; + + /** + * Returns `true` if depth sensing is supported. + * + * @return {boolean} Whether depth sensing is supported or not. + */ + this.hasDepthSensing = function () { + + return depthSensing.texture !== null; + + }; + + /** + * Returns the depth sensing mesh. + * + * @return {Mesh} The depth sensing mesh. + */ + this.getDepthSensingMesh = function () { + + return depthSensing.getMesh( cameraXR ); + + }; + + // Animation Loop + + let onAnimationFrameCallback = null; + + function onAnimationFrame( time, frame ) { + + pose = frame.getViewerPose( customReferenceSpace || referenceSpace ); + xrFrame = frame; + + if ( pose !== null ) { + + const views = pose.views; + + if ( glBaseLayer !== null ) { + + renderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer ); + renderer.setRenderTarget( newRenderTarget ); + + } + + let cameraXRNeedsUpdate = false; + + // check if it's necessary to rebuild cameraXR's camera list + + if ( views.length !== cameraXR.cameras.length ) { + + cameraXR.cameras.length = 0; + cameraXRNeedsUpdate = true; + + } + + for ( let i = 0; i < views.length; i ++ ) { + + const view = views[ i ]; + + let viewport = null; + + if ( glBaseLayer !== null ) { + + viewport = glBaseLayer.getViewport( view ); + + } else { + + const glSubImage = glBinding.getViewSubImage( glProjLayer, view ); + viewport = glSubImage.viewport; + + // For side-by-side projection, we only produce a single texture for both eyes. + if ( i === 0 ) { + + renderer.setRenderTargetTextures( + newRenderTarget, + glSubImage.colorTexture, + glSubImage.depthStencilTexture ); + + renderer.setRenderTarget( newRenderTarget ); + + } + + } + + let camera = cameras[ i ]; + + if ( camera === undefined ) { + + camera = new PerspectiveCamera(); + camera.layers.enable( i ); + camera.viewport = new Vector4(); + cameras[ i ] = camera; + + } + + camera.matrix.fromArray( view.transform.matrix ); + camera.matrix.decompose( camera.position, camera.quaternion, camera.scale ); + camera.projectionMatrix.fromArray( view.projectionMatrix ); + camera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert(); + camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height ); + + if ( i === 0 ) { + + cameraXR.matrix.copy( camera.matrix ); + cameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale ); + + } + + if ( cameraXRNeedsUpdate === true ) { + + cameraXR.cameras.push( camera ); + + } + + } + + // + + const enabledFeatures = session.enabledFeatures; + const gpuDepthSensingEnabled = enabledFeatures && + enabledFeatures.includes( 'depth-sensing' ) && + session.depthUsage == 'gpu-optimized'; + + if ( gpuDepthSensingEnabled && glBinding ) { + + const depthData = glBinding.getDepthInformation( views[ 0 ] ); + + if ( depthData && depthData.isValid && depthData.texture ) { + + depthSensing.init( renderer, depthData, session.renderState ); + + } + + } + + } + + // + + for ( let i = 0; i < controllers.length; i ++ ) { + + const inputSource = controllerInputSources[ i ]; + const controller = controllers[ i ]; + + if ( inputSource !== null && controller !== undefined ) { + + controller.update( inputSource, frame, customReferenceSpace || referenceSpace ); + + } + + } + + if ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame ); + + if ( frame.detectedPlanes ) { + + scope.dispatchEvent( { type: 'planesdetected', data: frame } ); + + } + + xrFrame = null; + + } + + const animation = new WebGLAnimation(); + + animation.setAnimationLoop( onAnimationFrame ); + + this.setAnimationLoop = function ( callback ) { + + onAnimationFrameCallback = callback; + + }; + + this.dispose = function () {}; + + } + +} + +const _e1 = /*@__PURE__*/ new Euler(); +const _m1 = /*@__PURE__*/ new Matrix4(); + +function WebGLMaterials( renderer, properties ) { + + function refreshTransformUniform( map, uniform ) { + + if ( map.matrixAutoUpdate === true ) { + + map.updateMatrix(); + + } + + uniform.value.copy( map.matrix ); + + } + + function refreshFogUniforms( uniforms, fog ) { + + fog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) ); + + if ( fog.isFog ) { + + uniforms.fogNear.value = fog.near; + uniforms.fogFar.value = fog.far; + + } else if ( fog.isFogExp2 ) { + + uniforms.fogDensity.value = fog.density; + + } + + } + + function refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) { + + if ( material.isMeshBasicMaterial ) { + + refreshUniformsCommon( uniforms, material ); + + } else if ( material.isMeshLambertMaterial ) { + + refreshUniformsCommon( uniforms, material ); + + } else if ( material.isMeshToonMaterial ) { + + refreshUniformsCommon( uniforms, material ); + refreshUniformsToon( uniforms, material ); + + } else if ( material.isMeshPhongMaterial ) { + + refreshUniformsCommon( uniforms, material ); + refreshUniformsPhong( uniforms, material ); + + } else if ( material.isMeshStandardMaterial ) { + + refreshUniformsCommon( uniforms, material ); + refreshUniformsStandard( uniforms, material ); + + if ( material.isMeshPhysicalMaterial ) { + + refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ); + + } + + } else if ( material.isMeshMatcapMaterial ) { + + refreshUniformsCommon( uniforms, material ); + refreshUniformsMatcap( uniforms, material ); + + } else if ( material.isMeshDepthMaterial ) { + + refreshUniformsCommon( uniforms, material ); + + } else if ( material.isMeshDistanceMaterial ) { + + refreshUniformsCommon( uniforms, material ); + refreshUniformsDistance( uniforms, material ); + + } else if ( material.isMeshNormalMaterial ) { + + refreshUniformsCommon( uniforms, material ); + + } else if ( material.isLineBasicMaterial ) { + + refreshUniformsLine( uniforms, material ); + + if ( material.isLineDashedMaterial ) { + + refreshUniformsDash( uniforms, material ); + + } + + } else if ( material.isPointsMaterial ) { + + refreshUniformsPoints( uniforms, material, pixelRatio, height ); + + } else if ( material.isSpriteMaterial ) { + + refreshUniformsSprites( uniforms, material ); + + } else if ( material.isShadowMaterial ) { + + uniforms.color.value.copy( material.color ); + uniforms.opacity.value = material.opacity; + + } else if ( material.isShaderMaterial ) { + + material.uniformsNeedUpdate = false; // #15581 + + } + + } + + function refreshUniformsCommon( uniforms, material ) { + + uniforms.opacity.value = material.opacity; + + if ( material.color ) { + + uniforms.diffuse.value.copy( material.color ); + + } + + if ( material.emissive ) { + + uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity ); + + } + + if ( material.map ) { + + uniforms.map.value = material.map; + + refreshTransformUniform( material.map, uniforms.mapTransform ); + + } + + if ( material.alphaMap ) { + + uniforms.alphaMap.value = material.alphaMap; + + refreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform ); + + } + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + + refreshTransformUniform( material.bumpMap, uniforms.bumpMapTransform ); + + uniforms.bumpScale.value = material.bumpScale; + + if ( material.side === BackSide ) { + + uniforms.bumpScale.value *= -1; + + } + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + + refreshTransformUniform( material.normalMap, uniforms.normalMapTransform ); + + uniforms.normalScale.value.copy( material.normalScale ); + + if ( material.side === BackSide ) { + + uniforms.normalScale.value.negate(); + + } + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + + refreshTransformUniform( material.displacementMap, uniforms.displacementMapTransform ); + + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + if ( material.emissiveMap ) { + + uniforms.emissiveMap.value = material.emissiveMap; + + refreshTransformUniform( material.emissiveMap, uniforms.emissiveMapTransform ); + + } + + if ( material.specularMap ) { + + uniforms.specularMap.value = material.specularMap; + + refreshTransformUniform( material.specularMap, uniforms.specularMapTransform ); + + } + + if ( material.alphaTest > 0 ) { + + uniforms.alphaTest.value = material.alphaTest; + + } + + const materialProperties = properties.get( material ); + + const envMap = materialProperties.envMap; + const envMapRotation = materialProperties.envMapRotation; + + if ( envMap ) { + + uniforms.envMap.value = envMap; + + _e1.copy( envMapRotation ); + + // accommodate left-handed frame + _e1.x *= -1; _e1.y *= -1; _e1.z *= -1; + + if ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) { + + // environment maps which are not cube render targets or PMREMs follow a different convention + _e1.y *= -1; + _e1.z *= -1; + + } + + uniforms.envMapRotation.value.setFromMatrix4( _m1.makeRotationFromEuler( _e1 ) ); + + uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? -1 : 1; + + uniforms.reflectivity.value = material.reflectivity; + uniforms.ior.value = material.ior; + uniforms.refractionRatio.value = material.refractionRatio; + + } + + if ( material.lightMap ) { + + uniforms.lightMap.value = material.lightMap; + uniforms.lightMapIntensity.value = material.lightMapIntensity; + + refreshTransformUniform( material.lightMap, uniforms.lightMapTransform ); + + } + + if ( material.aoMap ) { + + uniforms.aoMap.value = material.aoMap; + uniforms.aoMapIntensity.value = material.aoMapIntensity; + + refreshTransformUniform( material.aoMap, uniforms.aoMapTransform ); + + } + + } + + function refreshUniformsLine( uniforms, material ) { + + uniforms.diffuse.value.copy( material.color ); + uniforms.opacity.value = material.opacity; + + if ( material.map ) { + + uniforms.map.value = material.map; + + refreshTransformUniform( material.map, uniforms.mapTransform ); + + } + + } + + function refreshUniformsDash( uniforms, material ) { + + uniforms.dashSize.value = material.dashSize; + uniforms.totalSize.value = material.dashSize + material.gapSize; + uniforms.scale.value = material.scale; + + } + + function refreshUniformsPoints( uniforms, material, pixelRatio, height ) { + + uniforms.diffuse.value.copy( material.color ); + uniforms.opacity.value = material.opacity; + uniforms.size.value = material.size * pixelRatio; + uniforms.scale.value = height * 0.5; + + if ( material.map ) { + + uniforms.map.value = material.map; + + refreshTransformUniform( material.map, uniforms.uvTransform ); + + } + + if ( material.alphaMap ) { + + uniforms.alphaMap.value = material.alphaMap; + + refreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform ); + + } + + if ( material.alphaTest > 0 ) { + + uniforms.alphaTest.value = material.alphaTest; + + } + + } + + function refreshUniformsSprites( uniforms, material ) { + + uniforms.diffuse.value.copy( material.color ); + uniforms.opacity.value = material.opacity; + uniforms.rotation.value = material.rotation; + + if ( material.map ) { + + uniforms.map.value = material.map; + + refreshTransformUniform( material.map, uniforms.mapTransform ); + + } + + if ( material.alphaMap ) { + + uniforms.alphaMap.value = material.alphaMap; + + refreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform ); + + } + + if ( material.alphaTest > 0 ) { + + uniforms.alphaTest.value = material.alphaTest; + + } + + } + + function refreshUniformsPhong( uniforms, material ) { + + uniforms.specular.value.copy( material.specular ); + uniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 ) + + } + + function refreshUniformsToon( uniforms, material ) { + + if ( material.gradientMap ) { + + uniforms.gradientMap.value = material.gradientMap; + + } + + } + + function refreshUniformsStandard( uniforms, material ) { + + uniforms.metalness.value = material.metalness; + + if ( material.metalnessMap ) { + + uniforms.metalnessMap.value = material.metalnessMap; + + refreshTransformUniform( material.metalnessMap, uniforms.metalnessMapTransform ); + + } + + uniforms.roughness.value = material.roughness; + + if ( material.roughnessMap ) { + + uniforms.roughnessMap.value = material.roughnessMap; + + refreshTransformUniform( material.roughnessMap, uniforms.roughnessMapTransform ); + + } + + if ( material.envMap ) { + + //uniforms.envMap.value = material.envMap; // part of uniforms common + + uniforms.envMapIntensity.value = material.envMapIntensity; + + } + + } + + function refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) { + + uniforms.ior.value = material.ior; // also part of uniforms common + + if ( material.sheen > 0 ) { + + uniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen ); + + uniforms.sheenRoughness.value = material.sheenRoughness; + + if ( material.sheenColorMap ) { + + uniforms.sheenColorMap.value = material.sheenColorMap; + + refreshTransformUniform( material.sheenColorMap, uniforms.sheenColorMapTransform ); + + } + + if ( material.sheenRoughnessMap ) { + + uniforms.sheenRoughnessMap.value = material.sheenRoughnessMap; + + refreshTransformUniform( material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform ); + + } + + } + + if ( material.clearcoat > 0 ) { + + uniforms.clearcoat.value = material.clearcoat; + uniforms.clearcoatRoughness.value = material.clearcoatRoughness; + + if ( material.clearcoatMap ) { + + uniforms.clearcoatMap.value = material.clearcoatMap; + + refreshTransformUniform( material.clearcoatMap, uniforms.clearcoatMapTransform ); + + } + + if ( material.clearcoatRoughnessMap ) { + + uniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap; + + refreshTransformUniform( material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform ); + + } + + if ( material.clearcoatNormalMap ) { + + uniforms.clearcoatNormalMap.value = material.clearcoatNormalMap; + + refreshTransformUniform( material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform ); + + uniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale ); + + if ( material.side === BackSide ) { + + uniforms.clearcoatNormalScale.value.negate(); + + } + + } + + } + + if ( material.dispersion > 0 ) { + + uniforms.dispersion.value = material.dispersion; + + } + + if ( material.iridescence > 0 ) { + + uniforms.iridescence.value = material.iridescence; + uniforms.iridescenceIOR.value = material.iridescenceIOR; + uniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ]; + uniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ]; + + if ( material.iridescenceMap ) { + + uniforms.iridescenceMap.value = material.iridescenceMap; + + refreshTransformUniform( material.iridescenceMap, uniforms.iridescenceMapTransform ); + + } + + if ( material.iridescenceThicknessMap ) { + + uniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap; + + refreshTransformUniform( material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform ); + + } + + } + + if ( material.transmission > 0 ) { + + uniforms.transmission.value = material.transmission; + uniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture; + uniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height ); + + if ( material.transmissionMap ) { + + uniforms.transmissionMap.value = material.transmissionMap; + + refreshTransformUniform( material.transmissionMap, uniforms.transmissionMapTransform ); + + } + + uniforms.thickness.value = material.thickness; + + if ( material.thicknessMap ) { + + uniforms.thicknessMap.value = material.thicknessMap; + + refreshTransformUniform( material.thicknessMap, uniforms.thicknessMapTransform ); + + } + + uniforms.attenuationDistance.value = material.attenuationDistance; + uniforms.attenuationColor.value.copy( material.attenuationColor ); + + } + + if ( material.anisotropy > 0 ) { + + uniforms.anisotropyVector.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) ); + + if ( material.anisotropyMap ) { + + uniforms.anisotropyMap.value = material.anisotropyMap; + + refreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform ); + + } + + } + + uniforms.specularIntensity.value = material.specularIntensity; + uniforms.specularColor.value.copy( material.specularColor ); + + if ( material.specularColorMap ) { + + uniforms.specularColorMap.value = material.specularColorMap; + + refreshTransformUniform( material.specularColorMap, uniforms.specularColorMapTransform ); + + } + + if ( material.specularIntensityMap ) { + + uniforms.specularIntensityMap.value = material.specularIntensityMap; + + refreshTransformUniform( material.specularIntensityMap, uniforms.specularIntensityMapTransform ); + + } + + } + + function refreshUniformsMatcap( uniforms, material ) { + + if ( material.matcap ) { + + uniforms.matcap.value = material.matcap; + + } + + } + + function refreshUniformsDistance( uniforms, material ) { + + const light = properties.get( material ).light; + + uniforms.referencePosition.value.setFromMatrixPosition( light.matrixWorld ); + uniforms.nearDistance.value = light.shadow.camera.near; + uniforms.farDistance.value = light.shadow.camera.far; + + } + + return { + refreshFogUniforms: refreshFogUniforms, + refreshMaterialUniforms: refreshMaterialUniforms + }; + +} + +function WebGLUniformsGroups( gl, info, capabilities, state ) { + + let buffers = {}; + let updateList = {}; + let allocatedBindingPoints = []; + + const maxBindingPoints = gl.getParameter( gl.MAX_UNIFORM_BUFFER_BINDINGS ); // binding points are global whereas block indices are per shader program + + function bind( uniformsGroup, program ) { + + const webglProgram = program.program; + state.uniformBlockBinding( uniformsGroup, webglProgram ); + + } + + function update( uniformsGroup, program ) { + + let buffer = buffers[ uniformsGroup.id ]; + + if ( buffer === undefined ) { + + prepareUniformsGroup( uniformsGroup ); + + buffer = createBuffer( uniformsGroup ); + buffers[ uniformsGroup.id ] = buffer; + + uniformsGroup.addEventListener( 'dispose', onUniformsGroupsDispose ); + + } + + // ensure to update the binding points/block indices mapping for this program + + const webglProgram = program.program; + state.updateUBOMapping( uniformsGroup, webglProgram ); + + // update UBO once per frame + + const frame = info.render.frame; + + if ( updateList[ uniformsGroup.id ] !== frame ) { + + updateBufferData( uniformsGroup ); + + updateList[ uniformsGroup.id ] = frame; + + } + + } + + function createBuffer( uniformsGroup ) { + + // the setup of an UBO is independent of a particular shader program but global + + const bindingPointIndex = allocateBindingPointIndex(); + uniformsGroup.__bindingPointIndex = bindingPointIndex; + + const buffer = gl.createBuffer(); + const size = uniformsGroup.__size; + const usage = uniformsGroup.usage; + + gl.bindBuffer( gl.UNIFORM_BUFFER, buffer ); + gl.bufferData( gl.UNIFORM_BUFFER, size, usage ); + gl.bindBuffer( gl.UNIFORM_BUFFER, null ); + gl.bindBufferBase( gl.UNIFORM_BUFFER, bindingPointIndex, buffer ); + + return buffer; + + } + + function allocateBindingPointIndex() { + + for ( let i = 0; i < maxBindingPoints; i ++ ) { + + if ( allocatedBindingPoints.indexOf( i ) === -1 ) { + + allocatedBindingPoints.push( i ); + return i; + + } + + } + + console.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' ); + + return 0; + + } + + function updateBufferData( uniformsGroup ) { + + const buffer = buffers[ uniformsGroup.id ]; + const uniforms = uniformsGroup.uniforms; + const cache = uniformsGroup.__cache; + + gl.bindBuffer( gl.UNIFORM_BUFFER, buffer ); + + for ( let i = 0, il = uniforms.length; i < il; i ++ ) { + + const uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ]; + + for ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) { + + const uniform = uniformArray[ j ]; + + if ( hasUniformChanged( uniform, i, j, cache ) === true ) { + + const offset = uniform.__offset; + + const values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ]; + + let arrayOffset = 0; + + for ( let k = 0; k < values.length; k ++ ) { + + const value = values[ k ]; + + const info = getUniformSize( value ); + + // TODO add integer and struct support + if ( typeof value === 'number' || typeof value === 'boolean' ) { + + uniform.__data[ 0 ] = value; + gl.bufferSubData( gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data ); + + } else if ( value.isMatrix3 ) { + + // manually converting 3x3 to 3x4 + + uniform.__data[ 0 ] = value.elements[ 0 ]; + uniform.__data[ 1 ] = value.elements[ 1 ]; + uniform.__data[ 2 ] = value.elements[ 2 ]; + uniform.__data[ 3 ] = 0; + uniform.__data[ 4 ] = value.elements[ 3 ]; + uniform.__data[ 5 ] = value.elements[ 4 ]; + uniform.__data[ 6 ] = value.elements[ 5 ]; + uniform.__data[ 7 ] = 0; + uniform.__data[ 8 ] = value.elements[ 6 ]; + uniform.__data[ 9 ] = value.elements[ 7 ]; + uniform.__data[ 10 ] = value.elements[ 8 ]; + uniform.__data[ 11 ] = 0; + + } else { + + value.toArray( uniform.__data, arrayOffset ); + + arrayOffset += info.storage / Float32Array.BYTES_PER_ELEMENT; + + } + + } + + gl.bufferSubData( gl.UNIFORM_BUFFER, offset, uniform.__data ); + + } + + } + + } + + gl.bindBuffer( gl.UNIFORM_BUFFER, null ); + + } + + function hasUniformChanged( uniform, index, indexArray, cache ) { + + const value = uniform.value; + const indexString = index + '_' + indexArray; + + if ( cache[ indexString ] === undefined ) { + + // cache entry does not exist so far + + if ( typeof value === 'number' || typeof value === 'boolean' ) { + + cache[ indexString ] = value; + + } else { + + cache[ indexString ] = value.clone(); + + } + + return true; + + } else { + + const cachedObject = cache[ indexString ]; + + // compare current value with cached entry + + if ( typeof value === 'number' || typeof value === 'boolean' ) { + + if ( cachedObject !== value ) { + + cache[ indexString ] = value; + return true; + + } + + } else { + + if ( cachedObject.equals( value ) === false ) { + + cachedObject.copy( value ); + return true; + + } + + } + + } + + return false; + + } + + function prepareUniformsGroup( uniformsGroup ) { + + // determine total buffer size according to the STD140 layout + // Hint: STD140 is the only supported layout in WebGL 2 + + const uniforms = uniformsGroup.uniforms; + + let offset = 0; // global buffer offset in bytes + const chunkSize = 16; // size of a chunk in bytes + + for ( let i = 0, l = uniforms.length; i < l; i ++ ) { + + const uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ]; + + for ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) { + + const uniform = uniformArray[ j ]; + + const values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ]; + + for ( let k = 0, kl = values.length; k < kl; k ++ ) { + + const value = values[ k ]; + + const info = getUniformSize( value ); + + const chunkOffset = offset % chunkSize; // offset in the current chunk + const chunkPadding = chunkOffset % info.boundary; // required padding to match boundary + const chunkStart = chunkOffset + chunkPadding; // the start position in the current chunk for the data + + offset += chunkPadding; + + // Check for chunk overflow + if ( chunkStart !== 0 && ( chunkSize - chunkStart ) < info.storage ) { + + // Add padding and adjust offset + offset += ( chunkSize - chunkStart ); + + } + + // the following two properties will be used for partial buffer updates + uniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT ); + uniform.__offset = offset; + + // Update the global offset + offset += info.storage; + + } + + } + + } + + // ensure correct final padding + + const chunkOffset = offset % chunkSize; + + if ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset ); + + // + + uniformsGroup.__size = offset; + uniformsGroup.__cache = {}; + + return this; + + } + + function getUniformSize( value ) { + + const info = { + boundary: 0, // bytes + storage: 0 // bytes + }; + + // determine sizes according to STD140 + + if ( typeof value === 'number' || typeof value === 'boolean' ) { + + // float/int/bool + + info.boundary = 4; + info.storage = 4; + + } else if ( value.isVector2 ) { + + // vec2 + + info.boundary = 8; + info.storage = 8; + + } else if ( value.isVector3 || value.isColor ) { + + // vec3 + + info.boundary = 16; + info.storage = 12; // evil: vec3 must start on a 16-byte boundary but it only consumes 12 bytes + + } else if ( value.isVector4 ) { + + // vec4 + + info.boundary = 16; + info.storage = 16; + + } else if ( value.isMatrix3 ) { + + // mat3 (in STD140 a 3x3 matrix is represented as 3x4) + + info.boundary = 48; + info.storage = 48; + + } else if ( value.isMatrix4 ) { + + // mat4 + + info.boundary = 64; + info.storage = 64; + + } else if ( value.isTexture ) { + + console.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' ); + + } else { + + console.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value ); + + } + + return info; + + } + + function onUniformsGroupsDispose( event ) { + + const uniformsGroup = event.target; + + uniformsGroup.removeEventListener( 'dispose', onUniformsGroupsDispose ); + + const index = allocatedBindingPoints.indexOf( uniformsGroup.__bindingPointIndex ); + allocatedBindingPoints.splice( index, 1 ); + + gl.deleteBuffer( buffers[ uniformsGroup.id ] ); + + delete buffers[ uniformsGroup.id ]; + delete updateList[ uniformsGroup.id ]; + + } + + function dispose() { + + for ( const id in buffers ) { + + gl.deleteBuffer( buffers[ id ] ); + + } + + allocatedBindingPoints = []; + buffers = {}; + updateList = {}; + + } + + return { + + bind: bind, + update: update, + + dispose: dispose + + }; + +} + +/** + * This renderer uses WebGL 2 to display scenes. + * + * WebGL 1 is not supported since `r163`. + */ +class WebGLRenderer { + + /** + * Constructs a new WebGL renderer. + * + * @param {WebGLRenderer~Options} [parameters] - The configuration parameter. + */ + constructor( parameters = {} ) { + + const { + canvas = createCanvasElement(), + context = null, + depth = true, + stencil = false, + alpha = false, + antialias = false, + premultipliedAlpha = true, + preserveDrawingBuffer = false, + powerPreference = 'default', + failIfMajorPerformanceCaveat = false, + reverseDepthBuffer = false, + } = parameters; + + /** + * This flag can be used for type testing. + * + * @type {boolean} + * @readonly + * @default true + */ + this.isWebGLRenderer = true; + + let _alpha; + + if ( context !== null ) { + + if ( typeof WebGLRenderingContext !== 'undefined' && context instanceof WebGLRenderingContext ) { + + throw new Error( 'THREE.WebGLRenderer: WebGL 1 is not supported since r163.' ); + + } + + _alpha = context.getContextAttributes().alpha; + + } else { + + _alpha = alpha; + + } + + const uintClearColor = new Uint32Array( 4 ); + const intClearColor = new Int32Array( 4 ); + + let currentRenderList = null; + let currentRenderState = null; + + // render() can be called from within a callback triggered by another render. + // We track this so that the nested render call gets its list and state isolated from the parent render call. + + const renderListStack = []; + const renderStateStack = []; + + // public properties + + /** + * A canvas where the renderer draws its output.This is automatically created by the renderer + * in the constructor (if not provided already); you just need to add it to your page like so: + * ```js + * document.body.appendChild( renderer.domElement ); + * ``` + * + * @type {DOMElement} + */ + this.domElement = canvas; + + /** + * A object with debug configuration settings. + * + * - `checkShaderErrors`: If it is `true`, defines whether material shader programs are + * checked for errors during compilation and linkage process. It may be useful to disable + * this check in production for performance gain. It is strongly recommended to keep these + * checks enabled during development. If the shader does not compile and link - it will not + * work and associated material will not render. + * - `onShaderError(gl, program, glVertexShader,glFragmentShader)`: A callback function that + * can be used for custom error reporting. The callback receives the WebGL context, an instance + * of WebGLProgram as well two instances of WebGLShader representing the vertex and fragment shader. + * Assigning a custom function disables the default error reporting. + * + * @type {Object} + */ + this.debug = { + + /** + * Enables error checking and reporting when shader programs are being compiled. + * @type {boolean} + */ + checkShaderErrors: true, + /** + * Callback for custom error reporting. + * @type {?Function} + */ + onShaderError: null + }; + + // clearing + + /** + * Whether the renderer should automatically clear its output before rendering a frame or not. + * + * @type {boolean} + * @default true + */ + this.autoClear = true; + + /** + * If {@link WebGLRenderer#autoClear} set to `true`, whether the renderer should clear + * the color buffer or not. + * + * @type {boolean} + * @default true + */ + this.autoClearColor = true; + + /** + * If {@link WebGLRenderer#autoClear} set to `true`, whether the renderer should clear + * the depth buffer or not. + * + * @type {boolean} + * @default true + */ + this.autoClearDepth = true; + + /** + * If {@link WebGLRenderer#autoClear} set to `true`, whether the renderer should clear + * the stencil buffer or not. + * + * @type {boolean} + * @default true + */ + this.autoClearStencil = true; + + // scene graph + + /** + * Whether the renderer should sort objects or not. + * + * Note: Sorting is used to attempt to properly render objects that have some + * degree of transparency. By definition, sorting objects may not work in all + * cases. Depending on the needs of application, it may be necessary to turn + * off sorting and use other methods to deal with transparency rendering e.g. + * manually determining each object's rendering order. + * + * @type {boolean} + * @default true + */ + this.sortObjects = true; + + // user-defined clipping + + /** + * User-defined clipping planes specified in world space. These planes apply globally. + * Points in space whose dot product with the plane is negative are cut away. + * + * @type {Array} + */ + this.clippingPlanes = []; + + /** + * Whether the renderer respects object-level clipping planes or not. + * + * @type {boolean} + * @default false + */ + this.localClippingEnabled = false; + + // tone mapping + + /** + * The tone mapping technique of the renderer. + * + * @type {(NoToneMapping|LinearToneMapping|ReinhardToneMapping|CineonToneMapping|ACESFilmicToneMapping|CustomToneMapping|AgXToneMapping|NeutralToneMapping)} + * @default NoToneMapping + */ + this.toneMapping = NoToneMapping; + + /** + * Exposure level of tone mapping. + * + * @type {number} + * @default 1 + */ + this.toneMappingExposure = 1.0; + + // transmission + + /** + * The normalized resolution scale for the transmission render target, measured in percentage + * of viewport dimensions. Lowering this value can result in significant performance improvements + * when using {@link MeshPhysicalMaterial#transmission}. + * + * @type {number} + * @default 1 + */ + this.transmissionResolutionScale = 1.0; + + // internal properties + + const _this = this; + + let _isContextLost = false; + + // internal state cache + + this._outputColorSpace = SRGBColorSpace; + + let _currentActiveCubeFace = 0; + let _currentActiveMipmapLevel = 0; + let _currentRenderTarget = null; + let _currentMaterialId = -1; + + let _currentCamera = null; + + const _currentViewport = new Vector4(); + const _currentScissor = new Vector4(); + let _currentScissorTest = null; + + const _currentClearColor = new Color( 0x000000 ); + let _currentClearAlpha = 0; + + // + + let _width = canvas.width; + let _height = canvas.height; + + let _pixelRatio = 1; + let _opaqueSort = null; + let _transparentSort = null; + + const _viewport = new Vector4( 0, 0, _width, _height ); + const _scissor = new Vector4( 0, 0, _width, _height ); + let _scissorTest = false; + + // frustum + + const _frustum = new Frustum(); + + // clipping + + let _clippingEnabled = false; + let _localClippingEnabled = false; + + // camera matrices cache + + const _currentProjectionMatrix = new Matrix4(); + const _projScreenMatrix = new Matrix4(); + + const _vector3 = new Vector3(); + + const _vector4 = new Vector4(); + + const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true }; + + let _renderBackground = false; + + function getTargetPixelRatio() { + + return _currentRenderTarget === null ? _pixelRatio : 1; + + } + + // initialize + + let _gl = context; + + function getContext( contextName, contextAttributes ) { + + return canvas.getContext( contextName, contextAttributes ); + + } + + try { + + const contextAttributes = { + alpha: true, + depth, + stencil, + antialias, + premultipliedAlpha, + preserveDrawingBuffer, + powerPreference, + failIfMajorPerformanceCaveat, + }; + + // OffscreenCanvas does not have setAttribute, see #22811 + if ( 'setAttribute' in canvas ) canvas.setAttribute( 'data-engine', `three.js r${REVISION}` ); + + // event listeners must be registered before WebGL context is created, see #12753 + canvas.addEventListener( 'webglcontextlost', onContextLost, false ); + canvas.addEventListener( 'webglcontextrestored', onContextRestore, false ); + canvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false ); + + if ( _gl === null ) { + + const contextName = 'webgl2'; + + _gl = getContext( contextName, contextAttributes ); + + if ( _gl === null ) { + + if ( getContext( contextName ) ) { + + throw new Error( 'Error creating WebGL context with your selected attributes.' ); + + } else { + + throw new Error( 'Error creating WebGL context.' ); + + } + + } + + } + + } catch ( error ) { + + console.error( 'THREE.WebGLRenderer: ' + error.message ); + throw error; + + } + + let extensions, capabilities, state, info; + let properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects; + let programCache, materials, renderLists, renderStates, clipping, shadowMap; + + let background, morphtargets, bufferRenderer, indexedBufferRenderer; + + let utils, bindingStates, uniformsGroups; + + function initGLContext() { + + extensions = new WebGLExtensions( _gl ); + extensions.init(); + + utils = new WebGLUtils( _gl, extensions ); + + capabilities = new WebGLCapabilities( _gl, extensions, parameters, utils ); + + state = new WebGLState( _gl, extensions ); + + if ( capabilities.reverseDepthBuffer && reverseDepthBuffer ) { + + state.buffers.depth.setReversed( true ); + + } + + info = new WebGLInfo( _gl ); + properties = new WebGLProperties(); + textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ); + cubemaps = new WebGLCubeMaps( _this ); + cubeuvmaps = new WebGLCubeUVMaps( _this ); + attributes = new WebGLAttributes( _gl ); + bindingStates = new WebGLBindingStates( _gl, attributes ); + geometries = new WebGLGeometries( _gl, attributes, info, bindingStates ); + objects = new WebGLObjects( _gl, geometries, attributes, info ); + morphtargets = new WebGLMorphtargets( _gl, capabilities, textures ); + clipping = new WebGLClipping( properties ); + programCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ); + materials = new WebGLMaterials( _this, properties ); + renderLists = new WebGLRenderLists(); + renderStates = new WebGLRenderStates( extensions ); + background = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha ); + shadowMap = new WebGLShadowMap( _this, objects, capabilities ); + uniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state ); + + bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info ); + indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info ); + + info.programs = programCache.programs; + + /** + * Holds details about the capabilities of the current rendering context. + * + * @name WebGLRenderer#capabilities + * @type {WebGLRenderer~Capabilities} + */ + _this.capabilities = capabilities; + + /** + * Provides methods for retrieving and testing WebGL extensions. + * + * - `get(extensionName:string)`: Used to check whether a WebGL extension is supported + * and return the extension object if available. + * - `has(extensionName:string)`: returns `true` if the extension is supported. + * + * @name WebGLRenderer#extensions + * @type {Object} + */ + _this.extensions = extensions; + + /** + * Used to track properties of other objects like native WebGL objects. + * + * @name WebGLRenderer#properties + * @type {Object} + */ + _this.properties = properties; + + /** + * Manages the render lists of the renderer. + * + * @name WebGLRenderer#renderLists + * @type {Object} + */ + _this.renderLists = renderLists; + + + + /** + * Interface for managing shadows. + * + * @name WebGLRenderer#shadowMap + * @type {WebGLRenderer~ShadowMap} + */ + _this.shadowMap = shadowMap; + + /** + * Interface for managing the WebGL state. + * + * @name WebGLRenderer#state + * @type {Object} + */ + _this.state = state; + + /** + * Holds a series of statistical information about the GPU memory + * and the rendering process. Useful for debugging and monitoring. + * + * By default these data are reset at each render call but when having + * multiple render passes per frame (e.g. when using post processing) it can + * be preferred to reset with a custom pattern. First, set `autoReset` to + * `false`. + * ```js + * renderer.info.autoReset = false; + * ``` + * Call `reset()` whenever you have finished to render a single frame. + * ```js + * renderer.info.reset(); + * ``` + * + * @name WebGLRenderer#info + * @type {WebGLRenderer~Info} + */ + _this.info = info; + + } + + initGLContext(); + + // xr + + const xr = new WebXRManager( _this, _gl ); + + /** + * A reference to the XR manager. + * + * @type {WebXRManager} + */ + this.xr = xr; + + /** + * Returns the rendering context. + * + * @return {WebGL2RenderingContext} The rendering context. + */ + this.getContext = function () { + + return _gl; + + }; + + /** + * Returns the rendering context attributes. + * + * @return {WebGLContextAttributes} The rendering context attributes. + */ + this.getContextAttributes = function () { + + return _gl.getContextAttributes(); + + }; + + /** + * Simulates a loss of the WebGL context. This requires support for the `WEBGL_lose_context` extension. + */ + this.forceContextLoss = function () { + + const extension = extensions.get( 'WEBGL_lose_context' ); + if ( extension ) extension.loseContext(); + + }; + + /** + * Simulates a restore of the WebGL context. This requires support for the `WEBGL_lose_context` extension. + */ + this.forceContextRestore = function () { + + const extension = extensions.get( 'WEBGL_lose_context' ); + if ( extension ) extension.restoreContext(); + + }; + + /** + * Returns the pixel ratio. + * + * @return {number} The pixel ratio. + */ + this.getPixelRatio = function () { + + return _pixelRatio; + + }; + + /** + * Sets the given pixel ratio and resizes the canvas if necessary. + * + * @param {number} value - The pixel ratio. + */ + this.setPixelRatio = function ( value ) { + + if ( value === undefined ) return; + + _pixelRatio = value; + + this.setSize( _width, _height, false ); + + }; + + /** + * Returns the renderer's size in logical pixels. This method does not honor the pixel ratio. + * + * @param {Vector2} target - The method writes the result in this target object. + * @return {Vector2} The renderer's size in logical pixels. + */ + this.getSize = function ( target ) { + + return target.set( _width, _height ); + + }; + + /** + * Resizes the output canvas to (width, height) with device pixel ratio taken + * into account, and also sets the viewport to fit that size, starting in (0, + * 0). Setting `updateStyle` to false prevents any style changes to the output canvas. + * + * @param {number} width - The width in logical pixels. + * @param {number} height - The height in logical pixels. + * @param {boolean} [updateStyle=true] - Whether to update the `style` attribute of the canvas or not. + */ + this.setSize = function ( width, height, updateStyle = true ) { + + if ( xr.isPresenting ) { + + console.warn( 'THREE.WebGLRenderer: Can\'t change size while VR device is presenting.' ); + return; + + } + + _width = width; + _height = height; + + canvas.width = Math.floor( width * _pixelRatio ); + canvas.height = Math.floor( height * _pixelRatio ); + + if ( updateStyle === true ) { + + canvas.style.width = width + 'px'; + canvas.style.height = height + 'px'; + + } + + this.setViewport( 0, 0, width, height ); + + }; + + /** + * Returns the drawing buffer size in physical pixels. This method honors the pixel ratio. + * + * @param {Vector2} target - The method writes the result in this target object. + * @return {Vector2} The drawing buffer size. + */ + this.getDrawingBufferSize = function ( target ) { + + return target.set( _width * _pixelRatio, _height * _pixelRatio ).floor(); + + }; + + /** + * This method allows to define the drawing buffer size by specifying + * width, height and pixel ratio all at once. The size of the drawing + * buffer is computed with this formula: + * ```js + * size.x = width * pixelRatio; + * size.y = height * pixelRatio; + * ``` + * + * @param {number} width - The width in logical pixels. + * @param {number} height - The height in logical pixels. + * @param {number} pixelRatio - The pixel ratio. + */ + this.setDrawingBufferSize = function ( width, height, pixelRatio ) { + + _width = width; + _height = height; + + _pixelRatio = pixelRatio; + + canvas.width = Math.floor( width * pixelRatio ); + canvas.height = Math.floor( height * pixelRatio ); + + this.setViewport( 0, 0, width, height ); + + }; + + /** + * Returns the current viewport definition. + * + * @param {Vector2} target - The method writes the result in this target object. + * @return {Vector2} The current viewport definition. + */ + this.getCurrentViewport = function ( target ) { + + return target.copy( _currentViewport ); + + }; + + /** + * Returns the viewport definition. + * + * @param {Vector4} target - The method writes the result in this target object. + * @return {Vector4} The viewport definition. + */ + this.getViewport = function ( target ) { + + return target.copy( _viewport ); + + }; + + /** + * Sets the viewport to render from `(x, y)` to `(x + width, y + height)`. + * + * @param {number | Vector4} x - The horizontal coordinate for the lower left corner of the viewport origin in logical pixel unit. + * Or alternatively a four-component vector specifying all the parameters of the viewport. + * @param {number} y - The vertical coordinate for the lower left corner of the viewport origin in logical pixel unit. + * @param {number} width - The width of the viewport in logical pixel unit. + * @param {number} height - The height of the viewport in logical pixel unit. + */ + this.setViewport = function ( x, y, width, height ) { + + if ( x.isVector4 ) { + + _viewport.set( x.x, x.y, x.z, x.w ); + + } else { + + _viewport.set( x, y, width, height ); + + } + + state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).round() ); + + }; + + /** + * Returns the scissor region. + * + * @param {Vector4} target - The method writes the result in this target object. + * @return {Vector4} The scissor region. + */ + this.getScissor = function ( target ) { + + return target.copy( _scissor ); + + }; + + /** + * Sets the scissor region to render from `(x, y)` to `(x + width, y + height)`. + * + * @param {number | Vector4} x - The horizontal coordinate for the lower left corner of the scissor region origin in logical pixel unit. + * Or alternatively a four-component vector specifying all the parameters of the scissor region. + * @param {number} y - The vertical coordinate for the lower left corner of the scissor region origin in logical pixel unit. + * @param {number} width - The width of the scissor region in logical pixel unit. + * @param {number} height - The height of the scissor region in logical pixel unit. + */ + this.setScissor = function ( x, y, width, height ) { + + if ( x.isVector4 ) { + + _scissor.set( x.x, x.y, x.z, x.w ); + + } else { + + _scissor.set( x, y, width, height ); + + } + + state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).round() ); + + }; + + /** + * Returns `true` if the scissor test is enabled. + * + * @return {boolean} Whether the scissor test is enabled or not. + */ + this.getScissorTest = function () { + + return _scissorTest; + + }; + + /** + * Enable or disable the scissor test. When this is enabled, only the pixels + * within the defined scissor area will be affected by further renderer + * actions. + * + * @param {boolean} boolean - Whether the scissor test is enabled or not. + */ + this.setScissorTest = function ( boolean ) { + + state.setScissorTest( _scissorTest = boolean ); + + }; + + /** + * Sets a custom opaque sort function for the render lists. Pass `null` + * to use the default `painterSortStable` function. + * + * @param {?Function} method - The opaque sort function. + */ + this.setOpaqueSort = function ( method ) { + + _opaqueSort = method; + + }; + + /** + * Sets a custom transparent sort function for the render lists. Pass `null` + * to use the default `reversePainterSortStable` function. + * + * @param {?Function} method - The opaque sort function. + */ + this.setTransparentSort = function ( method ) { + + _transparentSort = method; + + }; + + // Clearing + + /** + * Returns the clear color. + * + * @param {Color} target - The method writes the result in this target object. + * @return {Color} The clear color. + */ + this.getClearColor = function ( target ) { + + return target.copy( background.getClearColor() ); + + }; + + /** + * Sets the clear color and alpha. + * + * @param {Color} color - The clear color. + * @param {number} [alpha=1] - The clear alpha. + */ + this.setClearColor = function () { + + background.setClearColor( ...arguments ); + + }; + + /** + * Returns the clear alpha. Ranges within `[0,1]`. + * + * @return {number} The clear alpha. + */ + this.getClearAlpha = function () { + + return background.getClearAlpha(); + + }; + + /** + * Sets the clear alpha. + * + * @param {number} alpha - The clear alpha. + */ + this.setClearAlpha = function () { + + background.setClearAlpha( ...arguments ); + + }; + + /** + * Tells the renderer to clear its color, depth or stencil drawing buffer(s). + * This method initializes the buffers to the current clear color values. + * + * @param {boolean} [color=true] - Whether the color buffer should be cleared or not. + * @param {boolean} [depth=true] - Whether the depth buffer should be cleared or not. + * @param {boolean} [stencil=true] - Whether the stencil buffer should be cleared or not. + */ + this.clear = function ( color = true, depth = true, stencil = true ) { + + let bits = 0; + + if ( color ) { + + // check if we're trying to clear an integer target + let isIntegerFormat = false; + if ( _currentRenderTarget !== null ) { + + const targetFormat = _currentRenderTarget.texture.format; + isIntegerFormat = targetFormat === RGBAIntegerFormat || + targetFormat === RGIntegerFormat || + targetFormat === RedIntegerFormat; + + } + + // use the appropriate clear functions to clear the target if it's a signed + // or unsigned integer target + if ( isIntegerFormat ) { + + const targetType = _currentRenderTarget.texture.type; + const isUnsignedType = targetType === UnsignedByteType || + targetType === UnsignedIntType || + targetType === UnsignedShortType || + targetType === UnsignedInt248Type || + targetType === UnsignedShort4444Type || + targetType === UnsignedShort5551Type; + + const clearColor = background.getClearColor(); + const a = background.getClearAlpha(); + const r = clearColor.r; + const g = clearColor.g; + const b = clearColor.b; + + if ( isUnsignedType ) { + + uintClearColor[ 0 ] = r; + uintClearColor[ 1 ] = g; + uintClearColor[ 2 ] = b; + uintClearColor[ 3 ] = a; + _gl.clearBufferuiv( _gl.COLOR, 0, uintClearColor ); + + } else { + + intClearColor[ 0 ] = r; + intClearColor[ 1 ] = g; + intClearColor[ 2 ] = b; + intClearColor[ 3 ] = a; + _gl.clearBufferiv( _gl.COLOR, 0, intClearColor ); + + } + + } else { + + bits |= _gl.COLOR_BUFFER_BIT; + + } + + } + + if ( depth ) { + + bits |= _gl.DEPTH_BUFFER_BIT; + + } + + if ( stencil ) { + + bits |= _gl.STENCIL_BUFFER_BIT; + this.state.buffers.stencil.setMask( 0xffffffff ); + + } + + _gl.clear( bits ); + + }; + + /** + * Clears the color buffer. Equivalent to calling `renderer.clear( true, false, false )`. + */ + this.clearColor = function () { + + this.clear( true, false, false ); + + }; + + /** + * Clears the depth buffer. Equivalent to calling `renderer.clear( false, true, false )`. + */ + this.clearDepth = function () { + + this.clear( false, true, false ); + + }; + + /** + * Clears the stencil buffer. Equivalent to calling `renderer.clear( false, false, true )`. + */ + this.clearStencil = function () { + + this.clear( false, false, true ); + + }; + + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + this.dispose = function () { + + canvas.removeEventListener( 'webglcontextlost', onContextLost, false ); + canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false ); + canvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false ); + + background.dispose(); + renderLists.dispose(); + renderStates.dispose(); + properties.dispose(); + cubemaps.dispose(); + cubeuvmaps.dispose(); + objects.dispose(); + bindingStates.dispose(); + uniformsGroups.dispose(); + programCache.dispose(); + + xr.dispose(); + + xr.removeEventListener( 'sessionstart', onXRSessionStart ); + xr.removeEventListener( 'sessionend', onXRSessionEnd ); + + animation.stop(); + + }; + + // Events + + function onContextLost( event ) { + + event.preventDefault(); + + console.log( 'THREE.WebGLRenderer: Context Lost.' ); + + _isContextLost = true; + + } + + function onContextRestore( /* event */ ) { + + console.log( 'THREE.WebGLRenderer: Context Restored.' ); + + _isContextLost = false; + + const infoAutoReset = info.autoReset; + const shadowMapEnabled = shadowMap.enabled; + const shadowMapAutoUpdate = shadowMap.autoUpdate; + const shadowMapNeedsUpdate = shadowMap.needsUpdate; + const shadowMapType = shadowMap.type; + + initGLContext(); + + info.autoReset = infoAutoReset; + shadowMap.enabled = shadowMapEnabled; + shadowMap.autoUpdate = shadowMapAutoUpdate; + shadowMap.needsUpdate = shadowMapNeedsUpdate; + shadowMap.type = shadowMapType; + + } + + function onContextCreationError( event ) { + + console.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage ); + + } + + function onMaterialDispose( event ) { + + const material = event.target; + + material.removeEventListener( 'dispose', onMaterialDispose ); + + deallocateMaterial( material ); + + } + + // Buffer deallocation + + function deallocateMaterial( material ) { + + releaseMaterialProgramReferences( material ); + + properties.remove( material ); + + } + + + function releaseMaterialProgramReferences( material ) { + + const programs = properties.get( material ).programs; + + if ( programs !== undefined ) { + + programs.forEach( function ( program ) { + + programCache.releaseProgram( program ); + + } ); + + if ( material.isShaderMaterial ) { + + programCache.releaseShaderCache( material ); + + } + + } + + } + + // Buffer rendering + + this.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) { + + if ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null) + + const frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 ); + + const program = setProgram( camera, scene, geometry, material, object ); + + state.setMaterial( material, frontFaceCW ); + + // + + let index = geometry.index; + let rangeFactor = 1; + + if ( material.wireframe === true ) { + + index = geometries.getWireframeAttribute( geometry ); + + if ( index === undefined ) return; + + rangeFactor = 2; + + } + + // + + const drawRange = geometry.drawRange; + const position = geometry.attributes.position; + + let drawStart = drawRange.start * rangeFactor; + let drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor; + + if ( group !== null ) { + + drawStart = Math.max( drawStart, group.start * rangeFactor ); + drawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor ); + + } + + if ( index !== null ) { + + drawStart = Math.max( drawStart, 0 ); + drawEnd = Math.min( drawEnd, index.count ); + + } else if ( position !== undefined && position !== null ) { + + drawStart = Math.max( drawStart, 0 ); + drawEnd = Math.min( drawEnd, position.count ); + + } + + const drawCount = drawEnd - drawStart; + + if ( drawCount < 0 || drawCount === Infinity ) return; + + // + + bindingStates.setup( object, material, program, geometry, index ); + + let attribute; + let renderer = bufferRenderer; + + if ( index !== null ) { + + attribute = attributes.get( index ); + + renderer = indexedBufferRenderer; + renderer.setIndex( attribute ); + + } + + // + + if ( object.isMesh ) { + + if ( material.wireframe === true ) { + + state.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() ); + renderer.setMode( _gl.LINES ); + + } else { + + renderer.setMode( _gl.TRIANGLES ); + + } + + } else if ( object.isLine ) { + + let lineWidth = material.linewidth; + + if ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material + + state.setLineWidth( lineWidth * getTargetPixelRatio() ); + + if ( object.isLineSegments ) { + + renderer.setMode( _gl.LINES ); + + } else if ( object.isLineLoop ) { + + renderer.setMode( _gl.LINE_LOOP ); + + } else { + + renderer.setMode( _gl.LINE_STRIP ); + + } + + } else if ( object.isPoints ) { + + renderer.setMode( _gl.POINTS ); + + } else if ( object.isSprite ) { + + renderer.setMode( _gl.TRIANGLES ); + + } + + if ( object.isBatchedMesh ) { + + if ( object._multiDrawInstances !== null ) { + + // @deprecated, r174 + warnOnce( 'THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection.' ); + renderer.renderMultiDrawInstances( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount, object._multiDrawInstances ); + + } else { + + if ( ! extensions.get( 'WEBGL_multi_draw' ) ) { + + const starts = object._multiDrawStarts; + const counts = object._multiDrawCounts; + const drawCount = object._multiDrawCount; + const bytesPerElement = index ? attributes.get( index ).bytesPerElement : 1; + const uniforms = properties.get( material ).currentProgram.getUniforms(); + for ( let i = 0; i < drawCount; i ++ ) { + + uniforms.setValue( _gl, '_gl_DrawID', i ); + renderer.render( starts[ i ] / bytesPerElement, counts[ i ] ); + + } + + } else { + + renderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount ); + + } + + } + + } else if ( object.isInstancedMesh ) { + + renderer.renderInstances( drawStart, drawCount, object.count ); + + } else if ( geometry.isInstancedBufferGeometry ) { + + const maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity; + const instanceCount = Math.min( geometry.instanceCount, maxInstanceCount ); + + renderer.renderInstances( drawStart, drawCount, instanceCount ); + + } else { + + renderer.render( drawStart, drawCount ); + + } + + }; + + // Compile + + function prepareMaterial( material, scene, object ) { + + if ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) { + + material.side = BackSide; + material.needsUpdate = true; + getProgram( material, scene, object ); + + material.side = FrontSide; + material.needsUpdate = true; + getProgram( material, scene, object ); + + material.side = DoubleSide; + + } else { + + getProgram( material, scene, object ); + + } + + } + + /** + * Compiles all materials in the scene with the camera. This is useful to precompile shaders + * before the first rendering. If you want to add a 3D object to an existing scene, use the third + * optional parameter for applying the target scene. + * + * Note that the (target) scene's lighting and environment must be configured before calling this method. + * + * @param {Object3D} scene - The scene or another type of 3D object to precompile. + * @param {Camera} camera - The camera. + * @param {?Scene} [targetScene=null] - The target scene. + * @return {?Set} The precompiled materials. + */ + this.compile = function ( scene, camera, targetScene = null ) { + + if ( targetScene === null ) targetScene = scene; + + currentRenderState = renderStates.get( targetScene ); + currentRenderState.init( camera ); + + renderStateStack.push( currentRenderState ); + + // gather lights from both the target scene and the new object that will be added to the scene. + + targetScene.traverseVisible( function ( object ) { + + if ( object.isLight && object.layers.test( camera.layers ) ) { + + currentRenderState.pushLight( object ); + + if ( object.castShadow ) { + + currentRenderState.pushShadow( object ); + + } + + } + + } ); + + if ( scene !== targetScene ) { + + scene.traverseVisible( function ( object ) { + + if ( object.isLight && object.layers.test( camera.layers ) ) { + + currentRenderState.pushLight( object ); + + if ( object.castShadow ) { + + currentRenderState.pushShadow( object ); + + } + + } + + } ); + + } + + currentRenderState.setupLights(); + + // Only initialize materials in the new scene, not the targetScene. + + const materials = new Set(); + + scene.traverse( function ( object ) { + + if ( ! ( object.isMesh || object.isPoints || object.isLine || object.isSprite ) ) { + + return; + + } + + const material = object.material; + + if ( material ) { + + if ( Array.isArray( material ) ) { + + for ( let i = 0; i < material.length; i ++ ) { + + const material2 = material[ i ]; + + prepareMaterial( material2, targetScene, object ); + materials.add( material2 ); + + } + + } else { + + prepareMaterial( material, targetScene, object ); + materials.add( material ); + + } + + } + + } ); + + currentRenderState = renderStateStack.pop(); + + return materials; + + }; + + // compileAsync + + /** + * Asynchronous version of {@link WebGLRenderer#compile}. + * + * This method makes use of the `KHR_parallel_shader_compile` WebGL extension. Hence, + * it is recommended to use this version of `compile()` whenever possible. + * + * @async + * @param {Object3D} scene - The scene or another type of 3D object to precompile. + * @param {Camera} camera - The camera. + * @param {?Scene} [targetScene=null] - The target scene. + * @return {Promise} A Promise that resolves when the given scene can be rendered without unnecessary stalling due to shader compilation. + */ + this.compileAsync = function ( scene, camera, targetScene = null ) { + + const materials = this.compile( scene, camera, targetScene ); + + // Wait for all the materials in the new object to indicate that they're + // ready to be used before resolving the promise. + + return new Promise( ( resolve ) => { + + function checkMaterialsReady() { + + materials.forEach( function ( material ) { + + const materialProperties = properties.get( material ); + const program = materialProperties.currentProgram; + + if ( program.isReady() ) { + + // remove any programs that report they're ready to use from the list + materials.delete( material ); + + } + + } ); + + // once the list of compiling materials is empty, call the callback + + if ( materials.size === 0 ) { + + resolve( scene ); + return; + + } + + // if some materials are still not ready, wait a bit and check again + + setTimeout( checkMaterialsReady, 10 ); + + } + + if ( extensions.get( 'KHR_parallel_shader_compile' ) !== null ) { + + // If we can check the compilation status of the materials without + // blocking then do so right away. + + checkMaterialsReady(); + + } else { + + // Otherwise start by waiting a bit to give the materials we just + // initialized a chance to finish. + + setTimeout( checkMaterialsReady, 10 ); + + } + + } ); + + }; + + // Animation Loop + + let onAnimationFrameCallback = null; + + function onAnimationFrame( time ) { + + if ( onAnimationFrameCallback ) onAnimationFrameCallback( time ); + + } + + function onXRSessionStart() { + + animation.stop(); + + } + + function onXRSessionEnd() { + + animation.start(); + + } + + const animation = new WebGLAnimation(); + animation.setAnimationLoop( onAnimationFrame ); + + if ( typeof self !== 'undefined' ) animation.setContext( self ); + + this.setAnimationLoop = function ( callback ) { + + onAnimationFrameCallback = callback; + xr.setAnimationLoop( callback ); + + ( callback === null ) ? animation.stop() : animation.start(); + + }; + + xr.addEventListener( 'sessionstart', onXRSessionStart ); + xr.addEventListener( 'sessionend', onXRSessionEnd ); + + // Rendering + + /** + * Renders the given scene (or other type of 3D object) using the given camera. + * + * The render is done to a previously specified render target set by calling {@link WebGLRenderer#setRenderTarget} + * or to the canvas as usual. + * + * By default render buffers are cleared before rendering but you can prevent + * this by setting the property `autoClear` to `false`. If you want to prevent + * only certain buffers being cleared you can `autoClearColor`, `autoClearDepth` + * or `autoClearStencil` to `false`. To force a clear, use {@link WebGLRenderer#clear}. + * + * @param {Object3D} scene - The scene to render. + * @param {Camera} camera - The camera. + */ + this.render = function ( scene, camera ) { + + if ( camera !== undefined && camera.isCamera !== true ) { + + console.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' ); + return; + + } + + if ( _isContextLost === true ) return; + + // update scene graph + + if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld(); + + // update camera matrices and frustum + + if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld(); + + if ( xr.enabled === true && xr.isPresenting === true ) { + + if ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera ); + + camera = xr.getCamera(); // use XR camera for rendering + + } + + // + if ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget ); + + currentRenderState = renderStates.get( scene, renderStateStack.length ); + currentRenderState.init( camera ); + + renderStateStack.push( currentRenderState ); + + _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse ); + _frustum.setFromProjectionMatrix( _projScreenMatrix ); + + _localClippingEnabled = this.localClippingEnabled; + _clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled ); + + currentRenderList = renderLists.get( scene, renderListStack.length ); + currentRenderList.init(); + + renderListStack.push( currentRenderList ); + + if ( xr.enabled === true && xr.isPresenting === true ) { + + const depthSensingMesh = _this.xr.getDepthSensingMesh(); + + if ( depthSensingMesh !== null ) { + + projectObject( depthSensingMesh, camera, - Infinity, _this.sortObjects ); + + } + + } + + projectObject( scene, camera, 0, _this.sortObjects ); + + currentRenderList.finish(); + + if ( _this.sortObjects === true ) { + + currentRenderList.sort( _opaqueSort, _transparentSort ); + + } + + _renderBackground = xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false; + if ( _renderBackground ) { + + background.addToRenderList( currentRenderList, scene ); + + } + + // + + this.info.render.frame ++; + + if ( _clippingEnabled === true ) clipping.beginShadows(); + + const shadowsArray = currentRenderState.state.shadowsArray; + + shadowMap.render( shadowsArray, scene, camera ); + + if ( _clippingEnabled === true ) clipping.endShadows(); + + // + + if ( this.info.autoReset === true ) this.info.reset(); + + // render scene + + const opaqueObjects = currentRenderList.opaque; + const transmissiveObjects = currentRenderList.transmissive; + + currentRenderState.setupLights(); + + if ( camera.isArrayCamera ) { + + const cameras = camera.cameras; + + if ( transmissiveObjects.length > 0 ) { + + for ( let i = 0, l = cameras.length; i < l; i ++ ) { + + const camera2 = cameras[ i ]; + + renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera2 ); + + } + + } + + if ( _renderBackground ) background.render( scene ); + + for ( let i = 0, l = cameras.length; i < l; i ++ ) { + + const camera2 = cameras[ i ]; + + renderScene( currentRenderList, scene, camera2, camera2.viewport ); + + } + + } else { + + if ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ); + + if ( _renderBackground ) background.render( scene ); + + renderScene( currentRenderList, scene, camera ); + + } + + // + + if ( _currentRenderTarget !== null && _currentActiveMipmapLevel === 0 ) { + + // resolve multisample renderbuffers to a single-sample texture if necessary + + textures.updateMultisampleRenderTarget( _currentRenderTarget ); + + // Generate mipmap if we're using any kind of mipmap filtering + + textures.updateRenderTargetMipmap( _currentRenderTarget ); + + } + + // + + if ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera ); + + // _gl.finish(); + + bindingStates.resetDefaultState(); + _currentMaterialId = -1; + _currentCamera = null; + + renderStateStack.pop(); + + if ( renderStateStack.length > 0 ) { + + currentRenderState = renderStateStack[ renderStateStack.length - 1 ]; + + if ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, currentRenderState.state.camera ); + + } else { + + currentRenderState = null; + + } + + renderListStack.pop(); + + if ( renderListStack.length > 0 ) { + + currentRenderList = renderListStack[ renderListStack.length - 1 ]; + + } else { + + currentRenderList = null; + + } + + }; + + function projectObject( object, camera, groupOrder, sortObjects ) { + + if ( object.visible === false ) return; + + const visible = object.layers.test( camera.layers ); + + if ( visible ) { + + if ( object.isGroup ) { + + groupOrder = object.renderOrder; + + } else if ( object.isLOD ) { + + if ( object.autoUpdate === true ) object.update( camera ); + + } else if ( object.isLight ) { + + currentRenderState.pushLight( object ); + + if ( object.castShadow ) { + + currentRenderState.pushShadow( object ); + + } + + } else if ( object.isSprite ) { + + if ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) { + + if ( sortObjects ) { + + _vector4.setFromMatrixPosition( object.matrixWorld ) + .applyMatrix4( _projScreenMatrix ); + + } + + const geometry = objects.update( object ); + const material = object.material; + + if ( material.visible ) { + + currentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null ); + + } + + } + + } else if ( object.isMesh || object.isLine || object.isPoints ) { + + if ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) { + + const geometry = objects.update( object ); + const material = object.material; + + if ( sortObjects ) { + + if ( object.boundingSphere !== undefined ) { + + if ( object.boundingSphere === null ) object.computeBoundingSphere(); + _vector4.copy( object.boundingSphere.center ); + + } else { + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + _vector4.copy( geometry.boundingSphere.center ); + + } + + _vector4 + .applyMatrix4( object.matrixWorld ) + .applyMatrix4( _projScreenMatrix ); + + } + + if ( Array.isArray( material ) ) { + + const groups = geometry.groups; + + for ( let i = 0, l = groups.length; i < l; i ++ ) { + + const group = groups[ i ]; + const groupMaterial = material[ group.materialIndex ]; + + if ( groupMaterial && groupMaterial.visible ) { + + currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector4.z, group ); + + } + + } + + } else if ( material.visible ) { + + currentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null ); + + } + + } + + } + + } + + const children = object.children; + + for ( let i = 0, l = children.length; i < l; i ++ ) { + + projectObject( children[ i ], camera, groupOrder, sortObjects ); + + } + + } + + function renderScene( currentRenderList, scene, camera, viewport ) { + + const opaqueObjects = currentRenderList.opaque; + const transmissiveObjects = currentRenderList.transmissive; + const transparentObjects = currentRenderList.transparent; + + currentRenderState.setupLightsView( camera ); + + if ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera ); + + if ( viewport ) state.viewport( _currentViewport.copy( viewport ) ); + + if ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera ); + if ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera ); + if ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera ); + + // Ensure depth buffer writing is enabled so it can be cleared on next render + + state.buffers.depth.setTest( true ); + state.buffers.depth.setMask( true ); + state.buffers.color.setMask( true ); + + state.setPolygonOffset( false ); + + } + + function renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ) { + + const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null; + + if ( overrideMaterial !== null ) { + + return; + + } + + if ( currentRenderState.state.transmissionRenderTarget[ camera.id ] === undefined ) { + + currentRenderState.state.transmissionRenderTarget[ camera.id ] = new WebGLRenderTarget( 1, 1, { + generateMipmaps: true, + type: ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) ) ? HalfFloatType : UnsignedByteType, + minFilter: LinearMipmapLinearFilter, + samples: 4, + stencilBuffer: stencil, + resolveDepthBuffer: false, + resolveStencilBuffer: false, + colorSpace: ColorManagement.workingColorSpace, + } ); + + // debug + + /* + const geometry = new PlaneGeometry(); + const material = new MeshBasicMaterial( { map: _transmissionRenderTarget.texture } ); + + const mesh = new Mesh( geometry, material ); + scene.add( mesh ); + */ + + } + + const transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget[ camera.id ]; + + const activeViewport = camera.viewport || _currentViewport; + transmissionRenderTarget.setSize( activeViewport.z * _this.transmissionResolutionScale, activeViewport.w * _this.transmissionResolutionScale ); + + // + + const currentRenderTarget = _this.getRenderTarget(); + _this.setRenderTarget( transmissionRenderTarget ); + + _this.getClearColor( _currentClearColor ); + _currentClearAlpha = _this.getClearAlpha(); + if ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 ); + + _this.clear(); + + if ( _renderBackground ) background.render( scene ); + + // Turn off the features which can affect the frag color for opaque objects pass. + // Otherwise they are applied twice in opaque objects pass and transmission objects pass. + const currentToneMapping = _this.toneMapping; + _this.toneMapping = NoToneMapping; + + // Remove viewport from camera to avoid nested render calls resetting viewport to it (e.g Reflector). + // Transmission render pass requires viewport to match the transmissionRenderTarget. + const currentCameraViewport = camera.viewport; + if ( camera.viewport !== undefined ) camera.viewport = undefined; + + currentRenderState.setupLightsView( camera ); + + if ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera ); + + renderObjects( opaqueObjects, scene, camera ); + + textures.updateMultisampleRenderTarget( transmissionRenderTarget ); + textures.updateRenderTargetMipmap( transmissionRenderTarget ); + + if ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === false ) { // see #28131 + + let renderTargetNeedsUpdate = false; + + for ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) { + + const renderItem = transmissiveObjects[ i ]; + + const object = renderItem.object; + const geometry = renderItem.geometry; + const material = renderItem.material; + const group = renderItem.group; + + if ( material.side === DoubleSide && object.layers.test( camera.layers ) ) { + + const currentSide = material.side; + + material.side = BackSide; + material.needsUpdate = true; + + renderObject( object, scene, camera, geometry, material, group ); + + material.side = currentSide; + material.needsUpdate = true; + + renderTargetNeedsUpdate = true; + + } + + } + + if ( renderTargetNeedsUpdate === true ) { + + textures.updateMultisampleRenderTarget( transmissionRenderTarget ); + textures.updateRenderTargetMipmap( transmissionRenderTarget ); + + } + + } + + _this.setRenderTarget( currentRenderTarget ); + + _this.setClearColor( _currentClearColor, _currentClearAlpha ); + + if ( currentCameraViewport !== undefined ) camera.viewport = currentCameraViewport; + + _this.toneMapping = currentToneMapping; + + } + + function renderObjects( renderList, scene, camera ) { + + const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null; + + for ( let i = 0, l = renderList.length; i < l; i ++ ) { + + const renderItem = renderList[ i ]; + + const object = renderItem.object; + const geometry = renderItem.geometry; + const group = renderItem.group; + let material = renderItem.material; + + if ( material.allowOverride === true && overrideMaterial !== null ) { + + material = overrideMaterial; + + } + + if ( object.layers.test( camera.layers ) ) { + + renderObject( object, scene, camera, geometry, material, group ); + + } + + } + + } + + function renderObject( object, scene, camera, geometry, material, group ) { + + object.onBeforeRender( _this, scene, camera, geometry, material, group ); + + object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld ); + object.normalMatrix.getNormalMatrix( object.modelViewMatrix ); + + material.onBeforeRender( _this, scene, camera, geometry, object, group ); + + if ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) { + + material.side = BackSide; + material.needsUpdate = true; + _this.renderBufferDirect( camera, scene, geometry, material, object, group ); + + material.side = FrontSide; + material.needsUpdate = true; + _this.renderBufferDirect( camera, scene, geometry, material, object, group ); + + material.side = DoubleSide; + + } else { + + _this.renderBufferDirect( camera, scene, geometry, material, object, group ); + + } + + object.onAfterRender( _this, scene, camera, geometry, material, group ); + + } + + function getProgram( material, scene, object ) { + + if ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ... + + const materialProperties = properties.get( material ); + + const lights = currentRenderState.state.lights; + const shadowsArray = currentRenderState.state.shadowsArray; + + const lightsStateVersion = lights.state.version; + + const parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object ); + const programCacheKey = programCache.getProgramCacheKey( parameters ); + + let programs = materialProperties.programs; + + // always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change + + materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null; + materialProperties.fog = scene.fog; + materialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment ); + materialProperties.envMapRotation = ( materialProperties.environment !== null && material.envMap === null ) ? scene.environmentRotation : material.envMapRotation; + + if ( programs === undefined ) { + + // new material + + material.addEventListener( 'dispose', onMaterialDispose ); + + programs = new Map(); + materialProperties.programs = programs; + + } + + let program = programs.get( programCacheKey ); + + if ( program !== undefined ) { + + // early out if program and light state is identical + + if ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) { + + updateCommonMaterialProperties( material, parameters ); + + return program; + + } + + } else { + + parameters.uniforms = programCache.getUniforms( material ); + + material.onBeforeCompile( parameters, _this ); + + program = programCache.acquireProgram( parameters, programCacheKey ); + programs.set( programCacheKey, program ); + + materialProperties.uniforms = parameters.uniforms; + + } + + const uniforms = materialProperties.uniforms; + + if ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) { + + uniforms.clippingPlanes = clipping.uniform; + + } + + updateCommonMaterialProperties( material, parameters ); + + // store the light setup it was created for + + materialProperties.needsLights = materialNeedsLights( material ); + materialProperties.lightsStateVersion = lightsStateVersion; + + if ( materialProperties.needsLights ) { + + // wire up the material to this renderer's lighting state + + uniforms.ambientLightColor.value = lights.state.ambient; + uniforms.lightProbe.value = lights.state.probe; + uniforms.directionalLights.value = lights.state.directional; + uniforms.directionalLightShadows.value = lights.state.directionalShadow; + uniforms.spotLights.value = lights.state.spot; + uniforms.spotLightShadows.value = lights.state.spotShadow; + uniforms.rectAreaLights.value = lights.state.rectArea; + uniforms.ltc_1.value = lights.state.rectAreaLTC1; + uniforms.ltc_2.value = lights.state.rectAreaLTC2; + uniforms.pointLights.value = lights.state.point; + uniforms.pointLightShadows.value = lights.state.pointShadow; + uniforms.hemisphereLights.value = lights.state.hemi; + + uniforms.directionalShadowMap.value = lights.state.directionalShadowMap; + uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix; + uniforms.spotShadowMap.value = lights.state.spotShadowMap; + uniforms.spotLightMatrix.value = lights.state.spotLightMatrix; + uniforms.spotLightMap.value = lights.state.spotLightMap; + uniforms.pointShadowMap.value = lights.state.pointShadowMap; + uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix; + // TODO (abelnation): add area lights shadow info to uniforms + + } + + materialProperties.currentProgram = program; + materialProperties.uniformsList = null; + + return program; + + } + + function getUniformList( materialProperties ) { + + if ( materialProperties.uniformsList === null ) { + + const progUniforms = materialProperties.currentProgram.getUniforms(); + materialProperties.uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, materialProperties.uniforms ); + + } + + return materialProperties.uniformsList; + + } + + function updateCommonMaterialProperties( material, parameters ) { + + const materialProperties = properties.get( material ); + + materialProperties.outputColorSpace = parameters.outputColorSpace; + materialProperties.batching = parameters.batching; + materialProperties.batchingColor = parameters.batchingColor; + materialProperties.instancing = parameters.instancing; + materialProperties.instancingColor = parameters.instancingColor; + materialProperties.instancingMorph = parameters.instancingMorph; + materialProperties.skinning = parameters.skinning; + materialProperties.morphTargets = parameters.morphTargets; + materialProperties.morphNormals = parameters.morphNormals; + materialProperties.morphColors = parameters.morphColors; + materialProperties.morphTargetsCount = parameters.morphTargetsCount; + materialProperties.numClippingPlanes = parameters.numClippingPlanes; + materialProperties.numIntersection = parameters.numClipIntersection; + materialProperties.vertexAlphas = parameters.vertexAlphas; + materialProperties.vertexTangents = parameters.vertexTangents; + materialProperties.toneMapping = parameters.toneMapping; + + } + + function setProgram( camera, scene, geometry, material, object ) { + + if ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ... + + textures.resetTextureUnits(); + + const fog = scene.fog; + const environment = material.isMeshStandardMaterial ? scene.environment : null; + const colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace ); + const envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment ); + const vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4; + const vertexTangents = !! geometry.attributes.tangent && ( !! material.normalMap || material.anisotropy > 0 ); + const morphTargets = !! geometry.morphAttributes.position; + const morphNormals = !! geometry.morphAttributes.normal; + const morphColors = !! geometry.morphAttributes.color; + + let toneMapping = NoToneMapping; + + if ( material.toneMapped ) { + + if ( _currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true ) { + + toneMapping = _this.toneMapping; + + } + + } + + const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color; + const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0; + + const materialProperties = properties.get( material ); + const lights = currentRenderState.state.lights; + + if ( _clippingEnabled === true ) { + + if ( _localClippingEnabled === true || camera !== _currentCamera ) { + + const useCache = + camera === _currentCamera && + material.id === _currentMaterialId; + + // we might want to call this function with some ClippingGroup + // object instead of the material, once it becomes feasible + // (#8465, #8379) + clipping.setState( material, camera, useCache ); + + } + + } + + // + + let needsProgramChange = false; + + if ( material.version === materialProperties.__version ) { + + if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) { + + needsProgramChange = true; + + } else if ( materialProperties.outputColorSpace !== colorSpace ) { + + needsProgramChange = true; + + } else if ( object.isBatchedMesh && materialProperties.batching === false ) { + + needsProgramChange = true; + + } else if ( ! object.isBatchedMesh && materialProperties.batching === true ) { + + needsProgramChange = true; + + } else if ( object.isBatchedMesh && materialProperties.batchingColor === true && object.colorTexture === null ) { + + needsProgramChange = true; + + } else if ( object.isBatchedMesh && materialProperties.batchingColor === false && object.colorTexture !== null ) { + + needsProgramChange = true; + + } else if ( object.isInstancedMesh && materialProperties.instancing === false ) { + + needsProgramChange = true; + + } else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) { + + needsProgramChange = true; + + } else if ( object.isSkinnedMesh && materialProperties.skinning === false ) { + + needsProgramChange = true; + + } else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) { + + needsProgramChange = true; + + } else if ( object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null ) { + + needsProgramChange = true; + + } else if ( object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null ) { + + needsProgramChange = true; + + } else if ( object.isInstancedMesh && materialProperties.instancingMorph === true && object.morphTexture === null ) { + + needsProgramChange = true; + + } else if ( object.isInstancedMesh && materialProperties.instancingMorph === false && object.morphTexture !== null ) { + + needsProgramChange = true; + + } else if ( materialProperties.envMap !== envMap ) { + + needsProgramChange = true; + + } else if ( material.fog === true && materialProperties.fog !== fog ) { + + needsProgramChange = true; + + } else if ( materialProperties.numClippingPlanes !== undefined && + ( materialProperties.numClippingPlanes !== clipping.numPlanes || + materialProperties.numIntersection !== clipping.numIntersection ) ) { + + needsProgramChange = true; + + } else if ( materialProperties.vertexAlphas !== vertexAlphas ) { + + needsProgramChange = true; + + } else if ( materialProperties.vertexTangents !== vertexTangents ) { + + needsProgramChange = true; + + } else if ( materialProperties.morphTargets !== morphTargets ) { + + needsProgramChange = true; + + } else if ( materialProperties.morphNormals !== morphNormals ) { + + needsProgramChange = true; + + } else if ( materialProperties.morphColors !== morphColors ) { + + needsProgramChange = true; + + } else if ( materialProperties.toneMapping !== toneMapping ) { + + needsProgramChange = true; + + } else if ( materialProperties.morphTargetsCount !== morphTargetsCount ) { + + needsProgramChange = true; + + } + + } else { + + needsProgramChange = true; + materialProperties.__version = material.version; + + } + + // + + let program = materialProperties.currentProgram; + + if ( needsProgramChange === true ) { + + program = getProgram( material, scene, object ); + + } + + let refreshProgram = false; + let refreshMaterial = false; + let refreshLights = false; + + const p_uniforms = program.getUniforms(), + m_uniforms = materialProperties.uniforms; + + if ( state.useProgram( program.program ) ) { + + refreshProgram = true; + refreshMaterial = true; + refreshLights = true; + + } + + if ( material.id !== _currentMaterialId ) { + + _currentMaterialId = material.id; + + refreshMaterial = true; + + } + + if ( refreshProgram || _currentCamera !== camera ) { + + // common camera uniforms + + const reverseDepthBuffer = state.buffers.depth.getReversed(); + + if ( reverseDepthBuffer ) { + + _currentProjectionMatrix.copy( camera.projectionMatrix ); + + toNormalizedProjectionMatrix( _currentProjectionMatrix ); + toReversedProjectionMatrix( _currentProjectionMatrix ); + + p_uniforms.setValue( _gl, 'projectionMatrix', _currentProjectionMatrix ); + + } else { + + p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix ); + + } + + p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse ); + + const uCamPos = p_uniforms.map.cameraPosition; + + if ( uCamPos !== undefined ) { + + uCamPos.setValue( _gl, _vector3.setFromMatrixPosition( camera.matrixWorld ) ); + + } + + if ( capabilities.logarithmicDepthBuffer ) { + + p_uniforms.setValue( _gl, 'logDepthBufFC', + 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) ); + + } + + // consider moving isOrthographic to UniformLib and WebGLMaterials, see https://github.com/mrdoob/three.js/pull/26467#issuecomment-1645185067 + + if ( material.isMeshPhongMaterial || + material.isMeshToonMaterial || + material.isMeshLambertMaterial || + material.isMeshBasicMaterial || + material.isMeshStandardMaterial || + material.isShaderMaterial ) { + + p_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true ); + + } + + if ( _currentCamera !== camera ) { + + _currentCamera = camera; + + // lighting uniforms depend on the camera so enforce an update + // now, in case this material supports lights - or later, when + // the next material that does gets activated: + + refreshMaterial = true; // set to true on material change + refreshLights = true; // remains set until update done + + } + + } + + // skinning and morph target uniforms must be set even if material didn't change + // auto-setting of texture unit for bone and morph texture must go before other textures + // otherwise textures used for skinning and morphing can take over texture units reserved for other material textures + + if ( object.isSkinnedMesh ) { + + p_uniforms.setOptional( _gl, object, 'bindMatrix' ); + p_uniforms.setOptional( _gl, object, 'bindMatrixInverse' ); + + const skeleton = object.skeleton; + + if ( skeleton ) { + + if ( skeleton.boneTexture === null ) skeleton.computeBoneTexture(); + + p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures ); + + } + + } + + if ( object.isBatchedMesh ) { + + p_uniforms.setOptional( _gl, object, 'batchingTexture' ); + p_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures ); + + p_uniforms.setOptional( _gl, object, 'batchingIdTexture' ); + p_uniforms.setValue( _gl, 'batchingIdTexture', object._indirectTexture, textures ); + + p_uniforms.setOptional( _gl, object, 'batchingColorTexture' ); + if ( object._colorsTexture !== null ) { + + p_uniforms.setValue( _gl, 'batchingColorTexture', object._colorsTexture, textures ); + + } + + } + + const morphAttributes = geometry.morphAttributes; + + if ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined ) ) { + + morphtargets.update( object, geometry, program ); + + } + + if ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) { + + materialProperties.receiveShadow = object.receiveShadow; + p_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow ); + + } + + // https://github.com/mrdoob/three.js/pull/24467#issuecomment-1209031512 + + if ( material.isMeshGouraudMaterial && material.envMap !== null ) { + + m_uniforms.envMap.value = envMap; + + m_uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? -1 : 1; + + } + + if ( material.isMeshStandardMaterial && material.envMap === null && scene.environment !== null ) { + + m_uniforms.envMapIntensity.value = scene.environmentIntensity; + + } + + if ( refreshMaterial ) { + + p_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure ); + + if ( materialProperties.needsLights ) { + + // the current material requires lighting info + + // note: all lighting uniforms are always set correctly + // they simply reference the renderer's state for their + // values + // + // use the current material's .needsUpdate flags to set + // the GL state when required + + markUniformsLightsNeedsUpdate( m_uniforms, refreshLights ); + + } + + // refresh uniforms common to several materials + + if ( fog && material.fog === true ) { + + materials.refreshFogUniforms( m_uniforms, fog ); + + } + + materials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, currentRenderState.state.transmissionRenderTarget[ camera.id ] ); + + WebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures ); + + } + + if ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) { + + WebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures ); + material.uniformsNeedUpdate = false; + + } + + if ( material.isSpriteMaterial ) { + + p_uniforms.setValue( _gl, 'center', object.center ); + + } + + // common matrices + + p_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix ); + p_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix ); + p_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld ); + + // UBOs + + if ( material.isShaderMaterial || material.isRawShaderMaterial ) { + + const groups = material.uniformsGroups; + + for ( let i = 0, l = groups.length; i < l; i ++ ) { + + const group = groups[ i ]; + + uniformsGroups.update( group, program ); + uniformsGroups.bind( group, program ); + + } + + } + + return program; + + } + + // If uniforms are marked as clean, they don't need to be loaded to the GPU. + + function markUniformsLightsNeedsUpdate( uniforms, value ) { + + uniforms.ambientLightColor.needsUpdate = value; + uniforms.lightProbe.needsUpdate = value; + + uniforms.directionalLights.needsUpdate = value; + uniforms.directionalLightShadows.needsUpdate = value; + uniforms.pointLights.needsUpdate = value; + uniforms.pointLightShadows.needsUpdate = value; + uniforms.spotLights.needsUpdate = value; + uniforms.spotLightShadows.needsUpdate = value; + uniforms.rectAreaLights.needsUpdate = value; + uniforms.hemisphereLights.needsUpdate = value; + + } + + function materialNeedsLights( material ) { + + return material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial || + material.isMeshStandardMaterial || material.isShadowMaterial || + ( material.isShaderMaterial && material.lights === true ); + + } + + /** + * Returns the active cube face. + * + * @return {number} The active cube face. + */ + this.getActiveCubeFace = function () { + + return _currentActiveCubeFace; + + }; + + /** + * Returns the active mipmap level. + * + * @return {number} The active mipmap level. + */ + this.getActiveMipmapLevel = function () { + + return _currentActiveMipmapLevel; + + }; + + /** + * Returns the active render target. + * + * @return {?WebGLRenderTarget} The active render target. Returns `null` if no render target + * is currently set. + */ + this.getRenderTarget = function () { + + return _currentRenderTarget; + + }; + + this.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) { + + const renderTargetProperties = properties.get( renderTarget ); + + renderTargetProperties.__autoAllocateDepthBuffer = renderTarget.resolveDepthBuffer === false; + if ( renderTargetProperties.__autoAllocateDepthBuffer === false ) { + + // The multisample_render_to_texture extension doesn't work properly if there + // are midframe flushes and an external depth buffer. Disable use of the extension. + renderTargetProperties.__useRenderToTexture = false; + + } + + properties.get( renderTarget.texture ).__webglTexture = colorTexture; + properties.get( renderTarget.depthTexture ).__webglTexture = renderTargetProperties.__autoAllocateDepthBuffer ? undefined : depthTexture; + + renderTargetProperties.__hasExternalTextures = true; + + }; + + this.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) { + + const renderTargetProperties = properties.get( renderTarget ); + renderTargetProperties.__webglFramebuffer = defaultFramebuffer; + renderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined; + + }; + + const _scratchFrameBuffer = _gl.createFramebuffer(); + + /** + * Sets the active rendertarget. + * + * @param {?WebGLRenderTarget} renderTarget - The render target to set. When `null` is given, + * the canvas is set as the active render target instead. + * @param {number} [activeCubeFace=0] - The active cube face when using a cube render target. + * Indicates the z layer to render in to when using 3D or array render targets. + * @param {number} [activeMipmapLevel=0] - The active mipmap level. + */ + this.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) { + + _currentRenderTarget = renderTarget; + _currentActiveCubeFace = activeCubeFace; + _currentActiveMipmapLevel = activeMipmapLevel; + + let useDefaultFramebuffer = true; + let framebuffer = null; + let isCube = false; + let isRenderTarget3D = false; + + if ( renderTarget ) { + + const renderTargetProperties = properties.get( renderTarget ); + + if ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) { + + // We need to make sure to rebind the framebuffer. + state.bindFramebuffer( _gl.FRAMEBUFFER, null ); + useDefaultFramebuffer = false; + + } else if ( renderTargetProperties.__webglFramebuffer === undefined ) { + + textures.setupRenderTarget( renderTarget ); + + } else if ( renderTargetProperties.__hasExternalTextures ) { + + // Color and depth texture must be rebound in order for the swapchain to update. + textures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture ); + + } else if ( renderTarget.depthBuffer ) { + + // check if the depth texture is already bound to the frame buffer and that it's been initialized + const depthTexture = renderTarget.depthTexture; + if ( renderTargetProperties.__boundDepthTexture !== depthTexture ) { + + // check if the depth texture is compatible + if ( + depthTexture !== null && + properties.has( depthTexture ) && + ( renderTarget.width !== depthTexture.image.width || renderTarget.height !== depthTexture.image.height ) + ) { + + throw new Error( 'WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.' ); + + } + + // Swap the depth buffer to the currently attached one + textures.setupDepthRenderbuffer( renderTarget ); + + } + + } + + const texture = renderTarget.texture; + + if ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) { + + isRenderTarget3D = true; + + } + + const __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer; + + if ( renderTarget.isWebGLCubeRenderTarget ) { + + if ( Array.isArray( __webglFramebuffer[ activeCubeFace ] ) ) { + + framebuffer = __webglFramebuffer[ activeCubeFace ][ activeMipmapLevel ]; + + } else { + + framebuffer = __webglFramebuffer[ activeCubeFace ]; + + } + + isCube = true; + + } else if ( ( renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) { + + framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer; + + } else { + + if ( Array.isArray( __webglFramebuffer ) ) { + + framebuffer = __webglFramebuffer[ activeMipmapLevel ]; + + } else { + + framebuffer = __webglFramebuffer; + + } + + } + + _currentViewport.copy( renderTarget.viewport ); + _currentScissor.copy( renderTarget.scissor ); + _currentScissorTest = renderTarget.scissorTest; + + } else { + + _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor(); + _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor(); + _currentScissorTest = _scissorTest; + + } + + // Use a scratch frame buffer if rendering to a mip level to avoid depth buffers + // being bound that are different sizes. + if ( activeMipmapLevel !== 0 ) { + + framebuffer = _scratchFrameBuffer; + + } + + const framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer ); + + if ( framebufferBound && useDefaultFramebuffer ) { + + state.drawBuffers( renderTarget, framebuffer ); + + } + + state.viewport( _currentViewport ); + state.scissor( _currentScissor ); + state.setScissorTest( _currentScissorTest ); + + if ( isCube ) { + + const textureProperties = properties.get( renderTarget.texture ); + _gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel ); + + } else if ( isRenderTarget3D ) { + + const textureProperties = properties.get( renderTarget.texture ); + const layer = activeCubeFace; + _gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel, layer ); + + } else if ( renderTarget !== null && activeMipmapLevel !== 0 ) { + + // Only bind the frame buffer if we are using a scratch frame buffer to render to a mipmap. + // If we rebind the texture when using a multi sample buffer then an error about inconsistent samples will be thrown. + const textureProperties = properties.get( renderTarget.texture ); + _gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, textureProperties.__webglTexture, activeMipmapLevel ); + + } + + _currentMaterialId = -1; // reset current material to ensure correct uniform bindings + + }; + + /** + * Reads the pixel data from the given render target into the given buffer. + * + * @param {WebGLRenderTarget} renderTarget - The render target to read from. + * @param {number} x - The `x` coordinate of the copy region's origin. + * @param {number} y - The `y` coordinate of the copy region's origin. + * @param {number} width - The width of the copy region. + * @param {number} height - The height of the copy region. + * @param {TypedArray} buffer - The result buffer. + * @param {number} [activeCubeFaceIndex] - The active cube face index. + */ + this.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) { + + if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' ); + return; + + } + + let framebuffer = properties.get( renderTarget ).__webglFramebuffer; + + if ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) { + + framebuffer = framebuffer[ activeCubeFaceIndex ]; + + } + + if ( framebuffer ) { + + state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer ); + + try { + + const texture = renderTarget.texture; + const textureFormat = texture.format; + const textureType = texture.type; + + if ( ! capabilities.textureFormatReadable( textureFormat ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' ); + return; + + } + + if ( ! capabilities.textureTypeReadable( textureType ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' ); + return; + + } + + // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604) + + if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) { + + _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer ); + + } + + } finally { + + // restore framebuffer of current render target if necessary + + const framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null; + state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer ); + + } + + } + + }; + + /** + * Asynchronous, non-blocking version of {@link WebGLRenderer#readRenderTargetPixels}. + * + * It is recommended to use this version of `readRenderTargetPixels()` whenever possible. + * + * @async + * @param {WebGLRenderTarget} renderTarget - The render target to read from. + * @param {number} x - The `x` coordinate of the copy region's origin. + * @param {number} y - The `y` coordinate of the copy region's origin. + * @param {number} width - The width of the copy region. + * @param {number} height - The height of the copy region. + * @param {TypedArray} buffer - The result buffer. + * @param {number} [activeCubeFaceIndex] - The active cube face index. + * @return {Promise} A Promise that resolves when the read has been finished. The resolve provides the read data as a typed array. + */ + this.readRenderTargetPixelsAsync = async function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) { + + if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) { + + throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' ); + + } + + let framebuffer = properties.get( renderTarget ).__webglFramebuffer; + if ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) { + + framebuffer = framebuffer[ activeCubeFaceIndex ]; + + } + + if ( framebuffer ) { + + // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604) + if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) { + + // set the active frame buffer to the one we want to read + state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer ); + + const texture = renderTarget.texture; + const textureFormat = texture.format; + const textureType = texture.type; + + if ( ! capabilities.textureFormatReadable( textureFormat ) ) { + + throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.' ); + + } + + if ( ! capabilities.textureTypeReadable( textureType ) ) { + + throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.' ); + + } + + const glBuffer = _gl.createBuffer(); + _gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer ); + _gl.bufferData( _gl.PIXEL_PACK_BUFFER, buffer.byteLength, _gl.STREAM_READ ); + _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), 0 ); + + // reset the frame buffer to the currently set buffer before waiting + const currFramebuffer = _currentRenderTarget !== null ? properties.get( _currentRenderTarget ).__webglFramebuffer : null; + state.bindFramebuffer( _gl.FRAMEBUFFER, currFramebuffer ); + + // check if the commands have finished every 8 ms + const sync = _gl.fenceSync( _gl.SYNC_GPU_COMMANDS_COMPLETE, 0 ); + + _gl.flush(); + + await probeAsync( _gl, sync, 4 ); + + // read the data and delete the buffer + _gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer ); + _gl.getBufferSubData( _gl.PIXEL_PACK_BUFFER, 0, buffer ); + _gl.deleteBuffer( glBuffer ); + _gl.deleteSync( sync ); + + return buffer; + + } else { + + throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.' ); + + } + + } + + }; + + /** + * Copies pixels from the current bound framebuffer into the given texture. + * + * @param {FramebufferTexture} texture - The texture. + * @param {Vector2} position - The start position of the copy operation. + * @param {number} [level=0] - The mip level. The default represents the base mip. + */ + this.copyFramebufferToTexture = function ( texture, position = null, level = 0 ) { + + const levelScale = Math.pow( 2, - level ); + const width = Math.floor( texture.image.width * levelScale ); + const height = Math.floor( texture.image.height * levelScale ); + + const x = position !== null ? position.x : 0; + const y = position !== null ? position.y : 0; + + textures.setTexture2D( texture, 0 ); + + _gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, x, y, width, height ); + + state.unbindTexture(); + + }; + + const _srcFramebuffer = _gl.createFramebuffer(); + const _dstFramebuffer = _gl.createFramebuffer(); + + /** + * Copies data of the given source texture into a destination texture. + * + * When using render target textures as `srcTexture` and `dstTexture`, you must make sure both render targets are initialized + * {@link WebGLRenderer#initRenderTarget}. + * + * @param {Texture} srcTexture - The source texture. + * @param {Texture} dstTexture - The destination texture. + * @param {Box2|Box3} [srcRegion=null] - A bounding box which describes the source region. Can be two or three-dimensional. + * @param {Vector2|Vector3} [dstPosition=null] - A vector that represents the origin of the destination region. Can be two or three-dimensional. + * @param {number} srcLevel - The source mipmap level to copy. + * @param {number} dstLevel - The destination mipmap level. + */ + this.copyTextureToTexture = function ( srcTexture, dstTexture, srcRegion = null, dstPosition = null, srcLevel = 0, dstLevel = null ) { + + // support the previous signature with just a single dst mipmap level + if ( dstLevel === null ) { + + if ( srcLevel !== 0 ) { + + // @deprecated, r171 + warnOnce( 'WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels.' ); + dstLevel = srcLevel; + srcLevel = 0; + + } else { + + dstLevel = 0; + + } + + } + + // gather the necessary dimensions to copy + let width, height, depth, minX, minY, minZ; + let dstX, dstY, dstZ; + const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ dstLevel ] : srcTexture.image; + if ( srcRegion !== null ) { + + width = srcRegion.max.x - srcRegion.min.x; + height = srcRegion.max.y - srcRegion.min.y; + depth = srcRegion.isBox3 ? srcRegion.max.z - srcRegion.min.z : 1; + minX = srcRegion.min.x; + minY = srcRegion.min.y; + minZ = srcRegion.isBox3 ? srcRegion.min.z : 0; + + } else { + + const levelScale = Math.pow( 2, - srcLevel ); + width = Math.floor( image.width * levelScale ); + height = Math.floor( image.height * levelScale ); + if ( srcTexture.isDataArrayTexture ) { + + depth = image.depth; + + } else if ( srcTexture.isData3DTexture ) { + + depth = Math.floor( image.depth * levelScale ); + + } else { + + depth = 1; + + } + + minX = 0; + minY = 0; + minZ = 0; + + } + + if ( dstPosition !== null ) { + + dstX = dstPosition.x; + dstY = dstPosition.y; + dstZ = dstPosition.z; + + } else { + + dstX = 0; + dstY = 0; + dstZ = 0; + + } + + // Set up the destination target + const glFormat = utils.convert( dstTexture.format ); + const glType = utils.convert( dstTexture.type ); + let glTarget; + + if ( dstTexture.isData3DTexture ) { + + textures.setTexture3D( dstTexture, 0 ); + glTarget = _gl.TEXTURE_3D; + + } else if ( dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture ) { + + textures.setTexture2DArray( dstTexture, 0 ); + glTarget = _gl.TEXTURE_2D_ARRAY; + + } else { + + textures.setTexture2D( dstTexture, 0 ); + glTarget = _gl.TEXTURE_2D; + + } + + _gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY ); + _gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha ); + _gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment ); + + // used for copying data from cpu + const currentUnpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH ); + const currentUnpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT ); + const currentUnpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS ); + const currentUnpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS ); + const currentUnpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES ); + + _gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width ); + _gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height ); + _gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, minX ); + _gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, minY ); + _gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, minZ ); + + // set up the src texture + const isSrc3D = srcTexture.isDataArrayTexture || srcTexture.isData3DTexture; + const isDst3D = dstTexture.isDataArrayTexture || dstTexture.isData3DTexture; + if ( srcTexture.isDepthTexture ) { + + const srcTextureProperties = properties.get( srcTexture ); + const dstTextureProperties = properties.get( dstTexture ); + const srcRenderTargetProperties = properties.get( srcTextureProperties.__renderTarget ); + const dstRenderTargetProperties = properties.get( dstTextureProperties.__renderTarget ); + state.bindFramebuffer( _gl.READ_FRAMEBUFFER, srcRenderTargetProperties.__webglFramebuffer ); + state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, dstRenderTargetProperties.__webglFramebuffer ); + + for ( let i = 0; i < depth; i ++ ) { + + // if the source or destination are a 3d target then a layer needs to be bound + if ( isSrc3D ) { + + _gl.framebufferTextureLayer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, properties.get( srcTexture ).__webglTexture, srcLevel, minZ + i ); + _gl.framebufferTextureLayer( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, properties.get( dstTexture ).__webglTexture, dstLevel, dstZ + i ); + + } + + _gl.blitFramebuffer( minX, minY, width, height, dstX, dstY, width, height, _gl.DEPTH_BUFFER_BIT, _gl.NEAREST ); + + } + + state.bindFramebuffer( _gl.READ_FRAMEBUFFER, null ); + state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null ); + + } else if ( srcLevel !== 0 || srcTexture.isRenderTargetTexture || properties.has( srcTexture ) ) { + + // get the appropriate frame buffers + const srcTextureProperties = properties.get( srcTexture ); + const dstTextureProperties = properties.get( dstTexture ); + + // bind the frame buffer targets + state.bindFramebuffer( _gl.READ_FRAMEBUFFER, _srcFramebuffer ); + state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, _dstFramebuffer ); + + for ( let i = 0; i < depth; i ++ ) { + + // assign the correct layers and mip maps to the frame buffers + if ( isSrc3D ) { + + _gl.framebufferTextureLayer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, srcTextureProperties.__webglTexture, srcLevel, minZ + i ); + + } else { + + _gl.framebufferTexture2D( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, srcTextureProperties.__webglTexture, srcLevel ); + + } + + if ( isDst3D ) { + + _gl.framebufferTextureLayer( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, dstTextureProperties.__webglTexture, dstLevel, dstZ + i ); + + } else { + + _gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, dstTextureProperties.__webglTexture, dstLevel ); + + } + + // copy the data using the fastest function that can achieve the copy + if ( srcLevel !== 0 ) { + + _gl.blitFramebuffer( minX, minY, width, height, dstX, dstY, width, height, _gl.COLOR_BUFFER_BIT, _gl.NEAREST ); + + } else if ( isDst3D ) { + + _gl.copyTexSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ + i, minX, minY, width, height ); + + } else { + + _gl.copyTexSubImage2D( glTarget, dstLevel, dstX, dstY, minX, minY, width, height ); + + } + + } + + // unbind read, draw buffers + state.bindFramebuffer( _gl.READ_FRAMEBUFFER, null ); + state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null ); + + } else { + + if ( isDst3D ) { + + // copy data into the 3d texture + if ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) { + + _gl.texSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image.data ); + + } else if ( dstTexture.isCompressedArrayTexture ) { + + _gl.compressedTexSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, image.data ); + + } else { + + _gl.texSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image ); + + } + + } else { + + // copy data into the 2d texture + if ( srcTexture.isDataTexture ) { + + _gl.texSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, width, height, glFormat, glType, image.data ); + + } else if ( srcTexture.isCompressedTexture ) { + + _gl.compressedTexSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, image.width, image.height, glFormat, image.data ); + + } else { + + _gl.texSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, width, height, glFormat, glType, image ); + + } + + } + + } + + // reset values + _gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, currentUnpackRowLen ); + _gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, currentUnpackImageHeight ); + _gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, currentUnpackSkipPixels ); + _gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, currentUnpackSkipRows ); + _gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, currentUnpackSkipImages ); + + // Generate mipmaps only when copying level 0 + if ( dstLevel === 0 && dstTexture.generateMipmaps ) { + + _gl.generateMipmap( glTarget ); + + } + + state.unbindTexture(); + + }; + + this.copyTextureToTexture3D = function ( srcTexture, dstTexture, srcRegion = null, dstPosition = null, level = 0 ) { + + // @deprecated, r170 + warnOnce( 'WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use "copyTextureToTexture" instead.' ); + + return this.copyTextureToTexture( srcTexture, dstTexture, srcRegion, dstPosition, level ); + + }; + + /** + * Initializes the given WebGLRenderTarget memory. Useful for initializing a render target so data + * can be copied into it using {@link WebGLRenderer#copyTextureToTexture} before it has been + * rendered to. + * + * @param {WebGLRenderTarget} target - The render target. + */ + this.initRenderTarget = function ( target ) { + + if ( properties.get( target ).__webglFramebuffer === undefined ) { + + textures.setupRenderTarget( target ); + + } + + }; + + /** + * Initializes the given texture. Useful for preloading a texture rather than waiting until first + * render (which can cause noticeable lags due to decode and GPU upload overhead). + * + * @param {Texture} texture - The texture. + */ + this.initTexture = function ( texture ) { + + if ( texture.isCubeTexture ) { + + textures.setTextureCube( texture, 0 ); + + } else if ( texture.isData3DTexture ) { + + textures.setTexture3D( texture, 0 ); + + } else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) { + + textures.setTexture2DArray( texture, 0 ); + + } else { + + textures.setTexture2D( texture, 0 ); + + } + + state.unbindTexture(); + + }; + + /** + * Can be used to reset the internal WebGL state. This method is mostly + * relevant for applications which share a single WebGL context across + * multiple WebGL libraries. + */ + this.resetState = function () { + + _currentActiveCubeFace = 0; + _currentActiveMipmapLevel = 0; + _currentRenderTarget = null; + + state.reset(); + bindingStates.reset(); + + }; + + if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) { + + __THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); + + } + + } + + /** + * Defines the coordinate system of the renderer. + * + * In `WebGLRenderer`, the value is always `WebGLCoordinateSystem`. + * + * @type {WebGLCoordinateSystem|WebGPUCoordinateSystem} + * @default WebGLCoordinateSystem + * @readonly + */ + get coordinateSystem() { + + return WebGLCoordinateSystem; + + } + + /** + * Defines the output color space of the renderer. + * + * @type {SRGBColorSpace|LinearSRGBColorSpace} + * @default SRGBColorSpace + */ + get outputColorSpace() { + + return this._outputColorSpace; + + } + + set outputColorSpace( colorSpace ) { + + this._outputColorSpace = colorSpace; + + const gl = this.getContext(); + gl.drawingBufferColorSpace = ColorManagement._getDrawingBufferColorSpace( colorSpace ); + gl.unpackColorSpace = ColorManagement._getUnpackColorSpace(); + + } + +} + +export { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, ArrayCamera, BackSide, BoxGeometry, BufferAttribute, BufferGeometry, ByteType, CineonToneMapping, ClampToEdgeWrapping, Color, ColorManagement, ConstantAlphaFactor, ConstantColorFactor, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeUVReflectionMapping, CullFaceBack, CullFaceFront, CullFaceNone, CustomBlending, CustomToneMapping, Data3DTexture, DataArrayTexture, DepthFormat, DepthStencilFormat, DepthTexture, DoubleSide, DstAlphaFactor, DstColorFactor, EqualCompare, EqualDepth, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, FloatType, FrontSide, Frustum, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, HalfFloatType, IntType, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, LuminanceAlphaFormat, LuminanceFormat, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NoBlending, NoColorSpace, NoToneMapping, NormalBlending, NotEqualCompare, NotEqualDepth, ObjectSpaceNormalMap, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, PerspectiveCamera, Plane, PlaneGeometry, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReverseSubtractEquation, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, ShaderChunk, ShaderLib, ShaderMaterial, ShortType, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, SubtractEquation, SubtractiveBlending, TangentSpaceNormalMap, Texture, Uint16BufferAttribute, Uint32BufferAttribute, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WebXRController, ZeroFactor, createCanvasElement };

    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 ASO5S3 literal 0 HcmV?d00001 diff --git a/web/assets/gen/tex-velvet-curtain.jpg b/web/assets/gen/tex-velvet-curtain.jpg new file mode 100644 index 0000000000000000000000000000000000000000..31e3e94818aaefc166b87d358acad91205c33249 GIT binary patch literal 60354 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 z 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 literal 0 HcmV?d00001 diff --git a/web/assets/gen/tex-wood-counter.jpg b/web/assets/gen/tex-wood-counter.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c6cbd693826634eb81439d14a6639077f9ad6215 GIT binary patch literal 43874 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 b{{WDRf4y6}&-{QjfBN=s=UY#7O#}bg@c7i~ literal 0 HcmV?d00001 diff --git a/web/assets/gen/sky-summer-storm.jpg b/web/assets/gen/sky-summer-storm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4749ac8258f95a699f0be4650f14e15aa27323e GIT binary patch literal 76801 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�-MtEO#`03XX69;~e9PKr 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%0DpnsqSjoj}Yo}eV*brQ9C@YBVqD89t>dhRZ)z3 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 V$Nss+Uc6T-QeDq3Uh}g*|Jf}@iPiuB literal 0 HcmV?d00001 diff --git a/web/assets/gen/ground-gravel.jpg b/web/assets/gen/ground-gravel.jpg new file mode 100644 index 0000000000000000000000000000000000000000..098cf7de0947745a2df2b358a22ae8be7b693a95 GIT binary patch literal 79825 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