diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f06f684..33e9a8c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,6 +33,9 @@ jobs: - name: Install locked dependencies run: npm ci + - name: Install Playwright Chromium + run: npx playwright install --with-deps chromium + - name: Run the canonical release gate run: npm run check:release diff --git a/.vscodeignore b/.vscodeignore index 2f3eb0f..e3fefa3 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -47,10 +47,6 @@ vsc-extension-quickstart.md **/*.pem **/*.key node_modules/** -!node_modules/3dmol/build/3Dmol-min.js -!node_modules/3dmol/build/3Dmol-min.js.LICENSE.txt -!node_modules/ngl/dist/ngl.js -!node_modules/plotly.js-dist-min/plotly.min.js !node_modules/vscode-languageclient/** !node_modules/vscode-languageserver-protocol/** !node_modules/vscode-jsonrpc/** diff --git a/CHANGELOG.md b/CHANGELOG.md index f93d3c5..2793da8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,16 @@ ## [0.0.1] - Unreleased +### Added + +- Completed the bundled production 3Dmol workflow: atom and bond editing, VASP selective-dynamics constraints, undo/redo, bounded supercells, trajectory playback, PNG and native-structure export, and limited source writeback for XYZ/extXYZ/PDB/CIF/POSCAR/CONTCAR. +- Connected the production viewer command to the compute-worker parser, structure LRU cache, and incremental document parser. +- Added real VASP, CP2K, and Quantum ESPRESSO calculator commands plus Jobs sidebar execution, cancellation, restart, captured-result viewing/export, output trajectory routing, and guarded Multiwfn/c2x/Open Babel recovery. +- Added deterministic 10,000- and 100,000-atom fixtures, desktop/narrow source and packaged visual smoke, and calculator/job/analyzer cancellation and failure coverage. + ### Changed +- Structures with at most 10,000 atoms retain the full editing surface. Larger structures use a deterministic 10,000-atom read-only LOD with editing, labels, measurements, trajectory playback, and supercell generation explicitly disabled. +- Removed unconsumed renderer, plot-library, and visualization auto-open settings. External analyzer and calculator settings are now backed by runtime consumers. - Set the release identity to `newtontech.openqc@0.0.1` with display name `OpenQC - DFT/MD/Quantum Chemistry Suite`. - Standardized development and release automation on Node 22 with a locked local `@vscode/vsce`. - Added a reproducible release gate that emits a verified VSIX, SHA-256 checksum, and CycloneDX SBOM. @@ -20,11 +29,13 @@ JSON-RPC request IDs and normalizing missing optional dependencies and tool failures. ## [3.0.6] - 2026-03-05 + ## [3.0.7] - 2026-03-05 ### Added - Phase 5: Caching & Incremental Parsing ✅ #### Cache Manager Module + - **src/performance/cacheManager.ts** - Comprehensive LRU caching system with TTL support - `LRUCache` - Generic LRU cache implementation - TTL (Time-To-Live) support for automatic expiration @@ -36,6 +47,7 @@ - Hash-based integrity checks #### Cache Key Generator + - **CacheKeyGenerator** - Smart cache key generation - File-based keys using mtime for invalidation - Operation-specific keys (parse, convert, validate, calculate) @@ -43,6 +55,7 @@ - Automatic handling of missing files (test environment support) #### Cache Manager + - **CacheManager** - Global cache management singleton - Separate caches for different use cases: - Structure cache (50MB, 200 entries) @@ -54,6 +67,7 @@ - Automatic disposal on extension shutdown #### Incremental Parser Module + - **src/performance/incrementalParser.ts** - Smart parsing for large files - `IncrementalParser` - Generic incremental parser - Change detection between document versions @@ -64,6 +78,7 @@ - Parse result caching with metadata #### Incremental Parsing Features + - **ChangeSet** - Track document changes - Added ranges - Removed ranges @@ -75,6 +90,7 @@ - Change detection #### Incremental Parsing Manager + - **IncrementalParsingManager** - Centralized parser management - Language-specific parser registration - Automatic document parsing delegation @@ -83,6 +99,7 @@ - Support for custom parse and diff functions #### Performance Module Index + - **src/performance/index.ts** - Unified exports - Lazy loading module - WebWorker module @@ -91,6 +108,7 @@ - IncrementalParser module (NEW) #### Testing + - **tests/performance/cacheManager.test.ts** - 22 comprehensive tests - LRUCache basic operations (set, get, delete, clear, has) - LRU eviction behavior @@ -103,6 +121,7 @@ - Bulk cache clearing ### Performance Improvements + - **Cache hit rate optimization**: LRU eviction keeps frequently accessed data - **Automatic cleanup**: Expired entries removed every 5 minutes - **Disk persistence**: Cache survives extension restarts @@ -111,6 +130,7 @@ - **Statistics dashboard**: Real-time cache performance monitoring ### Phase 5 Progress: 75% Complete + - ✅ Lazy loading for large structures - ✅ WebWorker for background computations - ✅ Caching system with LRU and TTL (NEW) @@ -121,6 +141,7 @@ - ⏳ Video tutorials (Pending) ### Technical Details + - Total implementation: ~550 lines of TypeScript code - Test coverage: 22 tests, 100% passing - Cache capacity: 90MB total across 4 caches @@ -128,15 +149,16 @@ - Cleanup interval: 5 minutes (configurable) ### Next Steps + - Memory optimization for 10k+ atom systems - Prepare marketplace publishing package - Update documentation website - Create video tutorials - ### Added - Phase 2 Complete: Export Modified Structures ✅ #### Structure Export Functionality + - **src/utils/structureExporter.ts** - Complete structure export system - Export to 12 formats: VASP, CP2K, QE, Gaussian, ORCA, NWChem, GAMESS, LAMMPS, XYZ, extXYZ, PDB, CIF - VSCode command: `openqc.exportStructure` - Quick export with format picker @@ -147,6 +169,7 @@ - Python backend integration via `structure_writer.py` #### Python Backend + - **python/openqc/ase/structure_writer.py** - New CLI tool for writing structures - Accepts JSON atoms data from TypeScript frontend - Support for all ASE write formats @@ -155,25 +178,29 @@ - JSON result reporting #### VSCode Commands + - Export current 3D structure to file - Export with format picker (12 formats supported) - Automatic file extension based on format - Save dialog integration #### Type Definitions + - `ExportFormat` - Supported export format types - `ExportOptions` - Configuration for export operations - `StructureData` - Structure data model for export - `ExportResult` - Result of export operations #### Testing -- **src/utils/__tests__/structureExporter.test.ts** - 17 comprehensive tests + +- **src/utils/**tests**/structureExporter.test.ts** - 17 comprehensive tests - Format display name tests (12 formats) - Supported formats listing tests - Cell parameter conversion tests - Structure to ASE format conversion tests ### Phase 2 Complete ✅ + - Phase 2: Visualization - 100% Complete - ✅ Three.js integration - ✅ POSCAR/CONTCAR rendering @@ -184,6 +211,7 @@ - ✅ Export modified structures (NEW - COMPLETE) ### Next Steps + - Phase 5: Advanced Features & Polish (50% → Next priority) - Caching and incremental parsing - Memory optimization for 10k+ atom systems @@ -192,11 +220,13 @@ - Video tutorials --- + ## [3.0.5] - 2026-03-05 ### Added - Interactive 3D Editing (Phase 2: Week 7-8) #### InteractiveControls Module + - **src/visualizers/InteractiveControls.ts** - Comprehensive interactive 3D editing system - Click-to-select atoms with visual highlighting - Multi-selection support (Ctrl/Cmd click) @@ -209,6 +239,7 @@ - Visual measurement labels and lines #### ThreeJsRenderer Integration + - Integrated InteractiveControls with ThreeJsRenderer - New methods: - `enableInteractiveControls()` - Enable interactive editing mode @@ -221,12 +252,14 @@ - `setMeasurements()` - Toggle measurement display #### Type Definitions + - Added `SelectionState` - Track selected/hovered atoms - Added `MeasurementResult` - Distance/angle/dihedral measurements - Added `EditOperation` - Track edit operations - Added `InteractiveConfig` - Configuration for interactive features #### Testing + - **tests/unit/visualizers/InteractiveControls.test.ts** - 31 comprehensive tests - Initialization tests - Atom selection/deselection tests @@ -237,6 +270,7 @@ - Edge case handling ### Updated Phase 2 Status + - Phase 2: Visualization - 85% Complete - ✅ Three.js integration - ✅ POSCAR/CONTCAR rendering @@ -252,10 +286,12 @@ ### Fixed - Test Suite and Coverage Improvements #### Bug Fixes + - Fixed VASP INCAR file detection in MDWorkflowConverter to accept files starting with 'INCAR' (not just exact match or 'INCAR-') - Fixed integration test timeout for VASP → XYZ → VASP round-trip test (increased to 30s) #### Test Coverage Improvements + - Excluded InteractiveControls.ts from coverage (interactive 3D component requiring browser environment) - Excluded LSPDiscovery.ts from coverage (requires GitHub API network access) - All 850 tests passing @@ -266,6 +302,7 @@ - Lines: 91.89% (threshold: 90%) #### Configuration Updates + - Updated jest.config.js to exclude additional files from coverage collection --- @@ -275,6 +312,7 @@ ### Added - Test Coverage Improvements #### OpenQCConverterProvider Tests + - Complete test suite with 17 tests added - Constructor tests for view type and extension URI - Webview initialization tests (options, HTML content, message handlers) @@ -283,6 +321,7 @@ - JavaScript message passing tests #### Coverage Improvements + - sidebar module: 85.84% → 98.17% (+12.33%) - OpenQCConverterProvider.ts: 0% → 100% (+100%) - Overall Statements: 83.69% → 85.35% (+1.66%) @@ -291,6 +330,7 @@ - Overall Functions: 88.29% → 90.73% (+2.44%) #### Test Results + - All 729 tests passing (17 new tests added) - Test suites: 43 passed @@ -301,22 +341,26 @@ ### Fixed - Test Suite Improvements #### Integration Tests + - Fixed migration validation tests path resolution - Added extxyz format support for cell-preserving round-trip tests - Handle unsupported ASE write formats (QE, CP2K) gracefully - Skip tests when backend is unavailable #### Python ASE Converter + - Handle non-JSON-serializable objects in atoms.info (e.g., Spacegroup) - Added extxyz format to supported formats for better cell preservation #### Performance Tests + - Fixed LRU cache eviction test with correct size calculations - Fixed access order test to properly verify LRU behavior - Fixed invalidation validator logic - Made workerManager timeout test more resilient to timing variations #### Test Results + - All 712 tests passing - Test suites: 42 passed @@ -329,27 +373,30 @@ All ASE integration features have been verified and confirmed production-ready. #### Verification Summary + - **Phase 1: ASE Atoms Converter** ✅ 100% Complete (All 8 formats) - **Phase 2: Calculator Integration** ✅ 100% Complete (VASP/CP2K/QE) - **Phase 3: Workflow Migration** ✅ 100% Complete (30/30 tests passing) - **Phase 4: Complex Properties** ✅ 100% Complete #### Code Quality Metrics + - Test Coverage: 30/30 workflow migration tests passing - TypeScript Tests: 682/694 passing (98.3%) - Total Implementation: ~92KB Python + ~40KB TypeScript #### Documentation + - Closed Issue #11 (duplicate of #12) - Verified all implementation files - Confirmed production readiness --- - ### Added - Phase 5: Performance Features (Continued) #### WebWorker Module (Week 20-21) + - **src/performance/computeWorker.ts** - WebWorker for heavy computations - `ComputeWorker` class for background computation tasks - Support for 5 task types: parse, convert, validate, calculate, migrate @@ -396,7 +443,6 @@ All ASE integration features have been verified and confirmed production-ready. - Parameter migration tests - Error handling tests - Performance tracking tests - - **tests/performance/workerManager.test.ts** - 15 comprehensive tests - Task submission tests - Task management tests @@ -406,12 +452,14 @@ All ASE integration features have been verified and confirmed production-ready. - Singleton instance tests ### Performance Module Coverage + - **computeWorker.ts**: 90.44% statement coverage - **workerManager.ts**: 73.4% statement coverage - **lazyLoading.ts**: 76.92% statement coverage - **Overall module**: 82.83% statement coverage ### Phase Status + - ✅ Phase 1: Foundation (100%) - ✅ Phase 2: Visualization (75%) - ✅ Phase 2.5: Dynamic LSP Discovery (100%) @@ -420,7 +468,9 @@ All ASE integration features have been verified and confirmed production-ready. - ⏳ Phase 5: Advanced Features & Polish (50% - Lazy loading + WebWorker complete) ### Next Steps + Phase 5 remaining tasks: + - Caching and incremental parsing - Memory optimization for 10k+ atom systems @@ -432,6 +482,7 @@ Phase 5 remaining tasks: - Factory pattern for singleton management #### AI Commands (Issue #14 - Phase 4) + - **aiCommands.ts** - VSCode commands for AI features - `openqc.aiOptimizeInput` - Optimize input file parameters with AI - `openqc.aiGenerateInput` - Generate input from natural language description @@ -440,6 +491,7 @@ Phase 5 remaining tasks: - `openqc.aiSettings` - Configure AI settings #### Python AI Backend (Issue #14 - Phase 4) + - **python/openqc/ai/** module with: - `client.py` - LLM client for OpenAI and Ollama - `prompts.py` - Quantum chemistry-specific prompt templates @@ -447,6 +499,7 @@ Phase 5 remaining tasks: - Support for 7 quantum chemistry codes (VASP, CP2K, QE, Gaussian, ORCA, NWChem, GAMESS) #### AI Configuration + - VSCode settings for AI: - `openqc.ai.enabled` - Enable/disable AI features - `openqc.ai.provider` - Select provider (openai/ollama) @@ -457,6 +510,7 @@ Phase 5 remaining tasks: - `openqc.ai.temperature` - Response creativity #### Testing + - **AICore.test.ts** - Comprehensive unit tests (100% coverage) - Configuration loading and validation - Provider switching (OpenAI/Ollama) @@ -464,6 +518,7 @@ Phase 5 remaining tasks: - Mock LLM responses ### Phase Completion Status + - ✅ Phase 1: Foundation (100%) - ✅ Phase 2: Visualization (75% - Three.js complete) - ✅ Phase 2.5: Dynamic LSP Discovery (100%) @@ -472,7 +527,9 @@ Phase 5 remaining tasks: - ⏳ Phase 5: Advanced Features & Polish (Next) ### Next Steps + Phase 5 will focus on: + - Performance optimization - User experience refinement - Extension marketplace listing @@ -480,7 +537,6 @@ Phase 5 will focus on: --- - ## [3.0.0] - 2026-03-04 ### Major Release - ASE Integration Complete (Phase 3) @@ -490,6 +546,7 @@ OpenQC-VSCode now features complete ASE (Atomic Simulation Environment) integrat ### Completed - Phase 3: ASE Integration & Cross-Code Migration #### All Phase 3 Deliverables ✅ + - **ASE Atoms Converter Module** (Issue #12 - Phase 1) - VASP POSCAR ↔ ASE Atoms - CP2K input ↔ ASE Atoms @@ -528,6 +585,7 @@ OpenQC-VSCode now features complete ASE (Atomic Simulation Environment) integrat - Parameter consistency checks ### Technical Achievements + - 698 lines of workflow migration code in `core/openqc/workflow.py` - 515 lines of comprehensive tests in `tests/test_workflow_migration.py` - Support for 8 quantum chemistry codes @@ -535,6 +593,7 @@ OpenQC-VSCode now features complete ASE (Atomic Simulation Environment) integrat - Complete integration test coverage ### Phase Completion Status + - ✅ Phase 1: Foundation (100%) - ✅ Phase 2: Visualization (75% - Three.js complete) - ✅ Phase 2.5: Dynamic LSP Discovery (100%) @@ -542,7 +601,9 @@ OpenQC-VSCode now features complete ASE (Atomic Simulation Environment) integrat - ⏳ Phase 4: AI Assistance (Next priority) ### Next Steps + Phase 4 will focus on AI-powered features: + - LLM integration for input file optimization - Natural language to input file generation - Intelligent parameter suggestions @@ -555,12 +616,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - ## [2.7.0] - 2026-03-04 ### Added - Three.js 3D Visualization (Phase 2) #### Three.js Integration + - **ThreeJsRenderer.ts** - Core Three.js molecular structure renderer - WebGL-based 3D rendering with Three.js - Support for ball-and-stick, space-filling, wireframe modes @@ -578,11 +639,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **types.ts** - TypeScript definitions for elements, colors, radii #### Testing + - Unit tests for ThreeJsRenderer (100% core coverage) - Integration tests for visualization pipeline - Mock WebGL context for Node.js testing ### Phase 2 Progress + - ✅ Three.js integration - COMPLETE - ✅ POSCAR/CONTCAR rendering - COMPLETE - ✅ Camera controls - COMPLETE @@ -594,6 +657,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - ASE Calculator Integration (Issue #12 - Phase 3) #### ASE Calculator Interface + - **ASECalculator.ts** - TypeScript interface to ASE calculators - Calculator factory pattern for code-agnostic interface - Support for VASP, CP2K, and Quantum ESPRESSO calculators @@ -610,6 +674,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Calculator availability checker #### Python Backend for Calculators + - **python/openqc/ase/calculator.py** - ASE calculator backend - VASP input generation (INCAR, POSCAR, KPOINTS, POTCAR) - CP2K input generation with complete FORCE_EVAL section @@ -621,6 +686,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - MD/Optimization Workflow Migration (Issue #12 - Phase 3) #### Workflow Migration System + - **core/openqc/workflow.py** - Complete cross-code workflow parameter conversion - Migrate molecular dynamics parameters between VASP, CP2K, Quantum ESPRESSO, Gaussian, ORCA, and LAMMPS - Migrate geometry optimization parameters including convergence criteria and optimizer settings @@ -631,6 +697,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Code-specific notes and migration recommendations #### MD Parameter Migration + - Migrate MD parameters: temperature, pressure, timestep, steps, thermostats - Thermostat support: Nose-Hoover, Langevin, Berendsen, Velocity Scaling - Code-specific MD settings: @@ -640,6 +707,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - LAMMPS: run_style, timestep, run, fix_nvt, fix_langevin #### Optimization Parameter Migration + - Migrate optimization parameters: convergence criteria, max steps, optimizers - Default convergence values per code - Optimizer mapping between codes (BFGS, CG, RFO, GDIIS, etc.) @@ -651,6 +719,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - ORCA: method, basis, job_type, energy/grad thresholds #### Workflow Extraction + - Detect workflow type from input files - Extract parameters from VASP INCAR files - Extract parameters from Gaussian .com files @@ -662,6 +731,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Migration Validation Suite (Issue #12 - Phase 3.5) #### Migration Validation Tests + - **tests/integration/migrationValidation.test.ts** - Comprehensive validation tests - Round-trip conversion tests (VASP↔CP2K↔QE) - Structure preservation validation @@ -687,6 +757,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Complex Property Handling (Issue #12 - Phase 4) #### Complex Property Mapper + - **ComplexPropertyMapper.ts** - Property mapping between codes - Hubbard U parameter mapping (VASP, CP2K, QE) - DFT+U parameter conversion with Dudarev scheme support @@ -697,6 +768,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Code-specific parameter generation #### Python Backend for Complex Properties + - **python/openqc/ase/complex_properties.py** - Property conversion backend - HubbardUConverter - DFT+U parameter conversion - ConstraintConverter - Atom constraint conversion @@ -707,6 +779,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - QE Hubbard_U card generation #### Property Mapping Features + - **Hubbard U Parameters** - Angular momentum (s, p, d, f) support - U and J parameter mapping @@ -742,6 +815,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Technical Details #### Architecture + - TypeScript interface layer for VSCode integration - Python backend for ASE calculator operations - Factory pattern for code-agnostic calculator access @@ -749,6 +823,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Result parsing with error handling #### Supported Codes + - VASP (5.4.4+): Complete calculator support - CP2K (8.2+): Complete calculator support - Quantum ESPRESSO (7.2+): Complete calculator support @@ -757,6 +832,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - LAMMPS: Workflow migration support #### File Format Support + - VASP: INCAR, POSCAR, KPOINTS, POTCAR, OUTCAR, vasprun.xml - CP2K: .inp, .out, .restart - QE: .in, .out, .save @@ -773,6 +849,7 @@ OpenQC-VSCode is now a universal platform supporting 7 major quantum chemistry p ### Added #### Core Features + - **Universal LSP Support** - Automatic detection and management of language servers for CP2K, VASP, Gaussian, ORCA, Quantum ESPRESSO, GAMESS, and NWChem - **Molecular Visualization** - Interactive 3D structure rendering with 3Dmol.js - Multiple visualization styles: stick, sphere, line, cartoon diff --git a/README.md b/README.md index d2d207b..ff6cc8d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ **VS Code integration for computational chemistry LSPs** -*Syntax, file detection, visualization entry points, and LSP startup for 17 computational chemistry and molecular-simulation formats* +_Syntax, file detection, visualization entry points, and LSP startup for 17 computational chemistry and molecular-simulation formats_ Release identity: `newtontech.openqc@0.0.1` (`OpenQC - DFT/MD/Quantum Chemistry Suite`) @@ -41,47 +41,47 @@ OpenQC tracks latest LSP support by the upstream default branch recorded in `src > For per-server parser status, diagnostics, completion, hover, formatting, code actions, and build commands, see the **[LSP Compatibility Matrix](docs/LSP_COMPATIBILITY.md)**. -| Format | Standalone LSP | OpenQC role | -|--------|----------------|-------------| -| ABACUS | `newtontech/abacus-lsp` | Language contribution, syntax, file detection, LSP startup | -| ABINIT | `newtontech/abinit-lsp` | Language contribution, syntax, file detection, LSP startup | -| CIF | `newtontech/cif-lsp` | Language contribution, syntax, file detection, LSP startup | -| CP2K | `newtontech/cp2k-lsp-enhanced` | Language contribution, syntax, file detection, LSP startup | -| VASP | `newtontech/VASP-LSP` | Language contribution, syntax, file detection, LSP startup | -| Gaussian | `newtontech/gaussian-lsp` | Language contribution, syntax, file detection, LSP startup | -| ORCA | `newtontech/orca-lsp` | Language contribution, syntax, file detection, LSP startup | -| GAMESS (US) | `newtontech/gamess-lsp` | Language contribution, syntax, file detection, LSP startup | -| Quantum ESPRESSO | `newtontech/qe-lsp` | Language contribution, syntax, file detection, LSP startup | -| NWChem | `newtontech/nwchem-lsp` | Language contribution, syntax, file detection, LSP startup | -| GPUMD | `newtontech/gpumd-lsp` | Language contribution, syntax, file detection, LSP startup | -| GROMACS | `newtontech/gromacs-lsp` | Language contribution, syntax, file detection, LSP startup | -| LAMMPS | `newtontech/lammps-lsp` | Language contribution, syntax, file detection, LSP startup | -| MLIP | `newtontech/mlip-lsp` | Language contribution, syntax, file detection, LSP startup | -| PyATB | `newtontech/pyatb-lsp` | Language contribution, syntax, file detection, LSP startup | -| PySCF | `newtontech/pyscf-lsp` | Language contribution, syntax, file detection, LSP startup | -| DP-GEN | `newtontech/dpgen-lsp` | Language contribution, syntax, file detection, LSP startup | +| Format | Standalone LSP | OpenQC role | +| ---------------- | ------------------------------ | ---------------------------------------------------------- | +| ABACUS | `newtontech/abacus-lsp` | Language contribution, syntax, file detection, LSP startup | +| ABINIT | `newtontech/abinit-lsp` | Language contribution, syntax, file detection, LSP startup | +| CIF | `newtontech/cif-lsp` | Language contribution, syntax, file detection, LSP startup | +| CP2K | `newtontech/cp2k-lsp-enhanced` | Language contribution, syntax, file detection, LSP startup | +| VASP | `newtontech/VASP-LSP` | Language contribution, syntax, file detection, LSP startup | +| Gaussian | `newtontech/gaussian-lsp` | Language contribution, syntax, file detection, LSP startup | +| ORCA | `newtontech/orca-lsp` | Language contribution, syntax, file detection, LSP startup | +| GAMESS (US) | `newtontech/gamess-lsp` | Language contribution, syntax, file detection, LSP startup | +| Quantum ESPRESSO | `newtontech/qe-lsp` | Language contribution, syntax, file detection, LSP startup | +| NWChem | `newtontech/nwchem-lsp` | Language contribution, syntax, file detection, LSP startup | +| GPUMD | `newtontech/gpumd-lsp` | Language contribution, syntax, file detection, LSP startup | +| GROMACS | `newtontech/gromacs-lsp` | Language contribution, syntax, file detection, LSP startup | +| LAMMPS | `newtontech/lammps-lsp` | Language contribution, syntax, file detection, LSP startup | +| MLIP | `newtontech/mlip-lsp` | Language contribution, syntax, file detection, LSP startup | +| PyATB | `newtontech/pyatb-lsp` | Language contribution, syntax, file detection, LSP startup | +| PySCF | `newtontech/pyscf-lsp` | Language contribution, syntax, file detection, LSP startup | +| DP-GEN | `newtontech/dpgen-lsp` | Language contribution, syntax, file detection, LSP startup | ### Supported Integrations -| Software | File Types | Features | -|----------|-----------|----------| -| **ABACUS** | `INPUT`, `STRU`, `KPT` | LSP startup + syntax + file detection | -| **ABINIT** | `.abi`, `.abinit` | LSP startup + syntax + file detection | -| **CIF** | `.cif` | LSP startup + syntax + file detection | -| **CP2K** | `.inp` | LSP startup + syntax + file detection | -| **VASP** | `INCAR`, `POSCAR`, `KPOINTS`, `POTCAR` | LSP startup + syntax + file detection | -| **Gaussian** | `.com`, `.gjf` | LSP startup + syntax + file detection | -| **ORCA** | `.inp` | LSP startup + syntax + file detection | -| **Quantum ESPRESSO** | `.in`, `.pw.in`, `.relax.in` | LSP startup + syntax + file detection | -| **GAMESS (US)** | `.inp` | LSP startup + syntax + file detection | -| **NWChem** | `.nw`, `.nwinp` | LSP startup + syntax + file detection | -| **GPUMD** | `run.in`, `nep.in` | LSP startup + syntax + file detection | -| **GROMACS** | `.top`, `.itp`, `.mdp`, `.gro` | LSP startup + syntax + file detection | -| **LAMMPS** | `.lmp`, `.lammps`, `.lmps` | LSP startup + syntax + file detection | -| **MLIP** | `.mlip.json`, `.mlip.yaml`, `.mlip.yml` | LSP startup + syntax + file detection | -| **PyATB** | `.pyatb.py`, `run_pyatb.py` | LSP startup + syntax + file detection | -| **PySCF** | `.pyscf.py`, `run_pyscf.py` | LSP startup + syntax + file detection | -| **DP-GEN** | `param.json`, `machine.json` | LSP startup + syntax + file detection | +| Software | File Types | Features | +| -------------------- | --------------------------------------- | ------------------------------------- | +| **ABACUS** | `INPUT`, `STRU`, `KPT` | LSP startup + syntax + file detection | +| **ABINIT** | `.abi`, `.abinit` | LSP startup + syntax + file detection | +| **CIF** | `.cif` | LSP startup + syntax + file detection | +| **CP2K** | `.inp` | LSP startup + syntax + file detection | +| **VASP** | `INCAR`, `POSCAR`, `KPOINTS`, `POTCAR` | LSP startup + syntax + file detection | +| **Gaussian** | `.com`, `.gjf` | LSP startup + syntax + file detection | +| **ORCA** | `.inp` | LSP startup + syntax + file detection | +| **Quantum ESPRESSO** | `.in`, `.pw.in`, `.relax.in` | LSP startup + syntax + file detection | +| **GAMESS (US)** | `.inp` | LSP startup + syntax + file detection | +| **NWChem** | `.nw`, `.nwinp` | LSP startup + syntax + file detection | +| **GPUMD** | `run.in`, `nep.in` | LSP startup + syntax + file detection | +| **GROMACS** | `.top`, `.itp`, `.mdp`, `.gro` | LSP startup + syntax + file detection | +| **LAMMPS** | `.lmp`, `.lammps`, `.lmps` | LSP startup + syntax + file detection | +| **MLIP** | `.mlip.json`, `.mlip.yaml`, `.mlip.yml` | LSP startup + syntax + file detection | +| **PyATB** | `.pyatb.py`, `run_pyatb.py` | LSP startup + syntax + file detection | +| **PySCF** | `.pyscf.py`, `run_pyscf.py` | LSP startup + syntax + file detection | +| **DP-GEN** | `param.json`, `machine.json` | LSP startup + syntax + file detection | ### 🚧 Coming Soon @@ -103,8 +103,10 @@ Open supported molecule or structure-bearing files and use the viewer entry poin - **Rotate, zoom, and pan** to explore your system - **Multiple rendering styles** — ball-and-stick, space-filling, wireframe -- **Real-time preview** — see changes as you edit -- Support for **molecules, crystals, and surfaces** +- **Full editing through 10,000 atoms** — add/delete/move atoms, edit bond order, set VASP selective-dynamics constraints, undo/redo, build bounded supercells, and export or write supported native formats back to source +- **Explicit large-structure mode** — structures above 10,000 atoms use a deterministic 10,000-atom read-only LOD; labels, measurements, trajectory playback, supercells, and editing are disabled in that mode +- Support for coordinate/cell rendering of **molecules, crystals, and surface/slab structures** +- Optimization trajectories can be routed from supported calculation outputs into the viewer; this is not a general trajectory-file analysis suite ### 📊 Analyze Your Calculations @@ -125,7 +127,8 @@ Extract and visualize key data from your output files: ### 🗂️ Organize Your Work - Built-in **Molecules sidebar** to track your systems -- **Job tracking** panel for monitoring calculations +- **Job tracking** for real VASP, CP2K, and Quantum ESPRESSO calculator runs, including captured results, cancellation, restart, and JSON export +- Guarded recovery flows for locally installed Multiwfn, c2x, and Open Babel analyzers - Quick access to recent files and projects --- @@ -161,7 +164,8 @@ Use the 📊 icon to plot your calculation data. ## 🎨 Gallery ### Molecular Visualization -*See your molecules come to life with interactive 3D rendering* + +_See your molecules come to life with interactive 3D rendering_ ``` ┌─────────────────────────────────────┐ @@ -176,7 +180,8 @@ Use the 📊 icon to plot your calculation data. ``` ### Syntax Highlighting -*Your input files, beautifully formatted* + +_Your input files, beautifully formatted_ ``` &FORCE_EVAL @@ -201,17 +206,16 @@ OpenQC works out of the box, but you can customize it: ```json { - // Auto-open visualization when opening files - "openqc.visualization.autoOpen": true, - - // Your preferred rendering engine - "openqc.visualization.moleculeRenderer": "3Dmol.js", - - // Auto-refresh sidebar views - "openqc.sidebar.autoRefresh": true + "openqc.calculators.vasp.command": "vasp_std", + "openqc.calculators.cp2k.command": "cp2k.psmp", + "openqc.calculators.qe.command": "pw.x", + "openqc.external.allowExternalAnalyzers": false, + "openqc.external.timeoutMs": 60000 } ``` +The production viewer is the bundled 3Dmol runtime. Previous renderer, plot-library, and auto-open settings were removed because they were not consumed by runtime code. External analyzers remain disabled by default and require a local executable plus an explicit confirmation. + ### Secure AI providers OpenQC can use the OpenAI Responses API or a local Ollama server for input optimization, @@ -232,21 +236,25 @@ missing package return a structured JSON-RPC error without terminating the serve ## 💡 Use Cases ### For Computational Chemists + - **Prepare inputs** faster with syntax highlighting and validation - **Visualize structures** before submitting jobs - **Debug convergence** issues with interactive plots ### For Experimentalists + - **Inspect computational models** shared by collaborators - **Understand output** from quantum chemistry calculations - **Prepare structures** for computational studies ### For Students & Educators + - **Learn quantum chemistry** with visual feedback - **Understand input formats** with syntax highlighting - **Explore molecular systems** interactively ### For Software Developers + - **Build tools** on top of OpenQC's parsing capabilities - **Integrate** with your computational workflows - **Extend** support for additional software @@ -256,18 +264,21 @@ missing package return a structured JSON-RPC error without terminating the serve ## 🌟 What's Coming? ### Near Term (v2.1) + - [ ] Format conversion between different quantum chemistry formats - [ ] Batch processing — visualize multiple structures at once - [ ] Export high-resolution images for publications - [ ] Custom color schemes and rendering options ### Medium Term (v2.5) + - [ ] Real-time calculation monitoring - [ ] Remote workflow documentation using existing VS Code capabilities - [ ] Parameter templates and wizards - [ ] Community examples for common calculation workflows ### Long Term (v3.0) + - [x] AI-powered parameter optimization with OpenAI and Ollama - [x] Natural language input generation - [ ] Workflow automation diff --git a/docs/agent-memory.md b/docs/agent-memory.md index d7b634a..058a257 100644 --- a/docs/agent-memory.md +++ b/docs/agent-memory.md @@ -1,5 +1,16 @@ # Agent Memory +## 2026-07-16: Viewer and calculation workflow closure + +- Issue #238 is implemented on `agent/issue-238-viewer-workflows`; the branch also merges the completed issue #236 release pipeline through `d14151c`. +- The production 3Dmol viewer now supports bounded editing, selective-dynamics constraints, undo/redo, supercells, trajectories, PNG/native export, and limited source writeback. Structures above 10,000 atoms use a deterministic, explicit read-only 10,000-atom LOD. +- Viewer loading now consumes the compute worker, structure LRU cache, and incremental parser. Calculator, Jobs, analyzer, output-result, cancellation, restart, trajectory, and export paths are wired to real handlers. +- 3Dmol, NGL, and Plotly runtime bundles are vendored under `media/vendor`; they remain development dependencies and must not be re-included from `node_modules` in `.vscodeignore`. +- The release verifier must require the `media/vendor` bundle paths. Packaged visual smoke extracts `vsix/openqc-0.0.1.vsix` and uses those exact runtime files. +- Final local gates use `make format`, `make lint`, `make typecheck`, `make test`, and `make check`, plus source and packaged visual smoke. The only lint output is the existing non-error curly warning in `src/agent/OpenQCToolRegistry.ts`. +- The installed Node 22 binary was killed by the host before startup, so local commands ran on Node 26 with an engine warning; CI and release workflows enforce Node 22. +- Ubuntu CI must install Playwright Chromium after `npm ci`. On software WebGL, `waitForFunction` can time out after the viewer marker is already `ready`; accept only a directly re-read `ready` marker, then retain screenshot pixel validation so genuine boot/error states still fail. + ## 2026-07-16 - Issue #237 - The production AI bridge must launch `openqc.ai.client` with `python -m`; eager imports from @@ -10,6 +21,5 @@ JSON-RPC validation, request IDs, and normalized optional-dependency errors in one module. - The PR contract recognizes test evidence only when the body contains `Tests`, `Test Plan`, or `TDD Evidence`; a generic `Validation` heading does not satisfy the check. -- `make lint` is currently blocked by 544 pre-existing Ruff errors under `core/`. `make test` - reaches a missing `pytest` executable and a nonexistent `core/tests/unit` path after the Jest - unit suite passes; use the maintained root Python tests plus npm/Jest gates for this slice. +- After issue #236 retired the duplicate `core/` tree, the combined AI/MCP and release baseline + passes the maintained format, lint, typecheck, Jest, Python bridge, and release-candidate gates. diff --git a/jest.config.js b/jest.config.js index 7ba5930..a9ec81d 100644 --- a/jest.config.js +++ b/jest.config.js @@ -5,12 +5,15 @@ module.exports = { transform: { '^.+\\.ts$': ['ts-jest', { tsconfig: 'tsconfig.tests.json' }], }, - roots: [''], + roots: ['/tests'], testMatch: ['**/tests/**/*.test.ts'], testPathIgnorePatterns: [ '/.worktrees/', + '/.vscode-test/', + '/out/', '/tests/unit/visualizers/ThreeJsRenderer.test.ts', ], + modulePathIgnorePatterns: ['/.worktrees/', '/.vscode-test/', '/out/'], moduleNameMapper: { '^vscode$': '/tests/mocks/vscode.ts', }, diff --git a/media/openqc-viewer.css b/media/openqc-viewer.css index c1fc035..707bfa8 100644 --- a/media/openqc-viewer.css +++ b/media/openqc-viewer.css @@ -88,10 +88,87 @@ body { border-radius: 2px; } +#editing-controls { + display: flex; + align-items: center; + gap: 6px; + flex-wrap: wrap; + padding: 5px 8px; + background-color: var(--vscode-editorHoverWidget-background, #2a2a2a); + border-bottom: 1px solid var(--vscode-panel-border, #3c3c3c); + flex-shrink: 0; +} + +#editing-controls label, +#dirty-indicator, +#bond-count { + font-size: 11px; + color: var(--vscode-descriptionForeground, #999999); +} + +#editing-controls input { + background-color: var(--vscode-input-background, #3c3c3c); + color: var(--vscode-input-foreground, #cccccc); + border: 1px solid var(--vscode-input-border, #3c3c3c); + padding: 2px 4px; + font-size: 11px; + border-radius: 2px; +} + +#edit-element { + width: 42px; + text-align: center; +} + +#editing-controls input[type="number"] { + width: 58px; +} + +#editing-controls input[type="checkbox"] { + width: 14px; + height: 14px; + padding: 0; +} + +.constraint-toggle { + display: inline-flex; + align-items: center; + gap: 3px; +} + +#editing-controls .select { + height: 22px; + padding: 2px 4px; + font-size: 11px; +} + +.editing-separator { + width: 1px; + height: 18px; + background-color: var(--vscode-panel-border, #3c3c3c); + margin: 0 2px; +} + +#dirty-indicator { + min-width: 44px; + text-align: center; +} + +#bond-count { + min-width: 48px; + text-align: center; +} + +#dirty-indicator.dirty { + color: var(--vscode-gitDecoration-modifiedResourceForeground, #e2c08d); +} + #viewer-canvas { + position: relative; flex: 1; width: 100%; min-height: 200px; + overflow: hidden; } #status-bar { diff --git a/media/openqc-viewer.js b/media/openqc-viewer.js index 92315e4..4c08633 100644 --- a/media/openqc-viewer.js +++ b/media/openqc-viewer.js @@ -11,6 +11,8 @@ * showCell { enabled: boolean } * resetCamera {} * exportSnapshot {} + * exportEditedStructure {} + * saveEditedStructureToSource {} */ (function () { @@ -25,6 +27,17 @@ let currentStructure = null; let cellShape = null; let autoRotate = false; + let labelsVisible = false; + let measurementMode = false; + let selectedAtoms = []; + let playbackInterval = null; + let editorState = null; + let renderedStructure = null; + let viewerMode = 'editable'; + + const EDIT_HISTORY_LIMIT = 50; + const FULL_EDIT_ATOM_LIMIT = 10000; + const LOD_RENDER_ATOM_LIMIT = 10000; // ----------------------------------------------------------------------- // Initialization @@ -65,15 +78,41 @@ // ----------------------------------------------------------------------- // Structure loading // ----------------------------------------------------------------------- - function loadStructure(structureJson) { + async function loadStructure(structureJson, options = {}) { if (!viewer) return; try { - const structure = JSON.parse(structureJson); + if (!options.keepPlayback) { + stopPlayback(); + } + + const structure = normalizeEditableStructure(JSON.parse(structureJson)); + const loadPlan = createViewerLoadPlan(structure); + viewerMode = loadPlan.mode; + renderedStructure = loadPlan.renderStructure; + const selectedIndex = options.keepSelection + ? normalizeSelectionIndex(options.selectedIndex ?? getPrimarySelectedIndex(), structure) + : -1; + currentStructure = structure; + if (viewerMode === 'readonly-lod') { + editorState = null; + } else if (!options.preserveEditing) { + editorState = createEditorState(structure, selectedIndex); + } else if (editorState) { + editorState = finalizeEditingState({ + ...editorState, + structure: cloneValue(structure), + selectedIndex, + }); + } + selectedAtoms = viewerMode === 'editable' ? selectedAtomArray(structure, selectedIndex) : []; // Convert OpenQCStructure to XYZ for 3Dmol - const xyz = structureToXYZ(structure); + if (viewerMode === 'readonly-lod') { + await yieldToMainThread(); + } + const xyz = structureToXYZ(renderedStructure); viewer.removeAllModels(); viewer.removeAllSurfaces(); @@ -82,9 +121,10 @@ // Add model from XYZ currentModel = viewer.addModel(xyz, 'xyz'); + setupAtomPicking(viewerMode === 'editable'); // Apply default style - applyStyle('ball-stick'); + applyStyle(viewerMode === 'editable' ? 'ball-stick' : 'lod'); // Show cell if periodic if (structure.cell) { @@ -92,22 +132,23 @@ renderCell(structure.cell); } else { showPeriodicControls(false); - if (cellShape) { - viewer.removeAllShapes(); - cellShape = null; - } + renderSceneShapes(false); } // Show trajectory controls if frames present - if (structure.frames && structure.frames.length > 0) { + if (viewerMode === 'editable' && structure.frames && structure.frames.length > 0) { showTrajectoryControls(structure); + } else if (!options.keepPlayback) { + hideTrajectoryControls(); } + renderLabels(); viewer.zoomTo(); viewer.render(); - updateAtomCount(structure.atoms.length); - showStatus(`Loaded ${structure.atoms.length} atoms${structure.kind === 'periodic' ? ' (periodic)' : ''}`); + updateAtomCount(structure.atoms.length, loadPlan.renderedAtomCount); + updateEditingControls(); + showStatus(loadPlan.status); } catch (e) { showError('Failed to load structure: ' + e.message); } @@ -123,13 +164,53 @@ return xyz; } + function createViewerLoadPlan(structure) { + const atomCount = structure?.atoms?.length || 0; + if (atomCount <= FULL_EDIT_ATOM_LIMIT) { + return { + mode: 'editable', + atomCount, + renderedAtomCount: atomCount, + renderStructure: structure, + status: `Loaded ${atomCount} atoms${structure.kind === 'periodic' ? ' (periodic)' : ''}; full editing enabled`, + }; + } + + const sampledAtoms = deterministicAtomSample(structure.atoms, LOD_RENDER_ATOM_LIMIT); + return { + mode: 'readonly-lod', + atomCount, + renderedAtomCount: sampledAtoms.length, + renderStructure: { + ...structure, + atoms: sampledAtoms, + bonds: [], + frames: undefined, + }, + status: `Read-only LOD: rendered ${sampledAtoms.length} of ${atomCount} atoms; editing, labels, measurements, trajectory, and supercell are disabled`, + }; + } + + function deterministicAtomSample(atoms, limit) { + if (!Array.isArray(atoms) || atoms.length <= limit) return Array.isArray(atoms) ? atoms : []; + const sampleSize = Math.max(2, Math.floor(limit)); + return Array.from({ length: sampleSize }, (_, index) => { + const sourceIndex = Math.floor((index * (atoms.length - 1)) / (sampleSize - 1)); + return atoms[sourceIndex]; + }); + } + + function yieldToMainThread() { + return new Promise(resolve => setTimeout(resolve, 0)); + } + function cartesianAtomsForRendering(structure) { const atoms = structure.atoms || []; if (!structure.cell || structure.cell.coordinateMode !== 'fractional') { - return atoms.map((atom) => ({ ...atom })); + return atoms.map(atom => ({ ...atom })); } - return atoms.map((atom) => { + return atoms.map(atom => { const [x, y, z] = fractionalToCartesian([atom.x, atom.y, atom.z], structure.cell); return { ...atom, x, y, z }; }); @@ -150,40 +231,78 @@ function applyStyle(style) { if (!currentModel) return; + const explicitBonds = hasExplicitBonds(renderedStructure); viewer.setStyle({}, {}); // Clear switch (style) { case 'ball-stick': - viewer.setStyle({}, { - stick: { radius: 0.15, colorscheme: 'Jmol' }, - sphere: { scale: 0.3, colorscheme: 'Jmol' }, - }); + viewer.setStyle( + {}, + explicitBonds + ? { sphere: { scale: 0.3, colorscheme: 'Jmol' } } + : { + stick: { radius: 0.15, colorscheme: 'Jmol' }, + sphere: { scale: 0.3, colorscheme: 'Jmol' }, + } + ); break; case 'spacefill': - viewer.setStyle({}, { - sphere: { scale: 1.0, colorscheme: 'Jmol' }, - }); + viewer.setStyle( + {}, + { + sphere: { scale: 1.0, colorscheme: 'Jmol' }, + } + ); break; case 'line': - viewer.setStyle({}, { line: { colorscheme: 'Jmol' } }); + viewer.setStyle( + {}, + explicitBonds + ? { sphere: { scale: 0.14, colorscheme: 'Jmol' } } + : { line: { colorscheme: 'Jmol' } } + ); break; case 'cartoon': viewer.setStyle({}, { cartoon: { colorscheme: 'Jmol' } }); break; + case 'lod': + viewer.setStyle({}, { sphere: { scale: 0.16, colorscheme: 'Jmol' } }); + break; default: - viewer.setStyle({}, { - stick: { radius: 0.15, colorscheme: 'Jmol' }, - sphere: { scale: 0.3, colorscheme: 'Jmol' }, - }); + viewer.setStyle( + {}, + { + stick: { radius: 0.15, colorscheme: 'Jmol' }, + sphere: { scale: 0.3, colorscheme: 'Jmol' }, + } + ); } viewer.render(); } - function renderCell(cell) { + function renderSceneShapes(showCell = Boolean(cellShape)) { if (!viewer) return; viewer.removeAllShapes(); + cellShape = false; + + if (showCell && currentStructure?.cell) { + drawCellShape(currentStructure.cell); + cellShape = true; + } + + renderExplicitBonds(renderedStructure); + } + + function renderCell(cell) { + if (!viewer) return; + + renderSceneShapes(true); + } + + function drawCellShape(cell) { + if (!viewer || !cell) return; const a = cell.a; const b = cell.b; @@ -191,7 +310,9 @@ const corners = [ [0, 0, 0], - a, b, c, + a, + b, + c, addVec(a, b), addVec(a, c), addVec(b, c), @@ -199,11 +320,18 @@ ]; const edges = [ - [0, 1], [0, 2], [0, 3], - [1, 4], [1, 5], - [2, 4], [2, 6], - [3, 5], [3, 6], - [4, 7], [5, 7], [6, 7], + [0, 1], + [0, 2], + [0, 3], + [1, 4], + [1, 5], + [2, 4], + [2, 6], + [3, 5], + [3, 6], + [4, 7], + [5, 7], + [6, 7], ]; for (const [i, j] of edges) { @@ -217,14 +345,1056 @@ opacity: 0.6, }); } + } - cellShape = true; + function renderExplicitBonds(structure) { + if (!viewer || !hasExplicitBonds(structure)) return; + + const atoms = cartesianAtomsForRendering(structure); + for (const bond of structure.bonds) { + const normalizedBond = normalizeStructureBond(bond, structure); + if (!normalizedBond) continue; + const start = atoms[normalizedBond.from]; + const end = atoms[normalizedBond.to]; + if (!start || !end) continue; + viewer.addCylinder({ + start: { x: start.x, y: start.y, z: start.z }, + end: { x: end.x, y: end.y, z: end.z }, + radius: 0.06 + (normalizedBond.order - 1) * 0.025, + color: 'white', + opacity: 0.9, + }); + } + } + + function hasExplicitBonds(structure) { + return Array.isArray(structure?.bonds) && structure.bonds.length > 0; } function addVec(a, b) { return [a[0] + b[0], a[1] + b[1], a[2] + b[2]]; } + // ----------------------------------------------------------------------- + // Selection, labels, and measurements + // ----------------------------------------------------------------------- + function setupAtomPicking(enabled = true) { + if (!viewer || !enabled) return; + try { + viewer.setClickable({}, true, atom => { + handleAtomClick(atom); + }); + } catch (e) { + showStatus('Atom selection is unavailable in this 3Dmol runtime'); + } + } + + function handleAtomClick(atom) { + const selected = normalizePickedAtom(atom); + if (!selected) return; + + if (!measurementMode) { + const selectedIndex = normalizeSelectionIndex(selected.index, currentStructure); + if (editorState && selectedIndex >= 0) { + editorState = applyEditingAction(editorState, { type: 'selectAtom', index: selectedIndex }); + } + selectedAtoms = + selectedIndex >= 0 ? selectedAtomArray(currentStructure, selectedIndex) : [selected]; + renderLabels(); + updateEditingControls(); + showStatus(`Selected ${formatAtomLabel(selected)}`); + return; + } + + selectedAtoms.push(selected); + if (selectedAtoms.length > 4) { + selectedAtoms = [selected]; + } + + renderLabels(); + + if (selectedAtoms.length === 1) { + showStatus(`Measurement start: ${formatAtomLabel(selected)}`); + } else if (selectedAtoms.length === 2) { + showStatus(`Distance: ${calculateDistance(selectedAtoms[0], selectedAtoms[1]).toFixed(3)} Å`); + } else if (selectedAtoms.length === 3) { + showStatus( + `Angle: ${calculateAngle(selectedAtoms[0], selectedAtoms[1], selectedAtoms[2]).toFixed(2)}°` + ); + } else { + showStatus( + `Dihedral: ${calculateDihedral( + selectedAtoms[0], + selectedAtoms[1], + selectedAtoms[2], + selectedAtoms[3] + ).toFixed(2)}°` + ); + } + } + + function normalizePickedAtom(atom) { + if (!atom) return null; + const index = Number.isInteger(atom.index) + ? atom.index + : Number.isInteger(atom.serial) + ? atom.serial - 1 + : selectedAtoms.length; + return { + element: atom.elem || atom.element || atom.atom || 'X', + x: Number(atom.x), + y: Number(atom.y), + z: Number(atom.z), + index, + }; + } + + function renderLabels() { + if (!viewer) return; + viewer.removeAllLabels(); + if (viewerMode === 'readonly-lod') return; + + if (labelsVisible && currentStructure) { + const atoms = cartesianAtomsForRendering(currentStructure); + atoms.forEach((atom, index) => { + viewer.addLabel(`${atom.element}${index + 1}`, { + position: { x: atom.x, y: atom.y, z: atom.z }, + fontColor: 'white', + backgroundColor: 'black', + backgroundOpacity: 0.45, + fontSize: 11, + inFront: true, + }); + }); + } + + selectedAtoms.forEach(atom => { + viewer.addLabel(formatAtomLabel(atom), { + position: { x: atom.x, y: atom.y, z: atom.z }, + fontColor: 'black', + backgroundColor: '#f2cc60', + backgroundOpacity: 0.9, + fontSize: 12, + inFront: true, + }); + }); + + if (selectedAtoms.length >= 2) { + const [a, b] = selectedAtoms; + const midpoint = midpointBetween(a, b); + viewer.addLabel(`${calculateDistance(a, b).toFixed(3)} Å`, { + position: midpoint, + fontColor: 'black', + backgroundColor: '#89d185', + backgroundOpacity: 0.9, + fontSize: 12, + inFront: true, + }); + } + + if (selectedAtoms.length === 3) { + const [, center] = selectedAtoms; + viewer.addLabel(`${calculateAngle(selectedAtoms[0], center, selectedAtoms[2]).toFixed(2)}°`, { + position: { x: center.x, y: center.y, z: center.z }, + fontColor: 'black', + backgroundColor: '#75beff', + backgroundOpacity: 0.9, + fontSize: 12, + inFront: true, + }); + } + + if (selectedAtoms.length === 4) { + const [, b, c] = selectedAtoms; + viewer.addLabel( + `${calculateDihedral( + selectedAtoms[0], + selectedAtoms[1], + selectedAtoms[2], + selectedAtoms[3] + ).toFixed(2)}°`, + { + position: { + x: (b.x + c.x) / 2, + y: (b.y + c.y) / 2, + z: (b.z + c.z) / 2, + }, + fontColor: '#ffffff', + backgroundColor: '#1f6feb', + backgroundOpacity: 0.9, + fontSize: 12, + inFront: true, + } + ); + } + } + + function toggleLabels() { + if (viewerMode === 'readonly-lod') { + showStatus('Labels are disabled in read-only LOD mode'); + return; + } + labelsVisible = !labelsVisible; + document.getElementById('btn-labels')?.classList.toggle('active', labelsVisible); + renderLabels(); + viewer?.render(); + showStatus(labelsVisible ? 'Atom labels shown' : 'Atom labels hidden'); + } + + function toggleMeasurementMode() { + if (viewerMode === 'readonly-lod') { + showStatus('Measurements are disabled in read-only LOD mode'); + return; + } + measurementMode = !measurementMode; + selectedAtoms = []; + document.getElementById('btn-measure')?.classList.toggle('active', measurementMode); + renderLabels(); + viewer?.render(); + showStatus(measurementMode ? 'Measurement mode active' : 'Measurement mode off'); + } + + function formatAtomLabel(atom) { + return `${atom.element}${Number.isInteger(atom.index) ? atom.index + 1 : ''}`; + } + + function midpointBetween(a, b) { + return { + x: (a.x + b.x) / 2, + y: (a.y + b.y) / 2, + z: (a.z + b.z) / 2, + }; + } + + function calculateDistance(a, b) { + const dx = a.x - b.x; + const dy = a.y - b.y; + const dz = a.z - b.z; + return Math.sqrt(dx * dx + dy * dy + dz * dz); + } + + function calculateAngle(a, b, c) { + const ab = { x: a.x - b.x, y: a.y - b.y, z: a.z - b.z }; + const cb = { x: c.x - b.x, y: c.y - b.y, z: c.z - b.z }; + const dot = ab.x * cb.x + ab.y * cb.y + ab.z * cb.z; + const denom = + Math.sqrt(ab.x * ab.x + ab.y * ab.y + ab.z * ab.z) * + Math.sqrt(cb.x * cb.x + cb.y * cb.y + cb.z * cb.z); + if (denom === 0) return 0; + const cosine = Math.min(1, Math.max(-1, dot / denom)); + return (Math.acos(cosine) * 180) / Math.PI; + } + + function calculateDihedral(a, b, c, d) { + const b0 = vectorBetween(b, a); + const b1 = normalizePointVector(vectorBetween(b, c)); + const b2 = vectorBetween(c, d); + const v = subtractPointVector(b0, scalePointVector(b1, dotPointVector(b0, b1))); + const w = subtractPointVector(b2, scalePointVector(b1, dotPointVector(b2, b1))); + const x = dotPointVector(v, w); + const y = dotPointVector(crossPointVector(v, b1), w); + if (!Number.isFinite(x) || !Number.isFinite(y)) return 0; + return (Math.atan2(y, x) * 180) / Math.PI; + } + + function vectorBetween(from, to) { + return { + x: finiteNumber(to.x) - finiteNumber(from.x), + y: finiteNumber(to.y) - finiteNumber(from.y), + z: finiteNumber(to.z) - finiteNumber(from.z), + }; + } + + function normalizePointVector(vector) { + const length = Math.sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z); + if (!length) return { x: 0, y: 0, z: 0 }; + return { + x: vector.x / length, + y: vector.y / length, + z: vector.z / length, + }; + } + + function scalePointVector(vector, scale) { + return { + x: vector.x * scale, + y: vector.y * scale, + z: vector.z * scale, + }; + } + + function subtractPointVector(a, b) { + return { + x: a.x - b.x, + y: a.y - b.y, + z: a.z - b.z, + }; + } + + function dotPointVector(a, b) { + return a.x * b.x + a.y * b.y + a.z * b.z; + } + + function crossPointVector(a, b) { + return { + x: a.y * b.z - a.z * b.y, + y: a.z * b.x - a.x * b.z, + z: a.x * b.y - a.y * b.x, + }; + } + + // ----------------------------------------------------------------------- + // Editing state and actions + // ----------------------------------------------------------------------- + function createEditorState(structure, selectedIndex = -1) { + const normalizedStructure = normalizeEditableStructure(structure || { atoms: [] }); + const baselineJson = stableStructureJson(normalizedStructure); + return finalizeEditingState({ + structure: normalizedStructure, + selectedIndex, + undoStack: [], + redoStack: [], + baselineJson, + dirty: false, + }); + } + + function applyEditingAction(state, action) { + const current = normalizeEditorState(state); + const editAction = action || {}; + + switch (editAction.type) { + case 'selectAtom': + return finalizeEditingState({ + ...current, + selectedIndex: normalizeSelectionIndex(editAction.index, current.structure), + }); + + case 'addAtom': { + const nextStructure = structureForEditMutation(current.structure); + const atom = normalizeStructureAtom(editAction.atom || editAction); + nextStructure.atoms.push(atom); + return commitEditingState(current, nextStructure, nextStructure.atoms.length - 1); + } + + case 'deleteSelectedAtom': { + const selectedIndex = selectedIndexForAction(editAction, current); + if (selectedIndex < 0) return current; + + const nextStructure = structureForEditMutation(current.structure); + nextStructure.atoms.splice(selectedIndex, 1); + nextStructure.bonds = remapBondsAfterAtomDelete(nextStructure.bonds, selectedIndex); + const nextSelectedIndex = Math.min(selectedIndex, nextStructure.atoms.length - 1); + return commitEditingState(current, nextStructure, nextSelectedIndex); + } + + case 'moveSelectedAtom': { + const selectedIndex = selectedIndexForAction(editAction, current); + if (selectedIndex < 0) return current; + + const nextStructure = structureForEditMutation(current.structure); + const atom = nextStructure.atoms[selectedIndex]; + const delta = vectorFromAction(editAction); + nextStructure.atoms[selectedIndex] = { + ...atom, + x: atom.x + delta.x, + y: atom.y + delta.y, + z: atom.z + delta.z, + }; + return commitEditingState(current, nextStructure, selectedIndex); + } + + case 'setSelectedAtomConstraints': { + const selectedIndex = selectedIndexForAction(editAction, current); + const selectiveDynamics = normalizeSelectiveDynamics( + editAction.selectiveDynamics || editAction.constraints || editAction + ); + if (selectedIndex < 0 || !selectiveDynamics) return current; + + const nextStructure = structureForEditMutation(current.structure); + const atom = nextStructure.atoms[selectedIndex]; + nextStructure.atoms[selectedIndex] = { + ...atom, + selectiveDynamics, + }; + return commitEditingState(current, nextStructure, selectedIndex); + } + + case 'addOrUpdateBond': { + const nextStructure = structureForEditMutation(current.structure); + const bond = normalizeStructureBond(editAction, nextStructure); + if (!bond) return current; + + const bondIndex = findBondIndex(nextStructure.bonds, bond.from, bond.to); + if (bondIndex >= 0) { + nextStructure.bonds[bondIndex] = bond; + } else { + nextStructure.bonds.push(bond); + } + return commitEditingState(current, nextStructure, current.selectedIndex); + } + + case 'deleteBond': { + const nextStructure = structureForEditMutation(current.structure); + const pair = normalizeBondPair(editAction, nextStructure); + if (!pair) return current; + + const bondIndex = findBondIndex(nextStructure.bonds, pair.from, pair.to); + if (bondIndex < 0) return current; + + nextStructure.bonds.splice(bondIndex, 1); + return commitEditingState(current, nextStructure, current.selectedIndex); + } + + case 'undo': + return popEditingHistory(current, 'undo'); + + case 'redo': + return popEditingHistory(current, 'redo'); + + default: + return current; + } + } + + function normalizeEditorState(state) { + if (!state || !state.structure) { + return createEditorState({ atoms: [] }); + } + + const structure = normalizeEditableStructure(state.structure); + const baselineJson = + typeof state.baselineJson === 'string' ? state.baselineJson : stableStructureJson(structure); + + return finalizeEditingState({ + structure, + selectedIndex: state.selectedIndex, + undoStack: normalizeHistoryStack(state.undoStack), + redoStack: normalizeHistoryStack(state.redoStack), + baselineJson, + dirty: false, + }); + } + + function commitEditingState(state, structure, selectedIndex) { + return finalizeEditingState({ + ...state, + structure: normalizeEditableStructure(structure), + selectedIndex, + undoStack: pushHistorySnapshot(state.undoStack, snapshotEditingState(state)), + redoStack: [], + }); + } + + function popEditingHistory(state, direction) { + const fromStack = direction === 'undo' ? state.undoStack : state.redoStack; + if (!fromStack.length) return state; + + const toStack = direction === 'undo' ? state.redoStack : state.undoStack; + const snapshot = fromStack[fromStack.length - 1]; + const nextState = { + ...state, + structure: normalizeEditableStructure(snapshot.structure), + selectedIndex: snapshot.selectedIndex, + undoStack: + direction === 'undo' + ? fromStack.slice(0, -1) + : pushHistorySnapshot(toStack, snapshotEditingState(state)), + redoStack: + direction === 'undo' + ? pushHistorySnapshot(toStack, snapshotEditingState(state)) + : fromStack.slice(0, -1), + }; + + return finalizeEditingState(nextState); + } + + function finalizeEditingState(state) { + const structure = normalizeEditableStructure(state.structure); + const baselineJson = + typeof state.baselineJson === 'string' ? state.baselineJson : stableStructureJson(structure); + + return { + structure, + selectedIndex: normalizeSelectionIndex(state.selectedIndex, structure), + undoStack: normalizeHistoryStack(state.undoStack), + redoStack: normalizeHistoryStack(state.redoStack), + baselineJson, + dirty: stableStructureJson(structure) !== baselineJson, + }; + } + + function snapshotEditingState(state) { + return { + structure: normalizeEditableStructure(state.structure), + selectedIndex: normalizeSelectionIndex(state.selectedIndex, state.structure), + }; + } + + function normalizeHistoryStack(stack) { + if (!Array.isArray(stack)) return []; + return stack.slice(-EDIT_HISTORY_LIMIT).map(snapshot => ({ + structure: normalizeEditableStructure(snapshot.structure), + selectedIndex: snapshot.selectedIndex, + })); + } + + function pushHistorySnapshot(stack, snapshot) { + return normalizeHistoryStack([...(Array.isArray(stack) ? stack : []), snapshot]); + } + + function normalizeEditableStructure(structure) { + const normalized = cloneValue(structure || {}); + normalized.atoms = Array.isArray(normalized.atoms) + ? normalized.atoms.map(atom => normalizeStructureAtom(atom)) + : []; + normalized.bonds = Array.isArray(normalized.bonds) + ? normalized.bonds + .map(bond => normalizeStructureBond(bond, normalized)) + .filter(bond => Boolean(bond)) + : []; + return normalized; + } + + function normalizeStructureAtom(atom) { + const source = atom || {}; + const normalized = { + ...source, + element: normalizeElement(source.element || source.elem || source.atom || 'X'), + x: finiteNumber(source.x), + y: finiteNumber(source.y), + z: finiteNumber(source.z), + }; + const selectiveDynamics = normalizeSelectiveDynamics(source.selectiveDynamics); + if (selectiveDynamics) { + normalized.selectiveDynamics = selectiveDynamics; + } else { + delete normalized.selectiveDynamics; + } + return normalized; + } + + function normalizeElement(value) { + const letters = String(value || 'X') + .replace(/[^a-z]/gi, '') + .slice(0, 2); + if (!letters) return 'X'; + return letters.charAt(0).toUpperCase() + letters.slice(1).toLowerCase(); + } + + function normalizeStructureBond(bond, structure) { + const pair = normalizeBondPair(bond, structure); + if (!pair) return null; + const order = normalizeBondOrder(bond?.order); + if (!order) return null; + return { + from: pair.from, + to: pair.to, + order, + }; + } + + function normalizeBondPair(action, structure) { + const from = normalizeSelectionIndex(action?.from, structure); + const to = normalizeSelectionIndex(action?.to, structure); + if (from < 0 || to < 0 || from === to) return null; + return from < to ? { from, to } : { from: to, to: from }; + } + + function normalizeBondOrder(value) { + if (value === undefined || value === null || value === '') { + return 1; + } + if (typeof value !== 'number' || !Number.isInteger(value)) { + return null; + } + const order = value; + if (order < 1 || order > 3) return null; + return order; + } + + function normalizeSelectiveDynamics(value) { + if (!Array.isArray(value) || value.length !== 3) { + return null; + } + + const flags = value.map(normalizeSelectiveFlag); + return flags.every(flag => typeof flag === 'boolean') ? flags : null; + } + + function normalizeSelectiveFlag(value) { + if (typeof value === 'boolean') { + return value; + } + if (typeof value === 'string') { + const normalized = value.trim().toLowerCase(); + if (normalized === 't' || normalized === 'true') { + return true; + } + if (normalized === 'f' || normalized === 'false') { + return false; + } + } + return null; + } + + function findBondIndex(bonds, from, to) { + const pair = from < to ? { from, to } : { from: to, to: from }; + return (Array.isArray(bonds) ? bonds : []).findIndex( + bond => bond.from === pair.from && bond.to === pair.to + ); + } + + function remapBondsAfterAtomDelete(bonds, deletedIndex) { + if (!Array.isArray(bonds)) return []; + return bonds + .filter(bond => bond.from !== deletedIndex && bond.to !== deletedIndex) + .map(bond => ({ + ...bond, + from: bond.from > deletedIndex ? bond.from - 1 : bond.from, + to: bond.to > deletedIndex ? bond.to - 1 : bond.to, + })); + } + + function structureForEditMutation(structure) { + const nextStructure = normalizeEditableStructure(structure); + delete nextStructure.frames; + return nextStructure; + } + + function selectedIndexForAction(action, state) { + const explicitIndex = action && action.index; + const index = explicitIndex === 0 || explicitIndex ? explicitIndex : state.selectedIndex; + return normalizeSelectionIndex(index, state.structure); + } + + function normalizeSelectionIndex(index, structure) { + const numericIndex = Number(index); + const atoms = structure?.atoms || []; + if (!Number.isInteger(numericIndex) || numericIndex < 0 || numericIndex >= atoms.length) { + return -1; + } + return numericIndex; + } + + function selectedAtomArray(structure, selectedIndex) { + const atom = atomSelectionAtIndex(structure, selectedIndex); + return atom ? [atom] : []; + } + + function atomSelectionAtIndex(structure, selectedIndex) { + const index = normalizeSelectionIndex(selectedIndex, structure); + if (index < 0) return null; + + const atoms = cartesianAtomsForRendering(structure); + const atom = atoms[index]; + if (!atom) return null; + + return { + element: atom.element, + x: finiteNumber(atom.x), + y: finiteNumber(atom.y), + z: finiteNumber(atom.z), + index, + }; + } + + function getPrimarySelectedIndex() { + return selectedAtoms.length ? selectedAtoms[0].index : -1; + } + + function vectorFromAction(action) { + const delta = action.delta || action; + return { + x: finiteNumber(delta.x ?? delta.dx), + y: finiteNumber(delta.y ?? delta.dy), + z: finiteNumber(delta.z ?? delta.dz), + }; + } + + function cartesianToStructureCoordinates(point, structure) { + if (!usesFractionalCoordinates(structure)) { + return { + x: finiteNumber(point.x), + y: finiteNumber(point.y), + z: finiteNumber(point.z), + }; + } + + const fractional = cartesianVectorToFractional( + [finiteNumber(point.x), finiteNumber(point.y), finiteNumber(point.z)], + structure.cell + ); + return { x: fractional[0], y: fractional[1], z: fractional[2] }; + } + + function cartesianDeltaToStructureDelta(delta, structure) { + return cartesianToStructureCoordinates(delta, structure); + } + + function usesFractionalCoordinates(structure) { + return Boolean(structure?.cell && structure.cell.coordinateMode === 'fractional'); + } + + function cartesianVectorToFractional(vector, cell) { + const a = cell.a; + const b = cell.b; + const c = cell.c; + const determinant = dotVec(a, crossVec(b, c)); + if (!determinant) return vector; + + return [ + dotVec(vector, crossVec(b, c)) / determinant, + dotVec(vector, crossVec(c, a)) / determinant, + dotVec(vector, crossVec(a, b)) / determinant, + ]; + } + + function crossVec(a, b) { + return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]; + } + + function dotVec(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + } + + function finiteNumber(value, fallback = 0) { + const numericValue = Number(value); + return Number.isFinite(numericValue) ? numericValue : fallback; + } + + function stableStructureJson(structure) { + return JSON.stringify(normalizeEditableStructure(structure)); + } + + function cloneValue(value) { + return JSON.parse(JSON.stringify(value || {})); + } + + function applyViewerEdit(action, statusMessage) { + if (viewerMode !== 'editable') { + showStatus('Editing is disabled above 10,000 atoms (read-only LOD mode)'); + return; + } + if (!currentStructure || !editorState) { + showStatus('Load a structure before editing'); + return; + } + + const previousJson = stableStructureJson(editorState.structure); + const previousSelectedIndex = editorState.selectedIndex; + const previousUndoCount = editorState.undoStack.length; + const previousRedoCount = editorState.redoStack.length; + const nextState = applyEditingAction(editorState, action); + + editorState = nextState; + currentStructure = normalizeEditableStructure(nextState.structure); + selectedAtoms = selectedAtomArray(currentStructure, nextState.selectedIndex); + + const changed = + previousJson !== stableStructureJson(nextState.structure) || + previousSelectedIndex !== nextState.selectedIndex || + previousUndoCount !== nextState.undoStack.length || + previousRedoCount !== nextState.redoStack.length; + + if (changed) { + loadStructure(JSON.stringify(currentStructure), { + preserveEditing: true, + keepSelection: true, + selectedIndex: nextState.selectedIndex, + }); + postStructureUpdate(nextState); + } else { + renderLabels(); + viewer?.render(); + updateEditingControls(); + } + + if (statusMessage) { + showStatus(statusMessage); + } + } + + function addAtomFromInputs() { + if (!currentStructure) { + showStatus('Load a structure before adding atoms'); + return; + } + + const element = normalizeElement(document.getElementById('edit-element')?.value || 'C'); + const point = cartesianToStructureCoordinates( + { + x: readNumberInput('edit-x'), + y: readNumberInput('edit-y'), + z: readNumberInput('edit-z'), + }, + currentStructure + ); + const label = `${element}${currentStructure.atoms.length + 1}`; + applyViewerEdit({ type: 'addAtom', atom: { element, ...point } }, `Added ${label}`); + } + + function deleteSelectedAtom() { + const selected = atomSelectionAtIndex(currentStructure, editorState?.selectedIndex); + if (!selected) { + showStatus('Select an atom before deleting'); + return; + } + + applyViewerEdit({ type: 'deleteSelectedAtom' }, `Deleted ${formatAtomLabel(selected)}`); + } + + function moveSelectedAtomFromInputs() { + const selected = atomSelectionAtIndex(currentStructure, editorState?.selectedIndex); + if (!selected) { + showStatus('Select an atom before moving'); + return; + } + + const cartesianDelta = { + x: readNumberInput('move-dx'), + y: readNumberInput('move-dy'), + z: readNumberInput('move-dz'), + }; + const structureDelta = cartesianDeltaToStructureDelta(cartesianDelta, currentStructure); + + applyViewerEdit( + { + type: 'moveSelectedAtom', + dx: structureDelta.x, + dy: structureDelta.y, + dz: structureDelta.z, + }, + `Moved ${formatAtomLabel(selected)} by ${cartesianDelta.x}, ${cartesianDelta.y}, ${cartesianDelta.z}` + ); + } + + function addOrUpdateBondFromInputs() { + if (!currentStructure) { + showStatus('Load a structure before editing bonds'); + return; + } + + const pair = readBondInputPair(); + if (!pair) { + showStatus('Enter two different valid atom indices before editing bonds'); + return; + } + + const order = readBondOrderInput(); + applyViewerEdit( + { type: 'addOrUpdateBond', from: pair.from, to: pair.to, order }, + `Bond ${pair.from + 1}-${pair.to + 1} set to order ${order}` + ); + } + + function deleteBondFromInputs() { + if (!currentStructure) { + showStatus('Load a structure before editing bonds'); + return; + } + + const pair = readBondInputPair(); + if (!pair) { + showStatus('Enter two different valid atom indices before deleting a bond'); + return; + } + + applyViewerEdit( + { type: 'deleteBond', from: pair.from, to: pair.to }, + `Bond ${pair.from + 1}-${pair.to + 1} deleted` + ); + } + + function setSelectedAtomConstraintsFromInputs() { + const selected = atomSelectionAtIndex(currentStructure, editorState?.selectedIndex); + if (!selected) { + showStatus('Select an atom before setting constraints'); + return; + } + + const selectiveDynamics = readConstraintInputs(); + applyViewerEdit( + { type: 'setSelectedAtomConstraints', selectiveDynamics }, + `Constraints updated for ${formatAtomLabel(selected)}` + ); + } + + function undoEdit() { + if (!editorState?.undoStack.length) { + showStatus('Nothing to undo'); + return; + } + applyViewerEdit({ type: 'undo' }, 'Undo'); + } + + function redoEdit() { + if (!editorState?.redoStack.length) { + showStatus('Nothing to redo'); + return; + } + applyViewerEdit({ type: 'redo' }, 'Redo'); + } + + function createEditedStructureExportMessage(structure, dirty) { + const normalizedStructure = normalizeEditableStructure(structure); + return { + type: 'exportEditedStructure', + structure: JSON.stringify(normalizedStructure), + dirty: Boolean(dirty), + atomCount: normalizedStructure.atoms.length, + bondCount: normalizedStructure.bonds.length, + }; + } + + function createEditedStructureSaveMessage(structure, dirty) { + const normalizedStructure = normalizeEditableStructure(structure); + return { + type: 'saveEditedStructureToSource', + structure: JSON.stringify(normalizedStructure), + dirty: Boolean(dirty), + atomCount: normalizedStructure.atoms.length, + bondCount: normalizedStructure.bonds.length, + }; + } + + function createStructureUpdateMessage(state) { + const normalizedStructure = normalizeEditableStructure(state?.structure || currentStructure); + return { + type: 'structureUpdated', + structure: JSON.stringify(normalizedStructure), + dirty: Boolean(state?.dirty), + atomCount: normalizedStructure.atoms.length, + bondCount: normalizedStructure.bonds.length, + }; + } + + function postStructureUpdate(state) { + vscode.postMessage(createStructureUpdateMessage(state)); + } + + function exportEditedStructure() { + if (!currentStructure) { + showStatus('Load a structure before exporting edits'); + return; + } + + vscode.postMessage(createEditedStructureExportMessage(currentStructure, editorState?.dirty)); + showStatus(editorState?.dirty ? 'Edited structure exported' : 'Structure exported'); + } + + function saveEditedStructureToSource() { + if (!currentStructure) { + showStatus('Load a structure before saving edits'); + return; + } + + if (!editorState?.dirty) { + showStatus('No edits to save'); + return; + } + + vscode.postMessage(createEditedStructureSaveMessage(currentStructure, editorState?.dirty)); + showStatus('Saving edited structure...'); + } + + function markStructureSaved(structureJson) { + const structure = structureJson + ? normalizeEditableStructure(JSON.parse(structureJson)) + : currentStructure; + currentStructure = structure; + renderedStructure = structure; + viewerMode = 'editable'; + editorState = createEditorState(structure, editorState?.selectedIndex); + selectedAtoms = selectedAtomArray(currentStructure, editorState.selectedIndex); + updateEditingControls(); + renderLabels(); + viewer?.render(); + showStatus('Edited structure saved to source'); + } + + function readNumberInput(id, fallback = 0) { + return finiteNumber(document.getElementById(id)?.value, fallback); + } + + function readBondInputPair() { + const from = Math.round(readNumberInput('bond-from', 1)) - 1; + const to = Math.round(readNumberInput('bond-to', 2)) - 1; + const pair = normalizeBondPair({ from, to }, currentStructure); + return pair; + } + + function readBondOrderInput() { + const order = normalizeBondOrder(readNumberInput('bond-order', 1)); + return order || 1; + } + + function readConstraintInputs() { + return ['constraint-x', 'constraint-y', 'constraint-z'].map(id => + Boolean(document.getElementById(id)?.checked) + ); + } + + function updateEditingControls() { + const hasStructure = Boolean(currentStructure?.atoms); + const isEditable = viewerMode === 'editable'; + const hasSelection = + isEditable && normalizeSelectionIndex(editorState?.selectedIndex, currentStructure) >= 0; + const hasBondCapableStructure = isEditable && Boolean(currentStructure?.atoms?.length >= 2); + + setDisabled('btn-add-atom', !hasStructure || !isEditable); + setDisabled('btn-delete-atom', !hasStructure || !hasSelection); + setDisabled('btn-move-atom', !hasStructure || !hasSelection); + setDisabled('btn-add-bond', !hasBondCapableStructure); + setDisabled('btn-delete-bond', !hasBondCapableStructure); + setDisabled('constraint-x', !hasStructure || !hasSelection); + setDisabled('constraint-y', !hasStructure || !hasSelection); + setDisabled('constraint-z', !hasStructure || !hasSelection); + setDisabled('btn-set-constraints', !hasStructure || !hasSelection); + setDisabled('btn-undo-edit', !isEditable || !editorState?.undoStack.length); + setDisabled('btn-redo-edit', !isEditable || !editorState?.redoStack.length); + setDisabled('btn-save-source', !hasStructure || !editorState?.dirty); + setDisabled('btn-export-structure', !hasStructure); + setDisabled('btn-labels', !isEditable); + setDisabled('btn-measure', !isEditable); + setDisabled('btn-supercell', !isEditable); + syncConstraintInputs(); + + const bondCount = document.getElementById('bond-count'); + if (bondCount) { + const count = currentStructure?.bonds?.length || 0; + bondCount.textContent = `${count} ${count === 1 ? 'bond' : 'bonds'}`; + } + + const indicator = document.getElementById('dirty-indicator'); + if (indicator) { + indicator.textContent = isEditable ? (editorState?.dirty ? 'Edited' : 'Clean') : 'Read-only LOD'; + indicator.classList.toggle('dirty', Boolean(editorState?.dirty)); + indicator.title = !isEditable + ? 'Structures above 10,000 atoms use a deterministic read-only level of detail' + : editorState?.dirty + ? 'Structure has webview edits that are not written back to the source file' + : 'No webview edits relative to the loaded structure'; + } + } + + function setDisabled(id, disabled) { + const element = document.getElementById(id); + if (element) element.disabled = disabled; + } + + function syncConstraintInputs() { + const selected = normalizeSelectionIndex(editorState?.selectedIndex, currentStructure); + const atom = selected >= 0 ? currentStructure?.atoms?.[selected] : null; + const flags = normalizeSelectiveDynamics(atom?.selectiveDynamics) || [true, true, true]; + ['constraint-x', 'constraint-y', 'constraint-z'].forEach((id, index) => { + const input = document.getElementById(id); + if (input) { + input.checked = flags[index]; + } + }); + } + // ----------------------------------------------------------------------- // Export // ----------------------------------------------------------------------- @@ -251,7 +1421,7 @@ // ----------------------------------------------------------------------- function setupControls() { // Style selector - document.getElementById('style-select')?.addEventListener('change', (e) => { + document.getElementById('style-select')?.addEventListener('change', e => { applyStyle(e.target.value); }); @@ -276,20 +1446,71 @@ } }); + // Atom labels + document.getElementById('btn-labels')?.addEventListener('click', () => { + toggleLabels(); + }); + + // Distance/angle measurement + document.getElementById('btn-measure')?.addEventListener('click', () => { + toggleMeasurementMode(); + }); + // Export image document.getElementById('btn-export')?.addEventListener('click', () => { exportSnapshot(); }); + // Editing controls + document.getElementById('btn-add-atom')?.addEventListener('click', () => { + addAtomFromInputs(); + }); + + document.getElementById('btn-delete-atom')?.addEventListener('click', () => { + deleteSelectedAtom(); + }); + + document.getElementById('btn-move-atom')?.addEventListener('click', () => { + moveSelectedAtomFromInputs(); + }); + + document.getElementById('btn-add-bond')?.addEventListener('click', () => { + addOrUpdateBondFromInputs(); + }); + + document.getElementById('btn-delete-bond')?.addEventListener('click', () => { + deleteBondFromInputs(); + }); + + document.getElementById('btn-set-constraints')?.addEventListener('click', () => { + setSelectedAtomConstraintsFromInputs(); + }); + + document.getElementById('btn-undo-edit')?.addEventListener('click', () => { + undoEdit(); + }); + + document.getElementById('btn-redo-edit')?.addEventListener('click', () => { + redoEdit(); + }); + + document.getElementById('btn-save-source')?.addEventListener('click', () => { + saveEditedStructureToSource(); + }); + + document.getElementById('btn-export-structure')?.addEventListener('click', () => { + exportEditedStructure(); + }); + // Toggle unit cell document.getElementById('btn-toggle-cell')?.addEventListener('click', () => { if (currentStructure?.cell) { if (cellShape) { - viewer.removeAllShapes(); + renderSceneShapes(false); cellShape = null; showStatus('Unit cell hidden'); } else { - renderCell(currentStructure.cell); + renderSceneShapes(true); showStatus('Unit cell shown'); } viewer.render(); @@ -300,10 +1521,12 @@ document.getElementById('btn-supercell')?.addEventListener('click', () => { generateSupercell(); }); + + updateEditingControls(); } function generateSupercell() { - if (!currentStructure?.cell) return; + if (!currentStructure?.cell || viewerMode !== 'editable') return; const na = parseInt(document.getElementById('sc-na')?.value || '2'); const nb = parseInt(document.getElementById('sc-nb')?.value || '2'); @@ -318,20 +1541,40 @@ return; } - // Generate supercell by replicating atoms - const cell = currentStructure.cell; - const baseAtoms = cartesianAtomsForRendering(currentStructure); - const superAtoms = []; + const superStructure = buildSupercellStructure(currentStructure, na, nb, nc); - for (let ia = 0; ia < na; ia++) { - for (let ib = 0; ib < nb; ib++) { - for (let ic = 0; ic < nc; ic++) { + loadStructure(JSON.stringify(superStructure)); + showStatus(`Supercell ${na}x${nb}x${nc}: ${totalAtoms} atoms`); + } + + function buildSupercellStructure(structure, na, nb, nc) { + const normalizedStructure = normalizeEditableStructure(structure); + const cell = normalizedStructure.cell; + if (!cell) { + return normalizedStructure; + } + + const repeatA = positiveInteger(na, 1); + const repeatB = positiveInteger(nb, 1); + const repeatC = positiveInteger(nc, 1); + const baseAtoms = cartesianAtomsForRendering(normalizedStructure); + const superAtoms = []; + const imageCount = repeatA * repeatB * repeatC; + const superBonds = replicateBondsForSupercell( + normalizedStructure.bonds, + normalizedStructure.atoms.length, + imageCount + ); + + for (let ia = 0; ia < repeatA; ia++) { + for (let ib = 0; ib < repeatB; ib++) { + for (let ic = 0; ic < repeatC; ic++) { for (const atom of baseAtoms) { const dx = ia * cell.a[0] + ib * cell.b[0] + ic * cell.c[0]; const dy = ia * cell.a[1] + ib * cell.b[1] + ic * cell.c[1]; const dz = ia * cell.a[2] + ib * cell.b[2] + ic * cell.c[2]; superAtoms.push({ - element: atom.element, + ...atom, x: atom.x + dx, y: atom.y + dy, z: atom.z + dz, @@ -341,21 +1584,49 @@ } } - // Create supercell structure and display it - const superStructure = { - ...currentStructure, + return { + ...normalizedStructure, atoms: superAtoms, + bonds: superBonds, cell: { - a: [cell.a[0] * na, cell.a[1] * na, cell.a[2] * na], - b: [cell.b[0] * nb, cell.b[1] * nb, cell.b[2] * nb], - c: [cell.c[0] * nc, cell.c[1] * nc, cell.c[2] * nc], + ...cell, + a: [cell.a[0] * repeatA, cell.a[1] * repeatA, cell.a[2] * repeatA], + b: [cell.b[0] * repeatB, cell.b[1] * repeatB, cell.b[2] * repeatB], + c: [cell.c[0] * repeatC, cell.c[1] * repeatC, cell.c[2] * repeatC], pbc: cell.pbc, coordinateMode: 'cartesian', }, }; + } - loadStructure(JSON.stringify(superStructure)); - showStatus(`Supercell ${na}x${nb}x${nc}: ${totalAtoms} atoms`); + function positiveInteger(value, fallback) { + const numericValue = Number(value); + if (!Number.isInteger(numericValue) || numericValue < 1) { + return fallback; + } + return numericValue; + } + + function replicateBondsForSupercell(bonds, atomCount, imageCount) { + if (!Array.isArray(bonds) || atomCount <= 0 || imageCount <= 0) { + return []; + } + + const normalizedBonds = bonds + .map(bond => normalizeStructureBond(bond, { atoms: new Array(atomCount) })) + .filter(bond => Boolean(bond)); + const replicated = []; + for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) { + const offset = imageIndex * atomCount; + for (const bond of normalizedBonds) { + replicated.push({ + from: bond.from + offset, + to: bond.to + offset, + order: bond.order, + }); + } + } + return replicated; } // ----------------------------------------------------------------------- @@ -368,7 +1639,7 @@ controls.classList.add('visible'); const slider = document.getElementById('frame-slider'); if (slider) { - slider.max = structure.frames.length; + slider.max = Math.max(0, structure.frames.length - 1); slider.value = 0; slider.oninput = () => { const idx = parseInt(slider.value); @@ -377,16 +1648,32 @@ } // Play/pause button - document.getElementById('btn-play')?.addEventListener('click', () => { - togglePlayback(structure); - }); + const playButton = document.getElementById('btn-play'); + if (playButton) { + playButton.onclick = () => { + togglePlayback(structure); + }; + playButton.textContent = '▶ Play'; + } + + const info = document.getElementById('frame-info'); + if (info) { + info.textContent = `Frame 1/${structure.frames.length}`; + } + } + + function hideTrajectoryControls() { + const controls = document.getElementById('trajectory-controls'); + if (controls) { + controls.classList.remove('visible'); + } } function loadFrame(index, structure) { if (!structure.frames || index >= structure.frames.length) return; const frame = structure.frames[index]; const combined = { ...structure, ...frame, frames: undefined }; - loadStructure(JSON.stringify(combined)); + loadStructure(JSON.stringify(combined), { keepPlayback: true }); const info = document.getElementById('frame-info'); if (info) { @@ -394,15 +1681,16 @@ } } - let playbackInterval = null; function togglePlayback(structure) { if (playbackInterval) { - clearInterval(playbackInterval); - playbackInterval = null; - showStatus('Playback paused'); + stopPlayback(); } else { const slider = document.getElementById('frame-slider'); - let idx = 0; + const playButton = document.getElementById('btn-play'); + let idx = parseInt(slider?.value || '0'); + if (playButton) { + playButton.textContent = 'Pause'; + } playbackInterval = setInterval(() => { if (!structure.frames) return; idx = (idx + 1) % structure.frames.length; @@ -413,6 +1701,17 @@ } } + function stopPlayback() { + if (!playbackInterval) return; + clearInterval(playbackInterval); + playbackInterval = null; + const playButton = document.getElementById('btn-play'); + if (playButton) { + playButton.textContent = '▶ Play'; + } + showStatus('Playback paused'); + } + // ----------------------------------------------------------------------- // Periodic controls visibility // ----------------------------------------------------------------------- @@ -431,9 +1730,11 @@ if (el) el.textContent = msg; } - function updateAtomCount(count) { + function updateAtomCount(count, renderedCount = count) { const el = document.getElementById('atom-count'); - if (el) el.textContent = `${count} atoms`; + if (el) { + el.textContent = renderedCount === count ? `${count} atoms` : `${count} atoms (${renderedCount} LOD)`; + } } function showError(msg) { @@ -441,7 +1742,9 @@ if (el) { el.textContent = msg; el.style.display = 'block'; - setTimeout(() => { el.style.display = 'none'; }, 5000); + setTimeout(() => { + el.style.display = 'none'; + }, 5000); } } @@ -459,7 +1762,7 @@ // ----------------------------------------------------------------------- // Message handler // ----------------------------------------------------------------------- - window.addEventListener('message', (event) => { + window.addEventListener('message', event => { const message = event.data; switch (message.type) { @@ -490,9 +1793,9 @@ case 'showCell': if (message.enabled && currentStructure?.cell) { - renderCell(currentStructure.cell); + renderSceneShapes(true); } else { - viewer?.removeAllShapes(); + renderSceneShapes(false); cellShape = null; } viewer?.render(); @@ -506,6 +1809,12 @@ case 'exportSnapshot': exportSnapshot(); break; + + case 'markStructureSaved': + if (message.structure) { + markStructureSaved(message.structure); + } + break; } }); @@ -514,6 +1823,28 @@ cartesianAtomsForRendering, fractionalToCartesian, structureToXYZ, + calculateDistance, + calculateAngle, + calculateDihedral, + createEditorState, + applyEditingAction, + createEditedStructureExportMessage, + createEditedStructureSaveMessage, + normalizeElement, + normalizeStructureBond, + normalizeBondPair, + normalizeBondOrder, + normalizeSelectiveDynamics, + buildSupercellStructure, + replicateBondsForSupercell, + cartesianToStructureCoordinates, + cartesianDeltaToStructureDelta, + markStructureSaved, + handleAtomClick, + createViewerLoadPlan, + deterministicAtomSample, + FULL_EDIT_ATOM_LIMIT, + LOD_RENDER_ATOM_LIMIT, }; } diff --git a/media/vendor/3dmol/3Dmol-min.js b/media/vendor/3dmol/3Dmol-min.js new file mode 100644 index 0000000..cfdf8e8 --- /dev/null +++ b/media/vendor/3dmol/3Dmol-min.js @@ -0,0 +1,2 @@ +/*! For license information please see 3Dmol-min.js.LICENSE.txt */ +var root,factory;root=this,factory=()=>(()=>{var __webpack_modules__={3(e,t,i){var r=i(663),n=i(981),s=i(972),a=i(681),o=i(834),l=i(746),h=i(670),c=Object.prototype.toString;function d(e){if(!(this instanceof d))return new d(e);this.options=n.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var i=r.inflateInit2(this.strm,t.windowBits);if(i!==a.Z_OK)throw new Error(o[i]);if(this.header=new h,r.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=s.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=r.inflateSetDictionary(this.strm,t.dictionary))!==a.Z_OK))throw new Error(o[i])}function u(e,t){var i=new d(t);if(i.push(e,!0),i.err)throw i.msg||o[i.err];return i.result}d.prototype.push=function(e,t){var i,o,l,h,d,u=this.strm,f=this.options.chunkSize,p=this.options.dictionary,m=!1;if(this.ended)return!1;o=t===~~t?t:!0===t?a.Z_FINISH:a.Z_NO_FLUSH,"string"==typeof e?u.input=s.binstring2buf(e):"[object ArrayBuffer]"===c.call(e)?u.input=new Uint8Array(e):u.input=e,u.next_in=0,u.avail_in=u.input.length;do{if(0===u.avail_out&&(u.output=new n.Buf8(f),u.next_out=0,u.avail_out=f),(i=r.inflate(u,a.Z_NO_FLUSH))===a.Z_NEED_DICT&&p&&(i=r.inflateSetDictionary(this.strm,p)),i===a.Z_BUF_ERROR&&!0===m&&(i=a.Z_OK,m=!1),i!==a.Z_STREAM_END&&i!==a.Z_OK)return this.onEnd(i),this.ended=!0,!1;u.next_out&&(0!==u.avail_out&&i!==a.Z_STREAM_END&&(0!==u.avail_in||o!==a.Z_FINISH&&o!==a.Z_SYNC_FLUSH)||("string"===this.options.to?(l=s.utf8border(u.output,u.next_out),h=u.next_out-l,d=s.buf2string(u.output,l),u.next_out=h,u.avail_out=f-h,h&&n.arraySet(u.output,u.output,l,h,0),this.onData(d)):this.onData(n.shrinkBuf(u.output,u.next_out)))),0===u.avail_in&&0===u.avail_out&&(m=!0)}while((u.avail_in>0||0===u.avail_out)&&i!==a.Z_STREAM_END);return i===a.Z_STREAM_END&&(o=a.Z_FINISH),o===a.Z_FINISH?(i=r.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===a.Z_OK):o!==a.Z_SYNC_FLUSH||(this.onEnd(a.Z_OK),u.avail_out=0,!0)},d.prototype.onData=function(e){this.chunks.push(e)},d.prototype.onEnd=function(e){e===a.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Inflate=d,t.inflate=u,t.inflateRaw=function(e,t){return(t=t||{}).raw=!0,u(e,t)},t.ungzip=u},16(e,t,i){i.r(t),i.d(t,{CAP:()=>r,CC:()=>h.CC,CONTEXTS_PER_VIEWPORT:()=>Ve,Color:()=>h.Color,CustomLinear:()=>c.CustomLinear,Cylinder:()=>o.Cylinder,GLDraw:()=>n,GLModel:()=>GLModel,GLShape:()=>GLShape,GLViewer:()=>GLViewer,GLVolumetricRender:()=>GLVolumetricRender,Gradient:()=>c.Gradient,GradientType:()=>c.GradientType,Label:()=>Label,LabelCount:()=>Be,MarchingCube:()=>MarchingCube,MarchingCubeInitializer:()=>MarchingCubeInitializer,Matrix3:()=>l.Matrix3,Matrix4:()=>l.Matrix4,Parsers:()=>fe,PausableTimer:()=>d.PausableTimer,PointGrid:()=>PointGrid,ProteinSurface:()=>ProteinSurface,Quaternion:()=>l.Quaternion,ROYGB:()=>c.ROYGB,RWB:()=>c.RWB,Ray:()=>l.Ray,Sinebow:()=>c.Sinebow,Sphere:()=>o.Sphere,SurfaceType:()=>Re,Triangle:()=>o.Triangle,Vector2:()=>l.Vector2,Vector3:()=>l.Vector3,VolumeData:()=>Ue.VolumeData,adjustVolumeStyle:()=>d.adjustVolumeStyle,applyPartialCharges:()=>Qe,autoinit:()=>qe,autoload:()=>Xe,base64ToArray:()=>d.base64ToArray,bondLength:()=>V.bondLength,builtinColorSchemes:()=>h.builtinColorSchemes,builtinGradients:()=>c.builtinGradients,chains:()=>h.chains,clamp:()=>l.clamp,conversionMatrix3:()=>l.conversionMatrix3,createStereoViewer:()=>We,createViewer:()=>je,createViewerGrid:()=>He,deepCopy:()=>d.deepCopy,degToRad:()=>l.degToRad,download:()=>d.download,drawCartoon:()=>A,elementColors:()=>h.elementColors,extend:()=>d.extend,get:()=>d.get,getAtomProperty:()=>d.getAtomProperty,getColorFromStyle:()=>d.getColorFromStyle,getElement:()=>d.getElement,getExtent:()=>d.getExtent,getGradient:()=>c.getGradient,getPropertyRange:()=>d.getPropertyRange,getbin:()=>d.getbin,htmlColors:()=>h.htmlColors,inflateString:()=>d.inflateString,isEmptyObject:()=>d.isEmptyObject,isNumeric:()=>d.isNumeric,makeFunction:()=>d.makeFunction,mergeGeos:()=>d.mergeGeos,normalizeValue:()=>c.normalizeValue,partialCharges:()=>Ke,processing_autoinit:()=>Ye,residues:()=>h.residues,setBondLength:()=>V.setBondLength,setSyncSurface:()=>Pe,specStringToObject:()=>d.specStringToObject,splitMesh:()=>Ne,ssColors:()=>h.ssColors,subdivide_spline:()=>u,syncSurface:()=>ke,viewers:()=>Ze});var r,n,s=i(111),a=i(59),o=i(99),l=i(529),h=i(222);!function(e){e[e.NONE=0]="NONE",e[e.FLAT=1]="FLAT",e[e.ROUND=2]="ROUND"}(r||(r={})),function(e){function t(e,t,i){var r,n,s,a,o,l=Math.hypot(e,t);l<1e-4?(n=0,s=1):(n=-e/l,s=t/l),t=-n*e+s*t,(r=Math.hypot(t,i))<1e-4?(a=0,o=1):(a=i/r,o=t/r);var h=new Float32Array(9);return h[0]=s,h[1]=n,h[2]=0,h[3]=-n*o,h[4]=s*o,h[5]=a,h[6]=n*a,h[7]=-s*a,h[8]=o,h}var i=new class CylVertexCache{constructor(){this.cache={};let e,t=[],i=Math.pow(2,4),r=2,n=Math.pow(2,r),s=i/n;for(t[0]=new l.Vector3(-1,0,0),t[s]=new l.Vector3(0,0,1),t[2*s]=new l.Vector3(1,0,0),t[3*s]=new l.Vector3(0,0,-1),r=3;r<=4;r++){for(n=Math.pow(2,r-1),s=i/n,e=0;e.9&&(d=new l.Vector3(1,0,0));const u=new l.Vector3;u.crossVectors(h,d).normalize();const f=new l.Vector3;f.crossVectors(u,h).normalize();const p=(a+1)*(o+1),m=e.updateGeoGroup(p),g=m.vertices,v=m.vertexArray,_=m.colorArray,y=m.normalArray,b=m.faceArray,x=m.lineArray;for(let e=0;e<=a;e++){const i=e/a*2*Math.PI,l=Math.cos(i),c=Math.sin(i),d=l*u.x+c*f.x,p=l*u.y+c*f.y,m=l*u.z+c*f.z,b=t.x+r*d,x=t.y+r*p,w=t.z+r*m;for(let t=0;t<=o;t++){const i=t/o*2*Math.PI,r=Math.cos(i),a=Math.sin(i),l=r*d+a*h.x,c=r*p+a*h.y,u=r*m+a*h.z,f=3*(g+(e*(o+1)+t));v[f]=b+n*l,v[f+1]=x+n*c,v[f+2]=w+n*u,y[f]=l,y[f+1]=c,y[f+2]=u,_[f]=s.r,_[f+1]=s.g,_[f+2]=s.b}}m.vertices+=p;for(let e=0;e0){var g=[n,n+1,n-1,n-2],v=d.faceidx;p[v]=g[0],p[v+1]=g[1],p[v+2]=g[3],p[v+3]=g[1],p[v+4]=g[2],p[v+5]=g[3],d.faceidx+=6}d.vertices+=2}}function p(e,t,i,r,n,s,a){a&&"default"!==a||(a="rectangle"),"edged"===a?function(e,t,i,r,n){if(!(t.length<2)){var s,a;if(s=t[0],a=t[t.length-1],s=u(s,r),a=u(a,r),!n)return f(e,s,a,i);var l,c,d,p,m,g,v,_,y,b,x,w,A,C,S,z,M,T,E,L,F,I,D=[],O=[[0,2,-6,-8],[-4,-2,6,4],[7,-1,-5,3],[-3,5,1,-7]];for(A=0,C=s.length;A0){var k=void 0!==w&&void 0!==x&&w.serial!==x.serial;for(S=0;S<4;S++){var P=[g+O[S][0],g+O[S][1],g+O[S][2],g+O[S][3]];if(I[_=E.faceidx]=P[0],I[_+1]=P[1],I[_+2]=P[3],I[_+3]=P[1],I[_+4]=P[2],I[_+5]=P[3],E.faceidx+=6,x.clickable||w.clickable||x.hoverable||w.hoverable){var U=D[P[3]].clone(),N=D[P[0]].clone(),B=D[P[2]].clone(),G=D[P[1]].clone();if(U.atom=D[P[3]].atom||null,B.atom=D[P[2]].atom||null,N.atom=D[P[0]].atom||null,G.atom=D[P[1]].atom||null,k){var V=U.clone().add(N).multiplyScalar(.5),j=B.clone().add(G).multiplyScalar(.5),H=U.clone().add(G).multiplyScalar(.5);S%2==0?((w.clickable||w.hoverable)&&(z=new o.Triangle(V,H,U),M=new o.Triangle(j,B,H),T=new o.Triangle(H,B,U),w.intersectionShape.triangle.push(z),w.intersectionShape.triangle.push(M),w.intersectionShape.triangle.push(T)),(x.clickable||x.hoverable)&&(z=new o.Triangle(N,G,H),M=new o.Triangle(G,j,H),T=new o.Triangle(N,H,V),x.intersectionShape.triangle.push(z),x.intersectionShape.triangle.push(M),x.intersectionShape.triangle.push(T))):((x.clickable||x.hoverable)&&(z=new o.Triangle(V,H,U),M=new o.Triangle(j,B,H),T=new o.Triangle(H,B,U),x.intersectionShape.triangle.push(z),x.intersectionShape.triangle.push(M),x.intersectionShape.triangle.push(T)),(w.clickable||w.hoverable)&&(z=new o.Triangle(N,G,H),M=new o.Triangle(G,j,H),T=new o.Triangle(N,H,V),w.intersectionShape.triangle.push(z),w.intersectionShape.triangle.push(M),w.intersectionShape.triangle.push(T)))}else(x.clickable||x.hoverable)&&(z=new o.Triangle(N,G,U),M=new o.Triangle(G,B,U),x.intersectionShape.triangle.push(z),x.intersectionShape.triangle.push(M))}}}E.vertices+=8,w=x}var W=D.length-8;for(L=(E=e.updateGeoGroup(8)).vertexArray,F=E.colorArray,I=E.faceArray,v=3*(g=E.vertices),_=E.faceidx,A=0;A<4;A++){D.push(D[2*A]),D.push(D[W+2*A]);var q=D[2*A],Y=D[W+2*A];L[v+6*A]=q.x,L[v+1+6*A]=q.y,L[v+2+6*A]=q.z,L[v+3+6*A]=Y.x,L[v+4+6*A]=Y.y,L[v+5+6*A]=Y.z,F[v+6*A]=y.r,F[v+1+6*A]=y.g,F[v+2+6*A]=y.b,F[v+3+6*A]=y.r,F[v+4+6*A]=y.g,F[v+5+6*A]=y.b}W+=8,z=[g,g+2,g+6,g+4],M=[g+1,g+5,g+7,g+3],I[_]=z[0],I[_+1]=z[1],I[_+2]=z[3],I[_+3]=z[1],I[_+4]=z[2],I[_+5]=z[3],I[_+6]=M[0],I[_+7]=M[1],I[_+8]=M[3],I[_+9]=M[1],I[_+10]=M[2],I[_+11]=M[3],E.faceidx+=12,E.vertices+=8}}(e,t,i,r,n):"rectangle"!==a&&"oval"!==a&&"parabola"!==a||function(e,t,i,r,n,s,a){var l,c,d,p,m,g,v,_,y,b;if((d=t.length)<2||t[0].length<2)return;for(l=0;l0&&(l-=1,s=!0),E=Math.round(l*(i.length-1)/p),T=h.CC.color(i[E]),y=v,b=_,v=[],_=[],m=[],void 0!==t[0][l].atom&&(M=t[0][l].atom,"oval"===a?g=x:"rectangle"===a?g=w:"parabola"===a&&(g=A)),g||(g=w),c=0;c0&&!s){for(c=0;c<2*d;c++)D=[C+O[c][0],C+O[c][1],C+O[c][2],C+O[c][3]],I[z=R.faceidx]=D[0],I[z+1]=D[1],I[z+2]=D[3],I[z+3]=D[1],I[z+4]=D[2],I[z+5]=D[3],R.faceidx+=6;if(M.clickable||M.hoverable){var U=[];for(c in U.push(new o.Triangle(y[0],v[0],v[d-1])),U.push(new o.Triangle(y[0],v[d-1],y[d-1])),U.push(new o.Triangle(y[d-1],v[d-1],_[d-1])),U.push(new o.Triangle(y[d-1],_[d-1],b[d-1])),U.push(new o.Triangle(_[0],b[0],b[d-1])),U.push(new o.Triangle(_[d-1],_[0],b[d-1])),U.push(new o.Triangle(v[0],y[0],b[0])),U.push(new o.Triangle(_[0],v[0],b[0])),U)M.intersectionShape.triangle.push(U[c])}}R.vertices+=2*d}for(L=R.vertexArray,F=R.colorArray,I=R.faceArray,S=3*(C=R.vertices),z=R.faceidx,l=0;l=0&&i<1&&(s.transparent=!0,s.opacity=i),s.outline=r;var o=new a.Mesh(t,s);e.add(o)}}function _(e,t,i,r,n,s,a,o,h){var c,d,u,f,p,m;if(r&&n&&a){var g=n.sub(r);g.normalize();var v=o[h];for(d=h+1;d0&&p(V,H,j,f,E,0,H.style);var i=[],r=null;if(t){for(L=0;L0&&p(V,H,j,f,E,0,H.style),H=[],L=0;L0&&a0&&!(n.length<3);){var s=parseInt(n[0]);if(isNaN(s)||s<=0)break;if(n.length1){var l=new Float32Array(o[1].split(/\s+/)),h=new a.Matrix3(l[0],l[3],l[6],l[1],l[4],l[7],l[2],l[5],l[8]);i.modelData=[{cryst:{matrix:h}}]}for(var c=2,d=i[i.length-1].length,u=d+s,f=d;f=7&&(m.dx=parseFloat(p[4]),m.dy=parseFloat(p[5]),m.dz=parseFloat(p[6]))}if(!t.multimodel)break;i.push([]),n.splice(0,c)}if(r)for(let e=0;eh&&(c.color1||c.color2)&&([c.color1,c.color2]=[c.color2,c.color1]),Object.assign(u.bondStyles[f],c))}delete n.bonds}Object.keys(n).length>0&&(t.modelData[s].style=n)},E=function(e,t,i,r,n){for(;t\s*<([^>]+)>/);if(!o)continue;const l=o[1].trim(),h=[];for(;t"!==e[t].charAt(0));)h.push(e[t]),t++;"3DMOL_STYLE"===l&&h.length>0&&T(h.join(" ").trim(),i,r,n)}return t},L=function(e,t,i,r){e[t].bonds.push(i),e[t].bondOrder.push(r),e[i].bonds.push(t),e[i].bondOrder.push(r)};function F(e,t){let i="V2000";const r=e.split(/\r?\n|\r/);return r.length>3&&r[3].length>38&&(i=r[3].substring(34,39)),"V2000"===i?function(e,t){const i=[[]],r=i.modelData=[];r.push({});const n=void 0!==t.keepH&&!t.keepH;let s=0;for(;s4){const e={},r=i[1].replace(/ /g,"");e.atom=e.elem=r[0].toUpperCase()+r.substring(1).toLowerCase(),"H"===e.elem&&n||(e.serial=t,c[t]=d.length,e.x=parseFloat(i[2]),e.y=parseFloat(i[3]),e.z=parseFloat(i[4]),e.hetflag=!0,e.bonds=[],e.bondOrder=[],e.properties={},e.index=d.length,d.push(e))}}if("M V30 END ATOM"!==e[s+h])break;if(h++,0===l||"M V30 BEGIN BOND"!==e[s+h])break;h++;for(let t=0;t3){const e=c[parseInt(t[2])-1+u],i=c[parseInt(t[3])-1+u],r=parseFloat(t[1]);void 0!==e&&void 0!==i&&L(d,e,i,r)}}if(s=E(e,s+h,i,c,u),!t.multimodel)break;t.onemol||(i.push([]),r.push({}))}return i}(r,t):[[""]]}function I(e,t){var i=[[]];"string"==typeof e&&(e=JSON.parse(e));for(var r=e.m,n=r[0].a,s=r[0].b,a=r[0].s,o=void 0!==t&&void 0!==t.parseStyle?t.parseStyle:void 0!==a,l=i[i.length-1].length,h=0;hi)break;if(e.atom==s.atom)continue;const o=Math.abs(e.y-s.y);if(o>i)continue;const l=Math.abs(e.x-s.x);if(l>i)continue;const h=l*l+o*o+t*t;h>r||e.chain==s.chain&&Math.abs(e.resi-s.resi)<4||(h1.001;)i[e]-=1,r[e]-=1}const n=new a.Vector3(r[0],r[1],r[2]);return n.applyMatrix3(h),n};if(i.normalizeAssembly&&r)for(let i=0;i.001&&(l=i),e[i].translate(n)}if(n){if(e.length>1)for(let i=0;i=0){const i=new a.Vector3;for(let r=0;r1)break;(0,R.areConnected)(r,e,t)&&(-1===r.bonds.indexOf(e.index)&&(r.bonds.push(e.index),r.bondOrder.push(1),e.bonds.push(r.index),e.bondOrder.push(1)),r.resi!==e.resi&&(n=!0))}}}const U=function(e,t,i,r){return new a.Vector3(t,i,r).applyMatrix3(e)};function N(e,t={}){const i=[],r=!t.doAssembly,n=i.modelData=[],s=void 0===t.assignBonds||t.assignBonds;function o(e,t){const i=[];let r=0,n=0;for(;n-1){let t=d.split("");t[e]="_",d=(d=t.join("")).substring(0,e)+"_"+d.substring(e+1)}}h.push(d)}}let u=0;for(;uMOLECULE/),s=e.search(/@ATOM/);if(-1==n||-1==s)return i;for(var a=e.substring(n).split(/\r?\n|\r/);a.length>0;){var o=[],l=a[2].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),h=parseInt(l[0]),c=0;l.length>1&&(c=parseInt(l[1]));var d,u=4;for(d=3;dATOM"==a[d]){u=d+1;break}var f=i[i.length-1].length,p=f+h;for(d=f;dBOND"==a[u++]){b=!0;break}if(b&&c)for(d=0;d0&&"H"===i[0]&&"Hg"!==i&&"He"!==i&&"Hf"!==i&&"Hs"!==i&&"Ho"!==i&&(i="H"),i.length>1&&(i=i[0].toUpperCase()+i.substring(1).toLowerCase(),void 0===V.bondTable[i]?i=i[0]:t&&("Ca"===i||"Cd"===i)&&(i="C")),i}function H(e){for(const t in e)return!1;return!0}function W(e,t,i){const r=[],n=void 0===t.assignBonds||t.assignBonds,s=!t.keepH,o=!!t.noSecondaryStructure,l=!t.noComputeSecondaryStructure,h=!t.doAssembly,c=t.altLoc?t.altLoc:"A",d={symmetries:[],cryst:void 0};let u,f=[];const p=[];let m;const g={};for(let t=0;t=4?1:i}}else g[a]=1,0!=t.bonds.length&&t.bonds[t.bonds.length-1]===s||(t.bonds.push(s),t.bondOrder.push(1))}}else if("HELIX "===n){o=m.substring(19,20),l=parseInt(m.substring(21,25)),v=parseInt(m.substring(33,37)),o in i||(i[o]={}),i[o][l]="h1";for(let e=l+1;e1&&("1"==e[1]?t.ssbegin=!0:"2"==e[1]&&(t.ssend=!0))}}return[r,d,f]}function q(e,t){t=t||{};var i=[],r={};i.modelData=[];for(var n=e.split(/\r?\n|\r/);n.length>0;){var s=W(n,t,r),a=s[0],o=s[1];if(n=s[2],0!=a.length){if(t.multimodel&&t.onemol&&i.length>0)for(var l=i[0].length,h=0;h1&&t[1].toUpperCase()!=t[1]&&(m=t.substring(0,2)),l="H"==n[0],s[e]=i[i.length-1].length,i[i.length-1].push({resn:r,x:c,y:d,z:u,elem:m,hetflag:l,chain:a,resi:o,serial:e,atom:t,bonds:[],ss:"c",bondOrder:[],properties:{charge:f,partialCharge:f,radius:p},pdbline:n})}else if("CONECT"==o){var g=parseInt(n.substring(6,11)),v=i[i.length-1][s[g]];for(let e=0;e<4;e++){var _=parseInt(n.substring([11,16,21,26][e],[11,16,21,26][e]+5)),y=i[i.length-1][s[_]];void 0!==v&&void 0!==y&&(v.bonds.push(s[_]),v.bondOrder.push(1))}}}for(let e=0;e0){var L=g.bioAssemblyList[l].transformList;for(h=0,m=L.length;h{e.chainIndexList.forEach(t=>{k[t]="polymer"==e.type})});var P=0;for(p=0;p=w.length||K(w[te]!=ee))&&(J=!0)}var ie=g.groupIdList[b],re=W.groupName;let e=W.chemCompType;var ne=x;let t=Q.has(e)||!k[y];for(u=0;u=x){P=e;break}let n=B[t],s=B[i],a=N[n],o=N[s];a&&o&&(a.bonds.push(s),a.bondOrder.push(r),o.bonds.push(n),o.bondOrder.push(r))}t.multimodel&&(t.onemol||v.push([]))}if(!o)for(let e=0;e0&&n[0].includes("VERSION")))return[];{var s=n.filter(function(e){return e.includes("POINTERS")||e.includes("ATOM_NAME")||e.includes("CHARGE")||e.includes("RADII")||e.includes("BONDS_INC_HYDROGEN")||e.includes("BONDS_WITHOUT_HYDROGEN")||e.includes("RESIDUE_LABEL")||e.includes("RESIDUE_POINTER")}),a=d("POINTERS");if(-1==a)return[];var o=u(a),l=parseInt(n[a+1].slice(0,o[1]));let e=parseInt(n[a+2].slice(o[1],o[0]+o[1]));if(isNaN(l)||l<=0)return[];if(-1==(a=d("ATOM_NAME")))return[];var h=(o=u(a))[0];for(let e=0;e=c[r]&&(l=t[r],r+=1,s+=1),i[e].resi=s,i[e].resn=l}}if(-1!=(a=d("RADII"))){r=0,h=(o=u(a))[0];for(let e=0;e0){for(;!n[t].includes("FORMAT");)t++;return t}return-1}function u(e){var t=n[e].match(/\((\d*)\S*/),i=n[e].match(/[a-zA-Z](\d*)\)\s*/);return null==i&&(i=n[e].match(/[a-zA-Z](\d*)\.\d*\)\s*/)),[parseInt(t[1]),parseInt(i[1])]}return[i]}function ee(e,t){const i=[],r=e.split(/\r?\n|\r/);for(;r.length>0;){const e=parseInt(r[1]);if(r.length<3||isNaN(e)||e<=0||r.length44&&(s.dx=10*parseFloat(i.slice(44,52)),s.dy=10*parseFloat(i.slice(52,60)),s.dz=10*parseFloat(i.slice(60,68))),t[e]=s}if(r.length<=n+3){const e=r[n++].trim().split(/\s+/);if(3===e.length){for(let t=0;t<3;t++)e[t]=(10*parseFloat(e[t])).toString();i.box=e}}r.splice(0,++n)}for(let e=0;e=0;i--)t=ae(t,e.encoding[i]);return t}function ae(e,t){switch(t.kind){case"ByteArray":switch(t.type){case re.IntDataType.Uint8:return e;case re.IntDataType.Int8:return function(e){return new Int8Array(e.buffer,e.byteOffset)}(e);case re.IntDataType.Int16:return function(e){return he(e,2,Int16Array)}(e);case re.IntDataType.Uint16:return function(e){return he(e,2,Uint16Array)}(e);case re.IntDataType.Int32:return function(e){return he(e,4,Int32Array)}(e);case re.IntDataType.Uint32:return function(e){return he(e,4,Uint32Array)}(e);case re.FloatDataType.Float32:return function(e){return he(e,4,Float32Array)}(e);case re.FloatDataType.Float64:return function(e){return he(e,8,Float64Array)}(e);default:throw new Error("unreachable")}case"FixedPoint":return function(e,t){const i=e.length,r=le(t.srcType,i),n=1/t.factor;for(let t=0;te.name),getField(e){const r=t[e];if(r)return i[e]||(i[e]=se(r.data)),i[e]}}}var de=i(471);class Connectivity{constructor(e){if(this.C={},e){let t=e.getField("comp_id"),i=e.getField("atom_id_1"),r=e.getField("atom_id_2"),n=e.getField("value_order");for(let e=0;e0&&(s.bonds.push(a.index),a.bonds.push(s.index),s.bondOrder.push(o),a.bondOrder.push(o))}}for(let e of t.C){let t=e[0],i=e[1],r=e[2],n=this.geta(t),s=this.geta(i);null!=n&&null!=s&&(n.bonds.push(s.index),s.bonds.push(n.index),n.bondOrder.push(r),s.bondOrder.push(r))}}}function ue(e,t){var i=!t.keepH,r=t.altLoc?t.altLoc:"A",n=!t.noComputeSecondaryStructure;const s=!t.doAssembly,o=void 0===t.assignBonds||t.assignBonds;if("string"==typeof e)try{e=(0,d.base64ToArray)(e)}catch(t){e=(new TextEncoder).encode(e)}else e=new Uint8Array(e);var l=de.decodeMsgpack(e);31==l&&(e=(0,d.inflateString)(e,!1),l=de.decodeMsgpack(e));var h=[],c=h.modelData=[],u=l.dataBlocks.length;if(0==u)return h;t.multimodel||(u=1);for(let e=0;e1&&("1"==e[1]?i.ssbegin=!0:"2"==e[1]&&(i.ssend=!0))}}}t.multimodel&&e{const e=new Uint8Array(4);return!((new Uint32Array(e.buffer)[0]=1)&e[0])})(),ve={int8:globalThis.Int8Array,uint8:globalThis.Uint8Array,int16:globalThis.Int16Array,uint16:globalThis.Uint16Array,int32:globalThis.Int32Array,uint32:globalThis.Uint32Array,uint64:globalThis.BigUint64Array,int64:globalThis.BigInt64Array,float32:globalThis.Float32Array,float64:globalThis.Float64Array};class IOBuffer{buffer;byteLength;byteOffset;length;offset;lastWrittenByte;littleEndian;_data;_mark;_marks;constructor(e=8192,t={}){let i=!1;"number"==typeof e?e=new ArrayBuffer(e):(i=!0,this.lastWrittenByte=e.byteLength);const r=t.offset?t.offset>>>0:0,n=e.byteLength-r;let s=r;(ArrayBuffer.isView(e)||e instanceof IOBuffer)&&(e.byteLength!==e.buffer.byteLength&&(s=e.byteOffset+r),e=e.buffer),this.lastWrittenByte=i?n:0,this.buffer=e,this.length=n,this.byteLength=n,this.byteOffset=s,this.offset=0,this.littleEndian=!0,this._data=new DataView(this.buffer,s,n),this._mark=0,this._marks=[]}available(e=1){return this.offset+e<=this.length}isLittleEndian(){return this.littleEndian}setLittleEndian(){return this.littleEndian=!0,this}isBigEndian(){return!this.littleEndian}setBigEndian(){return this.littleEndian=!1,this}skip(e=1){return this.offset+=e,this}back(e=1){return this.offset-=e,this}seek(e){return this.offset=e,this}mark(){return this._mark=this.offset,this}reset(){return this.offset=this._mark,this}pushMark(){return this._marks.push(this.offset),this}popMark(){const e=this._marks.pop();if(void 0===e)throw new Error("Mark stack empty");return this.seek(e),this}rewind(){return this.offset=0,this}ensureAvailable(e=1){if(!this.available(e)){const t=2*(this.offset+e),i=new Uint8Array(t);i.set(new Uint8Array(this.buffer)),this.buffer=i.buffer,this.length=t,this.byteLength=t,this._data=new DataView(this.buffer)}return this}readBoolean(){return 0!==this.readUint8()}readInt8(){return this._data.getInt8(this.offset++)}readUint8(){return this._data.getUint8(this.offset++)}readByte(){return this.readUint8()}readBytes(e=1){return this.readArray(e,"uint8")}readArray(e,t){const i=ve[t].BYTES_PER_ELEMENT*e,r=this.byteOffset+this.offset,n=this.buffer.slice(r,r+i);if(this.littleEndian===ge&&"uint8"!==t&&"int8"!==t){const e=new Uint8Array(this.buffer.slice(r,r+i));e.reverse();const n=new ve[t](e.buffer);return this.offset+=i,n.reverse(),n}const s=new ve[t](n);return this.offset+=i,s}readInt16(){const e=this._data.getInt16(this.offset,this.littleEndian);return this.offset+=2,e}readUint16(){const e=this._data.getUint16(this.offset,this.littleEndian);return this.offset+=2,e}readInt32(){const e=this._data.getInt32(this.offset,this.littleEndian);return this.offset+=4,e}readUint32(){const e=this._data.getUint32(this.offset,this.littleEndian);return this.offset+=4,e}readFloat32(){const e=this._data.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e}readFloat64(){const e=this._data.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e}readBigInt64(){const e=this._data.getBigInt64(this.offset,this.littleEndian);return this.offset+=8,e}readBigUint64(){const e=this._data.getBigUint64(this.offset,this.littleEndian);return this.offset+=8,e}readChar(){return String.fromCharCode(this.readInt8())}readChars(e=1){let t="";for(let i=0;ithis.lastWrittenByte&&(this.lastWrittenByte=this.offset)}}const _e=1,ye=2,be=3,xe=4,we=5,Ae=6;function Ce(e){switch(Number(e)){case _e:return"byte";case ye:return"char";case be:return"short";case xe:return"int";case we:return"float";case Ae:return"double";default:return"undefined"}}function Se(e){switch(Number(e)){case _e:case ye:return 1;case be:return 2;case xe:case we:return 4;case Ae:return 8;default:return-1}}function ze(e){switch(String(e)){case"byte":return _e;case"char":return ye;case"short":return be;case"int":return xe;case"float":return we;case"double":return Ae;default:return-1}}function Me(e,t){if(1!==e){const i=new Array(e);for(let r=0;r6,`non valid type ${c}`);const d=e.readUint32();let u=e.readUint32();2===i&&(Ee(u>0,"offsets larger than 4GB not supported"),u=e.readUint32());let f=!1;void 0!==t&&l[0]===t&&(s+=d,f=!0),n[r]={name:a,dimensions:l,attributes:h,type:Ce(c),size:d,offset:u,record:f}}}return{variables:n,recordStep:s}}(e,r?.id,t);return Array.isArray(s)||(i.variables=s.variables,r.recordStep=s.recordStep),i.recordDimension=r,i}function De(e){const t=e.readUint32();let i;if(0===t)return Ee(0!==e.readUint32(),"wrong empty tag for list of attributes"),[];{Ee(12!==t,"wrong tag for list of attributes");const r=e.readUint32();i=new Array(r);for(let t=0;t6,`non valid type ${n}`);const s=e.readUint32(),a=Te(e,n,s);Le(e),i[t]={name:r,type:Ce(n),value:a}}}return i}function Oe(){const e=[];e.push("DIMENSIONS");for(const t of this.dimensions)e.push(` ${t.name.padEnd(30)} = size: ${t.size}`);e.push(""),e.push("GLOBAL ATTRIBUTES");for(const t of this.globalAttributes)e.push(` ${t.name.padEnd(30)} = ${t.value}`);const t=JSON.parse(JSON.stringify(this.variables));e.push(""),e.push("VARIABLES:");for(const i of t){i.value=this.getDataVariable(i);let t=JSON.stringify(i.value);t.length>50&&(t=t.substring(0,50)),isNaN(i.value.length)||(t+=` (length: ${i.value.length})`),e.push(` ${i.name.padEnd(30)} = ${t}`)}return e.join("\n")}class NetCDFReader{constructor(e){this.toString=Oe;const t=new IOBuffer(e);t.setBigEndian(),Ee("CDF"!==t.readChars(3),"should start with CDF");const i=t.readByte();Ee(i>2,"unknown version"),this.header=Ie(t,i),this.buffer=t}get version(){return 1===this.header.version?"classic format":"64-bit offset format"}get recordDimension(){return this.header.recordDimension}get dimensions(){return this.header.dimensions}get globalAttributes(){return this.header.globalAttributes}getAttribute(e){const t=this.globalAttributes.find(t=>t.name===e);return t?t.value:null}getDataVariableAsString(e){const t=this.getDataVariable(e);return t?t.join(""):null}get variables(){return this.header.variables}getDataVariable(e){let t;if(t="string"==typeof e?this.header.variables.find(t=>t.name===e):e,void 0===t)throw new Error("Not a valid NetCDF v3.x file: variable not found");return this.buffer.seek(t.offset),t.record?function(e,t,i){const r=ze(t.type),n=t.size?t.size/Se(r):1,s=i.length,a=new Array(s),o=i.recordStep;if(!o)throw new Error("recordDimension.recordStep is undefined");for(let t=0;tt.name===e)}attributeExists(e){return void 0!==this.globalAttributes.find(t=>t.name===e)}}class GLModel{static sameObj(e,t){return e&&t?JSON.stringify(e)==JSON.stringify(t):e==t}constructor(e,t,i){this.atoms=[],this.frames=[],this.box=null,this.atomdfs=null,this.id=0,this.hidden=!1,this.molObj=null,this.renderedMolObj=null,this.lastColors=null,this.modelData={},this.modelDatas=null,this.idMatrix=new l.Matrix4,this.dontDuplicateAtoms=!0,this.defaultColor=h.elementColors.defaultColor,this.defaultStickRadius=.25,this._drawnAromaticRings=new Set,this._ringCache=new Map,this.options=t||{},this.viewer=i,this.ElementColors=this.options.defaultcolors?this.options.defaultcolors:h.elementColors.defaultColors,this.defaultSphereRadius=this.options.defaultSphereRadius?this.options.defaultSphereRadius:1.5,this.defaultCartoonQuality=this.options.cartoonQuality?this.options.cartoonQuality:10,this.id=e}getRadiusFromStyle(e,t){var i=this.defaultSphereRadius;if(void 0!==t.radius)i=t.radius;else if(GLModel.vdwRadii[e.elem])i=GLModel.vdwRadii[e.elem];else if(e.elem.length>1){let t=e.elem;t=t[0].toUpperCase()+t[1].toLowerCase(),GLModel.vdwRadii[t]&&(i=GLModel.vdwRadii[t])}return void 0!==t.scale&&(i*=t.scale),i}drawAtomCross(e,t){if(e.style.cross){var i=e.style.cross;if(!i.hidden){var r=i.linewidth||GLModel.defaultlineWidth;t[r]||(t[r]=new a.Geometry);var n=t[r].updateGeoGroup(6),s=this.getRadiusFromStyle(e,i),o=[[s,0,0],[-s,0,0],[0,s,0],[0,-s,0],[0,0,s],[0,0,-s]],h=e.clickable||e.hoverable;h&&void 0===e.intersectionShape&&(e.intersectionShape={sphere:[],cylinder:[],line:[]});for(var c=(0,d.getColorFromStyle)(e,i),u=n.vertexArray,f=n.colorArray,p=0;p<6;p++){var m=3*n.vertices;if(n.vertices++,u[m]=e.x+o[p][0],u[m+1]=e.y+o[p][1],u[m+2]=e.z+o[p][2],f[m]=c.r,f[m+1]=c.g,f[m+2]=c.b,h){var g=new l.Vector3(o[p][0],o[p][1],o[p][2]);g.multiplyScalar(.1),g.set(g.x+e.x,g.y+e.y,g.z+e.z),e.intersectionShape.line.push(g)}}}}}getGoodCross(e,t,i,r){for(var n=null,s=-1,a=0,o=e.bonds.length;as&&(n=d,(s=h)>.1))return n}return n}getSideBondV(e,t,i){var r,n,s,a,o=new l.Vector3(e.x,e.y,e.z),h=new l.Vector3(t.x,t.y,t.z).clone(),c=null;if(h.sub(o),1===e.bonds.length)if(1===t.bonds.length)c=h.clone(),Math.abs(c.x)>1e-4?c.y+=1:c.x+=1;else{for(s=null,r=0;r1e-4?c.y+=1:c.x+=1),c.cross(h),c.normalize(),Math.abs(c.x)>.001?c.x<0&&c.negate():Math.abs(c.y)>.001?c.y<0&&c.negate():c.z<0&&c.negate(),c}addLine(e,t,i,r,n,s){e[i]=r.x,e[i+1]=r.y,e[i+2]=r.z,t[i]=s.r,t[i+1]=s.g,t[i+2]=s.b,e[i+3]=n.x,e[i+4]=n.y,e[i+5]=n.z,t[i+3]=s.r,t[i+4]=s.g,t[i+5]=s.b}drawBondLines(e,t,i){if(e.style.line){var r=e.style.line;if(!r.hidden){var n,s,o,c,u=r.linewidth||GLModel.defaultlineWidth;i[u]||(i[u]=new a.Geometry);for(var f=i[u].updateGeoGroup(6*e.bonds.length),p=f.vertexArray,m=f.colorArray,g=0;g=v.index)){var _=new l.Vector3(e.x,e.y,e.z),y=new l.Vector3(v.x,v.y,v.z),b=_.clone().add(y).multiplyScalar(.5),x=!1,w=e.clickable||e.hoverable,A=v.clickable||v.hoverable;(w||A)&&(w&&(void 0===e.intersectionShape&&(e.intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]}),e.intersectionShape.line.push(_),e.intersectionShape.line.push(b)),A&&(void 0===v.intersectionShape&&(v.intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]}),v.intersectionShape.line.push(b),v.intersectionShape.line.push(y)));var C=(0,d.getColorFromStyle)(e,e.style.line),S=(0,d.getColorFromStyle)(v,v.style.line);if(e.bondStyles&&e.bondStyles[g]){var z=e.bondStyles[g];if(!z.iswire)continue;z.singleBond&&(x=!0),void 0!==z.color1&&(C=h.CC.color(z.color1)),void 0!==z.color2&&(S=h.CC.color(z.color2))}var M,T,E=3*f.vertices;if(e.bondOrder[g]>1&&e.bondOrder[g]<4&&!x){var L=this.getSideBondV(e,v,g),F=y.clone();F.sub(_),2==e.bondOrder[g]?(L.multiplyScalar(.1),(n=_.clone()).add(L),(s=_.clone()).sub(L),(o=n.clone()).add(F),(c=s.clone()).add(F),C==S?(f.vertices+=4,this.addLine(p,m,E,n,o,C),this.addLine(p,m,E+6,s,c,C)):(f.vertices+=8,F.multiplyScalar(.5),(M=n.clone()).add(F),(T=s.clone()).add(F),this.addLine(p,m,E,n,M,C),this.addLine(p,m,E+6,M,o,S),this.addLine(p,m,E+12,s,T,C),this.addLine(p,m,E+18,T,c,S))):3==e.bondOrder[g]&&(L.multiplyScalar(.1),(n=_.clone()).add(L),(s=_.clone()).sub(L),(o=n.clone()).add(F),(c=s.clone()).add(F),C==S?(f.vertices+=6,this.addLine(p,m,E,_,y,C),this.addLine(p,m,E+6,n,o,C),this.addLine(p,m,E+12,s,c,C)):(f.vertices+=12,F.multiplyScalar(.5),(M=n.clone()).add(F),(T=s.clone()).add(F),this.addLine(p,m,E,_,b,C),this.addLine(p,m,E+6,b,y,S),this.addLine(p,m,E+12,n,M,C),this.addLine(p,m,E+18,M,o,S),this.addLine(p,m,E+24,s,T,C),this.addLine(p,m,E+30,T,c,S)))}else C==S?(f.vertices+=2,this.addLine(p,m,E,_,y,C)):(f.vertices+=4,this.addLine(p,m,E,_,b,C),this.addLine(p,m,E+6,b,y,S))}}}}}drawAtomSphere(e,t){if(e.style.sphere){var i=e.style.sphere;if(!i.hidden){var r=(0,d.getColorFromStyle)(e,i),s=this.getRadiusFromStyle(e,i);if((!0===e.clickable||e.hoverable)&&void 0!==e.intersectionShape){var a=new l.Vector3(e.x,e.y,e.z);e.intersectionShape.sphere.push(new o.Sphere(a,s))}n.drawSphere(t,e,s,r)}}}drawAtomClickSphere(e){if(e.style.clicksphere){var t=e.style.clicksphere;if(!t.hidden){var i=this.getRadiusFromStyle(e,t);if((!0===e.clickable||e.hoverable)&&void 0!==e.intersectionShape){var r=new l.Vector3(e.x,e.y,e.z);e.intersectionShape.sphere.push(new o.Sphere(r,i))}}}}drawAtomInstanced(e,t){if(e.style.sphere){var i=e.style.sphere;if(!i.hidden){var r=this.getRadiusFromStyle(e,i),n=(0,d.getColorFromStyle)(e,i),s=t.updateGeoGroup(1),a=s.vertices,h=3*a,c=s.vertexArray,u=s.colorArray,f=s.radiusArray;if(c[h]=e.x,c[h+1]=e.y,c[h+2]=e.z,u[h]=n.r,u[h+1]=n.g,u[h+2]=n.b,f[a]=r,(!0===e.clickable||e.hoverable)&&void 0!==e.intersectionShape){var p=new l.Vector3(e.x,e.y,e.z);e.intersectionShape.sphere.push(new o.Sphere(p,r))}s.vertices+=1}}}drawSphereImposter(e,t,i,r){var n,s=e.updateGeoGroup(4),a=s.vertices,o=3*a,l=s.vertexArray,h=s.colorArray;for(n=0;n<4;n++)l[o+3*n]=t.x,l[o+3*n+1]=t.y,l[o+3*n+2]=t.z;var c=s.normalArray;for(n=0;n<4;n++)h[o+3*n]=r.r,h[o+3*n+1]=r.g,h[o+3*n+2]=r.b;c[o+0]=-i,c[o+1]=i,c[o+2]=0,c[o+3]=-i,c[o+4]=-i,c[o+5]=0,c[o+6]=i,c[o+7]=-i,c[o+8]=0,c[o+9]=i,c[o+10]=i,c[o+11]=0,s.vertices+=4;var d=s.faceArray,u=s.faceidx;d[u+0]=a,d[u+1]=a+1,d[u+2]=a+2,d[u+3]=a+2,d[u+4]=a+3,d[u+5]=a,s.faceidx+=6}drawAtomImposter(e,t){if(e.style.sphere){var i=e.style.sphere;if(!i.hidden){var r=this.getRadiusFromStyle(e,i),n=(0,d.getColorFromStyle)(e,i);if((!0===e.clickable||e.hoverable)&&void 0!==e.intersectionShape){var s=new l.Vector3(e.x,e.y,e.z);e.intersectionShape.sphere.push(new o.Sphere(s,r))}this.drawSphereImposter(t,e,r,n)}}}drawRingImposter(e,t,i,r,n,s){for(var a=e.updateGeoGroup(4),o=a.vertices,l=3*o,h=a.vertexArray,c=a.colorArray,d=a.normalArray,u=a.radiusArray,f=r+n,p=0;p<4;p++)h[l+3*p]=t.x,h[l+3*p+1]=t.y,h[l+3*p+2]=t.z;var m=i.x*n,g=i.y*n,v=i.z*n;for(p=0;p<4;p++)d[l+3*p]=m,d[l+3*p+1]=g,d[l+3*p+2]=v;var _=Math.abs(s.b);_<1e-4&&(_=1e-4),c[l+0]=s.r,c[l+1]=s.g,c[l+2]=_,c[l+3]=s.r,c[l+4]=s.g,c[l+5]=-_,c[l+6]=s.r,c[l+7]=s.g,c[l+8]=-_,c[l+9]=s.r,c[l+10]=s.g,c[l+11]=_,u[o+0]=-f,u[o+1]=-f,u[o+2]=f,u[o+3]=f,a.vertices+=4;var y=a.faceArray,b=a.faceidx;y[b+0]=o,y[b+1]=o+1,y[b+2]=o+2,y[b+3]=o+2,y[b+4]=o+3,y[b+5]=o,a.faceidx+=6}calculateDashes(e,t,i,r,n,s){var a,o,h;const c=t.x-e.x,d=t.y-e.y,u=t.z-e.z,f=Math.sqrt(c*c+d*d+u*u);if(f<.001)return[{from:new l.Vector3(e.x,e.y,e.z),to:new l.Vector3(t.x,t.y,t.z),color:null!==(a=null==s?void 0:s[0])&&void 0!==a?a:null}];i=Math.max(i,0),r=Math.max(r,.001);const p=Math.max(n,0)+2*i,m=p/2,g=f-2*m;if(g1?v-1:0,y=g-v*r,b=_>0?y/(_+1):y,x=c/f,w=d/f,A=u/f,C=[],S=m+b/2;for(let t=0;t1&&t>=v/2?s[1]:null!==(h=null==s?void 0:s[0])&&void 0!==h?h:null;C.push({from:a,to:o,color:c})}return C}calculateTwoColorSegments(e,t,i){const r=[];if(i.length<=1)r.push({from:new l.Vector3(e.x,e.y,e.z),to:new l.Vector3(t.x,t.y,t.z),color:i[0]});else{const n=new l.Vector3((e.x+t.x)/2,(e.y+t.y)/2,(e.z+t.z)/2);r.push({from:new l.Vector3(e.x,e.y,e.z),to:n,color:i[0]}),r.push({from:n,to:new l.Vector3(t.x,t.y,t.z),color:i[1]})}return r}findSmallestRing(e,t,i=8){const r=(e0;){const a=n.shift(),o=a[a.length-1];if(a.length>=i)continue;const l=this.atoms[o];if(l&&l.bonds)for(let i=0;i=2){const e=[...a,t];return this._ringCache.set(r,e),e}s.has(h)||(s.add(h),n.push([...a,h]))}}}return this._ringCache.set(r,null),null}chooseDashedSide(e,t,i,r,n){const s=this.findSmallestRing(e.index,t.index);if(s&&s.length>=3){const e=new l.Vector3(0,0,0);for(let t=0;t=.001&&Math.abs(o)>=.05*h*c)return o>0}return this.chooseDashedPlusV(e,t,i,r,n)}chooseDashedPlusV(e,t,i,r,n){const s=new l.Vector3(0,0,0);let a=0;for(let i=0;i0}drawAromaticRingTorus(e,t,i,r,s){var a;const o=this.findSmallestRing(e.index,t.index);if(!o||o.length<3)return;const h=o.slice().sort((e,t)=>e-t).join(",");if(this._drawnAromaticRings.has(h))return;this._drawnAromaticRings.add(h);const c=new l.Vector3(0,0,0);for(let e=0;ep&&(p=e)}}f/=o.length;const m=.5*r,g=f*Math.cos(Math.PI/o.length)-m-2*r,v=f-m-p-r,_=Math.max(m,Math.min(g,v));i.imposter?this.drawRingImposter(i,c,d,_,m,s):n.drawTorus(i,c,d,_,m,s)}static drawStickImposter(e,t,i,r,n,s=0,a=0){for(var o=e.updateGeoGroup(4),l=o.vertices,h=3*l,c=o.vertexArray,d=o.colorArray,u=o.radiusArray,f=o.normalArray,p=n.r,m=n.g,g=n.b,v=function(e){var t=-e;return 0==t&&(t=-1e-4),t},_=h,y=0;y<4;y++)c[_]=t.x,f[_]=i.x,d[_]=p,c[++_]=t.y,f[_]=i.y,d[_]=m,c[++_]=t.z,f[_]=i.z,d[_]=y<2?g:v(g),_++;o.vertices+=4,u[l]=-r,u[l+1]=r,u[l+2]=-r,u[l+3]=r;var b=o.faceArray,x=o.faceidx;b[x+0]=l,b[x+1]=l+1,b[x+2]=l+2,b[x+3]=l+2,b[x+4]=l+3,b[x+5]=l,o.faceidx+=6}drawBondSticks(e,t,i,r){var s,a,c,u,f,p,m,g,v,_;if(!e.style.stick)return;var y=e.style.stick;if(y.hidden)return;var b=y.radius||this.defaultStickRadius,x=y.doubleBondScaling||.4,w=y.tripleBondScaling||.25;const A=(null===(s=y.dashedBondConfig)||void 0===s?void 0:s.dashLength)||.1,C=(null===(a=y.dashedBondConfig)||void 0===a?void 0:a.gapLength)||.25,S=y.aromaticStyle||"dashed";var z,M,T,E,L,F,I,D,O,R,k,P,U,N=b,B=y.singleBonds||!1,G=y.dashedBonds||!1,V=0,j=0,H=(0,d.getColorFromStyle)(e,y);!e.capDrawn&&e.bonds.length<4&&(V=2);const W=(null===(c=y.dashedBondConfig)||void 0===c?void 0:c.solidColor)?h.CC.color(y.dashedBondConfig.solidColor):null,q=(null===(u=y.dashedBondConfig)||void 0===u?void 0:u.dashedColor)?h.CC.color(y.dashedBondConfig.dashedColor):null,Y=e=>{const t=i.imposter?GLModel.drawStickImposter:n.drawCylinder;return G||e%1!=0?(e,i,r,n,s,a,o=0,l=0)=>{const h=a?[s,a]:[s];this.calculateDashes(i,r,n,A,C,h).forEach(i=>{t(e,i.from,i.to,n,i.color,o,l)})}:(e,i,r,n,s,a,o=0,l=0)=>{if(a&&s!==a){const h=this.calculateTwoColorSegments(i,r,[s,a]);for(let i=0;i3){c<1&&(N*=c),!_.capDrawn&&_.bonds.length<4&&(j=2);const t=c%1!=0;if(u(i,Y,ee,N,t?ae:s,t?oe:y,V,j),z=e.clickable||e.hoverable,M=_.clickable||_.hoverable,z||M){if(k||(k=(new l.Vector3).addVectors(Y,ee).multiplyScalar(.5)),z){var Z=new o.Cylinder(Y,k,N),X=new o.Sphere(Y,N);e.intersectionShape.cylinder.push(Z),e.intersectionShape.sphere.push(X)}if(M){var K=new o.Cylinder(ee,k,N),Q=new o.Sphere(ee,N);_.intersectionShape.cylinder.push(K),_.intersectionShape.sphere.push(Q)}}if(a&&"circle"===S){const t=ie||q||s;this.drawAromaticRingTorus(e,_,r,N,t)}}else if(c>1){var $=0,J=0;N!=b&&($=2,J=2);const t=ee.clone();let r,a,h,d,u,f;t.sub(Y);const p=this.getSideBondV(e,_,T);let m=!1;c%1!=0&&(m=null!=(null==G?void 0:G.dashedBondFlip)?G.dashedBondFlip:this.chooseDashedSide(e,_,Y,ee,p));const g=i.imposter?GLModel.drawStickImposter:n.drawCylinder,v=(e,t,r,n,s,a,o)=>{if(n!=s){const h=(new l.Vector3).addVectors(e,t).multiplyScalar(.5);g(i,e,h,r,n,a,0),g(i,h,t,r,s,0,o)}else g(i,e,t,r,n,a,o)},A=(e,t,r,n,s,a,o)=>{const l=n!=s?[n,s]:[n];this.calculateDashes(e,t,r,le,he,l).forEach(e=>{g(i,e.from,e.to,r,e.color||n,a,o)})};if(c>1&&c<=2){if(r=N*x,a=r*(c-1),p.multiplyScalar(1.5*r),h=Y.clone(),h.add(p),d=Y.clone(),d.sub(p),u=h.clone(),u.add(t),f=d.clone(),f.add(t),2===c?(v(h,u,r,s,y,$,J),v(d,f,r,s,y,$,J)):m?(A(h,u,a,ae,oe,$,J),v(d,f,r,ne,se,$,J)):(v(h,u,r,ne,se,$,J),A(d,f,a,ae,oe,$,J)),z=e.clickable||e.hoverable,M=_.clickable||_.hoverable,z||M){k||(k=(new l.Vector3).addVectors(h,u).multiplyScalar(.5)),P||(P=(new l.Vector3).addVectors(d,f).multiplyScalar(.5));const t=2===c?r:m?a:r,i=2===c||m?r:a;z&&(L=new o.Cylinder(h,k,t),F=new o.Cylinder(d,P,i),e.intersectionShape.cylinder.push(L),e.intersectionShape.cylinder.push(F)),M&&(D=new o.Cylinder(u,k,t),O=new o.Cylinder(f,P,i),_.intersectionShape.cylinder.push(D),_.intersectionShape.cylinder.push(O))}}else if(c>2&&c<=3){r=N*w;const i=r*(c-2);if(p.cross(t),p.normalize(),p.multiplyScalar(3*r),h=Y.clone(),h.add(p),d=Y.clone(),d.sub(p),u=h.clone(),u.add(t),f=d.clone(),f.add(t),3===c?(v(h,u,r,s,y,$,J),v(Y,ee,r,s,y,V,j),v(d,f,r,s,y,$,J)):m?(A(h,u,i,ae,oe,$,J),v(Y,ee,r,ne,se,V,j),v(d,f,r,ne,se,$,J)):(v(h,u,r,ne,se,$,J),v(Y,ee,r,ne,se,V,j),A(d,f,i,ae,oe,$,J)),z=e.clickable||e.hoverable,M=_.clickable||_.hoverable,z||M){k||(k=(new l.Vector3).addVectors(h,u).multiplyScalar(.5)),P||(P=(new l.Vector3).addVectors(d,f).multiplyScalar(.5)),U||(U=(new l.Vector3).addVectors(Y,ee).multiplyScalar(.5));const t=3===c?r:m?i:r,n=3===c||m?r:i;z&&(L=new o.Cylinder(h.clone(),k.clone(),t),F=new o.Cylinder(d.clone(),P.clone(),n),I=new o.Cylinder(Y.clone(),U.clone(),r),e.intersectionShape.cylinder.push(L),e.intersectionShape.cylinder.push(F),e.intersectionShape.cylinder.push(I)),M&&(D=new o.Cylinder(u.clone(),k.clone(),t),O=new o.Cylinder(f.clone(),P.clone(),n),R=new o.Cylinder(ee.clone(),U.clone(),r),_.intersectionShape.cylinder.push(D),_.intersectionShape.cylinder.push(O),_.intersectionShape.cylinder.push(R))}}}}}var ee=!1,te=0,ie=!1;for(T=0;T0&&(ee=!0):0==te&&(e.bonds.length>0||y.showNonBonded)&&(ee=!0),ee&&(N=b,i.imposter?this.drawSphereImposter(i.sphereGeometry,e,N,H):n.drawSphere(i,e,N,H))}createMolObj(e,t){t=t||{},this._drawnAromaticRings=new Set,this._ringCache=new Map;var i,r,s,o,l=new a.Object3D,c=[],d={},u={},f=this.drawAtomSphere,p=null,m=null,g=null;t.supportsImposters?((g=new a.Geometry(!0)).imposter=!0,g.radii=!0,f=this.drawAtomImposter,(p=new a.Geometry(!0)).imposter=!0,(m=new a.Geometry(!0,!0)).imposter=!0,m.sphereGeometry=new a.Geometry(!0),m.sphereGeometry.imposter=!0,m.drawnCaps={}):t.supportsAIA?(g=new a.Geometry(!0),f=this.drawAtomInstanced,(p=new a.Geometry(!1,!0,!0)).instanced=!0,m=new a.Geometry(!0)):(g=new a.Geometry(!0),p=new a.Geometry(!0),m=new a.Geometry(!0));var v,_,y={},b=[Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY];for(i=0,s=e.length;ib[1]&&(b[1]=x.resi)),c.push(x))}}if(c.length>0&&A(l,c,b,this.defaultCartoonQuality),p&&p.vertices>0){p.initTypedArrays();var w=null,C=null;p.imposter?w=new a.SphereImposterMaterial({ambient:0,vertexColors:!0,reflectivity:0}):p.instanced?(C=new a.Geometry(!0),n.drawSphere(C,{x:0,y:0,z:0},1,new h.Color(.5,.5,.5)),C.initTypedArrays(),w=new a.InstancedMaterial({sphereMaterial:new a.MeshLambertMaterial({ambient:0,vertexColors:!0,reflectivity:0}),sphere:C})):w=new a.MeshLambertMaterial({ambient:0,vertexColors:!0,reflectivity:0}),y.sphere<1&&y.sphere>=0&&(w.transparent=!0,w.opacity=y.sphere),C=new a.Mesh(p,w),l.add(C)}if(m.vertices>0){var S=null,z=null,M=m.sphereGeometry;M&&void 0!==M.vertices&&0!=M.vertices||(M=null),m.initTypedArrays(),M&&M.initTypedArrays();var T={ambient:0,vertexColors:!0,reflectivity:0};m.imposter?(S=new a.StickImposterMaterial(T),z=new a.SphereImposterMaterial(T)):(S=new a.MeshLambertMaterial(T),z=new a.MeshLambertMaterial(T),S.wireframe&&(m.setUpWireframe(),M&&M.setUpWireframe())),y.stick<1&&y.stick>=0&&(S.transparent=!0,S.opacity=y.stick,z.transparent=!0,z.opacity=y.stick);var E=new a.Mesh(m,S);if(l.add(E),M){var L=new a.Mesh(M,z);l.add(L)}}for(i in g.vertices>0&&(g.initTypedArrays(),v=g.imposter?new a.RingImposterMaterial({ambient:0,vertexColors:!0,reflectivity:0}):new a.MeshLambertMaterial({ambient:0,vertexColors:!0,reflectivity:0}),y.stick<1&&y.stick>=0&&(v.transparent=!0,v.opacity=y.stick),l.add(new a.Mesh(g,v))),d)if(d.hasOwnProperty(i)){_=i;var F=new a.LineBasicMaterial({linewidth:_,vertexColors:!0});y.line<1&&y.line>=0&&(F.transparent=!0,F.opacity=y.line),d[i].initTypedArrays();var I=new a.Line(d[i],F,a.LineStyle.LinePieces);l.add(I)}for(i in u)if(u.hasOwnProperty(i)){_=i;var D=new a.LineBasicMaterial({linewidth:_,vertexColors:!0});y.cross<1&&y.cross>=0&&(D.transparent=!0,D.opacity=y.cross),u[i].initTypedArrays();var O=new a.Line(u[i],D,a.LineStyle.LinePieces);l.add(O)}if(this.dontDuplicateAtoms&&this.modelData.symmetries&&this.modelData.symmetries.length>0){var R,k=new a.Object3D;for(R=0;Ri?t-r:t}adjustCoordinatesToBox(){if(this.box&&this.atomdfs)for(var e=this.box[0],t=this.box[1],i=this.box[2],r=.9*e,n=.9*t,s=.9*i,a=0;a=t)&&(e=t-1),null!=i.frames.url){var a=i.frames.url;(0,d.getbin)(a+"/traj/frame/"+e+"/"+i.frames.path,void 0,"POST",void 0).then(function(e){for(var t=new Float32Array(e,44),r=0,s=0;s=r&&e<=n)return!0}}return!1}static deepCopyAndCache(e,t){if("object"!=typeof e||null==e||e instanceof GLModel)return e;if(e.__cache_created)return e;const i={};for(const r in e){const n=e[r];if(Array.isArray(n)){i[r]=[];for(let e=0;e=r[0][0]&&a<=r[1][0]&&o>=r[0][1]&&o<=r[1][1]&&l>=r[0][2]&&l<=r[1][2]&&(a>=i[0][0]&&a<=i[1][0]&&o>=i[0][1]&&o<=i[1][1]&&l>=i[0][2]&&l<=i[1][2]||s.push(this.atoms[e]))}return s}static getFloat(e){return"number"==typeof e?e:parseFloat(e)}selectedAtoms(e,t){var i=[];e=GLModel.deepCopyAndCache(e||{},this),t||(t=this.atoms);for(var r=t.length,n=0;n0&&i.push(r[e])}}if(e.hasOwnProperty("within")&&e.within.hasOwnProperty("sel")&&e.within.hasOwnProperty("distance")){var o=this.selectedAtoms(e.within.sel,this.atoms),l={};const t=GLModel.getFloat(e.within.distance),r=t*t;for(let e=0;e0&&(l[t]=1)}var h=[];if(e.within.invert)for(let e=0;e0;)if(t=u.pop(),f=t.chain,p=t.resi,void 0===d[t.index]){d[t.index]=!0;for(var m=0;m0&&(this.molObj=null)}else console.log("Callback is not a function")}setHoverable(e,t,i,r){if(t=!!t,i=(0,d.makeFunction)(i),r=(0,d.makeFunction)(r),null!==i)if(null!==r){var n=this.selectedAtoms(e,this.atoms),s=n.length;for(let e=0;e0&&(this.molObj=null)}else console.log("Unhover_callback is not a function");else console.log("Hover_callback is not a function")}enableContextMenu(e,t){var i;t=!!t;var r=this.selectedAtoms(e,this.atoms),n=r.length;for(i=0;i0&&(this.molObj=null)}setColorByElement(e,t){if(null===this.molObj||!GLModel.sameObj(t,this.lastColors)){this.lastColors=t;var i=this.selectedAtoms(e,i);i.length>0&&(this.molObj=null);for(var r=0;r0&&(this.molObj=null),"string"==typeof i&&void 0!==c.Gradient.builtinGradients[i]&&(i=new c.Gradient.builtinGradients[i]),r||(r=i.range()),r||(r=(0,d.getPropertyRange)(a,t)),n=0;n0&&(this.molObj=null);for(let e=0;e=n)continue;let a={b:i,e:n},o=s.bondOrder[e];1!=o&&(a.o=o),t.b.push(a)}}return t}globj(e,t){(null===this.molObj||t.regen)&&(this.molObj=this.createMolObj(this.atoms,t),this.renderedMolObj&&(e.remove(this.renderedMolObj),this.renderedMolObj=null),this.renderedMolObj=this.molObj.clone(),this.hidden&&(this.renderedMolObj.setVisible(!1),this.molObj.setVisible(!1)),e.add(this.renderedMolObj))}exportVRML(){return this.createMolObj(this.atoms,{supportsImposters:!1,supportsAIA:!1}).vrml()}removegl(e){this.renderedMolObj&&(void 0!==this.renderedMolObj.geometry&&this.renderedMolObj.geometry.dispose(),void 0!==this.renderedMolObj.material&&this.renderedMolObj.material.dispose(),e.remove(this.renderedMolObj),this.renderedMolObj=null),this.molObj=null}hide(){this.hidden=!0,this.renderedMolObj&&this.renderedMolObj.setVisible(!1),this.molObj&&this.molObj.setVisible(!1)}show(){this.hidden=!1,this.renderedMolObj&&this.renderedMolObj.setVisible(!0),this.molObj&&this.molObj.setVisible(!0)}addPropertyLabels(e,t,i){let r=this.selectedAtoms(t),n=this.viewer,s=(0,d.deepCopy)(i);for(let t=0;tMOLECULE/gm)?"mol2":e.match(/^data_/gm)&&e.match(/^loop_/gm)?"cif":e.match(/^HETATM/gm)||e.match(/^ATOM/gm)?"pdb":e.match(/ITEM: TIMESTEP/gm)?"lammpstrj":e.match(/^.*\n.*\n.\s*(\d+)\s+(\d+)/gm)?"sdf":e.match(/^%VERSION\s+VERSION_STAMP/gm)?"prmtop":"xyz",console.log("Best guess: "+t))),(0,fe[t])(e,i)}}var Re;GLModel.defaultAtomStyle={line:{}},GLModel.defaultlineWidth=1,GLModel.vdwRadii={H:1.2,He:1.4,Li:1.82,Be:1.53,B:1.92,C:1.7,N:1.55,O:1.52,F:1.47,Ne:1.54,Na:2.27,Mg:1.73,Al:1.84,Si:2.1,P:1.8,S:1.8,Cl:1.75,Ar:1.88,K:2.75,Ca:2.31,Ni:1.63,Cu:1.4,Zn:1.39,Ga:1.87,Ge:2.11,As:1.85,Se:1.9,Br:1.85,Kr:2.02,Rb:3.03,Sr:2.49,Pd:1.63,Ag:1.72,Cd:1.58,In:1.93,Sn:2.17,Sb:2.06,Te:2.06,I:1.98,Xe:2.16,Cs:3.43,Ba:2.68,Pt:1.75,Au:1.66,Hg:1.55,Tl:1.96,Pb:2.02,Bi:2.07,Po:1.97,At:2.02,Rn:2.2,Fr:3.48,Ra:2.83,U:1.86},GLModel.ignoredKeys=new Set(["props","invert","model","frame","byres","expand","within","and","or","not"]),function(e){e[e.VDW=1]="VDW",e[e.MS=2]="MS",e[e.SAS=3]="SAS",e[e.SES=4]="SES"}(Re||(Re={}));var ke=!1;function Pe(e){ke=e}(window.navigator.userAgent.indexOf("MSIE ")>=0||window.navigator.userAgent.indexOf("Trident/")>=0)&&(ke=!0);class MarchingCubeInitializer{constructor(){this.ISDONE=2,this.edgeTable=new Uint32Array([0,0,0,0,0,0,0,2816,0,0,0,1792,0,3328,3584,3840,0,0,0,138,0,21,0,134,0,0,0,652,0,2067,3865,3600,0,0,0,42,0,0,0,294,0,0,21,28,0,3875,1049,3360,0,168,162,170,0,645,2475,2210,0,687,293,172,4010,3747,3497,3232,0,0,0,0,0,69,0,900,0,0,0,1792,138,131,1608,1920,0,81,0,2074,84,85,84,86,0,81,0,3676,330,1105,1881,1616,0,0,0,42,0,69,0,502,0,0,21,3580,138,2035,1273,1520,2816,104,2337,106,840,581,367,102,2816,3695,3429,3180,1898,1635,1385,1120,0,0,0,0,0,0,0,3910,0,0,69,588,42,2083,41,2880,0,0,0,1722,0,2293,4095,3830,0,255,757,764,2538,2291,3065,2800,0,0,81,338,0,3925,1119,3414,84,855,85,340,2130,2899,89,2384,1792,712,194,1162,4036,3781,3535,3270,708,719,197,204,3018,2755,2505,2240,0,0,0,0,168,420,168,1958,162,162,676,2988,170,163,680,928,3328,3096,3328,3642,52,53,1855,1590,2340,2111,2869,2620,298,51,825,560,3584,3584,3090,3482,1668,1941,1183,1430,146,2975,2069,2460,154,915,153,400,3840,3592,3329,3082,1796,1541,1295,1030,2818,2575,2309,2060,778,515,265,0]),this.triTable=[[],[],[],[],[],[],[],[11,9,8],[],[],[],[8,10,9],[],[10,8,11],[9,11,10],[8,10,9,8,11,10],[],[],[],[1,7,3],[],[4,2,0],[],[2,1,7],[],[],[],[2,7,3,2,9,7],[],[1,4,11,1,0,4],[3,8,0,11,9,4,11,10,9],[4,11,9,11,10,9],[],[],[],[5,3,1],[],[],[],[2,5,8,2,1,5],[],[],[2,4,0],[3,2,4],[],[0,9,1,8,10,5,8,11,10],[3,4,0,3,10,4],[5,8,10,8,11,10],[],[3,5,7],[7,1,5],[1,7,3,1,5,7],[],[9,2,0,9,7,2],[0,3,8,1,7,11,1,5,7],[11,1,7,1,5,7],[],[9,1,0,5,3,2,5,7,3],[8,2,5,8,0,2],[2,5,3,5,7,3],[3,9,1,3,8,9,7,11,10,7,10,5],[9,1,0,10,7,11,10,5,7],[3,8,0,7,10,5,7,11,10],[11,5,7,11,10,5],[],[],[],[],[],[0,6,2],[],[7,2,9,7,9,8],[],[],[],[8,10,9],[7,1,3],[7,1,0],[6,9,3,6,10,9],[7,10,8,10,9,8],[],[6,0,4],[],[11,1,4,11,3,1],[2,4,6],[2,0,4,2,4,6],[2,4,6],[1,4,2,4,6,2],[],[6,0,4],[],[2,11,3,6,9,4,6,10,9],[8,6,1,8,1,3],[10,0,6,0,4,6],[8,0,3,9,6,10,9,4,6],[10,4,6,10,9,4],[],[],[],[5,3,1],[],[0,6,2],[],[7,4,8,5,2,1,5,6,2],[],[],[2,4,0],[7,4,8,2,11,3,10,5,6],[7,1,3],[5,6,10,0,9,1,8,7,4],[5,6,10,7,0,3,7,4,0],[10,5,6,4,8,7],[9,11,8],[3,5,6],[0,5,11,0,11,8],[6,3,5,3,1,5],[3,9,6,3,8,9],[9,6,0,6,2,0],[0,3,8,2,5,6,2,1,5],[1,6,2,1,5,6],[9,11,8],[1,0,9,6,10,5,11,3,2],[6,10,5,2,8,0,2,11,8],[3,2,11,10,5,6],[10,5,6,9,3,8,9,1,3],[0,9,1,5,6,10],[8,0,3,10,5,6],[10,5,6],[],[],[],[],[],[],[],[1,10,2,9,11,6,9,8,11],[],[],[6,0,2],[3,6,9,3,2,6],[3,5,1],[0,5,1,0,11,5],[0,3,5],[6,9,11,9,8,11],[],[],[],[4,5,9,7,1,10,7,3,1],[],[11,6,7,2,4,5,2,0,4],[11,6,7,8,0,3,1,10,2,9,4,5],[6,7,11,1,10,2,9,4,5],[],[4,1,0,4,5,1,6,7,3,6,3,2],[9,4,5,0,6,7,0,2,6],[4,5,9,6,3,2,6,7,3],[6,7,11,5,3,8,5,1,3],[6,7,11,4,1,0,4,5,1],[4,5,9,3,8,0,11,6,7],[9,4,5,7,11,6],[],[],[0,6,4],[8,6,4,8,1,6],[],[0,10,2,0,9,10,4,8,11,4,11,6],[10,2,1,6,0,3,6,4,0],[10,2,1,11,4,8,11,6,4],[4,2,6],[1,0,9,2,4,8,2,6,4],[2,4,0,2,6,4],[8,2,4,2,6,4],[11,4,1,11,6,4],[0,9,1,4,11,6,4,8,11],[3,6,0,6,4,0],[8,6,4,8,11,6],[10,8,9],[6,3,9,6,7,3],[6,7,1],[10,7,1,7,3,1],[7,11,6,8,10,2,8,9,10],[11,6,7,10,0,9,10,2,0],[2,1,10,7,11,6,8,0,3],[1,10,2,6,7,11],[7,2,6,7,9,2],[1,0,9,3,6,7,3,2,6],[7,0,6,0,2,6],[2,7,3,2,6,7],[7,11,6,3,9,1,3,8,9],[9,1,0,11,6,7],[0,3,8,11,6,7],[11,6,7],[],[],[],[],[5,3,7],[8,5,2,8,7,5],[5,3,7],[1,10,2,5,8,7,5,9,8],[1,7,5],[1,7,5],[9,2,7,9,7,5],[11,3,2,8,5,9,8,7,5],[1,3,7,1,7,5],[0,7,1,7,5,1],[9,3,5,3,7,5],[9,7,5,9,8,7],[8,10,11],[3,4,10,3,10,11],[8,10,11],[5,9,4,1,11,3,1,10,11],[2,4,5],[5,2,4,2,0,4],[0,3,8,5,9,4,10,2,1],[2,1,10,9,4,5],[2,8,5,2,11,8],[3,2,11,1,4,5,1,0,4],[9,4,5,8,2,11,8,0,2],[11,3,2,9,4,5],[8,5,3,5,1,3],[5,0,4,5,1,0],[3,8,0,4,5,9],[9,4,5],[11,9,10],[11,9,10],[1,11,4,1,10,11],[8,7,4,11,1,10,11,3,1],[2,7,9,2,9,10],[4,8,7,0,10,2,0,9,10],[2,1,10,0,7,4,0,3,7],[10,2,1,8,7,4],[1,7,4],[3,2,11,4,8,7,9,1,0],[11,4,2,4,0,2],[2,11,3,7,4,8],[4,1,7,1,3,7],[1,0,9,8,7,4],[3,4,0,3,7,4],[8,7,4],[8,9,10,8,10,11],[3,9,11,9,10,11],[0,10,8,10,11,8],[10,3,1,10,11,3],[2,8,10,8,9,10],[9,2,0,9,10,2],[8,0,3,1,10,2],[10,2,1],[1,11,9,11,8,9],[11,3,2,0,9,1],[11,0,2,11,8,0],[11,3,2],[8,1,3,8,9,1],[9,1,0],[8,0,3],[]],this.edgeTable2=[0,265,515,778,2060,2309,2575,2822,1030,1295,1541,1804,3082,3331,3593,3840,400,153,915,666,2460,2197,2975,2710,1430,1183,1941,1692,3482,3219,3993,3728,560,825,51,314,2620,2869,2111,2358,1590,1855,1077,1340,3642,3891,3129,3376,928,681,419,170,2988,2725,2479,2214,1958,1711,1445,1196,4010,3747,3497,3232,2240,2505,2755,3018,204,453,719,966,3270,3535,3781,4044,1226,1475,1737,1984,2384,2137,2899,2650,348,85,863,598,3414,3167,3925,3676,1370,1107,1881,1616,2800,3065,2291,2554,764,1013,255,502,3830,4095,3317,3580,1786,2035,1273,1520,2912,2665,2403,2154,876,613,367,102,3942,3695,3429,3180,1898,1635,1385,1120,1120,1385,1635,1898,3180,3429,3695,3942,102,367,613,876,2154,2403,2665,2912,1520,1273,2035,1786,3580,3317,4095,3830,502,255,1013,764,2554,2291,3065,2800,1616,1881,1107,1370,3676,3925,3167,3414,598,863,85,348,2650,2899,2137,2384,1984,1737,1475,1226,4044,3781,3535,3270,966,719,453,204,3018,2755,2505,2240,3232,3497,3747,4010,1196,1445,1711,1958,2214,2479,2725,2988,170,419,681,928,3376,3129,3891,3642,1340,1077,1855,1590,2358,2111,2869,2620,314,51,825,560,3728,3993,3219,3482,1692,1941,1183,1430,2710,2975,2197,2460,666,915,153,400,3840,3593,3331,3082,1804,1541,1295,1030,2822,2575,2309,2060,778,515,265,0],this.triTable2=[[],[8,3,0],[9,0,1],[8,3,1,8,1,9],[11,2,3],[11,2,0,11,0,8],[11,2,3,0,1,9],[2,1,11,1,9,11,11,9,8],[10,1,2],[8,3,0,1,2,10],[9,0,2,9,2,10],[3,2,8,2,10,8,8,10,9],[10,1,3,10,3,11],[1,0,10,0,8,10,10,8,11],[0,3,9,3,11,9,9,11,10],[8,10,9,8,11,10],[8,4,7],[3,0,4,3,4,7],[1,9,0,8,4,7],[9,4,1,4,7,1,1,7,3],[2,3,11,7,8,4],[7,11,4,11,2,4,4,2,0],[3,11,2,4,7,8,9,0,1],[2,7,11,2,1,7,1,4,7,1,9,4],[10,1,2,8,4,7],[2,10,1,0,4,7,0,7,3],[4,7,8,0,2,10,0,10,9],[2,7,3,2,9,7,7,9,4,2,10,9],[8,4,7,11,10,1,11,1,3],[11,4,7,1,4,11,1,11,10,1,0,4],[3,8,0,7,11,4,11,9,4,11,10,9],[7,11,4,4,11,9,11,10,9],[9,5,4],[3,0,8,4,9,5],[5,4,0,5,0,1],[4,8,5,8,3,5,5,3,1],[11,2,3,9,5,4],[9,5,4,8,11,2,8,2,0],[3,11,2,1,5,4,1,4,0],[8,5,4,2,5,8,2,8,11,2,1,5],[2,10,1,9,5,4],[0,8,3,5,4,9,10,1,2],[10,5,2,5,4,2,2,4,0],[3,4,8,3,2,4,2,5,4,2,10,5],[5,4,9,1,3,11,1,11,10],[0,9,1,4,8,5,8,10,5,8,11,10],[3,4,0,3,10,4,4,10,5,3,11,10],[4,8,5,5,8,10,8,11,10],[9,5,7,9,7,8],[0,9,3,9,5,3,3,5,7],[8,0,7,0,1,7,7,1,5],[1,7,3,1,5,7],[11,2,3,8,9,5,8,5,7],[9,2,0,9,7,2,2,7,11,9,5,7],[0,3,8,2,1,11,1,7,11,1,5,7],[2,1,11,11,1,7,1,5,7],[1,2,10,5,7,8,5,8,9],[9,1,0,10,5,2,5,3,2,5,7,3],[5,2,10,8,2,5,8,5,7,8,0,2],[10,5,2,2,5,3,5,7,3],[3,9,1,3,8,9,7,11,10,7,10,5],[9,1,0,10,7,11,10,5,7],[3,8,0,7,10,5,7,11,10],[11,5,7,11,10,5],[11,7,6],[0,8,3,11,7,6],[9,0,1,11,7,6],[7,6,11,3,1,9,3,9,8],[2,3,7,2,7,6],[8,7,0,7,6,0,0,6,2],[1,9,0,3,7,6,3,6,2],[7,6,2,7,2,9,2,1,9,7,9,8],[1,2,10,6,11,7],[2,10,1,7,6,11,8,3,0],[11,7,6,10,9,0,10,0,2],[7,6,11,3,2,8,8,2,10,8,10,9],[6,10,7,10,1,7,7,1,3],[6,10,1,6,1,7,7,1,0,7,0,8],[9,0,3,6,9,3,6,10,9,6,3,7],[6,10,7,7,10,8,10,9,8],[8,4,6,8,6,11],[11,3,6,3,0,6,6,0,4],[0,1,9,4,6,11,4,11,8],[1,9,4,11,1,4,11,3,1,11,4,6],[3,8,2,8,4,2,2,4,6],[2,0,4,2,4,6],[1,9,0,3,8,2,2,8,4,2,4,6],[9,4,1,1,4,2,4,6,2],[10,1,2,11,8,4,11,4,6],[10,1,2,11,3,6,6,3,0,6,0,4],[0,2,10,0,10,9,4,11,8,4,6,11],[2,11,3,6,9,4,6,10,9],[8,4,6,8,6,1,6,10,1,8,1,3],[1,0,10,10,0,6,0,4,6],[8,0,3,9,6,10,9,4,6],[10,4,6,10,9,4],[9,5,4,7,6,11],[4,9,5,3,0,8,11,7,6],[6,11,7,4,0,1,4,1,5],[6,11,7,4,8,5,5,8,3,5,3,1],[4,9,5,6,2,3,6,3,7],[9,5,4,8,7,0,0,7,6,0,6,2],[4,0,1,4,1,5,6,3,7,6,2,3],[7,4,8,5,2,1,5,6,2],[6,11,7,1,2,10,9,5,4],[11,7,6,8,3,0,1,2,10,9,5,4],[11,7,6,10,5,2,2,5,4,2,4,0],[7,4,8,2,11,3,10,5,6],[4,9,5,6,10,7,7,10,1,7,1,3],[5,6,10,0,9,1,8,7,4],[5,6,10,7,0,3,7,4,0],[10,5,6,4,8,7],[5,6,9,6,11,9,9,11,8],[0,9,5,0,5,3,3,5,6,3,6,11],[0,1,5,0,5,11,5,6,11,0,11,8],[11,3,6,6,3,5,3,1,5],[9,5,6,3,9,6,3,8,9,3,6,2],[5,6,9,9,6,0,6,2,0],[0,3,8,2,5,6,2,1,5],[1,6,2,1,5,6],[1,2,10,5,6,9,9,6,11,9,11,8],[1,0,9,6,10,5,11,3,2],[6,10,5,2,8,0,2,11,8],[3,2,11,10,5,6],[10,5,6,9,3,8,9,1,3],[0,9,1,5,6,10],[8,0,3,10,5,6],[10,5,6],[10,6,5],[8,3,0,10,6,5],[0,1,9,5,10,6],[10,6,5,9,8,3,9,3,1],[3,11,2,10,6,5],[6,5,10,2,0,8,2,8,11],[1,9,0,6,5,10,11,2,3],[1,10,2,5,9,6,9,11,6,9,8,11],[1,2,6,1,6,5],[0,8,3,2,6,5,2,5,1],[5,9,6,9,0,6,6,0,2],[9,6,5,3,6,9,3,9,8,3,2,6],[11,6,3,6,5,3,3,5,1],[0,5,1,0,11,5,5,11,6,0,8,11],[0,5,9,0,3,5,3,6,5,3,11,6],[5,9,6,6,9,11,9,8,11],[10,6,5,4,7,8],[5,10,6,7,3,0,7,0,4],[5,10,6,0,1,9,8,4,7],[4,5,9,6,7,10,7,1,10,7,3,1],[7,8,4,2,3,11,10,6,5],[11,6,7,10,2,5,2,4,5,2,0,4],[11,6,7,8,0,3,1,10,2,9,4,5],[6,7,11,1,10,2,9,4,5],[7,8,4,5,1,2,5,2,6],[4,1,0,4,5,1,6,7,3,6,3,2],[9,4,5,8,0,7,0,6,7,0,2,6],[4,5,9,6,3,2,6,7,3],[6,7,11,4,5,8,5,3,8,5,1,3],[6,7,11,4,1,0,4,5,1],[4,5,9,3,8,0,11,6,7],[9,4,5,7,11,6],[10,6,4,10,4,9],[8,3,0,9,10,6,9,6,4],[1,10,0,10,6,0,0,6,4],[8,6,4,8,1,6,6,1,10,8,3,1],[2,3,11,6,4,9,6,9,10],[0,10,2,0,9,10,4,8,11,4,11,6],[10,2,1,11,6,3,6,0,3,6,4,0],[10,2,1,11,4,8,11,6,4],[9,1,4,1,2,4,4,2,6],[1,0,9,3,2,8,2,4,8,2,6,4],[2,4,0,2,6,4],[3,2,8,8,2,4,2,6,4],[1,4,9,11,4,1,11,1,3,11,6,4],[0,9,1,4,11,6,4,8,11],[11,6,3,3,6,0,6,4,0],[8,6,4,8,11,6],[6,7,10,7,8,10,10,8,9],[9,3,0,6,3,9,6,9,10,6,7,3],[6,1,10,6,7,1,7,0,1,7,8,0],[6,7,10,10,7,1,7,3,1],[7,11,6,3,8,2,8,10,2,8,9,10],[11,6,7,10,0,9,10,2,0],[2,1,10,7,11,6,8,0,3],[1,10,2,6,7,11],[7,2,6,7,9,2,2,9,1,7,8,9],[1,0,9,3,6,7,3,2,6],[8,0,7,7,0,6,0,2,6],[2,7,3,2,6,7],[7,11,6,3,9,1,3,8,9],[9,1,0,11,6,7],[0,3,8,11,6,7],[11,6,7],[11,7,5,11,5,10],[3,0,8,7,5,10,7,10,11],[9,0,1,10,11,7,10,7,5],[3,1,9,3,9,8,7,10,11,7,5,10],[10,2,5,2,3,5,5,3,7],[5,10,2,8,5,2,8,7,5,8,2,0],[9,0,1,10,2,5,5,2,3,5,3,7],[1,10,2,5,8,7,5,9,8],[2,11,1,11,7,1,1,7,5],[0,8,3,2,11,1,1,11,7,1,7,5],[9,0,2,9,2,7,2,11,7,9,7,5],[11,3,2,8,5,9,8,7,5],[1,3,7,1,7,5],[8,7,0,0,7,1,7,5,1],[0,3,9,9,3,5,3,7,5],[9,7,5,9,8,7],[4,5,8,5,10,8,8,10,11],[3,0,4,3,4,10,4,5,10,3,10,11],[0,1,9,4,5,8,8,5,10,8,10,11],[5,9,4,1,11,3,1,10,11],[3,8,4,3,4,2,2,4,5,2,5,10],[10,2,5,5,2,4,2,0,4],[0,3,8,5,9,4,10,2,1],[2,1,10,9,4,5],[8,4,5,2,8,5,2,11,8,2,5,1],[3,2,11,1,4,5,1,0,4],[9,4,5,8,2,11,8,0,2],[11,3,2,9,4,5],[4,5,8,8,5,3,5,1,3],[5,0,4,5,1,0],[3,8,0,4,5,9],[9,4,5],[7,4,11,4,9,11,11,9,10],[3,0,8,7,4,11,11,4,9,11,9,10],[11,7,4,1,11,4,1,10,11,1,4,0],[8,7,4,11,1,10,11,3,1],[2,3,7,2,7,9,7,4,9,2,9,10],[4,8,7,0,10,2,0,9,10],[2,1,10,0,7,4,0,3,7],[10,2,1,8,7,4],[2,11,7,2,7,1,1,7,4,1,4,9],[3,2,11,4,8,7,9,1,0],[7,4,11,11,4,2,4,0,2],[2,11,3,7,4,8],[9,1,4,4,1,7,1,3,7],[1,0,9,8,7,4],[3,4,0,3,7,4],[8,7,4],[8,9,10,8,10,11],[0,9,3,3,9,11,9,10,11],[1,10,0,0,10,8,10,11,8],[10,3,1,10,11,3],[3,8,2,2,8,10,8,9,10],[9,2,0,9,10,2],[8,0,3,1,10,2],[10,2,1],[2,11,1,1,11,9,11,8,9],[11,3,2,0,9,1],[11,0,2,11,8,0],[11,3,2],[8,1,3,8,9,1],[9,1,0],[8,0,3],[]]}march(e,t,i,r){let n=!!r.fulltable,s=r.hasOwnProperty("origin")&&r.origin.hasOwnProperty("x")?r.origin:{x:0,y:0,z:0},a=!!r.voxel,o=r.matrix,h=r.nX||0,c=r.nY||0,d=r.nZ||0,u=r.scale||1,f=null;f=r.unitCube?r.unitCube:{x:u,y:u,z:u};let p,m,g=new Int32Array(h*c*d);for(p=0,m=g.length;p>2))+r+((2&t)>>1))*d+n+(1&t)]&this.ISDONE)<=3&&(t.push(t[r]),r=t.length-1,t.push(t[n]),n=t.length-1,t.push(t[s]),s=t.length-1),i.push(r),i.push(n),i.push(s)}}}laplacianSmooth(e,t,i){let r,n,s,a,o,l=new Array(t.length);for(r=0,n=t.length;r1e6&&(this.scaleFactor=this.defaultScaleFactor/2);let r=1/this.scaleFactor*5.5;this.pminx=e[0][0],this.pmaxx=e[1][0],this.pminy=e[0][1],this.pmaxy=e[1][1],this.pminz=e[0][2],this.pmaxz=e[1][2],t?(this.pminx-=this.probeRadius+r,this.pminy-=this.probeRadius+r,this.pminz-=this.probeRadius+r,this.pmaxx+=this.probeRadius+r,this.pmaxy+=this.probeRadius+r,this.pmaxz+=this.probeRadius+r):(this.pminx-=r,this.pminy-=r,this.pminz-=r,this.pmaxx+=r,this.pmaxy+=r,this.pmaxz+=r),this.pminx=Math.floor(this.pminx*this.scaleFactor)/this.scaleFactor,this.pminy=Math.floor(this.pminy*this.scaleFactor)/this.scaleFactor,this.pminz=Math.floor(this.pminz*this.scaleFactor)/this.scaleFactor,this.pmaxx=Math.ceil(this.pmaxx*this.scaleFactor)/this.scaleFactor,this.pmaxy=Math.ceil(this.pmaxy*this.scaleFactor)/this.scaleFactor,this.pmaxz=Math.ceil(this.pmaxz*this.scaleFactor)/this.scaleFactor,this.ptranx=-this.pminx,this.ptrany=-this.pminy,this.ptranz=-this.pminz,this.pLength=Math.ceil(this.scaleFactor*(this.pmaxx-this.pminx))+1,this.pWidth=Math.ceil(this.scaleFactor*(this.pmaxy-this.pminy))+1,this.pHeight=Math.ceil(this.scaleFactor*(this.pmaxz-this.pminz))+1,this.boundingatom(t),this.cutRadius=this.probeRadius*this.scaleFactor,this.vpBits=new Uint8Array(this.pLength*this.pWidth*this.pHeight),this.vpDistance=new Float64Array(this.pLength*this.pWidth*this.pHeight),this.vpAtomID=new Int32Array(this.pLength*this.pWidth*this.pHeight)}boundingatom(e){let t={};for(const i in this.vdwRadii){let r=this.vdwRadii[i];t[i]=e?(r+this.probeRadius)*this.scaleFactor+.5:r*this.scaleFactor+.5;let n=t[i]*t[i];this.widxz[i]=Math.floor(t[i])+1,this.depty[i]=new Int32Array(this.widxz[i]*this.widxz[i]);let s=0;for(let e=0;en)this.depty[i][s]=-1;else{let e=Math.sqrt(n-r);this.depty[i][s]=Math.floor(e)}s++}}}fillvoxels(e,t){for(let e=0,t=this.vpBits.length;e=this.pLength||h>=this.pWidth||c>=this.pHeight)continue;let u=a*o+h*this.pHeight+c;if(this.vpBits[u]&this.INOUT){let a=t[this.vpAtomID[u]];if(a.serial!=e.serial){let t=i+f-Math.floor(.5+this.scaleFactor*(a.x+this.ptranx)),o=r+s-Math.floor(.5+this.scaleFactor*(a.y+this.ptrany)),l=n+p-Math.floor(.5+this.scaleFactor*(a.z+this.ptranz));f*f+s*s+p*p=this.pLength||h>=this.pWidth||c>=this.pHeight)continue;let u=a*o+h*this.pHeight+c;if(this.vpBits[u]&this.ISDONE){let a=t[this.vpAtomID[u]];if(a.serial!=e.serial){let t=r+f-Math.floor(.5+this.scaleFactor*(a.x+this.ptranx)),o=n+i-Math.floor(.5+this.scaleFactor*(a.y+this.ptrany)),l=s+p-Math.floor(.5+this.scaleFactor*(a.z+this.ptranz));f*f+i*i+p*p-1&&a-1&&l-1&&o=o)||(this.vpBits[e]|=this.ISBOUND))}fastoneshell(e,t){let i,r,n,s,a,o,l,h,c,d=[];if(0===e.length)return d;let u={ix:-1,iy:-1,iz:-1},f=this.pWidth*this.pHeight;for(let p=0,m=e.length;p-1&&u.iy-1&&u.iz-1&&(c=u.ix*f+this.pHeight*u.iy+u.iz,this.vpBits[c]&this.INOUT&&!(this.vpBits[c]&this.ISDONE)?(t.set(u.ix,u.iy,n+this.nb[e][2],h),s=u.ix-h.ix,a=u.iy-h.iy,o=u.iz-h.iz,l=s*s+a*a+o*o,this.vpDistance[c]=l,this.vpBits[c]|=this.ISDONE,this.vpBits[c]|=this.ISBOUND,d.push({ix:u.ix,iy:u.iy,iz:u.iz})):this.vpBits[c]&this.INOUT&&this.vpBits[c]&this.ISDONE&&(s=u.ix-h.ix,a=u.iy-h.iy,o=u.iz-h.iz,l=s*s+a*a+o*o,l-1&&u.iy-1&&u.iz-1&&(c=u.ix*f+this.pHeight*u.iy+u.iz,this.vpBits[c]&this.INOUT&&!(this.vpBits[c]&this.ISDONE)?(t.set(u.ix,u.iy,n+this.nb[e][2],h),s=u.ix-h.ix,a=u.iy-h.iy,o=u.iz-h.iz,l=s*s+a*a+o*o,this.vpDistance[c]=l,this.vpBits[c]|=this.ISDONE,this.vpBits[c]|=this.ISBOUND,d.push({ix:u.ix,iy:u.iy,iz:u.iz})):this.vpBits[c]&this.INOUT&&this.vpBits[c]&this.ISDONE&&(s=u.ix-h.ix,a=u.iy-h.iy,o=u.iz-h.iz,l=s*s+a*a+o*o,l-1&&u.iy-1&&u.iz-1&&(c=u.ix*f+this.pHeight*u.iy+u.iz,this.vpBits[c]&this.INOUT&&!(this.vpBits[c]&this.ISDONE)?(t.set(u.ix,u.iy,n+this.nb[e][2],h),s=u.ix-h.ix,a=u.iy-h.iy,o=u.iz-h.iz,l=s*s+a*a+o*o,this.vpDistance[c]=l,this.vpBits[c]|=this.ISDONE,this.vpBits[c]|=this.ISBOUND,d.push({ix:u.ix,iy:u.iy,iz:u.iz})):this.vpBits[c]&this.INOUT&&this.vpBits[c]&this.ISDONE&&(s=u.ix-h.ix,a=u.iy-h.iy,o=u.iz-h.iz,l=s*s+a*a+o*o,l0&&t.truncateArrayBuffers(!0,!0)}static updateColor(e,t){var i,r,n;t=t||h.CC.color(t),e.colorsNeedUpdate=!0,t.constructor!==Array&&(i=t.r,r=t.g,n=t.b);for(let s in e.geometryGroups){let a=e.geometryGroups[s],o=a.colorArray;for(let e=0,s=a.vertices;e0?c/e:(e+c)/e}u.multiplyScalar(h);var f=new l.Vector3(r.x,r.y,r.z).add(u),p=u.clone().negate();let m=new l.Vector3(r.x,r.y,r.z);e.intersectionShape.cylinder.push(new o.Cylinder(m,f.clone(),s)),e.intersectionShape.sphere.push(new o.Sphere(m,s));var g=[];g[0]=u.clone(),Math.abs(g[0].x)>1e-4?g[0].y+=1:g[0].x+=1,g[0].cross(u),g[0].normalize(),g[4]=g[0].clone(),g[4].crossVectors(g[0],u),g[4].normalize(),g[8]=g[0].clone().negate(),g[12]=g[4].clone().negate(),g[2]=g[0].clone().add(g[4]).normalize(),g[6]=g[4].clone().add(g[8]).normalize(),g[10]=g[8].clone().add(g[12]).normalize(),g[14]=g[12].clone().add(g[0]).normalize(),g[1]=g[0].clone().add(g[2]).normalize(),g[3]=g[2].clone().add(g[4]).normalize(),g[5]=g[4].clone().add(g[6]).normalize(),g[7]=g[6].clone().add(g[8]).normalize(),g[9]=g[8].clone().add(g[10]).normalize(),g[11]=g[10].clone().add(g[12]).normalize(),g[13]=g[12].clone().add(g[14]).normalize(),g[15]=g[14].clone().add(g[0]).normalize();var v,_,y,b,x,w,A,C,S,z,M,T,E,L,F,I,D,O,R,k,P,U,N=d.vertices,B=d.vertexArray,G=d.faceArray,V=d.normalArray,j=d.lineArray;for(_=0,y=g.length;_0){var Y=B[v-3],Z=B[v-2],X=B[v-1],K=new l.Vector3(Y,Z,X),Q=new l.Vector3(n.x,n.y,n.z),$=f.clone(),J=new l.Vector3(q.x,q.y,q.z);e.intersectionShape.triangle.push(new o.Triangle(J,Q,K)),e.intersectionShape.triangle.push(new o.Triangle(K.clone(),$,J.clone()))}}d.vertices+=48,B[v=3*d.vertices]=r.x,B[v+1]=r.y,B[v+2]=r.z,B[v+3]=f.x,B[v+4]=f.y,B[v+5]=f.z,B[v+6]=n.x,B[v+7]=n.y,B[v+8]=n.z,d.vertices+=3;var ee=d.vertices-3,te=d.vertices-2,ie=d.vertices-1,re=3*ee,ne=3*te,se=3*ie;for(_=0,y=g.length-1;_o&&(o=c),d>l&&(l=d),u>h&&(h=u)}e.center.set((o+n)/2,(l+s)/2,(h+a)/2),e.radius=e.center.distanceTo({x:o,y:l,z:h}),e.box={min:{x:n,y:s,z:a},max:{x:o,y:l,z:h}}}static addCustomGeo(e,t,i,r,n){var s,a,h,c,d,u,f,p,m,g=t.addGeoGroup(),v=i.vertexArr,_=i.normalArr,y=i.faceArr;g.vertices=v.length,g.faceidx=y.length;var b=g.vertexArray,x=g.colorArray;for(r.constructor!==Array&&(p=r.r,m=r.g,c=r.b),u=0,f=g.vertices;ul?(c.fromCap=0,c.toCap=2):(c.fromCap=2,c.toCap=2),this.addCylinder(c)}}addLine(e){var t,i;t=e.start?new l.Vector3(e.start.x||0,e.start.y||0,e.start.z||0):new l.Vector3(0,0,0),e.end?void 0===(i=new l.Vector3(e.end.x,e.end.y||0,e.end.z||0)).x&&(i.x=3):i=new l.Vector3(3,0,0);var r=this.geo.updateGeoGroup(2),n=r.vertices,s=3*n,a=r.vertexArray;a[s]=t.x,a[s+1]=t.y,a[s+2]=t.z,a[s+3]=i.x,a[s+4]=i.y,a[s+5]=i.z,r.vertices+=2;var o=r.lineArray,h=r.lineidx;o[h]=n,o[h+1]=n+1,r.lineidx+=2;var c=new l.Vector3;this.components.push({centroid:c.addVectors(t,i).multiplyScalar(.5)}),r=this.geo.updateGeoGroup(0),GLShape.updateBoundingFromPoints(this.boundingSphere,this.components,r.vertexArray,r.vertices)}addArrow(e){if(e.start?e.start=new l.Vector3(e.start.x||0,e.start.y||0,e.start.z||0):e.start=new l.Vector3(0,0,0),e.dir instanceof l.Vector3&&"number"==typeof e.length){var t=e.dir.clone().multiplyScalar(e.length).add(e.start);e.end=t}else e.end?(e.end=new l.Vector3(e.end.x,e.end.y||0,e.end.z||0),void 0===e.end.x&&(e.end.x=3)):e.end=new l.Vector3(3,0,0);e.radius=e.radius||.1,e.radiusRatio=e.radiusRatio||1.618034,e.mid=0=0?p[n]-a:a-p[n])>0&&(m[n]|=GLShape.ISDONE);var g=[],v=[];MarchingCube.march(m,g,v,{fulltable:!0,voxel:o,unitCube:e.unit,origin:e.origin,matrix:e.matrix,nX:c,nY:d,nZ:u}),!o&&h>0&&MarchingCube.laplacianSmooth(h,g,v);var _=[],y=[],b=[];if(t.selectedRegion&&void 0===t.coords&&(t.coords=t.selectedRegion),void 0===t.coords&&void 0!==t.selection&&(r?t.coords=r.selectedAtoms(t.selection):console.log("addIsosurface needs viewer is selection provided.")),void 0!==t.coords){var x=t.coords[0].x,w=t.coords[0].y,A=t.coords[0].z,C=t.coords[0].x,S=t.coords[0].y,z=t.coords[0].z;for(let e=0;ex?x=t.coords[e].x:t.coords[e].xw?w=t.coords[e].y:t.coords[e].yA?A=t.coords[e].z:t.coords[e].zC&&g[e].xS&&g[e].yz&&g[e].z0){var r=new a.LineBasicMaterial({linewidth:this.linewidth,color:this.color}),n=new a.Line(this.linegeo,r,a.LineStyle.LinePieces);this.shapeObj.add(n)}this.renderedShapeObj=this.shapeObj.clone(),e.add(this.renderedShapeObj)}}removegl(e){this.renderedShapeObj&&(void 0!==this.renderedShapeObj.geometry&&this.renderedShapeObj.geometry.dispose(),void 0!==this.renderedShapeObj.material&&this.renderedShapeObj.material.dispose(),e.remove(this.renderedShapeObj),this.renderedShapeObj=null),this.shapeObj=null}get position(){return this.boundingSphere.center}get x(){return this.boundingSphere.center.x}get y(){return this.boundingSphere.center.y}get z(){return this.boundingSphere.center.z}}function Ne(e){if(e.vertexArr.length<64e3)return[e];var t=[{vertexArr:[],normalArr:[],faceArr:[]}];e.colorArr&&(t.colorArr=[]);var i=[],r=[],n=0,s=e.faceArr;for(let o=0,l=s.length;o=64e3&&(t.push({vertexArr:[],normalArr:[],faceArr:[]}),e.colorArr&&(t.colorArr=[]),n++)}return t}GLShape.ISDONE=2,GLShape.drawCustom=function(e,t,i){var r=i,n=r.vertexArr,s=r.faceArr;0!==n.length&&0!==s.length||console.warn("Error adding custom shape component: No vertices and/or face indices supplied!");var a=i.color;void 0===a&&(a=e.color),a=h.CC.color(a);for(var o=Ne(r),l=0,c=o.length;lv&&(v=b),x>_&&(_=x)}if(this.canvas.width=v,this.canvas.height=_,this.context.clearRect(0,0,this.canvas.width,this.canvas.height),m="",e.bold&&(m="bold "),this.context.font=m+n+"px "+r,this.context.fillStyle="rgba("+h.r+","+h.g+","+h.b+","+h.a+")",this.context.strokeStyle="rgba("+d.r+","+d.g+","+d.b+","+d.a+")",e.backgroundGradient){let t=this.context.createLinearGradient(0,_/2,v,_/2),i=c.Gradient.getGradient(e.backgroundGradient),r=i.range(),n=-1,s=1;r&&(n=r[0],s=r[1]);let a=s-n;for(let e=0;e<1.01;e+=.1){let r=Ge(i.valueToHex(n+a*e)),s="rgba("+r.r+","+r.g+","+r.b+","+r.a+")";t.addColorStop(e,s)}this.context.fillStyle=t}this.context.lineWidth=l,i&&function(e,t,i,r,n,s,a){e.beginPath(),e.moveTo(t+s,i),e.lineTo(t+r-s,i),e.quadraticCurveTo(t+r,i,t+r,i+s),e.lineTo(t+r,i+n-s),e.quadraticCurveTo(t+r,i+n,t+r-s,i+n),e.lineTo(t+s,i+n),e.quadraticCurveTo(t,i+n,t,i+n-s),e.lineTo(t,i+s),e.quadraticCurveTo(t,i,t+s,i),e.closePath(),e.fill(),a&&e.stroke()}(this.context,l,l,v-2*l,_-2*l,6,l>0),e.backgroundImage&&this.context.drawImage(y,0,0,v,_),this.context.fillStyle="rgba("+s.r+","+s.g+","+s.b+","+s.a+")",this.context.fillText(this.text,l+o,n+l+o,g);var w=new a.Texture(this.canvas);w.needsUpdate=!0,this.sprite.material=new a.SpriteMaterial({map:w,useScreenCoordinates:t,alignment:p,depthTest:!f,screenOffset:e.screenOffset||null}),this.sprite.scale.set(1,1,1),this.sprite.position.set(u.x,u.y,u.z)}dispose(){void 0!==this.sprite.material.map&&this.sprite.material.map.dispose(),void 0!==this.sprite.material&&this.sprite.material.dispose()}}class GLVolumetricRender{static interpolateArray(e,t){function i(e,t,i){return e+(t-e)*i}var r=[],n=(e.length-1)/(t-1);r[0]=e[0];for(var s=1;s=0||e.getIndex(c,d,u)>=0)for(let t=o;t=0&&!i[o]&&(t-a.x)*(t-a.x)+(r-a.y)*(r-a.y)+(s-a.z)*(s-a.z)(window.innerHeight||document.documentElement.clientHeight)||t.left>(window.innerWidth||document.documentElement.clientWidth))};if(t(this.container)){let e=0;for(let i of document.getElementsByTagName("canvas"))if(t(i)&&null!=i._3dmol_viewer&&(i._3dmol_viewer.resize(),e+=1,e>=Ve))break}}initContainer(e){this.container=e,this.WIDTH=this.getWidth(),this.HEIGHT=this.getHeight(),this.ASPECT=this.renderer.getAspect(this.WIDTH,this.HEIGHT),this.renderer.setSize(this.WIDTH,this.HEIGHT),this.container.append(this.renderer.domElement),this.glDOM=this.renderer.domElement,this.glDOM._3dmol_viewer=this,this.glDOM.addEventListener("webglcontextlost",this._handleLostContext.bind(this)),this.nomouse||(this.glDOM.addEventListener("mousedown",this._handleMouseDown.bind(this),{passive:!1}),this.glDOM.addEventListener("touchstart",this._handleMouseDown.bind(this),{passive:!1}),this.glDOM.addEventListener("wheel",this._handleMouseScroll.bind(this),{passive:!1}),this.glDOM.addEventListener("mousemove",this._handleMouseMove.bind(this),{passive:!1}),this.glDOM.addEventListener("touchmove",this._handleMouseMove.bind(this),{passive:!1}),this.glDOM.addEventListener("contextmenu",this._handleContextMenu.bind(this),{passive:!1}))}decAnim(){this.animated--,this.animated<0&&(this.animated=0)}incAnim(){this.animated++}nextSurfID(){var e=0;for(let i in this.surfaces)if(this.surfaces.hasOwnProperty(i)){var t=parseInt(i);isNaN(t)||t>e&&(e=t)}return e+1}setSlabAndFog(){let e=this.camera.position.z-this.rotationGroup.position.z;e<1&&(e=1),this.camera.near=e+this.slabNear,!this.camera.ortho&&this.camera.near<1&&(this.camera.near=1),this.camera.far=e+this.slabFar,this.camera.near+1>this.camera.far&&(this.camera.far=this.camera.near+1),this.camera.fov=this.fov,this.camera.right=e*Math.tan(Math.PI/180*this.fov),this.camera.left=-this.camera.right,this.camera.top=this.camera.right/this.ASPECT,this.camera.bottom=-this.camera.top,this.camera.updateProjectionMatrix(),this.scene.fog.near=this.camera.near+this.fogStart*(this.camera.far-this.camera.near),this.scene.fog.far=this.camera.near+this.fogEnd*(this.camera.far-this.camera.near),this.config.disableFog&&(this.scene.fog.near=this.scene.fog.far)}show(e){if(this.renderer.setViewport(),this.scene&&(this.setSlabAndFog(),this.renderer.render(this.scene,this.camera),this.viewChangeCallback&&this.viewChangeCallback(this._viewer.getView()),!e&&this.linkedViewers.length>0))for(var t=this._viewer.getView(),i=0;i0){let t=this.CAMERA_Z-this.config.lowerZoomLimit;e>t&&(e=t)}if(this.config.upperZoomLimit&&this.config.upperZoomLimit>0){let t=this.CAMERA_Z-this.config.upperZoomLimit;ethis.CAMERA_Z-1&&(e=this.CAMERA_Z-1),e}static slerp(e,t,i){if(1==i)return t.clone();if(0==i)return e.clone();let r=e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w;if(r>.9995){let r=new l.Quaternion(e.x+i*(t.x-e.x),e.y+i*(t.y-e.y),e.z+i*(t.z-e.z),e.w+i*(t.w-e.w));return r.normalize(),r}r<0&&(t=t.clone().multiplyScalar(-1),r=-r),r>1?r=1:r<-1&&(r=-1);var n=Math.acos(r)*i,s=t.clone();s.sub(e.clone().multiplyScalar(r)),s.normalize();var a=Math.cos(n),o=Math.sin(n),h=new l.Quaternion(e.x*a+s.x*o,e.y*a+s.y*o,e.z*a+s.z*o,e.w*a+s.w*o);return h.normalize(),h}constructor(e,t={}){if(this.nomouse=!1,this.glDOM=null,this.models=[],this.surfaces={},this.shapes=[],this.labels=[],this.clickables=[],this.hoverables=[],this.contextMenuEnabledObjects=[],this.current_hover=null,this.hoverDuration=500,this.longTouchDuration=1e3,this.viewer_frame=0,this.viewChangeCallback=null,this.stateChangeCallback=null,this.NEAR=1,this.FAR=800,this.CAMERA_Z=150,this.fov=20,this.linkedViewers=[],this.renderer=null,this.control_all=!1,this.scene=null,this.rotationGroup=null,this.modelGroup=null,this.fogStart=.4,this.fogEnd=1,this.slabNear=-50,this.slabFar=50,this.cq=new l.Quaternion(0,0,0,1),this.dq=new l.Quaternion(0,0,0,1),this.animated=0,this.animationTimers=new Set,this.isDragging=!1,this.mouseStartX=0,this.mouseStartY=0,this.touchDistanceStart=0,this.touchHold=!1,this.currentModelPos=0,this.cz=0,this.cslabNear=0,this.cslabFar=0,this.userContextMenuHandler=null,this.config=t,this.callback=this.config.callback,this.defaultcolors=this.config.defaultcolors,this.defaultcolors||(this.defaultcolors=h.elementColors.defaultColors),this.nomouse=Boolean(this.config.nomouse),this.bgColor=0,this.config.backgroundColor=this.config.backgroundColor||"#ffffff",void 0!==this.config.backgroundColor&&(this.bgColor=h.CC.color(this.config.backgroundColor).getHex()),this.config.backgroundAlpha=null==this.config.backgroundAlpha?1:this.config.backgroundAlpha,this.camerax=0,void 0!==this.config.camerax&&(this.camerax="string"==typeof this.config.camerax?parseFloat(this.config.camerax):this.config.camerax),this._viewer=this,this.container=e,null!=this.config.hoverDuration&&(this.hoverDuration=this.config.hoverDuration),void 0===this.config.antialias&&(this.config.antialias=!0),void 0===this.config.cartoonQuality&&(this.config.cartoonQuality=10),this.WIDTH=this.getWidth(),this.HEIGHT=this.getHeight(),this.setupRenderer(),this.row=null==this.config.row?0:this.config.row,this.col=null==this.config.col?0:this.config.col,this.cols=this.config.cols,this.rows=this.config.rows,this.viewers=this.config.viewers,this.control_all=this.config.control_all,this.ASPECT=this.renderer.getAspect(this.WIDTH,this.HEIGHT),this.camera=new a.Camera(this.fov,this.ASPECT,this.NEAR,this.FAR,this.config.orthographic),this.camera.position=new l.Vector3(this.camerax,0,this.CAMERA_Z),this.lookingAt=new l.Vector3,this.camera.lookAt(this.lookingAt),this.raycaster=new a.Raycaster(new l.Vector3(0,0,0),new l.Vector3(0,0,0)),this.projector=new a.Projector,this.initializeScene(),this.renderer.setClearColorHex(this.bgColor,this.config.backgroundAlpha),this.scene.fog.color=h.CC.color(this.bgColor),document.body.addEventListener("mouseup",this._handleMouseUp.bind(this)),document.body.addEventListener("touchend",this._handleMouseUp.bind(this)),this.initContainer(this.container),this.config.style&&this.setViewStyle(this.config),window.addEventListener("resize",this.resize.bind(this)),void 0!==window.ResizeObserver&&(this.divwatcher=new window.ResizeObserver(this.resize.bind(this)),this.divwatcher.observe(this.container)),void 0!==window.IntersectionObserver){let e=(e,t)=>{e.forEach(e=>{e.isIntersecting&&this.resize()})};this.intwatcher=new window.IntersectionObserver(e),this.intwatcher.observe(this.container)}try{"function"==typeof this.callback&&this.callback(this)}catch(e){console.log("error with glviewer callback: "+e)}}targetedObjects(e,t,i){var r={x:e,y:t,z:-1};return Array.isArray(i)||(i=this.selectedAtoms(i)),0==i.length?[]:(this.raycaster.setFromCamera(r,this.camera),this.raycaster.intersectObjects(this.modelGroup,i))}modelToScreen(e){let t=!1;Array.isArray(e)||(e=[e],t=!0);let i=this.renderer.getXRatio(),r=this.renderer.getYRatio(),n=this.col,s=this.row,a=n*(this.WIDTH/i),o=(r-s-1)*(this.HEIGHT/r),h=[],c=this.canvasOffset();return e.forEach(e=>{let t=new l.Vector3(e.x,e.y,e.z);t.applyMatrix4(this.modelGroup.matrixWorld),this.projector.projectVector(t,this.camera);let n=this.WIDTH/i*(t.x+1)/2+c.left+a,s=-this.HEIGHT/r*(t.y-1)/2+c.top+o;h.push({x:n,y:s})}),t&&(h=h[0]),h}screenOffsetToModel(e,t,i){var r=e/this.WIDTH,n=t/this.HEIGHT,s=void 0===i?this.rotationGroup.position.z:i,a=this.rotationGroup.quaternion,o=new l.Vector3(0,0,s);return this.projector.projectVector(o,this.camera),o.x+=2*r,o.y-=2*n,this.projector.unprojectVector(o,this.camera),o.z=0,o.applyQuaternion(a),o}screenToModelDistance(e,t){let i=this.canvasOffset(),r=new l.Vector3(t.x,t.y,t.z);r.applyMatrix4(this.modelGroup.matrixWorld);let n=r.clone();this.projector.projectVector(r,this.camera);let s=new l.Vector3(2*(e.x-i.left)/this.WIDTH-1,2*(e.y-i.top)/-this.HEIGHT+1,r.z);return this.projector.unprojectVector(s,this.camera),s.distanceTo(n)}setViewChangeCallback(e){"function"!=typeof e&&null!=e||(this.viewChangeCallback=e)}setStateChangeCallback(e){"function"!=typeof e&&null!=e||(this.stateChangeCallback=e)}getConfig(){return this.config}setConfig(e){this.config=e,e.ambientOcclusion&&this.renderer.enableAmbientOcclusion(e.ambientOcclusion)}getInternalState(){var e={models:[],surfaces:[],shapes:[],labels:[]};for(let t=0;t{t.getCanvas().toBlob(function(t){t.arrayBuffer().then(e)},"image/png")})),r+=1,r==e&&(t.viewChangeCallback=n,Promise.all(a).then(e=>{let r=[];for(let t=0;t0&&(this.hoverTimeout=setTimeout(function(){a.handleHoverSelection(s.x,s.y,e)},this.hoverDuration)),this.isDragging)){e.targetTouches&&(e.targetTouches.length>1||1===e.targetTouches.length&&!this.closeEnoughForClick(e))&&clearTimeout(this.longTouchTimeout);var l=(t-this.mouseStartX)/this.WIDTH,h=(i-this.mouseStartY)/this.HEIGHT;0!=this.touchDistanceStart&&e.targetTouches&&2==e.targetTouches.length?(o=2,h=2*(this.calcTouchDistance(e)-this.touchDistanceStart)/(this.WIDTH+this.HEIGHT)):e.targetTouches&&3==e.targetTouches.length&&(o=1),l*=r,h*=n;var c,d=Math.hypot(l,h);if(3==o||3==this.mouseButton&&e.ctrlKey)this.slabNear=this.cslabNear+100*l,this.slabFar=this.cslabFar-100*h;else if(2==o||3==this.mouseButton||e.shiftKey)(c=.85*(this.CAMERA_Z-this.rotationGroup.position.z))<80&&(c=80),this.rotationGroup.position.z=this.cz+h*c,this.rotationGroup.position.z=this.adjustZoomToLimits(this.rotationGroup.position.z);else if(1==o||2==this.mouseButton||e.ctrlKey){var u=this.screenOffsetToModel(r*(t-this.mouseStartX),n*(i-this.mouseStartY));this.modelGroup.position.addVectors(this.currentModelPos,u)}else if((0===o||1==this.mouseButton)&&0!==d){var f=Math.sin(d*Math.PI)/d;this.dq.x=Math.cos(d*Math.PI),this.dq.y=0,this.dq.z=f*l,this.dq.w=-f*h,this.rotationGroup.quaternion.set(1,0,0,0),this.rotationGroup.quaternion.multiply(this.dq),this.rotationGroup.quaternion.multiply(this.cq)}this.show()}}_handleContextMenu(e){if(e.preventDefault(),this.closeEnoughForClick(e)){var t=this.mouseStartX,i=this.mouseStartY,r=this.canvasOffset();let s=this.mouseXY(t,i),a=s.x,o=s.y,l=this.targetedObjects(a,o,this.contextMenuEnabledObjects);var n=null;l.length&&(n=l[0].clickable),r=this.canvasOffset(),t=this.mouseStartX-r.left,i=this.mouseStartY-r.top,this.userContextMenuHandler&&(this.userContextMenuHandler(n,t,i,l,e),this.isDragging=!1)}}setContainer(e){let t=(0,d.getElement)(e)||this.container;return this.initContainer(t),this}setBackgroundColor(e,t){(void 0===t||t<0||t>1)&&(t=1);var i=h.CC.color(e);return this.scene.fog.color=i,this.bgColor=i.getHex(),this.renderer.setClearColorHex(i.getHex(),t),this.show(),this}setProjection(e){this.camera.ortho="orthographic"===e,this.setSlabAndFog()}setViewStyle(e){if((e=e||{}).style=e.style||"",e.style.includes("outline")?this.renderer.enableOutline(e):this.renderer.disableOutline(),e.style.includes("ambientOcclusion")){var t={};e.strength&&(t.strength=e.strength),e.radius&&(t.radius=e.radius),this.renderer.enableAmbientOcclusion(t)}else this.renderer.disableAmbientOcclusion();return this}updateSize(){this.renderer.setSize(this.WIDTH,this.HEIGHT),this.ASPECT=this.renderer.getAspect(this.WIDTH,this.HEIGHT),this.renderer.setSize(this.WIDTH,this.HEIGHT),this.camera.aspect=this.ASPECT,this.camera.updateProjectionMatrix()}setWidth(e){return this.WIDTH=e||this.WIDTH,this.updateSize(),this}setHeight(e){return this.HEIGHT=e||this.HEIGHT,this.updateSize(),this}resize(){this.WIDTH=this.getWidth(),this.HEIGHT=this.getHeight();let e=!1;if(this.renderer.isLost()&&this.WIDTH>0&&this.HEIGHT>0){let t=!1,i=this.container.querySelector("canvas");i&&i!=this.renderer.getCanvas()?this.config.canvas=i:(i.remove(),this.config&&null!=this.config.canvas&&(delete this.config.canvas,t=!0)),this.setupRenderer(),this.initContainer(this.container),this.renderer.setClearColorHex(this.bgColor,this.config.backgroundAlpha),e=!0,t&&(this.config.canvas=this.renderer.getCanvas())}if(0==this.WIDTH||0==this.HEIGHT?this.animated&&this._viewer.pauseAnimate():this.animated&&this._viewer.resumeAnimate(),this.updateSize(),e){let e=this.renderer.supportedExtensions();if(e.regen=!0,this.viewers)for(let t=0,i=this.viewers.length;t0&&this.HEIGHT>0&&this.show();return this}getModel(e){return void 0===e?0==this.models.length?null:this.models[this.models.length-1]:e instanceof GLModel?e:e in this.models?this.models[e]:0==this.models.length?null:this.models[this.models.length-1]}spin(e,t=1,i=!1){if(clearInterval(this.spinInterval),void 0===e&&(e="y"),"boolean"==typeof e){if(!e)return;e="y"}Array.isArray(e)&&(e={x:e[0],y:e[1],z:e[2]});var r=this;this.spinInterval=setInterval(function(){!r.getCanvas().isConnected&&r.renderer.isLost()&&clearInterval(r.spinInterval),(!i||r.container.checkVisibility&&r.container.checkVisibility())&&r.rotate(1*t,e)},25)}animateMotion(e,t,i,r,n,s){var a=Math.ceil(e/20);a<1&&(a=1),this.incAnim();var o={mpos:this.modelGroup.position.clone(),rz:this.rotationGroup.position.z,rot:this.rotationGroup.quaternion.clone(),cam:this.lookingAt.clone()};if(t){let e=new Array(a);for(let t=0;t=0&&(this.modelGroup.remove(this.labels[i].sprite),(this.viewer_frame<0||this.labels[i].frame==this.viewer_frame)&&this.modelGroup.add(this.labels[i].sprite));for(i in this.surfaces)if(this.surfaces.hasOwnProperty(i)){var s=this.surfaces[i];for(r=0;r1||1==s[r].symmetries.length&&!s[r].symmetries[0].isIdentity()){var h,c=new a.Object3D;for(h=0;h0?this.animateMotion(t,i,this.modelGroup.position,this.adjustZoomToLimits(n),this.rotationGroup.quaternion,this.lookingAt):(this.rotationGroup.position.z=this.adjustZoomToLimits(n),this.show()),this}translate(e,t,i=0,r=!1){var n=e/this.WIDTH,s=t/this.HEIGHT,a=new l.Vector3(0,0,-this.CAMERA_Z);this.projector.projectVector(a,this.camera),a.x-=n,a.y-=s,this.projector.unprojectVector(a,this.camera),a.z=0;var o=this.lookingAt.clone().add(a);return i>0?this.animateMotion(i,r,this.modelGroup.position,this.rotationGroup.position.z,this.rotationGroup.quaternion,o):(this.lookingAt=o,this.camera.lookAt(this.lookingAt),this.show()),this}translateScene(e,t,i=0,r=!1){var n=this.screenOffsetToModel(e,t),s=this.modelGroup.position.clone().add(n);return i>0?this.animateMotion(i,r,this.modelGroup.position,this.rotationGroup.position.z,this.rotationGroup.quaternion,this.lookingAt):(this.modelGroup.position=s,this.show()),this}fitSlab(e){e=e||{};var t=this.getAtomsFromSel(e),i=(0,d.getExtent)(t),r=i[1][0]-i[0][0],n=i[1][1]-i[0][1],s=i[1][2]-i[0][2],a=Math.hypot(r,n,s);return a<5&&(a=5),this.slabNear=-a/1.9,this.slabFar=a/2,this}center(e={},t=0,i=!1){var r,n,s=this.getAtomsFromSel(e),a=(0,d.getExtent)(s);(0,d.isEmptyObject)(e)?(this.shapes.forEach(e=>{if(e&&e.boundingSphere&&e.boundingSphere.center){var t=e.boundingSphere.center,i=e.boundingSphere.radius;i>0?(s.push(new l.Vector3(t.x+i,t.y,t.z)),s.push(new l.Vector3(t.x-i,t.y,t.z)),s.push(new l.Vector3(t.x,t.y+i,t.z)),s.push(new l.Vector3(t.x,t.y-i,t.z)),s.push(new l.Vector3(t.x,t.y,t.z+i)),s.push(new l.Vector3(t.x,t.y,t.z-i))):s.push(t)}}),a=(0,d.getExtent)(s),r=s,n=a):(r=this.getAtomsFromSel({}),n=(0,d.getExtent)(r));var o=new l.Vector3(a[2][0],a[2][1],a[2][2]),h=n[1][0]-n[0][0],c=n[1][1]-n[0][1],u=n[1][2]-n[0][2],f=Math.hypot(h,c,u);f<5&&(f=5),this.slabNear=-f/1.9,this.slabFar=f/2,h=a[1][0]-a[0][0],c=a[1][1]-a[0][1],u=a[1][2]-a[0][2],(f=Math.hypot(h,c,u))<5&&(f=5);for(var p=25,m=0;mp&&(p=g)}f=2*Math.sqrt(p);var v=o.clone().multiplyScalar(-1);return t>0?this.animateMotion(t,i,v,this.rotationGroup.position.z,this.rotationGroup.quaternion,this.lookingAt):(this.modelGroup.position=v,this.show()),this}zoomTo(e={},t=0,i=!1){let r=this.getAtomsFromSel(e),n=(0,d.getExtent)(r),s=n;if((0,d.isEmptyObject)(e)){let e=r&&r.length;if(this.shapes.forEach(e=>{if(e&&e.boundingSphere)if(e.boundingSphere.box){let t=e.boundingSphere.box;r.push(new l.Vector3(t.min.x,t.min.y,t.min.z)),r.push(new l.Vector3(t.max.x,t.max.y,t.max.z))}else if(e.boundingSphere.center){var t=e.boundingSphere.center,i=e.boundingSphere.radius;i>0?(r.push(new l.Vector3(t.x+i,t.y,t.z)),r.push(new l.Vector3(t.x-i,t.y,t.z)),r.push(new l.Vector3(t.x,t.y+i,t.z)),r.push(new l.Vector3(t.x,t.y-i,t.z)),r.push(new l.Vector3(t.x,t.y,t.z+i)),r.push(new l.Vector3(t.x,t.y,t.z-i))):r.push(t)}}),s=(0,d.getExtent)(r),!e)for(let e=0;e<3;e++)n[2][e]=(s[0][e]+s[1][e])/2}else{let e=this.getAtomsFromSel({});s=(0,d.getExtent)(e)}var a=new l.Vector3(n[2][0],n[2][1],n[2][2]),o=s[1][0]-s[0][0],h=s[1][1]-s[0][1],c=s[1][2]-s[0][2],u=Math.hypot(o,h,c);u<5&&(u=5),this.slabNear=-u/1.9,this.slabFar=u/2,0===Object.keys(e).length&&(this.slabNear=Math.min(2*-u,-50),this.slabFar=Math.max(2*u,50));var f=this.config.minimumZoomToDistance||5;o=n[1][0]-n[0][0],h=n[1][1]-n[0][1],c=n[1][2]-n[0][2],(u=Math.hypot(o,h,c))p&&(p=g)}u=2*Math.sqrt(p);var v=a.clone().multiplyScalar(-1),_=-(.5*u/Math.tan(Math.PI/180*this.camera.fov/2)-this.CAMERA_Z);return _=this.adjustZoomToLimits(_),t>0?this.animateMotion(t,i,v,_,this.rotationGroup.quaternion,this.lookingAt):(this.modelGroup.position=v,this.rotationGroup.position.z=_,this.show()),this}setSlab(e,t){this.slabNear=e,this.slabFar=t}getSlab(){return{near:this.slabNear,far:this.slabFar}}addLabel(e,t={},i,r=!1){if(i){var n=(0,d.getExtent)(this.getAtomsFromSel(i));t.position={x:n[2][0],y:n[2][1],z:n[2][2]}}var s=new Label(e,t);return s.setContext(),this.modelGroup.add(s.sprite),this.labels.push(s),r||this.show(),s}addResLabels(e,t,i=!1){let r=this.labels.length;return this.applyToModels("addResLabels",e,t,i),this.show(),this.labels.slice(r)}addPropertyLabels(e,t,i){return this.applyToModels("addPropertyLabels",e,t,i),this.show(),this}removeLabel(e){for(var t=0;t0&&void 0===this.shapes[this.shapes.length-1];)this.shapes.pop();return this}removeAllShapes(){for(var e=0;e-1e-4&&n.x<1.0001&&n.y>-1e-4&&n.y<1.0001&&n.z>-1e-4&&n.z<1.0001)}}for(let n=0;nn){e.start=i,e.end=r,t.addLine(e);break}d.addVectors(i,h),e.start=i,e.end=d,t.addLine(e),i=d.clone(),u+=s,d.addVectors(i,c),i=d.clone(),u+=a}return t.finalize(),t}addCustom(e){var t=new GLShape(e=e||{});return t.shapePosition=this.shapes.length,t.addCustom(e),this.shapes.push(t),t.finalize(),t}addVolumetricData(e,t,i={}){var r=new Ue.VolumeData(e,t);return i.hasOwnProperty("transferfn")?this.addVolumetricRender(r,i):this.addIsosurface(r,i)}addIsosurface(e,t={},i){var r=new GLShape(t);return r.shapePosition=this.shapes.length,r.addIsosurface(e,t,i,this),this.shapes.push(r),r}addVolumetricRender(e,t){var i=new GLVolumetricRender(e,t=t||{},this);return i.shapePosition=this.shapes.length,this.shapes.push(i),i}hasVolumetricRender(){return this.renderer.supportsVolumetric()}enableFog(e){if(e){this.scene.fog=new a.Fog(this.bgColor,100,200),this.config.disableFog=!1;const t=e;null==t.fogStart?this.fogStart=.4:this.fogStart=t.fogStart,null==t.fogEnd?this.fogEnd=1:this.fogEnd=t.fogEnd}else this.config.disableFog=!0,this.show()}setFrame(e){this.viewer_frame=e;let t=this;return new Promise(function(i){var r=t.models.map(function(t){return t.setFrame(e)});Promise.all(r).then(function(){i()})})}getFrame(){return this.viewer_frame}getNumFrames(){var e=0;for(let t=0;te&&(e=this.models[t].getNumFrames());for(let t=0;t=e&&(e=this.shapes[t].frame+1);for(let t=0;t=e&&(e=this.labels[t].frame+1);return e}getNextModelId(){return this.models.length}animate(e){this.incAnim();var t=100,i="forward",r=1/0;(e=e||{}).interval&&(t=e.interval),e.loop&&(i=e.loop),e.reps&&(r=e.reps);var n=this.getNumFrames(),s=this,a=0;e.startFrame&&(a=e.startFrame%n);var o=1;e.step&&(r/=o=e.step);var l,h,c=0,u=n*r,f=new Date,p=function(e){f=new Date,"forward"==e?s.setFrame(a).then(function(){a=(a+o)%n,l()}):"backward"==e?s.setFrame(n-1-a).then(function(){a=(a+o)%n,l()}):s.setFrame(a).then(function(){o*=(a+=o)%(n-1)==0?-1:1,l()})};return l=function(){if(s.render(),s.getCanvas().isConnected)if(++c>=u||!s.isAnimated())h.cancel(),s.animationTimers.delete(h),s.decAnim();else{var e=t-((new Date).getTime()-f.getTime());e=e>0?e:0,h.cancel(),s.animationTimers.delete(h),h=new d.PausableTimer(p,e,i),s.animationTimers.add(h)}else s.stopAnimate()},h=new d.PausableTimer(p,0,i),this.animationTimers.add(h),this}stopAnimate(){return this.animated=0,this.animationTimers.forEach(function(e){e.cancel()}),this.animationTimers=new Set,this}pauseAnimate(){return this.animationTimers.forEach(function(e){e.pause()}),this}resumeAnimate(){return this.animationTimers.forEach(function(e){e.resume()}),this}isAnimated(){return this.animated>0}getModelOpt(e){return e&&!e.defaultcolors?(e.defaultcolors=this.defaultcolors,e.cartoonQuality=e.cartoonQuality||this.config.cartoonQuality):void 0===e&&(e={defaultcolors:this.defaultcolors,cartoonQuality:this.config.cartoonQuality}),e}addModel(e,t="",i){i=this.getModelOpt(i);var r=new GLModel(this.models.length,i,this);return r.addMolData(e,t,i),this.models.push(r),r}addModels(e,t,i){(i=this.getModelOpt(i)).multimodel=!0,i.frames=!0;for(var r=GLModel.parseMolData(e,t,i),n=0;n0&&void 0===this.models[this.models.length-1];)this.models.pop();return this}}removeAllModels(){for(var e=0;et[1][0]||r.yt[1][1]||r.zt[1][2]||i.push(r))}return i}static volume(e){return(e[1][0]-e[0][0])*(e[1][1]-e[0][1])*(e[1][2]-e[0][2])}carveUpExtent(e,t,i){let r=[],n={};for(let e=0,i=t.length;er&&i>n?0:r>i&&r>n?1:2;var s=a(e),l=a(e),h=(e[1][t]-e[0][t])/2+e[0][t];s[1][t]=h,l[0][t]=h;var c=o(s),d=o(l);return c.concat(d)},l=o(e);for(let e=0,n=l.length;e0)for(let t=0,i=d.length;t1||1==y.length&&!y[0].isIdentity()){_=!0;break}}var b=function(e,i,r){var s;m=n?GLViewer.shallowCopy(u.getAtomsFromSel(n)):r;var a=(0,d.getExtent)(r,!0);if(t.map&&t.map.prop){var l=t.map.prop;let e=(0,c.getGradient)(t.map.scheme||t.map.gradient||new c.Gradient.RWB),i=e.range();i||(i=(0,d.getPropertyRange)(r,l)),t.colorscheme={prop:l,gradient:e}}for(let e=0,r=i.length;e0){var v=(0,d.getExtent)(m,!0);g.sort(function(e,t){var i=function(e,t){var i=e.extent,r=i[1][0]-i[0][0],n=i[1][1]-i[0][1],s=i[1][2]-i[0][2],a=r-t[2][0];a*=a;var o=n-t[2][1];o*=o;var l=s-t[2][2];return a+o+(l*=l)};return i(e,v)-i(t,v)})}var _=[];for(let e=0,t=i.length;e0&&(x.push({geo:new a.Geometry(!0),mat:h,done:!1,finished:!1,symmetries:this.models[v].getSymmetries()}),S.push(b(x[x.length-1],A[v],C[v])));w=Promise.all(S)}else x.push({geo:new a.Geometry(!0),mat:h,done:!1,finished:!1,symmetries:[new l.Matrix4]}),w=b(x[x.length-1],p,g);return this.surfaces[o]=x,w.surfid=o,s&&"function"==typeof s?(w.then(function(e){s(e)}),o):w}setSurfaceMaterialStyle(e,t){if((0,d.adjustVolumeStyle)(t),this.surfaces[e]){var i=this.surfaces[e];for(let e=0;e0?this.camera.position.x=i*Math.tan(Math.PI/180*t):this.camera.position.x=-i*Math.tan(Math.PI/180*t),this.camera.lookAt(new l.Vector3(0,0,this.rotationGroup.position.z)),this.camera.position.x}setDefaultCartoonQuality(e){this.config.cartoonQuality=e}}function je(e,t){if(e=(0,d.getElement)(e)){t=t||{};try{return new GLViewer(e,t)}catch(e){throw"error creating viewer: "+e}}}function He(e,t={},i={}){if(e=(0,d.getElement)(e)){var r=[],n=document.createElement("canvas");i.rows=t.rows,i.cols=t.cols,i.control_all=null!=t.control_all&&t.control_all,e.appendChild(n);try{for(var s=0;s{var o=[],l=[],c="";"static"==a.style.position&&(a.style.position="relative");var u=null;if(n=null,a.dataset.pdb)o.push("https://files.rcsb.org/view/"+a.dataset.pdb+".pdb"),l.push("pdb");else if(a.dataset.cid)l.push("sdf"),o.push("https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/"+a.dataset.cid+"/SDF?record_type=3d");else if(a.dataset.href||a.dataset.url){if(c=a.dataset.href?a.dataset.href:a.dataset.url,o.push(c),"gz"==(n=c.substring(c.lastIndexOf(".")+1))){let e=c.substring(0,c.lastIndexOf(".")).lastIndexOf(".");n=c.substring(e+1)}l.push(n);var f=c.substring(c.lastIndexOf("/")+1,c.lastIndexOf("."));"/"==f&&(f=c.substring(c.lastIndexOf("/")+1)),a.dataset[l[l.length-1]]=f}let p=a.dataset;for(i in p)"pdb"===i.substring(0,3)&&"pdb"!==i?(o.push("https://files.rcsb.org/view/"+p[i]+".pdb"),l.push("pdb")):"href"===i.substring(0,4)&&"href"!==i?(c=p[i],o.push(c),l.push(c.substring(c.lastIndexOf(".")+1))):"cid"===i.substring(0,3)&&"cid"!==i&&(o.push("https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/"+p[i]+"/SDF?record_type=3d"),l.push("sdf"));var m={};a.dataset.options&&(m=(0,d.specStringToObject)(a.dataset.options));var g=h.CC.color(a.dataset.backgroundcolor),v=a.dataset.backgroundalpha;v=null==v?1:parseFloat(v);var _=!!a.dataset.style,y={line:{}};_&&(y=(0,d.specStringToObject)(a.dataset.style));var b={};a.dataset.select&&(b=(0,d.specStringToObject)(a.dataset.select));var x=[],w=[],A=[],C={},S=null,z=a.dataset,M=/style(.+)/,T=/surface(.*)/,E=/labelres(.*)/,L=[];for(r in z)Object.prototype.hasOwnProperty.call(z,r)&&L.push(r);for(L.sort(),i=0;i{u.loadSurface("VDW",t,r,e)}):e.addSurface(Re.VDW,r,t,t)}for(i=0;ifunction(s){c=o[e];var a=r.dataset.type||r.dataset.datatype||l[e];if(n.addModel(s,a,m),u){var h=r.dataset[l[e]];u.setModelTitle(h)}e+=1,e{"complete"===document.readyState&&Xe()};const Ke={"ALA:N":-.15,"ALA:CA":.1,"ALA:CB":0,"ALA:C":.6,"ALA:O":-.55,"ARG:N":-.15,"ARG:CA":.1,"ARG:CB":0,"ARG:CG":0,"ARG:CD":.1,"ARG:NE":-.1,"ARG:CZ":.5,"ARG:NH1":.25,"ARG:NH2":.25,"ARG:C":.6,"ARG:O":-.55,"ASN:N":-.15,"ASN:CA":.1,"ASN:CB":0,"ASN:CG":.55,"ASN:OD1":-.55,"ASN:ND2":0,"ASN:C":.6,"ASN:O":-.55,"ASP:N":-.15,"ASP:CA":.1,"ASP:CB":0,"ASP:CG":.14,"ASP:OD1":-.57,"ASP:OD2":-.57,"ASP:C":.6,"ASP:O":-.55,"CYS:N":-.15,"CYS:CA":.1,"CYS:CB":.19,"CYS:SG":-.19,"CYS:C":.6,"CYS:O":-.55,"GLN:N":-.15,"GLN:CA":.1,"GLN:CB":0,"GLN:CG":0,"GLN:CD":.55,"GLN:OE1":-.55,"GLN:NE2":0,"GLN:C":.6,"GLN:O":-.55,"GLU:N":-.15,"GLU:CA":.1,"GLU:CB":0,"GLU:CG":0,"GLU:CD":.14,"GLU:OE1":-.57,"GLU:OE2":-.57,"GLU:C":.6,"GLU:O":-.55,"GLY:N":-.15,"GLY:CA":.1,"GLY:C":.6,"GLY:O":-.55,"HIS:N":-.15,"HIS:CA":.1,"HIS:CB":0,"HIS:CG":.1,"HIS:ND1":-.1,"HIS:CD2":.1,"HIS:NE2":-.4,"HIS:CE1":.3,"HIS:C":.6,"HIS:O":-.55,"ILE:N":-.15,"ILE:CA":.1,"ILE:CB":0,"ILE:CG2":0,"ILE:CG1":0,"ILE:CD":0,"ILE:C":.6,"ILE:O":-.55,"LEU:N":-.15,"LEU:CA":.1,"LEU:CB":0,"LEU:CG":0,"LEU:CD1":0,"LEU:CD2":0,"LEU:C":.6,"LEU:O":-.55,"LYS:N":-.15,"LYS:CA":.1,"LYS:CB":0,"LYS:CG":0,"LYS:CD":0,"LYS:CE":.25,"LYS:NZ":.75,"LYS:C":.6,"LYS:O":-.55,"MET:N":-.15,"MET:CA":.1,"MET:CB":0,"MET:CG":.06,"MET:SD":-.12,"MET:CE":.06,"MET:C":.6,"MET:O":-.55,"PHE:N":-.15,"PHE:CA":.1,"PHE:CB":0,"PHE:CG":0,"PHE:CD1":0,"PHE:CD2":0,"PHE:CE1":0,"PHE:CE2":0,"PHE:CZ":0,"PHE:C":.6,"PHE:O":-.55,"PRO:N":-.25,"PRO:CD":.1,"PRO:CA":.1,"PRO:CB":0,"PRO:CG":0,"PRO:C":.6,"PRO:O":-.55,"SER:N":-.15,"SER:CA":.1,"SER:CB":.25,"SER:OG":-.25,"SER:C":.6,"SER:O":-.55,"THR:N":-.15,"THR:CA":.1,"THR:CB":.25,"THR:OG1":-.25,"THR:CG2":0,"THR:C":.6,"THR:O":-.55,"TRP:N":-.15,"TRP:CA":.1,"TRP:CB":0,"TRP:CG":-.03,"TRP:CD2":.1,"TRP:CE2":-.04,"TRP:CE3":-.03,"TRP:CD1":.06,"TRP:NE1":-.06,"TRP:CZ2":0,"TRP:CZ3":0,"TRP:CH2":0,"TRP:C":.6,"TRP:O":-.55,"TYR:N":-.15,"TYR:CA":.1,"TYR:CB":0,"TYR:CG":0,"TYR:CD1":0,"TYR:CE1":0,"TYR:CD2":0,"TYR:CE2":0,"TYR:CZ":.25,"TYR:OH":-.25,"TYR:C":.6,"TYR:O":-.55,"VAL:N":-.15,"VAL:CA":.1,"VAL:CB":0,"VAL:CG1":0,"VAL:CG2":0,"VAL:C":.6,"VAL:O":-.55};function Qe(e,t){if((!t||void 0===e.partialCharge)&&e.resn&&e.atom){var i=e.resn+":"+e.atom;e.properties.partialCharge=Ke[i]}}window&&(window.$3Dmol=t)},40(e,t,i){i.r(t),i.d(t,{bondLength:()=>n,bondTable:()=>r,setBondLength:()=>s});let r={H:.37,He:.32,Li:1.34,Be:.9,B:.82,C:.77,N:.75,O:.73,F:.71,Ne:.69,Na:1.54,Mg:1.3,Al:1.18,Si:1.11,P:1.06,S:1.02,Cl:.99,Ar:.97,K:1.96,Ca:1.74,Sc:1.44,Ti:1.56,V:1.25,Mn:1.39,Fe:1.25,Co:1.26,Ni:1.21,Cu:1.38,Zn:1.31,Ga:1.26,Ge:1.22,Se:1.16,Br:1.14,Kr:1.1,Rb:2.11,Sr:1.92,Y:1.62,Zr:1.48,Nb:1.37,Mo:1.45,Tc:1.56,Ru:1.26,Rh:1.35,Pd:1.31,Ag:1.53,Cd:1.48,In:1.44,Sn:1.41,Sb:1.38,Te:1.35,I:1.33,Xe:1.3,Cs:2.25,Ba:1.98,Lu:1.6,Hf:1.5,Ta:1.38,W:1.46,Re:1.59,Os:1.44,Ir:1.37,Pt:1.28,Au:1.44,Hg:1.49,Tl:1.48,Pb:1.47,Bi:1.46,Rn:1.45};function n(e){return r[e]||1.6}function s(e,t){t<0&&(t=0),r[e]=t}},59(e,t,i){var r;i.r(t),i.d(t,{BackSide:()=>s,Camera:()=>Camera,ClampToEdgeWrapping:()=>c,Coloring:()=>r,Cylinder:()=>z.Cylinder,DoubleSide:()=>a,EventDispatcher:()=>EventDispatcher,FloatType:()=>m,Fog:()=>Fog,FrontSide:()=>n,Geometry:()=>Geometry,GeometryGroup:()=>GeometryGroup,GeometryIDCount:()=>A,ImposterMaterial:()=>ImposterMaterial,InstancedMaterial:()=>InstancedMaterial,Light:()=>Light,Line:()=>Line,LineBasicMaterial:()=>LineBasicMaterial,LineStyle:()=>B,LinearFilter:()=>d,LinearMipMapLinearFilter:()=>f,Material:()=>Material,MaterialIdCount:()=>x,Matrix3:()=>l.Matrix3,Matrix4:()=>l.Matrix4,Mesh:()=>Mesh,MeshDoubleLambertMaterial:()=>MeshDoubleLambertMaterial,MeshLambertMaterial:()=>MeshLambertMaterial,MeshOutlineMaterial:()=>MeshOutlineMaterial,NearestFilter:()=>u,Object3D:()=>Object3D,Object3DIDCount:()=>C,Projector:()=>Projector,Quaternion:()=>l.Quaternion,R32Format:()=>_,RFormat:()=>v,RGBAFormat:()=>g,Ray:()=>l.Ray,Raycaster:()=>Raycaster,Renderer:()=>Renderer,RingImposterMaterial:()=>RingImposterMaterial,Scene:()=>Scene,ShaderLib:()=>ue,ShaderUtils:()=>pe,Shading:()=>o,Sphere:()=>z.Sphere,SphereImposterMaterial:()=>SphereImposterMaterial,SphereImposterOutlineMaterial:()=>SphereImposterOutlineMaterial,Sprite:()=>Sprite,SpriteAlignment:()=>h,SpriteMaterial:()=>SpriteMaterial,SpritePlugin:()=>SpritePlugin,StickImposterMaterial:()=>StickImposterMaterial,StickImposterOutlineMaterial:()=>StickImposterOutlineMaterial,Texture:()=>Texture,TextureIdCount:()=>N,TextureOperations:()=>y,Triangle:()=>z.Triangle,UVMapping:()=>UVMapping,UnsignedByteType:()=>p,Vector2:()=>l.Vector2,Vector3:()=>l.Vector3,VolumetricMaterial:()=>VolumetricMaterial,basic:()=>V,clamp:()=>l.clamp,clone:()=>fe,conversionMatrix3:()=>l.conversionMatrix3,degToRad:()=>l.degToRad,instanced:()=>H,intersectObject:()=>U,lambert:()=>q,lambertdouble:()=>Z,outline:()=>K,ringimposter:()=>ee,screen:()=>Q,screenaa:()=>$,sphereimposter:()=>ie,sphereimposteroutline:()=>ne,sprite:()=>se,stickimposter:()=>le,stickimposteroutline:()=>he,volumetric:()=>de}),function(e){e[e.NoColors=0]="NoColors",e[e.FaceColors=1]="FaceColors",e[e.VertexColors=2]="VertexColors"}(r||(r={}));const n=0,s=1,a=2;var o;!function(e){e[e.NoShading=0]="NoShading",e[e.FlatShading=1]="FlatShading",e[e.SmoothShading=2]="SmoothShading"}(o||(o={}));var l=i(529);const h={topLeft:new l.Vector2(1,-1),topCenter:new l.Vector2(0,-1),topRight:new l.Vector2(-1,-1),centerLeft:new l.Vector2(1,0),center:new l.Vector2(0,0),centerRight:new l.Vector2(-1,0),bottomLeft:new l.Vector2(1,1),bottomCenter:new l.Vector2(0,1),bottomRight:new l.Vector2(-1,1)},c=1001,d=1006,u=1007,f=1008,p=1009,m=1010,g=1021,v=1022,_=1023;var y;!function(e){e[e.MultiplyOperation=0]="MultiplyOperation",e[e.MixOperation=1]="MixOperation",e[e.AddOperation=2]="AddOperation"}(y||(y={}));class EventDispatcher{constructor(){this.listeners={}}dispatchEvent(e){var t=this.listeners[e.type];if(void 0!==t){e.target=this;for(var i=0,r=t.length;i0?this.lineArray=(null==a?void 0:a.subarray(0,this.lineidx))||null:this.lineArray=new Uint16Array(0)):(this.normalArray=new Float32Array(0),this.faceArray=new Uint16Array(0),this.lineArray=new Uint16Array(0)),o&&(this.radiusArray=o.subarray(0,this.vertices)),t&&(this.normalArray&&(this.normalArray=new Float32Array(this.normalArray)),this.faceArray&&(this.faceArray=new Uint16Array(this.faceArray)),this.lineArray&&(this.lineArray=new Uint16Array(this.lineArray)),this.vertexArray&&(this.vertexArray=new Float32Array(this.vertexArray)),this.colorArray&&(this.colorArray=new Float32Array(this.colorArray)),this.radiusArray&&(this.radiusArray=new Float32Array(this.radiusArray))),this.__inittedArrays=!0}}class Geometry extends EventDispatcher{constructor(e=!1,t=!1,i=!1){super(),this.name="",this.hasTangents=!1,this.dynamic=!0,this.verticesNeedUpdate=!1,this.elementsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.buffersNeedUpdate=!1,this.imposter=!1,this.instanced=!1,this.geometryGroups=[],this.groups=0,this.id=A++,this.mesh=e,this.radii=t,this.offset=i}updateGeoGroup(e=0){var t,i=this.groups>0?this.geometryGroups[this.groups-1]:null;return(!i||i.vertices+e>((null===(t=null==i?void 0:i.vertexArray)||void 0===t?void 0:t.length)||0)/3)&&(i=this.addGeoGroup()),i}vrml(e,t){for(var i="",r=this.geometryGroups.length,n=0;ne.distance-t.distance,T=new l.Matrix4;class Raycaster{constructor(e,t,i,r){this.precision=1e-4,this.linePrecision=.2,this.ray=new l.Ray(e,t),this.ray.direction.lengthSq()>0&&this.ray.direction.normalize(),this.near=r||0,this.far=i||1/0}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.ortho?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld)):(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,e.z),t.projectionMatrixInverse.getInverse(t.projectionMatrix),T.multiplyMatrices(t.matrixWorld,t.projectionMatrixInverse),this.ray.direction.applyProjection(T),this.ray.direction.sub(this.ray.origin).normalize())}intersectObjects(e,t){for(var i=[],r=0,n=t.length;rMath.min(Math.max(e,-1),1);var L=new z.Sphere,F=new z.Cylinder,I=new z.Triangle,D=new l.Vector3,O=new l.Vector3,R=new l.Vector3,k=new l.Vector3,P=new l.Vector3;function U(e,t,i,r){if(P.getPositionFromMatrix(e.matrixWorld),void 0===t.intersectionShape)return r;if(t.hidden)return r;var n,s,a,o,l,h,c,d,u,f,p,m,g,v,_=t.intersectionShape,y=i.linePrecision,b=(y*=e.matrixWorld.getMaxScaleOnAxis())*y;if(void 0!==t.boundingSphere&&t.boundingSphere instanceof z.Sphere&&(L.copy(t.boundingSphere),L.applyMatrix4(e.matrixWorld),!i.ray.isIntersectionSphere(L)))return r;for(n=0,s=_.triangle.length;n=0)continue;if(D.subVectors(I.a,i.ray.origin),(c=a.dot(D)/o)<0)continue;O.copy(i.ray.direction).multiplyScalar(c).add(i.ray.origin),O.sub(I.a),R.copy(I.b).sub(I.a),k.copy(I.c).sub(I.a);var x=R.dot(k),w=R.lengthSq(),A=k.lengthSq();if((m=(w*O.dot(k)-x*O.dot(R))/(w*A-x*x))<0||m>1)continue;if((p=(O.dot(R)-m*x)/w)<0||p>1||p+m>1)continue;r.push({clickable:t,distance:c})}for(n=0,s=_.cylinder.length;nF.lengthSq()||m<0)continue;r.push({clickable:t,distance:c})}}for(n=0,s=_.line.length;n 0.0) {\n vec4 unadjusted = projectionMatrix*modelViewMatrix * vec4( position, 1.0 );\n float w = outpos.w;\n //normalize homogeneous coords\n unadjusted /= unadjusted.w;\n outpos /= outpos.w;\n vec2 diff = outpos.xy-unadjusted.xy;\n //put into pixels\n diff.x *= vWidth;\n diff.y *= vHeight;\n if ( length(diff) > outlineMaxPixels) {\n vec2 ndiff = normalize(diff)*outlineMaxPixels;\n ndiff.x /= vWidth;\n ndiff.y /= vHeight;\n outpos.xy = unadjusted.xy;\n outpos.xy += ndiff;\n }\n outpos *= w; //if I don't do this things blow up\n }\n gl_Position = outpos;\n mvPosition.z -= outlinePushback; //go backwards in model space\n vec4 pushpos = projectionMatrix*mvPosition; //project to get z in projection space, I'm probably missing some simple math to do the same thing..\n gl_Position.z = gl_Position.w*pushpos.z/pushpos.w;\n}\n\n".replace("#define GLSLIFY 1",""),uniforms:X},Q={fragmentShader:"uniform sampler2D colormap;\nvarying highp vec2 vTexCoords;\nuniform vec2 dimensions;\n//DEFINEFRAGCOLOR\nvoid main (void) {\n gl_FragColor = texture2D(colormap, vTexCoords);\n\n //gl_FragColor.g = gl_FragColor.b = gl_FragColor.r; //debug shading \n}\n ".replace("#define GLSLIFY 1",""),vertexShader:"attribute vec2 vertexPosition;\nvarying highp vec2 vTexCoords;\nconst vec2 scale = vec2(0.5, 0.5);\n\nvoid main() {\n vTexCoords = vertexPosition * scale + scale; // scale vertex attribute to [0,1] range\n gl_Position = vec4(vertexPosition, 0.0, 1.0);\n}\n ".replace("#define GLSLIFY 1",""),uniforms:{}},$={fragmentShader:"\n \nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nuniform sampler2D tColor;\nvarying highp vec2 vTexCoords;\n\n// adapted from https://github.com/kosua20/Rendu\n// MIT License Copyright (c) 2017 Simon Rodriguez\n// by way of molstar (https://github.com/molstar/molstar/blob/master/src/mol-gl/shader/fxaa.frag.ts)\n\n#define QUALITY(q) ((q) < 5 ? 1.0 : ((q) > 5 ? ((q) < 10 ? 2.0 : ((q) < 11 ? 4.0 : 8.0)) : 1.5))\n\nfloat rgb2luma(vec3 rgb){\n return sqrt(dot(rgb, vec3(0.299, 0.587, 0.114)));\n}\n\nfloat sampleLuma(vec2 uv) {\n return rgb2luma(texture2D(tColor, uv).rgb);\n}\n\nfloat sampleLuma(vec2 uv, float uOffset, float vOffset) {\n uv += vec2(uOffset, vOffset);\n return sampleLuma(uv);\n}\n\n//DEFINEFRAGCOLOR\nvoid main(void) {\n ivec2 dim = textureSize(tColor,0);\n vec2 dimensions = vec2(float(dim.x),float(dim.y));\n vec2 inverseScreenSize = vec2(1.0 / dimensions.x, 1.0 / dimensions.y);\n vec2 coords = vTexCoords;\n\n vec4 colorCenter = texture2D(tColor, coords);\n float dEdgeThresholdMin = 0.0312;\n float dEdgeThresholdMax = 0.125;\n int dIterations = 12;\n float dSubpixelQuality = 0.3;\n\n // Luma at the current fragment\n float lumaCenter = rgb2luma(colorCenter.rgb);\n\n // Luma at the four direct neighbours of the current fragment.\n float lumaDown = sampleLuma(coords, 0.0, -inverseScreenSize.y);\n float lumaUp = sampleLuma(coords, 0.0, inverseScreenSize.y);\n float lumaLeft = sampleLuma(coords, -inverseScreenSize.x, 0.0);\n float lumaRight = sampleLuma(coords, inverseScreenSize.x, 0.0);\n\n // Find the maximum and minimum luma around the current fragment.\n float lumaMin = min(lumaCenter, min(min(lumaDown, lumaUp), min(lumaLeft, lumaRight)));\n float lumaMax = max(lumaCenter, max(max(lumaDown, lumaUp), max(lumaLeft, lumaRight)));\n\n // Compute the delta.\n float lumaRange = lumaMax - lumaMin;\n\n // If the luma variation is lower that a threshold (or if we are in a really dark area),\n // we are not on an edge, don't perform any AA.\n if (lumaRange < max(dEdgeThresholdMin, lumaMax * dEdgeThresholdMax)) {\n gl_FragColor = colorCenter;\n return;\n }\n\n // Query the 4 remaining corners lumas.\n float lumaDownLeft = sampleLuma(coords, -inverseScreenSize.x, -inverseScreenSize.y);\n float lumaUpRight = sampleLuma(coords, inverseScreenSize.x, inverseScreenSize.y);\n float lumaUpLeft = sampleLuma(coords, -inverseScreenSize.x, inverseScreenSize.y);\n float lumaDownRight = sampleLuma(coords, inverseScreenSize.x, -inverseScreenSize.y);\n\n // Combine the four edges lumas (using intermediary variables for future computations\n // with the same values).\n float lumaDownUp = lumaDown + lumaUp;\n float lumaLeftRight = lumaLeft + lumaRight;\n\n // Same for corners\n float lumaLeftCorners = lumaDownLeft + lumaUpLeft;\n float lumaDownCorners = lumaDownLeft + lumaDownRight;\n float lumaRightCorners = lumaDownRight + lumaUpRight;\n float lumaUpCorners = lumaUpRight + lumaUpLeft;\n\n // Compute an estimation of the gradient along the horizontal and vertical axis.\n float edgeHorizontal = abs(-2.0 * lumaLeft + lumaLeftCorners) + abs(-2.0 * lumaCenter + lumaDownUp) * 2.0 + abs(-2.0 * lumaRight + lumaRightCorners);\n float edgeVertical = abs(-2.0 * lumaUp + lumaUpCorners) + abs(-2.0 * lumaCenter + lumaLeftRight) * 2.0 + abs(-2.0 * lumaDown + lumaDownCorners);\n\n // Is the local edge horizontal or vertical ?\n bool isHorizontal = (edgeHorizontal >= edgeVertical);\n\n // Choose the step size (one pixel) accordingly.\n float stepLength = isHorizontal ? inverseScreenSize.y : inverseScreenSize.x;\n\n // Select the two neighboring texels lumas in the opposite direction to the local edge.\n float luma1 = isHorizontal ? lumaDown : lumaLeft;\n float luma2 = isHorizontal ? lumaUp : lumaRight;\n // Compute gradients in this direction.\n float gradient1 = luma1 - lumaCenter;\n float gradient2 = luma2 - lumaCenter;\n\n // Which direction is the steepest ?\n bool is1Steepest = abs(gradient1) >= abs(gradient2);\n\n // Gradient in the corresponding direction, normalized.\n float gradientScaled = 0.25 * max(abs(gradient1), abs(gradient2));\n\n // Average luma in the correct direction.\n float lumaLocalAverage = 0.0;\n if(is1Steepest){\n // Switch the direction\n stepLength = -stepLength;\n lumaLocalAverage = 0.5 * (luma1 + lumaCenter);\n } else {\n lumaLocalAverage = 0.5 * (luma2 + lumaCenter);\n }\n\n // Shift UV in the correct direction by half a pixel.\n vec2 currentUv = coords;\n if(isHorizontal){\n currentUv.y += stepLength * 0.5;\n } else {\n currentUv.x += stepLength * 0.5;\n }\n\n // Compute offset (for each iteration step) in the right direction.\n vec2 offset = isHorizontal ? vec2(inverseScreenSize.x, 0.0) : vec2(0.0, inverseScreenSize.y);\n // Compute UVs to explore on each side of the edge, orthogonally.\n // The QUALITY allows us to step faster.\n vec2 uv1 = currentUv - offset * QUALITY(0);\n vec2 uv2 = currentUv + offset * QUALITY(0);\n\n // Read the lumas at both current extremities of the exploration segment,\n // and compute the delta wrt to the local average luma.\n float lumaEnd1 = sampleLuma(uv1);\n float lumaEnd2 = sampleLuma(uv2);\n lumaEnd1 -= lumaLocalAverage;\n lumaEnd2 -= lumaLocalAverage;\n\n // If the luma deltas at the current extremities is larger than the local gradient,\n // we have reached the side of the edge.\n bool reached1 = abs(lumaEnd1) >= gradientScaled;\n bool reached2 = abs(lumaEnd2) >= gradientScaled;\n bool reachedBoth = reached1 && reached2;\n\n // If the side is not reached, we continue to explore in this direction.\n if(!reached1){\n uv1 -= offset * QUALITY(1);\n }\n if(!reached2){\n uv2 += offset * QUALITY(1);\n }\n\n // If both sides have not been reached, continue to explore.\n if(!reachedBoth){\n for(int i = 2; i < dIterations; i++){\n // If needed, read luma in 1st direction, compute delta.\n if(!reached1){\n lumaEnd1 = sampleLuma(uv1);\n lumaEnd1 = lumaEnd1 - lumaLocalAverage;\n }\n // If needed, read luma in opposite direction, compute delta.\n if(!reached2){\n lumaEnd2 = sampleLuma(uv2);\n lumaEnd2 = lumaEnd2 - lumaLocalAverage;\n }\n // If the luma deltas at the current extremities is larger than the local gradient,\n // we have reached the side of the edge.\n reached1 = abs(lumaEnd1) >= gradientScaled;\n reached2 = abs(lumaEnd2) >= gradientScaled;\n reachedBoth = reached1 && reached2;\n\n // If the side is not reached, we continue to explore in this direction,\n // with a variable quality.\n if(!reached1){\n uv1 -= offset * QUALITY(i);\n }\n if(!reached2){\n uv2 += offset * QUALITY(i);\n }\n\n // If both sides have been reached, stop the exploration.\n if(reachedBoth){\n break;\n }\n }\n }\n\n // Compute the distances to each side edge of the edge (!).\n float distance1 = isHorizontal ? (coords.x - uv1.x) : (coords.y - uv1.y);\n float distance2 = isHorizontal ? (uv2.x - coords.x) : (uv2.y - coords.y);\n\n // In which direction is the side of the edge closer ?\n bool isDirection1 = distance1 < distance2;\n float distanceFinal = min(distance1, distance2);\n\n // Thickness of the edge.\n float edgeThickness = (distance1 + distance2);\n\n // Is the luma at center smaller than the local average ?\n bool isLumaCenterSmaller = lumaCenter < lumaLocalAverage;\n\n // If the luma at center is smaller than at its neighbour,\n // the delta luma at each end should be positive (same variation).\n bool correctVariation1 = (lumaEnd1 < 0.0) != isLumaCenterSmaller;\n bool correctVariation2 = (lumaEnd2 < 0.0) != isLumaCenterSmaller;\n\n // Only keep the result in the direction of the closer side of the edge.\n bool correctVariation = isDirection1 ? correctVariation1 : correctVariation2;\n\n // UV offset: read in the direction of the closest side of the edge.\n float pixelOffset = - distanceFinal / edgeThickness + 0.5;\n\n // If the luma variation is incorrect, do not offset.\n float finalOffset = correctVariation ? pixelOffset : 0.0;\n\n // Sub-pixel shifting\n // Full weighted average of the luma over the 3x3 neighborhood.\n float lumaAverage = (1.0 / 12.0) * (2.0 * (lumaDownUp + lumaLeftRight) + lumaLeftCorners + lumaRightCorners);\n // Ratio of the delta between the global average and the center luma,\n // over the luma range in the 3x3 neighborhood.\n float subPixelOffset1 = clamp(abs(lumaAverage - lumaCenter) / lumaRange, 0.0, 1.0);\n float subPixelOffset2 = (-2.0 * subPixelOffset1 + 3.0) * subPixelOffset1 * subPixelOffset1;\n // Compute a sub-pixel offset based on this delta.\n float subPixelOffsetFinal = subPixelOffset2 * subPixelOffset2 * float(dSubpixelQuality);\n\n // Pick the biggest of the two offsets.\n finalOffset = max(finalOffset, subPixelOffsetFinal);\n\n // Compute the final UV coordinates.\n vec2 finalUv = coords;\n if(isHorizontal){\n finalUv.y += finalOffset * stepLength;\n } else {\n finalUv.x += finalOffset * stepLength;\n }\n\n // Read the color at the new UV coordinates, and use it.\n gl_FragColor = texture2D(tColor, finalUv);\n} \n\n/* old fxaa implementation\nuniform highp sampler2D colormap;\nvarying highp vec2 vTexCoords;\n\n\n// Basic FXAA implementation based on the code on geeks3d.com \n#define FXAA_REDUCE_MIN (1.0/ 128.0)\n#define FXAA_REDUCE_MUL (1.0 / 8.0)\n#define FXAA_SPAN_MAX 8.0\n\n\nvec4 applyFXAA(vec2 fragCoord, highp sampler2D tex)\n{\n vec4 color;\n ivec2 dim = textureSize(tex,0);\n vec2 dimensions = vec2(float(dim.x),float(dim.y));\n vec2 inverseVP = vec2(1.0 / dimensions.x, 1.0 / dimensions.y);\n vec4 rgbNW = texture2D(tex, fragCoord + vec2(-1.0, -1.0) * inverseVP);\n vec4 rgbNE = texture2D(tex, fragCoord + vec2(1.0, -1.0) * inverseVP);\n vec4 rgbSW = texture2D(tex, fragCoord + vec2(-1.0, 1.0) * inverseVP);\n vec4 rgbSE = texture2D(tex, fragCoord + vec2(1.0, 1.0) * inverseVP);\n vec4 rgbM = texture2D(tex, fragCoord );\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float lumaNW = dot(rgbNW.xyz, luma);\n float lumaNE = dot(rgbNE.xyz, luma);\n float lumaSW = dot(rgbSW.xyz, luma);\n float lumaSE = dot(rgbSE.xyz, luma);\n float lumaM = dot(rgbM.xyz, luma);\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * inverseVP;\n\n vec4 rgbA = 0.5 * (\n texture2D(tex, fragCoord + dir * (1.0 / 3.0 - 0.5)) +\n texture2D(tex, fragCoord + dir * (2.0 / 3.0 - 0.5)));\n vec4 rgbB = rgbA * 0.5 + 0.25 * (\n texture2D(tex, fragCoord + dir * -0.5) +\n texture2D(tex, fragCoord + dir * 0.5));\n\n float lumaB = dot(rgbB.xyz, luma);\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n color = rgbA;\n else\n color = rgbB;\n\n return color;\n}\n\n\n//DEFINEFRAGCOLOR\nvoid main (void) {\n ivec2 dim = textureSize(colormap,0);\n\n gl_FragColor = applyFXAA(vTexCoords, colormap);\n}\n \n*/".replace("#define GLSLIFY 1",""),vertexShader:"attribute vec2 vertexPosition;\nvarying highp vec2 vTexCoords;\nconst vec2 scale = vec2(0.5, 0.5);\n\nvoid main() {\n vTexCoords = vertexPosition * scale + scale; // scale vertex attribute to [0,1] range\n gl_Position = vec4(vertexPosition, 0.0, 1.0);\n}\n ".replace("#define GLSLIFY 1",""),uniforms:{}},J={opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}},ee={vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute float radius;\n\nvarying vec2 mapping;\nvarying vec3 vColor;\nvarying float vOuterR;\nvarying float vMinorR;\nvarying vec3 vLight;\nvarying vec3 center;\nvarying vec3 vRingNormal;\n\nvoid main() {\n\n // Decode: normal direction = ring plane normal, length = minorR\n vMinorR = length(normal);\n vec3 ringNormalObj = normal / max(vMinorR, 0.0001);\n\n // Decode: |radius| = outerR, sign(radius) = X billboard corner\n vOuterR = abs(radius);\n float xSign = sign(radius);\n\n // Decode: sign(color.b) = Y billboard corner, actual color = (r, g, |b|)\n float ySign = sign(color.b);\n vColor = vec3(color.r, color.g, abs(color.b));\n\n // Transform ring center to view space\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n center = mvPosition.xyz;\n\n // Transform ring normal to view space\n vRingNormal = normalize( normalMatrix * ringNormalObj );\n\n // Billboard expansion\n mapping = vec2(xSign * vOuterR, ySign * vOuterR);\n vec4 projPosition = projectionMatrix * mvPosition;\n vec4 adjust = projectionMatrix * vec4(mapping, 0.0, 0.0);\n adjust.z = 0.0; adjust.w = 0.0;\n\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vLight = normalize( lDirection.xyz );\n gl_Position = projPosition + adjust;\n\n}\n".replace("#define GLSLIFY 1",""),fragmentShader:"\nuniform float opacity;\nuniform mat4 projectionMatrix;\n\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\n\nvarying vec3 vColor;\nvarying vec2 mapping;\nvarying float vOuterR;\nvarying float vMinorR;\nvarying vec3 vLight;\nvarying vec3 center;\nvarying vec3 vRingNormal;\n\n//DEFINEFRAGCOLOR\n\nvoid main() {\n float majorR = vOuterR - vMinorR;\n\n // The fragment represents a view ray at screen position (center.xy + mapping).\n // Intersect this ray with the ring plane to find the in-plane distance.\n // Ring plane: dot(P - center, vRingNormal) = 0\n // Ray: P = (center.x + mapping.x, center.y + mapping.y, center.z + t)\n // Solution: mapping.x*nx + mapping.y*ny + t*nz = 0 => t = -a/nz\n float a = mapping.x * vRingNormal.x + mapping.y * vRingNormal.y;\n float nz = vRingNormal.z;\n\n // Clamp |nz| to avoid singularity for edge-on rings\n float nzSafe = nz;\n if (abs(nzSafe) < 0.01) nzSafe = (nzSafe >= 0.0) ? 0.01 : -0.01;\n float zHit = -a / nzSafe;\n\n // In-ring-plane distance from center\n // hitPoint = (mapping.x, mapping.y, zHit) is in the ring plane by construction\n float dFromCenterSq = mapping.x * mapping.x + mapping.y * mapping.y + zHit * zHit;\n float dFromCenter = sqrt(dFromCenterSq);\n\n // Distance from ring centerline (in ring plane)\n float dRadial = dFromCenter - majorR;\n\n // Tube test\n if (dRadial * dRadial > vMinorR * vMinorR)\n discard;\n\n // Tube cross-section height\n float tubeZ = sqrt(max(0.0, vMinorR * vMinorR - dRadial * dRadial));\n\n // Always render the front surface (closest to camera).\n // The tube extends ±tubeZ along vRingNormal from the ring plane.\n // When vRingNormal.z > 0, +tubeZ is toward camera; when < 0, -tubeZ is.\n float tubeSign = (vRingNormal.z >= 0.0) ? 1.0 : -1.0;\n\n // Direction from center to the ring-plane hit point (normalized)\n vec3 hitPoint = vec3(mapping.x, mapping.y, zHit);\n vec3 radDir = (dFromCenter > 0.0001) ? hitPoint / dFromCenter : vec3(1.0, 0.0, 0.0);\n\n // Surface normal: radial component + tube bulge toward viewer\n vec3 norm = normalize(dRadial * radDir + tubeSign * tubeZ * vRingNormal);\n\n // Surface position: ring-plane intersection + tube bulge toward viewer\n vec3 surfacePos = center + hitPoint + tubeSign * tubeZ * vRingNormal;\n\n vec4 clipPos = projectionMatrix * vec4(surfacePos, 1.0);\n float ndcDepth = clipPos.z / clipPos.w;\n gl_FragDepthEXT = ((gl_DepthRange.diff * ndcDepth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;\n\n float dotProduct = dot( norm, vLight );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n vec3 vLightResult = directionalLightWeighting;\n vec3 color = vLightResult * vColor;\n gl_FragColor = vec4(color, opacity * opacity);\n\n if(fogNear != fogFar) {\n float depth = -surfacePos.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n\n}\n".replace("#define GLSLIFY 1",""),uniforms:J},te={opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}},ie={vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\n\nvarying vec2 mapping;\nvarying vec3 vColor;\nvarying float rval;\nvarying vec3 vLight;\nvarying vec3 center;\n\nvoid main() {\n\n vColor = color;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n center = mvPosition.xyz;\n vec4 projPosition = projectionMatrix * mvPosition;\n vec4 adjust = projectionMatrix* vec4(normal,0.0); adjust.z = 0.0; adjust.w = 0.0;\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vLight = normalize( lDirection.xyz );\n mapping = normal.xy;\n rval = abs(normal.x);\n gl_Position = projPosition+adjust;\n\n}\n".replace("#define GLSLIFY 1",""),fragmentShader:"\nuniform mat4 viewMatrix;\nuniform float opacity;\nuniform mat4 projectionMatrix;\n\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nuniform float uDepth;\nuniform vec3 directionalLightColor[ 1 ];\n\nvarying vec3 vColor;\nvarying vec2 mapping;\nvarying float rval;\nvarying vec3 vLight;\nvarying vec3 center;\n\n#ifdef SHADED\nuniform highp sampler2D shading;\n#endif\n\n//DEFINEFRAGCOLOR\n\nvoid main() {\n float lensqr = dot(mapping,mapping);\n float rsqr = rval*rval;\n if(lensqr > rsqr)\n discard;\n float z = sqrt(rsqr-lensqr);\n vec3 cameraPos = center+ vec3(mapping.x,mapping.y,z);\n vec4 clipPos = projectionMatrix * vec4(cameraPos, 1.0);\n float ndcDepth = clipPos.z / clipPos.w;\n gl_FragDepthEXT = ((gl_DepthRange.diff * ndcDepth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;\n vec3 norm = normalize(vec3(mapping.x,mapping.y,z));\n float dotProduct = dot( norm, vLight );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n vec3 vLight = directionalLightColor[ 0 ] * directionalLightWeighting;\n vec3 color = vLight*vColor;\n#ifdef SHADED\n ivec2 dim = textureSize(shading,0);\n float shadowFactor = texture2D(shading,vec2(gl_FragCoord.x/float(dim.x),gl_FragCoord.y/float(dim.y))).r;\n color *= shadowFactor;\n#endif \n gl_FragColor = vec4(color, opacity*opacity );\n\n if(fogNear != fogFar) {\n float depth = -cameraPos.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n \n}\n\n".replace("#define GLSLIFY 1",""),uniforms:te},re={opacity:{type:"f",value:1},outlineColor:{type:"c",value:new b.Color(0,0,0)},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},outlineWidth:{type:"f",value:.1},outlinePushback:{type:"f",value:1},outlineMaxPixels:{type:"f",value:0}},ne={fragmentShader:"\n\nuniform float opacity;\nuniform vec3 outlineColor;\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nuniform mat4 projectionMatrix;\nvarying vec2 mapping;\nvarying float rval;\nvarying vec3 center;\n\nuniform float outlinePushback;\n\n//DEFINEFRAGCOLOR\n\nvoid main() {\n float lensqr = dot(mapping,mapping);\n float rsqr = rval*rval;\n if(lensqr > rsqr)\n discard;\n float z = sqrt(rsqr-lensqr);\n vec3 cameraPos = center+ vec3(mapping.x,mapping.y,z-outlinePushback);\n vec4 clipPos = projectionMatrix * vec4(cameraPos, 1.0);\n float ndcDepth = clipPos.z / clipPos.w;\n gl_FragDepthEXT = ((gl_DepthRange.diff * ndcDepth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;\n gl_FragColor = vec4(outlineColor, 1 );\n\n if(fogNear != fogFar) {\n float depth = -cameraPos.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n}\n\n\n".replace("#define GLSLIFY 1",""),vertexShader:"\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float outlineWidth;\nuniform float outlinePushback;\nuniform float outlineMaxPixels;\nuniform float vWidth;\nuniform float vHeight;\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\n\nvarying vec2 mapping;\nvarying float rval;\nvarying vec3 center;\n\nvoid main() {\n\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n center = mvPosition.xyz;\n vec4 projPosition = projectionMatrix * mvPosition;\n vec2 norm = normal.xy + vec2(sign(normal.x)*outlineWidth,sign(normal.y)*outlineWidth);\n\n vec4 adjust = projectionMatrix* vec4(norm,normal.z,1.0); \n mapping = norm.xy;\n rval = abs(norm.x);\n gl_Position = projPosition+vec4(adjust.xy,0.0,0.0);\n\n if(outlineMaxPixels > 0.0) {\n vec4 unadjusted = projectionMatrix*vec4(center.x+normal.x, center.y,center.z,1.0); \n vec4 ccoord = projectionMatrix*vec4(center.xyz,1.0);\n adjust = projectionMatrix* vec4(center.x+norm.x,center.y,center.z,1.0); \n //subtract center \n unadjusted.xyz -= ccoord.xyz;\n adjust.xyz -= ccoord.xyz;\n unadjusted /= unadjusted.w;\n adjust /= adjust.w;\n float diff = abs(adjust.x-unadjusted.x);\n diff *= vWidth;\n if(diff > outlineMaxPixels) {\n \n float fixlen = abs(unadjusted.x) + outlineMaxPixels/vWidth;\n //adjsut reval by ratio of lengths\n rval *= fixlen/abs(adjust.x);\n }\n\n }\n}\n\n".replace("#define GLSLIFY 1",""),uniforms:re},se={fragmentShader:"\n\nuniform vec3 color;\nuniform sampler2D map;\nuniform float opacity;\n\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nuniform float alphaTest;\n\nvarying vec2 vUV;\n//DEFINEFRAGCOLOR\n\nvoid main() {\n\n vec4 texture = texture2D(map, vUV);\n\n if (texture.a <= alphaTest) discard;\n\n gl_FragColor = vec4(color * texture.xyz, texture.a * opacity);\n\n if (fogNear != fogFar) {\n\n float depth = gl_FragCoord.z / gl_FragCoord.w; //probably wrong\n float fogFactor = smoothstep(fogNear, fogFar, depth); \n gl_FragColor = mix(gl_FragColor, vec4(fogColor, gl_FragColor.w), fogFactor);\n }\n}\n\n".replace("#define GLSLIFY 1",""),vertexShader:"\n\nuniform int useScreenCoordinates;\nuniform vec3 screenPosition;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float rotation;\nuniform vec2 scale;\nuniform vec2 alignment;\nuniform vec2 uvOffset;\nuniform vec2 uvScale;\n\nattribute vec2 position;\nattribute vec2 uv;\n\nvarying vec2 vUV;\n\nvoid main() {\n\n vUV = uvOffset + uv * uvScale;\n\n vec2 alignedPosition = position + alignment;\n\n vec2 rotatedPosition;\n rotatedPosition.x = ( cos(rotation) * alignedPosition.x - sin(rotation) * alignedPosition.y ) * scale.x;\n rotatedPosition.y = ( sin(rotation) * alignedPosition.x + cos(rotation) * alignedPosition.y ) * scale.y;\n\n vec4 finalPosition;\n\n if(useScreenCoordinates != 0) {\n finalPosition = vec4(screenPosition.xy + rotatedPosition, screenPosition.z, 1.0);\n }\n\n else {\n finalPosition = projectionMatrix * modelViewMatrix * vec4(0.0, 0.0, 0.0, 1.0); finalPosition /= finalPosition.w;\n finalPosition.xy += rotatedPosition; \n }\n\n gl_Position = finalPosition;\n\n}\n\n".replace("#define GLSLIFY 1",""),uniforms:{}},ae={opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}},oe="uniform float opacity;\nuniform mat4 projectionMatrix;\n\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\n\nvarying vec3 vLight;\nvarying vec3 vColor;\nvarying vec3 cposition;\nvarying vec3 p1;\nvarying vec3 p2;\nvarying float r;\n\n#ifdef SHADED\nuniform highp sampler2D shading;\n#endif\n\n//DEFINEFRAGCOLOR\n\n//cylinder-ray intersection testing taken from http://mrl.nyu.edu/~dzorin/cg05/lecture12.pdf\n//also useful: http://stackoverflow.com/questions/9595300/cylinder-impostor-in-glsl\n//with a bit more care (caps) this could be a general cylinder imposter (see also outline)\nvoid main() {\n vec3 color = abs(vColor);\n vec3 pos = cposition;\n vec3 p = pos; //ray point\n vec3 v = vec3(0.0,0.0,-1.0); //ray normal - orthographic\n if(projectionMatrix[3][3] == 0.0) v = normalize(pos); //ray normal - perspective\n vec3 pa = p1; //cyl start\n vec3 va = normalize(p2-p1); //cyl norm\n vec3 tmp1 = v-(dot(v,va)*va);\n vec3 deltap = p-pa;\n float A = dot(tmp1,tmp1);\n if(A == 0.0) discard;\n vec3 tmp2 = deltap-(dot(deltap,va)*va);\n float B = 2.0*dot(tmp1, tmp2);\n float C = dot(tmp2,tmp2)-r*r;\n//quadratic equation!\n float det = (B*B) - (4.0*A*C);\n if(det < 0.0) discard;\n float sqrtDet = sqrt(det);\n float posT = (-B+sqrtDet)/(2.0*A);\n float negT = (-B-sqrtDet)/(2.0*A);\n float intersectionT = min(posT,negT);\n vec3 qi = p+v*intersectionT;\n float dotp1 = dot(va,qi-p1);\n float dotp2 = dot(va,qi-p2);\n vec3 norm;\n if( dotp1 < 0.0 || dotp2 > 0.0) { //(p-c)^2 + 2(p-c)vt +v^2+t^2 - r^2 = 0\n vec3 cp;\n if( dotp1 < 0.0) { \n// if(vColor.x < 0.0 ) discard; //color sign bit indicates if we should cap or not\n cp = p1;\n } else {\n// if(vColor.y < 0.0 ) discard;\n cp = p2;\n }\n vec3 diff = p-cp;\n A = dot(v,v);\n B = dot(diff,v)*2.0;\n C = dot(diff,diff)-r*r;\n det = (B*B) - (4.0*C);\n if(det < 0.0) discard;\n sqrtDet = sqrt(det);\n posT = (-B+sqrtDet)/(2.0);\n negT = (-B-sqrtDet)/(2.0);\n float t = min(posT,negT);\n qi = p+v*t; \n norm = normalize(qi-cp); \n } else {\n norm = normalize(qi-(dotp1*va + p1));\n }\n vec4 clipPos = projectionMatrix * vec4(qi, 1.0);\n float ndcDepth = clipPos.z / clipPos.w;\n float depth = ((gl_DepthRange.diff * ndcDepth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;\n gl_FragDepthEXT = depth;",le={fragmentShader:[oe," float dotProduct = dot( norm, vLight );\n vec3 light = vec3( max( dotProduct, 0.0 ) );\n color *= light;\n#ifdef SHADED\n ivec2 dim = textureSize(shading,0);\n float shadowFactor = texture2D(shading,vec2(gl_FragCoord.x/float(dim.x),gl_FragCoord.y/float(dim.y))).r;\n color *= shadowFactor;\n#endif \n gl_FragColor = vec4(color, opacity*opacity );\n if(fogNear != fogFar) {\n float depth = -qi.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n}"].join("\n"),vertexShader:"\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute float radius;\n\nvarying vec3 vColor;\nvarying vec3 vLight;\nvarying vec3 cposition;\nvarying vec3 p1;\nvarying vec3 p2;\nvarying float r;\n\nvoid main() {\n\n vColor = color; vColor.z = abs(vColor.z); //z indicates which vertex and so would vary\n r = abs(radius);\n vec4 to = modelViewMatrix*vec4(normal, 1.0); //normal is other point of cylinder\n vec4 pt = modelViewMatrix*vec4(position, 1.0);\n vec4 mvPosition = pt;\n p1 = pt.xyz; p2 = to.xyz;\n vec3 norm = to.xyz-pt.xyz;\n float mult = 1.1; //slop to account for perspective of sphere\n if(length(p1) > length(p2)) { //billboard at level of closest point\n mvPosition = to;\n }\n vec3 n = normalize(mvPosition.xyz);\n bool isperspective = (projectionMatrix[3][3] == 0.0);\n//intersect with the plane defined by the camera looking at the billboard point\n if(color.z >= 0.0) { //p1\n if(isperspective) { //perspective\n vec3 pnorm = normalize(p1);\n float t = dot(mvPosition.xyz-p1,n)/dot(pnorm,n);\n mvPosition.xyz = p1+t*pnorm; \n } else { //orthographic\n mvPosition.xyz = p1;\n }\n } else {\n if(isperspective) { //perspective\n vec3 pnorm = normalize(p2);\n float t = dot(mvPosition.xyz-p2,n)/dot(pnorm,n);\n mvPosition.xyz = p2+t*pnorm;\n } else { //orthographic\n mvPosition.xyz = p2;\n } \n mult *= -1.0;\n }\n\n if(isperspective) { //perspective\n vec3 cr = normalize(cross(mvPosition.xyz,norm))*radius;\n vec3 doublecr = normalize(cross(mvPosition.xyz,cr))*radius;\n mvPosition.xyz += mult*(cr + doublecr).xyz;\n } else {\n vec3 cr = normalize(cross(vec3(0.0,0.0,-1.0),norm))*radius;\n vec3 doublecr = normalize(cross(vec3(0.0,0.0,-1.0),cr))*radius;\n mvPosition.xyz += mult*(cr + doublecr).xyz; \n }\n\n cposition = mvPosition.xyz;\n gl_Position = projectionMatrix * mvPosition;\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vLight = normalize( lDirection.xyz )*directionalLightColor[0]; //not really sure this is right, but color is always white so..\n}\n\n",uniforms:ae},he={fragmentShader:oe+"\n gl_FragColor = vec4(color, opacity*opacity );\n if(fogNear != fogFar) {\n float depth = -qi.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n}",vertexShader:"\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\nuniform vec3 outlineColor;\nuniform float outlineWidth;\nuniform float outlinePushback;\nuniform float outlineMaxPixels;\nuniform float vWidth;\nuniform mat4 projinv;\n\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute float radius;\n\nvarying vec3 vColor;\nvarying vec3 vLight;\nvarying vec3 cposition;\nvarying vec3 p1;\nvarying vec3 p2;\nvarying float r;\n\nvoid main() {\n\n vColor = outlineColor;\n float rad = radius+sign(radius)*outlineWidth;\n r = abs(rad);\n\n vec4 to = modelViewMatrix*vec4(normal, 1.0); //normal is other point of cylinder\n vec4 pt = modelViewMatrix*vec4(position, 1.0);\n//pushback\n float scale = 1.0;\n if(projectionMatrix[3][3] != 0.0) { //orthographic\n to.z -= outlinePushback;\n pt.z -= outlinePushback;\n } else { //perspective\n vec4 midbefore = pt;\n if(length(to.xyz) < length(pt)) {\n midbefore = to;\n }\n vec4 midafter = midbefore;\n midafter.xyz += normalize(midbefore.xyz)*outlinePushback;\n\n to.xyz += normalize(to.xyz)*outlinePushback;\n pt.xyz += normalize(pt.xyz)*outlinePushback;\n\n //figure out a scaling factor for radius to account for perspective setback\n vec4 midbeforer = vec4(midbefore.x+rad,midbefore.y, midbefore.z, midbefore.w);\n vec4 midafterr = vec4(midafter.x+rad,midafter.y, midafter.z, midafter.w);\n\n vec4 mb = projectionMatrix*midbefore;\n vec4 mbr = projectionMatrix*midbeforer;\n vec4 ma = projectionMatrix*midafter;\n vec4 mar = projectionMatrix*midafterr;\n mb /= mb.w;\n mbr /= mbr.w;\n ma /= ma.w;\n mar /= mar.w;\n scale = abs((mbr.x-mb.x)/(mar.x-ma.x));\n rad *= scale;\n r = abs(rad);\n }\n vec4 mvPosition = pt;\n p1 = pt.xyz; p2 = to.xyz;\n vec3 norm = to.xyz-pt.xyz;\n float mult = 1.1; //slop to account for perspective of sphere\n if(length(p1) > length(p2)) { //billboard at level of closest point\n mvPosition = to;\n }\n\n vec3 n = normalize(mvPosition.xyz);\n//intersect with the plane defined by the camera looking at the billboard point\n if(color.z >= 0.0) { //p1\n vec3 pnorm = normalize(p1);\n float t = dot(mvPosition.xyz-p1,n)/dot(pnorm,n);\n mvPosition.xyz = p1+t*pnorm;\n } else {\n vec3 pnorm = normalize(p2);\n float t = dot(mvPosition.xyz-p2,n)/dot(pnorm,n);\n mvPosition.xyz = p2+t*pnorm;\n mult *= -1.0;\n }\n\n if(outlineMaxPixels > 0.0) {\n vec4 cpos = mvPosition;\n vec4 unadjusted = projectionMatrix*vec4(cpos.x+abs(scale*radius), cpos.y,cpos.z,cpos.w); \n vec4 ccoord = projectionMatrix*cpos;\n vec4 adjust = projectionMatrix*vec4(cpos.x+r,cpos.y,cpos.z,cpos.w); \n unadjusted /= unadjusted.w;\n adjust /= adjust.w;\n unadjusted.xyz -= ccoord.xyz/ccoord.w;\n adjust.xyz -= ccoord.xyz/ccoord.w;\n float diff = abs(adjust.x-unadjusted.x);\n diff *= vWidth; //this should now be in pixels\n if(diff > outlineMaxPixels) {\n float fixlen = abs(unadjusted.x) + outlineMaxPixels/vWidth; \n vec4 pcoord = ccoord;\n pcoord.x += fixlen*pcoord.w;\n vec4 altc = projinv*pcoord;\n r= abs(altc.x-cpos.x);\n }\n }\n\n vec3 cr = normalize(cross(mvPosition.xyz,norm))*rad;\n vec3 doublecr = normalize(cross(mvPosition.xyz,cr))*rad;\n mvPosition.xy += mult*(cr + doublecr).xy;\n cposition = mvPosition.xyz;\n gl_Position = projectionMatrix * mvPosition;\n vLight = vec3(1.0,1.0,1.0);\n}\n\n",uniforms:{opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},outlineColor:{type:"c",value:new b.Color(0,0,0)},outlineWidth:{type:"f",value:.1},outlinePushback:{type:"f",value:1},outlineMaxPixels:{type:"f",value:0},projinv:{type:"mat4",value:[]}}},ce={opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},data:{type:"i",value:3},colormap:{type:"i",value:4},depthmap:{type:"i",value:5},step:{type:"f",value:1},maxdepth:{type:"f",value:100},subsamples:{type:"f",value:5},textmat:{type:"mat4",value:[]},projinv:{type:"mat4",value:[]},transfermin:{type:"f",value:-.2},transfermax:{type:"f",value:.2}},de={fragmentShader:"\nuniform highp sampler3D data;\nuniform highp sampler2D colormap;\nuniform highp sampler2D depthmap;\n\n\nuniform mat4 textmat;\nuniform mat4 projinv;\nuniform mat4 projectionMatrix;\n\nuniform float step;\nuniform float subsamples;\nuniform float maxdepth;\nuniform float transfermin;\nuniform float transfermax;\nin vec4 mvPosition;\nout vec4 color;\nvoid main(void) {\n\n vec4 pos = mvPosition;\n bool seengood = false;\n float i = 0.0;\n color = vec4(1,1,1,0);\n float increment = 1.0/subsamples;\n float maxsteps = (maxdepth*subsamples/step);\n//there's probably a better way to do this..\n//calculate farthest possible point in model coordinates\n vec4 maxpos = vec4(pos.x,pos.y,pos.z-maxdepth,1.0);\n// convert to projection\n maxpos = projectionMatrix*maxpos;\n vec4 startp = projectionMatrix*pos;\n// homogonize\n maxpos /= maxpos.w;\n startp /= startp.w;\n//take x,y from start and z from max\n maxpos = vec4(startp.x,startp.y,maxpos.z,1.0);\n//convert back to model space\n maxpos = projinv*maxpos;\n maxpos /= maxpos.w;\n float incr = step/subsamples;\n//get depth from depthmap\n//startp is apparently [-1,1]\n vec2 tpos = startp.xy/2.0+0.5;\n float depth = texture(depthmap, tpos).r;\n//compute vector between start and end\n vec4 direction = maxpos-pos;\n for( i = 0.0; i <= maxsteps; i++) {\n vec4 pt = (pos+(i/maxsteps)*direction);\n vec4 ppt = projectionMatrix*pt;\n float ptdepth = ppt.z/ppt.w;\n ptdepth = ((gl_DepthRange.diff * ptdepth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;\n if(ptdepth > depth) break;\n pt = textmat*pt;\n// pt /= pt.w;\n if(pt.x >= -0.01 && pt.y >= -0.01 && pt.z >= -0.01 && pt.x <= 1.01 && pt.y <= 1.01 && pt.z <= 1.01) {\n seengood = true;\n } else if(seengood) {\n break;\n }\n if( pt.x < -0.01 || pt.x > 1.01 || pt.y < -0.01 || pt.y > 1.01 || pt.z < -0.01 || pt.z > 1.01 ){\n color.a = 0.0;\n continue;\n }\n else {\n float val = texture(data, pt.zyx).r;\n if(isinf(val)) continue; //masked out\n float cval = (val-transfermin)/(transfermax-transfermin); //scale to texture 0-1 range\n vec4 val_color = texture(colormap, vec2(cval,0.5));\n color.rgb = color.rgb*color.a + (1.0-color.a)*val_color.a*val_color.rgb;\n color.a += (1.0 - color.a) * val_color.a; \n if(color.a > 0.0) color.rgb /= color.a;\n// color = vec4(pt.x, pt.y, pt.z, 1.0);\n }\n// color = vec4(pt.x, pt.y, pt.z, 0.0)\n }\n}\n\n ".replace("#define GLSLIFY 1",""),vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\n\nin vec3 position;\nout vec4 mvPosition;\nvoid main() {\n\n mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix*mvPosition;\n}\n".replace("#define GLSLIFY 1",""),uniforms:ce},ue={basic:V,blur:{fragmentShader:"const float INV_TOTAL_SAMPLES_FACTOR = 1.0 / 9.0;\nuniform highp sampler2D inTex;\nvarying highp vec2 vTexCoords;\n \nvoid main() {\n \n vec2 texelSize = 1.0 / vec2(textureSize(inTex,0));\n float blurred_visibility_factor = 0.0f;\n for (int t = -1; t <= 1; ++t) {\n for (int s = -1; s <= 1; ++s) {\n vec2 offset = vec2(float(s), float(t)) * texelSize;\n blurred_visibility_factor += texture2D(inTex, vTexCoords + offset).r;\n }\n }\n \n gl_FragDepthEXT = blurred_visibility_factor * INV_TOTAL_SAMPLES_FACTOR;\n \n}",vertexShader:"attribute vec2 vertexPosition;\nvarying highp vec2 vTexCoords;\nconst vec2 scale = vec2(0.5, 0.5);\n\nvoid main() {\n vTexCoords = vertexPosition * scale + scale; // scale vertex attribute to [0,1] range\n gl_Position = vec4(vertexPosition, 0.0, 1.0);\n}\n ",uniforms:{}},instanced:H,lambert:q,lambertdouble:Z,outline:K,screen:Q,screenaa:$,ssao:{fragmentShader:"uniform sampler2D depthmap;\nvarying highp vec2 vTexCoords;\nuniform float vWidth;\nuniform float vHeight;\nuniform float total_strength;\nuniform float radius;\nuniform mat4 projinv;\nuniform mat4 projectionMatrix;\n\n//code for pseudorandom vector from chatgpt\nfloat hash(vec3 p) {\n p = fract(p * vec3(0.1031, 0.1030, 0.0973));\n p += dot(p, p.yzx + 33.33);\n return fract((p.x + p.y) * p.z);\n}\n\n// Generate a pseudorandom vec3 from a seed vec3\nvec3 pseudorandomVec3(vec3 seed) {\n vec3 randomVec;\n randomVec.x = hash(seed);\n randomVec.y = hash(seed + vec3(1.0, 0.0, 17.1));\n randomVec.z = hash(seed + vec3(0.0, 13.23, 0.0));\n return randomVec;\n}\n\nvoid main(void)\n{ \n const float base = 0.2;\n const float area = 0.75;\n const int cycles = 1;\n\n const int samples = 64;\n vec3 sample_sphere[64] = vec3[](\n vec3(0.091258,-0.510164,0.000000),\n vec3(-0.204347,-0.872967,0.187199),\n vec3(0.009690,-0.263696,-0.110414),\n vec3(0.175208,-0.563987,0.228527),\n vec3(-0.001824,-0.003113,-0.000323),\n vec3(0.411134,-0.719869,-0.261530),\n vec3(-0.074272,-0.377368,0.276290),\n vec3(-0.147773,-0.381587,-0.284529),\n vec3(0.173317,-0.199635,0.063295),\n vec3(-0.186452,-0.199460,0.076965),\n vec3(0.143985,-0.308160,-0.307687),\n vec3(0.053194,-0.148286,0.169589),\n vec3(-0.547656,-0.486476,-0.317378),\n vec3(0.020804,-0.015092,-0.004574),\n vec3(-0.038006,-0.043165,0.054059),\n vec3(-0.094795,-0.443908,-0.731525),\n vec3(0.547552,-0.396466,0.461477),\n vec3(-0.176886,-0.089989,0.007315),\n vec3(0.074401,-0.048840,-0.074039),\n vec3(-0.008240,-0.075697,0.178197),\n vec3(-0.307880,-0.185053,-0.368943),\n vec3(0.309520,-0.108483,0.041646),\n vec3(-0.773478,-0.292946,0.538166),\n vec3(0.184487,-0.231594,-0.820065),\n vec3(0.207318,-0.100531,0.361797),\n vec3(-0.173306,-0.037737,-0.055289),\n vec3(0.548102,-0.105342,-0.253237),\n vec3(-0.119342,-0.043907,0.285162),\n vec3(-0.270247,-0.087861,-0.751357),\n vec3(0.449312,-0.039777,0.236146),\n vec3(-0.743773,-0.036095,0.196056),\n vec3(0.148819,-0.004300,-0.231448),\n vec3(0.008773,0.000809,0.051047),\n vec3(-0.461467,0.027390,-0.357386),\n vec3(0.169626,0.013338,-0.014053),\n vec3(-0.043786,0.007095,0.047331),\n vec3(0.004821,0.140371,-0.988260),\n vec3(0.092402,0.023994,0.101860),\n vec3(-0.295335,0.061530,-0.027372),\n vec3(0.024903,0.007537,-0.018901),\n vec3(-0.081463,0.125402,0.447794),\n vec3(-0.397119,0.231805,-0.631062),\n vec3(0.163853,0.059014,0.044905),\n vec3(-0.495220,0.214357,0.254139),\n vec3(0.306123,0.373687,-0.825715),\n vec3(0.021665,0.026737,0.053220),\n vec3(-0.208231,0.117129,-0.098685),\n vec3(0.139749,0.080968,-0.043086),\n vec3(-0.153599,0.182814,0.262090),\n vec3(-0.159673,0.496777,-0.743568),\n vec3(0.134797,0.117152,0.095753),\n vec3(-0.155626,0.120533,0.019395),\n vec3(0.042311,0.054462,-0.049709),\n vec3(0.001257,0.031288,0.034468),\n vec3(-0.002271,0.003199,-0.002304),\n vec3(0.662104,0.717307,0.033854),\n vec3(-0.373100,0.576021,0.308274),\n vec3(0.024233,0.231316,-0.173688),\n vec3(0.161311,0.420217,0.234273),\n vec3(-0.045248,0.078031,-0.010411),\n vec3(0.167453,0.376942,-0.094872),\n vec3(-0.056194,0.433247,0.173218),\n vec3(-0.016224,0.123149,-0.035569),\n vec3(0.067127,0.407641,0.028479)\n );\n\n float depth = texture2D(depthmap, vTexCoords).r;\n if(depth == 1.0) {\n discard;\n }\n\n vec4 screen_position = vec4(vTexCoords, depth,1.0);\n vec4 pos = projinv*screen_position;\n pos /= pos.w;\n vec3 position = pos.xyz;\n\n //approximate the normal from the depth map; I find this simpler\n //than trying to recompute the exact normal within every possible object shader\n\n //pixel offset positions in screen space\n ivec2 dim = textureSize(depthmap,0);\n vec2 offset1 = vec2(0.0,1.0/float(dim.y));\n vec2 offset2 = vec2(1.0/float(dim.x),0.0);\n float depth1 = texture2D(depthmap, vTexCoords + offset1).r;\n float depth2 = texture2D(depthmap, vTexCoords + offset2).r;\n \n vec3 p1 = vec3(screen_position.xy+offset1, depth1 - depth);\n vec3 p2 = vec3(screen_position.xy+offset2, depth2 - depth);\n\n //convert to model space\n vec4 pos1 = projinv*vec4(p1,1);\n pos1 /= pos1.w;\n vec4 pos2 = projinv*vec4(p2,1);\n pos2 /= pos2.w;\n\n vec3 normal = normalize(cross(pos1.xyz-position, pos2.xyz-position)); //model normal, important we normalize in model space\n\n //pseudo random number\n\n float occlusion = 0.0;\n for(int c = 0; c < cycles; c++) {\n vec3 random = normalize(pseudorandomVec3(position+float(c)));\n for(int i=0; i < samples; i++) {\n\n vec3 ray = radius * reflect(sample_sphere[i],random);\n vec3 hemi_ray = position + sign(dot(ray,normal)) * ray; //model space\n vec4 hemi_screen = projectionMatrix*vec4(hemi_ray,1.0);\n hemi_screen /= hemi_screen.w;\n \n float occ_depth = texture2D(depthmap, clamp(hemi_screen.xy,0.0,1.0)).r;\n float difference = hemi_screen.z - occ_depth;\n \n occlusion += step(0.0, difference) * (1.0-smoothstep(0.0, area, difference));\n }\n }\n float ao = 1.0 - total_strength * occlusion * (1.0 / float(cycles*samples));\n gl_FragDepthEXT = clamp(ao+base,0.0,1.0);\n\n}",vertexShader:"attribute vec2 vertexPosition;\nvarying highp vec2 vTexCoords;\nconst vec2 scale = vec2(0.5, 0.5);\n\nvoid main() {\n vTexCoords = vertexPosition * scale + scale; // scale vertex attribute to [0,1] range\n gl_Position = vec4(vertexPosition, 0.0, 1.0);\n}\n ",uniforms:{total_strength:{type:"f",value:1},radius:{type:"f",value:5},projinv:{type:"mat4",value:[]}}},ringimposter:ee,sphereimposter:ie,sphereimposteroutline:ne,sprite:se,stickimposter:le,stickimposteroutline:he,volumetric:de};function fe(e){let t={};for(const r in e){t[r]={},t[r].type=e[r].type;var i=e[r].value;i instanceof b.Color?t[r].value=i.clone():"number"==typeof i?t[r].value=i:i instanceof Array?t[r].value=[]:console.error("Error copying shader uniforms from ShaderLib: unknown type for uniform")}return t}const pe={clone:fe};class Camera extends Object3D{constructor(e=50,t=1,i=.1,r=2e3,n=!1){super(),this.projectionMatrix=new l.Matrix4,this.projectionMatrixInverse=new l.Matrix4,this.matrixWorldInverse=new l.Matrix4,this.fov=e,this.aspect=t,this.near=i,this.far=r;var s=this.position.z;this.right=s*Math.tan(Math.PI/180*e),this.left=-this.right,this.top=this.right/this.aspect,this.bottom=-this.top,this.ortho=!!n,this.updateProjectionMatrix()}lookAt(e){this.matrix.lookAt(this.position,e,this.up),this.rotationAutoUpdate&&(!1===this.useQuaternion&&this.rotation instanceof l.Vector3?this.rotation.setEulerFromRotationMatrix(this.matrix,this.eulerOrder):console.error("Unimplemented math operation."))}updateProjectionMatrix(){this.ortho?this.projectionMatrix.makeOrthographic(this.left,this.right,this.top,this.bottom,this.near,this.far):this.projectionMatrix.makePerspective(this.fov,this.aspect,this.near,this.far),this.projectionMatrixInverse.getInverse(this.projectionMatrix)}}class Fog{constructor(e,t=1,i=1e3){this.name="",this.color=new b.Color(e),this.near=t,this.far=i}clone(){return new Fog(this.color.getHex(),this.near,this.far)}}class SpritePlugin{constructor(){this.sprite={vertices:null,faces:null,vertexBuffer:null,elementBuffer:null,program:null,attributes:{},uniforms:null}}init(e){this.gl=e.context,this.renderer=e,this.precision=e.getPrecision(),this.sprite.vertices=new Float32Array(16),this.sprite.faces=new Uint16Array(6);var t=0;this.sprite.vertices[t++]=-1,this.sprite.vertices[t++]=-1,this.sprite.vertices[t++]=0,this.sprite.vertices[t++]=0,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=-1,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=0,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=-1,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=0,this.sprite.vertices[t++]=1,t=0,this.sprite.faces[t++]=0,this.sprite.faces[t++]=1,this.sprite.faces[t++]=2,this.sprite.faces[t++]=0,this.sprite.faces[t++]=2,this.sprite.faces[t++]=3,this.sprite.vertexBuffer=this.gl.createBuffer(),this.sprite.elementBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.sprite.vertexBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.sprite.vertices,this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.sprite.elementBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,this.sprite.faces,this.gl.STATIC_DRAW),this.sprite.program=this.createProgram(ue.sprite,this.precision||1),this.sprite.attributes={};const i={};this.sprite.attributes.position=this.gl.getAttribLocation(this.sprite.program,"position"),this.sprite.attributes.uv=this.gl.getAttribLocation(this.sprite.program,"uv"),i.uvOffset=this.gl.getUniformLocation(this.sprite.program,"uvOffset"),i.uvScale=this.gl.getUniformLocation(this.sprite.program,"uvScale"),i.rotation=this.gl.getUniformLocation(this.sprite.program,"rotation"),i.scale=this.gl.getUniformLocation(this.sprite.program,"scale"),i.alignment=this.gl.getUniformLocation(this.sprite.program,"alignment"),i.color=this.gl.getUniformLocation(this.sprite.program,"color"),i.map=this.gl.getUniformLocation(this.sprite.program,"map"),i.opacity=this.gl.getUniformLocation(this.sprite.program,"opacity"),i.useScreenCoordinates=this.gl.getUniformLocation(this.sprite.program,"useScreenCoordinates"),i.screenPosition=this.gl.getUniformLocation(this.sprite.program,"screenPosition"),i.modelViewMatrix=this.gl.getUniformLocation(this.sprite.program,"modelViewMatrix"),i.projectionMatrix=this.gl.getUniformLocation(this.sprite.program,"projectionMatrix"),i.fogNear=this.gl.getUniformLocation(this.sprite.program,"fogNear"),i.fogFar=this.gl.getUniformLocation(this.sprite.program,"fogFar"),i.fogColor=this.gl.getUniformLocation(this.sprite.program,"fogColor"),i.alphaTest=this.gl.getUniformLocation(this.sprite.program,"alphaTest"),this.sprite.uniforms=i}render(e,t,i,r,n){var s,a,o,l,h,c,d,u,f,p;if(!this.gl)throw new Error("WebGLRenderer not initialized");let m=[];null===(s=null==e?void 0:e.__webglSprites)||void 0===s||s.forEach(e=>{(n&&0==e.material.depthTest||!n&&e.material.depthTest)&&m.push(e)});let g=m.length;if(!g)return;const v=this.sprite.attributes,_=this.sprite.uniforms;if(!_)throw new Error("Uniforms not defined");var y=.5*i,b=.5*r;this.gl.useProgram(this.sprite.program),this.gl.enableVertexAttribArray(v.position),this.gl.enableVertexAttribArray(v.uv),this.gl.disable(this.gl.CULL_FACE),this.gl.enable(this.gl.BLEND),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.sprite.vertexBuffer),this.gl.vertexAttribPointer(v.position,2,this.gl.FLOAT,!1,16,0),this.gl.vertexAttribPointer(v.uv,2,this.gl.FLOAT,!1,16,8),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.sprite.elementBuffer),this.gl.uniformMatrix4fv(_.projectionMatrix,!1,t.projectionMatrix.elements),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.uniform1i(_.map,0);var x,w=e.fog;let A,C,S;w?(this.gl.uniform3f(_.fogColor,w.color.r,w.color.g,w.color.b),this.gl.uniform1f(_.fogNear,w.near),this.gl.uniform1f(_.fogFar,w.far)):(this.gl.uniform1f(_.fogNear,0),this.gl.uniform1f(_.fogFar,0));let z=[];for(x=0;x0}disableAmbientOcclusion(){this._AOEnabled=!1}setViewport(){if(this._offscreen&&(this._offscreen.width=this._canvas.width,this._offscreen.height=this._canvas.height),null!=this.rows&&null!=this.cols&&null!=this.row&&null!=this.col&&!this.isLost()){var e=this._gl.drawingBufferWidth/this.cols,t=this._gl.drawingBufferHeight/this.rows;this._viewportWidth=e,this._viewportHeight=t,this._gl.enable(this._gl.SCISSOR_TEST),this._gl.scissor(e*this.col,t*this.row,e,t),this._gl.viewport(e*this.col,t*this.row,e,t)}}setSize(e,t){this.devicePixelRatio=void 0!==window.devicePixelRatio?window.devicePixelRatio:1,this._upscale&&this.devicePixelRatio<2&&(this.devicePixelRatio=2),this._canvas.width=e*this.devicePixelRatio,this._canvas.height=t*this.devicePixelRatio,this._canvas.style.width=e+"px",this._canvas.style.height=t+"px",null!=this.rows&&null!=this.cols&&null!=this.row&&null!=this.col?(this.isLost()||(this._viewportWidth=this._gl.drawingBufferWidth/this.cols,this._viewportHeight=this._gl.drawingBufferHeight/this.rows),this.setViewport()):(this._viewportWidth=this._canvas.width,this._viewportHeight=this._canvas.height,this.isLost()||this._gl.viewport(0,0,this._gl.drawingBufferWidth,this._gl.drawingBufferHeight)),this.initFrameBuffer()}clear(e,t,i){var r=0;(void 0===e||e)&&(r|=this._gl.COLOR_BUFFER_BIT),(void 0===t||t)&&(r|=this._gl.DEPTH_BUFFER_BIT),(void 0===i||i)&&(r|=this._gl.STENCIL_BUFFER_BIT),this._gl.clear(r)}setMaterialFaces(e,t){var i=e.side===a,r=e.side===s;e.imposter||(r=t?!r:r),this._oldDoubleSided!==i&&(i?this._gl.disable(this._gl.CULL_FACE):this._gl.enable(this._gl.CULL_FACE),this._oldDoubleSided=i),this._oldFlipSided!==r&&(r?this._gl.frontFace(this._gl.CW):this._gl.frontFace(this._gl.CCW),this._oldFlipSided=r),this._gl.cullFace(this._gl.BACK)}setDepthTest(e){this._oldDepthTest!==e&&(e?this._gl.enable(this._gl.DEPTH_TEST):this._gl.disable(this._gl.DEPTH_TEST),this._oldDepthTest=e)}setDepthWrite(e){this._oldDepthWrite!==e&&(this._gl.depthMask(e),this._oldDepthWrite=e)}setBlending(e){e?(this._gl.enable(this._gl.BLEND),this._gl.blendEquationSeparate(this._gl.FUNC_ADD,this._gl.FUNC_ADD),this._gl.blendFuncSeparate(this._gl.SRC_ALPHA,this._gl.ONE_MINUS_SRC_ALPHA,this._gl.ONE,this._gl.ONE_MINUS_SRC_ALPHA)):this._gl.disable(this._gl.BLEND)}initMaterial(e,t,i,r){var n,s;if(e.addEventListener("dispose",this.onMaterialDispose.bind(this)),s=e.shaderID){var a=ue[s];e.vertexShader=a.vertexShader,e.fragmentShader=a.fragmentShader,e.uniforms=pe.clone(a.uniforms),e.shaded&&e.makeShaded(this.SHADE_TEXTURE)}n={wireframe:e.wireframe,fragdepth:e.imposter,volumetric:e.volumetric,shaded:e.shaded},e.program=this.buildProgram(e.fragmentShader,e.vertexShader,e.uniforms,n)}renderBuffer(e,t,i,r,n,s){var a,o;if(r.visible&&(a=this.setProgram(e,t,i,r,s,this))){o=a.attributes;var l,h,c=!1,d=r.wireframe?1:0,u=16777215*n.id+2*a.id+d;if(u!==this._currentGeometryGroupHash&&(this._currentGeometryGroupHash=u,c=!0),c&&(this.disableAttributes(),o.position>=0&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglVertexBuffer),this.enableAttribute(o.position),this._gl.vertexAttribPointer(o.position,3,this._gl.FLOAT,!1,0,0)),o.color>=0&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglColorBuffer),this.enableAttribute(o.color),this._gl.vertexAttribPointer(o.color,3,this._gl.FLOAT,!1,0,0)),o.normal>=0&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglNormalBuffer),this.enableAttribute(o.normal),this._gl.vertexAttribPointer(o.normal,3,this._gl.FLOAT,!1,0,0)),o.offset>=0&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglOffsetBuffer),this.enableAttribute(o.offset),this._gl.vertexAttribPointer(o.offset,3,this._gl.FLOAT,!1,0,0)),o.radius>=0&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglRadiusBuffer),this.enableAttribute(o.radius),this._gl.vertexAttribPointer(o.radius,1,this._gl.FLOAT,!1,0,0))),s instanceof Mesh){if("instanced"===r.shaderID){var f=r.sphere.geometryGroups[0];c&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglVertexBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,f.vertexArray,this._gl.STATIC_DRAW),this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglNormalBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,f.normalArray,this._gl.STATIC_DRAW),this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER,n.__webglFaceBuffer),this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER,f.faceArray,this._gl.STATIC_DRAW)),l=f.faceidx,this._extInstanced.vertexAttribDivisorANGLE(o.offset,1),this._extInstanced.vertexAttribDivisorANGLE(o.radius,1),this._extInstanced.vertexAttribDivisorANGLE(o.color,1),this._extInstanced.drawElementsInstancedANGLE(this._gl.TRIANGLES,l,this._gl.UNSIGNED_SHORT,0,n.radiusArray.length),this._extInstanced.vertexAttribDivisorANGLE(o.offset,0),this._extInstanced.vertexAttribDivisorANGLE(o.radius,0),this._extInstanced.vertexAttribDivisorANGLE(o.color,0)}else r.wireframe?(h=n.lineidx,this.setLineWidth(r.wireframeLinewidth),c&&this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER,n.__webglLineBuffer),this._gl.drawElements(this._gl.LINES,h,this._gl.UNSIGNED_SHORT,0)):(l=n.faceidx,c&&this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER,n.__webglFaceBuffer),this._gl.drawElements(this._gl.TRIANGLES,l,this._gl.UNSIGNED_SHORT,0));this.info.render.calls++,this.info.render.vertices+=l,this.info.render.faces+=l/3}else s instanceof Line&&(h=n.vertices,this.setLineWidth(r.linewidth),this._gl.drawArrays(this._gl.LINES,0,h),this.info.render.calls++)}}clearShading(){this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.DEPTH_ATTACHMENT,this._gl.TEXTURE_2D,this._shadingTexture,0),this.clear(!1,!0,!1),this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.DEPTH_ATTACHMENT,this._gl.TEXTURE_2D,this._depthTexture,0)}setShading(e,t,i){let r=e.__lights,n=e.fog,s=[];for(let t=0,r=e.__webglObjects.length;t=0;--i)e[i].object===t&&e.splice(i,1)}removeInstancesDirect(e,t){for(var i=e.length-1;i>=0;--i)e[i]===t&&e.splice(i,1)}unrollBufferMaterial(e){var t=e.object.material;if(t.volumetric)e.opaque=null,e.transparent=null,e.volumetric=t;else if(t.transparent){if(e.opaque=null,e.volumetric=null,e.transparent=t,!t.wireframe){let i=t.clone();i.opacity=0,e.transparentDepth=i}}else{if(e.opaque=t,e.transparent=null,e.volumetric=null,!t.wireframe){let i=t.clone();i.opacity=0,e.opaqueDepth=i}t.hasAO&&(e.hasAO=!0),(this._AOEnabled||e.hasAO)&&(e.opaqueShaded=t.clone(),e.opaqueShaded.shaded=!0)}}setBuffers(e,t){var i=e.vertexArray,r=e.colorArray;if(void 0!==e.__webglOffsetBuffer?(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,e.__webglOffsetBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,i,t)):(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,e.__webglVertexBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,i,t)),this._gl.bindBuffer(this._gl.ARRAY_BUFFER,e.__webglColorBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,r,t),e.normalArray&&void 0!==e.__webglNormalBuffer){var n=e.normalArray;this._gl.bindBuffer(this._gl.ARRAY_BUFFER,e.__webglNormalBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,n,t)}if(e.radiusArray&&void 0!==e.__webglRadiusBuffer&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,e.__webglRadiusBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,e.radiusArray,t)),e.faceArray&&void 0!==e.__webglFaceBuffer){var s=e.faceArray;this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER,s,t)}if(e.lineArray&&void 0!==e.__webglLineBuffer){var a=e.lineArray;this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER,a,t)}}createMeshBuffers(e){e.radiusArray&&(e.__webglRadiusBuffer=this._gl.createBuffer()),e.useOffset&&(e.__webglOffsetBuffer=this._gl.createBuffer()),e.__webglVertexBuffer=this._gl.createBuffer(),e.__webglNormalBuffer=this._gl.createBuffer(),e.__webglColorBuffer=this._gl.createBuffer(),e.__webglFaceBuffer=this._gl.createBuffer(),e.__webglLineBuffer=this._gl.createBuffer(),this.info.memory.geometries++}createLineBuffers(e){e.__webglVertexBuffer=this._gl.createBuffer(),e.__webglColorBuffer=this._gl.createBuffer(),this.info.memory.geometries++}addBuffer(e,t,i){e.push({buffer:t,object:i,opaque:null,transparent:null})}setupMatrices(e,t){e._modelViewMatrix.multiplyMatrices(t.matrixWorldInverse,e.matrixWorld),e._normalMatrix.getInverse(e._modelViewMatrix),e._normalMatrix.transpose()}filterFallback(e){return this._gl.LINEAR}setTextureParameters(e,t){e==this._gl.TEXTURE_2D?(this._gl.texParameteri(e,this._gl.TEXTURE_WRAP_S,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(e,this._gl.TEXTURE_WRAP_T,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(e,this._gl.TEXTURE_MAG_FILTER,this.filterFallback(t.magFilter)),this._gl.texParameteri(e,this._gl.TEXTURE_MIN_FILTER,this.filterFallback(t.minFilter))):(this._gl.texParameteri(e,this._gl.TEXTURE_WRAP_S,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(e,this._gl.TEXTURE_WRAP_T,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(e,this._gl.TEXTURE_WRAP_R,this._gl.CLAMP_TO_EDGE),this._extColorBufferFloat&&this._extFloatLinear?(this._gl.texParameteri(e,this._gl.TEXTURE_MAG_FILTER,this._gl.LINEAR),this._gl.texParameteri(e,this._gl.TEXTURE_MIN_FILTER,this._gl.LINEAR)):(this._gl.texParameteri(e,this._gl.TEXTURE_MAG_FILTER,this._gl.NEAREST),this._gl.texParameteri(e,this._gl.TEXTURE_MIN_FILTER,this._gl.NEAREST)))}paramToGL(e){return e===p?this._gl.UNSIGNED_BYTE:e===g?this._gl.RGBA:e===u?this._gl.NEAREST:0}setupLights(e,t){var i,r,n,s,a,o=this._lights,l=o.directional.colors,h=o.directional.positions,c=0,d=0;for(i=0,r=t.length;i0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0;var i=r.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(0!==i)throw new Error(a[i]);if(t.header&&r.deflateSetHeader(this.strm,t.header),t.dictionary){var c;if(c="string"==typeof t.dictionary?s.string2buf(t.dictionary):"[object ArrayBuffer]"===l.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,0!==(i=r.deflateSetDictionary(this.strm,c)))throw new Error(a[i]);this._dict_set=!0}}function c(e,t){var i=new h(t);if(i.push(e,!0),i.err)throw i.msg||a[i.err];return i.result}h.prototype.push=function(e,t){var i,a,o=this.strm,h=this.options.chunkSize;if(this.ended)return!1;a=t===~~t?t:!0===t?4:0,"string"==typeof e?o.input=s.string2buf(e):"[object ArrayBuffer]"===l.call(e)?o.input=new Uint8Array(e):o.input=e,o.next_in=0,o.avail_in=o.input.length;do{if(0===o.avail_out&&(o.output=new n.Buf8(h),o.next_out=0,o.avail_out=h),1!==(i=r.deflate(o,a))&&0!==i)return this.onEnd(i),this.ended=!0,!1;0!==o.avail_out&&(0!==o.avail_in||4!==a&&2!==a)||("string"===this.options.to?this.onData(s.buf2binstring(n.shrinkBuf(o.output,o.next_out))):this.onData(n.shrinkBuf(o.output,o.next_out)))}while((o.avail_in>0||0===o.avail_out)&&1!==i);return 4===a?(i=r.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,0===i):2!==a||(this.onEnd(0),o.avail_out=0,!0)},h.prototype.onData=function(e){this.chunks.push(e)},h.prototype.onEnd=function(e){0===e&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Deflate=h,t.deflate=c,t.deflateRaw=function(e,t){return(t=t||{}).raw=!0,c(e,t)},t.gzip=function(e,t){return(t=t||{}).gzip=!0,c(e,t)}},75(e,t,i){function r(e){let t=e.length;for(;--t>=0;)e[t]=0}i.r(t),i.d(t,{Deflate:()=>yi,Inflate:()=>Ai,constants:()=>Mi,default:()=>Ti,deflate:()=>bi,deflateRaw:()=>xi,gzip:()=>wi,inflate:()=>Ci,inflateRaw:()=>Si,ungzip:()=>zi});const n=256,s=286,a=30,o=15,l=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),h=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),c=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),d=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),u=new Array(576);r(u);const f=new Array(60);r(f);const p=new Array(512);r(p);const m=new Array(256);r(m);const g=new Array(29);r(g);const v=new Array(a);function _(e,t,i,r,n){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=r,this.max_length=n,this.has_stree=e&&e.length}let y,b,x;function w(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}r(v);const A=e=>e<256?p[e]:p[256+(e>>>7)],C=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},S=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<{S(e,i[2*t],i[2*t+1])},M=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},T=(e,t,i)=>{const r=new Array(16);let n,s,a=0;for(n=1;n<=o;n++)a=a+i[n-1]<<1,r[n]=a;for(s=0;s<=t;s++){let t=e[2*s+1];0!==t&&(e[2*s]=M(r[t]++,t))}},E=e=>{let t;for(t=0;t{e.bi_valid>8?C(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},F=(e,t,i,r)=>{const n=2*t,s=2*i;return e[n]{const r=e.heap[i];let n=i<<1;for(;n<=e.heap_len&&(n{let r,s,a,o,c=0;if(0!==e.sym_next)do{r=255&e.pending_buf[e.sym_buf+c++],r+=(255&e.pending_buf[e.sym_buf+c++])<<8,s=e.pending_buf[e.sym_buf+c++],0===r?z(e,s,t):(a=m[s],z(e,a+n+1,t),o=l[a],0!==o&&(s-=g[a],S(e,s,o)),r--,a=A(r),z(e,a,i),o=h[a],0!==o&&(r-=v[a],S(e,r,o)))}while(c{const i=t.dyn_tree,r=t.stat_desc.static_tree,n=t.stat_desc.has_stree,s=t.stat_desc.elems;let a,l,h,c=-1;for(e.heap_len=0,e.heap_max=573,a=0;a>1;a>=1;a--)I(e,i,a);h=s;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],I(e,i,1),l=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=l,i[2*h]=i[2*a]+i[2*l],e.depth[h]=(e.depth[a]>=e.depth[l]?e.depth[a]:e.depth[l])+1,i[2*a+1]=i[2*l+1]=h,e.heap[1]=h++,I(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,r=t.max_code,n=t.stat_desc.static_tree,s=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,l=t.stat_desc.extra_base,h=t.stat_desc.max_length;let c,d,u,f,p,m,g=0;for(f=0;f<=o;f++)e.bl_count[f]=0;for(i[2*e.heap[e.heap_max]+1]=0,c=e.heap_max+1;c<573;c++)d=e.heap[c],f=i[2*i[2*d+1]+1]+1,f>h&&(f=h,g++),i[2*d+1]=f,d>r||(e.bl_count[f]++,p=0,d>=l&&(p=a[d-l]),m=i[2*d],e.opt_len+=m*(f+p),s&&(e.static_len+=m*(n[2*d+1]+p)));if(0!==g){do{for(f=h-1;0===e.bl_count[f];)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[h]--,g-=2}while(g>0);for(f=h;0!==f;f--)for(d=e.bl_count[f];0!==d;)u=e.heap[--c],u>r||(i[2*u+1]!==f&&(e.opt_len+=(f-i[2*u+1])*i[2*u],i[2*u+1]=f),d--)}})(e,t),T(i,c,e.bl_count)},R=(e,t,i)=>{let r,n,s=-1,a=t[1],o=0,l=7,h=4;for(0===a&&(l=138,h=3),t[2*(i+1)+1]=65535,r=0;r<=i;r++)n=a,a=t[2*(r+1)+1],++o{let r,n,s=-1,a=t[1],o=0,l=7,h=4;for(0===a&&(l=138,h=3),r=0;r<=i;r++)if(n=a,a=t[2*(r+1)+1],!(++o{S(e,0+(r?1:0),3),L(e),C(e,i),C(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var N=(e,t,i,r)=>{let s,a,o=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t{let t;for(R(e,e.dyn_ltree,e.l_desc.max_code),R(e,e.dyn_dtree,e.d_desc.max_code),O(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*d[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),s=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=s&&(s=a)):s=a=i+5,i+4<=s&&-1!==t?U(e,t,i,r):4===e.strategy||a===s?(S(e,2+(r?1:0),3),D(e,u,f)):(S(e,4+(r?1:0),3),((e,t,i,r)=>{let n;for(S(e,t-257,5),S(e,i-1,5),S(e,r-4,4),n=0;n{P||((()=>{let e,t,i,r,n;const d=new Array(16);for(i=0,r=0;r<28;r++)for(g[r]=i,e=0;e<1<>=7;r(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(m[i]+n+1)]++,e.dyn_dtree[2*A(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{S(e,2,3),z(e,256,u),(e=>{16===e.bi_valid?(C(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}},G=(e,t,i,r)=>{let n=65535&e,s=e>>>16&65535,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do{n=n+t[r++]|0,s=s+n|0}while(--a);n%=65521,s%=65521}return n|s<<16};const V=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var j=(e,t,i,r)=>{const n=V,s=r+i;e^=-1;for(let i=r;i>>8^n[255&(e^t[i])];return-1^e},H={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},W={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:q,_tr_stored_block:Y,_tr_flush_block:Z,_tr_tally:X,_tr_align:K}=B,{Z_NO_FLUSH:Q,Z_PARTIAL_FLUSH:$,Z_FULL_FLUSH:J,Z_FINISH:ee,Z_BLOCK:te,Z_OK:ie,Z_STREAM_END:re,Z_STREAM_ERROR:ne,Z_DATA_ERROR:se,Z_BUF_ERROR:ae,Z_DEFAULT_COMPRESSION:oe,Z_FILTERED:le,Z_HUFFMAN_ONLY:he,Z_RLE:ce,Z_FIXED:de,Z_DEFAULT_STRATEGY:ue,Z_UNKNOWN:fe,Z_DEFLATED:pe}=W,me=258,ge=262,ve=42,_e=113,ye=666,be=(e,t)=>(e.msg=H[t],t),xe=e=>2*e-(e>4?9:0),we=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Ae=e=>{let t,i,r,n=e.w_size;t=e.hash_size,r=t;do{i=e.head[--r],e.head[r]=i>=n?i-n:0}while(--t);t=n,r=t;do{i=e.prev[--r],e.prev[r]=i>=n?i-n:0}while(--t)};let Ce=(e,t,i)=>(t<{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},ze=(e,t)=>{Z(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Se(e.strm)},Me=(e,t)=>{e.pending_buf[e.pending++]=t},Te=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Ee=(e,t,i,r)=>{let n=e.avail_in;return n>r&&(n=r),0===n?0:(e.avail_in-=n,t.set(e.input.subarray(e.next_in,e.next_in+n),i),1===e.state.wrap?e.adler=G(e.adler,t,n,i):2===e.state.wrap&&(e.adler=j(e.adler,t,n,i)),e.next_in+=n,e.total_in+=n,n)},Le=(e,t)=>{let i,r,n=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match;const l=e.strstart>e.w_size-ge?e.strstart-(e.w_size-ge):0,h=e.window,c=e.w_mask,d=e.prev,u=e.strstart+me;let f=h[s+a-1],p=h[s+a];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(i=t,h[i+a]===p&&h[i+a-1]===f&&h[i]===h[s]&&h[++i]===h[s+1]){s+=2,i++;do{}while(h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&sa){if(e.match_start=t,a=r,r>=o)break;f=h[s+a-1],p=h[s+a]}}}while((t=d[t&c])>l&&0!==--n);return a<=e.lookahead?a:e.lookahead},Fe=e=>{const t=e.w_size;let i,r,n;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-ge)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Ae(e),r+=t),0===e.strm.avail_in)break;if(i=Ee(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=i,e.lookahead+e.insert>=3)for(n=e.strstart-e.insert,e.ins_h=e.window[n],e.ins_h=Ce(e,e.ins_h,e.window[n+1]);e.insert&&(e.ins_h=Ce(e,e.ins_h,e.window[n+3-1]),e.prev[n&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=n,n++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead{let i,r,n,s=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,a=0,o=e.strm.avail_in;do{if(i=65535,n=e.bi_valid+42>>3,e.strm.avail_outr+e.strm.avail_in&&(i=r+e.strm.avail_in),i>n&&(i=n),i>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,Se(e.strm),r&&(r>i&&(r=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,i-=r),i&&(Ee(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===a);return o-=e.strm.avail_in,o&&(o>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=o&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-o,e.strm.next_in),e.strstart),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.block_start=e.strstart),e.high_watern&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,n+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),n>e.strm.avail_in&&(n=e.strm.avail_in),n&&(Ee(e.strm,e.window,e.strstart,n),e.strstart+=n,e.insert+=n>e.w_size-e.insert?e.w_size-e.insert:n),e.high_water>3,n=e.pending_buf_size-n>65535?65535:e.pending_buf_size-n,s=n>e.w_size?e.w_size:n,r=e.strstart-e.block_start,(r>=s||(r||t===ee)&&t!==Q&&0===e.strm.avail_in&&r<=n)&&(i=r>n?n:r,a=t===ee&&0===e.strm.avail_in&&i===r?1:0,Y(e,e.block_start,i,a),e.block_start+=i,Se(e.strm)),a?3:1)},De=(e,t)=>{let i,r;for(;;){if(e.lookahead=3&&(e.ins_h=Ce(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-ge&&(e.match_length=Le(e,i)),e.match_length>=3)if(r=X(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=Ce(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!==--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Ce(e,e.ins_h,e.window[e.strstart+1]);else r=X(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(ze(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===ee?(ze(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ze(e,!1),0===e.strm.avail_out)?1:2},Oe=(e,t)=>{let i,r,n;for(;;){if(e.lookahead=3&&(e.ins_h=Ce(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){n=e.strstart+e.lookahead-3,r=X(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=n&&(e.ins_h=Ce(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!==--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,r&&(ze(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(r=X(e,0,e.window[e.strstart-1]),r&&ze(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=X(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===ee?(ze(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ze(e,!1),0===e.strm.avail_out)?1:2};function Re(e,t,i,r,n){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=r,this.func=n}const ke=[new Re(0,0,0,0,Ie),new Re(4,4,8,4,De),new Re(4,5,16,8,De),new Re(4,6,32,32,De),new Re(4,4,16,16,Oe),new Re(8,16,32,32,Oe),new Re(8,16,128,128,Oe),new Re(8,32,128,256,Oe),new Re(32,128,258,1024,Oe),new Re(32,258,258,4096,Oe)];function Pe(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=pe,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),we(this.dyn_ltree),we(this.dyn_dtree),we(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),we(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),we(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Ue=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==ve&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==_e&&t.status!==ye?1:0},Ne=e=>{if(Ue(e))return be(e,ne);e.total_in=e.total_out=0,e.data_type=fe;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?ve:_e,e.adler=2===t.wrap?0:1,t.last_flush=-2,q(t),ie},Be=e=>{const t=Ne(e);var i;return t===ie&&((i=e.state).window_size=2*i.w_size,we(i.head),i.max_lazy_match=ke[i.level].max_lazy,i.good_match=ke[i.level].good_length,i.nice_match=ke[i.level].nice_length,i.max_chain_length=ke[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=2,i.match_available=0,i.ins_h=0),t},Ge=(e,t,i,r,n,s)=>{if(!e)return ne;let a=1;if(t===oe&&(t=6),r<0?(a=0,r=-r):r>15&&(a=2,r-=16),n<1||n>9||i!==pe||r<8||r>15||t<0||t>9||s<0||s>de||8===r&&1!==a)return be(e,ne);8===r&&(r=9);const o=new Pe;return e.state=o,o.strm=e,o.status=ve,o.wrap=a,o.gzhead=null,o.w_bits=r,o.w_size=1<Ge(e,t,pe,15,8,ue),deflateInit2:Ge,deflateReset:Be,deflateResetKeep:Ne,deflateSetHeader:(e,t)=>Ue(e)||2!==e.state.wrap?ne:(e.state.gzhead=t,ie),deflate:(e,t)=>{if(Ue(e)||t>te||t<0)return e?be(e,ne):ne;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===ye&&t!==ee)return be(e,0===e.avail_out?ae:ne);const r=i.last_flush;if(i.last_flush=t,0!==i.pending){if(Se(e),0===e.avail_out)return i.last_flush=-1,ie}else if(0===e.avail_in&&xe(t)<=xe(r)&&t!==ee)return be(e,ae);if(i.status===ye&&0!==e.avail_in)return be(e,ae);if(i.status===ve&&0===i.wrap&&(i.status=_e),i.status===ve){let t=pe+(i.w_bits-8<<4)<<8,r=-1;if(r=i.strategy>=he||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=r<<6,0!==i.strstart&&(t|=32),t+=31-t%31,Te(i,t),0!==i.strstart&&(Te(i,e.adler>>>16),Te(i,65535&e.adler)),e.adler=1,i.status=_e,Se(e),0!==i.pending)return i.last_flush=-1,ie}if(57===i.status)if(e.adler=0,Me(i,31),Me(i,139),Me(i,8),i.gzhead)Me(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Me(i,255&i.gzhead.time),Me(i,i.gzhead.time>>8&255),Me(i,i.gzhead.time>>16&255),Me(i,i.gzhead.time>>24&255),Me(i,9===i.level?2:i.strategy>=he||i.level<2?4:0),Me(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Me(i,255&i.gzhead.extra.length),Me(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=j(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(Me(i,0),Me(i,0),Me(i,0),Me(i,0),Me(i,0),Me(i,9===i.level?2:i.strategy>=he||i.level<2?4:0),Me(i,3),i.status=_e,Se(e),0!==i.pending)return i.last_flush=-1,ie;if(69===i.status){if(i.gzhead.extra){let t=i.pending,r=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+r>i.pending_buf_size;){let n=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+n),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=j(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=n,Se(e),0!==i.pending)return i.last_flush=-1,ie;t=0,r-=n}let n=new Uint8Array(i.gzhead.extra);i.pending_buf.set(n.subarray(i.gzindex,i.gzindex+r),i.pending),i.pending+=r,i.gzhead.hcrc&&i.pending>t&&(e.adler=j(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,r=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>r&&(e.adler=j(e.adler,i.pending_buf,i.pending-r,r)),Se(e),0!==i.pending)return i.last_flush=-1,ie;r=0}t=i.gzindexr&&(e.adler=j(e.adler,i.pending_buf,i.pending-r,r)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,r=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>r&&(e.adler=j(e.adler,i.pending_buf,i.pending-r,r)),Se(e),0!==i.pending)return i.last_flush=-1,ie;r=0}t=i.gzindexr&&(e.adler=j(e.adler,i.pending_buf,i.pending-r,r))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(Se(e),0!==i.pending))return i.last_flush=-1,ie;Me(i,255&e.adler),Me(i,e.adler>>8&255),e.adler=0}if(i.status=_e,Se(e),0!==i.pending)return i.last_flush=-1,ie}if(0!==e.avail_in||0!==i.lookahead||t!==Q&&i.status!==ye){let r=0===i.level?Ie(i,t):i.strategy===he?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(Fe(e),0===e.lookahead)){if(t===Q)return 1;break}if(e.match_length=0,i=X(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(ze(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===ee?(ze(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ze(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===ce?((e,t)=>{let i,r,n,s;const a=e.window;for(;;){if(e.lookahead<=me){if(Fe(e),e.lookahead<=me&&t===Q)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(n=e.strstart-1,r=a[n],r===a[++n]&&r===a[++n]&&r===a[++n])){s=e.strstart+me;do{}while(r===a[++n]&&r===a[++n]&&r===a[++n]&&r===a[++n]&&r===a[++n]&&r===a[++n]&&r===a[++n]&&r===a[++n]&&ne.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=X(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=X(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(ze(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===ee?(ze(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ze(e,!1),0===e.strm.avail_out)?1:2})(i,t):ke[i.level].func(i,t);if(3!==r&&4!==r||(i.status=ye),1===r||3===r)return 0===e.avail_out&&(i.last_flush=-1),ie;if(2===r&&(t===$?K(i):t!==te&&(Y(i,0,0,!1),t===J&&(we(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),Se(e),0===e.avail_out))return i.last_flush=-1,ie}return t!==ee?ie:i.wrap<=0?re:(2===i.wrap?(Me(i,255&e.adler),Me(i,e.adler>>8&255),Me(i,e.adler>>16&255),Me(i,e.adler>>24&255),Me(i,255&e.total_in),Me(i,e.total_in>>8&255),Me(i,e.total_in>>16&255),Me(i,e.total_in>>24&255)):(Te(i,e.adler>>>16),Te(i,65535&e.adler)),Se(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?ie:re)},deflateEnd:e=>{if(Ue(e))return ne;const t=e.state.status;return e.state=null,t===_e?be(e,se):ie},deflateSetDictionary:(e,t)=>{let i=t.length;if(Ue(e))return ne;const r=e.state,n=r.wrap;if(2===n||1===n&&r.status!==ve||r.lookahead)return ne;if(1===n&&(e.adler=G(e.adler,t,i,0)),r.wrap=0,i>=r.w_size){0===n&&(we(r.head),r.strstart=0,r.block_start=0,r.insert=0);let e=new Uint8Array(r.w_size);e.set(t.subarray(i-r.w_size,i),0),t=e,i=r.w_size}const s=e.avail_in,a=e.next_in,o=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,Fe(r);r.lookahead>=3;){let e=r.strstart,t=r.lookahead-2;do{r.ins_h=Ce(r,r.ins_h,r.window[e+3-1]),r.prev[e&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=e,e++}while(--t);r.strstart=e,r.lookahead=2,Fe(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=a,e.input=o,e.avail_in=s,r.wrap=n,ie},deflateInfo:"pako deflate (from Nodeca project)"};const je=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var He=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)je(i,t)&&(e[t]=i[t])}}return e},We=e=>{let t=0;for(let i=0,r=e.length;i=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Ye[254]=Ye[254]=1;var Ze=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,r,n,s,a=e.length,o=0;for(n=0;n>>6,t[s++]=128|63&i):i<65536?(t[s++]=224|i>>>12,t[s++]=128|i>>>6&63,t[s++]=128|63&i):(t[s++]=240|i>>>18,t[s++]=128|i>>>12&63,t[s++]=128|i>>>6&63,t[s++]=128|63&i);return t},Xe=(e,t)=>{const i=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let r,n;const s=new Array(2*i);for(n=0,r=0;r4)s[n++]=65533,r+=a-1;else{for(t&=2===a?31:3===a?15:7;a>1&&r1?s[n++]=65533:t<65536?s[n++]=t:(t-=65536,s[n++]=55296|t>>10&1023,s[n++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&qe)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let i="";for(let r=0;r{(t=t||e.length)>e.length&&(t=e.length);let i=t-1;for(;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+Ye[e[i]]>t?i:t},Qe=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const $e=Object.prototype.toString,{Z_NO_FLUSH:Je,Z_SYNC_FLUSH:et,Z_FULL_FLUSH:tt,Z_FINISH:it,Z_OK:rt,Z_STREAM_END:nt,Z_DEFAULT_COMPRESSION:st,Z_DEFAULT_STRATEGY:at,Z_DEFLATED:ot}=W;function lt(e){this.options=He({level:st,method:ot,chunkSize:16384,windowBits:15,memLevel:8,strategy:at},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Qe,this.strm.avail_out=0;let i=Ve.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==rt)throw new Error(H[i]);if(t.header&&Ve.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?Ze(t.dictionary):"[object ArrayBuffer]"===$e.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Ve.deflateSetDictionary(this.strm,e),i!==rt)throw new Error(H[i]);this._dict_set=!0}}function ht(e,t){const i=new lt(t);if(i.push(e,!0),i.err)throw i.msg||H[i.err];return i.result}lt.prototype.push=function(e,t){const i=this.strm,r=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=t===~~t?t:!0===t?it:Je,"string"==typeof e?i.input=Ze(e):"[object ArrayBuffer]"===$e.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(r),i.next_out=0,i.avail_out=r),(s===et||s===tt)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(n=Ve.deflate(i,s),n===nt)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),n=Ve.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===rt;if(0!==i.avail_out){if(s>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},lt.prototype.onData=function(e){this.chunks.push(e)},lt.prototype.onEnd=function(e){e===rt&&(this.result=We(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ct={Deflate:lt,deflate:ht,deflateRaw:function(e,t){return(t=t||{}).raw=!0,ht(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,ht(e,t)},constants:W};const dt=16209;var ut=function(e,t){let i,r,n,s,a,o,l,h,c,d,u,f,p,m,g,v,_,y,b,x,w,A,C,S;const z=e.state;i=e.next_in,C=e.input,r=i+(e.avail_in-5),n=e.next_out,S=e.output,s=n-(t-e.avail_out),a=n+(e.avail_out-257),o=z.dmax,l=z.wsize,h=z.whave,c=z.wnext,d=z.window,u=z.hold,f=z.bits,p=z.lencode,m=z.distcode,g=(1<>>24,u>>>=y,f-=y,y=_>>>16&255,0===y)S[n++]=65535&_;else{if(!(16&y)){if(64&y){if(32&y){z.mode=16191;break e}e.msg="invalid literal/length code",z.mode=dt;break e}_=p[(65535&_)+(u&(1<>>=y,f-=y),f<15&&(u+=C[i++]<>>24,u>>>=y,f-=y,y=_>>>16&255,16&y){if(x=65535&_,y&=15,fo){e.msg="invalid distance too far back",z.mode=dt;break e}if(u>>>=y,f-=y,y=n-s,x>y){if(y=x-y,y>h&&z.sane){e.msg="invalid distance too far back",z.mode=dt;break e}if(w=0,A=d,0===c){if(w+=l-y,y2;)S[n++]=A[w++],S[n++]=A[w++],S[n++]=A[w++],b-=3;b&&(S[n++]=A[w++],b>1&&(S[n++]=A[w++]))}else{w=n-x;do{S[n++]=S[w++],S[n++]=S[w++],S[n++]=S[w++],b-=3}while(b>2);b&&(S[n++]=S[w++],b>1&&(S[n++]=S[w++]))}break}if(64&y){e.msg="invalid distance code",z.mode=dt;break e}_=m[(65535&_)+(u&(1<>3,i-=b,f-=b<<3,u&=(1<{const l=o.bits;let h,c,d,u,f,p,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,A=0,C=0,S=null;const z=new Uint16Array(16),M=new Uint16Array(16);let T,E,L,F=null;for(m=0;m<=ft;m++)z[m]=0;for(g=0;g=1&&0===z[_];_--);if(y>_&&(y=_),0===_)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(v=1;v<_&&0===z[v];v++);for(y0&&(0===e||1!==_))return-1;for(M[1]=0,m=1;m852||2===e&&A>592)return 1;for(;;){T=m-x,a[g]+1=p?(E=F[a[g]-p],L=S[a[g]-p]):(E=96,L=0),h=1<>x)+c]=T<<24|E<<16|L}while(0!==c);for(h=1<>=1;if(0!==h?(C&=h-1,C+=h):C=0,g++,0===--z[m]){if(m===_)break;m=t[i+a[g]]}if(m>y&&(C&u)!==d){for(0===x&&(x=y),f+=v,b=m-x,w=1<852||2===e&&A>592)return 1;d=C&u,n[d]=y<<24|b<<16|f-s}}return 0!==C&&(n[f+C]=m-x<<24|64<<16),o.bits=y,0};const{Z_FINISH:yt,Z_BLOCK:bt,Z_TREES:xt,Z_OK:wt,Z_STREAM_END:At,Z_NEED_DICT:Ct,Z_STREAM_ERROR:St,Z_DATA_ERROR:zt,Z_MEM_ERROR:Mt,Z_BUF_ERROR:Tt,Z_DEFLATED:Et}=W,Lt=16180,Ft=16190,It=16191,Dt=16192,Ot=16194,Rt=16199,kt=16200,Pt=16206,Ut=16209,Nt=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function Bt(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Gt=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode16211?1:0},Vt=e=>{if(Gt(e))return St;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Lt,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,wt},jt=e=>{if(Gt(e))return St;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Vt(e)},Ht=(e,t)=>{let i;if(Gt(e))return St;const r=e.state;return t<0?(i=0,t=-t):(i=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?St:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=i,r.wbits=t,jt(e))},Wt=(e,t)=>{if(!e)return St;const i=new Bt;e.state=i,i.strm=e,i.window=null,i.mode=Lt;const r=Ht(e,t);return r!==wt&&(e.state=null),r};let qt,Yt,Zt=!0;const Xt=e=>{if(Zt){qt=new Int32Array(512),Yt=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(_t(1,e.lens,0,288,qt,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;_t(2,e.lens,0,32,Yt,0,e.work,{bits:5}),Zt=!1}e.lencode=qt,e.lenbits=9,e.distcode=Yt,e.distbits=5},Kt=(e,t,i,r)=>{let n;const s=e.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(t.subarray(i-s.wsize,i),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>r&&(n=r),s.window.set(t.subarray(i-r,i-r+n),s.wnext),(r-=n)?(s.window.set(t.subarray(i-r,i),0),s.wnext=r,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whaveWt(e,15),inflateInit2:Wt,inflate:(e,t)=>{let i,r,n,s,a,o,l,h,c,d,u,f,p,m,g,v,_,y,b,x,w,A,C=0;const S=new Uint8Array(4);let z,M;const T=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Gt(e)||!e.output||!e.input&&0!==e.avail_in)return St;i=e.state,i.mode===It&&(i.mode=Dt),a=e.next_out,n=e.output,l=e.avail_out,s=e.next_in,r=e.input,o=e.avail_in,h=i.hold,c=i.bits,d=o,u=l,A=wt;e:for(;;)switch(i.mode){case Lt:if(0===i.wrap){i.mode=Dt;break}for(;c<16;){if(0===o)break e;o--,h+=r[s++]<>>8&255,i.check=j(i.check,S,2,0),h=0,c=0,i.mode=16181;break}if(i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",i.mode=Ut;break}if((15&h)!==Et){e.msg="unknown compression method",i.mode=Ut;break}if(h>>>=4,c-=4,w=8+(15&h),0===i.wbits&&(i.wbits=w),w>15||w>i.wbits){e.msg="invalid window size",i.mode=Ut;break}i.dmax=1<>8&1),512&i.flags&&4&i.wrap&&(S[0]=255&h,S[1]=h>>>8&255,i.check=j(i.check,S,2,0)),h=0,c=0,i.mode=16182;case 16182:for(;c<32;){if(0===o)break e;o--,h+=r[s++]<>>8&255,S[2]=h>>>16&255,S[3]=h>>>24&255,i.check=j(i.check,S,4,0)),h=0,c=0,i.mode=16183;case 16183:for(;c<16;){if(0===o)break e;o--,h+=r[s++]<>8),512&i.flags&&4&i.wrap&&(S[0]=255&h,S[1]=h>>>8&255,i.check=j(i.check,S,2,0)),h=0,c=0,i.mode=16184;case 16184:if(1024&i.flags){for(;c<16;){if(0===o)break e;o--,h+=r[s++]<>>8&255,i.check=j(i.check,S,2,0)),h=0,c=0}else i.head&&(i.head.extra=null);i.mode=16185;case 16185:if(1024&i.flags&&(f=i.length,f>o&&(f=o),f&&(i.head&&(w=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(r.subarray(s,s+f),w)),512&i.flags&&4&i.wrap&&(i.check=j(i.check,r,f,s)),o-=f,s+=f,i.length-=f),i.length))break e;i.length=0,i.mode=16186;case 16186:if(2048&i.flags){if(0===o)break e;f=0;do{w=r[s+f++],i.head&&w&&i.length<65536&&(i.head.name+=String.fromCharCode(w))}while(w&&f>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=It;break;case 16189:for(;c<32;){if(0===o)break e;o--,h+=r[s++]<>>=7&c,c-=7&c,i.mode=Pt;break}for(;c<3;){if(0===o)break e;o--,h+=r[s++]<>>=1,c-=1,3&h){case 0:i.mode=16193;break;case 1:if(Xt(i),i.mode=Rt,t===xt){h>>>=2,c-=2;break e}break;case 2:i.mode=16196;break;case 3:e.msg="invalid block type",i.mode=Ut}h>>>=2,c-=2;break;case 16193:for(h>>>=7&c,c-=7&c;c<32;){if(0===o)break e;o--,h+=r[s++]<>>16^65535)){e.msg="invalid stored block lengths",i.mode=Ut;break}if(i.length=65535&h,h=0,c=0,i.mode=Ot,t===xt)break e;case Ot:i.mode=16195;case 16195:if(f=i.length,f){if(f>o&&(f=o),f>l&&(f=l),0===f)break e;n.set(r.subarray(s,s+f),a),o-=f,s+=f,l-=f,a+=f,i.length-=f;break}i.mode=It;break;case 16196:for(;c<14;){if(0===o)break e;o--,h+=r[s++]<>>=5,c-=5,i.ndist=1+(31&h),h>>>=5,c-=5,i.ncode=4+(15&h),h>>>=4,c-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=Ut;break}i.have=0,i.mode=16197;case 16197:for(;i.have>>=3,c-=3}for(;i.have<19;)i.lens[T[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,z={bits:i.lenbits},A=_t(0,i.lens,0,19,i.lencode,0,i.work,z),i.lenbits=z.bits,A){e.msg="invalid code lengths set",i.mode=Ut;break}i.have=0,i.mode=16198;case 16198:for(;i.have>>24,v=C>>>16&255,_=65535&C,!(g<=c);){if(0===o)break e;o--,h+=r[s++]<>>=g,c-=g,i.lens[i.have++]=_;else{if(16===_){for(M=g+2;c>>=g,c-=g,0===i.have){e.msg="invalid bit length repeat",i.mode=Ut;break}w=i.lens[i.have-1],f=3+(3&h),h>>>=2,c-=2}else if(17===_){for(M=g+3;c>>=g,c-=g,w=0,f=3+(7&h),h>>>=3,c-=3}else{for(M=g+7;c>>=g,c-=g,w=0,f=11+(127&h),h>>>=7,c-=7}if(i.have+f>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=Ut;break}for(;f--;)i.lens[i.have++]=w}}if(i.mode===Ut)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=Ut;break}if(i.lenbits=9,z={bits:i.lenbits},A=_t(1,i.lens,0,i.nlen,i.lencode,0,i.work,z),i.lenbits=z.bits,A){e.msg="invalid literal/lengths set",i.mode=Ut;break}if(i.distbits=6,i.distcode=i.distdyn,z={bits:i.distbits},A=_t(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,z),i.distbits=z.bits,A){e.msg="invalid distances set",i.mode=Ut;break}if(i.mode=Rt,t===xt)break e;case Rt:i.mode=kt;case kt:if(o>=6&&l>=258){e.next_out=a,e.avail_out=l,e.next_in=s,e.avail_in=o,i.hold=h,i.bits=c,ut(e,u),a=e.next_out,n=e.output,l=e.avail_out,s=e.next_in,r=e.input,o=e.avail_in,h=i.hold,c=i.bits,i.mode===It&&(i.back=-1);break}for(i.back=0;C=i.lencode[h&(1<>>24,v=C>>>16&255,_=65535&C,!(g<=c);){if(0===o)break e;o--,h+=r[s++]<>y)],g=C>>>24,v=C>>>16&255,_=65535&C,!(y+g<=c);){if(0===o)break e;o--,h+=r[s++]<>>=y,c-=y,i.back+=y}if(h>>>=g,c-=g,i.back+=g,i.length=_,0===v){i.mode=16205;break}if(32&v){i.back=-1,i.mode=It;break}if(64&v){e.msg="invalid literal/length code",i.mode=Ut;break}i.extra=15&v,i.mode=16201;case 16201:if(i.extra){for(M=i.extra;c>>=i.extra,c-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=16202;case 16202:for(;C=i.distcode[h&(1<>>24,v=C>>>16&255,_=65535&C,!(g<=c);){if(0===o)break e;o--,h+=r[s++]<>y)],g=C>>>24,v=C>>>16&255,_=65535&C,!(y+g<=c);){if(0===o)break e;o--,h+=r[s++]<>>=y,c-=y,i.back+=y}if(h>>>=g,c-=g,i.back+=g,64&v){e.msg="invalid distance code",i.mode=Ut;break}i.offset=_,i.extra=15&v,i.mode=16203;case 16203:if(i.extra){for(M=i.extra;c>>=i.extra,c-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=Ut;break}i.mode=16204;case 16204:if(0===l)break e;if(f=u-l,i.offset>f){if(f=i.offset-f,f>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=Ut;break}f>i.wnext?(f-=i.wnext,p=i.wsize-f):p=i.wnext-f,f>i.length&&(f=i.length),m=i.window}else m=n,p=a-i.offset,f=i.length;f>l&&(f=l),l-=f,i.length-=f;do{n[a++]=m[p++]}while(--f);0===i.length&&(i.mode=kt);break;case 16205:if(0===l)break e;n[a++]=i.length,l--,i.mode=kt;break;case Pt:if(i.wrap){for(;c<32;){if(0===o)break e;o--,h|=r[s++]<{if(Gt(e))return St;let t=e.state;return t.window&&(t.window=null),e.state=null,wt},inflateGetHeader:(e,t)=>{if(Gt(e))return St;const i=e.state;return 2&i.wrap?(i.head=t,t.done=!1,wt):St},inflateSetDictionary:(e,t)=>{const i=t.length;let r,n,s;return Gt(e)?St:(r=e.state,0!==r.wrap&&r.mode!==Ft?St:r.mode===Ft&&(n=1,n=G(n,t,i,0),n!==r.check)?zt:(s=Kt(e,t,i,i),s?(r.mode=16210,Mt):(r.havedict=1,wt)))},inflateInfo:"pako inflate (from Nodeca project)"},$t=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Jt=Object.prototype.toString,{Z_NO_FLUSH:ei,Z_FINISH:ti,Z_OK:ii,Z_STREAM_END:ri,Z_NEED_DICT:ni,Z_STREAM_ERROR:si,Z_DATA_ERROR:ai,Z_MEM_ERROR:oi}=W;function li(e){this.options=He({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Qe,this.strm.avail_out=0;let i=Qt.inflateInit2(this.strm,t.windowBits);if(i!==ii)throw new Error(H[i]);if(this.header=new $t,Qt.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=Ze(t.dictionary):"[object ArrayBuffer]"===Jt.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=Qt.inflateSetDictionary(this.strm,t.dictionary),i!==ii)))throw new Error(H[i])}function hi(e,t){const i=new li(t);if(i.push(e),i.err)throw i.msg||H[i.err];return i.result}li.prototype.push=function(e,t){const i=this.strm,r=this.options.chunkSize,n=this.options.dictionary;let s,a,o;if(this.ended)return!1;for(a=t===~~t?t:!0===t?ti:ei,"[object ArrayBuffer]"===Jt.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(0===i.avail_out&&(i.output=new Uint8Array(r),i.next_out=0,i.avail_out=r),s=Qt.inflate(i,a),s===ni&&n&&(s=Qt.inflateSetDictionary(i,n),s===ii?s=Qt.inflate(i,a):s===ai&&(s=ni));i.avail_in>0&&s===ri&&i.state.wrap>0&&0!==e[i.next_in];)Qt.inflateReset(i),s=Qt.inflate(i,a);switch(s){case si:case ai:case ni:case oi:return this.onEnd(s),this.ended=!0,!1}if(o=i.avail_out,i.next_out&&(0===i.avail_out||s===ri))if("string"===this.options.to){let e=Ke(i.output,i.next_out),t=i.next_out-e,n=Xe(i.output,e);i.next_out=t,i.avail_out=r-t,t&&i.output.set(i.output.subarray(e,e+t),0),this.onData(n)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(s!==ii||0!==o){if(s===ri)return s=Qt.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===i.avail_in)break}}return!0},li.prototype.onData=function(e){this.chunks.push(e)},li.prototype.onEnd=function(e){e===ii&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=We(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ci={Inflate:li,inflate:hi,inflateRaw:function(e,t){return(t=t||{}).raw=!0,hi(e,t)},ungzip:hi,constants:W};const{Deflate:di,deflate:ui,deflateRaw:fi,gzip:pi}=ct,{Inflate:mi,inflate:gi,inflateRaw:vi,ungzip:_i}=ci;var yi=di,bi=ui,xi=fi,wi=pi,Ai=mi,Ci=gi,Si=vi,zi=_i,Mi=W,Ti={Deflate:di,deflate:ui,deflateRaw:fi,gzip:pi,Inflate:mi,inflate:gi,inflateRaw:vi,ungzip:_i,constants:W}},99(e,t,i){i.r(t),i.d(t,{Cylinder:()=>Cylinder,Sphere:()=>Sphere,Triangle:()=>Triangle});var r=i(529);class Sphere{constructor(e={x:0,y:0,z:0},t=0){this.center=new r.Vector3(e.x,e.y,e.z),this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return(new Sphere).copy(this)}}let n=new r.Vector3;class Cylinder{constructor(e=new r.Vector3,t=new r.Vector3,i=0){this.c1=e,this.c2=t,this.radius=i,this.direction=(new r.Vector3).subVectors(this.c2,this.c1).normalize()}copy(e){return this.c1.copy(e.c1),this.c2.copy(e.c2),this.direction.copy(e.direction),this.radius=e.radius,this}lengthSq(){return n.subVectors(this.c2,this.c1).lengthSq()}applyMatrix4(e){return this.direction.add(this.c1).applyMatrix4(e),this.c1.applyMatrix4(e),this.c2.applyMatrix4(e),this.direction.sub(this.c1).normalize(),this.radius=this.radius*e.getMaxScaleOnAxis(),this}}const s=new r.Vector3;class Triangle{constructor(e=new r.Vector3,t=new r.Vector3,i=new r.Vector3){this.a=e,this.b=t,this.c=i}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}applyMatrix4(e){return this.a.applyMatrix4(e),this.b.applyMatrix4(e),this.c.applyMatrix4(e),this}getNormal(){var e=this.a.clone();return e.sub(this.b),s.subVectors(this.c,this.b),e.cross(s),e.normalize(),e}}},107(e,t,i){var r,n=i(981),s=i(697),a=i(701),o=i(407),l=i(834),h=-2,c=258,d=262,u=103,f=113,p=666;function m(e,t){return e.msg=l[t],t}function g(e){return(e<<1)-(e>4?9:0)}function v(e){for(var t=e.length;--t>=0;)e[t]=0}function _(e){var t=e.state,i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(n.arraySet(e.output,t.pending_buf,t.pending_out,i,e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))}function y(e,t){s._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,_(e.strm)}function b(e,t){e.pending_buf[e.pending++]=t}function x(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function w(e,t,i,r){var s=e.avail_in;return s>r&&(s=r),0===s?0:(e.avail_in-=s,n.arraySet(t,e.input,e.next_in,s,i),1===e.state.wrap?e.adler=a(e.adler,t,s,i):2===e.state.wrap&&(e.adler=o(e.adler,t,s,i)),e.next_in+=s,e.total_in+=s,s)}function A(e,t){var i,r,n=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-d?e.strstart-(e.w_size-d):0,h=e.window,u=e.w_mask,f=e.prev,p=e.strstart+c,m=h[s+a-1],g=h[s+a];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(h[(i=t)+a]===g&&h[i+a-1]===m&&h[i]===h[s]&&h[++i]===h[s+1]){s+=2,i++;do{}while(h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&sa){if(e.match_start=t,a=r,r>=o)break;m=h[s+a-1],g=h[s+a]}}}while((t=f[t&u])>l&&0!==--n);return a<=e.lookahead?a:e.lookahead}function C(e){var t,i,r,s,a,o=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=o+(o-d)){n.arraySet(e.window,e.window,o,o,0),e.match_start-=o,e.strstart-=o,e.block_start-=o,t=i=e.hash_size;do{r=e.head[--t],e.head[t]=r>=o?r-o:0}while(--i);t=i=o;do{r=e.prev[--t],e.prev[t]=r>=o?r-o:0}while(--i);s+=o}if(0===e.strm.avail_in)break;if(i=w(e.strm,e.window,e.strstart+e.lookahead,s),e.lookahead+=i,e.lookahead+e.insert>=3)for(a=e.strstart-e.insert,e.ins_h=e.window[a],e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<=3)if(r=s._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){n=e.strstart+e.lookahead-3,r=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=n&&(e.ins_h=(e.ins_h<15&&(o=2,r-=16),s<1||s>9||8!==i||r<8||r>15||t<0||t>9||a<0||a>4)return m(e,h);8===r&&(r=9);var l=new T;return e.state=l,l.strm=e,l.wrap=o,l.gzhead=null,l.w_bits=r,l.w_size=1<e.pending_buf_size-5&&(i=e.pending_buf_size-5);;){if(e.lookahead<=1){if(C(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var r=e.block_start+i;if((0===e.strstart||e.strstart>=r)&&(e.lookahead=e.strstart-r,e.strstart=r,y(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-d&&(y(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(y(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(y(e,!1),e.strm.avail_out),1)}),new M(4,4,8,4,S),new M(4,5,16,8,S),new M(4,6,32,32,S),new M(4,4,16,16,z),new M(8,16,32,32,z),new M(8,16,128,128,z),new M(8,32,128,256,z),new M(32,128,258,1024,z),new M(32,258,258,4096,z)],t.deflateInit=function(e,t){return F(e,t,8,15,8,0)},t.deflateInit2=F,t.deflateReset=L,t.deflateResetKeep=E,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?h:(e.state.gzhead=t,0):h},t.deflate=function(e,t){var i,n,a,l;if(!e||!e.state||t>5||t<0)return e?m(e,h):h;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||n.status===p&&4!==t)return m(e,0===e.avail_out?-5:h);if(n.strm=e,i=n.last_flush,n.last_flush=t,42===n.status)if(2===n.wrap)e.adler=0,b(n,31),b(n,139),b(n,8),n.gzhead?(b(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),b(n,255&n.gzhead.time),b(n,n.gzhead.time>>8&255),b(n,n.gzhead.time>>16&255),b(n,n.gzhead.time>>24&255),b(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),b(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(b(n,255&n.gzhead.extra.length),b(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=o(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(b(n,0),b(n,0),b(n,0),b(n,0),b(n,0),b(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),b(n,3),n.status=f);else{var d=8+(n.w_bits-8<<4)<<8;d|=(n.strategy>=2||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(d|=32),d+=31-d%31,n.status=f,x(n,d),0!==n.strstart&&(x(n,e.adler>>>16),x(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(a=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>a&&(e.adler=o(e.adler,n.pending_buf,n.pending-a,a)),_(e),a=n.pending,n.pending!==n.pending_buf_size));)b(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>a&&(e.adler=o(e.adler,n.pending_buf,n.pending-a,a)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){a=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>a&&(e.adler=o(e.adler,n.pending_buf,n.pending-a,a)),_(e),a=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexa&&(e.adler=o(e.adler,n.pending_buf,n.pending-a,a)),0===l&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){a=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>a&&(e.adler=o(e.adler,n.pending_buf,n.pending-a,a)),_(e),a=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexa&&(e.adler=o(e.adler,n.pending_buf,n.pending-a,a)),0===l&&(n.status=u)}else n.status=u;if(n.status===u&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&_(e),n.pending+2<=n.pending_buf_size&&(b(n,255&e.adler),b(n,e.adler>>8&255),e.adler=0,n.status=f)):n.status=f),0!==n.pending){if(_(e),0===e.avail_out)return n.last_flush=-1,0}else if(0===e.avail_in&&g(t)<=g(i)&&4!==t)return m(e,-5);if(n.status===p&&0!==e.avail_in)return m(e,-5);if(0!==e.avail_in||0!==n.lookahead||0!==t&&n.status!==p){var w=2===n.strategy?function(e,t){for(var i;;){if(0===e.lookahead&&(C(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,i=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(y(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(y(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(y(e,!1),0===e.strm.avail_out)?1:2}(n,t):3===n.strategy?function(e,t){for(var i,r,n,a,o=e.window;;){if(e.lookahead<=c){if(C(e),e.lookahead<=c&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(r=o[n=e.strstart-1])===o[++n]&&r===o[++n]&&r===o[++n]){a=e.strstart+c;do{}while(r===o[++n]&&r===o[++n]&&r===o[++n]&&r===o[++n]&&r===o[++n]&&r===o[++n]&&r===o[++n]&&r===o[++n]&&ne.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=s._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(y(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(y(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(y(e,!1),0===e.strm.avail_out)?1:2}(n,t):r[n.level].func(n,t);if(3!==w&&4!==w||(n.status=p),1===w||3===w)return 0===e.avail_out&&(n.last_flush=-1),0;if(2===w&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(v(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),_(e),0===e.avail_out))return n.last_flush=-1,0}return 4!==t?0:n.wrap<=0?1:(2===n.wrap?(b(n,255&e.adler),b(n,e.adler>>8&255),b(n,e.adler>>16&255),b(n,e.adler>>24&255),b(n,255&e.total_in),b(n,e.total_in>>8&255),b(n,e.total_in>>16&255),b(n,e.total_in>>24&255)):(x(n,e.adler>>>16),x(n,65535&e.adler)),_(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?0:1)},t.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&t!==u&&t!==f&&t!==p?m(e,h):(e.state=null,t===f?m(e,-3):0):h},t.deflateSetDictionary=function(e,t){var i,r,s,o,l,c,d,u,f=t.length;if(!e||!e.state)return h;if(2===(o=(i=e.state).wrap)||1===o&&42!==i.status||i.lookahead)return h;for(1===o&&(e.adler=a(e.adler,t,f,0)),i.wrap=0,f>=i.w_size&&(0===o&&(v(i.head),i.strstart=0,i.block_start=0,i.insert=0),u=new n.Buf8(i.w_size),n.arraySet(u,t,f-i.w_size,i.w_size,0),t=u,f=i.w_size),l=e.avail_in,c=e.next_in,d=e.input,e.avail_in=f,e.next_in=0,e.input=t,C(i);i.lookahead>=3;){r=i.strstart,s=i.lookahead-2;do{i.ins_h=(i.ins_h<>3)]>>7-(7&p)&1);l[z]=b[M],l[z+1]=b[M+1],l[z+2]=b[M+2],l[z+3]=T>2)]>>6-((3&p)<<1)&3),l[z]=b[M],l[z+1]=b[M+1],l[z+2]=b[M+2],l[z+3]=T>1)]>>4-((1&p)<<2)&15),l[z]=b[M],l[z+1]=b[M+1],l[z+2]=b[M+2],l[z+3]=T>3]>>7-(7&p)&1))==255*g?0:255;h[p]=F<<24|E<<16|E<<8|E}if(2==d)for(p=0;p>2]>>6-((3&p)<<1)&3))==85*g?0:255,h[p]=F<<24|E<<16|E<<8|E;if(4==d)for(p=0;p>1]>>4-((1&p)<<2)&15))==17*g?0:255,h[p]=F<<24|E<<16|E<<8|E;if(8==d)for(p=0;p>3,o=Math.ceil(r*s/8),l=new Uint8Array(n*o),h=0,c=[0,0,4,0,2,0,1],d=[0,4,0,2,0,1,0],u=[8,8,8,4,4,2,2],f=[8,8,4,4,2,2,1],p=0;p<7;){for(var m=u[p],g=f[p],v=0,_=0,y=c[p];y>3])>>7-(7&S)&1,l[A*o+(C>>3)]|=z<<7-(3&C)),2==s&&(z=(z=t[S>>3])>>6-(7&S)&3,l[A*o+(C>>2)]|=z<<6-((3&C)<<1)),4==s&&(z=(z=t[S>>3])>>4-(7&S)&15,l[A*o+(C>>1)]|=z<<4-((1&C)<<2)),s>=8)for(var M=A*o+C*a,T=0;T>3)+T];S+=s,C+=g}w++,A+=m}v*_!=0&&(h+=_*(1+x)),p+=1}return l},e.decode._getBPP=function(e){return[1,null,3,1,2,null,4][e.ctype]*e.depth},e.decode._filterZero=function(t,i,r,n,s){var a=e.decode._getBPP(i),o=Math.ceil(n*a/8),l=e.decode._paeth;a=Math.ceil(a/8);for(var h=0;h>1)&255;if(4==u)for(f=a;f>1)&255;for(f=a;f>1)&255}if(4==u){for(f=0;f>8&255,e[t+1]=255&i},readUint:function(e,t){return 16777216*e[t]+(e[t+1]<<16|e[t+2]<<8|e[t+3])},writeUint:function(e,t,i){e[t]=i>>24&255,e[t+1]=i>>16&255,e[t+2]=i>>8&255,e[t+3]=255&i},readASCII:function(e,t,i){for(var r="",n=0;n=0&&o>=0?(d=f*t+p<<2,u=(o+f)*n+a+p<<2):(d=(-o+f)*t-a+p<<2,u=f*n+p<<2),0==l)r[u]=e[d],r[u+1]=e[d+1],r[u+2]=e[d+2],r[u+3]=e[d+3];else if(1==l){var m=e[d+3]*(1/255),g=e[d]*m,v=e[d+1]*m,_=e[d+2]*m,y=r[u+3]*(1/255),b=r[u]*y,x=r[u+1]*y,w=r[u+2]*y,A=1-m,C=m+y*A,S=0==C?0:1/C;r[u+3]=255*C,r[u+0]=(g+b*A)*S,r[u+1]=(v+x*A)*S,r[u+2]=(_+w*A)*S}else if(2==l)m=e[d+3],g=e[d],v=e[d+1],_=e[d+2],y=r[u+3],b=r[u],x=r[u+1],w=r[u+2],m==y&&g==b&&v==x&&_==w?(r[u]=0,r[u+1]=0,r[u+2]=0,r[u+3]=0):(r[u]=g,r[u+1]=v,r[u+2]=_,r[u+3]=m);else if(3==l){if(m=e[d+3],g=e[d],v=e[d+1],_=e[d+2],y=r[u+3],b=r[u],x=r[u+1],w=r[u+2],m==y&&g==b&&v==x&&_==w)continue;if(m<220&&y>20)return!1}return!0},e.encode=function(t,i,r,n,s,a){null==n&&(n=0),null==a&&(a=!1);for(var o=new Uint8Array(t[0].byteLength*t.length+100),l=[137,80,78,71,13,10,26,10],h=0;h<8;h++)o[h]=l[h];var c=8,d=e._bin,u=e.crc.crc,f=d.writeUint,p=d.writeUshort,m=d.writeASCII,g=e.encode.compressPNG(t,i,r,n,a);f(o,c,13),m(o,c+=4,"IHDR"),f(o,c+=4,i),f(o,c+=4,r),o[c+=4]=g.depth,o[++c]=g.ctype,o[++c]=0,o[++c]=0,o[++c]=0,f(o,++c,u(o,c-17,17)),f(o,c+=4,1),m(o,c+=4,"sRGB"),o[c+=4]=1,f(o,++c,u(o,c-5,5)),c+=4;var v=t.length>1;if(v&&(f(o,c,8),m(o,c+=4,"acTL"),f(o,c+=4,t.length),f(o,c+=4,0),f(o,c+=4,u(o,c-12,12)),c+=4),3==g.ctype){for(f(o,c,3*(z=g.plte.length)),m(o,c+=4,"PLTE"),c+=4,h=0;h>8&255,w=y>>16&255;o[c+_+0]=b,o[c+_+1]=x,o[c+_+2]=w}if(f(o,c+=3*z,u(o,c-3*z-4,3*z+4)),c+=4,g.gotAlpha){for(f(o,c,z),m(o,c+=4,"tRNS"),c+=4,h=0;h>24&255;f(o,c+=z,u(o,c-z-4,z+4)),c+=4}}for(var A=0,C=0;C=300))break}}var x=!!m&&s,w=v.length;w<=256&&0==a&&(l=w<=2?1:w<=4?2:w<=16?4:8,s&&(l=8),m=!0);var A=[];for(d=0;dN&&(N=V),GB&&(B=G));var j=-1==N?1:(N-P+1)*(B-U+1);j>1)]|=g[S[q+V]]<<4-4*(1&V);else if(2==l)for(V=0;V>2)]|=g[S[q+V]]<<6-2*(3&V);else if(1==l)for(V=0;V>3)]|=g[S[q+V]]<<7-1*(7&V)}C=H,o=3,h=1}else if(0==m&&1==t.length){H=new Uint8Array(T*E*3);var Y=T*E;for(p=0;p5e5)||2!=l&&3!=l&&4!=l){for(var h=0;h>1)+256&255;if(4==a)for(c=s;c>1)&255;for(c=s;c>1)&255}if(4==a){for(c=0;c>>1:i>>>=1;e[t]=i}return e}(),update:function(t,i,r,n){for(var s=0;s>>8;return t},crc:function(t,i,r){return 4294967295^e.crc.update(4294967295,t,i,r)}},e.quantize=function(t,i,r){for(var n=[],s=0,a=0;am&&(m=p[a].est.L,g=a);if(m<.001)break;var v=p[g],_=e.quantize.splitPixels(o,l,v.i0,v.i1,v.est.e,v.est.eMq255),y={i0:v.i0,i1:_,bst:null,est:null,tdst:0,left:null,right:null};y.bst=e.quantize.stats(o,y.i0,y.i1),y.est=e.quantize.estats(y.bst);var b={i0:_,i1:v.i1,bst:null,est:null,tdst:0,left:null,right:null};for(b.bst={R:[],m:[],N:v.bst.N-y.bst.N},a=0;a<16;a++)b.bst.R[a]=v.bst.R[a]-y.bst.R[a];for(a=0;a<4;a++)b.bst.m[a]=v.bst.m[a]-y.bst.m[a];b.est=e.quantize.estats(b.bst),v.left=y,v.right=b,p[g]=y,p.push(b)}p.sort(function(e,t){return t.bst.N-e.bst.N});for(var x=0;x>2]=L.est.rgba}n[x]=C.buffer}return{bufs:n,plte:p}},e.quantize.getNearest=function(t,i,r,n,s){if(null==t.left)return t.tdst=e.quantize.dist(t.est.q,i,r,n,s),t;var a=e.quantize.planeDst(t.est,i,r,n,s),o=t.left,l=t.right;a>0&&(o=t.right,l=t.left);var h=e.quantize.getNearest(o,i,r,n,s);if(h.tdst<=a*a)return h;var c=e.quantize.getNearest(l,i,r,n,s);return c.tdsta;)n-=4;if(r>=n)break;var l=i[r>>2];i[r>>2]=i[n>>2],i[n>>2]=l,r+=4,n-=4}for(;o(t,r,s)>a;)r-=4;return r+4},e.quantize.vecDot=function(e,t,i){return e[t]*i[0]+e[t+1]*i[1]+e[t+2]*i[2]+e[t+3]*i[3]},e.quantize.stats=function(e,t,i){for(var r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],n=[0,0,0,0],s=i-t>>2,a=t;a>>0}},e.M4={multVec:function(e,t){return[e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7]*t[3],e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11]*t[3],e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]*t[3]]},dot:function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]},sml:function(e,t){return[e*t[0],e*t[1],e*t[2],e*t[3]]}},e.encode.alphaMul=function(e,t){for(var i=new Uint8Array(e.length),r=e.length>>2,n=0;n>>=b=y>>>24,p-=b,0==(b=y>>>16&255))z[s++]=65535&y;else{if(!(16&b)){if(64&b){if(32&b){i.mode=12;break e}e.msg="invalid literal/length code",i.mode=30;break e}y=m[(65535&y)+(f&(1<>>=b,p-=b),p<15&&(f+=S[r++]<>>=b=y>>>24,p-=b,16&(b=y>>>16&255)){if(w=65535&y,p<(b&=15)&&(f+=S[r++]<l){e.msg="invalid distance too far back",i.mode=30;break e}if(f>>>=b,p-=b,w>(b=s-a)){if((b=w-b)>c&&i.sane){e.msg="invalid distance too far back",i.mode=30;break e}if(A=0,C=u,0===d){if(A+=h-b,b2;)z[s++]=C[A++],z[s++]=C[A++],z[s++]=C[A++],x-=3;x&&(z[s++]=C[A++],x>1&&(z[s++]=C[A++]))}else{A=s-w;do{z[s++]=z[A++],z[s++]=z[A++],z[s++]=z[A++],x-=3}while(x>2);x&&(z[s++]=z[A++],x>1&&(z[s++]=z[A++]))}break}if(64&b){e.msg="invalid distance code",i.mode=30;break e}y=g[(65535&y)+(f&(1<>3,f&=(1<<(p-=x<<3))-1,e.next_in=r,e.next_out=s,e.avail_in=rCC,Color:()=>Color,builtinColorSchemes:()=>h,chains:()=>l,elementColors:()=>a,htmlColors:()=>r,residues:()=>o,ssColors:()=>n});class Color{constructor(e,t,i){return this.r=0,this.g=0,this.b=0,arguments.length>1&&"number"==typeof e?(this.r=e||0,this.g=t||0,this.b=i||0,this):this.set(e||0)}set(e){return e instanceof Color?e.clone():("number"==typeof e?this.setHex(e):"object"==typeof e&&(this.r=(null==e?void 0:e.r)||0,this.g=(null==e?void 0:e.g)||0,this.b=(null==e?void 0:e.b)||0),this)}setHex(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this}getHex(){return Math.round(255*this.r)<<16|Math.round(255*this.g)<<8|Math.round(255*this.b)}clone(){return new Color(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}scaled(){var e={};return e.r=Math.round(255*this.r),e.g=Math.round(255*this.g),e.b=Math.round(255*this.b),e.a=1,e}}class CC{static color(e){if(!e)return CC.cache[0];if(e instanceof Color)return e;if("number"==typeof e&&void 0!==CC.cache[e])return CC.cache[e];if(e&&Array.isArray(e))return e.map(CC.color);let t=CC.getHex(e),i=new Color(t);return CC.cache[t]=i,i}static getHex(e){if(Array.isArray(e))return e.map(CC.getHex);if("string"==typeof e){let t=e;if(!isNaN(parseInt(t)))return parseInt(t);if(t=t.trim(),4==t.length&&"#"==t[0]&&(t="#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]),7==t.length&&"#"==t[0])return parseInt(t.substring(1),16);let i=CC.rgbRegEx.exec(t);if(i){""!=i[1]&&console.log("WARNING: Opacity value in rgba ignored. Specify separately as opacity attribute.");let e=0;for(let t=2;t<5;t++){e*=256;let r=i[t].endsWith("%")?255*parseFloat(i[t])/100:parseFloat(i[t]);e+=Math.round(r)}return e}let n=r[t.toLowerCase()];return void 0!==n?n:(console.error("color not found",e.toLowerCase(),r),0)}return e}}CC.rgbRegEx=/rgb(a?)\(\s*([^ ,\)\t]+)\s*,\s*([^ ,\)\t]+)\s*,\s*([^ ,\)\t]+)/i,CC.cache={0:new Color(0)};const r={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgrey:11119017,darkgreen:25600,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,grey:8421504,green:32768,greenyellow:11403055,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgrey:13882323,lightgreen:9498256,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074,b:255,g:32768,r:16711680,c:49087,m:12517567,y:12566272,k:0,w:16777215},n={pyMol:{h:16711680,s:16776960,c:65280},Jmol:{h:16711808,s:16762880,c:16777215}},s={H:16777215,He:16761035,HE:16761035,Li:11674146,LI:11674146,B:65280,C:13158600,N:9408511,O:15728640,F:14329120,Na:255,NA:255,Mg:2263842,MG:2263842,Al:8421520,AL:8421520,Si:14329120,SI:14329120,P:16753920,S:16762930,Cl:65280,CL:65280,Ca:8421520,CA:8421520,Ti:8421520,TI:8421520,Cr:8421520,CR:8421520,Mn:8421520,MN:8421520,Fe:16753920,FE:16753920,Ni:10824234,NI:10824234,Cu:10824234,CU:10824234,Zn:10824234,ZN:10824234,Br:10824234,BR:10824234,Ag:8421520,AG:8421520,I:10494192,Ba:16753920,BA:16753920,Au:14329120,AU:14329120},a={defaultColor:16716947,Jmol:{H:16777215,He:14286847,HE:14286847,Li:13402367,LI:13402367,Be:12779264,BE:12779264,B:16758197,C:9474192,N:3166456,O:16715021,F:9494608,Ne:11789301,NE:11789301,Na:11230450,NA:11230450,Mg:9109248,MG:9109248,Al:12560038,AL:12560038,Si:1578e4,SI:1578e4,P:16744448,S:16777008,Cl:2093087,CL:2093087,Ar:8442339,AR:8442339,K:9388244,Ca:4062976,CA:4062976,Sc:15132390,SC:15132390,Ti:12567239,TI:12567239,V:10921643,Cr:9083335,CR:9083335,Mn:10255047,MN:10255047,Fe:14706227,FE:14706227,Co:15765664,CO:15765664,Ni:5296208,NI:5296208,Cu:13140019,CU:13140019,Zn:8224944,ZN:8224944,Ga:12750735,GA:12750735,Ge:6721423,GE:6721423,As:12419299,AS:12419299,Se:16752896,SE:16752896,Br:10889513,BR:10889513,Kr:6076625,KR:6076625,Rb:7351984,RB:7351984,Sr:65280,SR:65280,Y:9764863,Zr:9756896,ZR:9756896,Nb:7586505,NB:7586505,Mo:5551541,MO:5551541,Tc:3907230,TC:3907230,Ru:2396047,RU:2396047,Rh:687500,RH:687500,Pd:27013,PD:27013,Ag:12632256,AG:12632256,Cd:16767375,CD:16767375,In:10909043,IN:10909043,Sn:6717568,SN:6717568,Sb:10380213,SB:10380213,Te:13924864,TE:13924864,I:9699476,Xe:4366e3,XE:4366e3,Cs:5707663,CS:5707663,Ba:51456,BA:51456,La:7394559,LA:7394559,Ce:16777159,CE:16777159,Pr:14286791,PR:14286791,Nd:13107143,ND:13107143,Pm:10747847,PM:10747847,Sm:9437127,SM:9437127,Eu:6422471,EU:6422471,Gd:4587463,GD:4587463,Tb:3211207,TB:3211207,Dy:2097095,DY:2097095,Ho:65436,HO:65436,Er:58997,ER:58997,Tm:54354,TM:54354,Yb:48952,YB:48952,Lu:43812,LU:43812,Hf:5096191,HF:5096191,Ta:5089023,TA:5089023,W:2200790,Re:2522539,RE:2522539,Os:2516630,OS:2516630,Ir:1528967,IR:1528967,Pt:13684960,PT:13684960,Au:16765219,AU:16765219,Hg:12105936,HG:12105936,Tl:10900557,TL:10900557,Pb:5724513,PB:5724513,Bi:10375093,BI:10375093,Po:11230208,PO:11230208,At:7688005,AT:7688005,Rn:4358806,RN:4358806,Fr:4325478,FR:4325478,Ra:32e3,RA:32e3,Ac:7384058,AC:7384058,Th:47871,TH:47871,Pa:41471,PA:41471,U:36863,Np:33023,NP:33023,Pu:27647,PU:27647,Am:5528818,AM:5528818,Cm:7888099,CM:7888099,Bk:9064419,BK:9064419,Cf:10565332,CF:10565332,Es:11739092,ES:11739092,Fm:11739066,FM:11739066,Md:11734438,MD:11734438,No:12389767,NO:12389767,Lr:13041766,LR:13041766,Rf:13369433,RF:13369433,Db:13697103,DB:13697103,Sg:14221381,SG:14221381,Bh:14680120,BH:14680120,Hs:15073326,HS:15073326,Mt:15400998,MT:15400998},rasmol:s,defaultColors:Object.assign({},s),greenCarbon:Object.assign(Object.assign({},s),{C:65280}),cyanCarbon:Object.assign(Object.assign({},s),{C:65535}),magentaCarbon:Object.assign(Object.assign({},s),{C:16711935}),yellowCarbon:Object.assign(Object.assign({},s),{C:16776960}),whiteCarbon:Object.assign(Object.assign({},s),{C:16777215}),orangeCarbon:Object.assign(Object.assign({},s),{C:16753920}),purpleCarbon:Object.assign(Object.assign({},s),{C:8388736}),blueCarbon:Object.assign(Object.assign({},s),{C:255})},o={amino:{ALA:13158600,ARG:1334015,ASN:56540,ASP:15075850,CYS:15132160,GLN:56540,GLU:15075850,GLY:15461355,HIS:8553170,ILE:1016335,LEU:1016335,LYS:1334015,MET:15132160,PHE:3289770,PRO:14456450,SER:16422400,THR:16422400,TRP:11819700,TYR:3289770,VAL:1016335,ASX:16738740,GLX:16738740},shapely:{ALA:9240460,ARG:124,ASN:16743536,ASP:10485826,CYS:16777072,GLN:16731212,GLU:6684672,GLY:16777215,HIS:7368959,ILE:19456,LEU:4546117,LYS:4671416,MET:12099650,PHE:5459026,PRO:5395026,SER:16740418,THR:12078080,TRP:5195264,TYR:9203788,VAL:16747775,ASX:16711935,GLX:16711935},nucleic:{A:10526975,G:16740464,I:8454143,C:16747595,T:10551200,U:16744576}},l={atom:{A:12636415,B:11599792,C:16761032,D:16777088,E:16761087,F:11596016,G:16765040,H:15761536,I:16113331,J:49151,K:13458524,L:6737322,M:10145074,N:15631086,O:52945,P:65407,Q:3978097,R:139,S:12433259,T:25600,U:8388608,V:8421376,W:8388736,X:32896,Y:12092939,Z:11674146},hetatm:{A:9478351,B:8441752,C:13602992,D:13619056,E:13603023,F:8437952,G:13607008,H:12603504,I:12955267,J:42959,K:11881548,L:5682578,M:9090346,N:12481214,O:46753,P:53103,Q:3447649,R:187,S:10854235,T:37888,U:11534336,V:11579392,W:11534512,X:45232,Y:15250963,Z:12726834}},h={ssPyMol:{prop:"ss",map:n.pyMol},ssJmol:{prop:"ss",map:n.Jmol},Jmol:{prop:"elem",map:a.Jmol},amino:{prop:"resn",map:o.amino},shapely:{prop:"resn",map:o.shapely},nucleic:{prop:"resn",map:o.nucleic},chain:{prop:"chain",map:l.atom},rasmol:{prop:"elem",map:a.rasmol},default:{prop:"elem",map:a.defaultColors},greenCarbon:{prop:"elem",map:a.greenCarbon},chainHetatm:{prop:"chain",map:l.hetatm},cyanCarbon:{prop:"elem",map:a.cyanCarbon},magentaCarbon:{prop:"elem",map:a.magentaCarbon},purpleCarbon:{prop:"elem",map:a.purpleCarbon},whiteCarbon:{prop:"elem",map:a.whiteCarbon},orangeCarbon:{prop:"elem",map:a.orangeCarbon},yellowCarbon:{prop:"elem",map:a.yellowCarbon},blueCarbon:{prop:"elem",map:a.blueCarbon}}},307(e){"object"==typeof e.exports&&(e.exports=window.$3Dmol)},358(e,t,i){var r=i(981),n=15,s=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],l=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(e,t,i,h,c,d,u,f){var p,m,g,v,_,y,b,x,w,A=f.bits,C=0,S=0,z=0,M=0,T=0,E=0,L=0,F=0,I=0,D=0,O=null,R=0,k=new r.Buf16(16),P=new r.Buf16(16),U=null,N=0;for(C=0;C<=n;C++)k[C]=0;for(S=0;S=1&&0===k[M];M--);if(T>M&&(T=M),0===M)return c[d++]=20971520,c[d++]=20971520,f.bits=1,0;for(z=1;z0&&(0===e||1!==M))return-1;for(P[1]=0,C=1;C852||2===e&&I>592)return 1;for(;;){b=C-L,u[S]y?(x=U[N+u[S]],w=O[R+u[S]]):(x=96,w=0),p=1<>L)+(m-=p)]=b<<24|x<<16|w}while(0!==m);for(p=1<>=1;if(0!==p?(D&=p-1,D+=p):D=0,S++,0===--k[C]){if(C===M)break;C=t[i+u[S]]}if(C>T&&(D&v)!==g){for(0===L&&(L=T),_+=z,F=1<<(E=C-L);E+L852||2===e&&I>592)return 1;c[g=D&v]=T<<24|E<<16|_-d}}return 0!==D&&(c[_+D]=C-L<<24|64<<16),f.bits=T,0}},392(e,t,i){i.r(t),i.d(t,{assignBonds:()=>a});var r=i(408);const n=[{x:0,y:0,z:1},{x:0,y:1,z:-1},{x:0,y:1,z:0},{x:0,y:1,z:1},{x:1,y:-1,z:-1},{x:1,y:-1,z:0},{x:1,y:-1,z:1},{x:1,y:0,z:-1},{x:1,y:0,z:0},{x:1,y:0,z:1},{x:1,y:1,z:-1},{x:1,y:1,z:0},{x:1,y:1,z:1}],s=4.95;function a(e,t){for(let t=0,i=e.length;t>>1:e>>>1;t[i]=e}return t}();e.exports=function(e,i,r,n){var s=t,a=n+r;e^=-1;for(var o=n;o>>8^s[255&(e^i[o])];return-1^e}},408(e,t,i){i.r(t),i.d(t,{areConnected:()=>s});var r=i(40);const n=new Set(["Na","K","Ca","Mg","Mn","Sr"]);function s(e,t,i){if(i&&i.unboundCations&&(n.has(e.elem)||n.has(t.elem)))return!1;let s=(0,r.bondLength)(e.elem)+(0,r.bondLength)(t.elem);s+=.25,s*=s;let a=e.x-t.x;if(a*=a,a>s)return!1;let o=e.y-t.y;if(o*=o,o>s)return!1;let l=e.z-t.z;if(l*=l,l>s)return!1;const h=a+o+l;return!(isNaN(h)||h<.5||h>s||e.altLoc!==t.altLoc&&""!==e.altLoc.trim()&&""!==t.altLoc.trim())}},471(e,t){!function(e){function t(e,t,i){for(var r=(e.byteLength,0),n=i.length;n>r;r++){var s=i.charCodeAt(r);if(128>s)e.setUint8(t++,s>>>0&127);else if(2048>s)e.setUint8(t++,s>>>6&31|192),e.setUint8(t++,s>>>0&63|128);else if(65536>s)e.setUint8(t++,s>>>12&15|224),e.setUint8(t++,s>>>6&63|128),e.setUint8(t++,s>>>0&63|128);else{if(!(1114112>s))throw new Error("bad codepoint "+s);e.setUint8(t++,s>>>18&7|240),e.setUint8(t++,s>>>12&63|128),e.setUint8(t++,s>>>6&63|128),e.setUint8(t++,s>>>0&63|128)}}}function i(e){for(var t=0,i=0,r=e.length;r>i;i++){var n=e.charCodeAt(i);if(128>n)t+=1;else if(2048>n)t+=2;else if(65536>n)t+=3;else{if(!(1114112>n))throw new Error("bad codepoint "+n);t+=4}}return t}function r(e,n,s){var a=typeof e;if("string"===a){if(32>(o=i(e)))return n.setUint8(s,160|o),t(n,s+1,e),1+o;if(256>o)return n.setUint8(s,217),n.setUint8(s+1,o),t(n,s+2,e),2+o;if(65536>o)return n.setUint8(s,218),n.setUint16(s+1,o),t(n,s+3,e),3+o;if(4294967296>o)return n.setUint8(s,219),n.setUint32(s+1,o),t(n,s+5,e),5+o}if(e instanceof Uint8Array){var o=e.byteLength,l=new Uint8Array(n.buffer);if(256>o)return n.setUint8(s,196),n.setUint8(s+1,o),l.set(e,s+2),2+o;if(65536>o)return n.setUint8(s,197),n.setUint16(s+1,o),l.set(e,s+3),3+o;if(4294967296>o)return n.setUint8(s,198),n.setUint32(s+1,o),l.set(e,s+5),5+o}if("number"===a){if(!isFinite(e))throw new Error("Number not finite: "+e);if(Math.floor(e)!==e)return n.setUint8(s,203),n.setFloat64(s+1,e),9;if(e>=0){if(128>e)return n.setUint8(s,e),1;if(256>e)return n.setUint8(s,204),n.setUint8(s+1,e),2;if(65536>e)return n.setUint8(s,205),n.setUint16(s+1,e),3;if(4294967296>e)return n.setUint8(s,206),n.setUint32(s+1,e),5;throw new Error("Number too big 0x"+e.toString(16))}if(e>=-32)return n.setInt8(s,e),1;if(e>=-128)return n.setUint8(s,208),n.setInt8(s+1,e),2;if(e>=-32768)return n.setUint8(s,209),n.setInt16(s+1,e),3;if(e>=-2147483648)return n.setUint8(s,210),n.setInt32(s+1,e),5;throw new Error("Number too small -0x"+(-e).toString(16).substr(1))}if(null===e)return n.setUint8(s,192),1;if("boolean"===a)return n.setUint8(s,e?195:194),1;if("object"===a){var h=0,c=Array.isArray(e);if(c)o=e.length;else{var d=Object.keys(e);o=d.length}if(16>o?(n.setUint8(s,o|(c?144:128)),h=1):65536>o?(n.setUint8(s,c?220:222),n.setUint16(s+1,o),h=3):4294967296>o&&(n.setUint8(s,c?221:223),n.setUint32(s+1,o),h=5),c)for(var u=0;o>u;u++)h+=r(e[u],n,s+h);else for(u=0;o>u;u++){var f=d[u];h+=r(f,n,s+h),h+=r(e[f],n,s+h)}return h}throw new Error("Unknown type "+a)}function n(e){var t=typeof e;if("string"===t){if(32>(r=i(e)))return 1+r;if(256>r)return 2+r;if(65536>r)return 3+r;if(4294967296>r)return 5+r}if(e instanceof Uint8Array){if(256>(r=e.byteLength))return 2+r;if(65536>r)return 3+r;if(4294967296>r)return 5+r}if("number"===t){if(Math.floor(e)!==e)return 9;if(e>=0){if(128>e)return 1;if(256>e)return 2;if(65536>e)return 3;if(4294967296>e)return 5;throw new Error("Number too big 0x"+e.toString(16))}if(e>=-32)return 1;if(e>=-128)return 2;if(e>=-32768)return 3;if(e>=-2147483648)return 5;throw new Error("Number too small -0x"+e.toString(16).substr(1))}if("boolean"===t||null===e)return 1;if("object"===t){var r,s=0;if(Array.isArray(e)){r=e.length;for(var a=0;r>a;a++)s+=n(e[a])}else{var o=Object.keys(e);for(r=o.length,a=0;r>a;a++){var l=o[a];s+=n(l)+n(e[l])}}if(16>r)return 1+s;if(65536>r)return 3+s;if(4294967296>r)return 5+s;throw new Error("Array or object too long 0x"+r.toString(16))}throw new Error("Unknown type "+t)}function s(e){var t=new ArrayBuffer(n(e));return r(e,new DataView(t),0),new Uint8Array(t)}function a(e,t,i){return t?new e(t.buffer,t.byteOffset,t.byteLength/(i||1)):void 0}function o(e){return a(DataView,e)}function l(e){return a(Uint8Array,e)}function h(e){return a(Int8Array,e)}function c(e){return a(Int32Array,e,4)}function d(e){return a(Float32Array,e,4)}function u(e,t){var i=e.length/2;t||(t=new Int16Array(i));for(var r=0,n=0;i>r;++r,n+=2)t[r]=e[n]<<8^e[n+1];return t}function f(e,t){var i=e.length;t||(t=new Uint8Array(2*i));for(var r=o(t),n=0;i>n;++n)r.setInt16(2*n,e[n]);return l(t)}function p(e,t){var i=e.length/4;t||(t=new Int32Array(i));for(var r=0,n=0;i>r;++r,n+=4)t[r]=e[n]<<24^e[n+1]<<16^e[n+2]<<8^e[n+3];return t}function m(e,t){var i=e.length;t||(t=new Uint8Array(4*i));for(var r=o(t),n=0;i>n;++n)r.setInt32(4*n,e[n]);return l(t)}function g(e,t){var i=e.length;t||(t=new Float32Array(i/4));for(var r=o(t),n=o(e),s=0,a=0,l=i/4;l>s;++s,a+=4)r.setFloat32(a,n.getFloat32(a),!0);return t}function v(e,t,i){var r=e.length,n=1/t;i||(i=new Float32Array(r));for(var s=0;r>s;++s)i[s]=e[s]*n;return i}function _(e,t,i){var r=e.length;i||(i=new Int32Array(r));for(var n=0;r>n;++n)i[n]=Math.round(e[n]*t);return i}function y(e,t){var i,r;if(!t){var n=0;for(i=0,r=e.length;r>i;i+=2)n+=e[i+1];t=new e.constructor(n)}var s=0;for(i=0,r=e.length;r>i;i+=2)for(var a=e[i],o=e[i+1],l=0;o>l;++l)t[s]=a,++s;return t}function b(e){if(0===e.length)return new Int32Array;var t,i,r=2;for(t=1,i=e.length;i>t;++t)e[t-1]!==e[t]&&(r+=2);var n=new Int32Array(r),s=0,a=1;for(t=1,i=e.length;i>t;++t)e[t-1]!==e[t]?(n[s]=e[t-1],n[s+1]=a,a=1,s+=2):++a;return n[s]=e[e.length-1],n[s+1]=a,n}function x(e,t){var i=e.length;t||(t=new e.constructor(i)),i&&(t[0]=e[0]);for(var r=1;i>r;++r)t[r]=e[r]+t[r-1];return t}function w(e,t){var i=e.length;t||(t=new e.constructor(i)),t[0]=e[0];for(var r=1;i>r;++r)t[r]=e[r]-e[r-1];return t}function A(e,t){var i,r,n=e instanceof Int8Array?127:32767,s=-n-1,a=e.length;if(!t){var o=0;for(i=0;a>i;++i)e[i]s&&++o;t=new Int32Array(o)}for(i=0,r=0;a>i;){for(var l=0;e[i]===n||e[i]===s;)l+=e[i],++i;l+=e[i],++i,t[r]=l,++r}return t}function C(e,t){var i,r=t?127:32767,n=-r-1,s=e.length,a=0;for(i=0;s>i;++i)0===(h=e[i])?++a:h>0?(a+=Math.ceil(h/r),h%r===0&&(a+=1)):(a+=Math.ceil(h/n),h%n===0&&(a+=1));var o=t?new Int8Array(a):new Int16Array(a),l=0;for(i=0;s>i;++i){var h;if((h=e[i])>=0)for(;h>=r;)o[l]=r,++l,h-=r;else for(;n>=h;)o[l]=n,++l,h-=n;o[l]=h,++l}return o}function S(e,t){return x(y(e),t)}function z(e){return b(w(e))}function M(e,t,i){return v(y(e,c(i)),t,i)}function T(e,t){return b(_(e,t))}function E(e,t,i){return v(x(e,c(i)),t,i)}function L(e,t,i){return w(_(e,t),i)}function F(e,t,i){return v(A(e,c(i)),t,i)}function I(e,t,i){var r=A(e,c(i));return E(r,t,d(r))}function D(e,t,i){return C(L(e,t),i)}function O(e){var t=o(e),i=t.getInt32(0),r=t.getInt32(4),n=e.subarray(8,12);return[i,e=e.subarray(12),r,n]}function R(e,t,i,r){var n=new ArrayBuffer(12+r.byteLength),s=new Uint8Array(n),a=new DataView(n);return a.setInt32(0,e),a.setInt32(4,t),i&&s.set(i,8),s.set(r,12),s}function k(e){return R(2,e.length,void 0,l(e))}function P(e){return R(4,e.length,void 0,m(e))}function U(e,t){return R(5,e.length/t,m([t]),l(e))}function N(e){return R(6,e.length,void 0,m(b(e)))}function B(e){return R(8,e.length,void 0,m(z(e)))}function G(e,t){return R(9,e.length,m([t]),m(T(e,t)))}function V(e,t){return R(10,e.length,m([t]),f(D(e,t)))}function j(e){var t={};return ee.forEach(function(i){void 0!==e[i]&&(t[i]=e[i])}),e.bondAtomList&&(t.bondAtomList=P(e.bondAtomList)),e.bondOrderList&&(t.bondOrderList=k(e.bondOrderList)),t.xCoordList=V(e.xCoordList,1e3),t.yCoordList=V(e.yCoordList,1e3),t.zCoordList=V(e.zCoordList,1e3),e.bFactorList&&(t.bFactorList=V(e.bFactorList,100)),e.atomIdList&&(t.atomIdList=B(e.atomIdList)),e.altLocList&&(t.altLocList=N(e.altLocList)),e.occupancyList&&(t.occupancyList=G(e.occupancyList,100)),t.groupIdList=B(e.groupIdList),t.groupTypeList=P(e.groupTypeList),e.secStructList&&(t.secStructList=k(e.secStructList)),e.insCodeList&&(t.insCodeList=N(e.insCodeList)),e.sequenceIndexList&&(t.sequenceIndexList=B(e.sequenceIndexList)),t.chainIdList=U(e.chainIdList,4),e.chainNameList&&(t.chainNameList=U(e.chainNameList,4)),t}function H(e){function t(e){for(var t={},i=0;e>i;i++)t[s()]=s();return t}function i(t){var i=e.subarray(a,a+t);return a+=t,i}function r(t){var i=e.subarray(a,a+t);a+=t;var r=65535;if(t>r){for(var n=[],s=0;si;i++)t[i]=s();return t}function s(){var s,l,h=e[a];if(!(128&h))return a++,h;if(128==(240&h))return a++,t(l=15&h);if(144==(240&h))return a++,n(l=15&h);if(160==(224&h))return a++,r(l=31&h);if(!(224&~h))return s=o.getInt8(a),a++,s;switch(h){case 192:return a++,null;case 194:return a++,!1;case 195:return a++,!0;case 196:return l=o.getUint8(a+1),a+=2,i(l);case 197:return l=o.getUint16(a+1),a+=3,i(l);case 198:return l=o.getUint32(a+1),a+=5,i(l);case 202:return s=o.getFloat32(a+1),a+=5,s;case 203:return s=o.getFloat64(a+1),a+=9,s;case 204:return s=e[a+1],a+=2,s;case 205:return s=o.getUint16(a+1),a+=3,s;case 206:return s=o.getUint32(a+1),a+=5,s;case 208:return s=o.getInt8(a+1),a+=2,s;case 209:return s=o.getInt16(a+1),a+=3,s;case 210:return s=o.getInt32(a+1),a+=5,s;case 217:return l=o.getUint8(a+1),a+=2,r(l);case 218:return l=o.getUint16(a+1),a+=3,r(l);case 219:return l=o.getUint32(a+1),a+=5,r(l);case 220:return l=o.getUint16(a+1),a+=3,n(l);case 221:return l=o.getUint32(a+1),a+=5,n(l);case 222:return l=o.getUint16(a+1),a+=3,t(l);case 223:return l=o.getUint32(a+1),a+=5,t(l)}throw new Error("Unknown type 0x"+h.toString(16))}var a=0,o=new DataView(e.buffer);return s()}function W(e,t,i,r){switch(e){case 1:return g(t);case 2:return h(t);case 3:return u(t);case 4:return p(t);case 5:return l(t);case 6:return y(p(t),new Uint8Array(i));case 7:return y(p(t));case 8:return S(p(t));case 9:return M(p(t),p(r)[0]);case 10:return I(u(t),p(r)[0]);case 11:return v(u(t),p(r)[0]);case 12:return F(u(t),p(r)[0]);case 13:return F(h(t),p(r)[0]);case 14:return A(u(t));case 15:return A(h(t))}}function q(e,t){var i=(t=t||{}).ignoreFields,r={};return ie.forEach(function(t){var n=!!i&&-1!==i.indexOf(t),s=e[t];n||void 0===s||(s instanceof Uint8Array?r[t]=W.apply(null,O(s)):r[t]=s)}),r}function Y(e){return String.fromCharCode.apply(null,e).replace(/\0/g,"")}function Z(e,t,i){var r,n,s,a,o,l,h=(i=i||{}).firstModelOnly,c=t.onModel,d=t.onChain,u=t.onGroup,f=t.onAtom,p=t.onBond,m=0,g=0,v=0,_=0,y=0,b=-1,x=e.chainNameList,w=e.secStructList,A=e.insCodeList,C=e.sequenceIndexList,S=e.atomIdList,z=e.bFactorList,M=e.altLocList,T=e.occupancyList,E=e.bondAtomList,L=e.bondOrderList;for(r=0,n=e.chainsPerModel.length;n>r&&!(h&&m>0);++r){var F=e.chainsPerModel[m];for(c&&c({chainCount:F,modelIndex:m}),s=0;F>s;++s){var I=e.groupsPerChain[g];if(d){var D=Y(e.chainIdList.subarray(4*g,4*g+4)),O=null;x&&(O=Y(x.subarray(4*g,4*g+4))),d({groupCount:I,chainIndex:g,modelIndex:m,chainId:D,chainName:O})}for(a=0;I>a;++a){var R=e.groupList[e.groupTypeList[v]],k=R.atomNameList.length;if(u){var P=null;w&&(P=w[v]);var U=null;e.insCodeList&&(U=String.fromCharCode(A[v]));var N=null;C&&(N=C[v]),u({atomCount:k,groupIndex:v,chainIndex:g,modelIndex:m,groupId:e.groupIdList[v],groupType:e.groupTypeList[v],groupName:R.groupName,singleLetterCode:R.singleLetterCode,chemCompType:R.chemCompType,secStruct:P,insCode:U,sequenceIndex:N})}for(o=0;k>o;++o){if(f){var B=null;S&&(B=S[_]);var G=null;z&&(G=z[_]);var V=null;M&&(V=String.fromCharCode(M[_]));var j=null;T&&(j=T[_]),f({atomIndex:_,groupIndex:v,chainIndex:g,modelIndex:m,atomId:B,element:R.elementList[o],atomName:R.atomNameList[o],formalCharge:R.formalChargeList[o],xCoord:e.xCoordList[_],yCoord:e.yCoordList[_],zCoord:e.zCoordList[_],bFactor:G,altLoc:V,occupancy:j})}_+=1}if(p){var H=R.bondAtomList;for(o=0,l=R.bondOrderList.length;l>o;++o)p({atomIndex1:_-k+H[2*o],atomIndex2:_-k+H[2*o+1],bondOrder:R.bondOrderList[o]})}v+=1}g+=1}if(y=b+1,b=_-1,p&&E)for(o=0,l=E.length;l>o;o+=2){var W=E[o],q=E[o+1];(W>=y&&b>=W||q>=y&&b>=q)&&p({atomIndex1:W,atomIndex2:q,bondOrder:L?L[o/2]:null})}m+=1}}function X(e){return s(j(e))}function K(e,t){return e instanceof ArrayBuffer&&(e=new Uint8Array(e)),q(e instanceof Uint8Array?H(e):e,t)}function Q(e,t,i,r){function n(){try{var e=K(s.response);i(e)}catch(e){r(e)}}var s=new XMLHttpRequest;s.addEventListener("load",n,!0),s.addEventListener("error",r,!0),s.responseType="arraybuffer",s.open("GET",t+e.toUpperCase()),s.send()}function $(e,t,i){Q(e,se,t,i)}function J(e,t,i){Q(e,ae,t,i)}var ee=["mmtfVersion","mmtfProducer","unitCell","spaceGroup","structureId","title","depositionDate","releaseDate","experimentalMethods","resolution","rFree","rWork","bioAssemblyList","ncsOperatorList","entityList","groupList","numBonds","numAtoms","numGroups","numChains","numModels","groupsPerChain","chainsPerModel"],te=["xCoordList","yCoordList","zCoordList","groupIdList","groupTypeList","chainIdList","bFactorList","atomIdList","altLocList","occupancyList","secStructList","insCodeList","sequenceIndexList","chainNameList","bondAtomList","bondOrderList"],ie=ee.concat(te),re="v1.0.1",ne="//mmtf.rcsb.org/v1.0/",se=ne+"full/",ae=ne+"reduced/";e.encode=X,e.decode=K,e.traverse=Z,e.fetch=$,e.fetchReduced=J,e.version=re,e.fetchUrl=se,e.fetchReducedUrl=ae,e.encodeMsgpack=s,e.encodeMmtf=j,e.decodeMsgpack=H,e.decodeMmtf=q}(t)},529(e,t,i){i.r(t),i.d(t,{Matrix3:()=>Matrix3,Matrix4:()=>Matrix4,Quaternion:()=>Quaternion,Ray:()=>Ray,Vector2:()=>Vector2,Vector3:()=>Vector3,clamp:()=>r,conversionMatrix3:()=>d,degToRad:()=>s});class Quaternion{constructor(e,t,i,r){this.x=e||0,this.y=t||0,this.z=i||0,this.w=void 0!==r?r:1}set(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}conjugate(){return this.x*=-1,this.y*=-1,this.z*=-1,this}inverse(){return this.conjugate().normalize()}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}lengthxyz(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}normalize(){let e=this.length();return 0===e?(this.x=0,this.y=0,this.z=0,this.w=1):(e=1/e,this.x*=e,this.y*=e,this.z*=e,this.w*=e),this}multiply(e){return this.multiplyQuaternions(this,e)}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}multiplyQuaternions(e,t){const i=e.x,r=e.y,n=e.z,s=e.w,a=t.x,o=t.y,l=t.z,h=t.w;return this.x=i*h+s*a+r*l-n*o,this.y=r*h+s*o+n*a-i*l,this.z=n*h+s*l+i*o-r*a,this.w=s*h-i*a-r*o-n*l,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}clone(){return new Quaternion(this.x,this.y,this.z,this.w)}setFromEuler(e){const t=Math.cos(e.x/2),i=Math.cos(e.y/2),r=Math.cos(e.z/2),n=Math.sin(e.x/2),s=Math.sin(e.y/2),a=Math.sin(e.z/2);return this.x=n*i*r+t*s*a,this.y=t*s*r-n*i*a,this.z=t*i*a+n*s*r,this.w=t*i*r-n*s*a,this}}class Vector2{constructor(e,t){this.x=e||0,this.y=t||0}set(e,t){return this.x=e,this.y=t,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}copy(e){return this.x=e.x,this.y=e.y,this}clone(){return new Vector2(this.x,this.y)}}function r(e,t,i){return Math.min(Math.max(e,t),i)}const n=Math.PI/180;function s(e){return e*n}var a,o,l,h,c;class Matrix4{constructor(e=1,t=0,i=0,r=0,n=0,s=1,a=0,o=0,l=0,h=0,c=1,d=0,u=0,f=0,p=0,m=1){void 0!==e&&"number"!=typeof e?this.elements=new Float32Array(e):(this.elements=new Float32Array(16),this.elements[0]=e,this.elements[4]=t,this.elements[8]=i,this.elements[12]=r,this.elements[1]=n,this.elements[5]=s,this.elements[9]=a,this.elements[13]=o,this.elements[2]=l,this.elements[6]=h,this.elements[10]=c,this.elements[14]=d,this.elements[3]=u,this.elements[7]=f,this.elements[11]=p,this.elements[15]=m)}makeScale(e,t,i){throw new Error("Method not implemented.")}set(e,t,i,r,n,s,a,o,l,h,c,d,u,f,p,m){const g=this.elements;return g[0]=e,g[4]=t,g[8]=i,g[12]=r,g[1]=n,g[5]=s,g[9]=a,g[13]=o,g[2]=l,g[6]=h,g[10]=c,g[14]=d,g[3]=u,g[7]=f,g[11]=p,g[15]=m,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}copy(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]),this}matrix3FromTopLeft(){const e=this.elements;return new Matrix3(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10])}setRotationFromEuler(e,t){const i=this.elements,{x:r,y:n,z:s}=e,a=Math.cos(r),o=Math.sin(r),l=Math.cos(n),h=Math.sin(n),c=Math.cos(s),d=Math.sin(s);if(void 0===t||"XYZ"===t){const e=a*c,t=a*d,r=o*c,n=o*d;i[0]=l*c,i[4]=-l*d,i[8]=h,i[1]=t+r*h,i[5]=e-n*h,i[9]=-o*l,i[2]=n-e*h,i[6]=r+t*h,i[10]=a*l}else console.error(`Error with matrix4 setRotationFromEuler. Order: ${t}`);return this}setRotationFromQuaternion(e){const t=this.elements,{x:i,y:r,z:n,w:s}=e,a=i+i,o=r+r,l=n+n,h=i*a,c=i*o,d=i*l,u=r*o,f=r*l,p=n*l,m=s*a,g=s*o,v=s*l;return t[0]=1-(u+p),t[4]=c-v,t[8]=d+g,t[1]=c+v,t[5]=1-(h+p),t[9]=f-m,t[2]=d-g,t[6]=f+m,t[10]=1-(h+u),this}multiplyMatrices(e,t){const i=e.elements,r=t.elements,n=this.elements,s=i[0],a=i[4],o=i[8],l=i[12],h=i[1],c=i[5],d=i[9],u=i[13],f=i[2],p=i[6],m=i[10],g=i[14],v=i[3],_=i[7],y=i[11],b=i[15],x=r[0],w=r[4],A=r[8],C=r[12],S=r[1],z=r[5],M=r[9],T=r[13],E=r[2],L=r[6],F=r[10],I=r[14],D=r[3],O=r[7],R=r[11],k=r[15];return n[0]=s*x+a*S+o*E+l*D,n[4]=s*w+a*z+o*L+l*O,n[8]=s*A+a*M+o*F+l*R,n[12]=s*C+a*T+o*I+l*k,n[1]=h*x+c*S+d*E+u*D,n[5]=h*w+c*z+d*L+u*O,n[9]=h*A+c*M+d*F+u*R,n[13]=h*C+c*T+d*I+u*k,n[2]=f*x+p*S+m*E+g*D,n[6]=f*w+p*z+m*L+g*O,n[10]=f*A+p*M+m*F+g*R,n[14]=f*C+p*T+m*I+g*k,n[3]=v*x+_*S+y*E+b*D,n[7]=v*w+_*z+y*L+b*O,n[11]=v*A+_*M+y*F+b*R,n[15]=v*C+_*T+y*I+b*k,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}makeTranslation(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}snap(e){e||(e=4);const t=Math.pow(10,4),i=this.elements;for(let e=0;e<16;e++){const r=Math.round(i[e]);r===Math.round(i[e]*t)/t&&(i[e]=r)}return this}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e){const t=this.elements;return t[12]=e.x,t[13]=e.y,t[14]=e.z,this}translate(e){const t=this.elements;return t[12]+=e.x,t[13]+=e.y,t[14]+=e.z,this}getInverse(e,t){const i=this.elements,r=e.elements,n=r[0],s=r[4],a=r[8],o=r[12],l=r[1],h=r[5],c=r[9],d=r[13],u=r[2],f=r[6],p=r[10],m=r[14],g=r[3],v=r[7],_=r[11],y=r[15];i[0]=c*m*v-d*p*v+d*f*_-h*m*_-c*f*y+h*p*y,i[4]=o*p*v-a*m*v-o*f*_+s*m*_+a*f*y-s*p*y,i[8]=a*d*v-o*c*v+o*h*_-s*d*_-a*h*y+s*c*y,i[12]=o*c*f-a*d*f-o*h*p+s*d*p+a*h*m-s*c*m,i[1]=d*p*g-c*m*g-d*u*_+l*m*_+c*u*y-l*p*y,i[5]=a*m*g-o*p*g+o*u*_-n*m*_-a*u*y+n*p*y,i[9]=o*c*g-a*d*g-o*l*_+n*d*_+a*l*y-n*c*y,i[13]=a*d*u-o*c*u+o*l*p-n*d*p-a*l*m+n*c*m,i[2]=h*m*g-d*f*g+d*u*v-l*m*v-h*u*y+l*f*y,i[6]=o*f*g-s*m*g-o*u*v+n*m*v+s*u*y-n*f*y,i[10]=s*d*g-o*h*g+o*l*v-n*d*v-s*l*y+n*h*y,i[14]=o*h*u-s*d*u-o*l*f+n*d*f+s*l*m-n*h*m,i[3]=c*f*g-h*p*g-c*u*v+l*p*v+h*u*_-l*f*_,i[7]=s*p*g-a*f*g+a*u*v-n*p*v-s*u*_+n*f*_,i[11]=a*h*g-s*c*g-a*l*v+n*c*v+s*l*_-n*h*_,i[15]=s*c*u-a*h*u+a*l*f-n*c*f-s*l*p+n*h*p;const b=n*i[0]+l*i[4]+u*i[8]+g*i[12];if(0===b){const e="Matrix4.getInverse(): can't invert matrix, determinant is 0";if(t)throw new Error(e);return console.warn(e),this.identity(),this}return this.multiplyScalar(1/b),this}isReflected(){const e=this.elements,t=e[0],i=e[4],r=e[8],n=e[1],s=e[5],a=e[9],o=e[2],l=e[6],h=e[10];return t*s*h+n*l*r+o*i*a-o*s*r-n*i*h-t*l*a<0}scale(e){const t=this.elements,{x:i}=e,{y:r}=e,{z:n}=e;return t[0]*=i,t[4]*=r,t[8]*=n,t[1]*=i,t[5]*=r,t[9]*=n,t[2]*=i,t[6]*=r,t[10]*=n,t[3]*=i,t[7]*=r,t[11]*=n,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,Math.max(i,r)))}makeFrustum(e,t,i,r,n,s){const a=this.elements,o=2*n/(t-e),l=2*n/(r-i),h=(t+e)/(t-e),c=(r+i)/(r-i),d=-(s+n)/(s-n),u=-2*s*n/(s-n);return a[0]=o,a[4]=0,a[8]=h,a[12]=0,a[1]=0,a[5]=l,a[9]=c,a[13]=0,a[2]=0,a[6]=0,a[10]=d,a[14]=u,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makePerspective(e,t,i,r){const n=i*Math.tan(s(.5*e)),a=-n,o=a*t,l=n*t;return this.makeFrustum(o,l,a,n,i,r)}makeOrthographic(e,t,i,r,n,s){const a=this.elements,o=1/(t-e),l=1/(i-r),h=1/(s-n),c=(t+e)*o,d=(i+r)*l,u=(s+n)*h;return a[0]=2*o,a[4]=0,a[8]=0,a[12]=-c,a[1]=0,a[5]=2*l,a[9]=0,a[13]=-d,a[2]=0,a[6]=0,a[10]=-2*h,a[14]=-u,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}isEqual(e){const t=e.elements,i=this.elements;return i[0]===t[0]&&i[4]===t[4]&&i[8]===t[8]&&i[12]===t[12]&&i[1]===t[1]&&i[5]===t[5]&&i[9]===t[9]&&i[13]===t[13]&&i[2]===t[2]&&i[6]===t[6]&&i[10]===t[10]&&i[14]===t[14]&&i[3]===t[3]&&i[7]===t[7]&&i[11]===t[11]&&i[15]===t[15]}clone(){const e=this.elements;return new Matrix4(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])}isIdentity(){const e=this.elements;return 1===e[0]&&0===e[4]&&0===e[8]&&0===e[12]&&0===e[1]&&1===e[5]&&0===e[9]&&0===e[13]&&0===e[2]&&0===e[6]&&1===e[10]&&0===e[14]&&0===e[3]&&0===e[7]&&0===e[11]&&1===e[15]}isNearlyIdentity(e){return this.clone().snap(e).isIdentity()}getScale(e){const t=this.elements;return e=e||new Vector3,l.set(t[0],t[1],t[2]),h.set(t[4],t[5],t[6]),c.set(t[8],t[9],t[10]),e.x=l.length(),e.y=h.length(),e.z=c.length(),e}lookAt(e,t,i){const r=this.elements;return c.subVectors(e,t).normalize(),0===c.length()&&(c.z=1),l.crossVectors(i,c).normalize(),0===l.length()&&(c.x+=1e-4,l.crossVectors(i,c).normalize()),h.crossVectors(c,l),r[0]=l.x,r[4]=h.x,r[8]=c.x,r[1]=l.y,r[5]=h.y,r[9]=c.y,r[2]=l.z,r[6]=h.z,r[10]=c.z,this}compose(e,t,i){const r=this.elements;return a.identity(),a.setRotationFromQuaternion(t),o.makeScale(i.x,i.y,i.z),this.multiplyMatrices(a,o),r[12]=e.x,r[13]=e.y,r[14]=e.z,this}}a=new Matrix4,o=new Matrix4;class Vector3{constructor(e,t,i){this.x=e||0,this.y=t||0,this.z=i||0,this.atomid=void 0}set(e,t,i){return this.x=e,this.y=t,this.z=i,this}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}divideScalar(e){return 0!==e?(this.x/=e,this.y/=e,this.z/=e):(this.x=0,this.y=0,this.z=0),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y,r=this.z-e.z;return t*t+i*i+r*r}applyMatrix3(e){const{x:t}=this,{y:i}=this,{z:r}=this,n=e.elements;return this.x=n[0]*t+n[3]*i+n[6]*r,this.y=n[1]*t+n[4]*i+n[7]*r,this.z=n[2]*t+n[5]*i+n[8]*r,this}applyMatrix4(e){const{x:t}=this,{y:i}=this,{z:r}=this,n=e.elements;return this.x=n[0]*t+n[4]*i+n[8]*r+n[12],this.y=n[1]*t+n[5]*i+n[9]*r+n[13],this.z=n[2]*t+n[6]*i+n[10]*r+n[14],this}applyProjection(e){const{x:t}=this,{y:i}=this,{z:r}=this,n=e.elements,s=n[3]*t+n[7]*i+n[11]*r+n[15];return this.x=(n[0]*t+n[4]*i+n[8]*r+n[12])/s,this.y=(n[1]*t+n[5]*i+n[9]*r+n[13])/s,this.z=(n[2]*t+n[6]*i+n[10]*r+n[14])/s,this}applyQuaternion(e){const{x:t}=this,{y:i}=this,{z:r}=this,n=e.x,s=e.y,a=e.z,o=e.w,l={};l.x=2*(i*a-r*s),l.y=2*(r*n-t*a),l.z=2*(t*s-i*n);const h={};return h.x=l.y*a-l.z*s,h.y=l.z*n-l.x*a,h.z=l.x*s-l.y*n,this.x=t+o*l.x+h.x,this.y=i+o*l.y+h.y,this.z=r+o*l.z+h.z,this}negate(){return this.multiplyScalar(-1)}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}normalize(){return this.divideScalar(this.length())}cross(e){const{x:t}=this,{y:i}=this,{z:r}=this;return this.x=i*e.z-r*e.y,this.y=r*e.x-t*e.z,this.z=t*e.y-i*e.x,this}crossVectors(e,t){return this.x=e.y*t.z-e.z*t.y,this.y=e.z*t.x-e.x*t.z,this.z=e.x*t.y-e.y*t.x,this}equals(e){return this.x==e.x&&this.y==e.y&&this.z==e.z}getPositionFromMatrix(e){return this.x=e.elements[12],this.y=e.elements[13],this.z=e.elements[14],this}setEulerFromRotationMatrix(e,t){const i=e.elements,n=i[0],s=i[4],a=i[8],o=i[5],l=i[9],h=i[6],c=i[10];return void 0===t||"XYZ"===t?(this.y=Math.asin(r(a,-1,1)),Math.abs(a)<.99999?(this.x=Math.atan2(-l,c),this.z=Math.atan2(-s,n)):(this.x=Math.atan2(h,o),this.z=0)):console.error(`Error with vector's setEulerFromRotationMatrix: Unknown order: ${t}`),this}rotateAboutVector(e,t){e.normalize();const i=Math.cos(t),r=Math.sin(t),n=this.clone().multiplyScalar(i),s=e.clone().cross(this).multiplyScalar(r),a=e.clone().multiplyScalar(e.clone().dot(this)).multiplyScalar(1-i),o=n.add(s).add(a);return this.x=o.x,this.y=o.y,this.z=o.z,this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}transformDirection(e){const{x:t}=this,{y:i}=this,{z:r}=this,n=e.elements;return this.x=n[0]*t+n[4]*i+n[8]*r,this.y=n[1]*t+n[5]*i+n[9]*r,this.z=n[2]*t+n[6]*i+n[10]*r,this.normalize()}clone(){return new Vector3(this.x,this.y,this.z)}unproject(e){const t=a;return t.multiplyMatrices(e.matrixWorld,t.getInverse(e.projectionMatrix)),this.applyMatrix4(t)}}l=new Vector3,h=new Vector3,c=new Vector3;class Matrix3{constructor(e=1,t=0,i=0,r=0,n=1,s=0,a=0,o=0,l=1){this.elements=new Float32Array(9),this.set(e,t,i,r,n,s,a,o,l)}set(e,t,i,r,n,s,a,o,l){const h=this.elements;return h[0]=e,h[3]=t,h[6]=i,h[1]=r,h[4]=n,h[7]=s,h[2]=a,h[5]=o,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=e.elements;this.set(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8])}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}getInverse3(e){const t=e.elements,i=this.elements;i[0]=t[4]*t[8]-t[5]*t[7],i[3]=t[6]*t[5]-t[3]*t[8],i[6]=t[3]*t[7]-t[6]*t[4],i[1]=t[7]*t[2]-t[1]*t[8],i[4]=t[0]*t[8]-t[6]*t[2],i[7]=t[1]*t[6]-t[0]*t[7],i[2]=t[1]*t[5]-t[2]*t[4],i[5]=t[2]*t[3]-t[0]*t[5],i[8]=t[0]*t[4]-t[1]*t[3];const r=t[0]*i[0]+t[3]*i[1]+t[6]*i[2];return this.multiplyScalar(1/r),this}getInverse(e,t){const i=e.elements,r=this.elements;r[0]=i[10]*i[5]-i[6]*i[9],r[1]=-i[10]*i[1]+i[2]*i[9],r[2]=i[6]*i[1]-i[2]*i[5],r[3]=-i[10]*i[4]+i[6]*i[8],r[4]=i[10]*i[0]-i[2]*i[8],r[5]=-i[6]*i[0]+i[2]*i[4],r[6]=i[9]*i[4]-i[5]*i[8],r[7]=-i[9]*i[0]+i[1]*i[8],r[8]=i[5]*i[0]-i[1]*i[4];const n=i[0]*r[0]+i[1]*r[3]+i[2]*r[6];if(0===n){const e="Matrix3.getInverse(): can't invert matrix, determinant is 0";if(t)throw new Error(e);return console.warn(e),this.identity(),this}return this.multiplyScalar(1/n),this}getDeterminant(){const e=this.elements;return e[0]*e[4]*e[8]+e[1]*e[5]*e[6]+e[2]*e[3]*e[7]-e[2]*e[4]*e[6]-e[1]*e[3]*e[8]-e[0]*e[5]*e[7]}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}clone(){const e=this.elements;return new Matrix3(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8])}getMatrix4(){const e=this.elements;return new Matrix4(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0)}}class Ray{constructor(e,t){this.origin=void 0!==e?e:new Vector3,this.direction=void 0!==t?t:new Vector3}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return(t||new Vector3).copy(this.direction).multiplyScalar(e).add(this.origin)}recast(e){const t=l;return this.origin.copy(this.at(e,t)),this}closestPointToPoint(e,t){const i=t||new Vector3;i.subVectors(e,this.origin);const r=i.dot(this.direction);return i.copy(this.direction).multiplyScalar(r).add(this.origin)}distanceToPoint(e){const t=l,i=t.subVectors(e,this.origin).dot(this.direction);return t.copy(this.direction).multiplyScalar(i).add(this.origin),t.distanceTo(e)}isIntersectionCylinder(){}isIntersectionSphere(e){return this.distanceToPoint(e.center)<=e.radius}isIntersectionPlane(e){return 0!==e.normal.dot(this.direction)||0===e.distanceToPoint(this.origin)}distanceToPlane(e){const t=e.normal.dot(this.direction);return 0===t?0===e.distanceToPoint(this.origin)?0:void 0:-(this.origin.dot(e.normal)+e.constant)/t}intersectPlane(e,t){const i=this.distanceToPlane(e);if(void 0!==i)return this.at(i,t)}applyMatrix4(e){return this.direction.add(this.origin).applyMatrix4(e),this.origin.applyMatrix4(e),this.direction.sub(this.origin),this}clone(){return(new Ray).copy(this)}}function d(e,t,i,r,n,s){r=r*Math.PI/180,n=n*Math.PI/180,s=s*Math.PI/180;const a=e=>e*e,o=Math.cos(r),l=Math.cos(n),h=Math.cos(s),c=Math.sin(s);return new Matrix3(e,t*h,i*l,0,t*c,i*(o-l*h)/c,0,0,i*Math.sqrt(1-a(o)-a(l)-a(h)+2*o*l*h)/c)}},546(e,t,i){i.r(t),i.d(t,{CustomLinear:()=>CustomLinear,Gradient:()=>Gradient,GradientType:()=>GradientType,ROYGB:()=>ROYGB,RWB:()=>RWB,Sinebow:()=>Sinebow,builtinGradients:()=>a,getGradient:()=>s,normalizeValue:()=>n});var r=i(222);class GradientType{}function n(e,t,i){return t>=e?(it&&(i=t),{lo:e,hi:t,val:i}):(i>e&&(i=e),i=2?(this.max=e[1],this.min=e[0]):e&&t&&!Array.isArray(e)&&(this.min=e,this.max=t)}range(){return void 0!==this.min&&void 0!==this.max?[this.min,this.max]:null}valueToHex(e,t){var i,r;if(e=this.mult*e,t?(i=t[0],r=t[1]):(i=this.min,r=this.max),void 0===e)return 16777215;var s=n(i,r,e);i=s.lo;var a,o=((r=s.hi)+i)/2;return(e=s.val)<(o=t&&void 0!==t[2]?t[2]:void 0!==this.mid?this.mid:(i+r)/2)?16711680+256*(a=Math.floor(255*Math.sqrt((e-i)/(o-i))))+a:e>o?65536*(a=Math.floor(255*Math.sqrt(1-(e-o)/(r-o))))+256*a+255:16777215}}class ROYGB extends GradientType{constructor(e,t){super(),this.gradient="ROYGB",this.mult=1,this.min=e,this.max=t,void 0===t&&Array.isArray(e)&&e.length>=2?(this.max=e[1],this.min=e[0]):e&&t&&!Array.isArray(e)&&(this.min=e,this.max=t)}valueToHex(e,t){var i,r;if(e=this.mult*e,t?(i=t[0],r=t[1]):(i=this.min,r=this.max),void 0===e)return 16777215;var s=n(i,r,e),a=((i=s.lo)+(r=s.hi))/2,o=(i+a)/2,l=(a+r)/2;return(e=s.val)=2&&(this.max=e[1],this.min=e[0]),t=2?(this.max=e[1],this.min=e[0],n=t):(this.min=e,this.max=t,n=i),n)for(let e of n)this.colors.push(r.CC.color(e));else this.colors.push(r.CC.color(0))}range(){return void 0!==this.min&&void 0!==this.max?[this.min,this.max]:null}valueToHex(e,t){var i,s;if(t?(i=t[0],s=t[1]):(i=this.min,s=this.max),void 0===e)return 16777215;var a=n(i,s,e);i=a.lo,s=a.hi,e=a.val;let o=this.colors.length,l=(s-i)/o,h=Math.min(Math.floor((e-i)/l),o-1),c=Math.min(h+1,o-1),d=(e-i-h*l)/l,u=this.colors[h],f=this.colors[c];return new r.Color(u.r+d*(f.r-u.r),u.g+d*(f.g-u.g),u.b+d*(f.b-u.b)).getHex()}}const a={rwb:RWB,RWB,roygb:ROYGB,ROYGB,sinebow:Sinebow,linear:CustomLinear};class Gradient extends GradientType{valueToHex(e,t){return 0}range(){return null}}Gradient.RWB=RWB,Gradient.ROYGB=ROYGB,Gradient.Sinebow=Sinebow,Gradient.CustomLinear=CustomLinear,Gradient.builtinGradients=a,Gradient.normalizeValue=n,Gradient.getGradient=s},663(e,t,i){var r=i(981),n=i(701),s=i(407),a=i(165),o=i(358),l=-2,h=12,c=30;function d(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function u(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new r.Buf32(852),t.distcode=t.distdyn=new r.Buf32(592),t.sane=1,t.back=-1,0):l}function p(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,f(e)):l}function m(e,t){var i,r;return e&&e.state?(r=e.state,t<0?(i=0,t=-t):(i=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?l:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=i,r.wbits=t,p(e))):l}function g(e,t){var i,r;return e?(r=new u,e.state=r,r.window=null,0!==(i=m(e,t))&&(e.state=null),i):l}var v,_,y=!0;function b(e){if(y){var t;for(v=new r.Buf32(512),_=new r.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(o(1,e.lens,0,288,v,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;o(2,e.lens,0,32,_,0,e.work,{bits:5}),y=!1}e.lencode=v,e.lenbits=9,e.distcode=_,e.distbits=5}function x(e,t,i,n){var s,a=e.state;return null===a.window&&(a.wsize=1<=a.wsize?(r.arraySet(a.window,t,i-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):((s=a.wsize-a.wnext)>n&&(s=n),r.arraySet(a.window,t,i-n,s,a.wnext),(n-=s)?(r.arraySet(a.window,t,i-n,n,0),a.wnext=n,a.whave=a.wsize):(a.wnext+=s,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,i.check=s(i.check,U,2,0),_=0,y=0,i.mode=2;break}if(i.flags=0,i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&_)<<8)+(_>>8))%31){e.msg="incorrect header check",i.mode=c;break}if(8!=(15&_)){e.msg="unknown compression method",i.mode=c;break}if(y-=4,D=8+(15&(_>>>=4)),0===i.wbits)i.wbits=D;else if(D>i.wbits){e.msg="invalid window size",i.mode=c;break}i.dmax=1<>8&1),512&i.flags&&(U[0]=255&_,U[1]=_>>>8&255,i.check=s(i.check,U,2,0)),_=0,y=0,i.mode=3;case 3:for(;y<32;){if(0===g)break e;g--,_+=u[p++]<>>8&255,U[2]=_>>>16&255,U[3]=_>>>24&255,i.check=s(i.check,U,4,0)),_=0,y=0,i.mode=4;case 4:for(;y<16;){if(0===g)break e;g--,_+=u[p++]<>8),512&i.flags&&(U[0]=255&_,U[1]=_>>>8&255,i.check=s(i.check,U,2,0)),_=0,y=0,i.mode=5;case 5:if(1024&i.flags){for(;y<16;){if(0===g)break e;g--,_+=u[p++]<>>8&255,i.check=s(i.check,U,2,0)),_=0,y=0}else i.head&&(i.head.extra=null);i.mode=6;case 6:if(1024&i.flags&&((C=i.length)>g&&(C=g),C&&(i.head&&(D=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),r.arraySet(i.head.extra,u,p,C,D)),512&i.flags&&(i.check=s(i.check,u,C,p)),g-=C,p+=C,i.length-=C),i.length))break e;i.length=0,i.mode=7;case 7:if(2048&i.flags){if(0===g)break e;C=0;do{D=u[p+C++],i.head&&D&&i.length<65536&&(i.head.name+=String.fromCharCode(D))}while(D&&C>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=h;break;case 10:for(;y<32;){if(0===g)break e;g--,_+=u[p++]<>>=7&y,y-=7&y,i.mode=27;break}for(;y<3;){if(0===g)break e;g--,_+=u[p++]<>>=1)){case 0:i.mode=14;break;case 1:if(b(i),i.mode=20,6===t){_>>>=2,y-=2;break e}break;case 2:i.mode=17;break;case 3:e.msg="invalid block type",i.mode=c}_>>>=2,y-=2;break;case 14:for(_>>>=7&y,y-=7&y;y<32;){if(0===g)break e;g--,_+=u[p++]<>>16^65535)){e.msg="invalid stored block lengths",i.mode=c;break}if(i.length=65535&_,_=0,y=0,i.mode=15,6===t)break e;case 15:i.mode=16;case 16:if(C=i.length){if(C>g&&(C=g),C>v&&(C=v),0===C)break e;r.arraySet(f,u,p,C,m),g-=C,p+=C,v-=C,m+=C,i.length-=C;break}i.mode=h;break;case 17:for(;y<14;){if(0===g)break e;g--,_+=u[p++]<>>=5,y-=5,i.ndist=1+(31&_),_>>>=5,y-=5,i.ncode=4+(15&_),_>>>=4,y-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=c;break}i.have=0,i.mode=18;case 18:for(;i.have>>=3,y-=3}for(;i.have<19;)i.lens[N[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,R={bits:i.lenbits},O=o(0,i.lens,0,19,i.lencode,0,i.work,R),i.lenbits=R.bits,O){e.msg="invalid code lengths set",i.mode=c;break}i.have=0,i.mode=19;case 19:for(;i.have>>16&255,E=65535&P,!((M=P>>>24)<=y);){if(0===g)break e;g--,_+=u[p++]<>>=M,y-=M,i.lens[i.have++]=E;else{if(16===E){for(k=M+2;y>>=M,y-=M,0===i.have){e.msg="invalid bit length repeat",i.mode=c;break}D=i.lens[i.have-1],C=3+(3&_),_>>>=2,y-=2}else if(17===E){for(k=M+3;y>>=M)),_>>>=3,y-=3}else{for(k=M+7;y>>=M)),_>>>=7,y-=7}if(i.have+C>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=c;break}for(;C--;)i.lens[i.have++]=D}}if(i.mode===c)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=c;break}if(i.lenbits=9,R={bits:i.lenbits},O=o(1,i.lens,0,i.nlen,i.lencode,0,i.work,R),i.lenbits=R.bits,O){e.msg="invalid literal/lengths set",i.mode=c;break}if(i.distbits=6,i.distcode=i.distdyn,R={bits:i.distbits},O=o(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,R),i.distbits=R.bits,O){e.msg="invalid distances set",i.mode=c;break}if(i.mode=20,6===t)break e;case 20:i.mode=21;case 21:if(g>=6&&v>=258){e.next_out=m,e.avail_out=v,e.next_in=p,e.avail_in=g,i.hold=_,i.bits=y,a(e,A),m=e.next_out,f=e.output,v=e.avail_out,p=e.next_in,u=e.input,g=e.avail_in,_=i.hold,y=i.bits,i.mode===h&&(i.back=-1);break}for(i.back=0;T=(P=i.lencode[_&(1<>>16&255,E=65535&P,!((M=P>>>24)<=y);){if(0===g)break e;g--,_+=u[p++]<>L)])>>>16&255,E=65535&P,!(L+(M=P>>>24)<=y);){if(0===g)break e;g--,_+=u[p++]<>>=L,y-=L,i.back+=L}if(_>>>=M,y-=M,i.back+=M,i.length=E,0===T){i.mode=26;break}if(32&T){i.back=-1,i.mode=h;break}if(64&T){e.msg="invalid literal/length code",i.mode=c;break}i.extra=15&T,i.mode=22;case 22:if(i.extra){for(k=i.extra;y>>=i.extra,y-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=23;case 23:for(;T=(P=i.distcode[_&(1<>>16&255,E=65535&P,!((M=P>>>24)<=y);){if(0===g)break e;g--,_+=u[p++]<>L)])>>>16&255,E=65535&P,!(L+(M=P>>>24)<=y);){if(0===g)break e;g--,_+=u[p++]<>>=L,y-=L,i.back+=L}if(_>>>=M,y-=M,i.back+=M,64&T){e.msg="invalid distance code",i.mode=c;break}i.offset=E,i.extra=15&T,i.mode=24;case 24:if(i.extra){for(k=i.extra;y>>=i.extra,y-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=c;break}i.mode=25;case 25:if(0===v)break e;if(C=A-v,i.offset>C){if((C=i.offset-C)>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=c;break}C>i.wnext?(C-=i.wnext,S=i.wsize-C):S=i.wnext-C,C>i.length&&(C=i.length),z=i.window}else z=f,S=m-i.offset,C=i.length;C>v&&(C=v),v-=C,i.length-=C;do{f[m++]=z[S++]}while(--C);0===i.length&&(i.mode=21);break;case 26:if(0===v)break e;f[m++]=i.length,v--,i.mode=21;break;case 27:if(i.wrap){for(;y<32;){if(0===g)break e;g--,_|=u[p++]<=0;)e[t]=0}var s=256,a=286,o=30,l=15,h=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],c=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],d=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],u=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],f=new Array(576);n(f);var p=new Array(60);n(p);var m=new Array(512);n(m);var g=new Array(256);n(g);var v=new Array(29);n(v);var _,y,b,x=new Array(o);function w(e,t,i,r,n){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=r,this.max_length=n,this.has_stree=e&&e.length}function A(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function C(e){return e<256?m[e]:m[256+(e>>>7)]}function S(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function z(e,t,i){e.bi_valid>16-i?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<>>=1,i<<=1}while(--t>0);return i>>>1}function E(e,t,i){var r,n,s=new Array(16),a=0;for(r=1;r<=l;r++)s[r]=a=a+i[r-1]<<1;for(n=0;n<=t;n++){var o=e[2*n+1];0!==o&&(e[2*n]=T(s[o]++,o))}}function L(e){var t;for(t=0;t8?S(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function I(e,t,i,r){var n=2*t,s=2*i;return e[n]>1;i>=1;i--)D(e,s,i);n=h;do{i=e.heap[1],e.heap[1]=e.heap[e.heap_len--],D(e,s,1),r=e.heap[1],e.heap[--e.heap_max]=i,e.heap[--e.heap_max]=r,s[2*n]=s[2*i]+s[2*r],e.depth[n]=(e.depth[i]>=e.depth[r]?e.depth[i]:e.depth[r])+1,s[2*i+1]=s[2*r+1]=n,e.heap[1]=n++,D(e,s,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var i,r,n,s,a,o,h=t.dyn_tree,c=t.max_code,d=t.stat_desc.static_tree,u=t.stat_desc.has_stree,f=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,m=t.stat_desc.max_length,g=0;for(s=0;s<=l;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,i=e.heap_max+1;i<573;i++)(s=h[2*h[2*(r=e.heap[i])+1]+1]+1)>m&&(s=m,g++),h[2*r+1]=s,r>c||(e.bl_count[s]++,a=0,r>=p&&(a=f[r-p]),o=h[2*r],e.opt_len+=o*(s+a),u&&(e.static_len+=o*(d[2*r+1]+a)));if(0!==g){do{for(s=m-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[m]--,g-=2}while(g>0);for(s=m;0!==s;s--)for(r=e.bl_count[s];0!==r;)(n=e.heap[--i])>c||(h[2*n+1]!==s&&(e.opt_len+=(s-h[2*n+1])*h[2*n],h[2*n+1]=s),r--)}}(e,t),E(s,c,e.bl_count)}function k(e,t,i){var r,n,s=-1,a=t[1],o=0,l=7,h=4;for(0===a&&(l=138,h=3),t[2*(i+1)+1]=65535,r=0;r<=i;r++)n=a,a=t[2*(r+1)+1],++o>=7;r0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t=3&&0===e.bl_tree[2*u[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),n=e.opt_len+3+7>>>3,(a=e.static_len+3+7>>>3)<=n&&(n=a)):n=a=i+5,i+4<=n&&-1!==t?N(e,t,i,r):4===e.strategy||a===n?(z(e,2+(r?1:0),3),O(e,f,p)):(z(e,4+(r?1:0),3),function(e,t,i,r){var n;for(z(e,t-257,5),z(e,i-1,5),z(e,r-4,4),n=0;n>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&i,e.last_lit++,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(g[i]+s+1)]++,e.dyn_dtree[2*C(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){z(e,2,3),M(e,256,f),function(e){16===e.bi_valid?(S(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},701(e){e.exports=function(e,t,i,r){for(var n=65535&e,s=e>>>16&65535,a=0;0!==i;){i-=a=i>2e3?2e3:i;do{s=s+(n=n+t[r++]|0)|0}while(--a);n%=65521,s%=65521}return n|s<<16}},746(e){e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},788(e,t,i){var r={};(0,i(981).assign)(r,i(71),i(3),i(681)),e.exports=r},797(e,t,i){i.r(t),i.d(t,{VASP:()=>s});var r=i(59),n=i(392);function s(e,t={}){var i=[[]],s={};const a=void 0===t.assignBonds||t.assignBonds;var o=e.replace(/^\s+/,"").split(/\r?\n/);if(o.length<3)return i;if(!o[1].match(/\d+/))return console.log("Warning: second line of the vasp structure file must be a number"),i;if(s.length=parseFloat(o[1]),s.length<0)return console.log("Warning: Vasp implementation for negative lattice lengths is not yet available"),i;s.xVec=new Float32Array(o[2].replace(/^\s+/,"").split(/\s+/)),s.yVec=new Float32Array(o[3].replace(/^\s+/,"").split(/\s+/)),s.zVec=new Float32Array(o[4].replace(/^\s+/,"").split(/\s+/));var l=new r.Matrix3(s.xVec[0],s.xVec[1],s.xVec[2],s.yVec[0],s.yVec[1],s.yVec[2],s.zVec[0],s.zVec[1],s.zVec[2]);l.multiplyScalar(s.length),i.modelData=[{symmetries:[],cryst:{matrix:l}}];var h=o[5].trim().split(/\s+/),c=new Int16Array(o[6].trim().split(/\s+/)),d=o[7].trim(),u=!1;if(d.match(/S/)&&(u=!0,d=o[8].trim()),"c"==d.toLowerCase()[0])d="cartesian";else{if("d"!=d.toLowerCase()[0])return console.log("Warning: Unknown vasp mode in POSCAR file: mode must be either C(artesian) or D(irect)"),i;d="direct"}if(h.length!=c.length)return console.log("Warning: declaration of atomary species wrong:"),console.log(h),console.log(c),i;u?o.splice(0,9):o.splice(0,8);for(var f=0,p=0,m=h.length;pVolumeData});var r=i(864),n=i(529),s=i(797),a=i(865),o=i(75);class VolumeData{constructor(e,t,i){if(this.unit={x:1,y:1,z:1},this.origin={x:0,y:0,z:0},this.size={x:0,y:0,z:0},this.data=new Float32Array([]),this.matrix=null,this.inversematrix=null,this.isbinary=new Set(["ccp4","CCP4"]),this.getCoordinates=function(e){var t=e/(this.size.y*this.size.z),i=e%(this.size.y*this.size.z),r=e%this.size.z;return t*=this.unit.x,i*=this.unit.y,r*=this.unit.z,{x:t+=this.origin.x,y:i+=this.origin.y,z:r+=this.origin.z}},this.vasp=function(e){var t=e.replace(/^\s+/,"").split(/[\n\r]/),i=(0,s.VASP)(e)[0].length;if(0==i)return console.warn("No good formating of CHG or CHGCAR file, not atomic information provided in the file."),void(this.data=[]);var r,a=1.889725992,o=parseFloat(t[1]);r=t[2].replace(/^\s+/,"").split(/\s+/);var l=new n.Vector3(parseFloat(r[0]),parseFloat(r[1]),parseFloat(r[2])).multiplyScalar(o*a);r=t[3].replace(/^\s+/,"").split(/\s+/);var h=new n.Vector3(parseFloat(r[0]),parseFloat(r[1]),parseFloat(r[2])).multiplyScalar(o*a);r=t[4].replace(/^\s+/,"").split(/\s+/);var c=new n.Vector3(parseFloat(r[0]),parseFloat(r[1]),parseFloat(r[2])).multiplyScalar(o*a),d=l.x*(h.y*c.z-c.y*h.z)-h.x*(l.y*c.z-c.y*l.z)+c.x*(l.y*h.z-h.y*l.z),u=1/(d=Math.abs(d)/Math.pow(a,3));t.splice(0,8+i+1);var f=t[0].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),p=Math.abs(parseFloat(f[0])),m=Math.abs(parseFloat(f[1])),g=Math.abs(parseFloat(f[2])),v=this.origin=new n.Vector3(0,0,0);this.size={x:p,y:m,z:g},this.unit=new n.Vector3(l.x,h.y,c.z),l=l.multiplyScalar(1/(a*p)),h=h.multiplyScalar(1/(a*m)),c=c.multiplyScalar(1/(a*g)),0==l.y&&0==l.z&&0==h.x&&0==h.z&&0==c.x&&0==c.y||(this.matrix=new n.Matrix4(l.x,h.x,c.x,0,l.y,h.y,c.y,0,l.z,h.z,c.z,0,0,0,0,1),this.matrix=this.matrix.multiplyMatrices(this.matrix,(new n.Matrix4).makeTranslation(v.x,v.y,v.z)),this.origin=new n.Vector3(0,0,0),this.unit=new n.Vector3(1,1,1)),t.splice(0,1);var _=t.join(" "),y=(_=_.replace(/^\s+/,"")).split(/[\s\r]+/);y.splice(p*m*g+1);for(var b=Float32Array.from(y,parseFloat),x=0;x=this.size.x||t<0||t>=this.size.y||i<0||i>=this.size.z?-1:e*this.size.y*this.size.z+t*this.size.z+i}getVal(e,t,i){let r=this.getIndex(e,t,i);return r<0?0:this.data[r]}cube(e){var t=e.split(/\r?\n/);if(!(t.length<6)){var i=(0,a.CUBE)(e,{}).modelData[0].cryst,r=t[2].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),n=parseFloat(r[0]),s=Math.abs(n);this.origin=i.origin,this.size=i.size,this.unit=i.unit,this.matrix=i.matrix4;var o=6;n<0&&o++;var l=t.splice(s+o).join(" "),h=(l=l.replace(/^\s+/,"")).split(/[\s\r]+/);this.data=Float32Array.from(h,parseFloat)}}ccp4(e){var t={};e=new Int8Array(e);var i=new Int32Array(e.buffer,0,56),r=new Float32Array(e.buffer,0,56),s=new DataView(e.buffer);if(t.MAP=String.fromCharCode(s.getUint8(208),s.getUint8(209),s.getUint8(210),s.getUint8(211)),t.MACHST=[s.getUint8(212),s.getUint8(213)],17===t.MACHST[0]&&17===t.MACHST[1])for(var a=e.byteLength,o=0;oPausableTimer,adjustVolumeStyle:()=>adjustVolumeStyle,base64ToArray:()=>base64ToArray,deepCopy:()=>deepCopy,download:()=>download,extend:()=>extend,get:()=>get,getAtomProperty:()=>getAtomProperty,getColorFromStyle:()=>getColorFromStyle,getElement:()=>getElement,getExtent:()=>getExtent,getPropertyRange:()=>getPropertyRange,getbin:()=>getbin,inflateString:()=>inflateString,isEmptyObject:()=>isEmptyObject,isNumeric:()=>isNumeric,makeFunction:()=>makeFunction,mergeGeos:()=>mergeGeos,specStringToObject:()=>specStringToObject});var _Gradient__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(546),_VolumeData__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(848),_colors__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(222),pako__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(75);function extend(e,t){for(var i in t)t.hasOwnProperty(i)&&void 0!==t[i]&&(e[i]=t[i]);return e}function deepCopy(e){let t,i,r;if(null==e)return{};if("object"!=typeof e||null===e)return e;for(r in t=Array.isArray(e)?[]:{},e)i=e[r],t[r]=deepCopy(i);return t}function isNumeric(e){var t=typeof e;return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))}function isEmptyObject(e){return 0===Object.keys(e).length}function makeFunction(callback){return callback&&"string"==typeof callback&&(callback=eval("("+callback+")")),callback&&"function"!=typeof callback?(console.warn("Invalid callback provided."),()=>{}):callback}function adjustVolumeStyle(e){e&&(!e.volformat||e.voldata instanceof _VolumeData__WEBPACK_IMPORTED_MODULE_1__.VolumeData||(e.voldata=new _VolumeData__WEBPACK_IMPORTED_MODULE_1__.VolumeData(e.voldata,e.volformat)),e.volscheme&&(e.volscheme=_Gradient__WEBPACK_IMPORTED_MODULE_0__.Gradient.getGradient(e.volscheme)))}function getExtent(e,t){var i,r,n,s,a,o,l,h,c,d,u=!t;if(i=r=n=9999,s=a=o=-9999,l=h=c=d=0,0===e.length)return[[0,0,0],[0,0,0],[0,0,0]];for(var f=0;fp.x?s:p.x,a=a>p.y?a:p.y,o=o>p.z?o:p.z,p.symmetries&&u))for(var m=0;mp.symmetries[m].x?s:p.symmetries[m].x,a=a>p.symmetries[m].y?a:p.symmetries[m].y,o=o>p.symmetries[m].z?o:p.symmetries[m].z}return[[i,r,n],[s,a,o],[l/d,h/d,c/d]]}function getPropertyRange(e,t){for(var i=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,n=0,s=e.length;nr&&(r=a))}return isFinite(i)||isFinite(r)?isFinite(i)?isFinite(r)||(r=i):i=r:i=r=0,[i,r]}class PausableTimer{constructor(e,t,i){this.total_time_run=0,this.fn=e,this.arg=i,this.countdown=t,this.start_time=(new Date).getTime(),this.ident=setTimeout(e,t,i)}cancel(){clearTimeout(this.ident)}pause(){clearTimeout(this.ident),this.total_time_run=(new Date).getTime()-this.start_time}resume(){this.ident=setTimeout(this.fn,Math.max(0,this.countdown-this.total_time_run),this.arg)}}function base64ToArray(e){for(var t=window.atob(e),i=t.length,r=new Uint8Array(i),n=0;n=0?parseFloat(e):parseInt(e):"true"===e||"false"!==e&&e},i={};if("all"===(e=e.replace(/%7E/g,"~")))return i;for(var r=e.split(";"),n=0;ne.text());return t?i.then(t):i}function getbin(e,t,i,r){var n;return n="POST"==i?fetch(e,{method:"POST",body:r}).then(e=>checkStatus(e)).then(e=>e.arrayBuffer()):fetch(e).then(e=>checkStatus(e)).then(e=>e.arrayBuffer()),t?n.then(t):n}function download(e,t,i,r){var n="",s="",a="",o=null,l=t.addModel();e.indexOf(":")<0&&(e=4==e.length?"pdb:"+e:isNaN(e)?"url:"+e:"cid:"+e),"mmtf:"==e.substring(0,5)&&(console.warn("WARNING: MMTF now deprecated. Reverting to bcif."),e="bcif:"+e.slice(5));var h=function(e){l.addMolData(e,n,i),t.zoomTo(),t.render()};if("bcif:"===e.substring(0,5))e=e.substring(5).toUpperCase(),a="https://models.rcsb.org/"+e+".bcif.gz",i&&void 0===i.noComputeSecondaryStructure&&(i.noComputeSecondaryStructure=!0),o=new Promise(function(t){getbin(a).then(function(e){h(e),t(l)}).catch(function(){s=i&&i.pdbUri?i.pdbUri:"https://files.rcsb.org/view/",a=s+e+".pdb",n="pdb",console.warn("falling back to pdb format"),get(a).then(function(e){h(e),t(l)}).catch(function(e){h(""),t(l),console.error("fetch of "+a+" failed: "+e.statusText)})})});else{if("pdb:"===e.substring(0,4)){if(n="bcif",i&&i.format&&(n=i.format),i&&void 0===i.noComputeSecondaryStructure&&(i.noComputeSecondaryStructure=!0),!(e=e.substring(4).toUpperCase()).match(/^[1-9][A-Za-z0-9]{3}$/))return void alert("Wrong PDB ID");"bcif"==n?a="https://models.rcsb.org/"+e.toUpperCase()+".bcif.gz":(s=i&&i.pdbUri?i.pdbUri:"https://files.rcsb.org/view/",a=s+e+"."+n)}else if("cid:"==e.substring(0,4)){if(n="sdf",!(e=e.substring(4)).match(/^[0-9]+$/))return void alert("Wrong Compound ID");a="https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/"+e+"/SDF?record_type=3d"}else"url:"==e.substring(0,4)&&(a=e.substring(4),n=a);o=new Promise(function(t){"bcif"==n?getbin(a).then(function(e){h(e),t(l)}).catch(function(){s=i&&i.pdbUri?i.pdbUri:"https://files.rcsb.org/view/",a=s+e+".pdb",n="pdb",console.warn("falling back to pdb format"),get(a).then(function(e){h(e),t(l)}).catch(function(e){h(""),t(l),console.error("fetch of "+a+" failed: "+e.statusText)})}):get(a).then(function(e){h(e),t(l)}).catch(function(e){h(""),t(l),console.error("fetch of "+a+" failed: "+e.statusText)})})}return r?(o.then(function(e){r(e)}),l):o}function getColorFromStyle(e,t){let i=t.colorscheme;if(void 0!==_colors__WEBPACK_IMPORTED_MODULE_2__.builtinColorSchemes[i])i=_colors__WEBPACK_IMPORTED_MODULE_2__.builtinColorSchemes[i];else if("string"==typeof i&&i.endsWith("Carbon")){let e=i.substring(0,i.lastIndexOf("Carbon")).toLowerCase();if(void 0!==_colors__WEBPACK_IMPORTED_MODULE_2__.htmlColors[e]){let t=Object.assign({},_colors__WEBPACK_IMPORTED_MODULE_2__.elementColors.defaultColors);t.C=_colors__WEBPACK_IMPORTED_MODULE_2__.htmlColors[e],_colors__WEBPACK_IMPORTED_MODULE_2__.builtinColorSchemes[i]={prop:"elem",map:t},i=_colors__WEBPACK_IMPORTED_MODULE_2__.builtinColorSchemes[i]}}let r=e.color;if(void 0!==t.color&&"spectrum"!=t.color&&(r=t.color),void 0!==i){let s,a;if(void 0!==_colors__WEBPACK_IMPORTED_MODULE_2__.elementColors[i])i=_colors__WEBPACK_IMPORTED_MODULE_2__.elementColors[i],void 0!==i[e[i.prop]]&&(r=i.map[e[i.prop]]);else if(void 0!==i[e[i.prop]])r=i.map[e[i.prop]];else if(void 0!==i.prop&&void 0!==i.gradient){s=i.prop;var n=i.gradient;n instanceof _Gradient__WEBPACK_IMPORTED_MODULE_0__.GradientType||(n=(0,_Gradient__WEBPACK_IMPORTED_MODULE_0__.getGradient)(i));let t=n.range()||[-1,1];a=getAtomProperty(e,s),null!=a&&(r=n.valueToHex(a,t))}else void 0!==i.prop&&void 0!==i.map?(s=i.prop,a=getAtomProperty(e,s),void 0!==i.map[a]&&(r=i.map[a])):void 0!==t.colorscheme[e.elem]?r=t.colorscheme[e.elem]:console.warn("Could not interpret colorscheme "+i)}else void 0!==t.colorfunc&&(r=t.colorfunc(e));return _colors__WEBPACK_IMPORTED_MODULE_2__.CC.color(r)}function getElement(e){let t=e;return"string"==typeof e?t=document.querySelector("#"+e):"object"==typeof e&&e.get&&(t=e.get(0)),t}function inflateString(e,t=!0){let i;return i="string"==typeof e?(new TextEncoder).encode(e):new Uint8Array(e),(0,pako__WEBPACK_IMPORTED_MODULE_3__.inflate)(i,{to:t?"string":null})}},865(e,t,i){i.r(t),i.d(t,{CUBE:()=>a});var r=i(59),n=i(392);const s={1:"H",2:"He",3:"Li",4:"Be",5:"B",6:"C",7:"N",8:"O",9:"F",10:"Ne",11:"Na",12:"Mg",13:"Al",14:"Si",15:"P",16:"S",17:"Cl",18:"Ar",19:"K",20:"Ca",21:"Sc",22:"Ti",23:"V",24:"Cr",25:"Mn",26:"Fe",27:"Co",28:"Ni",29:"Cu",30:"Zn",31:"Ga",32:"Ge",33:"As",34:"Se",35:"Br",36:"Kr",37:"Rb",38:"Sr",39:"Y",40:"Zr",41:"Nb",42:"Mo",43:"Tc",44:"Ru",45:"Rh",46:"Pd",47:"Ag",48:"Cd",49:"In",50:"Sn",51:"Sb",52:"Te",53:"I",54:"Xe",55:"Cs",56:"Ba",71:"Lu",72:"Hf",73:"Ta",74:"W",75:"Re",76:"Os",77:"Ir",78:"Pt",79:"Au",80:"Hg",81:"Tl",82:"Pb",83:"Bi",84:"Po",85:"At",86:"Rn",87:"Fr",88:"Ra",104:"Rf",105:"Db",106:"Sg",107:"Bh",108:"Hs",109:"Mt",110:"Ds",111:"Rg",112:"Cn",113:"Nh",114:"Fl",115:"Mc",116:"Lv",117:"Ts",118:"Og",57:"La",58:"Ce",59:"Pr",60:"Nd",61:"Pm",62:"Sm",63:"Eu",64:"Gd",65:"Tb",66:"Dy",67:"Ho",68:"Er",69:"Tm",70:"Yb",89:"Ac",90:"Th",91:"Pa",92:"U",93:"Np",94:"Pu",95:"Am",96:"Cm",97:"Bk",98:"Cf",99:"Es",100:"Fm",101:"Md",102:"No"};function a(e,t){t=t||{};const i=[[]];let a=e.split(/\r?\n/);const o=void 0===t.assignBonds||t.assignBonds;if(a.length<6)return i;let l=a[2].replace(/^\s+/,"").replace(/\s+/g," ").split(" ");const h=Math.abs(parseFloat(l[0]));let c={origin:void 0,size:void 0,unit:void 0,matrix4:void 0,matrix:void 0};const d=c.origin=new r.Vector3(parseFloat(l[1]),parseFloat(l[2]),parseFloat(l[3]));l=a[3].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),l=a[3].replace(/^\s+/,"").replace(/\s+/g," ").split(" ");const u=l[0]>0?.529177:1;d.multiplyScalar(u);const f=Math.abs(l[0]),p=new r.Vector3(parseFloat(l[1]),parseFloat(l[2]),parseFloat(l[3])).multiplyScalar(u);l=a[4].replace(/^\s+/,"").replace(/\s+/g," ").split(" ");const m=Math.abs(l[0]),g=new r.Vector3(parseFloat(l[1]),parseFloat(l[2]),parseFloat(l[3])).multiplyScalar(u);l=a[5].replace(/^\s+/,"").replace(/\s+/g," ").split(" ");const v=Math.abs(l[0]),_=new r.Vector3(parseFloat(l[1]),parseFloat(l[2]),parseFloat(l[3])).multiplyScalar(u);if(c.size={x:f,y:m,z:v},c.unit=new r.Vector3(p.x,g.y,_.z),0!=p.y||0!=p.z||0!=g.x||0!=g.z||0!=_.x||0!=_.y){c.matrix4=new r.Matrix4(p.x,g.x,_.x,0,p.y,g.y,_.y,0,p.z,g.z,_.z,0,0,0,0,1);let e=(new r.Matrix4).makeTranslation(d.x,d.y,d.z);c.matrix4=c.matrix4.multiplyMatrices(e,c.matrix4),c.matrix=c.matrix4.matrix3FromTopLeft(),c.origin=new r.Vector3(0,0,0),c.unit=new r.Vector3(1,1,1)}i.modelData=[{cryst:c}],a=a.splice(6,h);for(var y=i[i.length-1].length,b=y+a.length,x=y;x=252?6:o>=248?5:o>=240?4:o>=224?3:o>=192?2:1;function l(e,t){if(t<65534&&(e.subarray&&s||!e.subarray&&n))return String.fromCharCode.apply(null,r.shrinkBuf(e,t));for(var i="",a=0;a>>6,t[a++]=128|63&i):i<65536?(t[a++]=224|i>>>12,t[a++]=128|i>>>6&63,t[a++]=128|63&i):(t[a++]=240|i>>>18,t[a++]=128|i>>>12&63,t[a++]=128|i>>>6&63,t[a++]=128|63&i);return t},t.buf2binstring=function(e){return l(e,e.length)},t.binstring2buf=function(e){for(var t=new r.Buf8(e.length),i=0,n=t.length;i4)h[r++]=65533,i+=s-1;else{for(n&=2===s?31:3===s?15:7;s>1&&i1?h[r++]=65533:n<65536?h[r++]=n:(n-=65536,h[r++]=55296|n>>10&1023,h[r++]=56320|1023&n)}return l(h,r)},t.utf8border=function(e,t){var i;for((t=t||e.length)>e.length&&(t=e.length),i=t-1;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+a[e[i]]>t?i:t}},981(e,t){var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(var n in i)r(i,n)&&(e[n]=i[n])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var n={arraySet:function(e,t,i,r,n){if(t.subarray&&e.subarray)e.set(t.subarray(i,i+r),n);else for(var s=0;s{for(var i in t)__webpack_require__.o(t,i)&&!__webpack_require__.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__(16),__webpack_require__(185);var __webpack_exports__=__webpack_require__(307);return __webpack_exports__})(),"object"==typeof exports&&"object"==typeof module?module.exports=factory():"function"==typeof define&&define.amd?define([],factory):"object"==typeof exports?exports["3Dmol"]=factory():root["3Dmol"]=factory(); \ No newline at end of file diff --git a/media/vendor/3dmol/3Dmol-min.js.LICENSE.txt b/media/vendor/3dmol/3Dmol-min.js.LICENSE.txt new file mode 100644 index 0000000..e84ba0a --- /dev/null +++ b/media/vendor/3dmol/3Dmol-min.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * 3dmol v2.5.5 + * JavaScript/TypeScript molecular visualization library + * Author: David Koes and contributors + */ diff --git a/media/vendor/3dmol/LICENSE b/media/vendor/3dmol/LICENSE new file mode 100644 index 0000000..1b2a169 --- /dev/null +++ b/media/vendor/3dmol/LICENSE @@ -0,0 +1,90 @@ +3Dmol.js incorporates code from GLmol, Three.js, and jQuery and +is licensed under a BSD-3-Clause license. + +* 3Dmol.js + Copyright (c) 2014, University of Pittsburgh and contributors + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +* GLmol + GLmol - Molecular Viewer on WebGL/Javascript (0.47) + (C) Copyright 2011-2012, biochem_fan + License: dual license of MIT or LGPL3 + + Contributors: + Robert Hanson for parseXYZ, deferred instantiation + + + +* Three.js + https://github.com/mrdoob/three.js + + Copyright (c) 2010-2012 three.js Authors. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +* jQuery + http://jquery.org/ + + Copyright (c) 2011 John Resig + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/media/vendor/3dmol/package.json b/media/vendor/3dmol/package.json new file mode 100644 index 0000000..3c079c5 --- /dev/null +++ b/media/vendor/3dmol/package.json @@ -0,0 +1,90 @@ +{ + "name": "3dmol", + "version": "2.5.5", + "description": "JavaScript/TypeScript molecular visualization library", + "repository": { + "type": "git", + "url": "https://github.com/3dmol/3Dmol.js.git" + }, + "author": "David Koes and contributors", + "homepage": "http://3dmol.org", + "jest": { + "testRegex": [ + "./*\\.test.js$", + "./*\\.test.ts$" + ], + "setupFiles": [ + "jest-webgl-canvas-mock", + "jsdom-worker" + ], + "coverageReporters": [ + "lcov", + "text" + ], + "testEnvironment": "jest-fixed-jsdom" + }, + "engines": { + "npm": ">=8.11", + "node": ">=16.16.0" + }, + "license": "BSD-3-Clause", + "main": "build/3Dmol.js", + "types": "build/types/index.d.ts", + "scripts": { + "build": "npm run build:dev && npm run build:prod && npm run generate:tests && npm run doc", + "build:dev": "webpack --mode development", + "build:prod": "webpack --mode production", + "prepare": "npm run build:dev && npm run build:prod", + "jest": "npx jest --testPathIgnorePatterns=render.test.js", + "test": "npm run generate:tests && npm run generate:jest && npm run jest && npm run glcheck", + "glcheck": "npm run clean:glcheck && npm run generate:glcheck && npm run test:glcheck", + "test:glcheck": "npx glcheck --config ./tests/glcheck/glcheck.config.json", + "clean:glcheck": "rm -rf ./tests/glcheck/render-failures", + "generate:tests": "python3 tests/auto/generate_tests.py", + "generate:glcheck": "python3 ./tests/glcheck/generate_glcheck_render_tests.py -min", + "generate:jest": "python3 tests/jest/generate_jest_render_tests.py", + "cover": "npm run generate:jest && npx jest --coverage --verbose", + "doc": "rm -rf doc/ && npx jsdoc -c jsdoc.conf.json src doc.md" + }, + "dependencies": { + "iobuffer": "^5.0.0", + "netcdfjs": "^3.0.0", + "pako": "^2.1.0", + "upng-js": "^2.1.0" + }, + "devDependencies": { + "@babel/core": "^7.20.7", + "@babel/eslint-parser": "^7.19.1", + "@babel/plugin-transform-typescript": "^7.20.7", + "@types/pako": "^2.0.0", + "better-docs": "github:3dmol/better-docs#master", + "canvas": "^2.11.0", + "clean-jsdoc-theme": "github:3dmol/clean-jsdoc-theme#master", + "codecov": "^3.8.3", + "del": "^7.0.0", + "eslint": "^9.0.0", + "eslint-webpack-plugin": "^5.0.0", + "glcheck": "github:3dmol/glcheck", + "jest": "^29.0.0", + "jest-environment-jsdom": "^29.3.1", + "jest-fixed-jsdom": "^0.0.9", + "jest-webgl-canvas-mock": "^0.2", + "jquery": "^3.6.3", + "jsdoc": "^4.0.0", + "jsdom": "^20.0.3", + "jsdom-worker": "^0.3.0", + "node-fetch": "^2.7.0", + "raw-loader": "^4.0.2", + "source-map-support": "^0.5.21", + "taffydb": "^2.7.3", + "terser-webpack-plugin": "^5.3.6", + "ts-loader": "^9.4.2", + "ts-node": "^10.9.1", + "tsc": "^2.0.4", + "typescript": "^5.6.3", + "url-loader": "^4.1.1", + "webpack": "^5.75.0", + "webpack-bundle-analyzer": "^4.7.0", + "webpack-cli": "^5.0.1" + } +} diff --git a/media/vendor/ngl/LICENSE b/media/vendor/ngl/LICENSE new file mode 100644 index 0000000..acd21f6 --- /dev/null +++ b/media/vendor/ngl/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2014-2017, Alexander S Rose + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/media/vendor/ngl/ngl.js b/media/vendor/ngl/ngl.js new file mode 100644 index 0000000..645dfb7 --- /dev/null +++ b/media/vendor/ngl/ngl.js @@ -0,0 +1,88 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).NGL={})}(this,(function(e){"use strict";const t=1,i=2,n=3,r=0,s=1,a=2,o=100,l=101,c=102,u=200,h=201,d=202,f=203,m=204,p=205,g=206,_=207,y=208,v=209,b=210,x=211,w=212,S=213,M=214,A=0,C=1,T=2,P=0,E=1,I=2,D=3,R=4,L=5,k=301,O=302,N=306,F=1e3,B=1001,z=1002,U=1003,V=1004,$=1005,G=1006,H=1007,j=1008,W=1009,q=1012,X=1013,Y=1014,K=1015,Z=1016,Q=1020,J=1023,ee=1026,te=1027,ie=33776,ne=33777,re=33778,se=33779,ae=36492,oe=3001,le="",ce="srgb",ue="srgb-linear",he="display-p3",de="display-p3-linear",fe="linear",me="srgb",pe="rec709",ge="p3",_e=7680,ye=512,ve=513,be=514,xe=515,we=516,Se=517,Me=518,Ae=519,Ce=35044,Te=35048,Pe="300 es",Ee=1035,Ie=2e3,De=2001;class Re{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});const i=this._listeners;void 0===i[e]&&(i[e]=[]),-1===i[e].indexOf(t)&&i[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;const i=this._listeners;return void 0!==i[e]&&-1!==i[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;const i=this._listeners[e];if(void 0!==i){const e=i.indexOf(t);-1!==e&&i.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;const t=this._listeners[e.type];if(void 0!==t){e.target=this;const i=t.slice(0);for(let t=0,n=i.length;t>8&255]+Le[e>>16&255]+Le[e>>24&255]+"-"+Le[255&t]+Le[t>>8&255]+"-"+Le[t>>16&15|64]+Le[t>>24&255]+"-"+Le[63&i|128]+Le[i>>8&255]+"-"+Le[i>>16&255]+Le[i>>24&255]+Le[255&n]+Le[n>>8&255]+Le[n>>16&255]+Le[n>>24&255]).toLowerCase()}function Fe(e,t,i){return Math.max(t,Math.min(i,e))}function Be(e,t,i){return(1-i)*e+i*t}function ze(e){return!(e&e-1)&&0!==e}function Ue(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}function Ve(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return e/4294967295;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int32Array:return Math.max(e/2147483647,-1);case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw new Error("Invalid component type.")}}function $e(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return Math.round(4294967295*e);case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int32Array:return Math.round(2147483647*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw new Error("Invalid component type.")}}class Ge{constructor(e=0,t=0){Ge.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,i=this.y,n=e.elements;return this.x=n[0]*t+n[3]*i+n[6],this.y=n[1]*t+n[4]*i+n[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(0===t)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(Fe(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const i=Math.cos(t),n=Math.sin(t),r=this.x-e.x,s=this.y-e.y;return this.x=r*i-s*n+e.x,this.y=r*n+s*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class He{constructor(e,t,i,n,r,s,a,o,l){He.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==e&&this.set(e,t,i,n,r,s,a,o,l)}set(e,t,i,n,r,s,a,o,l){const c=this.elements;return c[0]=e,c[1]=n,c[2]=a,c[3]=t,c[4]=r,c[5]=o,c[6]=i,c[7]=s,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,n=t.elements,r=this.elements,s=i[0],a=i[3],o=i[6],l=i[1],c=i[4],u=i[7],h=i[2],d=i[5],f=i[8],m=n[0],p=n[3],g=n[6],_=n[1],y=n[4],v=n[7],b=n[2],x=n[5],w=n[8];return r[0]=s*m+a*_+o*b,r[3]=s*p+a*y+o*x,r[6]=s*g+a*v+o*w,r[1]=l*m+c*_+u*b,r[4]=l*p+c*y+u*x,r[7]=l*g+c*v+u*w,r[2]=h*m+d*_+f*b,r[5]=h*p+d*y+f*x,r[8]=h*g+d*v+f*w,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[1],n=e[2],r=e[3],s=e[4],a=e[5],o=e[6],l=e[7],c=e[8];return t*s*c-t*a*l-i*r*c+i*a*o+n*r*l-n*s*o}invert(){const e=this.elements,t=e[0],i=e[1],n=e[2],r=e[3],s=e[4],a=e[5],o=e[6],l=e[7],c=e[8],u=c*s-a*l,h=a*o-c*r,d=l*r-s*o,f=t*u+i*h+n*d;if(0===f)return this.set(0,0,0,0,0,0,0,0,0);const m=1/f;return e[0]=u*m,e[1]=(n*l-c*i)*m,e[2]=(a*i-n*s)*m,e[3]=h*m,e[4]=(c*t-n*o)*m,e[5]=(n*r-a*t)*m,e[6]=d*m,e[7]=(i*o-l*t)*m,e[8]=(s*t-i*r)*m,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,n,r,s,a){const o=Math.cos(r),l=Math.sin(r);return this.set(i*o,i*l,-i*(o*s+l*a)+s+e,-n*l,n*o,-n*(-l*s+o*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(je.makeScale(e,t)),this}rotate(e){return this.premultiply(je.makeRotation(-e)),this}translate(e,t){return this.premultiply(je.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,i=e.elements;for(let e=0;e<9;e++)if(t[e]!==i[e])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return(new this.constructor).fromArray(this.elements)}}const je=new He;function We(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}function qe(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}function Xe(){const e=qe("canvas");return e.style.display="block",e}const Ye={};function Ke(e){e in Ye||(Ye[e]=!0,console.warn(e))}const Ze=(new He).set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Qe=(new He).set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),Je={[ue]:{transfer:fe,primaries:pe,toReference:e=>e,fromReference:e=>e},[ce]:{transfer:me,primaries:pe,toReference:e=>e.convertSRGBToLinear(),fromReference:e=>e.convertLinearToSRGB()},[de]:{transfer:fe,primaries:ge,toReference:e=>e.applyMatrix3(Qe),fromReference:e=>e.applyMatrix3(Ze)},[he]:{transfer:me,primaries:ge,toReference:e=>e.convertSRGBToLinear().applyMatrix3(Qe),fromReference:e=>e.applyMatrix3(Ze).convertLinearToSRGB()}},et=new Set([ue,de]),tt={enabled:!0,_workingColorSpace:ue,get legacyMode(){return console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),!this.enabled},set legacyMode(e){console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),this.enabled=!e},get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(e){if(!et.has(e))throw new Error(`Unsupported working color space, "${e}".`);this._workingColorSpace=e},convert:function(e,t,i){if(!1===this.enabled||t===i||!t||!i)return e;const n=Je[t].toReference;return(0,Je[i].fromReference)(n(e))},fromWorkingColorSpace:function(e,t){return this.convert(e,this._workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this._workingColorSpace)},getPrimaries:function(e){return Je[e].primaries},getTransfer:function(e){return e===le?fe:Je[e].transfer}};function it(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function nt(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}let rt;class st{static getDataURL(e){if(/^data:/i.test(e.src))return e.src;if("undefined"==typeof HTMLCanvasElement)return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{void 0===rt&&(rt=qe("canvas")),rt.width=e.width,rt.height=e.height;const i=rt.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),t=rt}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){const t=qe("canvas");t.width=e.width,t.height=e.height;const i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);const n=i.getImageData(0,0,e.width,e.height),r=n.data;for(let e=0;e0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(300!==this.mapping)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case F:e.x=e.x-Math.floor(e.x);break;case B:e.x=e.x<0?0:1;break;case z:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case F:e.y=e.y-Math.floor(e.y);break;case B:e.y=e.y<0?0:1;break;case z:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}get encoding(){return Ke("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace===ce?oe:3e3}set encoding(e){Ke("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace=e===oe?ce:le}}ut.DEFAULT_IMAGE=null,ut.DEFAULT_MAPPING=300,ut.DEFAULT_ANISOTROPY=1;class ht{constructor(e=0,t=0,i=0,n=1){ht.prototype.isVector4=!0,this.x=e,this.y=t,this.z=i,this.w=n}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,n){return this.x=e,this.y=t,this.z=i,this.w=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){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: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,i=this.y,n=this.z,r=this.w,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*n+s[12]*r,this.y=s[1]*t+s[5]*i+s[9]*n+s[13]*r,this.z=s[2]*t+s[6]*i+s[10]*n+s[14]*r,this.w=s[3]*t+s[7]*i+s[11]*n+s[15]*r,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,n,r;const s=.01,a=.1,o=e.elements,l=o[0],c=o[4],u=o[8],h=o[1],d=o[5],f=o[9],m=o[2],p=o[6],g=o[10];if(Math.abs(c-h)o&&e>_?e_?o=0?1:-1,n=1-t*t;if(n>Number.EPSILON){const r=Math.sqrt(n),s=Math.atan2(r,t*i);e=Math.sin(e*s)/r,a=Math.sin(a*s)/r}const r=a*i;if(o=o*e+h*r,l=l*e+d*r,c=c*e+f*r,u=u*e+m*r,e===1-a){const e=1/Math.sqrt(o*o+l*l+c*c+u*u);o*=e,l*=e,c*=e,u*=e}}e[t]=o,e[t+1]=l,e[t+2]=c,e[t+3]=u}static multiplyQuaternionsFlat(e,t,i,n,r,s){const a=i[n],o=i[n+1],l=i[n+2],c=i[n+3],u=r[s],h=r[s+1],d=r[s+2],f=r[s+3];return e[t]=a*f+c*u+o*d-l*h,e[t+1]=o*f+c*h+l*u-a*d,e[t+2]=l*f+c*d+a*h-o*u,e[t+3]=c*f-a*u-o*h-l*d,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,n){return this._x=e,this._y=t,this._z=i,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){const i=e._x,n=e._y,r=e._z,s=e._order,a=Math.cos,o=Math.sin,l=a(i/2),c=a(n/2),u=a(r/2),h=o(i/2),d=o(n/2),f=o(r/2);switch(s){case"XYZ":this._x=h*c*u+l*d*f,this._y=l*d*u-h*c*f,this._z=l*c*f+h*d*u,this._w=l*c*u-h*d*f;break;case"YXZ":this._x=h*c*u+l*d*f,this._y=l*d*u-h*c*f,this._z=l*c*f-h*d*u,this._w=l*c*u+h*d*f;break;case"ZXY":this._x=h*c*u-l*d*f,this._y=l*d*u+h*c*f,this._z=l*c*f+h*d*u,this._w=l*c*u-h*d*f;break;case"ZYX":this._x=h*c*u-l*d*f,this._y=l*d*u+h*c*f,this._z=l*c*f-h*d*u,this._w=l*c*u+h*d*f;break;case"YZX":this._x=h*c*u+l*d*f,this._y=l*d*u+h*c*f,this._z=l*c*f-h*d*u,this._w=l*c*u-h*d*f;break;case"XZY":this._x=h*c*u-l*d*f,this._y=l*d*u-h*c*f,this._z=l*c*f+h*d*u,this._w=l*c*u+h*d*f;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return!1!==t&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const i=t/2,n=Math.sin(i);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,i=t[0],n=t[4],r=t[8],s=t[1],a=t[5],o=t[9],l=t[2],c=t[6],u=t[10],h=i+a+u;if(h>0){const e=.5/Math.sqrt(h+1);this._w=.25/e,this._x=(c-o)*e,this._y=(r-l)*e,this._z=(s-n)*e}else if(i>a&&i>u){const e=2*Math.sqrt(1+i-a-u);this._w=(c-o)/e,this._x=.25*e,this._y=(n+s)/e,this._z=(r+l)/e}else if(a>u){const e=2*Math.sqrt(1+a-i-u);this._w=(r-l)/e,this._x=(n+s)/e,this._y=.25*e,this._z=(o+c)/e}else{const e=2*Math.sqrt(1+u-i-a);this._w=(s-n)/e,this._x=(r+l)/e,this._y=(o+c)/e,this._z=.25*e}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Fe(this.dot(e),-1,1)))}rotateTowards(e,t){const i=this.angleTo(e);if(0===i)return this;const n=Math.min(1,t/i);return this.slerp(e,n),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const i=e._x,n=e._y,r=e._z,s=e._w,a=t._x,o=t._y,l=t._z,c=t._w;return this._x=i*c+s*a+n*l-r*o,this._y=n*c+s*o+r*a-i*l,this._z=r*c+s*l+i*o-n*a,this._w=s*c-i*a-n*o-r*l,this._onChangeCallback(),this}slerp(e,t){if(0===t)return this;if(1===t)return this.copy(e);const i=this._x,n=this._y,r=this._z,s=this._w;let a=s*e._w+i*e._x+n*e._y+r*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=s,this._x=i,this._y=n,this._z=r,this;const o=1-a*a;if(o<=Number.EPSILON){const e=1-t;return this._w=e*s+t*this._w,this._x=e*i+t*this._x,this._y=e*n+t*this._y,this._z=e*r+t*this._z,this.normalize(),this._onChangeCallback(),this}const l=Math.sqrt(o),c=Math.atan2(l,a),u=Math.sin((1-t)*c)/l,h=Math.sin(t*c)/l;return this._w=s*u+this._w*h,this._x=i*u+this._x*h,this._y=n*u+this._y*h,this._z=r*u+this._z*h,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){const e=Math.random(),t=Math.sqrt(1-e),i=Math.sqrt(e),n=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(t*Math.cos(n),i*Math.sin(r),i*Math.cos(r),t*Math.sin(n))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class _t{constructor(e=0,t=0,i=0){_t.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return void 0===i&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(vt.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(vt.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6]*n,this.y=r[1]*t+r[4]*i+r[7]*n,this.z=r[2]*t+r[5]*i+r[8]*n,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,i=this.y,n=this.z,r=e.elements,s=1/(r[3]*t+r[7]*i+r[11]*n+r[15]);return this.x=(r[0]*t+r[4]*i+r[8]*n+r[12])*s,this.y=(r[1]*t+r[5]*i+r[9]*n+r[13])*s,this.z=(r[2]*t+r[6]*i+r[10]*n+r[14])*s,this}applyQuaternion(e){const t=this.x,i=this.y,n=this.z,r=e.x,s=e.y,a=e.z,o=e.w,l=2*(s*n-a*i),c=2*(a*t-r*n),u=2*(r*i-s*t);return this.x=t+o*l+s*u-a*c,this.y=i+o*c+a*l-r*u,this.z=n+o*u+r*c-s*l,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*n,this.y=r[1]*t+r[5]*i+r[9]*n,this.z=r[2]*t+r[6]*i+r[10]*n,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const i=e.x,n=e.y,r=e.z,s=t.x,a=t.y,o=t.z;return this.x=n*o-r*a,this.y=r*s-i*o,this.z=i*a-n*s,this}projectOnVector(e){const t=e.lengthSq();if(0===t)return this.set(0,0,0);const i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return yt.copy(this).projectOnVector(e),this.sub(yt)}reflect(e){return this.sub(yt.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(0===t)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(Fe(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y,n=this.z-e.z;return t*t+i*i+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){const n=Math.sin(t)*e;return this.x=n*Math.sin(i),this.y=Math.cos(t)*e,this.z=n*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),n=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=n,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=2*(Math.random()-.5),t=Math.random()*Math.PI*2,i=Math.sqrt(1-e**2);return this.x=i*Math.cos(t),this.y=i*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const yt=new _t,vt=new gt;class bt{constructor(e=new _t(1/0,1/0,1/0),t=new _t(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,wt),wt.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(It),Dt.subVectors(this.max,It),Mt.subVectors(e.a,It),At.subVectors(e.b,It),Ct.subVectors(e.c,It),Tt.subVectors(At,Mt),Pt.subVectors(Ct,At),Et.subVectors(Mt,Ct);let t=[0,-Tt.z,Tt.y,0,-Pt.z,Pt.y,0,-Et.z,Et.y,Tt.z,0,-Tt.x,Pt.z,0,-Pt.x,Et.z,0,-Et.x,-Tt.y,Tt.x,0,-Pt.y,Pt.x,0,-Et.y,Et.x,0];return!!kt(t,Mt,At,Ct,Dt)&&(t=[1,0,0,0,1,0,0,0,1],!!kt(t,Mt,At,Ct,Dt)&&(Rt.crossVectors(Tt,Pt),t=[Rt.x,Rt.y,Rt.z],kt(t,Mt,At,Ct,Dt)))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,wt).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=.5*this.getSize(wt).length()),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()||(xt[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),xt[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),xt[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),xt[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),xt[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),xt[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),xt[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),xt[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(xt)),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const xt=[new _t,new _t,new _t,new _t,new _t,new _t,new _t,new _t],wt=new _t,St=new bt,Mt=new _t,At=new _t,Ct=new _t,Tt=new _t,Pt=new _t,Et=new _t,It=new _t,Dt=new _t,Rt=new _t,Lt=new _t;function kt(e,t,i,n,r){for(let s=0,a=e.length-3;s<=a;s+=3){Lt.fromArray(e,s);const a=r.x*Math.abs(Lt.x)+r.y*Math.abs(Lt.y)+r.z*Math.abs(Lt.z),o=t.dot(Lt),l=i.dot(Lt),c=n.dot(Lt);if(Math.max(-Math.max(o,l,c),Math.min(o,l,c))>a)return!1}return!0}const Ot=new bt,Nt=new _t,Ft=new _t;class Bt{constructor(e=new _t,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const i=this.center;void 0!==t?i.copy(t):Ot.setFromPoints(e).getCenter(i);let n=0;for(let t=0,r=e.length;tthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Nt.subVectors(e,this.center);const t=Nt.lengthSq();if(t>this.radius*this.radius){const e=Math.sqrt(t),i=.5*(e-this.radius);this.center.addScaledVector(Nt,i/e),this.radius+=i}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(!0===this.center.equals(e.center)?this.radius=Math.max(this.radius,e.radius):(Ft.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Nt.copy(e.center).add(Ft)),this.expandByPoint(Nt.copy(e.center).sub(Ft))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return(new this.constructor).copy(this)}}const zt=new _t,Ut=new _t,Vt=new _t,$t=new _t,Gt=new _t,Ht=new _t,jt=new _t;class Wt{constructor(e=new _t,t=new _t(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,zt)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=zt.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(zt.copy(this.origin).addScaledVector(this.direction,t),zt.distanceToSquared(e))}distanceSqToSegment(e,t,i,n){Ut.copy(e).add(t).multiplyScalar(.5),Vt.copy(t).sub(e).normalize(),$t.copy(this.origin).sub(Ut);const r=.5*e.distanceTo(t),s=-this.direction.dot(Vt),a=$t.dot(this.direction),o=-$t.dot(Vt),l=$t.lengthSq(),c=Math.abs(1-s*s);let u,h,d,f;if(c>0)if(u=s*o-a,h=s*a-o,f=r*c,u>=0)if(h>=-f)if(h<=f){const e=1/c;u*=e,h*=e,d=u*(u+s*h+2*a)+h*(s*u+h+2*o)+l}else h=r,u=Math.max(0,-(s*h+a)),d=-u*u+h*(h+2*o)+l;else h=-r,u=Math.max(0,-(s*h+a)),d=-u*u+h*(h+2*o)+l;else h<=-f?(u=Math.max(0,-(-s*r+a)),h=u>0?-r:Math.min(Math.max(-r,-o),r),d=-u*u+h*(h+2*o)+l):h<=f?(u=0,h=Math.min(Math.max(-r,-o),r),d=h*(h+2*o)+l):(u=Math.max(0,-(s*r+a)),h=u>0?r:Math.min(Math.max(-r,-o),r),d=-u*u+h*(h+2*o)+l);else h=s>0?-r:r,u=Math.max(0,-(s*h+a)),d=-u*u+h*(h+2*o)+l;return i&&i.copy(this.origin).addScaledVector(this.direction,u),n&&n.copy(Ut).addScaledVector(Vt,h),d}intersectSphere(e,t){zt.subVectors(e.center,this.origin);const i=zt.dot(this.direction),n=zt.dot(zt)-i*i,r=e.radius*e.radius;if(n>r)return null;const s=Math.sqrt(r-n),a=i-s,o=i+s;return o<0?null:a<0?this.at(o,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;const i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){const i=this.distanceToPlane(e);return null===i?null:this.at(i,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);if(0===t)return!0;return e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,n,r,s,a,o;const l=1/this.direction.x,c=1/this.direction.y,u=1/this.direction.z,h=this.origin;return l>=0?(i=(e.min.x-h.x)*l,n=(e.max.x-h.x)*l):(i=(e.max.x-h.x)*l,n=(e.min.x-h.x)*l),c>=0?(r=(e.min.y-h.y)*c,s=(e.max.y-h.y)*c):(r=(e.max.y-h.y)*c,s=(e.min.y-h.y)*c),i>s||r>n?null:((r>i||isNaN(i))&&(i=r),(s=0?(a=(e.min.z-h.z)*u,o=(e.max.z-h.z)*u):(a=(e.max.z-h.z)*u,o=(e.min.z-h.z)*u),i>o||a>n?null:((a>i||i!=i)&&(i=a),(o=0?i:n,t)))}intersectsBox(e){return null!==this.intersectBox(e,zt)}intersectTriangle(e,t,i,n,r){Gt.subVectors(t,e),Ht.subVectors(i,e),jt.crossVectors(Gt,Ht);let s,a=this.direction.dot(jt);if(a>0){if(n)return null;s=1}else{if(!(a<0))return null;s=-1,a=-a}$t.subVectors(this.origin,e);const o=s*this.direction.dot(Ht.crossVectors($t,Ht));if(o<0)return null;const l=s*this.direction.dot(Gt.cross($t));if(l<0)return null;if(o+l>a)return null;const c=-s*$t.dot(jt);return c<0?null:this.at(c/a,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}class qt{constructor(e,t,i,n,r,s,a,o,l,c,u,h,d,f,m,p){qt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==e&&this.set(e,t,i,n,r,s,a,o,l,c,u,h,d,f,m,p)}set(e,t,i,n,r,s,a,o,l,c,u,h,d,f,m,p){const g=this.elements;return g[0]=e,g[4]=t,g[8]=i,g[12]=n,g[1]=r,g[5]=s,g[9]=a,g[13]=o,g[2]=l,g[6]=c,g[10]=u,g[14]=h,g[3]=d,g[7]=f,g[11]=m,g[15]=p,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new qt).fromArray(this.elements)}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){const t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,i=e.elements,n=1/Xt.setFromMatrixColumn(e,0).length(),r=1/Xt.setFromMatrixColumn(e,1).length(),s=1/Xt.setFromMatrixColumn(e,2).length();return t[0]=i[0]*n,t[1]=i[1]*n,t[2]=i[2]*n,t[3]=0,t[4]=i[4]*r,t[5]=i[5]*r,t[6]=i[6]*r,t[7]=0,t[8]=i[8]*s,t[9]=i[9]*s,t[10]=i[10]*s,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,n=e.y,r=e.z,s=Math.cos(i),a=Math.sin(i),o=Math.cos(n),l=Math.sin(n),c=Math.cos(r),u=Math.sin(r);if("XYZ"===e.order){const e=s*c,i=s*u,n=a*c,r=a*u;t[0]=o*c,t[4]=-o*u,t[8]=l,t[1]=i+n*l,t[5]=e-r*l,t[9]=-a*o,t[2]=r-e*l,t[6]=n+i*l,t[10]=s*o}else if("YXZ"===e.order){const e=o*c,i=o*u,n=l*c,r=l*u;t[0]=e+r*a,t[4]=n*a-i,t[8]=s*l,t[1]=s*u,t[5]=s*c,t[9]=-a,t[2]=i*a-n,t[6]=r+e*a,t[10]=s*o}else if("ZXY"===e.order){const e=o*c,i=o*u,n=l*c,r=l*u;t[0]=e-r*a,t[4]=-s*u,t[8]=n+i*a,t[1]=i+n*a,t[5]=s*c,t[9]=r-e*a,t[2]=-s*l,t[6]=a,t[10]=s*o}else if("ZYX"===e.order){const e=s*c,i=s*u,n=a*c,r=a*u;t[0]=o*c,t[4]=n*l-i,t[8]=e*l+r,t[1]=o*u,t[5]=r*l+e,t[9]=i*l-n,t[2]=-l,t[6]=a*o,t[10]=s*o}else if("YZX"===e.order){const e=s*o,i=s*l,n=a*o,r=a*l;t[0]=o*c,t[4]=r-e*u,t[8]=n*u+i,t[1]=u,t[5]=s*c,t[9]=-a*c,t[2]=-l*c,t[6]=i*u+n,t[10]=e-r*u}else if("XZY"===e.order){const e=s*o,i=s*l,n=a*o,r=a*l;t[0]=o*c,t[4]=-u,t[8]=l*c,t[1]=e*u+r,t[5]=s*c,t[9]=i*u-n,t[2]=n*u-i,t[6]=a*c,t[10]=r*u+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Kt,e,Zt)}lookAt(e,t,i){const n=this.elements;return ei.subVectors(e,t),0===ei.lengthSq()&&(ei.z=1),ei.normalize(),Qt.crossVectors(i,ei),0===Qt.lengthSq()&&(1===Math.abs(i.z)?ei.x+=1e-4:ei.z+=1e-4,ei.normalize(),Qt.crossVectors(i,ei)),Qt.normalize(),Jt.crossVectors(ei,Qt),n[0]=Qt.x,n[4]=Jt.x,n[8]=ei.x,n[1]=Qt.y,n[5]=Jt.y,n[9]=ei.y,n[2]=Qt.z,n[6]=Jt.z,n[10]=ei.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,n=t.elements,r=this.elements,s=i[0],a=i[4],o=i[8],l=i[12],c=i[1],u=i[5],h=i[9],d=i[13],f=i[2],m=i[6],p=i[10],g=i[14],_=i[3],y=i[7],v=i[11],b=i[15],x=n[0],w=n[4],S=n[8],M=n[12],A=n[1],C=n[5],T=n[9],P=n[13],E=n[2],I=n[6],D=n[10],R=n[14],L=n[3],k=n[7],O=n[11],N=n[15];return r[0]=s*x+a*A+o*E+l*L,r[4]=s*w+a*C+o*I+l*k,r[8]=s*S+a*T+o*D+l*O,r[12]=s*M+a*P+o*R+l*N,r[1]=c*x+u*A+h*E+d*L,r[5]=c*w+u*C+h*I+d*k,r[9]=c*S+u*T+h*D+d*O,r[13]=c*M+u*P+h*R+d*N,r[2]=f*x+m*A+p*E+g*L,r[6]=f*w+m*C+p*I+g*k,r[10]=f*S+m*T+p*D+g*O,r[14]=f*M+m*P+p*R+g*N,r[3]=_*x+y*A+v*E+b*L,r[7]=_*w+y*C+v*I+b*k,r[11]=_*S+y*T+v*D+b*O,r[15]=_*M+y*P+v*R+b*N,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[4],n=e[8],r=e[12],s=e[1],a=e[5],o=e[9],l=e[13],c=e[2],u=e[6],h=e[10],d=e[14];return e[3]*(+r*o*u-n*l*u-r*a*h+i*l*h+n*a*d-i*o*d)+e[7]*(+t*o*d-t*l*h+r*s*h-n*s*d+n*l*c-r*o*c)+e[11]*(+t*l*u-t*a*d-r*s*u+i*s*d+r*a*c-i*l*c)+e[15]*(-n*a*c-t*o*u+t*a*h+n*s*u-i*s*h+i*o*c)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){const n=this.elements;return e.isVector3?(n[12]=e.x,n[13]=e.y,n[14]=e.z):(n[12]=e,n[13]=t,n[14]=i),this}invert(){const e=this.elements,t=e[0],i=e[1],n=e[2],r=e[3],s=e[4],a=e[5],o=e[6],l=e[7],c=e[8],u=e[9],h=e[10],d=e[11],f=e[12],m=e[13],p=e[14],g=e[15],_=u*p*l-m*h*l+m*o*d-a*p*d-u*o*g+a*h*g,y=f*h*l-c*p*l-f*o*d+s*p*d+c*o*g-s*h*g,v=c*m*l-f*u*l+f*a*d-s*m*d-c*a*g+s*u*g,b=f*u*o-c*m*o-f*a*h+s*m*h+c*a*p-s*u*p,x=t*_+i*y+n*v+r*b;if(0===x)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const w=1/x;return e[0]=_*w,e[1]=(m*h*r-u*p*r-m*n*d+i*p*d+u*n*g-i*h*g)*w,e[2]=(a*p*r-m*o*r+m*n*l-i*p*l-a*n*g+i*o*g)*w,e[3]=(u*o*r-a*h*r-u*n*l+i*h*l+a*n*d-i*o*d)*w,e[4]=y*w,e[5]=(c*p*r-f*h*r+f*n*d-t*p*d-c*n*g+t*h*g)*w,e[6]=(f*o*r-s*p*r-f*n*l+t*p*l+s*n*g-t*o*g)*w,e[7]=(s*h*r-c*o*r+c*n*l-t*h*l-s*n*d+t*o*d)*w,e[8]=v*w,e[9]=(f*u*r-c*m*r-f*i*d+t*m*d+c*i*g-t*u*g)*w,e[10]=(s*m*r-f*a*r+f*i*l-t*m*l-s*i*g+t*a*g)*w,e[11]=(c*a*r-s*u*r-c*i*l+t*u*l+s*i*d-t*a*d)*w,e[12]=b*w,e[13]=(c*m*n-f*u*n+f*i*h-t*m*h-c*i*p+t*u*p)*w,e[14]=(f*a*n-s*m*n-f*i*o+t*m*o+s*i*p-t*a*p)*w,e[15]=(s*u*n-c*a*n+c*i*o-t*u*o-s*i*h+t*a*h)*w,this}scale(e){const t=this.elements,i=e.x,n=e.y,r=e.z;return t[0]*=i,t[4]*=n,t[8]*=r,t[1]*=i,t[5]*=n,t[9]*=r,t[2]*=i,t[6]*=n,t[10]*=r,t[3]*=i,t[7]*=n,t[11]*=r,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],n=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,n))}makeTranslation(e,t,i){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const i=Math.cos(t),n=Math.sin(t),r=1-i,s=e.x,a=e.y,o=e.z,l=r*s,c=r*a;return this.set(l*s+i,l*a-n*o,l*o+n*a,0,l*a+n*o,c*a+i,c*o-n*s,0,l*o-n*a,c*o+n*s,r*o*o+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,n,r,s){return this.set(1,i,r,0,e,1,s,0,t,n,1,0,0,0,0,1),this}compose(e,t,i){const n=this.elements,r=t._x,s=t._y,a=t._z,o=t._w,l=r+r,c=s+s,u=a+a,h=r*l,d=r*c,f=r*u,m=s*c,p=s*u,g=a*u,_=o*l,y=o*c,v=o*u,b=i.x,x=i.y,w=i.z;return n[0]=(1-(m+g))*b,n[1]=(d+v)*b,n[2]=(f-y)*b,n[3]=0,n[4]=(d-v)*x,n[5]=(1-(h+g))*x,n[6]=(p+_)*x,n[7]=0,n[8]=(f+y)*w,n[9]=(p-_)*w,n[10]=(1-(h+m))*w,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,this}decompose(e,t,i){const n=this.elements;let r=Xt.set(n[0],n[1],n[2]).length();const s=Xt.set(n[4],n[5],n[6]).length(),a=Xt.set(n[8],n[9],n[10]).length();this.determinant()<0&&(r=-r),e.x=n[12],e.y=n[13],e.z=n[14],Yt.copy(this);const o=1/r,l=1/s,c=1/a;return Yt.elements[0]*=o,Yt.elements[1]*=o,Yt.elements[2]*=o,Yt.elements[4]*=l,Yt.elements[5]*=l,Yt.elements[6]*=l,Yt.elements[8]*=c,Yt.elements[9]*=c,Yt.elements[10]*=c,t.setFromRotationMatrix(Yt),i.x=r,i.y=s,i.z=a,this}makePerspective(e,t,i,n,r,s,a=2e3){const o=this.elements,l=2*r/(t-e),c=2*r/(i-n),u=(t+e)/(t-e),h=(i+n)/(i-n);let d,f;if(a===Ie)d=-(s+r)/(s-r),f=-2*s*r/(s-r);else{if(a!==De)throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+a);d=-s/(s-r),f=-s*r/(s-r)}return o[0]=l,o[4]=0,o[8]=u,o[12]=0,o[1]=0,o[5]=c,o[9]=h,o[13]=0,o[2]=0,o[6]=0,o[10]=d,o[14]=f,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(e,t,i,n,r,s,a=2e3){const o=this.elements,l=1/(t-e),c=1/(i-n),u=1/(s-r),h=(t+e)*l,d=(i+n)*c;let f,m;if(a===Ie)f=(s+r)*u,m=-2*u;else{if(a!==De)throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+a);f=r*u,m=-1*u}return o[0]=2*l,o[4]=0,o[8]=0,o[12]=-h,o[1]=0,o[5]=2*c,o[9]=0,o[13]=-d,o[2]=0,o[6]=0,o[10]=m,o[14]=-f,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(e){const t=this.elements,i=e.elements;for(let e=0;e<16;e++)if(t[e]!==i[e])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}}const Xt=new _t,Yt=new qt,Kt=new _t(0,0,0),Zt=new _t(1,1,1),Qt=new _t,Jt=new _t,ei=new _t,ti=new qt,ii=new gt;class ni{constructor(e=0,t=0,i=0,n=ni.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=i,this._order=n}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,n=this._order){return this._x=e,this._y=t,this._z=i,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){const n=e.elements,r=n[0],s=n[4],a=n[8],o=n[1],l=n[5],c=n[9],u=n[2],h=n[6],d=n[10];switch(t){case"XYZ":this._y=Math.asin(Fe(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-c,d),this._z=Math.atan2(-s,r)):(this._x=Math.atan2(h,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Fe(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(a,d),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-u,r),this._z=0);break;case"ZXY":this._x=Math.asin(Fe(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(-u,d),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-Fe(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(h,d),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-s,l));break;case"YZX":this._z=Math.asin(Fe(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-c,l),this._y=Math.atan2(-u,r)):(this._x=0,this._y=Math.atan2(a,d));break;case"XZY":this._z=Math.asin(-Fe(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(h,l),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-c,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!0===i&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return ti.makeRotationFromQuaternion(e),this.setFromRotationMatrix(ti,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return ii.setFromEuler(this),this.setFromQuaternion(ii,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}ni.DEFAULT_ORDER="XYZ";class ri{constructor(){this.mask=1}set(e){this.mask=1<>>0}enable(e){this.mask|=1<1){for(let e=0;e1){for(let e=0;e0&&(i=i.concat(r))}return i}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ui,e,hi),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ui,di,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let i=0,n=t.length;i0&&(n.userData=this.userData),n.layers=this.layers.mask,n.matrix=this.matrix.toArray(),n.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(n.matrixAutoUpdate=!1),this.isInstancedMesh&&(n.type="InstancedMesh",n.count=this.count,n.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(n.instanceColor=this.instanceColor.toJSON())),this.isScene)this.background&&(this.background.isColor?n.background=this.background.toJSON():this.background.isTexture&&(n.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(n.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){n.geometry=r(e.geometries,this.geometry);const t=this.geometry.parameters;if(void 0!==t&&void 0!==t.shapes){const i=t.shapes;if(Array.isArray(i))for(let t=0,n=i.length;t0){n.children=[];for(let t=0;t0){n.animations=[];for(let t=0;t0&&(i.geometries=t),n.length>0&&(i.materials=n),r.length>0&&(i.textures=r),a.length>0&&(i.images=a),o.length>0&&(i.shapes=o),l.length>0&&(i.skeletons=l),c.length>0&&(i.animations=c),u.length>0&&(i.nodes=u)}return i.object=n,i;function s(e){const t=[];for(const i in e){const n=e[i];delete n.metadata,t.push(n)}return t}}clone(e){return(new this.constructor).copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;t0?n.multiplyScalar(1/Math.sqrt(r)):n.set(0,0,0)}static getBarycoord(e,t,i,n,r){vi.subVectors(n,t),bi.subVectors(i,t),xi.subVectors(e,t);const s=vi.dot(vi),a=vi.dot(bi),o=vi.dot(xi),l=bi.dot(bi),c=bi.dot(xi),u=s*l-a*a;if(0===u)return r.set(-2,-1,-1);const h=1/u,d=(l*o-a*c)*h,f=(s*c-a*o)*h;return r.set(1-d-f,f,d)}static containsPoint(e,t,i,n){return this.getBarycoord(e,t,i,n,wi),wi.x>=0&&wi.y>=0&&wi.x+wi.y<=1}static getUV(e,t,i,n,r,s,a,o){return!1===Ei&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),Ei=!0),this.getInterpolation(e,t,i,n,r,s,a,o)}static getInterpolation(e,t,i,n,r,s,a,o){return this.getBarycoord(e,t,i,n,wi),o.setScalar(0),o.addScaledVector(r,wi.x),o.addScaledVector(s,wi.y),o.addScaledVector(a,wi.z),o}static isFrontFacing(e,t,i,n){return vi.subVectors(i,t),bi.subVectors(e,t),vi.cross(bi).dot(n)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,n){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[n]),this}setFromAttributeAndIndices(e,t,i,n){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,n),this}clone(){return(new this.constructor).copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return vi.subVectors(this.c,this.b),bi.subVectors(this.a,this.b),.5*vi.cross(bi).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Ii.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Ii.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,i,n,r){return!1===Ei&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),Ei=!0),Ii.getInterpolation(e,this.a,this.b,this.c,t,i,n,r)}getInterpolation(e,t,i,n,r){return Ii.getInterpolation(e,this.a,this.b,this.c,t,i,n,r)}containsPoint(e){return Ii.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Ii.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const i=this.a,n=this.b,r=this.c;let s,a;Si.subVectors(n,i),Mi.subVectors(r,i),Ci.subVectors(e,i);const o=Si.dot(Ci),l=Mi.dot(Ci);if(o<=0&&l<=0)return t.copy(i);Ti.subVectors(e,n);const c=Si.dot(Ti),u=Mi.dot(Ti);if(c>=0&&u<=c)return t.copy(n);const h=o*u-c*l;if(h<=0&&o>=0&&c<=0)return s=o/(o-c),t.copy(i).addScaledVector(Si,s);Pi.subVectors(e,r);const d=Si.dot(Pi),f=Mi.dot(Pi);if(f>=0&&d<=f)return t.copy(r);const m=d*l-o*f;if(m<=0&&l>=0&&f<=0)return a=l/(l-f),t.copy(i).addScaledVector(Mi,a);const p=c*f-d*u;if(p<=0&&u-c>=0&&d-f>=0)return Ai.subVectors(r,n),a=(u-c)/(u-c+(d-f)),t.copy(n).addScaledVector(Ai,a);const g=1/(p+m+h);return s=m*g,a=h*g,t.copy(i).addScaledVector(Si,s).addScaledVector(Mi,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const Di={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Ri={h:0,s:0,l:0},Li={h:0,s:0,l:0};function ki(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+6*(t-e)*(2/3-i):e}class Oi{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,i)}set(e,t,i){if(void 0===t&&void 0===i){const t=e;t&&t.isColor?this.copy(t):"number"==typeof t?this.setHex(t):"string"==typeof t&&this.setStyle(t)}else this.setRGB(e,t,i);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=ce){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,tt.toWorkingColorSpace(this,t),this}setRGB(e,t,i,n=tt.workingColorSpace){return this.r=e,this.g=t,this.b=i,tt.toWorkingColorSpace(this,n),this}setHSL(e,t,i,n=tt.workingColorSpace){var r;if(e=(e%(r=1)+r)%r,t=Fe(t,0,1),i=Fe(i,0,1),0===t)this.r=this.g=this.b=i;else{const n=i<=.5?i*(1+t):i+t-i*t,r=2*i-n;this.r=ki(r,n,e+1/3),this.g=ki(r,n,e),this.b=ki(r,n,e-1/3)}return tt.toWorkingColorSpace(this,n),this}setStyle(e,t=ce){function i(t){void 0!==t&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let n;if(n=/^(\w+)\(([^\)]*)\)/.exec(e)){let r;const s=n[1],a=n[2];switch(s){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,t);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,t);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(n=/^\#([A-Fa-f\d]+)$/.exec(e)){const i=n[1],r=i.length;if(3===r)return this.setRGB(parseInt(i.charAt(0),16)/15,parseInt(i.charAt(1),16)/15,parseInt(i.charAt(2),16)/15,t);if(6===r)return this.setHex(parseInt(i,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=ce){const i=Di[e.toLowerCase()];return void 0!==i?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=it(e.r),this.g=it(e.g),this.b=it(e.b),this}copyLinearToSRGB(e){return this.r=nt(e.r),this.g=nt(e.g),this.b=nt(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=ce){return tt.fromWorkingColorSpace(Ni.copy(this),e),65536*Math.round(Fe(255*Ni.r,0,255))+256*Math.round(Fe(255*Ni.g,0,255))+Math.round(Fe(255*Ni.b,0,255))}getHexString(e=ce){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=tt.workingColorSpace){tt.fromWorkingColorSpace(Ni.copy(this),t);const i=Ni.r,n=Ni.g,r=Ni.b,s=Math.max(i,n,r),a=Math.min(i,n,r);let o,l;const c=(a+s)/2;if(a===s)o=0,l=0;else{const e=s-a;switch(l=c<=.5?e/(s+a):e/(2-s-a),s){case i:o=(n-r)/e+(n0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(void 0!==e)for(const t in e){const i=e[t];if(void 0===i){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const n=this[t];void 0!==n?n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[t]=i:console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`)}}toJSON(e){const t=void 0===e||"string"==typeof e;t&&(e={textures:{},images:{}});const i={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};function n(e){const t=[];for(const i in e){const n=e[i];delete n.metadata,t.push(n)}return t}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),void 0!==this.roughness&&(i.roughness=this.roughness),void 0!==this.metalness&&(i.metalness=this.metalness),void 0!==this.sheen&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(i.shininess=this.shininess),void 0!==this.clearcoat&&(i.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.iridescence&&(i.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(i.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),void 0!==this.anisotropy&&(i.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(i.combine=this.combine)),void 0!==this.envMapIntensity&&(i.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(i.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(i.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(i.size=this.size),null!==this.shadowSide&&(i.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(i.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(i.blending=this.blending),this.side!==r&&(i.side=this.side),!0===this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),!0===this.transparent&&(i.transparent=!0),204!==this.blendSrc&&(i.blendSrc=this.blendSrc),205!==this.blendDst&&(i.blendDst=this.blendDst),this.blendEquation!==o&&(i.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(i.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(i.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(i.blendAlpha=this.blendAlpha),3!==this.depthFunc&&(i.depthFunc=this.depthFunc),!1===this.depthTest&&(i.depthTest=this.depthTest),!1===this.depthWrite&&(i.depthWrite=this.depthWrite),!1===this.colorWrite&&(i.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(i.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(i.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(i.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==_e&&(i.stencilFail=this.stencilFail),this.stencilZFail!==_e&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==_e&&(i.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(i.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(i.rotation=this.rotation),!0===this.polygonOffset&&(i.polygonOffset=!0),0!==this.polygonOffsetFactor&&(i.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(i.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(i.linewidth=this.linewidth),void 0!==this.dashSize&&(i.dashSize=this.dashSize),void 0!==this.gapSize&&(i.gapSize=this.gapSize),void 0!==this.scale&&(i.scale=this.scale),!0===this.dithering&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),!0===this.alphaHash&&(i.alphaHash=!0),!0===this.alphaToCoverage&&(i.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(i.premultipliedAlpha=!0),!0===this.forceSinglePass&&(i.forceSinglePass=!0),!0===this.wireframe&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(i.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(i.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(i.flatShading=!0),!1===this.visible&&(i.visible=!1),!1===this.toneMapped&&(i.toneMapped=!1),!1===this.fog&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData),t){const t=n(e.textures),r=n(e.images);t.length>0&&(i.textures=t),r.length>0&&(i.images=r)}return i}clone(){return(new this.constructor).copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let i=null;if(null!==t){const e=t.length;i=new Array(e);for(let n=0;n!==e;++n)i[n]=t[n].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){!0===e&&this.version++}}class zi extends Bi{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Oi(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=A,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Ui=new _t,Vi=new Ge;class $i{constructor(e,t,i=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=i,this.usage=Ce,this.updateRange={offset:0,count:-1},this.gpuType=K,this.version=0}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let n=0,r=this.itemSize;n0&&(e.userData=this.userData),void 0!==this.parameters){const t=this.parameters;for(const i in t)void 0!==t[i]&&(e[i]=t[i]);return e}e.data={attributes:{}};const t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const i=this.attributes;for(const t in i){const n=i[t];e.data.attributes[t]=n.toJSON(e.data)}const n={};let r=!1;for(const t in this.morphAttributes){const i=this.morphAttributes[t],s=[];for(let t=0,n=i.length;t0&&(n[t]=s,r=!0)}r&&(e.data.morphAttributes=n,e.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(e.data.groups=JSON.parse(JSON.stringify(s)));const a=this.boundingSphere;return null!==a&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return(new this.constructor).copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const i=e.index;null!==i&&this.setIndex(i.clone(t));const n=e.attributes;for(const e in n){const i=n[e];this.setAttribute(e,i.clone(t))}const r=e.morphAttributes;for(const e in r){const i=[],n=r[e];for(let e=0,r=n.length;e0){const i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;e(e.far-e.near)**2)return}en.copy(r).invert(),tn.copy(e.ray).applyMatrix4(en),null!==i.boundingBox&&!1===tn.intersectsBox(i.boundingBox)||this._computeIntersections(e,t,tn)}}_computeIntersections(e,t,i){let n;const r=this.geometry,s=this.material,a=r.index,o=r.attributes.position,l=r.attributes.uv,c=r.attributes.uv1,u=r.attributes.normal,h=r.groups,d=r.drawRange;if(null!==a)if(Array.isArray(s))for(let r=0,o=h.length;ri.far?null:{distance:h,point:_n.clone(),object:e}}(e,t,i,n,sn,an,on,gn);if(d){a&&(un.fromBufferAttribute(a,c),hn.fromBufferAttribute(a,u),dn.fromBufferAttribute(a,h),d.uv=Ii.getInterpolation(gn,sn,an,on,un,hn,dn,new Ge)),o&&(un.fromBufferAttribute(o,c),hn.fromBufferAttribute(o,u),dn.fromBufferAttribute(o,h),d.uv1=Ii.getInterpolation(gn,sn,an,on,un,hn,dn,new Ge),d.uv2=d.uv1),l&&(fn.fromBufferAttribute(l,c),mn.fromBufferAttribute(l,u),pn.fromBufferAttribute(l,h),d.normal=Ii.getInterpolation(gn,sn,an,on,fn,mn,pn,new _t),d.normal.dot(n.direction)>0&&d.normal.multiplyScalar(-1));const e={a:c,b:u,c:h,normal:new _t,materialIndex:0};Ii.getNormal(sn,an,on,e.normal),d.face=e}return d}class bn extends Ji{constructor(e=1,t=1,i=1,n=1,r=1,s=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:n,heightSegments:r,depthSegments:s};const a=this;n=Math.floor(n),r=Math.floor(r),s=Math.floor(s);const o=[],l=[],c=[],u=[];let h=0,d=0;function f(e,t,i,n,r,s,f,m,p,g,_){const y=s/p,v=f/g,b=s/2,x=f/2,w=m/2,S=p+1,M=g+1;let A=0,C=0;const T=new _t;for(let s=0;s0?1:-1,c.push(T.x,T.y,T.z),u.push(o/p),u.push(1-s/g),A+=1}}for(let e=0;e0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const i={};for(const e in this.extensions)!0===this.extensions[e]&&(i[e]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}}class Cn extends yi{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new qt,this.projectionMatrix=new qt,this.projectionMatrixInverse=new qt,this.coordinateSystem=Ie}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}}class Tn extends Cn{constructor(e=50,t=1,i=.1,n=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=n,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=2*Oe*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(.5*ke*this.fov);return.5*this.getFilmHeight()/e}getEffectiveFOV(){return 2*Oe*Math.atan(Math.tan(.5*ke*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,i,n,r,s){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=n,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(.5*ke*this.fov)/this.zoom,i=2*t,n=this.aspect*i,r=-.5*n;const s=this.view;if(null!==this.view&&this.view.enabled){const e=s.fullWidth,a=s.fullHeight;r+=s.offsetX*n/e,t-=s.offsetY*i/a,n*=s.width/e,i*=s.height/a}const a=this.filmOffset;0!==a&&(r+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+n,t,t-i,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const Pn=-90;class En extends yi{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;const n=new Tn(Pn,1,e,t);n.layers=this.layers,this.add(n);const r=new Tn(Pn,1,e,t);r.layers=this.layers,this.add(r);const s=new Tn(Pn,1,e,t);s.layers=this.layers,this.add(s);const a=new Tn(Pn,1,e,t);a.layers=this.layers,this.add(a);const o=new Tn(Pn,1,e,t);o.layers=this.layers,this.add(o);const l=new Tn(Pn,1,e,t);l.layers=this.layers,this.add(l)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[i,n,r,s,a,o]=t;for(const e of t)this.remove(e);if(e===Ie)i.up.set(0,1,0),i.lookAt(1,0,0),n.up.set(0,1,0),n.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),s.up.set(0,0,1),s.lookAt(0,-1,0),a.up.set(0,1,0),a.lookAt(0,0,1),o.up.set(0,1,0),o.lookAt(0,0,-1);else{if(e!==De)throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);i.up.set(0,-1,0),i.lookAt(-1,0,0),n.up.set(0,-1,0),n.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),s.up.set(0,0,-1),s.lookAt(0,-1,0),a.up.set(0,-1,0),a.lookAt(0,0,1),o.up.set(0,-1,0),o.lookAt(0,0,-1)}for(const e of t)this.add(e),e.updateMatrixWorld()}update(e,t){null===this.parent&&this.updateMatrixWorld();const{renderTarget:i,activeMipmapLevel:n}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[r,s,a,o,l,c]=this.children,u=e.getRenderTarget(),h=e.getActiveCubeFace(),d=e.getActiveMipmapLevel(),f=e.xr.enabled;e.xr.enabled=!1;const m=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0,n),e.render(t,r),e.setRenderTarget(i,1,n),e.render(t,s),e.setRenderTarget(i,2,n),e.render(t,a),e.setRenderTarget(i,3,n),e.render(t,o),e.setRenderTarget(i,4,n),e.render(t,l),i.texture.generateMipmaps=m,e.setRenderTarget(i,5,n),e.render(t,c),e.setRenderTarget(u,h,d),e.xr.enabled=f,i.texture.needsPMREMUpdate=!0}}class In extends ut{constructor(e,t,i,n,r,s,a,o,l,c){super(e=void 0!==e?e:[],t=void 0!==t?t:k,i,n,r,s,a,o,l,c),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class Dn extends ft{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const i={width:e,height:e,depth:1},n=[i,i,i,i,i,i];void 0!==t.encoding&&(Ke("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."),t.colorSpace=t.encoding===oe?ce:le),this.texture=new In(n,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==t.generateMipmaps&&t.generateMipmaps,this.texture.minFilter=void 0!==t.minFilter?t.minFilter:G}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const i={uniforms:{tEquirect:{value:null}},vertexShader:"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);\n#include \n#include \n}",fragmentShader:"uniform sampler2D tEquirect;varying vec3 vWorldDirection;\n#include \nvoid main(){vec3 direction=normalize(vWorldDirection);vec2 sampleUV=equirectUv(direction);gl_FragColor=texture2D(tEquirect,sampleUV);}"},n=new bn(5,5,5),r=new An({name:"CubemapFromEquirect",uniforms:xn(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:s,blending:0});r.uniforms.tEquirect.value=t;const a=new yn(n,r),o=t.minFilter;t.minFilter===j&&(t.minFilter=G);return new En(1,10,this).update(e,a),t.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(e,t,i,n){const r=e.getRenderTarget();for(let r=0;r<6;r++)e.setRenderTarget(this,r),e.clear(t,i,n);e.setRenderTarget(r)}}const Rn=new _t,Ln=new _t,kn=new He;class On{constructor(e=new _t(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,i,n){return this.normal.set(e,t,i),this.constant=n,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,i){const n=Rn.subVectors(i,t).cross(Ln.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(n,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const i=e.delta(Rn),n=this.normal.dot(i);if(0===n)return 0===this.distanceToPoint(e.start)?t.copy(e.start):null;const r=-(e.start.dot(this.normal)+this.constant)/n;return r<0||r>1?null:t.copy(e.start).addScaledVector(i,r)}intersectsLine(e){const t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const i=t||kn.getNormalMatrix(e),n=this.coplanarPoint(Rn).applyMatrix4(e),r=this.normal.applyMatrix3(i).normalize();return this.constant=-n.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return(new this.constructor).copy(this)}}const Nn=new Bt,Fn=new _t;class Bn{constructor(e=new On,t=new On,i=new On,n=new On,r=new On,s=new On){this.planes=[e,t,i,n,r,s]}set(e,t,i,n,r,s){const a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(i),a[3].copy(n),a[4].copy(r),a[5].copy(s),this}copy(e){const t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e,t=2e3){const i=this.planes,n=e.elements,r=n[0],s=n[1],a=n[2],o=n[3],l=n[4],c=n[5],u=n[6],h=n[7],d=n[8],f=n[9],m=n[10],p=n[11],g=n[12],_=n[13],y=n[14],v=n[15];if(i[0].setComponents(o-r,h-l,p-d,v-g).normalize(),i[1].setComponents(o+r,h+l,p+d,v+g).normalize(),i[2].setComponents(o+s,h+c,p+f,v+_).normalize(),i[3].setComponents(o-s,h-c,p-f,v-_).normalize(),i[4].setComponents(o-a,h-u,p-m,v-y).normalize(),t===Ie)i[5].setComponents(o+a,h+u,p+m,v+y).normalize();else{if(t!==De)throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);i[5].setComponents(a,u,m,y).normalize()}return this}intersectsObject(e){if(void 0!==e.boundingSphere)null===e.boundingSphere&&e.computeBoundingSphere(),Nn.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;null===t.boundingSphere&&t.computeBoundingSphere(),Nn.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Nn)}intersectsSprite(e){return Nn.center.set(0,0,0),Nn.radius=.7071067811865476,Nn.applyMatrix4(e.matrixWorld),this.intersectsSphere(Nn)}intersectsSphere(e){const t=this.planes,i=e.center,n=-e.radius;for(let e=0;e<6;e++){if(t[e].distanceToPoint(i)0?e.max.x:e.min.x,Fn.y=n.normal.y>0?e.max.y:e.min.y,Fn.z=n.normal.z>0?e.max.z:e.min.z,n.distanceToPoint(Fn)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}function zn(){let e=null,t=!1,i=null,n=null;function r(t,s){i(t,s),n=e.requestAnimationFrame(r)}return{start:function(){!0!==t&&null!==i&&(n=e.requestAnimationFrame(r),t=!0)},stop:function(){e.cancelAnimationFrame(n),t=!1},setAnimationLoop:function(e){i=e},setContext:function(t){e=t}}}function Un(e,t){const i=t.isWebGL2,n=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),n.get(e)},remove:function(t){t.isInterleavedBufferAttribute&&(t=t.data);const i=n.get(t);i&&(e.deleteBuffer(i.buffer),n.delete(t))},update:function(t,r){if(t.isGLBufferAttribute){const e=n.get(t);return void((!e||e.version0\nvec4 plane;\n#pragma unroll_loop_start\nfor(int i=0;iplane.w)discard;}\n#pragma unroll_loop_end\n#if UNION_CLIPPING_PLANESplane.w)&&clipped;}\n#pragma unroll_loop_end\nif(clipped)discard;\n#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES>0\nvarying vec3 vClipPosition;uniform vec4 clippingPlanes[NUM_CLIPPING_PLANES];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES>0\nvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES>0\nvClipPosition=-mvPosition.xyz;\n#endif",color_fragment:"#if defined(USE_COLOR_ALPHA)\ndiffuseColor*=vColor;\n#elif defined(USE_COLOR)\ndiffuseColor.rgb*=vColor;\n#endif",color_pars_fragment:"#if defined(USE_COLOR_ALPHA)\nvarying vec4 vColor;\n#elif defined(USE_COLOR)\nvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined(USE_COLOR_ALPHA)\nvarying vec4 vColor;\n#elif defined(USE_COLOR)||defined(USE_INSTANCING_COLOR)\nvarying vec3 vColor;\n#endif",color_vertex:"#if defined(USE_COLOR_ALPHA)\nvColor=vec4(1.0);\n#elif defined(USE_COLOR)||defined(USE_INSTANCING_COLOR)\nvColor=vec3(1.0);\n#endif\n#ifdef USE_COLOR\nvColor*=color;\n#endif\n#ifdef USE_INSTANCING_COLOR\nvColor.xyz*=instanceColor.xyz;\n#endif",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;}vec3 pow2(const in vec3 x){return x*x;}float pow3(const in float x){return x*x*x;}float pow4(const in float x){float x2=x*x;return x2*x2;}float max3(const in vec3 v){return max(max(v.x,v.y),v.z);}float average(const in vec3 v){return dot(v,vec3(0.3333333));}highp float rand(const in vec2 uv){const highp float a=12.9898,b=78.233,c=43758.5453;highp float dt=dot(uv.xy,vec2(a,b)),sn=mod(dt,PI);return fract(sin(sn)*c);}\n#ifdef HIGH_PRECISION\nfloat precisionSafeLength(vec3 v){return length(v);}\n#else\nfloat precisionSafeLength(vec3 v){float maxComponent=max3(abs(v));return length(v/maxComponent)*maxComponent;}\n#endif\nstruct IncidentLight{vec3 color;vec3 direction;bool visible;};struct ReflectedLight{vec3 directDiffuse;vec3 directSpecular;vec3 indirectDiffuse;vec3 indirectSpecular;};\n#ifdef USE_ALPHAHASH\nvarying vec3 vPosition;\n#endif\nvec3 transformDirection(in vec3 dir,in mat4 matrix){return normalize((matrix*vec4(dir,0.0)).xyz);}vec3 inverseTransformDirection(in vec3 dir,in mat4 matrix){return normalize((vec4(dir,0.0)*matrix).xyz);}mat3 transposeMat3(const in mat3 m){mat3 tmp;tmp[0]=vec3(m[0].x,m[1].x,m[2].x);tmp[1]=vec3(m[0].y,m[1].y,m[2].y);tmp[2]=vec3(m[0].z,m[1].z,m[2].z);return tmp;}float luminance(const in vec3 rgb){const vec3 weights=vec3(0.2126729,0.7151522,0.0721750);return dot(weights,rgb);}bool isPerspectiveMatrix(mat4 m){return m[2][3]==-1.0;}vec2 equirectUv(in vec3 dir){float u=atan(dir.z,dir.x)*RECIPROCAL_PI2+0.5;float v=asin(clamp(dir.y,-1.0,1.0))*RECIPROCAL_PI+0.5;return vec2(u,v);}vec3 BRDF_Lambert(const in vec3 diffuseColor){return RECIPROCAL_PI*diffuseColor;}vec3 F_Schlick(const in vec3 f0,const in float f90,const in float dotVH){float fresnel=exp2((-5.55473*dotVH-6.98316)*dotVH);return f0*(1.0-fresnel)+(f90*fresnel);}float F_Schlick(const in float f0,const in float f90,const in float dotVH){float fresnel=exp2((-5.55473*dotVH-6.98316)*dotVH);return f0*(1.0-fresnel)+(f90*fresnel);}",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_minMipLevel 4.0\n#define cubeUV_minTileSize 16.0\nfloat getFace(vec3 direction){vec3 absDirection=abs(direction);float face=-1.0;if(absDirection.x>absDirection.z){if(absDirection.x>absDirection.y)face=direction.x>0.0?0.0:3.0;else face=direction.y>0.0?1.0:4.0;}else{if(absDirection.z>absDirection.y)face=direction.z>0.0?2.0:5.0;else face=direction.y>0.0?1.0:4.0;}return face;}vec2 getUV(vec3 direction,float face){vec2 uv;if(face==0.0){uv=vec2(direction.z,direction.y)/abs(direction.x);}else if(face==1.0){uv=vec2(-direction.x,-direction.z)/abs(direction.y);}else if(face==2.0){uv=vec2(-direction.x,direction.y)/abs(direction.z);}else if(face==3.0){uv=vec2(-direction.z,direction.y)/abs(direction.x);}else if(face==4.0){uv=vec2(-direction.x,direction.z)/abs(direction.y);}else{uv=vec2(direction.x,direction.y)/abs(direction.z);}return 0.5*(uv+1.0);}vec3 bilinearCubeUV(sampler2D envMap,vec3 direction,float mipInt){float face=getFace(direction);float filterInt=max(cubeUV_minMipLevel-mipInt,0.0);mipInt=max(mipInt,cubeUV_minMipLevel);float faceSize=exp2(mipInt);highp vec2 uv=getUV(direction,face)*(faceSize-2.0)+1.0;if(face>2.0){uv.y+=faceSize;face-=3.0;}uv.x+=face*faceSize;uv.x+=filterInt*3.0*cubeUV_minTileSize;uv.y+=4.0*(exp2(CUBEUV_MAX_MIP)-faceSize);uv.x*=CUBEUV_TEXEL_WIDTH;uv.y*=CUBEUV_TEXEL_HEIGHT;\n#ifdef texture2DGradEXT\nreturn texture2DGradEXT(envMap,uv,vec2(0.0),vec2(0.0)).rgb;\n#else\nreturn texture2D(envMap,uv).rgb;\n#endif\n}\n#define cubeUV_r0 1.0\n#define cubeUV_v0 0.339\n#define cubeUV_m0-2.0\n#define cubeUV_r1 0.8\n#define cubeUV_v1 0.276\n#define cubeUV_m1-1.0\n#define cubeUV_r4 0.4\n#define cubeUV_v4 0.046\n#define cubeUV_m4 2.0\n#define cubeUV_r5 0.305\n#define cubeUV_v5 0.016\n#define cubeUV_m5 3.0\n#define cubeUV_r6 0.21\n#define cubeUV_v6 0.0038\n#define cubeUV_m6 4.0\nfloat roughnessToMip(float roughness){float mip=0.0;if(roughness>=cubeUV_r1){mip=(cubeUV_r0-roughness)*(cubeUV_m1-cubeUV_m0)/(cubeUV_r0-cubeUV_r1)+cubeUV_m0;}else if(roughness>=cubeUV_r4){mip=(cubeUV_r1-roughness)*(cubeUV_m4-cubeUV_m1)/(cubeUV_r1-cubeUV_r4)+cubeUV_m1;}else if(roughness>=cubeUV_r5){mip=(cubeUV_r4-roughness)*(cubeUV_m5-cubeUV_m4)/(cubeUV_r4-cubeUV_r5)+cubeUV_m4;}else if(roughness>=cubeUV_r6){mip=(cubeUV_r5-roughness)*(cubeUV_m6-cubeUV_m5)/(cubeUV_r5-cubeUV_r6)+cubeUV_m5;}else{mip=-2.0*log2(1.16*roughness);}return mip;}vec4 textureCubeUV(sampler2D envMap,vec3 sampleDir,float roughness){float mip=clamp(roughnessToMip(roughness),cubeUV_m0,CUBEUV_MAX_MIP);float mipF=fract(mip);float mipInt=floor(mip);vec3 color0=bilinearCubeUV(envMap,sampleDir,mipInt);if(mipF==0.0){return vec4(color0,1.0);}else{vec3 color1=bilinearCubeUV(envMap,sampleDir,mipInt+1.0);return vec4(mix(color0,color1,mipF),1.0);}}\n#endif",defaultnormal_vertex:"vec3 transformedNormal=objectNormal;\n#ifdef USE_INSTANCING\nmat3 m=mat3(instanceMatrix);transformedNormal/=vec3(dot(m[0],m[0]),dot(m[1],m[1]),dot(m[2],m[2]));transformedNormal=m*transformedNormal;\n#endif\ntransformedNormal=normalMatrix*transformedNormal;\n#ifdef FLIP_SIDED\ntransformedNormal=-transformedNormal;\n#endif\n#ifdef USE_TANGENT\nvec3 transformedTangent=(modelViewMatrix*vec4(objectTangent,0.0)).xyz;\n#ifdef FLIP_SIDED\ntransformedTangent=-transformedTangent;\n#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\nuniform sampler2D displacementMap;uniform float displacementScale;uniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\ntransformed+=normalize(objectNormal)*(texture2D(displacementMap,vDisplacementMapUv).x*displacementScale+displacementBias);\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\nvec4 emissiveColor=texture2D(emissiveMap,vEmissiveMapUv);totalEmissiveRadiance*=emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\nuniform sampler2D emissiveMap;\n#endif",colorspace_fragment:"gl_FragColor=linearToOutputTexel(gl_FragColor);",colorspace_pars_fragment:"const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3=mat3(vec3(0.8224621,0.177538,0.0),vec3(0.0331941,0.9668058,0.0),vec3(0.0170827,0.0723974,0.9105199));const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB=mat3(vec3(1.2249401,-0.2249404,0.0),vec3(-0.0420569,1.0420571,0.0),vec3(-0.0196376,-0.0786361,1.0982735));vec4 LinearSRGBToLinearDisplayP3(in vec4 value){return vec4(value.rgb*LINEAR_SRGB_TO_LINEAR_DISPLAY_P3,value.a);}vec4 LinearDisplayP3ToLinearSRGB(in vec4 value){return vec4(value.rgb*LINEAR_DISPLAY_P3_TO_LINEAR_SRGB,value.a);}vec4 LinearTransferOETF(in vec4 value){return value;}vec4 sRGBTransferOETF(in vec4 value){return 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);}vec4 LinearToLinear(in vec4 value){return value;}vec4 LinearTosRGB(in vec4 value){return sRGBTransferOETF(value);}",envmap_fragment:"#ifdef USE_ENVMAP\n#ifdef ENV_WORLDPOS\nvec3 cameraToFrag;if(isOrthographic){cameraToFrag=normalize(vec3(-viewMatrix[0][2],-viewMatrix[1][2],-viewMatrix[2][2]));}else{cameraToFrag=normalize(vWorldPosition-cameraPosition);}vec3 worldNormal=inverseTransformDirection(normal,viewMatrix);\n#ifdef ENVMAP_MODE_REFLECTION\nvec3 reflectVec=reflect(cameraToFrag,worldNormal);\n#else\nvec3 reflectVec=refract(cameraToFrag,worldNormal,refractionRatio);\n#endif\n#else\nvec3 reflectVec=vReflect;\n#endif\n#ifdef ENVMAP_TYPE_CUBE\nvec4 envColor=textureCube(envMap,vec3(flipEnvMap*reflectVec.x,reflectVec.yz));\n#else\nvec4 envColor=vec4(0.0);\n#endif\n#ifdef ENVMAP_BLENDING_MULTIPLY\noutgoingLight=mix(outgoingLight,outgoingLight*envColor.xyz,specularStrength*reflectivity);\n#elif defined(ENVMAP_BLENDING_MIX)\noutgoingLight=mix(outgoingLight,envColor.xyz,specularStrength*reflectivity);\n#elif defined(ENVMAP_BLENDING_ADD)\noutgoingLight+=envColor.xyz*specularStrength*reflectivity;\n#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\nuniform float envMapIntensity;uniform float flipEnvMap;\n#ifdef ENVMAP_TYPE_CUBE\nuniform samplerCube envMap;\n#else\nuniform sampler2D envMap;\n#endif\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\nuniform float reflectivity;\n#if defined(USE_BUMPMAP)||defined(USE_NORMALMAP)||defined(PHONG)||defined(LAMBERT)\n#define ENV_WORLDPOS\n#endif\n#ifdef ENV_WORLDPOS\nvarying vec3 vWorldPosition;uniform float refractionRatio;\n#else\nvarying vec3 vReflect;\n#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n#if defined(USE_BUMPMAP)||defined(USE_NORMALMAP)||defined(PHONG)||defined(LAMBERT)\n#define ENV_WORLDPOS\n#endif\n#ifdef ENV_WORLDPOS\nvarying vec3 vWorldPosition;\n#else\nvarying vec3 vReflect;uniform float refractionRatio;\n#endif\n#endif",envmap_physical_pars_fragment:"#ifdef USE_ENVMAP\nvec3 getIBLIrradiance(const in vec3 normal){\n#ifdef ENVMAP_TYPE_CUBE_UV\nvec3 worldNormal=inverseTransformDirection(normal,viewMatrix);vec4 envMapColor=textureCubeUV(envMap,worldNormal,1.0);return PI*envMapColor.rgb*envMapIntensity;\n#else\nreturn vec3(0.0);\n#endif\n}vec3 getIBLRadiance(const in vec3 viewDir,const in vec3 normal,const in float roughness){\n#ifdef ENVMAP_TYPE_CUBE_UV\nvec3 reflectVec=reflect(-viewDir,normal);reflectVec=normalize(mix(reflectVec,normal,roughness*roughness));reflectVec=inverseTransformDirection(reflectVec,viewMatrix);vec4 envMapColor=textureCubeUV(envMap,reflectVec,roughness);return envMapColor.rgb*envMapIntensity;\n#else\nreturn vec3(0.0);\n#endif\n}\n#ifdef USE_ANISOTROPY\nvec3 getIBLAnisotropyRadiance(const in vec3 viewDir,const in vec3 normal,const in float roughness,const in vec3 bitangent,const in float anisotropy){\n#ifdef ENVMAP_TYPE_CUBE_UV\nvec3 bentNormal=cross(bitangent,viewDir);bentNormal=normalize(cross(bentNormal,bitangent));bentNormal=normalize(mix(bentNormal,normal,pow2(pow2(1.0-anisotropy*(1.0-roughness)))));return getIBLRadiance(viewDir,bentNormal,roughness);\n#else\nreturn vec3(0.0);\n#endif\n}\n#endif\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n#ifdef ENV_WORLDPOS\nvWorldPosition=worldPosition.xyz;\n#else\nvec3 cameraToVertex;if(isOrthographic){cameraToVertex=normalize(vec3(-viewMatrix[0][2],-viewMatrix[1][2],-viewMatrix[2][2]));}else{cameraToVertex=normalize(worldPosition.xyz-cameraPosition);}vec3 worldNormal=inverseTransformDirection(transformedNormal,viewMatrix);\n#ifdef ENVMAP_MODE_REFLECTION\nvReflect=reflect(cameraToVertex,worldNormal);\n#else\nvReflect=refract(cameraToVertex,worldNormal,refractionRatio);\n#endif\n#endif\n#endif",fog_vertex:"#ifdef USE_FOG\nvFogDepth=-mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\nvarying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n#ifdef FOG_EXP2\nfloat fogFactor=1.0-exp(-fogDensity*fogDensity*vFogDepth*vFogDepth);\n#else\nfloat fogFactor=smoothstep(fogNear,fogFar,vFogDepth);\n#endif\ngl_FragColor.rgb=mix(gl_FragColor.rgb,fogColor,fogFactor);\n#endif",fog_pars_fragment:"#ifdef USE_FOG\nuniform vec3 fogColor;varying float vFogDepth;\n#ifdef FOG_EXP2\nuniform float fogDensity;\n#else\nuniform float fogNear;uniform float fogFar;\n#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\nuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance(vec3 normal,vec3 lightDirection){float dotNL=dot(normal,lightDirection);vec2 coord=vec2(dotNL*0.5+0.5,0.0);\n#ifdef USE_GRADIENTMAP\nreturn vec3(texture2D(gradientMap,coord).r);\n#else\nvec2 fw=fwidth(coord)*0.5;return mix(vec3(0.7),vec3(1.0),smoothstep(0.7-fw.x,0.7+fw.x,coord.x));\n#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\nvec4 lightMapTexel=texture2D(lightMap,vLightMapUv);vec3 lightMapIrradiance=lightMapTexel.rgb*lightMapIntensity;reflectedLight.indirectDiffuse+=lightMapIrradiance;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\nuniform sampler2D lightMap;uniform float lightMapIntensity;\n#endif",lights_lambert_fragment:"LambertMaterial material;material.diffuseColor=diffuseColor.rgb;material.specularStrength=specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;struct LambertMaterial{vec3 diffuseColor;float specularStrength;};void 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){float dotNL=saturate(dot(geometryNormal,directLight.direction));vec3 irradiance=dotNL*directLight.color;reflectedLight.directDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor);}void 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){reflectedLight.indirectDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor);}\n#define RE_Direct RE_Direct_Lambert\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;uniform vec3 ambientLightColor;\n#if defined(USE_LIGHT_PROBES)\nuniform vec3 lightProbe[9];\n#endif\nvec3 shGetIrradianceAt(in vec3 normal,in vec3 shCoefficients[9]){float x=normal.x,y=normal.y,z=normal.z;vec3 result=shCoefficients[0]*0.886227;result+=shCoefficients[1]*2.0*0.511664*y;result+=shCoefficients[2]*2.0*0.511664*z;result+=shCoefficients[3]*2.0*0.511664*x;result+=shCoefficients[4]*2.0*0.429043*x*y;result+=shCoefficients[5]*2.0*0.429043*y*z;result+=shCoefficients[6]*(0.743125*z*z-0.247708);result+=shCoefficients[7]*2.0*0.429043*x*z;result+=shCoefficients[8]*0.429043*(x*x-y*y);return result;}vec3 getLightProbeIrradiance(const in vec3 lightProbe[9],const in vec3 normal){vec3 worldNormal=inverseTransformDirection(normal,viewMatrix);vec3 irradiance=shGetIrradianceAt(worldNormal,lightProbe);return irradiance;}vec3 getAmbientLightIrradiance(const in vec3 ambientLightColor){vec3 irradiance=ambientLightColor;return irradiance;}float getDistanceAttenuation(const in float lightDistance,const in float cutoffDistance,const in float decayExponent){\n#if defined(LEGACY_LIGHTS)\nif(cutoffDistance>0.0&&decayExponent>0.0){return pow(saturate(-lightDistance/cutoffDistance+1.0),decayExponent);}return 1.0;\n#else\nfloat distanceFalloff=1.0/max(pow(lightDistance,decayExponent),0.01);if(cutoffDistance>0.0){distanceFalloff*=pow2(saturate(1.0-pow4(lightDistance/cutoffDistance)));}return distanceFalloff;\n#endif\n}float getSpotAttenuation(const in float coneCosine,const in float penumbraCosine,const in float angleCosine){return smoothstep(coneCosine,penumbraCosine,angleCosine);}\n#if NUM_DIR_LIGHTS>0\nstruct DirectionalLight{vec3 direction;vec3 color;};uniform DirectionalLight directionalLights[NUM_DIR_LIGHTS];void getDirectionalLightInfo(const in DirectionalLight directionalLight,out IncidentLight light){light.color=directionalLight.color;light.direction=directionalLight.direction;light.visible=true;}\n#endif\n#if NUM_POINT_LIGHTS>0\nstruct PointLight{vec3 position;vec3 color;float distance;float decay;};uniform PointLight pointLights[NUM_POINT_LIGHTS];void getPointLightInfo(const in PointLight pointLight,const in vec3 geometryPosition,out IncidentLight light){vec3 lVector=pointLight.position-geometryPosition;light.direction=normalize(lVector);float lightDistance=length(lVector);light.color=pointLight.color;light.color*=getDistanceAttenuation(lightDistance,pointLight.distance,pointLight.decay);light.visible=(light.color!=vec3(0.0));}\n#endif\n#if NUM_SPOT_LIGHTS>0\nstruct SpotLight{vec3 position;vec3 direction;vec3 color;float distance;float decay;float coneCos;float penumbraCos;};uniform SpotLight spotLights[NUM_SPOT_LIGHTS];void getSpotLightInfo(const in SpotLight spotLight,const in vec3 geometryPosition,out IncidentLight light){vec3 lVector=spotLight.position-geometryPosition;light.direction=normalize(lVector);float angleCos=dot(light.direction,spotLight.direction);float spotAttenuation=getSpotAttenuation(spotLight.coneCos,spotLight.penumbraCos,angleCos);if(spotAttenuation>0.0){float lightDistance=length(lVector);light.color=spotLight.color*spotAttenuation;light.color*=getDistanceAttenuation(lightDistance,spotLight.distance,spotLight.decay);light.visible=(light.color!=vec3(0.0));}else{light.color=vec3(0.0);light.visible=false;}}\n#endif\n#if NUM_RECT_AREA_LIGHTS>0\nstruct RectAreaLight{vec3 color;vec3 position;vec3 halfWidth;vec3 halfHeight;};uniform sampler2D ltc_1;uniform sampler2D ltc_2;uniform RectAreaLight rectAreaLights[NUM_RECT_AREA_LIGHTS];\n#endif\n#if NUM_HEMI_LIGHTS>0\nstruct HemisphereLight{vec3 direction;vec3 skyColor;vec3 groundColor;};uniform HemisphereLight hemisphereLights[NUM_HEMI_LIGHTS];vec3 getHemisphereLightIrradiance(const in HemisphereLight hemiLight,const in vec3 normal){float dotNL=dot(normal,hemiLight.direction);float hemiDiffuseWeight=0.5*dotNL+0.5;vec3 irradiance=mix(hemiLight.groundColor,hemiLight.skyColor,hemiDiffuseWeight);return irradiance;}\n#endif",lights_toon_fragment:"ToonMaterial material;material.diffuseColor=diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;struct ToonMaterial{vec3 diffuseColor;};void 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){vec3 irradiance=getGradientIrradiance(geometryNormal,directLight.direction)*directLight.color;reflectedLight.directDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor);}void 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){reflectedLight.indirectDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor);}\n#define RE_Direct RE_Direct_Toon\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon",lights_phong_fragment:"BlinnPhongMaterial material;material.diffuseColor=diffuseColor.rgb;material.specularColor=specular;material.specularShininess=shininess;material.specularStrength=specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;struct BlinnPhongMaterial{vec3 diffuseColor;vec3 specularColor;float specularShininess;float specularStrength;};void 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){float dotNL=saturate(dot(geometryNormal,directLight.direction));vec3 irradiance=dotNL*directLight.color;reflectedLight.directDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor);reflectedLight.directSpecular+=irradiance*BRDF_BlinnPhong(directLight.direction,geometryViewDir,geometryNormal,material.specularColor,material.specularShininess)*material.specularStrength;}void 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){reflectedLight.indirectDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor);}\n#define RE_Direct RE_Direct_BlinnPhong\n#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong",lights_physical_fragment:"PhysicalMaterial material;material.diffuseColor=diffuseColor.rgb*(1.0-metalnessFactor);vec3 dxy=max(abs(dFdx(nonPerturbedNormal)),abs(dFdy(nonPerturbedNormal)));float geometryRoughness=max(max(dxy.x,dxy.y),dxy.z);material.roughness=max(roughnessFactor,0.0525);material.roughness+=geometryRoughness;material.roughness=min(material.roughness,1.0);\n#ifdef IOR\nmaterial.ior=ior;\n#ifdef USE_SPECULAR\nfloat specularIntensityFactor=specularIntensity;vec3 specularColorFactor=specularColor;\n#ifdef USE_SPECULAR_COLORMAP\nspecularColorFactor*=texture2D(specularColorMap,vSpecularColorMapUv).rgb;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\nspecularIntensityFactor*=texture2D(specularIntensityMap,vSpecularIntensityMapUv).a;\n#endif\nmaterial.specularF90=mix(specularIntensityFactor,1.0,metalnessFactor);\n#else\nfloat specularIntensityFactor=1.0;vec3 specularColorFactor=vec3(1.0);material.specularF90=1.0;\n#endif\nmaterial.specularColor=mix(min(pow2((material.ior-1.0)/(material.ior+1.0))*specularColorFactor,vec3(1.0))*specularIntensityFactor,diffuseColor.rgb,metalnessFactor);\n#else\nmaterial.specularColor=mix(vec3(0.04),diffuseColor.rgb,metalnessFactor);material.specularF90=1.0;\n#endif\n#ifdef USE_CLEARCOAT\nmaterial.clearcoat=clearcoat;material.clearcoatRoughness=clearcoatRoughness;material.clearcoatF0=vec3(0.04);material.clearcoatF90=1.0;\n#ifdef USE_CLEARCOATMAP\nmaterial.clearcoat*=texture2D(clearcoatMap,vClearcoatMapUv).x;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\nmaterial.clearcoatRoughness*=texture2D(clearcoatRoughnessMap,vClearcoatRoughnessMapUv).y;\n#endif\nmaterial.clearcoat=saturate(material.clearcoat);material.clearcoatRoughness=max(material.clearcoatRoughness,0.0525);material.clearcoatRoughness+=geometryRoughness;material.clearcoatRoughness=min(material.clearcoatRoughness,1.0);\n#endif\n#ifdef USE_IRIDESCENCE\nmaterial.iridescence=iridescence;material.iridescenceIOR=iridescenceIOR;\n#ifdef USE_IRIDESCENCEMAP\nmaterial.iridescence*=texture2D(iridescenceMap,vIridescenceMapUv).r;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\nmaterial.iridescenceThickness=(iridescenceThicknessMaximum-iridescenceThicknessMinimum)*texture2D(iridescenceThicknessMap,vIridescenceThicknessMapUv).g+iridescenceThicknessMinimum;\n#else\nmaterial.iridescenceThickness=iridescenceThicknessMaximum;\n#endif\n#endif\n#ifdef USE_SHEEN\nmaterial.sheenColor=sheenColor;\n#ifdef USE_SHEEN_COLORMAP\nmaterial.sheenColor*=texture2D(sheenColorMap,vSheenColorMapUv).rgb;\n#endif\nmaterial.sheenRoughness=clamp(sheenRoughness,0.07,1.0);\n#ifdef USE_SHEEN_ROUGHNESSMAP\nmaterial.sheenRoughness*=texture2D(sheenRoughnessMap,vSheenRoughnessMapUv).a;\n#endif\n#endif\n#ifdef USE_ANISOTROPY\n#ifdef USE_ANISOTROPYMAP\nmat2 anisotropyMat=mat2(anisotropyVector.x,anisotropyVector.y,-anisotropyVector.y,anisotropyVector.x);vec3 anisotropyPolar=texture2D(anisotropyMap,vAnisotropyMapUv).rgb;vec2 anisotropyV=anisotropyMat*normalize(2.0*anisotropyPolar.rg-vec2(1.0))*anisotropyPolar.b;\n#else\nvec2 anisotropyV=anisotropyVector;\n#endif\nmaterial.anisotropy=length(anisotropyV);anisotropyV/=material.anisotropy;material.anisotropy=saturate(material.anisotropy);material.alphaT=mix(pow2(material.roughness),1.0,pow2(material.anisotropy));material.anisotropyT=tbn[0]*anisotropyV.x-tbn[1]*anisotropyV.y;material.anisotropyB=tbn[1]*anisotropyV.x+tbn[0]*anisotropyV.y;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial{vec3 diffuseColor;float roughness;vec3 specularColor;float specularF90;\n#ifdef USE_CLEARCOAT\nfloat clearcoat;float clearcoatRoughness;vec3 clearcoatF0;float clearcoatF90;\n#endif\n#ifdef USE_IRIDESCENCE\nfloat iridescence;float iridescenceIOR;float iridescenceThickness;vec3 iridescenceFresnel;vec3 iridescenceF0;\n#endif\n#ifdef USE_SHEEN\nvec3 sheenColor;float sheenRoughness;\n#endif\n#ifdef IOR\nfloat ior;\n#endif\n#ifdef USE_TRANSMISSION\nfloat transmission;float transmissionAlpha;float thickness;float attenuationDistance;vec3 attenuationColor;\n#endif\n#ifdef USE_ANISOTROPY\nfloat anisotropy;float alphaT;vec3 anisotropyT;vec3 anisotropyB;\n#endif\n};vec3 clearcoatSpecularDirect=vec3(0.0);vec3 clearcoatSpecularIndirect=vec3(0.0);vec3 sheenSpecularDirect=vec3(0.0);vec3 sheenSpecularIndirect=vec3(0.0);vec3 Schlick_to_F0(const in vec3 f,const in float f90,const in float dotVH){float x=clamp(1.0-dotVH,0.0,1.0);float x2=x*x;float x5=clamp(x*x2*x2,0.0,0.9999);return(f-vec3(f90)*x5)/(1.0-x5);}float V_GGX_SmithCorrelated(const in float alpha,const in float dotNL,const in float dotNV){float a2=pow2(alpha);float gv=dotNL*sqrt(a2+(1.0-a2)*pow2(dotNV));float gl=dotNV*sqrt(a2+(1.0-a2)*pow2(dotNL));return 0.5/max(gv+gl,EPSILON);}float D_GGX(const in float alpha,const in float dotNH){float a2=pow2(alpha);float denom=pow2(dotNH)*(a2-1.0)+1.0;return RECIPROCAL_PI*a2/pow2(denom);}\n#ifdef USE_ANISOTROPY\nfloat 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){float gv=dotNL*length(vec3(alphaT*dotTV,alphaB*dotBV,dotNV));float gl=dotNV*length(vec3(alphaT*dotTL,alphaB*dotBL,dotNL));float v=0.5/(gv+gl);return saturate(v);}float D_GGX_Anisotropic(const in float alphaT,const in float alphaB,const in float dotNH,const in float dotTH,const in float dotBH){float a2=alphaT*alphaB;highp vec3 v=vec3(alphaB*dotTH,alphaT*dotBH,a2*dotNH);highp float v2=dot(v,v);float w2=a2/v2;return RECIPROCAL_PI*a2*pow2(w2);}\n#endif\n#ifdef USE_CLEARCOAT\nvec3 BRDF_GGX_Clearcoat(const in vec3 lightDir,const in vec3 viewDir,const in vec3 normal,const in PhysicalMaterial material){vec3 f0=material.clearcoatF0;float f90=material.clearcoatF90;float roughness=material.clearcoatRoughness;float alpha=pow2(roughness);vec3 halfDir=normalize(lightDir+viewDir);float dotNL=saturate(dot(normal,lightDir));float dotNV=saturate(dot(normal,viewDir));float dotNH=saturate(dot(normal,halfDir));float dotVH=saturate(dot(viewDir,halfDir));vec3 F=F_Schlick(f0,f90,dotVH);float V=V_GGX_SmithCorrelated(alpha,dotNL,dotNV);float D=D_GGX(alpha,dotNH);return F*(V*D);}\n#endif\nvec3 BRDF_GGX(const in vec3 lightDir,const in vec3 viewDir,const in vec3 normal,const in PhysicalMaterial material){vec3 f0=material.specularColor;float f90=material.specularF90;float roughness=material.roughness;float alpha=pow2(roughness);vec3 halfDir=normalize(lightDir+viewDir);float dotNL=saturate(dot(normal,lightDir));float dotNV=saturate(dot(normal,viewDir));float dotNH=saturate(dot(normal,halfDir));float dotVH=saturate(dot(viewDir,halfDir));vec3 F=F_Schlick(f0,f90,dotVH);\n#ifdef USE_IRIDESCENCE\nF=mix(F,material.iridescenceFresnel,material.iridescence);\n#endif\n#ifdef USE_ANISOTROPY\nfloat dotTL=dot(material.anisotropyT,lightDir);float dotTV=dot(material.anisotropyT,viewDir);float dotTH=dot(material.anisotropyT,halfDir);float dotBL=dot(material.anisotropyB,lightDir);float dotBV=dot(material.anisotropyB,viewDir);float dotBH=dot(material.anisotropyB,halfDir);float V=V_GGX_SmithCorrelated_Anisotropic(material.alphaT,alpha,dotTV,dotBV,dotTL,dotBL,dotNV,dotNL);float D=D_GGX_Anisotropic(material.alphaT,alpha,dotNH,dotTH,dotBH);\n#else\nfloat V=V_GGX_SmithCorrelated(alpha,dotNL,dotNV);float D=D_GGX(alpha,dotNH);\n#endif\nreturn F*(V*D);}vec2 LTC_Uv(const in vec3 N,const in vec3 V,const in float roughness){const float LUT_SIZE=64.0;const float LUT_SCALE=(LUT_SIZE-1.0)/LUT_SIZE;const float LUT_BIAS=0.5/LUT_SIZE;float dotNV=saturate(dot(N,V));vec2 uv=vec2(roughness,sqrt(1.0-dotNV));uv=uv*LUT_SCALE+LUT_BIAS;return uv;}float LTC_ClippedSphereFormFactor(const in vec3 f){float l=length(f);return max((l*l+f.z)/(l+1.0),0.0);}vec3 LTC_EdgeVectorFormFactor(const in vec3 v1,const in vec3 v2){float x=dot(v1,v2);float y=abs(x);float a=0.8543985+(0.4965155+0.0145206*y)*y;float b=3.4175940+(4.1616724+y)*y;float v=a/b;float theta_sintheta=(x>0.0)?v:0.5*inversesqrt(max(1.0-x*x,1e-7))-v;return cross(v1,v2)*theta_sintheta;}vec3 LTC_Evaluate(const in vec3 N,const in vec3 V,const in vec3 P,const in mat3 mInv,const in vec3 rectCoords[4]){vec3 v1=rectCoords[1]-rectCoords[0];vec3 v2=rectCoords[3]-rectCoords[0];vec3 lightNormal=cross(v1,v2);if(dot(lightNormal,P-rectCoords[0])<0.0)return vec3(0.0);vec3 T1,T2;T1=normalize(V-N*dot(V,N));T2=-cross(N,T1);mat3 mat=mInv*transposeMat3(mat3(T1,T2,N));vec3 coords[4];coords[0]=mat*(rectCoords[0]-P);coords[1]=mat*(rectCoords[1]-P);coords[2]=mat*(rectCoords[2]-P);coords[3]=mat*(rectCoords[3]-P);coords[0]=normalize(coords[0]);coords[1]=normalize(coords[1]);coords[2]=normalize(coords[2]);coords[3]=normalize(coords[3]);vec3 vectorFormFactor=vec3(0.0);vectorFormFactor+=LTC_EdgeVectorFormFactor(coords[0],coords[1]);vectorFormFactor+=LTC_EdgeVectorFormFactor(coords[1],coords[2]);vectorFormFactor+=LTC_EdgeVectorFormFactor(coords[2],coords[3]);vectorFormFactor+=LTC_EdgeVectorFormFactor(coords[3],coords[0]);float result=LTC_ClippedSphereFormFactor(vectorFormFactor);return vec3(result);}\n#if defined(USE_SHEEN)\nfloat D_Charlie(float roughness,float dotNH){float alpha=pow2(roughness);float invAlpha=1.0/alpha;float cos2h=dotNH*dotNH;float sin2h=max(1.0-cos2h,0.0078125);return(2.0+invAlpha)*pow(sin2h,invAlpha*0.5)/(2.0*PI);}float V_Neubelt(float dotNV,float dotNL){return saturate(1.0/(4.0*(dotNL+dotNV-dotNL*dotNV)));}vec3 BRDF_Sheen(const in vec3 lightDir,const in vec3 viewDir,const in vec3 normal,vec3 sheenColor,const in float sheenRoughness){vec3 halfDir=normalize(lightDir+viewDir);float dotNL=saturate(dot(normal,lightDir));float dotNV=saturate(dot(normal,viewDir));float dotNH=saturate(dot(normal,halfDir));float D=D_Charlie(sheenRoughness,dotNH);float V=V_Neubelt(dotNV,dotNL);return sheenColor*(D*V);}\n#endif\nfloat IBLSheenBRDF(const in vec3 normal,const in vec3 viewDir,const in float roughness){float dotNV=saturate(dot(normal,viewDir));float r2=roughness*roughness;float a=roughness<0.25?-339.2*r2+161.4*roughness-25.9:-8.48*r2+14.3*roughness-9.95;float b=roughness<0.25?44.0*r2-23.7*roughness+3.26:1.97*r2-3.27*roughness+0.72;float DG=exp(a*dotNV+b)+(roughness<0.25?0.0:0.1*(roughness-0.25));return saturate(DG*RECIPROCAL_PI);}vec2 DFGApprox(const in vec3 normal,const in vec3 viewDir,const in float roughness){float dotNV=saturate(dot(normal,viewDir));const vec4 c0=vec4(-1,-0.0275,-0.572,0.022);const vec4 c1=vec4(1,0.0425,1.04,-0.04);vec4 r=roughness*c0+c1;float a004=min(r.x*r.x,exp2(-9.28*dotNV))*r.x+r.y;vec2 fab=vec2(-1.04,1.04)*a004+r.zw;return fab;}vec3 EnvironmentBRDF(const in vec3 normal,const in vec3 viewDir,const in vec3 specularColor,const in float specularF90,const in float roughness){vec2 fab=DFGApprox(normal,viewDir,roughness);return specularColor*fab.x+specularF90*fab.y;}\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\nvec2 fab=DFGApprox(normal,viewDir,roughness);\n#ifdef USE_IRIDESCENCE\nvec3 Fr=mix(specularColor,iridescenceF0,iridescence);\n#else\nvec3 Fr=specularColor;\n#endif\nvec3 FssEss=Fr*fab.x+specularF90*fab.y;float Ess=fab.x+fab.y;float Ems=1.0-Ess;vec3 Favg=Fr+(1.0-Fr)*0.047619;vec3 Fms=FssEss*Favg/(1.0-Ems*Favg);singleScatter+=FssEss;multiScatter+=Fms*Ems;}\n#if NUM_RECT_AREA_LIGHTS>0\nvoid 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){vec3 normal=geometryNormal;vec3 viewDir=geometryViewDir;vec3 position=geometryPosition;vec3 lightPos=rectAreaLight.position;vec3 halfWidth=rectAreaLight.halfWidth;vec3 halfHeight=rectAreaLight.halfHeight;vec3 lightColor=rectAreaLight.color;float roughness=material.roughness;vec3 rectCoords[4];rectCoords[0]=lightPos+halfWidth-halfHeight;rectCoords[1]=lightPos-halfWidth-halfHeight;rectCoords[2]=lightPos-halfWidth+halfHeight;rectCoords[3]=lightPos+halfWidth+halfHeight;vec2 uv=LTC_Uv(normal,viewDir,roughness);vec4 t1=texture2D(ltc_1,uv);vec4 t2=texture2D(ltc_2,uv);mat3 mInv=mat3(vec3(t1.x,0,t1.y),vec3(0,1,0),vec3(t1.z,0,t1.w));vec3 fresnel=(material.specularColor*t2.x+(vec3(1.0)-material.specularColor)*t2.y);reflectedLight.directSpecular+=lightColor*fresnel*LTC_Evaluate(normal,viewDir,position,mInv,rectCoords);reflectedLight.directDiffuse+=lightColor*material.diffuseColor*LTC_Evaluate(normal,viewDir,position,mat3(1.0),rectCoords);}\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){float dotNL=saturate(dot(geometryNormal,directLight.direction));vec3 irradiance=dotNL*directLight.color;\n#ifdef USE_CLEARCOAT\nfloat dotNLcc=saturate(dot(geometryClearcoatNormal,directLight.direction));vec3 ccIrradiance=dotNLcc*directLight.color;clearcoatSpecularDirect+=ccIrradiance*BRDF_GGX_Clearcoat(directLight.direction,geometryViewDir,geometryClearcoatNormal,material);\n#endif\n#ifdef USE_SHEEN\nsheenSpecularDirect+=irradiance*BRDF_Sheen(directLight.direction,geometryViewDir,geometryNormal,material.sheenColor,material.sheenRoughness);\n#endif\nreflectedLight.directSpecular+=irradiance*BRDF_GGX(directLight.direction,geometryViewDir,geometryNormal,material);reflectedLight.directDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor);}void 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){reflectedLight.indirectDiffuse+=irradiance*BRDF_Lambert(material.diffuseColor);}void 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#ifdef USE_CLEARCOAT\nclearcoatSpecularIndirect+=clearcoatRadiance*EnvironmentBRDF(geometryClearcoatNormal,geometryViewDir,material.clearcoatF0,material.clearcoatF90,material.clearcoatRoughness);\n#endif\n#ifdef USE_SHEEN\nsheenSpecularIndirect+=irradiance*material.sheenColor*IBLSheenBRDF(geometryNormal,geometryViewDir,material.sheenRoughness);\n#endif\nvec3 singleScattering=vec3(0.0);vec3 multiScattering=vec3(0.0);vec3 cosineWeightedIrradiance=irradiance*RECIPROCAL_PI;\n#ifdef USE_IRIDESCENCE\ncomputeMultiscatteringIridescence(geometryNormal,geometryViewDir,material.specularColor,material.specularF90,material.iridescence,material.iridescenceFresnel,material.roughness,singleScattering,multiScattering);\n#else\ncomputeMultiscattering(geometryNormal,geometryViewDir,material.specularColor,material.specularF90,material.roughness,singleScattering,multiScattering);\n#endif\nvec3 totalScattering=singleScattering+multiScattering;vec3 diffuse=material.diffuseColor*(1.0-max(max(totalScattering.r,totalScattering.g),totalScattering.b));reflectedLight.indirectSpecular+=radiance*singleScattering;reflectedLight.indirectSpecular+=multiScattering*cosineWeightedIrradiance;reflectedLight.indirectDiffuse+=diffuse*cosineWeightedIrradiance;}\n#define RE_Direct RE_Direct_Physical\n#define RE_Direct_RectArea RE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular RE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion(const in float dotNV,const in float ambientOcclusion,const in float roughness){return saturate(pow(dotNV+ambientOcclusion,exp2(-16.0*roughness-1.0))-1.0+ambientOcclusion);}",lights_fragment_begin:"vec3 geometryPosition=-vViewPosition;vec3 geometryNormal=normal;vec3 geometryViewDir=(isOrthographic)?vec3(0,0,1):normalize(vViewPosition);vec3 geometryClearcoatNormal=vec3(0.0);\n#ifdef USE_CLEARCOAT\ngeometryClearcoatNormal=clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\nfloat dotNVi=saturate(dot(normal,geometryViewDir));if(material.iridescenceThickness==0.0){material.iridescence=0.0;}else{material.iridescence=saturate(material.iridescence);}if(material.iridescence>0.0){material.iridescenceFresnel=evalIridescence(1.0,material.iridescenceIOR,dotNVi,material.iridescenceThickness,material.specularColor);material.iridescenceF0=Schlick_to_F0(material.iridescenceFresnel,1.0,dotNVi);}\n#endif\nIncidentLight directLight;\n#if (NUM_POINT_LIGHTS>0)&&defined(RE_Direct)\nPointLight pointLight;\n#if defined(USE_SHADOWMAP)&&NUM_POINT_LIGHT_SHADOWS>0\nPointLightShadow pointLightShadow;\n#endif\n#pragma unroll_loop_start\nfor(int i=0;i0)&&defined(RE_Direct)\nSpotLight spotLight;vec4 spotColor;vec3 spotLightCoord;bool inSpotLightMap;\n#if defined(USE_SHADOWMAP)&&NUM_SPOT_LIGHT_SHADOWS>0\nSpotLightShadow spotLightShadow;\n#endif\n#pragma unroll_loop_start\nfor(int i=0;i0)&&defined(RE_Direct)\nDirectionalLight directionalLight;\n#if defined(USE_SHADOWMAP)&&NUM_DIR_LIGHT_SHADOWS>0\nDirectionalLightShadow directionalLightShadow;\n#endif\n#pragma unroll_loop_start\nfor(int i=0;i0)&&defined(RE_Direct_RectArea)\nRectAreaLight rectAreaLight;\n#pragma unroll_loop_start\nfor(int i=0;i0)\n#pragma unroll_loop_start\nfor(int i=0;i0\nvarying vec4 vSpotLightCoord[NUM_SPOT_LIGHT_COORDS];\n#endif\n#if NUM_SPOT_LIGHT_MAPS>0\nuniform sampler2D spotLightMap[NUM_SPOT_LIGHT_MAPS];\n#endif\n#ifdef USE_SHADOWMAP\n#if NUM_DIR_LIGHT_SHADOWS>0\nuniform sampler2D directionalShadowMap[NUM_DIR_LIGHT_SHADOWS];varying vec4 vDirectionalShadowCoord[NUM_DIR_LIGHT_SHADOWS];struct DirectionalLightShadow{float shadowBias;float shadowNormalBias;float shadowRadius;vec2 shadowMapSize;};uniform DirectionalLightShadow directionalLightShadows[NUM_DIR_LIGHT_SHADOWS];\n#endif\n#if NUM_SPOT_LIGHT_SHADOWS>0\nuniform sampler2D spotShadowMap[NUM_SPOT_LIGHT_SHADOWS];struct SpotLightShadow{float shadowBias;float shadowNormalBias;float shadowRadius;vec2 shadowMapSize;};uniform SpotLightShadow spotLightShadows[NUM_SPOT_LIGHT_SHADOWS];\n#endif\n#if NUM_POINT_LIGHT_SHADOWS>0\nuniform sampler2D pointShadowMap[NUM_POINT_LIGHT_SHADOWS];varying vec4 vPointShadowCoord[NUM_POINT_LIGHT_SHADOWS];struct PointLightShadow{float shadowBias;float shadowNormalBias;float shadowRadius;vec2 shadowMapSize;float shadowCameraNear;float shadowCameraFar;};uniform PointLightShadow pointLightShadows[NUM_POINT_LIGHT_SHADOWS];\n#endif\nfloat texture2DCompare(sampler2D depths,vec2 uv,float compare){return step(compare,unpackRGBAToDepth(texture2D(depths,uv)));}vec2 texture2DDistribution(sampler2D shadow,vec2 uv){return unpackRGBATo2Half(texture2D(shadow,uv));}float VSMShadow(sampler2D shadow,vec2 uv,float compare){float occlusion=1.0;vec2 distribution=texture2DDistribution(shadow,uv);float hard_shadow=step(compare,distribution.x);if(hard_shadow!=1.0){float distance=compare-distribution.x;float variance=max(0.00000,distribution.y*distribution.y);float softness_probability=variance/(variance+distance*distance);softness_probability=clamp((softness_probability-0.3)/(0.95-0.3),0.0,1.0);occlusion=clamp(max(hard_shadow,softness_probability),0.0,1.0);}return occlusion;}float getShadow(sampler2D shadowMap,vec2 shadowMapSize,float shadowBias,float shadowRadius,vec4 shadowCoord){float shadow=1.0;shadowCoord.xyz/=shadowCoord.w;shadowCoord.z+=shadowBias;bool inFrustum=shadowCoord.x>=0.0&&shadowCoord.x<=1.0&&shadowCoord.y>=0.0&&shadowCoord.y<=1.0;bool frustumTest=inFrustum&&shadowCoord.z<=1.0;if(frustumTest){\n#if defined(SHADOWMAP_TYPE_PCF)\nvec2 texelSize=vec2(1.0)/shadowMapSize;float dx0=-texelSize.x*shadowRadius;float dy0=-texelSize.y*shadowRadius;float dx1=+texelSize.x*shadowRadius;float dy1=+texelSize.y*shadowRadius;float dx2=dx0/2.0;float dy2=dy0/2.0;float dx3=dx1/2.0;float dy3=dy1/2.0;shadow=(texture2DCompare(shadowMap,shadowCoord.xy+vec2(dx0,dy0),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(0.0,dy0),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(dx1,dy0),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(dx2,dy2),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(0.0,dy2),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(dx3,dy2),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(dx0,0.0),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(dx2,0.0),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy,shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(dx3,0.0),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(dx1,0.0),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(dx2,dy3),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(0.0,dy3),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(dx3,dy3),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(dx0,dy1),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(0.0,dy1),shadowCoord.z)+texture2DCompare(shadowMap,shadowCoord.xy+vec2(dx1,dy1),shadowCoord.z))*(1.0/17.0);\n#elif defined(SHADOWMAP_TYPE_PCF_SOFT)\nvec2 texelSize=vec2(1.0)/shadowMapSize;float dx=texelSize.x;float dy=texelSize.y;vec2 uv=shadowCoord.xy;vec2 f=fract(uv*shadowMapSize+0.5);uv-=f*texelSize;shadow=(texture2DCompare(shadowMap,uv,shadowCoord.z)+texture2DCompare(shadowMap,uv+vec2(dx,0.0),shadowCoord.z)+texture2DCompare(shadowMap,uv+vec2(0.0,dy),shadowCoord.z)+texture2DCompare(shadowMap,uv+texelSize,shadowCoord.z)+mix(texture2DCompare(shadowMap,uv+vec2(-dx,0.0),shadowCoord.z),texture2DCompare(shadowMap,uv+vec2(2.0*dx,0.0),shadowCoord.z),f.x)+mix(texture2DCompare(shadowMap,uv+vec2(-dx,dy),shadowCoord.z),texture2DCompare(shadowMap,uv+vec2(2.0*dx,dy),shadowCoord.z),f.x)+mix(texture2DCompare(shadowMap,uv+vec2(0.0,-dy),shadowCoord.z),texture2DCompare(shadowMap,uv+vec2(0.0,2.0*dy),shadowCoord.z),f.y)+mix(texture2DCompare(shadowMap,uv+vec2(dx,-dy),shadowCoord.z),texture2DCompare(shadowMap,uv+vec2(dx,2.0*dy),shadowCoord.z),f.y)+mix(mix(texture2DCompare(shadowMap,uv+vec2(-dx,-dy),shadowCoord.z),texture2DCompare(shadowMap,uv+vec2(2.0*dx,-dy),shadowCoord.z),f.x),mix(texture2DCompare(shadowMap,uv+vec2(-dx,2.0*dy),shadowCoord.z),texture2DCompare(shadowMap,uv+vec2(2.0*dx,2.0*dy),shadowCoord.z),f.x),f.y))*(1.0/9.0);\n#elif defined(SHADOWMAP_TYPE_VSM)\nshadow=VSMShadow(shadowMap,shadowCoord.xy,shadowCoord.z);\n#else\nshadow=texture2DCompare(shadowMap,shadowCoord.xy,shadowCoord.z);\n#endif\n}return shadow;}vec2 cubeToUV(vec3 v,float texelSizeY){vec3 absV=abs(v);float scaleToCube=1.0/max(absV.x,max(absV.y,absV.z));absV*=scaleToCube;v*=scaleToCube*(1.0-2.0*texelSizeY);vec2 planar=v.xy;float almostATexel=1.5*texelSizeY;float almostOne=1.0-almostATexel;if(absV.z>=almostOne){if(v.z>0.0)planar.x=4.0-v.x;}else if(absV.x>=almostOne){float signX=sign(v.x);planar.x=v.z*signX+2.0*signX;}else if(absV.y>=almostOne){float signY=sign(v.y);planar.x=v.x+2.0*signY+2.0;planar.y=v.z*signY-2.0;}return vec2(0.125,0.25)*planar+vec2(0.375,0.75);}float getPointShadow(sampler2D shadowMap,vec2 shadowMapSize,float shadowBias,float shadowRadius,vec4 shadowCoord,float shadowCameraNear,float shadowCameraFar){vec2 texelSize=vec2(1.0)/(shadowMapSize*vec2(4.0,2.0));vec3 lightToPosition=shadowCoord.xyz;float dp=(length(lightToPosition)-shadowCameraNear)/(shadowCameraFar-shadowCameraNear);dp+=shadowBias;vec3 bd3D=normalize(lightToPosition);\n#if defined(SHADOWMAP_TYPE_PCF)||defined(SHADOWMAP_TYPE_PCF_SOFT)||defined(SHADOWMAP_TYPE_VSM)\nvec2 offset=vec2(-1,1)*shadowRadius*texelSize.y;return(texture2DCompare(shadowMap,cubeToUV(bd3D+offset.xyy,texelSize.y),dp)+texture2DCompare(shadowMap,cubeToUV(bd3D+offset.yyy,texelSize.y),dp)+texture2DCompare(shadowMap,cubeToUV(bd3D+offset.xyx,texelSize.y),dp)+texture2DCompare(shadowMap,cubeToUV(bd3D+offset.yyx,texelSize.y),dp)+texture2DCompare(shadowMap,cubeToUV(bd3D,texelSize.y),dp)+texture2DCompare(shadowMap,cubeToUV(bd3D+offset.xxy,texelSize.y),dp)+texture2DCompare(shadowMap,cubeToUV(bd3D+offset.yxy,texelSize.y),dp)+texture2DCompare(shadowMap,cubeToUV(bd3D+offset.xxx,texelSize.y),dp)+texture2DCompare(shadowMap,cubeToUV(bd3D+offset.yxx,texelSize.y),dp))*(1.0/9.0);\n#else\nreturn texture2DCompare(shadowMap,cubeToUV(bd3D,texelSize.y),dp);\n#endif\n}\n#endif",shadowmap_pars_vertex:"#if NUM_SPOT_LIGHT_COORDS>0\nuniform mat4 spotLightMatrix[NUM_SPOT_LIGHT_COORDS];varying vec4 vSpotLightCoord[NUM_SPOT_LIGHT_COORDS];\n#endif\n#ifdef USE_SHADOWMAP\n#if NUM_DIR_LIGHT_SHADOWS>0\nuniform mat4 directionalShadowMatrix[NUM_DIR_LIGHT_SHADOWS];varying vec4 vDirectionalShadowCoord[NUM_DIR_LIGHT_SHADOWS];struct DirectionalLightShadow{float shadowBias;float shadowNormalBias;float shadowRadius;vec2 shadowMapSize;};uniform DirectionalLightShadow directionalLightShadows[NUM_DIR_LIGHT_SHADOWS];\n#endif\n#if NUM_SPOT_LIGHT_SHADOWS>0\nstruct SpotLightShadow{float shadowBias;float shadowNormalBias;float shadowRadius;vec2 shadowMapSize;};uniform SpotLightShadow spotLightShadows[NUM_SPOT_LIGHT_SHADOWS];\n#endif\n#if NUM_POINT_LIGHT_SHADOWS>0\nuniform mat4 pointShadowMatrix[NUM_POINT_LIGHT_SHADOWS];varying vec4 vPointShadowCoord[NUM_POINT_LIGHT_SHADOWS];struct PointLightShadow{float shadowBias;float shadowNormalBias;float shadowRadius;vec2 shadowMapSize;float shadowCameraNear;float shadowCameraFar;};uniform PointLightShadow pointLightShadows[NUM_POINT_LIGHT_SHADOWS];\n#endif\n#endif",shadowmap_vertex:"#if (defined(USE_SHADOWMAP)&&(NUM_DIR_LIGHT_SHADOWS>0||NUM_POINT_LIGHT_SHADOWS>0))||(NUM_SPOT_LIGHT_COORDS>0)\nvec3 shadowWorldNormal=inverseTransformDirection(transformedNormal,viewMatrix);vec4 shadowWorldPosition;\n#endif\n#if defined(USE_SHADOWMAP)\n#if NUM_DIR_LIGHT_SHADOWS>0\n#pragma unroll_loop_start\nfor(int i=0;i0\n#pragma unroll_loop_start\nfor(int i=0;i0\n#pragma unroll_loop_start\nfor(int i=0;i0\nDirectionalLightShadow directionalLight;\n#pragma unroll_loop_start\nfor(int i=0;i0\nSpotLightShadow spotLight;\n#pragma unroll_loop_start\nfor(int i=0;i0\nPointLightShadow pointLight;\n#pragma unroll_loop_start\nfor(int i=0;i0\nvec4 worldPosition=vec4(transformed,1.0);\n#ifdef USE_INSTANCING\nworldPosition=instanceMatrix*worldPosition;\n#endif\nworldPosition=modelMatrix*worldPosition;\n#endif",background_vert:"varying vec2 vUv;uniform mat3 uvTransform;void main(){vUv=(uvTransform*vec3(uv,1)).xy;gl_Position=vec4(position.xy,1.0,1.0);}",background_frag:"uniform sampler2D t2D;uniform float backgroundIntensity;varying vec2 vUv;void main(){vec4 texColor=texture2D(t2D,vUv);\n#ifdef DECODE_VIDEO_TEXTURE\ntexColor=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#endif\ntexColor.rgb*=backgroundIntensity;gl_FragColor=texColor;\n#include \n#include \n}",backgroundCube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main(){vWorldDirection=transformDirection(position,modelMatrix);\n#include \n#include \ngl_Position.z=gl_Position.w;}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\nuniform samplerCube envMap;\n#elif defined(ENVMAP_TYPE_CUBE_UV)\nuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;uniform float backgroundBlurriness;uniform float backgroundIntensity;varying vec3 vWorldDirection;\n#include \nvoid main(){\n#ifdef ENVMAP_TYPE_CUBE\nvec4 texColor=textureCube(envMap,vec3(flipEnvMap*vWorldDirection.x,vWorldDirection.yz));\n#elif defined(ENVMAP_TYPE_CUBE_UV)\nvec4 texColor=textureCubeUV(envMap,vWorldDirection,backgroundBlurriness);\n#else\nvec4 texColor=vec4(0.0,0.0,0.0,1.0);\n#endif\ntexColor.rgb*=backgroundIntensity;gl_FragColor=texColor;\n#include \n#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main(){vWorldDirection=transformDirection(position,modelMatrix);\n#include \n#include \ngl_Position.z=gl_Position.w;}",cube_frag:"uniform samplerCube tCube;uniform float tFlip;uniform float opacity;varying vec3 vWorldDirection;void main(){vec4 texColor=textureCube(tCube,vec3(tFlip*vWorldDirection.x,vWorldDirection.yz));gl_FragColor=texColor;gl_FragColor.a*=opacity;\n#include \n#include \n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;void main(){\n#include \n#include \n#ifdef USE_DISPLACEMENTMAP\n#include \n#include \n#include \n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvHighPrecisionZW=gl_Position.zw;}",depth_frag:"#if DEPTH_PACKING==3200\nuniform 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;void main(){\n#include \nvec4 diffuseColor=vec4(1.0);\n#if DEPTH_PACKING==3200\ndiffuseColor.a=opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \nfloat fragCoordZ=0.5*vHighPrecisionZW[0]/vHighPrecisionZW[1]+0.5;\n#if DEPTH_PACKING==3200\ngl_FragColor=vec4(vec3(1.0-fragCoordZ),opacity);\n#elif DEPTH_PACKING==3201\ngl_FragColor=packDepthToRGBA(fragCoordZ);\n#endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main(){\n#include \n#include \n#ifdef USE_DISPLACEMENTMAP\n#include \n#include \n#include \n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvWorldPosition=worldPosition.xyz;}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;uniform float nearDistance;uniform float farDistance;varying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main(){\n#include \nvec4 diffuseColor=vec4(1.0);\n#include \n#include \n#include \n#include \nfloat dist=length(vWorldPosition-referencePosition);dist=(dist-nearDistance)/(farDistance-nearDistance);dist=saturate(dist);gl_FragColor=packDepthToRGBA(dist);}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main(){vWorldDirection=transformDirection(position,modelMatrix);\n#include \n#include \n}",equirect_frag:"uniform sampler2D tEquirect;varying vec3 vWorldDirection;\n#include \nvoid main(){vec3 direction=normalize(vWorldDirection);vec2 sampleUV=equirectUv(direction);gl_FragColor=texture2D(tEquirect,sampleUV);\n#include \n#include \n}",linedashed_vert:"uniform float scale;attribute float lineDistance;varying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main(){vLineDistance=scale*lineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n}",linedashed_frag:"uniform vec3 diffuse;uniform float opacity;uniform float dashSize;uniform float totalSize;varying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main(){\n#include \nif(mod(vLineDistance,totalSize)>dashSize){discard;}vec3 outgoingLight=vec3(0.0);vec4 diffuseColor=vec4(diffuse,opacity);\n#include \n#include \n#include \noutgoingLight=diffuseColor.rgb;\n#include \n#include \n#include \n#include \n#include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main(){\n#include \n#include \n#include \n#if defined(USE_ENVMAP)||defined(USE_SKINNING)\n#include \n#include \n#include \n#include \n#include \n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n}",meshbasic_frag:"uniform vec3 diffuse;uniform float opacity;\n#ifndef FLAT_SHADED\nvarying 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#include \nvec4 diffuseColor=vec4(diffuse,opacity);\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0));\n#ifdef USE_LIGHTMAP\nvec4 lightMapTexel=texture2D(lightMap,vLightMapUv);reflectedLight.indirectDiffuse+=lightMapTexel.rgb*lightMapIntensity*RECIPROCAL_PI;\n#else\nreflectedLight.indirectDiffuse+=vec3(1.0);\n#endif\n#include \nreflectedLight.indirectDiffuse*=diffuseColor.rgb;vec3 outgoingLight=reflectedLight.indirectDiffuse;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n}",meshlambert_vert:"#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 \nvoid main(){\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 \nvViewPosition=-mvPosition.xyz;\n#include \n#include \n#include \n#include \n}",meshlambert_frag:"#define LAMBERT\nuniform vec3 diffuse;uniform vec3 emissive;uniform 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#include \nvec4 diffuseColor=vec4(diffuse,opacity);ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0));vec3 totalEmissiveRadiance=emissive;\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 \nvec3 outgoingLight=reflectedLight.directDiffuse+reflectedLight.indirectDiffuse+totalEmissiveRadiance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n}",meshmatcap_vert:"#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 \nvoid main(){\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 \nvViewPosition=-mvPosition.xyz;}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;uniform float opacity;uniform sampler2D matcap;varying 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#include \nvec4 diffuseColor=vec4(diffuse,opacity);\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvec3 viewDir=normalize(vViewPosition);vec3 x=normalize(vec3(viewDir.z,0.0,-viewDir.x));vec3 y=cross(viewDir,x);vec2 uv=vec2(dot(x,normal),dot(y,normal))*0.495+0.5;\n#ifdef USE_MATCAP\nvec4 matcapColor=texture2D(matcap,uv);\n#else\nvec4 matcapColor=vec4(vec3(mix(0.2,0.8,uv.y)),1.0);\n#endif\nvec3 outgoingLight=diffuseColor.rgb*matcapColor.rgb;\n#include \n#include \n#include \n#include \n#include \n#include \n}",meshnormal_vert:"#define NORMAL\n#if defined(FLAT_SHADED)||defined(USE_BUMPMAP)||defined(USE_NORMALMAP_TANGENTSPACE)\nvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main(){\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#if defined(FLAT_SHADED)||defined(USE_BUMPMAP)||defined(USE_NORMALMAP_TANGENTSPACE)\nvViewPosition=-mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined(FLAT_SHADED)||defined(USE_BUMPMAP)||defined(USE_NORMALMAP_TANGENTSPACE)\nvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main(){\n#include \n#include \n#include \n#include \ngl_FragColor=vec4(packNormalToRGB(normal),opacity);\n#ifdef OPAQUE\ngl_FragColor.a=1.0;\n#endif\n}",meshphong_vert:"#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 \nvoid main(){\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 \nvViewPosition=-mvPosition.xyz;\n#include \n#include \n#include \n#include \n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;uniform vec3 emissive;uniform vec3 specular;uniform float shininess;uniform 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#include \nvec4 diffuseColor=vec4(diffuse,opacity);ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0));vec3 totalEmissiveRadiance=emissive;\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 \nvec3 outgoingLight=reflectedLight.directDiffuse+reflectedLight.indirectDiffuse+reflectedLight.directSpecular+reflectedLight.indirectSpecular+totalEmissiveRadiance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\nvarying 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 \nvoid main(){\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 \nvViewPosition=-mvPosition.xyz;\n#include \n#include \n#include \n#ifdef USE_TRANSMISSION\nvWorldPosition=worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n#define IOR\n#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;uniform vec3 emissive;uniform float roughness;uniform float metalness;uniform float opacity;\n#ifdef IOR\nuniform float ior;\n#endif\n#ifdef USE_SPECULAR\nuniform float specularIntensity;uniform vec3 specularColor;\n#ifdef USE_SPECULAR_COLORMAP\nuniform sampler2D specularColorMap;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\nuniform sampler2D specularIntensityMap;\n#endif\n#endif\n#ifdef USE_CLEARCOAT\nuniform float clearcoat;uniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\nuniform float iridescence;uniform float iridescenceIOR;uniform float iridescenceThicknessMinimum;uniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\nuniform vec3 sheenColor;uniform float sheenRoughness;\n#ifdef USE_SHEEN_COLORMAP\nuniform sampler2D sheenColorMap;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\nuniform sampler2D sheenRoughnessMap;\n#endif\n#endif\n#ifdef USE_ANISOTROPY\nuniform vec2 anisotropyVector;\n#ifdef USE_ANISOTROPYMAP\nuniform sampler2D anisotropyMap;\n#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#include \nvec4 diffuseColor=vec4(diffuse,opacity);ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0));vec3 totalEmissiveRadiance=emissive;\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 \nvec3 totalDiffuse=reflectedLight.directDiffuse+reflectedLight.indirectDiffuse;vec3 totalSpecular=reflectedLight.directSpecular+reflectedLight.indirectSpecular;\n#include \nvec3 outgoingLight=totalDiffuse+totalSpecular+totalEmissiveRadiance;\n#ifdef USE_SHEEN\nfloat sheenEnergyComp=1.0-0.157*max3(material.sheenColor);outgoingLight=outgoingLight*sheenEnergyComp+sheenSpecularDirect+sheenSpecularIndirect;\n#endif\n#ifdef USE_CLEARCOAT\nfloat dotNVcc=saturate(dot(geometryClearcoatNormal,geometryViewDir));vec3 Fcc=F_Schlick(material.clearcoatF0,material.clearcoatF90,dotNVcc);outgoingLight=outgoingLight*(1.0-material.clearcoat*Fcc)+(clearcoatSpecularDirect+clearcoatSpecularIndirect)*material.clearcoat;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n}",meshtoon_vert:"#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 \nvoid main(){\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 \nvViewPosition=-mvPosition.xyz;\n#include \n#include \n#include \n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;uniform vec3 emissive;uniform 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#include \nvec4 diffuseColor=vec4(diffuse,opacity);ReflectedLight reflectedLight=ReflectedLight(vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0));vec3 totalEmissiveRadiance=emissive;\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 \nvec3 outgoingLight=reflectedLight.directDiffuse+reflectedLight.indirectDiffuse+totalEmissiveRadiance;\n#include \n#include \n#include \n#include \n#include \n#include \n}",points_vert:"uniform float size;uniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \n#ifdef USE_POINTS_UV\nvarying vec2 vUv;uniform mat3 uvTransform;\n#endif\nvoid main(){\n#ifdef USE_POINTS_UV\nvUv=(uvTransform*vec3(uv,1)).xy;\n#endif\n#include \n#include \n#include \n#include \n#include \ngl_PointSize=size;\n#ifdef USE_SIZEATTENUATION\nbool isPerspective=isPerspectiveMatrix(projectionMatrix);if(isPerspective)gl_PointSize*=(scale/-mvPosition.z);\n#endif\n#include \n#include \n#include \n#include \n}",points_frag:"uniform vec3 diffuse;uniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main(){\n#include \nvec3 outgoingLight=vec3(0.0);vec4 diffuseColor=vec4(diffuse,opacity);\n#include \n#include \n#include \n#include \n#include \noutgoingLight=diffuseColor.rgb;\n#include \n#include \n#include \n#include \n#include \n}",shadow_vert:"#include \n#include \n#include \n#include \n#include \n#include \nvoid main(){\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}",shadow_frag:"uniform vec3 color;uniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main(){\n#include \ngl_FragColor=vec4(color,opacity*(1.0-getShadowMask()));\n#include \n#include \n#include \n}",sprite_vert:"uniform float rotation;uniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main(){\n#include \nvec4 mvPosition=modelViewMatrix*vec4(0.0,0.0,0.0,1.0);vec2 scale;scale.x=length(vec3(modelMatrix[0].x,modelMatrix[0].y,modelMatrix[0].z));scale.y=length(vec3(modelMatrix[1].x,modelMatrix[1].y,modelMatrix[1].z));\n#ifndef USE_SIZEATTENUATION\nbool isPerspective=isPerspectiveMatrix(projectionMatrix);if(isPerspective)scale*=-mvPosition.z;\n#endif\nvec2 alignedPosition=(position.xy-(center-vec2(0.5)))*scale;vec2 rotatedPosition;rotatedPosition.x=cos(rotation)*alignedPosition.x-sin(rotation)*alignedPosition.y;rotatedPosition.y=sin(rotation)*alignedPosition.x+cos(rotation)*alignedPosition.y;mvPosition.xy+=rotatedPosition;gl_Position=projectionMatrix*mvPosition;\n#include \n#include \n#include \n}",sprite_frag:"uniform vec3 diffuse;uniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main(){\n#include \nvec3 outgoingLight=vec3(0.0);vec4 diffuseColor=vec4(diffuse,opacity);\n#include \n#include \n#include \n#include \n#include \noutgoingLight=diffuseColor.rgb;\n#include \n#include \n#include \n#include \n}"},Gn={common:{diffuse:{value:new Oi(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new He},alphaMap:{value:null},alphaMapTransform:{value:new He},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new He}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new He}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new He}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new He},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new He},normalScale:{value:new Ge(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new He},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new He}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new He}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new He}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Oi(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Oi(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new He},alphaTest:{value:0},uvTransform:{value:new He}},sprite:{diffuse:{value:new Oi(16777215)},opacity:{value:1},center:{value:new Ge(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new He},alphaMap:{value:null},alphaMapTransform:{value:new He},alphaTest:{value:0}}},Hn={basic:{uniforms:wn([Gn.common,Gn.specularmap,Gn.envmap,Gn.aomap,Gn.lightmap,Gn.fog]),vertexShader:$n.meshbasic_vert,fragmentShader:$n.meshbasic_frag},lambert:{uniforms:wn([Gn.common,Gn.specularmap,Gn.envmap,Gn.aomap,Gn.lightmap,Gn.emissivemap,Gn.bumpmap,Gn.normalmap,Gn.displacementmap,Gn.fog,Gn.lights,{emissive:{value:new Oi(0)}}]),vertexShader:$n.meshlambert_vert,fragmentShader:$n.meshlambert_frag},phong:{uniforms:wn([Gn.common,Gn.specularmap,Gn.envmap,Gn.aomap,Gn.lightmap,Gn.emissivemap,Gn.bumpmap,Gn.normalmap,Gn.displacementmap,Gn.fog,Gn.lights,{emissive:{value:new Oi(0)},specular:{value:new Oi(1118481)},shininess:{value:30}}]),vertexShader:$n.meshphong_vert,fragmentShader:$n.meshphong_frag},standard:{uniforms:wn([Gn.common,Gn.envmap,Gn.aomap,Gn.lightmap,Gn.emissivemap,Gn.bumpmap,Gn.normalmap,Gn.displacementmap,Gn.roughnessmap,Gn.metalnessmap,Gn.fog,Gn.lights,{emissive:{value:new Oi(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:$n.meshphysical_vert,fragmentShader:$n.meshphysical_frag},toon:{uniforms:wn([Gn.common,Gn.aomap,Gn.lightmap,Gn.emissivemap,Gn.bumpmap,Gn.normalmap,Gn.displacementmap,Gn.gradientmap,Gn.fog,Gn.lights,{emissive:{value:new Oi(0)}}]),vertexShader:$n.meshtoon_vert,fragmentShader:$n.meshtoon_frag},matcap:{uniforms:wn([Gn.common,Gn.bumpmap,Gn.normalmap,Gn.displacementmap,Gn.fog,{matcap:{value:null}}]),vertexShader:$n.meshmatcap_vert,fragmentShader:$n.meshmatcap_frag},points:{uniforms:wn([Gn.points,Gn.fog]),vertexShader:$n.points_vert,fragmentShader:$n.points_frag},dashed:{uniforms:wn([Gn.common,Gn.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:$n.linedashed_vert,fragmentShader:$n.linedashed_frag},depth:{uniforms:wn([Gn.common,Gn.displacementmap]),vertexShader:$n.depth_vert,fragmentShader:$n.depth_frag},normal:{uniforms:wn([Gn.common,Gn.bumpmap,Gn.normalmap,Gn.displacementmap,{opacity:{value:1}}]),vertexShader:$n.meshnormal_vert,fragmentShader:$n.meshnormal_frag},sprite:{uniforms:wn([Gn.sprite,Gn.fog]),vertexShader:$n.sprite_vert,fragmentShader:$n.sprite_frag},background:{uniforms:{uvTransform:{value:new He},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:$n.background_vert,fragmentShader:$n.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:$n.backgroundCube_vert,fragmentShader:$n.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:$n.cube_vert,fragmentShader:$n.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:$n.equirect_vert,fragmentShader:$n.equirect_frag},distanceRGBA:{uniforms:wn([Gn.common,Gn.displacementmap,{referencePosition:{value:new _t},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:$n.distanceRGBA_vert,fragmentShader:$n.distanceRGBA_frag},shadow:{uniforms:wn([Gn.lights,Gn.fog,{color:{value:new Oi(0)},opacity:{value:1}}]),vertexShader:$n.shadow_vert,fragmentShader:$n.shadow_frag}};Hn.physical={uniforms:wn([Hn.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new He},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new He},clearcoatNormalScale:{value:new Ge(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new He},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new He},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new He},sheen:{value:0},sheenColor:{value:new Oi(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new He},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new He},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new He},transmissionSamplerSize:{value:new Ge},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new He},attenuationDistance:{value:0},attenuationColor:{value:new Oi(0)},specularColor:{value:new Oi(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new He},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new He},anisotropyVector:{value:new Ge},anisotropyMap:{value:null},anisotropyMapTransform:{value:new He}}]),vertexShader:$n.meshphysical_vert,fragmentShader:$n.meshphysical_frag};const jn={r:0,b:0,g:0};function Wn(e,t,i,n,a,o,l){const c=new Oi(0);let u,h,d=!0===o?0:1,f=null,m=0,p=null;function g(t,i){t.getRGB(jn,Sn(e)),n.buffers.color.setClear(jn.r,jn.g,jn.b,i,l)}return{getClearColor:function(){return c},setClearColor:function(e,t=1){c.set(e),d=t,g(c,d)},getClearAlpha:function(){return d},setClearAlpha:function(e){d=e,g(c,d)},render:function(o,_){let y=!1,v=!0===_.isScene?_.background:null;if(v&&v.isTexture){v=(_.backgroundBlurriness>0?i:t).get(v)}null===v?g(c,d):v&&v.isColor&&(g(v,1),y=!0);const b=e.xr.getEnvironmentBlendMode();"additive"===b?n.buffers.color.setClear(0,0,0,1,l):"alpha-blend"===b&&n.buffers.color.setClear(0,0,0,0,l),(e.autoClear||y)&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),v&&(v.isCubeTexture||v.mapping===N)?(void 0===h&&(h=new yn(new bn(1,1,1),new An({name:"BackgroundCubeMaterial",uniforms:xn(Hn.backgroundCube.uniforms),vertexShader:Hn.backgroundCube.vertexShader,fragmentShader:Hn.backgroundCube.fragmentShader,side:s,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(e,t,i){this.matrixWorld.copyPosition(i.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),a.update(h)),h.material.uniforms.envMap.value=v,h.material.uniforms.flipEnvMap.value=v.isCubeTexture&&!1===v.isRenderTargetTexture?-1:1,h.material.uniforms.backgroundBlurriness.value=_.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=_.backgroundIntensity,h.material.toneMapped=tt.getTransfer(v.colorSpace)!==me,f===v&&m===v.version&&p===e.toneMapping||(h.material.needsUpdate=!0,f=v,m=v.version,p=e.toneMapping),h.layers.enableAll(),o.unshift(h,h.geometry,h.material,0,0,null)):v&&v.isTexture&&(void 0===u&&(u=new yn(new Vn(2,2),new An({name:"BackgroundMaterial",uniforms:xn(Hn.background.uniforms),vertexShader:Hn.background.vertexShader,fragmentShader:Hn.background.fragmentShader,side:r,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),Object.defineProperty(u.material,"map",{get:function(){return this.uniforms.t2D.value}}),a.update(u)),u.material.uniforms.t2D.value=v,u.material.uniforms.backgroundIntensity.value=_.backgroundIntensity,u.material.toneMapped=tt.getTransfer(v.colorSpace)!==me,!0===v.matrixAutoUpdate&&v.updateMatrix(),u.material.uniforms.uvTransform.value.copy(v.matrix),f===v&&m===v.version&&p===e.toneMapping||(u.material.needsUpdate=!0,f=v,m=v.version,p=e.toneMapping),u.layers.enableAll(),o.unshift(u,u.geometry,u.material,0,0,null))}}}function qn(e,t,i,n){const r=e.getParameter(34921),s=n.isWebGL2?null:t.get("OES_vertex_array_object"),a=n.isWebGL2||null!==s,o={},l=f(null);let c=l,u=!1;function h(t){return n.isWebGL2?e.bindVertexArray(t):s.bindVertexArrayOES(t)}function d(t){return n.isWebGL2?e.deleteVertexArray(t):s.deleteVertexArrayOES(t)}function f(e){const t=[],i=[],n=[];for(let e=0;e=0){const i=r[t];let n=s[t];if(void 0===n&&("instanceMatrix"===t&&e.instanceMatrix&&(n=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(n=e.instanceColor)),void 0===i)return!0;if(i.attribute!==n)return!0;if(n&&i.data!==n.data)return!0;a++}}return c.attributesNum!==a||c.index!==n}(r,v,d,b),x&&function(e,t,i,n){const r={},s=t.attributes;let a=0;const o=i.getAttributes();for(const t in o){if(o[t].location>=0){let i=s[t];void 0===i&&("instanceMatrix"===t&&e.instanceMatrix&&(i=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(i=e.instanceColor));const n={};n.attribute=i,i&&i.data&&(n.data=i.data),r[t]=n,a++}}c.attributes=r,c.attributesNum=a,c.index=n}(r,v,d,b)}else{const e=!0===l.wireframe;c.geometry===v.id&&c.program===d.id&&c.wireframe===e||(c.geometry=v.id,c.program=d.id,c.wireframe=e,x=!0)}null!==b&&i.update(b,34963),(x||u)&&(u=!1,function(r,s,a,o){if(!1===n.isWebGL2&&(r.isInstancedMesh||o.isInstancedBufferGeometry)&&null===t.get("ANGLE_instanced_arrays"))return;m();const l=o.attributes,c=a.getAttributes(),u=s.defaultAttributeValues;for(const t in c){const s=c[t];if(s.location>=0){let a=l[t];if(void 0===a&&("instanceMatrix"===t&&r.instanceMatrix&&(a=r.instanceMatrix),"instanceColor"===t&&r.instanceColor&&(a=r.instanceColor)),void 0!==a){const t=a.normalized,l=a.itemSize,c=i.get(a);if(void 0===c)continue;const u=c.buffer,h=c.type,d=c.bytesPerElement,f=!0===n.isWebGL2&&(5124===h||5125===h||a.gpuType===X);if(a.isInterleavedBufferAttribute){const i=a.data,n=i.stride,c=a.offset;if(i.isInstancedInterleavedBuffer){for(let e=0;e0&&e.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(35633,36337).precision>0&&e.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}const s="undefined"!=typeof WebGL2RenderingContext&&"WebGL2RenderingContext"===e.constructor.name;let a=void 0!==i.precision?i.precision:"highp";const o=r(a);o!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",o,"instead."),a=o);const l=s||t.has("WEBGL_draw_buffers"),c=!0===i.logarithmicDepthBuffer,u=e.getParameter(34930),h=e.getParameter(35660),d=e.getParameter(3379),f=e.getParameter(34076),m=e.getParameter(34921),p=e.getParameter(36347),g=e.getParameter(36348),_=e.getParameter(36349),y=h>0,v=s||t.has("OES_texture_float");return{isWebGL2:s,drawBuffers:l,getMaxAnisotropy:function(){if(void 0!==n)return n;if(!0===t.has("EXT_texture_filter_anisotropic")){const i=t.get("EXT_texture_filter_anisotropic");n=e.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else n=0;return n},getMaxPrecision:r,precision:a,logarithmicDepthBuffer:c,maxTextures:u,maxVertexTextures:h,maxTextureSize:d,maxCubemapSize:f,maxAttributes:m,maxVertexUniforms:p,maxVaryings:g,maxFragmentUniforms:_,vertexTextures:y,floatFragmentTextures:v,floatVertexTextures:y&&v,maxSamples:s?e.getParameter(36183):0}}function Kn(e){const t=this;let i=null,n=0,r=!1,s=!1;const a=new On,o=new He,l={value:null,needsUpdate:!1};function c(e,i,n,r){const s=null!==e?e.length:0;let c=null;if(0!==s){if(c=l.value,!0!==r||null===c){const t=n+4*s,r=i.matrixWorldInverse;o.getNormalMatrix(r),(null===c||c.length0);t.numPlanes=n,t.numIntersection=0}();else{const e=s?0:n,t=4*e;let r=m.clippingState||null;l.value=r,r=c(h,o,t,u);for(let e=0;e!==t;++e)r[e]=i[e];m.clippingState=r,this.numIntersection=d?this.numPlanes:0,this.numPlanes+=e}}}function Zn(e){let t=new WeakMap;function i(e,t){return 303===t?e.mapping=k:304===t&&(e.mapping=O),e}function n(e){const i=e.target;i.removeEventListener("dispose",n);const r=t.get(i);void 0!==r&&(t.delete(i),r.dispose())}return{get:function(r){if(r&&r.isTexture&&!1===r.isRenderTargetTexture){const s=r.mapping;if(303===s||304===s){if(t.has(r)){return i(t.get(r).texture,r.mapping)}{const s=r.image;if(s&&s.height>0){const a=new Dn(s.height/2);return a.fromEquirectangularTexture(e,r),t.set(r,a),r.addEventListener("dispose",n),i(a.texture,r.mapping)}return null}}}return r},dispose:function(){t=new WeakMap}}}class Qn extends Cn{constructor(e=-1,t=1,i=1,n=-1,r=.1,s=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=n,this.near=r,this.far=s,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=null===e.view?null:Object.assign({},e.view),this}setViewOffset(e,t,i,n,r,s){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=n,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,n=(this.top+this.bottom)/2;let r=i-e,s=i+e,a=n+t,o=n-t;if(null!==this.view&&this.view.enabled){const e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=e*this.view.offsetX,s=r+e*this.view.width,a-=t*this.view.offsetY,o=a-t*this.view.height}this.projectionMatrix.makeOrthographic(r,s,a,o,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,null!==this.view&&(t.object.view=Object.assign({},this.view)),t}}const Jn=[.125,.215,.35,.446,.526,.582],er=20,tr=new Qn,ir=new Oi;let nr=null,rr=0,sr=0;const ar=(1+Math.sqrt(5))/2,or=1/ar,lr=[new _t(1,1,1),new _t(-1,1,1),new _t(1,1,-1),new _t(-1,1,-1),new _t(0,ar,or),new _t(0,ar,-or),new _t(or,0,ar),new _t(-or,0,ar),new _t(ar,or,0),new _t(-ar,or,0)];class cr{constructor(e){this._renderer=e,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)}fromScene(e,t=0,i=.1,n=100){nr=this._renderer.getRenderTarget(),rr=this._renderer.getActiveCubeFace(),sr=this._renderer.getActiveMipmapLevel(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(e,i,n,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=fr(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=dr(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let e=0;ee-4?o=Jn[a-e+4-1]:0===a&&(o=0),n.push(o);const l=1/(s-2),c=-l,u=1+l,h=[c,c,u,c,u,u,c,c,u,u,c,u],d=6,f=6,m=3,p=2,g=1,_=new Float32Array(m*f*d),y=new Float32Array(p*f*d),v=new Float32Array(g*f*d);for(let e=0;e2?0:-1,n=[t,i,0,t+2/3,i,0,t+2/3,i+1,0,t,i,0,t+2/3,i+1,0,t,i+1,0];_.set(n,m*f*e),y.set(h,p*f*e);const r=[e,e,e,e,e,e];v.set(r,g*f*e)}const b=new Ji;b.setAttribute("position",new $i(_,m)),b.setAttribute("uv",new $i(y,p)),b.setAttribute("faceIndex",new $i(v,g)),t.push(b),r>4&&r--}return{lodPlanes:t,sizeLods:i,sigmas:n}}(n)),this._blurMaterial=function(e,t,i){const n=new Float32Array(er),r=new _t(0,1,0),s=new An({name:"SphericalGaussianBlur",defines:{n:er,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/i,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:mr(),fragmentShader:"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;\n#define ENVMAP_TYPE_CUBE_UV\n#include \nvec3 getSample(float theta,vec3 axis){float cosTheta=cos(theta);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=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:0,depthTest:!1,depthWrite:!1});return s}(n,e,t)}return n}_compileMaterial(e){const t=new yn(this._lodPlanes[0],e);this._renderer.compile(t,tr)}_sceneToCubeUV(e,t,i,n){const r=new Tn(90,1,t,i),a=[1,-1,1,1,1,1],o=[1,1,1,-1,-1,-1],l=this._renderer,c=l.autoClear,u=l.toneMapping;l.getClearColor(ir),l.toneMapping=P,l.autoClear=!1;const h=new zi({name:"PMREM.Background",side:s,depthWrite:!1,depthTest:!1}),d=new yn(new bn,h);let f=!1;const m=e.background;m?m.isColor&&(h.color.copy(m),e.background=null,f=!0):(h.color.copy(ir),f=!0);for(let t=0;t<6;t++){const i=t%3;0===i?(r.up.set(0,a[t],0),r.lookAt(o[t],0,0)):1===i?(r.up.set(0,0,a[t]),r.lookAt(0,o[t],0)):(r.up.set(0,a[t],0),r.lookAt(0,0,o[t]));const s=this._cubeSize;hr(n,i*s,t>2?s:0,s,s),l.setRenderTarget(n),f&&l.render(d,r),l.render(e,r)}d.geometry.dispose(),d.material.dispose(),l.toneMapping=u,l.autoClear=c,e.background=m}_textureToCubeUV(e,t){const i=this._renderer,n=e.mapping===k||e.mapping===O;n?(null===this._cubemapMaterial&&(this._cubemapMaterial=fr()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===e.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=dr());const r=n?this._cubemapMaterial:this._equirectMaterial,s=new yn(this._lodPlanes[0],r);r.uniforms.envMap.value=e;const a=this._cubeSize;hr(t,0,0,3*a,2*a),i.setRenderTarget(t),i.render(s,tr)}_applyPMREM(e){const t=this._renderer,i=t.autoClear;t.autoClear=!1;for(let t=1;ter&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${m} samples when the maximum is set to 20`);const p=[];let g=0;for(let e=0;e_-4?n-_+4:0),4*(this._cubeSize-y),3*y,2*y),o.setRenderTarget(t),o.render(c,tr)}}function ur(e,t,i){const n=new ft(e,t,i);return n.texture.mapping=N,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function hr(e,t,i,n,r){e.viewport.set(t,i,n,r),e.scissor.set(t,i,n,r)}function dr(){return new An({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:mr(),fragmentShader:"precision mediump float;precision mediump int;varying vec3 vOutputDirection;uniform sampler2D envMap;\n#include \nvoid main(){vec3 outputDirection=normalize(vOutputDirection);vec2 uv=equirectUv(outputDirection);gl_FragColor=vec4(texture2D(envMap,uv).rgb,1.0);}",blending:0,depthTest:!1,depthWrite:!1})}function fr(){return new An({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:mr(),fragmentShader:"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:0,depthTest:!1,depthWrite:!1})}function mr(){return"precision mediump float;precision mediump int;attribute float faceIndex;varying vec3 vOutputDirection;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;}else if(face==1.0){direction=direction.xzy;direction.xz*=-1.0;}else if(face==2.0){direction.x*=-1.0;}else if(face==3.0){direction=direction.zyx;direction.xz*=-1.0;}else if(face==4.0){direction=direction.xzy;direction.xy*=-1.0;}else if(face==5.0){direction.z*=-1.0;}return direction;}void main(){vOutputDirection=getDirection(uv,faceIndex);gl_Position=vec4(position,1.0);}"}function pr(e){let t=new WeakMap,i=null;function n(e){const i=e.target;i.removeEventListener("dispose",n);const r=t.get(i);void 0!==r&&(t.delete(i),r.dispose())}return{get:function(r){if(r&&r.isTexture){const s=r.mapping,a=303===s||304===s,o=s===k||s===O;if(a||o){if(r.isRenderTargetTexture&&!0===r.needsPMREMUpdate){r.needsPMREMUpdate=!1;let n=t.get(r);return null===i&&(i=new cr(e)),n=a?i.fromEquirectangular(r,n):i.fromCubemap(r,n),t.set(r,n),n.texture}if(t.has(r))return t.get(r).texture;{const s=r.image;if(a&&s&&s.height>0||o&&s&&function(e){let t=0;const i=6;for(let n=0;nt.maxTextureSize&&(A=Math.ceil(M/t.maxTextureSize),M=t.maxTextureSize);const C=new Float32Array(M*A*4*f),T=new mt(C,M,A,f);T.type=K,T.needsUpdate=!0;const P=4*S;for(let I=0;I0)return e;const r=t*i;let s=Pr[r];if(void 0===s&&(s=new Float32Array(r),Pr[r]=s),0!==t){n.toArray(s,0);for(let n=1,r=0;n!==t;++n)r+=i,e[n].toArray(s,r)}return s}function kr(e,t){if(e.length!==t.length)return!1;for(let i=0,n=e.length;i":" "} ${r}: ${i[e]}`)}return n.join("\n")}(e.getShaderSource(t),n)}return r}function Rs(e,t){const i=function(e){const t=tt.getPrimaries(tt.workingColorSpace),i=tt.getPrimaries(e);let n;switch(t===i?n="":t===ge&&i===pe?n="LinearDisplayP3ToLinearSRGB":t===pe&&i===ge&&(n="LinearSRGBToLinearDisplayP3"),e){case ue:case de:return[n,"LinearTransferOETF"];case ce:case he:return[n,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",e),[n,"LinearTransferOETF"]}}(t);return`vec4 ${e}( vec4 value ) { return ${i[0]}( ${i[1]}( value ) ); }`}function Ls(e,t){let i;switch(t){case E:i="Linear";break;case I:i="Reinhard";break;case D:i="OptimizedCineon";break;case R:i="ACESFilmic";break;case L:i="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),i="Linear"}return"vec3 "+e+"( vec3 color ) { return "+i+"ToneMapping( color ); }"}function ks(e){return""!==e}function Os(e,t){const i=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return e.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,i).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function Ns(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}const Fs=/^[ \t]*#include +<([\w\d./]+)>/gm;function Bs(e){return e.replace(Fs,Us)}const zs=new Map([["encodings_fragment","colorspace_fragment"],["encodings_pars_fragment","colorspace_pars_fragment"],["output_fragment","opaque_fragment"]]);function Us(e,t){let i=$n[t];if(void 0===i){const e=zs.get(t);if(void 0===e)throw new Error("Can not resolve #include <"+t+">");i=$n[e],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',t,e)}return Bs(i)}const Vs=/#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 $s(e){return e.replace(Vs,Gs)}function Gs(e,t,i,n){let r="";for(let e=parseInt(t);e0&&(v+="\n"),b=[g,"#define SHADER_TYPE "+s.shaderType,"#define SHADER_NAME "+s.shaderName,_].filter(ks).join("\n"),b.length>0&&(b+="\n")):(v=[Hs(s),"#define SHADER_TYPE "+s.shaderType,"#define SHADER_NAME "+s.shaderName,_,s.instancing?"#define USE_INSTANCING":"",s.instancingColor?"#define USE_INSTANCING_COLOR":"",s.useFog&&s.fog?"#define USE_FOG":"",s.useFog&&s.fogExp2?"#define FOG_EXP2":"",s.map?"#define USE_MAP":"",s.envMap?"#define USE_ENVMAP":"",s.envMap?"#define "+f:"",s.lightMap?"#define USE_LIGHTMAP":"",s.aoMap?"#define USE_AOMAP":"",s.bumpMap?"#define USE_BUMPMAP":"",s.normalMap?"#define USE_NORMALMAP":"",s.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",s.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",s.displacementMap?"#define USE_DISPLACEMENTMAP":"",s.emissiveMap?"#define USE_EMISSIVEMAP":"",s.anisotropy?"#define USE_ANISOTROPY":"",s.anisotropyMap?"#define USE_ANISOTROPYMAP":"",s.clearcoatMap?"#define USE_CLEARCOATMAP":"",s.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",s.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",s.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",s.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",s.specularMap?"#define USE_SPECULARMAP":"",s.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",s.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",s.roughnessMap?"#define USE_ROUGHNESSMAP":"",s.metalnessMap?"#define USE_METALNESSMAP":"",s.alphaMap?"#define USE_ALPHAMAP":"",s.alphaHash?"#define USE_ALPHAHASH":"",s.transmission?"#define USE_TRANSMISSION":"",s.transmissionMap?"#define USE_TRANSMISSIONMAP":"",s.thicknessMap?"#define USE_THICKNESSMAP":"",s.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",s.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",s.mapUv?"#define MAP_UV "+s.mapUv:"",s.alphaMapUv?"#define ALPHAMAP_UV "+s.alphaMapUv:"",s.lightMapUv?"#define LIGHTMAP_UV "+s.lightMapUv:"",s.aoMapUv?"#define AOMAP_UV "+s.aoMapUv:"",s.emissiveMapUv?"#define EMISSIVEMAP_UV "+s.emissiveMapUv:"",s.bumpMapUv?"#define BUMPMAP_UV "+s.bumpMapUv:"",s.normalMapUv?"#define NORMALMAP_UV "+s.normalMapUv:"",s.displacementMapUv?"#define DISPLACEMENTMAP_UV "+s.displacementMapUv:"",s.metalnessMapUv?"#define METALNESSMAP_UV "+s.metalnessMapUv:"",s.roughnessMapUv?"#define ROUGHNESSMAP_UV "+s.roughnessMapUv:"",s.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+s.anisotropyMapUv:"",s.clearcoatMapUv?"#define CLEARCOATMAP_UV "+s.clearcoatMapUv:"",s.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+s.clearcoatNormalMapUv:"",s.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+s.clearcoatRoughnessMapUv:"",s.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+s.iridescenceMapUv:"",s.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+s.iridescenceThicknessMapUv:"",s.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+s.sheenColorMapUv:"",s.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+s.sheenRoughnessMapUv:"",s.specularMapUv?"#define SPECULARMAP_UV "+s.specularMapUv:"",s.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+s.specularColorMapUv:"",s.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+s.specularIntensityMapUv:"",s.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+s.transmissionMapUv:"",s.thicknessMapUv?"#define THICKNESSMAP_UV "+s.thicknessMapUv:"",s.vertexTangents&&!1===s.flatShading?"#define USE_TANGENT":"",s.vertexColors?"#define USE_COLOR":"",s.vertexAlphas?"#define USE_COLOR_ALPHA":"",s.vertexUv1s?"#define USE_UV1":"",s.vertexUv2s?"#define USE_UV2":"",s.vertexUv3s?"#define USE_UV3":"",s.pointsUvs?"#define USE_POINTS_UV":"",s.flatShading?"#define FLAT_SHADED":"",s.skinning?"#define USE_SKINNING":"",s.morphTargets?"#define USE_MORPHTARGETS":"",s.morphNormals&&!1===s.flatShading?"#define USE_MORPHNORMALS":"",s.morphColors&&s.isWebGL2?"#define USE_MORPHCOLORS":"",s.morphTargetsCount>0&&s.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",s.morphTargetsCount>0&&s.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+s.morphTextureStride:"",s.morphTargetsCount>0&&s.isWebGL2?"#define MORPHTARGETS_COUNT "+s.morphTargetsCount:"",s.doubleSided?"#define DOUBLE_SIDED":"",s.flipSided?"#define FLIP_SIDED":"",s.shadowMapEnabled?"#define USE_SHADOWMAP":"",s.shadowMapEnabled?"#define "+h:"",s.sizeAttenuation?"#define USE_SIZEATTENUATION":"",s.numLightProbes>0?"#define USE_LIGHT_PROBES":"",s.useLegacyLights?"#define LEGACY_LIGHTS":"",s.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",s.logarithmicDepthBuffer&&s.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1","\tattribute vec2 uv1;","#endif","#ifdef USE_UV2","\tattribute vec2 uv2;","#endif","#ifdef USE_UV3","\tattribute vec2 uv3;","#endif","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(ks).join("\n"),b=[g,Hs(s),"#define SHADER_TYPE "+s.shaderType,"#define SHADER_NAME "+s.shaderName,_,s.useFog&&s.fog?"#define USE_FOG":"",s.useFog&&s.fogExp2?"#define FOG_EXP2":"",s.map?"#define USE_MAP":"",s.matcap?"#define USE_MATCAP":"",s.envMap?"#define USE_ENVMAP":"",s.envMap?"#define "+d:"",s.envMap?"#define "+f:"",s.envMap?"#define "+m:"",p?"#define CUBEUV_TEXEL_WIDTH "+p.texelWidth:"",p?"#define CUBEUV_TEXEL_HEIGHT "+p.texelHeight:"",p?"#define CUBEUV_MAX_MIP "+p.maxMip+".0":"",s.lightMap?"#define USE_LIGHTMAP":"",s.aoMap?"#define USE_AOMAP":"",s.bumpMap?"#define USE_BUMPMAP":"",s.normalMap?"#define USE_NORMALMAP":"",s.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",s.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",s.emissiveMap?"#define USE_EMISSIVEMAP":"",s.anisotropy?"#define USE_ANISOTROPY":"",s.anisotropyMap?"#define USE_ANISOTROPYMAP":"",s.clearcoat?"#define USE_CLEARCOAT":"",s.clearcoatMap?"#define USE_CLEARCOATMAP":"",s.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",s.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",s.iridescence?"#define USE_IRIDESCENCE":"",s.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",s.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",s.specularMap?"#define USE_SPECULARMAP":"",s.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",s.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",s.roughnessMap?"#define USE_ROUGHNESSMAP":"",s.metalnessMap?"#define USE_METALNESSMAP":"",s.alphaMap?"#define USE_ALPHAMAP":"",s.alphaTest?"#define USE_ALPHATEST":"",s.alphaHash?"#define USE_ALPHAHASH":"",s.sheen?"#define USE_SHEEN":"",s.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",s.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",s.transmission?"#define USE_TRANSMISSION":"",s.transmissionMap?"#define USE_TRANSMISSIONMAP":"",s.thicknessMap?"#define USE_THICKNESSMAP":"",s.vertexTangents&&!1===s.flatShading?"#define USE_TANGENT":"",s.vertexColors||s.instancingColor?"#define USE_COLOR":"",s.vertexAlphas?"#define USE_COLOR_ALPHA":"",s.vertexUv1s?"#define USE_UV1":"",s.vertexUv2s?"#define USE_UV2":"",s.vertexUv3s?"#define USE_UV3":"",s.pointsUvs?"#define USE_POINTS_UV":"",s.gradientMap?"#define USE_GRADIENTMAP":"",s.flatShading?"#define FLAT_SHADED":"",s.doubleSided?"#define DOUBLE_SIDED":"",s.flipSided?"#define FLIP_SIDED":"",s.shadowMapEnabled?"#define USE_SHADOWMAP":"",s.shadowMapEnabled?"#define "+h:"",s.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",s.numLightProbes>0?"#define USE_LIGHT_PROBES":"",s.useLegacyLights?"#define LEGACY_LIGHTS":"",s.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",s.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",s.logarithmicDepthBuffer&&s.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",s.toneMapping!==P?"#define TONE_MAPPING":"",s.toneMapping!==P?$n.tonemapping_pars_fragment:"",s.toneMapping!==P?Ls("toneMapping",s.toneMapping):"",s.dithering?"#define DITHERING":"",s.opaque?"#define OPAQUE":"",$n.colorspace_pars_fragment,Rs("linearToOutputTexel",s.outputColorSpace),s.useDepthPacking?"#define DEPTH_PACKING "+s.depthPacking:"","\n"].filter(ks).join("\n")),c=Bs(c),c=Os(c,s),c=Ns(c,s),u=Bs(u),u=Os(u,s),u=Ns(u,s),c=$s(c),u=$s(u),s.isWebGL2&&!0!==s.isRawShaderMaterial&&(x="#version 300 es\n",v=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+v,b=["precision mediump sampler2DArray;","#define varying in",s.glslVersion===Pe?"":"layout(location = 0) out highp vec4 pc_fragColor;",s.glslVersion===Pe?"":"#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"+b);const w=x+b+u,S=Ps(o,35633,x+v+c),M=Ps(o,35632,w);function E(t){if(e.debug.checkShaderErrors){const i=o.getProgramInfoLog(y).trim(),n=o.getShaderInfoLog(S).trim(),r=o.getShaderInfoLog(M).trim();let s=!0,a=!0;if(!1===o.getProgramParameter(y,35714))if(s=!1,"function"==typeof e.debug.onShaderError)e.debug.onShaderError(o,y,S,M);else{const e=Ds(o,S,"vertex"),t=Ds(o,M,"fragment");console.error("THREE.WebGLProgram: Shader Error "+o.getError()+" - VALIDATE_STATUS "+o.getProgramParameter(y,35715)+"\n\nProgram Info Log: "+i+"\n"+e+"\n"+t)}else""!==i?console.warn("THREE.WebGLProgram: Program Info Log:",i):""!==n&&""!==r||(a=!1);a&&(t.diagnostics={runnable:s,programLog:i,vertexShader:{log:n,prefix:v},fragmentShader:{log:r,prefix:b}})}o.deleteShader(S),o.deleteShader(M),I=new Ts(o,y),D=function(e,t){const i={},n=e.getProgramParameter(t,35721);for(let r=0;r0,X=a.clearcoat>0,Y=a.iridescence>0,K=a.sheen>0,Z=a.transmission>0,Q=q&&!!a.anisotropyMap,J=X&&!!a.clearcoatMap,ee=X&&!!a.clearcoatNormalMap,te=X&&!!a.clearcoatRoughnessMap,ie=Y&&!!a.iridescenceMap,ne=Y&&!!a.iridescenceThicknessMap,re=K&&!!a.sheenColorMap,se=K&&!!a.sheenRoughnessMap,ae=!!a.specularMap,oe=!!a.specularColorMap,le=!!a.specularIntensityMap,ce=Z&&!!a.transmissionMap,he=Z&&!!a.thicknessMap,de=!!a.gradientMap,fe=!!a.alphaMap,pe=a.alphaTest>0,ge=!!a.alphaHash,_e=!!a.extensions,ye=!!b.attributes.uv1,ve=!!b.attributes.uv2,be=!!b.attributes.uv3;let xe=P;return a.toneMapped&&(null!==L&&!0!==L.isXRRenderTarget||(xe=e.toneMapping)),{isWebGL2:h,shaderID:M,shaderType:a.type,shaderName:a.name,vertexShader:T,fragmentShader:E,defines:a.defines,customVertexShaderID:I,customFragmentShaderID:D,isRawShaderMaterial:!0===a.isRawShaderMaterial,glslVersion:a.glslVersion,precision:m,instancing:k,instancingColor:k&&null!==y.instanceColor,supportsVertexTextures:f,outputColorSpace:null===L?e.outputColorSpace:!0===L.isXRRenderTarget?L.texture.colorSpace:ue,map:O,matcap:F,envMap:B,envMapMode:B&&w.mapping,envMapCubeUVHeight:S,aoMap:z,lightMap:U,bumpMap:V,normalMap:$,displacementMap:f&&G,emissiveMap:H,normalMapObjectSpace:$&&1===a.normalMapType,normalMapTangentSpace:$&&0===a.normalMapType,metalnessMap:j,roughnessMap:W,anisotropy:q,anisotropyMap:Q,clearcoat:X,clearcoatMap:J,clearcoatNormalMap:ee,clearcoatRoughnessMap:te,iridescence:Y,iridescenceMap:ie,iridescenceThicknessMap:ne,sheen:K,sheenColorMap:re,sheenRoughnessMap:se,specularMap:ae,specularColorMap:oe,specularIntensityMap:le,transmission:Z,transmissionMap:ce,thicknessMap:he,gradientMap:de,opaque:!1===a.transparent&&1===a.blending,alphaMap:fe,alphaTest:pe,alphaHash:ge,combine:a.combine,mapUv:O&&g(a.map.channel),aoMapUv:z&&g(a.aoMap.channel),lightMapUv:U&&g(a.lightMap.channel),bumpMapUv:V&&g(a.bumpMap.channel),normalMapUv:$&&g(a.normalMap.channel),displacementMapUv:G&&g(a.displacementMap.channel),emissiveMapUv:H&&g(a.emissiveMap.channel),metalnessMapUv:j&&g(a.metalnessMap.channel),roughnessMapUv:W&&g(a.roughnessMap.channel),anisotropyMapUv:Q&&g(a.anisotropyMap.channel),clearcoatMapUv:J&&g(a.clearcoatMap.channel),clearcoatNormalMapUv:ee&&g(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:te&&g(a.clearcoatRoughnessMap.channel),iridescenceMapUv:ie&&g(a.iridescenceMap.channel),iridescenceThicknessMapUv:ne&&g(a.iridescenceThicknessMap.channel),sheenColorMapUv:re&&g(a.sheenColorMap.channel),sheenRoughnessMapUv:se&&g(a.sheenRoughnessMap.channel),specularMapUv:ae&&g(a.specularMap.channel),specularColorMapUv:oe&&g(a.specularColorMap.channel),specularIntensityMapUv:le&&g(a.specularIntensityMap.channel),transmissionMapUv:ce&&g(a.transmissionMap.channel),thicknessMapUv:he&&g(a.thicknessMap.channel),alphaMapUv:fe&&g(a.alphaMap.channel),vertexTangents:!!b.attributes.tangent&&($||q),vertexColors:a.vertexColors,vertexAlphas:!0===a.vertexColors&&!!b.attributes.color&&4===b.attributes.color.itemSize,vertexUv1s:ye,vertexUv2s:ve,vertexUv3s:be,pointsUvs:!0===y.isPoints&&!!b.attributes.uv&&(O||fe),fog:!!v,useFog:!0===a.fog,fogExp2:v&&v.isFogExp2,flatShading:!0===a.flatShading,sizeAttenuation:!0===a.sizeAttenuation,logarithmicDepthBuffer:d,skinning:!0===y.isSkinnedMesh,morphTargets:void 0!==b.morphAttributes.position,morphNormals:void 0!==b.morphAttributes.normal,morphColors:void 0!==b.morphAttributes.color,morphTargetsCount:C,morphTextureStride:R,numDirLights:l.directional.length,numPointLights:l.point.length,numSpotLights:l.spot.length,numSpotLightMaps:l.spotLightMap.length,numRectAreaLights:l.rectArea.length,numHemiLights:l.hemi.length,numDirLightShadows:l.directionalShadowMap.length,numPointLightShadows:l.pointShadowMap.length,numSpotLightShadows:l.spotShadowMap.length,numSpotLightShadowsWithMaps:l.numSpotLightShadowsWithMaps,numLightProbes:l.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:a.dithering,shadowMapEnabled:e.shadowMap.enabled&&u.length>0,shadowMapType:e.shadowMap.type,toneMapping:xe,useLegacyLights:e._useLegacyLights,decodeVideoTexture:O&&!0===a.map.isVideoTexture&&tt.getTransfer(a.map.colorSpace)===me,premultipliedAlpha:a.premultipliedAlpha,doubleSided:2===a.side,flipSided:a.side===s,useDepthPacking:a.depthPacking>=0,depthPacking:a.depthPacking||0,index0AttributeName:a.index0AttributeName,extensionDerivatives:_e&&!0===a.extensions.derivatives,extensionFragDepth:_e&&!0===a.extensions.fragDepth,extensionDrawBuffers:_e&&!0===a.extensions.drawBuffers,extensionShaderTextureLOD:_e&&!0===a.extensions.shaderTextureLOD,rendererExtensionFragDepth:h||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:h||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:h||n.has("EXT_shader_texture_lod"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:a.customProgramCacheKey()}},getProgramCacheKey:function(t){const i=[];if(t.shaderID?i.push(t.shaderID):(i.push(t.customVertexShaderID),i.push(t.customFragmentShaderID)),void 0!==t.defines)for(const e in t.defines)i.push(e),i.push(t.defines[e]);return!1===t.isRawShaderMaterial&&(!function(e,t){e.push(t.precision),e.push(t.outputColorSpace),e.push(t.envMapMode),e.push(t.envMapCubeUVHeight),e.push(t.mapUv),e.push(t.alphaMapUv),e.push(t.lightMapUv),e.push(t.aoMapUv),e.push(t.bumpMapUv),e.push(t.normalMapUv),e.push(t.displacementMapUv),e.push(t.emissiveMapUv),e.push(t.metalnessMapUv),e.push(t.roughnessMapUv),e.push(t.anisotropyMapUv),e.push(t.clearcoatMapUv),e.push(t.clearcoatNormalMapUv),e.push(t.clearcoatRoughnessMapUv),e.push(t.iridescenceMapUv),e.push(t.iridescenceThicknessMapUv),e.push(t.sheenColorMapUv),e.push(t.sheenRoughnessMapUv),e.push(t.specularMapUv),e.push(t.specularColorMapUv),e.push(t.specularIntensityMapUv),e.push(t.transmissionMapUv),e.push(t.thicknessMapUv),e.push(t.combine),e.push(t.fogExp2),e.push(t.sizeAttenuation),e.push(t.morphTargetsCount),e.push(t.morphAttributeCount),e.push(t.numDirLights),e.push(t.numPointLights),e.push(t.numSpotLights),e.push(t.numSpotLightMaps),e.push(t.numHemiLights),e.push(t.numRectAreaLights),e.push(t.numDirLightShadows),e.push(t.numPointLightShadows),e.push(t.numSpotLightShadows),e.push(t.numSpotLightShadowsWithMaps),e.push(t.numLightProbes),e.push(t.shadowMapType),e.push(t.toneMapping),e.push(t.numClippingPlanes),e.push(t.numClipIntersection),e.push(t.depthPacking)}(i,t),function(e,t){l.disableAll(),t.isWebGL2&&l.enable(0);t.supportsVertexTextures&&l.enable(1);t.instancing&&l.enable(2);t.instancingColor&&l.enable(3);t.matcap&&l.enable(4);t.envMap&&l.enable(5);t.normalMapObjectSpace&&l.enable(6);t.normalMapTangentSpace&&l.enable(7);t.clearcoat&&l.enable(8);t.iridescence&&l.enable(9);t.alphaTest&&l.enable(10);t.vertexColors&&l.enable(11);t.vertexAlphas&&l.enable(12);t.vertexUv1s&&l.enable(13);t.vertexUv2s&&l.enable(14);t.vertexUv3s&&l.enable(15);t.vertexTangents&&l.enable(16);t.anisotropy&&l.enable(17);t.alphaHash&&l.enable(18);e.push(l.mask),l.disableAll(),t.fog&&l.enable(0);t.useFog&&l.enable(1);t.flatShading&&l.enable(2);t.logarithmicDepthBuffer&&l.enable(3);t.skinning&&l.enable(4);t.morphTargets&&l.enable(5);t.morphNormals&&l.enable(6);t.morphColors&&l.enable(7);t.premultipliedAlpha&&l.enable(8);t.shadowMapEnabled&&l.enable(9);t.useLegacyLights&&l.enable(10);t.doubleSided&&l.enable(11);t.flipSided&&l.enable(12);t.useDepthPacking&&l.enable(13);t.dithering&&l.enable(14);t.transmission&&l.enable(15);t.sheen&&l.enable(16);t.opaque&&l.enable(17);t.pointsUvs&&l.enable(18);t.decodeVideoTexture&&l.enable(19);e.push(l.mask)}(i,t),i.push(e.outputColorSpace)),i.push(t.customProgramCacheKey),i.join()},getUniforms:function(e){const t=p[e.type];let i;if(t){const e=Hn[t];i=Mn.clone(e.uniforms)}else i=e.uniforms;return i},acquireProgram:function(t,i){let n;for(let e=0,t=u.length;e0?n.push(u):!0===a.transparent?r.push(u):i.push(u)},unshift:function(e,t,a,o,l,c){const u=s(e,t,a,o,l,c);a.transmission>0?n.unshift(u):!0===a.transparent?r.unshift(u):i.unshift(u)},finish:function(){for(let i=t,n=e.length;i1&&i.sort(e||Zs),n.length>1&&n.sort(t||Qs),r.length>1&&r.sort(t||Qs)}}}function ea(){let e=new WeakMap;return{get:function(t,i){const n=e.get(t);let r;return void 0===n?(r=new Js,e.set(t,[r])):i>=n.length?(r=new Js,n.push(r)):r=n[i],r},dispose:function(){e=new WeakMap}}}function ta(){const e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let i;switch(t.type){case"DirectionalLight":i={direction:new _t,color:new Oi};break;case"SpotLight":i={position:new _t,direction:new _t,color:new Oi,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":i={position:new _t,color:new Oi,distance:0,decay:0};break;case"HemisphereLight":i={direction:new _t,skyColor:new Oi,groundColor:new Oi};break;case"RectAreaLight":i={color:new Oi,position:new _t,halfWidth:new _t,halfHeight:new _t}}return e[t.id]=i,i}}}let ia=0;function na(e,t){return(t.castShadow?2:0)-(e.castShadow?2:0)+(t.map?1:0)-(e.map?1:0)}function ra(e,t){const i=new ta,n=function(){const e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let i;switch(t.type){case"DirectionalLight":case"SpotLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ge};break;case"PointLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ge,shadowCameraNear:1,shadowCameraFar:1e3}}return e[t.id]=i,i}}}(),r={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 e=0;e<9;e++)r.probe.push(new _t);const s=new _t,a=new qt,o=new qt;return{setup:function(s,a){let o=0,l=0,c=0;for(let e=0;e<9;e++)r.probe[e].set(0,0,0);let u=0,h=0,d=0,f=0,m=0,p=0,g=0,_=0,y=0,v=0,b=0;s.sort(na);const x=!0===a?Math.PI:1;for(let e=0,t=s.length;e0&&(t.isWebGL2||!0===e.has("OES_texture_float_linear")?(r.rectAreaLTC1=Gn.LTC_FLOAT_1,r.rectAreaLTC2=Gn.LTC_FLOAT_2):!0===e.has("OES_texture_half_float_linear")?(r.rectAreaLTC1=Gn.LTC_HALF_1,r.rectAreaLTC2=Gn.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),r.ambient[0]=o,r.ambient[1]=l,r.ambient[2]=c;const w=r.hash;w.directionalLength===u&&w.pointLength===h&&w.spotLength===d&&w.rectAreaLength===f&&w.hemiLength===m&&w.numDirectionalShadows===p&&w.numPointShadows===g&&w.numSpotShadows===_&&w.numSpotMaps===y&&w.numLightProbes===b||(r.directional.length=u,r.spot.length=d,r.rectArea.length=f,r.point.length=h,r.hemi.length=m,r.directionalShadow.length=p,r.directionalShadowMap.length=p,r.pointShadow.length=g,r.pointShadowMap.length=g,r.spotShadow.length=_,r.spotShadowMap.length=_,r.directionalShadowMatrix.length=p,r.pointShadowMatrix.length=g,r.spotLightMatrix.length=_+y-v,r.spotLightMap.length=y,r.numSpotLightShadowsWithMaps=v,r.numLightProbes=b,w.directionalLength=u,w.pointLength=h,w.spotLength=d,w.rectAreaLength=f,w.hemiLength=m,w.numDirectionalShadows=p,w.numPointShadows=g,w.numSpotShadows=_,w.numSpotMaps=y,w.numLightProbes=b,r.version=ia++)},setupView:function(e,t){let i=0,n=0,l=0,c=0,u=0;const h=t.matrixWorldInverse;for(let t=0,d=e.length;t=s.length?(a=new sa(e,t),s.push(a)):a=s[r],a},dispose:function(){i=new WeakMap}}}class oa extends Bi{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=3200,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class la extends Bi{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}function ca(e,i,o){let l=new Bn;const c=new Ge,u=new Ge,h=new ht,d=new oa({depthPacking:3201}),f=new la,m={},p=o.maxTextureSize,g={[r]:s,[s]:r,[a]:2},_=new An({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Ge},radius:{value:4}},vertexShader:"void main(){gl_Position=vec4(position,1.0);}",fragmentShader:"uniform sampler2D shadow_pass;uniform vec2 resolution;uniform float radius;\n#include \nvoid main(){const float samples=float(VSM_SAMPLES);float mean=0.0;float squared_mean=0.0;float uvStride=samples<=1.0?0.0:2.0/(samples-1.0);float uvStart=samples<=1.0?0.0:-1.0;for(float i=0.0;i0||i.map&&i.alphaTest>0){const e=a.uuid,t=i.uuid;let n=m[e];void 0===n&&(n={},m[e]=n);let r=n[t];void 0===r&&(r=a.clone(),n[t]=r),a=r}if(a.visible=i.visible,a.wireframe=i.wireframe,a.side=s===n?null!==i.shadowSide?i.shadowSide:i.side:null!==i.shadowSide?i.shadowSide:g[i.side],a.alphaMap=i.alphaMap,a.alphaTest=i.alphaTest,a.map=i.map,a.clipShadows=i.clipShadows,a.clippingPlanes=i.clippingPlanes,a.clipIntersection=i.clipIntersection,a.displacementMap=i.displacementMap,a.displacementScale=i.displacementScale,a.displacementBias=i.displacementBias,a.wireframeLinewidth=i.wireframeLinewidth,a.linewidth=i.linewidth,!0===r.isPointLight&&!0===a.isMeshDistanceMaterial){e.properties.get(a).light=r}return a}function A(t,r,s,a,o){if(!1===t.visible)return;if(t.layers.test(r.layers)&&(t.isMesh||t.isLine||t.isPoints)&&(t.castShadow||t.receiveShadow&&o===n)&&(!t.frustumCulled||l.intersectsObject(t))){t.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse,t.matrixWorld);const n=i.update(t),r=t.material;if(Array.isArray(r)){const i=n.groups;for(let l=0,c=i.length;lp||c.y>p)&&(c.x>p&&(u.x=Math.floor(p/g.x),c.x=u.x*g.x,o.mapSize.x=u.x),c.y>p&&(u.y=Math.floor(p/g.y),c.y=u.y*g.y,o.mapSize.y=u.y)),null===o.map||!0===f||!0===m){const e=this.type!==n?{minFilter:U,magFilter:U}:{};null!==o.map&&o.map.dispose(),o.map=new ft(c.x,c.y,e),o.map.texture.name=a.name+".shadowMap",o.camera.updateProjectionMatrix()}e.setRenderTarget(o.map),e.clear();const _=o.getViewportCount();for(let e=0;e<_;e++){const t=o.getViewport(e);h.set(u.x*t.x,u.y*t.y,u.x*t.z,u.y*t.w),d.viewport(h),o.updateMatrices(a,e),l=o.getFrustum(),A(i,r,o.camera,a,this.type)}!0!==o.isPointLightShadow&&this.type===n&&S(o,r),o.needsUpdate=!1}w=this.type,x.needsUpdate=!1,e.setRenderTarget(s,a,o)}}function ua(e,t,i){const n=i.isWebGL2;const r=new function(){let t=!1;const i=new ht;let n=null;const r=new ht(0,0,0,0);return{setMask:function(i){n===i||t||(e.colorMask(i,i,i,i),n=i)},setLocked:function(e){t=e},setClear:function(t,n,s,a,o){!0===o&&(t*=a,n*=a,s*=a),i.set(t,n,s,a),!1===r.equals(i)&&(e.clearColor(t,n,s,a),r.copy(i))},reset:function(){t=!1,n=null,r.set(-1,0,0,0)}}},a=new function(){let t=!1,i=null,n=null,r=null;return{setTest:function(e){e?oe(2929):le(2929)},setMask:function(n){i===n||t||(e.depthMask(n),i=n)},setFunc:function(t){if(n!==t){switch(t){case 0:e.depthFunc(512);break;case 1:e.depthFunc(519);break;case 2:e.depthFunc(513);break;case 3:default:e.depthFunc(515);break;case 4:e.depthFunc(514);break;case 5:e.depthFunc(518);break;case 6:e.depthFunc(516);break;case 7:e.depthFunc(517)}n=t}},setLocked:function(e){t=e},setClear:function(t){r!==t&&(e.clearDepth(t),r=t)},reset:function(){t=!1,i=null,n=null,r=null}}},A=new function(){let t=!1,i=null,n=null,r=null,s=null,a=null,o=null,l=null,c=null;return{setTest:function(e){t||(e?oe(2960):le(2960))},setMask:function(n){i===n||t||(e.stencilMask(n),i=n)},setFunc:function(t,i,a){n===t&&r===i&&s===a||(e.stencilFunc(t,i,a),n=t,r=i,s=a)},setOp:function(t,i,n){a===t&&o===i&&l===n||(e.stencilOp(t,i,n),a=t,o=i,l=n)},setLocked:function(e){t=e},setClear:function(t){c!==t&&(e.clearStencil(t),c=t)},reset:function(){t=!1,i=null,n=null,r=null,s=null,a=null,o=null,l=null,c=null}}},C=new WeakMap,T=new WeakMap;let P={},E={},I=new WeakMap,D=[],R=null,L=!1,k=null,O=null,N=null,F=null,B=null,z=null,U=null,V=new Oi(0,0,0),$=0,G=!1,H=null,j=null,W=null,q=null,X=null;const Y=e.getParameter(35661);let K=!1,Z=0;const Q=e.getParameter(7938);-1!==Q.indexOf("WebGL")?(Z=parseFloat(/^WebGL (\d)/.exec(Q)[1]),K=Z>=1):-1!==Q.indexOf("OpenGL ES")&&(Z=parseFloat(/^OpenGL ES (\d)/.exec(Q)[1]),K=Z>=2);let J=null,ee={};const te=e.getParameter(3088),ie=e.getParameter(2978),ne=(new ht).fromArray(te),re=(new ht).fromArray(ie);function se(t,i,r,s){const a=new Uint8Array(4),o=e.createTexture();e.bindTexture(t,o),e.texParameteri(t,10241,9728),e.texParameteri(t,10240,9728);for(let o=0;on||e.height>n)&&(r=n/Math.max(e.width,e.height)),r<1||!0===t){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){const n=t?Ue:Math.floor,s=n(r*e.width),a=n(r*e.height);void 0===p&&(p=y(s,a));const o=i?y(s,a):p;o.width=s,o.height=a;return o.getContext("2d").drawImage(e,0,0,s,a),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+e.width+"x"+e.height+") to ("+s+"x"+a+")."),o}return"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e}return e}function b(e){return ze(e.width)&&ze(e.height)}function x(e,t){return e.generateMipmaps&&t&&e.minFilter!==U&&e.minFilter!==G}function w(t){e.generateMipmap(t)}function S(i,n,r,s,a=!1){if(!1===o)return n;if(null!==i){if(void 0!==e[i])return e[i];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+i+"'")}let l=n;if(6403===n&&(5126===r&&(l=33326),5131===r&&(l=33325),5121===r&&(l=33321)),36244===n&&(5121===r&&(l=33330),5123===r&&(l=33332),5125===r&&(l=33334),5120===r&&(l=33329),5122===r&&(l=33331),5124===r&&(l=33333)),33319===n&&(5126===r&&(l=33328),5131===r&&(l=33327),5121===r&&(l=33323)),6408===n){const e=a?fe:tt.getTransfer(s);5126===r&&(l=34836),5131===r&&(l=34842),5121===r&&(l=e===me?35907:32856),32819===r&&(l=32854),32820===r&&(l=32855)}return 33325!==l&&33326!==l&&33327!==l&&33328!==l&&34842!==l&&34836!==l||t.get("EXT_color_buffer_float"),l}function M(e,t,i){return!0===x(e,i)||e.isFramebufferTexture&&e.minFilter!==U&&e.minFilter!==G?Math.log2(Math.max(t.width,t.height))+1:void 0!==e.mipmaps&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function A(e){return e===U||1004===e||e===$?9728:9729}function C(e){const t=e.target;t.removeEventListener("dispose",C),function(e){const t=n.get(e);if(void 0===t.__webglInit)return;const i=e.source,r=g.get(i);if(r){const n=r[t.__cacheKey];n.usedTimes--,0===n.usedTimes&&P(e),0===Object.keys(r).length&&g.delete(i)}n.remove(e)}(t),t.isVideoTexture&&m.delete(t)}function T(t){const i=t.target;i.removeEventListener("dispose",T),function(t){const i=t.texture,r=n.get(t),s=n.get(i);void 0!==s.__webglTexture&&(e.deleteTexture(s.__webglTexture),a.memory.textures--);t.depthTexture&&t.depthTexture.dispose();if(t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++){if(Array.isArray(r.__webglFramebuffer[t]))for(let i=0;i0&&r.__version!==e.version){const i=e.image;if(null===i)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==i.complete)return void N(r,e,t);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}i.bindTexture(3553,r.__webglTexture,33984+t)}const D={[F]:10497,[B]:33071,[z]:33648},R={[U]:9728,[V]:9984,[$]:9986,[G]:9729,[H]:9985,[j]:9987},L={[ye]:512,[Ae]:519,[ve]:513,[xe]:515,[be]:514,[Me]:518,[we]:516,[Se]:517};function k(i,s,a){if(a?(e.texParameteri(i,10242,D[s.wrapS]),e.texParameteri(i,10243,D[s.wrapT]),32879!==i&&35866!==i||e.texParameteri(i,32882,D[s.wrapR]),e.texParameteri(i,10240,R[s.magFilter]),e.texParameteri(i,10241,R[s.minFilter])):(e.texParameteri(i,10242,33071),e.texParameteri(i,10243,33071),32879!==i&&35866!==i||e.texParameteri(i,32882,33071),s.wrapS===B&&s.wrapT===B||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),e.texParameteri(i,10240,A(s.magFilter)),e.texParameteri(i,10241,A(s.minFilter)),s.minFilter!==U&&s.minFilter!==G&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),s.compareFunction&&(e.texParameteri(i,34892,34894),e.texParameteri(i,34893,L[s.compareFunction])),!0===t.has("EXT_texture_filter_anisotropic")){const a=t.get("EXT_texture_filter_anisotropic");if(s.magFilter===U)return;if(s.minFilter!==$&&s.minFilter!==j)return;if(s.type===K&&!1===t.has("OES_texture_float_linear"))return;if(!1===o&&s.type===Z&&!1===t.has("OES_texture_half_float_linear"))return;(s.anisotropy>1||n.get(s).__currentAnisotropy)&&(e.texParameterf(i,a.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(s.anisotropy,r.getMaxAnisotropy())),n.get(s).__currentAnisotropy=s.anisotropy)}}function O(t,i){let n=!1;void 0===t.__webglInit&&(t.__webglInit=!0,i.addEventListener("dispose",C));const r=i.source;let s=g.get(r);void 0===s&&(s={},g.set(r,s));const o=function(e){const t=[];return t.push(e.wrapS),t.push(e.wrapT),t.push(e.wrapR||0),t.push(e.magFilter),t.push(e.minFilter),t.push(e.anisotropy),t.push(e.internalFormat),t.push(e.format),t.push(e.type),t.push(e.generateMipmaps),t.push(e.premultiplyAlpha),t.push(e.flipY),t.push(e.unpackAlignment),t.push(e.colorSpace),t.join()}(i);if(o!==t.__cacheKey){void 0===s[o]&&(s[o]={texture:e.createTexture(),usedTimes:0},a.memory.textures++,n=!0),s[o].usedTimes++;const r=s[t.__cacheKey];void 0!==r&&(s[t.__cacheKey].usedTimes--,0===r.usedTimes&&P(i)),t.__cacheKey=o,t.__webglTexture=s[o].texture}return n}function N(t,r,a){let l=3553;(r.isDataArrayTexture||r.isCompressedArrayTexture)&&(l=35866),r.isData3DTexture&&(l=32879);const c=O(t,r),h=r.source;i.bindTexture(l,t.__webglTexture,33984+a);const d=n.get(h);if(h.version!==d.__version||!0===c){i.activeTexture(33984+a);const t=tt.getPrimaries(tt.workingColorSpace),n=r.colorSpace===le?null:tt.getPrimaries(r.colorSpace),f=r.colorSpace===le||t===n?0:37444;e.pixelStorei(37440,r.flipY),e.pixelStorei(37441,r.premultiplyAlpha),e.pixelStorei(3317,r.unpackAlignment),e.pixelStorei(37443,f);const m=function(e){return!o&&(e.wrapS!==B||e.wrapT!==B||e.minFilter!==U&&e.minFilter!==G)}(r)&&!1===b(r.image);let p=v(r.image,m,!1,u);p=ae(r,p);const g=b(p)||o,_=s.convert(r.format,r.colorSpace);let y,A=s.convert(r.type),C=S(r.internalFormat,_,A,r.colorSpace,r.isVideoTexture);k(l,r,g);const T=r.mipmaps,P=o&&!0!==r.isVideoTexture,E=void 0===d.__version||!0===c,I=M(r,p,g);if(r.isDepthTexture)C=6402,o?C=r.type===K?36012:r.type===Y?33190:r.type===Q?35056:33189:r.type===K&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),r.format===ee&&6402===C&&r.type!==q&&r.type!==Y&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),r.type=Y,A=s.convert(r.type)),r.format===te&&6402===C&&(C=34041,r.type!==Q&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),r.type=Q,A=s.convert(r.type))),E&&(P?i.texStorage2D(3553,1,C,p.width,p.height):i.texImage2D(3553,0,C,p.width,p.height,0,_,A,null));else if(r.isDataTexture)if(T.length>0&&g){P&&E&&i.texStorage2D(3553,I,C,T[0].width,T[0].height);for(let e=0,t=T.length;e>=1,t>>=1}}else if(T.length>0&&g){P&&E&&i.texStorage2D(3553,I,C,T[0].width,T[0].height);for(let e=0,t=T.length;e>c),t=Math.max(1,r.height>>c);32879===l||35866===l?i.texImage3D(l,c,f,e,t,r.depth,0,u,h,null):i.texImage2D(l,c,f,e,t,0,u,h,null)}i.bindFramebuffer(36160,t),se(r)?d.framebufferTexture2DMultisampleEXT(36160,o,l,n.get(a).__webglTexture,0,re(r)):(3553===l||l>=34069&&l<=34074)&&e.framebufferTexture2D(36160,o,l,n.get(a).__webglTexture,c),i.bindFramebuffer(36160,null)}function ie(t,i,n){if(e.bindRenderbuffer(36161,t),i.depthBuffer&&!i.stencilBuffer){let r=!0===o?33190:33189;if(n||se(i)){const t=i.depthTexture;t&&t.isDepthTexture&&(t.type===K?r=36012:t.type===Y&&(r=33190));const n=re(i);se(i)?d.renderbufferStorageMultisampleEXT(36161,n,r,i.width,i.height):e.renderbufferStorageMultisample(36161,n,r,i.width,i.height)}else e.renderbufferStorage(36161,r,i.width,i.height);e.framebufferRenderbuffer(36160,36096,36161,t)}else if(i.depthBuffer&&i.stencilBuffer){const r=re(i);n&&!1===se(i)?e.renderbufferStorageMultisample(36161,r,35056,i.width,i.height):se(i)?d.renderbufferStorageMultisampleEXT(36161,r,35056,i.width,i.height):e.renderbufferStorage(36161,34041,i.width,i.height),e.framebufferRenderbuffer(36160,33306,36161,t)}else{const t=!0===i.isWebGLMultipleRenderTargets?i.texture:[i.texture];for(let r=0;r0&&!0===t.has("WEBGL_multisampled_render_to_texture")&&!1!==i.__useRenderToTexture}function ae(e,i){const n=e.colorSpace,r=e.format,s=e.type;return!0===e.isCompressedTexture||!0===e.isVideoTexture||e.format===Ee||n!==ue&&n!==le&&(tt.getTransfer(n)===me?!1===o?!0===t.has("EXT_sRGB")&&r===J?(e.format=Ee,e.minFilter=G,e.generateMipmaps=!1):i=st.sRGBToLinear(i):r===J&&s===W||console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",n)),i}this.allocateTextureUnit=function(){const e=E;return e>=l&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+l),E+=1,e},this.resetTextureUnits=function(){E=0},this.setTexture2D=I,this.setTexture2DArray=function(e,t){const r=n.get(e);e.version>0&&r.__version!==e.version?N(r,e,t):i.bindTexture(35866,r.__webglTexture,33984+t)},this.setTexture3D=function(e,t){const r=n.get(e);e.version>0&&r.__version!==e.version?N(r,e,t):i.bindTexture(32879,r.__webglTexture,33984+t)},this.setTextureCube=function(t,r){const a=n.get(t);t.version>0&&a.__version!==t.version?function(t,r,a){if(6!==r.image.length)return;const l=O(t,r),u=r.source;i.bindTexture(34067,t.__webglTexture,33984+a);const h=n.get(u);if(u.version!==h.__version||!0===l){i.activeTexture(33984+a);const t=tt.getPrimaries(tt.workingColorSpace),n=r.colorSpace===le?null:tt.getPrimaries(r.colorSpace),d=r.colorSpace===le||t===n?0:37444;e.pixelStorei(37440,r.flipY),e.pixelStorei(37441,r.premultiplyAlpha),e.pixelStorei(3317,r.unpackAlignment),e.pixelStorei(37443,d);const f=r.isCompressedTexture||r.image[0].isCompressedTexture,m=r.image[0]&&r.image[0].isDataTexture,p=[];for(let e=0;e<6;e++)p[e]=f||m?m?r.image[e].image:r.image[e]:v(r.image[e],!1,!0,c),p[e]=ae(r,p[e]);const g=p[0],_=b(g)||o,y=s.convert(r.format,r.colorSpace),A=s.convert(r.type),C=S(r.internalFormat,y,A,r.colorSpace),T=o&&!0!==r.isVideoTexture,P=void 0===h.__version||!0===l;let E,I=M(r,g,_);if(k(34067,r,_),f){T&&P&&i.texStorage2D(34067,I,C,g.width,g.height);for(let e=0;e<6;e++){E=p[e].mipmaps;for(let t=0;t0&&I++,i.texStorage2D(34067,I,C,p[0].width,p[0].height));for(let e=0;e<6;e++)if(m){T?i.texSubImage2D(34069+e,0,0,0,p[e].width,p[e].height,y,A,p[e].data):i.texImage2D(34069+e,0,C,p[e].width,p[e].height,0,y,A,p[e].data);for(let t=0;t0){c.__webglFramebuffer[t]=[];for(let i=0;i0){c.__webglFramebuffer=[];for(let t=0;t0&&!1===se(t)){const n=d?l:[l];c.__webglMultisampledFramebuffer=e.createFramebuffer(),c.__webglColorRenderbuffer=[],i.bindFramebuffer(36160,c.__webglMultisampledFramebuffer);for(let i=0;i0)for(let i=0;i0)for(let i=0;i0&&!1===se(t)){const r=t.isWebGLMultipleRenderTargets?t.texture:[t.texture],s=t.width,a=t.height;let o=16384;const l=[],c=t.stencilBuffer?33306:36096,u=n.get(t),h=!0===t.isWebGLMultipleRenderTargets;if(h)for(let t=0;to+c?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&a<=o-c&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else null!==o&&e.gripSpace&&(r=t.getPose(e.gripSpace,i),null!==r&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1));null!==a&&(n=t.getPose(e.targetRaySpace,i),null===n&&null!==r&&(n=r),null!==n&&(a.matrix.fromArray(n.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,n.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(n.linearVelocity)):a.hasLinearVelocity=!1,n.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(n.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(pa)))}return null!==a&&(a.visible=null!==n),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==s),this}_getHandJoint(e,t){if(void 0===e.joints[t.jointName]){const i=new ma;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}}class _a extends ut{constructor(e,t,i,n,r,s,a,o,l,c){if((c=void 0!==c?c:ee)!==ee&&c!==te)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===i&&c===ee&&(i=Y),void 0===i&&c===te&&(i=Q),super(null,n,r,s,a,o,c,i,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=void 0!==a?a:U,this.minFilter=void 0!==o?o:U,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return null!==this.compareFunction&&(t.compareFunction=this.compareFunction),t}}class ya extends Re{constructor(e,t){super();const i=this;let n=null,r=1,s=null,a="local-floor",o=1,l=null,c=null,u=null,h=null,d=null,f=null;const m=t.getContextAttributes();let p=null,g=null;const _=[],y=[],v=new Tn;v.layers.enable(1),v.viewport=new ht;const b=new Tn;b.layers.enable(2),b.viewport=new ht;const x=[v,b],w=new fa;w.layers.enable(1),w.layers.enable(2);let S=null,M=null;function A(e){const t=y.indexOf(e.inputSource);if(-1===t)return;const i=_[t];void 0!==i&&(i.update(e.inputSource,e.frame,l||s),i.dispatchEvent({type:e.type,data:e.inputSource}))}function C(){n.removeEventListener("select",A),n.removeEventListener("selectstart",A),n.removeEventListener("selectend",A),n.removeEventListener("squeeze",A),n.removeEventListener("squeezestart",A),n.removeEventListener("squeezeend",A),n.removeEventListener("end",C),n.removeEventListener("inputsourceschange",T);for(let e=0;e<_.length;e++){const t=y[e];null!==t&&(y[e]=null,_[e].disconnect(t))}S=null,M=null,e.setRenderTarget(p),d=null,h=null,u=null,n=null,g=null,R.stop(),i.isPresenting=!1,i.dispatchEvent({type:"sessionend"})}function T(e){for(let t=0;t=0&&(y[n]=null,_[n].disconnect(i))}for(let t=0;t=y.length){y.push(i),n=e;break}if(null===y[e]){y[e]=i,n=e;break}}if(-1===n)break}const r=_[n];r&&r.connect(i)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let t=_[e];return void 0===t&&(t=new ga,_[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=_[e];return void 0===t&&(t=new ga,_[e]=t),t.getGripSpace()},this.getHand=function(e){let t=_[e];return void 0===t&&(t=new ga,_[e]=t),t.getHandSpace()},this.setFramebufferScaleFactor=function(e){r=e,!0===i.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){a=e,!0===i.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||s},this.setReferenceSpace=function(e){l=e},this.getBaseLayer=function(){return null!==h?h:d},this.getBinding=function(){return u},this.getFrame=function(){return f},this.getSession=function(){return n},this.setSession=async function(c){if(n=c,null!==n){if(p=e.getRenderTarget(),n.addEventListener("select",A),n.addEventListener("selectstart",A),n.addEventListener("selectend",A),n.addEventListener("squeeze",A),n.addEventListener("squeezestart",A),n.addEventListener("squeezeend",A),n.addEventListener("end",C),n.addEventListener("inputsourceschange",T),!0!==m.xrCompatible&&await t.makeXRCompatible(),void 0===n.renderState.layers||!1===e.capabilities.isWebGL2){const i={antialias:void 0!==n.renderState.layers||m.antialias,alpha:!0,depth:m.depth,stencil:m.stencil,framebufferScaleFactor:r};d=new XRWebGLLayer(n,t,i),n.updateRenderState({baseLayer:d}),g=new ft(d.framebufferWidth,d.framebufferHeight,{format:J,type:W,colorSpace:e.outputColorSpace,stencilBuffer:m.stencil})}else{let i=null,s=null,a=null;m.depth&&(a=m.stencil?35056:33190,i=m.stencil?te:ee,s=m.stencil?Q:Y);const o={colorFormat:32856,depthFormat:a,scaleFactor:r};u=new XRWebGLBinding(n,t),h=u.createProjectionLayer(o),n.updateRenderState({layers:[h]}),g=new ft(h.textureWidth,h.textureHeight,{format:J,type:W,depthTexture:new _a(h.textureWidth,h.textureHeight,s,void 0,void 0,void 0,void 0,void 0,void 0,i),stencilBuffer:m.stencil,colorSpace:e.outputColorSpace,samples:m.antialias?4:0});e.properties.get(g).__ignoreDepthValues=h.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(o),l=null,s=await n.requestReferenceSpace(a),R.setContext(n),R.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(null!==n)return n.environmentBlendMode};const P=new _t,E=new _t;function I(e,t){null===t?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){if(null===n)return;w.near=b.near=v.near=e.near,w.far=b.far=v.far=e.far,S===w.near&&M===w.far||(n.updateRenderState({depthNear:w.near,depthFar:w.far}),S=w.near,M=w.far);const t=e.parent,i=w.cameras;I(w,t);for(let e=0;e0&&(n.alphaTest.value=r.alphaTest);const a=t.get(r).envMap;if(a&&(n.envMap.value=a,n.flipEnvMap.value=a.isCubeTexture&&!1===a.isRenderTargetTexture?-1:1,n.reflectivity.value=r.reflectivity,n.ior.value=r.ior,n.refractionRatio.value=r.refractionRatio),r.lightMap){n.lightMap.value=r.lightMap;const t=!0===e._useLegacyLights?Math.PI:1;n.lightMapIntensity.value=r.lightMapIntensity*t,i(r.lightMap,n.lightMapTransform)}r.aoMap&&(n.aoMap.value=r.aoMap,n.aoMapIntensity.value=r.aoMapIntensity,i(r.aoMap,n.aoMapTransform))}return{refreshFogUniforms:function(t,i){i.color.getRGB(t.fogColor.value,Sn(e)),i.isFog?(t.fogNear.value=i.near,t.fogFar.value=i.far):i.isFogExp2&&(t.fogDensity.value=i.density)},refreshMaterialUniforms:function(e,r,a,o,l){r.isMeshBasicMaterial||r.isMeshLambertMaterial?n(e,r):r.isMeshToonMaterial?(n(e,r),function(e,t){t.gradientMap&&(e.gradientMap.value=t.gradientMap)}(e,r)):r.isMeshPhongMaterial?(n(e,r),function(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4)}(e,r)):r.isMeshStandardMaterial?(n(e,r),function(e,n){e.metalness.value=n.metalness,n.metalnessMap&&(e.metalnessMap.value=n.metalnessMap,i(n.metalnessMap,e.metalnessMapTransform));e.roughness.value=n.roughness,n.roughnessMap&&(e.roughnessMap.value=n.roughnessMap,i(n.roughnessMap,e.roughnessMapTransform));const r=t.get(n).envMap;r&&(e.envMapIntensity.value=n.envMapIntensity)}(e,r),r.isMeshPhysicalMaterial&&function(e,t,n){e.ior.value=t.ior,t.sheen>0&&(e.sheenColor.value.copy(t.sheenColor).multiplyScalar(t.sheen),e.sheenRoughness.value=t.sheenRoughness,t.sheenColorMap&&(e.sheenColorMap.value=t.sheenColorMap,i(t.sheenColorMap,e.sheenColorMapTransform)),t.sheenRoughnessMap&&(e.sheenRoughnessMap.value=t.sheenRoughnessMap,i(t.sheenRoughnessMap,e.sheenRoughnessMapTransform)));t.clearcoat>0&&(e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.clearcoatMap&&(e.clearcoatMap.value=t.clearcoatMap,i(t.clearcoatMap,e.clearcoatMapTransform)),t.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=t.clearcoatRoughnessMap,i(t.clearcoatRoughnessMap,e.clearcoatRoughnessMapTransform)),t.clearcoatNormalMap&&(e.clearcoatNormalMap.value=t.clearcoatNormalMap,i(t.clearcoatNormalMap,e.clearcoatNormalMapTransform),e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),t.side===s&&e.clearcoatNormalScale.value.negate()));t.iridescence>0&&(e.iridescence.value=t.iridescence,e.iridescenceIOR.value=t.iridescenceIOR,e.iridescenceThicknessMinimum.value=t.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=t.iridescenceThicknessRange[1],t.iridescenceMap&&(e.iridescenceMap.value=t.iridescenceMap,i(t.iridescenceMap,e.iridescenceMapTransform)),t.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=t.iridescenceThicknessMap,i(t.iridescenceThicknessMap,e.iridescenceThicknessMapTransform)));t.transmission>0&&(e.transmission.value=t.transmission,e.transmissionSamplerMap.value=n.texture,e.transmissionSamplerSize.value.set(n.width,n.height),t.transmissionMap&&(e.transmissionMap.value=t.transmissionMap,i(t.transmissionMap,e.transmissionMapTransform)),e.thickness.value=t.thickness,t.thicknessMap&&(e.thicknessMap.value=t.thicknessMap,i(t.thicknessMap,e.thicknessMapTransform)),e.attenuationDistance.value=t.attenuationDistance,e.attenuationColor.value.copy(t.attenuationColor));t.anisotropy>0&&(e.anisotropyVector.value.set(t.anisotropy*Math.cos(t.anisotropyRotation),t.anisotropy*Math.sin(t.anisotropyRotation)),t.anisotropyMap&&(e.anisotropyMap.value=t.anisotropyMap,i(t.anisotropyMap,e.anisotropyMapTransform)));e.specularIntensity.value=t.specularIntensity,e.specularColor.value.copy(t.specularColor),t.specularColorMap&&(e.specularColorMap.value=t.specularColorMap,i(t.specularColorMap,e.specularColorMapTransform));t.specularIntensityMap&&(e.specularIntensityMap.value=t.specularIntensityMap,i(t.specularIntensityMap,e.specularIntensityMapTransform))}(e,r,l)):r.isMeshMatcapMaterial?(n(e,r),function(e,t){t.matcap&&(e.matcap.value=t.matcap)}(e,r)):r.isMeshDepthMaterial?n(e,r):r.isMeshDistanceMaterial?(n(e,r),function(e,i){const n=t.get(i).light;e.referencePosition.value.setFromMatrixPosition(n.matrixWorld),e.nearDistance.value=n.shadow.camera.near,e.farDistance.value=n.shadow.camera.far}(e,r)):r.isMeshNormalMaterial?n(e,r):r.isLineBasicMaterial?(function(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,t.map&&(e.map.value=t.map,i(t.map,e.mapTransform))}(e,r),r.isLineDashedMaterial&&function(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}(e,r)):r.isPointsMaterial?function(e,t,n,r){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*n,e.scale.value=.5*r,t.map&&(e.map.value=t.map,i(t.map,e.uvTransform));t.alphaMap&&(e.alphaMap.value=t.alphaMap,i(t.alphaMap,e.alphaMapTransform));t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}(e,r,a,o):r.isSpriteMaterial?function(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map,i(t.map,e.mapTransform));t.alphaMap&&(e.alphaMap.value=t.alphaMap,i(t.alphaMap,e.alphaMapTransform));t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}(e,r):r.isShadowMaterial?(e.color.value.copy(r.color),e.opacity.value=r.opacity):r.isShaderMaterial&&(r.uniformsNeedUpdate=!1)}}}function ba(e,t,i,n){let r={},s={},a=[];const o=i.isWebGL2?e.getParameter(35375):0;function l(e,t,i){const n=e.value;if(void 0===i[t]){if("number"==typeof n)i[t]=n;else{const e=Array.isArray(n)?n:[n],r=[];for(let t=0;t0){r=i%n;0!==r&&n-r-a.boundary<0&&(i+=n-r,s.__offset=i)}i+=a.storage}r=i%n,r>0&&(i+=n-r);e.__size=i,e.__cache={}}(i),d=function(t){const i=function(){for(let e=0;e0),h=!!i.morphAttributes.position,d=!!i.morphAttributes.normal,f=!!i.morphAttributes.color;let m=P;n.toneMapped&&(null!==M&&!0!==M.isXRRenderTarget||(m=b.toneMapping));const p=i.morphAttributes.position||i.morphAttributes.normal||i.morphAttributes.color,g=void 0!==p?p.length:0,y=le.get(n),v=_.state.lights;if(!0===$&&(!0===G||e!==C)){const t=e===C&&n.id===A;xe.setState(n,e,t)}let x=!1;n.version===y.__version?y.needsLights&&y.lightsStateVersion!==v.state.version||y.outputColorSpace!==o||r.isInstancedMesh&&!1===y.instancing?x=!0:r.isInstancedMesh||!0!==y.instancing?r.isSkinnedMesh&&!1===y.skinning?x=!0:r.isSkinnedMesh||!0!==y.skinning?r.isInstancedMesh&&!0===y.instancingColor&&null===r.instanceColor||r.isInstancedMesh&&!1===y.instancingColor&&null!==r.instanceColor||y.envMap!==l||!0===n.fog&&y.fog!==s?x=!0:void 0===y.numClippingPlanes||y.numClippingPlanes===xe.numPlanes&&y.numIntersection===xe.numIntersection?(y.vertexAlphas!==c||y.vertexTangents!==u||y.morphTargets!==h||y.morphNormals!==d||y.morphColors!==f||y.toneMapping!==m||!0===se.isWebGL2&&y.morphTargetsCount!==g)&&(x=!0):x=!0:x=!0:x=!0:(x=!0,y.__version=n.version);let w=y.currentProgram;!0===x&&(w=Ke(n,t,r));let S=!1,T=!1,E=!1;const I=w.getUniforms(),D=y.uniforms;ae.useProgram(w.program)&&(S=!0,T=!0,E=!0);n.id!==A&&(A=n.id,T=!0);if(S||C!==e){I.setValue(Ie,"projectionMatrix",e.projectionMatrix),I.setValue(Ie,"viewMatrix",e.matrixWorldInverse);const t=I.map.cameraPosition;void 0!==t&&t.setValue(Ie,te.setFromMatrixPosition(e.matrixWorld)),se.logarithmicDepthBuffer&&I.setValue(Ie,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),(n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial)&&I.setValue(Ie,"isOrthographic",!0===e.isOrthographicCamera),C!==e&&(C=e,T=!0,E=!0)}if(r.isSkinnedMesh){I.setOptional(Ie,r,"bindMatrix"),I.setOptional(Ie,r,"bindMatrixInverse");const e=r.skeleton;e&&(se.floatVertexTextures?(null===e.boneTexture&&e.computeBoneTexture(),I.setValue(Ie,"boneTexture",e.boneTexture,he),I.setValue(Ie,"boneTextureSize",e.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}const R=i.morphAttributes;(void 0!==R.position||void 0!==R.normal||void 0!==R.color&&!0===se.isWebGL2)&&Me.update(r,i,w);(T||y.receiveShadow!==r.receiveShadow)&&(y.receiveShadow=r.receiveShadow,I.setValue(Ie,"receiveShadow",r.receiveShadow));n.isMeshGouraudMaterial&&null!==n.envMap&&(D.envMap.value=l,D.flipEnvMap.value=l.isCubeTexture&&!1===l.isRenderTargetTexture?-1:1);T&&(I.setValue(Ie,"toneMappingExposure",b.toneMappingExposure),y.needsLights&&(N=E,(L=D).ambientLightColor.needsUpdate=N,L.lightProbe.needsUpdate=N,L.directionalLights.needsUpdate=N,L.directionalLightShadows.needsUpdate=N,L.pointLights.needsUpdate=N,L.pointLightShadows.needsUpdate=N,L.spotLights.needsUpdate=N,L.spotLightShadows.needsUpdate=N,L.rectAreaLights.needsUpdate=N,L.hemisphereLights.needsUpdate=N),s&&!0===n.fog&&ye.refreshFogUniforms(D,s),ye.refreshMaterialUniforms(D,n,O,k,H),Ts.upload(Ie,Ze(y),D,he));var L,N;n.isShaderMaterial&&!0===n.uniformsNeedUpdate&&(Ts.upload(Ie,Ze(y),D,he),n.uniformsNeedUpdate=!1);n.isSpriteMaterial&&I.setValue(Ie,"center",r.center);if(I.setValue(Ie,"modelViewMatrix",r.modelViewMatrix),I.setValue(Ie,"normalMatrix",r.normalMatrix),I.setValue(Ie,"modelMatrix",r.matrixWorld),n.isShaderMaterial||n.isRawShaderMaterial){const e=n.uniformsGroups;for(let t=0,i=e.length;t{function i(){n.forEach((function(e){le.get(e).currentProgram.isReady()&&n.delete(e)})),0!==n.size?setTimeout(i,10):t(e)}null!==re.get("KHR_parallel_shader_compile")?i():setTimeout(i,10)}))};let ze=null;function Ve(){He.stop()}function $e(){He.start()}const He=new zn;function je(e,t,i,n){if(!1===e.visible)return;if(e.layers.test(t.layers))if(e.isGroup)i=e.renderOrder;else if(e.isLOD)!0===e.autoUpdate&&e.update(t);else if(e.isLight)_.pushLight(e),e.castShadow&&_.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||V.intersectsSprite(e)){n&&te.setFromMatrixPosition(e.matrixWorld).applyMatrix4(X);const t=ge.update(e),r=e.material;r.visible&&g.push(e,t,r,i,te.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||V.intersectsObject(e))){const t=ge.update(e),r=e.material;if(n&&(void 0!==e.boundingSphere?(null===e.boundingSphere&&e.computeBoundingSphere(),te.copy(e.boundingSphere.center)):(null===t.boundingSphere&&t.computeBoundingSphere(),te.copy(t.boundingSphere.center)),te.applyMatrix4(e.matrixWorld).applyMatrix4(X)),Array.isArray(r)){const n=t.groups;for(let s=0,a=n.length;s0&&function(e,t,i,n){const r=!0===i.isScene?i.overrideMaterial:null;if(null!==r)return;const a=se.isWebGL2;null===H&&(H=new ft(1,1,{generateMipmaps:!0,type:re.has("EXT_color_buffer_half_float")?Z:W,minFilter:j,samples:a?4:0}));b.getDrawingBufferSize(ee),a?H.setSize(ee.x,ee.y):H.setSize(Ue(ee.x),Ue(ee.y));const o=b.getRenderTarget();b.setRenderTarget(H),b.getClearColor(D),R=b.getClearAlpha(),R<1&&b.setClearColor(16777215,.5);b.clear();const l=b.toneMapping;b.toneMapping=P,qe(e,i,n),he.updateMultisampleRenderTarget(H),he.updateRenderTargetMipmap(H);let c=!1;for(let e=0,r=t.length;e0&&qe(r,t,i),a.length>0&&qe(a,t,i),o.length>0&&qe(o,t,i),ae.buffers.depth.setTest(!0),ae.buffers.depth.setMask(!0),ae.buffers.color.setMask(!0),ae.setPolygonOffset(!1)}function qe(e,t,i){const n=!0===t.isScene?t.overrideMaterial:null;for(let r=0,s=e.length;r0?v[v.length-1]:null,y.pop(),g=y.length>0?y[y.length-1]:null},this.getActiveCubeFace=function(){return w},this.getActiveMipmapLevel=function(){return S},this.getRenderTarget=function(){return M},this.setRenderTargetTextures=function(e,t,i){le.get(e.texture).__webglTexture=t,le.get(e.depthTexture).__webglTexture=i;const n=le.get(e);n.__hasExternalTextures=!0,n.__hasExternalTextures&&(n.__autoAllocateDepthBuffer=void 0===i,n.__autoAllocateDepthBuffer||!0===re.has("WEBGL_multisampled_render_to_texture")&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),n.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(e,t){const i=le.get(e);i.__webglFramebuffer=t,i.__useDefaultFramebuffer=void 0===t},this.setRenderTarget=function(e,t=0,i=0){M=e,w=t,S=i;let n=!0,r=null,s=!1,a=!1;if(e){const o=le.get(e);void 0!==o.__useDefaultFramebuffer?(ae.bindFramebuffer(36160,null),n=!1):void 0===o.__webglFramebuffer?he.setupRenderTarget(e):o.__hasExternalTextures&&he.rebindTextures(e,le.get(e.texture).__webglTexture,le.get(e.depthTexture).__webglTexture);const l=e.texture;(l.isData3DTexture||l.isDataArrayTexture||l.isCompressedArrayTexture)&&(a=!0);const c=le.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(r=Array.isArray(c[t])?c[t][i]:c[t],s=!0):r=se.isWebGL2&&e.samples>0&&!1===he.useMultisampledRTT(e)?le.get(e).__webglMultisampledFramebuffer:Array.isArray(c)?c[i]:c,T.copy(e.viewport),E.copy(e.scissor),I=e.scissorTest}else T.copy(B).multiplyScalar(O).floor(),E.copy(z).multiplyScalar(O).floor(),I=U;if(ae.bindFramebuffer(36160,r)&&se.drawBuffers&&n&&ae.drawBuffers(e,r),ae.viewport(T),ae.scissor(E),ae.setScissorTest(I),s){const n=le.get(e.texture);Ie.framebufferTexture2D(36160,36064,34069+t,n.__webglTexture,i)}else if(a){const n=le.get(e.texture),r=t||0;Ie.framebufferTextureLayer(36160,36064,n.__webglTexture,i||0,r)}A=-1},this.readRenderTargetPixels=function(e,t,i,n,r,s,a){if(!e||!e.isWebGLRenderTarget)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let o=le.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==a&&(o=o[a]),o){ae.bindFramebuffer(36160,o);try{const a=e.texture,o=a.format,l=a.type;if(o!==J&&Te.convert(o)!==Ie.getParameter(35739))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");const c=l===Z&&(re.has("EXT_color_buffer_half_float")||se.isWebGL2&&re.has("EXT_color_buffer_float"));if(!(l===W||Te.convert(l)===Ie.getParameter(35738)||l===K&&(se.isWebGL2||re.has("OES_texture_float")||re.has("WEBGL_color_buffer_float"))||c))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");t>=0&&t<=e.width-n&&i>=0&&i<=e.height-r&&Ie.readPixels(t,i,n,r,Te.convert(o),Te.convert(l),s)}finally{const e=null!==M?le.get(M).__webglFramebuffer:null;ae.bindFramebuffer(36160,e)}}},this.copyFramebufferToTexture=function(e,t,i=0){const n=Math.pow(2,-i),r=Math.floor(t.image.width*n),s=Math.floor(t.image.height*n);he.setTexture2D(t,0),Ie.copyTexSubImage2D(3553,i,0,0,e.x,e.y,r,s),ae.unbindTexture()},this.copyTextureToTexture=function(e,t,i,n=0){const r=t.image.width,s=t.image.height,a=Te.convert(i.format),o=Te.convert(i.type);he.setTexture2D(i,0),Ie.pixelStorei(37440,i.flipY),Ie.pixelStorei(37441,i.premultiplyAlpha),Ie.pixelStorei(3317,i.unpackAlignment),t.isDataTexture?Ie.texSubImage2D(3553,n,e.x,e.y,r,s,a,o,t.image.data):t.isCompressedTexture?Ie.compressedTexSubImage2D(3553,n,e.x,e.y,t.mipmaps[0].width,t.mipmaps[0].height,a,t.mipmaps[0].data):Ie.texSubImage2D(3553,n,e.x,e.y,a,o,t.image),0===n&&i.generateMipmaps&&Ie.generateMipmap(3553),ae.unbindTexture()},this.copyTextureToTexture3D=function(e,t,i,n,r=0){if(b.isWebGL1Renderer)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");const s=e.max.x-e.min.x+1,a=e.max.y-e.min.y+1,o=e.max.z-e.min.z+1,l=Te.convert(n.format),c=Te.convert(n.type);let u;if(n.isData3DTexture)he.setTexture3D(n,0),u=32879;else{if(!n.isDataArrayTexture)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");he.setTexture2DArray(n,0),u=35866}Ie.pixelStorei(37440,n.flipY),Ie.pixelStorei(37441,n.premultiplyAlpha),Ie.pixelStorei(3317,n.unpackAlignment);const h=Ie.getParameter(3314),d=Ie.getParameter(32878),f=Ie.getParameter(3316),m=Ie.getParameter(3315),p=Ie.getParameter(32877),g=i.isCompressedTexture?i.mipmaps[0]:i.image;Ie.pixelStorei(3314,g.width),Ie.pixelStorei(32878,g.height),Ie.pixelStorei(3316,e.min.x),Ie.pixelStorei(3315,e.min.y),Ie.pixelStorei(32877,e.min.z),i.isDataTexture||i.isData3DTexture?Ie.texSubImage3D(u,r,t.x,t.y,t.z,s,a,o,l,c,g.data):i.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),Ie.compressedTexSubImage3D(u,r,t.x,t.y,t.z,s,a,o,l,g.data)):Ie.texSubImage3D(u,r,t.x,t.y,t.z,s,a,o,l,c,g),Ie.pixelStorei(3314,h),Ie.pixelStorei(32878,d),Ie.pixelStorei(3316,f),Ie.pixelStorei(3315,m),Ie.pixelStorei(32877,p),0===r&&n.generateMipmaps&&Ie.generateMipmap(u),ae.unbindTexture()},this.initTexture=function(e){e.isCubeTexture?he.setTextureCube(e,0):e.isData3DTexture?he.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?he.setTexture2DArray(e,0):he.setTexture2D(e,0),ae.unbindTexture()},this.resetState=function(){w=0,S=0,M=null,ae.reset(),Pe.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return Ie}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=e===he?"display-p3":"srgb",t.unpackColorSpace=tt.workingColorSpace===de?"display-p3":"srgb"}get physicallyCorrectLights(){return console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),!this.useLegacyLights}set physicallyCorrectLights(e){console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),this.useLegacyLights=!e}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===ce?oe:3e3}set outputEncoding(e){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=e===oe?ce:ue}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(e){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=e}}class wa{constructor(e,t=1,i=1e3){this.isFog=!0,this.name="",this.color=new Oi(e),this.near=t,this.far=i}clone(){return new wa(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Sa extends yi{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return null!==this.fog&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(t.object.backgroundIntensity=this.backgroundIntensity),t}}class Ma extends ut{constructor(e=null,t=1,i=1,n,r,s,a,o,l=1003,c=1003,u,h){super(null,s,a,o,l,c,n,r,u,h),this.isDataTexture=!0,this.image={data:e,width:t,height:i},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class Aa extends Bi{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Oi(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}}const Ca=new _t,Ta=new _t,Pa=new qt,Ea=new Wt,Ia=new Bt;class Da extends yi{constructor(e=new Ji,t=new Aa){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){const e=this.geometry;if(null===e.index){const t=e.attributes.position,i=[0];for(let e=1,n=t.count;eo)continue;h.applyMatrix4(this.matrixWorld);const s=e.ray.origin.distanceTo(h);se.far||t.push({distance:s,point:u.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}else{for(let i=Math.max(0,s.start),n=Math.min(m.count,s.start+s.count)-1;io)continue;h.applyMatrix4(this.matrixWorld);const n=e.ray.origin.distanceTo(h);ne.far||t.push({distance:n,point:u.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;e0){const i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;er.far)return;s.push({distance:l,distanceToRay:Math.sqrt(o),point:i,index:t,face:null,object:a})}}class $a extends ut{constructor(e,t,i,n,r,s,a,o,l){super(e,t,i,n,r,s,a,o,l),this.isCanvasTexture=!0,this.needsUpdate=!0}}class Ga extends Ji{constructor(e=1,t=1,i=1,n=32,r=1,s=!1,a=0,o=2*Math.PI){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:i,radialSegments:n,heightSegments:r,openEnded:s,thetaStart:a,thetaLength:o};const l=this;n=Math.floor(n),r=Math.floor(r);const c=[],u=[],h=[],d=[];let f=0;const m=[],p=i/2;let g=0;function _(i){const r=f,s=new Ge,m=new _t;let _=0;const y=!0===i?e:t,v=!0===i?1:-1;for(let e=1;e<=n;e++)u.push(0,p*v,0),h.push(0,v,0),d.push(.5,.5),f++;const b=f;for(let e=0;e<=n;e++){const t=e/n*o+a,i=Math.cos(t),r=Math.sin(t);m.x=y*r,m.y=p*v,m.z=y*i,u.push(m.x,m.y,m.z),h.push(0,v,0),s.x=.5*i+.5,s.y=.5*r*v+.5,d.push(s.x,s.y),f++}for(let e=0;e0&&_(!0),t>0&&_(!1)),this.setIndex(c),this.setAttribute("position",new ji(u,3)),this.setAttribute("normal",new ji(h,3)),this.setAttribute("uv",new ji(d,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Ga(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class Ha extends Ga{constructor(e=1,t=1,i=32,n=1,r=!1,s=0,a=2*Math.PI){super(0,e,t,i,n,r,s,a),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:i,heightSegments:n,openEnded:r,thetaStart:s,thetaLength:a}}static fromJSON(e){return new Ha(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class ja extends Ji{constructor(e=[],t=[],i=1,n=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:i,detail:n};const r=[],s=[];function a(e,t,i,n){const r=n+1,s=[];for(let n=0;n<=r;n++){s[n]=[];const a=e.clone().lerp(i,n/r),o=t.clone().lerp(i,n/r),l=r-n;for(let e=0;e<=l;e++)s[n][e]=0===e&&n===r?a:a.clone().lerp(o,e/l)}for(let e=0;e.9&&a<.1&&(t<.2&&(s[e+0]+=1),i<.2&&(s[e+2]+=1),n<.2&&(s[e+4]+=1))}}()}(),this.setAttribute("position",new ji(r,3)),this.setAttribute("normal",new ji(r.slice(),3)),this.setAttribute("uv",new ji(s,2)),0===n?this.computeVertexNormals():this.normalizeNormals()}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new ja(e.vertices,e.indices,e.radius,e.details)}}class Wa extends ja{constructor(e=1,t=0){const i=(1+Math.sqrt(5))/2;super([-1,i,0,1,i,0,-1,-i,0,1,-i,0,0,-1,i,0,1,i,0,-1,-i,0,1,-i,i,0,-1,i,0,1,-i,0,-1,-i,0,1],[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],e,t),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new Wa(e.radius,e.detail)}}class qa extends ja{constructor(e=1,t=0){super([1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type="OctahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new qa(e.radius,e.detail)}}class Xa extends ja{constructor(e=1,t=0){super([1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],e,t),this.type="TetrahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new Xa(e.radius,e.detail)}}class Ya extends Ji{constructor(e=1,t=.4,i=12,n=48,r=2*Math.PI){super(),this.type="TorusGeometry",this.parameters={radius:e,tube:t,radialSegments:i,tubularSegments:n,arc:r},i=Math.floor(i),n=Math.floor(n);const s=[],a=[],o=[],l=[],c=new _t,u=new _t,h=new _t;for(let s=0;s<=i;s++)for(let d=0;d<=n;d++){const f=d/n*r,m=s/i*Math.PI*2;u.x=(e+t*Math.cos(m))*Math.cos(f),u.y=(e+t*Math.cos(m))*Math.sin(f),u.z=t*Math.sin(m),a.push(u.x,u.y,u.z),c.x=e*Math.cos(f),c.y=e*Math.sin(f),h.subVectors(u,c).normalize(),o.push(h.x,h.y,h.z),l.push(d/n),l.push(s/i)}for(let e=1;e<=i;e++)for(let t=1;t<=n;t++){const i=(n+1)*e+t-1,r=(n+1)*(e-1)+t-1,a=(n+1)*(e-1)+t,o=(n+1)*e+t;s.push(i,r,o),s.push(r,a,o)}this.setIndex(s),this.setAttribute("position",new ji(a,3)),this.setAttribute("normal",new ji(o,3)),this.setAttribute("uv",new ji(l,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Ya(e.radius,e.tube,e.radialSegments,e.tubularSegments,e.arc)}}class Ka extends yi{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new Oi(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,void 0!==this.groundColor&&(t.object.groundColor=this.groundColor.getHex()),void 0!==this.distance&&(t.object.distance=this.distance),void 0!==this.angle&&(t.object.angle=this.angle),void 0!==this.decay&&(t.object.decay=this.decay),void 0!==this.penumbra&&(t.object.penumbra=this.penumbra),void 0!==this.shadow&&(t.object.shadow=this.shadow.toJSON()),t}}const Za=new qt,Qa=new _t,Ja=new _t;class eo{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new Ge(512,512),this.map=null,this.mapPass=null,this.matrix=new qt,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new Bn,this._frameExtents=new Ge(1,1),this._viewportCount=1,this._viewports=[new ht(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){const t=this.camera,i=this.matrix;Qa.setFromMatrixPosition(e.matrixWorld),t.position.copy(Qa),Ja.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(Ja),t.updateMatrixWorld(),Za.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Za),i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(Za)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return(new this.constructor).copy(this)}toJSON(){const e={};return 0!==this.bias&&(e.bias=this.bias),0!==this.normalBias&&(e.normalBias=this.normalBias),1!==this.radius&&(e.radius=this.radius),512===this.mapSize.x&&512===this.mapSize.y||(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}class to extends eo{constructor(){super(new Qn(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class io extends Ka{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(yi.DEFAULT_UP),this.updateMatrix(),this.target=new yi,this.shadow=new to}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}class no extends Ka{constructor(e,t){super(e,t),this.isAmbientLight=!0,this.type="AmbientLight"}}const ro=new qt,so=new qt,ao=new qt;class oo{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new Tn,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new Tn,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,ao.copy(e.projectionMatrix);const i=t.eyeSep/2,n=i*t.near/t.focus,r=t.near*Math.tan(ke*t.fov*.5)/t.zoom;let s,a;so.elements[12]=-i,ro.elements[12]=i,s=-r*t.aspect+n,a=r*t.aspect+n,ao.elements[0]=2*t.near/(a-s),ao.elements[8]=(a+s)/(a-s),this.cameraL.projectionMatrix.copy(ao),s=-r*t.aspect-n,a=r*t.aspect-n,ao.elements[0]=2*t.near/(a-s),ao.elements[8]=(a+s)/(a-s),this.cameraR.projectionMatrix.copy(ao)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(so),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(ro)}}class lo{constructor(e){this.value=e}clone(){return new lo(void 0===this.value.clone?this.value:this.value.clone())}}function co(e){if("undefined"==typeof window)return;const t=new RegExp(`${e}=([^&#=]*)`).exec(window.location.search);return t?decodeURIComponent(t[1]):void 0}function uo(e,t){return void 0!==e?e:t}function ho(e,t){const i=Object.assign({},e);for(const n in t){void 0===e[n]&&(i[n]=t[n])}return i}function fo(e,t){for(const i in t){const n=t[i];void 0!==n&&(e[i]=n)}return e}function mo(){if("undefined"==typeof window)return!1;const e=window.navigator.userAgent;return/Opera|OPR/.test(e)?"Opera":/Chrome/i.test(e)?"Chrome":/Firefox/i.test(e)?"Firefox":/Mobile(\/.*)? Safari/i.test(e)?"Mobile Safari":/MSIE/i.test(e)?"Internet Explorer":!!/Safari/i.test(e)&&"Safari"}function po(e){window.open(e,"_blank")||(window.location.href=e)}function go(e,t="download"){if(!e)return;const i="Safari"===mo(),n=/CriOS\/[\d]+/.test(window.navigator.userAgent),r=document.createElement("a");function s(e){po(n?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"))}if("undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(e,t);else if((i||n)&&FileReader)if(e instanceof Blob){var a=new FileReader;a.onloadend=function(){s(a.result)},a.readAsDataURL(e)}else s(e);else{let i=!1;e instanceof Blob&&(e=URL.createObjectURL(e),i=!0),"download"in r?(r.style.display="hidden",document.body.appendChild(r),r.href=e,r.download=t,r.target="_blank",r.click(),document.body.removeChild(r)):po(e),i&&window.URL.revokeObjectURL(e)}}function _o(e,t){return et?1:0}function yo(e,t,i=_o){let n=0,r=e.length-1;for(;n<=r;){const s=n+r>>1,a=i(t,e[s]);if(a>0)n=s+1;else{if(!(a<0))return s;r=s-1}}return-n-1}function vo(e,t,i){const n=function(e,t){let i=e.length-1;if(e[i]>1;e[r]>=t?i=r-1:n=r+1}return i+1}(e,t),r=function(e,t){if(e[0]>t)return-1;let i=0,n=e.length-1;for(;i<=n;){const r=i+n>>1;e[r]>t?n=r-1:i=r+1}return i-1}(e,i);return-1===n||-1===r||n>r?0:r-n+1}function bo(e){return e.sort().filter((function(e,t,i){return 0===t||e!==i[t-1]}))}function xo(e){const t=28672;if(e.length>t){const i=[];for(let n=0;n65535?Uint32Array:Uint16Array)(e)}function Mo(e){return e.buffer&&e.buffer instanceof ArrayBuffer?e.buffer:e}function Ao(e,t){return void 0===e?e=new t:Array.isArray(e)&&(e=(new t).fromArray(e)),e}function Co(e){return Ao(e,_t)}function To(e){return Ao(e,qt)}function Po(e){return Ao(e,gt)}function Eo(e){return t=e,i=Float32Array,t instanceof i?t:new i(t);var t,i}function Io(e){return uo(e,"").toString().toLowerCase()}class Do{constructor(e){this.name=e,this._dict={}}add(e,t){this._dict[Io(e)]=t}get(e){return this._dict[Io(e)]}get names(){return Object.keys(this._dict)}}function Ro(e){return.01745*e}const Lo="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),ko=new Array(36);function Oo(){let e,t=0;for(let i=0;i<36;i++)8===i||13===i||18===i||23===i?ko[i]="-":14===i?ko[i]="4":(t<=2&&(t=33554432+16777216*Math.random()|0),e=15&t,t>>=4,ko[i]=Lo[19===i?3&e|8:e]);return ko.join("")}function No(e,t,i){return Math.max(t,Math.min(i,e))}function Fo(e,t,i){return e+(t-e)*i}function Bo(e,t,i,n,r,s){const a=(i-e)*s,o=(n-t)*s,l=r*r;return(2*t-2*i+a+o)*(r*l)+(-3*t+3*i-2*a-o)*l+a*r+t}function zo(e,t,i){var n;return n=function(e,t,i){return(e-t)/(i-t)}(i,e,t),(i=No(n,0,1))*i*(3-2*i)}var Uo="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Vo(e){var t={exports:{}};return e(t,t.exports),t.exports}var $o=Vo((function(e,t){ +/** + * @license + * + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2017, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +(function(){var i,n,r,s,a,o,l,c,u,h,d,f,m,p,g,_,y,v,b,x,w,S,M,A,C,T,P,E,I,D,R,L,k,O,N,F,B,z,U,V,$,G,H,j,W,q,X,Y,K,Z,Q,J,ee,te,ie,ne,re,se,ae,oe,le,ce,ue,he,de,fe,me,pe,ge,_e,ye,ve,be,xe,we,Se,Me,Ae,Ce,Te,Pe=[].slice;Se=function(){var e,t,i,n,r;for(e={},n=0,t=(r="Boolean Number String Function Array Date RegExp Undefined Null".split(" ")).length;ni&&(e=i),e},Me=function(e){return e.length>=3?Array.prototype.slice.call(e):e[0]},w=function(e){var t,i;for(e._clipped=!1,e._unclipped=e.slice(0),t=i=0;i<3;t=++i)t<3?((e[t]<0||e[t]>255)&&(e._clipped=!0),e[t]<0&&(e[t]=0),e[t]>255&&(e[t]=255)):3===t&&(e[t]<0&&(e[t]=0),e[t]>1&&(e[t]=1));return e._clipped||delete e._unclipped,e},s=Math.PI,ye=Math.round,M=Math.cos,E=Math.floor,ie=Math.pow,Y=Math.log,be=Math.sin,xe=Math.sqrt,p=Math.atan2,Q=Math.max,m=Math.abs,l=2*s,a=s/3,n=s/180,o=180/s,x=function(){return arguments[0]instanceof i?arguments[0]:function(e,t,i){i.prototype=e.prototype;var n=new i,r=e.apply(n,t);return Object(r)===r?r:n}(i,arguments,(function(){}))},x.default=x,f=[],null!==e&&null!=e.exports&&(e.exports=x),(null!==t?t:this).chroma=x,x.version="1.4.1",d={},u=[],h=!1,i=function(){function e(){var e,t,i,n,r,s,a,o,l;for(s=this,t=[],o=0,n=arguments.length;o1&&(a=t[t.length-1]),null!=d[a])s._rgb=w(d[a](Me(t.slice(0,-1))));else{for(h||(u=u.sort((function(e,t){return t.p-e.p})),h=!0),l=0,r=u.length;l3?t[3]:1]},Te=function(e){return 255*(e<=.00304?12.92*e:1.055*ie(e,1/2.4)-.055)},H=function(e){return e>r.t1?e*e*e:r.t2*(e-r.t0)},r={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ue=function(){var e,t,i,n,r,s,a;return i=(n=Me(arguments))[0],t=n[1],e=n[2],s=(r=pe(i,t,e))[0],[116*(a=r[1])-16,500*(s-a),200*(a-r[2])]},ge=function(e){return(e/=255)<=.04045?e/12.92:ie((e+.055)/1.055,2.4)},Ce=function(e){return e>r.t3?ie(e,1/3):e/r.t2+r.t0},pe=function(){var e,t,i,n;return i=(n=Me(arguments))[0],t=n[1],e=n[2],i=ge(i),t=ge(t),e=ge(e),[Ce((.4124564*i+.3575761*t+.1804375*e)/r.Xn),Ce((.2126729*i+.7151522*t+.072175*e)/r.Yn),Ce((.0193339*i+.119192*t+.9503041*e)/r.Zn)]},x.lab=function(){return function(e,t,i){i.prototype=e.prototype;var n=new i,r=e.apply(n,t);return Object(r)===r?r:n}(i,Pe.call(arguments).concat(["lab"]),(function(){}))},d.lab=G,i.prototype.lab=function(){return ue(this._rgb)},g=function(e){var t,i,n,r,s,a,o,l,c,u,h;return 2===(e=function(){var t,i,n;for(n=[],i=0,t=e.length;i=0&&t[3]<=1?"rgb":void 0}}),d.lrgb=d.rgb,z=function(e,t,n,r){var s,a;return s=e._rgb,a=t._rgb,new i(xe(ie(s[0],2)*(1-n)+ie(a[0],2)*n),xe(ie(s[1],2)*(1-n)+ie(a[1],2)*n),xe(ie(s[2],2)*(1-n)+ie(a[2],2)*n),r)},c=function(e){var t,n,r,s,a;for(t=1/e.length,a=[0,0,0,0],r=0,n=e.length;r1&&(a[3]=1),new i(w(a))},f.push(["lrgb",z]),x.average=function(e,t){var i,n,r,a,o,l,u,h,d,f,m,g,_;if(null==t&&(t="rgb"),d=e.length,e=e.map((function(e){return x(e)})),u=e.splice(0,1)[0],"lrgb"===t)return c(e);for(h in a=[],o=0,l=0,g=u.get(t))g[h]=g[h]||0,a.push(isNaN(g[h])?0:1),"h"!==t.charAt(h)||isNaN(g[h])||(i=g[h]/180*s,o+=M(i),l+=be(i));for(n=u.alpha(),m=0,f=e.length;m=360;)i-=360;g[h]=i}else g[h]=g[h]/a[h];return x(g,t).alpha(n/d)},D=function(e){var t,i;if(e.match(/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/))return 4!==e.length&&7!==e.length||(e=e.substr(1)),3===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]),[(i=parseInt(e,16))>>16,i>>8&255,255&i,1];if(e.match(/^#?([A-Fa-f0-9]{8})$/))return 9===e.length&&(e=e.substr(1)),[(i=parseInt(e,16))>>24&255,i>>16&255,i>>8&255,ye((255&i)/255*100)/100];if(null!=d.css&&(t=d.css(e)))return t;throw"unknown color: "+e},ae=function(e,t){var i,n,r,s,a,o;return null==t&&(t="auto"),a=e[0],r=e[1],n=e[2],i=e[3],"auto"===t&&(t=i<1?"rgba":"rgb"),a=Math.round(a),r=Math.round(r),n=Math.round(n),o=(o="000000"+(a<<16|r<<8|n).toString(16)).substr(o.length-6),s=(s="0"+ye(255*i).toString(16)).substr(s.length-2),"#"+function(){switch(t.toLowerCase()){case"rgba":return o+s;case"argb":return s+o;default:return o}}()},d.hex=function(e){return D(e)},x.hex=function(){return function(e,t,i){i.prototype=e.prototype;var n=new i,r=e.apply(n,t);return Object(r)===r?r:n}(i,Pe.call(arguments).concat(["hex"]),(function(){}))},i.prototype.hex=function(e){return null==e&&(e="auto"),ae(this._rgb,e)},u.push({p:4,test:function(e){if(1===arguments.length&&"string"===Se(e))return"hex"}}),k=function(){var e,t,i,n,r,s,a,o,l,c,u,h,d,f;if(r=(e=Me(arguments))[0],u=e[1],a=e[2],0===u)l=n=t=255*a;else{for(i=[0,0,0],h=2*a-(d=a<.5?a*(1+u):a+u-a*u),(f=[0,0,0])[0]=(r/=360)+1/3,f[1]=r,f[2]=r-1/3,s=o=0;o<=2;s=++o)f[s]<0&&(f[s]+=1),f[s]>1&&(f[s]-=1),6*f[s]<1?i[s]=h+6*(d-h)*f[s]:2*f[s]<1?i[s]=d:3*f[s]<2?i[s]=h+(d-h)*(2/3-f[s])*6:i[s]=h;l=(c=[ye(255*i[0]),ye(255*i[1]),ye(255*i[2])])[0],n=c[1],t=c[2]}return e.length>3?[l,n,t,e[3]]:[l,n,t]},le=function(e,t,i){var n,r,s,a,o;return void 0!==e&&e.length>=3&&(e=(a=e)[0],t=a[1],i=a[2]),e/=255,t/=255,i/=255,s=Math.min(e,t,i),r=((Q=Math.max(e,t,i))+s)/2,Q===s?(o=0,n=Number.NaN):o=r<.5?(Q-s)/(Q+s):(Q-s)/(2-Q-s),e===Q?n=(t-i)/(Q-s):t===Q?n=2+(i-e)/(Q-s):i===Q&&(n=4+(e-t)/(Q-s)),(n*=60)<0&&(n+=360),[n,o,r]},x.hsl=function(){return function(e,t,i){i.prototype=e.prototype;var n=new i,r=e.apply(n,t);return Object(r)===r?r:n}(i,Pe.call(arguments).concat(["hsl"]),(function(){}))},d.hsl=k,i.prototype.hsl=function(){return le(this._rgb)},O=function(){var e,t,i,n,r,s,a,o,l,c,u,h,d,f,m,p,g,_;if(r=(e=Me(arguments))[0],p=e[1],_=e[2],_*=255,0===p)l=n=t=_;else switch(360===r&&(r=0),r>360&&(r-=360),r<0&&(r+=360),a=_*(1-p),o=_*(1-p*(i=(r/=60)-(s=E(r)))),g=_*(1-p*(1-i)),s){case 0:l=(c=[_,g,a])[0],n=c[1],t=c[2];break;case 1:l=(u=[o,_,a])[0],n=u[1],t=u[2];break;case 2:l=(h=[a,_,g])[0],n=h[1],t=h[2];break;case 3:l=(d=[a,o,_])[0],n=d[1],t=d[2];break;case 4:l=(f=[g,a,_])[0],n=f[1],t=f[2];break;case 5:l=(m=[_,a,o])[0],n=m[1],t=m[2]}return[l,n,t,e.length>3?e[3]:1]},ce=function(){var e,t,i,n,r,s,a,o,l;return s=(a=Me(arguments))[0],i=a[1],e=a[2],r=Math.min(s,i,e),t=(Q=Math.max(s,i,e))-r,l=Q/255,0===Q?(n=Number.NaN,o=0):(o=t/Q,s===Q&&(n=(i-e)/t),i===Q&&(n=2+(e-s)/t),e===Q&&(n=4+(s-i)/t),(n*=60)<0&&(n+=360)),[n,o,l]},x.hsv=function(){return function(e,t,i){i.prototype=e.prototype;var n=new i,r=e.apply(n,t);return Object(r)===r?r:n}(i,Pe.call(arguments).concat(["hsv"]),(function(){}))},d.hsv=O,i.prototype.hsv=function(){return ce(this._rgb)},ee=function(e){return"number"===Se(e)&&e>=0&&e<=16777215?[e>>16,e>>8&255,255&e,1]:(console.warn("unknown num color: "+e),[0,0,0,1])},fe=function(){var e;return((e=Me(arguments))[0]<<16)+(e[1]<<8)+e[2]},x.num=function(e){return new i(e,"num")},i.prototype.num=function(e){return null==e&&(e="rgb"),fe(this._rgb,e)},d.num=ee,u.push({p:1,test:function(e){if(1===arguments.length&&"number"===Se(e)&&e>=0&&e<=16777215)return"num"}}),I=function(){var e,t,i,n,r,s,a,o,l,c,u,h,d,f,m,p,g,_,y,v;if(o=(i=Me(arguments))[0],r=i[1],t=i[2],a=a/100*255,e=255*(r/=100),0===r)h=a=n=t;else switch(360===o&&(o=0),o>360&&(o-=360),o<0&&(o+=360),u=(c=t*(1-r))+e*(1-(s=(o/=60)-(l=E(o)))),y=c+e*s,v=c+e,l){case 0:h=(d=[v,y,c])[0],a=d[1],n=d[2];break;case 1:h=(f=[u,v,c])[0],a=f[1],n=f[2];break;case 2:h=(m=[c,v,y])[0],a=m[1],n=m[2];break;case 3:h=(p=[c,u,v])[0],a=p[1],n=p[2];break;case 4:h=(g=[y,c,v])[0],a=g[1],n=g[2];break;case 5:h=(_=[v,c,u])[0],a=_[1],n=_[2]}return[h,a,n,i.length>3?i[3]:1]},se=function(){var e,t,i,n,r,s,a,o,l;return o=(l=Me(arguments))[0],r=l[1],t=l[2],a=Math.min(o,r,t),i=100*(n=(Q=Math.max(o,r,t))-a)/255,e=a/(255-n)*100,0===n?s=Number.NaN:(o===Q&&(s=(r-t)/n),r===Q&&(s=2+(t-o)/n),t===Q&&(s=4+(o-r)/n),(s*=60)<0&&(s+=360)),[s,i,e]},x.hcg=function(){return function(e,t,i){i.prototype=e.prototype;var n=new i,r=e.apply(n,t);return Object(r)===r?r:n}(i,Pe.call(arguments).concat(["hcg"]),(function(){}))},d.hcg=I,i.prototype.hcg=function(){return se(this._rgb)},A=function(e){var t,i,n,r,s,a,o,l;if(e=e.toLowerCase(),null!=x.colors&&x.colors[e])return D(x.colors[e]);if(s=e.match(/rgb\(\s*(\-?\d+),\s*(\-?\d+)\s*,\s*(\-?\d+)\s*\)/)){for(o=s.slice(1,4),r=a=0;a<=2;r=++a)o[r]=+o[r];o[3]=1}else if(s=e.match(/rgba\(\s*(\-?\d+),\s*(\-?\d+)\s*,\s*(\-?\d+)\s*,\s*([01]|[01]?\.\d+)\)/))for(o=s.slice(1,5),r=l=0;l<=3;r=++l)o[r]=+o[r];else if(s=e.match(/rgb\(\s*(\-?\d+(?:\.\d+)?)%,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*\)/)){for(o=s.slice(1,4),r=t=0;t<=2;r=++t)o[r]=ye(2.55*o[r]);o[3]=1}else if(s=e.match(/rgba\(\s*(\-?\d+(?:\.\d+)?)%,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)/)){for(o=s.slice(1,5),r=i=0;i<=2;r=++i)o[r]=ye(2.55*o[r]);o[3]=+o[3]}else(s=e.match(/hsl\(\s*(\-?\d+(?:\.\d+)?),\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*\)/))?((n=s.slice(1,4))[1]*=.01,n[2]*=.01,(o=k(n))[3]=1):(s=e.match(/hsla\(\s*(\-?\d+(?:\.\d+)?),\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)/))&&((n=s.slice(1,4))[1]*=.01,n[2]*=.01,(o=k(n))[3]=+s[4]);return o},re=function(e){var t;return"rgb"===(t=e[3]<1?"rgba":"rgb")?t+"("+e.slice(0,3).map(ye).join(",")+")":"rgba"===t?t+"("+e.slice(0,3).map(ye).join(",")+","+e[3]+")":void 0},_e=function(e){return ye(100*e)/100},L=function(e,t){var i;return i=t<1?"hsla":"hsl",e[0]=_e(e[0]||0),e[1]=_e(100*e[1])+"%",e[2]=_e(100*e[2])+"%","hsla"===i&&(e[3]=t),i+"("+e.join(",")+")"},d.css=function(e){return A(e)},x.css=function(){return function(e,t,i){i.prototype=e.prototype;var n=new i,r=e.apply(n,t);return Object(r)===r?r:n}(i,Pe.call(arguments).concat(["css"]),(function(){}))},i.prototype.css=function(e){return null==e&&(e="rgb"),"rgb"===e.slice(0,3)?re(this._rgb):"hsl"===e.slice(0,3)?L(this.hsl(),this.alpha()):void 0},d.named=function(e){return D(Ae[e])},u.push({p:5,test:function(e){if(1===arguments.length&&null!=Ae[e])return"named"}}),i.prototype.name=function(e){var t,i;for(i in arguments.length&&(Ae[e]&&(this._rgb=D(Ae[e])),this._rgb[3]=1),t=this.hex("rgb"),Ae)if(t===Ae[i])return i;return t},j=function(){var e,t,i,r;return i=(r=Me(arguments))[0],e=r[1],t=r[2],[i,M(t*=n)*e,be(t)*e]},W=function(){var e,t,i,n,r,s,a,o,l;return a=(i=Me(arguments))[0],r=i[1],s=i[2],e=(o=j(a,r,s))[0],t=o[1],n=o[2],[(l=G(e,t,n))[0],l[1],n=l[2],i.length>3?i[3]:1]},$=function(){var e,t,i,n,r,s;return r=(s=Me(arguments))[0],e=s[1],t=s[2],i=xe(e*e+t*t),n=(p(t,e)*o+360)%360,0===ye(1e4*i)&&(n=Number.NaN),[r,i,n]},he=function(){var e,t,i,n,r,s,a;return r=(s=Me(arguments))[0],i=s[1],t=s[2],n=(a=ue(r,i,t))[0],e=a[1],t=a[2],$(n,e,t)},x.lch=function(){var e;return e=Me(arguments),new i(e,"lch")},x.hcl=function(){var e;return e=Me(arguments),new i(e,"hcl")},d.lch=W,d.hcl=function(){var e,t,i,n;return t=(n=Me(arguments))[0],e=n[1],i=n[2],W([i,e,t])},i.prototype.lch=function(){return he(this._rgb)},i.prototype.hcl=function(){return he(this._rgb).reverse()},ne=function(e){var t,i,n,r,s,a;return null==e&&(e="rgb"),s=(a=Me(arguments))[0],n=a[1],t=a[2],n/=255,t/=255,[(1-(s/=255)-(r=1-Math.max(s,Math.max(n,t))))*(i=r<1?1/(1-r):0),(1-n-r)*i,(1-t-r)*i,r]},S=function(){var e,t,i,n,r,s;return i=(t=Me(arguments))[0],r=t[1],s=t[2],n=t[3],e=t.length>4?t[4]:1,1===n?[0,0,0,e]:[i>=1?0:255*(1-i)*(1-n),r>=1?0:255*(1-r)*(1-n),s>=1?0:255*(1-s)*(1-n),e]},d.cmyk=function(){return S(Me(arguments))},x.cmyk=function(){return function(e,t,i){i.prototype=e.prototype;var n=new i,r=e.apply(n,t);return Object(r)===r?r:n}(i,Pe.call(arguments).concat(["cmyk"]),(function(){}))},i.prototype.cmyk=function(){return ne(this._rgb)},d.gl=function(){var e,t,i,n,r;for(n=function(){var e,i;for(t in i=[],e=Me(arguments))r=e[t],i.push(r);return i}.apply(this,arguments),e=i=0;i<=2;e=++i)n[e]*=255;return n},x.gl=function(){return function(e,t,i){i.prototype=e.prototype;var n=new i,r=e.apply(n,t);return Object(r)===r?r:n}(i,Pe.call(arguments).concat(["gl"]),(function(){}))},i.prototype.gl=function(){var e;return[(e=this._rgb)[0]/255,e[1]/255,e[2]/255,e[3]]},de=function(e,t,i){var n;return e=(n=Me(arguments))[0],t=n[1],i=n[2],.2126*(e=K(e))+.7152*(t=K(t))+.0722*(i=K(i))},K=function(e){return(e/=255)<=.03928?e/12.92:ie((e+.055)/1.055,2.4)},V=function(e,t,n,r){var s,a;return s=e._rgb,a=t._rgb,new i(s[0]+n*(a[0]-s[0]),s[1]+n*(a[1]-s[1]),s[2]+n*(a[2]-s[2]),r)},f.push(["rgb",V]),i.prototype.luminance=function(e,t){var i,n,r,s;return null==t&&(t="rgb"),arguments.length?(r=this._rgb,0===e?r=[0,0,0,this._rgb[3]]:1===e?r=[255,255,255,this[3]]:(i=de(this._rgb),1e-7,n=20,s=function(i,r){var a,o;return a=(o=i.interpolate(r,.5,t)).luminance(),Math.abs(e-a)<1e-7||!n--?o:a>e?s(i,o):s(o,r)},r=i>e?s(x("black"),this).rgba():s(this,x("white")).rgba()),x(r).alpha(this.alpha())):de(this._rgb)},we=function(e){var t,i,n,r;return(r=e/100)<66?(n=255,i=-155.25485562709179-.44596950469579133*(i=r-2)+104.49216199393888*Y(i),t=r<20?0:.8274096064007395*(t=r-10)-254.76935184120902+115.67994401066147*Y(t)):(n=351.97690566805693+.114206453784165*(n=r-55)-40.25366309332127*Y(n),i=325.4494125711974+.07943456536662342*(i=r-50)-28.0852963507957*Y(i),t=255),[n,i,t]},me=function(){var e,t,i,n,r,s,a;for(n=(r=Me(arguments))[0],r[1],e=r[2],i=1e3,t=4e4,.4;t-i>.4;)(s=we(a=.5*(t+i)))[2]/s[0]>=e/n?t=a:i=a;return ye(a)},x.temperature=x.kelvin=function(){return function(e,t,i){i.prototype=e.prototype;var n=new i,r=e.apply(n,t);return Object(r)===r?r:n}(i,Pe.call(arguments).concat(["temperature"]),(function(){}))},d.temperature=d.kelvin=d.K=we,i.prototype.temperature=function(){return me(this._rgb)},i.prototype.kelvin=i.prototype.temperature,x.contrast=function(e,t){var n,r,s,a;return"string"!==(s=Se(e))&&"number"!==s||(e=new i(e)),"string"!==(a=Se(t))&&"number"!==a||(t=new i(t)),(n=e.luminance())>(r=t.luminance())?(n+.05)/(r+.05):(r+.05)/(n+.05)},x.distance=function(e,t,n){var r,s,a,o,l,c,u;for(s in null==n&&(n="lab"),"string"!==(l=Se(e))&&"number"!==l||(e=new i(e)),"string"!==(c=Se(t))&&"number"!==c||(t=new i(t)),a=e.get(n),o=t.get(n),u=0,a)u+=(r=(a[s]||0)-(o[s]||0))*r;return Math.sqrt(u)},x.deltaE=function(e,t,n,r){var a,o,l,c,u,h,d,f,g,_,y,v,b,x,w,S,A,C,T,P,E,I,D,R;for(null==n&&(n=1),null==r&&(r=1),"string"!==(w=Se(e))&&"number"!==w||(e=new i(e)),"string"!==(S=Se(t))&&"number"!==S||(t=new i(t)),a=(A=e.lab())[0],l=A[1],u=A[2],o=(C=t.lab())[0],c=C[1],h=C[2],d=xe(l*l+u*u),f=xe(c*c+h*h),P=a<16?.511:.040975*a/(1+.01765*a),T=.0638*d/(1+.0131*d)+.638,x=d<1e-6?0:180*p(u,l)/s;x<0;)x+=360;for(;x>=360;)x-=360;return E=x>=164&&x<=345?.56+m(.2*M(s*(x+168)/180)):.36+m(.4*M(s*(x+35)/180)),b=xe((g=d*d*d*d)/(g+1900)),xe((I=(a-o)/(n*P))*I+(D=(v=d-f)/(r*T))*D+((_=l-c)*_+(y=u-h)*y-v*v)/((R=T*(b*E+1-b))*R))},i.prototype.get=function(e){var t,i,n,r,s;return this,n=(r=e.split("."))[0],t=r[1],s=this[n](),t?(i=n.indexOf(t))>-1?s[i]:console.warn("unknown channel "+t+" in mode "+n):s},i.prototype.set=function(e,t){var i,n,r,s,a;if(this,r=(s=e.split("."))[0],i=s[1])if(a=this[r](),(n=r.indexOf(i))>-1)if("string"===Se(t))switch(t.charAt(0)){case"+":case"-":a[n]+=+t;break;case"*":a[n]*=+t.substr(1);break;case"/":a[n]/=+t.substr(1);break;default:a[n]=+t}else a[n]=t;else console.warn("unknown channel "+i+" in mode "+r);else a=t;return x(a,r).alpha(this.alpha())},i.prototype.clipped=function(){return this._rgb._clipped||!1},i.prototype.alpha=function(e){return arguments.length?x.rgb([this._rgb[0],this._rgb[1],this._rgb[2],e]):this._rgb[3]},i.prototype.darken=function(e){var t;return null==e&&(e=1),this,(t=this.lab())[0]-=r.Kn*e,x.lab(t).alpha(this.alpha())},i.prototype.brighten=function(e){return null==e&&(e=1),this.darken(-e)},i.prototype.darker=i.prototype.darken,i.prototype.brighter=i.prototype.brighten,i.prototype.saturate=function(e){var t;return null==e&&(e=1),this,(t=this.lch())[1]+=e*r.Kn,t[1]<0&&(t[1]=0),x.lch(t).alpha(this.alpha())},i.prototype.desaturate=function(e){return null==e&&(e=1),this.saturate(-e)},i.prototype.premultiply=function(){var e,t;return t=this.rgb(),e=this.alpha(),x(t[0]*e,t[1]*e,t[2]*e,e)},J=function(e,t){return e*t/255},C=function(e,t){return e>t?t:e},q=function(e,t){return e>t?e:t},ve=function(e,t){return 255*(1-(1-e/255)*(1-t/255))},te=function(e,t){return t<128?2*e*t/255:255*(1-2*(1-e/255)*(1-t/255))},b=function(e,t){return 255*(1-(1-t/255)/(e/255))},T=function(e,t){return 255===e||(e=t/255*255/(1-e/255))>255?255:e},(_=function(e,t,i){if(!_[i])throw"unknown blend mode "+i;return _[i](e,t)}).normal=(y=function(e){return function(t,i){var n,r;return n=x(i).rgb(),r=x(t).rgb(),x(e(n,r),"rgb")}})((P=function(e){return function(t,i){var n,r,s;for(s=[],n=r=0;r<=3;n=++r)s[n]=e(t[n],i[n]);return s}})((function(e,t){return e}))),_.multiply=y(P(J)),_.screen=y(P(ve)),_.overlay=y(P(te)),_.darken=y(P(C)),_.lighten=y(P(q)),_.dodge=y(P(T)),_.burn=y(P(b)),x.blend=_,x.analyze=function(e){var t,i,n,r;for(n={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0},i=0,t=e.length;in.max&&(n.max=r),n.count+=1);return n.domain=[n.min,n.max],n.limits=function(e,t){return x.limits(n,e,t)},n},x.scale=function(e,t){var i,n,r,s,a,o,l,c,u,h,d,f,m,p,g,_,y,v,b,w,S;return u="rgb",h=x("#ccc"),p=0,a=[0,1],m=[],f=[0,0],i=!1,r=[],d=!1,c=0,l=1,s=!1,n={},g=!0,o=1,w=function(e){var t,i,n,s,a,o;if(null==e&&(e=["#fff","#000"]),null!=e&&"string"===Se(e)&&null!=x.brewer&&(e=x.brewer[e]||x.brewer[e.toLowerCase()]||e),"array"===Se(e)){for(1===e.length&&(e=[e[0],e[0]]),t=n=0,s=(e=e.slice(0)).length-1;0<=s?n<=s:n>=s;t=0<=s?++n:--n)i=e[t],"string"===Se(i)&&(e[t]=x(i));for(m.length=0,t=o=0,a=e.length-1;0<=a?o<=a:o>=a;t=0<=a?++o:--o)m.push(t/(e.length-1))}return b(),r=e},y=function(e){var t,n;if(null!=i){for(n=i.length-1,t=0;t=i[t];)t++;return t-1}return 0},S=function(e){return e},v=function(e,t){var s,a,d,p,_,v,b;if(null==t&&(t=!1),isNaN(e)||null===e)return h;if(b=t?e:i&&i.length>2?y(e)/(i.length-2):l!==c?(e-c)/(l-c):1,t||(b=S(b)),1!==o&&(b=ie(b,o)),b=f[0]+b*(1-f[0]-f[1]),b=Math.min(1,Math.max(0,b)),d=Math.floor(1e4*b),g&&n[d])s=n[d];else{if("array"===Se(r))for(a=p=0,v=m.length-1;0<=v?p<=v:p>=v;a=0<=v?++p:--p){if(b<=(_=m[a])){s=r[a];break}if(b>=_&&a===m.length-1){s=r[a];break}if(b>_&&b=u;t=0<=u?++h:--h)m.push(t/(n-1));return a=[c,l],_},_.mode=function(e){return arguments.length?(u=e,b(),_):u},_.range=function(e,t){return w(e),_},_.out=function(e){return d=e,_},_.spread=function(e){return arguments.length?(p=e,_):p},_.correctLightness=function(e){return null==e&&(e=!0),s=e,b(),S=s?function(e){var t,i,n,r,s,a,o,l,c;for(t=v(0,!0).lab()[0],i=v(1,!0).lab()[0],o=t>i,n=v(e,!0).lab()[0],r=n-(s=t+(i-t)*e),l=0,c=1,a=20;Math.abs(r)>.01&&a-- >0;)o&&(r*=-1),r<0?(l=e,e+=.5*(c-e)):(c=e,e+=.5*(l-e)),n=v(e,!0).lab()[0],r=n-s;return e}:function(e){return e},_},_.padding=function(e){return null!=e?("number"===Se(e)&&(e=[e,e]),f=e,_):f},_.colors=function(t,n){var s,o,l,c,u,h,d,f;if(arguments.length<2&&(n="hex"),u=[],0===arguments.length)u=r.slice(0);else if(1===t)u=[_(.5)];else if(t>1)o=a[0],s=a[1]-o,u=function(){h=[];for(var e=0;0<=t?et;0<=t?e++:e--)h.push(e);return h}.apply(this).map((function(e){return _(o+e/(t-1)*s)}));else{if(e=[],d=[],i&&i.length>2)for(l=f=1,c=i.length;1<=c?fc;l=1<=c?++f:--f)d.push(.5*(i[l-1]+i[l]));else d=a;u=d.map((function(e){return _(e)}))}return x[n]&&(u=u.map((function(e){return e[n]()}))),u},_.cache=function(e){return null!=e?(g=e,_):g},_.gamma=function(e){return null!=e?(o=e,_):o},_.nodata=function(e){return null!=e?(h=x(e),_):h},_},null==x.scales&&(x.scales={}),x.scales.cool=function(){return x.scale([x.hsl(180,1,.9),x.hsl(250,.7,.4)])},x.scales.hot=function(){return x.scale(["#000","#f00","#ff0","#fff"],[0,.25,.75,1]).mode("rgb")},x.analyze=function(e,t,i){var n,r,s,a,o,l;if(o={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0},null==i&&(i=function(){return!0}),n=function(e){null==e||isNaN(e)||(o.values.push(e),o.sum+=e,eo.max&&(o.max=e),o.count+=1)},l=function(e,r){if(i(e,r))return null!=t&&"function"===Se(t)?n(t(e)):null!=t&&"string"===Se(t)||"number"===Se(t)?n(e[t]):n(e)},"array"===Se(e))for(a=0,s=e.length;a=U;M=1<=U?++N:--N)T.push(I+M/i*(Q-I));T.push(Q)}else if("l"===t.substr(0,1)){if(I<=0)throw"Logarithmic scales are only possible for values > 0";for(D=Math.LOG10E*Y(I),P=Math.LOG10E*Y(Q),T.push(I),M=ce=1,V=i-1;1<=V?ce<=V:ce>=V;M=1<=V?++ce:--ce)T.push(ie(10,D+M/i*(P-D)));T.push(Q)}else if("q"===t.substr(0,1)){for(T.push(I),M=n=1,q=i-1;1<=q?n<=q:n>=q;M=1<=q?++n:--n)F=(le.length-1)*M/i,(B=E(F))===F?T.push(le[B]):(z=F-B,T.push(le[B]*(1-z)+le[B+1]*z));T.push(Q)}else if("k"===t.substr(0,1)){for(L=le.length,_=new Array(L),w=new Array(i),re=!0,k=0,v=null,(v=[]).push(I),M=r=1,X=i-1;1<=X?r<=X:r>=X;M=1<=X?++r:--r)v.push(I+M/i*(Q-I));for(v.push(Q);re;){for(A=s=0,K=i-1;0<=K?s<=K:s>=K;A=0<=K?++s:--s)w[A]=0;for(M=a=0,Z=L-1;0<=Z?a<=Z:a>=Z;M=0<=Z?++a:--a){for(oe=le[M],R=Number.MAX_VALUE,A=o=0,J=i-1;0<=J?o<=J:o>=J;A=0<=J?++o:--o)(S=m(v[A]-oe))=ee;A=0<=ee?++l:--l)O[A]=null;for(M=c=0,te=L-1;0<=te?c<=te:c>=te;M=0<=te?++c:--c)null===O[b=_[M]]?O[b]=le[M]:O[b]+=le[M];for(A=u=0,ne=i-1;0<=ne?u<=ne:u>=ne;A=0<=ne?++u:--u)O[A]*=1/w[A];for(re=!1,A=h=0,$=i-1;0<=$?h<=$:h>=$;A=0<=$?++h:--h)if(O[A]!==v[M]){re=!0;break}v=O,++k>200&&(re=!1)}for(C={},A=d=0,G=i-1;0<=G?d<=G:d>=G;A=0<=G?++d:--d)C[A]=[];for(M=f=0,H=L-1;0<=H?f<=H:f>=H;M=0<=H?++f:--f)C[b=_[M]].push(le[M]);for(se=[],A=p=0,j=i-1;0<=j?p<=j:p>=j;A=0<=j?++p:--p)se.push(C[A][0]),se.push(C[A][C[A].length-1]);for(se=se.sort((function(e,t){return e-t})),T.push(se[0]),M=g=1,W=se.length-1;g<=W;M=g+=2)ae=se[M],isNaN(ae)||-1!==T.indexOf(ae)||T.push(ae)}return T},R=function(e,t,i){var n,r,s,o;return e=(n=Me(arguments))[0],t=n[1],i=n[2],isNaN(e)&&(e=0),(e/=360)<1/3?s=1-((r=(1-t)/3)+(o=(1+t*M(l*e)/M(a-l*e))/3)):e<2/3?r=1-((o=(1-t)/3)+(s=(1+t*M(l*(e-=1/3))/M(a-l*e))/3)):o=1-((s=(1-t)/3)+(r=(1+t*M(l*(e-=2/3))/M(a-l*e))/3)),[255*(o=X(i*o*3)),255*(s=X(i*s*3)),255*(r=X(i*r*3)),n.length>3?n[3]:1]},oe=function(){var e,t,i,n,r,s,a;return r=(s=Me(arguments))[0],t=s[1],e=s[2],l=2*Math.PI,r/=255,t/=255,e/=255,0===(a=1-Math.min(r,t,e)/(n=(r+t+e)/3))?i=0:(i=(r-t+(r-e))/2,i/=Math.sqrt((r-t)*(r-t)+(r-e)*(t-e)),i=Math.acos(i),e>t&&(i=l-i),i/=l),[360*i,a,n]},x.hsi=function(){return function(e,t,i){i.prototype=e.prototype;var n=new i,r=e.apply(n,t);return Object(r)===r?r:n}(i,Pe.call(arguments).concat(["hsi"]),(function(){}))},d.hsi=R,i.prototype.hsi=function(){return oe(this._rgb)},F=function(e,t,i,n){var r,s,a,o,l,c,u,h,d,f;return"hsl"===n?(d=e.hsl(),f=t.hsl()):"hsv"===n?(d=e.hsv(),f=t.hsv()):"hcg"===n?(d=e.hcg(),f=t.hcg()):"hsi"===n?(d=e.hsi(),f=t.hsi()):"lch"!==n&&"hcl"!==n||(n="hcl",d=e.hcl(),f=t.hcl()),"h"===n.substr(0,1)&&(s=d[0],u=d[1],o=d[2],a=f[0],h=f[1],l=f[2]),isNaN(s)||isNaN(a)?isNaN(s)?isNaN(a)?r=Number.NaN:(r=a,1!==o&&0!==o||"hsv"===n||(c=h)):(r=s,1!==l&&0!==l||"hsv"===n||(c=u)):r=s+i*(a>s&&a-s>180?a-(s+360):a180?a+360-s:a-s),null==c&&(c=u+i*(h-u)),x[n](r,c,o+i*(l-o))},U=function(e,t,i,n){var r,s;return r=e.num(),s=t.num(),x.num(r+(s-r)*i,"num")},(f=f.concat(function(){var e,t,i,n;for(n=[],t=0,e=(i=["hsv","hsl","hsi","hcl","lch","hcg"]).length;t>16&255)/255,t[i+1]=(e>>8&255)/255,t[i+2]=(255&e)/255,t}atomColorToArray(e,t,i){return this.colorToArray(this.atomColor?this.atomColor(e):0,t,i)}bondColor(e,t){return this.atomProxy&&this.atomColor?(this.atomProxy.index=t?e.atomIndex1:e.atomIndex2,this.atomColor(this.atomProxy)):0}bondColorToArray(e,t,i,n){return this.colorToArray(this.bondColor(e,t),i,n)}volumeColorToArray(e,t,i){return this.colorToArray(this.volumeColor?this.volumeColor(e):0,t,i)}positionColorToArray(e,t,i){return this.colorToArray(this.positionColor?this.positionColor(e):0,t,i)}}var Xo,Yo=Vo((function(e){ +/** @license + * JS Signals + * Released under the MIT license + * Author: Miller Medeiros + * Version: 1.0.0 - Build: 268 (2012/11/29 05:48 PM) + */ +!function(t){function i(e,t,i,n,r){this._listener=t,this._isOnce=i,this.context=n,this._signal=e,this._priority=r||0}function n(e,t){if("function"!=typeof e)throw new Error("listener is a required param of {fn}() and should be a Function.".replace("{fn}",t))}function r(){this._bindings=[],this._prevParams=null;var e=this;this.dispatch=function(){r.prototype.dispatch.apply(e,arguments)}}i.prototype={active:!0,params:null,execute:function(e){var t,i;return this.active&&this._listener&&(i=this.params?this.params.concat(e):e,t=this._listener.apply(this.context,i),this._isOnce&&this.detach()),t},detach:function(){return this.isBound()?this._signal.remove(this._listener,this.context):null},isBound:function(){return!!this._signal&&!!this._listener},isOnce:function(){return this._isOnce},getListener:function(){return this._listener},getSignal:function(){return this._signal},_destroy:function(){delete this._signal,delete this._listener,delete this.context},toString:function(){return"[SignalBinding isOnce:"+this._isOnce+", isBound:"+this.isBound()+", active:"+this.active+"]"}},r.prototype={VERSION:"1.0.0",memorize:!1,_shouldPropagate:!0,active:!0,_registerListener:function(e,t,n,r){var s,a=this._indexOfListener(e,n);if(-1!==a){if((s=this._bindings[a]).isOnce()!==t)throw new Error("You cannot add"+(t?"":"Once")+"() then add"+(t?"Once":"")+"() the same listener without removing the relationship first.")}else s=new i(this,e,t,n,r),this._addBinding(s);return this.memorize&&this._prevParams&&s.execute(this._prevParams),s},_addBinding:function(e){var t=this._bindings.length;do{--t}while(this._bindings[t]&&e._priority<=this._bindings[t]._priority);this._bindings.splice(t+1,0,e)},_indexOfListener:function(e,t){for(var i,n=this._bindings.length;n--;)if((i=this._bindings[n])._listener===e&&i.context===t)return n;return-1},has:function(e,t){return-1!==this._indexOfListener(e,t)},add:function(e,t,i){return n(e,"add"),this._registerListener(e,!1,t,i)},addOnce:function(e,t,i){return n(e,"addOnce"),this._registerListener(e,!0,t,i)},remove:function(e,t){n(e,"remove");var i=this._indexOfListener(e,t);return-1!==i&&(this._bindings[i]._destroy(),this._bindings.splice(i,1)),e},removeAll:function(){for(var e=this._bindings.length;e--;)this._bindings[e]._destroy();this._bindings.length=0},getNumListeners:function(){return this._bindings.length},halt:function(){this._shouldPropagate=!1},dispatch:function(e){if(this.active){var t,i=Array.prototype.slice.call(arguments),n=this._bindings.length;if(this.memorize&&(this._prevParams=i),n){t=this._bindings.slice(),this._shouldPropagate=!0;do{n--}while(t[n]&&this._shouldPropagate&&!1!==t[n].execute(i))}}},forget:function(){this._prevParams=null},dispose:function(){this.removeAll(),delete this._bindings,delete this._prevParams},toString:function(){return"[Signal active:"+this.active+" numListeners:"+this.getNumListeners()+"]"}};var s=r;s.Signal=r,e.exports?e.exports=s:t.signals=s}(Uo)}));!function(e){e[e.PROTEIN=1]="PROTEIN",e[e.NUCLEIC=2]="NUCLEIC",e[e.RNA=3]="RNA",e[e.DNA=4]="DNA",e[e.POLYMER=5]="POLYMER",e[e.WATER=6]="WATER",e[e.HELIX=7]="HELIX",e[e.SHEET=8]="SHEET",e[e.TURN=9]="TURN",e[e.BACKBONE=10]="BACKBONE",e[e.SIDECHAIN=11]="SIDECHAIN",e[e.ALL=12]="ALL",e[e.HETERO=13]="HETERO",e[e.ION=14]="ION",e[e.SACCHARIDE=15]="SACCHARIDE",e[e.SUGAR=15]="SUGAR",e[e.BONDED=16]="BONDED",e[e.RING=17]="RING",e[e.AROMATICRING=18]="AROMATICRING",e[e.METAL=19]="METAL",e[e.POLARH=20]="POLARH",e[e.NONE=21]="NONE"}(Xo||(Xo={}));const Ko=["*","","ALL"],Zo=["NONE"],Qo=[Xo.BACKBONE,Xo.SIDECHAIN,Xo.BONDED,Xo.RING,Xo.AROMATICRING,Xo.METAL,Xo.POLARH],Jo=[Xo.POLYMER,Xo.WATER],el=["ALA","GLY","SER"],tl=["CYS","SER","THR"],il=["ALA","ILE","LEU","MET","PHE","PRO","TRP","VAL"],nl=["PHE","TRP","TYR","HIS"],rl=["ASN","GLN"],sl=["ASP","GLU"],al=["ARG","HIS","LYS"],ol=["ARG","ASP","GLU","HIS","LYS"],ll=["ASN","ARG","ASP","CYS","GLY","GLN","GLU","HIS","LYS","SER","THR","TYR"],cl=["ALA","ILE","LEU","MET","PHE","PRO","TRP","VAL"],ul=["HIS","PHE","PRO","TRP","TYR"],hl=["ALA","GLY","ILE","LEU","VAL"];function dl(e,t){if(void 0===t.atomname&&void 0===t.element&&void 0===t.altloc&&void 0===t.atomindex&&void 0===t.keyword&&void 0===t.inscode&&void 0===t.resname&&void 0===t.sstruc&&void 0===t.resno&&void 0===t.chainname&&void 0===t.model)return-1;if(void 0!==t.keyword){if(t.keyword===Xo.BACKBONE&&!e.isBackbone())return!1;if(t.keyword===Xo.SIDECHAIN&&!e.isSidechain())return!1;if(t.keyword===Xo.BONDED&&!e.isBonded())return!1;if(t.keyword===Xo.RING&&!e.isRing())return!1;if(t.keyword===Xo.AROMATICRING&&!e.isAromatic())return!1;if(t.keyword===Xo.HETERO&&!e.isHetero())return!1;if(t.keyword===Xo.PROTEIN&&!e.isProtein())return!1;if(t.keyword===Xo.NUCLEIC&&!e.isNucleic())return!1;if(t.keyword===Xo.RNA&&!e.isRna())return!1;if(t.keyword===Xo.DNA&&!e.isDna())return!1;if(t.keyword===Xo.POLYMER&&!e.isPolymer())return!1;if(t.keyword===Xo.WATER&&!e.isWater())return!1;if(t.keyword===Xo.HELIX&&!e.isHelix())return!1;if(t.keyword===Xo.SHEET&&!e.isSheet())return!1;if(t.keyword===Xo.TURN&&!e.isTurn())return!1;if(t.keyword===Xo.ION&&!e.isIon())return!1;if(t.keyword===Xo.SACCHARIDE&&!e.isSaccharide())return!1;if(t.keyword===Xo.METAL&&!e.isMetal())return!1;if(t.keyword===Xo.POLARH&&!e.isPolarHydrogen())return!1}if(void 0!==t.atomname&&t.atomname!==e.atomname)return!1;if(void 0!==t.element&&t.element!==e.element)return!1;if(void 0!==t.altloc&&t.altloc!==e.altloc)return!1;if(void 0!==t.atomindex&&yo(t.atomindex,e.index)<0)return!1;if(void 0!==t.resname)if(Array.isArray(t.resname)){if(!t.resname.includes(e.resname))return!1}else if(t.resname!==e.resname)return!1;if(void 0!==t.sstruc&&t.sstruc!==e.sstruc)return!1;if(void 0!==t.resno)if(Array.isArray(t.resno)&&2===t.resno.length){if(t.resno[0]>e.resno||t.resno[1]e.resno||t.resno[1]0?e:null}function yl(e,t=!1){let i=e;return t&&(i=_l(e,(function(e){return void 0!==e.keyword&&!Qo.includes(e.keyword)||(void 0!==e.model||(void 0!==e.chainname||(void 0!==e.resname||(void 0!==e.resno||void 0!==e.sstruc))))}))),gl(i,dl)}function vl(e,t=!1){let i=e;return t&&(i=_l(e,(function(e){return!(void 0===e.keyword||!Qo.includes(e.keyword))||(void 0!==e.model||(void 0!==e.chainname||(void 0!==e.atomname||(void 0!==e.element||void 0!==e.altloc))))}))),gl(i,fl)}function bl(e,t=!1){let i=e;return t&&(i=_l(e,(function(e){return void 0!==e.keyword&&!Jo.includes(e.keyword)||(void 0!==e.resname||(void 0!==e.resno||(void 0!==e.atomname||(void 0!==e.element||(void 0!==e.altloc||(void 0!==e.sstruc||void 0!==e.inscode))))))}))),gl(i,ml)}function xl(e,t=!1){let i=e;return t&&(i=_l(e,(function(e){return void 0!==e.keyword||(void 0!==e.chainname||(void 0!==e.resname||(void 0!==e.resno||(void 0!==e.atomname||(void 0!==e.element||(void 0!==e.altloc||(void 0!==e.sstruc||void 0!==e.inscode)))))))}))),gl(i,pl)}class wl{constructor(e){this.signals={stringChanged:new Yo.Signal},this.setString(e)}get type(){return"selection"}setString(e,t){if(void 0===e&&(e=this.string||""),e===this.string)return;try{this.selection=function(e){let t={operator:void 0,rules:[]};if(!e)return t;let i,n,r=t;const s=[];"("===(e=e.replace(/\(/g," ( ").replace(/\)/g," ) ").trim()).charAt(0)&&")"===e.substr(-1)&&(e=e.slice(1,-1).trim());const a=e.split(/\s+/),o=e=>{i={operator:e,rules:[]},void 0===r?(r=i,t=i):(r.rules.push(i),s.push(r),r=i)},l=function(e){n=r,r=s.pop(),void 0===r&&(o(e),c(n))},c=function(e){r.rules.push(e)};let u=!1;for(let e=0;e0)if("NOT"===i)u=1;else if(1===u)u=2;else{if(2!==u)throw new Error("something went wrong with 'not'");u=!1,l()}if("AND"===i){if("OR"===r.operator){const e=r.rules.pop();o("AND"),c(e)}else r.operator="AND";continue}if("OR"===i){"AND"===r.operator?l("OR"):r.operator="OR";continue}if("NOT"===t.toUpperCase()){u=1,o(),r.negate=!0;continue}if(+i!=+i){const e=Xo[i];if(void 0!==e){c({keyword:e});continue}}if("HYDROGEN"===i){c({operator:"OR",rules:[{element:"H"},{element:"D"}]});continue}if("SMALL"===i){c({resname:el});continue}if("NUCLEOPHILIC"===i){c({resname:tl});continue}if("HYDROPHOBIC"===i){c({resname:il});continue}if("AROMATIC"===i){c({resname:nl});continue}if("AMIDE"===i){c({resname:rl});continue}if("ACIDIC"===i){c({resname:sl});continue}if("BASIC"===i){c({resname:al});continue}if("CHARGED"===i){c({resname:ol});continue}if("POLAR"===i){c({resname:ll});continue}if("NONPOLAR"===i){c({resname:cl});continue}if("CYCLIC"===i){c({resname:ul});continue}if("ALIPHATIC"===i){c({resname:hl});continue}if("SIDECHAINATTACHED"===i){c({operator:"OR",rules:[{keyword:Xo.SIDECHAIN},{operator:"AND",negate:!1,rules:[{keyword:Xo.PROTEIN},{operator:"OR",negate:!1,rules:[{atomname:"CA"},{atomname:"BB"}]}]},{operator:"AND",negate:!1,rules:[{resname:"PRO"},{atomname:"N"}]},{operator:"AND",negate:!1,rules:[{keyword:Xo.NUCLEIC},{operator:"OR",negate:!0,rules:[{atomname:"P"},{atomname:"OP1"},{atomname:"OP2"},{atomname:"O3'"},{atomname:"O3*"},{atomname:"HO3'"},{atomname:"O5'"},{atomname:"O5*"},{atomname:"HO5'"},{atomname:"C5'"},{atomname:"C5*"},{atomname:"H5'"},{atomname:"H5''"}]}]}]});continue}if("APOLARH"===i){c({operator:"AND",negate:!1,rules:[{element:"H"},{negate:!0,operator:void 0,rules:[{keyword:Xo.POLARH}]}]});continue}if("LIGAND"===i){c({operator:"AND",rules:[{operator:"OR",rules:[{operator:"AND",rules:[{keyword:Xo.HETERO},{negate:!0,operator:void 0,rules:[{keyword:Xo.POLYMER}]}]},{negate:!0,operator:void 0,rules:[{keyword:Xo.POLYMER}]}]},{negate:!0,operator:void 0,rules:[{operator:"OR",rules:[{keyword:Xo.WATER},{keyword:Xo.ION}]}]}]});continue}if(-1!==Ko.indexOf(i)){c({keyword:Xo.ALL});continue}if("@"===t.charAt(0)){const e=t.substr(1).split(",").map((e=>parseInt(e)));e.sort((function(e,t){return e-t})),c({atomindex:e});continue}if("#"===t.charAt(0)){console.error("# for element selection deprecated, use _"),c({element:i.substr(1)});continue}if("_"===t.charAt(0)){c({element:i.substr(1)});continue}if("["===t[0]&&"]"===t[t.length-1]){const e=i.substr(1,t.length-2).split(","),n=e.length>1?e:e[0];c({resname:n});continue}if(t.length>=1&&t.length<=4&&"^"!==t[0]&&":"!==t[0]&&"."!==t[0]&&"%"!==t[0]&&"/"!==t[0]&&isNaN(parseInt(t))){c({resname:i});continue}const n={operator:"AND",rules:[]},s=t.split("/");if(s.length>1&&s[1]){if(isNaN(parseInt(s[1])))throw new Error("model must be an integer");n.rules.push({model:parseInt(s[1])})}const h=s[0].split("%");h.length>1&&n.rules.push({altloc:h[1]});const d=h[0].split(".");if(d.length>1&&d[1]){if(d[1].length>4)throw new Error("atomname must be one to four characters");n.rules.push({atomname:d[1].substring(0,4).toUpperCase()})}const f=d[0].split(":");f.length>1&&f[1]&&n.rules.push({chainname:f[1]});const m=f[0].split("^");if(m.length>1&&n.rules.push({inscode:m[1]}),m[0]){let e,t;"-"===m[0][0]&&(m[0]=m[0].substr(1),e=!0),m[0].includes("--")&&(m[0]=m[0].replace("--","-"),t=!0);let i=m[0].split("-");if(1===i.length){let t=parseInt(i[0]);if(isNaN(t))throw new Error("resi must be an integer");e&&(t*=-1),n.rules.push({resno:t})}else{if(2!==i.length)throw new Error("resi range must contain one '-'");{const r=i.map((e=>parseInt(e)));e&&(r[0]*=-1),t&&(r[1]*=-1),n.rules.push({resno:[r[0],r[1]]})}}}if(1===n.rules.length)c(n.rules[0]);else{if(!(n.rules.length>1))throw new Error("empty selection chunk");c(n)}}return void 0===t.operator&&1===t.rules.length&&t.rules[0].hasOwnProperty("operator")&&(t=t.rules[0]),t}(e)}catch(e){this.selection={error:e.message}}const i=this.selection;this.string=e,this.test=yl(i),this.residueTest=vl(i),this.chainTest=bl(i),this.modelTest=xl(i),this.atomOnlyTest=yl(i,!0),this.residueOnlyTest=vl(i,!0),this.chainOnlyTest=bl(i,!0),this.modelOnlyTest=xl(i,!0),t||this.signals.stringChanged.dispatch(this.string)}isAllSelection(){return Ko.includes(this.string.toUpperCase())}isNoneSelection(){return Zo.includes(this.string.toUpperCase())}}class Sl extends qo{constructor(e){super(e),this.colormakerList=[],this.selectionList=[];(e.dataList||[]).forEach((e=>{const[t,i,n={}]=e;$l.hasScheme(t)?Object.assign(n,{scheme:t,structure:this.parameters.structure}):Object.assign(n,{scheme:"uniform",value:new Oi(t).getHex()}),this.colormakerList.push($l.getScheme(n)),this.selectionList.push(new wl(i))}))}atomColor(e){for(let t=0,i=this.selectionList.length;t{}),e)}catch(e){}const Rl="undefined"!=typeof window&&void 0!==window.orientation;let Ll=!1;function kl(e){Ll=e}let Ol=!1;function Nl(e){Ol=e}const Fl={log:Function.prototype.bind.call(console.log,console),info:Function.prototype.bind.call(console.info,console),warn:Function.prototype.bind.call(console.warn,console),error:Function.prototype.bind.call(console.error,console),time:Function.prototype.bind.call(console.time,console),timeEnd:Function.prototype.bind.call(console.timeEnd,console)};let Bl={color:"green",labelColor:8421504,labelAttachment:"bottom-center",labelSize:.7,labelZOffset:.5,labelYOffset:.1,labelBorder:!0,labelBorderColor:13882323,labelBorderWidth:.25,lineOpacity:.8,linewidth:5,opacity:.6,labelUnit:"angstrom",arcVisible:!0,planeVisible:!1};var zl;e.Debug=!!(zl=co("debug"))&&("string"!=typeof zl||/^1|true|t|yes|y$/i.test(zl));const Ul=["ngl","js"],Vl=new class{constructor(){this.activeWorkerCount=0,this._funcDict={},this._depsDict={},this._blobDict={}}add(e,t,i){this._funcDict[e]=t,this._depsDict[e]=i}get(e){return this._blobDict[e]||(this._blobDict[e]=El(this._funcDict[e],this._depsDict[e])),this._blobDict[e]}},$l=new class{constructor(){this.schemes={},this.userSchemes={}}getScheme(e){const t=((e||{}).scheme||"").toLowerCase();let i;return i=t in this.schemes?this.schemes[t]:t in this.userSchemes?this.userSchemes[t]:qo,new i(e)}getSchemes(){const e={};return Object.keys(this.schemes).forEach((function(t){e[t]=t})),Object.keys(this.userSchemes).forEach((function(t){e[t]=t.split("|")[1]})),e}getScales(){return Ml}getModes(){return Al}add(e,t){e=e.toLowerCase(),this.schemes[e]=t}addScheme(e,t){return function(e){return e instanceof qo}(e)||(e=this._createScheme(e)),this._addUserScheme(e,t)}_addUserScheme(e,t){t=t||"";const i=`${Oo()}|${t}`.toLowerCase();return this.userSchemes[i]=e,i}removeScheme(e){e=e.toLowerCase(),delete this.userSchemes[e]}_createScheme(e){return class extends qo{constructor(t){super(t),e.call(this,t)}}}addSelectionScheme(e,t){return this._addUserScheme(class extends Sl{constructor(t){super(Object.assign({dataList:e},t))}},t)}hasScheme(e){return(e=e.toLowerCase())in this.schemes||e in this.userSchemes}},Gl=new Do("datasource"),Hl=new Do("representatation"),jl=new class extends Do{constructor(){super("parser")}__hasObjName(e,t){const i=this.get(e);return i&&i.prototype.__objName===t}isTrajectory(e){return this.__hasObjName(e,"frames")}isStructure(e){return this.__hasObjName(e,"structure")}isVolume(e){return this.__hasObjName(e,"volume")}isSurface(e){return this.__hasObjName(e,"surface")}isBinary(e){const t=this.get(e);return t&&t.prototype.isBinary}isXml(e){const t=this.get(e);return t&&t.prototype.isXml}isJson(e){const t=this.get(e);return t&&t.prototype.isJson}getTrajectoryExtensions(){return this.names.filter((e=>this.isTrajectory(e)))}getStructureExtensions(){return this.names.filter((e=>this.isStructure(e)))}getVolumeExtensions(){return this.names.filter((e=>this.isVolume(e)))}getSurfaceExtensions(){return this.names.filter((e=>this.isSurface(e)))}},Wl=new Do("shader"),ql=new Do("decompressor"),Xl=new Do("component"),Yl=new Do("buffer"),Kl=new Do("picker");e.ListingDatasource=void 0,e.TrajectoryDatasource=void 0;class Zl{constructor(e,t={}){this.chunkSize=10485760,this.newline="\n",this.__pointer=0,this.__partialLine="",this.compressed=uo(t.compressed,!1),this.binary=uo(t.binary,!1),this.json=uo(t.json,!1),this.xml=uo(t.xml,!1),this.src=e}isBinary(){return this.binary||this.compressed}read(){return this._read().then((e=>{const t=this.compressed?ql.get(this.compressed):void 0;return this.compressed&&t?this.data=t(e):((this.binary||this.compressed)&&e instanceof ArrayBuffer&&(e=new Uint8Array(e)),this.data=e),this.data}))}_chunk(e,t){return t=Math.min(this.data.length,t),0===e&&this.data.length===t?this.data:this.isBinary()?this.data.subarray(e,t):this.data.substring(e,t)}chunk(e){const t=e+this.chunkSize;return this._chunk(e,t)}peekLines(e){const t=this.data,i=t.length,n=this.isBinary()?this.newline.charCodeAt(0):this.newline;let r,s=0;for(r=0;ri).lines}chunkCount(){return Math.floor(this.data.length/this.chunkSize)+1}asText(){return this.isBinary()?xo(this.data):this.data}chunkToLines(e,t,i){const n=this.newline;if(!this.isBinary()&&e.length===this.data.length)return{lines:e.split(n),partialLine:""};let r=[];const s=this.isBinary()?xo(e):e,a=s.lastIndexOf(n);if(-1===a)t+=s;else{const e=t+s.substr(0,a);r=r.concat(e.split(n)),t=a===s.length-n.length?"":s.substr(a+n.length)}return i&&""!==t&&r.push(t),{lines:r,partialLine:t}}nextChunk(){const e=this.__pointer;if(!(e>this.data.length))return this.__pointer+=this.chunkSize,this.chunk(e)}nextChunkOfLines(){const e=this.nextChunk();if(void 0===e)return;const t=this.__pointer>this.data.length,i=this.chunkToLines(e,this.__partialLine,t);return this.__partialLine=i.partialLine,i.lines}eachChunk(e){const t=this.chunkSize,i=this.data.length,n=this.chunkCount();for(let r=0;r{const r=i===n+1,s=this.chunkToLines(t,this.__partialLine,r);this.__partialLine=s.partialLine,e(s.lines,i,n)}))}dispose(){delete this.src}}class Ql extends Zl{_read(){return new Promise(((e,t)=>{const i=this.src,n=new FileReader;n.onload=t=>{t.target&&e(t.target.result)},n.onerror=e=>t(e),this.binary||this.compressed?n.readAsArrayBuffer(i):n.readAsText(i)}))}}class Jl extends Zl{_read(){return new Promise(((e,t)=>{const i=this.src,n=new XMLHttpRequest;n.open("GET",i,!0),n.addEventListener("load",(()=>{if(200===n.status||304===n.status||0===n.status)try{e(n.response)}catch(e){t(e)}else t(n.statusText)}),!1),n.addEventListener("error",(e=>t("network error")),!1),this.isBinary()?n.responseType="arraybuffer":this.json?n.responseType="json":this.xml?n.responseType="document":n.responseType="text",n.send()}))}}class ec{constructor(e,t={}){this.parameters=ho(t,{ext:"",compressed:!1,binary:jl.isBinary(t.ext||""),name:"",dir:"",path:"",protocol:""});const i={compressed:this.parameters.compressed,binary:this.parameters.binary,json:jl.isJson(this.parameters.ext),xml:jl.isXml(this.parameters.ext)};"undefined"!=typeof File&&e instanceof File||"undefined"!=typeof Blob&&e instanceof Blob?this.streamer=new Ql(e,i):this.streamer=new Jl(e,i)}}class tc extends ec{constructor(e,t={}){super(e,t),this.parserParams={voxelSize:t.voxelSize,firstModelOnly:t.firstModelOnly,asTrajectory:t.asTrajectory,cAlphaOnly:t.cAlphaOnly,delimiter:t.delimiter,comment:t.comment,columnNames:t.columnNames,inferBonds:t.inferBonds,name:this.parameters.name,path:this.parameters.path}}load(){return new(jl.get(this.parameters.ext))(this.streamer,this.parserParams).parse()}}class ic{constructor(e,t,i){this.name=t,this.path=i,this.signals={elementAdded:new Yo.Signal,elementRemoved:new Yo.Signal,nameChanged:new Yo.Signal},this.type="Script",this.dir=i.substring(0,i.lastIndexOf("/")+1);try{this.fn=new Function("stage","__name","__path","__dir",e)}catch(e){Fl.error("Script compilation failed",e),this.fn=function(){}}}run(e){return new Promise(((t,i)=>{try{this.fn.apply(null,[e,this.name,this.path,this.dir]),t()}catch(e){Fl.error("Script.fn",e),i(e)}}))}}class nc extends ec{load(){return this.streamer.read().then((()=>new ic(this.streamer.asText(),this.parameters.name,this.parameters.path)))}}function rc(e){const t=ql.names;let i,n,r="";i=e instanceof File?e.name:e instanceof Blob?"":e;const s=i.lastIndexOf("?"),a=-1!==s?i.substring(s):"";i=i.substring(0,-1===s?i.length:s);const o=i.replace(/^.*[\\/]/,"");let l=o.substring(0,o.lastIndexOf("."));const c=o.split(".");let u=c.length>1?(c.pop()||"").toLowerCase():"";const h=i.match(/^(.+):\/\/(.+)$/);h&&(r=h[1].toLowerCase(),i=h[2]||"");const d=i.substring(0,i.lastIndexOf("/")+1);if(t.includes(u)){n=u;const e=i.length-u.length-1;u=(i.substr(0,e).split(".").pop()||"").toLowerCase();const t=l.length-u.length-1;l=l.substr(0,t)}else n=!1;return{path:i,name:o,ext:u,base:l,dir:d,compressed:n,protocol:r,query:a,src:e}}function sc(e){let t=rc(e);const i=Gl.get(t.protocol);return i&&(t=rc(i.getUrl(t.src)),!t.ext&&i.getExt&&(t.ext=i.getExt(e))),t}function ac(e,t={}){const i=Object.assign(sc(e),t);let n;return jl.names.includes(i.ext)?n=new tc(i.src,i):Ul.includes(i.ext)&&(n=new nc(i.src,i)),n?n.load():Promise.reject(new Error(`autoLoad: ext '${i.ext}' unknown`))}var oc=Vo((function(e,t){!function(){var e={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function i(t){return function(t,n){var r,s,a,o,l,c,u,h,d,f=1,m=t.length,p="";for(s=0;s=0),o.type){case"b":r=parseInt(r,10).toString(2);break;case"c":r=String.fromCharCode(parseInt(r,10));break;case"d":case"i":r=parseInt(r,10);break;case"j":r=JSON.stringify(r,null,o.width?parseInt(o.width):0);break;case"e":r=o.precision?parseFloat(r).toExponential(o.precision):parseFloat(r).toExponential();break;case"f":r=o.precision?parseFloat(r).toFixed(o.precision):parseFloat(r);break;case"g":r=o.precision?String(Number(r.toPrecision(o.precision))):parseFloat(r);break;case"o":r=(parseInt(r,10)>>>0).toString(8);break;case"s":r=String(r),r=o.precision?r.substring(0,o.precision):r;break;case"t":r=String(!!r),r=o.precision?r.substring(0,o.precision):r;break;case"T":r=Object.prototype.toString.call(r).slice(8,-1).toLowerCase(),r=o.precision?r.substring(0,o.precision):r;break;case"u":r=parseInt(r,10)>>>0;break;case"v":r=r.valueOf(),r=o.precision?r.substring(0,o.precision):r;break;case"x":r=(parseInt(r,10)>>>0).toString(16);break;case"X":r=(parseInt(r,10)>>>0).toString(16).toUpperCase()}e.json.test(o.type)?p+=r:(!e.number.test(o.type)||h&&!o.sign?d="":(d=h?"+":"-",r=r.toString().replace(e.sign,"")),c=o.pad_char?"0"===o.pad_char?"0":o.pad_char.charAt(1):" ",u=o.width-(d+r).length,l=o.width&&u>0?c.repeat(u):"",p+=o.align?d+r+l:"0"===c?d+l+r:l+d+r)}return p}(function(t){if(r[t])return r[t];var i,n=t,s=[],a=0;for(;n;){if(null!==(i=e.text.exec(n)))s.push(i[0]);else if(null!==(i=e.modulo.exec(n)))s.push("%");else{if(null===(i=e.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(i[2]){a|=1;var o=[],l=i[2],c=[];if(null===(c=e.key.exec(l)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(o.push(c[1]);""!==(l=l.substring(c[0].length));)if(null!==(c=e.key_access.exec(l)))o.push(c[1]);else{if(null===(c=e.index_access.exec(l)))throw new SyntaxError("[sprintf] failed to parse named argument key");o.push(c[1])}i[2]=o}else a|=2;if(3===a)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");s.push({placeholder:i[0],param_no:i[1],keys:i[2],sign:i[3],pad_char:i[4],align:i[5],width:i[6],precision:i[7],type:i[8]})}n=n.substring(i[0].length)}return r[t]=s}(t),arguments)}function n(e,t){return i.apply(null,[e].concat(t||[]))}var r=Object.create(null);t.sprintf=i,t.vsprintf=n,"undefined"!=typeof window&&(window.sprintf=i,window.vsprintf=n)}()}));class lc{getBlob(){return new Blob([this.getData()],{type:this.mimeType})}download(e,t){e=uo(e,this.defaultName),t=uo(t,this.defaultExt),go(this.getBlob(),`${e}.${t}`)}}const cc=[];class uc{constructor(e,t={}){this._mark=0,this._marks=[],this.offset=0,this.littleEndian=!0;let i=!1;void 0===e&&(e=8192),"number"==typeof e?e=new ArrayBuffer(e):i=!0;const n=t.offset?t.offset>>>0:0;let r=e.byteLength-n,s=n;e instanceof ArrayBuffer||(e.byteLength!==e.buffer.byteLength&&(s=e.byteOffset+n),e=e.buffer),this._lastWrittenByte=i?r:0,this.buffer=e,this.length=r,this.byteLength=r,this.byteOffset=s,this._data=new DataView(this.buffer,s,r)}available(e){return void 0===e&&(e=1),this.offset+e<=this.length}isLittleEndian(){return this.littleEndian}setLittleEndian(){return this.littleEndian=!0,this}isBigEndian(){return!this.littleEndian}setBigEndian(){return this.littleEndian=!1,this}skip(e){return void 0===e&&(e=1),this.offset+=e,this}seek(e){return this.offset=e,this}mark(){return this._mark=this.offset,this}reset(){return this.offset=this._mark,this}pushMark(){return this._marks.push(this.offset),this}popMark(){const e=this._marks.pop();if(void 0===e)throw new Error("Mark stack empty");return this.seek(e),this}rewind(){return this.offset=0,this}ensureAvailable(e){if(void 0===e&&(e=1),!this.available(e)){const t=2*(this.offset+e),i=new Uint8Array(t);i.set(new Uint8Array(this.buffer)),this.buffer=i.buffer,this.length=this.byteLength=t,this._data=new DataView(this.buffer)}return this}readBoolean(){return 0!==this.readUint8()}readInt8(){return this._data.getInt8(this.offset++)}readUint8(){return this._data.getUint8(this.offset++)}readByte(){return this.readUint8()}readBytes(e){void 0===e&&(e=1);for(var t=new Uint8Array(e),i=0;ithis._lastWrittenByte&&(this._lastWrittenByte=this.offset)}}class hc{constructor(){this.count=0,this.signals={countChanged:new Yo.Signal}}clear(){this.change(-this.count)}change(e){this.count+=e,this.signals.countChanged.dispatch(e,this.count),this.count<0&&Fl.warn("Counter.count below zero",this.count)}increment(){this.change(1)}decrement(){this.change(-1)}listen(e){this.change(e.count),e.signals.countChanged.add(this.change,this)}unlisten(e){const t=e.signals.countChanged;t.has(this.change,this)&&t.remove(this.change,this)}onZeroOnce(e,t){if(0===this.count)e.call(t);else{const i=()=>{0===this.count&&(this.signals.countChanged.remove(i,this),e.call(t))};this.signals.countChanged.add(i,this)}}dispose(){this.clear(),this.signals.countChanged.dispose()}}Wl.add("shader/BasicLine.vert","void main(){\n#include begin_vertex\n#include project_vertex\n}"),Wl.add("shader/BasicLine.frag","uniform vec3 uColor;\n#include common\n#include fog_pars_fragment\nvoid main(){\ngl_FragColor = vec4( uColor, 1.0 );\n#include premultiplied_alpha_fragment\n#include tonemapping_fragment\n#include colorspace_fragment\n#include fog_fragment\n}"),Wl.add("shader/Quad.vert","varying vec2 vUv;\nvoid main() {\nvUv = uv;\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}"),Wl.add("shader/Quad.frag","varying vec2 vUv;\nuniform sampler2D tForeground;\nuniform float scale;\nvoid main() {\nvec4 foreground = texture2D( tForeground, vUv );\ngl_FragColor = foreground * scale;\n}");class dc{constructor(){this.signals={updated:new Yo.Signal},this.maxDuration=-1/0,this.minDuration=1/0,this.avgDuration=14,this.lastDuration=1/0,this.prevFpsTime=0,this.lastFps=1/0,this.lastFrames=1,this.frames=0,this.count=0,this.begin()}update(){this.startTime=this.end(),this.currentTime=this.startTime,this.signals.updated.dispatch()}begin(){this.startTime=window.performance.now(),this.lastFrames=this.frames}end(){const e=window.performance.now();return this.count+=1,this.frames+=1,this.lastDuration=e-this.startTime,this.minDuration=Math.min(this.minDuration,this.lastDuration),this.maxDuration=Math.max(this.maxDuration,this.lastDuration),this.avgDuration-=this.avgDuration/30,this.avgDuration+=this.lastDuration/30,e>this.prevFpsTime+1e3&&(this.lastFps=this.frames,this.prevFpsTime=e,this.frames=0),e}}Wl.add("shader/chunk/fog_fragment.glsl","#ifdef USE_FOG\nfloat depth = length( vViewPosition );\n#ifdef FOG_EXP2\nfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * depth * depth * LOG2 ) );\n#else\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n#endif\ngl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif"),Wl.add("shader/chunk/interior_fragment.glsl","if( gl_FrontFacing == false ){\n#ifdef USE_INTERIOR_COLOR\noutgoingLight.xyz = interiorColor;\n#else\n#ifdef DIFFUSE_INTERIOR\noutgoingLight.xyz = vColor;\n#endif\n#endif\noutgoingLight.xyz *= 1.0 - interiorDarkening;\n}"),Wl.add("shader/chunk/matrix_scale.glsl","float matrixScale( in mat4 m ){\nvec4 r = m[ 0 ];\nreturn sqrt( r[ 0 ] * r[ 0 ] + r[ 1 ] * r[ 1 ] + r[ 2 ] * r[ 2 ] );\n}"),Wl.add("shader/chunk/nearclip_vertex.glsl","#ifdef NEAR_CLIP\nif( vViewPosition.z < clipNear - 5.0 )\ngl_Position.z = 2.0 * gl_Position.w;\n#endif"),Wl.add("shader/chunk/nearclip_fragment.glsl","#ifdef NEAR_CLIP\nif( vViewPosition.z < clipNear )\ndiscard;\n#endif"),Wl.add("shader/chunk/opaque_back_fragment.glsl","#ifdef OPAQUE_BACK\n#ifdef FLIP_SIDED\nif( gl_FrontFacing == true ){\ngl_FragColor.a = 1.0;\n}\n#else\nif( gl_FrontFacing == false ){\ngl_FragColor.a = 1.0;\n}\n#endif\n#endif"),Wl.add("shader/chunk/radiusclip_vertex.glsl","#ifdef RADIUS_CLIP\nif( distance( vViewPosition, vClipCenter ) > clipRadius + 5.0 )\ngl_Position.z = 2.0 * gl_Position.w;\n#endif"),Wl.add("shader/chunk/radiusclip_fragment.glsl","#ifdef RADIUS_CLIP\nif( distance( vViewPosition, vClipCenter ) > clipRadius )\ndiscard;\n#endif"),Wl.add("shader/chunk/unpack_color.glsl","vec3 unpackColor(float f) {\nvec3 color;\ncolor.r = floor(f / 256.0 / 256.0);\ncolor.g = floor((f - color.r * 256.0 * 256.0) / 256.0);\ncolor.b = floor(f - color.r * 256.0 * 256.0 - color.g * 256.0);\nreturn color / 255.0;\n}");const fc=/^(?!\/\/)\s*#include\s+(\S+)/gim,mc={};function pc(e,t={}){let i=e+"|";for(const e in t)i+=e+":"+t[e];if(!mc[i]){const n=function(e){if(void 0===e)return"";const t=[];for(const i in e){const n=e[i];n&&t.push(`#define ${i} ${n}`)}return t.join("\n")+"\n"}(t);let r=Wl.get(`shader/${e}`);if(!r)throw new Error(`empty shader, '${e}'`);r=r.replace(fc,(function(e,t){const i=`shader/chunk/${t}.glsl`,n=Wl.get(i)||$n[t];if(!n)throw new Error(`empty chunk, '${t}'`);return n})),mc[i]=n+r}return mc[i]}if("undefined"!=typeof WebGLRenderingContext){const t=WebGLRenderingContext.prototype,i=t.getShaderParameter;t.getShaderParameter=function(){return!e.Debug||i.apply(this,arguments)};const n=t.getShaderInfoLog;t.getShaderInfoLog=function(){return e.Debug?n.apply(this,arguments):""};const r=t.getProgramParameter;t.getProgramParameter=function(i,n){return!e.Debug&&n===t.LINK_STATUS||r.apply(this,arguments)};const s=t.getProgramInfoLog;t.getProgramInfoLog=function(){return e.Debug?s.apply(this,arguments):""}}const gc=[[[0,0]],[[4,4],[-4,-4]],[[-2,-6],[6,-2],[-6,2],[2,6]],[[1,-3],[-1,3],[5,1],[-3,-5],[-5,5],[-7,-1],[3,7],[7,-7]],[[1,1],[-1,-3],[-3,2],[4,-1],[-5,-2],[2,5],[5,3],[3,-5],[-2,6],[0,-7],[-4,-6],[-6,4],[-8,0],[7,-4],[6,7],[-7,-8]],[[-4,-7],[-7,-5],[-3,-5],[-5,-4],[-1,-4],[-2,-2],[-6,-1],[-4,0],[-7,1],[-1,2],[-6,3],[-3,3],[-7,6],[-3,6],[-5,7],[-1,7],[5,-7],[1,-6],[6,-5],[4,-4],[2,-3],[7,-2],[1,-1],[4,-1],[2,1],[6,2],[0,4],[4,4],[2,5],[7,5],[5,6],[3,7]]];gc.forEach((e=>{e.forEach((e=>{e[0]*=.0625,e[1]*=.0625}))}));class _c{constructor(e,t,i,n){this.canvas=document.createElement("canvas"),this._viewer=i,this._factor=uo(n.factor,2),this._antialias=uo(n.antialias,!1),this._onProgress=n.onProgress,this._onFinish=n.onFinish,this._antialias&&(this._factor*=2),this._n=this._factor*this._factor,this._width=this._viewer.width,this._height=this._viewer.height,this._antialias?(this.canvas.width=this._width*this._factor/2,this.canvas.height=this._height*this._factor/2):(this.canvas.width=this._width*this._factor,this.canvas.height=this._height*this._factor),this._ctx=this.canvas.getContext("2d"),this._viewerSampleLevel=i.sampleLevel,this._viewer.setSampling(-1)}_renderTile(e){const t=this._viewer,i=this._width,n=this._height,r=this._factor,s=e%r*i,a=Math.floor(e/r)*n;if(t.camera.setViewOffset(i*r,n*r,s,a,i,n),t.render(),this._antialias){const e=Math.round((s+i)/2)-Math.round(s/2),r=Math.round((a+n)/2)-Math.round(a/2);this._ctx.drawImage(t.renderer.domElement,Math.round(s/2),Math.round(a/2),e,r)}else this._ctx.drawImage(t.renderer.domElement,Math.floor(s),Math.floor(a),Math.ceil(i),Math.ceil(n));"function"==typeof this._onProgress&&this._onProgress(e+1,this._n,!1)}_finalize(){this._viewer.setSampling(this._viewerSampleLevel),this._viewer.camera.view=null,"function"==typeof this._onFinish&&this._onFinish(this._n+1,this._n,!1)}render(){for(let e=0;e<=this._n;++e)e===this._n?this._finalize():this._renderTile(e)}renderAsync(){let e=0;const t=this._n,i=()=>{e===t?this._finalize():this._renderTile(e),e+=1};for(let e=0;e<=t;++e)setTimeout(i,0)}}const yc=2*Math.PI,vc=180/Math.PI;function bc(e,t,i=1,n=0,r){const s=r?r.length:e.length/i;let a=0,o=0;if(r)for(let l=0;lt&&(t=e[i]);return t}function Dc(e){let t=1/0;for(let i=0,n=e.length;i=0;c--){for(l=a-1;l>=0;l--)if(h=4*(c*a+l),o[h]!==t||o[h+1]!==i||o[h+2]!==n||o[h+3]!==r){u=!0;break}if(u)break}const m=c;for(u=!1,l=a-1;l>=0;l--){for(c=s-1;c>=0;c--)if(h=4*(c*a+l),o[h]!==t||o[h+1]!==i||o[h+2]!==n||o[h+3]!==r){u=!0;break}if(u)break}const p=l,g=document.createElement("canvas");return g.width=p-f,g.height=m-d,g.getContext("2d").drawImage(e,f,d,g.width,g.height,0,0,g.width,g.height),g}(e,s?0:255*t.r,s?0:255*t.g,s?0:255*t.b,s?0:255)}return e}function d(e,i,n){"function"==typeof t.onProgress&&t.onProgress(e,i,n)}return new Promise((function(t,i){const c=new _c(a,o,e,{factor:n,antialias:r,onProgress:d,onFinish:function(n,r){h(c.canvas).toBlob((function(n){a.setClearAlpha(l),u(!0),e.requestRender(),d(r,r,!0),n?t(n):i("error creating image")}),"image/png")}});a.setClearAlpha(s?0:1),u(),c.renderAsync()}))}const Nc=new _t,Fc=new qt,Bc=new qt;const zc=new Ge,Uc=new qt,Vc=new qt;function $c(e,t){Uc.copy(t.projectionMatrix).invert(),Vc.copy(t.projectionMatrix).transpose(),e.traverse((function(e){const t=e.material;if(!t)return;const i=t.uniforms;i&&(i.projectionMatrixInverse&&i.projectionMatrixInverse.value.copy(Uc),i.projectionMatrixTranspose&&i.projectionMatrixTranspose.value.copy(Vc))}))}function Gc(e,t,i){const n=e.createShader(i);if(!n)return void console.log(`error creating WebGL shader ${i}`);e.shaderSource(n,t),e.compileShader(n);return e.getShaderParameter(n,e.COMPILE_STATUS)?n:(console.log(`error compiling shader ${n}: ${e.getShaderInfoLog(n)}`),e.deleteShader(n),null)}function Hc(e,t){const i=e.getExtension(t);return i||console.log(`extension '${t}' not available`),i}const jc=new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]);function Wc(e){const t=document.createElement("canvas");t.width=16,t.height=16,t.style.width="16px",t.style.height="16px";const i=t.getContext("webgl")||t.getContext("experimental-webgl");if(!i)return console.log(`error creating webgl context for ${e}`),!1;if(!(i instanceof WebGLRenderingContext))return console.log("Got unexpected type for WebGL rendering context"),!1;Hc(i,"OES_texture_float"),Hc(i,"OES_texture_half_float"),Hc(i,"WEBGL_color_buffer_float");const n=Gc(i,"\nattribute vec4 a_position;\n\nvoid main() {\n gl_Position = a_position;\n}",i.VERTEX_SHADER),r=Gc(i,"\nprecision mediump float;\nuniform vec4 u_color;\nuniform sampler2D u_texture;\n\nvoid main() {\n gl_FragColor = texture2D(u_texture, vec2(0.5, 0.5)) * u_color;\n}",i.FRAGMENT_SHADER);if(!n||!r)return!1;const s=function(e,t,i,n){const r=e.createProgram();return r?(t.forEach((t=>e.attachShader(r,t))),i&&i.forEach(((t,i)=>{e.bindAttribLocation(r,n?n[i]:i,t)})),e.linkProgram(r),e.getProgramParameter(r,e.LINK_STATUS)?r:(console.log(`error linking program: ${e.getProgramInfoLog(r)}`),e.deleteProgram(r),null)):void console.log("error creating WebGL program")}(i,[n,r]);if(!s)return console.log("error creating WebGL program"),!1;i.useProgram(s);const a=i.getAttribLocation(s,"a_position"),o=i.getUniformLocation(s,"u_color");if(!o)return console.log("error getting 'u_color' uniform location"),!1;const l=i.createBuffer();i.bindBuffer(i.ARRAY_BUFFER,l),i.bufferData(i.ARRAY_BUFFER,jc,i.STATIC_DRAW),i.enableVertexAttribArray(a),i.vertexAttribPointer(a,2,i.FLOAT,!1,0,0);const c=i.createTexture(),u=new Uint8Array([255,255,255,255]);i.bindTexture(i.TEXTURE_2D,c),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,1,1,0,i.RGBA,i.UNSIGNED_BYTE,u);const h=i.createTexture();i.bindTexture(i.TEXTURE_2D,h),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,1,1,0,i.RGBA,e,null),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.NEAREST);const d=i.createFramebuffer();i.bindFramebuffer(i.FRAMEBUFFER,d),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,h,0);if(i.checkFramebufferStatus(i.FRAMEBUFFER)!==i.FRAMEBUFFER_COMPLETE)return console.log(`error creating framebuffer for ${e}`),!1;i.bindTexture(i.TEXTURE_2D,c),i.uniform4fv(o,[0,10,20,1]),i.drawArrays(i.TRIANGLES,0,6),i.bindTexture(i.TEXTURE_2D,h),i.bindFramebuffer(i.FRAMEBUFFER,null),i.clearColor(1,0,0,1),i.clear(i.COLOR_BUFFER_BIT),i.uniform4fv(o,[0,.1,.05,1]),i.drawArrays(i.TRIANGLES,0,6);const f=new Uint8Array(4);if(i.readPixels(0,0,1,1,i.RGBA,i.UNSIGNED_BYTE,f),0!==f[0]||f[1]<248||f[2]<248||f[3]<254)return console.log(`not able to actually render to ${e} texture`),!1;if(e===i.FLOAT){i.bindFramebuffer(i.FRAMEBUFFER,d);const e=new Float32Array(4);i.readPixels(0,0,1,1,i.RGBA,i.FLOAT,e);const t=i.getError();if(t)return console.log(`error reading pixels as float: '${function(e,t){switch(t){case e.NO_ERROR:return"no error";case e.INVALID_ENUM:return"invalid enum";case e.INVALID_VALUE:return"invalid value";case e.INVALID_OPERATION:return"invalid operation";case e.INVALID_FRAMEBUFFER_OPERATION:return"invalid framebuffer operation";case e.OUT_OF_MEMORY:return"out of memory";case e.CONTEXT_LOST_WEBGL:return"context lost"}return"unknown error"}(i,t)}'`),!1}return!0}const qc=new Float32Array(100),Xc=new Uint8Array(100),Yc=[12,7,13,17,11,6,8,18,16,2,14,22,10,1,3,9,19,23,21,15,5,0,4,24,20],Kc=new qt;function Zc(e,t,i,n,r){const s=r.uniforms,a=[];if(s&&(s.objectId&&(s.objectId.value=Ll?this.id:this.id/255,a.push("objectId")),(s.modelViewMatrixInverse||s.modelViewMatrixInverseTranspose||s.modelViewProjectionMatrix||s.modelViewProjectionMatrixInverse)&&this.modelViewMatrix.multiplyMatrices(i.matrixWorldInverse,this.matrixWorld),s.modelViewMatrixInverse&&(s.modelViewMatrixInverse.value.copy(this.modelViewMatrix).invert(),a.push("modelViewMatrixInverse")),s.modelViewMatrixInverseTranspose&&(s.modelViewMatrixInverse?s.modelViewMatrixInverseTranspose.value.copy(s.modelViewMatrixInverse.value).transpose():s.modelViewMatrixInverseTranspose.value.copy(this.modelViewMatrix).invert().transpose(),a.push("modelViewMatrixInverseTranspose")),s.modelViewProjectionMatrix&&(s.modelViewProjectionMatrix.value.multiplyMatrices(i.projectionMatrix,this.modelViewMatrix),a.push("modelViewProjectionMatrix")),s.modelViewProjectionMatrixInverse&&(s.modelViewProjectionMatrix?(Kc.copy(s.modelViewProjectionMatrix.value),s.modelViewProjectionMatrixInverse.value.copy(Kc.invert())):(Kc.multiplyMatrices(i.projectionMatrix,this.modelViewMatrix),s.modelViewProjectionMatrixInverse.value.copy(Kc.invert())),a.push("modelViewProjectionMatrixInverse")),a.length)){const t=e.properties.get(r);if(t.program){const i=e.getContext(),n=t.program;i.useProgram(n.program);const r=n.getUniforms();a.forEach((function(e){r.setValue(i,e,s[e].value)}))}}}class Qc{constructor(e){if(this.boundingBox=new bt,this.boundingBoxSize=new _t,this.boundingBoxLength=0,this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}},this.distVector=new _t,this.signals={ticked:new Yo.Signal,rendered:new Yo.Signal},"string"==typeof e){const t=document.getElementById(e);this.container=null===t?document.createElement("div"):t}else e instanceof HTMLElement?this.container=e:this.container=document.createElement("div");if(this.container===document.body)this.width=window.innerWidth||1,this.height=window.innerHeight||1;else{const e=this.container.getBoundingClientRect();this.width=e.width||1,this.height=e.height||1,this.container.style.overflow="hidden"}this.wrapper=document.createElement("div"),this.wrapper.style.position="relative",this.container.appendChild(this.wrapper),this._initParams(),this._initStats(),this._initCamera(),this._initScene(),!1!==this._initRenderer()?(this._initHelper(),this.setBackground(),this.setFog(),this.animate=this.animate.bind(this)):Fl.error("Viewer: could not initialize renderer")}_initParams(){this.parameters={fogColor:new Oi(0),fogNear:50,fogFar:100,backgroundColor:new Oi(0),cameraType:"perspective",cameraFov:40,cameraEyeSep:.3,cameraZ:-80,clipNear:0,clipFar:100,clipDist:10,clipMode:"scene",clipScale:"relative",lightColor:new Oi(14540253),lightIntensity:1.2,ambientColor:new Oi(14540253),ambientIntensity:.3,sampleLevel:0,outputColorSpace:"srgb-linear"}}_initCamera(){const e=new _t(0,0,0),{width:t,height:i}=this;this.perspectiveCamera=new Tn(this.parameters.cameraFov,t/i),this.perspectiveCamera.position.z=this.parameters.cameraZ,this.perspectiveCamera.lookAt(e),this.orthographicCamera=new Qn(t/-2,t/2,i/2,i/-2),this.orthographicCamera.position.z=this.parameters.cameraZ,this.orthographicCamera.lookAt(e),this.stereoCamera=new oo,this.stereoCamera.aspect=.5,this.stereoCamera.eyeSep=this.parameters.cameraEyeSep;const n=this.parameters.cameraType;if("orthographic"===n)this.camera=this.orthographicCamera;else{if("perspective"!==n&&"stereo"!==n)throw new Error(`Unknown cameraType '${n}'`);this.camera=this.perspectiveCamera}this.camera.updateProjectionMatrix()}_initStats(){this.stats=new dc}_initScene(){this.scene||(this.scene=new Sa,this.scene.name="scene"),this.rotationGroup=new ma,this.rotationGroup.name="rotationGroup",this.scene.add(this.rotationGroup),this.translationGroup=new ma,this.translationGroup.name="translationGroup",this.rotationGroup.add(this.translationGroup),this.modelGroup=new ma,this.modelGroup.name="modelGroup",this.translationGroup.add(this.modelGroup),this.pickingGroup=new ma,this.pickingGroup.name="pickingGroup",this.translationGroup.add(this.pickingGroup),this.backgroundGroup=new ma,this.backgroundGroup.name="backgroundGroup",this.translationGroup.add(this.backgroundGroup),this.helperGroup=new ma,this.helperGroup.name="helperGroup",this.translationGroup.add(this.helperGroup),this.scene.fog=new wa(this.parameters.fogColor.getHex()),this.directionalLight=new io(this.parameters.lightColor.getHex(),this.parameters.lightIntensity),this.scene.add(this.directionalLight),this.ambientLight=new no(this.parameters.ambientColor.getHex(),this.parameters.ambientIntensity),this.scene.add(this.ambientLight)}_initRenderer(){const t=window.devicePixelRatio,{width:i,height:n}=this;try{this.renderer=new xa({preserveDrawingBuffer:!0,alpha:!0,antialias:!0})}catch(e){return this.wrapper.innerHTML='

Your browser/graphics card does not seem to support WebGL.

Find out how to get it here.

',!1}this.renderer.setPixelRatio(t),this.renderer.setSize(i,n),this.renderer.autoClear=!1,this.renderer.sortObjects=!0,this.renderer.outputColorSpace=this.parameters.outputColorSpace,this.renderer.useLegacyLights=!0;const r=this.renderer.getContext();this.renderer.capabilities.isWebGL2?(Nl(!0),kl(this.renderer.extensions.get("EXT_color_buffer_float")),this.supportsHalfFloat=!0):(Nl(this.renderer.extensions.get("EXT_frag_depth")),this.renderer.extensions.get("OES_element_index_uint"),kl(this.renderer.extensions.get("OES_texture_float")&&this.renderer.extensions.get("WEBGL_color_buffer_float")||this.renderer.extensions.get("OES_texture_float")&&Wc(r.FLOAT)),this.renderer.extensions.get("OES_texture_float"),this.supportsHalfFloat=this.renderer.extensions.get("OES_texture_half_float")&&Wc(36193)),this.wrapper.appendChild(this.renderer.domElement);const s=i*t,a=n*t;e.Debug&&console.log(JSON.stringify({Browser:Il,OES_texture_float:!!this.renderer.extensions.get("OES_texture_float"),OES_texture_half_float:!!this.renderer.extensions.get("OES_texture_half_float"),WEBGL_color_buffer_float:!!this.renderer.extensions.get("WEBGL_color_buffer_float"),"testTextureSupport Float":Wc(r.FLOAT),"testTextureSupport HalfFloat":Wc(36193),"this.supportsHalfFloat":this.supportsHalfFloat,SupportsReadPixelsFloat:Ll},null,2)),this.pickingTarget=new ft(s,a,{minFilter:U,magFilter:U,stencilBuffer:!1,format:J,type:Ll?K:W}),this.pickingTarget.texture.generateMipmaps=!1,this.pickingTarget.texture.colorSpace=this.parameters.outputColorSpace,this.renderer.setRenderTarget(this.pickingTarget),this.renderer.clear(),this.renderer.setRenderTarget(null),this.sampleTarget=new ft(s,a,{minFilter:G,magFilter:G,format:J,type:this.supportsHalfFloat?Z:Ll?K:W}),this.sampleTarget.texture.colorSpace=this.parameters.outputColorSpace,this.holdTarget=new ft(s,a,{minFilter:U,magFilter:U,format:J,type:this.supportsHalfFloat?Z:Ll?K:W}),this.holdTarget.texture.colorSpace=this.parameters.outputColorSpace,this.compositeUniforms={tForeground:new lo(this.sampleTarget.texture),scale:new lo(1)},this.compositeMaterial=new An({uniforms:this.compositeUniforms,vertexShader:pc("Quad.vert"),fragmentShader:pc("Quad.frag"),premultipliedAlpha:!0,transparent:!0,blending:2,depthTest:!1,depthWrite:!1}),this.compositeCamera=new Qn(-1,1,1,-1,0,1),this.compositeScene=new Sa,this.compositeScene.name="compositeScene",this.compositeScene.add(new yn(new Vn(2,2),this.compositeMaterial))}_initHelper(){const e=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]),t=new Float32Array(24),i=new Ji;i.setIndex(new $i(e,1)),i.setAttribute("position",new $i(t,3));const n=new An({uniforms:{uColor:{value:new Oi("skyblue")}},vertexShader:pc("BasicLine.vert"),fragmentShader:pc("BasicLine.frag")});this.boundingBoxMesh=new ka(i,n),this.helperGroup.add(this.boundingBoxMesh)}updateHelper(){const e=this.boundingBoxMesh.geometry.attributes.position,t=e.array,{min:i,max:n}=this.boundingBox;t[0]=n.x,t[1]=n.y,t[2]=n.z,t[3]=i.x,t[4]=n.y,t[5]=n.z,t[6]=i.x,t[7]=i.y,t[8]=n.z,t[9]=n.x,t[10]=i.y,t[11]=n.z,t[12]=n.x,t[13]=n.y,t[14]=i.z,t[15]=i.x,t[16]=n.y,t[17]=i.z,t[18]=i.x,t[19]=i.y,t[20]=i.z,t[21]=n.x,t[22]=i.y,t[23]=i.z,e.needsUpdate=!0,this.boundingBox.isEmpty()||this.boundingBoxMesh.geometry.computeBoundingSphere()}get cameraDistance(){return Math.abs(this.camera.position.z)}set cameraDistance(e){this.camera.position.z=-e}add(t,i){i?i.forEach((e=>this.addBuffer(t,e))):this.addBuffer(t),t.group.name="meshGroup",t.wireframeGroup.name="wireframeGroup",t.parameters.background?(this.backgroundGroup.add(t.group),this.backgroundGroup.add(t.wireframeGroup)):(this.modelGroup.add(t.group),this.modelGroup.add(t.wireframeGroup)),t.pickable&&this.pickingGroup.add(t.pickingGroup),e.Debug&&this.updateHelper()}addBuffer(e,t){function i(n){n instanceof ma?n.children.forEach(i):(n.userData.buffer=e,n.userData.instance=t,n.onBeforeRender=Zc)}const n=e.getMesh();t&&n.applyMatrix4(t.matrix),i(n),e.group.add(n);const r=e.getWireframeMesh();if(t&&(r.matrix.copy(n.matrix),r.position.copy(n.position),r.quaternion.copy(n.quaternion),r.scale.copy(n.scale)),i(r),e.wireframeGroup.add(r),e.pickable){const r=e.getPickingMesh();t&&(r.matrix.copy(n.matrix),r.position.copy(n.position),r.quaternion.copy(n.quaternion),r.scale.copy(n.scale)),i(r),e.pickingGroup.add(r)}t?this._updateBoundingBox(e.geometry,e.matrix,t.matrix):this._updateBoundingBox(e.geometry,e.matrix)}remove(t){this.translationGroup.children.forEach((function(e){e.remove(t.group),e.remove(t.wireframeGroup)})),t.pickable&&this.pickingGroup.remove(t.pickingGroup),this.updateBoundingBox(),e.Debug&&this.updateHelper()}_updateBoundingBox(e,t,i){const n=this.boundingBox;function r(e,t,i){null==e.boundingBox&&e.computeBoundingBox();const r=e.boundingBox.clone();t&&r.applyMatrix4(t),i&&r.applyMatrix4(i),r.min.equals(r.max)&&r.expandByScalar(5),n.union(r)}function s(e){if(void 0!==e.geometry){let t,i;e.userData.buffer&&(t=e.userData.buffer.matrix),e.userData.instance&&(i=e.userData.instance.matrix),r(e.geometry,t,i)}}e?r(e,t,i):(n.makeEmpty(),this.modelGroup.traverse(s),this.backgroundGroup.traverse(s)),n.getSize(this.boundingBoxSize),this.boundingBoxLength=this.boundingBoxSize.length()}updateBoundingBox(){this._updateBoundingBox(),e.Debug&&this.updateHelper()}getPickingPixels(){const{width:e,height:t}=this,i=e*t*4,n=Ll?new Float32Array(i):new Uint8Array(i);return this.render(!0),this.renderer.readRenderTargetPixels(this.pickingTarget,0,0,e,t,n),n}getImage(e){return new Promise((t=>{if(e){const{width:e,height:i}=this,n=e*i*4;let r=this.getPickingPixels();if(Ll){const e=new Uint8Array(n);for(let t=0;t500&&!this.isStill&&this.sampleLevel<3&&-1!==this.sampleLevel){const t=this.sampleLevel;this.sampleLevel=3,this.renderPending=!0,this.render(),this.isStill=!0,this.sampleLevel=t,e.Debug&&Fl.log("rendered still frame")}this.frameRequest=window.requestAnimationFrame(this.animate)}pick(e,t){if("stereo"===this.parameters.cameraType)return{pid:0,instance:void 0,picker:void 0};e*=window.devicePixelRatio,t*=window.devicePixelRatio,e=Math.max(e-2,0),t=Math.max(t-2,0);let i,n,r=0;const s=Ll?qc:Xc;this.render(!0),this.renderer.readRenderTargetPixels(this.pickingTarget,e,t,5,5,s);for(let e=0;e22&&(this.stats.begin(),this.isStill=!1),this.renderPending=!0,window.requestAnimationFrame((()=>{this.render(),this.stats.update()})))}updateZoom(){const e=Ro(this.perspectiveCamera.fov),t=2*Math.tan(e/2)*this.cameraDistance;this.orthographicCamera.zoom=this.height/t}absoluteToRelative(e){return 50*(1-e/this.bRadius)}relativeToAbsolute(e){return this.bRadius*(1-e/50)}__updateClipping(){const e=this.parameters;this.bRadius=Math.max(10,.5*this.boundingBoxLength),isFinite(this.bRadius)||(this.bRadius=50),this.camera.getWorldPosition(this.distVector),this.cDist=this.distVector.length(),this.cDist||(this.cameraDistance=Math.abs(e.cameraZ),this.cDist=Math.abs(e.cameraZ));const t=this.scene.fog;if(t.color.set(e.fogColor),"camera"===e.clipMode)this.camera.near=e.clipNear,this.camera.far=e.clipFar,t.near=e.fogNear,t.far=e.fogFar;else if("absolute"===e.clipScale)this.camera.near=this.cDist-e.clipNear,this.camera.far=this.cDist+e.clipFar,t.near=this.cDist-e.fogNear,t.far=this.cDist+e.fogFar;else{const i=(50-e.clipNear)/50,n=-(50-e.clipFar)/50;this.camera.near=this.cDist-this.bRadius*i,this.camera.far=this.cDist+this.bRadius*n;const r=(50-e.fogNear)/50,s=-(50-e.fogFar)/50;t.near=this.cDist-this.bRadius*r,t.far=this.cDist+this.bRadius*s}"camera"!==e.clipMode&&("PerspectiveCamera"===this.camera.type?(this.camera.near=Math.max(.1,e.clipDist,this.camera.near),this.camera.far=Math.max(1,this.camera.far),t.near=Math.max(.1,t.near),t.far=Math.max(1,t.far)):"OrthographicCamera"===this.camera.type&&e.clipDist>0&&(this.camera.near=Math.max(e.clipDist,this.camera.near)))}__updateCamera(){const e=this.camera;e.updateMatrix(),e.updateMatrixWorld(!0),e.updateProjectionMatrix(),function(e,t,i,n,r){let s=new Ge;i.getSize(s);const a=s.height,o=i.getPixelRatio(),l="OrthographicCamera"===t.type;zc.set(s.width,s.height),Uc.copy(t.projectionMatrix).invert(),Vc.copy(t.projectionMatrix).transpose(),e.traverse((function(e){const t=e.material;if(!t)return;const i=t.uniforms;if(i){if(t.clipNear){const e=(50-t.clipNear)/50,s=n-r*e;i.clipNear.value=s}i.canvasHeight&&(i.canvasHeight.value=a),i.resolution&&i.resolution.value.copy(zc),i.pixelRatio&&(i.pixelRatio.value=o),i.projectionMatrixInverse&&i.projectionMatrixInverse.value.copy(Uc),i.projectionMatrixTranspose&&i.projectionMatrixTranspose.value.copy(Vc),i.ortho&&(i.ortho.value=l)}}))}(this.scene,e,this.renderer,this.cDist,this.bRadius),function(e,t){e.traverseVisible((function(e){if(!(e instanceof Ua&&e.userData.buffer.parameters.sortParticles))return;const i=e.geometry.attributes,n=i.position.count;if(0===n)return;let r,s,a,o,l,c,u,h;Fc.multiplyMatrices(t.matrixWorldInverse,e.matrixWorld),Bc.multiplyMatrices(t.projectionMatrix,Fc),e.userData.sortData?(r=e.userData.sortData,a=r.__zArray,s=r.__sortArray,o=r.__cmpFn):(a=new Float32Array(n),s=new Uint32Array(n),o=function(e,t){const i=a[e],n=a[t];return i>n?1:it?1:e=c&&t(e[a],s)>0;)e[a+1]=e[a],--a;e[a+1]=s}if(-1===l)break;u=r[l--],c=r[l--]}else{for(a=c+1,o=u,h(c+u>>1,a),t(e[c],e[u])>0&&h(c,u),t(e[a],e[u])>0&&h(a,u),t(e[c],e[a])>0&&h(c,a),s=e[a];;){do{a++}while(t(e[a],s)<0);do{o--}while(t(e[o],s)>0);if(o=o-c?(r[++l]=a,r[++l]=u,u=o-1):(r[++l]=c,r[++l]=o-1,c=a)}}(s,o);for(let e in i){const t=i[e],a=t.array,o=t.itemSize;r[e]||(r[e]=new Float32Array(o*n)),h=r[e],r[e]=a;for(let e=0;e0&&"stereo"!==this.parameters.cameraType?this.__renderSuperSample(t,i):this.__renderModelGroup(t,i)}render(e=!1,t){if(this.rendering)Fl.warn("'tried to call 'render' from within 'render'");else{this.rendering=!0;try{this.__updateClipping(),this.__updateCamera(),this.__updateLights(),this.updateInfo(!0),"stereo"===this.parameters.cameraType?this.__renderStereo(e,t):this.__render(e,this.camera,t),this.lastRenderedPicking=e}finally{this.rendering=!1,this.renderPending=!1}this.signals.rendered.dispatch()}}clear(){Fl.log("scene cleared"),this.scene.remove(this.rotationGroup),this._initScene(),this.renderer.clear()}dispose(){this.renderer.dispose(),window.cancelAnimationFrame(this.frameRequest)}}function Jc(e){const t=e.touches[0].pageX-e.touches[1].pageX,i=e.touches[0].pageY-e.touches[1].pageY;return Math.sqrt(t*t+i*i)}class eu{constructor(e,t={}){this.domElement=e,this.signals={moved:new Yo.Signal,scrolled:new Yo.Signal,dragged:new Yo.Signal,dropped:new Yo.Signal,clicked:new Yo.Signal,hovered:new Yo.Signal,doubleClicked:new Yo.Signal},this.position=new Ge,this.prevPosition=new Ge,this.down=new Ge,this.canvasPosition=new Ge,this.prevClickCP=new Ge,this.moving=!1,this.hovering=!0,this.scrolled=!1,this.lastMoved=1/0,this.which=0,this.buttons=0,this.pressed=!1,this.altKey=!1,this.ctrlKey=!1,this.metaKey=!1,this.shiftKey=!1,this.domElement.style.touchAction="none",this.hoverTimeout=uo(t.hoverTimeout,50),this.handleScroll=uo(t.handleScroll,!0),this.doubleClickSpeed=uo(t.doubleClickSpeed,500),this._listen=this._listen.bind(this),this._onMousewheel=this._onMousewheel.bind(this),this._onMousemove=this._onMousemove.bind(this),this._onMousedown=this._onMousedown.bind(this),this._onMouseup=this._onMouseup.bind(this),this._onContextmenu=this._onContextmenu.bind(this),this._onTouchstart=this._onTouchstart.bind(this),this._onTouchend=this._onTouchend.bind(this),this._onTouchmove=this._onTouchmove.bind(this),this._listen();const i={passive:!1};document.addEventListener("mousewheel",this._onMousewheel,i),document.addEventListener("wheel",this._onMousewheel,i),document.addEventListener("MozMousePixelScroll",this._onMousewheel,i),document.addEventListener("mousemove",this._onMousemove,i),document.addEventListener("mousedown",this._onMousedown,i),document.addEventListener("mouseup",this._onMouseup,i),document.addEventListener("contextmenu",this._onContextmenu,i),document.addEventListener("touchstart",this._onTouchstart,i),document.addEventListener("touchend",this._onTouchend,i),document.addEventListener("touchmove",this._onTouchmove,i)}get key(){let e=0;return this.altKey&&(e+=1),this.ctrlKey&&(e+=2),this.metaKey&&(e+=4),this.shiftKey&&(e+=8),e}setParameters(e={}){this.hoverTimeout=uo(e.hoverTimeout,this.hoverTimeout)}_listen(){const e=window.performance.now(),t=this.canvasPosition;this.doubleClickPending&&e-this.lastClicked>this.doubleClickSpeed&&(this.doubleClickPending=!1),e-this.lastMoved>this.hoverTimeout&&(this.moving=!1),(this.scrolled||!this.moving&&!this.hovering)&&(this.scrolled=!1,-1!==this.hoverTimeout&&this.overElement&&(this.hovering=!0,this.signals.hovered.dispatch(t.x,t.y))),this.frameRequest=window.requestAnimationFrame(this._listen)}_onMousewheel(e){if(e.target!==this.domElement||!this.handleScroll)return;e.preventDefault(),this._setKeys(e);let t=0;"deltaY"in e&&"deltaMode"in e&&void 0!==e.deltaY&&void 0!==e.deltaMode?t=e.deltaMode===WheelEvent.DOM_DELTA_PIXEL?.025*-e.deltaY:e.deltaMode===WheelEvent.DOM_DELTA_LINE?-e.deltaY*(2.5/3):2.5*-e.deltaY:"deltaY"in e&&!("detail"in e)?t=.025*-e.deltaY:void 0!==e.wheelDelta?t=.025*-e.wheelDelta:void 0!==e.wheelDeltaY?t=.025*-e.wheelDeltaY:void 0!==e.detail&&(t=-e.detail/3),this.signals.scrolled.dispatch(t),setTimeout((()=>{this.scrolled=!0}),this.hoverTimeout)}_onMousemove(e){e.target===this.domElement?(e.preventDefault(),this.overElement=!0):this.overElement=!1,this._setKeys(e),this.moving=!0,this.hovering=!1,this.lastMoved=window.performance.now(),this.prevPosition.copy(this.position),this.position.set(e.clientX,e.clientY),this._setCanvasPosition(e);const t=this.prevPosition.x-this.position.x,i=this.prevPosition.y-this.position.y;this.signals.moved.dispatch(t,i),this.pressed&&this.signals.dragged.dispatch(t,i)}_onMousedown(e){e.target===this.domElement&&(e.preventDefault(),this._setKeys(e),this.moving=!1,this.hovering=!1,this.down.set(e.clientX,e.clientY),this.position.set(e.clientX,e.clientY),this.which=e.which,this.buttons=function(e){if("object"==typeof e){if("buttons"in e)return e.buttons;if("which"in e){const t=e.which;if(2===t)return 4;if(3===t)return 2;if(t>0)return 1<=0)return 1<2&&this.handleScroll&&this.position.distanceTo(this.prevPosition)<2)this.which=0,this.buttons=0,this.signals.scrolled.dispatch(i/2);else{this.which=3,this.buttons=2;const e=this.prevPosition.x-this.position.x,t=this.prevPosition.y-this.position.y;this.signals.moved.dispatch(e,t),this.pressed&&this.signals.dragged.dispatch(e,t)}}}}_distance(){return this.position.distanceTo(this.down)}_setCanvasPosition(e){const t=this.domElement.getBoundingClientRect();let i,n;"clientX"in e&&"clientY"in e?(i=e.clientX-t.left,n=e.clientY-t.top):(i=e.offsetX,n=e.offsetY),this.canvasPosition.set(i,t.height-n)}_setKeys(e){this.altKey=e.altKey,this.ctrlKey=e.ctrlKey,this.metaKey=e.metaKey,this.shiftKey=e.shiftKey}dispose(){document.removeEventListener("mousewheel",this._onMousewheel),document.removeEventListener("wheel",this._onMousewheel),document.removeEventListener("MozMousePixelScroll",this._onMousewheel),document.removeEventListener("mousemove",this._onMousemove),document.removeEventListener("mousedown",this._onMousedown),document.removeEventListener("mouseup",this._onMouseup),document.removeEventListener("contextmenu",this._onContextmenu),document.removeEventListener("touchstart",this._onTouchstart),document.removeEventListener("touchend",this._onTouchend),document.removeEventListener("touchmove",this._onTouchmove),window.cancelAnimationFrame(this.frameRequest)}}const tu=new qt,iu=new qt,nu=new qt,ru=new qt,su=new qt,au=new _t,ou=new gt,lu=new gt,cu=new qt,uu=new _t,hu=new _t;class du{constructor(e,t={}){this.stage=e,this.rotateSpeed=uo(t.rotateSpeed,2),this.zoomSpeed=uo(t.zoomSpeed,1.2),this.panSpeed=uo(t.panSpeed,1),this.viewer=e.viewer,this.mouse=e.mouseObserver,this.controls=e.viewerControls}get component(){return this.stage.transformComponent}get atom(){return this.stage.transformAtom}_setPanVector(e,t,i=0){const n=this.controls.getCanvasScaleFactor(i);uu.set(e,t,0),uu.multiplyScalar(this.panSpeed*n)}_getRotateXY(e,t){return[this.rotateSpeed*-e*.01,this.rotateSpeed*t*.01]}_getCameraRotation(e){return e.extractRotation(this.viewer.camera.matrixWorld),e.multiply(iu.makeRotationY(Math.PI)),e}_transformPanVector(){this.component&&(cu.extractRotation(this.component.transform),cu.premultiply(this.viewer.rotationGroup.matrix),cu.invert(),cu.multiply(this._getCameraRotation(ru)),uu.applyMatrix4(cu))}zoom(e){this.controls.zoom(this.zoomSpeed*e*.02)}pan(e,t){this._setPanVector(e,t),cu.copy(this.viewer.rotationGroup.matrix).invert(),cu.multiply(this._getCameraRotation(ru)),uu.applyMatrix4(cu),this.controls.translate(uu)}panComponent(e,t){this.component&&(this._setPanVector(e,t),this._transformPanVector(),this.component.position.add(uu),this.component.updateMatrix())}panAtom(e,t){this.atom&&this.component&&(this.atom.positionToVector3(hu),hu.add(this.viewer.translationGroup.position),hu.applyMatrix4(this.viewer.rotationGroup.matrix),this._setPanVector(e,t,hu.z),this._transformPanVector(),this.atom.positionAdd(uu),this.component.updateRepresentations({position:!0}))}rotate(e,t){const[i,n]=this._getRotateXY(e,t);this._getCameraRotation(ru),au.set(1,0,0),au.applyMatrix4(ru),ou.setFromAxisAngle(au,n),au.set(0,1,0),au.applyMatrix4(ru),lu.setFromAxisAngle(au,i),ou.multiply(lu),ru.makeRotationFromQuaternion(ou),this.controls.applyMatrix(ru)}zRotate(e,t){const i=this.rotateSpeed*((-e+t)/-2)*.01;nu.makeRotationZ(i),this.controls.applyMatrix(nu)}rotateComponent(e,t){if(!this.component)return;const[i,n]=this._getRotateXY(e,t);this._getCameraRotation(su),ru.extractRotation(this.component.transform),ru.premultiply(this.viewer.rotationGroup.matrix),ru.invert(),ru.premultiply(su),au.set(1,0,0),au.applyMatrix4(ru),tu.makeRotationAxis(au,n),au.set(0,1,0),au.applyMatrix4(ru),iu.makeRotationAxis(au,i),tu.multiply(iu),ou.setFromRotationMatrix(tu),this.component.quaternion.premultiply(ou),this.component.quaternion.normalize(),this.component.updateMatrix()}}const fu=new _t;class mu{constructor(e,t){this.stage=t,this.pid=e.pid,this.picker=e.picker,this.instance=e.instance,this.stage=t,this.controls=t.viewerControls,this.mouse=t.mouseObserver}get type(){return this.picker.type}get altKey(){return this.mouse.altKey}get ctrlKey(){return this.mouse.ctrlKey}get metaKey(){return this.mouse.metaKey}get shiftKey(){return this.mouse.shiftKey}get canvasPosition(){return this.mouse.canvasPosition}get component(){return this.stage.getComponentsByObject(this.picker.data).list[0]}get object(){return this.picker.getObject(this.pid)}get position(){return this.picker.getPosition(this.pid,this.instance,this.component)}get closestBondAtom(){if("bond"!==this.type||!this.bond)return;const e=this.bond,t=this.controls,i=this.canvasPosition,n=e.atom1.positionToVector3(),r=e.atom2.positionToVector3();n.applyMatrix4(this.component.matrix),r.applyMatrix4(this.component.matrix);const s=t.getPositionOnCanvas(n),a=t.getPositionOnCanvas(r);return l=s,c=a,(o=i).distanceTo(l)=e.length))return new mu(i,this.stage);console.error("pid >= picker.array.length")}}}const gu=new gt,_u=new _t,yu=new _t,vu=new _t,bu=new _t,xu=new qt,wu=new _t,Su=new qt;class Mu{constructor(e){this.stage=e,this.signals={changed:new Yo.Signal},this.viewer=e.viewer}get position(){return this.viewer.translationGroup.position}get rotation(){return this.viewer.rotationGroup.quaternion}changed(){this.viewer.requestRender(),this.signals.changed.dispatch()}getPositionOnCanvas(e,t){const i=Ao(t,Ge);const n=this.viewer;return vu.copy(e).add(n.translationGroup.position).applyMatrix4(n.rotationGroup.matrix).project(n.camera),i.set((vu.x+1)*n.width/2,(vu.y+1)*n.height/2)}getCanvasScaleFactor(e=0){const t=this.viewer.camera;if(t instanceof Qn)return 1/t.zoom;{e=Math.abs(e),e+=this.getCameraDistance();const i=Ro(t.fov);return 2*e*Math.tan(i/2)/this.viewer.height}}getOrientation(e){const t=To(e);t.copy(this.viewer.rotationGroup.matrix);const i=this.getCameraDistance();return t.scale(bu.set(i,i,i)),t.setPosition(this.viewer.translationGroup.position),t}orient(e){To(e).decompose(_u,gu,yu);const t=this.viewer;t.rotationGroup.setRotationFromQuaternion(gu),t.translationGroup.position.copy(_u),t.cameraDistance=yu.z,t.updateZoom(),this.changed()}translate(e){this.viewer.translationGroup.position.add(Co(e)),this.changed()}center(e){this.viewer.translationGroup.position.copy(Co(e)).negate(),this.changed()}zoom(e){this.distance(this.getCameraDistance()*(1-e))}getCameraDistance(){return this.viewer.cameraDistance}distance(e){this.viewer.cameraDistance=Math.max(Math.abs(e),.2),this.viewer.updateZoom(),this.changed()}spin(e,t){xu.copy(this.viewer.rotationGroup.matrix).invert(),wu.copy(Co(e)).applyMatrix4(xu),this.viewer.rotationGroup.rotateOnAxis(wu,t),this.changed()}rotate(e){this.viewer.rotationGroup.setRotationFromQuaternion(Po(e)),this.changed()}align(e){Su.copy(To(e)).invert(),this.viewer.rotationGroup.setRotationFromMatrix(Su),this.changed()}applyMatrix(e){this.viewer.rotationGroup.applyMatrix4(To(e)),this.changed()}}class Au{constructor(e,t,...i){this.pausedTime=-1,this.elapsedDuration=0,this.pausedDuration=0,this.ignoreGlobalToggle=!1,this._paused=!1,this._resolveList=[],this.duration=uo(e,1e3),this.controls=t,this.startTime=window.performance.now(),this._init(...i)}get done(){return 1===this.alpha}get paused(){return this._paused}tick(e){if(!this._paused)return this.elapsedDuration=e.currentTime-this.startTime-this.pausedDuration,0===this.duration?this.alpha=1:this.alpha=zo(0,1,this.elapsedDuration/this.duration),this._tick(e),this.done&&this._resolveList.forEach((e=>e())),this.done}pause(e){e&&(this._hold=!0),-1===this.pausedTime&&(this.pausedTime=window.performance.now()),this._paused=!0}resume(e){!e&&this._hold||(this.pausedDuration+=window.performance.now()-this.pausedTime,this._paused=!1,this._hold=!1,this.pausedTime=-1)}toggle(){this._paused?this.resume():this.pause()}then(e){let t;return t=this.done?Promise.resolve():new Promise((e=>this._resolveList.push(e))),t.then(e)}}class Cu extends Au{constructor(e,t,...i){super(uo(e,1/0),t,...i)}_init(e,t){Array.isArray(e)?this.axis=(new _t).fromArray(e):this.axis=uo(e,new _t(0,1,0)),this.angle=uo(t,.01)}_tick(e){this.axis&&this.angle&&this.controls.spin(this.axis,this.angle*e.lastDuration/16)}}class Tu extends Au{constructor(e,t,...i){super(uo(e,1/0),t,...i),this.angleSum=0,this.direction=1}_init(e,t,i){Array.isArray(e)?this.axis=(new _t).fromArray(e):this.axis=uo(e,new _t(0,1,0)),this.angleStep=uo(t,.01),this.angleEnd=uo(i,.2)}_tick(e){if(!this.axis||!this.angleStep||!this.angleEnd)return;const t=zo(0,1,Math.abs(this.angleSum)/this.angleEnd),i=this.angleStep*this.direction*(1.1-t);this.controls.spin(this.axis,i*e.lastDuration/16),this.angleSum+=this.angleStep,this.angleSum>=this.angleEnd&&(this.direction*=-1,this.angleSum=-this.angleEnd)}}class Pu extends Au{_init(e,t){this.moveFrom=Co(uo(e,new _t)),this.moveTo=Co(uo(t,new _t))}_tick(){this.controls.position.lerpVectors(this.moveFrom,this.moveTo,this.alpha).negate(),this.controls.changed()}}class Eu extends Au{_init(e,t){this.zoomFrom=e,this.zoomTo=t}_tick(){this.controls.distance(Fo(this.zoomFrom,this.zoomTo,this.alpha))}}class Iu extends Au{constructor(){super(...arguments),this._currentRotation=new gt}_init(e,t){this.rotateFrom=Po(e),this.rotateTo=Po(t),this._currentRotation=new gt}_tick(){this._currentRotation.copy(this.rotateFrom).slerp(this.rotateTo,this.alpha),this.controls.rotate(this._currentRotation)}}class Du extends Au{_init(e,t,i){this.valueFrom=e,this.valueTo=t,this.callback=i}_tick(){this.callback(Fo(this.valueFrom,this.valueTo,this.alpha))}}class Ru extends Au{_init(e){this.callback=e}_tick(){1===this.alpha&&this.callback()}}class Lu{constructor(e=[]){this._resolveList=[],this._list=e}get done(){return this._list.every((e=>e.done))}then(e){let t;return t=this.done?Promise.resolve():new Promise((e=>{this._resolveList.push(e),this._list.forEach((e=>{e.then((()=>{this._resolveList.forEach((e=>{e()})),this._resolveList.length=0}))}))})),t.then(e)}}class ku{constructor(e){this.stage=e,this.animationList=[],this.finishedList=[],this.viewer=e.viewer,this.controls=e.viewerControls}get paused(){return this.animationList.every((e=>e.paused))}add(e){return 0===e.duration?e.tick(this.viewer.stats):this.animationList.push(e),e}remove(e){const t=this.animationList,i=t.indexOf(e);i>-1&&t.splice(i,1)}run(e){const t=this.finishedList,i=this.animationList,n=i.length;for(let r=0;re.pause()))}resume(){this.animationList.forEach((e=>e.resume()))}toggle(){this.paused?this.resume():this.pause()}clear(){this.animationList.length=0}dispose(){this.clear()}}class Ou{constructor(e,t){if(this.fn=e,this.queue=[],this.pending=!1,this.next=this.next.bind(this),t){for(let e=0,i=t.length;ethis.run(e)))):this.pending=!1}push(e){this.queue.push(e),this.pending||this.next()}kill(){this.queue.length=0}length(){return this.queue.length}}class Nu{constructor(e,t,i){this.type="",this.parameters={lazy:{type:"boolean"},clipNear:{type:"range",step:1,max:100,min:0,buffer:!0},clipRadius:{type:"number",precision:1,max:1e3,min:0,buffer:!0},clipCenter:{type:"vector3",precision:1,buffer:!0},flatShaded:{type:"boolean",buffer:!0},opacity:{type:"range",step:.01,max:1,min:0,buffer:!0},depthWrite:{type:"boolean",buffer:!0},side:{type:"select",buffer:!0,options:{front:"front",back:"back",double:"double"}},wireframe:{type:"boolean",buffer:!0},colorData:{type:"hidden",update:"color"},colorScheme:{type:"select",update:"color",options:{}},colorScale:{type:"select",update:"color",options:$l.getScales()},colorReverse:{type:"boolean",update:"color"},colorValue:{type:"color",update:"color"},colorDomain:{type:"hidden",update:"color"},colorMode:{type:"select",update:"color",options:$l.getModes()},roughness:{type:"range",step:.01,max:1,min:0,buffer:!0},metalness:{type:"range",step:.01,max:1,min:0,buffer:!0},diffuse:{type:"color",buffer:!0},diffuseInterior:{type:"boolean",buffer:!0},useInteriorColor:{type:"boolean",buffer:!0},interiorColor:{type:"color",buffer:!0},interiorDarkening:{type:"range",step:.01,max:1,min:0,buffer:!0},matrix:{type:"hidden",buffer:!0},disablePicking:{type:"boolean",rebuild:!0}},this.viewer=t,this.tasks=new hc,this.queue=new Ou(this.make.bind(this)),this.bufferList=[],this.parameters.colorScheme&&(this.parameters.colorScheme.options=$l.getSchemes()),this.toBePrepared=!1}init(e){const t=e||{};this.clipNear=uo(t.clipNear,0),this.clipRadius=uo(t.clipRadius,0),this.clipCenter=uo(t.clipCenter,new _t),this.flatShaded=uo(t.flatShaded,!1),this.side=uo(t.side,"double"),this.opacity=uo(t.opacity,1),this.depthWrite=uo(t.depthWrite,!0),this.wireframe=uo(t.wireframe,!1),this.setColor(t.color,t),this.colorData=uo(t.colorData,void 0),this.colorScheme=uo(t.colorScheme,"uniform"),this.colorScale=uo(t.colorScale,""),this.colorReverse=uo(t.colorReverse,!1),this.colorValue=uo(t.colorValue,9474192),this.colorDomain=uo(t.colorDomain,void 0),this.colorMode=uo(t.colorMode,"hcl"),this.visible=uo(t.visible,!0),this.quality=uo(t.quality,void 0),this.roughness=uo(t.roughness,.4),this.metalness=uo(t.metalness,0),this.diffuse=uo(t.diffuse,16777215),this.diffuseInterior=uo(t.diffuseInterior,!1),this.useInteriorColor=uo(t.useInteriorColor,!1),this.interiorColor=uo(t.interiorColor,2236962),this.interiorDarkening=uo(t.interiorDarkening,0),this.lazy=uo(t.lazy,!1),this.lazyProps={build:!1,bufferParams:{},what:{}},this.matrix=uo(t.matrix,new qt),this.disablePicking=uo(t.disablePicking,!1);const i=this.parameters;!0===i.sphereDetail&&(i.sphereDetail={type:"integer",max:3,min:0,rebuild:"impostor"}),!0===i.radialSegments&&(i.radialSegments={type:"integer",max:25,min:5,rebuild:"impostor"}),!0===i.openEnded&&(i.openEnded={type:"boolean",rebuild:"impostor",buffer:!0}),!0===i.disableImpostor&&(i.disableImpostor={type:"boolean",rebuild:!0}),"low"===t.quality?(i.sphereDetail&&(this.sphereDetail=0),i.radialSegments&&(this.radialSegments=5)):"medium"===t.quality?(i.sphereDetail&&(this.sphereDetail=1),i.radialSegments&&(this.radialSegments=10)):"high"===t.quality?(i.sphereDetail&&(this.sphereDetail=2),i.radialSegments&&(this.radialSegments=20)):(i.sphereDetail&&(this.sphereDetail=uo(t.sphereDetail,1)),i.radialSegments&&(this.radialSegments=uo(t.radialSegments,10))),i.openEnded&&(this.openEnded=uo(t.openEnded,!0)),i.disableImpostor&&(this.disableImpostor=uo(t.disableImpostor,!1))}getColorParams(e){return Object.assign({data:this.colorData,scheme:this.colorScheme,scale:this.colorScale,reverse:this.colorReverse,value:this.colorValue,domain:this.colorDomain,mode:this.colorMode,colorSpace:this.colorSpace},e)}getBufferParams(e={}){return Object.assign({clipNear:this.clipNear,clipRadius:this.clipRadius,clipCenter:this.clipCenter,flatShaded:this.flatShaded,opacity:this.opacity,depthWrite:this.depthWrite,side:this.side,wireframe:this.wireframe,roughness:this.roughness,metalness:this.metalness,diffuse:this.diffuse,diffuseInterior:this.diffuseInterior,useInteriorColor:this.useInteriorColor,interiorColor:this.interiorColor,interiorDarkening:this.interiorDarkening,matrix:this.matrix,disablePicking:this.disablePicking},e)}setColor(e,t){const i=Object.keys($l.getSchemes());if("string"==typeof e&&i.includes(e.toLowerCase()))t?t.colorScheme=e:this.setParameters({colorScheme:e});else if(void 0!==e){let i=new Oi(e).getHex();t?(t.colorScheme="uniform",t.colorValue=i):this.setParameters({colorScheme:"uniform",colorValue:i})}return this}prepare(e){}create(){}update(e){this.build()}build(e){if(!this.lazy||this.visible&&this.opacity){if(!this.toBePrepared)return this.tasks.increment(),void this.make();this.queue.length()>0?(this.tasks.change(1-this.queue.length()),this.queue.kill()):this.tasks.increment(),this.queue.push(e||!1)}else this.lazyProps.build=!0}make(t,i){e.Debug&&Fl.time("Representation.make "+this.type);const n=()=>{t?(this.update(t),this.viewer.requestRender(),this.tasks.decrement(),i&&i()):(this.clear(),this.create(),this.manualAttach||this.disposed||(e.Debug&&Fl.time("Representation.attach "+this.type),this.attach((()=>{e.Debug&&Fl.timeEnd("Representation.attach "+this.type),this.tasks.decrement(),i&&i()})))),e.Debug&&Fl.timeEnd("Representation.make "+this.type)};this.toBePrepared?this.prepare(n):n()}attach(e){this.setVisibility(this.visible),e()}setVisibility(e,t){if(this.visible=e,this.visible&&this.opacity){const e=this.lazyProps,t=e.bufferParams,i=e.what;if(e.build)return e.build=!1,this.build(),this;(Object.keys(t).length||Object.keys(i).length)&&(e.bufferParams={},e.what={},this.updateParameters(t,i))}return this.bufferList.forEach((function(t){t.setVisibility(e)})),t||this.viewer.requestRender(),this}setParameters(e,t={},i=!1){const n=e||{},r=this.parameters,s={};this.opacity||void 0===n.opacity||(this.lazyProps.build?(this.lazyProps.build=!1,i=!0):(Object.assign(s,this.lazyProps.bufferParams),Object.assign(t,this.lazyProps.what),this.lazyProps.bufferParams={},this.lazyProps.what={})),this.setColor(n.color,n);for(let e in n)if(void 0!==n[e]&&null!=r[e]&&(r[e].int&&(n[e]=parseInt(n[e])),r[e].float&&(n[e]=parseFloat(n[e])),n[e]!==this[e]||n[e].equals&&!n[e].equals(this[e]))){if(this[e]&&this[e].copy&&n[e].copy?this[e].copy(n[e]):this[e]&&this[e].set?this[e].set(n[e]):this[e]=n[e],r[e].buffer)if(!0===r[e].buffer)s[e]=n[e];else{s[r[e].buffer]=n[e]}r[e].update&&(t[r[e].update]=!0),!r[e].rebuild||"impostor"===r[e].rebuild&&Ol&&!this.disableImpostor||(i=!0)}return i?this.build():this.updateParameters(s,t),this}updateParameters(e={},t){if(this.lazy&&(!this.visible||!this.opacity)&&!1===e.hasOwnProperty("opacity"))return Object.assign(this.lazyProps.bufferParams,e),void Object.assign(this.lazyProps.what,t);this.bufferList.forEach((function(t){t.setParameters(e)})),Object.keys(t).length&&this.update(t),this.viewer.requestRender()}getParameters(){const e={lazy:this.lazy,visible:this.visible,quality:this.quality};return Object.keys(this.parameters).forEach((t=>{null!==this.parameters[t]&&(e[t]=this[t])})),e}clear(){this.bufferList.forEach((e=>{this.viewer.remove(e),e.dispose()})),this.bufferList.length=0,this.viewer.requestRender()}dispose(){this.disposed=!0,this.queue.kill(),this.tasks.dispose(),this.clear()}}class Fu{constructor(t){this.pending=0,this.postCount=0,this.onmessageDict={},this.onerrorDict={},this.name=t,this.blobUrl=window.URL.createObjectURL(Vl.get(t)),this.worker=new Worker(this.blobUrl),Vl.activeWorkerCount+=1,this.worker.onmessage=i=>{this.pending-=1;const n=i.data.__postId;e.Debug&&Fl.timeEnd("Worker.postMessage "+t+" #"+n);const r=this.onmessageDict[n];r&&r.call(this.worker,i),delete this.onmessageDict[n],delete this.onerrorDict[n]},this.worker.onerror=e=>{if(this.pending-=1,e.data){const i=e.data.__postId,n=this.onerrorDict[i];n?n.call(this.worker,e):Fl.error("Worker.onerror",i,t,e),delete this.onmessageDict[i],delete this.onerrorDict[i]}else Fl.error("Worker.onerror",t,e)}}post(t={},i,n,r){this.onmessageDict[this.postCount]=n,this.onerrorDict[this.postCount]=r,t.__name=this.name,t.__postId=this.postCount,t.__debug=e.Debug,e.Debug&&Fl.time(`Worker.postMessage ${this.name} #${this.postCount}`);try{this.worker.postMessage(t,i)}catch(e){Fl.error("worker.post:",e),this.worker.postMessage(t)}return this.pending+=1,this.postCount+=1,this}terminate(){this.worker?(this.worker.terminate(),window.URL.revokeObjectURL(this.blobUrl),Vl.activeWorkerCount-=1):Fl.log("no worker to terminate")}}class Bu{constructor(e,t=2){this.pool=[],this.count=0,this.maxCount=Math.min(8,t),this.name=e}post(e={},t,i,n){const r=this.getNextWorker();return r?r.post(e,t,i,n):console.error("unable to get worker from pool"),this}terminate(){this.pool.forEach((function(e){e.terminate()}))}getNextWorker(){let e,t=1/0;for(let i=0;i=this.count){e=new Fu(this.name),this.pool.push(e),this.count+=1;break}const n=this.pool[i];if(0===n.pending){e=n;break}n.pendingr&&(r=l),c>s&&(s=c),u>a&&(a=u)}return[ju([t,i,n]),ju([r,s,a])]}function $u(e,t){for(let i=0,n=t.length;i0){const a=1/Math.sqrt(s);e[t]=i*a,e[t+1]=n*a,e[t+2]=r*a}}}function ju(e){return new Float32Array(e||3)}function Wu(e,t,i){const n=t[0],r=t[1],s=t[2],a=i[0],o=i[1],l=i[2];e[0]=r*l-s*o,e[1]=s*a-n*l,e[2]=n*o-r*a}function qu(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Xu(e,t,i){e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2]}function Yu(e,t,i){e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2]}function Ku(e,t,i=0){e[0]=t[i],e[1]=t[i+1],e[2]=t[i+2]}function Zu(e,t,i=0){t[i]=e[0],t[i+1]=e[1],t[i+2]=e[2]}function Qu(e){return e[0]*e[0]+e[1]*e[1]+e[2]*e[2]}function Ju(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2])}function eh(e,t,i){th(e,t,1/i)}function th(e,t,i){e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i}function ih(e,t){const i=Qu(t);0==i?(e[0]=t[0],e[1]=t[1],e[2]=t[2]):th(e,t,1/Math.sqrt(i))}function nh(e,t,i){e[0]=t[0]-i,e[1]=t[1]-i,e[2]=t[2]-i}function rh(e,t,i){e[0]=t[0]+i,e[1]=t[1]+i,e[2]=t[2]+i}function sh(e,t){e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2])}function ah(e,t){e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2])}function oh(e,t){e[0]=-t[0],e[1]=-t[1],e[2]=-t[2]}function lh(e,t){const i=e[0],n=e[1],r=e[2],s=t[0],a=t[1],o=t[2],l=n*o-r*a,c=r*s-i*o,u=i*a-n*s,h=Math.sqrt(l*l+c*c+u*u),d=i*s+n*a+r*o;return Math.atan2(h,d)}function ch(e,t=9){const i=Math.floor(t/2),n=e.position1.length/3,r=3*(i*n),s=1/t,a=wc(e.position1,e.position2),o=new Float32Array(r),l=new Float32Array(r),c=new _t;for(let t=0;t0){const t=3*f;r[t]=e.position2[3*u-3],r[t+1]=e.position2[3*u-2],r[t+1]=e.position2[3*u-1]}const g=new Float32Array(n),_=new Float32Array(r),y=xc(g,_),v=new Float32Array(s),b={position:y,position1:g,position2:_,color:v,color2:v};return a&&(b.radius=new Float32Array(a)),o&&e.picking&&(e.picking.array=new Float32Array(o),b.picking=e.picking),l&&(b.primitiveId=new Float32Array(l)),b}Bu.prototype.constructor=Bu,Vu.__deps=[ju],eh.__deps=[th],ih.__deps=[th,Qu];const dh=new _t;class fh{static get Picker(){return Kl.get(this.type)}static get Buffer(){return Yl.get(this.type)}static getShapeKey(e){return this.type+e[0].toUpperCase()+e.substr(1)}static expandBoundingBox(e,t){}static valueToShape(e,t,i){const n=e._primitiveData[this.getShapeKey(t)];switch(this.fields[t]){case"v3":case"c":!function(e,t){void 0!==e.toArray?e=e.toArray():void 0!==e.x?e=[e.x,e.y,e.z]:void 0!==e.r&&(e=[e.r,e.g,e.b]),t.push.apply(t,e)}(i,n);break;default:n.push(i)}}static objectToShape(e,t){Object.keys(this.fields).forEach((i=>{this.valueToShape(e,i,t[i])})),this.valueToShape(e,"name",t.name),this.expandBoundingBox(e.boundingBox,t)}static valueFromShape(e,t,i){const n=e._primitiveData[this.getShapeKey(i)];switch(this.fields[i]){case"v3":return(new _t).fromArray(n,3*t);case"c":return(new Oi).fromArray(n,3*t);default:return n[t]}}static objectFromShape(e,t){let i=this.valueFromShape(e,t,"name");void 0===i&&(i=`${this.type}: ${t} (${e.name})`);const n={shape:e,name:i};return Object.keys(this.fields).forEach((i=>{n[i]=this.valueFromShape(e,t,i)})),n}static arrayFromShape(e,t){const i=e._primitiveData[this.getShapeKey(t)];return"s"===this.fields[t]?i:new Float32Array(i)}static dataFromShape(e){const t={};return this.Picker&&(t.picking=new this.Picker(e)),Object.keys(this.fields).forEach((i=>{t[i]=this.arrayFromShape(e,i)})),t}static bufferFromShape(e,t){return new this.Buffer(this.dataFromShape(e),t)}}fh.type="",fh.fields={};class mh extends fh{static positionFromShape(e,t){return this.valueFromShape(e,t,"position")}static expandBoundingBox(e,t){e.expandByPoint(dh.fromArray(t.position))}}mh.type="sphere",mh.fields={position:"v3",color:"c",radius:"f"};class ph extends fh{static positionFromShape(e,t){return this.valueFromShape(e,t,"position")}static expandBoundingBox(e,t){e.expandByPoint(dh.fromArray(t.position))}}ph.type="box",ph.fields={position:"v3",color:"c",size:"f",heightAxis:"v3",depthAxis:"v3"};class gh extends ph{}gh.type="octahedron";class _h extends ph{}_h.type="tetrahedron";class yh extends fh{static positionFromShape(e,t){const i=this.valueFromShape(e,t,"position1"),n=this.valueFromShape(e,t,"position2");return i.add(n).multiplyScalar(.5)}static expandBoundingBox(e,t){e.expandByPoint(dh.fromArray(t.position1)),e.expandByPoint(dh.fromArray(t.position2))}static bufferFromShape(e,t={}){let i=this.dataFromShape(e);return"cylinder"===this.type&&t.dashedCylinder&&(i=uh(i)),new this.Buffer(i,t)}}yh.type="cylinder",yh.fields={position1:"v3",position2:"v3",color:"c",radius:"f"};class vh extends yh{}vh.type="arrow";class bh extends yh{}bh.type="cone";class xh extends mh{}xh.type="ellipsoid",xh.fields={position:"v3",color:"c",radius:"f",majorAxis:"v3",minorAxis:"v3"};class wh extends xh{}wh.type="torus";class Sh extends fh{static positionFromShape(e,t){return this.valueFromShape(e,t,"position")}static expandBoundingBox(e,t){e.expandByPoint(dh.fromArray(t.position))}}Sh.type="text",Sh.fields={position:"v3",color:"c",size:"f",text:"s"};class Mh extends fh{static positionFromShape(e,t){return this.valueFromShape(e,t,"position")}static expandBoundingBox(e,t){e.expandByPoint(dh.fromArray(t.position))}}Mh.type="point",Mh.fields={position:"v3",color:"c"};class Ah extends fh{static positionFromShape(e,t){const i=this.valueFromShape(e,t,"position1"),n=this.valueFromShape(e,t,"position2");return i.add(n).multiplyScalar(.5)}static expandBoundingBox(e,t){e.expandByPoint(dh.fromArray(t.position1)),e.expandByPoint(dh.fromArray(t.position2))}}Ah.type="wideline",Ah.fields={position1:"v3",position2:"v3",color:"c"};class Ch{constructor(e,t){this.exp=3;const i=t||function(e){const{x:t,y:i,z:n}=e,r=new bt,s=t.length,{min:a,max:o}=r;for(let e=0;e>this.exp),this.boundY=1+(i.max.y-this.minY>>this.exp),this.boundZ=1+(i.max.z-this.minZ>>this.exp);const n=this.boundX*this.boundY*this.boundZ,r=void 0!==e.count?e.count:e.x.length,s=e.x,a=e.y,o=e.z;let l=0;const c=new Uint32Array(n),u=new Int32Array(r);for(let e=0;e>this.exp,i=a[e]-this.minY>>this.exp,n=o[e]-this.minZ>>this.exp,r=(t*this.boundY+i)*this.boundZ+n;1===(c[r]+=1)&&(l+=1),u[e]=r}const h=new Uint16Array(l);for(let e=0,t=0;e0&&(c[e]=t+1,h[t]=i,t+=1)}const d=new Uint32Array(l);for(let e=1;e0){const i=t-1;m[d[i]+f[i]]=e,f[i]+=1}}this.grid=c,this.bucketCount=h,this.bucketOffset=d,this.bucketArray=m,this.xArray=s,this.yArray=a,this.zArray=o}within(e,t,i,n){const r=[];return this.eachWithin(e,t,i,n,(e=>r.push(e))),r}eachWithin(e,t,i,n,r){const s=n*n,a=Math.max(0,e-n-this.minX>>this.exp),o=Math.max(0,t-n-this.minY>>this.exp),l=Math.max(0,i-n-this.minZ>>this.exp),c=Math.min(this.boundX,1+(e+n-this.minX>>this.exp)),u=Math.min(this.boundY,1+(t+n-this.minY>>this.exp)),h=Math.min(this.boundZ,1+(i+n-this.minZ>>this.exp));for(let n=a;n0){const n=c-1,a=this.bucketOffset[n],o=a+this.bucketCount[n];for(let n=a;nn?r.set(this[t].subarray(0,n)):r.set(this[t]),this[t]=r}}growIfFull(){if(this.count>=this.length){const e=Math.round(1.5*this.length);this.resize(Math.max(256,e))}}copyFrom(e,t,i,n){for(let r=0,s=this._fields.length;r0;)u-=1;c<=u&&(c===l?l=u:u===l&&(l=c),(a=c)!==(o=u)&&(i.copyFrom(t,0,a,1),t.copyWithin(a,o,1),t.copyFrom(i,o,0,1)),c+=1,u-=1)}while(c<=u);n(r,u),n(c,s)}var a,o}(0,this.count-1),Fl.timeEnd("Store.sort")}clear(){this.count=0}dispose(){for(let e=0,t=this._fields.length;e>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24}class Ih{constructor(e,t){this.length=e,this._words=new Uint32Array(e+32>>>5),!0===t&&this.setAll()}get(e){return!!(this._words[e>>>5]&1<>>5]|=1<>>5]&=~(1<>>5]^=1<>>5,a=t>>>5;for(let e=s+1;e>>5]|=1<>>5]|=1<>>5]|=1<>>5]&=~(1<>>5]&=~(1<>>5]&=~(1<>>5]|=1<>>5]&=~(1<>>i,this}_isRangeValue(e,t,i){if(t>>5,a=t>>>5;for(let e=s+1;e>>5]&1<>>5]&1<>>5]&1<>>5]&1<>>5]&1<0){const{types:n,groups:r,centers:s,atomSets:a}=e;n.push(t.type),r.push(t.group),s.x.push(t.x/i),s.y.push(t.y/i),s.z.push(t.z/i),a.push(t.atomSet)}}const Oh=0,Nh=["D-BETA-PEPTIDE, C-GAMMA LINKING","D-GAMMA-PEPTIDE, C-DELTA LINKING","D-PEPTIDE COOH CARBOXY TERMINUS","D-PEPTIDE NH3 AMINO TERMINUS","D-PEPTIDE LINKING","L-BETA-PEPTIDE, C-GAMMA LINKING","L-GAMMA-PEPTIDE, C-DELTA LINKING","L-PEPTIDE COOH CARBOXY TERMINUS","L-PEPTIDE NH3 AMINO TERMINUS","L-PEPTIDE LINKING","PEPTIDE LINKING","PEPTIDE-LIKE"],Fh=["RNA OH 3 PRIME TERMINUS","RNA OH 5 PRIME TERMINUS","RNA LINKING"],Bh=["DNA OH 3 PRIME TERMINUS","DNA OH 5 PRIME TERMINUS","DNA LINKING","L-DNA LINKING","L-RNA LINKING"],zh=["D-SACCHARIDE","D-SACCHARIDE 1,4 AND 1,4 LINKING","D-SACCHARIDE 1,4 AND 1,6 LINKING","L-SACCHARIDE","L-SACCHARIDE 1,4 AND 1,4 LINKING","L-SACCHARIDE 1,4 AND 1,6 LINKING","SACCHARIDE"],Uh=["NON-POLYMER"].concat(["OTHER"],zh),Vh=["h","g","i"],$h=["e","b"],Gh=["s","t","l",""],Hh={H:1,D:1,T:1,HE:2,LI:3,BE:4,B:5,C:6,N:7,O:8,F:9,NE:10,NA:11,MG:12,AL:13,SI:14,P:15,S:16,CL:17,AR:18,K:19,CA:20,SC:21,TI:22,V:23,CR:24,MN:25,FE:26,CO:27,NI:28,CU:29,ZN:30,GA:31,GE:32,AS:33,SE:34,BR:35,KR:36,RB:37,SR:38,Y:39,ZR:40,NB:41,MO:42,TC:43,RU:44,RH:45,PD:46,AG:47,CD:48,IN:49,SN:50,SB:51,TE:52,I:53,XE:54,CS:55,BA:56,LA:57,CE:58,PR:59,ND:60,PM:61,SM:62,EU:63,GD:64,TB:65,DY:66,HO:67,ER:68,TM:69,YB:70,LU:71,HF:72,TA:73,W:74,RE:75,OS:76,IR:77,PT:78,AU:79,HG:80,TL:81,PB:82,BI:83,PO:84,AT:85,RN:86,FR:87,RA:88,AC:89,TH:90,PA:91,U:92,NP:93,PU:94,AM:95,CM:96,BK:97,CF:98,ES:99,FM:100,MD:101,NO:102,LR:103,RF:104,DB:105,SG:106,BH:107,HS:108,MT:109,DS:110,RG:111,CN:112,NH:113,FL:114,MC:115,LV:116,TS:117,OG:118},jh={1:1.1,2:1.4,3:1.81,4:1.53,5:1.92,6:1.7,7:1.55,8:1.52,9:1.47,10:1.54,11:2.27,12:1.73,13:1.84,14:2.1,15:1.8,16:1.8,17:1.75,18:1.88,19:2.75,20:2.31,21:2.3,22:2.15,23:2.05,24:2.05,25:2.05,26:2.05,27:2,28:2,29:2,30:2.1,31:1.87,32:2.11,33:1.85,34:1.9,35:1.83,36:2.02,37:3.03,38:2.49,39:2.4,40:2.3,41:2.15,42:2.1,43:2.05,44:2.05,45:2,46:2.05,47:2.1,48:2.2,49:2.2,50:1.93,51:2.17,52:2.06,53:1.98,54:2.16,55:3.43,56:2.68,57:2.5,58:2.48,59:2.47,60:2.45,61:2.43,62:2.42,63:2.4,64:2.38,65:2.37,66:2.35,67:2.33,68:2.32,69:2.3,70:2.28,71:2.27,72:2.25,73:2.2,74:2.1,75:2.05,76:2,77:2,78:2.05,79:2.1,80:2.05,81:1.96,82:2.02,83:2.07,84:1.97,85:2.02,86:2.2,87:3.48,88:2.83,89:2,90:2.4,91:2,92:2.3,93:2,94:2,95:2,96:2,97:2,98:2,99:2,100:2,101:2,102:2,103:2,104:2,105:2,106:2,107:2,108:2,109:2,110:2,111:2,112:2,113:2,114:2,115:2,116:2,117:2,118:2},Wh={1:.31,2:.28,3:1.28,4:.96,5:.84,6:.76,7:.71,8:.66,9:.57,10:.58,11:1.66,12:1.41,13:1.21,14:1.11,15:1.07,16:1.05,17:1.02,18:1.06,19:2.03,20:1.76,21:1.7,22:1.6,23:1.53,24:1.39,25:1.39,26:1.32,27:1.26,28:1.24,29:1.32,30:1.22,31:1.22,32:1.2,33:1.19,34:1.2,35:1.2,36:1.16,37:2.2,38:1.95,39:1.9,40:1.75,41:1.64,42:1.54,43:1.47,44:1.46,45:1.42,46:1.39,47:1.45,48:1.44,49:1.42,50:1.39,51:1.39,52:1.38,53:1.39,54:1.4,55:2.44,56:2.15,57:2.07,58:2.04,59:2.03,60:2.01,61:1.99,62:1.98,63:1.98,64:1.96,65:1.94,66:1.92,67:1.92,68:1.89,69:1.9,70:1.87,71:1.87,72:1.75,73:1.7,74:1.62,75:1.51,76:1.44,77:1.41,78:1.36,79:1.36,80:1.32,81:1.45,82:1.46,83:1.48,84:1.4,85:1.5,86:1.5,87:2.6,88:2.21,89:2.15,90:2.06,91:2,92:1.96,93:1.9,94:1.87,95:1.8,96:1.69,97:1.6,98:1.6,99:1.6,100:1.6,101:1.6,102:1.6,103:1.6,104:1.6,105:1.6,106:1.6,107:1.6,108:1.6,109:1.6,110:1.6,111:1.6,112:1.6,113:1.6,114:1.6,115:1.6,116:1.6,117:1.6,118:1.6},qh={1:[1],2:[0],3:[1],4:[2],5:[3],6:[4],7:[3],8:[2],9:[1],10:[0],11:[1],12:[2],13:[6],14:[6],15:[3,5,7],16:[2,4,6],17:[1],18:[0],19:[1],20:[2],31:[3],32:[4],33:[3,5],34:[2,4,6],35:[1],36:[0],37:[1],38:[2],49:[3],50:[4],51:[3,5],52:[2],53:[1,2,5],54:[0,2],55:[1],56:[2],81:[3],82:[4],83:[3],84:[2],85:[1],86:[0],87:[1],88:[2]},Xh={1:1,2:2,3:1,4:2,5:3,6:4,7:5,8:6,9:7,10:8,11:1,12:2,13:3,14:4,15:5,16:6,17:7,18:8,19:1,20:2,21:3,22:4,23:5,24:6,25:7,26:8,27:9,28:10,29:11,30:2,31:3,32:4,33:5,34:6,35:7,36:8,37:1,38:2,39:3,40:4,41:5,42:6,43:7,44:8,45:9,46:10,47:11,48:2,49:3,50:4,51:5,52:6,53:7,54:8,55:1,56:2,57:3,58:4,59:3,60:4,61:5,62:6,63:7,64:8,65:9,66:10,67:11,68:12,69:13,70:14,71:15,72:4,73:5,74:6,75:7,76:8,77:9,78:10,79:11,80:2,81:3,82:4,83:5,84:6,85:7,86:8,87:1,88:2,89:3,90:4,91:3,92:4,93:5,94:6,95:7,96:8,97:9,98:10,99:11,100:12,101:13,102:14,103:15,104:2,105:2,106:2,107:2,108:2,109:2,110:2,111:2,112:2,113:3,114:4,115:5,116:6,117:7,118:8},Yh={ALA:[.17,.5,.33],ARG:[.81,1.81,1],ASN:[.42,.85,.43],ASP:[1.23,3.64,2.41],ASH:[-.07,.43,.5],CYS:[-.24,-.02,.22],GLN:[.58,.77,.19],GLU:[2.02,3.63,1.61],GLH:[-.01,.11,.12],GLY:[.01,1.15,1.14],HIS:[.17,.11,-.06],ILE:[-.31,-1.12,-.81],LEU:[-.56,-1.25,-.69],LYS:[.99,2.8,1.81],MET:[-.23,-.67,-.44],PHE:[-1.13,-1.71,-.58],PRO:[.45,.14,-.31],SER:[.13,.46,.33],THR:[.14,.25,.11],TRP:[-1.85,-2.09,-.24],TYR:[-.94,-.71,.23],VAL:[.07,-.46,-.53]},Kh=[0,0,0],Zh={HIS:"H",ARG:"R",LYS:"K",ILE:"I",PHE:"F",LEU:"L",TRP:"W",ALA:"A",MET:"M",PRO:"P",CYS:"C",ASN:"N",VAL:"V",GLY:"G",SER:"S",GLN:"Q",TYR:"Y",ASP:"D",GLU:"E",THR:"T",SEC:"U",PYL:"O"},Qh=Object.keys(Zh),Jh=["A","C","T","G","U","I"],ed=["DA","DC","DT","DG","DU","DI"],td=["A","G","I","DA","DG","DI"],id=Jh.concat(ed),nd=["SOL","WAT","HOH","H2O","W","DOD","D3O","TIP3","TIP4","SPC"],rd=["118","119","1AL","1CU","2FK","2HP","2OF","3CO","3MT","3NI","3OF","3P8","4MO","4PU","543","6MO","ACT","AG","AL","ALF","AM","ATH","AU","AU3","AUC","AZI","BA","BCT","BEF","BF4","BO4","BR","BS3","BSY","CA","CAC","CD","CD1","CD3","CD5","CE","CHT","CL","CO","CO3","CO5","CON","CR","CS","CSB","CU","CU1","CU3","CUA","CUZ","CYN","DME","DMI","DSC","DTI","DY","E4N","EDR","EMC","ER3","EU","EU3","F","FE","FE2","FPO","GA","GD3","GEP","HAI","HG","HGC","IN","IOD","IR","IR3","IRI","IUM","K","KO4","LA","LCO","LCP","LI","LU","MAC","MG","MH2","MH3","MLI","MLT","MMC","MN","MN3","MN5","MN6","MO1","MO2","MO3","MO4","MO5","MO6","MOO","MOS","MOW","MW1","MW2","MW3","NA","NA2","NA5","NA6","NAO","NAW","NCO","NET","NH4","NI","NI1","NI2","NI3","NO2","NO3","NRU","O4M","OAA","OC1","OC2","OC3","OC4","OC5","OC6","OC7","OC8","OCL","OCM","OCN","OCO","OF1","OF2","OF3","OH","OS","OS4","OXL","PB","PBM","PD","PDV","PER","PI","PO3","PO4","PR","PT","PT4","PTN","RB","RH3","RHD","RU","SB","SCN","SE4","SEK","SM","SMO","SO3","SO4","SR","T1A","TB","TBA","TCN","TEA","TH","THE","TL","TMA","TRA","UNX","V","VN3","VO4","W","WO5","Y1","YB","YB2","YH","YT3","ZCM","ZN","ZN2","ZN3","ZNO","ZO3","OHX"],sd=["045","0AT","0BD","0MK","0NZ","0TS","0V4","0XY","0YT","10M","147","149","14T","15L","16G","18T","18Y","1AR","1BW","1GL","1GN","1JB","1LL","1NA","1S3","26M","26Q","26R","26V","26W","26Y","27C","289","291","293","2DG","2F8","2FG","2FL","2FP","2GL","2M4","2M5","32O","34V","3CM","3DO","3DY","3FM","3LR","3MF","3MG","3SA","3ZW","46D","46M","46Z","48Z","4CQ","4GC","4NN","50A","5DI","5GF","5MM","5RP","5SA","5SP","64K","6PG","6SA","7JZ","7SA","A1Q","A2G","AAB","AAL","AAO","ABC","ABD","ABE","ABF","ABL","ACG","ACI","ACR","ACX","ADA","ADG","ADR","AF1","AFD","AFL","AFO","AFP","AFR","AGC","AGH","AGL","AHR","AIG","ALL","ALX","AMU","AOG","AOS","ARA","ARB","ARE","ARI","ASG","ASO","AXP","AXR","B0D","B16","B2G","B4G","B6D","B8D","B9D","BBK","BCD","BDG","BDP","BDR","BEM","BFP","BGC","BGL","BGP","BGS","BHG","BMA","BMX","BNG","BNX","BOG","BRI","BXF","BXP","BXX","BXY","C3X","C4X","C5X","CAP","CBI","CBK","CBS","CDR","CEG","CGF","CHO","CR1","CR6","CRA","CT3","CTO","CTR","CTT","D6G","DAF","DAG","DDA","DDB","DDL","DEL","DFR","DFX","DG0","DGC","DGD","DGM","DGS","DIG","DLF","DLG","DMU","DNO","DOM","DP5","DQQ","DQR","DR2","DR3","DR4","DRI","DSR","DT6","DVC","E4P","E5G","EAG","EBG","EBQ","EGA","EJT","EPG","ERE","ERI","F1P","F1X","F6P","FBP","FCA","FCB","FCT","FDP","FDQ","FFC","FIX","FMO","FRU","FSI","FU4","FUB","FUC","FUD","FUL","FXP","G16","G1P","G2F","G3I","G4D","G4S","G6D","G6P","G6S","GAC","GAD","GAL","GC1","GC4","GCD","GCN","GCO","GCS","GCT","GCU","GCV","GCW","GCX","GE1","GFG","GFP","GIV","GL0","GL2","GL5","GL6","GL7","GL9","GLA","GLB","GLC","GLD","GLF","GLG","GLO","GLP","GLS","GLT","GLW","GMH","GN1","GNX","GP1","GP4","GPH","GPM","GQ1","GQ2","GQ4","GS1","GS4","GSA","GSD","GTE","GTH","GTK","GTR","GTZ","GU0","GU1","GU2","GU3","GU4","GU5","GU6","GU8","GU9","GUF","GUP","GUZ","GYP","GYV","H2P","HDL","HMS","HS2","HSD","HSG","HSH","HSJ","HSQ","HSR","HSU","HSX","HSY","HSZ","IAB","IDG","IDR","IDS","IDT","IDU","IDX","IDY","IMK","IN1","IPT","ISL","KBG","KD2","KDA","KDM","KDO","KFN","KO1","KO2","KTU","L6S","LAG","LAI","LAK","LAO","LAT","LB2","LBT","LCN","LDY","LGC","LGU","LM2","LMT","LMU","LOG","LOX","LPK","LSM","LTM","LVZ","LXB","LXZ","M1F","M3M","M6P","M8C","MA1","MA2","MA3","MAB","MAG","MAL","MAN","MAT","MAV","MAW","MBG","MCU","MDA","MDM","MDP","MFA","MFB","MFU","MG5","MGA","MGL","MLB","MMA","MMN","MN0","MRP","MTT","MUG","MVP","MXY","N1L","N9S","NAA","NAG","NBG","NDG","NED","NG1","NG6","NGA","NGB","NGC","NGE","NGF","NGL","NGS","NGY","NHF","NM6","NM9","NTF","NTO","NTP","NXD","NYT","OPG","OPM","ORP","OX2","P3M","P53","P6P","PA5","PNA","PNG","PNW","PRP","PSJ","PSV","PTQ","QDK","QPS","QV4","R1P","R1X","R2B","R5P","RAA","RAE","RAF","RAM","RAO","RAT","RB5","RBL","RCD","RDP","REL","RER","RF5","RG1","RGG","RHA","RIB","RIP","RNS","RNT","ROB","ROR","RPA","RST","RUB","RUU","RZM","S6P","S7P","SA0","SCR","SDD","SF6","SF9","SG4","SG5","SG6","SG7","SGA","SGC","SGD","SGN","SGS","SHB","SHG","SI3","SIO","SOE","SOL","SSG","SUC","SUP","SUS","T6P","T6T","TAG","TCB","TDG","TGK","TGY","TH1","TIA","TM5","TM6","TM9","TMR","TMX","TOA","TOC","TRE","TYV","UCD","UDC","VG1","X0X","X1X","X2F","X4S","X5S","X6X","XBP","XDN","XDP","XIF","XIM","XLF","XLS","XMM","XUL","XXR","XYP","XYS","YO5","Z3Q","Z6J","Z9M","ZDC","ZDM"],ad=["CA","C","N","O","O1","O2","OC1","OC2","OX1","OXT","OT1","OT2","H","H1","H2","H3","HA","HN","BB"],od=["P","OP1","OP2","HOP2","HOP3","O2'","O3'","O4'","O5'","C1'","C2'","C3'","C4'","C5'","H1'","H2'","H2''","HO2'","H3'","H4'","H5'","H5''","HO3'","HO5'","O2*","O3*","O4*","O5*","C1*","C2*","C3*","C4*","C5*"],ld={1:{trace:"CA",direction1:"C",direction2:["O","OC1","O1","OX1","OXT","OT1","OT2"],backboneStart:"N",backboneEnd:"C"},2:{trace:["C4'","C4*"],direction1:["C1'","C1*"],direction2:["C3'","C3*"],backboneStart:"P",backboneEnd:["O3'","O3*"]},3:{trace:["C3'","C3*"],direction1:["C2'","C2*"],direction2:["O4'","O4*"],backboneStart:"P",backboneEnd:["O3'","O3*"]},4:{trace:["CA","BB"],backboneStart:["CA","BB"],backboneEnd:["CA","BB"]},5:{trace:["C4'","C4*","P"],backboneStart:["C4'","C4*","P"],backboneEnd:["C4'","C4*","P"]},6:{trace:["C3'","C3*","C2'","P"],backboneStart:["C3'","C3*","C2'","P"],backboneEnd:["C3'","C3*","C2'","P"]}};ld[Oh]={};const cd={HD:"H",HS:"H",A:"C",NA:"N",NS:"N",OA:"O",OS:"O",SA:"S",G0:"C",G1:"C",G2:"C",G3:"C",CG0:"C",CG1:"C",CG2:"C",CG3:"C",W:"O"};function ud(e){switch(e){case 0:return 0;case 1:return 1;case 2:return 2;case 3:return 3;case 4:return 4;default:return 8}}const hd=new Map([[2,Ro(180)],[3,Ro(120)],[4,Ro(109.4721)],[6,Ro(90)]]);function dd(e,t){let i=[];const n=new _t,r=new _t;return n.subVectors(t,e),e.eachBondedAtom((t=>{1!==t.number&&(r.subVectors(t,e),i.push(n.angleTo(r)))})),i}function fd(e,t){const i=e.clone(),n=new _t;n.subVectors(t,e);const r=[new _t,new _t];let s=0;if(e.eachBondedAtom((t=>{s>1||1!==t.number&&(i.index=t.index,r[s++].subVectors(t,e))})),1===s&&i.eachBondedAtom((t=>{s>1||1!==t.number&&t.index!==e.index&&r[s++].subVectors(t,e)})),2!==s)return;const a=r[0].cross(r[1]);return Math.abs(Math.PI/2-a.angleTo(n))}function md(e,t){const i=e.structure,n=i.atomCount,r=new Int8Array(n),s=new Int8Array(n),a=new Int8Array(n),o=new Int8Array(n);return i.eachAtom((e=>{const i=e.index,[n,l,c,u]=function(e,t){const i=e.bondToElementCount(1);let n=e.formalCharge||0;const r="always"===t.assignCharge||"auto"===t.assignCharge&&0===n,s="always"===t.assignH||"auto"===t.assignH&&0===i,a=e.bondCount,o=function(e){let t=0;return e.eachBond((e=>t+=e.bondOrder)),t}(e),l=function(e){const t=e.structure.getBondProxy(),i=e.number,n=8===i||7===i;if(n&&4===e.bondCount)return!1;let r=!1;return e.eachBond((i=>{if(i.bondOrder>1)r=!0;else if(n){const n=i.getOtherAtom(e);n.eachBond((e=>{if(e.bondOrder>1){const t=n.number;if((15===t||16===t)&&8===e.getOtherAtom(n).number)return;r=!0}}),t)}})),r}(e),c=o-a>0;let u=0,h=8;switch(e.number){case 1:r&&(0===a?(n=1,h=0):1===a&&(n=0,h=1));break;case 6:r&&(n=0),s&&(u=Math.max(0,4-o-Math.abs(n))),h=ud(a+u+Math.max(0,-n));break;case 7:if(r)if(s)if(l&&o<4)n=a-i==1&&o-i==2?1:0;else{let t=!1;e.eachBondedAtom((e=>{(16===e.number||e.isMetal())&&(t=!0)})),n=t?0:1}else n=o-3;s&&(u=Math.max(0,3-o+n)),h=ud(l&&!c?a+u-n:a+u+1-n);break;case 8:r&&(s||(n=o-2),1===o&&e.eachBondedAtom((t=>{t.eachBond((i=>{const r=i.getOtherAtom(t);r.index!==e.index&&8===r.number&&2===i.bondOrder&&(n=-1)}))}))),s&&(u=Math.max(0,2-o+n)),h=ud(l&&!c?a+u-n+1:a+u-n+2);break;case 16:r&&(s||(n=o<=3&&!e.bondToElementCount(8)?o-2:0)),s&&o<2&&(u=Math.max(0,2-o+n)),o<=3&&(h=ud(a+u-n+2));break;case 9:case 17:case 35:case 53:case 85:r&&(n=o-1);break;case 3:case 11:case 19:case 37:case 55:case 87:r&&(n=1-o);break;case 4:case 12:case 20:case 38:case 56:case 88:r&&(n=2-o);break;default:console.warn("Requested charge, protonation for an unhandled element",e.element)}return[n,u,u+i,h]}(e,t);r[i]=n,s[i]=l,a[i]=c,o[i]=u})),{charge:r,implicitH:s,totalH:a,idealGeometry:o}}function pd(e){if(e["@valenceModel"])return e["@valenceModel"];const t=md(e,{assignCharge:"auto",assignH:"auto"});return e["@valenceModel"]=t,t}function gd(e){return 15===e.number&&e.bondToElementCount(8)===e.bondCount}const _d=["ARG","HIS","LYS"],yd=["GLU","ASP"];function vd(e,t){return 2===e&&1===t||1===e&&2===t}function bd(e,t){return 3===e&&3===t}function xd(e,t){return 3===e&&1===t||1===e&&3===t}function wd(e){return"HIS"===e.resname&&7==e.number&&e.isRing()}function Sd(e,t){return 5===e&&4===t||4===e&&5===t}function Md(e,t){return 9===e&&5===t||5===e&&9===t}const Ad=[3,11,19,37,55,12,20,38,56,13,31,49,81,21,50,82,83,51,80];function Cd(e,t){return 12===e?11===t||12===t:13===e?10===t:void 0}const Td=[17,35,53,85];const Pd=[7,8,16],Ed=[6,7,15,16];const Id=Ro(180),Dd=Ro(120);function Rd(e,t,i){return!kd(e,t,i)&&(e.modelIndex!==t.modelIndex||e.altloc&&t.altloc&&e.altloc!==t.altloc)}const Ld={maxHydrophobicDist:4,maxHbondDist:3.5,maxHbondSulfurDist:4.1,maxHbondAccAngle:45,maxHbondDonAngle:45,maxHbondAccPlaneAngle:90,maxHbondDonPlaneAngle:30,maxPiStackingDist:5.5,maxPiStackingOffset:2,maxPiStackingAngle:30,maxCationPiDist:6,maxCationPiOffset:2,maxIonicDist:5,maxHalogenBondDist:4,maxHalogenBondAngle:30,maxMetalDist:3,refineSaltBridges:!0,masterModelIndex:-1,lineOfSightDistFactor:1};function kd(e,t,i){return e.modelIndex===i&&t.modelIndex!==i||t.modelIndex===i&&e.modelIndex!==i}function Od(e,t,i){return!kd(e,t,i)&&(e.modelIndex!==t.modelIndex||e.residueIndex===t.residueIndex||e.altloc&&t.altloc&&e.altloc!==t.altloc)}function Nd(t){const i={types:[],groups:[],centers:{x:[],y:[],z:[]},atomSets:[]};return e.Debug&&Fl.time("calculateFeatures"),function(e,t){const{charge:i}=pd(e.data),n={};e.eachResidue((e=>{if(_d.includes(e.resname)){const i=Rh(1);e.eachAtom((e=>{7===e.number&&e.isSidechain()&&Lh(i,e)})),kh(t,i)}else Qh.includes(e.resname)||e.isNucleic()||(e.eachAtom((e=>{let i=!1;const r=Rh(1);!function(e){let t=0;return 6===e.number&&3===e.bondCount&&3===e.bondToElementCount(7)&&e.eachBondedAtom((e=>{e.bondCount-e.bondToElementCount(1)==1&&++t})),2===t}(e)?function(e){let t=0;return 6===e.number&&3===e.bondCount&&2===e.bondToElementCount(7)&&1===e.bondToElementCount(6)&&e.eachBondedAtom((e=>{e.bondCount-e.bondToElementCount(1)==1&&++t})),2===t}(e)&&(r.group=9,i=!0):(r.group=8,i=!0),i&&(e.eachBondedAtom((e=>{7===e.number&&(n[e.index]=!0,Lh(r,e))})),kh(t,r))})),e.eachAtom((e=>{const r=Rh(1);i[e.index]>0&&(n[e.index]||(Lh(r,e),kh(t,r)))})))}))}(t,i),function(e,t){const{charge:i}=pd(e.data),n={};e.eachResidue((e=>{if(yd.includes(e.resname)){const i=Rh(2);e.eachAtom((e=>{8===e.number&&e.isSidechain()&&Lh(i,e)})),kh(t,i)}else if(id.includes(e.resname)){const i=Rh(2);e.eachAtom((e=>{gd(e)&&(i.group=6,e.eachBondedAtom((e=>{8===e.number&&Lh(i,e)})),kh(t,i))}))}else Qh.includes(e.resname)||id.includes(e.resname)||(e.eachAtom((e=>{let i=!1;const r=Rh(2);!function(e){return 16===e.number&&3===e.bondToElementCount(8)}(e)?gd(e)?(r.group=6,i=!0):function(e){return 16===e.number&&4===e.bondToElementCount(8)}(e)?(r.group=5,i=!0):function(e){let t=0;return 6===e.number&&2===e.bondToElementCount(8)&&1===e.bondToElementCount(6)&&e.eachBondedAtom((e=>{8===e.number&&e.bondCount-e.bondToElementCount(1)==1&&++t})),2===t}(e)&&(r.group=10,i=!0):(r.group=4,i=!0),i&&(e.eachBondedAtom((e=>{8===e.number&&(n[e.index]=!0,Lh(r,e))})),kh(t,r))})),e.eachAtom((e=>{const r=Rh(2);i[e.index]<0&&(n[e.index]||(Lh(r,e),kh(t,r)))})))}))}(t,i),function(e,t){const i=e.getAtomProxy();e.eachResidue((e=>{const n=e.getAromaticRings();if(n){const r=e.atomOffset;n.forEach((e=>{const n=Rh(3);e.forEach((e=>{i.index=e+r,Lh(n,i)})),kh(t,n)}))}}))}(t,i),function(e,t){const{charge:i,implicitH:n,idealGeometry:r}=pd(e.data);e.eachAtom((e=>{const s=Rh(5),a=e.number;if(8===a)Lh(s,e),kh(t,s);else if(7===a){if(wd(e))Lh(s,e),kh(t,s);else if(i[e.index]<1){const i=e.bondCount+n[e.index],a=r[e.index];(4===a&&i<4||3===a&&i<3||2===a&&i<2)&&(Lh(s,e),kh(t,s))}}else 16===a&&("CYS"!==e.resname&&"MET"!==e.resname&&-1!==e.formalCharge||(Lh(s,e),kh(t,s)))}))}(t,i),function(e,t){const{totalH:i}=pd(e.data);e.eachAtom((e=>{const n=Rh(4),r=e.number;(wd(e)||i[e.index]>0&&(7===r||8===r||16===r))&&(Lh(n,e),kh(t,n))}))}(t,i),function(e,t){const{totalH:i}=pd(e.data);e.eachAtom((e=>{if(6===e.number&&i[e.index]>0&&(e.bondToElementCount(7)>0||e.bondToElementCount(8)>0||function(e){if(!e.isAromatic())return!1;const t=e.residueType.getRings();if(!t)return!1;let i=!1;return t.rings.forEach((t=>{i||t.some((t=>e.index-e.residueAtomOffset===t))&&(i=t.some((t=>{const i=e.residueType.atomTypeIdList[t],n=e.atomMap.get(i).number;return 7===n||8===n})))})),i}(e))){const i=Rh(9);Lh(i,e),kh(t,i)}}))}(t,i),function(e,t){e.eachAtom((e=>{let i=!1,n=!1;const r=Qh.includes(e.resname),s=id.includes(e.resname);if(r||s?r?8===e.number?(["ASP","GLU","SER","THR","TYR","ASN","GLN"].includes(e.resname)&&e.isSidechain()||e.isBackbone())&&(i=!0,n=!0):16===e.number&&"CYS"===e.resname?(i=!0,n=!0):7===e.number&&"HIS"===e.resname&&e.isSidechain()&&(i=!0):s&&(8===e.number&&e.isBackbone()?(i=!0,n=!0):["N3","N4","N7"].includes(e.atomname)?i=!0:["O2","O4","O6"].includes(e.atomname)&&(i=!0,n=!0)):e.isHalogen()||8===e.number||16===e.number?(i=!0,n=!0):7===e.number&&(i=!0),i){const i=Rh(11);Lh(i,e),kh(t,i)}if(n){const i=Rh(10);Lh(i,e),kh(t,i)}}))}(t,i),function(e,t){e.eachAtom((e=>{if(e.isTransitionMetal()||30===e.number||48===e.number){const i=Rh(12);Lh(i,e),kh(t,i)}else if(Ad.includes(e.number)){const i=Rh(13);Lh(i,e),kh(t,i)}}))}(t,i),function(e,t){e.eachAtom((e=>{const i=Rh(8);let n=!1;6===e.number?(n=!0,e.eachBondedAtom((e=>{const t=e.number;6!==t&&1!==t&&(n=!1)}))):9===e.number&&(n=!0),n&&(Lh(i,e),kh(t,i))}))}(t,i),function(e,t){e.eachAtom((e=>{if(Pd.includes(e.number)){let i=!1;if(e.eachBondedAtom((e=>{Ed.includes(e.number)&&(i=!0)})),i){const i=Rh(7);Lh(i,e),kh(t,i)}}}))}(t,i),function(e,t){e.eachAtom((e=>{if(Td.includes(e.number)&&1===e.bondToElementCount(6)){const i=Rh(6);Lh(i,e),kh(t,i)}}))}(t,i),e.Debug&&Fl.timeEnd("calculateFeatures"),i}function Fd(t,i=Ld){const n=function(e){const{types:t,centers:i}=e;return{features:e,spatialHash:new Ch(i),contactStore:new Ph,featureSet:new Ih(t.length,!1)}}(Nd(t));e.Debug&&Fl.time("calculateContacts"),function(e,t,i={}){const n=uo(i.maxIonicDist,Ld.maxIonicDist),r=uo(i.maxPiStackingDist,Ld.maxPiStackingDist),s=uo(i.maxPiStackingOffset,Ld.maxPiStackingOffset),a=uo(i.maxPiStackingAngle,Ld.maxPiStackingAngle),o=uo(i.maxCationPiDist,Ld.maxCationPiDist),l=uo(i.maxCationPiOffset,Ld.maxCationPiOffset),c=uo(i.masterModelIndex,Ld.masterModelIndex),u=Math.max(n+2,r,o),h=r*r,d=o*o,{features:f,spatialHash:m,contactStore:p,featureSet:g}=t,{types:_,centers:y,atomSets:v}=f,{x:b,y:x,z:w}=y,S=_.length,M=e.atomStore.x,A=e.atomStore.y,C=e.atomStore.z,T=e.getAtomProxy(),P=e.getAtomProxy(),E=function(e,t,i){const n=e.length,r=t.length;for(let s=0;s{if(t<=e)return;if(T.index=v[e][0],P.index=v[t][0],Od(T,P,c))return;const r=_[e],o=_[t];if(vd(r,o))E(v[e],v[t],n)&&z(e,t,1);else if(bd(r,o)){if(i<=h){F(v[e],O),F(v[t],N);const i=57.29578*O.angleTo(N);Math.min(B(e,t,N),B(t,e,O))<=s&&(i<=a||i>=180-a||i<=a+90&&i>=90-a)&&z(e,t,3)}}else if(xd(r,o)&&i<=d){const[i,n]=3===r?[e,t]:[t,e];F(v[i],O),B(n,i,O)<=l&&z(i,n,2)}}))}(t,n,i),function(e,t,i={}){const n=uo(i.maxHbondDist,Ld.maxHbondDist),r=uo(i.maxHbondSulfurDist,Ld.maxHbondSulfurDist),s=Ro(uo(i.maxHbondAccAngle,Ld.maxHbondAccAngle)),a=Ro(uo(i.maxHbondDonAngle,Ld.maxHbondDonAngle)),o=Ro(uo(i.maxHbondAccPlaneAngle,Ld.maxHbondAccPlaneAngle)),l=Ro(uo(i.maxHbondDonPlaneAngle,Ld.maxHbondDonPlaneAngle)),c=uo(i.masterModelIndex,Ld.masterModelIndex),u=Math.max(n,r),h=n*n,{features:d,spatialHash:f,contactStore:m,featureSet:p}=t,{types:g,centers:_,atomSets:y}=d,{x:v,y:b,z:x}=_,w=g.length,{idealGeometry:S}=pd(e.data),M=e.getAtomProxy(),A=e.getAtomProxy();for(let e=0;e{if(t<=e)return;const n=g[e],r=g[t],u=Md(n,r);if(!u&&!Sd(n,r))return;const[d,f]=5===r?[e,t]:[t,e];if(M.index=y[d][0],A.index=y[f][0],A.index===M.index)return;if(Od(M,A,c))return;if(16!==M.number&&16!==A.number&&i>h)return;if(M.connectedTo(A))return;const _=dd(M,A),v=hd.get(S[M.index])||Ro(120);if(_.some((e=>Math.abs(v-e)>a)))return;if(3===S[M.index]){const e=fd(M,A);if(void 0!==e&&e>l)return}const b=dd(A,M),x=hd.get(S[A.index])||Ro(120);if(b.some((e=>x-e>s)))return;if(3===S[A.index]){const e=fd(A,M);if(void 0!==e&&e>o)return}p.setBits(d,f);const w=u?8:function(e,t){return e.isWater()&&t.isWater()}(C=M,T=A)?9:function(e,t){return e.isBackbone()&&t.isBackbone()}(C,T)?10:4;var C,T;m.addContact(d,f,w)}))}(t,n,i),function(e,t,i={}){const n=uo(i.maxMetalDist,Ld.maxMetalDist),r=uo(i.masterModelIndex,Ld.masterModelIndex),{features:s,spatialHash:a,contactStore:o,featureSet:l}=t,{types:c,centers:u,atomSets:h}=s,{x:d,y:f,z:m}=u,p=c.length,g=e.getAtomProxy(),_=e.getAtomProxy();for(let e=0;e{if(t<=e)return;if(g.index=h[e][0],_.index=h[t][0],Od(g,_,r))return;const n=g.isMetal(),s=_.isMetal();if(!n&&!s)return;const[a,u]=n?[c[e],c[t]]:[c[t],c[e]];Cd(a,u)&&(l.setBits(e,t),o.addContact(e,t,7))}))}(t,n,i),function(e,t,i={}){const n=uo(i.maxHydrophobicDist,Ld.maxHydrophobicDist),r=uo(i.masterModelIndex,Ld.masterModelIndex),{features:s,spatialHash:a,contactStore:o,featureSet:l}=t,{types:c,centers:u,atomSets:h}=s,{x:d,y:f,z:m}=u,p=c.length,g=e.getAtomProxy(),_=e.getAtomProxy();for(let e=0;e{var n,s;t<=e||(g.index=h[e][0],_.index=h[t][0],Od(g,_,r)||9===g.number&&9===_.number||g.connectedTo(_)||(n=c[e],s=c[t],8===n&&8===s&&(l.setBits(e,t),o.addContact(e,t,6))))}))}(t,n,i),function(e,t,i={}){const n=uo(i.maxHalogenBondDist,Ld.maxHalogenBondDist),r=Ro(uo(i.maxHalogenBondAngle,Ld.maxHalogenBondAngle)),s=uo(i.masterModelIndex,Ld.masterModelIndex),{features:a,spatialHash:o,contactStore:l,featureSet:c}=t,{types:u,centers:h,atomSets:d}=a,{x:f,y:m,z:p}=h,g=u.length,_=e.getAtomProxy(),y=e.getAtomProxy();for(let e=0;e{if(t<=e)return;if(_.index=d[e][0],y.index=d[t][0],Od(_,y,s))return;if(n=u[e],a=u[t],!(7===n&&6===a||6===n&&7===a))return;var n,a;const[o,h]=6===u[e]?[_,y]:[y,_],f=dd(o,h);if(1!==f.length)return;if(Id-f[0]>r)return;const m=dd(h,o);0!==m.length&&(m.some((e=>Dd-e>r))||(c.setBits(e,t),l.addContact(e,t,5)))}))}(t,n,i);const r=function(e){const{index1:t,index2:i,count:n}=e.contactStore,r=Dh({nodeArray1:t,nodeArray2:i,edgeCount:n,nodeCount:e.featureSet.length}),s=new Ih(e.contactStore.count,!0);return Object.assign({adjacencyList:r,contactSet:s},e)}(n);return function(t,i,n={}){e.Debug&&Fl.time("refineLineOfSight");const r=uo(n.lineOfSightDistFactor,Ld.lineOfSightDistFactor),s=uo(n.masterModelIndex,Ld.masterModelIndex),a=t.spatialHash,{contactSet:o,contactStore:l,features:c}=i,{index1:u,index2:h}=l,{centers:d,atomSets:f}=c,{x:m,y:p,z:g}=d,_=t.getAtomProxy(),y=t.getAtomProxy(),v=t.getAtomProxy(),b=new _t,x=new _t,w=3*r,S=r*r;o.forEach((t=>{b.set(m[u[t]],p[u[t]],g[u[t]]),x.set(m[h[t]],p[h[t]],g[h[t]]);const i=(b.x+x.x)/2,n=(b.y+x.y)/2,r=(b.z+x.z)/2,l=f[u[t]],c=f[h[t]];_.index=l[0],y.index=c[0],a.eachWithin(i,n,r,w,((i,n)=>{v.index=i,1!==v.number&&v.vdw*v.vdw*S>n&&!Rd(_,v,s)&&!Rd(y,v,s)&&!l.includes(i)&&!c.includes(i)&&b.distanceToSquared(v)>1&&x.distanceToSquared(v)>1&&(o.clear(t),e.Debug&&Fl.log("removing",_.qualifiedName(),y.qualifiedName(),"because",v.qualifiedName()))}))})),e.Debug&&Fl.timeEnd("refineLineOfSight")}(t,r,i),function(e,t){const{contactSet:i,contactStore:n,features:r}=t,{type:s,index1:a,index2:o}=n,{atomSets:l}=r,c=e.getAtomProxy(),u=e.getAtomProxy(),h={},d=function(e,t,n){const[r,s]=h[n]||[1/0,-1];e{if(6!==s[e])return;c.index=l[a[e]][0],u.index=l[o[e]][0];const t=c.distanceTo(u);d(t,e,`${c.index}|${u.residueIndex}`),d(t,e,`${u.index}|${c.residueIndex}`)}))}(t,r),i.refineSaltBridges&&function(e,t){const{contactSet:i,contactStore:n,features:r}=t,{type:s,index1:a,index2:o}=n,{atomSets:l}=r,c={},u=function(e,t){c[e]||(c[e]=[]),c[e].push(t)};i.forEach((e=>{1===s[e]&&(l[a[e]].forEach((t=>u(t,e))),l[o[e]].forEach((t=>u(t,e))))})),i.forEach((e=>{if(!function(e){return 4===e||9===e||10===e}(s[e]))return;const t=c[l[a[e]][0]],n=c[l[o[e]][0]];if(!t||!n)return;const r=t.length;for(let s=0;s{3===s[e]&&(l[a[e]].forEach((t=>u(t,e))),l[o[e]].forEach((t=>u(t,e))))})),i.forEach((e=>{if(6!==s[e]&&2!==s[e])return;const t=c[l[a[e]][0]],n=c[l[o[e]][0]];if(!t||!n)return;const r=t.length;for(let s=0;s{1===s[e]&&(l[a[e]].forEach((t=>u(t,e))),l[o[e]].forEach((t=>u(t,e))))})),i.forEach((e=>{if(7!==s[e])return;const t=c[l[a[e]][0]],n=c[l[o[e]][0]];if(!t||!n)return;const r=t.length;for(let e=0;et.getAtomSet(new wl(e)))):t.getAtomSet(new wl(n.filterSele))),a.forEach((e=>{const t=p[e];if(!r.includes(t))return;if(x){const t=c[f[e]][0],i=c[m[e]][0];if(Array.isArray(x)){if(!(x[0].isSet(t)&&x[1].isSet(i)||x[1].isSet(t)&&x[0].isSet(i)))return}else if(!x.isSet(t)&&!x.isSet(i))return}const i=f[e],s=m[e];g.push(u[i],h[i],d[i]),_.push(u[s],h[s],d[s]),y.push(...function(e){switch(e){case 4:case 9:case 10:return Ud.setHex(2851770).toArray();case 6:return Ud.setHex(8421504).toArray();case 5:return Ud.setHex(4259775).toArray();case 1:return Ud.setHex(15779860).toArray();case 7:return Ud.setHex(9191577).toArray();case 2:return Ud.setHex(16744448).toArray();case 3:return Ud.setHex(9220966).toArray();case 8:return Ud.setHex(12967404).toArray();default:return Ud.setHex(13421772).toArray()}}(t)),v.push(n.radius),b.push(e)})),{position1:new Float32Array(g),position2:new Float32Array(_),color:new Float32Array(y),color2:new Float32Array(y),radius:new Float32Array(v),picking:new qd(b,e,t)}}class $d{constructor(e){this.array=e}get type(){return""}get data(){return{}}getIndex(e){return this.array?this.array[e]:e}getObject(e){return{}}_applyTransformations(e,t,i){return t&&e.applyMatrix4(t.matrix),i&&e.applyMatrix4(i.matrix),e}_getPosition(e){return new _t}getPosition(e,t,i){return this._applyTransformations(this._getPosition(e),t,i)}}class Gd extends $d{constructor(e){super(),this.shape=e}get primitive(){}get data(){return this.shape}get type(){return this.primitive.type}getObject(e){return this.primitive.objectFromShape(this.shape,this.getIndex(e))}_getPosition(e){return this.primitive.positionFromShape(this.shape,this.getIndex(e))}}class Hd extends $d{constructor(e,t){super(e),this.structure=t}get type(){return"atom"}get data(){return this.structure}getObject(e){return this.structure.getAtomProxy(this.getIndex(e))}_getPosition(e){return(new _t).copy(this.getObject(e))}}class jd extends $d{constructor(e){super(),this.axes=e}get type(){return"axes"}get data(){return this.axes}getObject(){return{axes:this.axes}}_getPosition(){return this.axes.center.clone()}}class Wd extends $d{constructor(e,t,i){super(e),this.structure=t,this.bondStore=i||t.bondStore}get type(){return"bond"}get data(){return this.structure}getObject(e){const t=this.structure.getBondProxy(this.getIndex(e));return t.bondStore=this.bondStore,t}_getPosition(e){const t=this.getObject(e);return(new _t).copy(t.atom1).add(t.atom2).multiplyScalar(.5)}}class qd extends $d{constructor(e,t,i){super(e),this.contacts=t,this.structure=i}get type(){return"contact"}get data(){return this.contacts}getObject(e){const t=this.getIndex(e),{features:i,contactStore:n}=this.contacts,{centers:r,atomSets:s}=i,{x:a,y:o,z:l}=r,{index1:c,index2:u,type:h}=n,d=c[t],f=u[t];return{center1:new _t(a[d],o[d],l[d]),center2:new _t(a[f],o[f],l[f]),atom1:this.structure.getAtomProxy(s[d][0]),atom2:this.structure.getAtomProxy(s[f][0]),type:Bd(h[t])}}_getPosition(e){const{center1:t,center2:i}=this.getObject(e);return(new _t).addVectors(t,i).multiplyScalar(.5)}}class Xd extends $d{constructor(e,t,i){super(e),this.validation=t,this.structure=i}get type(){return"clash"}get data(){return this.validation}getObject(e){const t=this.validation,i=this.getIndex(e);return{validation:t,index:i,clash:t.clashArray[i]}}_getAtomProxyFromSele(e){const t=new wl(e),i=this.structure.getAtomIndices(t)[0];return this.structure.getAtomProxy(i)}_getPosition(e){const t=this.getObject(e).clash,i=this._getAtomProxyFromSele(t.sele1),n=this._getAtomProxyFromSele(t.sele2);return(new _t).copy(i).add(n).multiplyScalar(.5)}}class Yd extends Wd{get type(){return"distance"}}class Kd extends $d{get type(){return"ignore"}}class Zd extends Gd{constructor(e,t){super(e),this.mesh=t}get type(){return"mesh"}getObject(){const e=this.mesh;return{shape:this.shape,name:e.name,serial:e.serial}}_getPosition(){return this.__position||(this.__position=zu(this.mesh.position)),this.__position}}class Qd extends $d{constructor(e,t){super(e),this.surface=t}get type(){return"surface"}get data(){return this.surface}getObject(e){return{surface:this.surface,index:this.getIndex(e)}}_getPosition(){return this.surface.center.clone()}}class Jd extends $d{constructor(e,t){super(),this.unitcell=e,this.structure=t}get type(){return"unitcell"}get data(){return this.unitcell}getObject(){return{unitcell:this.unitcell,structure:this.structure}}_getPosition(){return this.unitcell.getCenter(this.structure)}}class ef extends $d{constructor(e,t){super(e),this.volume=t}get type(){return"volume"}get data(){return this.volume}getObject(e){const t=this.volume,i=this.getIndex(e);return{volume:t,index:i,value:t.data[i]}}_getPosition(e){const t=this.volume.position,i=this.getIndex(e);return new _t(t[3*i],t[3*i+1],t[3*i+2])}}class tf extends ef{get type(){return"slice"}}function nf(){return new Uint32Array([0,265,515,778,1030,1295,1541,1804,2060,2309,2575,2822,3082,3331,3593,3840,400,153,915,666,1430,1183,1941,1692,2460,2197,2975,2710,3482,3219,3993,3728,560,825,51,314,1590,1855,1077,1340,2620,2869,2111,2358,3642,3891,3129,3376,928,681,419,170,1958,1711,1445,1196,2988,2725,2479,2214,4010,3747,3497,3232,1120,1385,1635,1898,102,367,613,876,3180,3429,3695,3942,2154,2403,2665,2912,1520,1273,2035,1786,502,255,1013,764,3580,3317,4095,3830,2554,2291,3065,2800,1616,1881,1107,1370,598,863,85,348,3676,3925,3167,3414,2650,2899,2137,2384,1984,1737,1475,1226,966,719,453,204,4044,3781,3535,3270,3018,2755,2505,2240,2240,2505,2755,3018,3270,3535,3781,4044,204,453,719,966,1226,1475,1737,1984,2384,2137,2899,2650,3414,3167,3925,3676,348,85,863,598,1370,1107,1881,1616,2800,3065,2291,2554,3830,4095,3317,3580,764,1013,255,502,1786,2035,1273,1520,2912,2665,2403,2154,3942,3695,3429,3180,876,613,367,102,1898,1635,1385,1120,3232,3497,3747,4010,2214,2479,2725,2988,1196,1445,1711,1958,170,419,681,928,3376,3129,3891,3642,2358,2111,2869,2620,1340,1077,1855,1590,314,51,825,560,3728,3993,3219,3482,2710,2975,2197,2460,1692,1941,1183,1430,666,915,153,400,3840,3593,3331,3082,2822,2575,2309,2060,1804,1541,1295,1030,778,515,265,0])}function rf(){return new Int32Array([-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,8,3,9,8,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,1,2,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,2,10,0,2,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,8,3,2,10,8,10,9,8,-1,-1,-1,-1,-1,-1,-1,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,11,2,8,11,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,2,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,11,2,1,9,11,9,8,11,-1,-1,-1,-1,-1,-1,-1,3,10,1,11,10,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,10,1,0,8,10,8,11,10,-1,-1,-1,-1,-1,-1,-1,3,9,0,3,11,9,11,10,9,-1,-1,-1,-1,-1,-1,-1,9,8,10,10,8,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,3,0,7,3,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,8,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,1,9,4,7,1,7,3,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,8,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,4,7,3,0,4,1,2,10,-1,-1,-1,-1,-1,-1,-1,9,2,10,9,0,2,8,4,7,-1,-1,-1,-1,-1,-1,-1,2,10,9,2,9,7,2,7,3,7,9,4,-1,-1,-1,-1,8,4,7,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,4,7,11,2,4,2,0,4,-1,-1,-1,-1,-1,-1,-1,9,0,1,8,4,7,2,3,11,-1,-1,-1,-1,-1,-1,-1,4,7,11,9,4,11,9,11,2,9,2,1,-1,-1,-1,-1,3,10,1,3,11,10,7,8,4,-1,-1,-1,-1,-1,-1,-1,1,11,10,1,4,11,1,0,4,7,11,4,-1,-1,-1,-1,4,7,8,9,0,11,9,11,10,11,0,3,-1,-1,-1,-1,4,7,11,4,11,9,9,11,10,-1,-1,-1,-1,-1,-1,-1,9,5,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,5,4,0,8,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,5,4,1,5,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,5,4,8,3,5,3,1,5,-1,-1,-1,-1,-1,-1,-1,1,2,10,9,5,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,8,1,2,10,4,9,5,-1,-1,-1,-1,-1,-1,-1,5,2,10,5,4,2,4,0,2,-1,-1,-1,-1,-1,-1,-1,2,10,5,3,2,5,3,5,4,3,4,8,-1,-1,-1,-1,9,5,4,2,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,11,2,0,8,11,4,9,5,-1,-1,-1,-1,-1,-1,-1,0,5,4,0,1,5,2,3,11,-1,-1,-1,-1,-1,-1,-1,2,1,5,2,5,8,2,8,11,4,8,5,-1,-1,-1,-1,10,3,11,10,1,3,9,5,4,-1,-1,-1,-1,-1,-1,-1,4,9,5,0,8,1,8,10,1,8,11,10,-1,-1,-1,-1,5,4,0,5,0,11,5,11,10,11,0,3,-1,-1,-1,-1,5,4,8,5,8,10,10,8,11,-1,-1,-1,-1,-1,-1,-1,9,7,8,5,7,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,3,0,9,5,3,5,7,3,-1,-1,-1,-1,-1,-1,-1,0,7,8,0,1,7,1,5,7,-1,-1,-1,-1,-1,-1,-1,1,5,3,3,5,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,7,8,9,5,7,10,1,2,-1,-1,-1,-1,-1,-1,-1,10,1,2,9,5,0,5,3,0,5,7,3,-1,-1,-1,-1,8,0,2,8,2,5,8,5,7,10,5,2,-1,-1,-1,-1,2,10,5,2,5,3,3,5,7,-1,-1,-1,-1,-1,-1,-1,7,9,5,7,8,9,3,11,2,-1,-1,-1,-1,-1,-1,-1,9,5,7,9,7,2,9,2,0,2,7,11,-1,-1,-1,-1,2,3,11,0,1,8,1,7,8,1,5,7,-1,-1,-1,-1,11,2,1,11,1,7,7,1,5,-1,-1,-1,-1,-1,-1,-1,9,5,8,8,5,7,10,1,3,10,3,11,-1,-1,-1,-1,5,7,0,5,0,9,7,11,0,1,0,10,11,10,0,-1,11,10,0,11,0,3,10,5,0,8,0,7,5,7,0,-1,11,10,5,7,11,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,5,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,0,1,5,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,8,3,1,9,8,5,10,6,-1,-1,-1,-1,-1,-1,-1,1,6,5,2,6,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,6,5,1,2,6,3,0,8,-1,-1,-1,-1,-1,-1,-1,9,6,5,9,0,6,0,2,6,-1,-1,-1,-1,-1,-1,-1,5,9,8,5,8,2,5,2,6,3,2,8,-1,-1,-1,-1,2,3,11,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,0,8,11,2,0,10,6,5,-1,-1,-1,-1,-1,-1,-1,0,1,9,2,3,11,5,10,6,-1,-1,-1,-1,-1,-1,-1,5,10,6,1,9,2,9,11,2,9,8,11,-1,-1,-1,-1,6,3,11,6,5,3,5,1,3,-1,-1,-1,-1,-1,-1,-1,0,8,11,0,11,5,0,5,1,5,11,6,-1,-1,-1,-1,3,11,6,0,3,6,0,6,5,0,5,9,-1,-1,-1,-1,6,5,9,6,9,11,11,9,8,-1,-1,-1,-1,-1,-1,-1,5,10,6,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,3,0,4,7,3,6,5,10,-1,-1,-1,-1,-1,-1,-1,1,9,0,5,10,6,8,4,7,-1,-1,-1,-1,-1,-1,-1,10,6,5,1,9,7,1,7,3,7,9,4,-1,-1,-1,-1,6,1,2,6,5,1,4,7,8,-1,-1,-1,-1,-1,-1,-1,1,2,5,5,2,6,3,0,4,3,4,7,-1,-1,-1,-1,8,4,7,9,0,5,0,6,5,0,2,6,-1,-1,-1,-1,7,3,9,7,9,4,3,2,9,5,9,6,2,6,9,-1,3,11,2,7,8,4,10,6,5,-1,-1,-1,-1,-1,-1,-1,5,10,6,4,7,2,4,2,0,2,7,11,-1,-1,-1,-1,0,1,9,4,7,8,2,3,11,5,10,6,-1,-1,-1,-1,9,2,1,9,11,2,9,4,11,7,11,4,5,10,6,-1,8,4,7,3,11,5,3,5,1,5,11,6,-1,-1,-1,-1,5,1,11,5,11,6,1,0,11,7,11,4,0,4,11,-1,0,5,9,0,6,5,0,3,6,11,6,3,8,4,7,-1,6,5,9,6,9,11,4,7,9,7,11,9,-1,-1,-1,-1,10,4,9,6,4,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,10,6,4,9,10,0,8,3,-1,-1,-1,-1,-1,-1,-1,10,0,1,10,6,0,6,4,0,-1,-1,-1,-1,-1,-1,-1,8,3,1,8,1,6,8,6,4,6,1,10,-1,-1,-1,-1,1,4,9,1,2,4,2,6,4,-1,-1,-1,-1,-1,-1,-1,3,0,8,1,2,9,2,4,9,2,6,4,-1,-1,-1,-1,0,2,4,4,2,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,8,2,4,4,2,6,-1,-1,-1,-1,-1,-1,-1,10,4,9,10,6,4,11,2,3,-1,-1,-1,-1,-1,-1,-1,0,8,2,2,8,11,4,9,10,4,10,6,-1,-1,-1,-1,3,11,2,0,1,6,0,6,4,6,1,10,-1,-1,-1,-1,6,4,1,6,1,10,4,8,1,2,1,11,8,11,1,-1,9,6,4,9,3,6,9,1,3,11,6,3,-1,-1,-1,-1,8,11,1,8,1,0,11,6,1,9,1,4,6,4,1,-1,3,11,6,3,6,0,0,6,4,-1,-1,-1,-1,-1,-1,-1,6,4,8,11,6,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,10,6,7,8,10,8,9,10,-1,-1,-1,-1,-1,-1,-1,0,7,3,0,10,7,0,9,10,6,7,10,-1,-1,-1,-1,10,6,7,1,10,7,1,7,8,1,8,0,-1,-1,-1,-1,10,6,7,10,7,1,1,7,3,-1,-1,-1,-1,-1,-1,-1,1,2,6,1,6,8,1,8,9,8,6,7,-1,-1,-1,-1,2,6,9,2,9,1,6,7,9,0,9,3,7,3,9,-1,7,8,0,7,0,6,6,0,2,-1,-1,-1,-1,-1,-1,-1,7,3,2,6,7,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,11,10,6,8,10,8,9,8,6,7,-1,-1,-1,-1,2,0,7,2,7,11,0,9,7,6,7,10,9,10,7,-1,1,8,0,1,7,8,1,10,7,6,7,10,2,3,11,-1,11,2,1,11,1,7,10,6,1,6,7,1,-1,-1,-1,-1,8,9,6,8,6,7,9,1,6,11,6,3,1,3,6,-1,0,9,1,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,0,7,0,6,3,11,0,11,6,0,-1,-1,-1,-1,7,11,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,8,11,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,11,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,1,9,8,3,1,11,7,6,-1,-1,-1,-1,-1,-1,-1,10,1,2,6,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,10,3,0,8,6,11,7,-1,-1,-1,-1,-1,-1,-1,2,9,0,2,10,9,6,11,7,-1,-1,-1,-1,-1,-1,-1,6,11,7,2,10,3,10,8,3,10,9,8,-1,-1,-1,-1,7,2,3,6,2,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,0,8,7,6,0,6,2,0,-1,-1,-1,-1,-1,-1,-1,2,7,6,2,3,7,0,1,9,-1,-1,-1,-1,-1,-1,-1,1,6,2,1,8,6,1,9,8,8,7,6,-1,-1,-1,-1,10,7,6,10,1,7,1,3,7,-1,-1,-1,-1,-1,-1,-1,10,7,6,1,7,10,1,8,7,1,0,8,-1,-1,-1,-1,0,3,7,0,7,10,0,10,9,6,10,7,-1,-1,-1,-1,7,6,10,7,10,8,8,10,9,-1,-1,-1,-1,-1,-1,-1,6,8,4,11,8,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,6,11,3,0,6,0,4,6,-1,-1,-1,-1,-1,-1,-1,8,6,11,8,4,6,9,0,1,-1,-1,-1,-1,-1,-1,-1,9,4,6,9,6,3,9,3,1,11,3,6,-1,-1,-1,-1,6,8,4,6,11,8,2,10,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,3,0,11,0,6,11,0,4,6,-1,-1,-1,-1,4,11,8,4,6,11,0,2,9,2,10,9,-1,-1,-1,-1,10,9,3,10,3,2,9,4,3,11,3,6,4,6,3,-1,8,2,3,8,4,2,4,6,2,-1,-1,-1,-1,-1,-1,-1,0,4,2,4,6,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,2,3,4,2,4,6,4,3,8,-1,-1,-1,-1,1,9,4,1,4,2,2,4,6,-1,-1,-1,-1,-1,-1,-1,8,1,3,8,6,1,8,4,6,6,10,1,-1,-1,-1,-1,10,1,0,10,0,6,6,0,4,-1,-1,-1,-1,-1,-1,-1,4,6,3,4,3,8,6,10,3,0,3,9,10,9,3,-1,10,9,4,6,10,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,9,5,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,4,9,5,11,7,6,-1,-1,-1,-1,-1,-1,-1,5,0,1,5,4,0,7,6,11,-1,-1,-1,-1,-1,-1,-1,11,7,6,8,3,4,3,5,4,3,1,5,-1,-1,-1,-1,9,5,4,10,1,2,7,6,11,-1,-1,-1,-1,-1,-1,-1,6,11,7,1,2,10,0,8,3,4,9,5,-1,-1,-1,-1,7,6,11,5,4,10,4,2,10,4,0,2,-1,-1,-1,-1,3,4,8,3,5,4,3,2,5,10,5,2,11,7,6,-1,7,2,3,7,6,2,5,4,9,-1,-1,-1,-1,-1,-1,-1,9,5,4,0,8,6,0,6,2,6,8,7,-1,-1,-1,-1,3,6,2,3,7,6,1,5,0,5,4,0,-1,-1,-1,-1,6,2,8,6,8,7,2,1,8,4,8,5,1,5,8,-1,9,5,4,10,1,6,1,7,6,1,3,7,-1,-1,-1,-1,1,6,10,1,7,6,1,0,7,8,7,0,9,5,4,-1,4,0,10,4,10,5,0,3,10,6,10,7,3,7,10,-1,7,6,10,7,10,8,5,4,10,4,8,10,-1,-1,-1,-1,6,9,5,6,11,9,11,8,9,-1,-1,-1,-1,-1,-1,-1,3,6,11,0,6,3,0,5,6,0,9,5,-1,-1,-1,-1,0,11,8,0,5,11,0,1,5,5,6,11,-1,-1,-1,-1,6,11,3,6,3,5,5,3,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,9,5,11,9,11,8,11,5,6,-1,-1,-1,-1,0,11,3,0,6,11,0,9,6,5,6,9,1,2,10,-1,11,8,5,11,5,6,8,0,5,10,5,2,0,2,5,-1,6,11,3,6,3,5,2,10,3,10,5,3,-1,-1,-1,-1,5,8,9,5,2,8,5,6,2,3,8,2,-1,-1,-1,-1,9,5,6,9,6,0,0,6,2,-1,-1,-1,-1,-1,-1,-1,1,5,8,1,8,0,5,6,8,3,8,2,6,2,8,-1,1,5,6,2,1,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,3,6,1,6,10,3,8,6,5,6,9,8,9,6,-1,10,1,0,10,0,6,9,5,0,5,6,0,-1,-1,-1,-1,0,3,8,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,5,10,7,5,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,5,10,11,7,5,8,3,0,-1,-1,-1,-1,-1,-1,-1,5,11,7,5,10,11,1,9,0,-1,-1,-1,-1,-1,-1,-1,10,7,5,10,11,7,9,8,1,8,3,1,-1,-1,-1,-1,11,1,2,11,7,1,7,5,1,-1,-1,-1,-1,-1,-1,-1,0,8,3,1,2,7,1,7,5,7,2,11,-1,-1,-1,-1,9,7,5,9,2,7,9,0,2,2,11,7,-1,-1,-1,-1,7,5,2,7,2,11,5,9,2,3,2,8,9,8,2,-1,2,5,10,2,3,5,3,7,5,-1,-1,-1,-1,-1,-1,-1,8,2,0,8,5,2,8,7,5,10,2,5,-1,-1,-1,-1,9,0,1,5,10,3,5,3,7,3,10,2,-1,-1,-1,-1,9,8,2,9,2,1,8,7,2,10,2,5,7,5,2,-1,1,3,5,3,7,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,7,0,7,1,1,7,5,-1,-1,-1,-1,-1,-1,-1,9,0,3,9,3,5,5,3,7,-1,-1,-1,-1,-1,-1,-1,9,8,7,5,9,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,8,4,5,10,8,10,11,8,-1,-1,-1,-1,-1,-1,-1,5,0,4,5,11,0,5,10,11,11,3,0,-1,-1,-1,-1,0,1,9,8,4,10,8,10,11,10,4,5,-1,-1,-1,-1,10,11,4,10,4,5,11,3,4,9,4,1,3,1,4,-1,2,5,1,2,8,5,2,11,8,4,5,8,-1,-1,-1,-1,0,4,11,0,11,3,4,5,11,2,11,1,5,1,11,-1,0,2,5,0,5,9,2,11,5,4,5,8,11,8,5,-1,9,4,5,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,5,10,3,5,2,3,4,5,3,8,4,-1,-1,-1,-1,5,10,2,5,2,4,4,2,0,-1,-1,-1,-1,-1,-1,-1,3,10,2,3,5,10,3,8,5,4,5,8,0,1,9,-1,5,10,2,5,2,4,1,9,2,9,4,2,-1,-1,-1,-1,8,4,5,8,5,3,3,5,1,-1,-1,-1,-1,-1,-1,-1,0,4,5,1,0,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,4,5,8,5,3,9,0,5,0,3,5,-1,-1,-1,-1,9,4,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,11,7,4,9,11,9,10,11,-1,-1,-1,-1,-1,-1,-1,0,8,3,4,9,7,9,11,7,9,10,11,-1,-1,-1,-1,1,10,11,1,11,4,1,4,0,7,4,11,-1,-1,-1,-1,3,1,4,3,4,8,1,10,4,7,4,11,10,11,4,-1,4,11,7,9,11,4,9,2,11,9,1,2,-1,-1,-1,-1,9,7,4,9,11,7,9,1,11,2,11,1,0,8,3,-1,11,7,4,11,4,2,2,4,0,-1,-1,-1,-1,-1,-1,-1,11,7,4,11,4,2,8,3,4,3,2,4,-1,-1,-1,-1,2,9,10,2,7,9,2,3,7,7,4,9,-1,-1,-1,-1,9,10,7,9,7,4,10,2,7,8,7,0,2,0,7,-1,3,7,10,3,10,2,7,4,10,1,10,0,4,0,10,-1,1,10,2,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,9,1,4,1,7,7,1,3,-1,-1,-1,-1,-1,-1,-1,4,9,1,4,1,7,0,8,1,8,7,1,-1,-1,-1,-1,4,0,3,7,4,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,8,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,10,8,10,11,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,9,3,9,11,11,9,10,-1,-1,-1,-1,-1,-1,-1,0,1,10,0,10,8,8,10,11,-1,-1,-1,-1,-1,-1,-1,3,1,10,11,3,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,11,1,11,9,9,11,8,-1,-1,-1,-1,-1,-1,-1,3,0,9,3,9,11,1,2,9,2,11,9,-1,-1,-1,-1,0,2,11,8,0,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,2,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,2,8,10,10,8,9,-1,-1,-1,-1,-1,-1,-1,9,10,2,0,9,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,2,8,10,0,1,8,1,10,8,-1,-1,-1,-1,1,10,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,3,8,9,1,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,8,-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,-1,-1])}function sf(e,t,i,n,r){var s,a,o,l,c,u,h,d=[[0,4,4,4,2,0,0,0,2,2,0,0],[4,0,4,4,0,8,0,0,0,8,8,0],[4,4,0,4,0,0,8,0,0,0,8,8],[4,4,4,0,0,0,0,1,1,0,0,1],[2,0,0,0,0,8,8,8,2,2,0,0],[0,8,0,0,8,0,8,8,0,8,8,0],[0,0,8,0,8,8,0,8,0,0,8,8],[0,0,0,1,8,8,8,0,1,0,0,1],[2,0,0,1,2,0,0,1,0,2,0,1],[2,8,0,0,2,8,0,0,2,0,8,0],[0,8,8,0,0,8,8,0,0,8,0,8],[0,0,8,1,0,0,8,1,1,0,8,0]],f=0,m=!1,p=!1,g=!1,_=!1,y=-1,v=t*i*n,b=t,x=t*i,w=new Int32Array(12),S=[],M=[],A=[],C=[],T=nf(),P=rf();function E(e,t,i){return e+(t-e)*i}function I(e,r,s){return x*(s=(s+h)%n)+b*(r=(r+u)%i)+(e=(e+c)%t)}function D(e,t,i,n,l,c,u){var h=3*e;if(a[h]<0){var d=(f-c)/(u-c),p=s,g=3*o;if(S[g]=i+d,S[g+1]=n,S[g+2]=l,!m){var _=3*e;M[g]=y*E(p[_],p[_+3],d),M[g+1]=y*E(p[_+1],p[_+4],d),M[g+2]=y*E(p[_+2],p[_+5],d)}r&&(C[o]=r[e+Math.round(d)]),a[h]=o,w[t]=o,o+=1}else w[t]=a[h]}function R(e,t,i,n,l,c,u){var h=3*e+1;if(a[h]<0){var d=(f-c)/(u-c),p=s,g=3*o;if(S[g]=i,S[g+1]=n+d,S[g+2]=l,!m){var _=3*e,v=_+3*b;M[g]=y*E(p[_],p[v],d),M[g+1]=y*E(p[_+1],p[v+1],d),M[g+2]=y*E(p[_+2],p[v+2],d)}r&&(C[o]=r[e+Math.round(d)*b]),a[h]=o,w[t]=o,o+=1}else w[t]=a[h]}function L(e,t,i,n,l,c,u){var h=3*e+2;if(a[h]<0){var d=(f-c)/(u-c),p=s,g=3*o;if(S[g]=i,S[g+1]=n,S[g+2]=l+d,!m){var _=3*e,v=_+3*x;M[g]=y*E(p[_],p[v],d),M[g+1]=y*E(p[_+1],p[v+1],d),M[g+2]=y*E(p[_+2],p[v+2],d)}r&&(C[o]=r[e+Math.round(d)*x]),a[h]=o,w[t]=o,o+=1}else w[t]=a[h]}function k(t){var i=3*t;0===s[i]&&(s[i]=e[(t-1+v)%v]-e[(t+1)%v],s[i+1]=e[(t-b+v)%v]-e[(t+b)%v],s[i+2]=e[(t-x+v)%v]-e[(t+x)%v])}function O(t,i,n,r,s){var a,o,c,u,h,y,v;g?(r=I(t,i,n),a=I(t+1,i,n),o=I(t,i+1,n),c=I(t,i,n+1),u=I(t+1,i+1,n),h=I(t+1,i,n+1),y=I(t,i+1,n+1),v=I(t+1,i+1,n+1)):(a=r+1,u=(o=r+b)+1,h=(c=r+x)+1,v=(y=o+x)+1);var S=0,M=e[r],C=e[a],E=e[o],O=e[u],N=e[c],F=e[h],B=e[y],z=e[v];M=f){L=y,E=!0;break}if(E)break}if(E)break}for(E=!1,_=s;_=f){R=_,E=!0;break}if(E)break}if(E)break}for(E=!1,p=r;p=f){D=p,E=!0;break}if(E)break}if(E)break}for(E=!1,y=u;y>=o;--y){for(_=c;_>=s;--_){for(p=l;p>=r;--p)if(h=t*i*y+t*_+p,e[h]>=f){F=y,E=!0;break}if(E)break}if(E)break}for(E=!1,_=c;_>=s;--_){for(y=F;y>=o;--y){for(p=l;p>=r;--p)if(h=t*i*y+t*_+p,e[h]>=f){N=_,E=!0;break}if(E)break}if(E)break}for(E=!1,p=l;p>=r;--p){for(_=N;_>=s;--_){for(y=F;y>=o;--y)if(h=t*i*y+t*_+p,e[h]>=f){k=p,E=!0;break}if(E)break}if(E)break}m?(r=Math.max(0,D-1),s=Math.max(0,R-1),o=Math.max(0,L-1),l=Math.min(t-1,k+1),c=Math.min(i-1,N+1),u=Math.min(n-1,F+1)):(r=Math.max(1,D-1),s=Math.max(1,R-1),o=Math.max(1,L-1),l=Math.min(t-2,k+1),c=Math.min(i-2,N+1),u=Math.min(n-2,F+1))}var B=15;for(y=o;y0?-1:1,s||(s=new Float32Array(3*v)));var T=3*v;if(a&&a.length===T||(a=new Int32Array(T)),o=0,l=0,void 0!==b){var P=b[0].map(Math.round),E=b[1].map(Math.round);c=t*Math.ceil(Math.abs(P[0])/t),u=i*Math.ceil(Math.abs(P[1])/i),h=n*Math.ceil(Math.abs(P[2])/n),N(P[0],P[1],P[2],E[0],E[1],E[2])}else c=u=h=0,N();return S.length=3*o,m||(M.length=3*o),A.length=l,r&&(C.length=o),{position:new Float32Array(S),normal:m?void 0:new Float32Array(M),index:So(A,S.length/3),atomindex:r?new Int32Array(C):void 0,contour:p}}}Kl.add("arrow",class extends Gd{get primitive(){return vh}}),Kl.add("box",class extends Gd{get primitive(){return ph}}),Kl.add("cone",class extends Gd{get primitive(){return bh}}),Kl.add("cylinder",class extends Gd{get primitive(){return yh}}),Kl.add("ellipsoid",class extends Gd{get primitive(){return xh}}),Kl.add("octahedron",class extends Gd{get primitive(){return gh}}),Kl.add("sphere",class extends Gd{get primitive(){return mh}}),Kl.add("tetrahedron",class extends Gd{get primitive(){return _h}}),Kl.add("torus",class extends Gd{get primitive(){return wh}}),Kl.add("point",class extends Gd{get primitive(){return Mh}}),Kl.add("wideline",class extends Gd{get primitive(){return Ah}}),Object.assign(sf,{__deps:[nf,rf,So]});class af{constructor(e,t){this.cols=e,this.rows=t,this.size=this.cols*this.rows,this.data=new Float32Array(this.size)}copyTo(e){e.data.set(this.data)}}function of(e,t){let i=0,n=0;const r=t.rows,s=t.cols;let a=0,o=0,l=0;const c=t.data,u=e.data;for(;i(t=Math.abs(t))?(t/=e,e*Math.sqrt(1+t*t)):t>0?(e/=t,t*Math.sqrt(1+e*e)):0}const mf=1.192092896e-7,pf=1e-37;function gf(e,t,i,n){let r=0,s=0;const a=e.rows,o=e.cols;let l=a,c=o;l>16?k:-k,e[u*t+d]=L;for(f=0;f<2;f++)for(h=0;h{const t=e.data.sd,i=e.data.p;a(this._makeSurface(t,i.isolevel,i.smooth))}),(o=>{console.warn("Volume.getSurfaceWorker error - trying without worker",o);const l=this.getSurface(e,t,i,n,r,s);a(l)}))}else{const o=this.getSurface(e,t,i,n,r,s);a(o)}}getValueForSigma(e){return this.mean+uo(e,2)*this.rms}getSigmaForValue(e){return(uo(e,0)-this.mean)/this.rms}get position(){if(!this._position){const e=this.nz,t=this.ny,i=this.nx,n=new Float32Array(i*t*e*3);let r=0;for(let s=0;si){const e=t;t=i,i=e}const n=e[t];return void 0===n?(e[t]=[i],!0):!n.includes(i)&&(n.push(i),!0)}const i=this.geometry,n=i.index;if(this.parameters.wireframe)if(n){const r=n.array;let s,a=r.length;if(i.drawRange.count!==1/0&&(a=i.drawRange.count),this.wireframeIndex&&this.wireframeIndex.length>2*a)s=this.wireframeIndex;else{s=So(2*a,i.attributes.position.count)}let o=0;e.length=0;for(let e=0;e2*e?this.wireframeIndex:So(2*e,e);for(let i=0,n=0;ithis.wireframeGeometry.index.array.length)this.wireframeGeometry.setIndex(new $i(this.wireframeIndex,1).setUsage(this.dynamic?Te:Ce));else{const e=this.wireframeGeometry.getIndex();if(!e)return void Fl.error("Index is null");e.set(this.wireframeIndex),e.needsUpdate=this.wireframeIndexCount>0,e.updateRange.count=this.wireframeIndexCount}this.wireframeGeometry.setDrawRange(0,this.wireframeIndexCount)}}getRenderOrder(){let e=0;return this.isText?e=1:this.transparent&&(e=this.isSurface?3:2),e}_getMesh(e){this.material||this.makeMaterial();const t=this.geometry,i=this[e];let n;return n=this.isLine?new ka(t,i):this.isPoint?new Ua(t,i):new yn(t,i),n.frustumCulled=!1,n.renderOrder=this.getRenderOrder(),n}getMesh(){return this._getMesh("material")}getWireframeMesh(){let e;return this.material||this.makeMaterial(),this.wireframeGeometry||this.makeWireframeGeometry(),e=new ka(this.wireframeGeometry,this.wireframeMaterial),e.frustumCulled=!1,e.renderOrder=this.getRenderOrder(),e}getPickingMesh(){return this._getMesh("pickingMaterial")}getShader(e,t){return pc(e,this.getDefines(t))}getVertexShader(e){return this.getShader(this.vertexShader,e)}getFragmentShader(e){return this.getShader(this.fragmentShader,e)}getDefines(e){const t={};return this.parameters.clipNear&&(t.NEAR_CLIP=1),this.parameters.clipRadius&&(t.RADIUS_CLIP=1),"picking"===e?t.PICKING=1:(("background"===e||this.parameters.background)&&(t.NOLIGHT=1),this.parameters.flatShaded&&(t.FLAT_SHADED=1),this.parameters.opaqueBack&&(t.OPAQUE_BACK=1),this.parameters.diffuseInterior&&(t.DIFFUSE_INTERIOR=1),this.parameters.useInteriorColor&&(t.USE_INTERIOR_COLOR=1)),t}getParameters(){return this.parameters}addUniforms(e){this.uniforms=Mn.merge([this.uniforms,e]),this.pickingUniforms=Mn.merge([this.pickingUniforms,e])}addAttributes(e){for(let t in e){let i;const n=e[t],r=this.attributeSize*Lf[n.type];n.value?(r!==n.value.length&&Fl.error("attribute value has wrong length",t),i=n.value):i=wo("float32",r),this.geometry.setAttribute(t,new $i(i,Lf[n.type]).setUsage(this.dynamic?Te:Ce))}}updateRenderOrder(){const e=this.getRenderOrder();function t(t){t.renderOrder=e}this.group.children.forEach(t),this.pickingGroup&&this.pickingGroup.children.forEach(t)}updateShader(){const e=this.material,t=this.wireframeMaterial,i=this.pickingMaterial;e.vertexShader=this.getVertexShader(),e.fragmentShader=this.getFragmentShader(),e.needsUpdate=!0,t.vertexShader=this.getShader("Line.vert"),t.fragmentShader=this.getShader("Line.frag"),t.needsUpdate=!0,i.vertexShader=this.getVertexShader("picking"),i.fragmentShader=this.getFragmentShader("picking"),i.needsUpdate=!0}setParameters(e){const t=e,i=this.parameterTypes,n=this.parameters,r={},s={};let a=!1,o=!1;for(const e in t){const l=t[e];void 0!==l&&(n[e]=l,void 0!==i[e]&&(i[e].property&&(!0!==i[e].property?r[i[e].property]=l:r[e]=l),i[e].uniform&&(!0!==i[e].uniform?s[i[e].uniform]=l:s[e]=l),i[e].updateShader&&(a=!0),i[e].updateVisibility&&(o=!0),this.dynamic&&"wireframe"===e&&!0===l&&this.updateWireframeIndex(),"forceTransparent"===e&&(r.transparent=this.transparent),"matrix"===e&&(this.matrix=l)))}this.setProperties(r),this.setUniforms(s),a&&this.updateShader(),o&&this.setVisibility(this.visible)}setAttributes(e){const t=this.geometry,i=t.attributes;for(const n in e){if("picking"===n)continue;const r=e[n],s=r.length;if("index"===n){const e=t.getIndex();if(!e){Fl.error("Index is null");continue}t.setDrawRange(0,1/0),s>e.array.length?t.setIndex(new $i(r,1).setUsage(this.dynamic?Te:Ce)):(e.set(r),e.needsUpdate=s>0,e.updateRange.count=s,t.setDrawRange(0,s)),this.indexVersion++,this.parameters.wireframe&&this.updateWireframeIndex()}else{const e=i[n];s>e.array.length?t.setAttribute(n,new $i(r,e.itemSize).setUsage(this.dynamic?Te:Ce)):(i[n].set(r),i[n].needsUpdate=s>0,i[n].updateRange.count=s)}}}setUniforms(e){if(!e)return;const t=this.material.uniforms,i=this.wireframeMaterial.uniforms,n=this.pickingMaterial.uniforms;for(let r in e)"opacity"===r&&this.setProperties({transparent:this.transparent}),void 0!==t[r]&&(t[r].value.isVector3?t[r].value.copy(e[r]):t[r].value.set?t[r].value.set(e[r]):t[r].value=e[r]),void 0!==i[r]&&(i[r].value.isVector3?i[r].value.copy(e[r]):i[r].value.set?i[r].value.set(e[r]):i[r].value=e[r]),void 0!==n[r]&&(n[r].value.isVector3?n[r].value.copy(e[r]):n[r].value.set?n[r].value.set(e[r]):n[r].value=e[r])}setProperties(e){if(!e)return;const t=this.material,i=this.wireframeMaterial,n=this.pickingMaterial;for(const r in e){const s=r;let a=e[s];"transparent"===s?this.updateRenderOrder():"side"===s&&(a=Rf(a)),t[s]=a,i[s]=a,n[s]=a}t.needsUpdate=!0,i.needsUpdate=!0,n.needsUpdate=!0}setVisibility(e){this.visible=e,this.parameters.wireframe?(this.group.visible=!1,this.wireframeGroup.visible=e,this.pickable&&(this.pickingGroup.visible=!1)):(this.group.visible=e,this.wireframeGroup.visible=!1,this.pickable&&(this.pickingGroup.visible=e))}dispose(){this.material&&this.material.dispose(),this.wireframeMaterial&&this.wireframeMaterial.dispose(),this.pickingMaterial&&this.pickingMaterial.dispose(),this.geometry.dispose(),this.wireframeGeometry&&this.wireframeGeometry.dispose()}toJSON(){var e={};for(var t in this)"group"!==t&&"wireframeGroup"!==t&&"pickingGroup"!=t&&"picking"!==t&&(e[t]=this[t]);return e}}class Bf extends Ff{constructor(e,t={}){super(e,t),this.vertexShader="Mesh.vert",this.fragmentShader="Mesh.frag",this.addAttributes({normal:{type:"v3",value:e.normal}}),void 0===e.normal&&this.geometry.computeVertexNormals()}}class zf extends Bf{constructor(){super(...arguments),this.isSurface=!0}}function Uf(e){e.visible=!0}function Vf(e){e.visible=!1}class $f{constructor(e){this.group=new ma,this.wireframeGroup=new ma,this.pickingGroup=new ma,this.frontMeshes=[],this.backMeshes=[],this.size=e.size,this.side=e.parameters.side,this.visible=e.visible,this.geometry=e.geometry,this.picking=e.picking,this.group=new ma,this.wireframeGroup=new ma,this.pickingGroup=new ma,this.matrix=e.matrix;const t=e,i=new e.constructor({position:new Float32Array(0)});t.makeMaterial(),i.makeMaterial(),i.picking=e.picking,i.geometry=e.geometry,i.wireframeGeometry=e.wireframeGeometry,i.setParameters(e.getParameters()),i.updateShader(),t.setParameters({side:"front"}),i.setParameters({side:"back",opacity:i.parameters.opacity}),this.buffer=e,this.frontBuffer=t,this.backBuffer=i}set matrix(e){Ff.prototype.setMatrix.call(this,e)}get matrix(){return this.group.matrix.clone()}get pickable(){return!!this.picking&&!this.parameters.disablePicking}get parameters(){return this.buffer.parameters}getParameters(){const e=Object.assign({},this.buffer.parameters);return e.side=this.side,e}getMesh(e){let t,i;return e?(i=this.backBuffer.getPickingMesh(),t=this.frontBuffer.getPickingMesh()):(i=this.backBuffer.getMesh(),t=this.frontBuffer.getMesh()),this.frontMeshes.push(t),this.backMeshes.push(i),this.setParameters({side:this.side}),(new ma).add(i,t)}getWireframeMesh(){return this.buffer.getWireframeMesh()}getPickingMesh(){return this.getMesh(!0)}setAttributes(e){this.buffer.setAttributes(e)}setParameters(e){"front"===(e=Object.assign({},e)).side?(this.frontMeshes.forEach(Uf),this.backMeshes.forEach(Vf)):"back"===e.side?(this.frontMeshes.forEach(Vf),this.backMeshes.forEach(Uf)):"double"===e.side&&(this.frontMeshes.forEach(Uf),this.backMeshes.forEach(Uf)),void 0!==e.side&&(this.side=e.side),delete e.side,void 0!==e.matrix&&(this.matrix=e.matrix),delete e.matrix,this.frontBuffer.setParameters(e),void 0!==e.wireframe&&(this.wireframe=e.wireframe,this.setVisibility(this.visible)),delete e.wireframe,this.backBuffer.setParameters(e)}setVisibility(e){this.visible=e,this.parameters.wireframe?(this.group.visible=!1,this.wireframeGroup.visible=e,this.pickable&&(this.pickingGroup.visible=!1)):(this.group.visible=e,this.wireframeGroup.visible=!1,this.pickable&&(this.pickingGroup.visible=e))}dispose(){this.frontBuffer.dispose(),this.backBuffer.dispose()}toJSON(){var e={};for(var t in this)["side","size","visible","matrix","parameters"].includes(t)&&(e[t]=this[t]);return e}}Wl.add("shader/Line.vert","uniform float clipNear;\nuniform vec3 clipCenter;\nvarying vec3 vViewPosition;\n#if defined( RADIUS_CLIP )\nvarying vec3 vClipCenter;\n#endif\n#include color_pars_vertex\nvoid main(){\n#include color_vertex\n#include begin_vertex\n#include project_vertex\nvViewPosition = -mvPosition.xyz;\n#if defined( RADIUS_CLIP )\nvClipCenter = -( modelViewMatrix * vec4( clipCenter, 1.0 ) ).xyz;\n#endif\n#include nearclip_vertex\n}"),Wl.add("shader/Line.frag","uniform float opacity;\nuniform float clipNear;\nuniform float clipRadius;\nvarying vec3 vViewPosition;\n#if defined( RADIUS_CLIP )\nvarying vec3 vClipCenter;\n#endif\n#include common\n#include color_pars_fragment\n#include fog_pars_fragment\nvoid main(){\n#include nearclip_fragment\n#include radiusclip_fragment\ngl_FragColor = vec4( vColor, opacity );\n#include premultiplied_alpha_fragment\n#include tonemapping_fragment\n#include colorspace_fragment\n#include fog_fragment\n}");class Gf extends Ff{constructor(){super(...arguments),this.isLine=!0,this.vertexShader="Line.vert",this.fragmentShader="Line.frag"}}class Hf extends Nu{constructor(e,t,i){super(e,t,i),this.type="surface",this.parameters=Object.assign({isolevelType:{type:"select",options:{value:"value",sigma:"sigma"}},isolevel:{type:"number",precision:2,max:1e3,min:-1e3},negateIsolevel:{type:"boolean"},isolevelScroll:{type:"boolean"},smooth:{type:"integer",precision:1,max:10,min:0},background:{type:"boolean",rebuild:!0},opaqueBack:{type:"boolean",buffer:!0},boxSize:{type:"integer",precision:1,max:100,min:0},colorVolume:{type:"hidden"},contour:{type:"boolean",rebuild:!0},useWorker:{type:"boolean",rebuild:!0},wrap:{type:"boolean",rebuild:!0}},this.parameters),e instanceof Df?(this.surface=void 0,this.volume=e):(this.surface=e,this.volume=void 0),this.boxCenter=new _t,this.__boxCenter=new _t,this.box=new bt,this.__box=new bt,this._position=new _t,this.inverseMatrix=new qt,this.setBox=function(){this._position.copy(t.translationGroup.position).negate(),this._position.applyMatrix4(this.inverseMatrix),this._position.equals(this.boxCenter)||this.setParameters({boxCenter:this._position})},this.toBePrepared=!0,this.viewer.signals.ticked.add(this.setBox,this),this.init(i)}init(e){const t=e||{};t.colorScheme=uo(t.colorScheme,"uniform"),t.colorValue=uo(t.colorValue,14540253),this.isolevelType=uo(t.isolevelType,"sigma"),this.isolevel=uo(t.isolevel,2),this.negateIsolevel=uo(t.negateIsolevel,!1),this.isolevelScroll=uo(t.isolevelScroll,!1),this.smooth=uo(t.smooth,0),this.background=uo(t.background,!1),this.opaqueBack=uo(t.opaqueBack,!0),this.boxSize=uo(t.boxSize,0),this.colorVolume=uo(t.colorVolume,void 0),this.contour=uo(t.contour,!1),this.useWorker=uo(t.useWorker,!0),this.wrap=uo(t.wrap,!1),super.init(t),this.inverseMatrix.copy(this.matrix).invert(),this.build()}attach(e){this.bufferList.forEach((e=>{this.viewer.add(e)})),this.setVisibility(this.visible),e()}prepare(e){if(this.volume){let t;if(t="sigma"===this.isolevelType?this.volume.getValueForSigma(this.isolevel):this.isolevel,this.negateIsolevel&&(t*=-1),!this.surface||this.__isolevel!==t||this.__smooth!==this.smooth||this.__contour!==this.contour||this.__wrap!==this.wrap||this.__boxSize!==this.boxSize||this.boxSize>0&&!this.__boxCenter.equals(this.boxCenter)){this.__isolevel=t,this.__smooth=this.smooth,this.__contour=this.contour,this.__wrap=this.wrap,this.__boxSize=this.boxSize,this.__boxCenter.copy(this.boxCenter),this.__box.copy(this.box);const i=t=>{this.surface=t,e()};this.useWorker?this.volume.getSurfaceWorker(t,this.smooth,this.boxCenter,this.boxSize,this.contour,this.wrap,i):i(this.volume.getSurface(t,this.smooth,this.boxCenter,this.boxSize,this.contour,this.wrap))}else e()}else e()}create(){const e={position:this.surface.getPosition(),color:this.surface.getColor(this.getColorParams()),index:this.surface.getIndex()};let t;if(this.contour)t=new Gf(e,this.getBufferParams({wireframe:!1}));else{Object.assign(e,{normal:this.surface.getNormal(),picking:this.surface.getPicking()});const i=new zf(e,this.getBufferParams({background:this.background,opaqueBack:this.opaqueBack,dullInterior:!1}));t=new $f(i)}this.bufferList.push(t)}update(e){if(0===this.bufferList.length)return;const t={};(e=e||{}).position&&(t.position=this.surface.getPosition()),e.color&&(t.color=this.surface.getColor(this.getColorParams())),e.index&&(t.index=this.surface.getIndex()),e.normal&&(t.normal=this.surface.getNormal()),this.bufferList.forEach((function(e){e.setAttributes(t)}))}setParameters(e,t,i){return e&&void 0!==e.isolevelType&&this.volume&&("value"===this.isolevelType&&"sigma"===e.isolevelType?this.isolevel=this.volume.getSigmaForValue(this.isolevel):"sigma"===this.isolevelType&&"value"===e.isolevelType&&(this.isolevel=this.volume.getValueForSigma(this.isolevel)),this.isolevelType=e.isolevelType),e&&e.boxCenter&&(this.boxCenter.copy(e.boxCenter),delete e.boxCenter),e&&e.wireframe&&(e.contour||void 0===e.contour&&this.contour)&&(e.wireframe=!1),super.setParameters(e,t,i),e.matrix&&this.inverseMatrix.copy(e.matrix).invert(),this.volume&&this.volume.getBox(this.boxCenter,this.boxSize,this.box),e&&void 0!==e.colorVolume&&t&&(t.color=!0),this.surface&&(void 0!==e.isolevel||void 0!==e.negateIsolevel||void 0!==e.smooth||void 0!==e.wrap||void 0!==e.boxSize||this.boxSize>0&&!this.__box.equals(this.box))&&this.build({position:!0,color:!0,index:!0,normal:!this.contour}),this}getColorParams(){const e=super.getColorParams();return e.volume=this.colorVolume,e}dispose(){this.viewer.signals.ticked.remove(this.setBox,this),super.dispose()}}class jf{static zoomScroll(e,t){e.trackballControls.zoom(t)}static clipNearScroll(e,t){const i=e.getParameters();e.setParameters({clipNear:i.clipNear+t/10})}static focusScroll(e,t){const i=e.getFocus(),n=Math.sign(t)*function(e,t,i){if(e>t)return e;const n=e/t;return((2*i-t)*n+(2*t-3*i))*n*n+i}((100-i)/10,5,.2);e.setFocus(i+n)}static zoomFocusScroll(e,t){e.trackballControls.zoom(t);const i=e.viewer.camera.position.z;e.setFocus(100-Math.abs(i/8))}static isolevelScroll(e,t){const i=Math.sign(t)/10;e.eachRepresentation(((e,t)=>{if(e.repr instanceof Hf){const t=e.getParameters();t.isolevelScroll&&e.setParameters({isolevel:t.isolevel+i})}}))}static panDrag(e,t,i){e.trackballControls.pan(t,i)}static rotateDrag(e,t,i){e.trackballControls.rotate(t,i)}static zRotateDrag(e,t,i){e.trackballControls.zRotate(t,i)}static zoomDrag(e,t,i){e.trackballControls.zoom((t+i)/-2)}static zoomFocusDrag(e,t,i){e.trackballControls.zoom((t+i)/-2);const n=e.viewer.camera.position.z;e.setFocus(100-Math.abs(n/8))}static panComponentDrag(e,t,i){e.trackballControls.panComponent(t,i)}static panAtomDrag(e,t,i){e.trackballControls.panAtom(t,i)}static rotateComponentDrag(e,t,i){e.trackballControls.rotateComponent(t,i)}static movePick(e,t){t&&e.animationControls.move(t.position.clone())}static tooltipPick(e,t){const i=e.tooltip;if(e.getParameters().tooltip&&t){const e=t.mouse.position;i.innerText=t.getLabel(),i.style.bottom=window.innerHeight-e.y+3+"px",i.style.left=e.x+3+"px",i.style.display="block"}else i.style.display="none"}static measurePick(e,t){if(t&&(t.atom||t.bond)){const e=t.atom||t.closestBondAtom;t.component.measurePick(e)}else e.measureClear()}}const Wf={default:[["scroll",jf.zoomScroll],["scroll-shift",jf.focusScroll],["scroll-ctrl",jf.isolevelScroll],["scroll-shift-ctrl",jf.zoomFocusScroll],["drag-left",jf.rotateDrag],["drag-right",jf.panDrag],["drag-ctrl-left",jf.panDrag],["drag-ctrl-right",jf.zRotateDrag],["drag-shift-left",jf.zoomDrag],["drag-middle",jf.zoomFocusDrag],["drag-ctrl-shift-right",jf.panComponentDrag],["drag-ctrl-shift-left",jf.rotateComponentDrag],["clickPick-right",jf.measurePick],["clickPick-ctrl-left",jf.measurePick],["clickPick-middle",jf.movePick],["clickPick-left",jf.movePick],["hoverPick",jf.tooltipPick]],pymol:[["drag-left",jf.rotateDrag],["drag-middle",jf.panDrag],["drag-right",jf.zoomDrag],["scroll",jf.focusScroll],["drag-shift-right",jf.focusScroll],["clickPick-ctrl+shift-middle",jf.movePick],["hoverPick",jf.tooltipPick]],coot:[["scroll",jf.isolevelScroll],["drag-left",jf.rotateDrag],["drag-middle",jf.panDrag],["drag-ctrl-left",jf.panDrag],["drag-right",jf.zoomFocusDrag],["drag-ctrl-right",jf.focusScroll],["clickPick-middle",jf.movePick],["hoverPick",jf.tooltipPick]],astexviewer:[["drag-left",jf.rotateDrag],["drag-ctrl-left",jf.panDrag],["drag-shift-left",jf.zoomDrag],["scroll",jf.focusScroll],["clickPick-middle",jf.movePick],["hoverPick",jf.tooltipPick]]};function qf(e){const t=e.split(/[-+]/);let i="";t.includes("scroll")&&(i="scroll"),t.includes("drag")&&(i="drag"),t.includes("click")&&(i="click"),t.includes("doubleClick")&&(i="doubleClick"),t.includes("hover")&&(i="hover"),t.includes("clickPick")&&(i="clickPick"),t.includes("hoverPick")&&(i="hoverPick");let n=0;t.includes("alt")&&(n+=1),t.includes("ctrl")&&(n+=2),t.includes("meta")&&(n+=4),t.includes("shift")&&(n+=8);let r=0;return t.includes("left")&&(r+=1),t.includes("right")&&(r+=2),t.includes("middle")&&(r+=4),[i,n,r]}class Xf{constructor(e,t={}){this.stage=e,this.actionList=[],this.mouse=e.mouseObserver,this.disabled=t.disabled||!1,this.preset(t.preset||"default")}run(e,...t){if(this.disabled)return;const i=this.mouse.key||0,n=this.mouse.buttons||0;this.actionList.forEach((r=>{r.type===e&&r.key===i&&r.button===n&&r.callback(this.stage,...t)}))}add(e,t){const[i,n,r]=qf(e);this.actionList.push({type:i,key:n,button:r,callback:t})}remove(e,t){const i=e.includes("*"),[n,r,s]=qf(e),a=this.actionList.filter((function(e){return!((e.type===n||i&&""===n)&&(e.key===r||i&&0===r)&&(e.button===s||i&&0===s)&&(e.callback===t||void 0===t))}));this.actionList=a}preset(e){this.clear();(Wf[e]||[]).forEach((e=>this.add(e[0],e[1])))}clear(){this.actionList.length=0}}class Yf{static autoView(e){e.autoView(1e3)}static toggleAnimations(e){e.animationControls.toggle()}static toggleRock(e){e.toggleRock()}static toggleSpin(e){e.toggleSpin()}static toggleAntialiasing(e){const t=e.getParameters();e.setParameters({sampleLevel:-1===t.sampleLevel?0:-1})}}const Kf={default:[["i",Yf.toggleSpin],["k",Yf.toggleRock],["p",Yf.toggleAnimations],["a",Yf.toggleAntialiasing],["r",Yf.autoView]]};class Zf{constructor(e,t={}){this.stage=e,this.actionList=[],this.disabled=t.disabled||!1,this.preset(t.preset||"default")}run(e){this.disabled||this.actionList.forEach((t=>{t.key===e&&t.callback(this.stage)}))}add(e,t){this.actionList.push({key:e,callback:t})}remove(e,t){const i=this.actionList.filter((function(i){return!(i.key===e&&(i.callback===t||void 0===t))}));this.actionList=i}preset(e){this.clear();(Kf[e]||[]).forEach((e=>this.add(e[0],e[1])))}clear(){this.actionList.length=0}}class Qf{constructor(e){this.stage=e,this.stage=e,this.mouse=e.mouseObserver,this.controls=e.mouseControls,this.mouse.signals.clicked.add(this._onClick,this),this.mouse.signals.hovered.add(this._onHover,this)}_onClick(e,t){const i=this.stage.pickingControls.pick(e,t);this.stage.signals.clicked.dispatch(i),this.controls.run("clickPick",i)}_onHover(e,t){const i=this.stage.pickingControls.pick(e,t);i&&this.mouse.down.equals(this.mouse.position)&&(this.stage.transformComponent=i.component,this.stage.transformAtom=i.atom),this.stage.signals.hovered.dispatch(i),this.controls.run("hoverPick",i)}dispose(){this.mouse.signals.clicked.remove(this._onClick,this),this.mouse.signals.hovered.remove(this._onHover,this)}}class Jf{constructor(e){this.stage=e,this.stage=e,this.mouse=e.mouseObserver,this.controls=e.mouseControls,this.mouse.signals.moved.add(this._onMove,this),this.mouse.signals.scrolled.add(this._onScroll,this),this.mouse.signals.dragged.add(this._onDrag,this),this.mouse.signals.clicked.add(this._onClick,this),this.mouse.signals.hovered.add(this._onHover,this),this.mouse.signals.doubleClicked.add(this._onDblclick,this)}_onMove(){this.stage.tooltip.style.display="none"}_onScroll(e){this.controls.run("scroll",e)}_onDrag(e,t){this.controls.run("drag",e,t)}_onClick(e,t){this.controls.run("click",e,t)}_onDblclick(e,t){this.controls.run("doubleClick",e,t)}_onHover(e,t){this.controls.run("hover",e,t)}dispose(){this.mouse.signals.moved.remove(this._onMove,this),this.mouse.signals.scrolled.remove(this._onScroll,this),this.mouse.signals.dragged.remove(this._onDrag,this),this.mouse.signals.clicked.remove(this._onClick,this),this.mouse.signals.hovered.remove(this._onHover,this)}}class em{constructor(e){this.stage=e,this.viewer=e.viewer,this.animationControls=e.animationControls,this.viewer.signals.ticked.add(this._onTick,this)}_onTick(e){this.animationControls.run(e)}dispose(){this.viewer.signals.ticked.remove(this._onTick,this)}}const tm=!!Dl&&{passive:!0};class im{constructor(e){this.stage=e,this.stage=e,this.controls=e.keyControls,this.domElement=e.viewer.renderer.domElement,this.domElement.setAttribute("tabIndex","-1"),this.domElement.style.outline="none",this._focusDomElement=this._focusDomElement.bind(this),this._onKeydown=this._onKeydown.bind(this),this._onKeyup=this._onKeyup.bind(this),this._onKeypress=this._onKeypress.bind(this),this.domElement.addEventListener("mousedown",this._focusDomElement),this.domElement.addEventListener("touchstart",this._focusDomElement,tm),this.domElement.addEventListener("keydown",this._onKeydown),this.domElement.addEventListener("keyup",this._onKeyup),this.domElement.addEventListener("keypress",this._onKeypress)}_onKeydown(){}_onKeyup(){}_onKeypress(e){let t;t="key"in KeyboardEvent.prototype?e.key:String.fromCharCode(e.which||e.keyCode),this.controls.run(t)}_focusDomElement(){this.domElement.focus()}dispose(){this.domElement.removeEventListener("mousedown",this._focusDomElement),this.domElement.removeEventListener("touchstart",this._focusDomElement,tm),this.domElement.removeEventListener("keydown",this._onKeypress),this.domElement.removeEventListener("keyup",this._onKeypress),this.domElement.removeEventListener("keypress",this._onKeypress)}}class nm{constructor(e,t,i,n={}){this.component=e,this.position=t,this.offsetX=uo(n.offsetX,0),this.offsetY=uo(n.offsetY,0),this.visible=uo(n.visible,!0),this.stage=e.stage,this.viewer=e.stage.viewer,this._viewerPosition=new _t,this._updateViewerPosition(),this._canvasPosition=new Ge,this._cameraPosition=new _t,this.element=document.createElement("div"),Object.assign(this.element.style,{display:"block",position:"absolute",pointerEvents:"none",whiteSpace:"nowrap",left:"-10000px"}),this.viewer.wrapper.appendChild(this.element),this.setContent(i),this.updateVisibility(),this.viewer.signals.rendered.add(this._update,this),this.component.signals.matrixChanged.add(this._updateViewerPosition,this)}setContent(e){const t=this.element.style.display;if("none"===t&&(this.element.style.left="-10000px",this.element.style.display="block"),e instanceof HTMLElement)this.element.appendChild(e);else{const t=document.createElement("div");t.innerText=e,Object.assign(t.style,{backgroundColor:"rgba( 0, 0, 0, 0.6 )",color:"lightgrey",padding:"8px",fontFamily:"sans-serif"}),this.element.appendChild(t)}this._clientRect=this.element.getBoundingClientRect(),"none"===t&&(this.element.style.display=t)}setVisibility(e){this.visible=e,this.updateVisibility()}getVisibility(){return this.visible&&this.component.parameters.visible}updateVisibility(){this.element.style.display=this.getVisibility()?"block":"none"}_updateViewerPosition(){this._viewerPosition.copy(this.position).applyMatrix4(this.component.matrix)}_update(){if(!this.getVisibility())return;const e=this.element.style,t=this._canvasPosition,i=this._viewerPosition,n=this._clientRect;if(this._cameraPosition.copy(i).add(this.viewer.translationGroup.position).applyMatrix4(this.viewer.rotationGroup.matrix).sub(this.viewer.camera.position),this._cameraPosition.z<0)return void(e.display="none");e.display="block";const r=this._cameraPosition.length(),s=this.viewer.scene.fog;e.opacity=(1-zo(s.near,s.far,r)).toString(),e.zIndex=Math.round(100*(s.far-r)).toString(),this.stage.viewerControls.getPositionOnCanvas(i,t),e.bottom=this.offsetX+t.y+n.height/2+"px",e.left=this.offsetY+t.x-n.width/2+"px"}dispose(){this.viewer.wrapper.removeChild(this.element),this.viewer.signals.ticked.remove(this._update,this),this.component.signals.matrixChanged.remove(this._updateViewerPosition,this)}}const rm=new qt,sm=new _t,am=new gt;class om{constructor(e){this.component=e,this.signals={changed:new Yo.Signal},this.stage=e.stage,this.viewer=e.stage.viewer}get position(){return this.component.position}get rotation(){return this.component.quaternion}changed(){this.component.updateMatrix(),this.viewer.requestRender(),this.signals.changed.dispatch()}spin(e,t){rm.copy(this.viewer.rotationGroup.matrix).invert(),sm.copy(Co(e)).applyMatrix4(rm),rm.extractRotation(this.component.transform),rm.premultiply(this.viewer.rotationGroup.matrix),rm.invert(),sm.copy(Co(e)),sm.applyMatrix4(rm),rm.makeRotationAxis(sm,t),am.setFromRotationMatrix(rm),this.component.quaternion.premultiply(am),this.changed()}}const lm={"":"",vdw:"by vdW radius",covalent:"by covalent radius",sstruc:"by secondary structure",bfactor:"by bfactor",size:"size",data:"data",explicit:"explicit"};class cm{constructor(e={}){this.max=10,this.type=uo(e.type,"size"),this.scale=uo(e.scale,1),this.size=uo(e.size,1),this.data=uo(e.data,{})}atomRadius(e){let t;switch(this.type){case"vdw":t=e.vdw;break;case"covalent":t=e.covalent;break;case"bfactor":t=e.bfactor||1;break;case"sstruc":const i=e.sstruc;t="h"===i||"g"===i||"i"===i||"e"===i||"b"===i?.25:od.includes(e.atomname)?.4:.1;break;case"data":t=uo(this.data[e.index],1);break;case"explicit":t=e.radius,null===t&&(t=this.size);break;default:t=this.size}return Math.min(t*this.scale,this.max)}}cm.types=lm;const um=new _t(-1,-1,-1),hm=new qt;class dm{constructor(e){const t=e.rows,i=t/3,n=new af(t,3),r=new af(3,3),s=new af(1,3),a=new af(3,3),o=new af(3,3),l=uf(e);hf(e,l),of(n,e),lf(r,n,n),gf(r,s,a,o);const c=new _t(l[0],l[1],l[2]),u=new _t(a.data[0],a.data[3],a.data[6]),h=new _t(a.data[1],a.data[4],a.data[7]),d=new _t(a.data[2],a.data[5],a.data[8]),f=u.clone().multiplyScalar(Math.sqrt(s.data[0]/i)),m=h.clone().multiplyScalar(Math.sqrt(s.data[1]/i)),p=d.clone().multiplyScalar(Math.sqrt(s.data[2]/i));this.begA=c.clone().sub(f),this.endA=c.clone().add(f),this.begB=c.clone().sub(m),this.endB=c.clone().add(m),this.begC=c.clone().sub(p),this.endC=c.clone().add(p),this.center=c,this.vecA=f,this.vecB=m,this.vecC=p,this.normVecA=u,this.normVecB=h,this.normVecC=d}getBasisMatrix(e=new qt){const t=e;return t.makeBasis(this.normVecB,this.normVecA,this.normVecC),t.determinant()<0&&t.scale(um),t}getRotationQuaternion(e=new gt){const t=e;return t.setFromRotationMatrix(this.getBasisMatrix(hm)),t.invert()}getProjectedScaleForAtoms(e){let t=-1/0,i=-1/0,n=-1/0,r=-1/0,s=-1/0,a=-1/0;const o=new _t,l=new _t,c=this.center,u=this.normVecA,h=this.normVecB,d=this.normVecC;return e.eachAtom((function(e){Uu(o.copy(e),u,c);const f=l.subVectors(o,c).normalize().dot(u),m=o.distanceTo(c);f>0?m>t&&(t=m):m>i&&(i=m),Uu(o.copy(e),h,c);const p=l.subVectors(o,c).normalize().dot(h),g=o.distanceTo(c);p>0?g>n&&(n=g):g>r&&(r=g),Uu(o.copy(e),d,c);const _=l.subVectors(o,c).normalize().dot(d),y=o.distanceTo(c);_>0?y>s&&(s=y):y>a&&(a=y)})),{d1a:t,d2a:n,d3a:s,d1b:-i,d2b:-r,d3b:-a}}}class fm{constructor(e,t,i,n){this.volume=e,this.setFilter(t,i,n)}get header(){return this.volume.header}get matrix(){return this.volume.matrix}get normalMatrix(){return this.volume.normalMatrix}get inverseMatrix(){return this.volume.inverseMatrix}get center(){return this.volume.center}get boundingBox(){return this.volume.boundingBox}get min(){return this.volume.min}get max(){return this.volume.max}get mean(){return this.volume.mean}get rms(){return this.volume.rms}_getFilterHash(e,t,i){return JSON.stringify([e,t,i])}setFilter(e,t,i){isNaN(e)&&this.header&&(e=this.header.DMEAN+2*this.header.ARMS),e=void 0===e||isNaN(e)?-1/0:e,t=uo(t,1/0),i=uo(i,!1);const n=this.volume.data,r=this.volume.position,s=this.volume.atomindex,a=this._getFilterHash(e,t,i);if(a!==this._filterHash){if(e===-1/0&&t===1/0)this.data=n,this.position=r,this.atomindex=s;else{const a=n.length;this._dataBuffer||(this._dataBuffer=new ArrayBuffer(4*a),this._positionBuffer=new ArrayBuffer(3*a*4),s&&(this._atomindexBuffer=new ArrayBuffer(4*a)));const o=new Float32Array(this._dataBuffer),l=new Float32Array(this._positionBuffer);let c;s&&(c=new Uint32Array(this._atomindexBuffer));let u=0;for(let h=0;h=e&&d<=t||i&&(dt)){const e=3*u;o[u]=d,l[e+0]=r[a+0],l[e+1]=r[a+1],l[e+2]=r[a+2],s&&c&&(c[u]=s[h]),u+=1}}this.data=new Float32Array(this._dataBuffer,0,u),this.position=new Float32Array(this._positionBuffer,0,3*u),s&&(this.atomindex=new Int32Array(this._atomindexBuffer,0,u))}this._filterHash=a}}}fm.prototype.getValueForSigma=Df.prototype.getValueForSigma,fm.prototype.getSigmaForValue=Df.prototype.getSigmaForValue,fm.prototype.getDataAtomindex=Df.prototype.getDataAtomindex,fm.prototype.getDataPosition=Df.prototype.getDataPosition,fm.prototype.getDataColor=Df.prototype.getDataColor,fm.prototype.getDataPicking=Df.prototype.getDataPicking,fm.prototype.getDataSize=Df.prototype.getDataSize;class mm{constructor(e,t){const i=Dh({nodeArray1:e.atomIndex1,nodeArray2:e.atomIndex2,edgeCount:e.count,nodeCount:t});this.countArray=i.countArray,this.offsetArray=i.offsetArray,this.indexArray=i.indexArray}}class pm extends Th{get _defaultFields(){return[["atomIndex1",1,"int32"],["atomIndex2",1,"int32"],["bondOrder",1,"int8"]]}addBond(e,t,i){this.growIfFull();const n=this.count,r=e.index,s=t.index;r0&&(a[t]=v.angleTo(b));const n=Math.cos(m.angleTo(p));c[t]=180/Math.PI*Math.acos(n);const y=m.length(),P=p.length();o[t]=Math.sqrt(P*y)/Math.max(2,2*(1-n)),l[t]=Math.abs(d.dot(v)),g.copy(m).multiplyScalar(o[t]/y),_.copy(p).multiplyScalar(o[t]/P),g.subVectors(A,g),_.subVectors(C,_),g.toArray(r,i+3),_.toArray(r,i+6),x.subVectors(M,w),x.toArray(u,i),b.copy(v),w.copy(g)}g.fromArray(r,3),_.fromArray(r,6),v.subVectors(g,_).normalize(),M.index=e.getAtomIndexByType(0,S),w.copy(M),y.copy(M),Uu(y,v,g),y.toArray(r,0),x.subVectors(w,g),x.toArray(u,0),g.fromArray(r,3*i-6),_.fromArray(r,3*i-9),v.subVectors(g,_).normalize(),M.index=e.getAtomIndexByType(i-1,S),w.copy(M),y.copy(M),Uu(y,v,g),y.toArray(r,3*i-3);for(let t=i-3;tt||c.bending[n]>e)&&(O=!0)),O){if(n-f<4){f=n,O=!1;continue}R.index=I.traceAtomIndex,C=c.axis.subarray(3*f+3,3*n),T=c.center.subarray(3*f,3*n+3),M=zu(C).normalize(),A=zu(T),P.fromArray(T),Uu(P,M,A),E.fromArray(T,T.length-3),Uu(E,M,A),M.subVectors(E,P),M.toArray(p,m),A.toArray(g,m),P.toArray(_,m),E.toArray(y,m),h.atomColorToArray(R,v,m),b.push(R.index),x.push(d.atomRadius(R)),w.push(l+f),S.push(l+n+1-f),m+=3,f=n,O=!1}const N=new Float32Array(b);return{axis:new Float32Array(p),center:new Float32Array(g),begin:new Float32Array(_),end:new Float32Array(y),color:new Float32Array(v),picking:new Hd(N,a),size:new Float32Array(x),residueOffset:w,residueCount:S}}}class wm{constructor(e){this.scoreFunction=e,this.content=[],this.scoreFunction=e}push(e){this.content.push(e),this.bubbleUp(this.content.length-1)}pop(){const e=this.content[0],t=this.content.pop();return t&&this.content.length>0&&(this.content[0]=t,this.sinkDown(0)),e}peek(){return this.content[0]}remove(e){const t=this.content.length;for(let i=0;i0;){const i=Math.floor((e+1)/2)-1,n=this.content[i];if(!(this.scoreFunction(t), 2016 + * @author Roman Bolzern , 2013 + * @author I4DS http://www.fhnw.ch/i4ds, 2013 + * @license MIT License + * @description + * k-d Tree for typed arrays of 3d points (e.g. for Float32Array), in-place + * provides fast nearest neighbour search + * + * Based on https://github.com/ubilabs/kd-tree-javascript by Ubilabs + * + * Further information (including mathematical properties) + * http://en.wikipedia.org/wiki/Binary_tree + * http://en.wikipedia.org/wiki/K-d_tree + * + * @example + * points: [x, y, z, x, y, z, x, y, z, ...] + * metric: function(a, b){ + * return Math.pow(a[0]-b[0], 2) + Math.pow(a[1]-b[1], 2) + Math.pow(a[2]-b[2], 2); + * } + * + * @param {Float32Array} points - points + * @param {Function} metric - metric + */class Sm{constructor(e,t){this.points=e,this.metric=t,this.maxDepth=0,this.currentNode=0;const i=e.length/3,n=new Uint32Array(i);for(let e=0;ethis.maxDepth&&(this.maxDepth=e);const r=n-i;if(0===r)return-1;const s=4*this.currentNode,a=this.nodes;if(this.currentNode+=1,1===r)return a[s]=i,a[s+1]=-1,a[s+2]=-1,a[s+3]=t,s;const o=this.indices,l=this.points,c=i+Math.floor(r/2),u=e%3;let h,d,f,m,p,g=i,_=n-1;for(;_>g;){for(f=g+_>>1,m=l[3*o[f]+u],d=o[f],o[f]=o[_],o[_]=d,p=g,h=g;h<_;++h)l[3*o[h]+u]-e[1])),r=this.nodes,s=this.points,a=this.indices,o=l=>{let c,u;const h=this.getNodeDepth(l)%3,d=3*a[r[l]],f=[s[d+0],s[d+1],s[d+2]],m=this.metric(e,f);function p(e,i){n.push([e,i]),n.size()>t&&n.pop()}const g=r[l+1],_=r[l+2];if(-1===_&&-1===g)return void((n.size()s[3*a[r[e]]+n])throw new Error("left child is > parent!");i+=this.verify(o,t+1)}if(-1!==l){if(s[3*a[r[l]]+n]0}isBackbone(){const e=this.residueType.backboneIndexList;return e.length>0&&e.includes(this.index-this.residueAtomOffset)}isPolymer(){if(this.structure.entityList.length>0)return this.entity.isPolymer();{const e=this.residueType.moleculeType;return 3===e||4===e||5===e}}isSidechain(){return this.isPolymer()&&!this.isBackbone()}isCg(){const e=this.residueType.backboneType;return 4===e||5===e||6===e}isTrace(){return this.index===this.residueType.traceAtomIndex+this.residueAtomOffset}isHetero(){return 1===this.residueType.hetero}isProtein(){return 3===this.residueType.moleculeType}isNucleic(){const e=this.residueType.moleculeType;return 4===e||5===e}isRna(){return 4===this.residueType.moleculeType}isDna(){return 5===this.residueType.moleculeType}isWater(){return 1===this.residueType.moleculeType}isIon(){return 2===this.residueType.moleculeType}isSaccharide(){return 6===this.residueType.moleculeType}isHelix(){return Vh.includes(this.sstruc)}isSheet(){return $h.includes(this.sstruc)}isTurn(){return Gh.includes(this.sstruc)&&this.isProtein()}isBonded(){return 0!==this.bondHash.countArray[this.index]}isRing(){return void 0!==this.residueType.getRings().atomRings[this.index-this.residueAtomOffset]}isAromatic(){return 1===this.aromatic}isPolarHydrogen(){let e=!1;return 1!==this.number||(e=!this.hasBondToElement(6)),e}isMetal(){return this.atomType.isMetal()}isNonmetal(){return this.atomType.isNonmetal()}isMetalloid(){return this.atomType.isMetalloid()}isHalogen(){return this.atomType.isHalogen()}isDiatomicNonmetal(){return this.atomType.isDiatomicNonmetal()}isPolyatomicNonmetal(){return this.atomType.isPolyatomicNonmetal()}isAlkaliMetal(){return this.atomType.isAlkaliMetal()}isAlkalineEarthMetal(){return this.atomType.isAlkalineEarthMetal()}isNobleGas(){return this.atomType.isNobleGas()}isTransitionMetal(){return this.atomType.isTransitionMetal()}isPostTransitionMetal(){return this.atomType.isPostTransitionMetal()}isLanthanide(){return this.atomType.isLanthanide()}isActinide(){return this.atomType.isActinide()}getDefaultValence(){return this.atomType.getDefaultValence()}getValenceList(){return this.atomType.getValenceList()}getOuterShellElectronCount(){return this.atomType.getOuterShellElectronCount()}distanceTo(e){const t=this.atomStore,i=e.atomStore,n=this.index,r=e.index,s=t.x[n]-i.x[r],a=t.y[n]-i.y[r],o=t.z[n]-i.z[r],l=s*s+a*a+o*o;return Math.sqrt(l)}connectedTo(e){const t=this.atomStore,i=e.atomStore,n=this.index,r=e.index;if(t.altloc&&i.altloc){const e=t.altloc[n],s=i.altloc[r];if(0!==e&&0!==s&&32!==e&&32!==s&&e!==s)return!1}const s=t.x[n]-i.x[r],a=t.y[n]-i.y[r],o=t.z[n]-i.z[r],l=s*s+a*a+o*o;if(l<48&&this.isCg())return!0;if(isNaN(l))return!1;const c=this.covalent+e.covalent,u=c+.3,h=c-.5;return lh*h}positionFromArray(e,t=0){return this.x=e[t+0],this.y=e[t+1],this.z=e[t+2],this}positionToArray(e=[],t=0){const i=this.index,n=this.atomStore;return e[t+0]=n.x[i],e[t+1]=n.y[i],e[t+2]=n.z[i],e}positionToVector3(e){return void 0===e&&(e=new _t),e.x=this.x,e.y=this.y,e.z=this.z,e}positionFromVector3(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}positionAdd(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}positionSub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}getResidueBonds(e=!1){const t=this.residueAtomOffset,i=this.index-this.residueAtomOffset,n=this.residueType.getBonds(),r=n.atomIndices1,s=n.atomIndices2;let a,o,l,c;for(e||(c=[]),a=r.indexOf(i);-1!==a;){if(l=s[a]+t,!c)return l;c.push(l),a=r.indexOf(i,a+1)}for(o=s.indexOf(i);-1!==o;){if(l=r[o]+t,!c)return l;c.push(l),o=s.indexOf(i,o+1)}return c}qualifiedName(e=!1){var t="";return this.resname&&!e&&(t+="["+this.resname+"]"),void 0!==this.resno&&(t+=this.resno),this.inscode&&(t+="^"+this.inscode),this.chainname&&(t+=":"+this.chainname),this.atomname&&(t+="."+this.atomname),this.altloc&&(t+="%"+this.altloc),this.structure.modelStore.count>1&&(t+="/"+this.modelIndex),t}clone(){return new Mm(this.structure,this.index)}toObject(){return{index:this.index,residueIndex:this.residueIndex,resname:this.resname,x:this.x,y:this.y,z:this.z,element:this.element,chainname:this.chainname,resno:this.resno,serial:this.serial,vdw:this.vdw,covalent:this.covalent,hetero:this.hetero,bfactor:this.bfactor,altloc:this.altloc,atomname:this.atomname,modelIndex:this.modelIndex}}}function Am(e,t){const i=e[0]-t[0],n=e[1]-t[1],r=e[2]-t[2];return i*i+n*n+r*r}function Cm(e,t){return Math.sqrt(Am(e,t))}const Tm=new Float32Array(3);class Pm{constructor(t,i=!1){e.Debug&&Fl.time("Kdtree build");const n=i?Am:Cm,r=new Float32Array(3*t.atomCount),s=new Uint32Array(t.atomCount);let a=0;t.eachAtom((function(e){r[a+0]=e.x,r[a+1]=e.y,r[a+2]=e.z,s[a/3]=e.index,a+=3})),this.atomIndices=s,this.points=r,this.kdtree=new Sm(r,n),e.Debug&&Fl.timeEnd("Kdtree build")}nearest(e,t,i){e instanceof _t?e.toArray(Tm):e instanceof Mm&&e.positionToArray(Tm);const n=this.kdtree.nearest(Tm,t,i),r=this.kdtree.indices,s=this.kdtree.nodes,a=this.atomIndices,o=[];for(let e=0,t=n.length;e":"3/4-Z","?":"X-Y","@":"Y-X",A:"Z+1/3",B:"Z+2/3",C:"X+2/3",D:"Y+1/3",E:"-Y+2/3",F:"X-Y+1/3",G:"Y-X+2/3",H:"-X+1/3",I:"X+1/3",J:"Y+2/3",K:"-Y+1/3",L:"X-Y+2/3",M:"Y-X+1/3",N:"-X+2/3",O:"2/3+X",P:"1/3+Y",Q:"1/3+Z",R:"2/3-Y",S:"1/3+X-Y",T:"2/3+Y-X",U:"1/3-X",V:"2/3-X",W:"1/3-Y",X:"1/3-Z",Y:"2/3+Y",Z:"1/3+Y-X","[":"2/3+X-Y","]":"1/3+X","^":"2/3+Z",_:"2/3-Z","`":"5/6+Z",a:"1/6+Z",b:"5/6-Z",c:"1/6-Z",d:"Z+5/6",e:"Z+1/6",f:"Z+1/4",g:"+Y"},Im={"P 1":" !#","P -1":" !#$%&","P 1 2 1":" !#$!&","P 1 21 1":" !#$'&","C 1 2 1":" !#$!&()#*)&","P 1 m 1":" !# %#","P 1 c 1":" !# %+","C 1 m 1":" !# %#()#(,#","C 1 c 1":" !# %+()#(,+","P 1 2/m 1":" !# %#$!&$%&","P 1 21/m 1":" !#$)&$%& ,#","C 1 2/m 1":" !# %#$!&$%&()#(,#*)&*,&","P 1 2/c 1":" !#$!-$%& %+","P 1 21/c 1":" !#$%&$)- ,+","C 1 2/c 1":" !#$!-$%& %+()#*)-*,&(,+","P 2 2 2":" !#$%#$!& %&","P 2 2 21":" !#$%+$!- %&","P 21 21 2":" !#$%#*)&(,&","P 21 21 21":" !#*%+$)-(,&","C 2 2 21":" !#$%+$!- %&()#*,+*)-(,&","C 2 2 2":" !#$%#$!& %&()#*,#*)&(,&","F 2 2 2":" !#$%#$!& %& )+$,+$)- ,-(!+*%+*!-(%-()#*,#*)&(,&","I 2 2 2":" !#$%# %&$!&.'/01/.120'2","I 21 21 21":" !#*%+$)-(,&()+$,#*!& %-","P m m 2":" !#$%# %#$!#","P m c 21":" !#$%+ %+$!#","P c c 2":" !#$%# %+$!+","P m a 2":" !#$%#(%#*!#","P c a 21":" !#$%+(%#*!+","P n c 2":" !#$%# ,+$)+","P m n 21":" !#*%+(%+$!#","P b a 2":" !#$%#(,#*)#","P n a 21":" !#$%+(,#*)+","P n n 2":" !#$%#(,+*)+","C m m 2":" !#$%# %#$!#()#*,#(,#*)#","C m c 21":" !#$%+ %+$!#()#*,+(,+*)#","C c c 2":" !#$%# %+$!+()#*,#(,+*)+","A m m 2":" !#$%# %#$!# )+$,+ ,+$)+","A b m 2":" !#$%# ,#$)# )+$,+ %+$!+","A m a 2":" !#$%#(%#*!# )+$,+(,+*)+","A b a 2":" !#$%#(,#*)# )+$,+(%+*!+","F m m 2":" !#$%# %#$!# )+$,+ ,+$)+(!+*%+(%+*!+()#*,#(,#*)#","F d d 2":" !#$%#345675 )+$,+3896:9(!+*%+;49<79()#*,#;85<:5","I m m 2":" !#$%# %#$!#()+*,+(,+*)+","I b a 2":" !#$%#(,#*)#()+*,+ %+$!+","I m a 2":" !#$%#(%#*!#()+*,+ ,+$)+","P 2/m 2/m 2/m":" !#$%#$!& %&$%& !& %#$!#","P 2/n 2/n 2/n":" !#$%#$!& %&*,-()-(,+*)+","P 2/c 2/c 2/m":" !#$%#$!- %-$%& !& %+$!+","P 2/b 2/a 2/n":" !#$%#$!& %&*,&()&(,#*)#","P 21/m 2/m 2/a":" !#*%#$!&(%&$%&(!& %#*!#","P 2/n 21/n 2/a":" !#*%#*)- ,-$%&(!&(,+$)+","P 2/m 2/n 21/a":" !#*%+*!- %&$%&(!-(%+$!#","P 21/c 2/c 2/a":" !#*%#$!-(%-$%&(!& %+*!+","P 21/b 21/a 2/m":" !#$%#*)&(,&$%& !&(,#*)#","P 21/c 21/c 2/n":" !#*,#$)-(%-$%&()& ,+*!+","P 2/b 21/c 21/m":" !#$%+$)- ,&$%& !- ,+$)#","P 21/n 21/n 2/m":" !#$%#*)-(,-$%& !&(,+*)+","P 21/m 21/m 2/n":" !#$%#*'&.,&*,&.'& %#$!#","P 21/b 2/c 21/n":" !#*,+$!-(,&$%&()- %+*)#","P 21/b 21/c 21/a":" !#*%+$)-(,&$%&(!- ,+*)#","P 21/n 21/m 21/a":" !#0%/$'&.12$%&.!2 1#0'/","C 2/m 2/c 21/m":" !#$%+$!- %&$%& !- %+$!#()#*,+*)-(,&*,&()-(,+*)#","C 2/m 2/c 21/a":" !#$,+$)- %&$%& )- ,+$!#()#*%+*!-(,&*,&(!-(%+*)#","C 2/m 2/m 2/m":" !#$%#$!& %&$%& !& %#$!#()#*,#*)&(,&*,&()&(,#*)#","C 2/c 2/c 2/m":" !#$%#$!- %-$%& !& %+$!+()#*,#*)-(,-*,&()&(,+*)+","C 2/m 2/m 2/a":" !#$,#$)& %&$%& )& ,#$!#()#*%#*!&(,&*,&(!&(%#*)#","C 2/c 2/c 2/a":" !#*,#$!&(,&$,-(!- ,+*!+()#$%#*)& %&*%- )-(%+$)+","F 2/m 2/m 2/m":" !#$%#$!& %&$%& !& %#$!# )+$,+$)- ,-$,- )- ,+$)+(!+*%+*!-(%-*%-(!-(%+*!+()#*,#*)&(,&*,&()&(,#*)#","F 2/d 2/d 2/d":" !#$%#$!& %&64=37=345675 )+$,+$)- ,-68>3:>3896:9(!+*%+*!-(%-<4>;7>;49<79()#*,#*)&(,&<8=;:=;85<:5","I 2/m 2/m 2/m":" !#$%#$!& %&$%& !& %#$!#()+*,+*)-(,-*,-()-(,+*)+","I 2/b 2/a 2/m":" !#$%#*)&(,&$%& !&(,#*)#()+*,+$!- %-*,-()- %+$!+","I 21/b 21/c 21/a":" !#*%+$)-(,&$%&(!- ,+*)#()+$,#*!& %-*,- )&(%#$!+","I 21/m 21/m 21/a":" !#$,#$)& %&$%& )& ,#$!#()+*%+*!-(,-*,-(!-(%+*)+","P 4":" !#$%#% #!$#","P 41":" !#$%+% 5!$9","P 42":" !#$%#% +!$+","P 43":" !#$%+% 9!$5","I 4":" !#$%#% #!$#()+*,+,(+)*+","I 41":" !#*,+%(5)$9()+$%#, 9!*5","P -4":" !#$%#!$&% &","I -4":" !#$%#!$&% &()+*,+)*-,(-","P 4/m":" !#$%#% #!$#$%& !&!$&% &","P 42/m":" !#$%#% +!$+$%& !&!$-% -","P 4/n":" !#$%#,(#)*#*,&()&!$&% &","P 42/n":" !#$%#,(+)*+*,-()-!$&% &","I 4/m":" !#$%#% #!$#$%& !&!$&% &()+*,+,(+)*+*,-()-)*-,(-","I 41/a":" !#*,+%(5)$9$,=(!>!$&,(-()+$%#, 9!*5*%> )=)*-% &","P 4 2 2":" !#$%#% #!$#$!& %&! &%$&","P 4 21 2":" !#$%#,(#)*#*)&(,&! &%$&","P 41 2 2":" !#$%+% 5!$9$!& %-! >%$=","P 41 21 2":" !#$%+,(5)*9*)=(,>! &%$-","P 42 2 2":" !#$%#% +!$+$!& %&! -%$-","P 42 21 2":" !#$%#,(+)*+*)-(,-! &%$&","P 43 2 2":" !#$%+% 9!$5$!& %-! =%$>","P 43 21 2":" !#$%+,(9)*5*)>(,=! &%$-","I 4 2 2":" !#$%#% #!$#$!& %&! &%$&()+*,+,(+)*+*)-(,-)(-,*-","I 41 2 2":" !#*,+%(5)$9*!> ,=)(-%$&()+$%#, 9!*5$)=(%>! &,*-","P 4 m m":" !#$%#% #!$# %#$!#%$#! #","P 4 b m":" !#$%#% #!$#(,#*)#,*#)(#","P 42 c m":" !#$%#% +!$+ %+$!+%$#! #","P 42 n m":" !#$%#,(+)*+(,+*)+%$#! #","P 4 c c":" !#$%#% #!$# %+$!+%$+! +","P 4 n c":" !#$%#% #!$#(,+*)+,*+)(+","P 42 m c":" !#$%#% +!$+ %#$!#%$+! +","P 42 b c":" !#$%#% +!$+(,#*)#,*+)(+","I 4 m m":" !#$%#% #!$# %#$!#%$#! #()+*,+,(+)*+(,+*)+,*+)(+","I 4 c m":" !#$%#% #!$# %+$!+%$+! +()+*,+,(+)*+(,#*)#,*#)(#","I 41 m d":" !#*,+%(5)$9 %#*)+%*5) 9()+$%#, 9!*5(,+$!#,$9!(5","I 41 c d":" !#*,+%(5)$9 %+*)#%*9) 5()+$%#, 9!*5(,#$!+,$5!(9","P -4 2 m":" !#$%#% &!$&$!& %&%$#! #","P -4 2 c":" !#$%#% &!$&$!- %-%$+! +","P -4 21 m":" !#$%#% &!$&*)&(,&,*#)(#","P -4 21 c":" !#$%#% &!$&*)-(,-,*+)(+","P -4 m 2":" !#$%#!$&% & %#$!#! &%$&","P -4 c 2":" !#$%#% &!$& %+$!+! -%$-","P -4 b 2":" !#$%#% &!$&(,#*)#)(&,*&","P -4 n 2":" !#$%#% &!$&(,+*)+)(-,*-","I -4 m 2":" !#$%#% &!$& %#$!#! &%$&()+*,+,(-)*-(,+*)+)(-,*-","I -4 c 2":" !#$%#% &!$& %+$!+! -%$-()+*,+,(-)*-(,#*)#)(&,*&","I -4 2 m":" !#$%#% &!$&$!& %&%$#! #()+*,+,(-)*-*)-(,-,*+)(+","I -4 2 d":" !#$%#% &!$&*!>(%>,$9) 9()+*,+,(-)*-$)= ,=%*5!(5","P 4/m 2/m 2/m":" !#$%#% #!$#$!& %&! &%$&$%& !&!$&% & %#$!#%$#! #","P 4/m 2/c 2/c":" !#$%#% #!$#$!- %-! -%$-$%& !&!$&% & %+$!+%$+! +","P 4/n 2/b 2/m":" !#$%#% #!$#$!& %&! &%$&*,&()&)*&,(&(,#*)#,*#)(#","P 4/n 2/n 2/c":" !#$%#% #!$#$!& %&! &%$&*,-()-)*-,(-(,+*)+,*+)(+","P 4/m 21/b 2/m":" !#$%#% #!$#*)&(,&)(&,*&$%& !&!$&% &(,#*)#,*#)(#","P 4/m 21/n 2/c":" !#$%#% #!$#*)-(,-)(-,*-$%& !&!$&% &(,+*)+,*+)(+","P 4/n 21/m 2/m":" !#$%#,(#)*#*)&(,&! &%$&*,&()&!$&% & %#$!#,*#)(#","P 4/n 2/c 2/c":" !#$%#,(#)*#*)-(,-! -%$-*,&()&!$&% & %+$!+,*+)(+","P 42/m 2/m 2/c":" !#$%#% +!$+$!& %&! -%$-$%& !&!$-% - %#$!#%$+! +","P 42/m 2/c 2/m":" !#$%#% +!$+$!- %-! &%$&$%& !&!$-% - %+$!+%$#! #","P 42/n 2/b 2/c":" !#$%#,(+)*+$!- %-)(&,*&*,-()-!$&% &(,#*)#%$+! +","P 42/n 2/n 2/m":" !#$%#,(+)*+$!& %&)(-,*-*,-()-!$&% &(,+*)+%$#! #","P 42/m 21/b 2/c":" !#$%#% +!$+*)&(,&)(-,*-$%& !&!$-% -(,#*)#,*+)(+","P 42/m 21/n 2/m":" !#$%#,./'*/*'-.,-! &%$&$%& !&'*-,.-.,/*'/%$#! #","P 42/n 21/m 2/c":" !#$%#,(+)*+*)-(,-! &%$&*,-()-!$&% & %#$!#,*+)(+","P 42/n 21/c 2/m":" !#$%#,(+)*+*)&(,&! -%$-*,-()-!$&% & %+$!+,*#)(#","I 4/m 2/m 2/m":" !#$%#% #!$#$!& %&! &%$&$%& !&!$&% & %#$!#%$#! #()+*,+,(+)*+*)-(,-)(-,*-*,-()-)*-,(-(,+*)+,*+)(+","I 4/m 2/c 2/m":" !#$%#% #!$#$!- %-! -%$-$%& !&!$&% & %+$!+%$+! +()+*,+,(+)*+*)&(,&)(&,*&*,-()-)*-,(-(,#*)#,*#)(#","I 41/a 2/m 2/d":" !#*,+%(5)$9*!> ,=)(-%$&$,=(!>!$&,(-(,+$!#,$9!(5()+$%#, 9!*5$)=(%>! &,*-*%> )=)*-% & %#*)+%*5) 9","I 41/a 2/c 2/d":" !#*,+%(5)$9*!= ,>)(&%$-$,=(!>!$&,(-(,#$!+,$5!(9()+$%#, 9!*5$)>(%=! -,*&*%> )=)*-% & %+*)#%*9) 5","P 3":" !#%?#@$#","P 31":" !#%?A@$B","P 32":" !#%?B@$A","H 3":" !#%?#@$#CDAEFAGHAIJBKLBMNB","R 3":" !## !!# ","P -3":" !#%?#@$#$%&!@&? &","H -3":" !#%?#@$#$%&!@&? &OPQRSQTUQVWXYZX[]X]Y^W[^ZV^UR_PT_SO_","R -3":" !## !!# $%&&$%%&$","P 3 1 2":" !#%?#@$#%$&@!& ?&","P 3 2 1":" !#%?#@$#! &?%&$@&","P 31 1 2":" !#%?Q@$^%$_@!X ?&","P 31 2 1":" !#%?A@$B! &?%_$@X","P 32 1 2":" !#%?^@$Q%$X@!_ ?&","P 32 2 1":" !#%?B@$A! &?%X$@_","H 3 2":" !#%?#@$#! &?%&$@&OPQRSQTUQY]X[WXVZX]Y^W[^ZV^PO_SR_UT_","R 3 2":" !## !!# %$&$&%&%$","P 3 m 1":" !#%?#@$#%$#@!# ?#","P 3 1 m":" !#%?#@$#! #?%#$@#","P 3 c 1":" !#%?#@$#%$+@!+ ?+","P 3 1 c":" !#%?#@$#! +?%+$@+","H 3 m":" !#%?#@$#%$#@!# ?#OPQRSQTUQRUQTPQOSQ]Y^W[^ZV^WV^ZY^][^","R 3 m":" !## !!# ! # #!#! ","H 3 c":" !#%?#@$#%$+@!+ ?+OPQRSQTUQRU`TP`OS`]Y^W[^ZV^WVaZYa][a","R 3 c":" !## !!# '././'/'.","P -3 1 2/m":" !#%?#@$#%$&@!& ?&$%&!@&? &! #?%#$@#","P -3 1 2/c":" !#%?#@$#%$-@!- ?-$%&!@&? &! +?%+$@+","P -3 2/m 1":" !#%?#@$#! &?%&$@&$%&!@&? &%$#@!# ?#","P -3 2/c 1":" !#%?#@$#! -?%-$@-$%&!@&? &%$+@!+ ?+","H -3 2/m":" !#%?#@$#! &?%&$@&$%&!@&? &%$#@!# ?#OPQRSQTUQY]X[WXVZXVWXYZX[]XRUQTPQOSQ]Y^W[^ZV^PO_SR_UT_UR_PT_SO_WV^ZY^][^","R -3 2/m":" !## !!# %$&$&%&%$$%&&$%%&$! # #!#! ","H -3 2/c":" !#%?#@$#! -?%-$@-$%&!@&? &%$+@!+ ?+OPQRSQTUQY]b[WbVZbVWXYZX[]XRU`TP`OS`]Y^W[^ZV^POcSRcUTcUR_PT_SO_WVaZYa][a","R -3 2/c":" !## !!# 102021210$%&&$%%&$'././'/'.","P 6":" !#%?#@$#$%#!@#? #","P 61":" !#%?A@$B$%/!@d? e","P 65":" !#%?B@$A$%/!@e? d","P 62":" !#%?^@$Q$%#!@^? Q","P 64":" !#%?Q@$^$%#!@Q? ^","P 63":" !#%?#@$#$%+!@+? +","P -6":" !#%?#@$# !&%?&@$&","P 6/m":" !#%?#@$#$%#!@#? #$%&!@&? & !&%?&@$&","P 63/m":" !#%?#@$#$%+!@+? +$%&!@&? & !-%?-@$-","P 6 2 2":" !#%?#@$#$%#!@#? #! &?%&$@&%$&@!& ?&","P 61 2 2":" !#%?Q@$^$%+!@`? a! X?%&$@_%$b@!- ?c","P 65 2 2":" !#%?^@$Q$%+!@a? `! _?%&$@X%$c@!- ?b","P 62 2 2":" !#%?^@$Q$%#!@^? Q! _?%&$@X%$_@!& ?X","P 64 2 2":" !#%?Q@$^$%#!@Q? ^! X?%&$@_%$X@!& ?_","P 63 2 2":" !#%?#@$#$%+!@+? +! &?%&$@&%$-@!- ?-","P 6 m m":" !#%?#@$#$%#!@#? #%$#@!# ?#! #?%#$@#","P 6 c c":" !#%?#@$#$%#!@#? #%$+@!+ ?+! +?%+$@+","P 63 c m":" !#%?#@$#$%+!@+? +%$+@!+ ?+! #?%#$@#","P 63 m c":" !#%?#@$#$%+!@+? +%$#@!# ?#! +?%+$@+","P -6 m 2":" !#%?#@$# !&%?&@$&%$#@!# ?#%$&@!& ?&","P -6 c 2":" !#%?#@$# !-%?-@$-%$+@!+ ?+%$&@!& ?&","P -6 2 m":" !#%?#@$# !&%?&@$&! &?%&$@&! #?%#$@#","P -6 2 c":" !#%?#@$# !-%?-@$-! &?%&$@&! +?%+$@+","P 6/m 2/m 2/m":" !#%?#@$#$%#!@#? #! &?%&$@&%$&@!& ?&$%&!@&? & !&@$&%?&%$#@!# ?#! #?%#$@#","P 6/m 2/c 2/c":" !#%?#@$#$%#!@#? #! -?%-$@-%$-@!- ?-$%&!@&? & !&@$&%?&%$+@!+ ?+! +?%+$@+","P 63/m 2/c 2/m":" !#%?#@$#$%+!@+? +! -?%-$@-%$&@!& ?&$%&!@&? & !-@$-%?-%$+@!+ ?+! #?%#$@#","P 63/m 2/m 2/c":" !#%?#@$#$%+!@+? +! &?%&$@&%$-@!- ?-$%&!@&? & !-@$-%?-%$#@!# ?#! +?%+$@+","P 2 3":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ","F 2 3":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-((!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- ","I 2 3":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-(","P 21 3":" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(","I 21 3":" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(()+$,#*!& %-+()#$,&*!- %)+(,#$!&*%- ","P 2/m -3":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& $%& !& %#$!#&$%& !# %#$!%&$!& %# !#$","P 2/n -3":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& *,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*","F 2/m -3":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& $%& !& %#$!#&$%& !# %#$!%&$!& %# !#$ )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-($,- )- ,+$)+&*,&()#(,#*)%-*!-(%+(!+*(!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(*%-(!-(%+*!+-$,- )+ ,+$),&*)&(,#()#*()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- *,&()&(,#*)#-*%-(!+(%+*!,-$)- ,+ )+$","F 2/d -3":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& 64=37=345675=64=375345674=67=3453756 )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-(68>3:>3896:9=<8=;:5;85<:4><7>;49;79<(!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(<4>;7>;49<79>68>3:93896:8=<:=;85;:5<()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- <8=;:=;8f<:f><4>;79;49<78>6:>3893:96","I 2/m -3":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& $%& !& %#$!#&$%& !# %#$!%&$!& %# !#$()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-(*,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*","P 21/a -3":" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&($%&(!- ,+*)#&$%-(!+ ,#*)%&$!-(,+ )#*","I 21/a -3":" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&($%&(!- ,+*)#&$%-(!+ ,#*)%&$!-(,+ )#*()+$,#*g& %-+()#$,&*!- %)+(,#$!&*%- *,- )&(%#$!+-*,& )#(%+$!,-*)& %#(!+$","P 4 3 2":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$","P 42 3 2":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,*","F 4 3 2":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$ )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-(!(-%*-!*+%(+ +,$+)$-, -)#)*#,(&)(&,*(!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&() -,$-)$+, +(#,*#)*&,(&)+!*+%(-!(-%*()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- )(&,*&)*#,(#(+%*+!*-%(-!+)$+, -) -,$","F 41 3 2":" !#$,+*)&(%-# !+$,&*)-(%!# ,+$)&*%-(:3>46=7<98;5;58<976=43>:97<58;>:3=46 )+$%#*!-(,&#()+*%&$!- ,!+(,#*)-$%& :;=4<>765839;94<5:6>83=79:6543>7;=8<(!+*,#$)- %&+ )#$%-*!&(,)#(%+*!&$,- 73=86>:<54;935469:<=8;>7576983=:;>4<()#*%+$!& ,-+(!#*,-$)& %)+ %#$!-*,&(7;>8<=:69435398657<>4;=:5:<94;=73>86","I 4 3 2":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-()(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,*","P 43 3 2":" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(7;>46=:<5839398<5:6=4;>75:<983>7;=46","P 41 3 2":" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(:3=8<>7694;5;54697<>83=:97654;=:3>8<","I 41 3 2":" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(:3=8<>7694;5;54697<>83=:97654;=:3>8<()+$,#*!& %-+()#$,&*!- %)+(,#$!&*%- 7;>46=:<5839398<5:6=4;>75:<983>7;=46","P -4 3 m":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! #%$#!$&% & #!$#%$&! &%#! #%$&!$&% ","F -4 3 m":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! #%$#!$&% & #!$#%$&! &%#! #%$&!$&% )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-(!(+%*+!*-%(- +)$+,$-) -,#)(#,*&)*&,((!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&() +,$+)$-, -(#)*#,*&)(&,+!(+%*-!*-%(()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- )(#,*#)*&,(&(+!*+%*-!(-%+) +,$-)$-, ","I -4 3 m":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! #%$#!$&% & #!$#%$&! &%#! #%$&!$&% ()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-()(+,*+)*-,(-(+)*+,*-)(-,+)(+,*-)*-,(","P -4 3 n":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(+,*+)*-,(-(+)*+,*-)(-,+)(+,*-)*-,(","F -4 3 c":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(+,*+)*-,(-(+)*+,*-)(-,+)(+,*-)*-,( )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-() #,$#)$&, &(#!*#%*&!(&%+! +%$-!$-% (!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(!(#%*#!*&%(& +!$+%$-! -%#) #,$&)$&, ()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- ! +%$+!$-% - #)$#,$&) &,#!(#%*&!*&%(","I -4 3 d":" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(7354<9:6>8;=357<946>:;=857394<>:6=8;()+$,#*!& %-+()#$,&*!- %)+(,#$!&*%- :;98657<=43>;9:658<=73>49:;586=7<>43","P 4/m -3 2/m":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$%$#! #% &!$&$&! &% #!$#%&% &!$#%$#! ","P 4/n -3 2/n":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$*,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*,*+)(+,(-)*-*-)(-,(+)*+,-,(-)*+,*+)(","P 42/m -3 2/n":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,*$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$,*+)(+,(-)*-*-)(-,(+)*+,-,(-)*+,*+)(","P 42/n -3 2/m":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,**,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*%$#! #% &!$&$&! &% #!$#%&% &!$#%$#! ","F 4/m -3 2/m":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$%$#! #% &!$&$&! &% #!$#%&% &!$#%$#! )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-(!(-%*-!*+%(+ +,$+)$-, -)#)*#,(&)(&,*$,- )- ,+$)+&*,&()#(,#*)%-*!-(%+(!+*%*+!(+%(-!*-$-) -, +)$+,&,(&)*#,*#)((!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&() -,$-)$+, +(#,*#)*&,(&)+!*+%(-!(-%**%-(!-(%+*!+-$,- )+ ,+$),&*)&(,#()#*,$+) +, -)$-*&)(&,(#)*#,-%(-!*+%*+!(()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- )(&,*&)*#,(#(+%*+!*-%(-!+)$+, -) -,$*,&()&(,#*)#-*%-(!+(%+*!,-$)- ,+ )+$,*#)(#,(&)*&*-!(-%(+!*+%-, -)$+,$+) ","F 4/m -3 2/c":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,*$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$,*+)(+,(-)*-*-)(-,(+)*+,-,(-)*+,*+)( )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-() &,$&)$#, #(#%*#!*&%(&!+!$+% -! -%$$,- )- ,+$)+&*,&()#(,#*)%-*!-(%+(!+*,$#) #, &)$&*&!(&%(#!*#%-% -!$+%$+! (!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(!(&%*&!*#%(# +%$+!$-% -!#)$#, &) &,$*%-(!-(%+*!+-$,- )+ ,+$),&*)&(,#()#*%*#!(#%(&!*&$-! -% +!$+%&, &)$#,$#) ()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- ! -%$-!$+% + #,$#)$&, &)#!*#%(&!(&%**,&()&(,#*)#-*%-(!+(%+*!,-$)- ,+ )+$%$+! +% -!$-$&) &, #)$#,&%(&!*#%*#!(","F 41/d -3 2/m":" !#$,+*)&(%-# !+$,&*)-(%!# ,+$)&*%-(:3>46=7<98;5;58<976=43>:97<58;>:3=4664=3:>;85<79=64>3:5;89<74=6:>385;79<,$+! #%(-)*&*&)(-% #!$+,-%(&)*+,$#! )+$%#*!-(,&#()+*%&$!- ,!+(,#*)-$%& :;=4<>765839;94<5:6>83=79:6543>7;=8<68>37=;49<:5=<8>;753496:4><:=;893756,*#!(+% &)$-*-!(&, +)$#%-, &!$+%*#)((!+*,#$)- %&+ )#$%-*!&(,)#(%+*!&$,- 73=86>:<54;935469:<=8;>7576983=:;>4<<4>;:=389675>68=379;45<:8=<7>;453:96%$#) +,(&!*-$&! -,(#)*+%&% -)$#,*+!(()#*%+$!& ,-+(!#*,-$)& %)+ %#$!-*,&(7;>8<=:69435398657<>4;=:5:<94;=73>86<8=;7>3456:9><4=;:9385678>67=349;:5<%*+)(#, -!$&$-) &%(+!*#,&,(-!*#%$+) ","F 41/d -3 2/c":" !#$,+*)&(%-# !+$,&*)-(%!# ,+$)&*%-(:3>46=7<98;5;58<976=43>:97<58;>:3=46<8>;7=3496:5><8=;793456:8><7=;493:56%*#)(+, &!$-$-! &,(+)*#%&, -!$#%*+)( )+$%#*!-(,&#()+*%&$!- ,!+(,#*)-$%& :;=4<>765839;94<5:6>83=79:6543>7;=8<<4=;:>385679>64=3:9;85<78=67>345;:9<%$+) #,(-!*&$&) -%(#!*+,&%(-)*#,$+! (!+*,#$)- %&+ )#$%-*!&(,)#(%+*!&$,- 73=86>:<54;935469:<=8;>7576983=:;>4<68=37>;45<:9=<4>;:5389674>6:=389;75<,*+!(#% -)$&*-)(&% +!$#,-,(&!*+%$#) ()#*%+$!& ,-+(!#*,-$)& %)+ %#$!-*,&(7;>8<=:69435398657<>4;=:5:<94;=73>8664>3:=;89<75=68>375;49<:4=<:>;853796,$#! +%(&)*-*&!(-, #)$+%-% &)$+,*#!(","I 4/m -3 2/m":" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$%$#! #% &!$&$&! &% #!$#%&% &!$#%$#! ()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-()(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,**,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*,*+)(+,(-)*-*-)(-,(+)*+,-,(-)*+,*+)(","I 41/a -3 2/d":" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(:3=8<>7694;5;54697<>83=:97654;=:3>8<$%&(!- ,+*)#&$%-(!+ ,#*)%&$!-(,+ )#*4<97358;=:6>6>:;=8357<94=8;>:694<573()+$,#*!& %-+()#$,&*!- %)+(,#$!&*%- 7;>46=:<5839398<5:6=4;>75:<983>7;=46*,- )&(%#$!+-*,& )#(%+$!,-*)& %#(!+$865:;943>7<=<=73>4;9:658>43=7<5869:;","P 1 1 2":" !#$%#","P 1 1 21":" !#$%+","B 1 1 2":" !#$%#(g+*%+","A 1 2 1":" !#$!& )+$)-","C 1 21 1":" !#$)&()#*!&","I 1 2 1":" !#$!&.'/0'2","I 1 21 1":" !#$)&.'/0!-","P 1 1 m":" !# !&","P 1 1 b":" !# )&","B 1 1 m":" !# !&(!+(!-","B 1 1 b":" !# )&(!+()-","P 1 1 2/m":" !# !&$%#$%&","P 1 1 21/m":" !#$%+$%& !-","B 1 1 2/m":" !# !&$%#$%&(!+(!-*%+*%-","P 1 1 2/b":" !#$,#$%& )&","P 1 1 21/b":" !#$%&$,+ )-","B 1 1 2/b":" !#$,#$%& )&(!+*,+*%-()-","P 21 2 2":" !#$!&(%&*%#","P 2 21 2":" !# ,&$)&$%#","P 21 21 2 (a)":" !#*,#.%&$'&","P 21 2 21":" !#$!&(%-*%+","P 2 21 21":" !# %&$)-$,+","C 2 2 21a)":" !#*%+(,&$)-()#$,+ %&*!-","C 2 2 2a":" !#*,#.%&$'&()#$%# ,&*!&","F 2 2 2a":" !#*,#.%&$'& '/*%/.12$!2.!/$,/ %20'2.'#$%# 1&0!&","I 2 2 2a":" !#*,#.%&$'&()+$%+*!- ,-","P 21/m 21/m 2/n a":" !#*,#$)&(%&$%&.'& ,#*!#","P 42 21 2a":" !#*,#%.+'$+$'&.%&! -,*-","I 2 3a":" !#*,#.%&$'&!# ,- '&$%/$# !-*!/$%&.%()+$%+ ,-*!-)+(%&(!-*,#*+()&$)#*,- ,"},Dm=/^[1-9]$/;function Rm(e){let t="";return e.length>0&&(t=":"+bo(e).join(" OR :")),new wl(t)}class Lm{constructor(e=""){this.name=e,this.partList=[]}get type(){return"Assembly"}addPart(e,t){const i=new km(e,t);return this.partList.push(i),i}getAtomCount(e){return this.partList.reduce(((t,i)=>t+i.getAtomCount(e)),0)}getResidueCount(e){return this.partList.reduce(((t,i)=>t+i.getResidueCount(e)),0)}getInstanceCount(){let e=0;return this.partList.forEach((function(t){e+=t.matrixList.length})),e}isIdentity(e){if(1!==this.partList.length)return!1;const t=this.partList[0];if(1!==t.matrixList.length)return!1;if(!(new qt).equals(t.matrixList[0]))return!1;let i=[];return e.eachChain((function(e){i.push(e.chainname)})),i=bo(i),t.chainList.length===i.length}getBoundingBox(e){const t=new bt;return this.partList.forEach((function(i){const n=i.getBoundingBox(e);t.expandByPoint(n.min),t.expandByPoint(n.max)})),t}getCenter(e){return this.getBoundingBox(e).getCenter(new _t)}getSelection(){let e=[];return this.partList.forEach((function(t){e=e.concat(t.chainList)})),Rm(e)}}class km{constructor(e=[],t=[]){this.matrixList=e,this.chainList=t}get type(){return"AssemblyPart"}_getCount(e,t){let i=0;return e.eachChain((e=>{(0===this.chainList.length||this.chainList.includes(e.chainname))&&(i+=e[t])})),this.matrixList.length*i}getAtomCount(e){return this._getCount(e,"atomCount")}getResidueCount(e){return this._getCount(e,"residueCount")}getBoundingBox(e){const t=new bt,i=new bt,n=this.getSelection(),r=e.getBoundingBox(n);return this.matrixList.forEach((function(e){i.copy(r).applyMatrix4(e),t.expandByPoint(i.min),t.expandByPoint(i.max)})),t}getSelection(){return Rm(this.chainList)}getView(e){const t=this.getSelection();return t?e.getView(t):e}getInstanceList(){const e=[];for(let t=0,i=this.matrixList.length;t0&&this.addResidueType(this.ri-1),c.growIfFull(),c.resno[this.ri]=r,void 0!==a&&(c.sstruc[this.ri]=a.charCodeAt(0)),void 0!==o&&(c.inscode[this.ri]=o.charCodeAt(0)),c.atomOffset[this.ri]=this.ai,c.atomCount[this.ri]=0,c.count+=1,c.chainIndex[this.ri]=this.ci,u.residueCount[this.ci]+=1),l.count+=1,l.residueIndex[this.ai]=this.ri,c.atomCount[this.ri]+=1,this.currentModelindex=e,this.currentChainid=i,this.currentResname=n,this.currentResno=r,this.currentInscode=o,this.currentHetero=s}finalize(){this.previousResname=this.currentResname,this.previousHetero=this.currentHetero,this.ri>-1&&this.addResidueType(this.ri)}}function Nm(t,i){if(!i)return;e.Debug&&Fl.time("assignSecondaryStructure");const n=[];t.eachModel((function(e){e.eachChain((function(e){n.push(e.chainname)}))}));const r=n.slice().sort(),s=[];r.forEach((function(e){s.push(n.indexOf(e))}));const a=i.helices.filter((function(e){return yo(r,e[0])>=0}));a.sort((function(e,t){const i=e[0],n=t[0],a=e[1],o=t[1];if(i===n)return a===o?0:a=0}));l.sort((function(e,t){const i=e[0],n=t[0];if(i===n)return 0;const a=yo(r,i),o=yo(r,n);return s[a]=e.residueCount)continue;a.index=s+r,o.index=s+r+t,l.index=a.traceAtomIndex,c.index=o.traceAtomIndex;const u=l.distanceTo(c);if(Math.abs(u-i[t-2])>n)return!1}return!0},i=function(e,i){return t(e,i,[5.45,5.18,6.37],2.1)},n=function(e,i){return t(e,i,[6.1,10.4,13],1.42)};return function(t){e.Debug&&Fl.time("calculateSecondaryStructure"),t.eachPolymer((function(e){if(e.residueCount<4)return;if(e.isCg())!function(e){const t=e.residueStore,i=e.residueIndexStart,n=new xm(e).position,r=new _t,s=new _t;for(let a=0,o=e.residueCount;a1&&n.bending[a]<20&&(t.sstruc[i+a]="h".charCodeAt(0),t.sstruc[i+a+1]="h".charCodeAt(0))}}(e);else{if(!e.isProtein())return;!function(e){const t=e.residueStore,r=e.residueIndexStart;for(let s=0,a=e.residueCount;s=t;)i=Math.floor(i/t),r+=Bm[i%t],n+=1;return n>=5&&Fl.warn("chainname overflow"),r}function Um(t,i=!1){e.Debug&&Fl.time("calculateChainnames");let n=!0;if(t.eachChain((function(e){e.chainname&&(n=!1)})),n){const e=t.modelStore,n=t.chainStore,r=t.residueStore,s=function(t,i,s,a){const o=n.count;for(let e=0;e{h.add(t),e.forEach((e=>{h.add(e)}))}))),t.eachResidue((function(e){if(!i&&u){const t=e.atomCount,i=e.atomOffset;if(t>500)return void Fl.warn("more than 500 atoms, skip residue for auto-bonding",e.qualifiedName());if("auto"===n&&e.hetero)for(let t=e.atomOffset;t{h.forEach((i=>{e.push(t.clone().multiply(i))}))})),c.addPart(e)}else c.addPart(u);const d=new _t,f=new Lm("SUPERCELL"),m=Array.prototype.concat.call(l(d.set(1,0,0)),l(d.set(0,1,0)),l(d.set(0,0,1)),l(d.set(-1,0,0)),l(d.set(0,-1,0)),l(d.set(0,0,-1)),l(d.set(1,1,0)),l(d.set(1,0,1)),l(d.set(0,1,1)),l(d.set(-1,-1,0)),l(d.set(-1,0,-1)),l(d.set(0,-1,-1)),l(d.set(1,-1,-1)),l(d.set(1,1,-1)),l(d.set(1,-1,1)),l(d.set(-1,1,1)),l(d.set(-1,-1,1)),l(d.set(-1,1,-1)),l(d.set(0,1,-1)),l(d.set(0,-1,1)),l(d.set(1,0,-1)),l(d.set(-1,0,1)),l(d.set(1,-1,0)),l(d.set(-1,1,0)),l(),l(d.set(1,1,1)),l(d.set(-1,-1,-1)));if(t.biomolDict.NCS){const e=[];m.forEach((function(t){h.forEach((function(i){e.push(t.clone().multiply(i))}))})),f.addPart(e)}else f.addPart(m);t.biomolDict.UNITCELL=c,t.biomolDict.SUPERCELL=f,e.Debug&&Fl.timeEnd("buildUnitcellAssembly")}const qm=["H","C","O","N","S","P"],Xm=["NA","CL","FE"];function Ym(e){let t=e.toUpperCase(),i=0,n=0;for(let e=0;e0)break;++i}else n=e+1;(i>0||n=3&&-1!==qm.indexOf(t[0])?t[0]:""}function Km(e){const t=e.bondHash,i=t.countArray,n=t.offsetArray,r=t.indexArray,s=e.getBondProxy();e.eachResidue((function(e){const t=e.residueType;if(void 0!==t.bonds)return;var a=e.atomOffset,o=[],l=[],c=[],u={};const h=a+e.atomCount;e.eachAtom((function(e){const t=e.index,d=n[t];for(let e=0,n=i[t];e=h)continue;let i=s.atomIndex2;if(i=h)continue;if(t>i){const e=i;i=t,t=e}const n=t+"|"+i;void 0===u[n]&&(u[n]=!0,o.push(t-a),l.push(i-a),c.push(s.bondOrder))}})),t.bonds={atomIndices1:o,atomIndices2:l,bondOrders:c}}))}const Zm=[3,11,19,37,55,87],Qm=[4,12,20,38,56,88],Jm=[6,15,16,34],ep=[1,7,8,9,17,35,53],tp=[2,10,18,36,54,86],ip=[13,30,31,48,49,50,80,81,82,83,84,85,112],np=[5,14,32,33,51,52,85],rp=[9,17,35,53,85];class sp{constructor(e,t,i){this.structure=e,this.atomname=t,i=i||Ym(t),this.element=i,this.number=Hh[i]||0,this.vdw=jh[this.number]||2,this.covalent=Wh[this.number]||1.6}getDefaultValence(){const e=qh[this.number];return e?e[0]:-1}getValenceList(){return qh[this.number]||[]}getOuterShellElectronCount(){return Xh[this.number]||2}isMetal(){return this.isAlkaliMetal()||this.isAlkalineEarthMetal()||this.isLanthanide()||this.isActinide()||this.isTransitionMetal()||this.isPostTransitionMetal()}isNonmetal(){return this.isDiatomicNonmetal()||this.isPolyatomicNonmetal()||this.isNobleGas()}isMetalloid(){return np.includes(this.number)}isHalogen(){return rp.includes(this.number)}isDiatomicNonmetal(){return ep.includes(this.number)}isPolyatomicNonmetal(){return Jm.includes(this.number)}isAlkaliMetal(){return Zm.includes(this.number)}isAlkalineEarthMetal(){return Qm.includes(this.number)}isNobleGas(){return tp.includes(this.number)}isTransitionMetal(){const e=this.number;return e>=21&&e<=29||e>=39&&e<=47||e>=72&&e<=79||e>=104&&e<=108}isPostTransitionMetal(){return ip.includes(this.number)}isLanthanide(){return this.number>=57&&this.number<=71}isActinide(){return this.number>=89&&this.number<=103}}class ap{constructor(e){this.structure=e,this.dict={},this.list=[],this.structure=e}add(e,t){const i=function(e,t){return e+"|"+t}(e=e.toUpperCase(),t=t?t.toUpperCase():Ym(e));let n=this.dict[i];if(void 0===n){const r=new sp(this.structure,e,t);n=this.list.length,this.dict[i]=n,this.list.push(r)}return n}get(e){return this.list[e]}}class op{constructor(e,t,i,n,r,s){this.structure=e,this.bondReferenceAtomIndices=[],this.resname=t,this.atomTypeIdList=i,this.hetero=n?1:0,this.chemCompType=r,this.bonds=s,this.atomCount=i.length,this.moleculeType=this.getMoleculeType(),this.backboneType=this.getBackboneType(0),this.backboneEndType=this.getBackboneType(-1),this.backboneStartType=this.getBackboneType(1),this.backboneIndexList=this.getBackboneIndexList();const a=ld[this.backboneType],o=ld[this.backboneStartType],l=ld[this.backboneEndType],c=this.getAtomIndexByName(a.trace);this.traceAtomIndex=uo(c,-1);const u=this.getAtomIndexByName(a.direction1);this.direction1AtomIndex=uo(u,-1);const h=this.getAtomIndexByName(a.direction2);this.direction2AtomIndex=uo(h,-1);const d=this.getAtomIndexByName(o.backboneStart);this.backboneStartAtomIndex=uo(d,-1);const f=this.getAtomIndexByName(l.backboneEnd);let m;this.backboneEndAtomIndex=uo(f,-1),m=td.includes(t)?this.getAtomIndexByName("N1"):this.getAtomIndexByName("N3"),this.rungEndAtomIndex=uo(m,-1)}getBackboneIndexList(){const e=[];let t;switch(this.moleculeType){case 3:t=ad;break;case 4:case 5:t=od;break;default:return e}const i=this.structure.atomMap,n=this.atomTypeIdList;for(let r=0,s=this.atomCount;r500)e.Debug&&Fl.warn("more than 500 atoms, skip residue for auto-bonding",t.qualifiedName());else if(s>50){const e=new Pm(t,!0),i=t.isCg()?1.2:2.3;for(let t=a;t=0||hp(e,t);this.rings={atomRings:e.atomRings,rings:e.rings}}isAromatic(e){return this.aromaticAtoms=this.getAromatic(e),1===this.aromaticAtoms[e.index-e.residueAtomOffset]}calculateAromatic(e){const t=this.aromaticAtoms=new Uint8Array(this.atomCount),i=this.getRings().rings,n=i.map((t=>function(e){if(e.some((e=>!lp.includes(e.number))))return!1;let t=0;const i=new af(3,e.length),n=i.data;e.forEach((e=>{n[t+0]=e.x,n[t+1]=e.y,n[t+2]=e.z,t+=3}));return new dm(i).vecC.length()this.structure.getAtomProxy(t+e.atomOffset)))))),r=this.aromaticRings=[];i.forEach(((e,i)=>{n[i]&&(r.push(e),e.forEach((e=>t[e]=1)))}))}assignBondReferenceAtomIndices(){const e=this.getBondGraph(),t=this.getRings(),i=t.atomRings,n=t.rings,r=this.bonds,s=r.atomIndices1,a=r.atomIndices2,o=r.bondOrders,l=this.bondReferenceAtomIndices,c=r.atomIndices1.length;l.length=0;for(let t=0;t1)for(let i=0;i1)for(let i=0;i=0;e--)m[p++]=a[e];const g=e.rings.length;for(let t=0;t0?s[l]!==t&&s[t]!==l&&up(e,t,l):(n[l]=1,r[o++]=l,s[l]=t)}}}const dp=4;class fp{constructor(e){this.structure=e,this.dict={},this.list=[]}add(e,t,i,n="",r){const s=function(e,t,i,n=""){return e+"|"+t.join(",")+"|"+(i?1:0)+"|"+n}(e=e.toUpperCase(),t,i,n);let a=this.dict[s];if(void 0===a){const o=new op(this.structure,e,t,i,n,r);a=this.list.length,this.dict[s]=a,this.list.push(o)}return a}get(e){return this.list[e]}}class mp{constructor(e,t=0){this.structure=e,this.index=t,this.bondStore=e.bondStore,this._v12=new _t,this._v13=new _t,this._ap1=this.structure.getAtomProxy(),this._ap2=this.structure.getAtomProxy(),this._ap3=this.structure.getAtomProxy()}get atom1(){return this.structure.getAtomProxy(this.atomIndex1)}get atom2(){return this.structure.getAtomProxy(this.atomIndex2)}get atomIndex1(){return this.bondStore.atomIndex1[this.index]}set atomIndex1(e){this.bondStore.atomIndex1[this.index]=e}get atomIndex2(){return this.bondStore.atomIndex2[this.index]}set atomIndex2(e){this.bondStore.atomIndex2[this.index]=e}get bondOrder(){return this.bondStore.bondOrder[this.index]}set bondOrder(e){this.bondStore.bondOrder[this.index]=e}getOtherAtomIndex(e){return e===this.atomIndex1?this.atomIndex2:this.atomIndex1}getOtherAtom(e){return this.structure.getAtomProxy(this.getOtherAtomIndex(e.index))}getReferenceAtomIndex(){const e=this._ap1,t=this._ap2;if(e.index=this.atomIndex1,t.index=this.atomIndex2,e.residueIndex!==t.residueIndex)return;const i=e.index-e.residueAtomOffset,n=t.index-t.residueAtomOffset,r=e.residueType.getBondReferenceAtomIndex(i,n);if(void 0!==r)return r+e.residueAtomOffset;console.warn("No reference atom found",e.index,t.index)}calculateShiftDir(e=new _t){const t=this._ap1,i=this._ap2,n=this._ap3,r=this._v12,s=this._v13;t.index=this.atomIndex1,i.index=this.atomIndex2;const a=this.getReferenceAtomIndex();r.subVectors(t,i).normalize(),void 0!==a?(n.index=a,s.subVectors(t,n)):s.copy(t),s.normalize();let o=r.dot(s);return 1-Math.abs(o)<1e-5&&(s.set(1,0,0),o=r.dot(s),1-Math.abs(o)<1e-5&&(s.set(0,1,0),o=r.dot(s))),e.copy(s.sub(r.multiplyScalar(o))).normalize()}qualifiedName(){return this.atomIndex1+"="+this.atomIndex2}clone(){return new mp(this.structure,this.index)}toObject(){return{atomIndex1:this.atomIndex1,atomIndex2:this.atomIndex2,bondOrder:this.bondOrder}}}class pp{constructor(e,t=0){this.structure=e,this.index=t,this.chainStore=e.chainStore,this.residueStore=e.residueStore,this.atomStore=e.atomStore,this.residueMap=e.residueMap,this.atomMap=e.atomMap}get entity(){return this.structure.entityList[this.entityIndex]}get entityIndex(){return this.chainStore.entityIndex[this.chainIndex]}get chain(){return this.structure.getChainProxy(this.chainIndex)}get chainIndex(){return this.residueStore.chainIndex[this.index]}set chainIndex(e){this.residueStore.chainIndex[this.index]=e}get atomOffset(){return this.residueStore.atomOffset[this.index]}set atomOffset(e){this.residueStore.atomOffset[this.index]=e}get atomCount(){return this.residueStore.atomCount[this.index]}set atomCount(e){this.residueStore.atomCount[this.index]=e}get atomEnd(){return this.atomOffset+this.atomCount-1}get modelIndex(){return this.chainStore.modelIndex[this.chainIndex]}get chainname(){return this.chainStore.getChainname(this.chainIndex)}get chainid(){return this.chainStore.getChainid(this.chainIndex)}get resno(){return this.residueStore.resno[this.index]}set resno(e){this.residueStore.resno[this.index]=e}get sstruc(){return this.residueStore.getSstruc(this.index)}set sstruc(e){this.residueStore.setSstruc(this.index,e)}get inscode(){return this.residueStore.getInscode(this.index)}set inscode(e){this.residueStore.setInscode(this.index,e)}get residueType(){return this.residueMap.get(this.residueStore.residueTypeId[this.index])}get resname(){return this.residueType.resname}get hetero(){return this.residueType.hetero}get moleculeType(){return this.residueType.moleculeType}get backboneType(){return this.residueType.backboneType}get backboneStartType(){return this.residueType.backboneStartType}get backboneEndType(){return this.residueType.backboneEndType}get traceAtomIndex(){return this.residueType.traceAtomIndex+this.atomOffset}get direction1AtomIndex(){return this.residueType.direction1AtomIndex+this.atomOffset}get direction2AtomIndex(){return this.residueType.direction2AtomIndex+this.atomOffset}get backboneStartAtomIndex(){return this.residueType.backboneStartAtomIndex+this.atomOffset}get backboneEndAtomIndex(){return this.residueType.backboneEndAtomIndex+this.atomOffset}get rungEndAtomIndex(){return this.residueType.rungEndAtomIndex+this.atomOffset}get x(){let e=0;for(let t=this.atomOffset;t<=this.atomEnd;++t)e+=this.atomStore.x[t];return e/this.atomCount}get y(){let e=0;for(let t=this.atomOffset;t<=this.atomEnd;++t)e+=this.atomStore.y[t];return e/this.atomCount}get z(){let e=0;for(let t=this.atomOffset;t<=this.atomEnd;++t)e+=this.atomStore.z[t];return e/this.atomCount}eachAtom(e,t){const i=this.atomCount,n=this.atomOffset,r=this.structure._ap,s=n+i;if(t&&t.atomOnlyTest){const i=t.atomOnlyTest;for(let t=n;t0)return this.entity.isPolymer();{const e=this.residueType.moleculeType;return 3===e||4===e||5===e}}isHetero(){return 1===this.residueType.hetero}isWater(){return 1===this.residueType.moleculeType}isIon(){return 2===this.residueType.moleculeType}isSaccharide(){return 6===this.residueType.moleculeType}isStandardAminoacid(){return this.residueType.isStandardAminoacid()}isStandardBase(){return this.residueType.isStandardBase()}isHelix(){return Vh.includes(this.sstruc)}isSheet(){return $h.includes(this.sstruc)}isTurn(){return Gh.includes(this.sstruc)&&this.isProtein()}getAtomType(e){return this.atomMap.get(this.atomStore.atomTypeId[e])}getResname1(){return Zh[this.resname.toUpperCase()]||"X"}getBackboneType(e){switch(e){case-1:return this.residueType.backboneStartType;case 1:return this.residueType.backboneEndType;default:return this.residueType.backboneType}}getAtomIndexByName(e){let t=this.residueType.getAtomIndexByName(e);return void 0!==t&&(t+=this.atomOffset),t}hasAtomWithName(e){return this.residueType.hasAtomWithName(e)}getAtomnameList(){console.warn("getAtomnameList - might be expensive");const e=this.atomCount,t=this.atomOffset,i=new Array(e);for(let n=0;n=t){const t=uo(e,this.structure.getResidueProxy());if(t.index=i,t.connectedTo(this))return t}else if(i===t-1){const i=this.chainStore.residueCount[this.chainIndex],n=uo(e,this.structure.getResidueProxy());if(n.index=t+i-1,n.connectedTo(this))return n}}getBonds(){return this.residueType.getBonds(this)}getRings(){return this.residueType.getRings()}getAromaticRings(){return this.residueType.getAromaticRings(this)}qualifiedName(e=!1){let t="";return this.resname&&!e&&(t+="["+this.resname+"]"),void 0!==this.resno&&(t+=this.resno),this.inscode&&(t+="^"+this.inscode),this.chain&&(t+=":"+this.chainname),t+="/"+this.modelIndex,t}clone(){return new pp(this.structure,this.index)}toObject(){return{index:this.index,chainIndex:this.chainIndex,atomOffset:this.atomOffset,atomCount:this.atomCount,resno:this.resno,resname:this.resname,sstruc:this.sstruc}}}class gp{constructor(e,t,i){this.structure=e,this.residueIndexStart=t,this.residueIndexEnd=i,this.chainStore=e.chainStore,this.residueStore=e.residueStore,this.atomStore=e.atomStore,this.residueCount=i-t+1;const n=this.structure.getResidueProxy(this.residueIndexStart),r=this.structure.getResidueProxy(this.residueIndexEnd);this.isPrevConnected=void 0!==n.getPreviousConnectedResidue();const s=r.getNextConnectedResidue();this.isNextConnected=void 0!==s,this.isNextNextConnected=void 0!==s&&void 0!==s.getNextConnectedResidue(),this.isCyclic=r.connectedTo(n),this.__residueProxy=this.structure.getResidueProxy()}get chainIndex(){return this.residueStore.chainIndex[this.residueIndexStart]}get modelIndex(){return this.chainStore.modelIndex[this.chainIndex]}get chainname(){return this.chainStore.getChainname(this.chainIndex)}isProtein(){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.isProtein()}isCg(){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.isCg()}isNucleic(){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.isNucleic()}getMoleculeType(){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.moleculeType}getBackboneType(e){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.getBackboneType(e)}getAtomIndexByType(e,t){this.isCyclic?-1===e?e=this.residueCount-1:e===this.residueCount&&(e=0):(-1!==e||this.isPrevConnected||(e+=1),e!==this.residueCount||this.isNextNextConnected||(e-=1));const i=this.__residueProxy;let n;switch(i.index=this.residueIndexStart+e,t){case"trace":n=i.traceAtomIndex;break;case"direction1":n=i.direction1AtomIndex;break;case"direction2":n=i.direction2AtomIndex;break;default:n=i.getAtomIndexByName(t)}return n}eachAtom(e,t){this.eachResidue((function(i){i.eachAtom(e,t)}))}eachAtomN(e,t,i){const n=this.residueCount,r=new Array(e);for(let t=0;t1&&e(new gp(s,i,c.index)),i=n)):(a!==Oh&&c.index-i>1&&e(new gp(s,i,c.index)),i=n)}n-i>1&&this.structure.getResidueProxy(i).backboneEndType&&e(new gp(s,i,n))}qualifiedName(){return":"+this.chainname+"/"+this.modelIndex}clone(){return new _p(this.structure,this.index)}toObject(){return{index:this.index,residueOffset:this.residueOffset,residueCount:this.residueCount,chainname:this.chainname}}}class yp{constructor(e,t=0){this.structure=e,this.index=t,this.modelStore=e.modelStore,this.chainStore=e.chainStore,this.residueStore=e.residueStore}get chainOffset(){return this.modelStore.chainOffset[this.index]}set chainOffset(e){this.modelStore.chainOffset[this.index]=e}get chainCount(){return this.modelStore.chainCount[this.index]}set chainCount(e){this.modelStore.chainCount[this.index]=e}get residueOffset(){return this.chainStore.residueOffset[this.chainOffset]}get atomOffset(){return this.residueStore.atomOffset[this.residueOffset]}get chainEnd(){return this.chainOffset+this.chainCount-1}get residueEnd(){return this.chainStore.residueOffset[this.chainEnd]+this.chainStore.residueCount[this.chainEnd]-1}get atomEnd(){return this.residueStore.atomOffset[this.residueEnd]+this.residueStore.atomCount[this.residueEnd]-1}get residueCount(){return 0===this.chainCount?0:this.residueEnd-this.residueOffset+1}get atomCount(){return 0===this.residueCount?0:this.atomEnd-this.atomOffset+1}eachAtom(e,t){this.eachChain((function(i){i.eachAtom(e,t)}),t)}eachResidue(e,t){this.eachChain((function(i){i.eachResidue(e,t)}),t)}eachPolymer(e,t){if(t&&t.chainOnlyTest){const i=t.chainOnlyTest;this.eachChain((function(n){i(n)&&n.eachPolymer(e,t)}))}else this.eachChain((function(i){i.eachPolymer(e,t)}))}eachChain(e,t){const i=this.chainCount,n=this.chainOffset,r=this.structure._cp,s=n+i;if(t&&t.test){const i=t.chainOnlyTest;if(i)for(let t=n;t{const i=3*t;o.index=e,c&&o.positionToArray(c,i),u&&s.atomColorToArray(o,u,i),h&&(h.array[t]=e),d&&(d[t]=r.atomRadius(o)),f&&(f[t]=e)})),a}getBondData(e){const t=Object.assign({},e);t.colorParams&&(t.colorParams.structure=this.getStructure());const i=t.what,n=uo(t.bondSet,this.bondSet),r=uo(t.multipleBond,"off"),s="off"!==r,a="offset"===r,o=uo(t.bondScale,.4),l=uo(t.bondSpacing,1);let c,u;const h={},d=this.getBondProxy();t.bondStore&&(d.bondStore=t.bondStore);const f=this.getAtomProxy(),m=this.getAtomProxy();let p;if(s){const e=d.bondStore.bondOrder;p=0,n.forEach((function(t){p+=e[t]}))}else p=n.getSize();i&&!i.position||(h.position1=new Float32Array(3*p),h.position2=new Float32Array(3*p)),i&&!i.color||!t.colorParams||(h.color=new Float32Array(3*p),h.color2=new Float32Array(3*p),u=$l.getScheme(t.colorParams)),i&&!i.picking||(h.picking=new Wd(new Float32Array(p),this.getStructure(),t.bondStore)),(!i||i.radius||s&&i.position)&&(c=new cm(t.radiusParams)),i&&!i.radius||(h.radius=new Float32Array(p),t.radius2&&(h.radius2=new Float32Array(p)));const{position1:g,position2:_,color:y,color2:v,picking:b,radius:x,radius2:w}=h;let S,M,A,C,T,P,E=0;const I=new _t,D=new _t,R=new _t;return n.forEach((e=>{if(M=3*E,d.index=e,f.index=d.atomIndex1,m.index=d.atomIndex2,C=d.bondOrder,g)if(s&&C>1){const e=c.atomRadius(f);P=e*o/(.5*C),d.calculateShiftDir(R),a?(T=2*l*e,R.multiplyScalar(T),R.negate(),D.subVectors(m,f).multiplyScalar(Math.max(.1,T/1.88)),f.positionToArray(g,M),m.positionToArray(_,M),C>=2&&(I.addVectors(f,R).add(D).toArray(g,M+3),I.addVectors(m,R).sub(D).toArray(_,M+3),C>=3&&(I.subVectors(f,R).add(D).toArray(g,M+6),I.subVectors(m,R).sub(D).toArray(_,M+6)))):(T=(l-o)*e,R.multiplyScalar(T),2===C?(I.addVectors(f,R).toArray(g,M),I.subVectors(f,R).toArray(g,M+3),I.addVectors(m,R).toArray(_,M),I.subVectors(m,R).toArray(_,M+3)):3===C?(f.positionToArray(g,M),I.addVectors(f,R).toArray(g,M+3),I.subVectors(f,R).toArray(g,M+6),m.positionToArray(_,M),I.addVectors(m,R).toArray(_,M+3),I.subVectors(m,R).toArray(_,M+6)):(f.positionToArray(g,M),m.positionToArray(_,M)))}else f.positionToArray(g,M),m.positionToArray(_,M);if(y&&v&&(u.bondColorToArray(d,1,y,M),u.bondColorToArray(d,0,v,M),s&&C>1))for(S=1;S1))for(S=1;S1))for(P=x[E]*o/(a?1:.5*C),S=a?1:0;S1))for(P=w[E]*o/(a?1:.5*C),S=a?1:0;S{const t=e.x,i=e.y,c=e.z;ta&&(a=t),i>o&&(o=i),c>l&&(l=c)}),t),i.min.set(n,r,s),i.max.set(a,o,l),e.Debug&&Fl.timeEnd("getBoundingBox"),i}getPrincipalAxes(t){e.Debug&&Fl.time("getPrincipalAxes");let i=0;const n=new af(3,this.atomCount),r=n.data;return this.eachAtom((e=>{r[i+0]=e.x,r[i+1]=e.y,r[i+2]=e.z,i+=3}),t),e.Debug&&Fl.timeEnd("getPrincipalAxes"),new dm(n)}atomCenter(e){return e?this.getBoundingBox(e).getCenter(new _t):this.center.clone()}hasCoords(){if(void 0===this._hasCoords){const e=this.atomStore;this._hasCoords=0!==Dc(e.x)||0!==Ic(e.x)||0!==Dc(e.y)||0!==Ic(e.y)||0!==Dc(e.z)||0!==Ic(e.z)||e.count/this.modelStore.count==1}return this._hasCoords}getSequence(e){const t=[],i=this.getResidueProxy();return this.eachAtom((function(e){i.index=e.residueIndex,e.index===i.traceAtomIndex&&t.push(i.getResname1())}),e),t}getAtomIndices(e){if(e&&e.string){const t=[];return this.eachAtom((function(e){t.push(e.index)}),e),new Uint32Array(t)}{const e={what:{index:!0}};return this.getAtomData(e).index}}getChainnameCount(e){const t=new Set;return this.eachChain((function(e){e.residueCount&&t.add(e.chainname)}),e),t.size}updatePosition(e,t=!0){let i=0;this.eachAtom((function(t){t.positionFromArray(e,i),i+=3}),void 0),this._hasCoords=void 0,t&&this.refreshPosition()}refreshPosition(){this.getBoundingBox(void 0,this.boundingBox),this.boundingBox.getCenter(this.center),this.spatialHash=new Ch(this.atomStore,this.boundingBox),this.signals.refreshed.dispatch(this)}dispose(){this.frames&&(this.frames.length=0),this.boxes&&(this.boxes.length=0),this.bondStore.dispose(),this.backboneBondStore.dispose(),this.rungBondStore.dispose(),this.atomStore.dispose(),this.residueStore.dispose(),this.chainStore.dispose(),this.modelStore.dispose(),delete this.bondSet,delete this.atomSet}}const bp=new bt,xp=[vh,ph,bh,yh,xh,gh,mh,_h,Sh,wh,Mh,Ah],wp={aspectRatio:1.5,sphereDetail:2,radialSegments:50,disableImpostor:!1,openEnded:!1,dashedCylinder:!1,labelParams:{},pointSize:2,sizeAttenuation:!1,useTexture:!0,linewidth:2};class Sp{constructor(e="shape",t={}){this.boundingBox=new bt,this.bufferList=[],this.meshCount=0,this._primitiveData={},this.name=e,this.parameters=ho(t,wp),xp.forEach((e=>{Object.keys(e.fields).forEach((t=>{this._primitiveData[e.getShapeKey(t)]=[]})),this._primitiveData[e.getShapeKey("name")]=[]}))}addBuffer(e){this.bufferList.push(e);const t=e.geometry;return t.boundingBox||t.computeBoundingBox(),this.boundingBox.union(t.boundingBox),this}addMesh(e,t,i,n,r){let s;e=Eo(e),t=Eo(t),Array.isArray(i)&&(i=So(i,e.length)),n&&(n=Eo(n)),s=void 0===n||0==n.length?{position:e,color:t,index:i}:{position:e,color:t,index:i,normal:n};const a=new Zd(this,Object.assign({serial:this.meshCount,name:r},s)),o=new Bf(Object.assign({picking:a},s));return this.bufferList.push(o),bp.setFromArray(e),this.boundingBox.union(bp),this.meshCount+=1,this}addSphere(e,t,i,n){return mh.objectToShape(this,{position:e,color:t,radius:i,name:n}),this}addEllipsoid(e,t,i,n,r,s){return xh.objectToShape(this,{position:e,color:t,radius:i,majorAxis:n,minorAxis:r,name:s}),this}addTorus(e,t,i,n,r,s){return wh.objectToShape(this,{position:e,color:t,radius:i,majorAxis:n,minorAxis:r,name:s}),this}addCylinder(e,t,i,n,r){return yh.objectToShape(this,{position1:e,position2:t,color:i,radius:n,name:r}),this}addCone(e,t,i,n,r){return bh.objectToShape(this,{position1:e,position2:t,color:i,radius:n,name:r}),this}addArrow(e,t,i,n,r){return vh.objectToShape(this,{position1:e,position2:t,color:i,radius:n,name:r}),this}addBox(e,t,i,n,r,s){return ph.objectToShape(this,{position:e,color:t,size:i,heightAxis:n,depthAxis:r,name:s}),this}addOctahedron(e,t,i,n,r,s){return gh.objectToShape(this,{position:e,color:t,size:i,heightAxis:n,depthAxis:r,name:s}),this}addTetrahedron(e,t,i,n,r,s){return _h.objectToShape(this,{position:e,color:t,size:i,heightAxis:n,depthAxis:r,name:s}),this}addText(e,t,i,n){return Sh.objectToShape(this,{position:e,color:t,size:i,text:n}),this}addPoint(e,t,i){return Mh.objectToShape(this,{position:e,color:t,name:i}),this}addWideline(e,t,i,n,r){return this.parameters.linewidth=n,Ah.objectToShape(this,{position1:e,position2:t,color:i,name:r}),this}addLabel(e,t,i,n){return console.warn("Shape.addLabel is deprecated, use .addText instead"),this.addText(e,t,i,n)}getBufferList(){const e=[];return xp.forEach((t=>{this._primitiveData[t.getShapeKey("color")].length&&e.push(t.bufferFromShape(this,this.parameters))})),this.bufferList.concat(e)}dispose(){this.bufferList.forEach((function(e){e.dispose()})),this.bufferList.length=0,xp.forEach((e=>{Object.keys(e.fields).forEach((t=>{this._primitiveData[e.getShapeKey(t)].length=0})),this._primitiveData[e.getShapeKey("name")].length=0}))}get center(){return this._center||(this._center=this.boundingBox.getCenter(new _t)),this._center}get type(){return"Shape"}}class Mp extends Nu{constructor(e,t,i){Array.isArray(e)||(e=[e]),super(e,t,i),this.type="buffer",this.parameters=Object.assign({},this.parameters,{colorScheme:null,colorScale:null,colorValue:null,colorDomain:null,colorMode:null}),this.buffer=e,this.init(i)}init(e){super.init(e),this.build()}create(){this.bufferList.push.apply(this.bufferList,this.buffer)}attach(e){this.bufferList.forEach((e=>{this.viewer.add(e),e.setParameters(this.getBufferParams())})),this.setVisibility(this.visible),e()}}const Ap=new qt,Cp=new He;class Tp extends Bf{constructor(e,t={},i){super(function(e,t){const i=t.attributes.position.array,n=t.index?t.index.array:void 0,r=e.position.length/3,s=i.length/3,a=r*s,o=new Float32Array(3*a),l=new Float32Array(3*a),c=new Float32Array(3*a);let u;return n&&(u=So(r*n.length,a)),{position:o,color:c,index:u,normal:l,primitiveId:e.primitiveId||Cc(r,s),picking:e.picking}}(e,i),t),this.updateNormals=!1;const n=i.attributes.position.array,r=i.attributes.normal.array,s=i.index?i.index.array:void 0;this.geoPosition=n,this.geoNormal=r,this.geoIndex=s,this.positionCount=e.position.length/3,this.geoPositionCount=n.length/3,this.transformedGeoPosition=new Float32Array(3*this.geoPositionCount),this.transformedGeoNormal=new Float32Array(3*this.geoPositionCount);const a=this.geometry.attributes;if(this.meshPosition=a.position.array,this.meshColor=a.color.array,this.meshNormal=a.normal.array,this.setAttributes(e),s){const e=this.geometry.getIndex();if(!e)return void Fl.error("Index is null");this.meshIndex=e.array,this.makeIndex()}}setAttributes(e={},t=!1){const i=this.geometry.attributes;let n,r,s,a,o,l,c,u,h;const d=this.updateNormals;e.position&&(n=e.position,s=this.geoPosition,c=this.meshPosition,o=this.transformedGeoPosition,i.position.needsUpdate=!0,(d||t)&&(a=this.geoNormal,h=this.meshNormal,l=this.transformedGeoNormal,i.normal.needsUpdate=!0)),e.color&&(r=e.color,u=this.meshColor,i.color.needsUpdate=!0);const f=this.positionCount,m=this.geoPositionCount;for(let e=0;e 0.0 ){\ncameraPos = rayDirection * posT + rayOrigin;\ninterior = true;\nflag2 = true;\n}\n#else\nif( calcDepth( cameraPos ) <= 0.0 ){\ncameraPos = rayDirection * posT + rayOrigin;\ninterior = true;\n}\n#endif\ncameraNormal = normalize( cameraPos - cameraSpherePos );\ncameraNormal *= float(!interior) * 2.0 - 1.0;\nreturn !interior;\n}\nvoid main(void){\nbool flag = Impostor( cameraPos, cameraNormal );\n#ifdef NEAR_CLIP\nif( calcClip( cameraPos ) > 0.0 )\ndiscard;\n#endif\ngl_FragDepthEXT = calcDepth( cameraPos );\nif( !flag ){\n#ifdef NEAR_CLIP\nif( flag2 ){\ngl_FragDepthEXT = max( 0.0, calcDepth( vec3( - ( clipNear - 0.5 ) ) ) + ( 0.0000001 / vRadius ) );\n}else if( gl_FragDepthEXT >= 0.0 ){\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );\n}\n#else\nif( gl_FragDepthEXT >= 0.0 ){\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );\n}\n#endif\n}\nif (gl_FragDepthEXT < 0.0)\ndiscard;\nif (gl_FragDepthEXT > 1.0)\ndiscard;\n#ifdef PICKING\nif( opacity < 0.3 )\ndiscard;\ngl_FragColor = vec4( vPickingColor, objectId );\n#else\nvec3 vNormal = cameraNormal;\nvec3 vViewPosition = -cameraPos;\nvec4 diffuseColor = vec4( diffuse, opacity );\nReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\nvec3 totalEmissiveLight = emissive;\n#include color_fragment\n#include roughnessmap_fragment\n#include metalnessmap_fragment\n#include normal_fragment_begin\n#include lights_physical_fragment\n#include lights_fragment_begin\n#include lights_fragment_end\nvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveLight;\nif( interior ){\n#ifdef USE_INTERIOR_COLOR\noutgoingLight.xyz = interiorColor;\n#else\n#ifdef DIFFUSE_INTERIOR\noutgoingLight.xyz = vColor;\n#endif\n#endif\noutgoingLight.xyz *= 1.0 - interiorDarkening;\n}\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\n#include premultiplied_alpha_fragment\n#include tonemapping_fragment\n#include colorspace_fragment\n#include fog_fragment\n#endif\n}");class Dp extends Ff{constructor(e,t,i={}){super(t,i),this.index=So(this.indexSize,this.attributeSize),this.makeIndex(),this.initIndex(this.index),this.addAttributes({mapping:{type:e,value:null}}),this.setAttributes({primitiveId:Ac(this.size)})}get attributeSize(){return this.size*this.mappingSize}get indexSize(){return this.size*this.mappingIndicesSize}addAttributes(e){const t={};for(const i in e){const n=e[i];t[i]={type:n.type,value:null}}super.addAttributes(t)}getAttributeIndex(e){return 3*e*this.mappingSize}setAttributes(e){e&&!e.position&&e.position1&&e.position2&&(e.position=xc(e.position1,e.position2));const t=this.size,i=this.mappingSize,n=this.geometry.attributes;let r,s,a,o,l,c,u;for(const h in e)if("index"!==h&&"picking"!==h){s=e[h],r=n[h],a=r.itemSize,o=r.array;for(let e=0;e0&&this.parameters.alphaTest<=1&&(t.USE_ALPHATEST=1),t}setUniforms(e){e&&void 0!==e.edgeBleach&&(this.makeTexture(),e.map=this.tex),super.setUniforms(e)}dispose(){super.dispose(),this.tex&&this.tex.dispose()}}Yl.add("point",Up);class Vp extends Nu{constructor(e,t,i){super(e,t,i),this.type="dot",this.parameters=Object.assign({thresholdType:{type:"select",rebuild:!0,options:{value:"value",sigma:"sigma"}},thresholdMin:{type:"number",precision:3,max:1/0,min:-1/0,rebuild:!0},thresholdMax:{type:"number",precision:3,max:1/0,min:-1/0,rebuild:!0},thresholdOut:{type:"boolean",rebuild:!0},dotType:{type:"select",rebuild:!0,options:{"":"",sphere:"sphere",point:"point"}},radiusType:{type:"select",options:{"":"",value:"value","abs-value":"abs-value","value-min":"value-min",deviation:"deviation",size:"size"}},radius:{type:"number",precision:3,max:10,min:.001,property:"size"},scale:{type:"number",precision:3,max:10,min:.001},sphereDetail:!0,disableImpostor:!0,pointSize:{type:"number",precision:1,max:100,min:0,buffer:!0},sizeAttenuation:{type:"boolean",buffer:!0},sortParticles:{type:"boolean",rebuild:!0},useTexture:{type:"boolean",buffer:!0},alphaTest:{type:"range",step:.001,max:1,min:0,buffer:!0},forceTransparent:{type:"boolean",buffer:!0},edgeBleach:{type:"range",step:.001,max:1,min:0,buffer:!0}},this.parameters,{colorScheme:{type:"select",update:"color",options:{"":"",value:"value",uniform:"uniform",random:"random"}}}),e instanceof Df?(this.surface=void 0,this.volume=new fm(e)):(this.surface=e,this.volume=void 0),this.init(i)}init(e){var t=e||{};t.colorScheme=uo(t.colorScheme,"uniform"),t.colorValue=uo(t.colorValue,14540253),this.thresholdType=uo(t.thresholdType,"sigma"),this.thresholdMin=uo(t.thresholdMin,2),this.thresholdMax=uo(t.thresholdMax,1/0),this.thresholdOut=uo(t.thresholdOut,!1),this.dotType=uo(t.dotType,"point"),this.radius=uo(t.radius,.1),this.scale=uo(t.scale,1),this.pointSize=uo(t.pointSize,1),this.sizeAttenuation=uo(t.sizeAttenuation,!0),this.sortParticles=uo(t.sortParticles,!1),this.useTexture=uo(t.useTexture,!1),this.alphaTest=uo(t.alphaTest,.5),this.forceTransparent=uo(t.forceTransparent,!1),this.edgeBleach=uo(t.edgeBleach,0),super.init(t),this.build()}attach(e){this.bufferList.forEach((e=>{this.viewer.add(e)})),this.setVisibility(this.visible),e()}create(){var e={};if(this.volume){var t,i,n=this.volume;"sigma"===this.thresholdType?(t=n.getValueForSigma(this.thresholdMin),i=n.getValueForSigma(this.thresholdMax)):(t=this.thresholdMin,i=this.thresholdMax),n.setFilter(t,i,this.thresholdOut),Object.assign(e,{position:n.getDataPosition(),color:n.getDataColor(this.getColorParams())}),"sphere"===this.dotType&&Object.assign(e,{radius:n.getDataSize(this.radius,this.scale),picking:n.getDataPicking()})}else{var r=this.surface;Object.assign(e,{position:r.getPosition(),color:r.getColor(this.getColorParams())}),"sphere"===this.dotType&&Object.assign(e,{radius:r.getSize(this.radius,this.scale),picking:r.getPicking()})}"sphere"===this.dotType?this.dotBuffer=new Np(e,this.getBufferParams({sphereDetail:this.sphereDetail,disableImpostor:this.disableImpostor,dullInterior:!1})):this.dotBuffer=new Up(e,this.getBufferParams({pointSize:this.pointSize,sizeAttenuation:this.sizeAttenuation,sortParticles:this.sortParticles,useTexture:this.useTexture,alphaTest:this.alphaTest,forceTransparent:this.forceTransparent,edgeBleach:this.edgeBleach})),this.bufferList.push(this.dotBuffer)}update(e={}){if(0===this.bufferList.length)return;const t={};e.color&&(this.volume?Object.assign(t,{color:this.volume.getDataColor(this.getColorParams())}):Object.assign(t,{color:this.surface.getColor(this.getColorParams())})),"sphere"===this.dotType&&(e.radius||e.scale)&&(this.volume?Object.assign(t,{radius:this.volume.getDataSize(this.radius,this.scale)}):Object.assign(t,{radius:this.surface.getSize(this.radius,this.scale)})),this.dotBuffer.setAttributes(t)}setParameters(e,t={},i){return e&&void 0!==e.thresholdType&&this.volume instanceof Df&&("value"===this.thresholdType&&"sigma"===e.thresholdType?(this.thresholdMin=this.volume.getSigmaForValue(this.thresholdMin),this.thresholdMax=this.volume.getSigmaForValue(this.thresholdMax)):"sigma"===this.thresholdType&&"value"===e.thresholdType&&(this.thresholdMin=this.volume.getValueForSigma(this.thresholdMin),this.thresholdMax=this.volume.getValueForSigma(this.thresholdMax)),this.thresholdType=e.thresholdType),e&&void 0!==e.radiusType&&("radius"===e.radiusType?this.radius=.1:this.radius=parseFloat(e.radiusType),t.radius=!0,"sphere"!==this.dotType||Ol&&!this.disableImpostor||(i=!0)),e&&void 0!==e.radius&&(t.radius=!0,"sphere"!==this.dotType||Ol&&!this.disableImpostor||(i=!0)),e&&void 0!==e.scale&&(t.scale=!0,"sphere"!==this.dotType||Ol&&!this.disableImpostor||(i=!0)),super.setParameters(e,t,i),this}}Wl.add("shader/Image.vert","uniform float clipRadius;\nuniform vec3 clipCenter;\nvarying vec2 vUv;\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\nvarying vec3 vViewPosition;\n#endif\n#if defined( RADIUS_CLIP )\nvarying vec3 vClipCenter;\n#endif\nvoid main() {\n#include begin_vertex\n#include project_vertex\nvUv = uv;\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\nvViewPosition = -mvPosition.xyz;\n#endif\n#if defined( RADIUS_CLIP )\nvClipCenter = -( modelViewMatrix * vec4( clipCenter, 1.0 ) ).xyz;\n#endif\n}"),Wl.add("shader/Image.frag","uniform sampler2D map;\nuniform float opacity;\nuniform vec2 mapSize;\nuniform float clipNear;\nuniform float clipRadius;\nvarying vec2 vUv;\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\nvarying vec3 vViewPosition;\n#endif\n#if defined( RADIUS_CLIP )\nvarying vec3 vClipCenter;\n#endif\n#if defined( PICKING )\nuniform sampler2D pickingMap;\nuniform float objectId;\n#else\n#include fog_pars_fragment\n#endif\n#if defined( CUBIC_INTERPOLATION )\n#if defined( CATMULROM_FILTER ) || defined( MITCHELL_FILTER )\n#if defined( CATMULROM_FILTER )\nconst float B = 0.0;\nconst float C = 0.5;\n#elif defined( MITCHELL_FILTER )\nconst float B = 0.333;\nconst float C = 0.333;\n#endif\nfloat applyFilter( float x ){\nfloat f = x;\nif( f < 0.0 ){\nf = -f;\n}\nif( f < 1.0 ){\nreturn ( ( 12.0 - 9.0 * B - 6.0 * C ) * ( f * f * f ) +\n( -18.0 + 12.0 * B + 6.0 *C ) * ( f * f ) +\n( 6.0 - 2.0 * B ) ) / 6.0;\n}else if( f >= 1.0 && f < 2.0 ){\nreturn ( ( -B - 6.0 * C ) * ( f * f * f )\n+ ( 6.0 * B + 30.0 * C ) * ( f *f ) +\n( - ( 12.0 * B ) - 48.0 * C ) * f +\n8.0 * B + 24.0 * C ) / 6.0;\n}else{\nreturn 0.0;\n}\n}\n#elif defined( BSPLINE_FILTER )\nfloat applyFilter( float x ){\nfloat f = x;\nif( f < 0.0 ){\nf = -f;\n}\nif( f >= 0.0 && f <= 1.0 ){\nreturn ( 2.0 / 3.0 ) + ( 0.5 ) * ( f * f * f ) - ( f * f );\n}else if( f > 1.0 && f <= 2.0 ){\nreturn 1.0 / 6.0 * pow( ( 2.0 - f ), 3.0 );\n}\nreturn 1.0;\n}\n#else\nfloat applyFilter( float x ){\nreturn 1.0;\n}\n#endif\nvec4 biCubic( sampler2D tex, vec2 texCoord ){\nvec2 texelSize = 1.0 / mapSize;\ntexCoord -= texelSize / 2.0;\nvec4 nSum = vec4( 0.0 );\nfloat nDenom = 0.0;\nvec2 cell = fract( texCoord * mapSize );\nfor( float m = -1.0; m <= 2.0; ++m ){\nfor( float n = -1.0; n <= 2.0; ++n ){\nvec4 vecData = texture2D(\ntex, texCoord + texelSize * vec2( m, n )\n);\nfloat c = applyFilter( m - cell.x ) * applyFilter( -n + cell.y );\nnSum += vecData * c;\nnDenom += c;\n}\n}\nreturn nSum / nDenom;\n}\n#endif\nvoid main(){\n#include nearclip_fragment\n#include radiusclip_fragment\n#if defined( CUBIC_INTERPOLATION )\ngl_FragColor = biCubic( map, vUv );\n#else\ngl_FragColor = texture2D( map, vUv );\n#endif\n#if defined( PICKING )\nif( gl_FragColor.a < 0.3 )\ndiscard;\ngl_FragColor = vec4( texture2D( pickingMap, vUv ).xyz, objectId );\n#else\nif( gl_FragColor.a < 0.01 )\ndiscard;\ngl_FragColor.a *= opacity;\n#include fog_fragment\n#endif\n}");const $p=new Uint16Array([0,1,2,1,3,2]),Gp=new Float32Array([0,1,0,0,1,1,1,0]),Hp=Object.assign({filter:"nearest",forceTransparent:!0},Of),jp=Object.assign({filter:{updateShader:!0,uniform:!0}},Nf);class Wp extends Ff{constructor(e,t){super({position:e.position,index:$p,picking:e.picking},t),this.parameterTypes=jp,this.alwaysTransparent=!0,this.hasWireframe=!1,this.vertexShader="Image.vert",this.fragmentShader="Image.frag";const{imageData:i,width:n,height:r}=e,s=new Ma(i,n,r);s.flipY=!0,this.tex=s;const a=i.length,o=new Uint8Array(a);for(let e=0;e>16&255,o[e+1]=t>>8&255,o[e+2]=255&t}const l=new Ma(o,n,r);l.flipY=!0,l.minFilter=U,l.magFilter=U,this.pickingTex=l,this.addUniforms({map:{value:s},pickingMap:{value:l},mapSize:{value:new Ge(n,r)}}),this.geometry.setAttribute("uv",new $i(Gp,2))}get defaultParameters(){return Hp}getDefines(e){const t=super.getDefines(e),i=this.parameters.filter;return i.startsWith("cubic")&&(t.CUBIC_INTERPOLATION=1,i.endsWith("bspline")?t.BSPLINE_FILTER=1:i.endsWith("catmulrom")?t.CATMULROM_FILTER=1:i.endsWith("mitchell")&&(t.MITCHELL_FILTER=1)),t}updateTexture(){const e=this.tex,t=this.parameters.filter;t.startsWith("cubic")?(e.minFilter=U,e.magFilter=U):"linear"===t?(e.minFilter=G,e.magFilter=G):(e.minFilter=U,e.magFilter=U),e.needsUpdate=!0,this.pickingTex.needsUpdate=!0}makeMaterial(){super.makeMaterial(),this.updateTexture();const e=this.material;e.uniforms.map.value=this.tex,e.blending=1,e.needsUpdate=!0;const t=this.wireframeMaterial;t.uniforms.map.value=this.tex,t.blending=1,t.needsUpdate=!0;const i=this.pickingMaterial;i.uniforms.map.value=this.tex,i.uniforms.pickingMap.value=this.pickingTex,i.blending=1,i.needsUpdate=!0}setUniforms(e){e&&void 0!==e.filter&&(this.updateTexture(),e.map=this.tex),super.setUniforms(e)}}class qp{constructor(e,t){const i=t||{};this.dimension=uo(i.dimension,"x"),this.positionType=uo(i.positionType,"percent"),this.position=uo(i.position,30),this.thresholdType=uo(i.thresholdType,"sigma"),this.thresholdMin=uo(i.thresholdMin,-1/0),this.thresholdMax=uo(i.thresholdMax,1/0),this.normalize=uo(i.normalize,!1),this.volume=e}getPositionFromCoordinate(e){const t=this.dimension,i=this.volume,n=i.matrix,r=(new _t).setFromMatrixPosition(n)[t],s=(new _t).setFromMatrixScale(n)[t];let a;return a="x"===t?i.nx:"y"===t?i.ny:i.nz,Math.round(((e-r)/(a/100)+1)/s)}getData(e){e=e||{};const t=this.volume,i=t.data,n=t.matrix;let r;function s(e){return Math.round(e/100*(r-1))}function a(e,i,n,r){return 3*(n*t.ny*t.nx+i*t.nx+e)+r}r="coordinate"===this.positionType?this.getPositionFromCoordinate(this.position):this.position;const o=new Float32Array(12),l=new _t;let c,u,h,d,f,m=0,p=0,g=0,_=t.nx,y=t.ny,v=t.nz;function b(e,t,i,r){l.set(e,t,i).applyMatrix4(n).toArray(o,r)}"x"===this.dimension?(h=s(t.nx),d=t.ny-1,f=t.nz-1,c=t.nz,u=t.ny,m=h,_=m+1,b(h,0,0,0),b(h,d,0,3),b(h,0,f,6),b(h,d,f,9)):"y"===this.dimension?(h=t.nx-1,d=s(t.ny),f=t.nz-1,c=t.nz,u=t.nx,p=d,y=p+1,b(0,d,0,0),b(h,d,0,3),b(0,d,f,6),b(h,d,f,9)):"z"===this.dimension&&(h=t.nx-1,d=t.ny-1,f=s(t.nz),c=t.nx,u=t.ny,g=f,v=g+1,b(0,0,f,0),b(0,d,f,3),b(h,0,f,6),b(h,d,f,9));let x=0,w=0;const S=new Uint8Array(c*u*4),M=new Float32Array(c*u);let A,C;"sigma"===this.thresholdType?(A=t.getValueForSigma(this.thresholdMin),C=t.getValueForSigma(this.thresholdMax)):(A=this.thresholdMin,C=this.thresholdMax);const T=Object.assign({},e.colorParams,{volume:t});this.normalize&&(T.domain=[0,1]);const P=$l.getScheme(T),E=new Float32Array(3),I=P.getScale();let D,R=0,L=0;if(this.normalize){R=1/0,D=-1/0;for(let e=p;eD&&(D=r)}L=D-R}for(let e=p;eA&&s{this.viewer.add(e)})),this.setVisibility(this.visible),e()}create(){const e=new qp(this.volume,{positionType:this.positionType,position:this.position,dimension:this.dimension,thresholdType:this.thresholdType,thresholdMin:this.thresholdMin,thresholdMax:this.thresholdMax,normalize:this.normalize}),t=new Wp(e.getData({colorParams:this.getColorParams()}),this.getBufferParams({filter:this.filter}));this.bufferList.push(t)}}function Yp(e){Fl.error(`makeRepresentation: representation type ${e} unknown`)}const Kp={name:"some element",status:""};class Zp{constructor(e,t={}){this.stage=e,this.signals={statusChanged:new Yo.Signal,nameChanged:new Yo.Signal,disposed:new Yo.Signal},this.parameters=ho(t,this.defaultParameters),this.uuid=Oo()}get defaultParameters(){return Kp}get name(){return this.parameters.name}setStatus(e){return this.parameters.status=e,this.signals.statusChanged.dispatch(e),this}setName(e){return this.parameters.name=e,this.signals.nameChanged.dispatch(e),this}dispose(){this.signals.disposed.dispatch()}}const Qp=Object.assign({visible:!0},Kp);class Jp extends Zp{constructor(e,t,i={},n){super(e,Object.assign({name:t.type},i)),this.parent=n,this.signals=Object.assign({visibilityChanged:new Yo.Signal,parametersChanged:new Yo.Signal},this.signals),this.setRepresentation(t)}get defaultParameters(){return Qp}get visible(){return this.parameters.visible}get type(){return"representation"}getType(){return this.repr.type}setRepresentation(e){this._disposeRepresentation(),this.repr=e,this.stage.tasks.listen(this.repr.tasks),this.updateVisibility()}_disposeRepresentation(){this.repr&&(this.stage.tasks.unlisten(this.repr.tasks),this.repr.dispose())}dispose(){this.parent&&this.parent.hasRepresentation(this)?this.parent.removeRepresentation(this):(this._disposeRepresentation(),this.signals.disposed.dispatch())}setVisibility(e){return this.parameters.visible=e,this.updateVisibility(),this.signals.visibilityChanged.dispatch(this.parameters.visible),this}getVisibility(){return this.parent?this.parent.parameters.visible&&this.parameters.visible:this.parameters.visible}toggleVisibility(){return this.setVisibility(!this.parameters.visible)}updateVisibility(){this.repr.setVisibility(this.getVisibility())}update(e){return this.repr.update(e),this}build(e){return this.repr.build(e),this}setSelection(e){const t=this.repr;return t.setSelection&&t.setSelection(e),this}setParameters(e){return this.repr.setParameters(e),this.signals.parametersChanged.dispatch(this.repr.getParameters()),this}getParameters(){return this.repr.getParameters()}setColor(e){return this.repr.setColor(e),this}}const eg=new qt,tg=new _t,ig={name:"",status:"",visible:!0};class ng{constructor(e,t,i={}){this.stage=e,this.object=t,this.signals={representationAdded:new Yo.Signal,representationRemoved:new Yo.Signal,visibilityChanged:new Yo.Signal,matrixChanged:new Yo.Signal,statusChanged:new Yo.Signal,nameChanged:new Yo.Signal,disposed:new Yo.Signal},this.reprList=[],this.annotationList=[],this.matrix=new qt,this.position=new _t,this.quaternion=new gt,this.scale=new _t(1,1,1),this.transform=new qt,this.parameters=ho(i,this.defaultParameters),this.uuid=Oo(),this.viewer=e.viewer,this.controls=new om(this)}get defaultParameters(){return ig}get name(){return this.parameters.name}get status(){return this.parameters.status}get visible(){return this.parameters.visible}setPosition(e){return Array.isArray(e)?this.position.fromArray(e):this.position.copy(e),this.updateMatrix(),this}setRotation(e){if(Array.isArray(e))if(3===e.length){const t=(new ni).fromArray(e);this.quaternion.setFromEuler(t)}else this.quaternion.fromArray(e);else e instanceof ni?this.quaternion.setFromEuler(e):this.quaternion.copy(e);return this.updateMatrix(),this}setScale(e){return this.scale.set(e,e,e),this.updateMatrix(),this}setTransform(e){return this.transform.copy(e),this.updateMatrix(),this}updateMatrix(){const e=this.getCenterUntransformed(tg);this.matrix.makeTranslation(-e.x,-e.y,-e.z),eg.makeRotationFromQuaternion(this.quaternion),this.matrix.premultiply(eg),eg.makeScale(this.scale.x,this.scale.y,this.scale.z),this.matrix.premultiply(eg);const t=this.position;eg.makeTranslation(t.x+e.x,t.y+e.y,t.z+e.z),this.matrix.premultiply(eg),this.matrix.premultiply(this.transform),this.updateRepresentationMatrices(),this.stage.viewer.updateBoundingBox(),this.signals.matrixChanged.dispatch(this.matrix)}updateRepresentationMatrices(){this.reprList.forEach((e=>{e.setParameters({matrix:this.matrix})}))}addAnnotation(e,t,i){const n=new nm(this,e,t,i);return this.annotationList.push(n),n}eachAnnotation(e){this.annotationList.slice().forEach(e)}removeAnnotation(e){const t=this.annotationList.indexOf(e);-1!==t&&(this.annotationList.splice(t,1),e.dispose())}removeAllAnnotations(){this.eachAnnotation((e=>e.dispose())),this.annotationList.length=0}_addRepresentation(t,i,n,r=!1){const s=n||{},a=this.stage.getParameters();s.matrix=this.matrix.clone(),s.quality=s.quality||a.quality,s.disableImpostor=uo(s.disableImpostor,!a.impostor),s.useWorker=uo(s.useWorker,a.workerDefault),s.visible=uo(s.visible,!0);const o=Object.assign({},s,{visible:this.parameters.visible&&s.visible}),l=function(t,i,n,r){var s;if(e.Debug&&Fl.time("makeRepresentation "+t),i instanceof vp){if(!(s=Hl.get(t)))return void Yp(t)}else if(i instanceof Ef)if("surface"===t)s=Hf;else{if("dot"!==t)return void Yp(t);s=Vp}else if(i instanceof Df)if("surface"===t)s=Hf;else if("dot"===t)s=Vp;else{if("slice"!==t)return void Yp(t);s=Xp}else if(i instanceof Sp)s=Mp,i=i.getBufferList();else{if("buffer"!==t)return void Fl.error("makeRepresentation: object "+i+" unknown");s=Mp}const a=new s(i,n,r);return e.Debug&&Fl.timeEnd("makeRepresentation "+t),a}(t,i,this.viewer,o),c=new Jp(this.stage,l,s,this);return r||(this.reprList.push(c),this.signals.representationAdded.dispatch(c)),c}addBufferRepresentation(e,t){return this._addRepresentation.call(this,"buffer",e,t)}hasRepresentation(e){return-1!==this.reprList.indexOf(e)}eachRepresentation(e){this.reprList.slice().forEach(e)}removeRepresentation(e){const t=this.reprList.indexOf(e);-1!==t&&(this.reprList.splice(t,1),e.dispose(),this.signals.representationRemoved.dispatch(e))}updateRepresentations(e){this.reprList.forEach((t=>t.update(e))),this.stage.viewer.requestRender()}removeAllRepresentations(){this.eachRepresentation((e=>e.dispose()))}dispose(){this.removeAllAnnotations(),this.removeAllRepresentations(),this.reprList.length=0,this.signals.disposed.dispatch()}setVisibility(e){return this.parameters.visible=e,this.eachRepresentation((e=>e.updateVisibility())),this.eachAnnotation((e=>e.updateVisibility())),this.signals.visibilityChanged.dispatch(e),this}setStatus(e){return this.parameters.status=e,this.signals.statusChanged.dispatch(e),this}setName(e){return this.parameters.name=e,this.signals.nameChanged.dispatch(e),this}getBox(...e){return this.getBoxUntransformed(...e).clone().applyMatrix4(this.matrix)}getCenter(...e){return this.getCenterUntransformed(...e).clone().applyMatrix4(this.matrix)}getZoom(...e){return this.stage.getZoomForBox(this.getBox(...e))}getBoxUntransformed(...e){return new bt}getCenterUntransformed(...e){return this.getBoxUntransformed().getCenter(new _t)}autoView(e){this.stage.animationControls.zoomMove(this.getCenter(),this.getZoom(),uo(e,0))}}class rg{constructor(e=[]){this.list=e;const t=e.length;for(let i=0;i0?this.list[0]:void 0}forEach(e){return this.list.forEach(e),this}dispose(){return this.forEach((e=>e.dispose()))}}class sg extends rg{setParameters(e){return this.forEach((t=>t.setParameters(e)))}setVisibility(e){return this.forEach((t=>t.setVisibility(e)))}setSelection(e){return this.forEach((t=>t.setSelection(e)))}setColor(e){return this.forEach((t=>t.setColor(e)))}update(e){return this.forEach((t=>t.update(e)))}build(e){return this.forEach((t=>t.build(e)))}dispose(e){return this.forEach((e=>e.dispose()))}}const ag=Object.assign({defaultStep:1,defaultTimeout:50,defaultInterpolateType:"",defaultInterpolateStep:5,defaultMode:"loop",defaultDirection:"forward",initialFrame:0},Kp);class og extends Zp{constructor(e,t,i={}){super(e,Object.assign({name:t.name},i)),this.trajectory=t,this.signals=Object.assign(this.signals,{frameChanged:new Yo.Signal,playerChanged:new Yo.Signal,countChanged:new Yo.Signal,parametersChanged:new Yo.Signal}),t.signals.frameChanged.add((e=>{this.signals.frameChanged.dispatch(e)})),t.signals.playerChanged.add((e=>{this.signals.playerChanged.dispatch(e)})),t.signals.countChanged.add((e=>{this.signals.countChanged.dispatch(e)})),void 0!==i.initialFrame&&this.setFrame(i.initialFrame)}get defaultParameters(){return ag}get type(){return"trajectory"}setFrame(e){this.trajectory.setFrame(e)}setParameters(e={}){this.trajectory.setParameters(e),this.signals.parametersChanged.dispatch(e)}dispose(){this.trajectory.dispose(),super.dispose()}}class lg{constructor(e,t){this.name=e,this.path=t,this.coordinates=[],this.boxes=[],this.times=[],this.timeOffset=0,this.deltaTime=1}get type(){return"Frames"}}class cg{constructor(e,t){let i,n;if(this.A=new af(3,3),this.W=new af(1,3),this.U=new af(3,3),this.V=new af(3,3),this.VH=new af(3,3),this.R=new af(3,3),this.tmp=new af(3,3),this.c=new af(3,3),e instanceof vp)i=e.atomCount;else{if(!(e instanceof Float32Array))return;i=e.length/3}if(t instanceof vp)n=t.atomCount;else{if(!(t instanceof Float32Array))return;n=t.length/3}const r=Math.min(i,n),s=new af(3,r),a=new af(3,r);this.coords1t=new af(r,3),this.coords2t=new af(r,3),this.transformationMatrix=new qt,this.c.data.set([1,0,0,0,1,0,0,0,-1]),this.prepCoords(e,s,r,!1),this.prepCoords(t,a,r,!1),this._superpose(s,a)}_superpose(t,i){this.mean1=uf(t),this.mean2=uf(i),hf(t,this.mean1),hf(i,this.mean2),of(this.coords1t,t),of(this.coords2t,i),lf(this.A,this.coords2t,this.coords1t),gf(this.A,this.W,this.U,this.V),function(e,t){const i=e.data,n=t.data,r=i[4],s=i[8],a=i[5],o=i[7],l=i[0],c=l*r,u=l*a,h=i[3],d=i[1],f=h*d,m=i[2],p=h*m,g=i[6],_=g*d,y=g*m,v=1/(c*s-u*o-f*s+p*o+_*a-y*r);n[0]=(r*s-a*o)*v,n[1]=-(d*s-m*o)*v,n[2]=-(-d*a+m*r)*v,n[3]=-(h*s-a*g)*v,n[4]=(l*s-y)*v,n[5]=-(u-p)*v,n[6]=-(-h*o+r*g)*v,n[7]=-(l*o-_)*v,n[8]=(c-f)*v}(this.V,this.VH),cf(this.R,this.U,this.VH),function(e){const t=e.data;return t[0]*t[4]*t[8]-t[0]*t[5]*t[7]-t[3]*t[1]*t[8]+t[3]*t[2]*t[7]+t[6]*t[1]*t[5]-t[6]*t[2]*t[4]}(this.R)<0&&(e.Debug&&Fl.log("R not a right handed system"),cf(this.tmp,this.c,this.VH),cf(this.R,this.U,this.tmp));const n=new af(4,4),r=new af(4,4),s=new af(4,4),a=new af(4,4),o=new af(4,4),l=new af(4,4),c=this.R.data,u=this.mean1,h=this.mean2;a.data.set([1,0,0,-u[0],0,1,0,-u[1],0,0,1,-u[2],0,0,0,1]),o.data.set([c[0],c[1],c[2],0,c[3],c[4],c[5],0,c[6],c[7],c[8],0,0,0,0,1]),l.data.set([1,0,0,h[0],0,1,0,h[1],0,0,1,h[2],0,0,0,1]),of(r,a),lf(n,o,r),of(s,n),lf(r,l,s),of(n,r),this.transformationMatrix.elements=n.data}prepCoords(e,t,i,n){let r=0;const s=t.data;let a=3,o=3*i;if(n&&(o=4*i,a=4),e instanceof vp)e.eachAtom((function(e){r{e!==this&&this.pause()}),this);const i=uo(e.frameCount,1);this.traj=e,this.parameters=ho(t,ug),this.parameters.end=Math.min(uo(t.end,i-1),i-1),this.parameters.step=uo(t.step,Math.ceil((i+1)/100)),this._currentFrame=this.parameters.start,this._direction="bounce"===this.parameters.direction?"forward":this.parameters.direction,e.signals.countChanged.add((e=>{this.parameters.end=Math.min(uo(this.parameters.end,e-1),e-1)}),this),this._animate=this._animate.bind(this)}get isRunning(){return this._run}setParameters(e={}){fo(this.parameters,e),void 0!==e.direction&&"bounce"!==this.parameters.direction&&(this._direction=this.parameters.direction)}_animate(){if(!this._run)return;this._currentTime=window.performance.now();const e=this._currentTime-this._previousTime,t=this.parameters.interpolateType?this.parameters.interpolateStep:1,i=this.parameters.timeout/t,n=this.traj;if(n&&n.frameCount&&!n.inProgress&&e>=i)if(this.parameters.interpolateType)if(this._currentStep>this.parameters.interpolateStep&&(this._currentStep=1),1===this._currentStep&&(this._currentFrame=this._nextInterpolated()),n.hasFrame(this._currentFrame)){this._currentStep+=1;const e=this._currentStep/(this.parameters.interpolateStep+1),[t,i,r,s]=this._currentFrame;n.setFrameInterpolated(t,i,r,s,e,this.parameters.interpolateType),this._previousTime=this._currentTime}else n.loadFrame(this._currentFrame);else{const e=this._next();n.hasFrame(e)?(n.setFrame(e),this._previousTime=this._currentTime):n.loadFrame(e)}window.requestAnimationFrame(this._animate)}_next(){const e=this.parameters;let t;return t="forward"===this._direction?this.traj.currentFrame+e.step:this.traj.currentFrame-e.step,(t>e.end||t=e.end?i=e.start:"backward"===e.direction&&t<=e.start&&(i=e.end),this.traj.setFrame(i),this._run=!0,this._animate(),this.signals.startedRunning.dispatch()}}pause(){this._run=!1,this.signals.haltedRunning.dispatch()}stop(){this.pause(),this.traj.setFrame(this.parameters.start)}}class dg{constructor(e,t,i={}){this.signals={countChanged:new Yo.Signal,frameChanged:new Yo.Signal,playerChanged:new Yo.Signal},this.frameCache={},this.loadQueue={},this.boxCache={},this.pathCache={},this.frameCacheSize=0,this._frameCount=0,this._currentFrame=-1,this._disposed=!1,this.deltaTime=uo(i.deltaTime,0),this.timeOffset=uo(i.timeOffset,0),this.centerPbc=uo(i.centerPbc,!1),this.removePbc=uo(i.removePbc,!1),this.removePeriodicity=uo(i.removePeriodicity,!1),this.superpose=uo(i.superpose,!1),this.name=e.replace(/^.*[\\/]/,""),this.trajPath=e,this.selection=new wl(uo(i.sele,"backbone and not hydrogen")),this.selection.signals.stringChanged.add((()=>{this.selectionIndices=this.structure.getAtomIndices(this.selection),this._resetCache(),this._saveInitialCoords(),this.setFrame(this._currentFrame)}))}get frameCount(){return this._frameCount}get currentFrame(){return this._currentFrame}_init(e){this.setStructure(e),this._loadFrameCount(),this.setPlayer(new hg(this))}_loadFrameCount(){}setStructure(e){this.structure=e,this.atomCount=e.atomCount,this.backboneIndices=this._getIndices(new wl("backbone and not hydrogen")),this._makeAtomIndices(),this._saveStructureCoords(),this.selectionIndices=this._getIndices(this.selection),this._resetCache(),this._saveInitialCoords(),this.setFrame(this._currentFrame)}_saveInitialCoords(){this.structure.hasCoords()?(this.initialCoords=new Float32Array(this.structureCoords),this._makeSuperposeCoords()):this.frameCache[0]?(this.initialCoords=new Float32Array(this.frameCache[0]),this._makeSuperposeCoords()):this.loadFrame(0,(()=>this._saveInitialCoords()))}_saveStructureCoords(){this.structureCoords=this.structure.getAtomData({what:{position:!0}}).position}setSelection(e){return this.selection.setString(e),this}_getIndices(e){let t=0;const i=e.test,n=[];return i&&this.structure.eachAtom((e=>{i(e)&&n.push(t),t+=1})),n}_makeSuperposeCoords(){const e=3*this.selectionIndices.length;this.coords1=new Float32Array(e),this.coords2=new Float32Array(e);const t=this.initialCoords,i=this.coords2;for(let n=0;n!!this.frameCache[e])):!!this.frameCache[e]}setFrame(e,t){return void 0===e||(this.inProgress=!0,-1===e||this.frameCache[e]?(this._updateStructure(e),t&&t()):this.loadFrame(e,(()=>{this._updateStructure(e),t&&t()}))),this}_interpolate(e,t,i,n,r,s){const a=this.frameCache;let o;o="spline"===s?function(e,t,i,n,r){const s=e.length,a=new Float32Array(s);for(let o=0;o{this._interpolate(e,t,i,n,r,s),a&&a()})):(this._interpolate(e,t,i,n,r,s),a&&a()),this}loadFrame(e,t){Array.isArray(e)?e.forEach((e=>{this.loadQueue[e]||this.frameCache[e]||(this.loadQueue[e]=!0,this._loadFrame(e,(()=>{delete this.loadQueue[e]})))})):this.loadQueue[e]||this.frameCache[e]||(this.loadQueue[e]=!0,this._loadFrame(e,(()=>{delete this.loadQueue[e],t&&t()})))}_loadFrame(e,t){Fl.error("Trajectory._loadFrame not implemented",e,t)}_updateStructure(e){this._disposed?console.error("updateStructure: traj disposed"):(-1===e?this.structureCoords&&this.structure.updatePosition(this.structureCoords):this.structure.updatePosition(this.frameCache[e]),this.structure.trajectory={name:this.trajPath,frame:e},this._currentFrame=e,this.inProgress=!1,this.signals.frameChanged.dispatch(e))}_doSuperpose(e){const t=3*this.selectionIndices.length,i=this.coords1,n=this.coords2;for(let n=0;n0&&this.centerPbc){const e=[t[0],t[4],t[8]],n=function(e,t,i){return[bc(t,i[0],3,0,e),bc(t,i[1],3,1,e),bc(t,i[2],3,2,e)]}(this.backboneIndices,i,e);!function(e,t,i){if(0===i[0]||0===i[8]||0===i[4])return;const n=e.length,r=i[0],s=i[1],a=i[2],o=-t[0]+r+r/2,l=-t[1]+s+s/2,c=-t[2]+a+a/2;for(let t=0;t.5&&(e[r+n]-=t[3*n+n]*Math.round(s))}}(i,t,e)}this.removePbc&&function(e,t){if(0===t[0]||0===t[8]||0===t[4])return;const i=e.length;for(let n=3;n.9*t[3*i+i])if(r>0)for(let r=0;r<3;++r)e[n+r]-=t[3*i+r];else for(let r=0;r<3;++r)e[n+r]+=t[3*i+r]}}(i,t)}this.selectionIndices.length>0&&this.coords1&&this.superpose&&this._doSuperpose(i),this.frameCache[e]=i,this.boxCache[e]=t,this.frameCacheSize+=1}_setFrameCount(e){e!==this._frameCount&&(this._frameCount=e,this.signals.countChanged.dispatch(e))}dispose(){this._resetCache(),this._disposed=!0,this.player&&this.player.stop()}setPlayer(e){this.player=e,this.signals.playerChanged.dispatch(e)}getFrameTime(e){return this.timeOffset+e*this.deltaTime}}class fg extends dg{constructor(e,t,i){const n=i||{};n.timeOffset=uo(n.timeOffset,e.timeOffset),n.deltaTime=uo(n.deltaTime,e.deltaTime),super("",t,n),this.name=e.name,this.path=e.path,this.frames=e.coordinates,this.boxes=e.boxes,this._init(t)}get type(){return"frames"}_makeAtomIndices(){"StructureView"===this.structure.type?this.atomIndices=this.structure.getAtomIndices():this.atomIndices=void 0}_loadFrame(e,t){let i;const n=this.frames[e];if(this.atomIndices){const e=this.atomIndices,t=e.length;i=new Float32Array(3*t);for(let r=0;r{const e=n.response;if(!e)return void Fl.error(`empty arrayBuffer for '${r}'`);const s=new Int32Array(e,0,1)[0],a=new Float32Array(e,8,9),o=new Float32Array(e,44);this._process(t,a,o,s),"function"==typeof i&&i()}),!1),n.send(s)}_loadFrameCount(){const t=new XMLHttpRequest,i=e.TrajectoryDatasource.getCountUrl(this.trajPath);t.open("GET",i,!0),t.addEventListener("load",(()=>{this._setFrameCount(parseInt(t.response))}),!1),t.send()}}class gg extends dg{constructor(e,t,i){super("",t,i),this.requestCallback=e,this._init(t)}get type(){return"callback"}_makeAtomIndices(){const e=[];if("StructureView"===this.structure.type){const t=this.structure.getAtomIndices(),i=t.length;let n=t[0],r=t[0];for(let s=1;s{this._process(e,i,n,r),"function"==typeof t&&t()}),e,this.atomIndices)}_loadFrameCount(){this.requestCallback((e=>this._setFrameCount(e)))}}vp.prototype.getView=function(e){return new _g(this,e)};class _g extends vp{constructor(e,t){super(),this.structure=e,this.selection=t,this.center=new _t,this.boundingBox=new bt,this._bp=this.getBondProxy(),this._ap=this.getAtomProxy(),this._rp=this.getResidueProxy(),this._cp=this.getChainProxy(),this.selection&&this.selection.signals.stringChanged.add(this.refresh,this),this.structure.signals.refreshed.add(this.refresh,this),this.refresh()}init(){}get type(){return"StructureView"}get name(){return this.structure.name}get path(){return this.structure.path}get title(){return this.structure.title}get id(){return this.structure.id}get data(){return this.structure.data}get atomSetDict(){return this.structure.atomSetDict}get biomolDict(){return this.structure.biomolDict}get entityList(){return this.structure.entityList}get unitcell(){return this.structure.unitcell}get frames(){return this.structure.frames}get boxes(){return this.structure.boxes}get validation(){return this.structure.validation}get bondStore(){return this.structure.bondStore}get backboneBondStore(){return this.structure.backboneBondStore}get rungBondStore(){return this.structure.rungBondStore}get atomStore(){return this.structure.atomStore}get residueStore(){return this.structure.residueStore}get chainStore(){return this.structure.chainStore}get modelStore(){return this.structure.modelStore}get atomMap(){return this.structure.atomMap}get residueMap(){return this.structure.residueMap}get bondHash(){return this.structure.bondHash}get spatialHash(){return this.structure.spatialHash}get _hasCoords(){return this.structure._hasCoords}set _hasCoords(e){this.structure._hasCoords=e}refresh(){e.Debug&&Fl.time("StructureView.refresh"),this.atomSetCache={};const t=this.structure;if(this.selection.isAllSelection()&&t!==this&&t.atomSet&&t.bondSet){this.atomSet=t.atomSet.clone(),this.bondSet=t.bondSet.clone();for(let e in this.atomSetDict){const t=this.atomSetDict[e];this.atomSetCache["__"+e]=t.clone()}this.atomCount=t.atomCount,this.bondCount=t.bondCount,this.boundingBox.copy(t.boundingBox),this.center.copy(t.center)}else if(this.selection.isNoneSelection()&&t!==this&&t.atomSet&&t.bondSet){this.atomSet=new Ih(t.atomCount),this.bondSet=new Ih(t.bondCount);for(let e in this.atomSetDict)this.atomSetCache["__"+e]=new Ih(t.atomCount);this.atomCount=0,this.bondCount=0,this.boundingBox.makeEmpty(),this.center.set(0,0,0)}else{this.atomSet=this.getAtomSet(this.selection,!0),t.atomSet&&(this.atomSet=this.atomSet.intersection(t.atomSet)),this.bondSet=this.getBondSet();for(let e in this.atomSetDict){const t=this.atomSetDict[e];this.atomSetCache["__"+e]=t.makeIntersection(this.atomSet)}this.atomCount=this.atomSet.getSize(),this.bondCount=this.bondSet.getSize(),this.boundingBox=this.getBoundingBox(),this.center=this.boundingBox.getCenter(new _t)}e.Debug&&Fl.timeEnd("StructureView.refresh"),this.signals.refreshed.dispatch()}setSelection(e){this.selection=e,this.refresh()}getSelection(e){const t=[];e&&e.string&&t.push(e.string);const i=this.structure.getSelection();i&&i.string&&t.push(i.string),this.selection&&this.selection.string&&t.push(this.selection.string);let n="";return t.length>0&&(n=`( ${t.join(" ) AND ( ")} )`),new wl(n)}getStructure(){return this.structure.getStructure()}eachBond(e,t){this.structure.eachBond(e,this.getSelection(t))}eachAtom(e,t){const i=this.getAtomProxy(),n=this.getAtomSet(t),r=this.atomStore.count;if(n.getSize()=this.V[n][r]?(i="S",this.score=this.S[n][r]):this.V[n][r]>=this.H[n][r]?(i="V",this.score=this.V[n][r]):(i="H",this.score=this.H[n][r]),e.Debug&&Fl.log("Alignment: SCORE",this.score),e.Debug&&Fl.log("Alignment: S, V, H",this.S[n][r],this.V[n][r],this.H[n][r]);n>0&&r>0;)"S"===i?this.S[n][r]===this.S[n-1][r-1]+t(n-1,r-1)?(this.ali1=this.seq1[n-1]+this.ali1,this.ali2=this.seq2[r-1]+this.ali2,--n,--r,i="S"):this.S[n][r]===this.V[n][r]?i="V":this.S[n][r]===this.H[n][r]?i="H":(--n,--r):"V"===i?this.V[n][r]===this.V[n-1][r]+this.gapExtensionPenalty?(this.ali1=this.seq1[n-1]+this.ali1,this.ali2="-"+this.ali2,--n,i="V"):this.V[n][r]===this.S[n-1][r]+this.gap(0)?(this.ali1=this.seq1[n-1]+this.ali1,this.ali2="-"+this.ali2,--n,i="S"):--n:"H"===i?this.H[n][r]===this.H[n][r-1]+this.gapExtensionPenalty?(this.ali1="-"+this.ali1,this.ali2=this.seq2[r-1]+this.ali2,--r,i="H"):this.H[n][r]===this.S[n][r-1]+this.gap(0)?(this.ali1="-"+this.ali1,this.ali2=this.seq2[r-1]+this.ali2,--r,i="S"):--r:Fl.error("Alignment: no matrix");for(;n>0;)this.ali1=this.seq1[n-1]+this.ali1,this.ali2="-"+this.ali2,--n;for(;r>0;)this.ali1="-"+this.ali1,this.ali2=this.seq2[r-1]+this.ali2,--r;e.Debug&&Fl.timeEnd("Alignment.trace"),e.Debug&&Fl.log([this.ali1,this.ali2])}}function wg(e,t,i=!1,n="",r=""){let s,a,o,l,c;if(i){let i=e,u=t;n&&r&&(i=e.getView(new wl(n)),u=t.getView(new wl(r)));const h=i.getSequence(),d=u.getSequence(),f=new xg(h.join(""),d.join(""));let m,p;f.calc(),f.trace(),s=0,a=0,o=f.ali1.length;const g=[],_=[];for(let e=0;ee[t]))}}}(),this.spacefillRepresentation=this.addRepresentation("spacefill",{sele:"none",opacity:Bl.opacity,color:Bl.color,disablePicking:!0,radiusType:"data"},!0),this.distanceRepresentation=this.addRepresentation("distance",Bl,!0),this.angleRepresentation=this.addRepresentation("angle",Bl,!0),this.dihedralRepresentation=this.addRepresentation("dihedral",Bl,!0),this.measureRepresentations=new sg([this.spacefillRepresentation,this.distanceRepresentation,this.angleRepresentation,this.dihedralRepresentation]),this.setDefaultAssembly(this.parameters.defaultAssembly),this.structure.signals.refreshed.add((()=>{this.updateRepresentations({position:!0})}))}get defaultParameters(){return Sg}get type(){return"structure"}initSelection(e){this.selection=new wl(e),this.structureView=new _g(this.structure,this.selection),this.selection.signals.stringChanged.add((()=>{this.structureView.setSelection(this.selection),this.rebuildRepresentations(),this.rebuildTrajectories()}))}setSelection(e){return this.parameters.sele=e,this.selection.setString(e),this}setDefaultAssembly(e){if(void 0===this.structure.biomolDict[e]&&(e=""),this.parameters.defaultAssembly!==e){const t={defaultAssembly:e};this.reprList.forEach((e=>e.setParameters(t))),this.measureRepresentations.setParameters(t),this.parameters.defaultAssembly=e,this.signals.defaultAssemblyChanged.dispatch(e)}return this}rebuildRepresentations(){this.reprList.forEach((e=>{e.build()})),this.measureRepresentations.build()}rebuildTrajectories(){this.trajList.forEach((e=>{e.trajectory.setStructure(this.structureView)}))}updateRepresentations(e){super.updateRepresentations(e),this.measureRepresentations.update(e)}updateRepresentationMatrices(){super.updateRepresentationMatrices(),this.measureRepresentations.setParameters({matrix:this.matrix})}addRepresentation(e,t={},i=!1){t.defaultAssembly=this.parameters.defaultAssembly;const n=this._addRepresentation(e,this.structureView,t,i);return i||n.signals.parametersChanged.add((()=>this.measureUpdate())),n}addTrajectory(e="",t={}){const i=function(e,t,i){let n;return n=e&&e instanceof lg?new fg(e,t,i):!e&&t.frames?new mg(e,t,i):e&&"function"==typeof e?new gg(e,t,i):new pg(e,t,i),n}(e,this.structureView,t),n=new og(this.stage,i,t);return this.trajList.push(n),this.signals.trajectoryAdded.dispatch(n),n}removeTrajectory(e){const t=this.trajList.indexOf(e);-1!==t&&this.trajList.splice(t,1),e.dispose(),this.signals.trajectoryRemoved.dispatch(e)}dispose(){this.trajList.slice().forEach((e=>e.dispose())),this.trajList.length=0,this.structure.dispose(),this.measureRepresentations.dispose(),super.dispose()}autoView(e,t){"number"==typeof e&&(t=e,e=""),this.stage.animationControls.zoomMove(this.getCenter(e),this.getZoom(e),uo(t,0))}getBoxUntransformed(e){let t;return t=e?this.structureView.getBoundingBox(new wl(e)):this.structureView.boundingBox,t}getCenterUntransformed(e){return e&&"string"==typeof e?this.structure.atomCenter(new wl(e)):this.structure.center}superpose(e,t,i,n){return wg(this.structureView,e.structureView,t,i,n),this.updateRepresentations({position:!0}),this}getMaxRepresentationRadius(e){let t=0;const i=this.structure.getAtomProxy(e);return this.eachRepresentation((e=>{if(e.getVisibility()){const n=e.repr;t=Math.max(n.getAtomRadius(i),t)}})),t}measurePick(e){const t=this.pickBuffer.count;if(this.lastPick===e.index&&t>=1){if(t>1){const e=this.pickBuffer.data,i=this.pickBuffer.data.sort();this.pickDict.has(i)?this.pickDict.del(i):this.pickDict.add(i,e),2===t?this.distanceRepresentation.setParameters({atomPair:this.pickDict.values.filter((e=>2===e.length))}):3===t?this.angleRepresentation.setParameters({atomTriple:this.pickDict.values.filter((e=>3===e.length))}):4===t&&this.dihedralRepresentation.setParameters({atomQuad:this.pickDict.values.filter((e=>4===e.length))})}this.pickBuffer.clear(),this.lastPick=void 0}else this.pickBuffer.has(e.index)||this.pickBuffer.push(e.index),this.lastPick=e.index;this.measureUpdate()}measureClear(){this.pickBuffer.clear(),this.lastPick=void 0,this.spacefillRepresentation.setSelection("none")}measureBuild(){const e=this.measureData();this.distanceRepresentation.setParameters({atomPair:e.distance}),this.angleRepresentation.setParameters({atomTriple:e.angle}),this.dihedralRepresentation.setParameters({atomQuad:e.dihedral})}measureUpdate(){const e=this.pickBuffer.data,t={};e.forEach((e=>{const i=Math.max(.1,this.getMaxRepresentationRadius(e));t[e]=i*(2.3-zo(.1,2,i))})),this.spacefillRepresentation.setSelection(e.length?"@"+e.join(","):"none"),e.length&&this.spacefillRepresentation.setParameters({radiusData:t})}measureData(){const e=this.pickDict.values;return{distance:e.filter((e=>2===e.length)),angle:e.filter((e=>3===e.length)),dihedral:e.filter((e=>4===e.length))}}removeAllMeasurements(e){const t=this.pickDict,i=t.values,n=function(e){i.filter((t=>t.length===e)).forEach((e=>t.del(e.slice().sort())))};(!e||1&e)&&n(2),(!e||2&e)&&n(3),(!e||4&e)&&n(4),this.measureBuild()}removeMeasurement(e){this.pickDict.del(e.slice().sort()),this.measureBuild()}addMeasurement(e){if(e.length<2||e.length>4)return;const t=e.slice().sort();this.pickDict.has(t)||this.pickDict.add(t,e),this.measureBuild()}}Xl.add("structure",Mg),Xl.add("structureview",Mg);class Ag extends ng{constructor(e,t,i={}){super(e,t,Object.assign({name:t.name},i)),this.surface=t}get type(){return"surface"}addRepresentation(e,t={}){return this._addRepresentation(e,this.surface,t)}getBoxUntransformed(){return this.surface.boundingBox}getCenterUntransformed(){return this.surface.center}dispose(){this.surface.dispose(),super.dispose()}}Xl.add("surface",Ag);class Cg extends ng{constructor(e,t,i={}){super(e,t,Object.assign({name:t.name},i)),this.volume=t}get type(){return"volume"}addRepresentation(e,t={}){return this._addRepresentation(e,this.volume,t)}getBoxUntransformed(){return this.volume.boundingBox}getCenterUntransformed(){return this.volume.center}dispose(){this.volume.dispose(),super.dispose()}}Xl.add("volume",Cg);class Tg extends rg{addRepresentation(e,t){return this.forEach((i=>i.addRepresentation(e,t)))}autoView(e){return this.forEach((t=>t.autoView(e)))}}function Pg(e,t){return e instanceof RegExp?null!==t.name.match(e):t.name===e}const Eg=new _t,Ig={impostor:!0,quality:"medium",workerDefault:!0,sampleLevel:0,backgroundColor:"black",rotateSpeed:2,zoomSpeed:1.2,panSpeed:1,clipNear:0,clipFar:100,clipDist:10,clipMode:"scene",clipScale:"relative",fogNear:50,fogFar:100,cameraFov:40,cameraEyeSep:.3,cameraType:"perspective",lightColor:14540253,lightIntensity:1.2,ambientColor:14540253,ambientIntensity:.3,hoverTimeout:0,tooltip:!0,mousePreset:"default"};class Dg extends ng{constructor(e,t,i={}){super(e,t,Object.assign({name:t.name},i)),this.shape=t}get type(){return"shape"}addRepresentation(e,t={}){return this._addRepresentation(e,this.shape,t)}getBoxUntransformed(){return this.shape.boundingBox}getCenterUntransformed(){return this.shape.center}dispose(){this.shape.dispose(),super.dispose()}}function Rg(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a}function Lg(e,t,i,n){return new(i||(i=Promise))((function(r,s){function a(e){try{l(n.next(e))}catch(e){s(e)}}function o(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,o)}l((n=n.apply(e,t||[])).next())}))}Xl.add("shape",Dg),"function"==typeof SuppressedError&&SuppressedError;class kg extends qo{constructor(e){super(e),e.scale||(this.parameters.scale="rainbow",this.parameters.reverse=uo(e.reverse,!0)),this.scalePerModel={},e.structure.eachModel((e=>{this.parameters.domain=[e.atomOffset,e.atomEnd],this.scalePerModel[e.index]=this.getScale()}))}atomColor(e){return this.scalePerModel[e.modelIndex](e.index)}}Rg([Wo],kg.prototype,"atomColor",null),$l.add("atomindex",kg);class Og extends qo{constructor(e){if(super(e),e.scale||(this.parameters.scale="OrRd"),!e.domain){let t,i=1/0,n=-1/0;e.sele&&(t=new wl(e.sele)),e.structure.eachAtom((function(e){const t=e.bfactor;i=Math.min(i,t),n=Math.max(n,t)}),t),this.parameters.domain=[i,n]}this.bfactorScale=this.getScale()}atomColor(e){return this.bfactorScale(e.bfactor)}}Rg([Wo],Og.prototype,"atomColor",null),$l.add("bfactor",Og);class Ng extends qo{constructor(e){super(e),this.chainidDictPerModel={},this.scalePerModel={},e.scale||(this.parameters.scale="Spectral"),e.structure.eachModel((e=>{let t=0;const i={};e.eachChain((function(e){void 0===i[e.chainid]&&(i[e.chainid]=t,t+=1)})),this.parameters.domain=[0,t-1],this.chainidDictPerModel[e.index]=i,this.scalePerModel[e.index]=this.getScale()}))}atomColor(e){const t=this.chainidDictPerModel[e.modelIndex];return this.scalePerModel[e.modelIndex](t[e.chainid])}}Rg([Wo],Ng.prototype,"atomColor",null),$l.add("chainid",Ng);class Fg extends qo{constructor(e){super(e),this.scalePerModel={},e.scale||(this.parameters.scale="Spectral"),e.structure.eachModel((e=>{this.parameters.domain=[e.chainOffset,e.chainEnd],this.scalePerModel[e.index]=this.getScale()}))}atomColor(e){return this.scalePerModel[e.modelIndex](e.chainIndex)}}Rg([Wo],Fg.prototype,"atomColor",null),$l.add("chainindex",Fg);class Bg extends qo{constructor(e){super(e),this.chainnameDictPerModel={},this.scalePerModel={},e.scale||(this.parameters.scale="Spectral"),e.structure.eachModel((e=>{let t=0;const i={};e.eachChain((function(e){void 0===i[e.chainname]&&(i[e.chainname]=t,t+=1)})),this.parameters.domain=[0,t-1],this.chainnameDictPerModel[e.index]=i,this.scalePerModel[e.index]=this.getScale()}))}atomColor(e){const t=this.chainnameDictPerModel[e.modelIndex];return this.scalePerModel[e.modelIndex](t[e.chainname])}}Rg([Wo],Bg.prototype,"atomColor",null),$l.add("chainname",Bg);class zg extends qo{constructor(e){super(e),this.rsrzDict={},this.rsccDict={},e.scale||(this.parameters.scale="RdYlBu"),this.rsrzScale=this.getScale({domain:[2,0]}),this.rsccScale=this.getScale({domain:[.678,1]});const t=e.structure.validation;t&&(this.rsrzDict=t.rsrzDict,this.rsccDict=t.rsccDict)}atomColor(e){let t=e.resno+"";e.inscode&&(t+="^"+e.inscode),e.chainname&&(t+=":"+e.chainname),t+="/"+e.modelIndex;const i=this.rsrzDict[t];if(void 0!==i)return this.rsrzScale(i);const n=this.rsccDict[t];return void 0!==n?this.rsccScale(n):9474192}}Rg([Wo],zg.prototype,"atomColor",null),$l.add("densityfit",zg);const Ug={ARG:{CD:.1,CZ:.5,NE:-.1},ASN:{CG:.55,OD1:-.55},ASP:{CB:-.16,CG:.36,OD1:-.6,OD2:-.6},CYS:{CB:.19,SG:-.19},GLN:{CD:.55,OE1:-.55},GLU:{CD:.36,CG:-.16,OE1:-.6,OE2:-.6},HIS:{CB:.1,CD2:.2,CE1:.45,CG:.15,ND1:.05,NE2:.05},LYS:{CE:.25,NZ:.75},MET:{CE:.06,CG:.06,SD:-.12},PTR:{C:.55,CA:.1,CZ:.25,N:-.35,O:-.55,O1P:-.85,O2P:-.85,O3P:-.85,OG1:-1.1,P:1.4},SEP:{C:.55,CA:.1,CB:.25,N:-.35,O:-.55,O1P:-.85,O2P:-.85,O3P:-.85,OG1:-1.1,P:1.4},SER:{CB:.25,OG:-.25},THR:{CB:.25,OG1:-.25},TPO:{C:.55,CA:.1,CB:.25,N:-.35,O:-.55,OG1:-1.1,O1P:-.85,O2P:-.85,O3P:-.85,P:1.4},TRP:{CD1:.06,CD2:.1,CE2:-.04,CE3:-.03,CG:-.03,NE1:-.06},TYR:{CZ:.25,OH:-.25},backbone:{C:.55,O:-.55,N:-.35,CA:.1}};class Vg extends qo{constructor(e){super(e),this.delta=new _t,this.hCharges=[],e.scale||(this.parameters.scale="rwb"),e.domain||(this.parameters.domain=[-50,50]),this.scale=this.getScale(),this.charges=new Float32Array(e.structure.atomCount);const t=[];e.structure.eachAtom((e=>{var i;if(this.charges[e.index]=(null!==(i=e).partialCharge?i.partialCharge:i.isProtein()&&(Ug[i.resname]&&Ug[i.resname][i.atomname]||Ug.backbone[i.atomname])||0)*e.occupancy,"N"===e.atomname){if(e.bondCount>=3)return;if(e.bondToElementCount(1))return;const i=function(e,t=new _t){let i=!1,n=!1,r=!1;return t.set(2*e.x,2*e.y,2*e.z),e.eachBondedAtom((function(e){if(!i)return"H"===e.atomname?(t.set(e.x,e.y,e.z),void(i=!0)):void(n||"CA"!==e.atomname?r||"C"!==e.atomname||(r=!0,t.sub(e)):(t.sub(e),n=!0))})),i?t:n&&r?(t.normalize(),t.multiplyScalar(1.04),t.add(e),t):void 0}(e);void 0!==i&&(t.push(i),this.hCharges.push(.25*e.occupancy))}}));const i=e.structure.getBoundingBox();i.expandByScalar(1.04),this.hStore=function(e){const t=e.length,i=new Float32Array(t),n=new Float32Array(t),r=new Float32Array(t);for(let t=0;t{const r=t[e];0!==r&&(n+=r/i)})),this.hHash.eachWithin(e.x,e.y,e.z,12,((e,t)=>{const r=i[e];0!==r&&(n+=r/t)})),this.scale(332*n)}}Rg([Wo],Vg.prototype,"positionColor",null),$l.add("electrostatic",Vg);const $g={H:16777215,HE:14286847,LI:13402367,BE:12779264,B:16758197,C:9474192,N:3166456,O:16715021,F:9494608,NE:11789301,NA:11230450,MG:9109248,AL:12560038,SI:1578e4,P:16744448,S:16777008,CL:2093087,AR:8442339,K:9388244,CA:4062976,SC:15132390,TI:12567239,V:10921643,CR:9083335,MN:10255047,FE:14706227,CO:15765664,NI:5296208,CU:13140019,ZN:8224944,GA:12750735,GE:6721423,AS:12419299,SE:16752896,BR:10889513,KR:6076625,RB:7351984,SR:65280,Y:9764863,ZR:9756896,NB:7586505,MO:5551541,TC:3907230,RU:2396047,RH:687500,PD:27013,AG:12632256,CD:16767375,IN:10909043,SN:6717568,SB:10380213,TE:13924864,I:9699476,XE:9699476,CS:5707663,BA:51456,LA:7394559,CE:16777159,PR:14286791,ND:13107143,PM:10747847,SM:9437127,EU:6422471,GD:4587463,TB:3211207,DY:2097095,HO:65436,ER:58997,TM:54354,YB:48952,LU:43812,HF:5096191,TA:5089023,W:2200790,RE:2522539,OS:2516630,IR:1528967,PT:13684960,AU:16765219,HG:12105936,TL:10900557,PB:5724513,BI:10375093,PO:11230208,AT:7688005,RN:4358806,FR:4325478,RA:32e3,AC:7384058,TH:47871,PA:41471,U:36863,NP:33023,PU:27647,AM:5528818,CM:7888099,BK:9064419,CF:10565332,ES:11739092,FM:11739066,MD:11734438,NO:12389767,LR:13041766,RF:13369433,DB:13697103,SG:14221381,BH:14680120,HS:15073326,MT:15400998,DS:16777215,RG:16777215,CN:16777215,UUT:16777215,FL:16777215,UUP:16777215,LV:16777215,UUH:16777215,D:16777152,T:16777120};class Gg extends qo{constructor(e){e.value=uo(e.value,$g.C),super(e)}atomColor(e){const t=e.element;return"C"===t?this.parameters.value:$g[t]||16777215}}Rg([Wo],Gg.prototype,"atomColor",null),$l.add("element",Gg);class Hg extends qo{constructor(e){super(e),e.scale||(this.parameters.scale="Spectral"),e.domain||(this.parameters.domain=[0,e.structure.entityList.length-1]),this.entityindexScale=this.getScale()}atomColor(e){return this.entityindexScale(e.entityIndex)}}Rg([Wo],Hg.prototype,"atomColor",null),$l.add("entityindex",Hg);class jg extends qo{atomColor(e){const t=e.entity;switch(t?t.entityType:void 0){case 1:return 8374655;case 2:return 16629894;case 3:return 12496596;case 4:return 3697840;default:return 16777113}}}Rg([Wo],jg.prototype,"atomColor",null),$l.add("entitytype",jg);class Wg extends qo{constructor(e){super(e),this.geoAtomDict={},this.geoDict={};const t=e.structure.validation;t&&(this.geoAtomDict=t.geoAtomDict,this.geoDict=t.geoDict)}atomColor(e){let t,i=e.resno+"";e.inscode&&(i+="^"+e.inscode),e.chainname&&(i+=":"+e.chainname),i+="/"+e.modelIndex;const n=this.geoAtomDict[i];if(void 0!==n){const i=n[e.atomname]||0;r=i,t=16843009*((r=(858993459&(r-=r>>1&1431655765))+(r>>2&858993459))+(r>>4)&252645135)>>24}else t=this.geoDict[i]||0;var r;return 0===t?2188972:1===t?16703627:2===t?16018755:t>=3?10813478:9474192}}Rg([Wo],Wg.prototype,"atomColor",null),$l.add("geoquality",Wg);class qg extends qo{constructor(e){super(e),this.resHF={},e.scale||(this.parameters.scale="RdYlGn");for(const e in Yh)this.resHF[e]=Yh[e][0];if(this.defaultResidueHydrophobicity=Kh[0],!e.domain){let e=1/0,t=-1/0;for(const i in this.resHF){const n=this.resHF[i];e=Math.min(e,n),t=Math.max(t,n)}this.parameters.domain=[e,0,t]}this.hfScale=this.getScale()}atomColor(e){return this.hfScale(this.resHF[e.resname]||this.defaultResidueHydrophobicity)}}Rg([Wo],qg.prototype,"atomColor",null),$l.add("hydrophobicity",qg);class Xg extends qo{constructor(e){super(e),e.scale||(this.parameters.scale="rainbow"),e.domain||(this.parameters.domain=[0,e.structure.modelStore.count]),this.modelindexScale=this.getScale()}atomColor(e){return this.modelindexScale(e.modelIndex)}}Rg([Wo],Xg.prototype,"atomColor",null),$l.add("modelindex",Xg);class Yg extends qo{atomColor(e){switch(e.residueType.moleculeType){case 1:return 3697840;case 2:return 15729279;case 3:return 12496596;case 4:return 16629894;case 5:return 12540695;case 6:return 8374655;default:return 16777113}}}Rg([Wo],Yg.prototype,"atomColor",null),$l.add("moleculetype",Yg);class Kg extends qo{constructor(e){super(e),e.scale||(this.parameters.scale="PuBu"),e.domain||(this.parameters.domain=[0,1]),this.occupancyScale=this.getScale()}atomColor(e){return this.occupancyScale(e.occupancy)}}Rg([Wo],Kg.prototype,"atomColor",null),$l.add("occupancy",Kg);class Zg extends qo{constructor(e){super(e),e.scale||(this.parameters.scale="rwb"),e.domain||(this.parameters.domain=[-1,1]),this.partialchargeScale=this.getScale()}atomColor(e){return this.partialchargeScale(e.partialCharge||0)}}function Qg(){return 16777215*Math.random()}Rg([Wo],Zg.prototype,"atomColor",null),$l.add("partialcharge",Zg);class Jg extends qo{atomColor(){return Qg()}volumeColor(){return Qg()}positionColor(){return Qg()}}Rg([Wo],Jg.prototype,"atomColor",null),Rg([Wo],Jg.prototype,"volumeColor",null),Rg([Wo],Jg.prototype,"positionColor",null),$l.add("random",Jg);class e_ extends qo{constructor(e){super(e),this.rciDict={},e.scale||(this.parameters.scale="RdYlBu"),this.rciScale=this.getScale({domain:[.6,0]});const t=e.structure.validation;t&&(this.rciDict=t.rciDict)}atomColor(e){let t=`[${e.resname}]${e.resno}`;e.chainname&&(t+=":"+e.chainname);const i=this.rciDict[t];return void 0!==i?this.rciScale(i):9474192}}Rg([Wo],e_.prototype,"atomColor",null),$l.add("randomcoilindex",e_);class t_ extends qo{constructor(e){super(e),this.scalePerChain={},e.scale||(this.parameters.scale="rainbow",this.parameters.reverse=uo(e.reverse,!0)),e.structure.eachChain((e=>{this.parameters.domain=[e.residueOffset,e.residueEnd],this.scalePerChain[e.index]=this.getScale()}))}atomColor(e){return this.scalePerChain[e.chainIndex](e.residueIndex)}}Rg([Wo],t_.prototype,"atomColor",null),$l.add("residueindex",t_);const i_={ALA:9240460,ARG:124,ASN:16743536,ASP:10485826,CYS:16777072,GLN:16731212,GLU:6684672,GLY:16777215,HIS:7368959,ILE:19456,LEU:4546117,LYS:4671416,MET:12099650,PHE:5459026,PRO:5395026,SER:16740418,THR:12078080,TRP:5195264,TYR:9203788,VAL:16747775,ASX:16711935,GLX:16711935,ASH:16711935,GLH:16711935,A:14423100,G:3329330,I:10145074,X:8190976,C:16766720,T:4286945,U:4251856,D:35723,DA:14423100,DG:3329330,DI:10145074,DX:8190976,DC:16766720,DT:4286945,DU:4251856,DD:35723};class n_ extends qo{atomColor(e){return i_[e.resname]||16711935}}Rg([Wo],n_.prototype,"atomColor",null),$l.add("resname",n_);const r_=16711808,s_=10485888,a_=6291584,o_=16762880,l_=6324479,c_=16777215,u_=11403518,h_=16580962,d_=10921722;class f_ extends qo{constructor(e){super(e),this.residueProxy=e.structure.getResidueProxy()}atomColor(e){const t=e.sstruc,i=this.residueProxy;return"h"===t?r_:"g"===t?s_:"i"===t?a_:"e"===t||"b"===t?o_:"t"===t?l_:(i.index=e.residueIndex,i.isDna()?u_:i.isRna()?h_:i.isSaccharide()?d_:i.isProtein()||"s"===t||"l"===t?c_:8421504)}}Rg([Wo],f_.prototype,"atomColor",null),$l.add("sstruc",f_);class m_ extends qo{constructor(e){var t,i;super(e),e.scale||(this.parameters.scale="rwb"),this.atomData=null===(t=this.parameters.data)||void 0===t?void 0:t.atomData,this.bondData=null===(i=this.parameters.data)||void 0===i?void 0:i.bondData,this.scale=this.getScale(this.parameters)}atomColor(e){var t;const i=null===(t=this.atomData)||void 0===t?void 0:t[e.index];return void 0!==i?this.scale(i):this.parameters.value}bondColor(e,t){var i;const n=null===(i=this.bondData)||void 0===i?void 0:i[e.index];return void 0!==n?this.scale(n):this.atomProxy?(this.atomProxy.index=t?e.atomIndex1:e.atomIndex2,this.atomColor(this.atomProxy)):this.parameters.value}}Rg([Wo],m_.prototype,"atomColor",null),Rg([Wo],m_.prototype,"bondColor",null),$l.add("structuredata",m_);class p_ extends qo{atomColor(){return this.parameters.value}bondColor(){return this.parameters.value}valueColor(){return this.parameters.value}volumeColor(){return this.parameters.value}}Rg([Wo],p_.prototype,"atomColor",null),Rg([Wo],p_.prototype,"bondColor",null),Rg([Wo],p_.prototype,"valueColor",null),Rg([Wo],p_.prototype,"volumeColor",null),$l.add("uniform",p_);class g_ extends qo{constructor(e){super(e),this.valueScale=this.getScale()}volumeColor(e){return this.valueScale(this.parameters.volume.data[e])}}Rg([Wo],g_.prototype,"volumeColor",null),$l.add("value",g_);class __ extends qo{constructor(e){super(e),this.vec=new _t,this.valueScale=this.getScale()}positionColor(e){const t=this.parameters.volume;if(!t||!t.inverseMatrix)return this.parameters.value;const i=this.vec,n=t.data,r=t.nx,s=t.ny,a=r*s;i.copy(e),i.applyMatrix4(t.inverseMatrix);const o=Math.floor(i.x),l=Math.floor(i.y),c=Math.floor(i.z),u=(c*s+l)*r+o,h=u+1,d=u+r,f=u+a,m=d+1,p=f+1,g=d+a,_=g+1,y=n[u],v=n[h],b=n[d],x=n[f],w=n[m],S=n[p],M=n[g],A=n[_],C=i.x-o,T=i.y-l,P=i.z-c,E=Fo(y,v,C),I=Fo(x,S,C),D=Fo(b,w,C),R=Fo(M,A,C),L=Fo(E,D,T),k=Fo(I,R,T),O=Fo(L,k,P);return this.valueScale(O)}}Rg([Wo],__.prototype,"positionColor",null),$l.add("volume",__);class y_ extends Nu{constructor(e,t,i){const n=i||{};if(super(e,t,n),this.type="structure",this.parameters=Object.assign({radiusType:{type:"select",options:cm.types},radiusData:{type:"hidden"},radiusSize:{type:"number",precision:3,max:10,min:.001},radiusScale:{type:"number",precision:3,max:10,min:.001},assembly:null,defaultAssembly:{type:"hidden"}},this.parameters),this.selection=new wl(n.sele),this.dataList=[],this.structure=e,this.structureView=this.structure.getView(this.selection),e.biomolDict){const t={default:"default","":e.unitcell?"AU":"FULL"};Object.keys(e.biomolDict).forEach((function(e){t[e]=e})),this.parameters.assembly={type:"select",options:t,rebuild:!0}}else this.parameters.assembly=null}get defaultScale(){return{vdw:1,covalent:1,bfactor:.01,sstruc:1}}init(e){const t=e||{};t.colorScheme=uo(t.colorScheme,"element"),this.setRadius(t.radius,t),this.radiusType=uo(t.radiusType,"vdw"),this.radiusData=uo(t.radiusData,{}),this.radiusSize=uo(t.radiusSize,1),this.radiusScale=uo(t.radiusScale,1),this.assembly=uo(t.assembly,"default"),this.defaultAssembly=uo(t.defaultAssembly,""),"auto"===t.quality&&(t.quality=this.getQuality()),super.init(t),this.selection.signals.stringChanged.add((()=>{this.build()})),this.build()}setRadius(e,t){const i=Object.keys(lm);return"string"==typeof e&&i.includes(e.toLowerCase())?t.radiusType=e:void 0!==e&&(t.radiusType="size",t.radiusSize=e),this}getAssembly(){const e="default"===this.assembly?this.defaultAssembly:this.assembly;return this.structure.biomolDict[e]}getQuality(){let e;const t=this.structureView,i=this.getAssembly();e=i?i.getAtomCount(t):t.atomCount,Rl&&(e*=4);return t.atomStore.count/t.residueStore.count<2&&(e*=10),e<15e3?"high":e<8e4?"medium":"low"}create(){if(0===this.structureView.atomCount)return;if(!this.structureView.hasCoords())return void(this.needsBuild=!0);this.needsBuild=!1;const e=this.getAssembly();if(e)e.partList.forEach(((e,t)=>{const i=e.getView(this.structureView);if(0===i.atomCount)return;const n=this.createData(i,t);n&&(n.sview=i,n.instanceList=e.getInstanceList(),this.dataList.push(n))}));else{const e=this.createData(this.structureView,0);e&&(e.sview=this.structureView,this.dataList.push(e))}}update(e){!this.lazy||this.visible?this.needsBuild?this.build():this.dataList.forEach((t=>{t.bufferList.length>0&&this.updateData(e,t)}),this):Object.assign(this.lazyProps.what,e)}updateData(e,t){this.build()}getColorParams(){return Object.assign(Object.assign({},super.getColorParams()),{structure:this.structure})}getRadiusParams(e){return{type:this.radiusType,scale:this.radiusScale,size:this.radiusSize,data:this.radiusData}}getAtomParams(e,t){return Object.assign({what:e,colorParams:this.getColorParams(),radiusParams:this.getRadiusParams()},t)}getBondParams(e,t){return Object.assign({what:e,colorParams:this.getColorParams(),radiusParams:this.getRadiusParams()},t)}getAtomRadius(e){if(this.structureView.atomSet.isSet(e.index)){return new cm(this.getRadiusParams()).atomRadius(e)}return 0}setSelection(e,t){return this.selection.setString(e,t),this}setParameters(e,t={},i=!1){const n=e||{};return this.setRadius(n.radius,n),void 0===n.radiusType&&void 0===n.radiusData&&void 0===n.radiusSize&&void 0===n.radiusScale||(t.radius=!0,Ol&&!this.disableImpostor||(i=!0)),void 0!==n.defaultAssembly&&n.defaultAssembly!==this.defaultAssembly&&("default"===this.assembly&&void 0===n.assembly||"default"===n.assembly)&&(i=!0),super.setParameters(n,t,i),this}getParameters(){return Object.assign(super.getParameters(),{sele:this.selection?this.selection.string:void 0,defaultAssembly:this.defaultAssembly})}attach(e){const t=this.viewer,i=this.bufferList;this.dataList.forEach((function(e){e.bufferList.forEach((function(n){i.push(n),t.add(n,e.instanceList)}))})),this.setVisibility(this.visible),e()}clear(){this.dataList.length=0,super.clear()}dispose(){this.structureView.dispose(),super.dispose()}}class v_ extends y_{constructor(e,t,i){super(e,t,i),this.n=0,this.parameters=Object.assign({labelVisible:{type:"boolean"},labelSize:{type:"number",precision:3,max:10,min:.001},labelColor:{type:"color"},labelFontFamily:{type:"select",options:{"sans-serif":"sans-serif",monospace:"monospace",serif:"serif"},buffer:"fontFamily"},labelFontStyle:{type:"select",options:{normal:"normal",italic:"italic"},buffer:"fontStyle"},labelFontWeight:{type:"select",options:{normal:"normal",bold:"bold"},buffer:"fontWeight"},labelsdf:{type:"boolean",buffer:"sdf"},labelXOffset:{type:"number",precision:1,max:20,min:-20,buffer:"xOffset"},labelYOffset:{type:"number",precision:1,max:20,min:-20,buffer:"yOffset"},labelZOffset:{type:"number",precision:1,max:20,min:-20,buffer:"zOffset"},labelAttachment:{type:"select",options:{"bottom-left":"bottom-left","bottom-center":"bottom-center","bottom-right":"bottom-right","middle-left":"middle-left","middle-center":"middle-center","middle-right":"middle-right","top-left":"top-left","top-center":"top-center","top-right":"top-right"},rebuild:!0},labelBorder:{type:"boolean",buffer:"showBorder"},labelBorderColor:{type:"color",buffer:"borderColor"},labelBorderWidth:{type:"number",precision:2,max:.3,min:0,buffer:"borderWidth"},labelBackground:{type:"boolean",rebuild:!0},labelBackgroundColor:{type:"color",buffer:"backgroundColor"},labelBackgroundMargin:{type:"number",precision:2,max:2,min:0,rebuild:!0},labelBackgroundOpacity:{type:"range",step:.01,max:1,min:0,buffer:"backgroundOpacity"},labelFixedSize:{type:"boolean",buffer:"fixedSize"},lineOpacity:{type:"range",min:0,max:1,step:.01},linewidth:{type:"integer",max:50,min:1,buffer:!0}},this.parameters,{flatShaded:null})}init(e){const t=e||{};this.labelVisible=uo(t.labelVisible,!0),this.labelSize=uo(t.labelSize,2),this.labelColor=uo(t.labelColor,16777215),this.labelFontFamily=uo(t.labelFontFamily,"sans-serif"),this.labelFontStyle=uo(t.labelFontstyle,"normal"),this.labelFontWeight=uo(t.labelFontWeight,"bold"),this.labelsdf=uo(t.labelsdf,"Chrome"===Il),this.labelXOffset=uo(t.labelXOffset,0),this.labelYOffset=uo(t.labelYOffset,0),this.labelZOffset=uo(t.labelZOffset,.5),this.labelAttachment=uo(t.labelAttachment,"bottom-left"),this.labelBorder=uo(t.labelBorder,!1),this.labelBorderColor=uo(t.labelBorderColor,"lightgrey"),this.labelBorderWidth=uo(t.labelBorderWidth,.15),this.labelBackground=uo(t.labelBackground,!1),this.labelBackgroundColor=uo(t.labelBackgroundColor,"lightgrey"),this.labelBackgroundMargin=uo(t.labelBackgroundMargin,.5),this.labelBackgroundOpacity=uo(t.labelBackgroundOpacity,1),this.labelFixedSize=uo(t.labelFixedSize,!1),this.lineOpacity=uo(t.lineOpacity,1),this.linewidth=uo(t.linewidth,2),super.init(t)}update(e){e.position?this.build():super.update(e)}updateData(e,t){const i={};if(e&&!e.labelSize||Object.assign(i,{size:Sc(this.n,this.labelSize)}),!e||e.labelColor){const e=new Oi(this.labelColor);Object.assign(i,{color:Mc(this.n,e.r,e.g,e.b)})}this.textBuffer.setAttributes(i)}setParameters(e,t={},i=!1){return e&&e.labelSize&&(t.labelSize=!0),e&&(e.labelColor||0===e.labelColor)&&(t.labelColor=!0,i=!0),super.setParameters(e,t,i),e&&void 0!==e.opacity&&this.textBuffer.setParameters({opacity:1}),e&&void 0!==e.labelVisible&&this.setVisibility(this.visible),this}setVisibility(e,t){return super.setVisibility(e,!0),this.textBuffer&&this.textBuffer.setVisibility(this.labelVisible&&this.visible),t||this.viewer.requestRender(),this}getLabelBufferParams(e={}){return super.getBufferParams(Object.assign({fontFamily:this.labelFontFamily,fontStyle:this.labelFontStyle,fontWeight:this.labelFontWeight,sdf:this.labelsdf,xOffset:this.labelXOffset,yOffset:this.labelYOffset,zOffset:this.labelZOffset,attachment:this.labelAttachment,showBorder:this.labelBorder,borderColor:this.labelBorderColor,borderWidth:this.labelBorderWidth,showBackground:this.labelBackground,backgroundColor:this.labelBackgroundColor,backgroundMargin:this.labelBackgroundMargin,backgroundOpacity:this.labelBackgroundOpacity,fixedSize:this.labelFixedSize,disablePicking:!0,visible:this.labelVisible},e,{opacity:1}))}getAtomRadius(){return 0}}function b_(e,t){const i=e.getAtomProxy(),n=new wl,r=t.length;if(0===r)return new Float32Array(0);const s=t[0].length,a=e.getAtomSet(),o=new Float32Array(r*s*3);let l=0;return t.forEach((function(t){let r=!1;for(let c=0;c 1.0 ){\ngl_FragColor = vec4( backgroundColor, backgroundOpacity );\n}else{\nfloat sdf = texture2D( fontTexture, texCoord ).a;\nif( showBorder ) sdf += borderWidth;\nfloat a = smoothstep(padding - gamma, padding + gamma, sdf);\nif( a < 0.2 ) discard;\na *= opacity;\nvec3 outgoingLight = vColor;\nif( showBorder && sdf < ( padding + borderWidth ) ){\noutgoingLight = borderColor;\n}\ngl_FragColor = vec4( outgoingLight, a );\n}\n#if defined( PICKING )\nif( opacity < 0.3 )\ndiscard;\ngl_FragColor = vec4( vPickingColor, objectId );\n#else\n#include premultiplied_alpha_fragment\n#include tonemapping_fragment\n#include colorspace_fragment\n#include fog_fragment\n#endif\n}");const M_={};const A_={font:"sans-serif",size:36,style:"normal",variant:"normal",weight:"normal",outline:3,width:1024,height:1024};class C_{constructor(e={}){this.gamma=1,this.mapped={},this.scratchW=0,this.scratchH=0,this.currentX=0,this.currentY=0,this.cutoff=.25,this.parameters=ho(e,A_);const t=this.parameters;this.radius=t.size/8,this.padding=t.size/3;const i=this.lineHeight=t.size+2*t.outline+Math.round(t.size/4),n=this.maxWidth=t.width/4,r=this.canvas=document.createElement("canvas");r.width=n,r.height=i;const s=this.context=this.canvas.getContext("2d",{willReadFrequently:!0});s.font=`${t.style} ${t.variant} ${t.weight} ${t.size}px ${t.font}`,s.fillStyle="black",s.textAlign="left",s.textBaseline="bottom",s.lineJoin="round",this.gridOuter=new Float64Array(i*n),this.gridInner=new Float64Array(i*n),this.f=new Float64Array(Math.max(i,n)),this.d=new Float64Array(Math.max(i,n)),this.z=new Float64Array(Math.max(i,n)+1),this.v=new Int16Array(Math.max(i,n)),this.data=new Uint8Array(t.width*t.height*4),this.canvas2=document.createElement("canvas"),this.canvas2.width=t.width,this.canvas2.height=t.height,this.context2=this.canvas2.getContext("2d"),this.placeholder=this.map(String.fromCharCode(65533));for(let e=32;e<=126;++e)this.map(String.fromCharCode(e));this.map(String.fromCharCode(176)),this.map(String.fromCharCode(8491)),this.texture=new $a(this.canvas2),this.texture.flipY=!1,this.texture.needsUpdate=!0}map(e){const t=this.parameters;return void 0===this.mapped[e]&&(this.draw(e),this.currentX+this.scratchW>t.width&&(this.currentX=0,this.currentY+=this.scratchH),this.currentY+this.scratchH>t.height&&console.warn("canvas to small"),this.mapped[e]={x:this.currentX,y:this.currentY,w:this.scratchW,h:this.scratchH},this.context2.drawImage(this.canvas,0,0,this.scratchW,this.scratchH,this.currentX,this.currentY,this.scratchW,this.scratchH),this.currentX+=this.scratchW),this.mapped[e]}get(e){return this.mapped[e]||this.placeholder}draw(e){const t=this.parameters,i=this.lineHeight,n=t.outline,r=this.context,s=this.maxWidth,a=n,o=i-t.outline,l=r.measureText(e),c=Math.min(s,Math.ceil(l.width+2*a+1)),u=c*i;r.clearRect(0,0,c,i),r.fillText(e,a,o);const h=r.getImageData(0,0,c,i),d=h.data;for(let e=0;e= 0.0 ) {\ntrimSegment( start, end );\n} else if ( end.z < 0.0 && start.z >= 0.0 ) {\ntrimSegment( end, start );\n}\n}\nvec4 clipStart = projectionMatrix * start;\nvec4 clipEnd = projectionMatrix * end;\nvec2 ndcStart = clipStart.xy / clipStart.w;\nvec2 ndcEnd = clipEnd.xy / clipEnd.w;\nvec2 dir = ndcEnd - ndcStart;\ndir.x *= aspect;\ndir = normalize( dir );\nvec2 offset = vec2( dir.y, - dir.x );\ndir.x /= aspect;\noffset.x /= aspect;\nif ( mapping.x < 0.0 ) offset *= - 1.0;\noffset *= linewidth;\noffset /= resolution.y;\nvec4 clip = ( mapping.y < 0.5 ) ? clipStart : clipEnd;\noffset *= clip.w;\nclip.xy += offset;\ngl_Position = clip;\n#ifndef PICKING\nvViewPosition = ( projectionMatrixInverse * clip ).xyz;\n#endif\n#if defined( RADIUS_CLIP )\nvClipCenter = -( modelViewMatrix * vec4( clipCenter, 1.0 ) ).xyz;\n#endif\n#include nearclip_vertex\n}"),Wl.add("shader/WideLine.frag","uniform vec3 diffuse;\nuniform float opacity;\nuniform float clipNear;\nuniform float clipRadius;\n#if defined( RADIUS_CLIP )\nvarying vec3 vClipCenter;\n#endif\n#ifdef PICKING\nuniform float objectId;\nvarying vec3 vPickingColor;\n#else\n#include common\n#include fog_pars_fragment\nvarying vec3 vViewPosition;\nvarying vec3 vColor;\nvarying vec3 vColor2;\nvarying float flag;\n#endif\nvoid main() {\n#include nearclip_fragment\n#include radiusclip_fragment\n#if defined( PICKING )\nif( opacity < 0.3 )\ndiscard;\ngl_FragColor = vec4( vPickingColor, objectId );\n#else\nvec3 outgoingLight = vec3( 0.0 );\nvec4 diffuseColor = vec4( diffuse, 1.0 );\nif ( flag < 0.0 ) {\ndiffuseColor.rgb *= vColor;\n} else {\ndiffuseColor.rgb *= vColor2;\n}\n#include alphatest_fragment\noutgoingLight = diffuseColor.rgb;\ngl_FragColor = vec4( outgoingLight, diffuseColor.a * opacity );\n#include premultiplied_alpha_fragment\n#include tonemapping_fragment\n#include colorspace_fragment\n#include fog_fragment\n#endif\n}");const D_=Object.assign({linewidth:2},Of),R_=Object.assign({linewidth:{uniform:!0}},Nf);class L_ extends kp{constructor(e,t={}){super(e,t),this.parameterTypes=R_,this.vertexShader="WideLine.vert",this.fragmentShader="WideLine.frag",!e.color2&&e.color&&(e.color2=e.color),this.addUniforms({linewidth:{value:this.parameters.linewidth},resolution:{value:new Ge},projectionMatrixInverse:{value:new qt}}),this.addAttributes({position1:{type:"v3",value:null},position2:{type:"v3",value:null},color2:{type:"c",value:null}}),this.setAttributes(e),this.makeMapping()}get defaultParameters(){return D_}setParameters(e){super.setParameters(e)}}Yl.add("wideline",L_);class k_ extends v_{constructor(e,t,i){super(e,t,i),this.type="angle",this.parameters=Object.assign({atomTriple:{type:"hidden",rebuild:!0},vectorVisible:{type:"boolean",default:!0},arcVisible:{type:"boolean",default:!0},sectorVisible:{type:"boolean",default:!0}},this.parameters),this.init(i)}init(e){const t=e||{};t.side=uo(t.side,"double"),t.opacity=uo(t.opacity,.5),this.atomTriple=uo(t.atomTriple,[]),this.arcVisible=uo(t.arcVisible,!0),this.sectorVisible=uo(t.sectorVisible,!0),this.vectorVisible=uo(t.vectorVisible,!0),super.init(t)}createData(e){if(!e.atomCount||!this.atomTriple.length)return;const t=function(e,t){return function(e){const t=[],i=e.length/9;for(let n=0;n radius2) {\ndiscard;\n}\n#ifdef CAP\nsurface_point = front_point;\n_normal = axis;\n#else\nsurface_point = ray_target + ( (-a1 - sqrt(d)) / a2 ) * ray_direction;\ndNV = dot(-axis, ray_direction);\nnear = dot(axis, end) / dNV;\nnew_point2 = ray_direction * near + ray_origin;\nif (dot(new_point2 - end, new_point2-base) < radius2) {\ndiscard;\n}\ninterior = true;\n#endif\n}\nif( end_cap_test > 0.0 )\n{\nfloat dNV;\nfloat near;\nvec3 end_point;\nif ( ortho == 1.0 ) {\nend_point = ray_target;\n} else {\ndNV = dot(axis, ray_direction);\nif (dNV < 0.0) {\ndiscard;\n}\nnear = dot(axis, end) / dNV;\nend_point = ray_direction * near + ray_origin;\n}\nif( dot(end_point - end, end_point-base) > radius2 ) {\ndiscard;\n}\n#ifdef CAP\nsurface_point = end_point;\n_normal = axis;\n#else\nsurface_point = ray_target + ( (-a1 - sqrt(d)) / a2 ) * ray_direction;\ndNV = dot(-axis, ray_direction);\nnear = dot(-axis, (base)) / dNV;\nnew_point2 = ray_direction * near + ray_origin;\nif (dot(new_point2 - base, new_point2-base) < radius2) {\ndiscard;\n}\ninterior = true;\n#endif\n}\ngl_FragDepthEXT = calcDepth( surface_point );\n#ifdef NEAR_CLIP\nif( calcClip( surface_point ) > 0.0 ){\ndist = (-a1 - sqrt(d)) / a2;\nsurface_point = ray_target + dist * ray_direction;\nif( calcClip( surface_point ) > 0.0 ) {\ndiscard;\n}\ninterior = true;\ngl_FragDepthEXT = calcDepth( surface_point );\nif( gl_FragDepthEXT >= 0.0 ){\ngl_FragDepthEXT = max( 0.0, calcDepth( vec3( - ( clipNear - 0.5 ) ) ) + ( 0.0000001 / vRadius ) );\n}\n}else if( gl_FragDepthEXT <= 0.0 ){\ndist = (-a1 - sqrt(d)) / a2;\nsurface_point = ray_target + dist * ray_direction;\ninterior = true;\ngl_FragDepthEXT = calcDepth( surface_point );\nif( gl_FragDepthEXT >= 0.0 ){\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );\n}\n}\n#else\nif( gl_FragDepthEXT <= 0.0 ){\ndist = (-a1 - sqrt(d)) / a2;\nsurface_point = ray_target + dist * ray_direction;\ninterior = true;\ngl_FragDepthEXT = calcDepth( surface_point );\nif( gl_FragDepthEXT >= 0.0 ){\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );\n}\n}\n#endif\nif (gl_FragDepthEXT < 0.0) {\ndiscard;\n}\nif (gl_FragDepthEXT > 1.0) {\ndiscard;\n}\n#ifdef PICKING\nif( opacity < 0.3 )\ndiscard;\ngl_FragColor = vec4( vPickingColor, objectId );\n#else\nvec3 vViewPosition = -surface_point;\nvec3 vNormal = _normal;\nvec3 vColor;\nif( distSq3( surface_point, end ) < distSq3( surface_point, base ) ){\nif( b < 0.0 ){\nvColor = vColor1;\n}else{\nvColor = vColor2;\n}\n}else{\nif( b > 0.0 ){\nvColor = vColor1;\n}else{\nvColor = vColor2;\n}\n}\nvec4 diffuseColor = vec4( diffuse, opacity );\nReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\nvec3 totalEmissiveLight = emissive;\n#include color_fragment\n#include roughnessmap_fragment\n#include metalnessmap_fragment\nvec3 normal = normalize( vNormal );\nvec3 nonPerturbedNormal = normal;\n#include lights_physical_fragment\n#include lights_fragment_begin\n#include lights_fragment_end\nvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveLight;\nif( interior ){\n#ifdef USE_INTERIOR_COLOR\noutgoingLight.xyz = interiorColor;\n#else\n#ifdef DIFFUSE_INTERIOR\noutgoingLight.xyz = vColor;\n#endif\n#endif\noutgoingLight.xyz *= 1.0 - interiorDarkening;\n}\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\n#include premultiplied_alpha_fragment\n#include tonemapping_fragment\n#include colorspace_fragment\n#include fog_fragment\n#endif\n}");const $_=new Float32Array([-1,1,-1,-1,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,-1,1]),G_=new Uint16Array([0,1,2,1,4,2,2,4,3,4,5,3]);class H_ extends Dp{constructor(e,t={}){super("v3",e,t)}get mapping(){return $_}get mappingIndices(){return G_}get mappingIndicesSize(){return 12}get mappingSize(){return 6}get mappingItemSize(){return 3}}const j_=Object.assign({openEnded:!1},Of),W_=Object.assign({openEnded:{updateShader:!0}},Nf);class q_ extends H_{constructor(e,t={}){super(e,t),this.parameterTypes=W_,this.isImpostor=!0,this.vertexShader="CylinderImpostor.vert",this.fragmentShader="CylinderImpostor.frag",this.addUniforms({modelViewMatrixInverse:{value:new qt},ortho:{value:0}}),this.addAttributes({position1:{type:"v3",value:null},position2:{type:"v3",value:null},color2:{type:"c",value:null},radius:{type:"f",value:null}}),this.setAttributes(e),this.makeMapping()}get defaultParameters(){return j_}getDefines(e){const t=H_.prototype.getDefines.call(this,e);return this.parameters.openEnded||(t.CAP=1),t}}Object.assign({disableImpostor:!1},z_,j_);const X_=class{constructor(e,t={}){return!e.color2&&e.color&&(e.color2=e.color),!Ol||t&&t.disableImpostor?new V_(e,t):new q_(e,t)}};Yl.add("cylinder",X_);class Y_ extends y_{constructor(e,t,i){super(e,t,i),this.type="axes",this.parameters=Object.assign({radiusSize:{type:"number",precision:3,max:10,min:.001},sphereDetail:!0,radialSegments:!0,disableImpostor:!0,showAxes:{type:"boolean",rebuild:!0},showBox:{type:"boolean",rebuild:!0}},this.parameters,{assembly:null}),this.init(i)}init(e){const t=e||{};t.radiusSize=uo(t.radiusSize,.5),t.colorValue=uo(t.colorValue,"lightgreen"),t.useInteriorColor=uo(t.useInteriorColor,!0),this.showAxes=uo(t.showAxes,!0),this.showBox=uo(t.showBox,!1),super.init(t)}getPrincipalAxes(){let e;const t=this.getAssembly();return t&&(e=t.partList[0].getSelection()),this.structureView.getPrincipalAxes(e)}getAxesData(e){const t=this.getPrincipalAxes(),i=new Oi(this.colorValue);let n=0,r=0;this.showAxes&&(n+=6,r+=3),this.showBox&&(n+=8,r+=12);const s=new Float32Array(3*n),a=Mc(n,i.r,i.g,i.b),o=Sc(n,this.radiusSize),l=new Float32Array(3*r),c=new Float32Array(3*r),u=Mc(r,i.r,i.g,i.b),h=Sc(r,this.radiusSize);let d=0;if(this.showAxes){const e=function(e,t){e.toArray(s,2*d),t.toArray(s,2*d+3),e.toArray(l,d),t.toArray(c,d),d+=3};e(t.begA,t.endA),e(t.begB,t.endB),e(t.begC,t.endC)}if(this.showBox){const i=new _t,{d1a:n,d2a:r,d3a:a,d1b:o,d2b:u,d3b:h}=t.getProjectedScaleForAtoms(e);let f=2*d;const m=function(e,n,r){i.copy(t.center).addScaledVector(t.normVecA,e).addScaledVector(t.normVecB,n).addScaledVector(t.normVecC,r),i.toArray(s,f),f+=3};m(n,r,a),m(n,r,h),m(n,u,h),m(n,u,a),m(o,u,h),m(o,u,a),m(o,r,a),m(o,r,h);let p=d;const g=function(e,t){i.fromArray(s,2*d+3*e).toArray(l,p),i.fromArray(s,2*d+3*t).toArray(c,p),p+=3};g(0,1),g(0,3),g(0,6),g(1,2),g(1,7),g(2,3),g(2,4),g(3,5),g(4,5),g(4,7),g(5,6),g(6,7)}const f=new jd(t);return{vertex:{position:s,color:a,radius:o,picking:f},edge:{position1:l,position2:c,color:u,color2:u,radius:h,picking:f}}}create(){const e=this.getAxesData(this.structureView);this.sphereBuffer=new Np(e.vertex,this.getBufferParams({sphereDetail:this.sphereDetail,disableImpostor:this.disableImpostor,dullInterior:!0})),this.cylinderBuffer=new X_(e.edge,this.getBufferParams({openEnded:!0,radialSegments:this.radialSegments,disableImpostor:this.disableImpostor,dullInterior:!0})),this.dataList.push({sview:this.structureView,bufferList:[this.sphereBuffer,this.cylinderBuffer]})}createData(e){}updateData(e,t){const i=this.getAxesData(t.sview),n={},r={};e&&!e.position||(Object.assign(n,{position:i.vertex.position}),Object.assign(r,{position1:i.edge.position1,position2:i.edge.position2})),e&&!e.color||(Object.assign(n,{color:i.vertex.color}),Object.assign(r,{color:i.edge.color,color2:i.edge.color})),e&&!e.radius||(Object.assign(n,{radius:i.vertex.radius}),Object.assign(r,{radius:i.edge.radius})),this.sphereBuffer.setAttributes(n),this.cylinderBuffer.setAttributes(r)}}Hl.add("axes",Y_);class K_ extends y_{constructor(e,t,i){super(e,t,i),this.type="ball+stick",this.parameters=Object.assign({sphereDetail:!0,radialSegments:!0,openEnded:!0,disableImpostor:!0,aspectRatio:{type:"number",precision:1,max:10,min:1},lineOnly:{type:"boolean",rebuild:!0},cylinderOnly:{type:"boolean",rebuild:!0},multipleBond:{type:"select",rebuild:!0,options:{off:"off",symmetric:"symmetric",offset:"offset"}},bondScale:{type:"number",precision:2,max:1,min:.01},bondSpacing:{type:"number",precision:2,max:2,min:.5},linewidth:{type:"integer",max:50,min:1,buffer:!0}},this.parameters),this.init(i)}init(e){var t=e||{};t.radiusType=uo(t.radiusType,"size"),t.radiusSize=uo(t.radiusSize,.15),t.useInteriorColor=uo(t.useInteriorColor,!0),this.aspectRatio=uo(t.aspectRatio,2),this.lineOnly=uo(t.lineOnly,!1),this.cylinderOnly=uo(t.cylinderOnly,!1),this.multipleBond=uo(t.multipleBond,"off"),this.bondSpacing=uo(t.bondSpacing,1),this.bondScale=uo(t.bondScale,.4),this.linewidth=uo(t.linewidth,2),super.init(t)}getAtomRadius(e){return this.aspectRatio*super.getAtomRadius(e)}getAtomParams(e,t){var i=super.getAtomParams(e,t);return i.radiusParams.scale*=this.aspectRatio,i}getAtomData(e,t,i){return e.getAtomData(this.getAtomParams(t,i))}getBondParams(e,t){return t=Object.assign({multipleBond:this.multipleBond,bondSpacing:this.bondSpacing,bondScale:this.bondScale},t),super.getBondParams(e,t)}getBondData(e,t,i){return e.getBondData(this.getBondParams(t,i))}createData(e){const t=[];if(this.lineOnly)this.lineBuffer=new L_(this.getBondData(e,{position:!0,color:!0,picking:!0}),this.getBufferParams({linewidth:this.linewidth})),t.push(this.lineBuffer);else{const i=new X_(this.getBondData(e),this.getBufferParams({openEnded:this.openEnded,radialSegments:this.radialSegments,disableImpostor:this.disableImpostor,dullInterior:!0}));if(t.push(i),!this.cylinderOnly){const i=new Np(this.getAtomData(e),this.getBufferParams({sphereDetail:this.sphereDetail,disableImpostor:this.disableImpostor,dullInterior:!0}));t.push(i)}}return{bufferList:t}}updateData(e,t){"off"!==this.multipleBond&&e&&e.radius&&(e.position=!0);const i=this.getBondData(t.sview,e);if(this.lineOnly){const n={};e&&!e.position||Object.assign(n,{position1:i.position1,position2:i.position2}),e&&!e.color||Object.assign(n,{color:i.color,color2:i.color2}),t.bufferList[0].setAttributes(n)}else{var n={};if(e&&!e.position||Object.assign(n,{position1:i.position1,position2:i.position2}),e&&!e.color||Object.assign(n,{color:i.color,color2:i.color2}),e&&!e.radius||Object.assign(n,{radius:i.radius}),t.bufferList[0].setAttributes(n),!this.cylinderOnly){var r=this.getAtomData(t.sview,e),s={};e&&!e.position||Object.assign(s,{position:r.position}),e&&!e.color||Object.assign(s,{color:r.color}),e&&!e.radius||Object.assign(s,{radius:r.radius}),t.bufferList[1].setAttributes(s)}}}setParameters(e={}){let t=!1;const i={};return(e.aspectRatio||e.bondSpacing||e.bondScale)&&(Object.assign(i,{radius:!0}),Ol&&!this.disableImpostor||(t=!0)),super.setParameters(e,i,t),this}}Hl.add("ball+stick",K_);class Z_ extends K_{constructor(e,t,i){super(e,t,i),this.type="backbone",this.parameters=Object.assign({},this.parameters,{multipleBond:null,bondSpacing:null}),this.init(i)}init(e){var t=e||{};t.aspectRatio=uo(t.aspectRatio,1),t.radiusSize=uo(t.radiusSize,.25),super.init(t)}getAtomRadius(e){return e.isTrace()?super.getAtomRadius(e):0}getAtomData(e,t,i){return e.getBackboneAtomData(this.getAtomParams(t,i))}getBondData(e,t,i){return e.getBackboneBondData(this.getBondParams(t,i))}}Hl.add("backbone",Z_);class Q_ extends K_{constructor(e,t,i){super(e,t,i),this.type="base",this.parameters=Object.assign({},this.parameters,{multipleBond:null,bondSpacing:null})}init(e){let t=e||{};t.aspectRatio=uo(t.aspectRatio,1),t.radiusSize=uo(t.radiusSize,.3),super.init(t)}getAtomData(e,t,i){return e.getRungAtomData(this.getAtomParams(t,i))}getBondData(e,t,i){let n=this.getBondParams(t,i);return Object.assign(n.colorParams,{rung:!0}),e.getRungBondData(n)}}Hl.add("base",Q_);class J_{constructor(e,t){this.m=e,this.tension=t,this.dt=1/this.m,this.delta=1e-4,this.vec1=new _t,this.vec2=new _t,this.vDir=new _t,this.vTan=new _t,this.vNorm=new _t,this.vBin=new _t,this.m2=Math.ceil(this.m/2)}interpolateToArr(e,t,i,n,r,s,a){s[a+0]=Bo(e.x,t.x,i.x,n.x,r,this.tension),s[a+1]=Bo(e.y,t.y,i.y,n.y,r,this.tension),s[a+2]=Bo(e.z,t.z,i.z,n.z,r,this.tension)}interpolateToVec(e,t,i,n,r,s){s.x=Bo(e.x,t.x,i.x,n.x,r,this.tension),s.y=Bo(e.y,t.y,i.y,n.y,r,this.tension),s.z=Bo(e.z,t.z,i.z,n.z,r,this.tension)}interpolatePosition(e,t,i,n,r,s){for(var a=0;a1&&(c=1),this.interpolateToVec(e,t,i,n,l,this.vec1),this.interpolateToVec(e,t,i,n,c,this.vec2),this.vec2.sub(this.vec1).normalize(),this.vec2.toArray(r,u)}}vectorSubdivide(e,t,i,n,r){let s,a=t.next(),o=t.next(),l=t.next();const c=t.size,u=c-1;let h=n||0;for(let n=0;n0&&n{if(e.residueCount<4)return;i.push(e);const n=this.getSpline(e),r=this.getAspectRatio(e),s=n.getSubdividedPosition(),a=n.getSubdividedOrientation(),o=n.getSubdividedColor(this.getColorParams()),l=n.getSubdividedPicking(),c=n.getSubdividedSize(this.getRadiusParams());t.push(new ry(Object.assign({},s,a,o,l,c),this.getBufferParams({radialSegments:this.radialSegments,aspectRatio:r,capped:this.capped})))}),e.getSelection()),{bufferList:t,polymerList:i}}updateData(t,i){e.Debug&&Fl.time(this.type+" repr update"),t=t||{};for(var n=0,r=i.polymerList.length;n0;Xu(w,y,S);const r=qu(w,b)<0;if(th(w,b,qu(b,v)),Xu(M,v,w),th(w,b,qu(b,x)),Xu(A,x,w),0===Ju(M)||0===Ju(A))continue;ih(M,M),ih(A,A);const R=s[I]=lh(M,A);o[I]=(vc*R).toFixed(1)+String.fromCharCode(176),Wu(P,M,b),ih(P,P),qu(P,A)<0&&oh(P,P),x_(w,S,M,P,R/2),Zu(w,a,3*I);const L=Math.ceil(R/i),k=L+(t.extendLine?4:2),O=t.extendLine?36:0,N=new Float32Array(3*k),F=new Float32Array(3*k),B=new Float32Array(9*L),z=new Float32Array(O);l[I]=N,c[I]=F,u[I]=B,h[I]=z,t.extendLine&&(n?(Xu(w,p,_),ih(w,w),th(C,w,1/qu(M,w)),Yu(C,C,_)):(th(C,v,1/qu(M,v)),Yu(C,C,g)),r?(Xu(w,y,g),ih(w,w),th(T,w,1/qu(A,w)),Yu(T,T,g)):(th(T,x,1/qu(A,x)),Yu(T,T,_))),Yu(E,S,M);let U=0;t.extendLine?(Zu(p,N,U),Zu(C,F,U),U+=3,Zu(C,N,U),Zu(E,F,U),U+=3,Zu(C,z,0),Zu(E,z,3),Zu(n?_:g,z,6),Zu(n?_:g,z,9),Zu(E,z,12),Zu(S,z,15)):(Zu(S,N,U),Zu(E,F,U),U+=3);const V=function(e,t){const i=9*t;Zu(S,B,i),Zu(E,B,i+3),Zu(E,N,U),x_(E,S,M,P,e),Zu(E,B,i+6),Zu(E,F,U),U+=3};let $=0;for(let e=i;e{const t=ly(i,e);Object.assign(e,t)})),t.side=uo(t.side,"double"),t.opacity=uo(t.opacity,.5),t.radiusType=uo(t.radiusType,"size"),t.radiusSize=uo(t.radiusSize,.15),super.init(t)}getHistogramBinBorderBufferParameters(){return this.getBufferParams({linewidth:this.histogramBinBorderWidth,visible:this.histogramBinBorderVisible,opacity:this.histogramBinBorderOpacity})}getBondArrowsBufferParameters(){return this.getBufferParams({linewidth:this.bondArrowWidth,visible:this.bondArrowVisible,opacity:this.bondArrowOpacity})}getOpaqueMiddleDiscBufferParameters(){return this.getBufferParams({visible:this.opaqueMiddleDiscVisible,opacity:this.opaqueMiddleDiscOpacity})}getHistogramBufferParameters(){return this.getBufferParams({visible:!0,opacity:this.histogramOpacity,side:"double"})}createData(e){if(!e.atomCount||!this.histogramsData.length)return;this.histogramsData.forEach((t=>t.atomPositions=b_(e,[t.atomQuad])));const t=this.scaleBinToSectorArea?function(e){return Math.sqrt(e)}:function(e){return e};function i(e){const t=e.map((e=>e.length)),i=new Float32Array(Rc(t));let n=0;for(let t=0;te.startPoints))),position2:i(e.map((e=>e.endPoints))),color:i(e.map((e=>e.startColors))),color2:i(e.map((e=>e.endColors)))},t)}function r(e,t){return new Bf({position:i(e.map((e=>e.triangles))),color:i(e.map((e=>e.triangleColors)))},t)}this.histogramsData.forEach((e=>e.histogram360Scaled=e.histogram360.map(t)));const s=[];for(let e=0;e=3&&(t=hy(i)),void 0!==t&&s.push(t)}return this.frontHistogramBinBordersBuffer=n(s.map((e=>e.frontHistogramBinBorders)),this.getHistogramBinBorderBufferParameters()),this.backHistogramBinBordersBuffer=n(s.map((e=>e.backHistogramBinBorders)),this.getHistogramBinBorderBufferParameters()),this.adjacentBondArrowsBuffer=n(s.map((e=>e.adjacentBondArrows)),this.getBondArrowsBufferParameters()),this.distantBondArrowsBuffer=n(s.map((e=>e.distantBondArrows)),this.getBondArrowsBufferParameters()),this.opaqueMiddleDiscBuffer=r(s.map((e=>e.opaqueMiddleDisc)),this.getOpaqueMiddleDiscBufferParameters()),this.frontHistogramBuffer=r(s.map((e=>e.frontHistogram)),this.getHistogramBufferParameters()),this.backHistogramBuffer=r(s.map((e=>e.backHistogram)),this.getHistogramBufferParameters()),{bufferList:[].concat(this.frontHistogramBinBordersBuffer,this.backHistogramBinBordersBuffer,this.adjacentBondArrowsBuffer,this.distantBondArrowsBuffer,this.opaqueMiddleDiscBuffer,this.frontHistogramBuffer,this.backHistogramBuffer)}}setParameters(e){return super.setParameters(e,{},!1),e&&void 0!==e.histogramBinBorderVisible&&this.setVisibility(this.visible),this}setVisibility(e,t){return super.setVisibility(e,!0),this.frontHistogramBinBordersBuffer&&this.frontHistogramBinBordersBuffer.setVisibility(this.histogramBinBorderVisible),this.backHistogramBinBordersBuffer&&this.backHistogramBinBordersBuffer.setVisibility(this.histogramBinBorderVisible),t||this.viewer.requestRender(),this}}function hy(e){const t=e.atomPositions,i=e.histogram360Scaled,n=i.length<=180?360:2*i.length,r={triangles:new Float32Array(3*n*3),triangleColors:cy(e.opaqueMiddleDiscColor,3*n)},s={triangles:new Float32Array(3*i.length*3),triangleColors:cy(e.frontHistogramColor,3*i.length)},a={triangles:new Float32Array(3*i.length*3),triangleColors:cy(e.backHistogramColor,3*i.length)},o={startPoints:new Float32Array(3*i.length),endPoints:new Float32Array(3*i.length),startColors:cy(e.histogramBinBorderColor,i.length),endColors:cy(e.histogramBinBorderColor,i.length)},l={startPoints:new Float32Array(3*i.length),endPoints:new Float32Array(3*i.length),startColors:cy(e.histogramBinBorderColor,i.length),endColors:cy(e.histogramBinBorderColor,i.length)},c={startPoints:new Float32Array(6),endPoints:new Float32Array(6),startColors:cy(e.adjacentBondArrowColor,i.length),endColors:cy(e.adjacentBondArrowColor,i.length)},u={startPoints:new Float32Array(6),endPoints:new Float32Array(6),startColors:cy(e.distantBondArrowColor,i.length),endColors:cy(e.distantBondArrowColor,i.length)},h=ju(),d=ju(),f=ju(),m=ju(),p=ju(),g=ju(),_=ju(),y=ju(),v=ju(),b=ju(),x=ju(),w=ju(),S=ju(),M=ju(),A=ju(),C=ju(),T=[h,d,f,m];for(let e=0;e{let d=t[0],f=t[1];if("number"==typeof d&&Number.isInteger(d)&&"number"==typeof f&&Number.isInteger(f)){if(!h.get(d)||!h.get(f))return void(u+=1);l.index=d,c.index=f}else{s.setString(d),a.setString(f);var m=e.getAtomIndices(s),p=e.getAtomIndices(a);if(!m.length||!p.length)return void(u+=1);l.index=m[0],c.index=p[0]}o.addBond(l,c,1),i-=u;var g=l.distanceTo(c);switch(this.labelUnit){case"angstrom":n[i]=g.toFixed(2)+" "+String.fromCharCode(8491);break;case"nm":n[i]=(g/10).toFixed(2)+" nm";break;default:n[i]=g.toFixed(2)}var _=3*i;r[_+0]=(l.x+c.x)/2,r[_+1]=(l.y+c.y)/2,r[_+2]=(l.z+c.z)/2})),u>0&&(i-=u,r=r.subarray(0,3*i));var d=new Ih(o.count,!0);return{text:n,position:r,bondSet:d,bondStore:o}}getBondData(e,t,i){const n=e.getBondData(this.getBondParams(t,i));return n.picking&&(n.picking=new Yd(n.picking.array,n.picking.structure,i.bondStore)),n}createData(e){if(!e.atomCount||!this.atomPair.length)return;const t=this.atomPair.length,i=new Oi(this.labelColor),n=this.getDistanceData(e,this.atomPair);this.textBuffer=new I_({position:n.position,size:Sc(t,this.labelSize),color:Mc(t,i.r,i.g,i.b),text:n.text},this.getLabelBufferParams());const r={bondSet:n.bondSet,bondStore:n.bondStore},s=this.getBondData(e,{position:!0,color:!0,picking:!0,radius:this.useCylinder},r);return this.useCylinder?this.distanceBuffer=new X_(s,this.getBufferParams({openEnded:this.openEnded,radialSegments:this.radialSegments,disableImpostor:this.disableImpostor,dullInterior:!0})):this.distanceBuffer=new L_(uh(s),this.getBufferParams({linewidth:this.linewidth,visible:this.lineVisible,opacity:this.lineOpacity})),{bondSet:n.bondSet,bondStore:n.bondStore,position:n.position,bufferList:[this.textBuffer,this.distanceBuffer]}}updateData(e,t){super.updateData(e,t);const i={bondSet:t.bondSet,bondStore:t.bondStore},n=this.getBondData(t.sview,e,i),r={};e&&!e.color||Object.assign(r,{color:n.color,color2:n.color2}),e&&!e.radius||Object.assign(r,{radius:n.radius}),this.distanceBuffer.setAttributes(r)}setParameters(e){return super.setParameters(e,{},!1),this.useCylinder||(e&&e.lineOpacity&&this.distanceBuffer.setParameters({opacity:e.lineOpacity}),e&&void 0!==e.opacity&&this.distanceBuffer.setParameters({opacity:this.lineOpacity}),e&&e.linewidth&&this.distanceBuffer.setParameters({linewidth:e.linewidth})),this}}function fy(e){return 2*(e.position.length/3)*3}Hl.add("distance",dy);const my=Object.assign({scale:1,color:"grey"},Of);class py extends Ff{constructor(e,t={}){super({position:new Float32Array(fy(e)),color:new Float32Array(fy(e))},t),this.isLine=!0,this.vertexShader="Line.vert",this.fragmentShader="Line.frag";const i=new Oi(this.parameters.color),n=this.geometry.attributes;Mc(fy(e)/3,i.r,i.g,i.b,n.color.array),this.setAttributes(e)}get defaultParameters(){return my}setAttributes(e={}){const t=this.geometry.attributes;let i,n,r;e.position&&e.vector&&(i=e.position,n=e.vector,r=t.position.array,t.position.needsUpdate=!0);const s=this.size/2,a=this.parameters.scale;if(i&&n)for(let e=0;e{if(e.residueCount<4)return;i.push(e);const n=new bm(e),r=n.getPosition(),s=n.getColor(this.getColorParams()),a=n.getSize(this.getRadiusParams()),o=n.getPicking();t.push(new Np({position:r.center,color:s.color,radius:a.size,picking:o.picking},this.getBufferParams({sphereDetail:this.sphereDetail,disableImpostor:this.disableImpostor,dullInterior:!0})),new py({position:r.center,vector:r.axis},this.getBufferParams({color:"skyblue",scale:1})),new py({position:r.center,vector:r.resdir},this.getBufferParams({color:"lightgreen",scale:1})))}),e.getSelection()),{bufferList:t,polymerList:i}}updateData(t,i){e.Debug&&Fl.time(this.type+" repr update"),t=t||{};for(let e=0,n=i.polymerList.length;e radius2) {\nspaceposition.y = mapping.y * 1.5 * radius1;\nspaceposition.x = mapping.x * 1.5 * radius1;\n} else {\nspaceposition.y = mapping.y * 1.5 * radius2;\nspaceposition.x = mapping.x * 1.5 * radius2;\n}\nspaceposition.w = 1.0;\nvec4 e3 = vec4( 1.0 );\nvec3 e1, e1_temp, e2, e2_temp;\ne3.xyz = normalize(position_atom1-position_atom2);\nif (e3.z == 0.0) { e3.z = 0.0000000000001;}\nif ( (position_atom1.x - position_atom2.x) == 0.0) { position_atom1.x += 0.001;}\nif ( (position_atom1.y - position_atom2.y) == 0.0) { position_atom1.y += 0.001;}\nif ( (position_atom1.z - position_atom2.z) == 0.0) { position_atom1.z += 0.001;}\nvec4 focus = vec4( 1.0 );\nfocus.x = ( position_atom1.x*position_atom1.x - position_atom2.x*position_atom2.x +\n( radius2*radius2 - radius1*radius1 )*e3.x*e3.x/shrink )/(2.0*(position_atom1.x - position_atom2.x));\nfocus.y = ( position_atom1.y*position_atom1.y - position_atom2.y*position_atom2.y +\n( radius2*radius2 - radius1*radius1 )*e3.y*e3.y/shrink )/(2.0*(position_atom1.y - position_atom2.y));\nfocus.z = ( position_atom1.z*position_atom1.z - position_atom2.z*position_atom2.z +\n( radius2*radius2 - radius1*radius1 )*e3.z*e3.z/shrink )/(2.0*(position_atom1.z - position_atom2.z));\ne1.x = 1.0;\ne1.y = 1.0;\ne1.z = ( (e3.x*focus.x + e3.y*focus.y + e3.z*focus.z) - e1.x*e3.x - e1.y*e3.y)/e3.z;\ne1_temp = e1 - focus.xyz;\ne1 = normalize(e1_temp);\ne2_temp = e1.yzx * e3.zxy - e1.zxy * e3.yzx;\ne2 = normalize(e2_temp);\nmat3 R= mat3( e1.xyz, e2.xyz, e3.xyz );\nvertex_position.xyz = R * spaceposition.xyz;\nvertex_position.w = 1.0;\nvertex_position.x += (position_atom1.x+position_atom2.x) / 2.0;\nvertex_position.y += (position_atom1.y+position_atom2.y) / 2.0;\nvertex_position.z += (position_atom1.z+position_atom2.z) / 2.0;\ngl_Position = modelViewProjectionMatrix * vertex_position;\nvec4 i_near, i_far;\nvec4 near = gl_Position;\nnear.z = 0.0 ;\nnear = modelViewProjectionMatrixInverse * near;\ni_near = near;\nvec4 far = gl_Position;\nfar.z = far.w ;\ni_far = modelViewProjectionMatrixInverse * far;\nprime1 = vec4( position_atom1 - (position_atom1 - focus.xyz)*shrink, 1.0 );\nprime2 = vec4( position_atom2 - (position_atom2 - focus.xyz)*shrink, 1.0 );\nfloat Rsquare = (radius1*radius1/shrink) - (\n(position_atom1.x - focus.x)*(position_atom1.x - focus.x) +\n(position_atom1.y - focus.y)*(position_atom1.y - focus.y) +\n(position_atom1.z - focus.z)*(position_atom1.z - focus.z)\n);\nfocus.w = Rsquare;\nmatrix_near = mat4( i_near, i_far, focus, e3 );\ngl_Position.z = 1.0;\n}"),Wl.add("shader/HyperballStickImpostor.frag","#define STANDARD\n#define IMPOSTOR\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 interiorColor;\nuniform float interiorDarkening;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\nuniform float clipNear;\nuniform float shrink;\nuniform mat4 modelViewMatrix;\nuniform mat4 modelViewProjectionMatrix;\nuniform mat4 modelViewMatrixInverseTranspose;\nuniform mat4 projectionMatrix;\nvarying mat4 matrix_near;\nvarying vec4 prime1;\nvarying vec4 prime2;\nvarying float vRadius;\nvarying float vRadius2;\n#ifdef PICKING\nuniform float objectId;\nvarying vec3 vPickingColor;\n#else\nvarying vec3 vColor1;\nvarying vec3 vColor2;\n#include common\n#include fog_pars_fragment\n#include bsdfs\n#include lights_pars_begin\n#include lights_physical_pars_fragment\n#endif\nbool interior = false;\nfloat calcClip( vec4 cameraPos ){\nreturn dot( cameraPos, vec4( 0.0, 0.0, 1.0, clipNear - 0.5 ) );\n}\nfloat calcClip( vec3 cameraPos ){\nreturn calcClip( vec4( cameraPos, 1.0 ) );\n}\nfloat calcDepth( in vec3 cameraPos ){\nvec2 clipZW = cameraPos.z * projectionMatrix[2].zw + projectionMatrix[3].zw;\nreturn 0.5 + 0.5 * clipZW.x / clipZW.y;\n}\nstruct Ray {\nvec3 origin ;\nvec3 direction ;\n};\nbool cutoff_plane (vec3 M, vec3 cutoff, vec3 x3){\nfloat a = x3.x;\nfloat b = x3.y;\nfloat c = x3.z;\nfloat d = -x3.x*cutoff.x-x3.y*cutoff.y-x3.z*cutoff.z;\nfloat l = a*M.x+b*M.y+c*M.z+d;\nif (l<0.0) {return true;}\nelse{return false;}\n}\nvec3 isect_surf(Ray r, mat4 matrix_coef){\nvec4 direction = vec4(r.direction, 0.0);\nvec4 origin = vec4(r.origin, 1.0);\nfloat a = dot(direction,(matrix_coef*direction));\nfloat b = dot(origin,(matrix_coef*direction));\nfloat c = dot(origin,(matrix_coef*origin));\nfloat delta =b*b-a*c;\ngl_FragColor.a = 1.0;\nif (delta<0.0){\ndiscard;\n}\nfloat t1 =(-b-sqrt(delta))/a;\nreturn r.origin+t1*r.direction;\n}\nvec3 isect_surf2(Ray r, mat4 matrix_coef){\nvec4 direction = vec4(r.direction, 0.0);\nvec4 origin = vec4(r.origin, 1.0);\nfloat a = dot(direction,(matrix_coef*direction));\nfloat b = dot(origin,(matrix_coef*direction));\nfloat c = dot(origin,(matrix_coef*origin));\nfloat delta =b*b-a*c;\ngl_FragColor.a = 1.0;\nif (delta<0.0){\ndiscard;\n}\nfloat t2 =(-b+sqrt(delta))/a;\nreturn r.origin+t2*r.direction;\n}\nRay primary_ray(vec4 near1, vec4 far1){\nvec3 near=near1.xyz/near1.w;\nvec3 far=far1.xyz/far1.w;\nreturn Ray(near,far-near);\n}\nfloat update_z_buffer(vec3 M, mat4 ModelViewP){\nfloat depth1;\nvec4 Ms=(ModelViewP*vec4(M,1.0));\nreturn depth1=(1.0+Ms.z/Ms.w)/2.0;\n}\nvoid main(){\nfloat radius = max( vRadius, vRadius2 );\nvec4 i_near, i_far, focus;\nvec3 e3, e1, e1_temp, e2;\ni_near = vec4(matrix_near[0][0],matrix_near[0][1],matrix_near[0][2],matrix_near[0][3]);\ni_far = vec4(matrix_near[1][0],matrix_near[1][1],matrix_near[1][2],matrix_near[1][3]);\nfocus = vec4(matrix_near[2][0],matrix_near[2][1],matrix_near[2][2],matrix_near[2][3]);\ne3 = vec3(matrix_near[3][0],matrix_near[3][1],matrix_near[3][2]);\ne1.x = 1.0;\ne1.y = 1.0;\ne1.z = ( (e3.x*focus.x + e3.y*focus.y + e3.z*focus.z) - e1.x*e3.x - e1.y*e3.y)/e3.z;\ne1_temp = e1 - focus.xyz;\ne1 = normalize(e1_temp);\ne2 = normalize(cross(e1,e3));\nvec4 equation = focus;\nfloat shrinkfactor = shrink;\nfloat t1 = -1.0/(1.0-shrinkfactor);\nfloat t2 = 1.0/(shrinkfactor);\nvec4 colonne1, colonne2, colonne3, colonne4;\nmat4 mat;\nvec3 equation1 = vec3(t2,t2,t1);\nfloat A1 = - e1.x*equation.x - e1.y*equation.y - e1.z*equation.z;\nfloat A2 = - e2.x*equation.x - e2.y*equation.y - e2.z*equation.z;\nfloat A3 = - e3.x*equation.x - e3.y*equation.y - e3.z*equation.z;\nfloat A11 = equation1.x*e1.x*e1.x + equation1.y*e2.x*e2.x + equation1.z*e3.x*e3.x;\nfloat A21 = equation1.x*e1.x*e1.y + equation1.y*e2.x*e2.y + equation1.z*e3.x*e3.y;\nfloat A31 = equation1.x*e1.x*e1.z + equation1.y*e2.x*e2.z + equation1.z*e3.x*e3.z;\nfloat A41 = equation1.x*e1.x*A1 + equation1.y*e2.x*A2 + equation1.z*e3.x*A3;\nfloat A22 = equation1.x*e1.y*e1.y + equation1.y*e2.y*e2.y + equation1.z*e3.y*e3.y;\nfloat A32 = equation1.x*e1.y*e1.z + equation1.y*e2.y*e2.z + equation1.z*e3.y*e3.z;\nfloat A42 = equation1.x*e1.y*A1 + equation1.y*e2.y*A2 + equation1.z*e3.y*A3;\nfloat A33 = equation1.x*e1.z*e1.z + equation1.y*e2.z*e2.z + equation1.z*e3.z*e3.z;\nfloat A43 = equation1.x*e1.z*A1 + equation1.y*e2.z*A2 + equation1.z*e3.z*A3;\nfloat A44 = equation1.x*A1*A1 + equation1.y*A2*A2 + equation1.z*A3*A3 - equation.w;\ncolonne1 = vec4(A11,A21,A31,A41);\ncolonne2 = vec4(A21,A22,A32,A42);\ncolonne3 = vec4(A31,A32,A33,A43);\ncolonne4 = vec4(A41,A42,A43,A44);\nmat = mat4(colonne1,colonne2,colonne3,colonne4);\nRay ray = primary_ray(i_near,i_far) ;\nvec3 M;\nM = isect_surf(ray, mat);\nif (cutoff_plane(M, prime1.xyz, -e3) || cutoff_plane(M, prime2.xyz, e3)){ discard; }\nvec4 M1 = vec4(M,1.0);\nvec4 M2 = mat*M1;\nvec3 _normal = ( modelViewMatrixInverseTranspose * M2 ).xyz;\ngl_FragDepthEXT = update_z_buffer(M, modelViewProjectionMatrix) ;\n#ifdef NEAR_CLIP\nif( calcClip( modelViewMatrix * vec4( M, 1.0 ) ) > 0.0 ){\nM = isect_surf2(ray, mat);\nif( calcClip( modelViewMatrix * vec4( M, 1.0 ) ) > 0.0 )\ndiscard;\ninterior = true;\ngl_FragDepthEXT = update_z_buffer(M, modelViewProjectionMatrix) ;\nif( gl_FragDepthEXT >= 0.0 ){\ngl_FragDepthEXT = max( 0.0, calcDepth( vec3( - ( clipNear - 0.5 ) ) ) + ( 0.0000001 / radius ) );\n}\n}else if( gl_FragDepthEXT <= 0.0 ){\nM = isect_surf2(ray, mat);\ninterior = true;\ngl_FragDepthEXT = update_z_buffer(M, modelViewProjectionMatrix);\nif( gl_FragDepthEXT >= 0.0 ){\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / radius );\n}\n}\n#else\nif( gl_FragDepthEXT <= 0.0 ){\nM = isect_surf2(ray, mat);\ninterior = true;\ngl_FragDepthEXT = update_z_buffer(M, modelViewProjectionMatrix) ;\nif( gl_FragDepthEXT >= 0.0 ){\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / radius );\n}\n}\n#endif\nif (cutoff_plane(M, prime1.xyz, -e3) || cutoff_plane(M, prime2.xyz, e3)){ discard; }\nif (gl_FragDepthEXT < 0.0)\ndiscard;\nif (gl_FragDepthEXT > 1.0)\ndiscard;\nfloat distance_ratio = ((M.x-prime2.x)*e3.x + (M.y-prime2.y)*e3.y +(M.z-prime2.z)*e3.z) /\ndistance(prime2.xyz,prime1.xyz);\n#ifdef PICKING\nif( opacity < 0.3 )\ndiscard;\ngl_FragColor = vec4( vPickingColor, objectId );\n#else\nvec3 vViewPosition = -( modelViewMatrix * vec4( M, 1.0 ) ).xyz;\nvec3 vNormal = _normal;\nvec3 vColor;\nif( distance_ratio>0.5 ){\nvColor = vColor1;\n}else{\nvColor = vColor2;\n}\nvec4 diffuseColor = vec4( diffuse, opacity );\nReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\nvec3 totalEmissiveLight = emissive;\n#include color_fragment\n#include roughnessmap_fragment\n#include metalnessmap_fragment\nvec3 normal = normalize( vNormal );\nvec3 nonPerturbedNormal = normal;\n#include lights_physical_fragment\n#include lights_fragment_begin\n#include lights_fragment_end\nvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveLight;\nif( interior ){\n#ifdef USE_INTERIOR_COLOR\noutgoingLight.xyz = interiorColor;\n#else\n#ifdef DIFFUSE_INTERIOR\noutgoingLight.xyz = vColor;\n#endif\n#endif\noutgoingLight.xyz *= 1.0 - interiorDarkening;\n}\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\n#include premultiplied_alpha_fragment\n#include tonemapping_fragment\n#include colorspace_fragment\n#include fog_fragment\n#endif\n}");const yy=new Float32Array([-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,1,1,-1,1,1]),vy=new Uint16Array([0,1,2,0,2,3,1,5,6,1,6,2,4,6,5,4,7,6,0,7,4,0,3,7,0,5,1,0,4,5,3,2,6,3,6,7]);class by extends Dp{constructor(e,t={}){super("v3",e,t)}get mapping(){return yy}get mappingIndices(){return vy}get mappingIndicesSize(){return 36}get mappingSize(){return 8}get mappingItemSize(){return 3}}const xy=Object.assign({shrink:.14},Of),wy=Object.assign({shrink:{uniform:!0}},Nf);class Sy extends by{constructor(e,t={}){super(e,t),this.parameterTypes=wy,this.isImpostor=!0,this.vertexShader="HyperballStickImpostor.vert",this.fragmentShader="HyperballStickImpostor.frag",this.addUniforms({modelViewProjectionMatrix:{value:new qt},modelViewProjectionMatrixInverse:{value:new qt},modelViewMatrixInverseTranspose:{value:new qt},shrink:{value:this.parameters.shrink}}),this.addAttributes({position1:{type:"v3",value:null},position2:{type:"v3",value:null},color2:{type:"c",value:null},radius:{type:"f",value:null},radius2:{type:"f",value:null}}),this.setAttributes(e),this.makeMapping()}get defaultParameters(){return xy}}Object.assign({disableImpostor:!1},z_,xy);const My=class{constructor(e,t={}){return!Ol||t&&t.disableImpostor?(e.radius=function(e,t){const i=e.length,n=new Float32Array(i);for(let r=0;ro.push(n.atomLabel(e)))))}else if("residue"===this.labelGrouping){t&&!t.position||(l=[]),t&&!t.color||(u=[]),t&&!t.radius||(c=[]),t&&!t.text||(o=[]),i.colorParams&&(i.colorParams.structure=e.getStructure());const h=$l.getScheme(i.colorParams),d=new cm(i.radiusParams),f=e.getAtomProxy();let m=0;e.eachResidue((e=>{const i=3*m;e.isProtein()||e.isNucleic()?(f.index=e.traceAtomIndex,t&&!t.position||f.positionToArray(l,i)):(f.index=e.atomOffset,t&&!t.position||e.positionToArray(l,i)),t&&!t.color||h.atomColorToArray(f,u,i),t&&!t.radius||(c[m]=d.atomRadius(f)),t&&!t.text||o.push(n.atomLabel(f)),++m})),t&&!t.position||(r=new Float32Array(l)),t&&!t.color||(a=new Float32Array(u)),t&&!t.radius||(s=new Float32Array(c))}return{position:r,size:s,color:a,text:o}}createData(e){return{bufferList:[new I_(this.getTextData(e,{position:!0,color:!0,radius:!0,text:!0}),this.getBufferParams({fontFamily:this.fontFamily,fontStyle:this.fontStyle,fontWeight:this.fontWeight,xOffset:this.xOffset,yOffset:this.yOffset,zOffset:this.zOffset,attachment:this.attachment,showBorder:this.showBorder,borderColor:this.borderColor,borderWidth:this.borderWidth,showBackground:this.showBackground,backgroundColor:this.backgroundColor,backgroundMargin:this.backgroundMargin,backgroundOpacity:this.backgroundOpacity,fixedSize:this.fixedSize}))]}}updateData(e,t){t.bufferList[0].setAttributes(this.getTextData(t.sview,e))}getAtomRadius(){return 0}}function Py(e){const t=e.getAtomSet(),i=e.getBondSet(),n=e.getBondProxy();return i.forEach((function(e){n.index=e,t.clear(n.atomIndex1),t.clear(n.atomIndex2)})),t}Hl.add("label",Ty);class Ey extends y_{constructor(e,t,i){super(e,t,i),this.type="line",this.parameters=Object.assign({multipleBond:{type:"select",rebuild:!0,options:{off:"off",symmetric:"symmetric",offset:"offset"}},bondSpacing:{type:"number",precision:2,max:2,min:.5},linewidth:{type:"integer",max:50,min:1,buffer:!0},lines:{type:"boolean",rebuild:!0},crosses:{type:"select",rebuild:!0,options:{off:"off",lone:"lone",all:"all"}},crossSize:{type:"number",precision:2,max:2,min:.1}},this.parameters,{flatShaded:null,side:null,wireframe:null,roughness:null,metalness:null}),this.init(i)}init(e){var t=e||{};this.multipleBond=uo(t.multipleBond,"off"),this.bondSpacing=uo(t.bondSpacing,1),this.linewidth=uo(t.linewidth,2),this.lines=uo(t.lines,!0),this.crosses=uo(t.crosses,"lone"),this.crossSize=uo(t.crossSize,.4),super.init(t)}getAtomRadius(e){return.1}getBondParams(e,t){return t=Object.assign({multipleBond:this.multipleBond,bondSpacing:this.bondSpacing,radiusParams:{type:"size",size:.1,scale:1}},t),super.getBondParams(e,t)}_crossData(e,t){if(e&&!e.position&&!e.color)return;const i={};"lone"===this.crosses&&Object.assign(i,{atomSet:Py(t)});const n=t.getAtomData(this.getAtomParams(e,i)),r={},s=n.position,a=n.color,o=n.picking,l=(s||a).length,c=3*l;let u=new Float32Array(0),h=new Float32Array(0),d=new Float32Array(0),f=new Float32Array(0),m=0,p=new Float32Array(0);e&&!e.position||(u=r.position1=new Float32Array(c),h=r.position2=new Float32Array(c),m=this.crossSize/2),e&&!e.color||(d=r.color=new Float32Array(c),f=r.color2=new Float32Array(c)),e&&!e.picking||(p=new Float32Array(3*n.picking.array.length));for(let t=0;tc?d[p]=-1:(l=Math.sqrt(c-o),d[p]=Math.floor(l)),++p;m[g]=h,f[g]=d}}function P(i){var n,r,s,o,h,p,y,b,x,w,M,A,C,T,P,E,I,D,R=3*i,L=i;n=Math.floor(.5+a*(e[R]+d[0])),r=Math.floor(.5+a*(e[R+1]+d[1])),s=Math.floor(.5+a*(e[R+2]+d[2]));var k,O=t[L],N=f[O],F=0,B=c*u,z=m[O];for(w=0;w=l||T>=c||P>=u)){var U=C*B+T*u+P;if(g)if(_[U]&S){if(_[U]&S){var V=v[U];V!==R&&y*y+b*b+x*x<(o=n+y-Math.floor(.5+a*(e[V]+d[0])))*o+(h=r+b-Math.floor(.5+a*(e[V+1]+d[1])))*h+(p=s+x-Math.floor(.5+a*(e[V+2]+d[2])))*p&&(v[U]=i)}}else _[U]|=S,v[U]=i;else _[U]|=S}F++}}function E(t){var i,n;for(console.time("EDTSurface fillvoxels"),i=0,n=_.length;i=l||S>=c||A>=u)){var B=w*F+S*u+A;if(_[B]&M){if(g){var z=v[B];y*y+b*b+x*x<(o=Math.floor(.5+a*(e[z]+d[0])))*o+(h=Math.floor(.5+a*(e[z+1]+d[1])))*h+(p=Math.floor(.5+a*(e[z+2]+d[2])))*p&&(v[B]=i)}}else _[B]|=M,g&&(v[B]=i)}O++}}function D(){var e,t,i,n;console.time("EDTSurface fastdistancemap");var r,s=Iy(l,c,u,Uint16Array,3),a=c*u,h=p*p,d=0;for(e=0;e0);var w,C=o*o,T=new Uint16Array(3);for(e=0;e=C)||(_[r]|=A,g&&_[r]&M&&(s.toArray(e,t,i,T),w=T[0]*a+T[1]*u+T[2],v[r]=v[w])));console.timeEnd("EDTSurface fastdistancemap")}function R(e,t,i,n){var r,s,a,o,h,d,f,m,p,g,v,b,x=new Uint16Array(3),w=0;if(0===i)return w;var T=-1,P=-1,E=-1,I=c*u;for(f=0,p=i;f-1&&P-1&&E-1&&(_[v=T*I+u*P+E]&S&&!(_[v]&M)?(t.fromArray(T,P,E,x),g=(o=T-x[0])*o+(h=P-x[1])*h+(d=E-x[2])*d,y[v]=g,_[v]|=M,_[v]|=A,n[w]=T,n[w+1]=P,n[w+2]=E,w+=3):_[v]&S&&_[v]&M&&(g=(o=T-x[0])*o+(h=P-x[1])*h+(d=E-x[2])*d)-1&&P-1&&E-1&&(_[v=T*I+u*P+E]&S&&!(_[v]&M)?(t.fromArray(T,P,E,x),g=(o=T-x[0])*o+(h=P-x[1])*h+(d=E-x[2])*d,y[v]=g,_[v]|=M,_[v]|=A,n[w]=T,n[w+1]=P,n[w+2]=E,w+=3):_[v]&S&&_[v]&M&&(g=(o=T-x[0])*o+(h=P-x[1])*h+(d=E-x[2])*d)-1&&P-1&&E-1&&(_[v=T*I+u*P+E]&S&&!(_[v]&M)?(t.fromArray(T,P,E,x),g=(o=T-x[0])*o+(h=P-x[1])*h+(d=E-x[2])*d,y[v]=g,_[v]|=M,_[v]|=A,n[w]=T,n[w+1]=P,n[w+2]=E,w+=3):_[v]&S&&_[v]&M&&(g=(o=T-x[0])*o+(h=P-x[1])*h+(d=E-x[2])*d)-1&&a-1&&h-1&&oI&&(I=k)}return{neighbourListLength:27*I+1,withinRadii:function(r,s,a,o,h){for(var d=0,f=m(r,l),p=m(s,c),g=m(a,u),_=Math.max(0,f-1),x=Math.max(0,p-1),S=Math.max(0,g-1),M=Math.min(y,f+2),A=Math.min(v,p+2),E=Math.min(b,g+2),I=_;Id&&(d=u[e]);!function(){const e=Pf(l,c,d,m,0);m=e.scaleFactor,_=e.dim,y=e.matrix,L=Math.max(5,2+Math.floor(f*m)),v=Sc(_[0]*_[1]*_[2],-1001),b=new Int32Array(v.length),x=new Float32Array(_[0]),w=new Float32Array(_[1]),S=new Float32Array(_[2]),O(x,l[0],1/m),O(w,l[1],1/m),O(S,l[2],1/m)}(),function(){var e=0,t=2*Math.PI/g;A=new Float32Array(g),M=new Float32Array(g);for(var i=0;i=0;){if(s!==n&&s!==r&&F(s,e,t,i))return P=s,s;s=T[++a]}return P=-1,-1}function F(t,i,n,r){var s=3*t,a=h[t],o=e[s]-i,l=e[s+1]-n,c=e[s+2]-r;return o*o+l*l+c*c0&&d=0;)e{t(this._makeSurface(e.data.sd,i))}),(e=>{console.warn("MolecularSurface.getSurfaceWorker error - trying without worker",e),this.worker.terminate(),this.worker=void 0;const n=this.getSurface(i);t(n)}))}else{const e=this.getSurface(i);t(e)}}dispose(){this.worker&&this.worker.terminate()}}class Oy extends y_{constructor(e,t,i){super(e,t,i),this.type="surface",this.parameters=Object.assign({surfaceType:{type:"select",rebuild:!0,options:{vws:"vws",sas:"sas",ms:"ms",ses:"ses",av:"av"}},probeRadius:{type:"number",precision:1,max:20,min:0,rebuild:!0},smooth:{type:"integer",precision:1,max:10,min:0,rebuild:!0},scaleFactor:{type:"number",precision:1,max:5,min:0,rebuild:!0},cutoff:{type:"number",precision:2,max:50,min:0,rebuild:!0},contour:{type:"boolean",rebuild:!0},background:{type:"boolean",rebuild:!0},opaqueBack:{type:"boolean",buffer:!0},filterSele:{type:"text",rebuild:!0},colorVolume:{type:"hidden"},useWorker:{type:"boolean",rebuild:!0}},this.parameters,{radius:null,scale:null}),this.__infoList=[],this.structure.signals.refreshed.add((()=>{this.__forceNewMolsurf=!0})),this.toBePrepared=!0,this.init(i)}init(e){const t=e||{};t.colorScheme=uo(t.colorScheme,"uniform"),t.colorValue=uo(t.colorValue,14540253),t.disablePicking=uo(t.disablePicking,!0),this.surfaceType=uo(t.surfaceType,"ms"),this.probeRadius=uo(t.probeRadius,1.4),this.smooth=uo(t.smooth,2),this.scaleFactor=uo(t.scaleFactor,2),this.cutoff=uo(t.cutoff,0),this.contour=uo(t.contour,!1),this.background=uo(t.background,!1),this.opaqueBack=uo(t.opaqueBack,!0),this.filterSele=uo(t.filterSele,""),this.colorVolume=uo(t.colorVolume,void 0),this.useWorker=uo(t.useWorker,!0),super.init(e)}prepareData(e,t,i){let n=this.__infoList[t];if(n||(n={},this.__infoList[t]=n),n.molsurf&&n.sele===e.selection.string)i(t);else{if(this.filterSele){const n=e.structure.getView(new wl(this.filterSele)),r=n.boundingBox.getSize(new _t),s=Math.max(r.x,r.y,r.z),a=e.getAtomSetWithinPoint(n.center,s/2+6);if(0===(e=e.getView(new wl(e.getAtomSetWithinSelection(a,3).toSeleString()))).atomCount)return void i(t)}n.sele=e.selection.string,n.molsurf=new ky(e);const r=this.getSurfaceParams(),s=e=>{n.surface=e,i(t)};this.useWorker?n.molsurf.getSurfaceWorker(r,s):s(n.molsurf.getSurface(r))}}prepare(e){if((this.__forceNewMolsurf||this.__sele!==this.selection.string||this.__surfaceParams!==JSON.stringify(this.getSurfaceParams()))&&(this.__infoList.forEach((e=>{e&&e.molsurf&&e.molsurf.dispose()})),this.__infoList.length=0),0===this.structureView.atomCount)return void e();const t=()=>{this.__sele=this.selection.string,this.__surfaceParams=JSON.stringify(this.getSurfaceParams()),this.__forceNewMolsurf=!1,e()},i="default"===this.assembly?this.defaultAssembly:this.assembly,n=this.structure.biomolDict[i];n?n.partList.forEach(((e,i)=>{const r=e.getView(this.structureView);this.prepareData(r,i,(e=>{e===n.partList.length-1&&t()}))})):this.prepareData(this.structureView,0,t)}createData(e,t){const i=this.__infoList[t],n=i.surface;if(!n)return;const r={position:n.getPosition(),color:n.getColor(this.getColorParams()),index:n.getFilteredIndex(this.filterSele,e)},s=[];if(n.contour){const e=new Gf(r,this.getBufferParams({wireframe:!1}));s.push(e)}else{Object.assign(r,{normal:n.getNormal(),picking:n.getPicking(e.getStructure())});const t=new zf(r,this.getBufferParams({background:this.background,opaqueBack:this.opaqueBack,dullInterior:!1}));if("double"==this.getBufferParams().side){const e=new $f(t);s.push(e)}else s.push(t)}return{bufferList:s,info:i}}updateData(e,t){const i={};if(e.position||e.radius)return this.__forceNewMolsurf=!0,void this.build();e.color&&(i.color=t.info.surface.getColor(this.getColorParams())),e.index&&(i.index=t.info.surface.getFilteredIndex(this.filterSele,t.sview)),t.bufferList[0].setAttributes(i)}setParameters(e,t={},i){return e&&e.filterSele&&(t.index=!0),e&&void 0!==e.colorVolume&&(t.color=!0),e&&e.wireframe&&(e.contour||void 0===e.contour&&this.contour)&&(e.wireframe=!1),super.setParameters(e,t,i),this}getSurfaceParams(e={}){return Object.assign({type:this.surfaceType,probeRadius:this.probeRadius,scaleFactor:this.scaleFactor,smooth:this.smooth&&!this.contour,cutoff:this.cutoff,contour:this.contour,useWorker:this.useWorker,radiusParams:this.getRadiusParams()},e)}getColorParams(){const e=super.getColorParams();return e.volume=this.colorVolume,e}getAtomRadius(){return 0}clear(){super.clear()}dispose(){this.__infoList.forEach((e=>{e&&e.molsurf&&e.molsurf.dispose()})),this.__infoList.length=0,super.dispose()}}Hl.add("surface",Oy);class Ny extends y_{constructor(e,t,i){super(e,t,i),this.type="point",this.parameters=Object.assign({pointSize:{type:"number",precision:1,max:100,min:0,buffer:!0},sizeAttenuation:{type:"boolean",buffer:!0},sortParticles:{type:"boolean",rebuild:!0},useTexture:{type:"boolean",buffer:!0},alphaTest:{type:"range",step:.001,max:1,min:0,buffer:!0},forceTransparent:{type:"boolean",buffer:!0},edgeBleach:{type:"range",step:.001,max:1,min:0,buffer:!0}},this.parameters,{flatShaded:null,wireframe:null,linewidth:null,side:null,roughness:null,metalness:null}),this.init(i)}init(e){var t=e||{};this.pointSize=uo(t.pointSize,1),this.sizeAttenuation=uo(t.sizeAttenuation,!0),this.sortParticles=uo(t.sortParticles,!1),this.useTexture=uo(t.useTexture,!1),this.alphaTest=uo(t.alphaTest,.5),this.forceTransparent=uo(t.forceTransparent,!1),this.edgeBleach=uo(t.edgeBleach,0),super.init(t)}createData(e){var t=e.getAtomData(this.getAtomParams({position:!0,color:!0,picking:!0}));return{bufferList:[new Up(t,this.getBufferParams({pointSize:this.pointSize,sizeAttenuation:this.sizeAttenuation,sortParticles:this.sortParticles,useTexture:this.useTexture,alphaTest:this.alphaTest,forceTransparent:this.forceTransparent,edgeBleach:this.edgeBleach}))]}}updateData(e,t){var i=t.sview.getAtomData(this.getAtomParams(e)),n={};e&&!e.position||Object.assign(n,{position:i.position}),e&&!e.color||Object.assign(n,{color:i.color}),t.bufferList[0].setAttributes(n)}getAtomRadius(){return.1}}Hl.add("point",Ny),Wl.add("shader/Ribbon.vert","#define STANDARD\nuniform float clipNear;\nuniform vec3 clipCenter;\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\nvarying vec3 vViewPosition;\n#endif\n#if defined( RADIUS_CLIP )\nvarying vec3 vClipCenter;\n#endif\nattribute vec3 dir;\nattribute float size;\n#ifdef PICKING\n#include unpack_color\nattribute float primitiveId;\nvarying vec3 vPickingColor;\n#else\n#include color_pars_vertex\n#ifndef FLAT_SHADED\nvarying vec3 vNormal;\n#endif\n#endif\n#include common\nvoid main(void){\n#ifdef PICKING\nvPickingColor = unpackColor( primitiveId );\n#else\n#include color_vertex\n#include beginnormal_vertex\n#include defaultnormal_vertex\n#ifndef FLAT_SHADED\nvNormal = normalize( transformedNormal );\n#endif\n#endif\n#include begin_vertex\ntransformed += normalize( dir ) * size;\n#include project_vertex\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\nvViewPosition = -mvPosition.xyz;\n#endif\n#if defined( RADIUS_CLIP )\nvClipCenter = -( modelViewMatrix * vec4( clipCenter, 1.0 ) ).xyz;\n#endif\n#include nearclip_vertex\n}");const Fy=new Uint16Array([0,1,2,1,3,2]);function By(e){return 3*(4*(e.position.length/3-1))}class zy extends Bf{constructor(e,t={}){super({position:new Float32Array(By(e)),color:new Float32Array(By(e)),index:So(By(e),By(e)/3),normal:new Float32Array(By(e)),picking:e.picking},t),this.vertexShader="Ribbon.vert";const i=e.position.length/3-1,n=4*i,r=3*n;this.addAttributes({dir:{type:"v3",value:new Float32Array(r)}}),this.addAttributes({size:{type:"f",value:new Float32Array(n)}}),e.primitiveId=Ac(i),this.setAttributes(e),this.makeIndex()}setAttributes(e={}){const t=this.size/4,i=this.geometry.attributes;let n,r,s,a,o,l,c,u,h,d,f,m,p,g,_,y,v,b,x;e.position&&(n=e.position,c=i.position.array,i.position.needsUpdate=!0),e.normal&&(r=e.normal,u=i.normal.array,i.normal.needsUpdate=!0),e.size&&(s=e.size,h=i.size.array,i.size.needsUpdate=!0),e.dir&&(a=e.dir,d=i.dir.array,i.dir.needsUpdate=!0),e.color&&(o=e.color,f=i.color.array,i.color.needsUpdate=!0),e.primitiveId&&(l=e.primitiveId,m=i.primitiveId.array,i.primitiveId.needsUpdate=!0);let w=s?s[0]:null;for(p=0;p{if(!(e.residueCount<4)){i.push(e);var n=new ey(e,this.getSplineParams()),r=n.getSubdividedPosition(),s=n.getSubdividedOrientation(),a=n.getSubdividedColor(this.getColorParams()),o=n.getSubdividedPicking(),l=n.getSubdividedSize(this.getRadiusParams());t.push(new zy({position:r.position,normal:s.binormal,dir:s.normal,color:a.color,size:l.size,picking:o.picking},this.getBufferParams()))}}),e.getSelection()),{bufferList:t,polymerList:i}}updateData(e,t){e=e||{};var i=0,n=t.polymerList.length;for(i=0;i{if(e.residueCount<4||e.isNucleic())return;const r=new xm(e),s=r.getAxis(this.localAngle,this.centerDist,this.ssBorder,this.getColorParams(),this.getRadiusParams());t+=s.size.length,i.push(s),n.push(r)}),e.getSelection());const r={begin:new Float32Array(3*t),end:new Float32Array(3*t),size:new Float32Array(t),color:new Float32Array(3*t),picking:{}};let s=new Float32Array(t),a=0;i.forEach((function(e){r.begin.set(e.begin,3*a),r.end.set(e.end,3*a),r.size.set(e.size,a),r.color.set(e.color,3*a),s.set(e.picking.array,a),a+=e.size.length})),t&&(r.picking=new Hd(s,e.getStructure()));return{bufferList:[new X_({position1:r.begin,position2:r.end,color:r.color,color2:r.color,radius:r.size,picking:r.picking},this.getBufferParams({openEnded:this.openEnded,radialSegments:this.radialSegments,disableImpostor:this.disableImpostor,dullInterior:!0}))],axisList:i,helixbundleList:n,axisData:r}}updateData(e,t){if((e=e||{}).position)this.build();else{var i={};if(e.color||e.radius){var n=0;t.helixbundleList.forEach((i=>{var r=i.getAxis(this.localAngle,this.centerDist,this.ssBorder,this.getColorParams(),this.getRadiusParams());e.color&&t.axisData.color.set(r.color,3*n),(e.radius||e.scale)&&t.axisData.size.set(r.size,n),n+=r.size.length})),e.color&&Object.assign(i,{color:t.axisData.color,color2:t.axisData.color}),(e.radius||e.scale)&&Object.assign(i,{radius:t.axisData.size})}t.bufferList[0].setAttributes(i)}}}Hl.add("rocket",Vy);class $y extends sy{constructor(e,t,i){super(e,t,i),this.type="rope",this.parameters=Object.assign({smooth:{type:"integer",max:15,min:0,rebuild:!0}},this.parameters,{aspectRatio:null,smoothSheet:null})}init(e){var t=e||{};t.aspectRatio=1,t.tension=uo(t.tension,.5),t.radiusScale=uo(t.radiusScale,5),t.smoothSheet=!1,this.smooth=uo(t.smooth,2),super.init(t)}getSpline(e){var t=new bm(e);return new ey(e,this.getSplineParams({directional:!1,positionIterator:t.getCenterIterator(this.smooth)}))}}Hl.add("rope",$y);class Gy extends y_{constructor(e,t,i){super(e,t,i),this.type="spacefill",this.parameters=Object.assign({sphereDetail:!0,disableImpostor:!0},this.parameters),this.init(i)}init(e){var t=e||{};t.useInteriorColor=uo(t.useInteriorColor,!0),super.init(t)}createData(e){return{bufferList:[new Np(e.getAtomData(this.getAtomParams()),this.getBufferParams({sphereDetail:this.sphereDetail,dullInterior:!0,disableImpostor:this.disableImpostor}))]}}updateData(e,t){var i=t.sview.getAtomData(this.getAtomParams(e)),n={};e&&!e.position||Object.assign(n,{position:i.position}),e&&!e.color||Object.assign(n,{color:i.color}),e&&!e.radius||Object.assign(n,{radius:i.radius}),t.bufferList[0].setAttributes(n)}}function Hy(e){return 3*(e.position.length/3-1)*2}Hl.add("spacefill",Gy);class jy extends Ff{constructor(e,t={}){super({position:new Float32Array(Hy(e)),color:new Float32Array(Hy(e))},t),this.isLine=!0,this.vertexShader="Line.vert",this.fragmentShader="Line.frag",this.setAttributes(e)}setAttributes(e){let t,i,n,r;const s=this.geometry.attributes;if(e.position&&(t=e.position,n=s.position.array,s.position.needsUpdate=!0),e.color&&(i=e.color,r=s.color.array,s.color.needsUpdate=!0),!t&&!i)return void Fl.warn("TraceBuffer.prototype.setAttributes no data");let a,o;const l=this.size-1;for(let e=0;e{if(!(e.residueCount<4)){i.push(e);var n=new ey(e,this.getSplineParams()),r=n.getSubdividedPosition(),s=n.getSubdividedColor(this.getColorParams());t.push(new jy(Object.assign({},r,s),this.getBufferParams()))}}),e.getSelection()),{bufferList:t,polymerList:i}}updateData(e,t){e=e||{};var i=0,n=t.polymerList.length;for(i=0;i{e.boundingBox||e.computeBoundingBox(),this.boundingBox.union(e.boundingBox)}))}}const nv=Object.assign({aspectRatio:1.5,radialSegments:50,openEnded:!1,disableImpostor:!1},Of);class rv{constructor(e,t={}){this.group=new ma,this.wireframeGroup=new ma,this.pickingGroup=new ma,this.visible=!0,this.parameters=ho(t,this.defaultParameters),this.splitPosition=new Float32Array(e.position1.length),this.cylinderRadius=new Float32Array(e.radius.length);const i=this.makeAttributes(e),n={radialSegments:this.parameters.radialSegments,openEnded:this.parameters.openEnded,disableImpostor:this.parameters.disableImpostor};this.cylinderBuffer=new X_(i.cylinder,n),this.coneBuffer=new tv(i.cone,n),this.geometry=new iv([this.cylinderBuffer.geometry,this.coneBuffer.geometry]),this.matrix=uo(t.matrix,new qt),this.picking=e.picking}get defaultParameters(){return nv}set matrix(e){Ff.prototype.setMatrix.call(this,e)}get matrix(){return this.group.matrix.clone()}get pickable(){return!!this.picking}makeAttributes(e={}){const t=this.splitPosition,i=this.cylinderRadius,n=this.parameters.aspectRatio;let r,s;const a={},o={};if(e.radius){for(r=0,s=i.length;r0&&(s=1/Math.sqrt(s),e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s),e}function h(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function d(e,t,i){const n=t[0],r=t[1],s=t[2],a=i[0],o=i[1],l=i[2];return e[0]=r*l-s*o,e[1]=s*a-n*l,e[2]=n*o-r*a,e}e.zero=t,e.clone=function(e){const i=t();return i[0]=e[0],i[1]=e[1],i[2]=e[2],i},e.isFinite=function(e){return $v(e[0])&&$v(e[1])&&$v(e[2])},e.hasNaN=function(e){return isNaN(e[0])||isNaN(e[1])||isNaN(e[2])},e.setNaN=function(e){return e[0]=NaN,e[1]=NaN,e[2]=NaN,e},e.fromObj=function(e){return i(e.x,e.y,e.z)},e.toObj=function(e){return{x:e[0],y:e[1],z:e[2]}},e.fromArray=function(e,t,i){return e[0]=t[i+0],e[1]=t[i+1],e[2]=t[i+2],e},e.toArray=function(e,t,i){return t[i+0]=e[0],t[i+1]=e[1],t[i+2]=e[2],t},e.create=i,e.ofArray=function(e){const i=t();return i[0]=e[0],i[1]=e[1],i[2]=e[2],i},e.set=function(e,t,i,n){return e[0]=t,e[1]=i,e[2]=n,e},e.copy=n,e.add=r,e.sub=s,e.mul=function(e,t,i){return e[0]=t[0]*i[0],e[1]=t[1]*i[1],e[2]=t[2]*i[2],e},e.div=function(e,t,i){return e[0]=t[0]/i[0],e[1]=t[1]/i[1],e[2]=t[2]/i[2],e},e.scale=a,e.scaleAndAdd=o,e.scaleAndSub=function(e,t,i,n){return e[0]=t[0]-i[0]*n,e[1]=t[1]-i[1]*n,e[2]=t[2]-i[2]*n,e},e.addScalar=function(e,t,i){return e[0]=t[0]+i,e[1]=t[1]+i,e[2]=t[2]+i,e},e.subScalar=function(e,t,i){return e[0]=t[0]-i,e[1]=t[1]-i,e[2]=t[2]-i,e},e.round=function(e,t){return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e[2]=Math.round(t[2]),e},e.ceil=function(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e},e.floor=function(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e},e.trunc=function(e,t){return e[0]=Math.trunc(t[0]),e[1]=Math.trunc(t[1]),e[2]=Math.trunc(t[2]),e},e.abs=function(e,t){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e},e.min=function(e,t,i){return e[0]=Math.min(t[0],i[0]),e[1]=Math.min(t[1],i[1]),e[2]=Math.min(t[2],i[2]),e},e.max=function(e,t,i){return e[0]=Math.max(t[0],i[0]),e[1]=Math.max(t[1],i[1]),e[2]=Math.max(t[2],i[2]),e},e.clamp=function(e,t,i,n){return e[0]=Math.max(i[0],Math.min(n[0],t[0])),e[1]=Math.max(i[1],Math.min(n[1],t[1])),e[2]=Math.max(i[2],Math.min(n[2],t[2])),e},e.distance=function(e,t){const i=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(i*i+n*n+r*r)},e.squaredDistance=function(e,t){const i=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2];return i*i+n*n+r*r},e.magnitude=function(e){const t=e[0],i=e[1],n=e[2];return Math.sqrt(t*t+i*i+n*n)},e.squaredMagnitude=l,e.setMagnitude=function(e,t,i){return a(e,u(e,t),i)},e.negate=c,e.inverse=function(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e},e.normalize=u,e.dot=h,e.cross=d,e.lerp=function(e,t,i,n){const r=t[0],s=t[1],a=t[2];return e[0]=r+n*(i[0]-r),e[1]=s+n*(i[1]-s),e[2]=a+n*(i[2]-a),e};const f=t();function m(e,t){const i=Math.sqrt(l(e)*l(t));if(0===i)return Math.PI/2;const n=h(e,t)/i;return Math.acos(zv(n,-1,1))}e.slerp=function(e,t,i,n){const s=zv(h(t,i),-1,1),l=Math.acos(s)*n;return o(f,i,t,-s),u(f,f),r(e,a(e,t,Math.cos(l)),a(f,f,Math.sin(l)))},e.hermite=function(e,t,i,n,r,s){const a=s*s,o=a*(2*s-3)+1,l=a*(s-2)+s,c=a*(s-1),u=a*(3-2*s);return e[0]=t[0]*o+i[0]*l+n[0]*c+r[0]*u,e[1]=t[1]*o+i[1]*l+n[1]*c+r[1]*u,e[2]=t[2]*o+i[2]*l+n[2]*c+r[2]*u,e},e.bezier=function(e,t,i,n,r,s){const a=1-s,o=a*a,l=s*s,c=o*a,u=3*s*o,h=3*l*a,d=l*s;return e[0]=t[0]*c+i[0]*u+n[0]*h+r[0]*d,e[1]=t[1]*c+i[1]*u+n[1]*h+r[1]*d,e[2]=t[2]*c+i[2]*u+n[2]*h+r[2]*d,e},e.quadraticBezier=function(e,t,i,n,r){return e[0]=Vv(t[0],i[0],n[0],r),e[1]=Vv(t[1],i[1],n[1],r),e[2]=Vv(t[2],i[2],n[2],r),e},e.spline=function(e,t,i,n,r,s,a){return e[0]=Uv(t[0],i[0],n[0],r[0],s,a),e[1]=Uv(t[1],i[1],n[1],r[1],s,a),e[2]=Uv(t[2],i[2],n[2],r[2],s,a),e},e.random=function(e,t){const i=2*Math.random()*Math.PI,n=2*Math.random()-1,r=Math.sqrt(1-n*n)*t;return e[0]=Math.cos(i)*r,e[1]=Math.sin(i)*r,e[2]=n*t,e},e.transformMat4=function(e,t,i){const n=t[0],r=t[1],s=t[2],a=1/(i[3]*n+i[7]*r+i[11]*s+i[15]||1);return e[0]=(i[0]*n+i[4]*r+i[8]*s+i[12])*a,e[1]=(i[1]*n+i[5]*r+i[9]*s+i[13])*a,e[2]=(i[2]*n+i[6]*r+i[10]*s+i[14])*a,e},e.transformDirection=function(e,t,i){const n=t[0],r=t[1],s=t[2];return e[0]=i[0]*n+i[4]*r+i[8]*s,e[1]=i[1]*n+i[5]*r+i[9]*s,e[2]=i[2]*n+i[6]*r+i[10]*s,u(e,e)},e.transformMat4Offset=function(e,t,i,n,r,s){const a=t[0+r],o=t[1+r],l=t[2+r],c=1/(i[3+s]*a+i[7+s]*o+i[11+s]*l+i[15+s]||1);return e[0+n]=(i[0+s]*a+i[4+s]*o+i[8+s]*l+i[12+s])*c,e[1+n]=(i[1+s]*a+i[5+s]*o+i[9+s]*l+i[13+s])*c,e[2+n]=(i[2+s]*a+i[6+s]*o+i[10+s]*l+i[14+s])*c,e},e.transformDirectionOffset=function(e,t,i,n,r,s){const a=t[0+r],o=t[1+r],l=t[2+r];e[0+n]=i[0+s]*a+i[4+s]*o+i[8+s]*l,e[1+n]=i[1+s]*a+i[5+s]*o+i[9+s]*l,e[2+n]=i[2+s]*a+i[6+s]*o+i[10+s]*l;const c=Math.hypot(e[0+n],e[1+n],e[2+n]);return c>0&&(e[0+n]/=c,e[1+n]/=c,e[2+n]/=c),e},e.transformMat3=function(e,t,i){const n=t[0],r=t[1],s=t[2];return e[0]=n*i[0]+r*i[3]+s*i[6],e[1]=n*i[1]+r*i[4]+s*i[7],e[2]=n*i[2]+r*i[5]+s*i[8],e},e.transformQuat=function(e,t,i){const n=t[0],r=t[1],s=t[2],a=i[0],o=i[1],l=i[2],c=i[3],u=c*n+o*s-l*r,h=c*r+l*n-a*s,d=c*s+a*r-o*n,f=-a*n-o*r-l*s;return e[0]=u*c+f*-a+h*-l-d*-o,e[1]=h*c+f*-o+d*-a-u*-l,e[2]=d*c+f*-l+u*-o-h*-a,e},e.angle=m;const p=t(),g=t(),_=t(),y=t(),v=t(),b=t(),x=t();e.dihedralAngle=function(e,t,i,n){s(p,e,t),s(g,i,t),s(_,t,i),s(y,n,i),d(v,p,g),d(b,_,y);const r=m(v,b);return d(x,v,b),h(g,x)>0?r:-r},e.directionFromSpherical=function(t,i,n,r){return e.set(t,r*Math.cos(n)*Math.sin(i),r*Math.sin(n)*Math.sin(i),r*Math.cos(i))},e.exactEquals=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]},e.equals=function(e,t){const i=e[0],n=e[1],r=e[2],s=t[0],a=t[1],o=t[2];return Math.abs(i-s)<=Fv*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(n-a)<=Fv*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-o)<=Fv*Math.max(1,Math.abs(r),Math.abs(o))};const w=t();e.makeRotation=function(t,i,n){const r=m(i,n);if(Math.abs(r)<1e-4)return Wv.setIdentity(t);if(Math.abs(r-Math.PI)0?n(e,t):c(e,n(e,t)),e};const C=t(),T=t();e.triangleNormal=function(e,t,i,n){return s(C,i,t),s(T,n,t),u(e,d(e,C,T))},e.toString=function(e,t){return`[${e[0].toPrecision(t)} ${e[1].toPrecision(t)} ${e[2].toPrecision(t)}]`},e.origin=i(0,0,0),e.unit=i(1,1,1),e.negUnit=i(-1,-1,-1),e.unitX=i(1,0,0),e.unitY=i(0,1,0),e.unitZ=i(0,0,1),e.negUnitX=i(-1,0,0),e.negUnitY=i(0,-1,0),e.negUnitZ=i(0,0,-1)}(Gv||(Gv={}));const Hv=Math.PI/180;function jv(e){return e*Hv}function Wv(){return Wv.zero()}function qv(){return qv.zero()}function Xv(){return Xv.zero()}function Yv(){return Yv.zero()}function Kv(e){throw new Error("unreachable")}function Zv(){return Zv.zero()}var Qv,Jv,eb,tb;function ib(e,t,i){let n=t,r=0,s=1;for(45===e.charCodeAt(n)?(s=-1,++n):43===e.charCodeAt(n)&&++n;n9||t<0)return s*r|0;r=10*r+t|0}return s*r}function nb(e,t,i,n){return 43===t.charCodeAt(i)&&i++,e*Math.pow(10,ib(t,i,n))}function rb(e,t,i){let n=t,r=1,s=0,a=0,o=1;for(45===e.charCodeAt(n)?(r=-1,++n):43===e.charCodeAt(n)&&++n;n=0&&t<10)){if(-2===t){for(++n;n=0&&t<10))return 53===t||21===t?nb(r*(s+a/o),e,n+1,i):r*(s+a/o);a=10*a+t,o*=10,++n}return r*(s+a/o)}if(53===t||21===t)return nb(r*s,e,n+1,i);break}s=10*s+t,++n}return r*s}function sb(e,t,i,n){return{schema:i,__array:void 0,isDefined:0===n,rowCount:t,value:t=>e,valueKind:e=>n,toArray:i=>{const{array:n}=Lv(t,i);for(let t=0,i=n.length;t!0}}function ab({value:e,valueKind:t,areValuesEqual:i,rowCount:n,schema:r}){return{schema:r,__array:void 0,isDefined:!0,rowCount:n,value:e,valueKind:t||(e=>0),toArray:t=>{const{array:i,start:r}=Lv(n,t);for(let t=0,n=i.length;te(t)===e(i))}}function ob({array:e,schema:t,valueKind:i}){const n=e.length,r=t.T,s="str"===t.valueType?"lowercase"===t.transform?t=>{const i=e[t];return"string"==typeof i?i.toLowerCase():`${null!=i?i:r}`.toLowerCase()}:"uppercase"===t.transform?t=>{const i=e[t];return"string"==typeof i?i.toUpperCase():`${null!=i?i:r}`.toUpperCase()}:t=>{const i=e[t];return"string"==typeof i?i:`${null!=i?i:r}`}:t=>e[t],a=Ov(e);return{schema:t,__array:e,isDefined:!0,rowCount:n,value:s,valueKind:i||(e=>0),toArray:"str"===t.valueType?"lowercase"===t.transform?t=>{const{start:i,end:s}=Rv(n,t),a=new(t&&void 0!==t.array?t.array:e.constructor)(s-i);for(let t=0,n=s-i;t{const{start:i,end:s}=Rv(n,t),a=new(t&&void 0!==t.array?t.array:e.constructor)(s-i);for(let t=0,n=s-i;t{const{start:i,end:s}=Rv(n,t),a=new(t&&void 0!==t.array?t.array:e.constructor)(s-i);for(let t=0,n=s-i;tNv(e,t):t=>{const{start:i,end:r}=Rv(n,t);if(0===i&&r===e.length)return e;const s=new(t&&void 0!==t.array?t.array:e.constructor)(r-i);for(let t=0,n=r-i;te[t]===e[i]}}function lb(e,t,i){return e.isDefined?0===t&&i===e.rowCount?e:e.__array&&Ov(e.__array)?function(e,t,i){const n=Nv(e.__array,{start:t,end:i}),r=e.valueKind;return ob({array:n,schema:e.schema,valueKind:e=>r(t+e)})}(e,t,i):function(e,t,i){const n=e.value,r=e.valueKind,s=e.areValuesEqual,a=0===t?n:e=>n(e+t),o=i-t;return{schema:e.schema,__array:void 0,isDefined:e.isDefined,rowCount:o,value:a,valueKind:0===t?r:e=>r(e+t),toArray:e=>{const{array:i}=Lv(o,e);for(let e=0,r=i.length;es(e+t,i+t)}}(e,t,i):Jv.Undefined(i-t,e.schema)}function cb(e,t,i){return 0===e.rowCount||i&&function(e,t){if(e.length!==t)return!1;for(let t=0,i=e.length;tr(t[e])})}(e,t):function(e,t){const i=e.value,n=e.valueKind,r=e.areValuesEqual,s=e=>i(t[e]),a=t.length;return{schema:e.schema,__array:void 0,isDefined:e.isDefined,rowCount:a,value:s,valueKind:e=>n(t[e]),toArray:e=>{const{array:n}=Lv(a,e);for(let e=0,r=n.length;er(t[e],t[i])}}(e,t)}function ub(e,t,i){return e[t]-e[i]}function hb(e,t,i){const n=e[t];e[t]=e[i],e[i]=n}function db(e,t,i,n){const r=i+n>>1;return t(e,i,n)>0?t(e,i,r)>0?t(e,r,n)>0?r:n:i:t(e,n,r)>0?t(e,r,i)>0?r:i:n}function fb(e,t,i){const{cmp:n,swap:r,data:s,parts:a}=e;let o=t+1,l=i;for(r(s,t,db(s,n,t,i));n(s,l,t)>0;)--l;for(let e=t+1;e<=l;e++){const i=n(s,e,t);if(i>0){for(r(s,e,l),--l;n(s,l,t)>0;)--l;e--}else 0===i&&(r(s,e,o),o++)}for(let e=t;e=n&&t(e,r,r+1)>0;)i(e,r,r+1),r-=1}}function pb(e,t,i){const{parts:n}=e;for(;ta;)--s;for(let t=i+1;t<=s;t++){const i=e[t];if(i>a){for(hb(e,t,s),--s;e[s]>a;)--s;t--}else i===a&&(hb(e,t,r),++r)}for(let t=i;t=t&&e[r]>i;)e[r+1]=e[r],r-=1;e[r+1]=i}}function yb(e,t,i,n){for(;ii)return!1;return!0}function o(e,t,i,n){e[4*i+t]=n}function l(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function c(e,t){const i=t[0]+t[5]+t[10];let n=0;return i>0?(n=2*Math.sqrt(i+1),e[3]=.25*n,e[0]=(t[6]-t[9])/n,e[1]=(t[8]-t[2])/n,e[2]=(t[1]-t[4])/n):t[0]>t[5]&&t[0]>t[10]?(n=2*Math.sqrt(1+t[0]-t[5]-t[10]),e[3]=(t[6]-t[9])/n,e[0]=.25*n,e[1]=(t[1]+t[4])/n,e[2]=(t[8]+t[2])/n):t[5]>t[10]?(n=2*Math.sqrt(1+t[5]-t[0]-t[10]),e[3]=(t[8]-t[2])/n,e[0]=(t[1]+t[4])/n,e[1]=.25*n,e[2]=(t[6]+t[9])/n):(n=2*Math.sqrt(1+t[10]-t[0]-t[5]),e[3]=(t[1]-t[4])/n,e[0]=(t[8]+t[2])/n,e[1]=(t[6]+t[9])/n,e[2]=.25*n),e}function u(e,t){const i=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5],l=t[6],c=t[7],u=t[8],h=t[9],d=t[10],f=t[11],m=t[12],p=t[13],g=t[14],_=t[15],y=i*o-n*a,v=i*l-r*a,b=i*c-s*a,x=n*l-r*o,w=n*c-s*o,S=r*c-s*l,M=u*p-h*m,A=u*g-d*m,C=u*_-f*m,T=h*g-d*p,P=h*_-f*p,E=d*_-f*g;let I=y*E-v*P+b*T+x*C-w*A+S*M;return!!I&&(I=1/I,e[0]=(o*E-l*P+c*T)*I,e[1]=(r*P-n*E-s*T)*I,e[2]=(p*S-g*w+_*x)*I,e[3]=(d*w-h*S-f*x)*I,e[4]=(l*C-a*E-c*A)*I,e[5]=(i*E-r*C+s*A)*I,e[6]=(g*b-m*S-_*v)*I,e[7]=(u*S-d*b+f*v)*I,e[8]=(a*P-o*C+c*M)*I,e[9]=(n*C-i*P-s*M)*I,e[10]=(m*w-p*b+_*y)*I,e[11]=(h*b-u*w-f*y)*I,e[12]=(o*A-a*T-l*M)*I,e[13]=(i*T-n*A+r*M)*I,e[14]=(p*v-m*x-g*y)*I,e[15]=(u*x-h*v+d*y)*I,!0)}function h(e,t,i){const n=t[0],r=t[1],s=t[2],a=t[3],o=t[4],l=t[5],c=t[6],u=t[7],h=t[8],d=t[9],f=t[10],m=t[11],p=t[12],g=t[13],_=t[14],y=t[15];let v=i[0],b=i[1],x=i[2],w=i[3];return e[0]=v*n+b*o+x*h+w*p,e[1]=v*r+b*l+x*d+w*g,e[2]=v*s+b*c+x*f+w*_,e[3]=v*a+b*u+x*m+w*y,v=i[4],b=i[5],x=i[6],w=i[7],e[4]=v*n+b*o+x*h+w*p,e[5]=v*r+b*l+x*d+w*g,e[6]=v*s+b*c+x*f+w*_,e[7]=v*a+b*u+x*m+w*y,v=i[8],b=i[9],x=i[10],w=i[11],e[8]=v*n+b*o+x*h+w*p,e[9]=v*r+b*l+x*d+w*g,e[10]=v*s+b*c+x*f+w*_,e[11]=v*a+b*u+x*m+w*y,v=i[12],b=i[13],x=i[14],w=i[15],e[12]=v*n+b*o+x*h+w*p,e[13]=v*r+b*l+x*d+w*g,e[14]=v*s+b*c+x*f+w*_,e[15]=v*a+b*u+x*m+w*y,e}function d(e,t,i){let r=i[0],s=i[1],a=i[2],o=Math.sqrt(r*r+s*s+a*a);if(Math.abs(o)0&&(f=1/Math.sqrt(f),u*=f,h*=f,d*=f);let m=l*d-c*h,p=c*u-o*d,g=o*h-l*u;return f=m*m+p*p+g*g,f>0&&(f=1/Math.sqrt(f),m*=f,p*=f,g*=f),e[0]=m,e[1]=p,e[2]=g,e[3]=0,e[4]=h*g-d*p,e[5]=d*m-u*g,e[6]=u*p-h*m,e[7]=0,e[8]=u,e[9]=h,e[10]=d,e[11]=0,e[12]=r,e[13]=s,e[14]=a,e[15]=1,e},e.fromPermutation=function(e,t){r(e);for(let i=0;i<4;i++){o(e,i,t[i],1)}return e},e.getMaxScaleOnAxis=function(e){const t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],n=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,n))};const g=[1,0,0],_=[0,1,0],y=[0,0,1];e.rotX90=d(t(),jv(90),g),e.rotX180=d(t(),jv(180),g),e.rotY90=d(t(),jv(90),_),e.rotY180=d(t(),jv(180),_),e.rotY270=d(t(),jv(270),_),e.rotZ90=d(t(),jv(90),y),e.rotZ180=d(t(),jv(180),y),e.rotXY90=h(t(),e.rotX90,e.rotY90),e.rotZY90=h(t(),e.rotZ90,e.rotY90),e.rotZYZ90=h(t(),e.rotZY90,e.rotZ90),e.rotZ90X180=h(t(),e.rotZ90,e.rotX180),e.rotY90Z180=h(t(),e.rotY90,e.rotZ180),e.id=i()}(Wv||(Wv={})),function(e){function t(){const e=[.1,0,0,0,0,0,0,0,0];return e[0]=0,e}function i(){const e=t();return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function n(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e}e.zero=t,e.identity=i,e.setIdentity=function(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e},e.toArray=function(e,t,i){return t[i+0]=e[0],t[i+1]=e[1],t[i+2]=e[2],t[i+3]=e[3],t[i+4]=e[4],t[i+5]=e[5],t[i+6]=e[6],t[i+7]=e[7],t[i+8]=e[8],t},e.fromArray=function(e,t,i){return e[0]=t[i+0],e[1]=t[i+1],e[2]=t[i+2],e[3]=t[i+3],e[4]=t[i+4],e[5]=t[i+5],e[6]=t[i+6],e[7]=t[i+7],e[8]=t[i+8],e},e.fromColumns=function(e,t,i,n){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=i[0],e[4]=i[1],e[5]=i[2],e[6]=n[0],e[7]=n[1],e[8]=n[2],e},e.fromMat4=n;const r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];e.fromEuler=function(e,t,i){return Wv.fromEuler(r,t,i),n(e,r)},e.create=function(e,i,n,r,s,a,o,l,c){const u=t();return u[0]=e,u[1]=i,u[2]=n,u[3]=r,u[4]=s,u[5]=a,u[6]=o,u[7]=l,u[8]=c,u};const s=i();function a(e,t,i){for(let n=0;n<9;n++)if(Math.abs(e[n]-t[n])>i)return!1;return!0}function o(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function l(e,t){if(e===t){const i=t[1],n=t[2],r=t[5];e[1]=t[3],e[2]=t[6],e[3]=i,e[5]=t[7],e[6]=n,e[7]=r}else e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8];return e}function c(e,t){const i=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5],l=t[6],c=t[7],u=t[8],h=u*a-o*c,d=-u*s+o*l,f=c*s-a*l;let m=i*h+n*d+r*f;return m?(m=1/m,e[0]=h*m,e[1]=(-u*n+r*c)*m,e[2]=(o*n-r*a)*m,e[3]=d*m,e[4]=(u*i-r*l)*m,e[5]=(-o*i+r*s)*m,e[6]=f*m,e[7]=(-c*i+n*l)*m,e[8]=(a*i-n*s)*m,e):(console.warn("non-invertible matrix.",t),e)}function u(e){const t=e[0],i=e[1],n=e[2],r=e[3],s=e[4],a=e[5],o=e[6],l=e[7],c=e[8];return t*(c*s-a*l)+i*(-c*r+a*o)+n*(l*r-s*o)}function h(e){return e[0]+e[4]+e[8]}function d(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e[3]=t[3]-i[3],e[4]=t[4]-i[4],e[5]=t[5]-i[5],e[6]=t[6]-i[6],e[7]=t[7]-i[7],e[8]=t[8]-i[8],e}function f(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*i,e}e.isIdentity=function(e,t){return a(e,s,void 0===t?Fv:t)},e.hasNaN=function(e){for(let t=0;t<9;t++)if(isNaN(e[t]))return!0;return!1},e.clone=function(e){return o(t(),e)},e.areEqual=a,e.setValue=function(e,t,i,n){e[3*i+t]=n},e.getValue=function(e,t,i){return e[3*i+t]},e.copy=o,e.transpose=l,e.invert=c,e.symmtricFromUpper=function(e,t){return e===t?(e[3]=t[1],e[6]=t[2],e[7]=t[5]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[1],e[4]=t[4],e[5]=t[5],e[6]=t[2],e[7]=t[5],e[8]=t[8]),e},e.symmtricFromLower=function(e,t){return e===t?(e[1]=t[3],e[2]=t[6],e[5]=t[7]):(e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[3],e[4]=t[4],e[5]=t[7],e[6]=t[6],e[7]=t[7],e[8]=t[8]),e},e.determinant=u,e.trace=h,e.sub=d,e.add=function(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e[3]=t[3]+i[3],e[4]=t[4]+i[4],e[5]=t[5]+i[5],e[6]=t[6]+i[6],e[7]=t[7]+i[7],e[8]=t[8]+i[8],e},e.mul=function(e,t,i){const n=t[0],r=t[1],s=t[2],a=t[3],o=t[4],l=t[5],c=t[6],u=t[7],h=t[8],d=i[0],f=i[1],m=i[2],p=i[3],g=i[4],_=i[5],y=i[6],v=i[7],b=i[8];return e[0]=d*n+f*a+m*c,e[1]=d*r+f*o+m*u,e[2]=d*s+f*l+m*h,e[3]=p*n+g*a+_*c,e[4]=p*r+g*o+_*u,e[5]=p*s+g*l+_*h,e[6]=y*n+v*a+b*c,e[7]=y*r+v*o+b*u,e[8]=y*s+v*l+b*h,e},e.subScalar=function(e,t,i){return e[0]=t[0]-i,e[1]=t[1]-i,e[2]=t[2]-i,e[3]=t[3]-i,e[4]=t[4]-i,e[5]=t[5]-i,e[6]=t[6]-i,e[7]=t[7]-i,e[8]=t[8]-i,e},e.addScalar=function(e,t,i){return e[0]=t[0]+i,e[1]=t[1]+i,e[2]=t[2]+i,e[3]=t[3]+i,e[4]=t[4]+i,e[5]=t[5]+i,e[6]=t[6]+i,e[7]=t[7]+i,e[8]=t[8]+i,e},e.mulScalar=f;const m=Math.PI/3,p=t();e.symmetricEigenvalues=function(t,i){const n=i[1]*i[1]+i[2]*i[2]+i[5]*i[5];if(0===n)t[0]=i[0],t[1]=i[4],t[2]=i[8];else{const r=h(i)/3,s=i[0]-r,a=i[4]-r,o=i[8]-r,l=s*s+a*a+o*o+2*n,c=Math.sqrt(l/6);f(p,e.Identity,r),d(p,i,p),f(p,p,1/c);const g=u(p)/2,_=g<=-1?m:g>=1?0:Math.acos(g)/3;t[0]=r+2*c*Math.cos(_),t[2]=r+2*c*Math.cos(_+2*m),t[1]=3*r-t[0]-t[2]}return t};const g=[.1,0,0],_=[.1,0,0],y=[.1,0,0],v=[.1,0,0],b=[.1,0,0],x=[.1,0,0];e.eigenvector=function(e,t,i){Gv.set(g,t[0]-i,t[1],t[2]),Gv.set(_,t[1],t[4]-i,t[5]),Gv.set(y,t[2],t[5],t[8]-i),Gv.cross(v,g,_),Gv.cross(b,g,y),Gv.cross(x,_,y);const n=Gv.dot(v,v),r=Gv.dot(b,b),s=Gv.dot(x,x);let a=n,o=0;return r>a&&(a=r,o=1),s>a&&(o=2),0===o?Gv.scale(e,v,1/Math.sqrt(n)):1===o?Gv.scale(e,b,1/Math.sqrt(r)):Gv.scale(e,x,1/Math.sqrt(s)),e},e.directionTransform=function(e,t){return n(e,t),c(e,e),l(e,e),e},e.Identity=i(),e.innerProduct=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]+e[4]*t[4]+e[5]*t[5]+e[6]*t[6]+e[7]*t[7]+e[8]*t[8]}}(qv||(qv={})),function(e){function t(){const e=[.1,0];return e[0]=0,e}e.zero=t,e.clone=function(e){const i=t();return i[0]=e[0],i[1]=e[1],i},e.create=function(e,i){const n=t();return n[0]=e,n[1]=i,n},e.hasNaN=function(e){return isNaN(e[0])||isNaN(e[1])},e.toArray=function(e,t,i){return t[i+0]=e[0],t[i+1]=e[1],t},e.fromArray=function(e,t,i){return e[0]=t[i+0],e[1]=t[i+1],e},e.copy=function(e,t){return e[0]=t[0],e[1]=t[1],e},e.set=function(e,t,i){return e[0]=t,e[1]=i,e},e.add=function(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e},e.sub=function(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e},e.mul=function(e,t,i){return e[0]=t[0]*i[0],e[1]=t[1]*i[1],e},e.div=function(e,t,i){return e[0]=t[0]/i[0],e[1]=t[1]/i[1],e},e.scale=function(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e},e.round=function(e,t){return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e},e.ceil=function(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e},e.floor=function(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e},e.distance=function(e,t){const i=t[0]-e[0],n=t[1]-e[1];return Math.sqrt(i*i+n*n)},e.squaredDistance=function(e,t){const i=t[0]-e[0],n=t[1]-e[1];return i*i+n*n},e.magnitude=function(e){const t=e[0],i=e[1];return Math.sqrt(t*t+i*i)},e.squaredMagnitude=function(e){const t=e[0],i=e[1];return t*t+i*i},e.inverse=function(e,t){return e[0]=1/t[0],e[1]=1/t[1],e},e.areEqual=function(e,t){return e[0]===t[0]&&e[1]===t[1]},e.toString=function(e,t){return`[${e[0].toPrecision(t)} ${e[1].toPrecision(t)}}]`}}(Xv||(Xv={})),function(e){function t(){const e=[.1,0,0,0];return e[0]=0,e}function i(e,t){return e[0]=t.center[0],e[1]=t.center[1],e[2]=t.center[2],e[3]=t.radius,e}e.zero=t,e.clone=function(e){const i=t();return i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=e[3],i},e.create=function(e,i,n,r){const s=t();return s[0]=e,s[1]=i,s[2]=n,s[3]=r,s},e.fromSphere=i,e.ofSphere=function(e){return i(t(),e)},e.hasNaN=function(e){return isNaN(e[0])||isNaN(e[1])||isNaN(e[2])||isNaN(e[3])},e.toArray=function(e,t,i){return t[i+0]=e[0],t[i+1]=e[1],t[i+2]=e[2],t[i+3]=e[3],t},e.fromArray=function(e,t,i){return e[0]=t[i+0],e[1]=t[i+1],e[2]=t[i+2],e[3]=t[i+3],e},e.toVec3Array=function(e,t,i){t[i+0]=e[0],t[i+1]=e[1],t[i+2]=e[2]},e.fromVec3Array=function(e,t,i){return e[0]=t[i+0],e[1]=t[i+1],e[2]=t[i+2],e[3]=0,e},e.copy=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e},e.set=function(e,t,i,n,r){return e[0]=t,e[1]=i,e[2]=n,e[3]=r,e},e.add=function(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e[3]=t[3]+i[3],e},e.distance=function(e,t){const i=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2],s=t[3]-e[3];return Math.sqrt(i*i+n*n+r*r+s*s)},e.scale=function(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[4]=t[4]*i,e},e.round=function(e,t){return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e[2]=Math.round(t[2]),e[3]=Math.round(t[3]),e},e.ceil=function(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e[3]=Math.ceil(t[3]),e},e.floor=function(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e[3]=Math.floor(t[3]),e},e.squaredDistance=function(e,t){const i=t[0]-e[0],n=t[1]-e[1],r=t[2]-e[2],s=t[3]-e[3];return i*i+n*n+r*r+s*s},e.norm=function(e){const t=e[0],i=e[1],n=e[2],r=e[3];return Math.sqrt(t*t+i*i+n*n+r*r)},e.squaredNorm=function(e){const t=e[0],i=e[1],n=e[2],r=e[3];return t*t+i*i+n*n+r*r},e.transformMat4=function(e,t,i){const n=t[0],r=t[1],s=t[2],a=t[3];return e[0]=i[0]*n+i[4]*r+i[8]*s+i[12]*a,e[1]=i[1]*n+i[5]*r+i[9]*s+i[13]*a,e[2]=i[2]*n+i[6]*r+i[10]*s+i[14]*a,e[3]=i[3]*n+i[7]*r+i[11]*s+i[15]*a,e},e.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]},e.inverse=function(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e[3]=1/t[3],e},e.exactEquals=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]},e.equals=function(e,t){const i=e[0],n=e[1],r=e[2],s=e[3],a=t[0],o=t[1],l=t[2],c=t[3];return Math.abs(i-a)<=Fv*Math.max(1,Math.abs(i),Math.abs(a))&&Math.abs(n-o)<=Fv*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(r-l)<=Fv*Math.max(1,Math.abs(r),Math.abs(l))&&Math.abs(s-c)<=Fv*Math.max(1,Math.abs(s),Math.abs(c))},e.toString=function(e,t){return`[${e[0].toPrecision(t)} ${e[1].toPrecision(t)} ${e[2].toPrecision(t)} ${e[3].toPrecision(t)}]`}}(Yv||(Yv={})),function(e){function t(){const e=[.1,0,0,0];return e[0]=0,e}function i(){const e=t();return e[3]=1,e}function n(e,t,i){i*=.5;const n=Math.sin(i);return e[0]=n*t[0],e[1]=n*t[1],e[2]=n*t[2],e[3]=Math.cos(i),e}function r(e,t,i,n){const r=t[0],s=t[1],a=t[2],o=t[3];let l,c,u,h,d,f=i[0],m=i[1],p=i[2],g=i[3];return c=r*f+s*m+a*p+o*g,c<0&&(c=-c,f=-f,m=-m,p=-p,g=-g),1-c>1e-6?(l=Math.acos(c),u=Math.sin(l),h=Math.sin((1-n)*l)/u,d=Math.sin(n*l)/u):(h=1-n,d=n),e[0]=h*r+d*f,e[1]=h*s+d*m,e[2]=h*a+d*p,e[3]=h*o+d*g,e}function s(e,t){const i=t[0]+t[4]+t[8];let n;if(i>0)n=Math.sqrt(i+1),e[3]=.5*n,n=.5/n,e[0]=(t[5]-t[7])*n,e[1]=(t[6]-t[2])*n,e[2]=(t[1]-t[3])*n;else{let i=0;t[4]>t[0]&&(i=1),t[8]>t[3*i+i]&&(i=2);const r=(i+1)%3,s=(i+2)%3;n=Math.sqrt(t[3*i+i]-t[3*r+r]-t[3*s+s]+1),e[i]=.5*n,n=.5/n,e[3]=(t[3*r+s]-t[3*s+r])*n,e[r]=(t[3*r+i]+t[3*i+r])*n,e[s]=(t[3*s+i]+t[3*i+s])*n}return e}e.zero=t,e.identity=i,e.setIdentity=function(e){e[0]=0,e[1]=0,e[2]=0,e[3]=1},e.hasNaN=function(e){return isNaN(e[0])||isNaN(e[1])||isNaN(e[2])||isNaN(e[3])},e.create=function(e,t,n,r){const s=i();return s[0]=e,s[1]=t,s[2]=n,s[3]=r,s},e.setAxisAngle=n,e.getAxisAngle=function(e,t){const i=2*Math.acos(t[3]),n=Math.sin(i/2);return 0!==n?(e[0]=t[0]/n,e[1]=t[1]/n,e[2]=t[2]/n):(e[0]=1,e[1]=0,e[2]=0),i},e.multiply=function(e,t,i){const n=t[0],r=t[1],s=t[2],a=t[3],o=i[0],l=i[1],c=i[2],u=i[3];return e[0]=n*u+a*o+r*c-s*l,e[1]=r*u+a*l+s*o-n*c,e[2]=s*u+a*c+n*l-r*o,e[3]=a*u-n*o-r*l-s*c,e},e.rotateX=function(e,t,i){i*=.5;const n=t[0],r=t[1],s=t[2],a=t[3],o=Math.sin(i),l=Math.cos(i);return e[0]=n*l+a*o,e[1]=r*l+s*o,e[2]=s*l-r*o,e[3]=a*l-n*o,e},e.rotateY=function(e,t,i){i*=.5;const n=t[0],r=t[1],s=t[2],a=t[3],o=Math.sin(i),l=Math.cos(i);return e[0]=n*l-s*o,e[1]=r*l+a*o,e[2]=s*l+n*o,e[3]=a*l-r*o,e},e.rotateZ=function(e,t,i){i*=.5;const n=t[0],r=t[1],s=t[2],a=t[3],o=Math.sin(i),l=Math.cos(i);return e[0]=n*l+r*o,e[1]=r*l-n*o,e[2]=s*l+a*o,e[3]=a*l-s*o,e},e.calculateW=function(e,t){const i=t[0],n=t[1],r=t[2];return e[0]=i,e[1]=n,e[2]=r,e[3]=Math.sqrt(Math.abs(1-i*i-n*n-r*r)),e},e.slerp=r,e.invert=function(e,t){const i=t[0],n=t[1],r=t[2],s=t[3],a=i*i+n*n+r*r+s*s,o=a?1/a:0;return e[0]=-i*o,e[1]=-n*o,e[2]=-r*o,e[3]=s*o,e},e.conjugate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e},e.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]},e.fromMat3=s,e.fromEuler=function(e,t,i){const[n,r,s]=t,a=Math.cos(n/2),o=Math.cos(r/2),l=Math.cos(s/2),c=Math.sin(n/2),u=Math.sin(r/2),h=Math.sin(s/2);switch(i){case"XYZ":e[0]=c*o*l+a*u*h,e[1]=a*u*l-c*o*h,e[2]=a*o*h+c*u*l,e[3]=a*o*l-c*u*h;break;case"YXZ":e[0]=c*o*l+a*u*h,e[1]=a*u*l-c*o*h,e[2]=a*o*h-c*u*l,e[3]=a*o*l+c*u*h;break;case"ZXY":e[0]=c*o*l-a*u*h,e[1]=a*u*l+c*o*h,e[2]=a*o*h+c*u*l,e[3]=a*o*l-c*u*h;break;case"ZYX":e[0]=c*o*l-a*u*h,e[1]=a*u*l+c*o*h,e[2]=a*o*h-c*u*l,e[3]=a*o*l+c*u*h;break;case"YZX":e[0]=c*o*l+a*u*h,e[1]=a*u*l+c*o*h,e[2]=a*o*h-c*u*l,e[3]=a*o*l-c*u*h;break;case"XZY":e[0]=c*o*l-a*u*h,e[1]=a*u*l-c*o*h,e[2]=a*o*h+c*u*l,e[3]=a*o*l+c*u*h;break;default:Kv()}return e};const a=[0,0,0];function o(e,t){const i=t[0],n=t[1],r=t[2],s=t[3];let a=i*i+n*n+r*r+s*s;return a>0&&(a=1/Math.sqrt(a),e[0]=i*a,e[1]=n*a,e[2]=r*a,e[3]=s*a),e}e.fromUnitVec3=function(e,t,i){let n=Gv.dot(t,i)+1;return nMath.abs(t[2])?Gv.set(a,-t[1],t[0],0):Gv.set(a,0,-t[2],t[1])):Gv.cross(a,t,i),e[0]=a[0],e[1]=a[1],e[2]=a[2],e[3]=n,o(e,e),e},e.clone=function(e){const i=t();return i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=e[3],i},e.toArray=function(e,t,i){return t[i+0]=e[0],t[i+1]=e[1],t[i+2]=e[2],t[i+3]=e[3],t},e.fromArray=function(e,t,i){return e[0]=t[i+0],e[1]=t[i+1],e[2]=t[i+2],e[3]=t[i+3],e},e.copy=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e},e.set=function(e,t,i,n,r){return e[0]=t,e[1]=i,e[2]=n,e[3]=r,e},e.exactEquals=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]},e.equals=function(e,t){const i=e[0],n=e[1],r=e[2],s=e[3],a=t[0],o=t[1],l=t[2],c=t[3];return Math.abs(i-a)<=Fv*Math.max(1,Math.abs(i),Math.abs(a))&&Math.abs(n-o)<=Fv*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(r-l)<=Fv*Math.max(1,Math.abs(r),Math.abs(l))&&Math.abs(s-c)<=Fv*Math.max(1,Math.abs(s),Math.abs(c))},e.add=function(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e[3]=t[3]+i[3],e},e.normalize=o;const l=[0,0,0],c=[1,0,0],u=[0,1,0];e.rotationTo=function(e,t,i){const r=Gv.dot(t,i);return r<-.999999?(Gv.cross(l,c,t),Gv.magnitude(l)<1e-6&&Gv.cross(l,u,t),Gv.normalize(l,l),n(e,l,Math.PI),e):r>.999999?(e[0]=0,e[1]=0,e[2]=0,e[3]=1,e):(Gv.cross(l,t,i),e[0]=l[0],e[1]=l[1],e[2]=l[2],e[3]=1+r,o(e,e))};const h=t(),d=t();e.sqlerp=function(e,t,i,n,s,a){return r(h,t,s,a),r(d,i,n,a),r(e,h,d,2*a*(1-a)),e};const f=[0,0,0,0,0,0,0,0,0];e.setAxes=function(e,t,i,n){return f[0]=i[0],f[3]=i[1],f[6]=i[2],f[1]=n[0],f[4]=n[1],f[7]=n[2],f[2]=-t[0],f[5]=-t[1],f[8]=-t[2],o(e,s(e,f))},e.toString=function(e,t){return`[${e[0].toPrecision(t)} ${e[1].toPrecision(t)} ${e[2].toPrecision(t)} ${e[3].toPrecision(t)}]`},e.Identity=i()}(Zv||(Zv={})),function(e){function t(e,t,r){const s=function(e,t,i){const n=[];for(let e=0;ee[t],set:(e,t,i)=>e[t]=i,add:(e,t,i)=>e[t]+=i,dataOffset:e=>e,getCoords:(e,t)=>(t[0]=e,t)};case 2:if(0===i[0]&&1===i[1]){const e=t[0];return{get:(t,i,n)=>t[n*e+i],set:(t,i,n,r)=>t[n*e+i]=r,add:(t,i,n,r)=>t[n*e+i]+=r,dataOffset:(t,i)=>i*e+t,getCoords:(t,i)=>(i[0]=t%e,i[1]=Math.floor(t/e),i)}}if(1===i[0]&&0===i[1]){const e=t[1];return{get:(t,i,n)=>t[i*e+n],set:(t,i,n,r)=>t[i*e+n]=r,add:(t,i,n,r)=>t[i*e+n]+=r,dataOffset:(t,i)=>t*e+i,getCoords:(t,i)=>(i[0]=Math.floor(t/e),i[1]=t%e,i)}}throw new Error("bad axis order");case 3:if(0===i[0]&&1===i[1]&&2===i[2]){const e=t[0],i=t[1],n=e*i;return{get:(t,i,r,s)=>t[i+r*e+s*n],set:(t,i,r,s,a)=>t[i+r*e+s*n]=a,add:(t,i,r,s,a)=>t[i+r*e+s*n]+=a,dataOffset:(t,i,r)=>t+i*e+r*n,getCoords:(t,n)=>{const r=Math.floor(t/e);return n[0]=t%e,n[1]=r%i,n[2]=Math.floor(r/i),n}}}if(0===i[0]&&2===i[1]&&1===i[2]){const e=t[0],i=t[2],n=e*i;return{get:(t,i,r,s)=>t[i+s*e+r*n],set:(t,i,r,s,a)=>t[i+s*e+r*n]=a,add:(t,i,r,s,a)=>t[i+s*e+r*n]+=a,dataOffset:(t,i,r)=>t+r*e+i*n,getCoords:(t,n)=>{const r=Math.floor(t/e);return n[0]=t%e,n[1]=Math.floor(r/i),n[2]=r%i,n}}}if(1===i[0]&&0===i[1]&&2===i[2]){const e=t[1],i=t[0],n=e*i;return{get:(t,i,r,s)=>t[r+i*e+s*n],set:(t,i,r,s,a)=>t[r+i*e+s*n]=a,add:(t,i,r,s,a)=>t[r+i*e+s*n]+=a,dataOffset:(t,i,r)=>i+t*e+r*n,getCoords:(t,n)=>{const r=Math.floor(t/e);return n[0]=r%i,n[1]=t%e,n[2]=Math.floor(r/i),n}}}if(1===i[0]&&2===i[1]&&0===i[2]){const e=t[1],i=t[2],n=e*i;return{get:(t,i,r,s)=>t[r+s*e+i*n],set:(t,i,r,s,a)=>t[r+s*e+i*n]=a,add:(t,i,r,s,a)=>t[r+s*e+i*n]+=a,dataOffset:(t,i,r)=>i+r*e+t*n,getCoords:(t,n)=>{const r=Math.floor(t/e);return n[0]=Math.floor(r/i),n[1]=t%e,n[2]=r%i,n}}}if(2===i[0]&&0===i[1]&&1===i[2]){const e=t[2],i=t[0],n=e*i;return{get:(t,i,r,s)=>t[s+i*e+r*n],set:(t,i,r,s,a)=>t[s+i*e+r*n]=a,add:(t,i,r,s,a)=>t[s+i*e+r*n]+=a,dataOffset:(t,i,r)=>r+t*e+i*n,getCoords:(t,n)=>{const r=Math.floor(t/e);return n[0]=r%i,n[1]=Math.floor(r/i),n[2]=t%e,n}}}if(2===i[0]&&1===i[1]&&0===i[2]){const e=t[2],i=t[1],n=e*i;return{get:(t,i,r,s)=>t[s+r*e+i*n],set:(t,i,r,s,a)=>t[s+r*e+i*n]=a,add:(t,i,r,s,a)=>t[s+r*e+i*n]+=a,dataOffset:(t,i,r)=>r+i*e+t*n,getCoords:(t,n)=>{const r=Math.floor(t/e);return n[0]=Math.floor(r/i),n[1]=r%i,n[2]=t%e,n}}}throw new Error("bad axis order");default:return{get:(t,...i)=>t[r(e,i)],set:(t,...i)=>t[r(e,i)]=i[i.length-1],add:(t,...i)=>t[r(e,i)]+=i[i.length-1],dataOffset:(...t)=>r(e,t),getCoords:(t,i)=>function(e,t,i){const{dimensions:n,axisOrderFastToSlow:r}=e,s=n.length;let a=t;for(let e=0;enew(t||e.defaultCtor)(i)}function r(e,t){const{accessDimensions:i,axisOrderFastToSlow:n}=e,r=i.length-1;let s=i[r]*t[n[r]];for(let e=r-1;e>=0;e--)s=(s+t[n[e]])*i[e];return s}function s(e,t){const i=[];for(let n=0;ns(e,t)},e.convertToCanonicalAxisIndicesSlowToFast=function(e){const t=new Int32Array(e.length);for(let i=0;is(e,t)}}(Qv||(Qv={})),function(e){let t;function i(e,t){return sb(t.T,e,t,1)}function n(e){return ab(e)}!function(e){function t(t,i=e.float){return{"@type":"tensor",T:t.create(),space:t,valueType:"tensor",baseType:i}}e.str={"@type":"str",T:"",valueType:"str"},e.ustr={"@type":"str",T:"",valueType:"str",transform:"uppercase"},e.lstr={"@type":"str",T:"",valueType:"str",transform:"lowercase"},e.int={"@type":"int",T:0,valueType:"int"},e.coord={"@type":"coord",T:0,valueType:"float"},e.float={"@type":"float",T:0,valueType:"float"},e.Str=function(e){var t;return{"@type":"str",T:null!==(t=null==e?void 0:e.defaultValue)&&void 0!==t?t:"",transform:null==e?void 0:e.transform,valueType:"str"}},e.Int=function(e=0){return{"@type":"int",T:e,valueType:"int"}},e.Float=function(e=0){return{"@type":"float",T:e,valueType:"float"}},e.Tensor=t,e.Vector=function(i,n=e.float){return t(Qv.Vector(i,"int"===n["@type"]?Int32Array:Float64Array),n)},e.Matrix=function(i,n,r=e.float){return t(Qv.ColumnMajorMatrix(i,n,"int"===r["@type"]?Int32Array:Float64Array),r)},e.Aliased=function(e){return e},e.List=function(e,t,i=[]){return{"@type":"list",T:i,separator:e,itemParse:t,valueType:"list"}}}(t=e.Schema||(e.Schema={})),e.is=function(e){return!!e&&!!e.schema&&!!e.value},e.ValueKind={Present:0,NotPresent:1,Unknown:2},e.Undefined=i,e.ofConst=function(e,t,i){return sb(e,t,i,0)},e.ofLambda=n,e.range=function(e,i){return n({value:t=>t+e,rowCount:Math.max(i-e+1,0),schema:t.int})},e.ofArray=function(e){return ob(e)},e.ofIntArray=function(e){return ob({array:e,schema:t.int})},e.ofFloatArray=function(e){return ob({array:e,schema:t.float})},e.ofStringArray=function(e){return ob({array:e,schema:t.str})},e.ofStringAliasArray=function(e){return ob({array:e,schema:t.Aliased(t.str)})},e.ofStringListArray=function(e,i=","){return ob({array:e,schema:t.List(i,(e=>e))})},e.ofIntTokens=function(e){const{count:i,data:n,indices:r}=e;return ab({value:e=>ib(n,r[2*e],r[2*e+1])||0,rowCount:i,schema:t.int})},e.ofFloatTokens=function(e){const{count:i,data:n,indices:r}=e;return ab({value:e=>rb(n,r[2*e],r[2*e+1])||0,rowCount:i,schema:t.float})},e.ofStringTokens=function(e){const{count:i,data:n,indices:r}=e;return ab({value:e=>{const t=n.substring(r[2*e],r[2*e+1]);return"."===t||"?"===t?"":t},rowCount:i,schema:t.str})},e.window=function(e,t,i){return lb(e,t,i)},e.view=function(e,t,i=!0){return cb(e,t,i)},e.createFirstIndexMap=function(e){return function(e){const t=new Map;for(let i=0,n=e.rowCount;it.has(e)?t.get(e):-1}(e)},e.mapToArray=function(e,t,i){return function(e,t,i){const n=new i(e.rowCount);for(let i=0,r=e.rowCount;i0&&(e.chunks[e.chunks.length]=e.current.length===e.offset?e.current.join(""):e.current.slice(0,e.offset).join("")),e.chunks.join("")):e.current.length===e.offset?e.current.join(""):e.current.splice(0,e.offset).join("")},e.getSize=function(e){let t=0;for(const i of e.chunks)t+=i.length;for(let i=0;i0&&(e.current.length===e.offset?e.chunks[e.chunks.length]=e.current.join(""):e.chunks[e.chunks.length]=e.current.slice(0,e.offset).join(""),e.offset=0),e.chunks};const t=[];function i(e,i){i>0&&n(e,t[i])}function n(e,t){e.offset===e.capacity&&(e.chunks[e.chunks.length]=e.current.join(""),e.offset=0),e.current[e.offset++]=t}!function(){let e="";for(let i=0;i<512;i++)t[i]=e,e+=" "}(),e.newline=function(e){n(e,"\n")},e.whitespace=i,e.whitespace1=function(e){n(e," ")},e.write=function(e,t){t&&(e.offset===e.capacity&&(e.chunks[e.chunks.length]=e.current.join(""),e.offset=0),e.current[e.offset++]=t)},e.writeSafe=n,e.writePadLeft=function(e,t,r){if(!t)return void i(e,r);i(e,r-t.length),n(e,t)},e.writePadRight=function(e,t,r){if(!t)return void i(e,r);const s=r-t.length;n(e,t),i(e,s)},e.writeInteger=function(e,t){n(e,""+t)},e.writeIntegerAndSpace=function(e,t){n(e,t+" ")},e.writeIntegerPadLeft=function(e,t,r){const s=""+t;i(e,r-s.length),n(e,s)},e.writeIntegerPadRight=function(e,t,r){const s=""+t,a=r-s.length;n(e,s),i(e,a)},e.writeFloat=function(e,t,i){n(e,""+Math.round(i*t)/i)},e.writeFloatPadLeft=function(e,t,r,s){const a=""+Math.round(r*t)/r;i(e,s-a.length),n(e,a)},e.writeFloatPadRight=function(e,t,r,s){const a=""+Math.round(r*t)/r,o=s-a.length;n(e,a),i(e,o)}}(tb||(tb={}));const bb=function(){if("undefined"!=typeof window&&window.performance){const e=window.performance;return()=>e.now()}return"undefined"!=typeof process&&"undefined"!==process.hrtime&&"function"==typeof process.hrtime?()=>{const e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:Date.now?()=>Date.now():()=>+new Date}();var xb,wb,Sb;function Mb(e,t){return e-t}function Ab(e=0,t=Number.MAX_SAFE_INTEGER){let i=e;return()=>{const e=i;return i=(i+1)%t,e}}!function(e){const t="undefined"!=typeof btoa?btoa:e=>Buffer.from(e).toString("base64"),i=[];e.create22=function(){let e=+new Date+bb();for(let t=0;t<16;t++)i[t]=String.fromCharCode((e+255*Math.random())%255|0),e=Math.floor(e/255);return t(i.join("")).replace(/\+/g,"-").replace(/\//g,"_").substr(0,22)},e.createv4=function(){let e=+new Date+bb();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){const i=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===t?i:3&i|8).toString(16)}))},e.is=function(e){return"string"==typeof e}}(xb||(xb={})),function(e){class t{has(e){return!1}forEach(e,t){return t}constructor(){this.size=0}}class i{has(e){return e===this.idx}forEach(e,t){return e(this.idx,t),t}constructor(e){this.idx=e,this.size=1}}class n{has(e){return ee[t++]=i)),function(e){Array.prototype.sort.call(e,Mb)}(e),this._flat=e,this._flat}forEach(e,t){return this._forEach(e,t),t}constructor(e){this.set=e,this._flat=void 0,this.size=e.size}}function a(e){return new s(e)}function o(e,t){return new n(e,t)}e.always=function(e){return new r(e)},e.never=new t,e.ofSet=a,e.singleton=function(e){return new i(e)},e.ofUniqueIndices=function(e){const a=e.length;if(0===a)return new t;if(1===a)return new i(e[0]);let o=0;for(const t of e)t>o&&(o=t);if(a===o)return new r(a);if(a/o<1/12){const t=new Set;for(const i of e)t.add(i);return new s(t)}const l=new Int8Array(o+1);for(const t of e)l[t]=1;return new n(l,e.length)},e.ofMask=o,e.hasAny=function(e,t){for(const i of t)if(e.has(i))return!0;return!1},e.complement=function(e,t){let i=0,n=0;if(t.forEach((t=>{e.has(t)||(i++,t>n&&(n=t))})),i/n<1/12){const i=new Set;return t.forEach((t=>{e.has(t)||i.add(t)})),a(i)}{const r=new Uint8Array(n+1);return t.forEach((t=>{e.has(t)||(r[t]=1)})),o(r,i)}}}(wb||(wb={})),function(e){e.create=function(e){return{ref:e}},e.set=function(e,t){return e.ref=t,e}}(Sb||(Sb={}));const Cb=Ab(0,2147483647);var Tb,Pb,Eb,Ib,Db;function Rb(e){const{data:t,indices:i}=e;return function(e,n){const r=i[2*e],s=i[2*n],a=i[2*e+1]-r;if(a!==i[2*n+1]-s)return!1;for(let e=0;en[e]}}!function(e){e.create=function(e,t){return{id:Cb(),version:0,value:e,metadata:t}},e.withValue=function(e,t){return{id:e.id,version:e.version+1,value:t,metadata:e.metadata}}}(Tb||(Tb={})),function(e){function t(e,t){return Sb.set(e,Tb.withValue(e.ref,t))}e.create=function(e,t){return Sb.create(Tb.create(e,t))},e.update=t,e.set=function(e,t){return Sb.set(e,t)},e.updateIfChanged=function(e,i){return e.ref.value!==i?t(e,i):e}}(Pb||(Pb={})),function(e){function t(e,t,i){const n=Object.create(null),r=Object.keys(t);n._rowCount=i.length,n._columns=r,n._schema=t;for(const t of r)n[t]=Jv.view(e[t],i);return n}function i(e,t){const i=Object.create(null),{_columns:n}=e;for(let r=0;rt[e][s],valueKind:e=>void 0===t[e][s]?1:0});return i},e.ofArrays=function(e,t){var i;const n=Object.create(null),r=Object.keys(e);n._rowCount=0,n._columns=r,n._schema=e;for(const s of r)void 0!==t[s]?(n[s]=Jv.ofArray({array:t[s],schema:e[s]}),n._rowCount=null===(i=t[s])||void 0===i?void 0:i.length):n[s]=Jv.Undefined(n._rowCount,e[s]);return n},e.view=t,e.pick=function(e,i,n){const r=[];for(let t=0,i=e._rowCount;tt(i,n)));let n=!0;for(let e=0,t=i.length;e0?t[i[0]].rowCount:0,name:e,fieldNames:i,getField:e=>t[e]}}e.empty=function(e){return{rowCount:0,name:e,fieldNames:[],getField(e){}}},e.ofFields=t,e.ofTable=function(e,i){const n={};for(const e of i._columns)n[e]=Db.ofColumn(i[e]);return t(e,n)}}(Ob||(Ob={})),function(e){function t(e){const t=e.length,i=t=>{const i=e[t];return i&&"."!==i&&"?"!==i?i:""},n=t=>{const i=e[t];return ib(i,0,i.length)||0},r=t=>{const i=e[t];return rb(i,0,i.length)||0};return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:t,str:i,int:n,float:r,valueKind:t=>{const i=e[t],n=i.length;if(n>1)return 0;if(0===n)return 1;const r=i.charCodeAt(0);return 46===r?1:63===r?2:0},areValuesEqual:(t,i)=>e[t]===e[i],toStringArray:n=>n?kv(t,i,n):e,toIntArray:e=>kv(t,n,e),toFloatArray:e=>kv(t,r,e)}}function i(e){const{rowCount:t,valueKind:i,areValuesEqual:n,isDefined:r}=e;let s,a,o;switch(e.schema.valueType){case"float":case"int":s=t=>""+e.value(t),a=e.value,o=e.value;break;case"str":s=e.value,a=t=>{const i=e.value(t);return ib(i,0,i.length)||0},o=t=>{const i=e.value(t);return rb(i,0,i.length)||0};break;case"list":const{separator:t}=e.schema;s=i=>e.value(i).join(t),a=e=>NaN,o=e=>NaN;break;default:throw new Error(`unsupported valueType '${e.schema.valueType}'`)}return{__array:void 0,binaryEncoding:void 0,isDefined:r,rowCount:t,str:s,int:a,float:o,valueKind:i,areValuesEqual:n,toStringArray:e=>kv(t,s,e),toIntArray:e=>kv(t,a,e),toFloatArray:e=>kv(t,o,e)}}e.ofString=function(e){return t([e])},e.ofStrings=t,e.ofNumbers=function(e){const t=e.length,i=t=>""+e[t],n=t=>e[t],r=i=>!i||i.array&&e instanceof i.array?e:kv(t,n,i);return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:t,str:i,int:n,float:n,valueKind:e=>0,areValuesEqual:(t,i)=>e[t]===e[i],toStringArray:e=>kv(t,i,e),toIntArray:r,toFloatArray:r}},e.ofTokens=function(e){const{data:t,indices:i,count:n}=e,r=e=>{const n=t.substring(i[2*e],i[2*e+1]);return"."===n||"?"===n?"":n},s=e=>ib(t,i[2*e],i[2*e+1])||0,a=e=>rb(t,i[2*e],i[2*e+1])||0;return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:n,str:r,int:s,float:a,valueKind:e=>{const n=i[2*e],r=i[2*e+1]-n;if(r>1)return 0;if(0===r)return 1;const s=t.charCodeAt(n);return 46===s?1:63===s?2:0},areValuesEqual:Rb(e),toStringArray:e=>kv(n,r,e),toIntArray:e=>kv(n,s,e),toFloatArray:e=>kv(n,a,e)}},e.ofColumn=i,e.ofUndefined=function(e,t){return i(Jv.Undefined(e,t))}}(Db||(Db={}));const Nb="undefined"!=typeof setImmediate?"undefined"!=typeof window?{setImmediate:(e,...t)=>window.setImmediate(e,...t),clearImmediate:e=>window.clearImmediate(e)}:{setImmediate:setImmediate,clearImmediate:clearImmediate}:function(){const e=function(){const e="undefined"!=typeof window&&window,t="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,i="undefined"!=typeof global&&global;return e||i||t}(),t={},i="undefined"!=typeof document?document:void 0;let n,r=1;function s(e){delete t[e]}function a(e){const i=t[e];s(e),function(e){const t=e.callback,i=e.args;switch(i.length){case 0:t();break;case 1:t(i[0]);break;case 2:t(i[0],i[1]);break;case 3:t(i[0],i[1],i[2]);break;default:t.apply(void 0,i)}}(i)}return"undefined"!=typeof process&&"[object process]"==={}.toString.call(process)?n=function(e){process.nextTick((function(){a(e)}))}:function(){if(e&&e.postMessage&&!e.importScripts){let t=!0;const i=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=i,t}}()?function(){const t="setImmediate$"+Math.random()+"$",i=function(i){i.source===e&&"string"==typeof i.data&&0===i.data.indexOf(t)&&a(+i.data.slice(t.length))};window.addEventListener?window.addEventListener("message",i,!1):window.attachEvent("onmessage",i),n=function(e){window.postMessage(t+e,"*")}}():"undefined"!=typeof MessageChannel?function(){const e=new MessageChannel;e.port1.onmessage=function(e){a(e.data)},n=function(t){e.port2.postMessage(t)}}():i&&"onreadystatechange"in i.createElement("script")?function(){const e=i.documentElement;n=function(t){let n=i.createElement("script");n.onreadystatechange=function(){a(t),n.onreadystatechange=null,e.removeChild(n),n=null},e.appendChild(n)}}():n=function(e){setTimeout(a,0,e)},{setImmediate:function(e,...i){"function"!=typeof e&&(e=new Function(""+e));const s={callback:e,args:i};return t[r]=s,n(r),r++},clearImmediate:s}}();function Fb(e){Nb.setImmediate(e)}const Bb={setImmediate:Nb.setImmediate,clearImmediate:Nb.clearImmediate,immediatePromise:()=>new Promise(Fb),delay:(e,t=void 0)=>new Promise((i=>setTimeout(i,e,t)))};!function(){try{return"production"===process.env.NODE_ENV}catch(e){return!1}}(),function(){try{const e=process.env.DEBUG;return"*"===e||"molstar"===e}catch(e){return!1}}();const zb="undefined"!=typeof performance&&!!performance.mark&&performance.measure&&!1;var Ub;function Vb(e,t,i=250){const n=function(e,t,i){const n={abortRequested:!1,treeAborted:!1,reason:""};return{updateRateMs:i,lastNotified:bb(),observer:t,abortToken:n,taskId:e.id,root:{progress:$b(e),children:[]},tryAbort:Gb(n)}}(e,t,i);return Wb(e,new Kb(n,n.root))}function $b(e){return{taskId:e.id,taskName:e.name,message:"",startedTime:0,canAbort:!0,isIndeterminate:!0,current:0,max:0}}function Gb(e){return t=>{e.abortRequested=!0,e.reason=t||e.reason}}function Hb(e){return{progress:{...e.progress},children:e.children.map(Hb)}}function jb(e){return e.progress.canAbort&&e.children.every(jb)}async function Wb(e,t){Ub.markStart(e),t.node.progress.startedTime=bb();try{const i=await e.f(t);return Ub.markEnd(e),Ub.measure(e),t.info.abortToken.abortRequested&&qb(t.info),i}catch(i){throw Qb.isAbort(i)&&(t.isAborted=!0,t.node.children.length>0&&await new Promise((e=>{t.onChildrenFinished=e})),e.onAbort&&e.onAbort()),i}}function qb(e){throw e.abortToken.treeAborted||(e.abortToken.treeAborted=!0,Xb(e.root),Yb(e,bb())),Qb.Aborted(e.abortToken.reason)}function Xb(e){const t=e.progress;t.isIndeterminate=!0,t.canAbort=!1,t.message="Aborting...";for(const t of e.children)Xb(t)}function Yb(e,t){e.lastNotified=t;const i=function(e){return{root:Hb(e.root),canAbort:jb(e.root),requestAbort:e.tryAbort}}(e);e.observer(i)}!function(e){function t(e){return`startTask${e.id}`}function i(e){return`endTask${e.id}`}e.markStart=function(e){zb&&performance.mark(t(e))},e.markEnd=function(e){zb&&performance.mark(i(e))},e.measure=function(e){zb&&performance.measure(`✳️ ${e.name}`,t(e),i(e))}}(Ub||(Ub={}));class Kb{checkAborted(){this.info.abortToken.abortRequested&&(this.isAborted=!0,qb(this.info))}get shouldUpdate(){return this.checkAborted(),bb()-this.lastUpdatedTime>this.info.updateRateMs}updateProgress(e){if(this.checkAborted(),!e)return;const t=this.node.progress;"string"==typeof e?(t.message=e,t.isIndeterminate=!0):(void 0!==e.canAbort&&(t.canAbort=e.canAbort),void 0!==e.message&&(t.message=e.message),void 0!==e.current&&(t.current=e.current),void 0!==e.max&&(t.max=e.max),t.isIndeterminate=void 0===t.current||void 0===t.max,void 0!==e.isIndeterminate&&(t.isIndeterminate=e.isIndeterminate))}update(e,t){if(this.lastUpdatedTime=bb(),this.updateProgress(e),!t)return Yb(this.info,this.lastUpdatedTime),this.checkAborted(),Bb.immediatePromise()}async runChild(e,t){this.updateProgress(t);const i={progress:$b(e),children:[]},n=this.node.children;n.push(i);const r=new Kb(this.info,i);try{return await Wb(e,r)}catch(e){if(Qb.isAbort(e)&&this.isAborted)return;throw e}finally{const e=n.indexOf(i);if(e>=0){for(let t=e,i=n.length-1;t0;){a+=c;const t=bb()-l;u+=t,o+=t,e.shouldUpdate&&(await r(e,i,a),s=Math.round(u*a/o)+1,l=bb(),u=0)}return e.shouldUpdate&&await r(e,i,a),i}function sx(e){return{data:e,position:0,length:e.length,lineNumber:1,tokenStart:0,tokenEnd:0}}function ax(e){for(;e.position=e.length)return void(e.tokenType=6);e.tokenStart=e.position,e.tokenEnd=e.position,e.isEscaped=!1;const i=e.data.charCodeAt(e.position);switch(i){case 35:!function(e){for(;e.position=5&&95===e.data.charCodeAt(e.tokenStart+4)?!function(e){let t=e.data.charCodeAt(e.tokenStart);return!(68!==t&&100!==t||(t=e.data.charCodeAt(e.tokenStart+1),65!==t&&97!==t||(t=e.data.charCodeAt(e.tokenStart+2),84!==t&&116!==t||(t=e.data.charCodeAt(e.tokenStart+3),65!==t&&97!==t))))}(e)?!function(e){let t=e.data.charCodeAt(e.tokenStart);return!(83!==t&&115!==t||(t=e.data.charCodeAt(e.tokenStart+1),65!==t&&97!==t||(t=e.data.charCodeAt(e.tokenStart+2),86!==t&&118!==t||(t=e.data.charCodeAt(e.tokenStart+3),69!==t&&101!==t))))}(e)?!function(e){if(e.tokenEnd-e.tokenStart!=5)return!1;let t=e.data.charCodeAt(e.tokenStart);return!(76!==t&&108!==t||(t=e.data.charCodeAt(e.tokenStart+1),79!==t&&111!==t||(t=e.data.charCodeAt(e.tokenStart+2),79!==t&&111!==t||(t=e.data.charCodeAt(e.tokenStart+3),80!==t&&112!==t))))}(e)?e.tokenType=3:e.tokenType=2:e.tokenType=1:e.tokenType=0:e.tokenType=3}}function fx(e){for(dx(e);5===e.tokenType;)dx(e)}function mx(){return{categoryNames:[],categoryData:Object.create(null)}}function px(e,t){const i=Object.create(null);for(const n of e){const e=t[n];i[n]=Ob(e.name,e.rowCount,e.fieldNames,e.fields)}return i}function gx(e,t,i){return kb(e.categoryNames,px(e.categoryNames,e.categoryData),t,i)}function _x(e,t){return kb(e.categoryNames,px(e.categoryNames,e.categoryData),t)}function yx(e,t,i,n,r){if(t in e.categoryData){const i=e.categoryData[t];i.fieldNames.push(...n),Object.assign(i.fields,r)}else e.categoryData[t]={name:t,rowCount:i,fieldNames:n,fields:r},e.categoryNames.push(t)}function vx(e,t){const i=e.tokenStart,n=cx(e),r=ux(e,n),s=Object.create(null),a=[];let o=!0;for(;o;){if(4!==e.tokenType||!lx(e,i,n)){o=!1;break}const t=hx(e).substring(r.length+1);if(fx(e),3!==e.tokenType)return{hasError:!0,errorLine:e.lineNumber,errorMessage:"Expected value."};s[t]=Db.ofTokens({data:e.data,indices:[e.tokenStart,e.tokenEnd],count:1}),a[a.length]=t,fx(e)}return yx(t,r.substr(1),1,a,s),{hasError:!1,errorLine:0,errorMessage:""}}function bx(e,t){const{tokenizer:i,tokens:n,fieldCount:r}=t;let s=t.tokenCount,a=0;for(;3===i.tokenType&&a0&&i.push(gx(s,r,a)),r=e.substring(n.tokenStart+5,n.tokenEnd),s=mx(),a=[],fx(n)}else if(1===t){if(n.tokenEnd-n.tokenStart==5)o.categoryNames.length>0&&(a[a.length]=_x(o,c)),n.inSaveFrame=!1;else{if(n.inSaveFrame)return Sx(n.lineNumber,"Save frames cannot be nested.");n.inSaveFrame=!0,c=e.substring(n.tokenStart+5,n.tokenEnd),o=mx()}fx(n)}else if(2===t){const e=await wx(n,n.inSaveFrame?o:s);if(e.hasError)return Sx(e.errorLine,e.errorMessage)}else{if(4!==t)return console.log(n.tokenType,sx.getTokenString(n)),Sx(n.lineNumber,"Unexpected token. Expected data_, loop_, or data name.");{const e=vx(n,n.inSaveFrame?o:s);if(e.hasError)return Sx(e.errorLine,e.errorMessage)}}}return n.inSaveFrame?Sx(n.lineNumber,`Unfinished save frame (${l.header}).`):((s.categoryNames.length>0||a.length>0)&&i.push(gx(s,r,a)),function(e){return ix.success(e)}(Lb(i)))}function Ax(e){return Qb.create("Parse CIF",(async t=>await Mx(e,t)))}!function(e){class t{run(e,t=250){return e?Vb(this,e,t):this.f(Zb)}runAsChild(e,t){return e.isSynchronous?this.f(Zb):function(e,t,i){return e.runChild(t,i)}(e,this,t)}runInContext(e){return e.isSynchronous?this.f(Zb):function(e,t){return Wb(t,e)}(e,this)}constructor(e,t,i){this.name=e,this.f=t,this.onAbort=i,this.id=r()}}function i(e){const t=e;return!!e&&"number"==typeof t.id&&"string"==typeof t.name&&!!t.run}function n(e,i,n){return new t(e,i,n)}e.is=i,e.isAbort=function(e){return!!e&&!!e.isAborted},e.Aborted=function(e){return{isAborted:!0,reason:e,toString:()=>"Aborted"+(e?": "+e:"")}},e.create=n,e.constant=function(e,t){return n(e,(async e=>t))},e.empty=function(){return n("",(async e=>{}))},e.fail=function(e,t){return n(e,(async e=>{throw new Error(t)}))},e.resolveInContext=function(e,t){return i(e)?t?e.runInContext(t):e.run():e};const r=Ab(0,1073741823)}(Qb||(Qb={})),function(e){e.Synchronous=Zb}(Jb||(Jb={})),function(e){function t(e,i=""){const n=e.progress;if(!e.children.length)return n.isIndeterminate?`${i}${n.taskName}: ${n.message}`:`${i}${n.taskName}: [${n.current}/${n.max}] ${n.message}`;const r=i+" |_ ",s=e.children.map((e=>t(e,r)));return n.isIndeterminate?`${i}${n.taskName}: ${n.message}\n${s.join("\n")}`:`${i}${n.taskName}: [${n.current}/${n.max}] ${n.message}\n${s.join("\n")}`}e.format=function(e){return t(e.root)}}(ex||(ex={})),function(e){function t(e){return e.data.substring(e.tokenStart,e.tokenEnd)}function i(e){const{data:t}=e;for(;e.position=r;)a=n.charCodeAt(--s);return e.tokenStart=r,e.tokenEnd=s+1,e.position=i,e}e.getTokenString=t,e.reset=function(e){e.position=0,e.lineNumber=1,e.tokenStart=0,e.tokenEnd=0},e.eatLine=i,e.markStart=function(e){e.tokenStart=e.position},e.markLine=n,e.readLine=function(e){return n(e),t(e)},e.readLineTrim=function(e){n(e);const i=e.position;return s(e,e.tokenStart,e.tokenEnd),e.position=i,t(e)},e.markLines=function(e,t){const i=tx.create(e.data,2*t);return r(e,t,i),i},e.readLines=function(t,i){const n=[];for(let r=0;r{const n=Math.min(t-a,e);return r(i,n,s),a+=n,n}),((e,t)=>e.update({message:"Parsing...",current:t.position,max:t.length}))),s},e.readAllLines=function(t){const i=e(t),r=tx.create(i.data,Math.max(t.length/80,2));for(;n(i);)tx.add(r,i.tokenStart,i.tokenEnd);return r},e.readAllLinesAsync=async function(t,i,r=1e5){const s=e(t),a=tx.create(s.data,Math.max(t.length/80,2));return await rx(i,r,s,((e,t)=>(function(e,t,i){let r=0;for(let s=0;se.update({message:"Parsing...",current:t.position,max:t.length}))),a},e.eatValue=function(e){for(;e.positionn.indicesLenMinus2&&function(e){const t=new Uint32Array(1.61*e.indices.length|0);t.set(e.indices),e.indices=t,e.indicesLenMinus2=t.length-2|0}(n),n.indices[n.offset++]=t,n.indices[n.offset++]=i,e.count++}e.add=t,e.addToken=function(e,i){t(e,i.tokenStart,i.tokenEnd)},e.addUnchecked=function(e,t,i){e.indices[e.offset++]=t,e.indices[e.offset++]=i,e.count++},e.create=function(e,t){return{data:e,indicesLenMinus2:(t=Math.max(10,t))-2|0,count:0,offset:0,indices:new Uint32Array(t)}}}(tx||(tx={})),function(e){e.error=function(e,i=-1){return new t(e,i)},e.success=function(e,t=[]){return new i(e,t)};class t{toString(){return this.line>=0?`[Line ${this.line}] ${this.message}`:this.message}constructor(e,t){this.message=e,this.line=t,this.isError=!0}}e.Error=t;class i{constructor(e,t){this.result=e,this.warnings=t,this.isError=!1}}e.Success=i}(ix||(ix={})),function(e){var t,i;(t=e.IntDataType||(e.IntDataType={}))[t.Int8=1]="Int8",t[t.Int16=2]="Int16",t[t.Int32=3]="Int32",t[t.Uint8=4]="Uint8",t[t.Uint16=5]="Uint16",t[t.Uint32=6]="Uint32",(i=e.FloatDataType||(e.FloatDataType={}))[i.Float32=32]="Float32",i[i.Float64=33]="Float64",e.getDataType=function(t){let i;return i=t instanceof Int8Array?e.IntDataType.Int8:t instanceof Int16Array?e.IntDataType.Int16:t instanceof Int32Array?e.IntDataType.Int32:t instanceof Uint8Array?e.IntDataType.Uint8:t instanceof Uint16Array?e.IntDataType.Uint16:t instanceof Uint32Array?e.IntDataType.Uint32:t instanceof Float32Array?e.FloatDataType.Float32:t instanceof Float64Array?e.FloatDataType.Float64:e.IntDataType.Int32,i},e.isSignedIntegerDataType=function(e){if(e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array)return!0;for(let t=0,i=e.length;t=0;i--)t=Px(t,e.encoding[i]);return t}function Px(e,t){switch(t.kind){case"ByteArray":switch(t.type){case nx.IntDataType.Uint8:return e;case nx.IntDataType.Int8:return function(e){return new Int8Array(e.buffer,e.byteOffset)}(e);case nx.IntDataType.Int16:return function(e){return Dx(e,2,Int16Array)}(e);case nx.IntDataType.Uint16:return function(e){return Dx(e,2,Uint16Array)}(e);case nx.IntDataType.Int32:return function(e){return Dx(e,4,Int32Array)}(e);case nx.IntDataType.Uint32:return function(e){return Dx(e,4,Uint32Array)}(e);case nx.FloatDataType.Float32:return function(e){return Dx(e,4,Float32Array)}(e);case nx.FloatDataType.Float64:return function(e){return Dx(e,8,Float64Array)}(e);default:Kv(t.type)}case"FixedPoint":return function(e,t){const i=e.length,n=Ix(t.srcType,i),r=1/t.factor;for(let t=0;t=e.currentSize)a.set(l,o);else for(let e=0,t=l.length;e=e.currentSize&&t(e);const a=e.currentChunk,o=e.currentIndex;return a[o]=i,a[o+1]=n,a[o+2]=r,a[o+3]=s,e.currentIndex+=4,e.elementCount++},e.add3=function(e,i,n,r){e.currentIndex>=e.currentSize&&t(e);const s=e.currentChunk,a=e.currentIndex;return s[a]=i,s[a+1]=n,s[a+2]=r,e.currentIndex+=3,e.elementCount++},e.add2=function(e,i,n){e.currentIndex>=e.currentSize&&t(e);const r=e.currentChunk,s=e.currentIndex;return r[s]=i,r[s+1]=n,e.currentIndex+=2,e.elementCount++},e.add=function(e,i){return e.currentIndex>=e.currentSize&&t(e),e.currentChunk[e.currentIndex]=i,e.currentIndex+=1,e.elementCount++},e.addRepeat=function(e,i,n){for(let r=0;r=e.currentSize&&t(e),e.currentChunk[e.currentIndex++]=n,e.elementCount++;return e.elementCount},e.addMany=function(e,i){const{elementSize:n}=e;for(let r=0,s=i.length;r=e.currentSize&&t(e);const{currentChunk:s}=e;for(let t=0;t=0?Math.ceil((e+1)/t):Math.ceil((e+1)/(-t-1))}function i({limit8:e,limit16:i},n,r){n.pack8+=t(r,e),n.pack16+=t(r,i),n.count+=1}function n(e,i){e.pack8+=t(i,127),e.pack16+=t(i,32767),e.count+=1}function r(e){return 4*e.count<2*e.pack16?{length:4*e.count,elem:4}:2*e.pack16e.length-t.length)),i}e.getSize=c,e.classify=function(e){if(e.length<2)return Nx.by(Nx.byteArray);switch(c(e)[0].kind){case"pack":return Nx.by(Nx.integerPacking);case"rle":return Nx.by(Nx.runLength).and(Nx.integerPacking);case"delta":return Nx.by(Nx.delta).and(Nx.integerPacking);case"delta-rle":return Nx.by(Nx.delta).and(Nx.runLength).and(Nx.integerPacking);default:Kv()}}}(Lx||(Lx={})),function(e){e.classify=function(e){const{mantissaDigits:t,integerDigits:i}=function(e,t,i){let n=1,r=0;for(let s=0,a=e.length;s=0){const r=Fx(e[s],t,i);r<0?n=-1:r>n&&(n=r)}const a=Math.abs(e[s]);if(a>i){const e=Math.floor(Math.log10(Math.abs(a)))+1;e>r&&(r=e)}}return{mantissaDigits:n,integerDigits:r}}(e,4,1e-6);if(t<0||t+i>10)return Nx.by(Nx.byteArray);if(0===t)return Lx.classify(e);const n=function(e){let t=1;for(let i=0;i=0?s/t|0:s/i|0}return n+=e.length,n}e.byteArray=n,e.fixedPoint=function(e){return t=>function(e,t){const i=nx.getDataType(e),n=new Int32Array(e.length);for(let i=0,r=e.length;ifunction(e,t,i,n,r){const s=nx.getDataType(e);if(!e.length)return{encodings:[{kind:"IntervalQuantization",min:t,max:i,numSteps:n,srcType:s}],data:new Int32Array(0)};if(i=i?n-1:0|Math.round((s-t)/a)}return{encodings:[{kind:"IntervalQuantization",min:t,max:i,numSteps:n,srcType:s}],data:o}}(r,e,t,i,n)},e.runLength=function(e){let t=nx.getDataType(e);if(void 0===t&&(e=new Int32Array(e),t=nx.IntDataType.Int32),!e.length)return{encodings:[{kind:"RunLength",srcType:t,srcSize:0}],data:new Int32Array(0)};let i=2;for(let t=1,n=e.length;t=0)for(;n>=i;)a[o]=i,++o,n-=i;else for(;n<=r;)a[o]=r,++o,n-=r;a[o]=n,++o}const l=n(a);return{encodings:[{kind:"IntegerPacking",byteCount:t.bytesPerElement,isUnsigned:!t.isSigned,srcSize:s},l.encodings[0]],data:l.data}}(e,t)},e.stringArray=function(e){const t=Object.create(null),i=[],n=new Int32Array(e.length),r=Rx.create(Int32Array,1,Math.min(1024,e.length<32?e.length+1:Math.round(e.length/8)+1));Rx.add(r,0);let s=0,a=0;for(const o of e){if(null==o){n[a++]=-1;continue}let e=t[o];void 0===e&&(s+=o.length,e=i.length,i[e]=o,t[o]=e,Rx.add(r,s)),n[a++]=e}const o=Rx.compact(r),l=Bx(o).encode(o),c=Bx(n).encode(n);return{encodings:[{kind:"StringArray",dataEncoding:c.encoding,stringData:i.join(""),offsetEncoding:l.encoding,offsets:l.data}],data:c.data}}}(Nx||(Nx={}));const Ux=function(){const e=[];for(let t=0;t<1024;t++)e[t]=String.fromCharCode(t);return e}();function Vx(e){throw new Error(e)}const $x="undefined"!=typeof TextDecoder?new TextDecoder:void 0;function Gx(e,t,i){if($x){const n=t||i!==e.length?e.subarray(t,t+i):e;return $x.decode(n)}return function(e,t,i){const n=Ux;let r,s=0;const a=[];for(let o=t,l=t+i;o0&&(r[r.length]=a.slice(0,s).join("")),r.join("")):a.slice(0,s).join("")}(e,t,i)}function Hx(e,t){const i={};for(let n=0;ne.name)),getField(e){const n=t[e];if(n)return i[e]||(i[e]=function(e){const t=e.mask?Tx(e.mask):void 0,i=Tx(e.data),n=Ov(i),r=n?t?e=>0===t[e]?""+i[e]:"":e=>""+i[e]:t?e=>0===t[e]?i[e]:"":e=>i[e],s=n?e=>i[e]:e=>{const t=i[e];return ib(t,0,t.length)},a=n?e=>i[e]:e=>{const t=i[e];return rb(t,0,t.length)},o=t?e=>t[e]:e=>0,l=i.length;return{__array:i,binaryEncoding:e.data.encoding,isDefined:!0,rowCount:l,str:r,int:s,float:a,valueKind:o,areValuesEqual:(e,t)=>i[e]===i[t],toStringArray:e=>kv(l,r,e),toIntArray:n?e=>Nv(i,e):e=>kv(l,s,e),toFloatArray:n?e=>Nv(i,e):e=>kv(l,a,e)}}(n)),i[e]}}}function Kx(e){return Qb.create("Parse BinaryCIF",(async t=>{const i=[0,3];try{const t=Xx({buffer:n=e,offset:0,dataView:new DataView(n.buffer)});if(!function(e,t){for(let i=0;i<2;i++)if(e[i]>t[i])return!1;return!0}(i,t.version.match(/(\d)\.(\d)\.\d/).slice(1).map((e=>+e))))return ix.error(`Unsupported format version. Current ${t.version}, required ${i.join(".")}.`);const r=Lb(t.dataBlocks.map((e=>{const t=Object.create(null);for(const i of e.categories)t[i.name.substr(1)]=Yx(i);return kb(e.categories.map((e=>e.name.substr(1))),t,e.header)})));return ix.success(r)}catch(e){return ix.error(""+e)}var n}))}var Zx;function Qx(e,t,i){return function(e,t,i){const n=Object.create(null);for(const r of Object.keys(e))n[r]=sw(r,e[r],t,i);return Ib.ofTables(t.header,e,n)}(e,t,i)}function Jx(e){switch(e.valueType){case"str":return(t,i,n)=>function(e,t,i,n){return{schema:e,__array:t.__array,isDefined:t.isDefined,rowCount:t.rowCount,value:"lowercase"===e.transform?e=>i(e).toLowerCase():"uppercase"===e.transform?e=>i(e).toUpperCase():i,valueKind:t.valueKind,areValuesEqual:t.areValuesEqual,toArray:"lowercase"===e.transform?e=>Array.from(n(e)).map((e=>e.toLowerCase())):"uppercase"===e.transform?e=>Array.from(n(e)).map((e=>e.toUpperCase())):n}}(e,t,t.str,t.toStringArray);case"int":return(t,i,n)=>ew(e,t,t.int,t.toIntArray);case"float":return(t,i,n)=>ew(e,t,t.float,t.toFloatArray);case"list":throw new Error("Use createListColumn instead.");case"tensor":throw new Error("Use createTensorColumn instead.")}}function ew(e,t,i,n){return{schema:e,__array:t.__array,isDefined:t.isDefined,rowCount:t.rowCount,value:i,valueKind:t.valueKind,areValuesEqual:t.areValuesEqual,toArray:n}}function tw(e,t,i){const n=e.separator,r=e.itemParse,s=t.getField(i),a=s?e=>s.str(e).split(n).map((e=>r(e.trim()))).filter((e=>!!e)):e=>[];return{schema:e,__array:void 0,isDefined:!!s,rowCount:t.rowCount,value:a,valueKind:s?s.valueKind:()=>1,areValuesEqual:(e,t)=>function(e,t){const i=e.length;if(i!==t.length)return!1;for(let n=0;nkv(t.rowCount,a,e)}}function iw(e,t,i){const n=e.space,r=t.fieldNames.includes(`${i}[0]`)||t.fieldNames.includes(`${i}[0][0]`)||t.fieldNames.includes(`${i}[0][0][0]`),s=r?0:1,a=t.fieldNames.includes(`${i}_1`)||t.fieldNames.includes(`${i}_11`)||t.fieldNames.includes(`${i}_111`)?"underscore":"brackets",o=function(e,t,i,n){const r=i?0:1;switch(t){case 1:return"brackets"===n?t=>`${e}[${t+r}]`:t=>`${e}_${t+r}`;case 2:return"brackets"===n?(t,i)=>`${e}[${t+r}][${i+r}]`:(t,i)=>`${e}_${t+r}${i+r}`;case 3:return"brackets"===n?(t,i,n)=>`${e}[${t+r}][${i+r}][${n+r}]`:(t,i,n)=>`${e}_${t+r}${i+r}${n+r}`;default:throw new Error("Tensors with rank > 3 or rank 0 are currently not supported.")}}(i,n.rank,r,a),l=t.getField(o(s,s,s))||Jv.Undefined(t.rowCount,e),c=e=>function(e,t,i,n){const r=t.create();if(1===t.rank){const s=t.dimensions[0];for(let a=0;a 3 or rank 0 are currently not supported.");{const s=t.dimensions[0],a=t.dimensions[1],o=t.dimensions[2];for(let l=0;lQv.areEqualExact(c(e),c(t)),toArray:e=>kv(t.rowCount,c,e)}}!function(e){function t(e){return e.replace(".","_").replace(/\[/,"_").replace(/(\[|\])/g,"")}e.canonical=t,e.equal=function(e,i){return t(e)===t(i)},e.create=function(e,i,n=!1){const r=`${e}${i?`.${i}`:""}`;return n?t(r):r}}(Zx||(Zx={}));class nw{constructor(e,t,i){this._isDefined=i;const n=Object.keys(t);this._rowCount=e.rowCount,this._columns=n,this._schema=t;const r=Object.create(null);for(const i of n)Object.defineProperty(this,i,{get:function(){if(r[i])return r[i];const n=t[i];if("list"===n.valueType)r[i]=tw(n,e,i);else if("tensor"===n.valueType)r[i]=iw(n,e,i);else{const t=Jx(n),s=e.getField(i);r[i]=s?t(s,e,i):Jv.Undefined(e.rowCount,n)}return r[i]},enumerable:!0,configurable:!1})}}function rw(e,t,i,n){const r=Zx.create(t,e),s=Zx.canonical(r);if(s in i)return i[s];if(n&&r in n)for(const e of n[r]){const t=Zx.canonical(e);if(t in i)return i[t]}}function sw(e,t,i,n){let r=i.categories[e];if(n){const s=function(e){const t=Object.create(null);for(const i of Object.keys(e.categories))for(const n of e.categories[i].fieldNames)t[Zx.create(i,n,!0)]=e.categories[i].getField(n);return t}(i),a=Object.create(null),o=[];let l=0;for(const i of Object.keys(t)){const t=rw(i,e,s,n);t&&(a[i]=t,o.push(i),l=t.rowCount)}r={rowCount:l,name:e,fieldNames:[...o],getField:e=>a[e]}}return new nw(r||Ob.empty(e),t,!!r)}var aw=Jv.Schema;const ow=aw.str,lw=aw.int,cw=aw.float,uw=aw.coord,hw=aw.Aliased,dw=aw.Matrix,fw=aw.Vector,mw=aw.lstr,pw=aw.List,gw={atom_site:{auth_asym_id:ow,auth_atom_id:ow,auth_comp_id:ow,auth_seq_id:lw,B_iso_or_equiv:cw,Cartn_x:uw,Cartn_y:uw,Cartn_z:uw,group_PDB:hw(ow),id:lw,label_alt_id:ow,label_asym_id:ow,label_atom_id:ow,label_comp_id:ow,label_entity_id:ow,label_seq_id:lw,occupancy:cw,type_symbol:ow,pdbx_PDB_ins_code:ow,pdbx_PDB_model_num:lw,pdbx_formal_charge:lw,pdbx_label_index:lw,pdbx_sifts_xref_db_name:ow,pdbx_sifts_xref_db_acc:ow,pdbx_sifts_xref_db_num:ow,pdbx_sifts_xref_db_res:ow,ihm_model_id:lw},atom_site_anisotrop:{id:lw,type_symbol:ow,U:dw(3,3),U_esd:dw(3,3),pdbx_auth_seq_id:ow,pdbx_auth_asym_id:ow,pdbx_auth_atom_id:ow,pdbx_auth_comp_id:ow,pdbx_label_seq_id:lw,pdbx_label_alt_id:ow,pdbx_label_asym_id:ow,pdbx_label_atom_id:ow,pdbx_label_comp_id:ow,pdbx_PDB_ins_code:ow},atom_sites:{entry_id:ow,fract_transf_matrix:dw(3,3),fract_transf_vector:fw(3)},audit_author:{name:ow,pdbx_ordinal:lw,identifier_ORCID:ow},audit_conform:{dict_location:ow,dict_name:ow,dict_version:ow},cell:{angle_alpha:cw,angle_beta:cw,angle_gamma:cw,entry_id:ow,length_a:cw,length_b:cw,length_c:cw,Z_PDB:lw,pdbx_unique_axis:ow},chem_comp:{formula:ow,formula_weight:cw,id:ow,mon_nstd_flag:hw(mw),name:ow,type:hw(mw),pdbx_synonyms:pw(";",(e=>e))},chem_comp_bond:{atom_id_1:ow,atom_id_2:ow,comp_id:ow,value_order:hw(mw),pdbx_ordinal:lw,pdbx_stereo_config:hw(mw),pdbx_aromatic_flag:hw(mw)},citation:{book_publisher:ow,country:ow,id:ow,journal_abbrev:ow,journal_id_ASTM:ow,journal_id_CSD:ow,journal_id_ISSN:ow,journal_volume:ow,page_first:ow,page_last:ow,title:ow,year:lw,pdbx_database_id_DOI:ow,pdbx_database_id_PubMed:lw},citation_author:{citation_id:ow,name:ow,ordinal:lw},database_2:{database_id:hw(mw),database_code:ow},entity:{details:ow,formula_weight:cw,id:ow,src_method:hw(mw),type:hw(mw),pdbx_description:pw(",",(e=>e)),pdbx_number_of_molecules:lw,pdbx_mutation:ow,pdbx_fragment:ow,pdbx_ec:pw(",",(e=>e))},entity_poly:{entity_id:ow,nstd_linkage:hw(mw),nstd_monomer:hw(mw),type:hw(ow),pdbx_strand_id:pw(",",(e=>e)),pdbx_seq_one_letter_code:ow,pdbx_seq_one_letter_code_can:ow,pdbx_target_identifier:ow},entity_poly_seq:{entity_id:ow,hetero:hw(mw),mon_id:ow,num:lw},entry:{id:ow},exptl:{entry_id:ow,method:hw(ow)},software:{classification:ow,date:ow,description:ow,name:ow,type:hw(mw),version:ow,pdbx_ordinal:lw},struct:{entry_id:ow,title:ow,pdbx_descriptor:ow},struct_asym:{details:ow,entity_id:ow,id:ow,pdbx_modified:ow,pdbx_blank_PDB_chainid_flag:hw(ow)},struct_conf:{beg_label_asym_id:ow,beg_label_comp_id:ow,beg_label_seq_id:lw,beg_auth_asym_id:ow,beg_auth_comp_id:ow,beg_auth_seq_id:lw,conf_type_id:hw(mw),details:ow,end_label_asym_id:ow,end_label_comp_id:ow,end_label_seq_id:lw,end_auth_asym_id:ow,end_auth_comp_id:ow,end_auth_seq_id:lw,id:ow,pdbx_beg_PDB_ins_code:ow,pdbx_end_PDB_ins_code:ow,pdbx_PDB_helix_class:ow,pdbx_PDB_helix_length:lw,pdbx_PDB_helix_id:ow},struct_conn:{conn_type_id:hw(mw),details:ow,id:ow,ptnr1_label_asym_id:ow,ptnr1_label_atom_id:ow,ptnr1_label_comp_id:ow,ptnr1_label_seq_id:lw,ptnr1_auth_asym_id:ow,ptnr1_auth_comp_id:ow,ptnr1_auth_seq_id:lw,ptnr1_symmetry:ow,ptnr2_label_asym_id:ow,ptnr2_label_atom_id:ow,ptnr2_label_comp_id:ow,ptnr2_label_seq_id:lw,ptnr2_auth_asym_id:ow,ptnr2_auth_comp_id:ow,ptnr2_auth_seq_id:lw,ptnr2_symmetry:ow,pdbx_ptnr1_PDB_ins_code:ow,pdbx_ptnr1_label_alt_id:ow,pdbx_ptnr1_standard_comp_id:ow,pdbx_ptnr2_PDB_ins_code:ow,pdbx_ptnr2_label_alt_id:ow,pdbx_ptnr3_PDB_ins_code:ow,pdbx_ptnr3_label_alt_id:ow,pdbx_ptnr3_label_asym_id:ow,pdbx_ptnr3_label_atom_id:ow,pdbx_ptnr3_label_comp_id:ow,pdbx_ptnr3_label_seq_id:lw,pdbx_PDB_id:ow,pdbx_dist_value:cw,pdbx_value_order:hw(mw)},struct_conn_type:{criteria:ow,id:hw(mw),reference:ow},struct_keywords:{entry_id:ow,text:pw(",",(e=>e)),pdbx_keywords:ow},struct_ncs_oper:{code:hw(ow),details:ow,id:lw,matrix:dw(3,3),vector:fw(3)},struct_sheet_range:{beg_label_asym_id:ow,beg_label_comp_id:ow,beg_label_seq_id:lw,end_label_asym_id:ow,end_label_comp_id:ow,end_label_seq_id:lw,beg_auth_asym_id:ow,beg_auth_comp_id:ow,beg_auth_seq_id:lw,end_auth_asym_id:ow,end_auth_comp_id:ow,end_auth_seq_id:lw,id:ow,sheet_id:ow,pdbx_beg_PDB_ins_code:ow,pdbx_end_PDB_ins_code:ow},struct_site:{details:ow,id:ow,pdbx_num_residues:lw,pdbx_evidence_code:ow,pdbx_auth_asym_id:ow,pdbx_auth_comp_id:ow,pdbx_auth_seq_id:ow,pdbx_auth_ins_code:ow},struct_site_gen:{details:ow,id:ow,label_alt_id:ow,label_asym_id:ow,label_atom_id:ow,label_comp_id:ow,label_seq_id:lw,auth_asym_id:ow,auth_comp_id:ow,auth_seq_id:ow,site_id:ow,symmetry:ow,pdbx_auth_ins_code:ow,pdbx_num_res:lw},symmetry:{entry_id:ow,cell_setting:hw(mw),Int_Tables_number:lw,space_group_name_Hall:ow,"space_group_name_H-M":ow},pdbx_database_status:{status_code:hw(ow),status_code_sf:hw(ow),status_code_mr:hw(ow),entry_id:ow,recvd_initial_deposition_date:ow,SG_entry:hw(mw),deposit_site:hw(ow),process_site:hw(ow),status_code_cs:hw(ow),methods_development_category:hw(ow),pdb_format_compatible:hw(mw)},pdbx_nonpoly_scheme:{asym_id:ow,entity_id:ow,mon_id:ow,pdb_strand_id:ow,ndb_seq_num:ow,pdb_seq_num:ow,auth_seq_num:ow,pdb_mon_id:ow,auth_mon_id:ow,pdb_ins_code:ow},pdbx_database_related:{db_name:ow,details:ow,db_id:ow,content_type:hw(ow)},pdbx_entity_nonpoly:{entity_id:ow,comp_id:ow,name:ow},pdbx_chem_comp_synonyms:{name:ow,comp_id:ow,provenance:hw(ow)},pdbx_chem_comp_identifier:{comp_id:ow,identifier:ow,type:hw(ow),program:ow,program_version:ow},pdbx_unobs_or_zero_occ_residues:{id:lw,polymer_flag:hw(mw),occupancy_flag:hw(lw),PDB_model_num:lw,auth_asym_id:ow,auth_comp_id:ow,auth_seq_id:ow,PDB_ins_code:ow,label_asym_id:ow,label_comp_id:ow,label_seq_id:lw},pdbx_struct_mod_residue:{id:lw,auth_asym_id:ow,auth_comp_id:ow,auth_seq_id:lw,PDB_ins_code:ow,label_asym_id:ow,label_comp_id:ow,label_seq_id:lw,parent_comp_id:ow,details:ow},pdbx_struct_oper_list:{id:ow,type:hw(ow),name:ow,symmetry_operation:ow,matrix:dw(3,3),vector:fw(3)},pdbx_struct_assembly:{method_details:ow,oligomeric_details:ow,oligomeric_count:lw,details:ow,id:ow},pdbx_struct_assembly_gen:{asym_id_list:pw(",",(e=>e)),assembly_id:ow,oper_expression:ow},pdbx_reference_entity_list:{prd_id:ow,ref_entity_id:ow,type:hw(mw),details:ow,component_id:lw},pdbx_reference_entity_link:{link_id:lw,prd_id:ow,details:ow,ref_entity_id_1:ow,ref_entity_id_2:ow,entity_seq_num_1:lw,entity_seq_num_2:lw,comp_id_1:ow,comp_id_2:ow,atom_id_1:ow,atom_id_2:ow,value_order:hw(mw),component_1:lw,component_2:lw,link_class:hw(ow)},pdbx_reference_entity_poly_link:{link_id:lw,prd_id:ow,ref_entity_id:ow,component_id:lw,entity_seq_num_1:lw,entity_seq_num_2:lw,comp_id_1:ow,comp_id_2:ow,atom_id_1:ow,atom_id_2:ow,value_order:hw(mw)},pdbx_molecule:{prd_id:ow,instance_id:lw,asym_id:ow},pdbx_molecule_features:{prd_id:ow,class:hw(mw),type:hw(mw),name:ow,details:ow},entity_src_nat:{entity_id:ow,pdbx_organism_scientific:ow,pdbx_plasmid_name:ow,pdbx_src_id:lw,pdbx_beg_seq_num:lw,pdbx_end_seq_num:lw},entity_src_gen:{entity_id:ow,pdbx_gene_src_gene:pw(",",(e=>e)),pdbx_gene_src_scientific_name:ow,plasmid_name:ow,pdbx_src_id:lw,pdbx_beg_seq_num:lw,pdbx_end_seq_num:lw},pdbx_entity_src_syn:{organism_scientific:ow,entity_id:ow,pdbx_src_id:lw,pdbx_beg_seq_num:lw,pdbx_end_seq_num:lw},pdbx_entity_branch_descriptor:{entity_id:ow,descriptor:ow,type:hw(mw),program:ow,program_version:ow,ordinal:lw},pdbx_entity_instance_feature:{details:ow,feature_type:hw(ow),auth_asym_id:ow,asym_id:ow,auth_seq_num:ow,seq_num:lw,comp_id:ow,auth_comp_id:ow,ordinal:lw},pdbx_entity_branch_list:{entity_id:ow,hetero:hw(mw),comp_id:ow,num:lw},pdbx_entity_branch_link:{link_id:lw,details:ow,entity_id:ow,entity_branch_list_num_1:lw,entity_branch_list_num_2:lw,comp_id_1:ow,comp_id_2:ow,atom_id_1:ow,leaving_atom_id_1:ow,atom_stereo_config_1:hw(mw),atom_id_2:ow,leaving_atom_id_2:ow,atom_stereo_config_2:hw(mw),value_order:hw(mw)},pdbx_entity_branch:{entity_id:ow,type:hw(ow)},pdbx_branch_scheme:{entity_id:ow,hetero:hw(mw),asym_id:ow,mon_id:ow,num:lw,pdb_asym_id:ow,pdb_seq_num:ow,pdb_mon_id:ow,auth_asym_id:ow,auth_seq_num:ow,auth_mon_id:ow},pdbx_chem_comp_related:{comp_id:ow,related_comp_id:ow,relationship_type:hw(ow),details:ow},ihm_starting_model_details:{starting_model_id:ow,entity_id:ow,entity_description:ow,asym_id:ow,entity_poly_segment_id:lw,starting_model_source:hw(ow),starting_model_auth_asym_id:ow,starting_model_sequence_offset:lw,dataset_list_id:lw},ihm_starting_comparative_models:{id:lw,starting_model_id:ow,starting_model_auth_asym_id:ow,starting_model_seq_id_begin:lw,starting_model_seq_id_end:lw,template_auth_asym_id:ow,template_seq_id_begin:lw,template_seq_id_end:lw,template_sequence_identity:cw,template_sequence_identity_denominator:hw(lw),template_dataset_list_id:lw,alignment_file_id:lw},ihm_starting_model_seq_dif:{id:lw,entity_id:ow,asym_id:ow,seq_id:lw,comp_id:ow,starting_model_id:ow,db_asym_id:ow,db_seq_id:lw,db_comp_id:ow,details:ow},ihm_model_representation:{id:lw,name:ow,details:ow},ihm_model_representation_details:{id:lw,representation_id:lw,entity_poly_segment_id:lw,entity_id:ow,entity_description:ow,entity_asym_id:ow,model_object_primitive:hw(ow),starting_model_id:ow,model_mode:hw(ow),model_granularity:hw(ow),model_object_count:lw},ihm_struct_assembly_details:{id:lw,assembly_id:lw,parent_assembly_id:lw,entity_description:ow,entity_id:ow,asym_id:ow,entity_poly_segment_id:lw},ihm_struct_assembly:{id:lw,name:ow,description:ow},ihm_modeling_protocol:{id:lw,num_steps:lw,protocol_name:ow},ihm_modeling_protocol_details:{id:lw,protocol_id:lw,step_id:lw,struct_assembly_id:lw,dataset_group_id:lw,struct_assembly_description:ow,step_name:ow,step_method:ow,num_models_begin:lw,num_models_end:lw,multi_scale_flag:hw(mw),multi_state_flag:hw(mw),ordered_flag:hw(mw),script_file_id:lw,software_id:lw},ihm_multi_state_modeling:{state_id:lw,state_group_id:lw,population_fraction:cw,population_fraction_sd:cw,state_type:ow,state_name:ow,experiment_type:hw(ow),details:ow},ihm_modeling_post_process:{id:lw,protocol_id:lw,analysis_id:lw,step_id:lw,type:hw(ow),feature:hw(ow),num_models_begin:lw,num_models_end:lw},ihm_ensemble_info:{ensemble_id:lw,ensemble_name:ow,post_process_id:lw,model_group_id:lw,ensemble_clustering_method:hw(ow),ensemble_clustering_feature:hw(ow),num_ensemble_models:lw,num_ensemble_models_deposited:lw,ensemble_precision_value:cw,ensemble_file_id:lw},ihm_model_list:{model_id:lw,model_name:ow,assembly_id:lw,protocol_id:lw,representation_id:lw},ihm_model_group:{id:lw,name:ow,details:ow},ihm_model_group_link:{model_id:lw,group_id:lw},ihm_model_representative:{id:lw,model_group_id:lw,model_id:lw,selection_criteria:hw(ow)},ihm_dataset_list:{id:lw,data_type:hw(ow),database_hosted:hw(mw)},ihm_dataset_group:{id:lw,name:ow,application:hw(ow),details:ow},ihm_dataset_group_link:{dataset_list_id:lw,group_id:lw},ihm_related_datasets:{dataset_list_id_derived:lw,dataset_list_id_primary:lw},ihm_dataset_related_db_reference:{id:lw,dataset_list_id:lw,db_name:hw(ow),accession_code:ow,version:ow,details:ow},ihm_external_reference_info:{reference_id:lw,reference_provider:ow,reference_type:hw(ow),reference:ow,refers_to:hw(ow),associated_url:ow},ihm_external_files:{id:lw,reference_id:lw,file_path:ow,content_type:hw(ow),file_size_bytes:cw,details:ow},ihm_dataset_external_reference:{id:lw,dataset_list_id:lw,file_id:lw},ihm_localization_density_files:{id:lw,file_id:lw,ensemble_id:lw,entity_id:ow,entity_poly_segment_id:lw,asym_id:ow},ihm_predicted_contact_restraint:{id:lw,group_id:lw,entity_id_1:ow,entity_id_2:ow,asym_id_1:ow,asym_id_2:ow,comp_id_1:ow,comp_id_2:ow,seq_id_1:lw,seq_id_2:lw,rep_atom_1:hw(ow),rep_atom_2:hw(ow),distance_lower_limit:cw,distance_upper_limit:cw,probability:cw,restraint_type:hw(ow),model_granularity:hw(ow),dataset_list_id:lw,software_id:lw},ihm_cross_link_list:{id:lw,group_id:lw,entity_description_1:ow,entity_description_2:ow,entity_id_1:ow,entity_id_2:ow,comp_id_1:ow,comp_id_2:ow,seq_id_1:lw,seq_id_2:lw,linker_type:hw(ow),dataset_list_id:lw},ihm_cross_link_restraint:{id:lw,group_id:lw,entity_id_1:ow,entity_id_2:ow,asym_id_1:ow,asym_id_2:ow,comp_id_1:ow,comp_id_2:ow,seq_id_1:lw,seq_id_2:lw,atom_id_1:ow,atom_id_2:ow,restraint_type:hw(ow),conditional_crosslink_flag:hw(ow),model_granularity:hw(ow),distance_threshold:cw,psi:cw,sigma_1:cw,sigma_2:cw},ihm_cross_link_result_parameters:{id:lw,restraint_id:lw,model_id:lw,psi:cw,sigma_1:cw,sigma_2:cw},ihm_2dem_class_average_restraint:{id:lw,dataset_list_id:lw,number_raw_micrographs:lw,pixel_size_width:cw,pixel_size_height:cw,image_resolution:cw,image_segment_flag:hw(mw),number_of_projections:lw,struct_assembly_id:lw,details:ow},ihm_2dem_class_average_fitting:{id:lw,restraint_id:lw,model_id:lw,cross_correlation_coefficient:cw,rot_matrix:dw(3,3),tr_vector:fw(3)},ihm_3dem_restraint:{id:lw,dataset_list_id:lw,model_id:lw,struct_assembly_id:lw,fitting_method:ow,number_of_gaussians:lw,cross_correlation_coefficient:cw},ihm_sas_restraint:{id:lw,dataset_list_id:lw,model_id:lw,struct_assembly_id:lw,profile_segment_flag:hw(mw),fitting_atom_type:ow,fitting_method:ow,fitting_state:hw(ow),radius_of_gyration:cw,chi_value:cw,details:ow},ihm_starting_model_coord:{ordinal_id:lw,starting_model_id:ow,group_PDB:hw(ow),id:lw,type_symbol:ow,entity_id:ow,atom_id:ow,comp_id:ow,seq_id:lw,asym_id:ow,Cartn_x:cw,Cartn_y:cw,Cartn_z:cw,B_iso_or_equiv:cw},ihm_sphere_obj_site:{id:lw,entity_id:ow,seq_id_begin:lw,seq_id_end:lw,asym_id:ow,Cartn_x:cw,Cartn_y:cw,Cartn_z:cw,object_radius:cw,rmsf:cw,model_id:lw},ihm_gaussian_obj_site:{id:lw,entity_id:ow,seq_id_begin:lw,seq_id_end:lw,asym_id:ow,mean_Cartn_x:cw,mean_Cartn_y:cw,mean_Cartn_z:cw,weight:cw,covariance_matrix:dw(3,3),model_id:lw},ihm_gaussian_obj_ensemble:{id:lw,entity_id:ow,seq_id_begin:lw,seq_id_end:lw,asym_id:ow,mean_Cartn_x:cw,mean_Cartn_y:cw,mean_Cartn_z:cw,weight:cw,covariance_matrix:dw(3,3),ensemble_id:lw},ihm_feature_list:{feature_id:lw,feature_type:hw(ow),entity_type:hw(ow)},ihm_poly_residue_feature:{ordinal_id:lw,feature_id:lw,entity_id:ow,asym_id:ow,comp_id_begin:ow,comp_id_end:ow,seq_id_begin:lw,seq_id_end:lw},ihm_derived_distance_restraint:{id:lw,group_id:lw,feature_id_1:lw,feature_id_2:lw,group_conditionality:hw(ow),random_exclusion_fraction:cw,distance_upper_limit:cw,restraint_type:hw(ow),dataset_list_id:lw},ma_model_list:{ordinal_id:lw,model_id:lw,model_group_id:lw,model_name:ow,model_group_name:ow,model_type:hw(ow),data_id:lw},ma_target_entity:{entity_id:ow,data_id:lw,origin:hw(ow)},ma_target_entity_instance:{asym_id:ow,entity_id:ow,details:ow},ma_target_ref_db_details:{target_entity_id:ow,db_name:hw(ow),db_code:ow,db_accession:ow,seq_db_isoform:ow,seq_db_align_begin:ow,seq_db_align_end:ow,ncbi_taxonomy_id:ow,organism_scientific:ow},ma_data:{id:lw,content_type:hw(ow),content_type_other_details:ow,name:ow},ma_software_group:{ordinal_id:lw,group_id:lw,software_id:lw},ma_qa_metric:{id:lw,name:ow,type:hw(ow),mode:hw(ow),software_group_id:lw},ma_qa_metric_global:{ordinal_id:lw,model_id:lw,metric_id:lw,metric_value:cw},ma_qa_metric_local:{ordinal_id:lw,model_id:lw,label_asym_id:ow,label_seq_id:lw,label_comp_id:ow,metric_id:lw,metric_value:cw}};var _w=Jv.Schema;const yw=_w.str,vw=_w.float,bw=_w.List,xw=_w.lstr,ww=_w.Aliased,Sw=_w.int,Mw=_w.coord,Aw={chem_comp:{formula:yw,formula_weight:vw,id:yw,mon_nstd_parent_comp_id:bw(",",(e=>e)),name:yw,one_letter_code:yw,three_letter_code:yw,type:ww(xw),pdbx_synonyms:bw(";",(e=>e)),pdbx_type:yw,pdbx_ambiguous_flag:yw,pdbx_replaced_by:yw,pdbx_replaces:yw,pdbx_formal_charge:Sw,pdbx_model_coordinates_details:yw,pdbx_model_coordinates_db_code:yw,pdbx_ideal_coordinates_details:yw,pdbx_ideal_coordinates_missing_flag:ww(xw),pdbx_model_coordinates_missing_flag:ww(xw),pdbx_initial_date:yw,pdbx_modified_date:yw,pdbx_release_status:ww(yw),pdbx_processing_site:ww(yw)},chem_comp_atom:{alt_atom_id:yw,atom_id:yw,charge:Sw,model_Cartn_x:Mw,model_Cartn_y:Mw,model_Cartn_z:Mw,comp_id:yw,type_symbol:yw,pdbx_align:Sw,pdbx_ordinal:Sw,pdbx_model_Cartn_x_ideal:Mw,pdbx_model_Cartn_y_ideal:Mw,pdbx_model_Cartn_z_ideal:Mw,pdbx_stereo_config:ww(xw),pdbx_aromatic_flag:ww(xw),pdbx_leaving_atom_flag:ww(xw)},chem_comp_bond:{atom_id_1:yw,atom_id_2:yw,comp_id:yw,value_order:ww(xw),pdbx_ordinal:Sw,pdbx_stereo_config:ww(xw),pdbx_aromatic_flag:ww(xw)},pdbx_chem_comp_descriptor:{comp_id:yw,descriptor:yw,type:ww(xw),program:yw,program_version:yw},pdbx_chem_comp_identifier:{comp_id:yw,identifier:yw,type:ww(yw),program:yw,program_version:yw}};var Cw=Jv.Schema;const Tw=Cw.str,Pw=Cw.float,Ew=Cw.lstr,Iw=Cw.Aliased,Dw=Cw.int,Rw={pdbx_reference_molecule:{prd_id:Tw,formula_weight:Pw,formula:Tw,type:Iw(Ew),type_evidence_code:Tw,class:Iw(Ew),class_evidence_code:Tw,name:Tw,represent_as:Iw(Ew),chem_comp_id:Tw,compound_details:Tw,description:Tw,representative_PDB_id_code:Tw,release_status:Iw(Ew),replaces:Tw,replaced_by:Tw},pdbx_reference_entity_list:{prd_id:Tw,ref_entity_id:Tw,type:Iw(Ew),details:Tw,component_id:Dw},pdbx_reference_entity_nonpoly:{prd_id:Tw,ref_entity_id:Tw,name:Tw,chem_comp_id:Tw},pdbx_reference_entity_link:{link_id:Dw,prd_id:Tw,details:Tw,ref_entity_id_1:Tw,ref_entity_id_2:Tw,entity_seq_num_1:Dw,entity_seq_num_2:Dw,comp_id_1:Tw,comp_id_2:Tw,atom_id_1:Tw,atom_id_2:Tw,value_order:Iw(Ew),component_1:Dw,component_2:Dw,link_class:Iw(Tw)},pdbx_reference_entity_poly_link:{link_id:Dw,prd_id:Tw,ref_entity_id:Tw,component_id:Dw,entity_seq_num_1:Dw,entity_seq_num_2:Dw,comp_id_1:Tw,comp_id_2:Tw,atom_id_1:Tw,atom_id_2:Tw,value_order:Iw(Ew)},pdbx_reference_entity_poly:{prd_id:Tw,ref_entity_id:Tw,type:Iw(Tw),db_code:Tw,db_name:Tw},pdbx_reference_entity_poly_seq:{prd_id:Tw,ref_entity_id:Tw,mon_id:Tw,parent_mon_id:Tw,num:Dw,observed:Iw(Ew),hetero:Iw(Ew)},pdbx_reference_entity_sequence:{prd_id:Tw,ref_entity_id:Tw,type:Iw(Tw),NRP_flag:Iw(Tw),one_letter_codes:Tw},pdbx_reference_entity_src_nat:{prd_id:Tw,ref_entity_id:Tw,ordinal:Dw,organism_scientific:Tw,taxid:Tw,db_code:Tw,db_name:Tw},pdbx_prd_audit:{prd_id:Tw,date:Tw,processing_site:Iw(Tw),action_type:Iw(Tw)}};var Lw=Jv.Schema;const kw=Lw.str,Ow={datablock:{id:kw,description:kw},dictionary:{title:kw,datablock_id:kw,version:kw},dictionary_history:{version:kw,update:kw,revision:kw},sub_category:{id:kw,description:kw},category_group_list:{id:kw,parent_id:kw,description:kw},item_type_list:{code:kw,primitive_code:kw,construct:kw,detail:kw},item_units_list:{code:kw,detail:kw},item_units_conversion:{from_code:kw,to_code:kw,operator:kw,factor:Lw.float}};var Nw=Jv.Schema;const Fw=Nw.str,Bw=Nw.int,zw=Nw.float,Uw=Nw.Aliased,Vw=Nw.Vector;Uw(Fw),Uw(Fw),Uw(Fw),Uw(Fw),Vw(3),Vw(3);const $w={volume_data_3d_info:{name:Fw,axis_order:Vw(3,Bw),origin:Vw(3),dimensions:Vw(3),sample_rate:Bw,sample_count:Vw(3,Bw),spacegroup_number:Bw,spacegroup_cell_size:Vw(3),spacegroup_cell_angles:Vw(3),mean_source:zw,mean_sampled:zw,sigma_source:zw,sigma_sampled:zw,min_source:zw,min_sampled:zw,max_source:zw,max_sampled:zw},volume_data_3d:{values:zw}};var Gw=Jv.Schema;const Hw=Gw.float,jw=Gw.int,Ww=Gw.str,qw={cell:{angle_alpha:Hw,angle_beta:Hw,angle_gamma:Hw,formula_units_z:jw,length_a:Hw,length_b:Hw,length_c:Hw,volume:Hw},chemical:{melting_point:Hw,name_common:Ww,name_systematic:Ww},chemical_formula:{moiety:Ww,sum:Ww,weight:Hw},space_group:{crystal_system:Ww,it_number:jw,"name_h-m_full":Ww},space_group_symop:{operation_xyz:Ww},geom_bond:{atom_site_label_1:Ww,atom_site_label_2:Ww,distance:Hw,publ_flag:Ww,site_symmetry_1:Ww,site_symmetry_2:Ww,valence:Hw},audit:{block_doi:Ww},database_code:{cod:Ww,csd:Ww,depnum_ccdc_archive:Ww,depnum_ccdc_fiz:Ww,icsd:Ww,mdf:Ww,nbs:Ww},atom_site:{adp_type:Ww,calc_flag:Ww,disorder_assembly:Ww,disorder_group:Ww,fract_x:Hw,fract_y:Hw,fract_z:Hw,label:Ww,occupancy:Hw,refinement_flags:Ww,site_symmetry_multiplicity:jw,type_symbol:Ww,u_iso_or_equiv:Hw},atom_site_aniso:{label:Ww,u_11:Hw,u:(0,Gw.Matrix)(3,3),u_12:Hw,u_13:Hw,u_22:Hw,u_23:Hw,u_33:Hw},atom_type:{description:Ww,symbol:Ww},atom_type_scat:{dispersion_imag:Hw,dispersion_real:Hw,source:Ww}},Xw={"cell.formula_units_z":["cell_formula_units_Z"],"space_group.it_number":["space_group_IT_number","symmetry_Int_Tables_number"],"space_group.name_h-m_full":["symmetry_space_group_name_H-M"],"space_group_symop.operation_xyz":["symmetry_equiv_pos_as_xyz"],"geom_bond.atom_site_label_1":["geom_bond_atom_site_id_1"],"geom_bond.atom_site_label_2":["geom_bond_atom_site_id_2"],"geom_bond.distance":["geom_bond_dist"],"audit.block_doi":["audit_block_DOI"],"database_code.cod":["database_code_COD"],"database_code.csd":["database_code_CSD"],"database_code.depnum_ccdc_archive":["database_code_depnum_CCDC_archive"],"database_code.depnum_ccdc_fiz":["database_code_depnum_CCDC_fiz"],"database_code.icsd":["database_code_ICSD"],"database_code.mdf":["database_code_MDF"],"database_code.nbs":["database_code_NBS"],"atom_site.adp_type":["atom_site_ADP_type","atom_site_thermal_displace_type"],"atom_site.label":["atom_site_id"],"atom_site.site_symmetry_multiplicity":["atom_site_symmetry_multiplicity"],"atom_site.u_iso_or_equiv":["atom_site_U_iso_or_equiv"],"atom_site_aniso.label":["atom_site_anisotrop_id"],"atom_site_aniso.u_11":["atom_site_aniso_U_11","atom_site_anisotrop_U_11"],"atom_site_aniso.u_12":["atom_site_aniso_U_12","atom_site_anisotrop_U_12"],"atom_site_aniso.u_13":["atom_site_aniso_U_13","atom_site_anisotrop_U_13"],"atom_site_aniso.u_22":["atom_site_aniso_U_22","atom_site_anisotrop_U_22"],"atom_site_aniso.u_23":["atom_site_aniso_U_23","atom_site_anisotrop_U_23"],"atom_site_aniso.u_33":["atom_site_aniso_U_33","atom_site_anisotrop_U_33"]};const Yw=Jv.Schema.int,Kw={volume_data_3d_info:$w.volume_data_3d_info,segmentation_data_table:{set_id:Yw,segment_id:Yw},segmentation_data_3d:{values:Yw}},Zw={parse:e=>"string"==typeof e?Ax(e):Kx(e),parseText:Ax,parseBinary:Kx,toDatabaseCollection:function(e,t,i){const n={};for(const r of t.blocks)n[r.header]=Qx(e,r,i);return n},toDatabase:Qx,schema:{mmCIF:e=>Qx(gw,e),CCD:e=>Qx(Aw,e),BIRD:e=>Qx(Rw,e),dic:e=>Qx(Ow,e),cifCore:e=>Qx(qw,e,Xw),densityServer:e=>Qx($w,e),segmentation:e=>Qx(Kw,e)}};class Qw{constructor(e,t){var i=t||{};this.streamer=e,this.name=uo(i.name,""),this.path=uo(i.path,"")}get type(){return""}get __objName(){return""}get isBinary(){return!1}get isJson(){return!1}get isXml(){return!1}parse(){return this.streamer.read().then((()=>Lg(this,void 0,void 0,(function*(){return yield this._beforeParse(),yield this._parse(),yield this._afterParse(),this[this.__objName]}))))}_parse(){}_beforeParse(){}_afterParse(){e.Debug&&Fl.log(this[this.__objName])}}class Jw extends Qw{constructor(e,t){var i=t||{};super(e,i),this.firstModelOnly=uo(i.firstModelOnly,!1),this.asTrajectory=uo(i.asTrajectory,!1),this.cAlphaOnly=uo(i.cAlphaOnly,!1),this.structure=new vp(this.name,this.path),this.structureBuilder=new Om(this.structure)}get type(){return"structure"}get __objName(){return"structure"}}class eS{constructor(e,t,i="",n,r=[]){this.structure=e,this.index=t,this.description=i,this.entityType=function(e){switch(e=e.toLowerCase()){case"polymer":return 1;case"non-polymer":return 2;case"macrolide":return 3;case"water":return 4;default:return 0}}(n||""),this.chainIndexList=r,r.forEach((function(i){e.chainStore.entityIndex[i]=t}))}get type(){return function(e){switch(e){case 1:return"polymer";case 2:return"non-polymer";case 3:return"macrolide";case 4:return"water";default:return}}(this.entityType)}getEntityType(){return this.entityType}isPolymer(){return 1===this.entityType}isNonPolymer(){return 2===this.entityType}isMacrolide(){return 3===this.entityType}isWater(){return 4===this.entityType}eachChain(e){const t=this.structure.getChainProxy();this.chainIndexList.forEach((function(i){t.index=i,e(t)}))}}const tS={a:1,b:1,c:1,alpha:90,beta:90,gamma:90,spacegroup:"P 1"};class iS{constructor(e=tS){this.cartToFrac=new qt,this.fracToCart=new qt,this.a=e.a,this.b=e.b,this.c=e.c,this.alpha=e.alpha,this.beta=e.beta,this.gamma=e.gamma,this.spacegroup=e.spacegroup;const t=Ro(this.alpha),i=Ro(this.beta),n=Ro(this.gamma),r=Math.cos(t),s=Math.cos(i),a=Math.cos(n),o=Math.sin(i),l=Math.sin(n);if(this.volume=this.a*this.b*this.c*Math.sqrt(1-r*r-s*s-a*a+2*r*s*a),void 0===e.cartToFrac){const e=this.a*this.b*l/this.volume,t=(s*a-r)/(o*l);this.fracToCart.set(this.a,0,0,0,this.b*a,this.b*l,0,0,this.c*s,-this.c*o*t,1/e,0,0,0,0,1).transpose(),this.cartToFrac.copy(this.fracToCart).invert()}else this.cartToFrac.copy(e.cartToFrac),this.fracToCart.copy(this.cartToFrac).invert()}getPosition(e){const t=new Float32Array(24);if(e.unitcell){const i=e.unitcell,n=e.center.clone().applyMatrix4(i.cartToFrac).floor(),r=new _t;let s=0;const a=function(e,a,o){r.set(e,a,o).add(n).applyMatrix4(i.fracToCart).toArray(t,s),s+=3};a(0,0,0),a(1,0,0),a(0,1,0),a(0,0,1),a(1,1,0),a(1,0,1),a(0,1,1),a(1,1,1)}return t}getCenter(e){return function(e,t=new _t){const i=e.length;for(let n=0;n0)continue;let e,i,n,r,o,g=0;if(s){if(r=M.split(aS),g=10===r.length?1:0,R=r[2],m&&"CA"!==R)continue;e=parseFloat(r[6-g]),i=parseFloat(r[7-g]),n=parseFloat(r[8-g])}else{if(R=M.substr(12,4).trim(),m&&"CA"!==R)continue;e=parseFloat(M.substr(30,8)),i=parseFloat(M.substr(38,8)),n=parseFloat(M.substr(46,8))}if(f){const t=3*y;if(_[t+0]=e,_[t+1]=i,_[t+2]=n,y+=1,v)continue}s?(C=parseInt(r[1]),o="",L="H"===M[0],T=g?"":r[4],P=parseInt(r[5-g]),D="",E=r[3],O="",I=1):(C=parseInt(M.substr(6,5),u),c&&99999===C&&(u=16),L="H"===M[0],T=M[21].trim(),P=parseInt(M.substr(22,4),h),c&&9999===P&&(h=16),D=M[26].trim(),E=M.substr(17,4).trim()||"MOL",k=parseFloat(M.substr(60,6)),O=M[16].trim(),I=parseFloat(M.substr(54,6)),t||(a?(o=M.substr(76,3).trim(),o in cd&&(o=cd[o])):(o=M.substr(76,2).trim(),T||(T=M.substr(72,4).trim())),N=parseInt((M.substr(79,1)+M.substr(78,1)).trim()))),he.growIfFull(),he.atomTypeId[me]=ue.add(R,o),he.x[me]=e,he.y[me]=i,he.z[me]=n,he.serial[me]=C,he.altloc[me]=O.charCodeAt(0),he.occupancy[me]=isNaN(I)?0:I,s?(he.partialCharge[me]=parseFloat(r[9-g]),he.radius[me]=parseFloat(r[10-g])):(he.bfactor[me]=isNaN(k)?0:k,a&&(he.partialCharge[me]=parseFloat(M.substr(70,6))),isFinite(N)&&(he.formalCharge||he.addField("formalCharge",1,"int8"),he.formalCharge[me]=N));const b=oS(P,T,D);!L||K[b]||rS.includes(E)?ee||te===T||(Q+=1,J=Q.toString()):te===T&&ne===E&&(nd.includes(E)||ie===P&&re===D)||(Q+=1,J=Q.toString(),ie=P,ne=E,re=D),l.addAtom(pe,T,J,E,P,L,void 0,D),G[C]=me,me+=1,ee=!1,te=T}else if("CONECT"===A){const e=G[parseInt(M.substr(6,5))],t=[11,16,21,26],i={};if(void 0===e)continue;for(let n=0;n<4;++n){let r=parseInt(M.substr(t[n],5));if(!Number.isNaN(r)&&(r=G[r],void 0!==r))if(e{var i;return[null===(i=r.get(e))||void 0===i?void 0:i.atomname,t]}))),a=[],o=[],l=[];let c,u;for(let e=0;e{var y;const v=l.getField(m),b=l.getField(p),x=l.getField(g),w=_*a;for(let l=0;ll*l)return s.growIfFull(),s.atomTypeId[b]=s.atomTypeId[e],s.x[b]=_.x,s.y[b]=_.y,s.z[b]=_.z,s.occupancy[b]=s.occupancy[e],s.serial[b]=b,s.altloc[b]="A".charCodeAt(0),i.addAtom(0,"","","HET",1,!0),void(b+=1)}}}))}}(D,w,S),S.finalize(),w.finalizeAtoms(),Vm(w),w.finalizeBonds();else{const E={},I={},R=w.atomMap,L=w.atomStore,k=D.categories.atom_site;let O=k.rowCount;const N=k.getField("pdbx_PDB_model_num");if(!(null===(t=null==N?void 0:N.areValuesEqual(0,O-1))||void 0===t||t)&&(A||M)){const e=N.int(0);for(let t=0;te){O=t;break}}w.chemCompMap=new cS(w);const F=D.categories.chem_comp;let B=F.getField("id");const z=F.getField("type");for(let e=0;e{const n=e.getField(t);return n?n.toFloatArray({array:Float32Array,start:0,end:i}):new Float32Array(i)};L.resize(O),L.x=U(k,"Cartn_x",O),L.y=U(k,"Cartn_y",O),L.z=U(k,"Cartn_z",O),L.serial=k.getField("id").toIntArray({start:0,end:O}),L.bfactor=U(k,"B_iso_or_equiv",O),L.occupancy=U(k,"occupancy",O);const V=k.getField("label_alt_id");(null==V?void 0:V.isDefined)&&(L.altloc=Uint8Array.from(V.toStringArray(),(e=>e.charCodeAt(0))));const $=k.getField("label_atom_id"),G=k.getField("type_symbol");B=k.getField("label_comp_id");const H=null!==(i=k.getField("auth_seq_id"))&&void 0!==i?i:k.getField("label_seq_id"),j=k.getField("pdbx_PDB_ins_code"),W=k.getField("auth_asym_id"),q=k.getField("label_asym_id"),X=k.getField("group_PDB"),Y=k.getField("label_entity_id");for(let e=0;e0){const[e,t]=c.split("(").filter((e=>!!e)),i=s(e),r=s(t);Object.keys(i).forEach((function(e){Object.keys(r).forEach((function(t){const s=new qt;s.multiplyMatrices(i[e],r[t]),n[e+"x"+t]=s}))}))}else n=s(c);const u=[];for(let e in n)u.push(n[e]);let h=""+t;/^(0|[1-9][0-9]*)$/.test(h)&&(h="BU"+h);const d=l.str(e).split(",").map((e=>i[e]));void 0===r[h]&&(r[h]=new Lm(h)),r[h].addPart(u,d)}}if(e.struct_ncs_oper){const t=e.struct_ncs_oper,i="NCS";r[i]=new Lm(i);const n=r[i].addPart(),s=t.getField("code"),a=t.getField("matrix[1][1]"),o=t.getField("matrix[1][2]"),l=t.getField("matrix[1][3]"),c=t.getField("matrix[2][1]"),u=t.getField("matrix[2][2]"),h=t.getField("matrix[2][3]"),d=t.getField("matrix[3][1]"),f=t.getField("matrix[3][2]"),m=t.getField("matrix[3][3]"),p=t.getField("vector[1]"),g=t.getField("vector[2]"),_=t.getField("vector[3]");for(let e=0;ea&&([s,a]=[a,s],[T,D]=[D,T]),0!==s&&0!==a)for(let e=0;ev)continue}d=T.substr(5,5).trim(),f=parseInt(T.substr(0,5)),m=parseInt(T.substr(15,5)),x.growIfFull(),x.atomTypeId[w]=b.add(h),x.x[w]=I,x.y[w]=D,x.z[w]=R,x.serial[w]=m,r.addAtom(S,"","",d,f,!1,"l"),w+=1}}}(0,e.length,e)})),r.finalize(),n.finalizeAtoms(),Um(n),Vm(n),n.finalizeBonds(),Fm(n),e.Debug&&Fl.timeEnd("GroParser._parse "+this.name)}});var pS=["mmtfVersion","mmtfProducer","unitCell","spaceGroup","structureId","title","depositionDate","releaseDate","experimentalMethods","resolution","rFree","rWork","bioAssemblyList","ncsOperatorList","entityList","groupList","numBonds","numAtoms","numGroups","numChains","numModels","groupsPerChain","chainsPerModel"].concat(["xCoordList","yCoordList","zCoordList","groupIdList","groupTypeList","chainIdList","bFactorList","atomIdList","altLocList","occupancyList","secStructList","insCodeList","sequenceIndexList","chainNameList","bondAtomList","bondOrderList"]);function gS(e,t,i){return t?new e(t.buffer,t.byteOffset,t.byteLength/(i||1)):void 0}function _S(e){return gS(DataView,e)}function yS(e){return gS(Int8Array,e)}function vS(e){return gS(Int32Array,e,4)}function bS(e,t){var i=e.length/2;t||(t=new Int16Array(i));for(var n=0,r=0;ns&&++o;t=new Int32Array(o)}for(i=0,n=0;ir){for(var s=[],a=0;a0&&(a.biomolDict[e]=t)}const k=o.unitCell;k&&Array.isArray(k)&&k[0]?a.unitcell=new iS({a:k[0],b:k[1],c:k[2],alpha:k[3],beta:k[4],gamma:k[5],spacegroup:o.spaceGroup}):a.unitcell=void 0,jm(a,!0),Hm(a,!0),a.finalizeAtoms(),a.finalizeBonds(),Wm(a),e.Debug&&Fl.timeEnd("MmtfParser._parse "+this.name)}});const RS=/\s+/,LS={1:1,2:2,3:3,am:1,ar:1,du:1,un:1,nc:0};jl.add("mol2",class extends Jw{get type(){return"mol2"}_parse(){e.Debug&&Fl.time("Mol2Parser._parse "+this.name);const t=this.structure,i=this.structureBuilder,n=this.firstModelOnly,r=this.asTrajectory,s=t.frames;let a,o,l=!1;const c=t.atomMap,u=t.atomStore;u.resize(Math.round(this.streamer.data.length/60)),u.addField("partialCharge",1,"float32");let h=0,d=0,f=0,m=-1,p=0,g=0;const _=t.getAtomProxy(),y=t.getAtomProxy();this.streamer.eachChunkOfLines((function(e){!function(e,v,b){for(let x=e;xMOLECULE"===e?(g=1,d=0,++m):"@ATOM"===e?(g=2,f=u.count,r&&(o=0,a=new Float32Array(3*p),s.push(a),m>0&&(l=!0))):g="@BOND"===e?3:0;else if(1===g){if(0===d)t.title=e,t.id=e;else if(1===d){const t=e.split(RS);p=parseInt(t[0])}++d}else if(2===g){const t=e.split(RS);if(n&&m>0)continue;const s=parseFloat(t[2]),d=parseFloat(t[3]),f=parseFloat(t[4]);if(r){const e=3*o;if(a[e+0]=s,a[e+1]=d,a[e+2]=f,o+=1,l)continue}const p=t[0],g=t[1],_=t[5].split(".")[0],y=t[6]?parseInt(t[6]):1,v=t[7]?t[7]:"",b=t[8]?parseFloat(t[8]):0;u.growIfFull(),u.atomTypeId[h]=c.add(g,_),u.x[h]=s,u.y[h]=d,u.z[h]=f,u.serial[h]=+p,u.partialCharge[h]=b,i.addAtom(m,"","",v,y,!0),h+=1}else if(3===g){if(n&&m>0)continue;if(r&&m>0)continue;const i=e.split(RS);_.index=parseInt(i[1])-1+f,y.index=parseInt(i[2])-1+f;const s=LS[i[3]];t.bondStore.addBond(_,y,s)}}}(0,e.length,e)})),i.finalize(),t.finalizeAtoms(),Um(t),Hm(t,!0),jm(t,!0),t.finalizeBonds(),Km(t),Fm(t),e.Debug&&Fl.timeEnd("Mol2Parser._parse "+this.name)}});jl.add("pdbqt",class extends lS{get type(){return"pdbqt"}});jl.add("pqr",class extends lS{get type(){return"pqr"}});const kS=/> +<(.+)>/;class OS extends Jw{get type(){return"sdf"}_parse(){e.Debug&&Fl.time("SdfParser._parse "+this.name);const t=this.structure,i=this.structureBuilder,n=this.firstModelOnly,r=this.asTrajectory,s=this.streamer.peekLines(2);t.id=s[0].trim(),t.title=s[1].trim();const a=t.frames;let o,l,c=!1;const u=t.atomMap,h=t.atomStore;h.resize(Math.round(this.streamer.data.length/50)),h.addField("formalCharge",1,"int8");const d=t.getAtomProxy(),f=t.getAtomProxy();let m=0,p=0,g=0,_=0;const y=[];let v,b,x,w,S,M,A,C,T,P,E,I,D,R,L=!1,k={};t.extraData.sdf=y;let O=!1,N=!1,F=!1,B=[],z=[];const U=new Map;this.streamer.eachChunkOfLines((function(e){!function(e,s,V){for(let $=e;$-1,O?U.clear():(b=parseInt(e.substr(0,3)),x=parseInt(e.substr(3,3)),w=4,S=w+b,M=S,A=M+x,r&&(l=0,o=new Float32Array(3*b),a.push(o),g>0&&(c=!0)));else if(O&&"COUNTS"===B[0])b=parseInt(B[1]),r&&(l=0,o=new Float32Array(3*b),a.push(o),g>0&&(c=!0));else if(O&&2==B.length)"ATOM"===B[1]?"BEGIN"===B[0]?N=!0:"END"===B[0]&&(N=!1):"BOND"===B[1]&&("BEGIN"===B[0]?F=!0:"END"===B[0]&&(F=!1));else if(N||!O&&p>=w&&p0)continue;let t=0;if(O){if(C=parseFloat(B[2]),T=parseFloat(B[3]),P=parseFloat(B[4]),I=B[1],D=parseInt(B[0]),U.set(D,m),E=I+D,B.length>6){let e=B.slice(6).find((e=>0===e.indexOf("CHG=")));e&&(t=parseInt(e.substring(4)))}}else C=parseFloat(e.substr(0,10)),T=parseFloat(e.substr(10,10)),P=parseFloat(e.substr(20,10)),I=e.substr(31,3).trim(),E=I+(m-_+1);if(r){const e=3*l;if(o[e+0]=C,o[e+1]=T,o[e+2]=P,l+=1,c)continue}h.growIfFull(),h.atomTypeId[m]=u.add(E,I),h.x[m]=C,h.y[m]=T,h.z[m]=P,h.serial[m]=O?D:m,h.formalCharge[m]=t,i.addAtom(g,"","","HET",1,!0),m+=1}else if(F||!O&&p>=M&&p0)continue;if(r&&g>0)continue;O?(d.index=U.get(parseInt(B[2])),f.index=U.get(parseInt(B[3])),R=parseInt(B[1])):(d.index=parseInt(e.substr(0,3))-1+_,f.index=parseInt(e.substr(3,3))-1+_,R=parseInt(e.substr(6,3))),t.bondStore.addBond(d,f,R)}else if("M CHG"===e.substr(0,6)){const t=parseInt(e.substr(6,3));for(let i=0,n=10;i"===e.charAt(0)&&(v=e.match(kS))?(L=v[1],k[L]=[]):!1!==L&&e&&k[L].push(e);++p}}}(0,e.length,e)})),i.finalize(),t.finalizeAtoms(),t.finalizeBonds(),Km(t),e.Debug&&Fl.timeEnd("SdfParser._parse "+this.name)}_postProcess(){Km(this.structure)}}jl.add("sdf",OS),jl.add("sd",OS),jl.add("mol",OS);function NS(e,t,i){return parseInt(e.substr(t,i).trim())}class FS extends Jw{get type(){return"prmtop"}_parse(){e.Debug&&Fl.time("PrmtopParser._parse "+this.name);const t=this.structure,i=this.structureBuilder,n=t.atomMap,r=t.atomStore;r.addField("partialCharge",1,"float32"),r.addField("radius",1,"float32");const s=[],a={},o=["NATOM","NTYPES","NBONH","MBONA","NTHETH","MTHETA","NPHIH","MPHIA","NHPARM","NPARM","NNB","NRES","NBONA","NTHETA","NPHIA","NUMBND","NUMANG","NPTRA","NATYP","NPHB","IFPERT","NBPER","NGPER","NDPER","MBPER","MGPER","MDPER","IFBOX","NMXRS","IFCAP","NUMEXTRA","NCOPY"];let l,c,u,h,d;o.forEach((e=>{a[e]=0}));let f,m,p,g,_,y=new Uint8Array(0);this.streamer.eachChunkOfLines((function(e){!function(e,t,i){for(let n=e;n0)return void Fl.error("dcd format with fixed atoms unsupported, aborting");const p=a.NATOM,g=4*p;for(let e=0,n=a.NSET;e=1&&(n.timeOffset=(a.ISTART-1)*n.deltaTime),e.Debug&&Fl.timeEnd("DcdParser._parse "+this.name)}});const WS={BYTE:1,CHAR:2,SHORT:3,INT:4,FLOAT:5,DOUBLE:6};function qS(e){switch(Number(e)){case WS.BYTE:return"byte";case WS.CHAR:return"char";case WS.SHORT:return"short";case WS.INT:return"int";case WS.FLOAT:return"float";case WS.DOUBLE:return"double";default:return"undefined"}}function XS(e){switch(Number(e)){case WS.BYTE:case WS.CHAR:return 1;case WS.SHORT:return 2;case WS.INT:case WS.FLOAT:return 4;case WS.DOUBLE:return 8;default:return-1}}function YS(e){switch(String(e)){case"byte":return WS.BYTE;case"char":return WS.CHAR;case"short":return WS.SHORT;case"int":return WS.INT;case"float":return WS.FLOAT;case"double":return WS.DOUBLE;default:return-1}}function KS(e,t){if(1!==e){const i=new Array(e);for(let n=0;n6,"non valid type "+u);const h=e.readUint32();let d=e.readUint32();2===i&&(GS(d>0,"offsets larger than 4GB not supported"),d=e.readUint32()),l[0]===t&&(s+=h),r[n]={name:a,dimensions:l,attributes:c,type:qS(u),size:h,offset:d,record:l[0]===t}}}return{variables:r,recordStep:s}}(e,n.recordId,t);return i.variables=r.variables,i.recordDimension.recordStep=r.recordStep,i}function nM(e){let t;const i=e.readUint32();if(i===QS)return GS(e.readUint32()!==QS,"wrong empty tag for list of attributes"),[];{GS(i!==tM,"wrong tag for list of attributes");const n=e.readUint32();t=new Array(n);for(let i=0;i6,"non valid type "+r);const s=e.readUint32(),a=ZS(e,r,s);HS(e),t[i]={name:n,type:qS(r),value:a}}}return t}class rM{constructor(e){const t=new uc(e);t.setBigEndian(),GS("CDF"!==t.readChars(3),"should start with CDF");const i=t.readByte();GS(i>2,"unknown version"),this.header=iM(t,i),this.buffer=t}get version(){return 1===this.header.version?"classic format":"64-bit offset format"}get recordDimension(){return this.header.recordDimension}get dimensions(){return this.header.dimensions}get globalAttributes(){return this.header.globalAttributes}get variables(){return this.header.variables}hasDataVariable(e){return-1!==this.header.variables.findIndex((function(t){return t.name===e}))}getDataVariable(e){let t;return t="string"==typeof e?this.header.variables.find((function(t){return t.name===e})):e,GS(void 0===t,"variable not found"),this.buffer.seek(t.offset),t.record?function(e,t,i){const n=YS(t.type),r=t.size?t.size/XS(n):1,s=i.length,a=new Array(s),o=i.recordStep;for(let t=0;t=1&&(i.timeOffset=s[0]),s.length>=2&&(i.deltaTime=s[1]-s[0]),e.Debug&&Fl.timeEnd("NctrajParser._parse "+this.name)}}jl.add("nctraj",sM),jl.add("ncdf",sM),jl.add("nc",sM);jl.add("trr",class extends $S{get type(){return"trr"}get isBinary(){return!0}_parse(){e.Debug&&Fl.time("TrrParser._parse "+this.name);const t=Mo(this.streamer.data),i=new DataView(t),n=this.frames,r=n.coordinates,s=n.boxes,a=n.times;let o=0;for(;;){o+=8;const e=i.getInt32(o);o+=4,o+=e;const n=i.getInt32(o+8),l=i.getInt32(o+12),c=i.getInt32(o+16),u=i.getInt32(o+28),h=i.getInt32(o+32),d=i.getInt32(o+36),f=i.getInt32(o+40);o+=52;const m=n/9,p=3*f;if(8===m?a.push(i.getFloat64(o)):a.push(i.getFloat32(o)),o+=2*m,n){const e=new Float32Array(9);if(8===m)for(let t=0;t<9;++t)e[t]=10*i.getFloat64(o),o+=8;else for(let t=0;t<9;++t)e[t]=10*i.getFloat32(o),o+=4;s.push(e)}if(o+=l,o+=c,u){let e;if(8===m){e=new Float32Array(p);for(let t=0;t>8&65280|t>>24&255}e=new Float32Array(t,o,p);for(let t=0;t=t.byteLength)break}a.length>=1&&(n.timeOffset=a[0]),a.length>=2&&(n.deltaTime=a[1]-a[0]),e.Debug&&Fl.timeEnd("TrrParser._parse "+this.name)}});const aM=new Uint32Array([0,0,0,0,0,0,0,0,0,8,10,12,16,20,25,32,40,50,64,80,101,128,161,203,256,322,406,512,645,812,1024,1290,1625,2048,2580,3250,4096,5060,6501,8192,10321,13003,16384,20642,26007,32768,41285,52015,65536,82570,104031,131072,165140,208063,262144,330280,416127,524287,660561,832255,1048576,1321122,1664510,2097152,2642245,3329021,4194304,5284491,6658042,8388607,10568983,13316085,16777216]);function oM(e){let t=1,i=0;for(;e>=t&&i<32;)i++,t<<=1;return i}const lM=new Uint8Array(32);function cM(e,t){let i=1,n=0;lM[0]=1;for(let n=0;n>=8;for(;0!==r;)lM[e++]=255&r,r>>=8;i=e}let r=1;for(i--;lM[i]>=r;)n++,r*=2;return n+8*i}function uM(e,t,i,n){const r=(1<=8;)a=a<<8|t[o++],l|=a>>s<0&&(s>s&(1<8;)hM[o++]=uM(e,t,8,a),n-=8;n>0&&(hM[o++]=uM(e,t,n,a));for(let e=i-1;e>0;e--){let t=0;for(let i=o-1;i>=0;i--){t=t<<8|hM[i];const n=t/r[e]|0;hM[i]=n,t-=n*r[e]}s[e]=t}s[0]=hM[0]|hM[1]<<8|hM[2]<<16|hM[3]<<24}jl.add("xtc",class extends $S{get type(){return"xtc"}get isBinary(){return!0}_parse(){e.Debug&&Fl.time("XtcParser._parse "+this.name);const t=Mo(this.streamer.data),i=new DataView(t),n=this.frames,r=n.coordinates,s=n.boxes,a=n.times,o=new Int32Array(6),l=new Int32Array(3),c=new Int32Array(3),u=new Uint32Array(3),h=new Float32Array(3),d=new Float32Array(3);let f=0;const m=new Int32Array(3),p=new Uint32Array(m.buffer);for(;;){let e;const n=i.getInt32(f+4);f+=12;const g=3*n;a.push(i.getFloat32(f)),f+=4;const _=new Float32Array(9);for(let e=0;e<9;++e)_[e]=10*i.getFloat32(f),f+=4;if(s.push(_),n<=9){e=new Float32Array(n);for(let t=0;t16777215?(c[0]=oM(l[0]),c[1]=oM(l[1]),c[2]=oM(l[2]),a=0):a=cM(3,l);let _=i.getInt32(f);f+=4;let y=_-1;y=9>y?9:y;let v=aM[y]/2|0,b=aM[_]/2|0;u[0]=u[1]=u[2]=aM[_];let x=4*Math.ceil(i.getInt32(f)/4);f+=4;const w=1/s;let S=0,M=0;const A=new Uint8Array(t,f);for(h[0]=h[1]=h[2]=0;M0){h[0]=h[1]=h[2]=0;for(let t=0;t9?aM[_-1]/2|0:0):t>0&&(v=b,b=aM[_]/2|0),u[0]=u[1]=u[2]=aM[_],0===u[0]||0===u[1]||0===u[2])return void console.error("(xdrfile error) Undefined error.")}f+=x}for(let t=0;t=t.byteLength)break}a.length>=1&&(n.timeOffset=a[0]),a.length>=2&&(n.deltaTime=a[1]-a[0]),e.Debug&&Fl.timeEnd("XtcParser._parse "+this.name)}});class fM extends Qw{constructor(e,t){const i=t||{};super(e,i),this.volume=new Df(this.name,this.path),this.voxelSize=uo(i.voxelSize,1)}get type(){return"volume"}get __objName(){return"volume"}_afterParse(){this.volume.setMatrix(this.getMatrix()),super._afterParse()}getMatrix(){return new qt}}const mM=/\s+/,pM=/-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?/g,gM=.529177210859;class _M extends fM{get type(){return"cube"}_parse(){e.Debug&&Fl.time("CubeParser._parse "+this.name);const t=this.volume,i=this.streamer.peekLines(6),n={},r=gM*this.voxelSize;function s(e,t){var n=i[e].trim().split(mM)[t];return parseFloat(n)}n.atomCount=Math.abs(s(2,0)),n.originX=s(2,1)*gM,n.originY=s(2,2)*gM,n.originZ=s(2,3)*gM,n.NVX=s(3,0),n.NVY=s(4,0),n.NVZ=s(5,0),n.basisX=new _t(s(3,1),s(3,2),s(3,3)).multiplyScalar(r),n.basisY=new _t(s(4,1),s(4,2),s(4,3)).multiplyScalar(r),n.basisZ=new _t(s(5,1),s(5,2),s(5,3)).multiplyScalar(r);const a=new Float32Array(n.NVX*n.NVY*n.NVZ);let o=0,l=0;const c=s(2,0)>0?0:1;this.streamer.eachChunkOfLines((function(e){!function(e,t,i){for(let r=e;r=n.atomCount+6+c){const t=e.match(pM);for(let e=0,i=t.length;e>8&255}i.xStart=a[0],i.yStart=a[1],i.zStart=a[2],i.xExtent=a[3],i.yExtent=a[4],i.zExtent=a[5],i.xRate=a[6],i.yRate=a[7],i.zRate=a[8];const e=1/a[17],t=e*this.voxelSize;i.xlen=a[9]*t,i.ylen=a[10]*t,i.zlen=a[11]*t,i.alpha=a[12]*e,i.beta=a[13]*e,i.gamma=a[14]*e,n=a[15]/100,r=a[16],i.gamma=a[14]*e}t.header=i,e.Debug&&Fl.log(i,n,r);const c=new Float32Array(i.xExtent*i.yExtent*i.zExtent);let u=512;const h=Math.ceil(i.xExtent/8),d=Math.ceil(i.yExtent/8),f=Math.ceil(i.zExtent/8);for(var m=0;ms){const e=i[n].trim();if(""!==e){const t=e.split(vM);for(let e=0,i=t.length;e=s&&(p-s)%f!=0&&m=0?i-1:i+t/3)},parseNormalIndex:function(e,t){var i=parseInt(e,10);return 3*(i>=0?i-1:i+t/3)},addVertex:function(e,t,i){var n=this.vertices,r=this.object.geometry.vertices;r.push(n[e+0]),r.push(n[e+1]),r.push(n[e+2]),r.push(n[t+0]),r.push(n[t+1]),r.push(n[t+2]),r.push(n[i+0]),r.push(n[i+1]),r.push(n[i+2])},addVertexLine:function(e){var t=this.vertices,i=this.object.geometry.vertices;i.push(t[e+0]),i.push(t[e+1]),i.push(t[e+2])},addNormal:function(e,t,i){var n=this.normals,r=this.object.geometry.normals;r.push(n[e+0]),r.push(n[e+1]),r.push(n[e+2]),r.push(n[t+0]),r.push(n[t+1]),r.push(n[t+2]),r.push(n[i+0]),r.push(n[i+1]),r.push(n[i+2])},addFace:function(e,t,i,n,r,s,a,o){var l,c=this.vertices.length,u=this.parseVertexIndex(e,c),h=this.parseVertexIndex(t,c),d=this.parseVertexIndex(i,c);if(void 0===n?this.addVertex(u,h,d):(l=this.parseVertexIndex(n,c),this.addVertex(u,h,l),this.addVertex(h,d,l)),void 0!==r){var f=this.normals.length;u=this.parseNormalIndex(r,f),h=r===s?u:this.parseNormalIndex(s,f),d=r===a?u:this.parseNormalIndex(a,f),void 0===n?this.addNormal(u,h,d):(l=this.parseNormalIndex(o,f),this.addNormal(u,h,l),this.addNormal(h,d,l))}},addLineGeometry:function(e){this.object.geometry.type="Line";for(var t=this.vertices.length,i=0,n=e.length;i0?v.setAttribute("normal",new $i(new Float32Array(y.normals),3)):v.computeVertexNormals(),_.push(v)}}return _}};jl.add("obj",class extends FM{get type(){return"obj"}getLoader(){return new BM}});const zM=["int8","char","uint8","uchar","int16","short","uint16","ushort","int32","int","uint32","uint","float32","float","float64","double"];function UM(e){if(function(e){return zM.includes(e)}(e))return e;throw new Error(`Unsupported data type: ${e}`)}function VM(e){if("object"!=typeof e||null===e)throw new Error("Expected element to be an object");if("string"!=typeof e.name)throw new Error("Expected element.name to be a string");if("number"!=typeof e.count)throw new Error("Expected element.count to be a number");if(!Array.isArray(e.properties))throw new Error("Expected element.properties to be an array")}function $M(e,t,i){switch(t){case"int8":case"char":return{read:t=>e.getInt8(t),size:1};case"uint8":case"uchar":return{read:t=>e.getUint8(t),size:1};case"int16":case"short":return{read:t=>e.getInt16(t,i),size:2};case"uint16":case"ushort":return{read:t=>e.getUint16(t,i),size:2};case"int32":case"int":return{read:t=>e.getInt32(t,i),size:4};case"uint32":case"uint":return{read:t=>e.getUint32(t,i),size:4};case"float32":case"float":return{read:t=>e.getFloat32(t,i),size:4};case"float64":case"double":return{read:t=>e.getFloat64(t,i),size:8};default:throw new Error(`Unsupported data type: ${t}`)}}function GM(e,t){const i={};let n=0;for(let r=0;r0&&t.setIndex(e.indices),t.setAttribute("position",new ji(e.vertices,3)),e.normals.length>0&&t.setAttribute("normal",new ji(e.normals,3)),e.uvs.length>0&&t.setAttribute("uv",new ji(e.uvs,2)),e.colors.length>0&&t.setAttribute("color",new ji(e.colors,3)),(e.faceVertexUvs.length>0||e.faceVertexColors.length>0)&&(t=t.toNonIndexed(),e.faceVertexUvs.length>0&&t.setAttribute("uv",new ji(e.faceVertexUvs,2)),e.faceVertexColors.length>0&&t.setAttribute("color",new ji(e.faceVertexColors,3)));for(const i of Object.keys(this.customPropertyMapping))e[i].length>0&&t.setAttribute(i,new ji(e[i],this.customPropertyMapping[i].length));return t.computeBoundingSphere(),t}makeBinaryProperties(e,t,i){const n=[];for(let r=0,s=e.length;re.name));function i(e){for(let i=0,n=e.length;i=this.arr.length}next(){return this.arr[this.i++]}}jl.add("ply",class extends FM{get type(){return"ply"}getLoader(){return new HM}});jl.add("csv",class extends Qw{constructor(e,t){const i=t||{};super(e,i),this.delimiter=uo(i.delimiter,","),this.comment=uo(i.comment,"#"),this.columnNames=uo(i.columnNames,!1),this.table={name:this.name,path:this.path,columnNames:[],data:[]}}get type(){return"csv"}get __objName(){return"table"}_parse(){const e=this.table.data,t=new RegExp("\\s*"+this.delimiter+"\\s*");let i=0;this.streamer.eachChunkOfLines((n=>{const r=n.length;for(let s=0;s/g,""),{declaration:t(),root:i()};function t(){if(!r(/^<\?xml\s*/))return;const e={attributes:{}};for(;!s()&&!a("?>");){const t=n();if(!t)return e;e.attributes[t.name]=t.value}return r(/\?>\s*/),e}function i(){const e=r(QM);if(!e)return;const t={name:e[1],attributes:{},children:[]};for(;!(s()||a(">")||a("?>")||a("/>"));){const e=n();if(!e)return t;t.attributes[e.name]=e.value}if(r(/^\s*\/>\s*/))return t;let o;for(r(/\??>\s*/),t.content=function(){const e=r(JM);return e?e[1]:""}();o=i();)t.children.push(o);return r(/^<\/[\w-:.]+>\s*/),t}function n(){const e=r(eA);var t;if(e)return{name:e[1],value:(t=e[2],t.replace(ZM,""))}}function r(t){const i=e.match(t);if(i)return e=e.slice(i[0].length),i}function s(){return 0===e.length}function a(t){return 0===e.indexOf(t)}}class iA extends Qw{constructor(e,t){const i=t||{};super(e,i),this.useDomParser=uo(i.useDomParser,!1),this.xml={name:this.name,path:this.path,data:{}}}get type(){return"xml"}get __objName(){return"xml"}get isXml(){return!0}__xmlParser(e){return tA(e)}__domParser(e){return(new window.DOMParser).parseFromString(e,"text/xml")}_parse(){e.Debug&&Fl.time("XmlParser._parse "+this.name),this.useDomParser?this.streamer.data instanceof Document?this.xml.data=this.streamer.data:this.xml.data=this.__domParser(this.streamer.asText()):this.xml.data=this.__xmlParser(this.streamer.asText()),e.Debug&&Fl.timeEnd("XmlParser._parse "+this.name)}}function nA(e,t){const i=e.getNamedItem(t);return null!==i?i.value:""}function rA(e,t,i=!1){const n=nA(e,"icode").trim(),r=nA(e,"chain").trim(),s=nA(e,"altcode");let a=nA(e,"resnum");return n&&(a+="^"+n),r&&(a+=":"+r),t&&(a+="."+t),i&&s.trim()&&(a+="%"+s),a+="/"+(parseInt(nA(e,"model"))-1),a}function sA(e){const t=nA(e,"chain").trim();let i=`[${nA(e,"rescode")}]${nA(e,"resnum")}`;return t&&(i+=`:${t}`),i}function aA(e,t,i){void 0===e[t]?e[t]=i:e[t]|=i}function oA(e,t){return null!==e&&e.value===t}function lA(e,t,i){let n=0;const r=t.getElementsByTagName("clash");for(let t=0,i=r.length;t0&&(n+=1);t.getElementsByTagName("bond-outlier").length>0&&(n+=1);return t.getElementsByTagName("plane-outlier").length>0&&(n+=1),oA(i.getNamedItem("rota"),"OUTLIER")&&(n+=1),oA(i.getNamedItem("rama"),"OUTLIER")&&(n+=1),oA(i.getNamedItem("RNApucker"),"outlier")&&(n+=1),n}jl.add("xml",iA);class cA{constructor(e,t){this.name=e,this.path=t,this.rsrzDict={},this.rsccDict={},this.rciDict={},this.clashDict={},this.clashArray=[],this.geoDict={},this.geoAtomDict={},this.atomDict={},this.clashSele="NONE"}get type(){return"validation"}fromXml(t){e.Debug&&Fl.time("Validation.fromXml");const i=this.rsrzDict,n=this.rsccDict,r=this.rciDict,s=this.clashDict,a=this.clashArray,o=this.geoDict,l=this.geoAtomDict,c=this.atomDict,u=t.getElementsByTagName("Entry");if(1===u.length){const e=u[0].getElementsByTagName("chemical_shift_list");if(1===e.length){const t=e[0].getElementsByTagName("random_coil_index");for(let e=0,i=t.length;e0&&(o[n]=e)}else{const e=t.getElementsByTagName("clash"),i=t.getElementsByTagName("mog-bond-outlier"),r=t.getElementsByTagName("mog-angle-outlier");if(i.length>0||r.length>0||e.length>0){const t={};l[n]=t;for(let i=0,n=e.length;i>>16&65535,a=0;0!==i;){i-=a=i>2e3?2e3:i;do{s=s+(r=r+t[n++]|0)|0}while(--a);r%=65521,s%=65521}return r|s<<16}jl.add("validation",class extends iA{constructor(e,t){super(e,t||{}),this.useDomParser=!0,this.validation=new cA(this.name,this.path)}get __objName(){return"validation"}get isXml(){return!0}_parse(){super._parse(),e.Debug&&Fl.time("ValidationParser._parse "+this.name),this.validation.fromXml(this.xml.data),e.Debug&&Fl.timeEnd("ValidationParser._parse "+this.name)}});var fA=function(){for(var e,t=[],i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t}();function mA(e,t,i,n){var r=fA,s=n+i;e^=-1;for(var a=n;a>>8^r[255&(e^t[a])];return~e}var pA=30,gA=12;function _A(e,t){var i,n,r,s,a,o,l,c,u,h,d,f,m,p,g,_,y,v,b,x,w,S,M,A,C;i=e.state,n=e.next_in,A=e.input,r=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),l=i.dmax,c=i.wsize,u=i.whave,h=i.wnext,d=i.window,f=i.hold,m=i.bits,p=i.lencode,g=i.distcode,_=(1<>>=b=v>>>24,m-=b,0===(b=v>>>16&255))C[s++]=65535&v;else{if(!(16&b)){if(64&b){if(32&b){i.mode=gA;break e}e.msg="invalid literal/length code",i.mode=pA;break e}v=p[(65535&v)+(f&(1<>>=b,m-=b),m<15&&(f+=A[n++]<>>=b=v>>>24,m-=b,16&(b=v>>>16&255)){if(w=65535&v,m<(b&=15)&&(f+=A[n++]<l){e.msg="invalid distance too far back",i.mode=pA;break e}if(f>>>=b,m-=b,w>(b=s-a)){if((b=w-b)>u&&i.sane){e.msg="invalid distance too far back",i.mode=pA;break e}if(S=0,M=d,0===h){if(S+=c-b,b2;)C[s++]=M[S++],C[s++]=M[S++],C[s++]=M[S++],x-=3;x&&(C[s++]=M[S++],x>1&&(C[s++]=M[S++]))}else{S=s-w;do{C[s++]=C[S++],C[s++]=C[S++],C[s++]=C[S++],x-=3}while(x>2);x&&(C[s++]=C[S++],x>1&&(C[s++]=C[S++]))}break}if(64&b){e.msg="invalid distance code",i.mode=pA;break e}v=g[(65535&v)+(f&(1<>3,f&=(1<<(m-=x<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n=1&&0===I[x];x--);if(w>x&&(w=x),0===x)return r[s++]=20971520,r[s++]=20971520,o.bits=1,0;for(b=1;b0&&(e===xA||1!==x))return-1;for(D[1]=0,y=1;yvA||e===SA&&C>bA)return 1;for(;;){m=y-M,a[v]f?(p=R[L+a[v]],g=P[E+a[v]]):(p=96,g=0),l=1<>M)+(c-=l)]=m<<24|p<<16|g}while(0!==c);for(l=1<>=1;if(0!==l?(T&=l-1,T+=l):T=0,v++,0==--I[y]){if(y===x)break;y=t[i+a[v]]}if(y>w&&(T&h)!==u){for(0===M&&(M=w),d+=b,A=1<<(S=y-M);S+MvA||e===SA&&C>bA)return 1;r[u=T&h]=w<<24|S<<16|d-s}}return 0!==T&&(r[d+T]=y-M<<24|64<<16),o.bits=w,0}var EA=1,IA=2,DA=0,RA=-2,LA=1,kA=12,OA=30,NA=852,FA=592;function BA(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function zA(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function UA(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,function(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=LA,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(NA),t.distcode=t.distdyn=new Int32Array(FA),t.sane=1,t.back=-1,DA):RA}(e)):RA}function VA(e,t){var i,n;return e?(n=new zA,e.state=n,n.window=null,i=function(e,t){var i,n;return e&&e.state?(n=e.state,t<0?(i=0,t=-t):(i=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?RA:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=i,n.wbits=t,UA(e))):RA}(e,t),i!==DA&&(e.state=null),i):RA}var $A,GA,HA=!0;function jA(e){if(HA){var t;for($A=new Int32Array(512),GA=new Int32Array(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(PA(EA,e.lens,0,288,$A,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;PA(IA,e.lens,0,32,GA,0,e.work,{bits:5}),HA=!1}e.lencode=$A,e.lenbits=9,e.distcode=GA,e.distbits=5}function WA(e,t,i,n){var r,s=e.state;return null===s.window&&(s.wsize=1<=s.wsize?(hA(s.window,t,i-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((r=s.wsize-s.wnext)>n&&(r=n),hA(s.window,t,i-n,r,s.wnext),(n-=r)?(hA(s.window,t,i-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=r,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,i.check=mA(i.check,T,2,0),c=0,u=0,i.mode=2;break}if(i.flags=0,i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&c)<<8)+(c>>8))%31){e.msg="incorrect header check",i.mode=OA;break}if(8!=(15&c)){e.msg="unknown compression method",i.mode=OA;break}if(u-=4,w=8+(15&(c>>>=4)),0===i.wbits)i.wbits=w;else if(w>i.wbits){e.msg="invalid window size",i.mode=OA;break}i.dmax=1<>8&1),512&i.flags&&(T[0]=255&c,T[1]=c>>>8&255,i.check=mA(i.check,T,2,0)),c=0,u=0,i.mode=3;case 3:for(;u<32;){if(0===o)break e;o--,c+=n[s++]<>>8&255,T[2]=c>>>16&255,T[3]=c>>>24&255,i.check=mA(i.check,T,4,0)),c=0,u=0,i.mode=4;case 4:for(;u<16;){if(0===o)break e;o--,c+=n[s++]<>8),512&i.flags&&(T[0]=255&c,T[1]=c>>>8&255,i.check=mA(i.check,T,2,0)),c=0,u=0,i.mode=5;case 5:if(1024&i.flags){for(;u<16;){if(0===o)break e;o--,c+=n[s++]<>>8&255,i.check=mA(i.check,T,2,0)),c=0,u=0}else i.head&&(i.head.extra=null);i.mode=6;case 6:if(1024&i.flags&&((f=i.length)>o&&(f=o),f&&(i.head&&(w=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),hA(i.head.extra,n,s,f,w)),512&i.flags&&(i.check=mA(i.check,n,f,s)),o-=f,s+=f,i.length-=f),i.length))break e;i.length=0,i.mode=7;case 7:if(2048&i.flags){if(0===o)break e;f=0;do{w=n[s+f++],i.head&&w&&i.length<65536&&(i.head.name+=String.fromCharCode(w))}while(w&&f>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=kA;break;case 10:for(;u<32;){if(0===o)break e;o--,c+=n[s++]<>>=7&u,u-=7&u,i.mode=27;break}for(;u<3;){if(0===o)break e;o--,c+=n[s++]<>>=1)){case 0:i.mode=14;break;case 1:if(jA(i),i.mode=20,6===t){c>>>=2,u-=2;break e}break;case 2:i.mode=17;break;case 3:e.msg="invalid block type",i.mode=OA}c>>>=2,u-=2;break;case 14:for(c>>>=7&u,u-=7&u;u<32;){if(0===o)break e;o--,c+=n[s++]<>>16^65535)){e.msg="invalid stored block lengths",i.mode=OA;break}if(i.length=65535&c,c=0,u=0,i.mode=15,6===t)break e;case 15:i.mode=16;case 16:if(f=i.length){if(f>o&&(f=o),f>l&&(f=l),0===f)break e;hA(r,n,s,f,a),o-=f,s+=f,l-=f,a+=f,i.length-=f;break}i.mode=kA;break;case 17:for(;u<14;){if(0===o)break e;o--,c+=n[s++]<>>=5,u-=5,i.ndist=1+(31&c),c>>>=5,u-=5,i.ncode=4+(15&c),c>>>=4,u-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=OA;break}i.have=0,i.mode=18;case 18:for(;i.have>>=3,u-=3}for(;i.have<19;)i.lens[P[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,M={bits:i.lenbits},S=PA(0,i.lens,0,19,i.lencode,0,i.work,M),i.lenbits=M.bits,S){e.msg="invalid code lengths set",i.mode=OA;break}i.have=0,i.mode=19;case 19:for(;i.have>>16&255,y=65535&C,!((g=C>>>24)<=u);){if(0===o)break e;o--,c+=n[s++]<>>=g,u-=g,i.lens[i.have++]=y;else{if(16===y){for(A=g+2;u>>=g,u-=g,0===i.have){e.msg="invalid bit length repeat",i.mode=OA;break}w=i.lens[i.have-1],f=3+(3&c),c>>>=2,u-=2}else if(17===y){for(A=g+3;u>>=g)),c>>>=3,u-=3}else{for(A=g+7;u>>=g)),c>>>=7,u-=7}if(i.have+f>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=OA;break}for(;f--;)i.lens[i.have++]=w}}if(i.mode===OA)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=OA;break}if(i.lenbits=9,M={bits:i.lenbits},S=PA(EA,i.lens,0,i.nlen,i.lencode,0,i.work,M),i.lenbits=M.bits,S){e.msg="invalid literal/lengths set",i.mode=OA;break}if(i.distbits=6,i.distcode=i.distdyn,M={bits:i.distbits},S=PA(IA,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,M),i.distbits=M.bits,S){e.msg="invalid distances set",i.mode=OA;break}if(i.mode=20,6===t)break e;case 20:i.mode=21;case 21:if(o>=6&&l>=258){e.next_out=a,e.avail_out=l,e.next_in=s,e.avail_in=o,i.hold=c,i.bits=u,_A(e,d),a=e.next_out,r=e.output,l=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,c=i.hold,u=i.bits,i.mode===kA&&(i.back=-1);break}for(i.back=0;_=(C=i.lencode[c&(1<>>16&255,y=65535&C,!((g=C>>>24)<=u);){if(0===o)break e;o--,c+=n[s++]<>v)])>>>16&255,y=65535&C,!(v+(g=C>>>24)<=u);){if(0===o)break e;o--,c+=n[s++]<>>=v,u-=v,i.back+=v}if(c>>>=g,u-=g,i.back+=g,i.length=y,0===_){i.mode=26;break}if(32&_){i.back=-1,i.mode=kA;break}if(64&_){e.msg="invalid literal/length code",i.mode=OA;break}i.extra=15&_,i.mode=22;case 22:if(i.extra){for(A=i.extra;u>>=i.extra,u-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=23;case 23:for(;_=(C=i.distcode[c&(1<>>16&255,y=65535&C,!((g=C>>>24)<=u);){if(0===o)break e;o--,c+=n[s++]<>v)])>>>16&255,y=65535&C,!(v+(g=C>>>24)<=u);){if(0===o)break e;o--,c+=n[s++]<>>=v,u-=v,i.back+=v}if(c>>>=g,u-=g,i.back+=g,64&_){e.msg="invalid distance code",i.mode=OA;break}i.offset=y,i.extra=15&_,i.mode=24;case 24:if(i.extra){for(A=i.extra;u>>=i.extra,u-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=OA;break}i.mode=25;case 25:if(0===l)break e;if(f=d-l,i.offset>f){if((f=i.offset-f)>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=OA;break}f>i.wnext?(f-=i.wnext,m=i.wsize-f):m=i.wnext-f,f>i.length&&(f=i.length),p=i.window}else p=r,m=a-i.offset,f=i.length;f>l&&(f=l),l-=f,i.length-=f;do{r[a++]=p[m++]}while(--f);0===i.length&&(i.mode=21);break;case 26:if(0===l)break e;r[a++]=i.length,l--,i.mode=21;break;case 27:if(i.wrap){for(;u<32;){if(0===o)break e;o--,c|=n[s++]<=252?6:QA>=248?5:QA>=240?4:QA>=224?3:QA>=192?2:1;function JA(e){var t,i,n,r,s,a=e.length,o=0;for(r=0;r>>6,t[s++]=128|63&i):i<65536?(t[s++]=224|i>>>12,t[s++]=128|i>>>6&63,t[s++]=128|63&i):(t[s++]=240|i>>>18,t[s++]=128|i>>>12&63,t[s++]=128|i>>>6&63,t[s++]=128|63&i);return t}function eC(e,t){var i,n,r,s,a=t||e.length,o=new Array(2*a);for(n=0,i=0;i4)o[n++]=65533,i+=s-1;else{for(r&=2===s?31:3===s?15:7;s>1&&i1?o[n++]=65533:r<65536?o[n++]=r:(r-=65536,o[n++]=55296|r>>10&1023,o[n++]=56320|1023&r)}return function(e,t){if(t<65537&&(e.subarray&&KA||!e.subarray&&YA))return String.fromCharCode.apply(null,uA(e,t));for(var i="",n=0;ne.length&&(t=e.length),i=t-1;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+ZA[e[i]]>t?i:t}ZA[254]=ZA[254]=1;var iC=0,nC={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function rC(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}function sC(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var aC=Object.prototype.toString;function oC(e){if(!(this instanceof oC))return new oC(e);this.options=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(var n in i)i.hasOwnProperty(n)&&(e[n]=i[n])}}return e}({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new rC,this.strm.avail_out=0;var i,n,r,s=VA(this.strm,t.windowBits);if(s!==iC)throw new Error(nC[s]);this.header=new sC,i=this.strm,n=this.header,i&&i.state&&2&(r=i.state).wrap&&(r.head=n,n.done=!1)}oC.prototype.push=function(e,t){var i,n,r,s,a,o,l=this.strm,c=this.options.chunkSize,u=this.options.dictionary,h=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,"string"==typeof e?l.input=function(e){for(var t=new Uint8Array(e.length),i=0,n=t.length;i0||0===l.avail_out)&&1!==i);return 1===i&&(n=4),4===n?(i=function(e){if(!e||!e.state)return RA;var t=e.state;return t.window&&(t.window=null),e.state=null,DA}(this.strm),this.onEnd(i),this.ended=!0,i===iC):2!==n||(this.onEnd(iC),l.avail_out=0,!0)},oC.prototype.onData=function(e){this.chunks.push(e)},oC.prototype.onEnd=function(e){e===iC&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=function(e){var t,i,n,r,s,a;for(n=0,t=0,i=e.length;t-1?t.name:t.name.substring(0,4);return!["pdb","cif"].includes(t.ext)||!1!==t.compressed&&"gz"!==t.compressed?("mmtf"===t.ext&&(Fl.warn("MMTF files distribution has been discontinued by RCSB PDB as of July 2024.\n Defaulting to bcif format instead. See https://www.rcsb.org/news/65a1af31c76ca3abcc925d0c for the deprecation notice"),t.base.endsWith(".bb")&&Fl.warn("Backbone only files are not available from RCSB PDB anymore."),t.ext=""),t.ext?Fl.warn("unsupported ext",t.ext):Fl.warn('mmCif files available from RCSB PDB lack connectivity information.\n Consider using PDBe as the data provider for using "Updated mmCif files" that contain residues connectivity records.'),cC+"//models.rcsb.org/"+i+".bcif.gz"):cC+"//files.rcsb.org/download/"+t.path}getExt(e){const t=rc(e).ext;return t||"bcif"}});const uC="//www.ebi.ac.uk/pdbe/entry-files/download/";Gl.add("pdbe",new class extends lC{getUrl(e){const t=rc(e);let i,n=t.name.indexOf("_")>-1?t.name:t.name.substring(0,4);switch(t.ext){case"cif":i=uC+n+"_updated.cif";break;case"pdb":case"ent":n.startsWith("pdb")||(n="pdb"+n),i=uC+n+".ent";break;case"bcif":i=uC+t.path;break;case"":i=uC+n+".bcif";break;default:Fl.warn("unsupported ext",t.ext),i=uC+n+".bcif"}return"https://"+i}getExt(e){const t=rc(e).ext;return t||"bcif"}});const hC="//pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/",dC="/SDF?record_type=3d";Gl.add("pubchem",new class extends lC{getUrl(e){const t=rc(e),i=t.name;let n;return t.ext&&"sdf"!==t.ext?(Fl.warn("unsupported ext",t.ext),n=hC+i+dC):n=hC+i+dC,function(){const e=window.location.protocol;return null===e.match(/http(s)?:/gi)?"http:":e}()+n}getExt(e){const t=rc(e).ext;return t||"sdf"}});class fC extends lC{getUrl(e){return e}getExt(e){return rc(e).ext}}Gl.add("ftp",new fC),Gl.add("http",new fC),Gl.add("https",new fC);const mC="//alphafold.ebi.ac.uk/files/AF-",pC="-F1-model_v4.pdb";Gl.add("alphafold",new class extends lC{getUrl(e){const t=rc(e),i=t.name;let n;return t.ext&&"pdb"!==t.ext?(Fl.warn("unsupported AF ext",t.ext),n=mC+i+pC):n=mC+i+pC,"https://"+n}getExt(e){const t=rc(e).ext;return t||"pdb"}});const gC=/^((http|https|ftp):)*\/\//;function _C(e,t){return{type:"integer",max:e,min:t}}function yC(e,t,i){return{type:"number",precision:e,max:t,min:i}}function vC(e,t,i){return{type:"range",step:e,max:t,min:i}}function bC(...e){return{type:"select",options:e.reduce(((e,t)=>Object.assign(Object.assign({},e),{[t]:t})),{})}}const xC={backgroundColor:{type:"color"},quality:bC("auto","low","medium","high"),sampleLevel:vC(1,5,-1),impostor:{type:"boolean"},workerDefault:{type:"boolean"},rotateSpeed:yC(1,10,0),zoomSpeed:yC(1,10,0),panSpeed:yC(1,10,0),clipNear:vC(1,100,0),clipFar:vC(1,100,0),clipDist:_C(200,0),clipMode:bC("scene","camera"),clipScale:bC("relative","absolute"),fogNear:vC(1,100,0),fogFar:vC(1,100,0),cameraType:bC("perspective","orthographic","stereo"),cameraEyeSep:yC(3,1,.01),cameraFov:vC(1,120,15),lightColor:{type:"color"},lightIntensity:yC(2,10,0),ambientColor:{type:"color"},ambientIntensity:yC(2,10,0),hoverTimeout:_C(1e4,-1),tooltip:{type:"boolean"},mousePreset:bC(...Object.keys(Wf))};e.AngleRepresentation=k_,e.ArrowBuffer=rv,e.Assembly=Lm,e.AxesRepresentation=Y_,e.BackboneRepresentation=Z_,e.BallAndStickRepresentation=K_,e.BaseRepresentation=Q_,e.Box3=bt,e.BoxBuffer=cv,e.BufferRepresentation=Mp,e.CartoonRepresentation=sy,e.Collection=rg,e.Color=Oi,e.Colormaker=qo,e.ColormakerRegistry=$l,e.Component=ng,e.ComponentCollection=Tg,e.ConeBuffer=tv,e.ContactRepresentation=ay,e.Counter=hc,e.CylinderBuffer=X_,e.DatasourceRegistry=Gl,e.DecompressorRegistry=ql,e.DihedralHistogramRepresentation=uy,e.DihedralRepresentation=oy,e.DistanceRepresentation=dy,e.EllipsoidBuffer=pv,e.Euler=ni,e.Frames=lg,e.HelixorientRepresentation=gy,e.HyperballRepresentation=Ay,e.Kdtree=Pm,e.KeyActions=Yf,e.LabelRepresentation=Ty,e.LeftMouseButton=1,e.LicoriceRepresentation=_y,e.LineRepresentation=Ey,e.Matrix3=He,e.Matrix4=qt,e.MdsrvDatasource=class extends lC{constructor(e=""){super(),this.baseUrl=e}getListing(e=""){let t=`${this.baseUrl}dir/${e}`;return"/"!==t[t.length-1]&&(t+="/"),ac(t,{ext:"json"}).then((t=>({path:e,data:t.data})))}getUrl(e){const t=rc(e);return`${this.baseUrl}file/${t.path}${t.query}`}getCountUrl(e){const t=rc(e);return`${this.baseUrl}traj/numframes/${t.path}${t.query}`}getFrameUrl(e,t){const i=rc(e);return`${this.baseUrl}traj/frame/${t}/${i.path}${i.query}`}getFrameParams(e,t){return`atomIndices=${t.join(";")}`}getPathUrl(e,t){const i=rc(e);return`${this.baseUrl}traj/path/${t}/${i.path}${i.query}`}getExt(e){return rc(e).ext}},e.MeasurementDefaultParams=Bl,e.MeshBuffer=Bf,e.MiddleMouseButton=2,e.MolecularSurface=ky,e.MolecularSurfaceRepresentation=Oy,e.MouseActions=jf,e.OctahedronBuffer=bv,e.ParserRegistry=jl,e.PdbWriter=class extends lc{constructor(e,t){super(),this.mimeType="text/plain",this.defaultName="structure",this.defaultExt="pdb";const i=Object.assign({},t);this.renumberSerial=uo(i.renumberSerial,!0),this.remarks=function(e){return Array.isArray(e)?e:[e]}(uo(i.remarks,[])),this.structure=e,this._records=[]}_writeRecords(){this._records.length=0,this._writeTitle(),this._writeRemarks(),this._writeAtoms()}_writeTitle(){this._records.push(oc.sprintf("TITLE %-74s",this.structure.name))}_writeRemarks(){this.remarks.forEach((e=>{this._records.push(oc.sprintf("REMARK %-73s",e))})),this.structure.trajectory&&(this._records.push(oc.sprintf("REMARK %-73s","Trajectory '"+this.structure.trajectory.name+"'")),this._records.push(oc.sprintf("REMARK %-73s",`Frame ${this.structure.trajectory.frame}`)))}_writeAtoms(){let e=1,t=1,i=" ",n=" ";const r=this.structure.modelStore.count>1;this.structure.eachModel((s=>{r&&this._records.push(oc.sprintf("MODEL %4d%-66s",t++,"")),s.eachAtom((t=>{const r=t.hetero?"HETATM%5d %-4s %3s %1s%4d %8.3f%8.3f%8.3f%6.2f%6.2f %4s%2s%1s%1s":"ATOM %5d %-4s %3s %1s%4d %8.3f%8.3f%8.3f%6.2f%6.2f %4s%2s%1s%1s",s=this.renumberSerial?e:t.serial;let a=t.atomname;(1===a.length||a.length<4&&1===t.element.length&&a[0]===t.element)&&(a=" "+a),t.formalCharge?(i=Math.abs(t.formalCharge).toPrecision(1),n=t.formalCharge>0?"+":"-"):(i=" ",n=" "),this._records.push(oc.sprintf(r,s,a,t.resname,uo(t.chainname," "),t.resno,t.x,t.y,t.z,uo(t.occupancy,1),uo(t.bfactor,0),"",uo(t.element,""),i,n)),e+=1}),this.structure.getSelection()),r&&this._records.push(oc.sprintf("%-80s","ENDMDL"))})),this._records.push(oc.sprintf("%-80s","END"))}getString(){return console.warn("PdbWriter.getString() is deprecated, use .getData instead"),this.getData()}getData(){return this._writeRecords(),this._records.join("\n")}},e.PickingProxy=mu,e.Plane=On,e.PointBuffer=Up,e.PointRepresentation=Ny,e.Quaternion=gt,e.Queue=Ou,e.RepresentationCollection=sg,e.RepresentationElement=Jp,e.RepresentationRegistry=Hl,e.RibbonRepresentation=Uy,e.RightMouseButton=3,e.RocketRepresentation=Vy,e.RopeRepresentation=$y,e.ScriptExtensions=Ul,e.SdfWriter=class extends lc{constructor(e){super(),this.mimeType="text/plain",this.defaultName="structure",this.defaultExt="sdf",this.structure=e,this._records=[]}get idString(){return this.structure.id}get titleString(){return" "+this.structure.title}get countsString(){return oc.sprintf("%3i%3i 0 0 0 0 0 0 0 0999 V2000",this.structure.atomCount,this.structure.bondCount)}get chargeLines(){const e=[];this.structure.eachAtom((t=>{null!=t.formalCharge&&0!==t.formalCharge&&e.push([t.index,t.formalCharge])}));const t=[];for(let i=0;i{this._records.push(this.formatAtom(e))})),this.structure.eachBond((e=>{this._records.push(this.formatBond(e))})),this.chargeLines.forEach((e=>{this._records.push(e)})),this._records.push("M END")}_writeFooter(){this._records.push("$$$$")}getData(){return this._writeRecords(),this._records.join("\n")}},e.Selection=wl,e.Shape=Sp,e.ShapeComponent=Dg,e.Signal=Yo.Signal,e.SpacefillRepresentation=Gy,e.SpatialHash=Ch,e.SphereBuffer=Np,e.Stage=class{constructor(e,t={}){this.signals={parametersChanged:new Yo.Signal,fullscreenChanged:new Yo.Signal,componentAdded:new Yo.Signal,componentRemoved:new Yo.Signal,clicked:new Yo.Signal,hovered:new Yo.Signal},this.tasks=new hc,this.compList=[],this.defaultFileParams={},this.logList=[],this.viewer=new Qc(e),this.viewer.renderer&&(this.tooltip=document.createElement("div"),Object.assign(this.tooltip.style,{display:"none",position:"fixed",zIndex:"1000000",pointerEvents:"none",backgroundColor:"rgba( 0, 0, 0, 0.6 )",color:"lightgrey",padding:"8px",fontFamily:"sans-serif"}),this.viewer.container.appendChild(this.tooltip),this.mouseObserver=new eu(this.viewer.renderer.domElement),this.viewerControls=new Mu(this),this.trackballControls=new du(this),this.pickingControls=new pu(this),this.animationControls=new ku(this),this.mouseControls=new Xf(this),this.keyControls=new Zf(this),this.pickingBehavior=new Qf(this),this.mouseBehavior=new Jf(this),this.animationBehavior=new em(this),this.keyBehavior=new im(this),this.spinAnimation=this.animationControls.spin([0,1,0],.005),this.spinAnimation.pause(!0),this.rockAnimation=this.animationControls.rock([0,1,0],.005),this.rockAnimation.pause(!0),this.parameters=ho(t,Ig),this.setParameters(this.parameters),this.viewer.animate())}setParameters(e={}){fo(this.parameters,e);const t=e,i=this.parameters,n=this.viewer,r=this.trackballControls;return void 0!==t.quality&&this.setQuality(i.quality),void 0!==t.impostor&&this.setImpostor(i.impostor),void 0!==t.rotateSpeed&&(r.rotateSpeed=i.rotateSpeed),void 0!==t.zoomSpeed&&(r.zoomSpeed=i.zoomSpeed),void 0!==t.panSpeed&&(r.panSpeed=i.panSpeed),void 0!==t.mousePreset&&this.mouseControls.preset(i.mousePreset),this.mouseObserver.setParameters({hoverTimeout:i.hoverTimeout}),n.setClip(i.clipNear,i.clipFar,i.clipDist,i.clipMode,i.clipScale),n.setFog(void 0,i.fogNear,i.fogFar),n.setCamera(i.cameraType,i.cameraFov,i.cameraEyeSep),n.setSampling(i.sampleLevel),n.setBackground(i.backgroundColor),n.setLight(i.lightColor,i.lightIntensity,i.ambientColor,i.ambientIntensity),this.signals.parametersChanged.dispatch(this.getParameters()),this}log(e){console.log("STAGE LOG",e),this.logList.push(e)}getParameters(){return Object.assign({},this.parameters)}defaultFileRepresentation(t){if(t instanceof Mg){let i,n,r;t.setSelection("/0");const s=t.structure;if(s.biomolDict.BU1){const e=s.biomolDict.BU1;i=e.getAtomCount(s),n=e.getResidueCount(s),r=e.getInstanceCount(),t.setDefaultAssembly("BU1")}else i=s.getModelProxy(0).atomCount,n=s.getModelProxy(0).residueCount,r=1;let a=i;Rl&&(a*=4);const o=s.atomStore.count/s.residueStore.count<2;o&&(a*=10);let l="chainname",c="RdYlBu",u=!1;if(1===s.getChainnameCount(new wl("polymer and /0"))&&(l="residueindex",c="Spectral",u=!0),e.Debug&&console.log(a,i,r,o),n/r<4)t.addRepresentation("ball+stick",{colorScheme:"element",radiusScale:2,aspectRatio:1.5,bondScale:.3,bondSpacing:.75,quality:"auto"});else if(r>5&&a>15e3||a>7e5){let e=Math.min(2,Math.max(.1,6e3/(a/r)));o&&(e=Math.min(e,.5)),t.addRepresentation("surface",{colorScheme:l,colorScale:c,colorReverse:u,sele:"polymer",surfaceType:"av",probeRadius:1.4,scaleFactor:e,useWorker:!1})}else a>25e4?t.addRepresentation("backbone",{colorScheme:l,colorScale:c,colorReverse:u,lineOnly:!0}):a>1e5?t.addRepresentation("backbone",{colorScheme:l,colorScale:c,colorReverse:u,quality:"low",disableImpostor:!0,radiusScale:2}):a>8e4?t.addRepresentation("backbone",{colorScheme:l,colorScale:c,colorReverse:u,radiusScale:2}):(t.addRepresentation("cartoon",{colorScheme:l,colorScale:c,colorReverse:u,radiusScale:.7,aspectRatio:5,quality:"auto"}),a<5e4&&t.addRepresentation("base",{colorScheme:l,colorScale:c,colorReverse:u,quality:"auto"}),t.addRepresentation("ball+stick",{sele:"ligand",colorScheme:"element",radiusScale:2,aspectRatio:1.5,bondScale:.3,bondSpacing:.75,quality:"auto"}));t.structure.frames.length&&t.addTrajectory()}else(t instanceof Ag||t instanceof Cg)&&t.addRepresentation("surface");this.tasks.onZeroOnce(this.autoView,this)}loadFile(e,t={}){const i=Object.assign({},this.defaultFileParams,t),n=rc(e).name;this.tasks.increment(),this.log(`loading file '${n}'`);const r=uo(i.ext,rc(e).ext);let s;return s=jl.isTrajectory(r)?Promise.reject(new Error(`loadFile: ext '${r}' is a trajectory and must be loaded into a structure component`)):ac(e,i),s.then((e=>{this.log(`loaded '${n}'`);const t=this.addComponentFromObject(e,i);return i.defaultRepresentation&&this.defaultFileRepresentation(t),this.tasks.decrement(),t}),(e=>{this.tasks.decrement();const t=`error loading file: '${e}'`;throw this.log(t),t}))}loadScript(e){const t=rc(e).name;return this.log(`loading script '${t}'`),ac(e).then((e=>{this.tasks.increment(),this.log(`running script '${t}'`),e.run(this).then((()=>{this.tasks.decrement(),this.log(`finished script '${t}'`)})),this.log(`called script '${t}'`)}),(e=>{this.tasks.decrement();const i=`errored script '${t}' "${e}"`;throw this.log(i),i}))}addComponent(e){e?(this.compList.push(e),this.signals.componentAdded.dispatch(e)):Fl.warn("Stage.addComponent: no component given")}addComponentFromObject(e,t={}){const i=Xl.get(e.type);if(i){const n=new i(this,e,t);return this.addComponent(n),n}Fl.warn("no component for object type",e.type)}removeComponent(e){const t=this.compList.indexOf(e);-1!==t&&(this.compList.splice(t,1),e.dispose(),this.signals.componentRemoved.dispatch(e))}removeAllComponents(){this.compList.slice().forEach((e=>this.removeComponent(e)))}handleResize(){this.viewer.handleResize()}setSize(e,t){const i=this.viewer.container;i!==document.body&&(void 0!==e&&(i.style.width=e),void 0!==t&&(i.style.height=t),this.handleResize())}toggleFullscreen(e){if(!(document.fullscreenEnabled||document.mozFullScreenEnabled||document.webkitFullscreenEnabled||document.msFullscreenEnabled))return void Fl.log("fullscreen mode (currently) not possible");const t=this;function i(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement}function n(){if(!i()&&t.lastFullscreenElement){const e=t.lastFullscreenElement;e.style.width=e.dataset.normalWidth||"",e.style.height=e.dataset.normalHeight||"",document.removeEventListener("fullscreenchange",n),document.removeEventListener("mozfullscreenchange",n),document.removeEventListener("webkitfullscreenchange",n),document.removeEventListener("MSFullscreenChange",n),t.handleResize(),t.signals.fullscreenChanged.dispatch(!1)}}e=e||this.viewer.container,this.lastFullscreenElement=e,i()?document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen():(e.dataset.normalWidth=e.style.width||"",e.dataset.normalHeight=e.style.height||"",e.style.width=window.screen.width+"px",e.style.height=window.screen.height+"px",e.requestFullscreen?e.requestFullscreen():e.msRequestFullscreen?e.msRequestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullscreen&&e.webkitRequestFullscreen(),document.addEventListener("fullscreenchange",n),document.addEventListener("mozfullscreenchange",n),document.addEventListener("webkitfullscreenchange",n),document.addEventListener("MSFullscreenChange",n),this.handleResize(),this.signals.fullscreenChanged.dispatch(!0),setTimeout((function(){t.handleResize()}),100))}setSpin(e){e?(this.spinAnimation.resume(!0),this.rockAnimation.pause(!0)):this.spinAnimation.pause(!0)}setRock(e){e?(this.rockAnimation.resume(!0),this.spinAnimation.pause(!0)):this.rockAnimation.pause(!0)}toggleSpin(){this.setSpin(this.spinAnimation.paused)}toggleRock(){this.setRock(this.rockAnimation.paused)}getFocus(){const e=this.parameters;if("scene"!==e.clipMode)return 0;let t=e.clipNear;return"absolute"===e.clipScale&&(t=this.viewer.absoluteToRelative(t)),2*t}setFocus(e){if("scene"!==this.parameters.clipMode)return;let t,i,n,r;"relative"===this.parameters.clipScale?(t=No(e/2,0,49.9),i=100-t,n=50,r=function(e){return No(e,0,100)}(2*i-50)):(t=this.viewer.relativeToAbsolute(e/2),i=t,n=0,r=2*i),this.setParameters({clipNear:t,clipFar:i,fogNear:n,fogFar:r})}getZoomForBox(e){const t=e.getSize(Eg),i=Math.max(t.x,t.y,t.z),n=Math.min(t.x,t.y,t.z);let r=i+Math.sqrt(n);const s=Ro(this.viewer.perspectiveCamera.fov),a=this.viewer.width,o=this.viewer.height,l=o{this.tasks.onZeroOnce((()=>{this.tasks.increment(),this.viewer.makeImage(e).then((e=>{this.tasks.decrement(),t(e)})).catch((e=>{this.tasks.decrement(),i(e)}))}))}))}setImpostor(e){this.parameters.impostor=e;const t=["spacefill","ball+stick","licorice","hyperball","backbone","rocket","helixorient","contact","distance","dot"];this.eachRepresentation((function(i){if(!t.includes(i.getType()))return;const n=i.getParameters();n.disableImpostor=!e,i.build(n)}))}setQuality(e){this.parameters.quality=e;const t=["tube","cartoon","ribbon","trace","rope"],i=["spacefill","ball+stick","licorice","hyperball","backbone","rocket","helixorient","contact","distance","dot"];this.eachRepresentation((function(n){const r=n.getParameters();if(!t.includes(n.getType())){if(!i.includes(n.getType()))return;if(!r.disableImpostor)return void(n.repr.quality=e)}r.quality=e,n.build(r)}))}eachComponent(e,t){this.compList.slice().forEach((i=>{void 0!==t&&t!==i.type||e(i)}))}eachRepresentation(e,t){this.eachComponent((i=>{i.reprList.slice().forEach((n=>{void 0!==t&&t!==n.getType()||e(n,i)}))}))}getComponentsByName(e){const t=[];return this.eachComponent((i=>{(void 0===e||Pg(e,i))&&t.push(i)})),new Tg(t)}getComponentsByObject(e){const t=[];return this.eachComponent((i=>{i.object===e&&t.push(i)})),new Tg(t)}getRepresentationsByName(e){const t=[];return this.eachRepresentation(((i,n)=>{(void 0===e||Pg(e,i))&&t.push(i)})),new sg(t)}measureClear(){this.eachComponent((e=>e.measureClear()),"structure")}measureUpdate(){this.eachComponent((e=>e.measureUpdate()),"structure")}dispose(){this.tasks.dispose(),this.viewer.dispose(),this.mouseObserver.dispose()}},e.StaticDatasource=class extends lC{constructor(e=""){super(),this.baseUrl=e}getUrl(e){const t=rc(e);let i=this.baseUrl+t.path;return gC.test(this.baseUrl)||(i=function(e){const t=window.location,i=t.pathname,n=i.substring(0,i.lastIndexOf("/")+1);return t.origin+n+e}(i)),i}getExt(e){return rc(e).ext}},e.StlWriter=class extends lc{constructor(e){super(),this.mimeType="application/vnd.ms-pki.stl",this.defaultName="surface",this.defaultExt="stl",this.surface=e}getData(){const e=this.surface.index.length/3,t=new uc(2*e+3*e*4*4+80+4);t.skip(80),t.writeUint32(e);const i=new _t,n=new _t,r=new _t,s=new _t;for(let a=0;a{e.eachAtom((e=>{s.growIfFull(),s.atomTypeId[l]=a.add(e.atomname,e.element),s.x[l]=e.x,s.y[l]=e.y,s.z[l]=e.z,s.serial[l]=e.serial,s.formalCharge[l]=e.formalCharge,s.partialCharge[l]=e.partialCharge,s.altloc[l]=e.altloc,s.occupancy[l]=e.occupancy,s.bfactor[l]=e.bfactor,r.addAtom(e.modelIndex+u,e.chainname,e.chainid,e.resname,e.resno,1===e.hetero,e.sstruc,e.inscode),o[e.index+c]=l,l+=1})),c+=e.atomStore.count,u+=e.modelStore.count}));const h=n.bondStore,d=n.getAtomProxy(),f=n.getAtomProxy();return c=0,i.forEach((e=>{e.eachBond((e=>{d.index=o[e.atomIndex1+c],f.index=o[e.atomIndex2+c],h.addBond(d,f,e.bondOrder)})),c+=e.atomStore.count})),r.finalize(),jm(n,!0),Hm(n,!0),n.finalizeAtoms(),n.finalizeBonds(),Km(n),e.Debug&&Fl.timeEnd("concatStructures"),n},e.download=go,e.flatten=function e(t,i){i=uo(i,[]);for(let n=0;nt?(a&&(clearTimeout(a),a=null),o=c,s=e.apply(n,r),a||(n=r=null)):a||!1===i.trailing||(a=setTimeout(l,u)),s}},e.uniqueArray=bo,Object.defineProperty(e,"__esModule",{value:!0})})); +//# sourceMappingURL=ngl.js.map diff --git a/media/vendor/ngl/package.json b/media/vendor/ngl/package.json new file mode 100644 index 0000000..9b5f379 --- /dev/null +++ b/media/vendor/ngl/package.json @@ -0,0 +1,80 @@ +{ + "name": "ngl", + "version": "2.4.0", + "description": "Scalable molecular graphics for the web", + "main": "dist/ngl.umd.js", + "module": "dist/ngl.esm.js", + "types": "dist/declarations/ngl.d.ts", + "scripts": { + "lint": "npm run lint-src && npm run lint-test && npm run lint-script", + "lint-src": "#standard \"src/**/*.js\"", + "lint-test": "#standard --env mocha \"test/**/*.js\"", + "lint-script": "#standard --global stage --global NGL \"examples/scripts/**/*.js\"", + "dts": "tsc -d --declarationDir \"dist/declarations\" --emitDeclarationOnly --skipLibCheck", + "prebuild": "npm run lint", + "build": "npm run dts && rollup -c", + "postbuild": "node ./scripts/makeScriptsList.js", + "test": "vitest --globals", + "preversion": "npm test", + "version": "npm run build-min && git add -A dist", + "postversion": "git push && git push --tags", + "prepublishOnly": "npm test", + "devpublish": "npm publish --tag next", + "doc": "typedoc --includes doc/usage/ --media doc/usage/ --out build/docs/ ./src/ngl.ts", + "watch": "rollup -c -w", + "deploy": "./scripts/deploy.sh prerelease", + "gallery": "./scripts/gallery.sh", + "prerelease": "./scripts/release.sh prerelease", + "build-min": "npm run lint && npm run dts && rollup -c rollup.config.dist.js" + }, + "homepage": "https://github.com/arose/ngl#readme", + "repository": { + "type": "git", + "url": "https://github.com/arose/ngl.git" + }, + "bugs": { + "url": "https://github.com/arose/ngl/issues" + }, + "files": [ + "dist" + ], + "author": "Alexander Rose ", + "contributors": [], + "license": "MIT", + "keywords": [ + "molecular graphics", + "molecular structure", + "chemical structure", + "science" + ], + "devDependencies": { + "@babel/preset-env": "^7.23.3", + "@rollup/plugin-commonjs": "^17.1.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^11.1.1", + "@rollup/plugin-terser": "^0.4.3", + "@rollup/plugin-typescript": "^8.1.1", + "@types/chroma-js": "^1.3.5", + "@types/jest": "^27.5.1", + "@types/offscreencanvas": "^2019.6.4", + "@types/signals": "1.0.1", + "@types/sprintf-js": "^1.1.2", + "@types/three": "^0.158.2", + "@yushijinhun/three-minifier-rollup": "^0.3.1", + "babel-plugin-array-includes": "^2.0.3", + "jsdom": "^24.0.0", + "rollup": "^2.38.5", + "standard": "^11.0.1", + "tslib": "^2.3.1", + "typedoc": "^0.22.15", + "typescript": "^4.5.4", + "vitest": "^1.5.2" + }, + "dependencies": { + "chroma-js": "^1.3.7", + "molstar": "^4.1.0", + "signals": "^1.0.0", + "sprintf-js": "^1.1.2", + "three": "^0.158.0" + } +} diff --git a/media/vendor/plotly.js-dist-min/LICENSE b/media/vendor/plotly.js-dist-min/LICENSE new file mode 100644 index 0000000..13ffac3 --- /dev/null +++ b/media/vendor/plotly.js-dist-min/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016-2024 Plotly Technologies Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/media/vendor/plotly.js-dist-min/package.json b/media/vendor/plotly.js-dist-min/package.json new file mode 100644 index 0000000..e211944 --- /dev/null +++ b/media/vendor/plotly.js-dist-min/package.json @@ -0,0 +1,27 @@ +{ + "name": "plotly.js-dist-min", + "version": "3.6.0", + "description": "Ready-to-use minified plotly.js distributed bundle.", + "license": "MIT", + "main": "plotly.min.js", + "repository": { + "type": "git", + "url": "git+https://github.com/plotly/plotly.js.git" + }, + "bugs": { + "url": "https://github.com/plotly/plotly.js/issues" + }, + "author": "Plotly, Inc.", + "keywords": [ + "graphing", + "plotting", + "data", + "visualization", + "plotly" + ], + "files": [ + "LICENSE", + "README.md", + "plotly.min.js" + ] +} diff --git a/media/vendor/plotly.js-dist-min/plotly.min.js b/media/vendor/plotly.js-dist-min/plotly.min.js new file mode 100644 index 0000000..4e34b1e --- /dev/null +++ b/media/vendor/plotly.js-dist-min/plotly.min.js @@ -0,0 +1,3882 @@ +/** +* plotly.js v3.6.0 +* Copyright 2012-2026, Plotly, Inc. +* All rights reserved. +* Licensed under the MIT license +*/ +( + function(root, factory) { + if (typeof module === "object" && module.exports) { + module.exports = factory(); + } else { + root.moduleName = factory(); + } +} (typeof self !== "undefined" ? self : this, () => { +"use strict";var Plotly=(()=>{var wtt=Object.create;var FS=Object.defineProperty,Ttt=Object.defineProperties,Att=Object.getOwnPropertyDescriptor,Stt=Object.getOwnPropertyDescriptors,Mtt=Object.getOwnPropertyNames,g6=Object.getOwnPropertySymbols,Ett=Object.getPrototypeOf,Mq=Object.prototype.hasOwnProperty,gee=Object.prototype.propertyIsEnumerable;var pee=(e,t,r)=>t in e?FS(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,_g=(e,t)=>{for(var r in t||(t={}))Mq.call(t,r)&&pee(e,r,t[r]);if(g6)for(var r of g6(t))gee.call(t,r)&&pee(e,r,t[r]);return e},j1=(e,t)=>Ttt(e,Stt(t));var mee=(e,t)=>{var r={};for(var n in e)Mq.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&g6)for(var n of g6(e))t.indexOf(n)<0&&gee.call(e,n)&&(r[n]=e[n]);return r};var gu=(e,t)=>()=>(e&&(t=e(e=0)),t);var ye=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),yee=(e,t)=>{for(var r in t)FS(e,r,{get:t[r],enumerable:!0})},_ee=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Mtt(t))!Mq.call(e,i)&&i!==r&&FS(e,i,{get:()=>t[i],enumerable:!(n=Att(t,i))||n.enumerable});return e};var ktt=(e,t,r)=>(r=e!=null?wtt(Ett(e)):{},_ee(t||!e||!e.__esModule?FS(r,"default",{value:e,enumerable:!0}):r,e)),gb=e=>_ee(FS({},"__esModule",{value:!0}),e);var m6=ye(xee=>{"use strict";xee.version="3.6.0"});var wee=ye((bee,y6)=>{(function(t,r,n){r[t]=r[t]||n(),typeof y6!="undefined"&&y6.exports&&(y6.exports=r[t])})("Promise",typeof window!="undefined"?window:bee,function(){"use strict";var t,r,n,i=Object.prototype.toString,a=typeof setImmediate!="undefined"?function(k){return setImmediate(k)}:setTimeout;try{Object.defineProperty({},"x",{}),t=function(k,M,T,L){return Object.defineProperty(k,M,{value:T,writable:!0,configurable:L!==!1})}}catch(p){t=function(M,T,L){return M[T]=L,M}}n=function(){var k,M,T;function L(x,C){this.fn=x,this.self=C,this.next=void 0}return{add:function(C,S){T=new L(C,S),M?M.next=T:k=T,M=T,T=void 0},drain:function(){var C=k;for(k=M=r=void 0;C;)C.fn.call(C.self),C=C.next}}}();function o(p,k){n.add(p,k),r||(r=a(n.drain))}function s(p){var k,M=typeof p;return p!=null&&(M=="object"||M=="function")&&(k=p.then),typeof k=="function"?k:!1}function l(){for(var p=0;p0&&o(l,M))}catch(T){f.call(new d(M),T)}}}function f(p){var k=this;k.triggered||(k.triggered=!0,k.def&&(k=k.def),k.msg=p,k.state=2,k.chain.length>0&&o(l,k))}function h(p,k,M,T){for(var L=0;L{(function(){var e={version:"3.8.2"},t=[].slice,r=function(X){return t.call(X)},n=self.document;function i(X){return X&&(X.ownerDocument||X.document||X).documentElement}function a(X){return X&&(X.ownerDocument&&X.ownerDocument.defaultView||X.document&&X||X.defaultView)}if(n)try{r(n.documentElement.childNodes)[0].nodeType}catch(X){r=function(se){for(var Te=se.length,qe=new Array(Te);Te--;)qe[Te]=se[Te];return qe}}if(Date.now||(Date.now=function(){return+new Date}),n)try{n.createElement("DIV").style.setProperty("opacity",0,"")}catch(X){var o=this.Element.prototype,s=o.setAttribute,l=o.setAttributeNS,u=this.CSSStyleDeclaration.prototype,c=u.setProperty;o.setAttribute=function(se,Te){s.call(this,se,Te+"")},o.setAttributeNS=function(se,Te,qe){l.call(this,se,Te,qe+"")},u.setProperty=function(se,Te,qe){c.call(this,se,Te+"",qe)}}e.ascending=f;function f(X,se){return Xse?1:X>=se?0:NaN}e.descending=function(X,se){return seX?1:se>=X?0:NaN},e.min=function(X,se){var Te=-1,qe=X.length,Ve,Ye;if(arguments.length===1){for(;++Te=Ye){Ve=Ye;break}for(;++TeYe&&(Ve=Ye)}else{for(;++Te=Ye){Ve=Ye;break}for(;++TeYe&&(Ve=Ye)}return Ve},e.max=function(X,se){var Te=-1,qe=X.length,Ve,Ye;if(arguments.length===1){for(;++Te=Ye){Ve=Ye;break}for(;++TeVe&&(Ve=Ye)}else{for(;++Te=Ye){Ve=Ye;break}for(;++TeVe&&(Ve=Ye)}return Ve},e.extent=function(X,se){var Te=-1,qe=X.length,Ve,Ye,Pt;if(arguments.length===1){for(;++Te=Ye){Ve=Pt=Ye;break}for(;++TeYe&&(Ve=Ye),Pt=Ye){Ve=Pt=Ye;break}for(;++TeYe&&(Ve=Ye),Pt1)return Pt/(Xt-1)},e.deviation=function(){var X=e.variance.apply(this,arguments);return X&&Math.sqrt(X)};function v(X){return{left:function(se,Te,qe,Ve){for(arguments.length<3&&(qe=0),arguments.length<4&&(Ve=se.length);qe>>1;X(se[Ye],Te)<0?qe=Ye+1:Ve=Ye}return qe},right:function(se,Te,qe,Ve){for(arguments.length<3&&(qe=0),arguments.length<4&&(Ve=se.length);qe>>1;X(se[Ye],Te)>0?Ve=Ye:qe=Ye+1}return qe}}}var m=v(f);e.bisectLeft=m.left,e.bisect=e.bisectRight=m.right,e.bisector=function(X){return v(X.length===1?function(se,Te){return f(X(se),Te)}:X)},e.shuffle=function(X,se,Te){(qe=arguments.length)<3&&(Te=X.length,qe<2&&(se=0));for(var qe=Te-se,Ve,Ye;qe;)Ye=Math.random()*qe--|0,Ve=X[qe+se],X[qe+se]=X[Ye+se],X[Ye+se]=Ve;return X},e.permute=function(X,se){for(var Te=se.length,qe=new Array(Te);Te--;)qe[Te]=X[se[Te]];return qe},e.pairs=function(X){for(var se=0,Te=X.length-1,qe,Ve=X[0],Ye=new Array(Te<0?0:Te);se=0;)for(Pt=X[se],Te=Pt.length;--Te>=0;)Ye[--Ve]=Pt[Te];return Ye};var p=Math.abs;e.range=function(X,se,Te){if(arguments.length<3&&(Te=1,arguments.length<2&&(se=X,X=0)),(se-X)/Te===1/0)throw new Error("infinite range");var qe=[],Ve=k(p(Te)),Ye=-1,Pt;if(X*=Ve,se*=Ve,Te*=Ve,Te<0)for(;(Pt=X+Te*++Ye)>se;)qe.push(Pt/Ve);else for(;(Pt=X+Te*++Ye)=se.length)return Ve?Ve.call(X,Xt):qe?Xt.sort(qe):Xt;for(var pr=-1,Ur=Xt.length,zr=se[dr++],gi,xi,Wr,ii=new T,di;++pr=se.length)return ot;var dr=[],pr=Te[Xt++];return ot.forEach(function(Ur,zr){dr.push({key:Ur,values:Pt(zr,Xt)})}),pr?dr.sort(function(Ur,zr){return pr(Ur.key,zr.key)}):dr}return X.map=function(ot,Xt){return Ye(Xt,ot,0)},X.entries=function(ot){return Pt(Ye(e.map,ot,0),0)},X.key=function(ot){return se.push(ot),X},X.sortKeys=function(ot){return Te[se.length-1]=ot,X},X.sortValues=function(ot){return qe=ot,X},X.rollup=function(ot){return Ve=ot,X},X},e.set=function(X){var se=new V;if(X)for(var Te=0,qe=X.length;Te=0&&(qe=X.slice(Te+1),X=X.slice(0,Te)),X)return arguments.length<2?this[X].on(qe):this[X].on(qe,se);if(arguments.length===2){if(se==null)for(X in this)this.hasOwnProperty(X)&&this[X].on(qe,null);return this}};function ae(X){var se=[],Te=new T;function qe(){for(var Ve=se,Ye=-1,Pt=Ve.length,ot;++Ye=0&&(Te=X.slice(0,se))!=="xmlns"&&(X=X.slice(se+1)),He.hasOwnProperty(Te)?{space:He[Te],local:X}:X}},Le.attr=function(X,se){if(arguments.length<2){if(typeof X=="string"){var Te=this.node();return X=e.ns.qualify(X),X.local?Te.getAttributeNS(X.space,X.local):Te.getAttribute(X)}for(se in X)this.each(lt(se,X[se]));return this}return this.each(lt(X,se))};function lt(X,se){X=e.ns.qualify(X);function Te(){this.removeAttribute(X)}function qe(){this.removeAttributeNS(X.space,X.local)}function Ve(){this.setAttribute(X,se)}function Ye(){this.setAttributeNS(X.space,X.local,se)}function Pt(){var Xt=se.apply(this,arguments);Xt==null?this.removeAttribute(X):this.setAttribute(X,Xt)}function ot(){var Xt=se.apply(this,arguments);Xt==null?this.removeAttributeNS(X.space,X.local):this.setAttributeNS(X.space,X.local,Xt)}return se==null?X.local?qe:Te:typeof se=="function"?X.local?ot:Pt:X.local?Ye:Ve}function mt(X){return X.trim().replace(/\s+/g," ")}Le.classed=function(X,se){if(arguments.length<2){if(typeof X=="string"){var Te=this.node(),qe=(X=at(X)).length,Ve=-1;if(se=Te.classList){for(;++Ve=0;)(Ye=Te[qe])&&(Ve&&Ve!==Ye.nextSibling&&Ve.parentNode.insertBefore(Ye,Ve),Ve=Ye);return this},Le.sort=function(X){X=rt.apply(this,arguments);for(var se=-1,Te=this.length;++se=se&&(se=Ve+1);!(Xt=Pt[se])&&++se0&&(X=X.slice(0,Ve));var Pt=jt.get(X);Pt&&(X=Pt,Ye=mr);function ot(){var pr=this[qe];pr&&(this.removeEventListener(X,pr,pr.$),delete this[qe])}function Xt(){var pr=Ye(se,r(arguments));ot.call(this),this.addEventListener(X,this[qe]=pr,pr.$=Te),pr._=se}function dr(){var pr=new RegExp("^__on([^.]+)"+e.requote(X)+"$"),Ur;for(var zr in this)if(Ur=zr.match(pr)){var gi=this[zr];this.removeEventListener(Ur[1],gi,gi.$),delete this[zr]}}return Ve?se?Xt:ot:se?H:dr}var jt=e.map({mouseenter:"mouseover",mouseleave:"mouseout"});n&&jt.forEach(function(X){"on"+X in n&&jt.remove(X)});function or(X,se){return function(Te){var qe=e.event;e.event=Te,se[0]=this.__data__;try{X.apply(this,se)}finally{e.event=qe}}}function mr(X,se){var Te=or(X,se);return function(qe){var Ve=this,Ye=qe.relatedTarget;(!Ye||Ye!==Ve&&!(Ye.compareDocumentPosition(Ve)&8))&&Te.call(Ve,qe)}}var Ar,ei=0;function qr(X){var se=".dragsuppress-"+ ++ei,Te="click"+se,qe=e.select(a(X)).on("touchmove"+se,_e).on("dragstart"+se,_e).on("selectstart"+se,_e);if(Ar==null&&(Ar="onselectstart"in X?!1:j(X.style,"userSelect")),Ar){var Ve=i(X).style,Ye=Ve[Ar];Ve[Ar]="none"}return function(Pt){if(qe.on(se,null),Ar&&(Ve[Ar]=Ye),Pt){var ot=function(){qe.on(Te,null)};qe.on(Te,function(){_e(),ot()},!0),setTimeout(ot,0)}}}e.mouse=function(X){return gt(X,Ee())};var jr=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;function gt(X,se){se.changedTouches&&(se=se.changedTouches[0]);var Te=X.ownerSVGElement||X;if(Te.createSVGPoint){var qe=Te.createSVGPoint();if(jr<0){var Ve=a(X);if(Ve.scrollX||Ve.scrollY){Te=e.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var Ye=Te[0][0].getScreenCTM();jr=!(Ye.f||Ye.e),Te.remove()}}return jr?(qe.x=se.pageX,qe.y=se.pageY):(qe.x=se.clientX,qe.y=se.clientY),qe=qe.matrixTransform(X.getScreenCTM().inverse()),[qe.x,qe.y]}var Pt=X.getBoundingClientRect();return[se.clientX-Pt.left-X.clientLeft,se.clientY-Pt.top-X.clientTop]}e.touch=function(X,se,Te){if(arguments.length<3&&(Te=se,se=Ee().changedTouches),se){for(var qe=0,Ve=se.length,Ye;qe0?1:X<0?-1:0}function Ir(X,se,Te){return(se[0]-X[0])*(Te[1]-X[1])-(se[1]-X[1])*(Te[0]-X[0])}function Yr(X){return X>1?0:X<-1?et:Math.acos(X)}function _i(X){return X>1?Kt:X<-1?-Kt:Math.asin(X)}function Pi(X){return((X=Math.exp(X))-1/X)/2}function ai(X){return((X=Math.exp(X))+1/X)/2}function mi(X){return((X=Math.exp(2*X))-1)/(X+1)}function un(X){return(X=Math.sin(X/2))*X}var Fn=Math.SQRT2,An=2,Hn=4;e.interpolateZoom=function(X,se){var Te=X[0],qe=X[1],Ve=X[2],Ye=se[0],Pt=se[1],ot=se[2],Xt=Ye-Te,dr=Pt-qe,pr=Xt*Xt+dr*dr,Ur,zr;if(pr0&&(Un=Un.transition().duration(Pt)),Un.call(Ti.event)}function Ea(){ii&&ii.domain(Wr.range().map(function(Un){return(Un-X.x)/X.k}).map(Wr.invert)),Li&&Li.domain(di.range().map(function(Un){return(Un-X.y)/X.k}).map(di.invert))}function Ia(Un){ot++||Un({type:"zoomstart"})}function yo(Un){Ea(),Un({type:"zoom",scale:X.k,translate:[X.x,X.y]})}function Da(Un){--ot||(Un({type:"zoomend"}),Te=null)}function go(){var Un=this,ja=xi.of(Un,arguments),Fo=0,Uo=e.select(a(Un)).on(dr,bu).on(pr,dl),$s=Qr(e.mouse(Un)),Sl=qr(Un);fa.call(Un),Ia(ja);function bu(){Fo=1,Bn(e.mouse(Un),$s),yo(ja)}function dl(){Uo.on(dr,null).on(pr,null),Sl(Fo),Da(ja)}}function Is(){var Un=this,ja=xi.of(Un,arguments),Fo={},Uo=0,$s,Sl=".zoom-"+e.event.changedTouches[0].identifier,bu="touchmove"+Sl,dl="touchend"+Sl,Sc=[],Me=e.select(Un),bt=qr(Un);Lr(),Ia(ja),Me.on(Xt,null).on(zr,Lr);function Ot(){var Nr=e.touches(Un);return $s=X.k,Nr.forEach(function(vi){vi.identifier in Fo&&(Fo[vi.identifier]=Qr(vi))}),Nr}function Lr(){var Nr=e.event.target;e.select(Nr).on(bu,Vr).on(dl,Or),Sc.push(Nr);for(var vi=e.event.changedTouches,Ni=0,qi=vi.length;Ni1){var Qi=Si[0],ji=Si[1],oi=Qi[0]-ji[0],Tr=Qi[1]-ji[1];Uo=oi*oi+Tr*Tr}}function Vr(){var Nr=e.touches(Un),vi,Ni,qi,Si;fa.call(Un);for(var Vn=0,Qi=Nr.length;Vn1?1:se,Te=Te<0?0:Te>1?1:Te,Ve=Te<=.5?Te*(1+se):Te+se-Te*se,qe=2*Te-Ve;function Ye(ot){return ot>360?ot-=360:ot<0&&(ot+=360),ot<60?qe+(Ve-qe)*ot/60:ot<180?Ve:ot<240?qe+(Ve-qe)*(240-ot)/60:qe}function Pt(ot){return Math.round(Ye(ot)*255)}return new Wa(Pt(X+120),Pt(X),Pt(X-120))}e.hcl=ir;function ir(X,se,Te){return this instanceof ir?(this.h=+X,this.c=+se,void(this.l=+Te)):arguments.length<2?X instanceof ir?new ir(X.h,X.c,X.l):X instanceof ti?Mn(X.l,X.a,X.b):Mn((X=Gn((X=e.rgb(X)).r,X.g,X.b)).l,X.a,X.b):new ir(X,se,Te)}var wr=ir.prototype=new Jn;wr.brighter=function(X){return new ir(this.h,this.c,Math.min(100,this.l+$r*(arguments.length?X:1)))},wr.darker=function(X){return new ir(this.h,this.c,Math.max(0,this.l-$r*(arguments.length?X:1)))},wr.rgb=function(){return Xr(this.h,this.c,this.l).rgb()};function Xr(X,se,Te){return isNaN(X)&&(X=0),isNaN(se)&&(se=0),new ti(Te,Math.cos(X*=Qt)*se,Math.sin(X)*se)}e.lab=ti;function ti(X,se,Te){return this instanceof ti?(this.l=+X,this.a=+se,void(this.b=+Te)):arguments.length<2?X instanceof ti?new ti(X.l,X.a,X.b):X instanceof ir?Xr(X.h,X.c,X.l):Gn((X=Wa(X)).r,X.g,X.b):new ti(X,se,Te)}var $r=18,Ri=.95047,Zi=1,en=1.08883,fn=ti.prototype=new Jn;fn.brighter=function(X){return new ti(Math.min(100,this.l+$r*(arguments.length?X:1)),this.a,this.b)},fn.darker=function(X){return new ti(Math.max(0,this.l-$r*(arguments.length?X:1)),this.a,this.b)},fn.rgb=function(){return yn(this.l,this.a,this.b)};function yn(X,se,Te){var qe=(X+16)/116,Ve=qe+se/500,Ye=qe-Te/200;return Ve=Ba(Ve)*Ri,qe=Ba(qe)*Zi,Ye=Ba(Ye)*en,new Wa(ma(3.2404542*Ve-1.5371385*qe-.4985314*Ye),ma(-.969266*Ve+1.8760108*qe+.041556*Ye),ma(.0556434*Ve-.2040259*qe+1.0572252*Ye))}function Mn(X,se,Te){return X>0?new ir(Math.atan2(Te,se)*Mr,Math.sqrt(se*se+Te*Te),X):new ir(NaN,NaN,X)}function Ba(X){return X>.206893034?X*X*X:(X-4/29)/7.787037}function ua(X){return X>.008856?Math.pow(X,1/3):7.787037*X+4/29}function ma(X){return Math.round(255*(X<=.00304?12.92*X:1.055*Math.pow(X,1/2.4)-.055))}e.rgb=Wa;function Wa(X,se,Te){return this instanceof Wa?(this.r=~~X,this.g=~~se,void(this.b=~~Te)):arguments.length<2?X instanceof Wa?new Wa(X.r,X.g,X.b):Ha(""+X,Wa,tr):new Wa(X,se,Te)}function Fa(X){return new Wa(X>>16,X>>8&255,X&255)}function Xo(X){return Fa(X)+""}var da=Wa.prototype=new Jn;da.brighter=function(X){X=Math.pow(.7,arguments.length?X:1);var se=this.r,Te=this.g,qe=this.b,Ve=30;return!se&&!Te&&!qe?new Wa(Ve,Ve,Ve):(se&&se>4,qe=qe>>4|qe,Ve=Xt&240,Ve=Ve>>4|Ve,Ye=Xt&15,Ye=Ye<<4|Ye):X.length===7&&(qe=(Xt&16711680)>>16,Ve=(Xt&65280)>>8,Ye=Xt&255)),se(qe,Ve,Ye))}function vo(X,se,Te){var qe=Math.min(X/=255,se/=255,Te/=255),Ve=Math.max(X,se,Te),Ye=Ve-qe,Pt,ot,Xt=(Ve+qe)/2;return Ye?(ot=Xt<.5?Ye/(Ve+qe):Ye/(2-Ve-qe),X==Ve?Pt=(se-Te)/Ye+(se0&&Xt<1?0:Pt),new Gt(Pt,ot,Xt)}function Gn(X,se,Te){X=Ct(X),se=Ct(se),Te=Ct(Te);var qe=ua((.4124564*X+.3575761*se+.1804375*Te)/Ri),Ve=ua((.2126729*X+.7151522*se+.072175*Te)/Zi),Ye=ua((.0193339*X+.119192*se+.9503041*Te)/en);return ti(116*Ve-16,500*(qe-Ve),200*(Ve-Ye))}function Ct(X){return(X/=255)<=.04045?X/12.92:Math.pow((X+.055)/1.055,2.4)}function Sr(X){var se=parseFloat(X);return X.charAt(X.length-1)==="%"?Math.round(se*2.55):se}var Jr=e.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Jr.forEach(function(X,se){Jr.set(X,Fa(se))});function hi(X){return typeof X=="function"?X:function(){return X}}e.functor=hi,e.xhr=hn(G);function hn(X){return function(se,Te,qe){return arguments.length===2&&typeof Te=="function"&&(qe=Te,Te=null),Sn(se,Te,X,qe)}}function Sn(X,se,Te,qe){var Ve={},Ye=e.dispatch("beforesend","progress","load","error"),Pt={},ot=new XMLHttpRequest,Xt=null;self.XDomainRequest&&!("withCredentials"in ot)&&/^(http(s)?:)?\/\//.test(X)&&(ot=new XDomainRequest),"onload"in ot?ot.onload=ot.onerror=dr:ot.onreadystatechange=function(){ot.readyState>3&&dr()};function dr(){var pr=ot.status,Ur;if(!pr&&ki(ot)||pr>=200&&pr<300||pr===304){try{Ur=Te.call(Ve,ot)}catch(zr){Ye.error.call(Ve,zr);return}Ye.load.call(Ve,Ur)}else Ye.error.call(Ve,ot)}return ot.onprogress=function(pr){var Ur=e.event;e.event=pr;try{Ye.progress.call(Ve,ot)}finally{e.event=Ur}},Ve.header=function(pr,Ur){return pr=(pr+"").toLowerCase(),arguments.length<2?Pt[pr]:(Ur==null?delete Pt[pr]:Pt[pr]=Ur+"",Ve)},Ve.mimeType=function(pr){return arguments.length?(se=pr==null?null:pr+"",Ve):se},Ve.responseType=function(pr){return arguments.length?(Xt=pr,Ve):Xt},Ve.response=function(pr){return Te=pr,Ve},["get","post"].forEach(function(pr){Ve[pr]=function(){return Ve.send.apply(Ve,[pr].concat(r(arguments)))}}),Ve.send=function(pr,Ur,zr){if(arguments.length===2&&typeof Ur=="function"&&(zr=Ur,Ur=null),ot.open(pr,X,!0),se!=null&&!("accept"in Pt)&&(Pt.accept=se+",*/*"),ot.setRequestHeader)for(var gi in Pt)ot.setRequestHeader(gi,Pt[gi]);return se!=null&&ot.overrideMimeType&&ot.overrideMimeType(se),Xt!=null&&(ot.responseType=Xt),zr!=null&&Ve.on("error",zr).on("load",function(xi){zr(null,xi)}),Ye.beforesend.call(Ve,ot),ot.send(Ur==null?null:Ur),Ve},Ve.abort=function(){return ot.abort(),Ve},e.rebind(Ve,Ye,"on"),qe==null?Ve:Ve.get(En(qe))}function En(X){return X.length===1?function(se,Te){X(se==null?Te:null)}:X}function ki(X){var se=X.responseType;return se&&se!=="text"?X.response:X.responseText}e.dsv=function(X,se){var Te=new RegExp('["'+X+` +]`),qe=X.charCodeAt(0);function Ve(dr,pr,Ur){arguments.length<3&&(Ur=pr,pr=null);var zr=Sn(dr,se,pr==null?Ye:Pt(pr),Ur);return zr.row=function(gi){return arguments.length?zr.response((pr=gi)==null?Ye:Pt(gi)):pr},zr}function Ye(dr){return Ve.parse(dr.responseText)}function Pt(dr){return function(pr){return Ve.parse(pr.responseText,dr)}}Ve.parse=function(dr,pr){var Ur;return Ve.parseRows(dr,function(zr,gi){if(Ur)return Ur(zr,gi-1);var xi=function(Wr){for(var ii={},di=zr.length,Li=0;Li=xi)return zr;if(Li)return Li=!1,Ur;var Pn=Wr;if(dr.charCodeAt(Pn)===34){for(var kn=Pn;kn++24?(isFinite(se)&&(clearTimeout(Ma),Ma=setTimeout(po,se)),ea=0):(ea=1,_o(po))}e.timer.flush=function(){Lo(),ko()};function Lo(){for(var X=Date.now(),se=_n;se;)X>=se.t&&se.c(X-se.t)&&(se.c=null),se=se.n;return X}function ko(){for(var X,se=_n,Te=1/0;se;)se.c?(se.t=0;--ot)Wr.push(Ve[dr[Ur[ot]][2]]);for(ot=+gi;ot1&&Ir(X[Te[qe-2]],X[Te[qe-1]],X[Ve])<=0;)--qe;Te[qe++]=Ve}return Te.slice(0,qe)}function ul(X,se){return X[0]-se[0]||X[1]-se[1]}e.geom.polygon=function(X){return re(X,zl),X};var zl=e.geom.polygon.prototype=[];zl.area=function(){for(var X=-1,se=this.length,Te,qe=this[se-1],Ve=0;++XJe)ot=ot.L;else if(Pt=se-xo(ot,Te),Pt>Je){if(!ot.R){qe=ot;break}ot=ot.R}else{Ye>-Je?(qe=ot.P,Ve=ot):Pt>-Je?(qe=ot,Ve=ot.N):qe=Ve=ot;break}var Xt=bs(X);if(zs.insert(qe,Xt),!(!qe&&!Ve)){if(qe===Ve){qo(qe),Ve=bs(qe.site),zs.insert(Xt,Ve),Xt.edge=Ve.edge=nf(qe.site,Xt.site),oa(qe),oa(Ve);return}if(!Ve){Xt.edge=nf(qe.site,Xt.site);return}qo(qe),qo(Ve);var dr=qe.site,pr=dr.x,Ur=dr.y,zr=X.x-pr,gi=X.y-Ur,xi=Ve.site,Wr=xi.x-pr,ii=xi.y-Ur,di=2*(zr*ii-gi*Wr),Li=zr*zr+gi*gi,Ti=Wr*Wr+ii*ii,Qr={x:(ii*Li-gi*Ti)/di+pr,y:(zr*Ti-Wr*Li)/di+Ur};pl(Ve.edge,dr,xi,Qr),Xt.edge=nf(dr,X,null,Qr),Ve.edge=nf(X,xi,null,Qr),oa(qe),oa(Ve)}}function ql(X,se){var Te=X.site,qe=Te.x,Ve=Te.y,Ye=Ve-se;if(!Ye)return qe;var Pt=X.P;if(!Pt)return-1/0;Te=Pt.site;var ot=Te.x,Xt=Te.y,dr=Xt-se;if(!dr)return ot;var pr=ot-qe,Ur=1/Ye-1/dr,zr=pr/dr;return Ur?(-zr+Math.sqrt(zr*zr-2*Ur*(pr*pr/(-2*dr)-Xt+dr/2+Ve-Ye/2)))/Ur+qe:(qe+ot)/2}function xo(X,se){var Te=X.N;if(Te)return ql(Te,se);var qe=X.site;return qe.y===se?qe.x:1/0}function Kl(X){this.site=X,this.edges=[]}Kl.prototype.prepare=function(){for(var X=this.edges,se=X.length,Te;se--;)Te=X[se].edge,(!Te.b||!Te.a)&&X.splice(se,1);return X.sort(Hl),X.length};function Ns(X){for(var se=X[0][0],Te=X[1][0],qe=X[0][1],Ve=X[1][1],Ye,Pt,ot,Xt,dr=Ks,pr=dr.length,Ur,zr,gi,xi,Wr,ii;pr--;)if(Ur=dr[pr],!(!Ur||!Ur.prepare()))for(gi=Ur.edges,xi=gi.length,zr=0;zrJe||p(Xt-Pt)>Je)&&(gi.splice(zr,0,new Zc(Vf(Ur.site,ii,p(ot-se)Je?{x:se,y:p(Ye-se)Je?{x:p(Pt-Ve)Je?{x:Te,y:p(Ye-Te)Je?{x:p(Pt-qe)=-We)){var zr=Xt*Xt+dr*dr,gi=pr*pr+ii*ii,xi=(ii*zr-dr*gi)/Ur,Wr=(Xt*gi-pr*zr)/Ur,ii=Wr+ot,di=Su.pop()||new ac;di.arc=X,di.site=Ve,di.x=xi+Pt,di.y=ii+Math.sqrt(xi*xi+Wr*Wr),di.cy=ii,X.circle=di;for(var Li=null,Ti=Yl._;Ti;)if(di.y0)){if(Wr/=gi,gi<0){if(Wr0){if(Wr>zr)return;Wr>Ur&&(Ur=Wr)}if(Wr=Te-ot,!(!gi&&Wr<0)){if(Wr/=gi,gi<0){if(Wr>zr)return;Wr>Ur&&(Ur=Wr)}else if(gi>0){if(Wr0)){if(Wr/=xi,xi<0){if(Wr0){if(Wr>zr)return;Wr>Ur&&(Ur=Wr)}if(Wr=qe-Xt,!(!xi&&Wr<0)){if(Wr/=xi,xi<0){if(Wr>zr)return;Wr>Ur&&(Ur=Wr)}else if(xi>0){if(Wr0&&(Ve.a={x:ot+Ur*gi,y:Xt+Ur*xi}),zr<1&&(Ve.b={x:ot+zr*gi,y:Xt+zr*xi}),Ve}}}}}}function Ol(X){for(var se=cl,Te=Oo(X[0][0],X[0][1],X[1][0],X[1][1]),qe=se.length,Ve;qe--;)Ve=se[qe],(!Pc(Ve,X)||!Te(Ve)||p(Ve.a.x-Ve.b.x)=Ye)return;if(pr>zr){if(!qe)qe={x:xi,y:Pt};else if(qe.y>=ot)return;Te={x:xi,y:ot}}else{if(!qe)qe={x:xi,y:ot};else if(qe.y1)if(pr>zr){if(!qe)qe={x:(Pt-di)/ii,y:Pt};else if(qe.y>=ot)return;Te={x:(ot-di)/ii,y:ot}}else{if(!qe)qe={x:(ot-di)/ii,y:ot};else if(qe.y=Ye)return;Te={x:Ye,y:ii*Ye+di}}else{if(!qe)qe={x:Ye,y:ii*Ye+di};else if(qe.x=pr&&di.x<=zr&&di.y>=Ur&&di.y<=gi?[[pr,gi],[zr,gi],[zr,Ur],[pr,Ur]]:[];Li.point=Xt[Wr]}),dr}function ot(Xt){return Xt.map(function(dr,pr){return{x:Math.round(qe(dr,pr)/Je)*Je,y:Math.round(Ve(dr,pr)/Je)*Je,i:pr}})}return Pt.links=function(Xt){return sc(ot(Xt)).edges.filter(function(dr){return dr.l&&dr.r}).map(function(dr){return{source:Xt[dr.l.i],target:Xt[dr.r.i]}})},Pt.triangles=function(Xt){var dr=[];return sc(ot(Xt)).cells.forEach(function(pr,Ur){for(var zr=pr.site,gi=pr.edges.sort(Hl),xi=-1,Wr=gi.length,ii,di,Li=gi[Wr-1].edge,Ti=Li.l===zr?Li.r:Li.l;++xiTi&&(Ti=pr.x),pr.y>Qr&&(Qr=pr.y),gi.push(pr.x),xi.push(pr.y);else for(Wr=0;WrTi&&(Ti=Pn),kn>Qr&&(Qr=kn),gi.push(Pn),xi.push(kn)}var Bn=Ti-di,na=Qr-Li;Bn>na?Qr=Li+Bn:Ti=di+na;function Ea(Da,go,Is,Ms,Xs,Un,ja,Fo){if(!(isNaN(Is)||isNaN(Ms)))if(Da.leaf){var Uo=Da.x,$s=Da.y;if(Uo!=null)if(p(Uo-Is)+p($s-Ms)<.01)Ia(Da,go,Is,Ms,Xs,Un,ja,Fo);else{var Sl=Da.point;Da.x=Da.y=Da.point=null,Ia(Da,Sl,Uo,$s,Xs,Un,ja,Fo),Ia(Da,go,Is,Ms,Xs,Un,ja,Fo)}else Da.x=Is,Da.y=Ms,Da.point=go}else Ia(Da,go,Is,Ms,Xs,Un,ja,Fo)}function Ia(Da,go,Is,Ms,Xs,Un,ja,Fo){var Uo=(Xs+ja)*.5,$s=(Un+Fo)*.5,Sl=Is>=Uo,bu=Ms>=$s,dl=bu<<1|Sl;Da.leaf=!1,Da=Da.nodes[dl]||(Da.nodes[dl]=$l()),Sl?Xs=Uo:ja=Uo,bu?Un=$s:Fo=$s,Ea(Da,go,Is,Ms,Xs,Un,ja,Fo)}var yo=$l();if(yo.add=function(Da){Ea(yo,Da,+Ur(Da,++Wr),+zr(Da,Wr),di,Li,Ti,Qr)},yo.visit=function(Da){fl(Da,yo,di,Li,Ti,Qr)},yo.find=function(Da){return lc(yo,Da[0],Da[1],di,Li,Ti,Qr)},Wr=-1,se==null){for(;++WrYe||zr>Pt||gi=Pn,na=Te>=kn,Ea=na<<1|Bn,Ia=Ea+4;EaTe&&(Ye=se.slice(Te,Ye),ot[Pt]?ot[Pt]+=Ye:ot[++Pt]=Ye),(qe=qe[0])===(Ve=Ve[0])?ot[Pt]?ot[Pt]+=Ve:ot[++Pt]=Ve:(ot[++Pt]=null,Xt.push({i:Pt,x:Hs(qe,Ve)})),Te=uc.lastIndex;return Te=0&&!(qe=e.interpolators[Te](X,se)););return qe}e.interpolators=[function(X,se){var Te=typeof se;return(Te==="string"?Jr.has(se.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(se)?Fu:Go:se instanceof Jn?Fu:Array.isArray(se)?Gu:Te==="object"&&isNaN(se)?Es:Hs)(X,se)}],e.interpolateArray=Gu;function Gu(X,se){var Te=[],qe=[],Ve=X.length,Ye=se.length,Pt=Math.min(X.length,se.length),ot;for(ot=0;ot=0?X.slice(0,se):X,qe=se>=0?X.slice(se+1):"in";return Te=od.get(Te)||Os,qe=Po.get(qe)||G,sd(qe(Te.apply(null,t.call(arguments,1))))};function sd(X){return function(se){return se<=0?0:se>=1?1:X(se)}}function Ko(X){return function(se){return 1-X(1-se)}}function Pa(X){return function(se){return .5*(se<.5?X(2*se):2-X(2-2*se))}}function of(X){return X*X}function Hu(X){return X*X*X}function bl(X){if(X<=0)return 0;if(X>=1)return 1;var se=X*X,Te=se*X;return 4*(X<.5?Te:3*(X-se)+Te-.75)}function Hf(X){return function(se){return Math.pow(se,X)}}function Ic(X){return 1-Math.cos(X*Kt)}function yf(X){return Math.pow(2,10*(X-1))}function Bl(X){return 1-Math.sqrt(1-X*X)}function Ah(X,se){var Te;return arguments.length<2&&(se=.45),arguments.length?Te=se/xt*Math.asin(1/X):(X=1,Te=se/4),function(qe){return 1+X*Math.pow(2,-10*qe)*Math.sin((qe-Te)*xt/se)}}function Qf(X){return X||(X=1.70158),function(se){return se*se*((X+1)*se-X)}}function _f(X){return X<1/2.75?7.5625*X*X:X<2/2.75?7.5625*(X-=1.5/2.75)*X+.75:X<2.5/2.75?7.5625*(X-=2.25/2.75)*X+.9375:7.5625*(X-=2.625/2.75)*X+.984375}e.interpolateHcl=Yc;function Yc(X,se){X=e.hcl(X),se=e.hcl(se);var Te=X.h,qe=X.c,Ve=X.l,Ye=se.h-Te,Pt=se.c-qe,ot=se.l-Ve;return isNaN(Pt)&&(Pt=0,qe=isNaN(qe)?se.c:qe),isNaN(Ye)?(Ye=0,Te=isNaN(Te)?se.h:Te):Ye>180?Ye-=360:Ye<-180&&(Ye+=360),function(Xt){return Xr(Te+Ye*Xt,qe+Pt*Xt,Ve+ot*Xt)+""}}e.interpolateHsl=eh;function eh(X,se){X=e.hsl(X),se=e.hsl(se);var Te=X.h,qe=X.s,Ve=X.l,Ye=se.h-Te,Pt=se.s-qe,ot=se.l-Ve;return isNaN(Pt)&&(Pt=0,qe=isNaN(qe)?se.s:qe),isNaN(Ye)?(Ye=0,Te=isNaN(Te)?se.h:Te):Ye>180?Ye-=360:Ye<-180&&(Ye+=360),function(Xt){return tr(Te+Ye*Xt,qe+Pt*Xt,Ve+ot*Xt)+""}}e.interpolateLab=th;function th(X,se){X=e.lab(X),se=e.lab(se);var Te=X.l,qe=X.a,Ve=X.b,Ye=se.l-Te,Pt=se.a-qe,ot=se.b-Ve;return function(Xt){return yn(Te+Ye*Xt,qe+Pt*Xt,Ve+ot*Xt)+""}}e.interpolateRound=ju;function ju(X,se){return se-=X,function(Te){return Math.round(X+se*Te)}}e.transform=function(X){var se=n.createElementNS(e.ns.prefix.svg,"g");return(e.transform=function(Te){if(Te!=null){se.setAttribute("transform",Te);var qe=se.transform.baseVal.consolidate()}return new jf(qe?qe.matrix:Kc)})(X)};function jf(X){var se=[X.a,X.b],Te=[X.c,X.d],qe=sf(se),Ve=cc(se,Te),Ye=sf(Nl(Te,se,-Ve))||0;se[0]*Te[1]180?se+=360:se-X>180&&(X+=360),qe.push({i:Te.push(Rc(Te)+"rotate(",null,")")-2,x:Hs(X,se)})):se&&Te.push(Rc(Te)+"rotate("+se+")")}function Wh(X,se,Te,qe){X!==se?qe.push({i:Te.push(Rc(Te)+"skewX(",null,")")-2,x:Hs(X,se)}):se&&Te.push(Rc(Te)+"skewX("+se+")")}function rh(X,se,Te,qe){if(X[0]!==se[0]||X[1]!==se[1]){var Ve=Te.push(Rc(Te)+"scale(",null,",",null,")");qe.push({i:Ve-4,x:Hs(X[0],se[0])},{i:Ve-2,x:Hs(X[1],se[1])})}else(se[0]!==1||se[1]!==1)&&Te.push(Rc(Te)+"scale("+se+")")}function lf(X,se){var Te=[],qe=[];return X=e.transform(X),se=e.transform(se),gs(X.translate,se.translate,Te,qe),Wf(X.rotate,se.rotate,Te,qe),Wh(X.skew,se.skew,Te,qe),rh(X.scale,se.scale,Te,qe),X=se=null,function(Ve){for(var Ye=-1,Pt=qe.length,ot;++Ye0?Ye=Qr:(Te.c=null,Te.t=NaN,Te=null,se.end({type:"end",alpha:Ye=0})):Qr>0&&(se.start({type:"start",alpha:Ye=Qr}),Te=No(X.tick)),X):Ye},X.start=function(){var Qr,Pn=gi.length,kn=xi.length,Bn=qe[0],na=qe[1],Ea,Ia;for(Qr=0;Qr=0;)Ye.push(pr=dr[Xt]),pr.parent=ot,pr.depth=ot.depth+1;Te&&(ot.value=0),ot.children=dr}else Te&&(ot.value=+Te.call(qe,ot,ot.depth)||0),delete ot.children;return wc(Ve,function(Ur){var zr,gi;X&&(zr=Ur.children)&&zr.sort(X),Te&&(gi=Ur.parent)&&(gi.value+=Ur.value)}),Pt}return qe.sort=function(Ve){return arguments.length?(X=Ve,qe):X},qe.children=function(Ve){return arguments.length?(se=Ve,qe):se},qe.value=function(Ve){return arguments.length?(Te=Ve,qe):Te},qe.revalue=function(Ve){return Te&&(Fc(Ve,function(Ye){Ye.children&&(Ye.value=0)}),wc(Ve,function(Ye){var Pt;Ye.children||(Ye.value=+Te.call(qe,Ye,Ye.depth)||0),(Pt=Ye.parent)&&(Pt.value+=Ye.value)})),Ve},qe};function zu(X,se){return e.rebind(X,se,"sort","children","value"),X.nodes=X,X.links=qu,X}function Fc(X,se){for(var Te=[X];(X=Te.pop())!=null;)if(se(X),(Ve=X.children)&&(qe=Ve.length))for(var qe,Ve;--qe>=0;)Te.push(Ve[qe])}function wc(X,se){for(var Te=[X],qe=[];(X=Te.pop())!=null;)if(qe.push(X),(Pt=X.children)&&(Ye=Pt.length))for(var Ve=-1,Ye,Pt;++VeVe&&(Ve=ot),qe.push(ot)}for(Pt=0;Ptqe&&(Te=se,qe=Ve);return Te}function Us(X){return X.reduce(wf,0)}function wf(X,se){return X+se[1]}e.layout.histogram=function(){var X=!0,se=Number,Te=Rf,qe=zc;function Ve(Ye,zr){for(var ot=[],Xt=Ye.map(se,this),dr=Te.call(this,Xt,zr),pr=qe.call(this,dr,Xt,zr),Ur,zr=-1,gi=Xt.length,xi=pr.length-1,Wr=X?1:1/gi,ii;++zr0)for(zr=-1;++zr=dr[0]&&ii<=dr[1]&&(Ur=ot[e.bisect(pr,ii,1,xi)-1],Ur.y+=Wr,Ur.push(Ye[zr]));return ot}return Ve.value=function(Ye){return arguments.length?(se=Ye,Ve):se},Ve.range=function(Ye){return arguments.length?(Te=hi(Ye),Ve):Te},Ve.bins=function(Ye){return arguments.length?(qe=typeof Ye=="number"?function(Pt){return Wu(Pt,Ye)}:hi(Ye),Ve):qe},Ve.frequency=function(Ye){return arguments.length?(X=!!Ye,Ve):X},Ve};function zc(X,se){return Wu(X,Math.ceil(Math.log(se.length)/Math.LN2+1))}function Wu(X,se){for(var Te=-1,qe=+X[0],Ve=(X[1]-qe)/se,Ye=[];++Te<=se;)Ye[Te]=Ve*Te+qe;return Ye}function Rf(X){return[e.min(X),e.max(X)]}e.layout.pack=function(){var X=e.layout.hierarchy().sort(Xu),se=0,Te=[1,1],qe;function Ve(Ye,Pt){var ot=X.call(this,Ye,Pt),Xt=ot[0],dr=Te[0],pr=Te[1],Ur=qe==null?Math.sqrt:typeof qe=="function"?qe:function(){return qe};if(Xt.x=Xt.y=0,wc(Xt,function(gi){gi.r=+Ur(gi.value)}),wc(Xt,ah),se){var zr=se*(qe?1:Math.max(2*Xt.r/dr,2*Xt.r/pr))/2;wc(Xt,function(gi){gi.r+=zr}),wc(Xt,ah),wc(Xt,function(gi){gi.r-=zr})}return Tc(Xt,dr/2,pr/2,qe?1:1/Math.max(2*Xt.r/dr,2*Xt.r/pr)),ot}return Ve.size=function(Ye){return arguments.length?(Te=Ye,Ve):Te},Ve.radius=function(Ye){return arguments.length?(qe=Ye==null||typeof Ye=="function"?Ye:+Ye,Ve):qe},Ve.padding=function(Ye){return arguments.length?(se=+Ye,Ve):se},zu(Ve,X)};function Xu(X,se){return X.value-se.value}function cf(X,se){var Te=X._pack_next;X._pack_next=se,se._pack_prev=X,se._pack_next=Te,Te._pack_prev=se}function Zf(X,se){X._pack_next=se,se._pack_prev=X}function Wl(X,se){var Te=se.x-X.x,qe=se.y-X.y,Ve=X.r+se.r;return .999*Ve*Ve>Te*Te+qe*qe}function ah(X){if(!(se=X.children)||!(zr=se.length))return;var se,Te=1/0,qe=-1/0,Ve=1/0,Ye=-1/0,Pt,ot,Xt,dr,pr,Ur,zr;function gi(Qr){Te=Math.min(Qr.x-Qr.r,Te),qe=Math.max(Qr.x+Qr.r,qe),Ve=Math.min(Qr.y-Qr.r,Ve),Ye=Math.max(Qr.y+Qr.r,Ye)}if(se.forEach(Zu),Pt=se[0],Pt.x=-Pt.r,Pt.y=0,gi(Pt),zr>1&&(ot=se[1],ot.x=ot.r,ot.y=0,gi(ot),zr>2))for(Xt=se[2],wl(Pt,ot,Xt),gi(Xt),cf(Pt,Xt),Pt._pack_prev=Xt,cf(Xt,ot),ot=Pt._pack_next,dr=3;drii.x&&(ii=Pn),Pn.depth>di.depth&&(di=Pn)});var Li=se(Wr,ii)/2-Wr.x,Ti=Te[0]/(ii.x+se(ii,Wr)/2+Li),Qr=Te[1]/(di.depth||1);Fc(gi,function(Pn){Pn.x=(Pn.x+Li)*Ti,Pn.y=Pn.depth*Qr})}return zr}function Ye(pr){for(var Ur={A:null,children:[pr]},zr=[Ur],gi;(gi=zr.pop())!=null;)for(var xi=gi.children,Wr,ii=0,di=xi.length;ii0&&(fc(kt(Wr,pr,zr),pr,Pn),di+=Pn,Li+=Pn),Ti+=Wr.m,di+=gi.m,Qr+=ii.m,Li+=xi.m;Wr&&!ff(xi)&&(xi.t=Wr,xi.m+=Ti-Li),gi&&!Oc(ii)&&(ii.t=gi,ii.m+=di-Qr,zr=pr)}return zr}function dr(pr){pr.x*=Te[0],pr.y=pr.depth*Te[1]}return Ve.separation=function(pr){return arguments.length?(se=pr,Ve):se},Ve.size=function(pr){return arguments.length?(qe=(Te=pr)==null?dr:null,Ve):qe?null:Te},Ve.nodeSize=function(pr){return arguments.length?(qe=(Te=pr)==null?null:dr,Ve):qe?Te:null},zu(Ve,X)};function vu(X,se){return X.parent==se.parent?1:2}function Oc(X){var se=X.children;return se.length?se[0]:X.t}function ff(X){var se=X.children,Te;return(Te=se.length)?se[Te-1]:X.t}function fc(X,se,Te){var qe=Te/(se.i-X.i);se.c-=qe,se.s+=Te,X.c+=qe,se.z+=Te,se.m+=Te}function Bc(X){for(var se=0,Te=0,qe=X.children,Ve=qe.length,Ye;--Ve>=0;)Ye=qe[Ve],Ye.z+=se,Ye.m+=se,se+=Ye.s+(Te+=Ye.c)}function kt(X,se,Te){return X.a.parent===se.parent?X.a:Te}e.layout.cluster=function(){var X=e.layout.hierarchy().sort(null).value(null),se=vu,Te=[1,1],qe=!1;function Ve(Ye,Pt){var ot=X.call(this,Ye,Pt),Xt=ot[0],dr,pr=0;wc(Xt,function(Wr){var ii=Wr.children;ii&&ii.length?(Wr.x=Er(ii),Wr.y=Zt(ii)):(Wr.x=dr?pr+=se(Wr,dr):0,Wr.y=0,dr=Wr)});var Ur=xr(Xt),zr=Kr(Xt),gi=Ur.x-se(Ur,zr)/2,xi=zr.x+se(zr,Ur)/2;return wc(Xt,qe?function(Wr){Wr.x=(Wr.x-Xt.x)*Te[0],Wr.y=(Xt.y-Wr.y)*Te[1]}:function(Wr){Wr.x=(Wr.x-gi)/(xi-gi)*Te[0],Wr.y=(1-(Xt.y?Wr.y/Xt.y:1))*Te[1]}),ot}return Ve.separation=function(Ye){return arguments.length?(se=Ye,Ve):se},Ve.size=function(Ye){return arguments.length?(qe=(Te=Ye)==null,Ve):qe?null:Te},Ve.nodeSize=function(Ye){return arguments.length?(qe=(Te=Ye)!=null,Ve):qe?Te:null},zu(Ve,X)};function Zt(X){return 1+e.max(X,function(se){return se.y})}function Er(X){return X.reduce(function(se,Te){return se+Te.x},0)/X.length}function xr(X){var se=X.children;return se&&se.length?xr(se[0]):X}function Kr(X){var se=X.children,Te;return se&&(Te=se.length)?Kr(se[Te-1]):X}e.layout.treemap=function(){var X=e.layout.hierarchy(),se=Math.round,Te=[1,1],qe=null,Ve=Mi,Ye=!1,Pt,ot="squarify",Xt=.5*(1+Math.sqrt(5));function dr(Wr,ii){for(var di=-1,Li=Wr.length,Ti,Qr;++di0;)Li.push(Qr=Ti[na-1]),Li.area+=Qr.area,ot!=="squarify"||(kn=zr(Li,Bn))<=Pn?(Ti.pop(),Pn=kn):(Li.area-=Li.pop().area,gi(Li,Bn,di,!1),Bn=Math.min(di.dx,di.dy),Li.length=Li.area=0,Pn=1/0);Li.length&&(gi(Li,Bn,di,!0),Li.length=Li.area=0),ii.forEach(pr)}}function Ur(Wr){var ii=Wr.children;if(ii&&ii.length){var di=Ve(Wr),Li=ii.slice(),Ti,Qr=[];for(dr(Li,di.dx*di.dy/Wr.value),Qr.area=0;Ti=Li.pop();)Qr.push(Ti),Qr.area+=Ti.area,Ti.z!=null&&(gi(Qr,Ti.z?di.dx:di.dy,di,!Li.length),Qr.length=Qr.area=0);ii.forEach(Ur)}}function zr(Wr,ii){for(var di=Wr.area,Li,Ti=0,Qr=1/0,Pn=-1,kn=Wr.length;++PnTi&&(Ti=Li));return di*=di,ii*=ii,di?Math.max(ii*Ti*Xt/di,di/(ii*Qr*Xt)):1/0}function gi(Wr,ii,di,Li){var Ti=-1,Qr=Wr.length,Pn=di.x,kn=di.y,Bn=ii?se(Wr.area/ii):0,na;if(ii==di.dx){for((Li||Bn>di.dy)&&(Bn=di.dy);++Tidi.dx)&&(Bn=di.dx);++Ti1);return X+se*qe*Math.sqrt(-2*Math.log(Ye)/Ye)}},logNormal:function(){var X=e.random.normal.apply(e,arguments);return function(){return Math.exp(X())}},bates:function(X){var se=e.random.irwinHall(X);return function(){return se()/X}},irwinHall:function(X){return function(){for(var se=0,Te=0;Te2?Fi:On,dr=qe?Mu:Sh;return Ve=Xt(X,se,dr,Te),Ye=Xt(se,X,dr,xl),ot}function ot(Xt){return Ve(Xt)}return ot.invert=function(Xt){return Ye(Xt)},ot.domain=function(Xt){return arguments.length?(X=Xt.map(Number),Pt()):X},ot.range=function(Xt){return arguments.length?(se=Xt,Pt()):se},ot.rangeRound=function(Xt){return ot.range(Xt).interpolate(ju)},ot.clamp=function(Xt){return arguments.length?(qe=Xt,Pt()):qe},ot.interpolate=function(Xt){return arguments.length?(Te=Xt,Pt()):Te},ot.ticks=function(Xt){return Ua(X,Xt)},ot.tickFormat=function(Xt,dr){return d3_scale_linearTickFormat(X,Xt,dr)},ot.nice=function(Xt){return Ra(X,Xt),Pt()},ot.copy=function(){return ta(X,se,Te,qe)},Pt()}function Ca(X,se){return e.rebind(X,se,"range","rangeRound","interpolate","clamp")}function Ra(X,se){return Yi(X,$i(La(X,se)[2])),Yi(X,$i(La(X,se)[2])),X}function La(X,se){se==null&&(se=10);var Te=dn(X),qe=Te[1]-Te[0],Ve=Math.pow(10,Math.floor(Math.log(qe/se)/Math.LN10)),Ye=se/qe*Ve;return Ye<=.15?Ve*=10:Ye<=.35?Ve*=5:Ye<=.75&&(Ve*=2),Te[0]=Math.ceil(Te[0]/Ve)*Ve,Te[1]=Math.floor(Te[1]/Ve)*Ve+Ve*.5,Te[2]=Ve,Te}function Ua(X,se){return e.range.apply(e,La(X,se))}var Zn={s:1,g:1,p:1,r:1,e:1};function Dn(X){return-Math.floor(Math.log(X)/Math.LN10+.01)}function Ka(X,se){var Te=Dn(se[2]);return X in Zn?Math.abs(Te-Dn(Math.max(p(se[0]),p(se[1]))))+ +(X!=="e"):Te-(X==="%")*2}e.scale.log=function(){return bo(e.scale.linear().domain([0,1]),10,!0,[1,10])};function bo(X,se,Te,qe){function Ve(ot){return(Te?Math.log(ot<0?0:ot):-Math.log(ot>0?0:-ot))/Math.log(se)}function Ye(ot){return Te?Math.pow(se,ot):-Math.pow(se,-ot)}function Pt(ot){return X(Ve(ot))}return Pt.invert=function(ot){return Ye(X.invert(ot))},Pt.domain=function(ot){return arguments.length?(Te=ot[0]>=0,X.domain((qe=ot.map(Number)).map(Ve)),Pt):qe},Pt.base=function(ot){return arguments.length?(se=+ot,X.domain(qe.map(Ve)),Pt):se},Pt.nice=function(){var ot=Yi(qe.map(Ve),Te?Math:Zo);return X.domain(ot),qe=ot.map(Ye),Pt},Pt.ticks=function(){var ot=dn(qe),Xt=[],dr=ot[0],pr=ot[1],Ur=Math.floor(Ve(dr)),zr=Math.ceil(Ve(pr)),gi=se%1?2:se;if(isFinite(zr-Ur)){if(Te){for(;Ur0;xi--)Xt.push(Ye(Ur)*xi);for(Ur=0;Xt[Ur]pr;zr--);Xt=Xt.slice(Ur,zr)}return Xt},Pt.copy=function(){return bo(X.copy(),se,Te,qe)},Ca(Pt,X)}var Zo={floor:function(X){return-Math.ceil(-X)},ceil:function(X){return-Math.floor(-X)}};e.scale.pow=function(){return Ss(e.scale.linear(),1,[0,1])};function Ss(X,se,Te){var qe=as(se),Ve=as(1/se);function Ye(Pt){return X(qe(Pt))}return Ye.invert=function(Pt){return Ve(X.invert(Pt))},Ye.domain=function(Pt){return arguments.length?(X.domain((Te=Pt.map(Number)).map(qe)),Ye):Te},Ye.ticks=function(Pt){return Ua(Te,Pt)},Ye.tickFormat=function(Pt,ot){return d3_scale_linearTickFormat(Te,Pt,ot)},Ye.nice=function(Pt){return Ye.domain(Ra(Te,Pt))},Ye.exponent=function(Pt){return arguments.length?(qe=as(se=Pt),Ve=as(1/se),X.domain(Te.map(qe)),Ye):se},Ye.copy=function(){return Ss(X.copy(),se,Te)},Ca(Ye,X)}function as(X){return function(se){return se<0?-Math.pow(-se,X):Math.pow(se,X)}}e.scale.sqrt=function(){return e.scale.pow().exponent(.5)},e.scale.ordinal=function(){return ws([],{t:"range",a:[[]]})};function ws(X,se){var Te,qe,Ve;function Ye(ot){return qe[((Te.get(ot)||(se.t==="range"?Te.set(ot,X.push(ot)):NaN))-1)%qe.length]}function Pt(ot,Xt){return e.range(X.length).map(function(dr){return ot+Xt*dr})}return Ye.domain=function(ot){if(!arguments.length)return X;X=[],Te=new T;for(var Xt=-1,dr=ot.length,pr;++Xt0?Te[Ye-1]:X[0],Yezr?0:1;if(pr=At)return Xt(pr,xi)+(dr?Xt(dr,1-xi):"")+"Z";var Wr,ii,di,Li,Ti=0,Qr=0,Pn,kn,Bn,na,Ea,Ia,yo,Da,go=[];if((Li=(+Pt.apply(this,arguments)||0)/2)&&(di=qe===Cu?Math.sqrt(dr*dr+pr*pr):+qe.apply(this,arguments),xi||(Qr*=-1),pr&&(Qr=_i(di/pr*Math.sin(Li))),dr&&(Ti=_i(di/dr*Math.sin(Li)))),pr){Pn=pr*Math.cos(Ur+Qr),kn=pr*Math.sin(Ur+Qr),Bn=pr*Math.cos(zr-Qr),na=pr*Math.sin(zr-Qr);var Is=Math.abs(zr-Ur-2*Qr)<=et?0:1;if(Qr&&Ac(Pn,kn,Bn,na)===xi^Is){var Ms=(Ur+zr)/2;Pn=pr*Math.cos(Ms),kn=pr*Math.sin(Ms),Bn=na=null}}else Pn=kn=0;if(dr){Ea=dr*Math.cos(zr-Ti),Ia=dr*Math.sin(zr-Ti),yo=dr*Math.cos(Ur+Ti),Da=dr*Math.sin(Ur+Ti);var Xs=Math.abs(Ur-zr+2*Ti)<=et?0:1;if(Ti&&Ac(Ea,Ia,yo,Da)===1-xi^Xs){var Un=(Ur+zr)/2;Ea=dr*Math.cos(Un),Ia=dr*Math.sin(Un),yo=Da=null}}else Ea=Ia=0;if(gi>Je&&(Wr=Math.min(Math.abs(pr-dr)/2,+Te.apply(this,arguments)))>.001){ii=dr0?0:1}function Va(X,se,Te,qe,Ve){var Ye=X[0]-se[0],Pt=X[1]-se[1],ot=(Ve?qe:-qe)/Math.sqrt(Ye*Ye+Pt*Pt),Xt=ot*Pt,dr=-ot*Ye,pr=X[0]+Xt,Ur=X[1]+dr,zr=se[0]+Xt,gi=se[1]+dr,xi=(pr+zr)/2,Wr=(Ur+gi)/2,ii=zr-pr,di=gi-Ur,Li=ii*ii+di*di,Ti=Te-qe,Qr=pr*gi-zr*Ur,Pn=(di<0?-1:1)*Math.sqrt(Math.max(0,Ti*Ti*Li-Qr*Qr)),kn=(Qr*di-ii*Pn)/Li,Bn=(-Qr*ii-di*Pn)/Li,na=(Qr*di+ii*Pn)/Li,Ea=(-Qr*ii+di*Pn)/Li,Ia=kn-xi,yo=Bn-Wr,Da=na-xi,go=Ea-Wr;return Ia*Ia+yo*yo>Da*Da+go*go&&(kn=na,Bn=Ea),[[kn-Xt,Bn-dr],[kn*Te/Ti,Bn*Te/Ti]]}function oo(){return!0}function Vc(X){var se=Ds,Te=Fs,qe=oo,Ve=Ku,Ye=Ve.key,Pt=.7;function ot(Xt){var dr=[],pr=[],Ur=-1,zr=Xt.length,gi,xi=hi(se),Wr=hi(Te);function ii(){dr.push("M",Ve(X(pr),Pt))}for(;++Ur1?X.join("L"):X+"Z"}function ue(X){return X.join("L")+"Z"}function w(X){for(var se=0,Te=X.length,qe=X[0],Ve=[qe[0],",",qe[1]];++se1&&Ve.push("H",qe[0]),Ve.join("")}function B(X){for(var se=0,Te=X.length,qe=X[0],Ve=[qe[0],",",qe[1]];++se1){ot=se[1],Ye=X[Xt],Xt++,qe+="C"+(Ve[0]+Pt[0])+","+(Ve[1]+Pt[1])+","+(Ye[0]-ot[0])+","+(Ye[1]-ot[1])+","+Ye[0]+","+Ye[1];for(var dr=2;dr9&&(Ye=Te*3/Math.sqrt(Ye),Pt[ot]=Ye*qe,Pt[ot+1]=Ye*Ve));for(ot=-1;++ot<=Xt;)Ye=(X[Math.min(Xt,ot+1)][0]-X[Math.max(0,ot-1)][0])/(6*(1+Pt[ot]*Pt[ot])),se.push([Ye||0,Pt[ot]*Ye||0]);return se}function qt(X){return X.length<3?Ku(X):X[0]+Ze(X,nt(X))}e.svg.line.radial=function(){var X=Vc(Wt);return X.radius=X.x,delete X.x,X.angle=X.y,delete X.y,X};function Wt(X){for(var se,Te=-1,qe=X.length,Ve,Ye;++Teet)+",1 "+Ur}function dr(pr,Ur,zr,gi){return"Q 0,0 "+gi}return Ye.radius=function(pr){return arguments.length?(Te=hi(pr),Ye):Te},Ye.source=function(pr){return arguments.length?(X=hi(pr),Ye):X},Ye.target=function(pr){return arguments.length?(se=hi(pr),Ye):se},Ye.startAngle=function(pr){return arguments.length?(qe=hi(pr),Ye):qe},Ye.endAngle=function(pr){return arguments.length?(Ve=hi(pr),Ye):Ve},Ye};function Fr(X){return X.radius}e.svg.diagonal=function(){var X=fr,se=br,Te=Hr;function qe(Ve,Ye){var Pt=X.call(this,Ve,Ye),ot=se.call(this,Ve,Ye),Xt=(Pt.y+ot.y)/2,dr=[Pt,{x:Pt.x,y:Xt},{x:ot.x,y:Xt},ot];return dr=dr.map(Te),"M"+dr[0]+"C"+dr[1]+" "+dr[2]+" "+dr[3]}return qe.source=function(Ve){return arguments.length?(X=hi(Ve),qe):X},qe.target=function(Ve){return arguments.length?(se=hi(Ve),qe):se},qe.projection=function(Ve){return arguments.length?(Te=Ve,qe):Te},qe};function Hr(X){return[X.x,X.y]}e.svg.diagonal.radial=function(){var X=e.svg.diagonal(),se=Hr,Te=X.projection;return X.projection=function(qe){return arguments.length?Te(ri(se=qe)):se},X};function ri(X){return function(){var se=X.apply(this,arguments),Te=se[0],qe=se[1]-Kt;return[Te*Math.cos(qe),Te*Math.sin(qe)]}}e.svg.symbol=function(){var X=cn,se=Ci;function Te(qe,Ve){return(Ln.get(X.call(this,qe,Ve))||sn)(se.call(this,qe,Ve))}return Te.type=function(qe){return arguments.length?(X=hi(qe),Te):X},Te.size=function(qe){return arguments.length?(se=hi(qe),Te):se},Te};function Ci(){return 64}function cn(){return"circle"}function sn(X){var se=Math.sqrt(X/et);return"M0,"+se+"A"+se+","+se+" 0 1,1 0,"+-se+"A"+se+","+se+" 0 1,1 0,"+se+"Z"}var Ln=e.map({circle:sn,cross:function(X){var se=Math.sqrt(X/5)/2;return"M"+-3*se+","+-se+"H"+-se+"V"+-3*se+"H"+se+"V"+-se+"H"+3*se+"V"+se+"H"+se+"V"+3*se+"H"+-se+"V"+se+"H"+-3*se+"Z"},diamond:function(X){var se=Math.sqrt(X/(2*Aa)),Te=se*Aa;return"M0,"+-se+"L"+Te+",0 0,"+se+" "+-Te+",0Z"},square:function(X){var se=Math.sqrt(X)/2;return"M"+-se+","+-se+"L"+se+","+-se+" "+se+","+se+" "+-se+","+se+"Z"},"triangle-down":function(X){var se=Math.sqrt(X/Yn),Te=se*Yn/2;return"M0,"+Te+"L"+se+","+-Te+" "+-se+","+-Te+"Z"},"triangle-up":function(X){var se=Math.sqrt(X/Yn),Te=se*Yn/2;return"M0,"+-Te+"L"+se+","+Te+" "+-se+","+Te+"Z"}});e.svg.symbolTypes=Ln.keys();var Yn=Math.sqrt(3),Aa=Math.tan(30*Qt);Le.transition=function(X){for(var se=Bo||++mo,Te=To(X),qe=[],Ve,Ye,Pt=Ps||{time:Date.now(),ease:bl,delay:0,duration:250},ot=-1,Xt=this.length;++ot0;)Ur[--Li].call(X,di);if(ii>=1)return Pt.event&&Pt.event.end.call(X,X.__data__,se),--Ye.count?delete Ye[qe]:delete X[Te],1}Pt||(ot=Ve.time,Xt=No(zr,0,ot),Pt=Ye[qe]={tween:new T,time:ot,timer:Xt,delay:Ve.delay,duration:Ve.duration,ease:Ve.ease,index:se},Ve=null,++Ye.count)}e.svg.axis=function(){var X=e.scale.linear(),se=Ul,Te=6,qe=6,Ve=3,Ye=[10],Pt=null,ot;function Xt(dr){dr.each(function(){var pr=e.select(this),Ur=this.__chart__||X,zr=this.__chart__=X.copy(),gi=Pt==null?zr.ticks?zr.ticks.apply(zr,Ye):zr.domain():Pt,xi=ot==null?zr.tickFormat?zr.tickFormat.apply(zr,Ye):G:ot,Wr=pr.selectAll(".tick").data(gi,zr),ii=Wr.enter().insert("g",".domain").attr("class","tick").style("opacity",Je),di=e.transition(Wr.exit()).style("opacity",Je).remove(),Li=e.transition(Wr.order()).style("opacity",1),Ti=Math.max(Te,0)+Ve,Qr,Pn=wn(zr),kn=pr.selectAll(".domain").data([0]),Bn=(kn.enter().append("path").attr("class","domain"),e.transition(kn));ii.append("line"),ii.append("text");var na=ii.select("line"),Ea=Li.select("line"),Ia=Wr.select("text").text(xi),yo=ii.select("text"),Da=Li.select("text"),go=se==="top"||se==="left"?-1:1,Is,Ms,Xs,Un;if(se==="bottom"||se==="top"?(Qr=au,Is="x",Xs="y",Ms="x2",Un="y2",Ia.attr("dy",go<0?"0em":".71em").style("text-anchor","middle"),Bn.attr("d","M"+Pn[0]+","+go*qe+"V0H"+Pn[1]+"V"+go*qe)):(Qr=Js,Is="y",Xs="x",Ms="y2",Un="x2",Ia.attr("dy",".32em").style("text-anchor",go<0?"end":"start"),Bn.attr("d","M"+go*qe+","+Pn[0]+"H0V"+Pn[1]+"H"+go*qe)),na.attr(Un,go*Te),yo.attr(Xs,go*Ti),Ea.attr(Ms,0).attr(Un,go*Te),Da.attr(Is,0).attr(Xs,go*Ti),zr.rangeBand){var ja=zr,Fo=ja.rangeBand()/2;Ur=zr=function(Uo){return ja(Uo)+Fo}}else Ur.rangeBand?Ur=zr:di.call(Qr,zr,Ur);ii.call(Qr,Ur,zr),Li.call(Qr,zr,zr)})}return Xt.scale=function(dr){return arguments.length?(X=dr,Xt):X},Xt.orient=function(dr){return arguments.length?(se=dr in Lu?dr+"":Ul,Xt):se},Xt.ticks=function(){return arguments.length?(Ye=r(arguments),Xt):Ye},Xt.tickValues=function(dr){return arguments.length?(Pt=dr,Xt):Pt},Xt.tickFormat=function(dr){return arguments.length?(ot=dr,Xt):ot},Xt.tickSize=function(dr){var pr=arguments.length;return pr?(Te=+dr,qe=+arguments[pr-1],Xt):Te},Xt.innerTickSize=function(dr){return arguments.length?(Te=+dr,Xt):Te},Xt.outerTickSize=function(dr){return arguments.length?(qe=+dr,Xt):qe},Xt.tickPadding=function(dr){return arguments.length?(Ve=+dr,Xt):Ve},Xt.tickSubdivide=function(){return arguments.length&&Xt},Xt};var Ul="bottom",Lu={top:1,right:1,bottom:1,left:1};function au(X,se,Te){X.attr("transform",function(qe){var Ve=se(qe);return"translate("+(isFinite(Ve)?Ve:Te(qe))+",0)"})}function Js(X,se,Te){X.attr("transform",function(qe){var Ve=se(qe);return"translate(0,"+(isFinite(Ve)?Ve:Te(qe))+")"})}e.svg.brush=function(){var X=Ce(pr,"brushstart","brush","brushend"),se=null,Te=null,qe=[0,0],Ve=[0,0],Ye,Pt,ot=!0,Xt=!0,dr=dc[0];function pr(Wr){Wr.each(function(){var ii=e.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",xi).on("touchstart.brush",xi),di=ii.selectAll(".background").data([0]);di.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),ii.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var Li=ii.selectAll(".resize").data(dr,G);Li.exit().remove(),Li.enter().append("g").attr("class",function(kn){return"resize "+kn}).style("cursor",function(kn){return eu[kn]}).append("rect").attr("x",function(kn){return/[ew]$/.test(kn)?-3:null}).attr("y",function(kn){return/^[ns]/.test(kn)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),Li.style("display",pr.empty()?"none":null);var Ti=e.transition(ii),Qr=e.transition(di),Pn;se&&(Pn=wn(se),Qr.attr("x",Pn[0]).attr("width",Pn[1]-Pn[0]),zr(Ti)),Te&&(Pn=wn(Te),Qr.attr("y",Pn[0]).attr("height",Pn[1]-Pn[0]),gi(Ti)),Ur(Ti)})}pr.event=function(Wr){Wr.each(function(){var ii=X.of(this,arguments),di={x:qe,y:Ve,i:Ye,j:Pt},Li=this.__chart__||di;this.__chart__=di,Bo?e.select(this).transition().each("start.brush",function(){Ye=Li.i,Pt=Li.j,qe=Li.x,Ve=Li.y,ii({type:"brushstart"})}).tween("brush:brush",function(){var Ti=Gu(qe,di.x),Qr=Gu(Ve,di.y);return Ye=Pt=null,function(Pn){qe=di.x=Ti(Pn),Ve=di.y=Qr(Pn),ii({type:"brush",mode:"resize"})}}).each("end.brush",function(){Ye=di.i,Pt=di.j,ii({type:"brush",mode:"resize"}),ii({type:"brushend"})}):(ii({type:"brushstart"}),ii({type:"brush",mode:"resize"}),ii({type:"brushend"}))})};function Ur(Wr){Wr.selectAll(".resize").attr("transform",function(ii){return"translate("+qe[+/e$/.test(ii)]+","+Ve[+/^s/.test(ii)]+")"})}function zr(Wr){Wr.select(".extent").attr("x",qe[0]),Wr.selectAll(".extent,.n>rect,.s>rect").attr("width",qe[1]-qe[0])}function gi(Wr){Wr.select(".extent").attr("y",Ve[0]),Wr.selectAll(".extent,.e>rect,.w>rect").attr("height",Ve[1]-Ve[0])}function xi(){var Wr=this,ii=e.select(e.event.target),di=X.of(Wr,arguments),Li=e.select(Wr),Ti=ii.datum(),Qr=!/^(n|s)$/.test(Ti)&&se,Pn=!/^(e|w)$/.test(Ti)&&Te,kn=ii.classed("extent"),Bn=qr(Wr),na,Ea=e.mouse(Wr),Ia,yo=e.select(a(Wr)).on("keydown.brush",Is).on("keyup.brush",Ms);if(e.event.changedTouches?yo.on("touchmove.brush",Xs).on("touchend.brush",ja):yo.on("mousemove.brush",Xs).on("mouseup.brush",ja),Li.interrupt().selectAll("*").interrupt(),kn)Ea[0]=qe[0]-Ea[0],Ea[1]=Ve[0]-Ea[1];else if(Ti){var Da=+/w$/.test(Ti),go=+/^n/.test(Ti);Ia=[qe[1-Da]-Ea[0],Ve[1-go]-Ea[1]],Ea[0]=qe[Da],Ea[1]=Ve[go]}else e.event.altKey&&(na=Ea.slice());Li.style("pointer-events","none").selectAll(".resize").style("display",null),e.select("body").style("cursor",ii.style("cursor")),di({type:"brushstart"}),Xs();function Is(){e.event.keyCode==32&&(kn||(na=null,Ea[0]-=qe[1],Ea[1]-=Ve[1],kn=2),_e())}function Ms(){e.event.keyCode==32&&kn==2&&(Ea[0]+=qe[1],Ea[1]+=Ve[1],kn=0,_e())}function Xs(){var Fo=e.mouse(Wr),Uo=!1;Ia&&(Fo[0]+=Ia[0],Fo[1]+=Ia[1]),kn||(e.event.altKey?(na||(na=[(qe[0]+qe[1])/2,(Ve[0]+Ve[1])/2]),Ea[0]=qe[+(Fo[0]{(function(e,t){typeof x6=="object"&&typeof Tee!="undefined"?t(x6):(e=e||self,t(e.d3=e.d3||{}))})(x6,function(e){"use strict";var t=new Date,r=new Date;function n(Ae,rt,St,Tt){function dt(Et){return Ae(Et=arguments.length===0?new Date:new Date(+Et)),Et}return dt.floor=function(Et){return Ae(Et=new Date(+Et)),Et},dt.ceil=function(Et){return Ae(Et=new Date(Et-1)),rt(Et,1),Ae(Et),Et},dt.round=function(Et){var pt=dt(Et),jt=dt.ceil(Et);return Et-pt0))return or;do or.push(mr=new Date(+Et)),rt(Et,jt),Ae(Et);while(mr=pt)for(;Ae(pt),!Et(pt);)pt.setTime(pt-1)},function(pt,jt){if(pt>=pt)if(jt<0)for(;++jt<=0;)for(;rt(pt,-1),!Et(pt););else for(;--jt>=0;)for(;rt(pt,1),!Et(pt););})},St&&(dt.count=function(Et,pt){return t.setTime(+Et),r.setTime(+pt),Ae(t),Ae(r),Math.floor(St(t,r))},dt.every=function(Et){return Et=Math.floor(Et),!isFinite(Et)||!(Et>0)?null:Et>1?dt.filter(Tt?function(pt){return Tt(pt)%Et===0}:function(pt){return dt.count(0,pt)%Et===0}):dt}),dt}var i=n(function(){},function(Ae,rt){Ae.setTime(+Ae+rt)},function(Ae,rt){return rt-Ae});i.every=function(Ae){return Ae=Math.floor(Ae),!isFinite(Ae)||!(Ae>0)?null:Ae>1?n(function(rt){rt.setTime(Math.floor(rt/Ae)*Ae)},function(rt,St){rt.setTime(+rt+St*Ae)},function(rt,St){return(St-rt)/Ae}):i};var a=i.range,o=1e3,s=6e4,l=36e5,u=864e5,c=6048e5,f=n(function(Ae){Ae.setTime(Ae-Ae.getMilliseconds())},function(Ae,rt){Ae.setTime(+Ae+rt*o)},function(Ae,rt){return(rt-Ae)/o},function(Ae){return Ae.getUTCSeconds()}),h=f.range,d=n(function(Ae){Ae.setTime(Ae-Ae.getMilliseconds()-Ae.getSeconds()*o)},function(Ae,rt){Ae.setTime(+Ae+rt*s)},function(Ae,rt){return(rt-Ae)/s},function(Ae){return Ae.getMinutes()}),v=d.range,m=n(function(Ae){Ae.setTime(Ae-Ae.getMilliseconds()-Ae.getSeconds()*o-Ae.getMinutes()*s)},function(Ae,rt){Ae.setTime(+Ae+rt*l)},function(Ae,rt){return(rt-Ae)/l},function(Ae){return Ae.getHours()}),b=m.range,p=n(function(Ae){Ae.setHours(0,0,0,0)},function(Ae,rt){Ae.setDate(Ae.getDate()+rt)},function(Ae,rt){return(rt-Ae-(rt.getTimezoneOffset()-Ae.getTimezoneOffset())*s)/u},function(Ae){return Ae.getDate()-1}),k=p.range;function M(Ae){return n(function(rt){rt.setDate(rt.getDate()-(rt.getDay()+7-Ae)%7),rt.setHours(0,0,0,0)},function(rt,St){rt.setDate(rt.getDate()+St*7)},function(rt,St){return(St-rt-(St.getTimezoneOffset()-rt.getTimezoneOffset())*s)/c})}var T=M(0),L=M(1),x=M(2),C=M(3),S=M(4),g=M(5),P=M(6),E=T.range,z=L.range,q=x.range,V=C.range,G=S.range,Z=g.range,j=P.range,N=n(function(Ae){Ae.setDate(1),Ae.setHours(0,0,0,0)},function(Ae,rt){Ae.setMonth(Ae.getMonth()+rt)},function(Ae,rt){return rt.getMonth()-Ae.getMonth()+(rt.getFullYear()-Ae.getFullYear())*12},function(Ae){return Ae.getMonth()}),H=N.range,ie=n(function(Ae){Ae.setMonth(0,1),Ae.setHours(0,0,0,0)},function(Ae,rt){Ae.setFullYear(Ae.getFullYear()+rt)},function(Ae,rt){return rt.getFullYear()-Ae.getFullYear()},function(Ae){return Ae.getFullYear()});ie.every=function(Ae){return!isFinite(Ae=Math.floor(Ae))||!(Ae>0)?null:n(function(rt){rt.setFullYear(Math.floor(rt.getFullYear()/Ae)*Ae),rt.setMonth(0,1),rt.setHours(0,0,0,0)},function(rt,St){rt.setFullYear(rt.getFullYear()+St*Ae)})};var ae=ie.range,_e=n(function(Ae){Ae.setUTCSeconds(0,0)},function(Ae,rt){Ae.setTime(+Ae+rt*s)},function(Ae,rt){return(rt-Ae)/s},function(Ae){return Ae.getUTCMinutes()}),Ee=_e.range,Ce=n(function(Ae){Ae.setUTCMinutes(0,0,0)},function(Ae,rt){Ae.setTime(+Ae+rt*l)},function(Ae,rt){return(rt-Ae)/l},function(Ae){return Ae.getUTCHours()}),ge=Ce.range,re=n(function(Ae){Ae.setUTCHours(0,0,0,0)},function(Ae,rt){Ae.setUTCDate(Ae.getUTCDate()+rt)},function(Ae,rt){return(rt-Ae)/u},function(Ae){return Ae.getUTCDate()-1}),Se=re.range;function ke(Ae){return n(function(rt){rt.setUTCDate(rt.getUTCDate()-(rt.getUTCDay()+7-Ae)%7),rt.setUTCHours(0,0,0,0)},function(rt,St){rt.setUTCDate(rt.getUTCDate()+St*7)},function(rt,St){return(St-rt)/c})}var be=ke(0),Be=ke(1),Le=ke(2),me=ke(3),Pe=ke(4),ce=ke(5),He=ke(6),lt=be.range,mt=Be.range,Ht=Le.range,at=me.range,ct=Pe.range,ar=ce.range,Vt=He.range,rr=n(function(Ae){Ae.setUTCDate(1),Ae.setUTCHours(0,0,0,0)},function(Ae,rt){Ae.setUTCMonth(Ae.getUTCMonth()+rt)},function(Ae,rt){return rt.getUTCMonth()-Ae.getUTCMonth()+(rt.getUTCFullYear()-Ae.getUTCFullYear())*12},function(Ae){return Ae.getUTCMonth()}),tt=rr.range,je=n(function(Ae){Ae.setUTCMonth(0,1),Ae.setUTCHours(0,0,0,0)},function(Ae,rt){Ae.setUTCFullYear(Ae.getUTCFullYear()+rt)},function(Ae,rt){return rt.getUTCFullYear()-Ae.getUTCFullYear()},function(Ae){return Ae.getUTCFullYear()});je.every=function(Ae){return!isFinite(Ae=Math.floor(Ae))||!(Ae>0)?null:n(function(rt){rt.setUTCFullYear(Math.floor(rt.getUTCFullYear()/Ae)*Ae),rt.setUTCMonth(0,1),rt.setUTCHours(0,0,0,0)},function(rt,St){rt.setUTCFullYear(rt.getUTCFullYear()+St*Ae)})};var Ue=je.range;e.timeDay=p,e.timeDays=k,e.timeFriday=g,e.timeFridays=Z,e.timeHour=m,e.timeHours=b,e.timeInterval=n,e.timeMillisecond=i,e.timeMilliseconds=a,e.timeMinute=d,e.timeMinutes=v,e.timeMonday=L,e.timeMondays=z,e.timeMonth=N,e.timeMonths=H,e.timeSaturday=P,e.timeSaturdays=j,e.timeSecond=f,e.timeSeconds=h,e.timeSunday=T,e.timeSundays=E,e.timeThursday=S,e.timeThursdays=G,e.timeTuesday=x,e.timeTuesdays=q,e.timeWednesday=C,e.timeWednesdays=V,e.timeWeek=T,e.timeWeeks=E,e.timeYear=ie,e.timeYears=ae,e.utcDay=re,e.utcDays=Se,e.utcFriday=ce,e.utcFridays=ar,e.utcHour=Ce,e.utcHours=ge,e.utcMillisecond=i,e.utcMilliseconds=a,e.utcMinute=_e,e.utcMinutes=Ee,e.utcMonday=Be,e.utcMondays=mt,e.utcMonth=rr,e.utcMonths=tt,e.utcSaturday=He,e.utcSaturdays=Vt,e.utcSecond=f,e.utcSeconds=h,e.utcSunday=be,e.utcSundays=lt,e.utcThursday=Pe,e.utcThursdays=ct,e.utcTuesday=Le,e.utcTuesdays=Ht,e.utcWednesday=me,e.utcWednesdays=at,e.utcWeek=be,e.utcWeeks=lt,e.utcYear=je,e.utcYears=Ue,Object.defineProperty(e,"__esModule",{value:!0})})});var d3=ye((b6,Aee)=>{(function(e,t){typeof b6=="object"&&typeof Aee!="undefined"?t(b6,Eq()):(e=e||self,t(e.d3=e.d3||{},e.d3))})(b6,function(e,t){"use strict";function r(Ge){if(0<=Ge.y&&Ge.y<100){var Je=new Date(-1,Ge.m,Ge.d,Ge.H,Ge.M,Ge.S,Ge.L);return Je.setFullYear(Ge.y),Je}return new Date(Ge.y,Ge.m,Ge.d,Ge.H,Ge.M,Ge.S,Ge.L)}function n(Ge){if(0<=Ge.y&&Ge.y<100){var Je=new Date(Date.UTC(-1,Ge.m,Ge.d,Ge.H,Ge.M,Ge.S,Ge.L));return Je.setUTCFullYear(Ge.y),Je}return new Date(Date.UTC(Ge.y,Ge.m,Ge.d,Ge.H,Ge.M,Ge.S,Ge.L))}function i(Ge,Je,We){return{y:Ge,m:Je,d:We,H:0,M:0,S:0,L:0}}function a(Ge){var Je=Ge.dateTime,We=Ge.date,et=Ge.time,xt=Ge.periods,At=Ge.days,Kt=Ge.shortDays,Qt=Ge.months,Mr=Ge.shortMonths,Gr=h(xt),Ir=d(xt),Yr=h(At),_i=d(At),Pi=h(Kt),ai=d(Kt),mi=h(Qt),un=d(Qt),Fn=h(Mr),An=d(Mr),Hn={a:Zi,A:en,b:fn,B:yn,c:null,d:N,e:N,f:Ee,H,I:ie,j:ae,L:_e,m:Ce,M:ge,p:Mn,q:Ba,Q:pt,s:jt,S:re,u:Se,U:ke,V:be,w:Be,W:Le,x:null,X:null,y:me,Y:Pe,Z:ce,"%":Et},Qn={a:ua,A:ma,b:Wa,B:Fa,c:null,d:He,e:He,f:ct,H:lt,I:mt,j:Ht,L:at,m:ar,M:Vt,p:Xo,q:da,Q:pt,s:jt,S:rr,u:tt,U:je,V:Ue,w:Ae,W:rt,x:null,X:null,y:St,Y:Tt,Z:dt,"%":Et},Vi={a:tr,A:ir,b:wr,B:Xr,c:ti,d:S,e:S,f:V,H:P,I:P,j:g,L:q,m:C,M:E,p:wt,q:x,Q:Z,s:j,S:z,u:m,U:b,V:p,w:v,W:k,x:$r,X:Ri,y:T,Y:M,Z:L,"%":G};Hn.x=Kn(We,Hn),Hn.X=Kn(et,Hn),Hn.c=Kn(Je,Hn),Qn.x=Kn(We,Qn),Qn.X=Kn(et,Qn),Qn.c=Kn(Je,Qn);function Kn(jn,Ha){return function(vo){var Gn=[],Ct=-1,Sr=0,Jr=jn.length,hi,hn,Sn;for(vo instanceof Date||(vo=new Date(+vo));++Ct53)return null;"w"in Gn||(Gn.w=1),"Z"in Gn?(Sr=n(i(Gn.y,0,1)),Jr=Sr.getUTCDay(),Sr=Jr>4||Jr===0?t.utcMonday.ceil(Sr):t.utcMonday(Sr),Sr=t.utcDay.offset(Sr,(Gn.V-1)*7),Gn.y=Sr.getUTCFullYear(),Gn.m=Sr.getUTCMonth(),Gn.d=Sr.getUTCDate()+(Gn.w+6)%7):(Sr=r(i(Gn.y,0,1)),Jr=Sr.getDay(),Sr=Jr>4||Jr===0?t.timeMonday.ceil(Sr):t.timeMonday(Sr),Sr=t.timeDay.offset(Sr,(Gn.V-1)*7),Gn.y=Sr.getFullYear(),Gn.m=Sr.getMonth(),Gn.d=Sr.getDate()+(Gn.w+6)%7)}else("W"in Gn||"U"in Gn)&&("w"in Gn||(Gn.w="u"in Gn?Gn.u%7:"W"in Gn?1:0),Jr="Z"in Gn?n(i(Gn.y,0,1)).getUTCDay():r(i(Gn.y,0,1)).getDay(),Gn.m=0,Gn.d="W"in Gn?(Gn.w+6)%7+Gn.W*7-(Jr+5)%7:Gn.w+Gn.U*7-(Jr+6)%7);return"Z"in Gn?(Gn.H+=Gn.Z/100|0,Gn.M+=Gn.Z%100,n(Gn)):r(Gn)}}function Gt(jn,Ha,vo,Gn){for(var Ct=0,Sr=Ha.length,Jr=vo.length,hi,hn;Ct=Jr)return-1;if(hi=Ha.charCodeAt(Ct++),hi===37){if(hi=Ha.charAt(Ct++),hn=Vi[hi in o?Ha.charAt(Ct++):hi],!hn||(Gn=hn(jn,vo,Gn))<0)return-1}else if(hi!=vo.charCodeAt(Gn++))return-1}return Gn}function wt(jn,Ha,vo){var Gn=Gr.exec(Ha.slice(vo));return Gn?(jn.p=Ir[Gn[0].toLowerCase()],vo+Gn[0].length):-1}function tr(jn,Ha,vo){var Gn=Pi.exec(Ha.slice(vo));return Gn?(jn.w=ai[Gn[0].toLowerCase()],vo+Gn[0].length):-1}function ir(jn,Ha,vo){var Gn=Yr.exec(Ha.slice(vo));return Gn?(jn.w=_i[Gn[0].toLowerCase()],vo+Gn[0].length):-1}function wr(jn,Ha,vo){var Gn=Fn.exec(Ha.slice(vo));return Gn?(jn.m=An[Gn[0].toLowerCase()],vo+Gn[0].length):-1}function Xr(jn,Ha,vo){var Gn=mi.exec(Ha.slice(vo));return Gn?(jn.m=un[Gn[0].toLowerCase()],vo+Gn[0].length):-1}function ti(jn,Ha,vo){return Gt(jn,Je,Ha,vo)}function $r(jn,Ha,vo){return Gt(jn,We,Ha,vo)}function Ri(jn,Ha,vo){return Gt(jn,et,Ha,vo)}function Zi(jn){return Kt[jn.getDay()]}function en(jn){return At[jn.getDay()]}function fn(jn){return Mr[jn.getMonth()]}function yn(jn){return Qt[jn.getMonth()]}function Mn(jn){return xt[+(jn.getHours()>=12)]}function Ba(jn){return 1+~~(jn.getMonth()/3)}function ua(jn){return Kt[jn.getUTCDay()]}function ma(jn){return At[jn.getUTCDay()]}function Wa(jn){return Mr[jn.getUTCMonth()]}function Fa(jn){return Qt[jn.getUTCMonth()]}function Xo(jn){return xt[+(jn.getUTCHours()>=12)]}function da(jn){return 1+~~(jn.getUTCMonth()/3)}return{format:function(jn){var Ha=Kn(jn+="",Hn);return Ha.toString=function(){return jn},Ha},parse:function(jn){var Ha=Jn(jn+="",!1);return Ha.toString=function(){return jn},Ha},utcFormat:function(jn){var Ha=Kn(jn+="",Qn);return Ha.toString=function(){return jn},Ha},utcParse:function(jn){var Ha=Jn(jn+="",!0);return Ha.toString=function(){return jn},Ha}}}var o={"-":"",_:" ",0:"0"},s=/^\s*\d+/,l=/^%/,u=/[\\^$*+?|[\]().{}]/g;function c(Ge,Je,We){var et=Ge<0?"-":"",xt=(et?-Ge:Ge)+"",At=xt.length;return et+(At68?1900:2e3),We+et[0].length):-1}function L(Ge,Je,We){var et=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(Je.slice(We,We+6));return et?(Ge.Z=et[1]?0:-(et[2]+(et[3]||"00")),We+et[0].length):-1}function x(Ge,Je,We){var et=s.exec(Je.slice(We,We+1));return et?(Ge.q=et[0]*3-3,We+et[0].length):-1}function C(Ge,Je,We){var et=s.exec(Je.slice(We,We+2));return et?(Ge.m=et[0]-1,We+et[0].length):-1}function S(Ge,Je,We){var et=s.exec(Je.slice(We,We+2));return et?(Ge.d=+et[0],We+et[0].length):-1}function g(Ge,Je,We){var et=s.exec(Je.slice(We,We+3));return et?(Ge.m=0,Ge.d=+et[0],We+et[0].length):-1}function P(Ge,Je,We){var et=s.exec(Je.slice(We,We+2));return et?(Ge.H=+et[0],We+et[0].length):-1}function E(Ge,Je,We){var et=s.exec(Je.slice(We,We+2));return et?(Ge.M=+et[0],We+et[0].length):-1}function z(Ge,Je,We){var et=s.exec(Je.slice(We,We+2));return et?(Ge.S=+et[0],We+et[0].length):-1}function q(Ge,Je,We){var et=s.exec(Je.slice(We,We+3));return et?(Ge.L=+et[0],We+et[0].length):-1}function V(Ge,Je,We){var et=s.exec(Je.slice(We,We+6));return et?(Ge.L=Math.floor(et[0]/1e3),We+et[0].length):-1}function G(Ge,Je,We){var et=l.exec(Je.slice(We,We+1));return et?We+et[0].length:-1}function Z(Ge,Je,We){var et=s.exec(Je.slice(We));return et?(Ge.Q=+et[0],We+et[0].length):-1}function j(Ge,Je,We){var et=s.exec(Je.slice(We));return et?(Ge.s=+et[0],We+et[0].length):-1}function N(Ge,Je){return c(Ge.getDate(),Je,2)}function H(Ge,Je){return c(Ge.getHours(),Je,2)}function ie(Ge,Je){return c(Ge.getHours()%12||12,Je,2)}function ae(Ge,Je){return c(1+t.timeDay.count(t.timeYear(Ge),Ge),Je,3)}function _e(Ge,Je){return c(Ge.getMilliseconds(),Je,3)}function Ee(Ge,Je){return _e(Ge,Je)+"000"}function Ce(Ge,Je){return c(Ge.getMonth()+1,Je,2)}function ge(Ge,Je){return c(Ge.getMinutes(),Je,2)}function re(Ge,Je){return c(Ge.getSeconds(),Je,2)}function Se(Ge){var Je=Ge.getDay();return Je===0?7:Je}function ke(Ge,Je){return c(t.timeSunday.count(t.timeYear(Ge)-1,Ge),Je,2)}function be(Ge,Je){var We=Ge.getDay();return Ge=We>=4||We===0?t.timeThursday(Ge):t.timeThursday.ceil(Ge),c(t.timeThursday.count(t.timeYear(Ge),Ge)+(t.timeYear(Ge).getDay()===4),Je,2)}function Be(Ge){return Ge.getDay()}function Le(Ge,Je){return c(t.timeMonday.count(t.timeYear(Ge)-1,Ge),Je,2)}function me(Ge,Je){return c(Ge.getFullYear()%100,Je,2)}function Pe(Ge,Je){return c(Ge.getFullYear()%1e4,Je,4)}function ce(Ge){var Je=Ge.getTimezoneOffset();return(Je>0?"-":(Je*=-1,"+"))+c(Je/60|0,"0",2)+c(Je%60,"0",2)}function He(Ge,Je){return c(Ge.getUTCDate(),Je,2)}function lt(Ge,Je){return c(Ge.getUTCHours(),Je,2)}function mt(Ge,Je){return c(Ge.getUTCHours()%12||12,Je,2)}function Ht(Ge,Je){return c(1+t.utcDay.count(t.utcYear(Ge),Ge),Je,3)}function at(Ge,Je){return c(Ge.getUTCMilliseconds(),Je,3)}function ct(Ge,Je){return at(Ge,Je)+"000"}function ar(Ge,Je){return c(Ge.getUTCMonth()+1,Je,2)}function Vt(Ge,Je){return c(Ge.getUTCMinutes(),Je,2)}function rr(Ge,Je){return c(Ge.getUTCSeconds(),Je,2)}function tt(Ge){var Je=Ge.getUTCDay();return Je===0?7:Je}function je(Ge,Je){return c(t.utcSunday.count(t.utcYear(Ge)-1,Ge),Je,2)}function Ue(Ge,Je){var We=Ge.getUTCDay();return Ge=We>=4||We===0?t.utcThursday(Ge):t.utcThursday.ceil(Ge),c(t.utcThursday.count(t.utcYear(Ge),Ge)+(t.utcYear(Ge).getUTCDay()===4),Je,2)}function Ae(Ge){return Ge.getUTCDay()}function rt(Ge,Je){return c(t.utcMonday.count(t.utcYear(Ge)-1,Ge),Je,2)}function St(Ge,Je){return c(Ge.getUTCFullYear()%100,Je,2)}function Tt(Ge,Je){return c(Ge.getUTCFullYear()%1e4,Je,4)}function dt(){return"+0000"}function Et(){return"%"}function pt(Ge){return+Ge}function jt(Ge){return Math.floor(+Ge/1e3)}var or;mr({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function mr(Ge){return or=a(Ge),e.timeFormat=or.format,e.timeParse=or.parse,e.utcFormat=or.utcFormat,e.utcParse=or.utcParse,or}var Ar="%Y-%m-%dT%H:%M:%S.%LZ";function ei(Ge){return Ge.toISOString()}var qr=Date.prototype.toISOString?ei:e.utcFormat(Ar);function jr(Ge){var Je=new Date(Ge);return isNaN(Je)?null:Je}var gt=+new Date("2000-01-01T00:00:00.000Z")?jr:e.utcParse(Ar);e.isoFormat=qr,e.isoParse=gt,e.timeFormatDefaultLocale=mr,e.timeFormatLocale=a,Object.defineProperty(e,"__esModule",{value:!0})})});var kq=ye((w6,See)=>{(function(e,t){typeof w6=="object"&&typeof See!="undefined"?t(w6):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e.d3=e.d3||{}))})(w6,function(e){"use strict";function t(C){return Math.abs(C=Math.round(C))>=1e21?C.toLocaleString("en").replace(/,/g,""):C.toString(10)}function r(C,S){if((g=(C=S?C.toExponential(S-1):C.toExponential()).indexOf("e"))<0)return null;var g,P=C.slice(0,g);return[P.length>1?P[0]+P.slice(2):P,+C.slice(g+1)]}function n(C){return C=r(Math.abs(C)),C?C[1]:NaN}function i(C,S){return function(g,P){for(var E=g.length,z=[],q=0,V=C[0],G=0;E>0&&V>0&&(G+V+1>P&&(V=Math.max(1,P-G)),z.push(g.substring(E-=V,E+V)),!((G+=V+1)>P));)V=C[q=(q+1)%C.length];return z.reverse().join(S)}}function a(C){return function(S){return S.replace(/[0-9]/g,function(g){return C[+g]})}}var o=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function s(C){if(!(S=o.exec(C)))throw new Error("invalid format: "+C);var S;return new l({fill:S[1],align:S[2],sign:S[3],symbol:S[4],zero:S[5],width:S[6],comma:S[7],precision:S[8]&&S[8].slice(1),trim:S[9],type:S[10]})}s.prototype=l.prototype;function l(C){this.fill=C.fill===void 0?" ":C.fill+"",this.align=C.align===void 0?">":C.align+"",this.sign=C.sign===void 0?"-":C.sign+"",this.symbol=C.symbol===void 0?"":C.symbol+"",this.zero=!!C.zero,this.width=C.width===void 0?void 0:+C.width,this.comma=!!C.comma,this.precision=C.precision===void 0?void 0:+C.precision,this.trim=!!C.trim,this.type=C.type===void 0?"":C.type+""}l.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function u(C){e:for(var S=C.length,g=1,P=-1,E;g0&&(P=0);break}return P>0?C.slice(0,P)+C.slice(E+1):C}var c;function f(C,S){var g=r(C,S);if(!g)return C+"";var P=g[0],E=g[1],z=E-(c=Math.max(-8,Math.min(8,Math.floor(E/3)))*3)+1,q=P.length;return z===q?P:z>q?P+new Array(z-q+1).join("0"):z>0?P.slice(0,z)+"."+P.slice(z):"0."+new Array(1-z).join("0")+r(C,Math.max(0,S+z-1))[0]}function h(C,S){var g=r(C,S);if(!g)return C+"";var P=g[0],E=g[1];return E<0?"0."+new Array(-E).join("0")+P:P.length>E+1?P.slice(0,E+1)+"."+P.slice(E+1):P+new Array(E-P.length+2).join("0")}var d={"%":function(C,S){return(C*100).toFixed(S)},b:function(C){return Math.round(C).toString(2)},c:function(C){return C+""},d:t,e:function(C,S){return C.toExponential(S)},f:function(C,S){return C.toFixed(S)},g:function(C,S){return C.toPrecision(S)},o:function(C){return Math.round(C).toString(8)},p:function(C,S){return h(C*100,S)},r:h,s:f,X:function(C){return Math.round(C).toString(16).toUpperCase()},x:function(C){return Math.round(C).toString(16)}};function v(C){return C}var m=Array.prototype.map,b=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function p(C){var S=C.grouping===void 0||C.thousands===void 0?v:i(m.call(C.grouping,Number),C.thousands+""),g=C.currency===void 0?"":C.currency[0]+"",P=C.currency===void 0?"":C.currency[1]+"",E=C.decimal===void 0?".":C.decimal+"",z=C.numerals===void 0?v:a(m.call(C.numerals,String)),q=C.percent===void 0?"%":C.percent+"",V=C.minus===void 0?"-":C.minus+"",G=C.nan===void 0?"NaN":C.nan+"";function Z(N){N=s(N);var H=N.fill,ie=N.align,ae=N.sign,_e=N.symbol,Ee=N.zero,Ce=N.width,ge=N.comma,re=N.precision,Se=N.trim,ke=N.type;ke==="n"?(ge=!0,ke="g"):d[ke]||(re===void 0&&(re=12),Se=!0,ke="g"),(Ee||H==="0"&&ie==="=")&&(Ee=!0,H="0",ie="=");var be=_e==="$"?g:_e==="#"&&/[boxX]/.test(ke)?"0"+ke.toLowerCase():"",Be=_e==="$"?P:/[%p]/.test(ke)?q:"",Le=d[ke],me=/[defgprs%]/.test(ke);re=re===void 0?6:/[gprs]/.test(ke)?Math.max(1,Math.min(21,re)):Math.max(0,Math.min(20,re));function Pe(ce){var He=be,lt=Be,mt,Ht,at;if(ke==="c")lt=Le(ce)+lt,ce="";else{ce=+ce;var ct=ce<0||1/ce<0;if(ce=isNaN(ce)?G:Le(Math.abs(ce),re),Se&&(ce=u(ce)),ct&&+ce==0&&ae!=="+"&&(ct=!1),He=(ct?ae==="("?ae:V:ae==="-"||ae==="("?"":ae)+He,lt=(ke==="s"?b[8+c/3]:"")+lt+(ct&&ae==="("?")":""),me){for(mt=-1,Ht=ce.length;++mtat||at>57){lt=(at===46?E+ce.slice(mt+1):ce.slice(mt))+lt,ce=ce.slice(0,mt);break}}}ge&&!Ee&&(ce=S(ce,1/0));var ar=He.length+ce.length+lt.length,Vt=ar>1)+He+ce+lt+Vt.slice(ar);break;default:ce=Vt+He+ce+lt;break}return z(ce)}return Pe.toString=function(){return N+""},Pe}function j(N,H){var ie=Z((N=s(N),N.type="f",N)),ae=Math.max(-8,Math.min(8,Math.floor(n(H)/3)))*3,_e=Math.pow(10,-ae),Ee=b[8+ae/3];return function(Ce){return ie(_e*Ce)+Ee}}return{format:Z,formatPrefix:j}}var k;M({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"});function M(C){return k=p(C),e.format=k.format,e.formatPrefix=k.formatPrefix,k}function T(C){return Math.max(0,-n(Math.abs(C)))}function L(C,S){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(n(S)/3)))*3-n(Math.abs(C)))}function x(C,S){return C=Math.abs(C),S=Math.abs(S)-C,Math.max(0,n(S)-n(C))+1}e.FormatSpecifier=l,e.formatDefaultLocale=M,e.formatLocale=p,e.formatSpecifier=s,e.precisionFixed=T,e.precisionPrefix=L,e.precisionRound=x,Object.defineProperty(e,"__esModule",{value:!0})})});var Eee=ye((Mrr,Mee)=>{"use strict";Mee.exports=function(e){for(var t=e.length,r,n=0;n13)&&r!==32&&r!==133&&r!==160&&r!==5760&&r!==6158&&(r<8192||r>8205)&&r!==8232&&r!==8233&&r!==8239&&r!==8287&&r!==8288&&r!==12288&&r!==65279)return!1;return!0}});var Eo=ye((Err,kee)=>{"use strict";var Ctt=Eee();kee.exports=function(e){var t=typeof e;if(t==="string"){var r=e;if(e=+e,e===0&&Ctt(r))return!1}else if(t!=="number")return!1;return e-e<1}});var fs=ye((krr,Cee)=>{"use strict";Cee.exports={BADNUM:void 0,FP_SAFE:Number.MAX_VALUE*1e-4,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,ONEMILLI:1,ONEMICROSEC:.001,EPOCHJD:24405875e-1,ALMOST_EQUAL:1-1e-6,LOG_CLIP:10,MINUS_SIGN:"\u2212"}});var Cq=ye((T6,Lee)=>{(function(e,t){typeof T6=="object"&&typeof Lee!="undefined"?t(T6):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e["base64-arraybuffer"]={}))})(T6,function(e){"use strict";for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=typeof Uint8Array=="undefined"?[]:new Uint8Array(256),n=0;n>2],c+=t[(s[l]&3)<<4|s[l+1]>>4],c+=t[(s[l+1]&15)<<2|s[l+2]>>6],c+=t[s[l+2]&63];return u%3===2?c=c.substring(0,c.length-1)+"=":u%3===1&&(c=c.substring(0,c.length-2)+"=="),c},a=function(o){var s=o.length*.75,l=o.length,u,c=0,f,h,d,v;o[o.length-1]==="="&&(s--,o[o.length-2]==="="&&s--);var m=new ArrayBuffer(s),b=new Uint8Array(m);for(u=0;u>4,b[c++]=(h&15)<<4|d>>2,b[c++]=(d&3)<<6|v&63;return m};e.decode=a,e.encode=i,Object.defineProperty(e,"__esModule",{value:!0})})});var Ay=ye((Crr,Pee)=>{"use strict";Pee.exports=function(t){return window&&window.process&&window.process.versions?Object.prototype.toString.call(t)==="[object Object]":Object.prototype.toString.call(t)==="[object Object]"&&Object.getPrototypeOf(t).hasOwnProperty("hasOwnProperty")}});var Yd=ye(xg=>{"use strict";var Ltt=Cq().decode,Ptt=Ay(),Lq=Array.isArray,Itt=ArrayBuffer,Rtt=DataView;function Iee(e){return Itt.isView(e)&&!(e instanceof Rtt)}xg.isTypedArray=Iee;function A6(e){return Lq(e)||Iee(e)}xg.isArrayOrTypedArray=A6;function Dtt(e){return!A6(e[0])}xg.isArray1D=Dtt;xg.ensureArray=function(e,t){return Lq(e)||(e=[]),e.length=t,e};var Ld={u1c:typeof Uint8ClampedArray=="undefined"?void 0:Uint8ClampedArray,i1:typeof Int8Array=="undefined"?void 0:Int8Array,u1:typeof Uint8Array=="undefined"?void 0:Uint8Array,i2:typeof Int16Array=="undefined"?void 0:Int16Array,u2:typeof Uint16Array=="undefined"?void 0:Uint16Array,i4:typeof Int32Array=="undefined"?void 0:Int32Array,u4:typeof Uint32Array=="undefined"?void 0:Uint32Array,f4:typeof Float32Array=="undefined"?void 0:Float32Array,f8:typeof Float64Array=="undefined"?void 0:Float64Array};Ld.uint8c=Ld.u1c;Ld.uint8=Ld.u1;Ld.int8=Ld.i1;Ld.uint16=Ld.u2;Ld.int16=Ld.i2;Ld.uint32=Ld.u4;Ld.int32=Ld.i4;Ld.float32=Ld.f4;Ld.float64=Ld.f8;function Pq(e){return e.constructor===ArrayBuffer}xg.isArrayBuffer=Pq;xg.decodeTypedArraySpec=function(e){var t=[],r=Ftt(e),n=r.dtype,i=Ld[n];if(!i)throw new Error('Error in dtype: "'+n+'"');var a=i.BYTES_PER_ELEMENT,o=r.bdata;Pq(o)||(o=Ltt(o));var s=r.shape===void 0?[o.byteLength/a]:(""+r.shape).split(",");s.reverse();var l=s.length,u,c,f=+s[0],h=a*f,d=0;if(l===1)t=new i(o);else if(l===2)for(u=+s[1],c=0;c{"use strict";var Dee=Eo(),Rq=Yd().isArrayOrTypedArray;Oee.exports=function(t,r){if(Dee(r))r=String(r);else if(typeof r!="string"||r.slice(-4)==="[-1]")throw"bad property string";var n=r.split("."),i,a,o,s;for(s=0;s{"use strict";var v3=zS(),Ntt=/^\w*$/,Utt=0,Bee=1,S6=2,Nee=3,mb=4;Uee.exports=function(t,r,n,i){n=n||"name",i=i||"value";var a,o,s,l={};r&&r.length?(s=v3(t,r),o=s.get()):o=t,r=r||"";var u={};if(o)for(a=0;a2)return l[d]=l[d]|S6,f.set(h,null);if(c){for(a=d;a{"use strict";var Vtt=/^(.*)(\.[^\.\[\]]+|\[\d\])$/,Gtt=/^[^\.\[\]]+$/;Gee.exports=function(e,t){for(;t;){var r=e.match(Vtt);if(r)e=r[1];else if(e.match(Gtt))e="";else throw new Error("bad relativeAttr call:"+[e,t]);if(t.charAt(0)==="^")t=t.slice(1);else break}return e&&t.charAt(0)!=="["?e+"."+t:e+t}});var M6=ye((Drr,jee)=>{"use strict";var Htt=Eo();jee.exports=function(t,r){if(t>0)return Math.log(t)/Math.LN10;var n=Math.log(Math.min(r[0],r[1]))/Math.LN10;return Htt(n)||(n=Math.log(Math.max(r[0],r[1]))/Math.LN10-6),n}});var Zee=ye((Frr,Xee)=>{"use strict";var Wee=Yd().isArrayOrTypedArray,qS=Ay();Xee.exports=function e(t,r){for(var n in r){var i=r[n],a=t[n];if(a!==i)if(n.charAt(0)==="_"||typeof i=="function"){if(n in t)continue;t[n]=i}else if(Wee(i)&&Wee(a)&&qS(i[0])){if(n==="customdata"||n==="ids")continue;for(var o=Math.min(i.length,a.length),s=0;s{"use strict";function jtt(e,t){var r=e%t;return r<0?r+t:r}function Wtt(e,t){return Math.abs(e)>t/2?e-Math.round(e/t)*t:e}Yee.exports={mod:jtt,modHalf:Wtt}});var fd=ye((qrr,E6)=>{(function(e){var t=/^\s+/,r=/\s+$/,n=0,i=e.round,a=e.min,o=e.max,s=e.random;function l(me,Pe){if(me=me||"",Pe=Pe||{},me instanceof l)return me;if(!(this instanceof l))return new l(me,Pe);var ce=u(me);this._originalInput=me,this._r=ce.r,this._g=ce.g,this._b=ce.b,this._a=ce.a,this._roundA=i(100*this._a)/100,this._format=Pe.format||ce.format,this._gradientType=Pe.gradientType,this._r<1&&(this._r=i(this._r)),this._g<1&&(this._g=i(this._g)),this._b<1&&(this._b=i(this._b)),this._ok=ce.ok,this._tc_id=n++}l.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var me=this.toRgb();return(me.r*299+me.g*587+me.b*114)/1e3},getLuminance:function(){var me=this.toRgb(),Pe,ce,He,lt,mt,Ht;return Pe=me.r/255,ce=me.g/255,He=me.b/255,Pe<=.03928?lt=Pe/12.92:lt=e.pow((Pe+.055)/1.055,2.4),ce<=.03928?mt=ce/12.92:mt=e.pow((ce+.055)/1.055,2.4),He<=.03928?Ht=He/12.92:Ht=e.pow((He+.055)/1.055,2.4),.2126*lt+.7152*mt+.0722*Ht},setAlpha:function(me){return this._a=N(me),this._roundA=i(100*this._a)/100,this},toHsv:function(){var me=d(this._r,this._g,this._b);return{h:me.h*360,s:me.s,v:me.v,a:this._a}},toHsvString:function(){var me=d(this._r,this._g,this._b),Pe=i(me.h*360),ce=i(me.s*100),He=i(me.v*100);return this._a==1?"hsv("+Pe+", "+ce+"%, "+He+"%)":"hsva("+Pe+", "+ce+"%, "+He+"%, "+this._roundA+")"},toHsl:function(){var me=f(this._r,this._g,this._b);return{h:me.h*360,s:me.s,l:me.l,a:this._a}},toHslString:function(){var me=f(this._r,this._g,this._b),Pe=i(me.h*360),ce=i(me.s*100),He=i(me.l*100);return this._a==1?"hsl("+Pe+", "+ce+"%, "+He+"%)":"hsla("+Pe+", "+ce+"%, "+He+"%, "+this._roundA+")"},toHex:function(me){return m(this._r,this._g,this._b,me)},toHexString:function(me){return"#"+this.toHex(me)},toHex8:function(me){return b(this._r,this._g,this._b,this._a,me)},toHex8String:function(me){return"#"+this.toHex8(me)},toRgb:function(){return{r:i(this._r),g:i(this._g),b:i(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+i(this._r)+", "+i(this._g)+", "+i(this._b)+")":"rgba("+i(this._r)+", "+i(this._g)+", "+i(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:i(H(this._r,255)*100)+"%",g:i(H(this._g,255)*100)+"%",b:i(H(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+i(H(this._r,255)*100)+"%, "+i(H(this._g,255)*100)+"%, "+i(H(this._b,255)*100)+"%)":"rgba("+i(H(this._r,255)*100)+"%, "+i(H(this._g,255)*100)+"%, "+i(H(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:Z[m(this._r,this._g,this._b,!0)]||!1},toFilter:function(me){var Pe="#"+p(this._r,this._g,this._b,this._a),ce=Pe,He=this._gradientType?"GradientType = 1, ":"";if(me){var lt=l(me);ce="#"+p(lt._r,lt._g,lt._b,lt._a)}return"progid:DXImageTransform.Microsoft.gradient("+He+"startColorstr="+Pe+",endColorstr="+ce+")"},toString:function(me){var Pe=!!me;me=me||this._format;var ce=!1,He=this._a<1&&this._a>=0,lt=!Pe&&He&&(me==="hex"||me==="hex6"||me==="hex3"||me==="hex4"||me==="hex8"||me==="name");return lt?me==="name"&&this._a===0?this.toName():this.toRgbString():(me==="rgb"&&(ce=this.toRgbString()),me==="prgb"&&(ce=this.toPercentageRgbString()),(me==="hex"||me==="hex6")&&(ce=this.toHexString()),me==="hex3"&&(ce=this.toHexString(!0)),me==="hex4"&&(ce=this.toHex8String(!0)),me==="hex8"&&(ce=this.toHex8String()),me==="name"&&(ce=this.toName()),me==="hsl"&&(ce=this.toHslString()),me==="hsv"&&(ce=this.toHsvString()),ce||this.toHexString())},clone:function(){return l(this.toString())},_applyModification:function(me,Pe){var ce=me.apply(null,[this].concat([].slice.call(Pe)));return this._r=ce._r,this._g=ce._g,this._b=ce._b,this.setAlpha(ce._a),this},lighten:function(){return this._applyModification(L,arguments)},brighten:function(){return this._applyModification(x,arguments)},darken:function(){return this._applyModification(C,arguments)},desaturate:function(){return this._applyModification(k,arguments)},saturate:function(){return this._applyModification(M,arguments)},greyscale:function(){return this._applyModification(T,arguments)},spin:function(){return this._applyModification(S,arguments)},_applyCombination:function(me,Pe){return me.apply(null,[this].concat([].slice.call(Pe)))},analogous:function(){return this._applyCombination(q,arguments)},complement:function(){return this._applyCombination(g,arguments)},monochromatic:function(){return this._applyCombination(V,arguments)},splitcomplement:function(){return this._applyCombination(z,arguments)},triad:function(){return this._applyCombination(P,arguments)},tetrad:function(){return this._applyCombination(E,arguments)}},l.fromRatio=function(me,Pe){if(typeof me=="object"){var ce={};for(var He in me)me.hasOwnProperty(He)&&(He==="a"?ce[He]=me[He]:ce[He]=ge(me[He]));me=ce}return l(me,Pe)};function u(me){var Pe={r:0,g:0,b:0},ce=1,He=null,lt=null,mt=null,Ht=!1,at=!1;return typeof me=="string"&&(me=Be(me)),typeof me=="object"&&(be(me.r)&&be(me.g)&&be(me.b)?(Pe=c(me.r,me.g,me.b),Ht=!0,at=String(me.r).substr(-1)==="%"?"prgb":"rgb"):be(me.h)&&be(me.s)&&be(me.v)?(He=ge(me.s),lt=ge(me.v),Pe=v(me.h,He,lt),Ht=!0,at="hsv"):be(me.h)&&be(me.s)&&be(me.l)&&(He=ge(me.s),mt=ge(me.l),Pe=h(me.h,He,mt),Ht=!0,at="hsl"),me.hasOwnProperty("a")&&(ce=me.a)),ce=N(ce),{ok:Ht,format:me.format||at,r:a(255,o(Pe.r,0)),g:a(255,o(Pe.g,0)),b:a(255,o(Pe.b,0)),a:ce}}function c(me,Pe,ce){return{r:H(me,255)*255,g:H(Pe,255)*255,b:H(ce,255)*255}}function f(me,Pe,ce){me=H(me,255),Pe=H(Pe,255),ce=H(ce,255);var He=o(me,Pe,ce),lt=a(me,Pe,ce),mt,Ht,at=(He+lt)/2;if(He==lt)mt=Ht=0;else{var ct=He-lt;switch(Ht=at>.5?ct/(2-He-lt):ct/(He+lt),He){case me:mt=(Pe-ce)/ct+(Pe1&&(rr-=1),rr<1/6?ar+(Vt-ar)*6*rr:rr<1/2?Vt:rr<2/3?ar+(Vt-ar)*(2/3-rr)*6:ar}if(Pe===0)He=lt=mt=ce;else{var at=ce<.5?ce*(1+Pe):ce+Pe-ce*Pe,ct=2*ce-at;He=Ht(ct,at,me+1/3),lt=Ht(ct,at,me),mt=Ht(ct,at,me-1/3)}return{r:He*255,g:lt*255,b:mt*255}}function d(me,Pe,ce){me=H(me,255),Pe=H(Pe,255),ce=H(ce,255);var He=o(me,Pe,ce),lt=a(me,Pe,ce),mt,Ht,at=He,ct=He-lt;if(Ht=He===0?0:ct/He,He==lt)mt=0;else{switch(He){case me:mt=(Pe-ce)/ct+(Pe>1)+720)%360;--Pe;)He.h=(He.h+lt)%360,mt.push(l(He));return mt}function V(me,Pe){Pe=Pe||6;for(var ce=l(me).toHsv(),He=ce.h,lt=ce.s,mt=ce.v,Ht=[],at=1/Pe;Pe--;)Ht.push(l({h:He,s:lt,v:mt})),mt=(mt+at)%1;return Ht}l.mix=function(me,Pe,ce){ce=ce===0?0:ce||50;var He=l(me).toRgb(),lt=l(Pe).toRgb(),mt=ce/100,Ht={r:(lt.r-He.r)*mt+He.r,g:(lt.g-He.g)*mt+He.g,b:(lt.b-He.b)*mt+He.b,a:(lt.a-He.a)*mt+He.a};return l(Ht)},l.readability=function(me,Pe){var ce=l(me),He=l(Pe);return(e.max(ce.getLuminance(),He.getLuminance())+.05)/(e.min(ce.getLuminance(),He.getLuminance())+.05)},l.isReadable=function(me,Pe,ce){var He=l.readability(me,Pe),lt,mt;switch(mt=!1,lt=Le(ce),lt.level+lt.size){case"AAsmall":case"AAAlarge":mt=He>=4.5;break;case"AAlarge":mt=He>=3;break;case"AAAsmall":mt=He>=7;break}return mt},l.mostReadable=function(me,Pe,ce){var He=null,lt=0,mt,Ht,at,ct;ce=ce||{},Ht=ce.includeFallbackColors,at=ce.level,ct=ce.size;for(var ar=0;arlt&&(lt=mt,He=l(Pe[ar]));return l.isReadable(me,He,{level:at,size:ct})||!Ht?He:(ce.includeFallbackColors=!1,l.mostReadable(me,["#fff","#000"],ce))};var G=l.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},Z=l.hexNames=j(G);function j(me){var Pe={};for(var ce in me)me.hasOwnProperty(ce)&&(Pe[me[ce]]=ce);return Pe}function N(me){return me=parseFloat(me),(isNaN(me)||me<0||me>1)&&(me=1),me}function H(me,Pe){_e(me)&&(me="100%");var ce=Ee(me);return me=a(Pe,o(0,parseFloat(me))),ce&&(me=parseInt(me*Pe,10)/100),e.abs(me-Pe)<1e-6?1:me%Pe/parseFloat(Pe)}function ie(me){return a(1,o(0,me))}function ae(me){return parseInt(me,16)}function _e(me){return typeof me=="string"&&me.indexOf(".")!=-1&&parseFloat(me)===1}function Ee(me){return typeof me=="string"&&me.indexOf("%")!=-1}function Ce(me){return me.length==1?"0"+me:""+me}function ge(me){return me<=1&&(me=me*100+"%"),me}function re(me){return e.round(parseFloat(me)*255).toString(16)}function Se(me){return ae(me)/255}var ke=function(){var me="[-\\+]?\\d+%?",Pe="[-\\+]?\\d*\\.\\d+%?",ce="(?:"+Pe+")|(?:"+me+")",He="[\\s|\\(]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")\\s*\\)?",lt="[\\s|\\(]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")\\s*\\)?";return{CSS_UNIT:new RegExp(ce),rgb:new RegExp("rgb"+He),rgba:new RegExp("rgba"+lt),hsl:new RegExp("hsl"+He),hsla:new RegExp("hsla"+lt),hsv:new RegExp("hsv"+He),hsva:new RegExp("hsva"+lt),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function be(me){return!!ke.CSS_UNIT.exec(me)}function Be(me){me=me.replace(t,"").replace(r,"").toLowerCase();var Pe=!1;if(G[me])me=G[me],Pe=!0;else if(me=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var ce;return(ce=ke.rgb.exec(me))?{r:ce[1],g:ce[2],b:ce[3]}:(ce=ke.rgba.exec(me))?{r:ce[1],g:ce[2],b:ce[3],a:ce[4]}:(ce=ke.hsl.exec(me))?{h:ce[1],s:ce[2],l:ce[3]}:(ce=ke.hsla.exec(me))?{h:ce[1],s:ce[2],l:ce[3],a:ce[4]}:(ce=ke.hsv.exec(me))?{h:ce[1],s:ce[2],v:ce[3]}:(ce=ke.hsva.exec(me))?{h:ce[1],s:ce[2],v:ce[3],a:ce[4]}:(ce=ke.hex8.exec(me))?{r:ae(ce[1]),g:ae(ce[2]),b:ae(ce[3]),a:Se(ce[4]),format:Pe?"name":"hex8"}:(ce=ke.hex6.exec(me))?{r:ae(ce[1]),g:ae(ce[2]),b:ae(ce[3]),format:Pe?"name":"hex"}:(ce=ke.hex4.exec(me))?{r:ae(ce[1]+""+ce[1]),g:ae(ce[2]+""+ce[2]),b:ae(ce[3]+""+ce[3]),a:Se(ce[4]+""+ce[4]),format:Pe?"name":"hex8"}:(ce=ke.hex3.exec(me))?{r:ae(ce[1]+""+ce[1]),g:ae(ce[2]+""+ce[2]),b:ae(ce[3]+""+ce[3]),format:Pe?"name":"hex"}:!1}function Le(me){var Pe,ce;return me=me||{level:"AA",size:"small"},Pe=(me.level||"AA").toUpperCase(),ce=(me.size||"small").toLowerCase(),Pe!=="AA"&&Pe!=="AAA"&&(Pe="AA"),ce!=="small"&&ce!=="large"&&(ce="small"),{level:Pe,size:ce}}typeof E6!="undefined"&&E6.exports?E6.exports=l:window.tinycolor=l})(Math)});var Ao=ye(NS=>{"use strict";var Kee=Ay(),OS=Array.isArray;function Xtt(e,t){var r,n;for(r=0;r{"use strict";Jee.exports=function(e){var t=e.variantValues,r=e.editType,n=e.colorEditType;n===void 0&&(n=r);var i={editType:r,valType:"integer",min:1,max:1e3,extras:["normal","bold"],dflt:"normal"};e.noNumericWeightValues&&(i.valType="enumerated",i.values=i.extras,i.extras=void 0,i.min=void 0,i.max=void 0);var a={family:{valType:"string",noBlank:!0,strict:!0,editType:r},size:{valType:"number",min:1,editType:r},color:{valType:"color",editType:n},weight:i,style:{editType:r,valType:"enumerated",values:["normal","italic"],dflt:"normal"},variant:e.noFontVariant?void 0:{editType:r,valType:"enumerated",values:t||["normal","small-caps","all-small-caps","all-petite-caps","petite-caps","unicase"],dflt:"normal"},textcase:e.noFontTextcase?void 0:{editType:r,valType:"enumerated",values:["normal","word caps","upper","lower"],dflt:"normal"},lineposition:e.noFontLineposition?void 0:{editType:r,valType:"flaglist",flags:["under","over","through"],extras:["none"],dflt:"none"},shadow:e.noFontShadow?void 0:{editType:r,valType:"string",dflt:e.autoShadowDflt?"auto":"none"},editType:r};return e.autoSize&&(a.size.dflt="auto"),e.autoColor&&(a.color.dflt="auto"),e.arrayOk&&(a.family.arrayOk=!0,a.weight.arrayOk=!0,a.style.arrayOk=!0,e.noFontVariant||(a.variant.arrayOk=!0),e.noFontTextcase||(a.textcase.arrayOk=!0),e.noFontLineposition||(a.lineposition.arrayOk=!0),e.noFontShadow||(a.shadow.arrayOk=!0),a.size.arrayOk=!0,a.color.arrayOk=!0),a}});var US=ye((Nrr,$ee)=>{"use strict";$ee.exports={YANGLE:60,HOVERARROWSIZE:6,HOVERTEXTPAD:3,HOVERFONTSIZE:13,HOVERFONT:"Arial, sans-serif",HOVERMINTIME:50,HOVERID:"-hover"}});var W1=ye((Urr,tte)=>{"use strict";var Qee=US(),ete=ec(),Dq=ete({editType:"none"});Dq.family.dflt=Qee.HOVERFONT;Dq.size.dflt=Qee.HOVERFONTSIZE;tte.exports={clickmode:{valType:"flaglist",flags:["event","select"],dflt:"event",editType:"plot",extras:["none"]},dragmode:{valType:"enumerated",values:["zoom","pan","select","lasso","drawclosedpath","drawopenpath","drawline","drawrect","drawcircle","orbit","turntable",!1],dflt:"zoom",editType:"modebar"},hovermode:{valType:"enumerated",values:["x","y","closest",!1,"x unified","y unified"],dflt:"closest",editType:"modebar"},hoversort:{valType:"enumerated",values:["trace","value descending","value ascending"],dflt:"trace",editType:"none"},hoversubplots:{valType:"enumerated",values:["single","overlaying","axis"],dflt:"overlaying",editType:"none"},hoveranywhere:{valType:"boolean",dflt:!1,editType:"none"},clickanywhere:{valType:"boolean",dflt:!1,editType:"none"},hoverdistance:{valType:"integer",min:-1,dflt:20,editType:"none"},spikedistance:{valType:"integer",min:-1,dflt:-1,editType:"none"},hoverlabel:{bgcolor:{valType:"color",editType:"none"},bordercolor:{valType:"color",editType:"none"},font:Dq,grouptitlefont:ete({editType:"none"}),align:{valType:"enumerated",values:["left","right","auto"],dflt:"auto",editType:"none"},namelength:{valType:"integer",min:-1,dflt:15,editType:"none"},showarrow:{valType:"boolean",dflt:!0,editType:"none"},editType:"none"},selectdirection:{valType:"enumerated",values:["h","v","d","any"],dflt:"any",editType:"none"}}});var g3=ye((Vrr,rte)=>{"use strict";var Ztt=ec(),VS=W1().hoverlabel,GS=Ao().extendFlat;rte.exports={hoverlabel:{bgcolor:GS({},VS.bgcolor,{arrayOk:!0}),bordercolor:GS({},VS.bordercolor,{arrayOk:!0}),font:Ztt({arrayOk:!0,editType:"none"}),align:GS({},VS.align,{arrayOk:!0}),namelength:GS({},VS.namelength,{arrayOk:!0}),showarrow:GS({},VS.showarrow),editType:"none"}}});var Gl=ye((Grr,ite)=>{"use strict";var Ytt=ec(),Ktt=g3();ite.exports={type:{valType:"enumerated",values:[],dflt:"scatter",editType:"calc+clearAxisTypes",_noTemplating:!0},visible:{valType:"enumerated",values:[!0,!1,"legendonly"],dflt:!0,editType:"calc"},showlegend:{valType:"boolean",dflt:!0,editType:"style"},legend:{valType:"subplotid",dflt:"legend",editType:"style"},legendgroup:{valType:"string",dflt:"",editType:"style"},legendgrouptitle:{text:{valType:"string",dflt:"",editType:"style"},font:Ytt({editType:"style"}),editType:"style"},legendrank:{valType:"number",dflt:1e3,editType:"style"},legendwidth:{valType:"number",min:0,editType:"style"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"style"},name:{valType:"string",editType:"style"},uid:{valType:"string",editType:"plot",anim:!0},ids:{valType:"data_array",editType:"calc",anim:!0},customdata:{valType:"data_array",editType:"calc"},meta:{valType:"any",arrayOk:!0,editType:"plot"},selectedpoints:{valType:"any",editType:"calc"},hoverinfo:{valType:"flaglist",flags:["x","y","z","text","name"],extras:["all","none","skip"],arrayOk:!0,dflt:"all",editType:"none"},hoverlabel:Ktt.hoverlabel,stream:{token:{valType:"string",noBlank:!0,strict:!0,editType:"calc"},maxpoints:{valType:"number",min:0,max:1e4,dflt:500,editType:"calc"},editType:"calc"},uirevision:{valType:"any",editType:"none"}}});var yb=ye((Hrr,ote)=>{"use strict";var Jtt=fd(),k6={Greys:[[0,"rgb(0,0,0)"],[1,"rgb(255,255,255)"]],YlGnBu:[[0,"rgb(8,29,88)"],[.125,"rgb(37,52,148)"],[.25,"rgb(34,94,168)"],[.375,"rgb(29,145,192)"],[.5,"rgb(65,182,196)"],[.625,"rgb(127,205,187)"],[.75,"rgb(199,233,180)"],[.875,"rgb(237,248,217)"],[1,"rgb(255,255,217)"]],Greens:[[0,"rgb(0,68,27)"],[.125,"rgb(0,109,44)"],[.25,"rgb(35,139,69)"],[.375,"rgb(65,171,93)"],[.5,"rgb(116,196,118)"],[.625,"rgb(161,217,155)"],[.75,"rgb(199,233,192)"],[.875,"rgb(229,245,224)"],[1,"rgb(247,252,245)"]],YlOrRd:[[0,"rgb(128,0,38)"],[.125,"rgb(189,0,38)"],[.25,"rgb(227,26,28)"],[.375,"rgb(252,78,42)"],[.5,"rgb(253,141,60)"],[.625,"rgb(254,178,76)"],[.75,"rgb(254,217,118)"],[.875,"rgb(255,237,160)"],[1,"rgb(255,255,204)"]],Bluered:[[0,"rgb(0,0,255)"],[1,"rgb(255,0,0)"]],RdBu:[[0,"rgb(5,10,172)"],[.35,"rgb(106,137,247)"],[.5,"rgb(190,190,190)"],[.6,"rgb(220,170,132)"],[.7,"rgb(230,145,90)"],[1,"rgb(178,10,28)"]],Reds:[[0,"rgb(220,220,220)"],[.2,"rgb(245,195,157)"],[.4,"rgb(245,160,105)"],[1,"rgb(178,10,28)"]],Blues:[[0,"rgb(5,10,172)"],[.35,"rgb(40,60,190)"],[.5,"rgb(70,100,245)"],[.6,"rgb(90,120,245)"],[.7,"rgb(106,137,247)"],[1,"rgb(220,220,220)"]],Picnic:[[0,"rgb(0,0,255)"],[.1,"rgb(51,153,255)"],[.2,"rgb(102,204,255)"],[.3,"rgb(153,204,255)"],[.4,"rgb(204,204,255)"],[.5,"rgb(255,255,255)"],[.6,"rgb(255,204,255)"],[.7,"rgb(255,153,255)"],[.8,"rgb(255,102,204)"],[.9,"rgb(255,102,102)"],[1,"rgb(255,0,0)"]],Rainbow:[[0,"rgb(150,0,90)"],[.125,"rgb(0,0,200)"],[.25,"rgb(0,25,255)"],[.375,"rgb(0,152,255)"],[.5,"rgb(44,255,150)"],[.625,"rgb(151,255,0)"],[.75,"rgb(255,234,0)"],[.875,"rgb(255,111,0)"],[1,"rgb(255,0,0)"]],Portland:[[0,"rgb(12,51,131)"],[.25,"rgb(10,136,186)"],[.5,"rgb(242,211,56)"],[.75,"rgb(242,143,56)"],[1,"rgb(217,30,30)"]],Jet:[[0,"rgb(0,0,131)"],[.125,"rgb(0,60,170)"],[.375,"rgb(5,255,255)"],[.625,"rgb(255,255,0)"],[.875,"rgb(250,0,0)"],[1,"rgb(128,0,0)"]],Hot:[[0,"rgb(0,0,0)"],[.3,"rgb(230,0,0)"],[.6,"rgb(255,210,0)"],[1,"rgb(255,255,255)"]],Blackbody:[[0,"rgb(0,0,0)"],[.2,"rgb(230,0,0)"],[.4,"rgb(230,210,0)"],[.7,"rgb(255,255,255)"],[1,"rgb(160,200,255)"]],Earth:[[0,"rgb(0,0,130)"],[.1,"rgb(0,180,180)"],[.2,"rgb(40,210,40)"],[.4,"rgb(230,230,50)"],[.6,"rgb(120,70,20)"],[1,"rgb(255,255,255)"]],Electric:[[0,"rgb(0,0,0)"],[.15,"rgb(30,0,100)"],[.4,"rgb(120,0,100)"],[.6,"rgb(160,90,0)"],[.8,"rgb(230,200,0)"],[1,"rgb(255,250,220)"]],Viridis:[[0,"#440154"],[.06274509803921569,"#48186a"],[.12549019607843137,"#472d7b"],[.18823529411764706,"#424086"],[.25098039215686274,"#3b528b"],[.3137254901960784,"#33638d"],[.3764705882352941,"#2c728e"],[.4392156862745098,"#26828e"],[.5019607843137255,"#21918c"],[.5647058823529412,"#1fa088"],[.6274509803921569,"#28ae80"],[.6901960784313725,"#3fbc73"],[.7529411764705882,"#5ec962"],[.8156862745098039,"#84d44b"],[.8784313725490196,"#addc30"],[.9411764705882353,"#d8e219"],[1,"#fde725"]],Cividis:[[0,"rgb(0,32,76)"],[.058824,"rgb(0,42,102)"],[.117647,"rgb(0,52,110)"],[.176471,"rgb(39,63,108)"],[.235294,"rgb(60,74,107)"],[.294118,"rgb(76,85,107)"],[.352941,"rgb(91,95,109)"],[.411765,"rgb(104,106,112)"],[.470588,"rgb(117,117,117)"],[.529412,"rgb(131,129,120)"],[.588235,"rgb(146,140,120)"],[.647059,"rgb(161,152,118)"],[.705882,"rgb(176,165,114)"],[.764706,"rgb(192,177,109)"],[.823529,"rgb(209,191,102)"],[.882353,"rgb(225,204,92)"],[.941176,"rgb(243,219,79)"],[1,"rgb(255,233,69)"]]},nte=k6.RdBu;function $tt(e,t){if(t||(t=nte),!e)return t;function r(){try{e=k6[e]||JSON.parse(e)}catch(n){e=t}}return typeof e=="string"&&(r(),typeof e=="string"&&r()),ate(e)?e:t}function ate(e){var t=0;if(!Array.isArray(e)||e.length<2||!e[0]||!e[e.length-1]||+e[0][0]!=0||+e[e.length-1][0]!=1)return!1;for(var r=0;r{"use strict";_b.defaults=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"];_b.defaultLine="#444";_b.lightLine="#eee";_b.background="#fff";_b.borderLine="#BEC8D9";_b.lightFraction=100*10/11});var ka=ye((Wrr,ste)=>{"use strict";var wp=fd(),ert=Eo(),trt=Yd().isTypedArray,hd=ste.exports={},C6=Ih();hd.defaults=C6.defaults;var rrt=hd.defaultLine=C6.defaultLine;hd.lightLine=C6.lightLine;var zq=hd.background=C6.background;hd.tinyRGB=function(e){var t=e.toRgb();return"rgb("+Math.round(t.r)+", "+Math.round(t.g)+", "+Math.round(t.b)+")"};hd.rgb=function(e){return hd.tinyRGB(wp(e))};hd.opacity=function(e){return e?wp(e).getAlpha():0};hd.addOpacity=function(e,t){var r=wp(e).toRgb();return"rgba("+Math.round(r.r)+", "+Math.round(r.g)+", "+Math.round(r.b)+", "+t+")"};hd.combine=function(e,t){var r=wp(e).toRgb();if(r.a===1)return wp(e).toRgbString();var n=wp(t||zq).toRgb(),i=n.a===1?n:{r:255*(1-n.a)+n.r*n.a,g:255*(1-n.a)+n.g*n.a,b:255*(1-n.a)+n.b*n.a},a={r:i.r*(1-r.a)+r.r*r.a,g:i.g*(1-r.a)+r.g*r.a,b:i.b*(1-r.a)+r.b*r.a};return wp(a).toRgbString()};hd.interpolate=function(e,t,r){var n=wp(e).toRgb(),i=wp(t).toRgb(),a={r:r*n.r+(1-r)*i.r,g:r*n.g+(1-r)*i.g,b:r*n.b+(1-r)*i.b};return wp(a).toRgbString()};hd.contrast=function(e,t,r){var n=wp(e);n.getAlpha()!==1&&(n=wp(hd.combine(e,zq)));var i=n.isDark()?t?n.lighten(t):zq:r?n.darken(r):rrt;return i.toString()};hd.stroke=function(e,t){var r=wp(t);e.style({stroke:hd.tinyRGB(r),"stroke-opacity":r.getAlpha()})};hd.fill=function(e,t){var r=wp(t);e.style({fill:hd.tinyRGB(r),"fill-opacity":r.getAlpha()})};hd.clean=function(e){if(!(!e||typeof e!="object")){var t=Object.keys(e),r,n,i,a;for(r=0;r=0)))return e;if(a===3)n[a]>1&&(n[a]=1);else if(n[a]>=1)return e}var o=Math.round(n[0]*255)+", "+Math.round(n[1]*255)+", "+Math.round(n[2]*255);return i?"rgba("+o+", "+n[3]+")":"rgb("+o+")"}});var X1=ye((Xrr,lte)=>{"use strict";lte.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}});var m3=ye(ute=>{"use strict";ute.counter=function(e,t,r,n){var i=(t||"")+(r?"":"$"),a=n===!1?"":"^";return e==="xy"?new RegExp(a+"x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?"+i):new RegExp(a+e+"([2-9]|[1-9][0-9]+)?"+i)}});var dte=ye(Tp=>{"use strict";var qq=Eo(),cte=fd(),fte=Ao().extendFlat,irt=Gl(),nrt=yb(),art=ka(),ort=X1().DESELECTDIM,y3=zS(),hte=m3().counter,srt=p3().modHalf,bg=Yd().isArrayOrTypedArray,Z1=Yd().isTypedArraySpec,Y1=Yd().decodeTypedArraySpec;Tp.valObjectMeta={data_array:{coerceFunction:function(e,t,r){t.set(bg(e)?e:Z1(e)?Y1(e):r)}},enumerated:{coerceFunction:function(e,t,r,n){n.coerceNumber&&(e=+e),n.values.indexOf(e)===-1?t.set(r):t.set(e)},validateFunction:function(e,t){t.coerceNumber&&(e=+e);for(var r=t.values,n=0;na===!0||a===!1;i(e)||n.arrayOk&&Array.isArray(e)&&e.length>0&&e.every(i)?t.set(e):t.set(r)}},number:{coerceFunction:function(e,t,r,n){Z1(e)&&(e=Y1(e)),!qq(e)||n.min!==void 0&&en.max?t.set(r):t.set(+e)}},integer:{coerceFunction:function(e,t,r,n){if((n.extras||[]).indexOf(e)!==-1){t.set(e);return}Z1(e)&&(e=Y1(e)),e%1||!qq(e)||n.min!==void 0&&en.max?t.set(r):t.set(+e)}},string:{coerceFunction:function(e,t,r,n){if(typeof e!="string"){var i=typeof e=="number";n.strict===!0||!i?t.set(r):t.set(String(e))}else n.noBlank&&!e?t.set(r):t.set(e)}},color:{coerceFunction:function(e,t,r){Z1(e)&&(e=Y1(e)),cte(e).isValid()?t.set(e):t.set(r)}},colorlist:{coerceFunction:function(e,t,r){function n(i){return cte(i).isValid()}!Array.isArray(e)||!e.length?t.set(r):e.every(n)?t.set(e):t.set(r)}},colorscale:{coerceFunction:function(e,t,r){t.set(nrt.get(e,r))}},angle:{coerceFunction:function(e,t,r){Z1(e)&&(e=Y1(e)),e==="auto"?t.set("auto"):qq(e)?t.set(srt(+e,360)):t.set(r)}},subplotid:{coerceFunction:function(e,t,r,n){var i=n.regex||hte(r);let a=o=>typeof o=="string"&&i.test(o);a(e)||n.arrayOk&&bg(e)&&e.length>0&&e.every(a)?t.set(e):t.set(r)},validateFunction:function(e,t){var r=t.dflt;return e===r?!0:typeof e!="string"?!1:!!hte(r).test(e)}},flaglist:{coerceFunction:function(e,t,r,n){if((n.extras||[]).indexOf(e)!==-1){t.set(e);return}if(typeof e!="string"){t.set(r);return}for(var i=e.split("+"),a=0;a{"use strict";var vte={staticPlot:{valType:"boolean",dflt:!1},typesetMath:{valType:"boolean",dflt:!0},plotlyServerURL:{valType:"string",dflt:""},editable:{valType:"boolean",dflt:!1},edits:{annotationPosition:{valType:"boolean",dflt:!1},annotationTail:{valType:"boolean",dflt:!1},annotationText:{valType:"boolean",dflt:!1},axisTitleText:{valType:"boolean",dflt:!1},colorbarPosition:{valType:"boolean",dflt:!1},colorbarTitleText:{valType:"boolean",dflt:!1},legendPosition:{valType:"boolean",dflt:!1},legendText:{valType:"boolean",dflt:!1},shapePosition:{valType:"boolean",dflt:!1},titleText:{valType:"boolean",dflt:!1}},editSelection:{valType:"boolean",dflt:!0},autosizable:{valType:"boolean",dflt:!1},responsive:{valType:"boolean",dflt:!1},fillFrame:{valType:"boolean",dflt:!1},frameMargins:{valType:"number",dflt:0,min:0,max:.5},scrollZoom:{valType:"flaglist",flags:["cartesian","gl3d","geo","mapbox","map"],extras:[!0,!1],dflt:"gl3d+geo+map"},doubleClick:{valType:"enumerated",values:[!1,"reset","autosize","reset+autosize"],dflt:"reset+autosize"},doubleClickDelay:{valType:"number",dflt:300,min:0},showAxisDragHandles:{valType:"boolean",dflt:!0},showAxisRangeEntryBoxes:{valType:"boolean",dflt:!0},showTips:{valType:"boolean",dflt:!0},displayNotifier:{valType:"boolean",dflt:!0},showLink:{valType:"boolean",dflt:!1},linkText:{valType:"string",dflt:"Edit chart",noBlank:!0},sendData:{valType:"boolean",dflt:!0},showSources:{valType:"any",dflt:!1},displayModeBar:{valType:"enumerated",values:["hover",!0,!1],dflt:"hover"},showSendToCloud:{valType:"boolean",dflt:!1},showEditInChartStudio:{valType:"boolean",dflt:!1},modeBarButtonsToRemove:{valType:"any",dflt:[]},modeBarButtonsToAdd:{valType:"any",dflt:[]},modeBarButtons:{valType:"any",dflt:!1},toImageButtonOptions:{valType:"any",dflt:{}},displaylogo:{valType:"boolean",dflt:!0},watermark:{valType:"boolean",dflt:!1},plotGlPixelRatio:{valType:"number",dflt:2,min:1,max:4},setBackground:{valType:"any",dflt:"transparent"},topojsonURL:{valType:"string",noBlank:!0,dflt:"https://cdn.plot.ly/un/"},mapboxAccessToken:{valType:"string",dflt:null},logging:{valType:"integer",min:0,max:2,dflt:1},notifyOnLogging:{valType:"integer",min:0,max:2,dflt:0},queueLength:{valType:"integer",min:0,dflt:0},locale:{valType:"string",dflt:"en-US"},locales:{valType:"any",dflt:{}}},pte={};function gte(e,t){for(var r in e){var n=e[r];n.valType?t[r]=n.dflt:(t[r]||(t[r]={}),gte(n,t[r]))}}gte(vte,pte);mte.exports={configAttributes:vte,dfltConfig:pte}});var Bq=ye((Jrr,yte)=>{"use strict";var Oq=qa(),lrt=Eo(),HS=[];yte.exports=function(e,t,r){var s;if(((s=r==null?void 0:r._context)==null?void 0:s.displayNotifier)===!1||HS.indexOf(e)!==-1)return;HS.push(e);var n=1e3;lrt(t)?n=t:t==="long"&&(n=3e3);var i=Oq.select("body").selectAll(".plotly-notifier").data([0]);i.enter().append("div").classed("plotly-notifier",!0);var a=i.selectAll(".notifier-note").data(HS);function o(l){l.duration(700).style("opacity",0).each("end",function(u){var c=HS.indexOf(u);c!==-1&&HS.splice(c,1),Oq.select(this).remove()})}a.enter().append("div").classed("notifier-note",!0).style("opacity",0).each(function(l){var u=Oq.select(this);u.append("button").classed("notifier-close",!0).html("×").on("click",function(){u.transition().call(o)});for(var c=u.append("p"),f=l.split(//g),h=0;h{"use strict";var _3=xb().dfltConfig,Nq=Bq(),Uq=_te.exports={};Uq.log=function(){var e;if(_3.logging>1){var t=["LOG:"];for(e=0;e1){var r=[];for(e=0;e"),"long")}};Uq.warn=function(){var e;if(_3.logging>0){var t=["WARN:"];for(e=0;e0){var r=[];for(e=0;e"),"stick")}};Uq.error=function(){var e;if(_3.logging>0){var t=["ERROR:"];for(e=0;e0){var r=[];for(e=0;e"),"stick")}}});var P6=ye((Qrr,xte)=>{"use strict";xte.exports=function(){}});var Vq=ye((eir,bte)=>{"use strict";bte.exports=function(t,r){if(r instanceof RegExp){for(var n=r.toString(),i=0;i{wte.exports=urt;function urt(){var e=new Float32Array(16);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Ste=ye((rir,Ate)=>{Ate.exports=crt;function crt(e){var t=new Float32Array(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}});var Ete=ye((iir,Mte)=>{Mte.exports=frt;function frt(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}});var Gq=ye((nir,kte)=>{kte.exports=hrt;function hrt(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Lte=ye((air,Cte)=>{Cte.exports=drt;function drt(e,t){if(e===t){var r=t[1],n=t[2],i=t[3],a=t[6],o=t[7],s=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=r,e[6]=t[9],e[7]=t[13],e[8]=n,e[9]=a,e[11]=t[14],e[12]=i,e[13]=o,e[14]=s}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}});var Ite=ye((oir,Pte)=>{Pte.exports=vrt;function vrt(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=t[8],f=t[9],h=t[10],d=t[11],v=t[12],m=t[13],b=t[14],p=t[15],k=r*s-n*o,M=r*l-i*o,T=r*u-a*o,L=n*l-i*s,x=n*u-a*s,C=i*u-a*l,S=c*m-f*v,g=c*b-h*v,P=c*p-d*v,E=f*b-h*m,z=f*p-d*m,q=h*p-d*b,V=k*q-M*z+T*E+L*P-x*g+C*S;return V?(V=1/V,e[0]=(s*q-l*z+u*E)*V,e[1]=(i*z-n*q-a*E)*V,e[2]=(m*C-b*x+p*L)*V,e[3]=(h*x-f*C-d*L)*V,e[4]=(l*P-o*q-u*g)*V,e[5]=(r*q-i*P+a*g)*V,e[6]=(b*T-v*C-p*M)*V,e[7]=(c*C-h*T+d*M)*V,e[8]=(o*z-s*P+u*S)*V,e[9]=(n*P-r*z-a*S)*V,e[10]=(v*x-m*T+p*k)*V,e[11]=(f*T-c*x-d*k)*V,e[12]=(s*g-o*E-l*S)*V,e[13]=(r*E-n*g+i*S)*V,e[14]=(m*M-v*L-b*k)*V,e[15]=(c*L-f*M+h*k)*V,e):null}});var Dte=ye((sir,Rte)=>{Rte.exports=prt;function prt(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=t[8],f=t[9],h=t[10],d=t[11],v=t[12],m=t[13],b=t[14],p=t[15];return e[0]=s*(h*p-d*b)-f*(l*p-u*b)+m*(l*d-u*h),e[1]=-(n*(h*p-d*b)-f*(i*p-a*b)+m*(i*d-a*h)),e[2]=n*(l*p-u*b)-s*(i*p-a*b)+m*(i*u-a*l),e[3]=-(n*(l*d-u*h)-s*(i*d-a*h)+f*(i*u-a*l)),e[4]=-(o*(h*p-d*b)-c*(l*p-u*b)+v*(l*d-u*h)),e[5]=r*(h*p-d*b)-c*(i*p-a*b)+v*(i*d-a*h),e[6]=-(r*(l*p-u*b)-o*(i*p-a*b)+v*(i*u-a*l)),e[7]=r*(l*d-u*h)-o*(i*d-a*h)+c*(i*u-a*l),e[8]=o*(f*p-d*m)-c*(s*p-u*m)+v*(s*d-u*f),e[9]=-(r*(f*p-d*m)-c*(n*p-a*m)+v*(n*d-a*f)),e[10]=r*(s*p-u*m)-o*(n*p-a*m)+v*(n*u-a*s),e[11]=-(r*(s*d-u*f)-o*(n*d-a*f)+c*(n*u-a*s)),e[12]=-(o*(f*b-h*m)-c*(s*b-l*m)+v*(s*h-l*f)),e[13]=r*(f*b-h*m)-c*(n*b-i*m)+v*(n*h-i*f),e[14]=-(r*(s*b-l*m)-o*(n*b-i*m)+v*(n*l-i*s)),e[15]=r*(s*h-l*f)-o*(n*h-i*f)+c*(n*l-i*s),e}});var zte=ye((lir,Fte)=>{Fte.exports=grt;function grt(e){var t=e[0],r=e[1],n=e[2],i=e[3],a=e[4],o=e[5],s=e[6],l=e[7],u=e[8],c=e[9],f=e[10],h=e[11],d=e[12],v=e[13],m=e[14],b=e[15],p=t*o-r*a,k=t*s-n*a,M=t*l-i*a,T=r*s-n*o,L=r*l-i*o,x=n*l-i*s,C=u*v-c*d,S=u*m-f*d,g=u*b-h*d,P=c*m-f*v,E=c*b-h*v,z=f*b-h*m;return p*z-k*E+M*P+T*g-L*S+x*C}});var Ote=ye((uir,qte)=>{qte.exports=mrt;function mrt(e,t,r){var n=t[0],i=t[1],a=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],f=t[8],h=t[9],d=t[10],v=t[11],m=t[12],b=t[13],p=t[14],k=t[15],M=r[0],T=r[1],L=r[2],x=r[3];return e[0]=M*n+T*s+L*f+x*m,e[1]=M*i+T*l+L*h+x*b,e[2]=M*a+T*u+L*d+x*p,e[3]=M*o+T*c+L*v+x*k,M=r[4],T=r[5],L=r[6],x=r[7],e[4]=M*n+T*s+L*f+x*m,e[5]=M*i+T*l+L*h+x*b,e[6]=M*a+T*u+L*d+x*p,e[7]=M*o+T*c+L*v+x*k,M=r[8],T=r[9],L=r[10],x=r[11],e[8]=M*n+T*s+L*f+x*m,e[9]=M*i+T*l+L*h+x*b,e[10]=M*a+T*u+L*d+x*p,e[11]=M*o+T*c+L*v+x*k,M=r[12],T=r[13],L=r[14],x=r[15],e[12]=M*n+T*s+L*f+x*m,e[13]=M*i+T*l+L*h+x*b,e[14]=M*a+T*u+L*d+x*p,e[15]=M*o+T*c+L*v+x*k,e}});var Nte=ye((cir,Bte)=>{Bte.exports=yrt;function yrt(e,t,r){var n=r[0],i=r[1],a=r[2],o,s,l,u,c,f,h,d,v,m,b,p;return t===e?(e[12]=t[0]*n+t[4]*i+t[8]*a+t[12],e[13]=t[1]*n+t[5]*i+t[9]*a+t[13],e[14]=t[2]*n+t[6]*i+t[10]*a+t[14],e[15]=t[3]*n+t[7]*i+t[11]*a+t[15]):(o=t[0],s=t[1],l=t[2],u=t[3],c=t[4],f=t[5],h=t[6],d=t[7],v=t[8],m=t[9],b=t[10],p=t[11],e[0]=o,e[1]=s,e[2]=l,e[3]=u,e[4]=c,e[5]=f,e[6]=h,e[7]=d,e[8]=v,e[9]=m,e[10]=b,e[11]=p,e[12]=o*n+c*i+v*a+t[12],e[13]=s*n+f*i+m*a+t[13],e[14]=l*n+h*i+b*a+t[14],e[15]=u*n+d*i+p*a+t[15]),e}});var Vte=ye((fir,Ute)=>{Ute.exports=_rt;function _rt(e,t,r){var n=r[0],i=r[1],a=r[2];return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}});var Hte=ye((hir,Gte)=>{Gte.exports=xrt;function xrt(e,t,r,n){var i=n[0],a=n[1],o=n[2],s=Math.sqrt(i*i+a*a+o*o),l,u,c,f,h,d,v,m,b,p,k,M,T,L,x,C,S,g,P,E,z,q,V,G;return Math.abs(s)<1e-6?null:(s=1/s,i*=s,a*=s,o*=s,l=Math.sin(r),u=Math.cos(r),c=1-u,f=t[0],h=t[1],d=t[2],v=t[3],m=t[4],b=t[5],p=t[6],k=t[7],M=t[8],T=t[9],L=t[10],x=t[11],C=i*i*c+u,S=a*i*c+o*l,g=o*i*c-a*l,P=i*a*c-o*l,E=a*a*c+u,z=o*a*c+i*l,q=i*o*c+a*l,V=a*o*c-i*l,G=o*o*c+u,e[0]=f*C+m*S+M*g,e[1]=h*C+b*S+T*g,e[2]=d*C+p*S+L*g,e[3]=v*C+k*S+x*g,e[4]=f*P+m*E+M*z,e[5]=h*P+b*E+T*z,e[6]=d*P+p*E+L*z,e[7]=v*P+k*E+x*z,e[8]=f*q+m*V+M*G,e[9]=h*q+b*V+T*G,e[10]=d*q+p*V+L*G,e[11]=v*q+k*V+x*G,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}});var Wte=ye((dir,jte)=>{jte.exports=brt;function brt(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[4],o=t[5],s=t[6],l=t[7],u=t[8],c=t[9],f=t[10],h=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*i+u*n,e[5]=o*i+c*n,e[6]=s*i+f*n,e[7]=l*i+h*n,e[8]=u*i-a*n,e[9]=c*i-o*n,e[10]=f*i-s*n,e[11]=h*i-l*n,e}});var Zte=ye((vir,Xte)=>{Xte.exports=wrt;function wrt(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[0],o=t[1],s=t[2],l=t[3],u=t[8],c=t[9],f=t[10],h=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i-u*n,e[1]=o*i-c*n,e[2]=s*i-f*n,e[3]=l*i-h*n,e[8]=a*n+u*i,e[9]=o*n+c*i,e[10]=s*n+f*i,e[11]=l*n+h*i,e}});var Kte=ye((pir,Yte)=>{Yte.exports=Trt;function Trt(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[0],o=t[1],s=t[2],l=t[3],u=t[4],c=t[5],f=t[6],h=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i+u*n,e[1]=o*i+c*n,e[2]=s*i+f*n,e[3]=l*i+h*n,e[4]=u*i-a*n,e[5]=c*i-o*n,e[6]=f*i-s*n,e[7]=h*i-l*n,e}});var $te=ye((gir,Jte)=>{Jte.exports=Art;function Art(e,t,r){var n,i,a,o=r[0],s=r[1],l=r[2],u=Math.sqrt(o*o+s*s+l*l);return Math.abs(u)<1e-6?null:(u=1/u,o*=u,s*=u,l*=u,n=Math.sin(t),i=Math.cos(t),a=1-i,e[0]=o*o*a+i,e[1]=s*o*a+l*n,e[2]=l*o*a-s*n,e[3]=0,e[4]=o*s*a-l*n,e[5]=s*s*a+i,e[6]=l*s*a+o*n,e[7]=0,e[8]=o*l*a+s*n,e[9]=s*l*a-o*n,e[10]=l*l*a+i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}});var ere=ye((mir,Qte)=>{Qte.exports=Srt;function Srt(e,t,r){var n=t[0],i=t[1],a=t[2],o=t[3],s=n+n,l=i+i,u=a+a,c=n*s,f=n*l,h=n*u,d=i*l,v=i*u,m=a*u,b=o*s,p=o*l,k=o*u;return e[0]=1-(d+m),e[1]=f+k,e[2]=h-p,e[3]=0,e[4]=f-k,e[5]=1-(c+m),e[6]=v+b,e[7]=0,e[8]=h+p,e[9]=v-b,e[10]=1-(c+d),e[11]=0,e[12]=r[0],e[13]=r[1],e[14]=r[2],e[15]=1,e}});var rre=ye((yir,tre)=>{tre.exports=Mrt;function Mrt(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var nre=ye((_ir,ire)=>{ire.exports=Ert;function Ert(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}});var ore=ye((xir,are)=>{are.exports=krt;function krt(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=r,e[7]=0,e[8]=0,e[9]=-r,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var lre=ye((bir,sre)=>{sre.exports=Crt;function Crt(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=0,e[2]=-r,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=r,e[9]=0,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var cre=ye((wir,ure)=>{ure.exports=Lrt;function Lrt(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=r,e[2]=0,e[3]=0,e[4]=-r,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var hre=ye((Tir,fre)=>{fre.exports=Prt;function Prt(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=r+r,s=n+n,l=i+i,u=r*o,c=n*o,f=n*s,h=i*o,d=i*s,v=i*l,m=a*o,b=a*s,p=a*l;return e[0]=1-f-v,e[1]=c+p,e[2]=h-b,e[3]=0,e[4]=c-p,e[5]=1-u-v,e[6]=d+m,e[7]=0,e[8]=h+b,e[9]=d-m,e[10]=1-u-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var vre=ye((Air,dre)=>{dre.exports=Irt;function Irt(e,t,r,n,i,a,o){var s=1/(r-t),l=1/(i-n),u=1/(a-o);return e[0]=a*2*s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*l,e[6]=0,e[7]=0,e[8]=(r+t)*s,e[9]=(i+n)*l,e[10]=(o+a)*u,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*a*2*u,e[15]=0,e}});var gre=ye((Sir,pre)=>{pre.exports=Rrt;function Rrt(e,t,r,n,i){var a=1/Math.tan(t/2),o=1/(n-i);return e[0]=a/r,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=(i+n)*o,e[11]=-1,e[12]=0,e[13]=0,e[14]=2*i*n*o,e[15]=0,e}});var yre=ye((Mir,mre)=>{mre.exports=Drt;function Drt(e,t,r,n){var i=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),o=Math.tan(t.leftDegrees*Math.PI/180),s=Math.tan(t.rightDegrees*Math.PI/180),l=2/(o+s),u=2/(i+a);return e[0]=l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=u,e[6]=0,e[7]=0,e[8]=-((o-s)*l*.5),e[9]=(i-a)*u*.5,e[10]=n/(r-n),e[11]=-1,e[12]=0,e[13]=0,e[14]=n*r/(r-n),e[15]=0,e}});var xre=ye((Eir,_re)=>{_re.exports=Frt;function Frt(e,t,r,n,i,a,o){var s=1/(t-r),l=1/(n-i),u=1/(a-o);return e[0]=-2*s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*u,e[11]=0,e[12]=(t+r)*s,e[13]=(i+n)*l,e[14]=(o+a)*u,e[15]=1,e}});var wre=ye((kir,bre)=>{var zrt=Gq();bre.exports=qrt;function qrt(e,t,r,n){var i,a,o,s,l,u,c,f,h,d,v=t[0],m=t[1],b=t[2],p=n[0],k=n[1],M=n[2],T=r[0],L=r[1],x=r[2];return Math.abs(v-T)<1e-6&&Math.abs(m-L)<1e-6&&Math.abs(b-x)<1e-6?zrt(e):(c=v-T,f=m-L,h=b-x,d=1/Math.sqrt(c*c+f*f+h*h),c*=d,f*=d,h*=d,i=k*h-M*f,a=M*c-p*h,o=p*f-k*c,d=Math.sqrt(i*i+a*a+o*o),d?(d=1/d,i*=d,a*=d,o*=d):(i=0,a=0,o=0),s=f*o-h*a,l=h*i-c*o,u=c*a-f*i,d=Math.sqrt(s*s+l*l+u*u),d?(d=1/d,s*=d,l*=d,u*=d):(s=0,l=0,u=0),e[0]=i,e[1]=s,e[2]=c,e[3]=0,e[4]=a,e[5]=l,e[6]=f,e[7]=0,e[8]=o,e[9]=u,e[10]=h,e[11]=0,e[12]=-(i*v+a*m+o*b),e[13]=-(s*v+l*m+u*b),e[14]=-(c*v+f*m+h*b),e[15]=1,e)}});var Are=ye((Cir,Tre)=>{Tre.exports=Ort;function Ort(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}});var Hq=ye((Lir,Sre)=>{Sre.exports={create:Tte(),clone:Ste(),copy:Ete(),identity:Gq(),transpose:Lte(),invert:Ite(),adjoint:Dte(),determinant:zte(),multiply:Ote(),translate:Nte(),scale:Vte(),rotate:Hte(),rotateX:Wte(),rotateY:Zte(),rotateZ:Kte(),fromRotation:$te(),fromRotationTranslation:ere(),fromScaling:rre(),fromTranslation:nre(),fromXRotation:ore(),fromYRotation:lre(),fromZRotation:cre(),fromQuat:hre(),frustum:vre(),perspective:gre(),perspectiveFromFieldOfView:yre(),ortho:xre(),lookAt:wre(),str:Are()}});var I6=ye(fh=>{"use strict";var Brt=Hq();fh.init2dArray=function(e,t){for(var r=new Array(e),n=0;n{"use strict";var Nrt=qa(),Mre=K1(),Urt=I6(),Vrt=Hq();function Grt(e){var t;if(typeof e=="string"){if(t=document.getElementById(e),t===null)throw new Error("No DOM element with id '"+e+"' exists on the page.");return t}else if(e==null)throw new Error("DOM element provided is null or undefined");return e}function Hrt(e){var t=Nrt.select(e);return t.node()instanceof HTMLElement&&t.size()&&t.classed("js-plotly-plot")}function Ere(e){var t=e&&e.parentNode;t&&t.removeChild(e)}function jrt(e,t){kre("global",e,t)}function kre(e,t,r){var n="plotly.js-style-"+e,i=document.getElementById(n);if(!(i&&i.matches(".no-inline-styles"))){i||(i=document.createElement("style"),i.setAttribute("id",n),i.appendChild(document.createTextNode("")),document.head.appendChild(i));var a=i.sheet;a?a.insertRule?a.insertRule(t+"{"+r+"}",0):a.addRule?a.addRule(t,r,0):Mre.warn("addStyleRule failed"):Mre.warn("Cannot addRelatedStyleRule, probably due to strict CSP...")}}function Wrt(e){var t="plotly.js-style-"+e,r=document.getElementById(t);r&&Ere(r)}function Xrt(e,t,r,n,i,a){var o=n.split(":"),s=i.split(":"),l="data-btn-style-event-added";a||(a=document),a.querySelectorAll(e).forEach(function(u){u.getAttribute(l)||(u.addEventListener("mouseenter",function(){var c=this.querySelector(r);c&&(c.style[o[0]]=o[1])}),u.addEventListener("mouseleave",function(){var c=this.querySelector(r);c&&(t&&this.matches(t)?c.style[o[0]]=o[1]:c.style[s[0]]=s[1])}),u.setAttribute(l,!0))})}function Zrt(e){var t=Lre(e),r=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];return t.forEach(function(n){var i=Cre(n);if(i){var a=Urt.convertCssMatrix(i);r=Vrt.multiply(r,r,a)}}),r}function Cre(e){var t=window.getComputedStyle(e,null),r=t.getPropertyValue("-webkit-transform")||t.getPropertyValue("-moz-transform")||t.getPropertyValue("-ms-transform")||t.getPropertyValue("-o-transform")||t.getPropertyValue("transform");return r==="none"?null:r.replace("matrix","").replace("3d","").slice(1,-1).split(",").map(function(n){return+n})}function Lre(e){for(var t=[];Yrt(e);)t.push(e),e=e.parentNode,typeof ShadowRoot=="function"&&e instanceof ShadowRoot&&(e=e.host);return t}function Yrt(e){return e&&(e instanceof Element||e instanceof HTMLElement)}function Krt(e,t){return e&&t&&e.top===t.top&&e.left===t.left&&e.right===t.right&&e.bottom===t.bottom}Pre.exports={getGraphDiv:Grt,isPlotDiv:Hrt,removeElement:Ere,addStyleRule:jrt,addRelatedStyleRule:kre,deleteRelatedStyleRule:Wrt,setStyleOnHover:Xrt,getFullTransformMatrix:Zrt,getElementTransformMatrix:Cre,getElementAndAncestors:Lre,equalDomRects:Krt}});var WS=ye((Rir,Ire)=>{"use strict";Ire.exports={mode:{valType:"enumerated",dflt:"afterall",values:["immediate","next","afterall"]},direction:{valType:"enumerated",values:["forward","reverse"],dflt:"forward"},fromcurrent:{valType:"boolean",dflt:!1},frame:{duration:{valType:"number",min:0,dflt:500},redraw:{valType:"boolean",dflt:!0}},transition:{duration:{valType:"number",min:0,dflt:500,editType:"none"},easing:{valType:"enumerated",dflt:"cubic-in-out",values:["linear","quad","cubic","sin","exp","circle","elastic","back","bounce","linear-in","quad-in","cubic-in","sin-in","exp-in","circle-in","elastic-in","back-in","bounce-in","linear-out","quad-out","cubic-out","sin-out","exp-out","circle-out","elastic-out","back-out","bounce-out","linear-in-out","quad-in-out","cubic-in-out","sin-in-out","exp-in-out","circle-in-out","elastic-in-out","back-in-out","bounce-in-out"],editType:"none"},ordering:{valType:"enumerated",values:["layout first","traces first"],dflt:"layout first",editType:"none"}}}});var mc=ye((Dir,Bre)=>{"use strict";var Dre=Ao().extendFlat,Jrt=Ay(),Fre={valType:"flaglist",extras:["none"],flags:["calc","clearAxisTypes","plot","style","markerSize","colorbars"]},zre={valType:"flaglist",extras:["none"],flags:["calc","plot","legend","ticks","axrange","layoutstyle","modebar","camera","arraydraw","colorbars"]},$rt=Fre.flags.slice().concat(["fullReplot"]),Qrt=zre.flags.slice().concat("layoutReplot");Bre.exports={traces:Fre,layout:zre,traceFlags:function(){return Rre($rt)},layoutFlags:function(){return Rre(Qrt)},update:function(e,t){var r=t.editType;if(r&&r!=="none")for(var n=r.split("+"),i=0;i{"use strict";jq.dash={valType:"string",values:["solid","dot","dash","longdash","dashdot","longdashdot"],dflt:"solid",editType:"style"};jq.pattern={shape:{valType:"enumerated",values:["","/","\\","x","-","|","+","."],dflt:"",arrayOk:!0,editType:"style"},path:{valType:"string",arrayOk:!0,editType:"style"},fillmode:{valType:"enumerated",values:["replace","overlay"],dflt:"replace",editType:"style"},bgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgopacity:{valType:"number",editType:"style",min:0,max:1},size:{valType:"number",min:0,dflt:8,arrayOk:!0,editType:"style"},solidity:{valType:"number",min:0,max:1,dflt:.3,arrayOk:!0,editType:"style"},editType:"style"}});var Wq=ye((zir,Nre)=>{"use strict";Nre.exports={FORMAT_LINK:"https://github.com/d3/d3-format/tree/v1.4.5#d3-format",DATE_FORMAT_LINK:"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format"}});var Ll=ye(x3=>{"use strict";var{DATE_FORMAT_LINK:eit,FORMAT_LINK:tit}=Wq(),rit=["Variables that can't be found will be replaced with the specifier.",'For example, a template of "data: %{x}, %{y}" will result in a value of "data: 1, %{y}" if x is 1 and y is missing.',"Variables with an undefined value will be replaced with the fallback value."].join(" ");function iit({supportOther:e}={}){return["Variables are inserted using %{variable},",'for example "y: %{y}"'+(e?" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown.":"."),`Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example "Price: %{y:$.2f}".`,tit,"for details on the formatting syntax.",`Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}".`,eit,"for details on the date formatting syntax.",rit].join(" ")}x3.templateFormatStringDescription=iit;x3.hovertemplateAttrs=({editType:e="none",arrayOk:t}={},r={})=>_g({valType:"string",dflt:"",editType:e},t!==!1?{arrayOk:!0}:{});x3.texttemplateAttrs=({editType:e="calc",arrayOk:t}={},r={})=>_g({valType:"string",dflt:"",editType:e},t!==!1?{arrayOk:!0}:{});x3.shapeTexttemplateAttrs=({editType:e="arraydraw",newshape:t}={},r={})=>({valType:"string",dflt:"",editType:e});x3.templatefallbackAttrs=({editType:e="none"}={})=>({valType:"any",dflt:"-",editType:e})});var F6=ye((Bir,Wre)=>{"use strict";function J1(e,t){return t?t.d2l(e):e}function Ure(e,t){return t?t.l2d(e):e}function nit(e){return e.x0}function ait(e){return e.x1}function oit(e){return e.y0}function sit(e){return e.y1}function Vre(e){return e.x0shift||0}function Gre(e){return e.x1shift||0}function Hre(e){return e.y0shift||0}function jre(e){return e.y1shift||0}function R6(e,t){return J1(e.x1,t)+Gre(e)-J1(e.x0,t)-Vre(e)}function D6(e,t,r){return J1(e.y1,r)+jre(e)-J1(e.y0,r)-Hre(e)}function lit(e,t){return Math.abs(R6(e,t))}function uit(e,t,r){return Math.abs(D6(e,t,r))}function cit(e,t,r){return e.type!=="line"?void 0:Math.sqrt(Math.pow(R6(e,t),2)+Math.pow(D6(e,t,r),2))}function fit(e,t){return Ure((J1(e.x1,t)+Gre(e)+J1(e.x0,t)+Vre(e))/2,t)}function hit(e,t,r){return Ure((J1(e.y1,r)+jre(e)+J1(e.y0,r)+Hre(e))/2,r)}function dit(e,t,r){return e.type!=="line"?void 0:D6(e,t,r)/R6(e,t)}var vit=["x0","x1","y0","y1","dy","height","ycenter"],pit=["x0","x1","y0","y1","dx","width","xcenter"];Wre.exports={x0:nit,x1:ait,y0:oit,y1:sit,slope:dit,dx:R6,dy:D6,width:lit,height:uit,length:cit,xcenter:fit,ycenter:hit,simpleXVariables:vit,simpleYVariables:pit}});var Yre=ye((Nir,Zre)=>{"use strict";var git=mc().overrideAll,bb=Gl(),Xre=ec(),mit=Pd().dash,$1=Ao().extendFlat,{shapeTexttemplateAttrs:yit,templatefallbackAttrs:_it}=Ll(),xit=F6();Zre.exports=git({newshape:{visible:$1({},bb.visible,{}),showlegend:{valType:"boolean",dflt:!1},legend:$1({},bb.legend,{}),legendgroup:$1({},bb.legendgroup,{}),legendgrouptitle:{text:$1({},bb.legendgrouptitle.text,{}),font:Xre({})},legendrank:$1({},bb.legendrank,{}),legendwidth:$1({},bb.legendwidth,{}),line:{color:{valType:"color"},width:{valType:"number",min:0,dflt:4},dash:$1({},mit,{dflt:"solid"})},fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)"},fillrule:{valType:"enumerated",values:["evenodd","nonzero"],dflt:"evenodd"},opacity:{valType:"number",min:0,max:1,dflt:1},layer:{valType:"enumerated",values:["below","above","between"],dflt:"above"},drawdirection:{valType:"enumerated",values:["ortho","horizontal","vertical","diagonal"],dflt:"diagonal"},name:$1({},bb.name,{}),label:{text:{valType:"string",dflt:""},texttemplate:yit({newshape:!0},{keys:Object.keys(xit)}),texttemplatefallback:_it({editType:"arraydraw"}),font:Xre({}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right","start","middle","end"]},textangle:{valType:"angle",dflt:"auto"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto"},yanchor:{valType:"enumerated",values:["top","middle","bottom"]},padding:{valType:"number",dflt:3,min:0}}},activeshape:{fillcolor:{valType:"color",dflt:"rgb(255,0,255)",description:"Sets the color filling the active shape' interior."},opacity:{valType:"number",min:0,max:1,dflt:.5}}},"none","from-root")});var Jre=ye((Uir,Kre)=>{"use strict";var bit=Pd().dash,wit=Ao().extendFlat;Kre.exports={newselection:{mode:{valType:"enumerated",values:["immediate","gradual"],dflt:"immediate",editType:"none"},line:{color:{valType:"color",editType:"none"},width:{valType:"number",min:1,dflt:1,editType:"none"},dash:wit({},bit,{dflt:"dot",editType:"none"}),editType:"none"},editType:"none"},activeselection:{fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"none"},opacity:{valType:"number",min:0,max:1,dflt:.5,editType:"none"},editType:"none"}}});var z6=ye((Vir,$re)=>{"use strict";$re.exports=function(e){var t=e.editType;return{t:{valType:"number",dflt:0,editType:t},r:{valType:"number",dflt:0,editType:t},b:{valType:"number",dflt:0,editType:t},l:{valType:"number",dflt:0,editType:t},editType:t}}});var b3=ye((Gir,rie)=>{"use strict";var Xq=ec(),Tit=WS(),q6=Ih(),Qre=Yre(),eie=Jre(),Ait=z6(),tie=Ao().extendFlat,O6=Xq({editType:"calc"});O6.family.dflt='"Open Sans", verdana, arial, sans-serif';O6.size.dflt=12;O6.color.dflt=q6.defaultLine;rie.exports={font:O6,title:{text:{valType:"string",editType:"layoutstyle"},font:Xq({editType:"layoutstyle"}),subtitle:{text:{valType:"string",editType:"layoutstyle"},font:Xq({editType:"layoutstyle"}),editType:"layoutstyle"},xref:{valType:"enumerated",dflt:"container",values:["container","paper"],editType:"layoutstyle"},yref:{valType:"enumerated",dflt:"container",values:["container","paper"],editType:"layoutstyle"},x:{valType:"number",min:0,max:1,dflt:.5,editType:"layoutstyle"},y:{valType:"number",min:0,max:1,dflt:"auto",editType:"layoutstyle"},xanchor:{valType:"enumerated",dflt:"auto",values:["auto","left","center","right"],editType:"layoutstyle"},yanchor:{valType:"enumerated",dflt:"auto",values:["auto","top","middle","bottom"],editType:"layoutstyle"},pad:tie(Ait({editType:"layoutstyle"}),{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},editType:"layoutstyle"},uniformtext:{mode:{valType:"enumerated",values:[!1,"hide","show"],dflt:!1,editType:"plot"},minsize:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"plot"},autosize:{valType:"boolean",dflt:!1,editType:"none"},width:{valType:"number",min:10,dflt:700,editType:"plot"},height:{valType:"number",min:10,dflt:450,editType:"plot"},minreducedwidth:{valType:"number",min:2,dflt:64,editType:"plot"},minreducedheight:{valType:"number",min:2,dflt:64,editType:"plot"},margin:{l:{valType:"number",min:0,dflt:80,editType:"plot"},r:{valType:"number",min:0,dflt:80,editType:"plot"},t:{valType:"number",min:0,dflt:100,editType:"plot"},b:{valType:"number",min:0,dflt:80,editType:"plot"},pad:{valType:"number",min:0,dflt:0,editType:"plot"},autoexpand:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},computed:{valType:"any",editType:"none"},paper_bgcolor:{valType:"color",dflt:q6.background,editType:"plot"},plot_bgcolor:{valType:"color",dflt:q6.background,editType:"layoutstyle"},autotypenumbers:{valType:"enumerated",values:["convert types","strict"],dflt:"convert types",editType:"calc"},separators:{valType:"string",editType:"plot"},hidesources:{valType:"boolean",dflt:!1,editType:"plot"},showlegend:{valType:"boolean",editType:"legend"},colorway:{valType:"colorlist",dflt:q6.defaults,editType:"calc"},datarevision:{valType:"any",editType:"calc"},uirevision:{valType:"any",editType:"none"},editrevision:{valType:"any",editType:"none"},selectionrevision:{valType:"any",editType:"none"},template:{valType:"any",editType:"calc"},newshape:Qre.newshape,activeshape:Qre.activeshape,newselection:eie.newselection,activeselection:eie.activeselection,meta:{valType:"any",arrayOk:!0,editType:"plot"},transition:tie({},Tit.transition,{editType:"none"})}});var iie=ye(()=>{(function(){if(!document.getElementById("8431bff7cc77ea8693f8122c6e0981316b936a0a4930625e08b1512d134062bc")){var e=document.createElement("style");e.id="8431bff7cc77ea8693f8122c6e0981316b936a0a4930625e08b1512d134062bc",e.textContent=`.maplibregl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgb(0 0 0/0)}.maplibregl-canvas{left:0;position:absolute;top:0}.maplibregl-map:fullscreen{height:100%;width:100%}.maplibregl-ctrl-group button.maplibregl-ctrl-compass{touch-action:none}.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:grabbing}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:pinch-zoom}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:none}.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures,.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{pointer-events:none;position:absolute;z-index:2}.maplibregl-ctrl-top-left{left:0;top:0}.maplibregl-ctrl-top-right{right:0;top:0}.maplibregl-ctrl-bottom-left{bottom:0;left:0}.maplibregl-ctrl-bottom-right{bottom:0;right:0}.maplibregl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.maplibregl-ctrl-top-left .maplibregl-ctrl{float:left;margin:10px 0 0 10px}.maplibregl-ctrl-top-right .maplibregl-ctrl{float:right;margin:10px 10px 0 0}.maplibregl-ctrl-bottom-left .maplibregl-ctrl{float:left;margin:0 0 10px 10px}.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 10px 10px 0}.maplibregl-ctrl-group{background:#fff;border-radius:4px}.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (forced-colors:active){.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.maplibregl-ctrl-group button{background-color:transparent;border:0;box-sizing:border-box;cursor:pointer;display:block;height:29px;outline:none;padding:0;width:29px}.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}.maplibregl-ctrl button .maplibregl-ctrl-icon{background-position:50%;background-repeat:no-repeat;display:block;height:100%;width:100%}@media (forced-colors:active){.maplibregl-ctrl-icon{background-color:transparent}.maplibregl-ctrl-group button+button{border-top:1px solid ButtonText}}.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl button:disabled{cursor:not-allowed}.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}.maplibregl-ctrl button:not(:disabled):hover{background-color:rgb(0 0 0/5%)}.maplibregl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-terrain .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='%23333' viewBox='0 0 22 22'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='%2333b5e5' viewBox='0 0 22 22'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23aaa' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e58978' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e54e33' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{animation:maplibregl-spin 2s linear infinite}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23999' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e58978' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e54e33' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23666' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}}@keyframes maplibregl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;cursor:pointer;display:block;height:23px;margin:0 0 -4px -4px;overflow:hidden;width:88px}a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}@media (forced-colors:active){a.maplibregl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E")}}.maplibregl-ctrl.maplibregl-ctrl-attrib{background-color:hsla(0,0%,100%,.5);margin:0;padding:0 5px}@media screen{.maplibregl-ctrl-attrib.maplibregl-compact{background-color:#fff;border-radius:12px;box-sizing:content-box;color:#000;margin:10px;min-height:20px;padding:2px 24px 2px 0;position:relative}.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.maplibregl-ctrl-attrib-button{background-color:hsla(0,0%,100%,.5);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E");border:0;border-radius:12px;box-sizing:border-box;cursor:pointer;display:none;height:24px;outline:none;position:absolute;right:0;top:0;width:24px}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;list-style:none}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button::-webkit-details-marker{display:none}.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block}.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:rgb(0 0 0/5%)}.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{right:0;top:0}.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{left:0;top:0}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}@media screen and (forced-colors:active){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23fff' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}@media screen and (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}.maplibregl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.maplibregl-attrib-empty{display:none}.maplibregl-ctrl-scale{background-color:hsla(0,0%,100%,.75);border:2px solid #333;border-top:#333;box-sizing:border-box;color:#333;font-size:10px;padding:0 5px}.maplibregl-popup{display:flex;left:0;pointer-events:none;position:absolute;top:0;will-change:transform}.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{flex-direction:column}.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{flex-direction:column-reverse}.maplibregl-popup-anchor-left{flex-direction:row}.maplibregl-popup-anchor-right{flex-direction:row-reverse}.maplibregl-popup-tip{border:10px solid transparent;height:0;width:0;z-index:1}.maplibregl-popup-anchor-top .maplibregl-popup-tip{align-self:center;border-bottom-color:#fff;border-top:none}.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-start;border-bottom-color:#fff;border-left:none;border-top:none}.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-end;border-bottom-color:#fff;border-right:none;border-top:none}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{align-self:center;border-bottom:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.maplibregl-popup-anchor-left .maplibregl-popup-tip{align-self:center;border-left:none;border-right-color:#fff}.maplibregl-popup-anchor-right .maplibregl-popup-tip{align-self:center;border-left-color:#fff;border-right:none}.maplibregl-popup-close-button{background-color:transparent;border:0;border-radius:0 3px 0 0;cursor:pointer;position:absolute;right:0;top:0}.maplibregl-popup-close-button:hover{background-color:rgb(0 0 0/5%)}.maplibregl-popup-content{background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:15px 10px;pointer-events:auto;position:relative}.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}.maplibregl-popup-track-pointer{display:none}.maplibregl-popup-track-pointer *{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-map:hover .maplibregl-popup-track-pointer{display:flex}.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}.maplibregl-marker{left:0;position:absolute;top:0;transition:opacity .2s;will-change:transform}.maplibregl-user-location-dot,.maplibregl-user-location-dot:before{background-color:#1da1f2;border-radius:50%;height:15px;width:15px}.maplibregl-user-location-dot:before{animation:maplibregl-user-location-dot-pulse 2s infinite;content:"";position:absolute}.maplibregl-user-location-dot:after{border:2px solid #fff;border-radius:50%;box-shadow:0 0 3px rgba(0,0,0,.35);box-sizing:border-box;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px}@keyframes maplibregl-user-location-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(1)}}.maplibregl-user-location-dot-stale{background-color:#aaa}.maplibregl-user-location-dot-stale:after{display:none}.maplibregl-user-location-accuracy-circle{background-color:#1da1f233;border-radius:100%;height:1px;width:1px}.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}.maplibregl-boxzoom{background:#fff;border:2px dotted #202020;height:0;left:0;opacity:.5;position:absolute;top:0;width:0}.maplibregl-cooperative-gesture-screen{align-items:center;background:rgba(0,0,0,.4);color:#fff;display:flex;font-size:1.4em;inset:0;justify-content:center;line-height:1.2;opacity:0;padding:1rem;pointer-events:none;position:absolute;transition:opacity 1s ease 1s;z-index:99999}.maplibregl-cooperative-gesture-screen.maplibregl-show{opacity:1;transition:opacity .05s}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:none}@media (hover:none),(width <= 480px){.maplibregl-cooperative-gesture-screen .maplibregl-desktop-message{display:none}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:block}}.maplibregl-pseudo-fullscreen{height:100%!important;left:0!important;position:fixed!important;top:0!important;width:100%!important;z-index:99999}`,document.head.appendChild(e)}})()});var Oa=ye(el=>{"use strict";var w3=K1(),nie=P6(),aie=Vq(),Sit=Ay(),Mit=jS().addStyleRule,oie=Ao(),Eit=Gl(),kit=b3(),Cit=oie.extendFlat,Zq=oie.extendDeepAll;el.modules={};el.allCategories={};el.allTypes=[];el.subplotsRegistry={};el.componentsRegistry={};el.layoutArrayContainers=[];el.layoutArrayRegexes=[];el.traceLayoutAttributes={};el.localeRegistry={};el.apiMethodRegistry={};el.collectableSubplotTypes=null;el.register=function(t){if(el.collectableSubplotTypes=null,t)t&&!Array.isArray(t)&&(t=[t]);else throw new Error("No argument passed to Plotly.register.");for(var r=0;r{"use strict";var Fit=d3().timeFormat,mie=Eo(),Yq=K1(),e_=p3().mod,S3=fs(),_0=S3.BADNUM,Ap=S3.ONEDAY,XS=S3.ONEHOUR,Q1=S3.ONEMIN,A3=S3.ONESEC,ZS=S3.EPOCHJD,Sy=Oa(),fie=d3().utcFormat,zit=/^\s*(-?\d\d\d\d|\d\d)(-(\d?\d)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m,qit=/^\s*(-?\d\d\d\d|\d\d)(-(\d?\di?)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m,hie=new Date().getFullYear()-70;function My(e){return e&&Sy.componentsRegistry.calendars&&typeof e=="string"&&e!=="gregorian"}hh.dateTick0=function(e,t){var r=Oit(e,!!t);if(t<2)return r;var n=hh.dateTime2ms(r,e);return n+=Ap*(t-1),hh.ms2DateTime(n,0,e)};function Oit(e,t){return My(e)?t?Sy.getComponentMethod("calendars","CANONICAL_SUNDAY")[e]:Sy.getComponentMethod("calendars","CANONICAL_TICK")[e]:t?"2000-01-02":"2000-01-01"}hh.dfltRange=function(e){return My(e)?Sy.getComponentMethod("calendars","DFLTRANGE")[e]:["2000-01-01","2001-01-01"]};hh.isJSDate=function(e){return typeof e=="object"&&e!==null&&typeof e.getTime=="function"};var N6,U6;hh.dateTime2ms=function(e,t){if(hh.isJSDate(e)){var r=e.getTimezoneOffset()*Q1,n=(e.getUTCMinutes()-e.getMinutes())*Q1+(e.getUTCSeconds()-e.getSeconds())*A3+(e.getUTCMilliseconds()-e.getMilliseconds());if(n){var i=3*Q1;r=r-i/2+e_(n-r+i/2,i)}return e=Number(e)-r,e>=N6&&e<=U6?e:_0}if(typeof e!="string"&&typeof e!="number")return _0;e=String(e);var a=My(t),o=e.charAt(0);a&&(o==="G"||o==="g")&&(e=e.slice(1),t="");var s=a&&t.slice(0,7)==="chinese",l=e.match(s?qit:zit);if(!l)return _0;var u=l[1],c=l[3]||"1",f=Number(l[5]||1),h=Number(l[7]||0),d=Number(l[9]||0),v=Number(l[11]||0);if(a){if(u.length===2)return _0;u=Number(u);var m;try{var b=Sy.getComponentMethod("calendars","getCal")(t);if(s){var p=c.charAt(c.length-1)==="i";c=parseInt(c,10),m=b.newDate(u,b.toMonthIndex(u,c,p),f)}else m=b.newDate(u,Number(c),f)}catch(M){return _0}return m?(m.toJD()-ZS)*Ap+h*XS+d*Q1+v*A3:_0}u.length===2?u=(Number(u)+2e3-hie)%100+hie:u=Number(u),c-=1;var k=new Date(Date.UTC(2e3,c,f,h,d));return k.setUTCFullYear(u),k.getUTCMonth()!==c||k.getUTCDate()!==f?_0:k.getTime()+v*A3};N6=hh.MIN_MS=hh.dateTime2ms("-9999");U6=hh.MAX_MS=hh.dateTime2ms("9999-12-31 23:59:59.9999");hh.isDateTime=function(e,t){return hh.dateTime2ms(e,t)!==_0};function T3(e,t){return String(e+Math.pow(10,t)).slice(1)}var B6=90*Ap,die=3*XS,vie=5*Q1;hh.ms2DateTime=function(e,t,r){if(typeof e!="number"||!(e>=N6&&e<=U6))return _0;t||(t=0);var n=Math.floor(e_(e+.05,1)*10),i=Math.round(e-n/10),a,o,s,l,u,c;if(My(r)){var f=Math.floor(i/Ap)+ZS,h=Math.floor(e_(e,Ap));try{a=Sy.getComponentMethod("calendars","getCal")(r).fromJD(f).formatDate("yyyy-mm-dd")}catch(d){a=fie("G%Y-%m-%d")(new Date(i))}if(a.charAt(0)==="-")for(;a.length<11;)a="-0"+a.slice(1);else for(;a.length<10;)a="0"+a;o=t=N6+Ap&&e<=U6-Ap))return _0;var t=Math.floor(e_(e+.05,1)*10),r=new Date(Math.round(e-t/10)),n=Fit("%Y-%m-%d")(r),i=r.getHours(),a=r.getMinutes(),o=r.getSeconds(),s=r.getUTCMilliseconds()*10+t;return yie(n,i,a,o,s)};function yie(e,t,r,n,i){if((t||r||n||i)&&(e+=" "+T3(t,2)+":"+T3(r,2),(n||i)&&(e+=":"+T3(n,2),i))){for(var a=4;i%10===0;)a-=1,i/=10;e+="."+T3(i,a)}return e}hh.cleanDate=function(e,t,r){if(e===_0)return t;if(hh.isJSDate(e)||typeof e=="number"&&isFinite(e)){if(My(r))return Yq.error("JS Dates and milliseconds are incompatible with world calendars",e),t;if(e=hh.ms2DateTimeLocal(+e),!e&&t!==void 0)return t}else if(!hh.isDateTime(e,r))return Yq.error("unrecognized date",e),t;return e};var Bit=/%\d?f/g,Nit=/%h/g,Uit={1:"1",2:"1",3:"2",4:"2"};function pie(e,t,r,n){e=e.replace(Bit,function(a){var o=Math.min(+a.charAt(1)||6,6),s=(t/1e3%1+2).toFixed(o).slice(2).replace(/0+$/,"")||"0";return s});var i=new Date(Math.floor(t+.05));if(e=e.replace(Nit,function(){return Uit[r("%q")(i)]}),My(n))try{e=Sy.getComponentMethod("calendars","worldCalFmt")(e,t,n)}catch(a){return"Invalid"}return r(e)(i)}var Vit=[59,59.9,59.99,59.999,59.9999];function Git(e,t){var r=e_(e+.05,Ap),n=T3(Math.floor(r/XS),2)+":"+T3(e_(Math.floor(r/Q1),60),2);if(t!=="M"){mie(t)||(t=0);var i=Math.min(e_(e/A3,60),Vit[t]),a=(100+i).toFixed(t).slice(1);t>0&&(a=a.replace(/0+$/,"").replace(/[\.]$/,"")),n+=":"+a}return n}hh.formatDate=function(e,t,r,n,i,a){if(i=My(i)&&i,!t)if(r==="y")t=a.year;else if(r==="m")t=a.month;else if(r==="d")t=a.dayMonth+` +`+a.year;else return Git(e,r)+` +`+pie(a.dayMonthYear,e,n,i);return pie(t,e,n,i)};var gie=3*Ap;hh.incrementMonth=function(e,t,r){r=My(r)&&r;var n=e_(e,Ap);if(e=Math.round(e-n),r)try{var i=Math.round(e/Ap)+ZS,a=Sy.getComponentMethod("calendars","getCal")(r),o=a.fromJD(i);return t%12?a.add(o,t,"m"):a.add(o,t/12,"y"),(o.toJD()-ZS)*Ap+n}catch(l){Yq.error("invalid ms "+e+" in calendar "+r)}var s=new Date(e+gie);return s.setUTCMonth(s.getUTCMonth()+t)+n-gie};hh.findExactDates=function(e,t){for(var r=0,n=0,i=0,a=0,o,s,l=My(t)&&Sy.getComponentMethod("calendars","getCal")(t),u=0;u{"use strict";xie.exports=function(t){return t}});var V6=ye(Ey=>{"use strict";var Hit=Eo(),jit=K1(),Wit=YS(),Xit=fs().BADNUM,Kq=1e-9;Ey.findBin=function(e,t,r){if(Hit(t.start))return r?Math.ceil((e-t.start)/t.size-Kq)-1:Math.floor((e-t.start)/t.size+Kq);var n=0,i=t.length,a=0,o=i>1?(t[i-1]-t[0])/(i-1):1,s,l;for(o>=0?l=r?Zit:Yit:l=r?Jit:Kit,e+=o*Kq*(r?-1:1)*(o>=0?1:-1);n90&&jit.log("Long binary search..."),n-1};function Zit(e,t){return et}function Jit(e,t){return e>=t}Ey.sorterAsc=function(e,t){return e-t};Ey.sorterDes=function(e,t){return t-e};Ey.distinctVals=function(e){var t=e.slice();t.sort(Ey.sorterAsc);var r;for(r=t.length-1;r>-1&&t[r]===Xit;r--);for(var n=t[r]-t[0]||1,i=n/(r||1)/1e4,a=[],o,s=0;s<=r;s++){var l=t[s],u=l-o;o===void 0?(a.push(l),o=l):u>i&&(n=Math.min(n,u),a.push(l),o=l)}return{vals:a,minDiff:n}};Ey.roundUp=function(e,t,r){for(var n=0,i=t.length-1,a,o=0,s=r?0:1,l=r?1:0,u=r?Math.ceil:Math.floor;n0&&(n=1),r&&n)return e.sort(t)}return n?e:e.reverse()};Ey.findIndexOfMin=function(e,t){t=t||Wit;for(var r=1/0,n,i=0;i{"use strict";bie.exports=function(t){return Object.keys(t).sort()}});var wie=ye(dh=>{"use strict";var KS=Eo(),$it=Yd().isArrayOrTypedArray;dh.aggNums=function(e,t,r,n){var i,a;if((!n||n>r.length)&&(n=r.length),KS(t)||(t=!1),$it(r[0])){for(a=new Array(n),i=0;ie.length-1)return e[e.length-1];var r=t%1;return r*e[Math.ceil(t)]+(1-r)*e[Math.floor(t)]}});var Eie=ye(($ir,Mie)=>{"use strict";var Tie=p3(),Jq=Tie.mod,Qit=Tie.modHalf,JS=Math.PI,r_=2*JS;function ent(e){return e/180*JS}function tnt(e){return e/JS*180}function $q(e){return Math.abs(e[1]-e[0])>r_-1e-14}function Aie(e,t){return Qit(t-e,r_)}function rnt(e,t){return Math.abs(Aie(e,t))}function Sie(e,t){if($q(t))return!0;var r,n;t[0]n&&(n+=r_);var i=Jq(e,r_),a=i+r_;return i>=r&&i<=n||a>=r&&a<=n}function int(e,t,r,n){if(!Sie(t,n))return!1;var i,a;return r[0]=i&&e<=a}function Qq(e,t,r,n,i,a,o){i=i||0,a=a||0;var s=$q([r,n]),l,u,c,f,h;s?(l=0,u=JS,c=r_):r{"use strict";wb.isLeftAnchor=function(t){return t.xanchor==="left"||t.xanchor==="auto"&&t.x<=1/3};wb.isCenterAnchor=function(t){return t.xanchor==="center"||t.xanchor==="auto"&&t.x>1/3&&t.x<2/3};wb.isRightAnchor=function(t){return t.xanchor==="right"||t.xanchor==="auto"&&t.x>=2/3};wb.isTopAnchor=function(t){return t.yanchor==="top"||t.yanchor==="auto"&&t.y>=2/3};wb.isMiddleAnchor=function(t){return t.yanchor==="middle"||t.yanchor==="auto"&&t.y>1/3&&t.y<2/3};wb.isBottomAnchor=function(t){return t.yanchor==="bottom"||t.yanchor==="auto"&&t.y<=1/3}});var Pie=ye(Tb=>{"use strict";var eO=p3().mod;Tb.segmentsIntersect=Lie;function Lie(e,t,r,n,i,a,o,s){var l=r-e,u=i-e,c=o-i,f=n-t,h=a-t,d=s-a,v=l*d-c*f;if(v===0)return null;var m=(u*d-c*h)/v,b=(u*f-l*h)/v;return b<0||b>1||m<0||m>1?null:{x:e+l*m,y:t+f*m}}Tb.segmentDistance=function(t,r,n,i,a,o,s,l){if(Lie(t,r,n,i,a,o,s,l))return 0;var u=n-t,c=i-r,f=s-a,h=l-o,d=u*u+c*c,v=f*f+h*h,m=Math.min(G6(u,c,d,a-t,o-r),G6(u,c,d,s-t,l-r),G6(f,h,v,t-a,r-o),G6(f,h,v,n-a,i-o));return Math.sqrt(m)};function G6(e,t,r,n,i){var a=n*e+i*t;if(a<0)return n*n+i*i;if(a>r){var o=n-e,s=i-t;return o*o+s*s}else{var l=n*t-i*e;return l*l/r}}var H6,tO,Cie;Tb.getTextLocation=function(t,r,n,i){if((t!==tO||i!==Cie)&&(H6={},tO=t,Cie=i),H6[n])return H6[n];var a=t.getPointAtLength(eO(n-i/2,r)),o=t.getPointAtLength(eO(n+i/2,r)),s=Math.atan((o.y-a.y)/(o.x-a.x)),l=t.getPointAtLength(eO(n,r)),u=(l.x*4+a.x+o.x)/6,c=(l.y*4+a.y+o.y)/6,f={x:u,y:c,theta:s};return H6[n]=f,f};Tb.clearLocationCache=function(){tO=null};Tb.getVisibleSegment=function(t,r,n){var i=r.left,a=r.right,o=r.top,s=r.bottom,l=0,u=t.getTotalLength(),c=u,f,h;function d(m){var b=t.getPointAtLength(m);m===0?f=b:m===u&&(h=b);var p=b.xa?b.x-a:0,k=b.ys?b.y-s:0;return Math.sqrt(p*p+k*k)}for(var v=d(l);v;){if(l+=v+n,l>c)return;v=d(l)}for(v=d(c);v;){if(c-=v+n,l>c)return;v=d(c)}return{min:l,max:c,len:c-l,total:u,isClosed:l===0&&c===u&&Math.abs(f.x-h.x)<.1&&Math.abs(f.y-h.y)<.1}};Tb.findPointOnPath=function(t,r,n,i){i=i||{};for(var a=i.pathLength||t.getTotalLength(),o=i.tolerance||.001,s=i.iterationLimit||30,l=t.getPointAtLength(0)[n]>t.getPointAtLength(a)[n]?-1:1,u=0,c=0,f=a,h,d,v;u0?f=h:c=h,u++}return d}});var j6=ye($S=>{"use strict";var ky={};$S.throttle=function(t,r,n){var i=ky[t],a=Date.now();if(!i){for(var o in ky)ky[o].tsi.ts+r){s();return}i.timer=setTimeout(function(){s(),i.timer=null},r)};$S.done=function(e){var t=ky[e];return!t||!t.timer?Promise.resolve():new Promise(function(r){var n=t.onDone;t.onDone=function(){n&&n(),r(),t.onDone=null}})};$S.clear=function(e){if(e)Iie(ky[e]),delete ky[e];else for(var t in ky)$S.clear(t)};function Iie(e){e&&e.timer!==null&&(clearTimeout(e.timer),e.timer=null)}});var Die=ye((rnr,Rie)=>{"use strict";Rie.exports=function(t){t._responsiveChartHandler&&(window.removeEventListener("resize",t._responsiveChartHandler),delete t._responsiveChartHandler)}});var Fie=ye((inr,W6)=>{"use strict";W6.exports=rO;W6.exports.isMobile=rO;W6.exports.default=rO;var snt=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,lnt=/CrOS/,unt=/android|ipad|playbook|silk/i;function rO(e){e||(e={});let t=e.ua;if(!t&&typeof navigator!="undefined"&&(t=navigator.userAgent),t&&t.headers&&typeof t.headers["user-agent"]=="string"&&(t=t.headers["user-agent"]),typeof t!="string")return!1;let r=snt.test(t)&&!lnt.test(t)||!!e.tablet&&unt.test(t);return!r&&e.tablet&&e.featureDetect&&navigator&&navigator.maxTouchPoints>1&&t.indexOf("Macintosh")!==-1&&t.indexOf("Safari")!==-1&&(r=!0),r}});var qie=ye((nnr,zie)=>{"use strict";var cnt=Eo(),fnt=Fie();zie.exports=function(t){var r;if(t&&t.hasOwnProperty("userAgent")?r=t.userAgent:r=hnt(),typeof r!="string")return!0;var n=fnt({ua:{headers:{"user-agent":r}},tablet:!0,featureDetect:!1});if(!n)for(var i=r.split(" "),a=1;a-1;s--){var l=i[s];if(l.slice(0,8)==="Version/"){var u=l.slice(8).split(".")[0];if(cnt(u)&&(u=+u),u>=13)return!0}}}return n};function hnt(){var e;return typeof navigator!="undefined"&&(e=navigator.userAgent),e&&e.headers&&typeof e.headers["user-agent"]=="string"&&(e=e.headers["user-agent"]),e}});var Bie=ye((anr,Oie)=>{"use strict";var dnt=qa();Oie.exports=function(t,r,n){var i=t.selectAll("g."+n.replace(/\s/g,".")).data(r,function(o){return o[0].trace.uid});i.exit().remove(),i.enter().append("g").attr("class",n),i.order();var a=t.classed("rangeplot")?"nodeRangePlot3":"node3";return i.each(function(o){o[0][a]=dnt.select(this)}),i}});var Uie=ye((onr,Nie)=>{"use strict";var vnt=Oa();Nie.exports=function(t,r){for(var n=t._context.locale,i=0;i<2;i++){for(var a=t._context.locales,o=0;o<2;o++){var s=(a[n]||{}).dictionary;if(s){var l=s[r];if(l)return l}a=vnt.localeRegistry}var u=n.split("-")[0];if(u===n)break;n=u}return r}});var iO=ye((snr,Vie)=>{"use strict";Vie.exports=function(t){for(var r={},n=[],i=0,a=0;a{"use strict";Gie.exports=function(t){for(var r=mnt(t)?gnt:pnt,n=[],i=0;i{"use strict";jie.exports=function(t,r){if(!r)return t;var n=1/Math.abs(r),i=n>1?(n*t+n*r)/n:t+r,a=String(i).length;if(a>16){var o=String(r).length,s=String(t).length;if(a>=s+o){var l=parseFloat(i).toPrecision(12);l.indexOf("e+")===-1&&(i=+l)}}return i}});var Zie=ye((cnr,Xie)=>{"use strict";var ynt=Eo(),_nt=fs().BADNUM,xnt=/^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g;Xie.exports=function(t){return typeof t=="string"&&(t=t.replace(xnt,"")),ynt(t)?Number(t):_nt}});var Pr=ye((fnr,sne)=>{"use strict";var QS=qa(),bnt=d3().utcFormat,wnt=kq().format,ene=Eo(),tne=fs(),rne=tne.FP_SAFE,Tnt=-rne,Yie=tne.BADNUM,Ai=sne.exports={};Ai.adjustFormat=function(t){return!t||/^\d[.]\df/.test(t)||/[.]\d%/.test(t)?t:t==="0.f"?"~f":/^\d%/.test(t)?"~%":/^\ds/.test(t)?"~s":!/^[~,.0$]/.test(t)&&/[&fps]/.test(t)?"~"+t:t};var Kie={};Ai.warnBadFormat=function(e){var t=String(e);Kie[t]||(Kie[t]=1,Ai.warn('encountered bad format: "'+t+'"'))};Ai.noFormat=function(e){return String(e)};Ai.numberFormat=function(e){var t;try{t=wnt(Ai.adjustFormat(e))}catch(r){return Ai.warnBadFormat(e),Ai.noFormat}return t};Ai.nestedProperty=zS();Ai.keyedContainer=Vee();Ai.relativeAttr=Hee();Ai.isPlainObject=Ay();Ai.toLogRange=M6();Ai.relinkPrivateKeys=Zee();var i_=Yd();Ai.isArrayBuffer=i_.isArrayBuffer;Ai.isTypedArray=i_.isTypedArray;Ai.isArrayOrTypedArray=i_.isArrayOrTypedArray;Ai.isArray1D=i_.isArray1D;Ai.ensureArray=i_.ensureArray;Ai.concat=i_.concat;Ai.maxRowLength=i_.maxRowLength;Ai.minRowLength=i_.minRowLength;var ine=p3();Ai.mod=ine.mod;Ai.modHalf=ine.modHalf;var n_=dte();Ai.valObjectMeta=n_.valObjectMeta;Ai.coerce=n_.coerce;Ai.coerce2=n_.coerce2;Ai.coerceFont=n_.coerceFont;Ai.coercePattern=n_.coercePattern;Ai.coerceHoverinfo=n_.coerceHoverinfo;Ai.coerceSelectionMarkerOpacity=n_.coerceSelectionMarkerOpacity;Ai.validate=n_.validate;var jp=_ie();Ai.dateTime2ms=jp.dateTime2ms;Ai.isDateTime=jp.isDateTime;Ai.ms2DateTime=jp.ms2DateTime;Ai.ms2DateTimeLocal=jp.ms2DateTimeLocal;Ai.cleanDate=jp.cleanDate;Ai.isJSDate=jp.isJSDate;Ai.formatDate=jp.formatDate;Ai.incrementMonth=jp.incrementMonth;Ai.dateTick0=jp.dateTick0;Ai.dfltRange=jp.dfltRange;Ai.findExactDates=jp.findExactDates;Ai.MIN_MS=jp.MIN_MS;Ai.MAX_MS=jp.MAX_MS;var Ab=V6();Ai.findBin=Ab.findBin;Ai.sorterAsc=Ab.sorterAsc;Ai.sorterDes=Ab.sorterDes;Ai.distinctVals=Ab.distinctVals;Ai.roundUp=Ab.roundUp;Ai.sort=Ab.sort;Ai.findIndexOfMin=Ab.findIndexOfMin;Ai.sortObjectKeys=t_();var Cy=wie();Ai.aggNums=Cy.aggNums;Ai.len=Cy.len;Ai.mean=Cy.mean;Ai.geometricMean=Cy.geometricMean;Ai.median=Cy.median;Ai.midRange=Cy.midRange;Ai.variance=Cy.variance;Ai.stdev=Cy.stdev;Ai.interp=Cy.interp;var wg=I6();Ai.init2dArray=wg.init2dArray;Ai.transposeRagged=wg.transposeRagged;Ai.dot=wg.dot;Ai.translationMatrix=wg.translationMatrix;Ai.rotationMatrix=wg.rotationMatrix;Ai.rotationXYMatrix=wg.rotationXYMatrix;Ai.apply3DTransform=wg.apply3DTransform;Ai.apply2DTransform=wg.apply2DTransform;Ai.apply2DTransform2=wg.apply2DTransform2;Ai.convertCssMatrix=wg.convertCssMatrix;Ai.inverseTransformMatrix=wg.inverseTransformMatrix;var gm=Eie();Ai.deg2rad=gm.deg2rad;Ai.rad2deg=gm.rad2deg;Ai.angleDelta=gm.angleDelta;Ai.angleDist=gm.angleDist;Ai.isFullCircle=gm.isFullCircle;Ai.isAngleInsideSector=gm.isAngleInsideSector;Ai.isPtInsideSector=gm.isPtInsideSector;Ai.pathArc=gm.pathArc;Ai.pathSector=gm.pathSector;Ai.pathAnnulus=gm.pathAnnulus;var E3=kie();Ai.isLeftAnchor=E3.isLeftAnchor;Ai.isCenterAnchor=E3.isCenterAnchor;Ai.isRightAnchor=E3.isRightAnchor;Ai.isTopAnchor=E3.isTopAnchor;Ai.isMiddleAnchor=E3.isMiddleAnchor;Ai.isBottomAnchor=E3.isBottomAnchor;var k3=Pie();Ai.segmentsIntersect=k3.segmentsIntersect;Ai.segmentDistance=k3.segmentDistance;Ai.getTextLocation=k3.getTextLocation;Ai.clearLocationCache=k3.clearLocationCache;Ai.getVisibleSegment=k3.getVisibleSegment;Ai.findPointOnPath=k3.findPointOnPath;var Y6=Ao();Ai.extendFlat=Y6.extendFlat;Ai.extendDeep=Y6.extendDeep;Ai.extendDeepAll=Y6.extendDeepAll;Ai.extendDeepNoArrays=Y6.extendDeepNoArrays;var nO=K1();Ai.log=nO.log;Ai.warn=nO.warn;Ai.error=nO.error;var Ant=m3();Ai.counterRegex=Ant.counter;var aO=j6();Ai.throttle=aO.throttle;Ai.throttleDone=aO.done;Ai.clearThrottle=aO.clear;var Tg=jS();Ai.getGraphDiv=Tg.getGraphDiv;Ai.isPlotDiv=Tg.isPlotDiv;Ai.removeElement=Tg.removeElement;Ai.addStyleRule=Tg.addStyleRule;Ai.addRelatedStyleRule=Tg.addRelatedStyleRule;Ai.deleteRelatedStyleRule=Tg.deleteRelatedStyleRule;Ai.setStyleOnHover=Tg.setStyleOnHover;Ai.getFullTransformMatrix=Tg.getFullTransformMatrix;Ai.getElementTransformMatrix=Tg.getElementTransformMatrix;Ai.getElementAndAncestors=Tg.getElementAndAncestors;Ai.equalDomRects=Tg.equalDomRects;Ai.clearResponsive=Die();Ai.preserveDrawingBuffer=qie();Ai.makeTraceGroups=Bie();Ai._=Uie();Ai.notifier=Bq();Ai.filterUnique=iO();Ai.filterVisible=Hie();Ai.pushUnique=Vq();Ai.increment=Wie();Ai.cleanNumber=Zie();Ai.ensureNumber=function(t){return ene(t)?(t=Number(t),t>rne||t=t?!1:ene(e)&&e>=0&&e%1===0};Ai.noop=P6();Ai.identity=YS();Ai.repeat=function(e,t){for(var r=new Array(t),n=0;nr?Math.max(r,Math.min(t,e)):Math.max(t,Math.min(r,e))};Ai.bBoxIntersect=function(e,t,r){return r=r||0,e.left<=t.right+r&&t.left<=e.right+r&&e.top<=t.bottom+r&&t.top<=e.bottom+r};Ai.simpleMap=function(e,t,r,n,i){for(var a=e.length,o=new Array(a),s=0;s=Math.pow(2,r)?i>10?(Ai.warn("randstr failed uniqueness"),o):e(t,r,n,(i||0)+1):o};Ai.OptionControl=function(e,t){e||(e={}),t||(t="opt");var r={};return r.optionList=[],r._newoption=function(n){n[t]=e,r[n.name]=n,r.optionList.push(n)},r["_"+t]=e,r};Ai.smooth=function(e,t){if(t=Math.round(t)||0,t<2)return e;var r=e.length,n=2*r,i=2*t-1,a=new Array(i),o=new Array(r),s,l,u,c;for(s=0;s=n&&(u-=n*Math.floor(u/n)),u<0?u=-1-u:u>=r&&(u=n-1-u),c+=e[u]*a[l];o[s]=c}return o};Ai.syncOrAsync=function(e,t,r){var n,i;function a(){return Ai.syncOrAsync(e,t,r)}for(;e.length;)if(i=e.splice(0,1)[0],n=i(t),n&&n.then)return n.then(a);return r&&r(t)};Ai.stripTrailingSlash=function(e){return e.slice(-1)==="/"?e.slice(0,-1):e};Ai.noneOrAll=function(e,t,r){if(e){var n=!1,i=!0,a,o;for(a=0;a0?i:0})};Ai.fillArray=function(e,t,r,n){if(n=n||Ai.identity,Ai.isArrayOrTypedArray(e))for(var i=0;iEnt.test(window.navigator.userAgent);var knt=/Firefox\/(\d+)\.\d+/;Ai.getFirefoxVersion=function(){var e=knt.exec(window.navigator.userAgent);if(e&&e.length===2){var t=parseInt(e[1]);if(!isNaN(t))return t}return null};Ai.isD3Selection=function(e){return e instanceof QS.selection};Ai.ensureSingle=function(e,t,r,n){var i=e.select(t+(r?"."+r:""));if(i.size())return i;var a=e.append(t);return r&&a.classed(r,!0),n&&a.call(n),a};Ai.ensureSingleById=function(e,t,r,n){var i=e.select(t+"#"+r);if(i.size())return i;var a=e.append(t).attr("id",r);return n&&a.call(n),a};Ai.objectFromPath=function(e,t){for(var r=e.split("."),n,i=n={},a=0;a1?i+o[1]:"";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,"$1"+a+"$2");return s+l};Ai.TEMPLATE_STRING_REGEX=/%{([^\s%{}:]*)([:|\|][^}]*)?}/g;var one=/^\w*$/;Ai.templateString=function(e,t){var r={};return e.replace(Ai.TEMPLATE_STRING_REGEX,function(n,i){var a;return one.test(i)?a=t[i]:(r[i]=r[i]||Ai.nestedProperty(t,i).get,a=r[i](!0)),a!==void 0?a:""})};var Pnt={max:10,count:0,name:"hovertemplate"};Ai.hovertemplateString=e=>oO(j1(_g({},e),{opts:Pnt}));var Int={max:10,count:0,name:"texttemplate"};Ai.texttemplateString=e=>oO(j1(_g({},e),{opts:Int}));var Rnt=/^(\S+)([\*\/])(-?\d+(\.\d+)?)$/;function Dnt(e){var t=e.match(Rnt);return t?{key:t[1],op:t[2],number:Number(t[3])}:{key:e,op:null,number:null}}var Fnt={max:10,count:0,name:"texttemplate",parseMultDiv:!0};Ai.texttemplateStringForShapes=e=>oO(j1(_g({},e),{opts:Fnt}));var Jie=/^[:|\|]/;function oO({data:e=[],locale:t,fallback:r,labels:n={},opts:i,template:a}){return a.replace(Ai.TEMPLATE_STRING_REGEX,(o,s,l)=>{let u=["xother","yother"].includes(s),c=["_xother","_yother"].includes(s),f=["_xother_","_yother_"].includes(s),h=["xother_","yother_"].includes(s),d=u||c||h||f;(c||f)&&(s=s.substring(1)),(h||f)&&(s=s.substring(0,s.length-1));let v=null,m=null;if(i.parseMultDiv){var b=Dnt(s);s=b.key,v=b.op,m=b.number}let p;if(d){if(n[s]===void 0)return"";p=n[s]}else for(let L of e)if(L){if(L.hasOwnProperty(s)){p=L[s];break}if(one.test(s)||(p=Ai.nestedProperty(L,s).get(!0)),p!==void 0)break}if(p===void 0){let{count:L,max:x,name:C}=i,S=r===!1?o:r;return L=Z6&&o<=$ie,u=s>=Z6&&s<=$ie;if(l&&(n=10*n+o-Z6),u&&(i=10*i+s-Z6),!l||!u){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var M3=2e9;Ai.seedPseudoRandom=function(){M3=2e9};Ai.pseudoRandom=function(){var e=M3;return M3=(69069*M3+1)%4294967296,Math.abs(M3-e)<429496729?Ai.pseudoRandom():M3/4294967296};Ai.fillText=function(e,t,r){var n=Array.isArray(r)?function(o){r.push(o)}:function(o){r.text=o},i=Ai.extractOption(e,t,"htx","hovertext");if(Ai.isValidTextValue(i))return n(i);var a=Ai.extractOption(e,t,"tx","text");if(Ai.isValidTextValue(a))return n(a)};Ai.isValidTextValue=function(e){return e||e===0};Ai.formatPercent=function(e,t){t=t||0;for(var r=(Math.round(100*e*Math.pow(10,t))*Math.pow(.1,t)).toFixed(t)+"%",n=0;n1&&(u=1):u=0,Ai.strTranslate(i-u*(r+o),a-u*(n+s))+Ai.strScale(u)+(l?"rotate("+l+(t?"":" "+r+" "+n)+")":"")};Ai.setTransormAndDisplay=function(e,t){e.attr("transform",Ai.getTextTransform(t)),e.style("display",t.scale?null:"none")};Ai.ensureUniformFontSize=function(e,t){var r=Ai.extendFlat({},t);return r.size=Math.max(t.size,e._fullLayout.uniformtext.minsize||0),r};Ai.join2=function(e,t,r){var n=e.length;return n>1?e.slice(0,-1).join(t)+r+e[n-1]:e.join(t)};Ai.bigFont=function(e){return Math.round(1.2*e)};var Qie=Ai.getFirefoxVersion(),znt=Qie!==null&&Qie<86;Ai.getPositionFromD3Event=function(){return znt?[QS.event.layerX,QS.event.layerY]:[QS.event.offsetX,QS.event.offsetY]}});var cne=ye(()=>{"use strict";var qnt=Pr(),lne={"X,X div":'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;border:0;',"X input,X button":'font-family:"Open Sans",verdana,arial,sans-serif;',"X input:focus,X button:focus":"outline:none;","X a":"text-decoration:none;","X a:hover":"text-decoration:none;","X .crisp":"shape-rendering:crispEdges;","X .user-select-none":"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;","X svg a":"fill:#447adb;","X svg a:hover":"fill:#3c6dc5;","X .main-svg":"position:absolute;top:0;left:0;pointer-events:none;","X .main-svg .draglayer":"pointer-events:all;","X .cursor-default":"cursor:default;","X .cursor-pointer":"cursor:pointer;","X .cursor-crosshair":"cursor:crosshair;","X .cursor-move":"cursor:move;","X .cursor-col-resize":"cursor:col-resize;","X .cursor-row-resize":"cursor:row-resize;","X .cursor-ns-resize":"cursor:ns-resize;","X .cursor-ew-resize":"cursor:ew-resize;","X .cursor-sw-resize":"cursor:sw-resize;","X .cursor-s-resize":"cursor:s-resize;","X .cursor-se-resize":"cursor:se-resize;","X .cursor-w-resize":"cursor:w-resize;","X .cursor-e-resize":"cursor:e-resize;","X .cursor-nw-resize":"cursor:nw-resize;","X .cursor-n-resize":"cursor:n-resize;","X .cursor-ne-resize":"cursor:ne-resize;","X .cursor-grab":"cursor:-webkit-grab;cursor:grab;","X .modebar":"position:absolute;top:2px;right:2px;","X .ease-bg":"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;","X .modebar--hover>:not(.watermark)":"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;","X:hover .modebar--hover .modebar-group":"opacity:1;","X:focus-within .modebar--hover .modebar-group":"opacity:1;","X .modebar-group":"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;","X .modebar-group a":"display:grid;place-content:center;","X .modebar-btn":"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;border:none;background:rgba(0,0,0,0);","X .modebar-btn svg":"position:relative;","X .modebar-btn:focus-visible":"outline:1px solid #000;outline-offset:1px;border-radius:3px;","X .modebar.vertical":"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;","X .modebar.vertical svg":"top:-1px;","X .modebar.vertical .modebar-group":"display:block;float:none;padding-left:0px;padding-bottom:8px;","X .modebar.vertical .modebar-group .modebar-btn":"display:block;text-align:center;","X [data-title]:before,X [data-title]:after":"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;","X [data-title]:hover:before,X [data-title]:hover:after":"display:block;opacity:1;","X [data-title]:before":'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',"X [data-title]:after":"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;","X .vertical [data-title]:before,X .vertical [data-title]:after":"top:0%;right:200%;","X .vertical [data-title]:before":"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;",Y:'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',"Y p":"margin:0;","Y .notifier-note":"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;","Y .notifier-close":"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;","Y .notifier-close:hover":"color:#444;text-decoration:none;cursor:pointer;"};for(sO in lne)une=sO.replace(/^,/," ,").replace(/X/g,".js-plotly-plot .plotly").replace(/Y/g,".plotly-notifier"),qnt.addStyleRule(une,lne[sO]);var une,sO});var lO=ye((pnr,fne)=>{fne.exports=!0});var cO=ye((gnr,hne)=>{"use strict";var Ont=lO(),uO;typeof window.matchMedia=="function"?uO=!window.matchMedia("(hover: none)").matches:uO=Ont;hne.exports=uO});var Sb=ye((mnr,fO)=>{"use strict";var C3=typeof Reflect=="object"?Reflect:null,dne=C3&&typeof C3.apply=="function"?C3.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},K6;C3&&typeof C3.ownKeys=="function"?K6=C3.ownKeys:Object.getOwnPropertySymbols?K6=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:K6=function(t){return Object.getOwnPropertyNames(t)};function Bnt(e){console&&console.warn&&console.warn(e)}var pne=Number.isNaN||function(t){return t!==t};function Jc(){Jc.init.call(this)}fO.exports=Jc;fO.exports.once=Gnt;Jc.EventEmitter=Jc;Jc.prototype._events=void 0;Jc.prototype._eventsCount=0;Jc.prototype._maxListeners=void 0;var vne=10;function J6(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(Jc,"defaultMaxListeners",{enumerable:!0,get:function(){return vne},set:function(e){if(typeof e!="number"||e<0||pne(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");vne=e}});Jc.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Jc.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||pne(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function gne(e){return e._maxListeners===void 0?Jc.defaultMaxListeners:e._maxListeners}Jc.prototype.getMaxListeners=function(){return gne(this)};Jc.prototype.emit=function(t){for(var r=[],n=1;n0&&(o=r[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var l=a[t];if(l===void 0)return!1;if(typeof l=="function")dne(l,this,r);else for(var u=l.length,c=bne(l,u),n=0;n0&&o.length>i&&!o.warned){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=o.length,Bnt(s)}return e}Jc.prototype.addListener=function(t,r){return mne(this,t,r,!1)};Jc.prototype.on=Jc.prototype.addListener;Jc.prototype.prependListener=function(t,r){return mne(this,t,r,!0)};function Nnt(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function yne(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=Nnt.bind(n);return i.listener=r,n.wrapFn=i,i}Jc.prototype.once=function(t,r){return J6(r),this.on(t,yne(this,t,r)),this};Jc.prototype.prependOnceListener=function(t,r){return J6(r),this.prependListener(t,yne(this,t,r)),this};Jc.prototype.removeListener=function(t,r){var n,i,a,o,s;if(J6(r),i=this._events,i===void 0)return this;if(n=i[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete i[t],i.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(a=-1,o=n.length-1;o>=0;o--)if(n[o]===r||n[o].listener===r){s=n[o].listener,a=o;break}if(a<0)return this;a===0?n.shift():Unt(n,a),n.length===1&&(i[t]=n[0]),i.removeListener!==void 0&&this.emit("removeListener",t,s||r)}return this};Jc.prototype.off=Jc.prototype.removeListener;Jc.prototype.removeAllListeners=function(t){var r,n,i;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var a=Object.keys(n),o;for(i=0;i=0;i--)this.removeListener(t,r[i]);return this};function _ne(e,t,r){var n=e._events;if(n===void 0)return[];var i=n[t];return i===void 0?[]:typeof i=="function"?r?[i.listener||i]:[i]:r?Vnt(i):bne(i,i.length)}Jc.prototype.listeners=function(t){return _ne(this,t,!0)};Jc.prototype.rawListeners=function(t){return _ne(this,t,!1)};Jc.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):xne.call(e,t)};Jc.prototype.listenerCount=xne;function xne(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Jc.prototype.eventNames=function(){return this._eventsCount>0?K6(this._events):[]};function bne(e,t){for(var r=new Array(t),n=0;n{"use strict";var hO=Sb().EventEmitter,jnt={init:function(e){if(e._ev instanceof hO)return e;var t=new hO,r=new hO;return e._ev=t,e._internalEv=r,e.on=t.on.bind(t),e.once=t.once.bind(t),e.removeListener=t.removeListener.bind(t),e.removeAllListeners=t.removeAllListeners.bind(t),e._internalOn=r.on.bind(r),e._internalOnce=r.once.bind(r),e._removeInternalListener=r.removeListener.bind(r),e._removeAllInternalListeners=r.removeAllListeners.bind(r),e.emit=function(n,i){t.emit(n,i),r.emit(n,i)},typeof e.addEventListener=="function"&&e.addEventListener("wheel",()=>{},{passive:!0}),e},triggerHandler:function(e,t,r){var n,i=e._ev;if(!i)return;var a=i._events[t];if(!a)return;function o(l){if(l.listener){if(i.removeListener(t,l.listener),!l.fired)return l.fired=!0,l.listener.apply(i,[r])}else return l.apply(i,[r])}a=Array.isArray(a)?a:[a];var s;for(s=0;s{"use strict";var Ane=Pr(),Wnt=xb().dfltConfig;function Xnt(e,t){for(var r=[],n,i=0;iWnt.queueLength&&(e.undoQueue.queue.shift(),e.undoQueue.index--)};Ly.startSequence=function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!0,e.undoQueue.beginSequence=!0};Ly.stopSequence=function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!1,e.undoQueue.beginSequence=!1};Ly.undo=function(t){var r,n;if(!(t.undoQueue===void 0||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,r=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,n=0;n=t.undoQueue.queue.length)){for(r=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,n=0;n{"use strict";Ene.exports={_isLinkedToArray:"frames_entry",group:{valType:"string"},name:{valType:"string"},traces:{valType:"any"},baseframe:{valType:"string"},data:{valType:"any"},layout:{valType:"any"}}});var R3=ye(ed=>{"use strict";var x0=Oa(),eM=Pr(),Q6=Gl(),vO=b3(),Znt=dO(),Ynt=WS(),Knt=xb().configAttributes,kne=mc(),Ag=eM.extendDeepAll,P3=eM.isPlainObject,Jnt=eM.isArrayOrTypedArray,eL=eM.nestedProperty,$nt=eM.valObjectMeta,pO="_isSubplotObj",tL="_isLinkedToArray",Qnt="_arrayAttrRegexps",Lne="_deprecated",gO=[pO,tL,Qnt,Lne];ed.IS_SUBPLOT_OBJ=pO;ed.IS_LINKED_TO_ARRAY=tL;ed.DEPRECATED=Lne;ed.UNDERSCORE_ATTRS=gO;ed.get=function(){var e={};return x0.allTypes.forEach(function(t){e[t]=tat(t)}),{defs:{valObjects:$nt,metaKeys:gO.concat(["description","role","editType","impliedEdits"]),editType:{traces:kne.traces,layout:kne.layout},impliedEdits:{}},traces:e,layout:rat(),frames:iat(),animation:I3(Ynt),config:I3(Knt)}};ed.crawl=function(e,t,r,n){var i=r||0;n=n||"",Object.keys(e).forEach(function(a){var o=e[a];if(gO.indexOf(a)===-1){var s=(n?n+".":"")+a;t(o,a,e,i,s),!ed.isValObject(o)&&P3(o)&&a!=="impliedEdits"&&ed.crawl(o,t,i+1,s)}})};ed.isValObject=function(e){return e&&e.valType!==void 0};ed.findArrayAttributes=function(e){var t=[],r=[],n=[],i,a;function o(l,u,c,f){r=r.slice(0,f).concat([u]),n=n.slice(0,f).concat([l&&l._isLinkedToArray]);var h=l&&(l.valType==="data_array"||l.arrayOk===!0)&&!(r[f-1]==="colorbar"&&(u==="ticktext"||u==="tickvals"));h&&s(i,0,"")}function s(l,u,c){var f=l[r[u]],h=c+r[u];if(u===r.length-1)Jnt(f)&&t.push(a+h);else if(n[u]){if(Array.isArray(f))for(var d=0;d=a.length)return!1;if(e.dimensions===2){if(r++,t.length===r)return e;var o=t[r];if(!$6(o))return!1;e=a[i][o]}else e=a[i]}else e=a}}return e}function $6(e){return e===Math.round(e)&&e>=0}function tat(e){var t,r;t=x0.modules[e]._module,r=t.basePlotModule;var n={};n.type=null;var i=Ag({},Q6),a=Ag({},t.attributes);ed.crawl(a,function(l,u,c,f,h){eL(i,h).set(void 0),l===void 0&&eL(a,h).set(void 0)}),Ag(n,i),x0.traceIs(e,"noOpacity")&&delete n.opacity,x0.traceIs(e,"showLegend")||(delete n.showlegend,delete n.legendgroup),x0.traceIs(e,"noHover")&&(delete n.hoverinfo,delete n.hoverlabel),t.selectPoints||delete n.selectedpoints,Ag(n,a),r.attributes&&Ag(n,r.attributes),n.type=e;var o={meta:t.meta||{},categories:t.categories||{},animatable:!!t.animatable,type:e,attributes:I3(n)};if(t.layoutAttributes){var s={};Ag(s,t.layoutAttributes),o.layoutAttributes=I3(s)}return t.animatable||ed.crawl(o,function(l){ed.isValObject(l)&&"anim"in l&&delete l.anim}),o}function rat(){var e={},t,r;Ag(e,vO);for(t in x0.subplotsRegistry)if(r=x0.subplotsRegistry[t],!!r.layoutAttributes)if(Array.isArray(r.attr))for(var n=0;n{"use strict";var D3=Pr(),lat=Gl(),a_="templateitemname",mO={name:{valType:"string",editType:"none"}};mO[a_]={valType:"string",editType:"calc"};Mb.templatedArray=function(e,t){return t._isLinkedToArray=e,t.name=mO.name,t[a_]=mO[a_],t};Mb.traceTemplater=function(e){var t={},r,n;for(r in e)n=e[r],Array.isArray(n)&&n.length&&(t[r]=0);function i(a){r=D3.coerce(a,{},lat,"type");var o={type:r,_template:null};if(r in t){n=e[r];var s=t[r]%n.length;t[r]++,o._template=n[s]}return o}return{newTrace:i}};Mb.newContainer=function(e,t,r){var n=e._template,i=n&&(n[t]||r&&n[r]);D3.isPlainObject(i)||(i=null);var a=e[t]={_template:i};return a};Mb.arrayTemplater=function(e,t,r){var n=e._template,i=n&&n[Rne(t)],a=n&&n[t];(!Array.isArray(a)||!a.length)&&(a=[]);var o={};function s(u){var c={name:u.name,_input:u},f=c[a_]=u[a_];if(!Ine(f))return c._template=i,c;for(var h=0;h=n&&(r._input||{})._templateitemname;a&&(i=n);var o=t+"["+i+"]",s;function l(){s={},a&&(s[o]={},s[o][a_]=a)}l();function u(d,v){s[d]=v}function c(d,v){a?D3.nestedProperty(s[o],d).set(v):s[o+"."+d]=v}function f(){var d=s;return l(),d}function h(d,v){d&&c(d,v);var m=f();for(var b in m)D3.nestedProperty(e,b).set(m[b])}return{modifyBase:u,modifyItem:c,getUpdateObj:f,applyUpdate:h}}});var Rh=ye((Tnr,Dne)=>{"use strict";var tM=m3().counter;Dne.exports={idRegex:{x:tM("x","( domain)?"),y:tM("y","( domain)?")},attrRegex:tM("[xy]axis"),xAxisMatch:tM("xaxis"),yAxisMatch:tM("yaxis"),AX_ID_PATTERN:/^[xyz][0-9]*( domain)?$/,AX_NAME_PATTERN:/^[xyz]axis[0-9]*$/,SUBPLOT_PATTERN:/^x([0-9]*)y([0-9]*)$/,HOUR_PATTERN:"hour",WEEKDAY_PATTERN:"day of week",MINDRAG:8,MINZOOM:20,DRAGGERSIZE:20,REDRAWDELAY:50,DFLTRANGEX:[-1,6],DFLTRANGEY:[-1,4],traceLayerClasses:["imagelayer","heatmaplayer","contourcarpetlayer","contourlayer","funnellayer","waterfalllayer","barlayer","carpetlayer","violinlayer","boxlayer","ohlclayer","scattercarpetlayer","scatterlayer"],clipOnAxisFalseQuery:[".scatterlayer",".barlayer",".funnellayer",".waterfalllayer"],layerValue2layerClass:{"above traces":"above","below traces":"below"},zindexSeparator:"z"}});var df=ye(Sp=>{"use strict";var uat=Oa(),yO=Rh();Sp.id2name=function(t){if(!(typeof t!="string"||!t.match(yO.AX_ID_PATTERN))){var r=t.split(" ")[0].slice(1);return r==="1"&&(r=""),t.charAt(0)+"axis"+r}};Sp.name2id=function(t){if(t.match(yO.AX_NAME_PATTERN)){var r=t.slice(5);return r==="1"&&(r=""),t.charAt(0)+r}};Sp.cleanId=function(t,r,n){var i=/( domain)$/.test(t);if(!(typeof t!="string"||!t.match(yO.AX_ID_PATTERN))&&!(r&&t.charAt(0)!==r)&&!(i&&!n)){var a=t.split(" ")[0].slice(1).replace(/^0+/,"");return a==="1"&&(a=""),t.charAt(0)+a+(i&&n?" domain":"")}};Sp.list=function(e,t,r){var n=e._fullLayout;if(!n)return[];var i=Sp.listIds(e,t),a=new Array(i.length),o;for(o=0;on?1:-1:+(e.slice(1)||1)-+(t.slice(1)||1)};Sp.ref2id=function(e){return/^[xyz]/.test(e)?e.split(" ")[0]:!1};function Fne(e,t){if(t&&t.length){for(var r=0;r{"use strict";function cat(e){var t=e._fullLayout._zoomlayer;t&&t.selectAll(".outline-controllers").remove()}function fat(e){var t=e._fullLayout._zoomlayer;t&&t.selectAll(".select-outline").remove(),e._fullLayout._outlining=!1}zne.exports={clearOutlineControllers:cat,clearOutline:fat}});var rL=ye((Mnr,qne)=>{"use strict";qne.exports={scattermode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},scattergap:{valType:"number",min:0,max:1,editType:"calc"}}});var Id=ye(nL=>{"use strict";var iL=Oa(),Enr=Rh().SUBPLOT_PATTERN;nL.getSubplotCalcData=function(e,t,r){var n=iL.subplotsRegistry[t];if(!n)return[];for(var i=n.attr,a=[],o=0;o{"use strict";var hat=Oa(),F3=Pr();Eb.manageCommandObserver=function(e,t,r,n){var i={},a=!0;t&&t._commandObserver&&(i=t._commandObserver),i.cache||(i.cache={}),i.lookupTable={};var o=Eb.hasSimpleAPICommandBindings(e,r,i.lookupTable);if(t&&t._commandObserver){if(o)return i;if(t._commandObserver.remove)return t._commandObserver.remove(),t._commandObserver=null,i}if(o){One(e,o,i.cache),i.check=function(){if(a){var c=One(e,o,i.cache);return c.changed&&n&&i.lookupTable[c.value]!==void 0&&(i.disable(),Promise.resolve(n({value:c.value,type:o.type,prop:o.prop,traces:o.traces,index:i.lookupTable[c.value]})).then(i.enable,i.enable)),c.changed}};for(var s=["plotly_relayout","plotly_redraw","plotly_restyle","plotly_update","plotly_animatingframe","plotly_afterplot"],l=0;l0?".":"")+i;F3.isPlainObject(a)?_O(a,t,o,n+1):t(o,i,a)}})}});var Mc=ye((Lnr,tae)=>{"use strict";var Zne=qa(),vat=d3().timeFormatLocale,pat=kq().formatLocale,rM=Eo(),gat=Cq(),Xl=Oa(),Yne=R3(),mat=vl(),Na=Pr(),Kne=ka(),Vne=fs().BADNUM,Mp=df(),yat=o_().clearOutline,_at=rL(),xO=WS(),xat=dO(),bat=Id().getModuleCalcData,Gne=Na.relinkPrivateKeys,kb=Na._,xa=tae.exports={};Na.extendFlat(xa,Xl);xa.attributes=Gl();xa.attributes.type.values=xa.allTypes;xa.fontAttrs=ec();xa.layoutAttributes=b3();var oL=Une();xa.executeAPICommand=oL.executeAPICommand;xa.computeAPICommandBindings=oL.computeAPICommandBindings;xa.manageCommandObserver=oL.manageCommandObserver;xa.hasSimpleAPICommandBindings=oL.hasSimpleAPICommandBindings;xa.redrawText=function(e){return e=Na.getGraphDiv(e),new Promise(function(t){setTimeout(function(){e._fullLayout&&(Xl.getComponentMethod("annotations","draw")(e),Xl.getComponentMethod("legend","draw")(e),Xl.getComponentMethod("colorbar","draw")(e),t(xa.previousPromises(e)))},300)})};xa.resize=function(e){e=Na.getGraphDiv(e);var t,r=new Promise(function(n,i){(!e||Na.isHidden(e))&&i(new Error("Resize must be passed a displayed plot div element.")),e._redrawTimer&&clearTimeout(e._redrawTimer),e._resolveResize&&(t=e._resolveResize),e._resolveResize=n,e._redrawTimer=setTimeout(function(){if(!e.layout||e.layout.width&&e.layout.height||Na.isHidden(e)){n(e);return}delete e.layout.width,delete e.layout.height;var a=e.changed;e.autoplay=!0,Xl.call("relayout",e,{autosize:!0}).then(function(){e.changed=a,e._resolveResize===n&&(delete e._resolveResize,n(e))})},100)});return t&&t(r),r};xa.previousPromises=function(e){if((e._promises||[]).length)return Promise.all(e._promises).then(function(){e._promises=[]})};xa.addLinks=function(e){if(!(!e._context.showLink&&!e._context.showSources)){var t=e._fullLayout,r=Na.ensureSingle(t._paper,"text","js-plot-link-container",function(l){l.style({"font-family":'"Open Sans", Arial, sans-serif',"font-size":"12px",fill:Kne.defaultLine,"pointer-events":"all"}).each(function(){var u=Zne.select(this);u.append("tspan").classed("js-link-to-tool",!0),u.append("tspan").classed("js-link-spacer",!0),u.append("tspan").classed("js-sourcelinks",!0)})}),n=r.node(),i={y:t._paper.attr("height")-9};document.body.contains(n)&&n.getComputedTextLength()>=t.width-20?(i["text-anchor"]="start",i.x=5):(i["text-anchor"]="end",i.x=t._paper.attr("width")-7),r.attr(i);var a=r.select(".js-link-to-tool"),o=r.select(".js-link-spacer"),s=r.select(".js-sourcelinks");e._context.showSources&&e._context.showSources(e),e._context.showLink&&wat(e,a),o.text(a.text()&&s.text()?" - ":"")}};function wat(e,t){t.text("");var r=t.append("a").attr({"xlink:xlink:href":"#",class:"link--impt link--embedview","font-weight":"bold"}).text(e._context.linkText+" \xBB");if(e._context.sendData)r.on("click",function(){xa.sendDataToCloud(e)});else{var n=window.location.pathname.split("/"),i=window.location.search;r.attr({"xlink:xlink:show":"new","xlink:xlink:href":"/"+n[2].split(".")[0]+"/"+n[1]+i})}}xa.sendDataToCloud=function(e){var t=(window.PLOTLYENV||{}).BASE_URL||e._context.plotlyServerURL;if(t){e.emit("plotly_beforeexport");var r=Zne.select(e).append("div").attr("id","hiddenform").style("display","none"),n=r.append("form").attr({action:t+"/external",method:"post",target:"_blank"}),i=n.append("input").attr({type:"text",name:"data"});return i.node().value=xa.graphJson(e,!1,"keepdata"),n.node().submit(),r.remove(),e.emit("plotly_afterexport"),!1}};var Tat=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],Aat=["year","month","dayMonth","dayMonthYear"];xa.supplyDefaults=function(e,t){var r=t&&t.skipUpdateCalc,n=e._fullLayout||{};if(n._skipDefaults){delete n._skipDefaults;return}var i=e._fullLayout={},a=e.layout||{},o=e._fullData||[],s=e._fullData=[],l=e.data||[],u=e.calcdata||[],c=e._context||{},f;e._transitionData||xa.createTransitionData(e),i._dfltTitle={plot:kb(e,"Click to enter Plot title"),subtitle:kb(e,"Click to enter Plot subtitle"),x:kb(e,"Click to enter X axis title"),y:kb(e,"Click to enter Y axis title"),colorbar:kb(e,"Click to enter Colorscale title"),annotation:kb(e,"new text")},i._traceWord=kb(e,"trace");var h=Hne(e,Tat);if(i._mapboxAccessToken=c.mapboxAccessToken,n._initialAutoSizeIsDone){var d=n.width,v=n.height;xa.supplyLayoutGlobalDefaults(a,i,h),a.width||(i.width=d),a.height||(i.height=v),xa.sanitizeMargins(i)}else{xa.supplyLayoutGlobalDefaults(a,i,h);var m=!a.width||!a.height,b=i.autosize,p=c.autosizable,k=m&&(b||p);k?xa.plotAutoSize(e,a,i):m&&xa.sanitizeMargins(i),!b&&m&&(a.width=i.width,a.height=i.height)}i._d3locale=Eat(h,i.separators),i._extraFormat=Hne(e,Aat),i._initialAutoSizeIsDone=!0,i._dataLength=l.length,i._modules=[],i._visibleModules=[],i._basePlotModules=[];var M=i._subplots=Mat(),T=i._splomAxes={x:{},y:{}},L=i._splomSubplots={};i._splomGridDflt={},i._scatterStackOpts={},i._firstScatter={},i._alignmentOpts={},i._colorAxes={},i._requestRangeslider={},i._traceUids=Sat(o,l),xa.supplyDataDefaults(l,s,a,i);var x=Object.keys(T.x),C=Object.keys(T.y);if(x.length>1&&C.length>1){for(Xl.getComponentMethod("grid","sizeDefaults")(a,i),f=0;f15&&C.length>15&&i.shapes.length===0&&i.images.length===0,xa.linkSubplots(s,i,o,n),xa.cleanPlot(s,i,o,n);var z=!!(n._has&&n._has("cartesian")),q=!!(i._has&&i._has("cartesian")),V=z,G=q;V&&!G?n._bgLayer.remove():G&&!V&&(i._shouldCreateBgLayer=!0),n._zoomlayer&&!e._dragging&&yat({_fullLayout:n}),kat(s,i),Gne(i,n),Xl.getComponentMethod("colorscale","crossTraceDefaults")(s,i),i._preGUI||(i._preGUI={}),i._tracePreGUI||(i._tracePreGUI={});var Z=i._tracePreGUI,j={},N;for(N in Z)j[N]="old";for(f=0;f0){var c=1-2*a;o=Math.round(c*o),s=Math.round(c*s)}}var f=xa.layoutAttributes.width.min,h=xa.layoutAttributes.height.min;o1,v=!r.height&&Math.abs(n.height-s)>1;(v||d)&&(d&&(n.width=o),v&&(n.height=s)),t._initialAutoSize||(t._initialAutoSize={width:o,height:s}),xa.sanitizeMargins(n)};xa.supplyLayoutModuleDefaults=function(e,t,r,n){var i=Xl.componentsRegistry,a=t._basePlotModules,o,s,l,u=Xl.subplotsRegistry.cartesian;for(o in i)l=i[o],l.includeBasePlot&&l.includeBasePlot(e,t);a.length||a.push(u),t._has("cartesian")&&(Xl.getComponentMethod("grid","contentDefaults")(e,t),u.finalizeSubplots(e,t));for(var c in t._subplots)t._subplots[c].sort(Na.subplotSort);for(s=0;s1&&(r.l/=b,r.r/=b)}if(h){var p=(r.t+r.b)/h;p>1&&(r.t/=p,r.b/=p)}var k=r.xl!==void 0?r.xl:r.x,M=r.xr!==void 0?r.xr:r.x,T=r.yt!==void 0?r.yt:r.y,L=r.yb!==void 0?r.yb:r.y;d[t]={l:{val:k,size:r.l+m},r:{val:M,size:r.r+m},b:{val:L,size:r.b+m},t:{val:T,size:r.t+m}},v[t]=1}if(!n._replotting)return xa.doAutoMargin(e)}};function Lat(e){if("_redrawFromAutoMarginCount"in e._fullLayout)return!1;var t=Mp.list(e,"",!0);for(var r in t)if(t[r].autoshift||t[r].shift)return!0;return!1}xa.doAutoMargin=function(e){var t=e._fullLayout,r=t.width,n=t.height;t._size||(t._size={}),Jne(t);var i=t._size,a=t.margin,o={t:0,b:0,l:0,r:0},s=Na.extendFlat({},i),l=a.l,u=a.r,c=a.t,f=a.b,h=t._pushmargin,d=t._pushmarginIds,v=t.minreducedwidth,m=t.minreducedheight;if(a.autoexpand!==!1){for(var b in h)d[b]||delete h[b];var p=e._fullLayout._reservedMargin;for(var k in p)for(var M in p[k]){var T=p[k][M];o[M]=Math.max(o[M],T)}h.base={l:{val:0,size:l},r:{val:1,size:u},t:{val:1,size:c},b:{val:0,size:f}};for(var L in o){var x=0;for(var C in h)C!=="base"&&rM(h[C][L].size)&&(x=h[C][L].size>x?h[C][L].size:x);var S=Math.max(0,a[L]-x);o[L]=Math.max(0,o[L]-S)}for(var g in h){var P=h[g].l||{},E=h[g].b||{},z=P.val,q=P.size,V=E.val,G=E.size,Z=r-o.r-o.l,j=n-o.t-o.b;for(var N in h){if(rM(q)&&h[N].r){var H=h[N].r.val,ie=h[N].r.size;if(H>z){var ae=(q*H+(ie-Z)*z)/(H-z),_e=(ie*(1-z)+(q-Z)*(1-H))/(H-z);ae+_e>l+u&&(l=ae,u=_e)}}if(rM(G)&&h[N].t){var Ee=h[N].t.val,Ce=h[N].t.size;if(Ee>V){var ge=(G*Ee+(Ce-j)*V)/(Ee-V),re=(Ce*(1-V)+(G-j)*(1-Ee))/(Ee-V);ge+re>f+c&&(f=ge,c=re)}}}}}var Se=Na.constrain(r-a.l-a.r,$ne,v),ke=Na.constrain(n-a.t-a.b,Qne,m),be=Math.max(0,r-Se),Be=Math.max(0,n-ke);if(be){var Le=(l+u)/be;Le>1&&(l/=Le,u/=Le)}if(Be){var me=(f+c)/Be;me>1&&(f/=me,c/=me)}if(i.l=Math.round(l)+o.l,i.r=Math.round(u)+o.r,i.t=Math.round(c)+o.t,i.b=Math.round(f)+o.b,i.p=Math.round(a.pad),i.w=Math.round(r)-i.l-i.r,i.h=Math.round(n)-i.t-i.b,!t._replotting&&(xa.didMarginChange(s,i)||Lat(e))){"_redrawFromAutoMarginCount"in t?t._redrawFromAutoMarginCount++:t._redrawFromAutoMarginCount=1;var Pe=3*(1+Object.keys(d).length);if(t._redrawFromAutoMarginCount1)return!0}return!1};xa.graphJson=function(e,t,r,n,i,a){(i&&t&&!e._fullData||i&&!t&&!e._fullLayout)&&xa.supplyDefaults(e);var o=i?e._fullData:e.data,s=i?e._fullLayout:e.layout,l=(e._transitionData||{})._frames;function u(h,d){if(typeof h=="function")return d?"_function_":null;if(Na.isPlainObject(h)){var v={},m;return Object.keys(h).sort().forEach(function(M){if(["_","["].indexOf(M.charAt(0))===-1){if(typeof h[M]=="function"){d&&(v[M]="_function");return}if(r==="keepdata"){if(M.slice(-3)==="src")return}else if(r==="keepstream"){if(m=h[M+"src"],typeof m=="string"&&m.indexOf(":")>0&&!Na.isPlainObject(h.stream))return}else if(r!=="keepall"&&(m=h[M+"src"],typeof m=="string"&&m.indexOf(":")>0))return;v[M]=u(h[M],d)}}),v}var b=Array.isArray(h),p=Na.isTypedArray(h);if((b||p)&&h.dtype&&h.shape){var k=h.bdata;return u({dtype:h.dtype,shape:h.shape,bdata:Na.isArrayBuffer(k)?gat.encode(k):k},d)}return b?h.map(function(M){return u(M,d)}):p?Na.simpleMap(h,Na.identity):Na.isJSDate(h)?Na.ms2DateTimeLocal(+h):h}var c={data:(o||[]).map(function(h){var d=u(h);return t&&delete d.fit,d})};if(!t&&(c.layout=u(s),i)){var f=s._size;c.layout.computed={margin:{b:f.b,l:f.l,r:f.r,t:f.t}}}return l&&(c.frames=u(l)),a&&(c.config=u(e._context,!0)),n==="object"?c:JSON.stringify(c)};xa.modifyFrames=function(e,t){var r,n,i,a=e._transitionData._frames,o=e._transitionData._frameHash;for(r=0;r0&&(e._transitioningWithDuration=!0),e._transitionData._interruptCallbacks.push(function(){n=!0}),r.redraw&&e._transitionData._interruptCallbacks.push(function(){return Xl.call("redraw",e)}),e._transitionData._interruptCallbacks.push(function(){e.emit("plotly_transitioninterrupted",[])});var h=0,d=0;function v(){return h++,function(){d++,!n&&d===h&&s(f)}}r.runFn(v),setTimeout(v())})}function s(f){if(e._transitionData)return a(e._transitionData._interruptCallbacks),Promise.resolve().then(function(){if(r.redraw)return Xl.call("redraw",e)}).then(function(){e._transitioning=!1,e._transitioningWithDuration=!1,e.emit("plotly_transitioned",[])}).then(f)}function l(){if(e._transitionData)return e._transitioning=!1,i(e._transitionData._interruptCallbacks)}var u=[xa.previousPromises,l,r.prepareFn,xa.rehover,xa.reselect,o],c=Na.syncOrAsync(u,e);return(!c||!c.then)&&(c=Promise.resolve()),c.then(function(){return e})}xa.doCalcdata=function(e,t){var r=Mp.list(e),n=e._fullData,i=e._fullLayout,a,o,s,l,u=new Array(n.length),c=(e.calcdata||[]).slice();for(e.calcdata=u,i._numBoxes=0,i._numViolins=0,i._violinScaleGroupStats={},e._hmpixcount=0,e._hmlumcount=0,i._piecolormap={},i._sunburstcolormap={},i._treemapcolormap={},i._iciclecolormap={},i._funnelareacolormap={},s=0;s=0;l--)if(L[l].enabled){a._indexToPoints=L[l]._indexToPoints;break}o&&o.calc&&(T=o.calc(e,a))}(!Array.isArray(T)||!T[0])&&(T=[{x:Vne,y:Vne}]),T[0].t||(T[0].t={}),T[0].trace=a,u[k]=T}}for(Wne(r,n,i),s=0;s{"use strict";Cb.xmlns="http://www.w3.org/2000/xmlns/";Cb.svg="http://www.w3.org/2000/svg";Cb.xlink="http://www.w3.org/1999/xlink";Cb.svgAttrs={xmlns:Cb.svg,"xmlns:xlink":Cb.xlink}});var Dh=ye((Inr,rae)=>{"use strict";rae.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:"right",right:"left",top:"bottom",bottom:"top"}}});var Zl=ye(b0=>{"use strict";var Fh=qa(),Py=Pr(),Dat=Py.strTranslate,bO=Wp(),Fat=Dh().LINE_SPACING,zat=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;b0.convertToTspans=function(e,t,r){var n=e.text(),i=!e.attr("data-notex")&&t&&t._context.typesetMath&&typeof MathJax!="undefined"&&n.match(zat),a=Fh.select(e.node().parentNode);if(a.empty())return;var o=e.attr("class")?e.attr("class").split(" ")[0]:"text";o+="-math",a.selectAll("svg."+o).remove(),a.selectAll("g."+o+"-group").remove(),e.style("display",null).attr({"data-unformatted":n,"data-math":"N"});function s(){a.empty()||(o=e.attr("class")+"-math",a.select("svg."+o).remove()),e.text("").style("white-space","pre");var l=Yat(e.node(),n);l&&e.style("pointer-events","all"),b0.positionText(e),r&&r.call(e)}return i?(t&&t._promises||[]).push(new Promise(function(l){e.style("display","none");var u=parseInt(e.node().style.fontSize,10),c={fontSize:u};Nat(i[2],c,function(f,h,d){a.selectAll("svg."+o).remove(),a.selectAll("g."+o+"-group").remove();var v=f&&f.select("svg");if(!v||!v.node()){s(),l();return}var m=a.append("g").classed(o+"-group",!0).attr({"pointer-events":"none","data-unformatted":n,"data-math":"Y"});m.node().appendChild(v.node()),h&&h.node()&&v.node().insertBefore(h.node().cloneNode(!0),v.node().firstChild);var b=d.width,p=d.height;v.attr({class:o,height:p,preserveAspectRatio:"xMinYMin meet"}).style({overflow:"visible","pointer-events":"none"});var k=e.node().style.fill||"black",M=v.select("g");M.attr({fill:k,stroke:k});var T=M.node().getBoundingClientRect(),L=T.width,x=T.height;(L>b||x>p)&&(v.style("overflow","hidden"),T=v.node().getBoundingClientRect(),L=T.width,x=T.height);var C=+e.attr("x"),S=+e.attr("y"),g=u||e.node().getBoundingClientRect().height,P=-g/4;if(o[0]==="y")m.attr({transform:"rotate("+[-90,C,S]+")"+Dat(-L/2,P-x/2)});else if(o[0]==="l")S=P-x/2;else if(o[0]==="a"&&o.indexOf("atitle")!==0)C=0,S=P;else{var E=e.attr("text-anchor");C=C-L*(E==="middle"?.5:E==="end"?1:0),S=S+P-x/2}v.attr({x:C,y:S}),r&&r.call(e,m),l(m)})})):s(),e};var qat=/(<|<|<)/g,Oat=/(>|>|>)/g;function Bat(e){return e.replace(qat,"\\lt ").replace(Oat,"\\gt ")}var iae=[["$","$"],["\\(","\\)"]];function Nat(e,t,r){var n=parseInt((MathJax.version||"").split(".")[0]);if(n!==2&&n!==3){Py.warn("No MathJax version:",MathJax.version);return}var i,a,o,s,l=function(){return a=Py.extendDeepAll({},MathJax.Hub.config),o=MathJax.Hub.processSectionDelay,MathJax.Hub.processSectionDelay!==void 0&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:"none",tex2jax:{inlineMath:iae},displayAlign:"left"})},u=function(){a=Py.extendDeepAll({},MathJax.config),MathJax.config.tex||(MathJax.config.tex={}),MathJax.config.tex.inlineMath=iae},c=function(){if(i=MathJax.Hub.config.menuSettings.renderer,i!=="SVG")return MathJax.Hub.setRenderer("SVG")},f=function(){i=MathJax.config.startup.output,i!=="svg"&&(MathJax.config.startup.output="svg")},h=function(){var k="math-output-"+Py.randstr({},64);s=Fh.select("body").append("div").attr({id:k}).style({visibility:"hidden",position:"absolute","font-size":t.fontSize+"px"}).text(Bat(e));var M=s.node();return n===2?MathJax.Hub.Typeset(M):MathJax.typeset([M])},d=function(){var k=s.select(n===2?".MathJax_SVG":".MathJax"),M=!k.empty()&&s.select("svg").node();if(!M)Py.log("There was an error in the tex syntax.",e),r();else{var T=M.getBoundingClientRect(),L;n===2?L=Fh.select("body").select("#MathJax_SVG_glyphs"):L=k.select("defs"),r(k,L,T)}s.remove()},v=function(){if(i!=="SVG")return MathJax.Hub.setRenderer(i)},m=function(){i!=="svg"&&(MathJax.config.startup.output=i)},b=function(){return o!==void 0&&(MathJax.Hub.processSectionDelay=o),MathJax.Hub.Config(a)},p=function(){MathJax.config=a};n===2?MathJax.Hub.Queue(l,c,h,d,v,b):n===3&&(u(),f(),MathJax.startup.defaultReady(),MathJax.startup.promise.then(function(){h(),d(),m(),p()}))}var sae={sup:"font-size:70%",sub:"font-size:70%",s:"text-decoration:line-through",u:"text-decoration:underline",b:"font-weight:bold",i:"font-style:italic",a:"cursor:pointer",span:"",em:"font-style:italic;font-weight:bold"},Uat={sub:"0.3em",sup:"-0.6em"},Vat={sub:"-0.21em",sup:"0.42em"},nae="\u200B",aae=["http:","https:","mailto:","",void 0,":"],lae=b0.NEWLINES=/(\r\n?|\n)/g,TO=/(<[^<>]*>)/,AO=/<(\/?)([^ >]*)(\s+(.*))?>/i,Gat=//i;b0.BR_TAG_ALL=//gi;var uae=/(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i,cae=/(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i,fae=/(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i,Hat=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function Lb(e,t){if(!e)return null;var r=e.match(t),n=r&&(r[3]||r[4]);return n&&sL(n)}var jat=/(^|;)\s*color:/;b0.plainText=function(e,t){t=t||{};for(var r=t.len!==void 0&&t.len!==-1?t.len:1/0,n=t.allowedTags!==void 0?t.allowedTags:["br"],i="...",a=i.length,o=e.split(TO),s=[],l="",u=0,c=0;ca?s.push(f.slice(0,Math.max(0,m-a))+i):s.push(f.slice(0,m));break}l=""}}return s.join("")};var Wat={mu:"\u03BC",amp:"&",lt:"<",gt:">",nbsp:"\xA0",times:"\xD7",plusmn:"\xB1",deg:"\xB0"},Xat=/&(#\d+|#x[\da-fA-F]+|[a-z]+);/g;function sL(e){return e.replace(Xat,function(t,r){var n;return r.charAt(0)==="#"?n=Zat(r.charAt(1)==="x"?parseInt(r.slice(2),16):parseInt(r.slice(1),10)):n=Wat[r],n||t})}b0.convertEntities=sL;function Zat(e){if(!(e>1114111)){var t=String.fromCodePoint;if(t)return t(e);var r=String.fromCharCode;return e<=65535?r(e):r((e>>10)+55232,e%1024+56320)}}function Yat(e,t){t=t.replace(lae," ");var r=!1,n=[],i,a=-1;function o(){a++;var x=document.createElementNS(bO.svg,"tspan");Fh.select(x).attr({class:"line",dy:a*Fat+"em"}),e.appendChild(x),i=x;var C=n;if(n=[{node:x}],C.length>1)for(var S=1;S.",t);return}var C=n.pop();x!==C.type&&Py.log("Start tag <"+C.type+"> doesnt match end tag <"+x+">. Pretending it did match.",t),i=n[n.length-1].node}var c=Gat.test(t);c?o():(i=e,n=[{node:e}]);for(var f=t.split(TO),h=0;h{"use strict";var Kat=qa(),uL=fd(),nM=Eo(),lL=Pr(),dae=ka(),Jat=yb().isValid;function $at(e,t,r){var n=t?lL.nestedProperty(e,t).get()||{}:e,i=n[r||"color"];i&&i._inputArray&&(i=i._inputArray);var a=!1;if(lL.isArrayOrTypedArray(i)){for(var o=0;o=0;n--,i++){var a=e[n];r[i]=[1-a[0],a[1]]}return r}function _ae(e,t){t=t||{};for(var r=e.domain,n=e.range,i=n.length,a=new Array(i),o=0;o{"use strict";var bae=Wq(),eot=bae.FORMAT_LINK,tot=bae.DATE_FORMAT_LINK;function rot(e,t){return{valType:"string",dflt:"",editType:"none",description:(t?SO:wae)("hover text",e)+["By default the values are formatted using "+(t?"generic number format":"`"+e+"axis.hoverformat`")+"."].join(" ")}}function SO(e,t){return["Sets the "+e+" formatting rule"+(t?"for `"+t+"` ":""),"using d3 formatting mini-languages","which are very similar to those in Python. For numbers, see: "+eot+"."].join(" ")}function wae(e,t){return SO(e,t)+[" And for dates see: "+tot+".","We add two items to d3's date formatter:","*%h* for half of the year as a decimal number as well as","*%{n}f* for fractional seconds","with n digits. For example, *2016-10-13 09:15:23.456* with tickformat","*%H~%M~%S.%2f* would display *09~15~23.46*"].join(" ")}Tae.exports={axisHoverFormat:rot,descriptionOnlyNumbers:SO,descriptionWithDates:wae}});var Rd=ye((qnr,Nae)=>{"use strict";var Aae=ec(),z3=Ih(),Bae=Pd().dash,EO=Ao().extendFlat,Sae=vl().templatedArray,znr=Ll().templateFormatStringDescription,Mae=vf().descriptionWithDates,iot=fs().ONEDAY,mm=Rh(),not=mm.HOUR_PATTERN,aot=mm.WEEKDAY_PATTERN,MO={valType:"enumerated",values:["auto","linear","array"],editType:"ticks",impliedEdits:{tick0:void 0,dtick:void 0}},oot=EO({},MO,{values:MO.values.slice().concat(["sync"])});function Eae(e){return{valType:"integer",min:0,dflt:e?5:0,editType:"ticks"}}var kae={valType:"any",editType:"ticks",impliedEdits:{tickmode:"linear"}},Cae={valType:"any",editType:"ticks",impliedEdits:{tickmode:"linear"}},Lae={valType:"data_array",editType:"ticks"},Pae={valType:"enumerated",values:["outside","inside",""],editType:"ticks"};function Iae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=5),t}function Rae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=1),t}var Dae={valType:"color",dflt:z3.defaultLine,editType:"ticks"},Fae={valType:"color",dflt:z3.lightLine,editType:"ticks"};function zae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=1),t}var qae=EO({},Bae,{editType:"ticks"}),Oae={valType:"boolean",editType:"ticks"};Nae.exports={visible:{valType:"boolean",editType:"plot"},color:{valType:"color",dflt:z3.defaultLine,editType:"ticks"},title:{text:{valType:"string",editType:"ticks"},font:Aae({editType:"ticks"}),standoff:{valType:"number",min:0,editType:"ticks"},editType:"ticks"},type:{valType:"enumerated",values:["-","linear","log","date","category","multicategory"],dflt:"-",editType:"calc",_noTemplating:!0},autotypenumbers:{valType:"enumerated",values:["convert types","strict"],dflt:"convert types",editType:"calc"},autorange:{valType:"enumerated",values:[!0,!1,"reversed","min reversed","max reversed","min","max"],dflt:!0,editType:"axrange",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},autorangeoptions:{minallowed:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},maxallowed:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},clipmin:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},clipmax:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},include:{valType:"any",arrayOk:!0,editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},editType:"plot"},rangemode:{valType:"enumerated",values:["normal","tozero","nonnegative"],dflt:"normal",editType:"plot"},range:{valType:"info_array",items:[{valType:"any",editType:"axrange",impliedEdits:{"^autorange":!1},anim:!0},{valType:"any",editType:"axrange",impliedEdits:{"^autorange":!1},anim:!0}],editType:"axrange",impliedEdits:{autorange:!1},anim:!0},minallowed:{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},maxallowed:{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},fixedrange:{valType:"boolean",dflt:!1,editType:"calc"},modebardisable:{valType:"flaglist",flags:["autoscale","zoominout"],extras:["none"],dflt:"none",editType:"modebar"},insiderange:{valType:"info_array",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},scaleanchor:{valType:"enumerated",values:[mm.idRegex.x.toString(),mm.idRegex.y.toString(),!1],editType:"plot"},scaleratio:{valType:"number",min:0,dflt:1,editType:"plot"},constrain:{valType:"enumerated",values:["range","domain"],editType:"plot"},constraintoward:{valType:"enumerated",values:["left","center","right","top","middle","bottom"],editType:"plot"},matches:{valType:"enumerated",values:[mm.idRegex.x.toString(),mm.idRegex.y.toString()],editType:"calc"},rangebreaks:Sae("rangebreak",{enabled:{valType:"boolean",dflt:!0,editType:"calc"},bounds:{valType:"info_array",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}],editType:"calc"},pattern:{valType:"enumerated",values:[aot,not,""],editType:"calc"},values:{valType:"info_array",freeLength:!0,editType:"calc",items:{valType:"any",editType:"calc"}},dvalue:{valType:"number",editType:"calc",min:0,dflt:iot},editType:"calc"}),tickmode:oot,nticks:Eae(),tick0:kae,dtick:Cae,ticklabelstep:{valType:"integer",min:1,dflt:1,editType:"ticks"},tickvals:Lae,ticktext:{valType:"data_array",editType:"ticks"},ticks:Pae,tickson:{valType:"enumerated",values:["labels","boundaries"],dflt:"labels",editType:"ticks"},ticklabelmode:{valType:"enumerated",values:["instant","period"],dflt:"instant",editType:"ticks"},ticklabelposition:{valType:"enumerated",values:["outside","inside","outside top","inside top","outside left","inside left","outside right","inside right","outside bottom","inside bottom"],dflt:"outside",editType:"calc"},ticklabeloverflow:{valType:"enumerated",values:["allow","hide past div","hide past domain"],editType:"calc"},ticklabelshift:{valType:"integer",dflt:0,editType:"ticks"},ticklabelstandoff:{valType:"integer",dflt:0,editType:"ticks"},ticklabelindex:{valType:"integer",arrayOk:!0,editType:"calc"},mirror:{valType:"enumerated",values:[!0,"ticks",!1,"all","allticks"],dflt:!1,editType:"ticks+layoutstyle"},ticklen:Iae(),tickwidth:Rae(),tickcolor:Dae,showticklabels:{valType:"boolean",dflt:!0,editType:"ticks"},labelalias:{valType:"any",dflt:!1,editType:"ticks"},automargin:{valType:"flaglist",flags:["height","width","left","right","top","bottom"],extras:[!0,!1],dflt:!1,editType:"ticks"},showspikes:{valType:"boolean",dflt:!1,editType:"modebar"},spikecolor:{valType:"color",dflt:null,editType:"none"},spikethickness:{valType:"number",dflt:3,editType:"none"},spikedash:EO({},Bae,{dflt:"dash",editType:"none"}),spikemode:{valType:"flaglist",flags:["toaxis","across","marker"],dflt:"toaxis",editType:"none"},spikesnap:{valType:"enumerated",values:["data","cursor","hovered data"],dflt:"hovered data",editType:"none"},tickfont:Aae({editType:"ticks"}),tickangle:{valType:"angle",dflt:"auto",editType:"ticks"},autotickangles:{valType:"info_array",freeLength:!0,items:{valType:"angle"},dflt:[0,30,90],editType:"ticks"},tickprefix:{valType:"string",dflt:"",editType:"ticks"},showtickprefix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},ticksuffix:{valType:"string",dflt:"",editType:"ticks"},showticksuffix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},showexponent:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},exponentformat:{valType:"enumerated",values:["none","e","E","power","SI","B","SI extended"],dflt:"B",editType:"ticks"},minexponent:{valType:"number",dflt:3,min:0,editType:"ticks"},separatethousands:{valType:"boolean",dflt:!1,editType:"ticks"},tickformat:{valType:"string",dflt:"",editType:"ticks",description:Mae("tick label")},tickformatstops:Sae("tickformatstop",{enabled:{valType:"boolean",dflt:!0,editType:"ticks"},dtickrange:{valType:"info_array",items:[{valType:"any",editType:"ticks"},{valType:"any",editType:"ticks"}],editType:"ticks"},value:{valType:"string",dflt:"",editType:"ticks"},editType:"ticks"}),hoverformat:{valType:"string",dflt:"",editType:"none",description:Mae("hover text")},unifiedhovertitle:{text:{valType:"string",dflt:"",editType:"none"},editType:"none"},showline:{valType:"boolean",dflt:!1,editType:"ticks+layoutstyle"},linecolor:{valType:"color",dflt:z3.defaultLine,editType:"layoutstyle"},linewidth:{valType:"number",min:0,dflt:1,editType:"ticks+layoutstyle"},showgrid:Oae,gridcolor:Fae,gridwidth:zae(),griddash:qae,zeroline:{valType:"boolean",editType:"ticks"},zerolinecolor:{valType:"color",dflt:z3.defaultLine,editType:"ticks"},zerolinelayer:{valType:"enumerated",values:["above traces","below traces"],dflt:"below traces",editType:"plot"},zerolinewidth:{valType:"number",dflt:1,editType:"ticks"},showdividers:{valType:"boolean",dflt:!0,editType:"ticks"},dividercolor:{valType:"color",dflt:z3.defaultLine,editType:"ticks"},dividerwidth:{valType:"number",dflt:1,editType:"ticks"},anchor:{valType:"enumerated",values:["free",mm.idRegex.x.toString(),mm.idRegex.y.toString()],editType:"plot"},side:{valType:"enumerated",values:["top","bottom","left","right"],editType:"plot"},overlaying:{valType:"enumerated",values:["free",mm.idRegex.x.toString(),mm.idRegex.y.toString()],editType:"plot"},minor:{tickmode:MO,nticks:Eae("minor"),tick0:kae,dtick:Cae,tickvals:Lae,ticks:Pae,ticklen:Iae("minor"),tickwidth:Rae("minor"),tickcolor:Dae,gridcolor:Fae,gridwidth:zae("minor"),griddash:qae,showgrid:Oae,editType:"ticks"},minorloglabels:{valType:"enumerated",values:["small digits","complete","none"],dflt:"small digits",editType:"calc"},layer:{valType:"enumerated",values:["above traces","below traces"],dflt:"above traces",editType:"plot"},domain:{valType:"info_array",items:[{valType:"number",min:0,max:1,editType:"plot"},{valType:"number",min:0,max:1,editType:"plot"}],dflt:[0,1],editType:"plot"},position:{valType:"number",min:0,max:1,dflt:0,editType:"plot"},autoshift:{valType:"boolean",dflt:!1,editType:"plot"},shift:{valType:"number",editType:"plot"},categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array","total ascending","total descending","min ascending","min descending","max ascending","max descending","sum ascending","sum descending","mean ascending","mean descending","geometric mean ascending","geometric mean descending","median ascending","median descending"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},uirevision:{valType:"any",editType:"none"},editType:"calc"}});var cL=ye((Onr,Gae)=>{"use strict";var $c=Rd(),Uae=ec(),Vae=Ao().extendFlat,sot=mc().overrideAll;Gae.exports=sot({orientation:{valType:"enumerated",values:["h","v"],dflt:"v"},thicknessmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"pixels"},thickness:{valType:"number",min:0,dflt:30},lenmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"fraction"},len:{valType:"number",min:0,dflt:1},x:{valType:"number"},xref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},xanchor:{valType:"enumerated",values:["left","center","right"]},xpad:{valType:"number",min:0,dflt:10},y:{valType:"number"},yref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},yanchor:{valType:"enumerated",values:["top","middle","bottom"]},ypad:{valType:"number",min:0,dflt:10},outlinecolor:$c.linecolor,outlinewidth:$c.linewidth,bordercolor:$c.linecolor,borderwidth:{valType:"number",min:0,dflt:0},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)"},tickmode:$c.minor.tickmode,nticks:$c.nticks,tick0:$c.tick0,dtick:$c.dtick,tickvals:$c.tickvals,ticktext:$c.ticktext,ticks:Vae({},$c.ticks,{dflt:""}),ticklabeloverflow:Vae({},$c.ticklabeloverflow,{}),ticklabelposition:{valType:"enumerated",values:["outside","inside","outside top","inside top","outside left","inside left","outside right","inside right","outside bottom","inside bottom"],dflt:"outside"},ticklen:$c.ticklen,tickwidth:$c.tickwidth,tickcolor:$c.tickcolor,ticklabelstep:$c.ticklabelstep,showticklabels:$c.showticklabels,labelalias:$c.labelalias,tickfont:Uae({}),tickangle:$c.tickangle,tickformat:$c.tickformat,tickformatstops:$c.tickformatstops,tickprefix:$c.tickprefix,showtickprefix:$c.showtickprefix,ticksuffix:$c.ticksuffix,showticksuffix:$c.showticksuffix,separatethousands:$c.separatethousands,exponentformat:$c.exponentformat,minexponent:$c.minexponent,showexponent:$c.showexponent,title:{text:{valType:"string"},font:Uae({}),side:{valType:"enumerated",values:["right","top","bottom"]}}},"colorbars","from-root")});var Tu=ye((Nnr,jae)=>{"use strict";var lot=cL(),uot=m3().counter,cot=t_(),Hae=yb().scales,Bnr=cot(Hae);function fL(e){return"`"+e+"`"}jae.exports=function(t,r){t=t||"",r=r||{};var n=r.cLetter||"c",i="onlyIfNumerical"in r?r.onlyIfNumerical:!!t,a="noScale"in r?r.noScale:t==="marker.line",o="showScaleDflt"in r?r.showScaleDflt:n==="z",s=typeof r.colorscaleDflt=="string"?Hae[r.colorscaleDflt]:null,l=r.editTypeOverride||"",u=t?t+".":"",c,f;"colorAttr"in r?(c=r.colorAttr,f=r.colorAttr):(c={z:"z",c:"color"}[n],f="in "+fL(u+c));var h=i?" Has an effect only if "+f+" is set to a numerical array.":"",d=n+"auto",v=n+"min",m=n+"max",b=n+"mid",p=fL(u+d),k=fL(u+v),M=fL(u+m),T=k+" and "+M,L={};L[v]=L[m]=void 0;var x={};x[d]=!1;var C={};return c==="color"&&(C.color={valType:"color",arrayOk:!0,editType:l||"style"},r.anim&&(C.color.anim=!0)),C[d]={valType:"boolean",dflt:!0,editType:"calc",impliedEdits:L},C[v]={valType:"number",dflt:null,editType:l||"plot",impliedEdits:x},C[m]={valType:"number",dflt:null,editType:l||"plot",impliedEdits:x},C[b]={valType:"number",dflt:null,editType:"calc",impliedEdits:L},C.colorscale={valType:"colorscale",editType:"calc",dflt:s,impliedEdits:{autocolorscale:!1}},C.autocolorscale={valType:"boolean",dflt:r.autoColorDflt!==!1,editType:"calc",impliedEdits:{colorscale:void 0}},C.reversescale={valType:"boolean",dflt:!1,editType:"plot"},a||(C.showscale={valType:"boolean",dflt:o,editType:"calc"},C.colorbar=lot),r.noColorAxis||(C.coloraxis={valType:"subplotid",regex:uot("coloraxis"),dflt:null,editType:"calc"}),C}});var CO=ye((Unr,Wae)=>{"use strict";var fot=Ao().extendFlat,hot=Tu(),kO=yb().scales;Wae.exports={editType:"calc",colorscale:{editType:"calc",sequential:{valType:"colorscale",dflt:kO.Reds,editType:"calc"},sequentialminus:{valType:"colorscale",dflt:kO.Blues,editType:"calc"},diverging:{valType:"colorscale",dflt:kO.RdBu,editType:"calc"}},coloraxis:fot({_isSubplotObj:!0,editType:"calc"},hot("",{colorAttr:"corresponding trace color array(s)",noColorAxis:!0,showScaleDflt:!0}))}});var LO=ye((Vnr,Xae)=>{"use strict";var dot=Pr();Xae.exports=function(t){return dot.isPlainObject(t.colorbar)}});var RO=ye(IO=>{"use strict";var PO=Eo(),Zae=Pr(),Yae=fs(),vot=Yae.ONEDAY,pot=Yae.ONEWEEK;IO.dtick=function(e,t){var r=t==="log",n=t==="date",i=t==="category",a=n?vot:1;if(!e)return a;if(PO(e))return e=Number(e),e<=0?a:i?Math.max(1,Math.round(e)):n?Math.max(.1,e):e;if(typeof e!="string"||!(n||r))return a;var o=e.charAt(0),s=e.slice(1);return s=PO(s)?Number(s):0,s<=0||!(n&&o==="M"&&s===Math.round(s)||r&&o==="L"||r&&o==="D"&&(s===1||s===2))?a:e};IO.tick0=function(e,t,r,n){if(t==="date")return Zae.cleanDate(e,Zae.dateTick0(r,n%pot===0?1:0));if(!(n==="D1"||n==="D2"))return PO(e)?Number(e):0}});var Pb=ye((Hnr,Jae)=>{"use strict";var Kae=RO(),got=Pr().isArrayOrTypedArray,mot=Yd().isTypedArraySpec,yot=Yd().decodeTypedArraySpec;Jae.exports=function(t,r,n,i,a){a||(a={});var o=a.isMinor,s=o?t.minor||{}:t,l=o?r.minor:r,u=o?"minor.":"";function c(k){var M=s[k];return mot(M)&&(M=yot(M)),M!==void 0?M:(l._template||{})[k]}var f=c("tick0"),h=c("dtick"),d=c("tickvals"),v=got(d)?"array":h?"linear":"auto",m=n(u+"tickmode",v);if(m==="auto"||m==="sync")n(u+"nticks");else if(m==="linear"){var b=l.dtick=Kae.dtick(h,i);l.tick0=Kae.tick0(f,i,r.calendar,b)}else if(i!=="multicategory"){var p=n(u+"tickvals");p===void 0?l.tickmode="auto":o||n("ticktext")}}});var q3=ye((jnr,Qae)=>{"use strict";var DO=Pr(),$ae=Rd();Qae.exports=function(t,r,n,i){var a=i.isMinor,o=a?t.minor||{}:t,s=a?r.minor:r,l=a?$ae.minor:$ae,u=a?"minor.":"",c=DO.coerce2(o,s,l,"ticklen",a?(r.ticklen||5)*.6:void 0),f=DO.coerce2(o,s,l,"tickwidth",a?r.tickwidth||1:void 0),h=DO.coerce2(o,s,l,"tickcolor",(a?r.tickcolor:void 0)||s.color),d=n(u+"ticks",!a&&i.outerTicks||c||f||h?"outside":"");d||(delete s.ticklen,delete s.tickwidth,delete s.tickcolor)}});var FO=ye((Wnr,eoe)=>{"use strict";eoe.exports=function(t){var r=["showexponent","showtickprefix","showticksuffix"],n=r.filter(function(a){return t[a]!==void 0}),i=function(a){return t[a]===t[n[0]]};if(n.every(i)||n.length===1)return t[n[0]]}});var Kd=ye((Xnr,toe)=>{"use strict";var hL=Pr(),_ot=vl();toe.exports=function(t,r,n){var i=n.name,a=n.inclusionAttr||"visible",o=r[i],s=hL.isArrayOrTypedArray(t[i])?t[i]:[],l=r[i]=[],u=_ot.arrayTemplater(r,i,a),c,f;for(c=0;c{"use strict";var zO=Pr(),xot=ka().contrast,roe=Rd(),bot=FO(),wot=Kd();ioe.exports=function(t,r,n,i,a){a||(a={});var o=n("labelalias");zO.isPlainObject(o)||delete r.labelalias;var s=bot(t),l=n("showticklabels");if(l){a.noTicklabelshift||n("ticklabelshift"),a.noTicklabelstandoff||n("ticklabelstandoff");var u=a.font||{},c=r.color,f=r.ticklabelposition||"",h=f.indexOf("inside")!==-1?xot(a.bgColor):c&&c!==roe.color.dflt?c:u.color;if(zO.coerceFont(n,"tickfont",u,{overrideDflt:{color:h}}),!a.noTicklabelstep&&i!=="multicategory"&&i!=="log"&&n("ticklabelstep"),!a.noAng){var d=n("tickangle");!a.noAutotickangles&&d==="auto"&&n("autotickangles")}if(i!=="category"){var v=n("tickformat");wot(t,r,{name:"tickformatstops",inclusionAttr:"enabled",handleItemDefaults:Tot}),r.tickformatstops.length||delete r.tickformatstops,!a.noExp&&!v&&i!=="date"&&(n("showexponent",s),n("exponentformat"),n("minexponent"),n("separatethousands"))}!a.noMinorloglabels&&i==="log"&&n("minorloglabels")}};function Tot(e,t){function r(i,a){return zO.coerce(e,t,roe.tickformatstops,i,a)}var n=r("enabled");n&&(r("dtickrange"),r("value"))}});var l_=ye((Ynr,noe)=>{"use strict";var Aot=FO();noe.exports=function(t,r,n,i,a){a||(a={});var o=a.tickSuffixDflt,s=Aot(t),l=n("tickprefix");l&&n("showtickprefix",s);var u=n("ticksuffix",o);u&&n("showticksuffix",s)}});var qO=ye((Knr,aoe)=>{"use strict";var u_=Pr(),Sot=vl(),Mot=Pb(),Eot=q3(),kot=s_(),Cot=l_(),Lot=cL();aoe.exports=function(t,r,n){var i=Sot.newContainer(r,"colorbar"),a=t.colorbar||{};function o(E,z){return u_.coerce(a,i,Lot,E,z)}var s=n.margin||{t:0,b:0,l:0,r:0},l=n.width-s.l-s.r,u=n.height-s.t-s.b,c=o("orientation"),f=c==="v",h=o("thicknessmode");o("thickness",h==="fraction"?30/(f?l:u):30);var d=o("lenmode");o("len",d==="fraction"?1:f?u:l);var v=o("yref"),m=o("xref"),b=v==="paper",p=m==="paper",k,M,T,L="left";f?(T="middle",L=p?"left":"right",k=p?1.02:1,M=.5):(T=b?"bottom":"top",L="center",k=.5,M=b?1.02:1),u_.coerce(a,i,{x:{valType:"number",min:p?-2:0,max:p?3:1,dflt:k}},"x"),u_.coerce(a,i,{y:{valType:"number",min:b?-2:0,max:b?3:1,dflt:M}},"y"),o("xanchor",L),o("xpad"),o("yanchor",T),o("ypad"),u_.noneOrAll(a,i,["x","y"]),o("outlinecolor"),o("outlinewidth"),o("bordercolor"),o("borderwidth"),o("bgcolor");var x=u_.coerce(a,i,{ticklabelposition:{valType:"enumerated",dflt:"outside",values:f?["outside","inside","outside top","inside top","outside bottom","inside bottom"]:["outside","inside","outside left","inside left","outside right","inside right"]}},"ticklabelposition");o("ticklabeloverflow",x.indexOf("inside")!==-1?"hide past domain":"hide past div"),Mot(a,i,o,"linear");var C=n.font,S={noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0,outerTicks:!1,font:C};x.indexOf("inside")!==-1&&(S.bgColor="black"),Cot(a,i,o,"linear",S),kot(a,i,o,"linear",S),Eot(a,i,o,"linear",S),o("title.text",n._dfltTitle.colorbar);var g=i.showticklabels?i.tickfont:C,P=u_.extendFlat({},C,{family:g.family,size:u_.bigFont(g.size)});u_.coerceFont(o,"title.font",P),o("title.side",f?"top":"right")}});var td=ye((Jnr,loe)=>{"use strict";var ooe=Eo(),BO=Pr(),Pot=LO(),Iot=qO(),soe=yb().isValid,Rot=Oa().traceIs;function OO(e,t){var r=t.slice(0,t.length-1);return t?BO.nestedProperty(e,r).get()||{}:e}loe.exports=function e(t,r,n,i,a){var o=a.prefix,s=a.cLetter,l="_module"in r,u=OO(t,o),c=OO(r,o),f=OO(r._template||{},o)||{},h=function(){return delete t.coloraxis,delete r.coloraxis,e(t,r,n,i,a)};if(l){var d=n._colorAxes||{},v=i(o+"coloraxis");if(v){var m=Rot(r,"contour")&&BO.nestedProperty(r,"contours.coloring").get()||"heatmap",b=d[v];b?(b[2].push(h),b[0]!==m&&(b[0]=!1,BO.warn(["Ignoring coloraxis:",v,"setting","as it is linked to incompatible colorscales."].join(" ")))):d[v]=[m,r,[h]];return}}var p=u[s+"min"],k=u[s+"max"],M=ooe(p)&&ooe(k)&&p{"use strict";var uoe=Pr(),Dot=vl(),coe=CO(),Fot=td();foe.exports=function(t,r){function n(f,h){return uoe.coerce(t,r,coe,f,h)}n("colorscale.sequential"),n("colorscale.sequentialminus"),n("colorscale.diverging");var i=r._colorAxes,a,o;function s(f,h){return uoe.coerce(a,o,coe.coloraxis,f,h)}for(var l in i){var u=i[l];if(u[0])a=t[l]||{},o=Dot.newContainer(r,l,"coloraxis"),o._name=l,Fot(a,o,r,s,{prefix:"",cLetter:"c"});else{for(var c=0;c{"use strict";var zot=Pr(),qot=pv().hasColorscale,Oot=pv().extractOpts;doe.exports=function(t,r){function n(c,f){var h=c["_"+f];h!==void 0&&(c[f]=h)}function i(c,f){var h=f.container?zot.nestedProperty(c,f.container).get():c;if(h)if(h.coloraxis)h._colorAx=r[h.coloraxis];else{var d=Oot(h),v=d.auto;(v||d.min===void 0)&&n(h,f.min),(v||d.max===void 0)&&n(h,f.max),d.autocolorscale&&n(h,"colorscale")}}for(var a=0;a{"use strict";var poe=Eo(),NO=Pr(),Bot=pv().extractOpts;goe.exports=function(t,r,n){var i=t._fullLayout,a=n.vals,o=n.containerStr,s=o?NO.nestedProperty(r,o).get():r,l=Bot(s),u=l.auto!==!1,c=l.min,f=l.max,h=l.mid,d=function(){return NO.aggNums(Math.min,null,a)},v=function(){return NO.aggNums(Math.max,null,a)};if(c===void 0?c=d():u&&(s._colorAx&&poe(c)?c=Math.min(c,d()):c=d()),f===void 0?f=v():u&&(s._colorAx&&poe(f)?f=Math.max(f,v()):f=v()),u&&h!==void 0&&(f-h>h-c?c=h-(f-h):f-h=0?m=i.colorscale.sequential:m=i.colorscale.sequentialminus,l._sync("colorscale",m)}}});var tc=ye((tar,moe)=>{"use strict";var dL=yb(),O3=pv();moe.exports={moduleType:"component",name:"colorscale",attributes:Tu(),layoutAttributes:CO(),supplyLayoutDefaults:hoe(),handleDefaults:td(),crossTraceDefaults:voe(),calc:gv(),scales:dL.scales,defaultScale:dL.defaultScale,getScale:dL.get,isValidScale:dL.isValid,hasColorscale:O3.hasColorscale,extractOpts:O3.extractOpts,extractScale:O3.extractScale,flipScale:O3.flipScale,makeColorScaleFunc:O3.makeColorScaleFunc,makeColorScaleFuncFromTrace:O3.makeColorScaleFuncFromTrace}});var Ru=ye((rar,_oe)=>{"use strict";var yoe=Pr(),Not=Yd().isTypedArraySpec;_oe.exports={hasLines:function(e){return e.visible&&e.mode&&e.mode.indexOf("lines")!==-1},hasMarkers:function(e){return e.visible&&(e.mode&&e.mode.indexOf("markers")!==-1||e.type==="splom")},hasText:function(e){return e.visible&&e.mode&&e.mode.indexOf("text")!==-1},isBubble:function(e){var t=e.marker;return yoe.isPlainObject(t)&&(yoe.isArrayOrTypedArray(t.size)||Not(t.size))}}});var B3=ye((iar,xoe)=>{"use strict";var Uot=Eo();xoe.exports=function(t,r){r||(r=2);var n=t.marker,i=n.sizeref||1,a=n.sizemin||0,o=n.sizemode==="area"?function(s){return Math.sqrt(s/i)}:function(s){return s/i};return function(s){var l=o(s/r);return Uot(l)&&l>0?Math.max(l,a):0}}});var ip=ye(mv=>{"use strict";var vL=Pr();mv.getSubplot=function(e){return e.subplot||e.xaxis+e.yaxis||e.geo};mv.isTraceInSubplots=function(e,t){if(e.type==="splom"){for(var r=e.xaxes||[],n=e.yaxes||[],i=0;i=0&&r.index{Toe.exports=Wot;var UO={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},jot=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function Wot(e){var t=[];return e.replace(jot,function(r,n,i){var a=n.toLowerCase();for(i=Zot(i),a=="m"&&i.length>2&&(t.push([n].concat(i.splice(0,2))),a="l",n=n=="m"?"l":"L");;){if(i.length==UO[a])return i.unshift(n),t.push(i);if(i.length{"use strict";var Yot=aM(),ca=function(e,t){return t?Math.round(e*(t=Math.pow(10,t)))/t:Math.round(e)},hs="M0,0Z",Aoe=Math.sqrt(2),c_=Math.sqrt(3),VO=Math.PI,GO=Math.cos,HO=Math.sin;Coe.exports={circle:{n:0,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2),i="M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z";return r?vs(t,r,i):i}},square:{n:1,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2);return vs(t,r,"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")}},diamond:{n:2,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.3,2);return vs(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"Z")}},cross:{n:3,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*.4,2),i=ca(e*1.2,2);return vs(t,r,"M"+i+","+n+"H"+n+"V"+i+"H-"+n+"V"+n+"H-"+i+"V-"+n+"H-"+n+"V-"+i+"H"+n+"V-"+n+"H"+i+"Z")}},x:{n:4,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*.8/Aoe,2),i="l"+n+","+n,a="l"+n+",-"+n,o="l-"+n+",-"+n,s="l-"+n+","+n;return vs(t,r,"M0,"+n+i+a+o+a+o+s+o+s+i+s+i+"Z")}},"triangle-up":{n:5,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*2/c_,2),i=ca(e/2,2),a=ca(e,2);return vs(t,r,"M-"+n+","+i+"H"+n+"L0,-"+a+"Z")}},"triangle-down":{n:6,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*2/c_,2),i=ca(e/2,2),a=ca(e,2);return vs(t,r,"M-"+n+",-"+i+"H"+n+"L0,"+a+"Z")}},"triangle-left":{n:7,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*2/c_,2),i=ca(e/2,2),a=ca(e,2);return vs(t,r,"M"+i+",-"+n+"V"+n+"L-"+a+",0Z")}},"triangle-right":{n:8,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*2/c_,2),i=ca(e/2,2),a=ca(e,2);return vs(t,r,"M-"+i+",-"+n+"V"+n+"L"+a+",0Z")}},"triangle-ne":{n:9,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*.6,2),i=ca(e*1.2,2);return vs(t,r,"M-"+i+",-"+n+"H"+n+"V"+i+"Z")}},"triangle-se":{n:10,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*.6,2),i=ca(e*1.2,2);return vs(t,r,"M"+n+",-"+i+"V"+n+"H-"+i+"Z")}},"triangle-sw":{n:11,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*.6,2),i=ca(e*1.2,2);return vs(t,r,"M"+i+","+n+"H-"+n+"V-"+i+"Z")}},"triangle-nw":{n:12,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*.6,2),i=ca(e*1.2,2);return vs(t,r,"M-"+n+","+i+"V-"+n+"H"+i+"Z")}},pentagon:{n:13,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*.951,2),i=ca(e*.588,2),a=ca(-e,2),o=ca(e*-.309,2),s=ca(e*.809,2);return vs(t,r,"M"+n+","+o+"L"+i+","+s+"H-"+i+"L-"+n+","+o+"L0,"+a+"Z")}},hexagon:{n:14,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2),i=ca(e/2,2),a=ca(e*c_/2,2);return vs(t,r,"M"+a+",-"+i+"V"+i+"L0,"+n+"L-"+a+","+i+"V-"+i+"L0,-"+n+"Z")}},hexagon2:{n:15,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2),i=ca(e/2,2),a=ca(e*c_/2,2);return vs(t,r,"M-"+i+","+a+"H"+i+"L"+n+",0L"+i+",-"+a+"H-"+i+"L-"+n+",0Z")}},octagon:{n:16,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*.924,2),i=ca(e*.383,2);return vs(t,r,"M-"+i+",-"+n+"H"+i+"L"+n+",-"+i+"V"+i+"L"+i+","+n+"H-"+i+"L-"+n+","+i+"V-"+i+"Z")}},star:{n:17,f:function(e,t,r){if(ds(t))return hs;var n=e*1.4,i=ca(n*.225,2),a=ca(n*.951,2),o=ca(n*.363,2),s=ca(n*.588,2),l=ca(-n,2),u=ca(n*-.309,2),c=ca(n*.118,2),f=ca(n*.809,2),h=ca(n*.382,2);return vs(t,r,"M"+i+","+u+"H"+a+"L"+o+","+c+"L"+s+","+f+"L0,"+h+"L-"+s+","+f+"L-"+o+","+c+"L-"+a+","+u+"H-"+i+"L0,"+l+"Z")}},hexagram:{n:18,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*.66,2),i=ca(e*.38,2),a=ca(e*.76,2);return vs(t,r,"M-"+a+",0l-"+i+",-"+n+"h"+a+"l"+i+",-"+n+"l"+i+","+n+"h"+a+"l-"+i+","+n+"l"+i+","+n+"h-"+a+"l-"+i+","+n+"l-"+i+",-"+n+"h-"+a+"Z")}},"star-triangle-up":{n:19,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*c_*.8,2),i=ca(e*.8,2),a=ca(e*1.6,2),o=ca(e*4,2),s="A "+o+","+o+" 0 0 1 ";return vs(t,r,"M-"+n+","+i+s+n+","+i+s+"0,-"+a+s+"-"+n+","+i+"Z")}},"star-triangle-down":{n:20,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*c_*.8,2),i=ca(e*.8,2),a=ca(e*1.6,2),o=ca(e*4,2),s="A "+o+","+o+" 0 0 1 ";return vs(t,r,"M"+n+",-"+i+s+"-"+n+",-"+i+s+"0,"+a+s+n+",-"+i+"Z")}},"star-square":{n:21,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.1,2),i=ca(e*2,2),a="A "+i+","+i+" 0 0 1 ";return vs(t,r,"M-"+n+",-"+n+a+"-"+n+","+n+a+n+","+n+a+n+",-"+n+a+"-"+n+",-"+n+"Z")}},"star-diamond":{n:22,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.4,2),i=ca(e*1.9,2),a="A "+i+","+i+" 0 0 1 ";return vs(t,r,"M-"+n+",0"+a+"0,"+n+a+n+",0"+a+"0,-"+n+a+"-"+n+",0Z")}},"diamond-tall":{n:23,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*.7,2),i=ca(e*1.4,2);return vs(t,r,"M0,"+i+"L"+n+",0L0,-"+i+"L-"+n+",0Z")}},"diamond-wide":{n:24,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.4,2),i=ca(e*.7,2);return vs(t,r,"M0,"+i+"L"+n+",0L0,-"+i+"L-"+n+",0Z")}},hourglass:{n:25,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2);return vs(t,r,"M"+n+","+n+"H-"+n+"L"+n+",-"+n+"H-"+n+"Z")},noDot:!0},bowtie:{n:26,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2);return vs(t,r,"M"+n+","+n+"V-"+n+"L-"+n+","+n+"V-"+n+"Z")},noDot:!0},"circle-cross":{n:27,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2);return vs(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z")},needLine:!0,noDot:!0},"circle-x":{n:28,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2),i=ca(e/Aoe,2);return vs(t,r,"M"+i+","+i+"L-"+i+",-"+i+"M"+i+",-"+i+"L-"+i+","+i+"M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z")},needLine:!0,noDot:!0},"square-cross":{n:29,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2);return vs(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")},needLine:!0,noDot:!0},"square-x":{n:30,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2);return vs(t,r,"M"+n+","+n+"L-"+n+",-"+n+"M"+n+",-"+n+"L-"+n+","+n+"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")},needLine:!0,noDot:!0},"diamond-cross":{n:31,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.3,2);return vs(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"ZM0,-"+n+"V"+n+"M-"+n+",0H"+n)},needLine:!0,noDot:!0},"diamond-x":{n:32,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.3,2),i=ca(e*.65,2);return vs(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"ZM-"+i+",-"+i+"L"+i+","+i+"M-"+i+","+i+"L"+i+",-"+i)},needLine:!0,noDot:!0},"cross-thin":{n:33,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.4,2);return vs(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n)},needLine:!0,noDot:!0,noFill:!0},"x-thin":{n:34,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2);return vs(t,r,"M"+n+","+n+"L-"+n+",-"+n+"M"+n+",-"+n+"L-"+n+","+n)},needLine:!0,noDot:!0,noFill:!0},asterisk:{n:35,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.2,2),i=ca(e*.85,2);return vs(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+i+","+i+"L-"+i+",-"+i+"M"+i+",-"+i+"L-"+i+","+i)},needLine:!0,noDot:!0,noFill:!0},hash:{n:36,f:function(e,t,r){if(ds(t))return hs;var n=ca(e/2,2),i=ca(e,2);return vs(t,r,"M"+n+","+i+"V-"+i+"M"+(n-i)+",-"+i+"V"+i+"M"+i+","+n+"H-"+i+"M-"+i+","+(n-i)+"H"+i)},needLine:!0,noFill:!0},"y-up":{n:37,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.2,2),i=ca(e*1.6,2),a=ca(e*.8,2);return vs(t,r,"M-"+n+","+a+"L0,0M"+n+","+a+"L0,0M0,-"+i+"L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-down":{n:38,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.2,2),i=ca(e*1.6,2),a=ca(e*.8,2);return vs(t,r,"M-"+n+",-"+a+"L0,0M"+n+",-"+a+"L0,0M0,"+i+"L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-left":{n:39,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.2,2),i=ca(e*1.6,2),a=ca(e*.8,2);return vs(t,r,"M"+a+","+n+"L0,0M"+a+",-"+n+"L0,0M-"+i+",0L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-right":{n:40,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.2,2),i=ca(e*1.6,2),a=ca(e*.8,2);return vs(t,r,"M-"+a+","+n+"L0,0M-"+a+",-"+n+"L0,0M"+i+",0L0,0")},needLine:!0,noDot:!0,noFill:!0},"line-ew":{n:41,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.4,2);return vs(t,r,"M"+n+",0H-"+n)},needLine:!0,noDot:!0,noFill:!0},"line-ns":{n:42,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*1.4,2);return vs(t,r,"M0,"+n+"V-"+n)},needLine:!0,noDot:!0,noFill:!0},"line-ne":{n:43,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2);return vs(t,r,"M"+n+",-"+n+"L-"+n+","+n)},needLine:!0,noDot:!0,noFill:!0},"line-nw":{n:44,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2);return vs(t,r,"M"+n+","+n+"L-"+n+",-"+n)},needLine:!0,noDot:!0,noFill:!0},"arrow-up":{n:45,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2),i=ca(e*2,2);return vs(t,r,"M0,0L-"+n+","+i+"H"+n+"Z")},backoff:1,noDot:!0},"arrow-down":{n:46,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2),i=ca(e*2,2);return vs(t,r,"M0,0L-"+n+",-"+i+"H"+n+"Z")},noDot:!0},"arrow-left":{n:47,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*2,2),i=ca(e,2);return vs(t,r,"M0,0L"+n+",-"+i+"V"+i+"Z")},noDot:!0},"arrow-right":{n:48,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*2,2),i=ca(e,2);return vs(t,r,"M0,0L-"+n+",-"+i+"V"+i+"Z")},noDot:!0},"arrow-bar-up":{n:49,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2),i=ca(e*2,2);return vs(t,r,"M-"+n+",0H"+n+"M0,0L-"+n+","+i+"H"+n+"Z")},backoff:1,needLine:!0,noDot:!0},"arrow-bar-down":{n:50,f:function(e,t,r){if(ds(t))return hs;var n=ca(e,2),i=ca(e*2,2);return vs(t,r,"M-"+n+",0H"+n+"M0,0L-"+n+",-"+i+"H"+n+"Z")},needLine:!0,noDot:!0},"arrow-bar-left":{n:51,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*2,2),i=ca(e,2);return vs(t,r,"M0,-"+i+"V"+i+"M0,0L"+n+",-"+i+"V"+i+"Z")},needLine:!0,noDot:!0},"arrow-bar-right":{n:52,f:function(e,t,r){if(ds(t))return hs;var n=ca(e*2,2),i=ca(e,2);return vs(t,r,"M0,-"+i+"V"+i+"M0,0L-"+n+",-"+i+"V"+i+"Z")},needLine:!0,noDot:!0},arrow:{n:53,f:function(e,t,r){if(ds(t))return hs;var n=VO/2.5,i=2*e*GO(n),a=2*e*HO(n);return vs(t,r,"M0,0L"+-i+","+a+"L"+i+","+a+"Z")},backoff:.9,noDot:!0},"arrow-wide":{n:54,f:function(e,t,r){if(ds(t))return hs;var n=VO/4,i=2*e*GO(n),a=2*e*HO(n);return vs(t,r,"M0,0L"+-i+","+a+"A "+2*e+","+2*e+" 0 0 1 "+i+","+a+"Z")},backoff:.4,noDot:!0}};function ds(e){return e===null}var Soe,Moe,Eoe,koe;function vs(e,t,r){if((!e||e%360===0)&&!t)return r;if(Eoe===e&&koe===t&&Soe===r)return Moe;Eoe=e,koe=t,Soe=r;function n(b,p){var k=GO(b),M=HO(b),T=p[0],L=p[1]+(t||0);return[T*k-L*M,T*M+L*k]}for(var i=e/180*VO,a=0,o=0,s=Yot(r),l="",u=0;u{"use strict";var dd=qa(),Du=Pr(),Kot=Du.numberFormat,Fb=Eo(),KO=fd(),gL=Oa(),Jd=ka(),Jot=tc(),sM=Du.strTranslate,mL=Zl(),$ot=Wp(),Qot=Dh(),est=Qot.LINE_SPACING,Noe=X1().DESELECTDIM,tst=Ru(),rst=B3(),ist=ip().appendArrayPointValue,Ta=Koe.exports={};Ta.font=function(e,t){var r=t.variant,n=t.style,i=t.weight,a=t.color,o=t.size,s=t.family,l=t.shadow,u=t.lineposition,c=t.textcase;s&&e.style("font-family",s),o+1&&e.style("font-size",o+"px"),a&&e.call(Jd.fill,a),i&&e.style("font-weight",i),n&&e.style("font-style",n),r&&e.style("font-variant",r),c&&e.style("text-transform",jO(ast(c))),l&&e.style("text-shadow",l==="auto"?mL.makeTextShadow(Jd.contrast(a)):jO(l)),u&&e.style("text-decoration-line",jO(ost(u)))};function jO(e){return e==="none"?void 0:e}var nst={normal:"none",lower:"lowercase",upper:"uppercase","word caps":"capitalize"};function ast(e){return nst[e]}function ost(e){return e.replace("under","underline").replace("over","overline").replace("through","line-through").split("+").join(" ")}Ta.setPosition=function(e,t,r){e.attr("x",t).attr("y",r)};Ta.setSize=function(e,t,r){e.attr("width",t).attr("height",r)};Ta.setRect=function(e,t,r,n,i){e.call(Ta.setPosition,t,r).call(Ta.setSize,n,i)};Ta.translatePoint=function(e,t,r,n){var i=r.c2p(e.x),a=n.c2p(e.y);if(Fb(i)&&Fb(a)&&t.node())t.node().nodeName==="text"?t.attr("x",i).attr("y",a):t.attr("transform",sM(i,a));else return!1;return!0};Ta.translatePoints=function(e,t,r){e.each(function(n){var i=dd.select(this);Ta.translatePoint(n,i,t,r)})};Ta.hideOutsideRangePoint=function(e,t,r,n,i,a){t.attr("display",r.isPtWithinRange(e,i)&&n.isPtWithinRange(e,a)?null:"none")};Ta.hideOutsideRangePoints=function(e,t){if(t._hasClipOnAxisFalse){var r=t.xaxis,n=t.yaxis;e.each(function(i){var a=i[0].trace,o=a.xcalendar,s=a.ycalendar,l=gL.traceIs(a,"bar-like")?".bartext":".point,.textpoint";e.selectAll(l).each(function(u){Ta.hideOutsideRangePoint(u,dd.select(this),r,n,o,s)})})}};Ta.crispRound=function(e,t,r){return!t||!Fb(t)?r||0:e._context.staticPlot?t:t<1?1:Math.round(t)};Ta.singleLineStyle=function(e,t,r,n,i){t.style("fill","none");var a=(((e||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,s=i||a.dash||"";Jd.stroke(t,n||a.color),Ta.dashLine(t,s,o)};Ta.lineGroupStyle=function(e,t,r,n){e.style("fill","none").each(function(i){var a=(((i||[])[0]||{}).trace||{}).line||{},o=t||a.width||0,s=n||a.dash||"";dd.select(this).call(Jd.stroke,r||a.color).call(Ta.dashLine,s,o)})};Ta.dashLine=function(e,t,r){r=+r||0,t=Ta.dashStyle(t,r),e.style({"stroke-dasharray":t,"stroke-width":r+"px"})};Ta.dashStyle=function(e,t){t=+t||1;var r=Math.max(t,3);return e==="solid"?e="":e==="dot"?e=r+"px,"+r+"px":e==="dash"?e=3*r+"px,"+3*r+"px":e==="longdash"?e=5*r+"px,"+5*r+"px":e==="dashdot"?e=3*r+"px,"+r+"px,"+r+"px,"+r+"px":e==="longdashdot"&&(e=5*r+"px,"+2*r+"px,"+r+"px,"+2*r+"px"),e};function Uoe(e,t,r,n){var i=t.fillpattern,a=t.fillgradient,o=Ta.getPatternAttr,s=i&&(o(i.shape,0,"")||o(i.path,0,""));if(s){var l=o(i.bgcolor,0,null),u=o(i.fgcolor,0,null),c=i.fgopacity,f=o(i.size,0,8),h=o(i.solidity,0,.3),d=t.uid;Ta.pattern(e,"point",r,d,s,f,h,void 0,i.fillmode,l,u,c)}else if(a&&a.type!=="none"){var v=a.type,m="scatterfill-"+t.uid;if(n&&(m="legendfill-"+t.uid),!n&&(a.start!==void 0||a.stop!==void 0)){var b,p;v==="horizontal"?(b={x:a.start,y:0},p={x:a.stop,y:0}):v==="vertical"&&(b={x:0,y:a.start},p={x:0,y:a.stop}),b.x=t._xA.c2p(b.x===void 0?t._extremes.x.min[0].val:b.x,!0),b.y=t._yA.c2p(b.y===void 0?t._extremes.y.min[0].val:b.y,!0),p.x=t._xA.c2p(p.x===void 0?t._extremes.x.max[0].val:p.x,!0),p.y=t._yA.c2p(p.y===void 0?t._extremes.y.max[0].val:p.y,!0),e.call(Hoe,r,m,"linear",a.colorscale,"fill",b,p,!0,!1)}else v==="horizontal"&&(v=v+"reversed"),e.call(Ta.gradient,r,m,v,a.colorscale,"fill")}else t.fillcolor&&e.call(Jd.fill,t.fillcolor)}Ta.singleFillStyle=function(e,t){var r=dd.select(e.node()),n=r.data(),i=((n[0]||[])[0]||{}).trace||{};Uoe(e,i,t,!1)};Ta.fillGroupStyle=function(e,t,r){e.style("stroke-width",0).each(function(n){var i=dd.select(this);n[0].trace&&Uoe(i,n[0].trace,t,r)})};var Poe=Loe();Ta.symbolNames=[];Ta.symbolFuncs=[];Ta.symbolBackOffs=[];Ta.symbolNeedLines={};Ta.symbolNoDot={};Ta.symbolNoFill={};Ta.symbolList=[];Object.keys(Poe).forEach(function(e){var t=Poe[e],r=t.n;Ta.symbolList.push(r,String(r),e,r+100,String(r+100),e+"-open"),Ta.symbolNames[r]=e,Ta.symbolFuncs[r]=t.f,Ta.symbolBackOffs[r]=t.backoff||0,t.needLine&&(Ta.symbolNeedLines[r]=!0),t.noDot?Ta.symbolNoDot[r]=!0:Ta.symbolList.push(r+200,String(r+200),e+"-dot",r+300,String(r+300),e+"-open-dot"),t.noFill&&(Ta.symbolNoFill[r]=!0)});var sst=Ta.symbolNames.length,lst="M0,0.5L0.5,0L0,-0.5L-0.5,0Z";Ta.symbolNumber=function(e){if(Fb(e))e=+e;else if(typeof e=="string"){var t=0;e.indexOf("-open")>0&&(t=100,e=e.replace("-open","")),e.indexOf("-dot")>0&&(t+=200,e=e.replace("-dot","")),e=Ta.symbolNames.indexOf(e),e>=0&&(e+=t)}return e%100>=sst||e>=400?0:Math.floor(Math.max(e,0))};function Voe(e,t,r,n){var i=e%100;return Ta.symbolFuncs[i](t,r,n)+(e>=200?lst:"")}var Ioe=Kot("~f"),Goe={radial:{type:"radial"},radialreversed:{type:"radial",reversed:!0},horizontal:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0}},horizontalreversed:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0},reversed:!0},vertical:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0}},verticalreversed:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0},reversed:!0}};Ta.gradient=function(e,t,r,n,i,a){var o=Goe[n];return Hoe(e,t,r,o.type,i,a,o.start,o.stop,!1,o.reversed)};function Hoe(e,t,r,n,i,a,o,s,l,u){var c=i.length,f;n==="linear"?f={node:"linearGradient",attrs:{x1:o.x,y1:o.y,x2:s.x,y2:s.y,gradientUnits:l?"userSpaceOnUse":"objectBoundingBox"},reversed:u}:n==="radial"&&(f={node:"radialGradient",reversed:u});for(var h=new Array(c),d=0;d=0&&e.i===void 0&&(e.i=a.i),t.style("opacity",n.selectedOpacityFn?n.selectedOpacityFn(e):e.mo===void 0?o.opacity:e.mo),n.ms2mrc){var l;e.ms==="various"||o.size==="various"?l=3:l=n.ms2mrc(e.ms),e.mrc=l,n.selectedSizeFn&&(l=e.mrc=n.selectedSizeFn(e));var u=Ta.symbolNumber(e.mx||o.symbol)||0;e.om=u%200>=100;var c=QO(e,r),f=$O(e,r);t.attr("d",Voe(u,l,c,f))}var h=!1,d,v,m;if(e.so)m=s.outlierwidth,v=s.outliercolor,d=o.outliercolor;else{var b=(s||{}).width;m=(e.mlw+1||b+1||(e.trace?(e.trace.marker.line||{}).width:0)+1)-1||0,"mlc"in e?v=e.mlcc=n.lineScale(e.mlc):Du.isArrayOrTypedArray(s.color)?v=Jd.defaultLine:v=s.color,Du.isArrayOrTypedArray(o.color)&&(d=Jd.defaultLine,h=!0),"mc"in e?d=e.mcc=n.markerScale(e.mc):d=o.color||o.colors||"rgba(0,0,0,0)",n.selectedColorFn&&(d=n.selectedColorFn(e))}let p=e.mld||(s||{}).dash;if(p&&Ta.dashLine(t,p,m),e.om)t.call(Jd.stroke,d).style({"stroke-width":(m||1)+"px",fill:"none"});else{t.style("stroke-width",(e.isBlank?0:m)+"px");var k=o.gradient,M=e.mgt;M?h=!0:M=k&&k.type,Du.isArrayOrTypedArray(M)&&(M=M[0],Goe[M]||(M=0));var T=o.pattern,L=Ta.getPatternAttr,x=T&&(L(T.shape,e.i,"")||L(T.path,e.i,""));if(M&&M!=="none"){var C=e.mgc;C?h=!0:C=k.color;var S=r.uid;h&&(S+="-"+e.i),Ta.gradient(t,i,S,M,[[0,C],[1,d]],"fill")}else if(x){var g=!1,P=T.fgcolor;!P&&a&&a.color&&(P=a.color,g=!0);var E=L(P,e.i,a&&a.color||null),z=L(T.bgcolor,e.i,null),q=T.fgopacity,V=L(T.size,e.i,8),G=L(T.solidity,e.i,.3);g=g||e.mcc||Du.isArrayOrTypedArray(T.shape)||Du.isArrayOrTypedArray(T.path)||Du.isArrayOrTypedArray(T.bgcolor)||Du.isArrayOrTypedArray(T.fgcolor)||Du.isArrayOrTypedArray(T.size)||Du.isArrayOrTypedArray(T.solidity);var Z=r.uid;g&&(Z+="-"+e.i),Ta.pattern(t,"point",i,Z,x,V,G,e.mcc,T.fillmode,z,E,q)}else Du.isArrayOrTypedArray(d)?Jd.fill(t,d[e.i]):Jd.fill(t,d);m&&Jd.stroke(t,v)}};Ta.makePointStyleFns=function(e){var t={},r=e.marker;return t.markerScale=Ta.tryColorscale(r,""),t.lineScale=Ta.tryColorscale(r,"line"),gL.traceIs(e,"symbols")&&(t.ms2mrc=tst.isBubble(e)?rst(e):function(){return(r.size||6)/2}),e.selectedpoints&&Du.extendFlat(t,Ta.makeSelectedPointStyleFns(e)),t};Ta.makeSelectedPointStyleFns=function(e){var t={},r=e.selected||{},n=e.unselected||{},i=e.marker||{},a=r.marker||{},o=n.marker||{},s=i.opacity,l=a.opacity,u=o.opacity,c=l!==void 0,f=u!==void 0;(Du.isArrayOrTypedArray(s)||c||f)&&(t.selectedOpacityFn=function(T){var L=T.mo===void 0?i.opacity:T.mo;return T.selected?c?l:L:f?u:Noe*L});var h=i.color,d=a.color,v=o.color;(d||v)&&(t.selectedColorFn=function(T){var L=T.mcc||h;return T.selected?d||L:v||L});var m=i.size,b=a.size,p=o.size,k=b!==void 0,M=p!==void 0;return gL.traceIs(e,"symbols")&&(k||M)&&(t.selectedSizeFn=function(T){var L=T.mrc||m/2;return T.selected?k?b/2:L:M?p/2:L}),t};Ta.makeSelectedTextStyleFns=function(e){var t={},r=e.selected||{},n=e.unselected||{},i=e.textfont||{},a=r.textfont||{},o=n.textfont||{},s=i.color,l=a.color,u=o.color;return t.selectedTextColorFn=function(c){var f=c.tc||s;return c.selected?l||f:u||(l?f:Jd.addOpacity(f,Noe))},t};Ta.selectedPointStyle=function(e,t){if(!(!e.size()||!t.selectedpoints)){var r=Ta.makeSelectedPointStyleFns(t),n=t.marker||{},i=[];r.selectedOpacityFn&&i.push(function(a,o){a.style("opacity",r.selectedOpacityFn(o))}),r.selectedColorFn&&i.push(function(a,o){Jd.fill(a,r.selectedColorFn(o))}),r.selectedSizeFn&&i.push(function(a,o){var s=o.mx||n.symbol||0,l=r.selectedSizeFn(o);a.attr("d",Voe(Ta.symbolNumber(s),l,QO(o,t),$O(o,t))),o.mrc2=l}),i.length&&e.each(function(a){for(var o=dd.select(this),s=0;s0?r:0}Ta.textPointStyle=function(e,t,r){if(e.size()){var n;if(t.selectedpoints){var i=Ta.makeSelectedTextStyleFns(t);n=i.selectedTextColorFn}var a=t.texttemplate,o=r._fullLayout;e.each(function(s){var l=dd.select(this),u=a?Du.extractOption(s,t,"txt","texttemplate"):Du.extractOption(s,t,"tx","text");if(!u&&u!==0){l.remove();return}if(a){var c=t._module.formatLabels,f=c?c(s,t,o):{},h={};ist(h,t,s.i),u=Du.texttemplateString({data:[h,s,t._meta],fallback:t.texttemplatefallback,labels:f,locale:o._d3locale,template:u})}var d=s.tp||t.textposition,v=Woe(s,t),m=n?n(s):s.tc||t.textfont.color;l.call(Ta.font,{family:s.tf||t.textfont.family,weight:s.tw||t.textfont.weight,style:s.ty||t.textfont.style,variant:s.tv||t.textfont.variant,textcase:s.tC||t.textfont.textcase,lineposition:s.tE||t.textfont.lineposition,shadow:s.tS||t.textfont.shadow,size:v,color:m}).text(u).call(mL.convertToTspans,r).call(joe,d,v,s.mrc)})}};Ta.selectedTextStyle=function(e,t){if(!(!e.size()||!t.selectedpoints)){var r=Ta.makeSelectedTextStyleFns(t);e.each(function(n){var i=dd.select(this),a=r.selectedTextColorFn(n),o=n.tp||t.textposition,s=Woe(n,t);Jd.fill(i,a);var l=gL.traceIs(t,"bar-like");joe(i,o,s,n.mrc2||n.mrc,l)})}};var Roe=.5;Ta.smoothopen=function(e,t){if(e.length<3)return"M"+e.join("L");var r="M"+e[0],n=[],i;for(i=1;i=l||T>=c&&T<=l)&&(L<=f&&L>=u||L>=f&&L<=u)&&(e=[T,L])}return e}Ta.applyBackoff=Yoe;Ta.makeTester=function(){var e=Du.ensureSingleById(dd.select("body"),"svg","js-plotly-tester",function(r){r.attr($ot.svgAttrs).style({position:"absolute",left:"-10000px",top:"-10000px",width:"9000px",height:"9000px","z-index":"1"})}),t=Du.ensureSingle(e,"path","js-reference-point",function(r){r.attr("d","M0,0H1V1H0Z").style({"stroke-width":0,fill:"black"})});Ta.tester=e,Ta.testref=t};Ta.savedBBoxes={};var XO=0,fst=1e4;Ta.bBox=function(e,t,r){r||(r=Doe(e));var n;if(r){if(n=Ta.savedBBoxes[r],n)return Du.extendFlat({},n)}else if(e.childNodes.length===1){var i=e.childNodes[0];if(r=Doe(i),r){var a=+i.getAttribute("x")||0,o=+i.getAttribute("y")||0,s=i.getAttribute("transform");if(!s){var l=Ta.bBox(i,!1,r);return a&&(l.left+=a,l.right+=a),o&&(l.top+=o,l.bottom+=o),l}if(r+="~"+a+"~"+o+"~"+s,n=Ta.savedBBoxes[r],n)return Du.extendFlat({},n)}}var u,c;t?u=e:(c=Ta.tester.node(),u=e.cloneNode(!0),c.appendChild(u)),dd.select(u).attr("transform",null).call(mL.positionText,0,0);var f=u.getBoundingClientRect(),h=Ta.testref.node().getBoundingClientRect();t||c.removeChild(u);var d={height:f.height,width:f.width,left:f.left-h.left,top:f.top-h.top,right:f.right-h.left,bottom:f.bottom-h.top};return XO>=fst&&(Ta.savedBBoxes={},XO=0),r&&(Ta.savedBBoxes[r]=d),XO++,Du.extendFlat({},d)};function Doe(e){var t=e.getAttribute("data-unformatted");if(t!==null)return t+e.getAttribute("data-math")+e.getAttribute("text-anchor")+e.getAttribute("style")}Ta.setClipUrl=function(e,t,r){e.attr("clip-path",JO(t,r))};function JO(e,t){if(!e)return null;var r=t._context,n=r._exportedPlot?"":r._baseUrl||"";return n?"url('"+n+"#"+e+"')":"url(#"+e+")"}Ta.getTranslate=function(e){var t=/.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/,r=e.attr?"attr":"getAttribute",n=e[r]("transform")||"",i=n.replace(t,function(a,o,s){return[o,s].join(" ")}).split(" ");return{x:+i[0]||0,y:+i[1]||0}};Ta.setTranslate=function(e,t,r){var n=/(\btranslate\(.*?\);?)/,i=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",o=e[i]("transform")||"";return t=t||0,r=r||0,o=o.replace(n,"").trim(),o+=sM(t,r),o=o.trim(),e[a]("transform",o),o};Ta.getScale=function(e){var t=/.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/,r=e.attr?"attr":"getAttribute",n=e[r]("transform")||"",i=n.replace(t,function(a,o,s){return[o,s].join(" ")}).split(" ");return{x:+i[0]||1,y:+i[1]||1}};Ta.setScale=function(e,t,r){var n=/(\bscale\(.*?\);?)/,i=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",o=e[i]("transform")||"";return t=t||1,r=r||1,o=o.replace(n,"").trim(),o+="scale("+t+","+r+")",o=o.trim(),e[a]("transform",o),o};var hst=/\s*sc.*/;Ta.setPointGroupScale=function(e,t,r){if(t=t||1,r=r||1,!!e){var n=t===1&&r===1?"":"scale("+t+","+r+")";e.each(function(){var i=(this.getAttribute("transform")||"").replace(hst,"");i+=n,i=i.trim(),this.setAttribute("transform",i)})}};var dst=/translate\([^)]*\)\s*$/;Ta.setTextPointsScale=function(e,t,r){e&&e.each(function(){var n,i=dd.select(this),a=i.select("text");if(a.node()){var o=parseFloat(a.attr("x")||0),s=parseFloat(a.attr("y")||0),l=(i.attr("transform")||"").match(dst);t===1&&r===1?n=[]:n=[sM(o,s),"scale("+t+","+r+")",sM(-o,-s)],l&&n.push(l),i.attr("transform",n.join(""))}})};function $O(e,t){var r;return e&&(r=e.mf),r===void 0&&(r=t.marker&&t.marker.standoff||0),!t._geo&&!t._xA?-r:r}Ta.getMarkerStandoff=$O;var oM=Math.atan2,Ib=Math.cos,U3=Math.sin;function Foe(e,t){var r=t[0],n=t[1];return[r*Ib(e)-n*U3(e),r*U3(e)+n*Ib(e)]}var zoe,qoe,Ooe,Boe,ZO,YO;function QO(e,t){var r=e.ma;r===void 0&&(r=t.marker.angle,(!r||Du.isArrayOrTypedArray(r))&&(r=0));var n,i,a=t.marker.angleref;if(a==="previous"||a==="north"){if(t._geo){var o=t._geo.project(e.lonlat);n=o[0],i=o[1]}else{var s=t._xA,l=t._yA;if(s&&l)n=s.c2p(e.x),i=l.c2p(e.y);else return 90}if(t._geo){var u=e.lonlat[0],c=e.lonlat[1],f=t._geo.project([u,c+1e-5]),h=t._geo.project([u+1e-5,c]),d=oM(h[1]-i,h[0]-n),v=oM(f[1]-i,f[0]-n),m;if(a==="north")m=r/180*Math.PI;else if(a==="previous"){var b=u/180*Math.PI,p=c/180*Math.PI,k=zoe/180*Math.PI,M=qoe/180*Math.PI,T=k-b,L=Ib(M)*U3(T),x=U3(M)*Ib(p)-Ib(M)*U3(p)*Ib(T);m=-oM(L,x)-Math.PI,zoe=u,qoe=c}var C=Foe(d,[Ib(m),0]),S=Foe(v,[U3(m),0]);r=oM(C[1]+S[1],C[0]+S[0])/Math.PI*180,a==="previous"&&!(YO===t.uid&&e.i===ZO+1)&&(r=null)}if(a==="previous"&&!t._geo)if(YO===t.uid&&e.i===ZO+1&&Fb(n)&&Fb(i)){var g=n-Ooe,P=i-Boe,E=t.line&&t.line.shape||"",z=E.slice(E.length-1);z==="h"&&(P=0),z==="v"&&(g=0),r+=oM(P,g)/Math.PI*180+90}else r=null}return Ooe=n,Boe=i,ZO=e.i,YO=t.uid,r}Ta.getMarkerAngle=QO});var qb=ye((lar,ese)=>{"use strict";var V3=qa(),vst=Eo(),pst=Mc(),eB=Oa(),zb=Pr(),Joe=zb.strTranslate,yL=So(),_L=ka(),G3=Zl(),$oe=X1(),gst=Dh().OPPOSITE_SIDE,Qoe=/ [XY][0-9]* /,tB=1.6,rB=1.6;function mst(e,t,r){var n=e._fullLayout,i=r.propContainer,a=r.propName,o=r.placeholder,s=r.traceIndex,l=r.avoid||{},u=r.attributes,c=r.transform,f=r.containerGroup,h=1,d=i.title,v=(d&&d.text?d.text:"").trim(),m=!1,b=d&&d.font?d.font:{},p=b.family,k=b.size,M=b.color,T=b.weight,L=b.style,x=b.variant,C=b.textcase,S=b.lineposition,g=b.shadow,P=r.subtitlePropName,E=!!P,z=r.subtitlePlaceholder,q=(i.title||{}).subtitle||{text:"",font:{}},V=(q.text||"").trim(),G=!1,Z=1,j=q.font,N=j.family,H=j.size,ie=j.color,ae=j.weight,_e=j.style,Ee=j.variant,Ce=j.textcase,ge=j.lineposition,re=j.shadow,Se;a==="title.text"?Se="titleText":a.indexOf("axis")!==-1?Se="axisTitleText":a.indexOf("colorbar")!==-1&&(Se="colorbarTitleText");var ke=e._context.edits[Se];function be(Vt,rr){return Vt===void 0||rr===void 0?!1:Vt.replace(Qoe," % ")===rr.replace(Qoe," % ")}v===""?h=0:be(v,o)&&(ke||(v=""),h=.2,m=!0),E&&(V===""?Z=0:be(V,z)&&(ke||(V=""),Z=.2,G=!0)),r._meta?v=zb.templateString(v,r._meta):n._meta&&(v=zb.templateString(v,n._meta));var Be=v||V||ke,Le;f||(f=zb.ensureSingle(n._infolayer,"g","g-"+t),Le=n._hColorbarMoveTitle);var me=f.selectAll("text."+t).data(Be?[0]:[]);me.enter().append("text"),me.text(v).attr("class",t),me.exit().remove();var Pe=null,ce=t+"-subtitle",He=V||ke;if(E&&(Pe=f.selectAll("text."+ce).data(He?[0]:[]),Pe.enter().append("text"),Pe.text(V).attr("class",ce),Pe.exit().remove()),!Be)return f;function lt(Vt,rr){zb.syncOrAsync([mt,Ht],{title:Vt,subtitle:rr})}function mt(Vt){var rr=Vt.title,tt=Vt.subtitle,je;!c&&Le&&(c={}),c?(je="",c.rotate&&(je+="rotate("+[c.rotate,u.x,u.y]+")"),(c.offset||Le)&&(je+=Joe(0,(c.offset||0)-(Le||0)))):je=null,rr.attr("transform",je);function Ue(Et){if(Et){var pt=V3.select(Et.node().parentNode).select("."+ce);if(!pt.empty()){var jt=Et.node().getBBox();if(jt.height){var or=jt.y+jt.height+tB*H;pt.attr("y",or)}}}}if(rr.style("opacity",h*_L.opacity(M)).call(yL.font,{color:_L.rgb(M),size:V3.round(k,2),family:p,weight:T,style:L,variant:x,textcase:C,shadow:g,lineposition:S}).attr(u).call(G3.convertToTspans,e,Ue),tt&&!tt.empty()){var Ae=f.select("."+t+"-math-group"),rt=rr.node().getBBox(),St=Ae.node()?Ae.node().getBBox():void 0,Tt=St?St.y+St.height+tB*H:rt.y+rt.height+rB*H,dt=zb.extendFlat({},u,{y:Tt});tt.attr("transform",je),tt.style("opacity",Z*_L.opacity(ie)).call(yL.font,{color:_L.rgb(ie),size:V3.round(H,2),family:N,weight:ae,style:_e,variant:Ee,textcase:Ce,shadow:re,lineposition:ge}).attr(dt).call(G3.convertToTspans,e)}return pst.previousPromises(e)}function Ht(Vt){var rr=Vt.title,tt=V3.select(rr.node().parentNode);if(l&&l.selection&&l.side&&v){tt.attr("transform",null);var je=gst[l.side],Ue=l.side==="left"||l.side==="top"?-1:1,Ae=vst(l.pad)?l.pad:2,rt=yL.bBox(tt.node()),St={t:0,b:0,l:0,r:0},Tt=e._fullLayout._reservedMargin;for(var dt in Tt)for(var Et in Tt[dt]){var pt=Tt[dt][Et];St[Et]=Math.max(St[Et],pt)}var jt={left:St.l,top:St.t,right:n.width-St.r,bottom:n.height-St.b},or=l.maxShift||Ue*(jt[l.side]-rt[l.side]),mr=0;if(or<0)mr=or;else{var Ar=l.offsetLeft||0,ei=l.offsetTop||0;rt.left-=Ar,rt.right-=Ar,rt.top-=ei,rt.bottom-=ei,l.selection.each(function(){var jr=yL.bBox(this);zb.bBoxIntersect(rt,jr,Ae)&&(mr=Math.max(mr,Ue*(jr[l.side]-rt[je])+Ae))}),mr=Math.min(or,mr),i._titleScoot=Math.abs(mr)}if(mr>0||or<0){var qr={left:[-mr,0],right:[mr,0],top:[0,-mr],bottom:[0,mr]}[l.side];tt.attr("transform",Joe(qr[0],qr[1]))}}}me.call(lt,Pe);function at(Vt,rr){Vt.text(rr).on("mouseover.opacity",function(){V3.select(this).transition().duration($oe.SHOW_PLACEHOLDER).style("opacity",1)}).on("mouseout.opacity",function(){V3.select(this).transition().duration($oe.HIDE_PLACEHOLDER).style("opacity",0)})}if(ke&&(v?me.on(".opacity",null):(at(me,o),m=!0),me.call(G3.makeEditable,{gd:e}).on("edit",function(Vt){s!==void 0?eB.call("_guiRestyle",e,a,Vt,s):eB.call("_guiRelayout",e,a,Vt)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(lt)}).on("input",function(Vt){this.text(Vt||" ").call(G3.positionText,u.x,u.y)}),E)){if(E&&!v){var ct=me.node().getBBox(),ar=ct.y+ct.height+rB*H;Pe.attr("y",ar)}V?Pe.on(".opacity",null):(at(Pe,z),G=!0),Pe.call(G3.makeEditable,{gd:e}).on("edit",function(Vt){eB.call("_guiRelayout",e,"title.subtitle.text",Vt)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(lt)}).on("input",function(Vt){this.text(Vt||" ").call(G3.positionText,Pe.attr("x"),Pe.attr("y"))})}return me.classed("js-placeholder",m),Pe&&!Pe.empty()&&Pe.classed("js-placeholder",G),f}ese.exports={draw:mst,SUBTITLE_PADDING_EM:rB,SUBTITLE_PADDING_MATHJAX_EM:tB}});var xm=ye((uar,ase)=>{"use strict";var yst=qa(),_st=d3().utcFormat,yc=Pr(),xst=yc.numberFormat,ym=Eo(),f_=yc.cleanNumber,bst=yc.ms2DateTime,tse=yc.dateTime2ms,_m=yc.ensureNumber,rse=yc.isArrayOrTypedArray,h_=fs(),xL=h_.FP_SAFE,Sg=h_.BADNUM,wst=h_.LOG_CLIP,Tst=h_.ONEWEEK,bL=h_.ONEDAY,wL=h_.ONEHOUR,ise=h_.ONEMIN,nse=h_.ONESEC,TL=df(),ML=Rh(),AL=ML.HOUR_PATTERN,SL=ML.WEEKDAY_PATTERN;function lM(e){return Math.pow(10,e)}function iB(e){return e!=null}ase.exports=function(t,r){r=r||{};var n=t._id||"x",i=n.charAt(0);function a(T,L){if(T>0)return Math.log(T)/Math.LN10;if(T<=0&&L&&t.range&&t.range.length===2){var x=t.range[0],C=t.range[1];return .5*(x+C-2*wst*Math.abs(x-C))}else return Sg}function o(T,L,x,C){if((C||{}).msUTC&&ym(T))return+T;var S=tse(T,x||t.calendar);if(S===Sg)if(ym(T)){T=+T;var g=Math.floor(yc.mod(T+.05,1)*10),P=Math.round(T-g/10);S=tse(new Date(P))+g/10}else return Sg;return S}function s(T,L,x){return bst(T,L,x||t.calendar)}function l(T){return t._categories[Math.round(T)]}function u(T){if(iB(T)){if(t._categoriesMap===void 0&&(t._categoriesMap={}),t._categoriesMap[T]!==void 0)return t._categoriesMap[T];t._categories.push(typeof T=="number"?String(T):T);var L=t._categories.length-1;return t._categoriesMap[T]=L,L}return Sg}function c(T,L){for(var x=new Array(L),C=0;Ct.range[1]&&(x=!x);for(var C=x?-1:1,S=C*T,g=0,P=0;Pz)g=P+1;else{g=S<(E+z)/2?P:P+1;break}}var q=t._B[g]||0;return isFinite(q)?v(T,t._m2,q):0},p=function(T){var L=t._rangebreaks.length;if(!L)return m(T,t._m,t._b);for(var x=0,C=0;Ct._rangebreaks[C].pmax&&(x=C+1);return m(T,t._m2,t._B[x])}}t.c2l=t.type==="log"?a:_m,t.l2c=t.type==="log"?lM:_m,t.l2p=b,t.p2l=p,t.c2p=t.type==="log"?function(T,L){return b(a(T,L))}:b,t.p2c=t.type==="log"?function(T){return lM(p(T))}:p,["linear","-"].indexOf(t.type)!==-1?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=f_,t.c2d=t.c2r=t.l2d=t.l2r=_m,t.d2p=t.r2p=function(T){return t.l2p(f_(T))},t.p2d=t.p2r=p,t.cleanPos=_m):t.type==="log"?(t.d2r=t.d2l=function(T,L){return a(f_(T),L)},t.r2d=t.r2c=function(T){return lM(f_(T))},t.d2c=t.r2l=f_,t.c2d=t.l2r=_m,t.c2r=a,t.l2d=lM,t.d2p=function(T,L){return t.l2p(t.d2r(T,L))},t.p2d=function(T){return lM(p(T))},t.r2p=function(T){return t.l2p(f_(T))},t.p2r=p,t.cleanPos=_m):t.type==="date"?(t.d2r=t.r2d=yc.identity,t.d2c=t.r2c=t.d2l=t.r2l=o,t.c2d=t.c2r=t.l2d=t.l2r=s,t.d2p=t.r2p=function(T,L,x){return t.l2p(o(T,0,x))},t.p2d=t.p2r=function(T,L,x){return s(p(T),L,x)},t.cleanPos=function(T){return yc.cleanDate(T,Sg,t.calendar)}):t.type==="category"?(t.d2c=t.d2l=u,t.r2d=t.c2d=t.l2d=l,t.d2r=t.d2l_noadd=h,t.r2c=function(T){var L=d(T);return L!==void 0?L:t.fraction2r(.5)},t.l2r=t.c2r=_m,t.r2l=d,t.d2p=function(T){return t.l2p(t.r2c(T))},t.p2d=function(T){return l(p(T))},t.r2p=t.d2p,t.p2r=p,t.cleanPos=function(T){return typeof T=="string"&&T!==""?T:_m(T)}):t.type==="multicategory"&&(t.r2d=t.c2d=t.l2d=l,t.d2r=t.d2l_noadd=h,t.r2c=function(T){var L=h(T);return L!==void 0?L:t.fraction2r(.5)},t.r2c_just_indices=f,t.l2r=t.c2r=_m,t.r2l=h,t.d2p=function(T){return t.l2p(t.r2c(T))},t.p2d=function(T){return l(p(T))},t.r2p=t.d2p,t.p2r=p,t.cleanPos=function(T){return Array.isArray(T)||typeof T=="string"&&T!==""?T:_m(T)},t.setupMultiCategory=function(T){var L=t._traceIndices,x,C,S=t._matchGroup;if(S&&t._categories.length===0){for(var g in S)if(g!==n){var P=r[TL.id2name(g)];L=L.concat(P._traceIndices)}}var E=[[0,{}],[0,{}]],z=[];for(x=0;xP[1]&&(C[g?0:1]=x,S[1]=P[1]),S[0]>=S[1])if(L!==void 0){var E=P[0]+1;x!==void 0&&(E=Math.min(E,P[1])),C[g?0:1]=t.l2r(E)}else x!==void 0&&(C[g?1:0]=t.l2r(P[1]-1))}},t.cleanRange=function(T,L){t._cleanRange(T,L),t.limitRange(T)},t._cleanRange=function(T,L){L||(L={}),T||(T="range");var x=yc.nestedProperty(t,T).get(),C,S;if(t.type==="date"?S=yc.dfltRange(t.calendar):i==="y"?S=ML.DFLTRANGEY:t._name==="realaxis"?S=[0,1]:S=L.dfltRange||ML.DFLTRANGEX,S=S.slice(),(t.rangemode==="tozero"||t.rangemode==="nonnegative")&&(S[0]=0),!x||x.length!==2){yc.nestedProperty(t,T).set(S);return}var g=x[0]===null,P=x[1]===null;for(t.type==="date"&&!t.autorange&&(x[0]=yc.cleanDate(x[0],Sg,t.calendar),x[1]=yc.cleanDate(x[1],Sg,t.calendar)),C=0;C<2;C++)if(t.type==="date"){if(!yc.isDateTime(x[C],t.calendar)){t[T]=S;break}if(t.r2l(x[0])===t.r2l(x[1])){var E=yc.constrain(t.r2l(x[0]),yc.MIN_MS+1e3,yc.MAX_MS-1e3);x[0]=t.l2r(E-1e3),x[1]=t.l2r(E+1e3);break}}else{if(!ym(x[C]))if(!(g||P)&&ym(x[1-C]))x[C]=x[1-C]*(C?10:.1);else{t[T]=S;break}if(x[C]<-xL?x[C]=-xL:x[C]>xL&&(x[C]=xL),x[0]===x[1]){var z=Math.max(1,Math.abs(x[0]*1e-6));x[0]-=z,x[1]+=z}}},t.setScale=function(T){var L=r._size;if(t.overlaying){var x=TL.getFromId({_fullLayout:r},t.overlaying);t.domain=x.domain}var C=T&&t._r?"_r":"range",S=t.calendar;t.cleanRange(C);var g=t.r2l(t[C][0],S),P=t.r2l(t[C][1],S),E=i==="y";if(E?(t._offset=L.t+(1-t.domain[1])*L.h,t._length=L.h*(t.domain[1]-t.domain[0]),t._m=t._length/(g-P),t._b=-t._m*P):(t._offset=L.l+t.domain[0]*L.w,t._length=L.w*(t.domain[1]-t.domain[0]),t._m=t._length/(P-g),t._b=-t._m*g),t._rangebreaks=[],t._lBreaks=0,t._m2=0,t._B=[],t.rangebreaks){var z,q;if(t._rangebreaks=t.locateBreaks(Math.min(g,P),Math.max(g,P)),t._rangebreaks.length){for(z=0;zP&&(V=!V),V&&t._rangebreaks.reverse();var G=V?-1:1;for(t._m2=G*t._length/(Math.abs(P-g)-t._lBreaks),t._B.push(-t._m2*(E?P:g)),z=0;zS&&(S+=7,gS&&(S+=24,g=C&&g=C&&T=re.min&&(_ere.max&&(re.max=Ee),Ce=!1)}Ce&&P.push({min:_e,max:Ee})}};for(x=0;x{"use strict";var ose=Eo(),nB=Pr(),Ast=fs().BADNUM,EL=nB.isArrayOrTypedArray,Sst=nB.isDateTime,Mst=nB.cleanNumber,sse=Math.round;use.exports=function(t,r,n){var i=t,a=n.noMultiCategory;if(EL(i)&&!i.length)return"-";if(!a&&Pst(i))return"multicategory";if(a&&Array.isArray(i[0])){for(var o=[],s=0;sa*2}function lse(e){return Math.max(1,(e-1)/1e3)}function Lst(e,t){for(var r=e.length,n=lse(r),i=0,a=0,o={},s=0;si*2}function Pst(e){return EL(e[0])&&EL(e[1])}});var Mg=ye((far,mse)=>{"use strict";var Ist=qa(),dse=Eo(),d_=Pr(),kL=fs().FP_SAFE,Rst=Oa(),Dst=So(),vse=df(),Fst=vse.getFromId,zst=vse.isLinked;mse.exports={applyAutorangeOptions:gse,getAutoRange:aB,makePadFn:oB,doAutoRange:Ost,findExtremes:Bst,concatExtremes:uB};function aB(e,t){var r,n,i=[],a=e._fullLayout,o=oB(a,t,0),s=oB(a,t,1),l=uB(e,t),u=l.min,c=l.max;if(u.length===0||c.length===0)return d_.simpleMap(t.range,t.r2l);var f=u[0].val,h=c[0].val;for(r=1;r0&&(P=M-o(x)-s(C),P>T?E/P>L&&(S=x,g=C,L=E/P):E/M>L&&(S={val:x.val,nopad:1},g={val:C.val,nopad:1},L=E/M));function z(j,N){return Math.max(j,s(N))}if(f===h){var q=f-1,V=f+1;if(p)if(f===0)i=[0,1];else{var G=(f>0?c:u).reduce(z,0),Z=f/(1-Math.min(.5,G/M));i=f>0?[0,Z]:[Z,0]}else k?i=[Math.max(0,q),Math.max(1,V)]:i=[q,V]}else p?(S.val>=0&&(S={val:0,nopad:1}),g.val<=0&&(g={val:0,nopad:1})):k&&(S.val-L*o(S)<0&&(S={val:0,nopad:1}),g.val<=0&&(g={val:1,nopad:1})),L=(g.val-S.val-cse(t,x.val,C.val))/(M-o(S)-s(g)),i=[S.val-L*o(S),g.val+L*s(g)];return i=gse(i,t),t.limitRange&&t.limitRange(),v&&i.reverse(),d_.simpleMap(i,t.l2r||Number)}function cse(e,t,r){var n=0;if(e.rangebreaks)for(var i=e.locateBreaks(t,r),a=0;a0?r.ppadplus:r.ppadminus)||r.ppad||0),x=T((e._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),C=T(r.vpadplus||r.vpad),S=T(r.vpadminus||r.vpad);if(!u){if(k=1/0,M=-1/0,l)for(f=0;f0&&(k=h),h>M&&h-kL&&(k=h),h>M&&h=E;f--)P(f);return{min:n,max:i,opts:r}}function sB(e,t,r,n){pse(e,t,r,n,Nst)}function lB(e,t,r,n){pse(e,t,r,n,Ust)}function pse(e,t,r,n,i){for(var a=n.tozero,o=n.extrapad,s=!0,l=0;l=r&&(u.extrapad||!o)){s=!1;break}else i(t,u.val)&&u.pad<=r&&(o||!u.extrapad)&&(e.splice(l,1),l--)}if(s){var c=a&&t===0;e.push({val:t,pad:c?0:r,extrapad:c?!1:o})}}function hse(e){return dse(e)&&Math.abs(e)=t}function Vst(e,t){var r=t.autorangeoptions;return r&&r.minallowed!==void 0&&CL(t,r.minallowed,r.maxallowed)?r.minallowed:r&&r.clipmin!==void 0&&CL(t,r.clipmin,r.clipmax)?Math.max(e,t.d2l(r.clipmin)):e}function Gst(e,t){var r=t.autorangeoptions;return r&&r.maxallowed!==void 0&&CL(t,r.minallowed,r.maxallowed)?r.maxallowed:r&&r.clipmax!==void 0&&CL(t,r.clipmin,r.clipmax)?Math.min(e,t.d2l(r.clipmax)):e}function CL(e,t,r){return t!==void 0&&r!==void 0?(t=e.d2l(t),r=e.d2l(r),t=l&&(a=l,r=l),o<=l&&(o=l,n=l)}}return r=Vst(r,t),n=Gst(n,t),[r,n]}});var ho=ye((dar,Nse)=>{"use strict";var w0=qa(),zh=Eo(),j3=Mc(),cM=Oa(),Wo=Pr(),W3=Wo.strTranslate,Ob=Zl(),Hst=qb(),fM=ka(),Xp=So(),jst=Rd(),yse=RO(),har=Rh(),$d=fs(),Wst=$d.ONEMAXYEAR,IL=$d.ONEAVGYEAR,RL=$d.ONEMINYEAR,Xst=$d.ONEMAXQUARTER,dB=$d.ONEAVGQUARTER,DL=$d.ONEMINQUARTER,Zst=$d.ONEMAXMONTH,X3=$d.ONEAVGMONTH,FL=$d.ONEMINMONTH,Zp=$d.ONEWEEK,qv=$d.ONEDAY,v_=qv/2,wm=$d.ONEHOUR,hM=$d.ONEMIN,zL=$d.ONESEC,Yst=$d.ONEMILLI,Kst=$d.ONEMICROSEC,Bb=$d.MINUS_SIGN,OL=$d.BADNUM,vB={K:"zeroline"},pB={K:"gridline",L:"path"},gB={K:"minor-gridline",L:"path"},Cse={K:"tick",L:"path"},_se={K:"tick",L:"text"},xse={width:["x","r","l","xl","xr"],height:["y","t","b","yt","yb"],right:["r","xr"],left:["l","xl"],top:["t","yt"],bottom:["b","yb"]},BL=Dh(),uM=BL.MID_SHIFT,Nb=BL.CAP_SHIFT,dM=BL.LINE_SPACING,Jst=BL.OPPOSITE_SIDE,qL=3,$n=Nse.exports={};$n.setConvert=xm();var $st=H3(),Tm=df(),Qst=Tm.idSort,elt=Tm.isLinked;$n.id2name=Tm.id2name;$n.name2id=Tm.name2id;$n.cleanId=Tm.cleanId;$n.list=Tm.list;$n.listIds=Tm.listIds;$n.getFromId=Tm.getFromId;$n.getFromTrace=Tm.getFromTrace;var Lse=Mg();$n.getAutoRange=Lse.getAutoRange;$n.findExtremes=Lse.findExtremes;var tlt=1e-4;function xB(e){var t=(e[1]-e[0])*tlt;return[e[0]-t,e[1]+t]}$n.coerceRef=function(e,t,r,n,i,a){var o=n.charAt(n.length-1),s=r._fullLayout._subplots[o+"axis"],l=n+"ref",u={};return i||(i=s[0]||(typeof a=="string"?a:a[0])),a||(a=i),s=s.concat(s.map(function(c){return c+" domain"})),u[l]={valType:"enumerated",values:s.concat(a?typeof a=="string"?[a]:a:[]),dflt:i},Wo.coerce(e,t,u,l)};$n.coerceRefArray=function(e,t,r,n,i,a,o){let s=n.charAt(n.length-1);var l=r._fullLayout._subplots[s+"axis"];let u=n+"ref";var c=e[u];i||(i=l[0]||(typeof a=="string"?a:a[0])),l=l.concat(l.map(h=>h+" domain")),l=l.concat(a||[]),c.length>o?(Wo.warn("Array attribute "+u+" has more entries than expected, truncating to "+o),c=c.slice(0,o)):c.length2e-6||((r-e._forceTick0)/e._minDtick%1+1.000001)%1>2e-6)&&(e._minDtick=0))};$n.saveRangeInitial=function(e,t){for(var r=$n.list(e,"",!0),n=!1,i=0;if*.3||u(n)||u(i))){var h=r.dtick/2;e+=e+ho){var s=Number(r.slice(1));a.exactYears>o&&s%12===0?e=$n.tickIncrement(e,"M6","reverse")+qv*1.5:a.exactMonths>o?e=$n.tickIncrement(e,"M1","reverse")+qv*15.5:e-=v_;var l=$n.tickIncrement(e,r);if(l<=n)return l}return e}$n.prepMinorTicks=function(e,t,r){var f,h;if(!((f=t.minor)!=null&&f.dtick)){delete e.dtick;var n=t.dtick&&zh(t._tmin),i;if(n){var a=$n.tickIncrement(t._tmin,t.dtick,!0);i=[t._tmin,a*.99+t._tmin*.01]}else{var o=Wo.simpleMap(t.range,t.r2l);i=[o[0],.8*o[0]+.2*o[1]]}if(e.range=Wo.simpleMap(i,t.l2r),e._isMinor=!0,$n.prepTicks(e,r),n){var s=zh(t.dtick),l=zh(e.dtick),u=s?t.dtick:+t.dtick.substring(1),c=l?e.dtick:+e.dtick.substring(1);s&&l?cB(u,c)?u===2*Zp&&c===2*qv&&(e.dtick=Zp):u===2*Zp&&c===3*qv?e.dtick=Zp:u===Zp&&!(t._input.minor||{}).nticks?e.dtick=qv:Tse(u/c,2.5)?e.dtick=u/2:e.dtick=u:String(t.dtick).charAt(0)==="M"?l?e.dtick="M1":cB(u,c)?u>=12&&c===2&&(e.dtick="M3"):e.dtick=t.dtick:String(e.dtick).charAt(0)==="L"?String(t.dtick).charAt(0)==="L"?cB(u,c)||(e.dtick=Tse(u/c,2.5)?t.dtick/2:t.dtick):e.dtick="D1":e.dtick==="D2"&&+t.dtick>1&&(e.dtick=1)}e.range=t.range}((h=t.minor)==null?void 0:h._tick0Init)===void 0&&(e.tick0=t.tick0)};function cB(e,t){return Math.abs((e/t+.5)%1-.5)<.001}function Tse(e,t){return Math.abs(e/t-1)<.001}$n.prepTicks=function(e,t){var r=Wo.simpleMap(e.range,e.r2l,void 0,void 0,t);if(e.tickmode==="auto"||!e.dtick){var n=e.nticks,i;n||(e.type==="category"||e.type==="multicategory"?(i=e.tickfont?Wo.bigFont(e.tickfont.size||12):15,n=e._length/i):(i=e._id.charAt(0)==="y"?40:80,n=Wo.constrain(e._length/i,4,9)+1),e._name==="radialaxis"&&(n*=2)),e.minor&&e.minor.tickmode!=="array"||e.tickmode==="array"&&(n*=100),e._roughDTick=Math.abs(r[1]-r[0])/n,$n.autoTicks(e,e._roughDTick),e._minDtick>0&&e.dtick0?(a=n-1,o=n):(a=n,o=n);var s=e[a].value,l=e[o].value,u=Math.abs(l-s),c=r||u,f=0;c>=RL?u>=RL&&u<=Wst?f=u:f=IL:r===dB&&c>=DL?u>=DL&&u<=Xst?f=u:f=dB:c>=FL?u>=FL&&u<=Zst?f=u:f=X3:r===Zp&&c>=Zp?f=Zp:c>=qv?f=qv:r===v_&&c>=v_?f=v_:r===wm&&c>=wm&&(f=wm);var h;f>=u&&(f=u,h=!0);var d=i+f;if(t.rangebreaks&&f>0){for(var v=84,m=0,b=0;bZp&&(f=u)}(f>0||n===0)&&(e[n].periodX=i+f/2)}}$n.calcTicks=function(t,r){for(var n=t.type,i=t.calendar,a=t.ticklabelstep,o=t.ticklabelmode==="period",s=t.range[0]>t.range[1],l=!t.ticklabelindex||Wo.isArrayOrTypedArray(t.ticklabelindex)?t.ticklabelindex:[t.ticklabelindex],u=Wo.simpleMap(t.range,t.r2l,void 0,void 0,r),c=u[1]=(T?0:1);L--){var x=!L;L?(t._dtickInit=t.dtick,t._tick0Init=t.tick0):T&&(t.minor._dtickInit=t.minor.dtick,t.minor._tick0Init=t.minor.tick0);var C=L?t:Wo.extendFlat({},t,T?t.minor:{minor:{}});if(x?$n.prepMinorTicks(C,t,r):$n.prepTicks(C,r),C.tickmode==="array"){L?(b=[],v=Ase(t,!x)):(p=[],m=Ase(t,!x));continue}if(C.tickmode==="sync"){b=[],v=slt(t);continue}var S=xB(u),g=S[0],P=S[1],E=zh(C.dtick),z=n==="log"&&!(E||C.dtick.charAt(0)==="L"),q=$n.tickFirst(C,r);if(L){if(t._tmin=q,q=P:G<=P;G=$n.tickIncrement(G,N,c,i)){if(L&&Z++,C.rangebreaks&&!c){if(G=h)break}if(b.length>d||G===V)break;V=G;var H={value:G};L?(z&&G!==(G|0)&&(H.simpleLabel=!0),a>1&&Z%a&&(H.skipLabel=!0),b.push(H)):(H.minor=!0,p.push(H))}}if(!p||p.length<3)l=!1;else{var ie=(p[2].value-p[1].value)*(s?-1:1);Ilt(ie,t.tickformat)||(l=!1,p=p.slice(1))}if(!l)k=b;else{var ae=b.concat(p);o&&b.length&&(ae=ae.slice(1)),ae=ae.sort(function(Vt,rr){return Vt.value-rr.value}).filter(function(Vt,rr,tt){return rr===0||Vt.value!==tt[rr-1].value});var _e=ae.map(function(Vt,rr){return Vt.minor===void 0&&!Vt.skipLabel?rr:null}).filter(function(Vt){return Vt!==null});_e.forEach(function(Vt){l.map(function(rr){var tt=Vt+rr;tt>=0&&tt-1;Le--){if(b[Le].drop){b.splice(Le,1);continue}b[Le].value=hB(b[Le].value,t);var He=t.c2p(b[Le].value);(me?ce>He-Pe:ceh||jeh&&(tt.periodX=h),jei&&hIL)t/=IL,n=i(10),e.dtick="M"+12*bm(t,n,LL);else if(a>X3)t/=X3,e.dtick="M"+bm(t,1,Sse);else if(a>qv){if(e.dtick=bm(t,qv,e._hasDayOfWeekBreaks?[1,2,7,14]:llt),!r){var o=$n.getTickFormat(e),s=e.ticklabelmode==="period";s&&(e._rawTick0=e.tick0),/%[uVW]/.test(o)?e.tick0=Wo.dateTick0(e.calendar,2):e.tick0=Wo.dateTick0(e.calendar,1),s&&(e._dowTick0=e.tick0)}}else a>wm?e.dtick=bm(t,wm,Sse):a>hM?e.dtick=bm(t,hM,Mse):a>zL?e.dtick=bm(t,zL,Mse):(n=i(10),e.dtick=bm(t,n,LL))}else if(e.type==="log"){e.tick0=0;var l=Wo.simpleMap(e.range,e.r2l);if(e._isMinor&&(t*=1.5),t>.7)e.dtick=Math.ceil(t);else if(Math.abs(l[1]-l[0])<1){var u=1.5*Math.abs((l[1]-l[0])/t);t=Math.abs(Math.pow(10,l[1])-Math.pow(10,l[0]))/u,n=i(10),e.dtick="L"+bm(t,n,LL)}else e.dtick=t>.3?"D2":"D1"}else e.type==="category"||e.type==="multicategory"?(e.tick0=0,e.dtick=Math.ceil(Math.max(t,1))):AB(e)?(e.tick0=0,n=1,e.dtick=bm(t,n,ult)):(e.tick0=0,n=i(10),e.dtick=bm(t,n,LL));if(e.dtick===0&&(e.dtick=1),!zh(e.dtick)&&typeof e.dtick!="string"){var c=e.dtick;throw e.dtick=1,"ax.dtick error: "+String(c)}};function Dse(e){var t=e.dtick;if(e._tickexponent=0,!zh(t)&&typeof t!="string"&&(t=1),(e.type==="category"||e.type==="multicategory")&&(e._tickround=null),e.type==="date"){var r=e.r2l(e.tick0),n=e.l2r(r).replace(/(^-|i)/g,""),i=n.length;if(String(t).charAt(0)==="M")i>10||n.slice(5)!=="01-01"?e._tickround="d":e._tickround=+t.slice(1)%12===0?"y":"m";else if(t>=qv&&i<=10||t>=qv*15)e._tickround="d";else if(t>=hM&&i<=16||t>=wm)e._tickround="M";else if(t>=zL&&i<=19||t>=hM)e._tickround="S";else{var a=e.l2r(r+t).replace(/^-/,"").length;e._tickround=Math.max(i,a)-20,e._tickround<0&&(e._tickround=4)}}else if(zh(t)||t.charAt(0)==="L"){var o=e.range.map(e.r2d||Number);zh(t)||(t=Number(t.slice(1))),e._tickround=2-Math.floor(Math.log(t)/Math.LN10+.01);var s=Math.max(Math.abs(o[0]),Math.abs(o[1])),l=Math.floor(Math.log(s)/Math.LN10+.01),u=e.minexponent===void 0?3:e.minexponent;Math.abs(l)>u&&(Z3(e.exponentformat)&&e.exponentformat!=="SI extended"&&!bB(l)||Z3(e.exponentformat)&&e.exponentformat==="SI extended"&&!wB(l)?e._tickexponent=3*Math.round((l-1)/3):e._tickexponent=l)}else e._tickround=null}$n.tickIncrement=function(e,t,r,n){var i=r?-1:1;if(zh(t))return Wo.increment(e,i*t);var a=t.charAt(0),o=i*Number(t.slice(1));if(a==="M")return Wo.incrementMonth(e,o,n);if(a==="L")return Math.log(Math.pow(10,e)+o)/Math.LN10;if(a==="D"){var s=t==="D2"?Rse:Ise,l=e+i*.01,u=Wo.roundUp(Wo.mod(l,1),s,r);return Math.floor(l)+Math.log(w0.round(Math.pow(10,u),1))/Math.LN10}throw"unrecognized dtick "+String(t)};$n.tickFirst=function(e,t){var r=e.r2l||Number,n=Wo.simpleMap(e.range,r,void 0,void 0,t),i=n[1]=0&&p<=e._length?b:null};if(a&&Wo.isArrayOrTypedArray(e.ticktext)){var f=Wo.simpleMap(e.range,e.r2l),h=(Math.abs(f[1]-f[0])-(e._lBreaks||0))/1e4;for(u=0;u"+s;else{var u=pM(e),c=e._trueSide||e.side;(!u&&c==="top"||u&&c==="bottom")&&(o+="
")}t.text=o}function flt(e,t,r,n,i){var a=e.dtick,o=t.x,s=e.tickformat,l=typeof a=="string"&&a.charAt(0);if(i==="never"&&(i=""),n&&l!=="L"&&(a="L3",l="L"),s||l==="L")t.text=vM(Math.pow(10,o),e,i,n);else if(zh(a)||l==="D"&&(e.minorloglabels==="complete"||Wo.mod(o+.01,1)<.1)){var u;e.minorloglabels==="complete"&&!(Wo.mod(o+.01,1)<.1)&&(u=!0,t.fontSize*=.75);var c=Math.pow(10,o).toExponential(0),f=c.split("e"),h=+f[1],d=Math.abs(h),v=e.exponentformat;v==="power"||Z3(v)&&v!=="SI extended"&&bB(h)||Z3(v)&&v==="SI extended"&&wB(h)?(t.text=f[0],d>0&&(t.text+="x10"),t.text==="1x10"&&(t.text="10"),h!==0&&h!==1&&(t.text+=""+(h>0?"":Bb)+d+""),t.fontSize*=1.25):(v==="e"||v==="E")&&d>2?t.text=f[0]+v+(h>0?"+":Bb)+d:(t.text=vM(Math.pow(10,o),e,"","fakehover"),a==="D1"&&e._id.charAt(0)==="y"&&(t.dy-=t.fontSize/6))}else if(l==="D")t.text=e.minorloglabels==="none"?"":String(Math.round(Math.pow(10,Wo.mod(o,1)))),t.fontSize*=.75;else throw"unrecognized dtick "+String(a);if(e.dtick==="D1"){var m=String(t.text).charAt(0);(m==="0"||m==="1")&&(e._id.charAt(0)==="y"?t.dx-=t.fontSize/4:(t.dy+=t.fontSize/2,t.dx+=(e.range[1]>e.range[0]?1:-1)*t.fontSize*(o<0?.5:.25)))}}function hlt(e,t){var r=e._categories[Math.round(t.x)];r===void 0&&(r=""),t.text=String(r)}function dlt(e,t,r){var n=Math.round(t.x),i=e._categories[n]||[],a=i[1]===void 0?"":String(i[1]),o=i[0]===void 0?"":String(i[0]);r?t.text=o+" - "+a:(t.text=a,t.text2=o)}function vlt(e,t,r,n,i){i==="never"?i="":e.showexponent==="all"&&Math.abs(t.x/e.dtick)<1e-6&&(i="hide"),t.text=vM(t.x,e,i,n)}function plt(e,t,r,n,i){if(e.thetaunit==="radians"&&!r){var a=t.x/180;if(a===0)t.text="0";else{var o=glt(a);if(o[1]>=100)t.text=vM(Wo.deg2rad(t.x),e,i,n);else{var s=t.x<0;o[1]===1?o[0]===1?t.text="\u03C0":t.text=o[0]+"\u03C0":t.text=["",o[0],"","\u2044","",o[1],"","\u03C0"].join(""),s&&(t.text=Bb+t.text)}}}else t.text=vM(t.x,e,i,n)}function glt(e){function t(s,l){return Math.abs(s-l)<=1e-6}function r(s,l){return t(l,0)?s:r(l,s%l)}function n(s){for(var l=1;!t(Math.round(s*l)/l,s);)l*=10;return l}var i=n(e),a=e*i,o=Math.abs(r(a,i));return[Math.round(a/o),Math.round(i/o)]}var zse=["f","p","n","\u03BC","m","","k","M","G","T"],mlt=["q","r","y","z","a",...zse,"P","E","Z","Y","R","Q"],Z3=e=>["SI","SI extended","B"].includes(e);function bB(e){return e>14||e<-15}function wB(e){return e>32||e<-30}function ylt(e,t){return Z3(t)?!!(t==="SI extended"&&wB(e)||t!=="SI extended"&&bB(e)):!1}function vM(e,t,r,n){var i=e<0,a=t._tickround,o=r||t.exponentformat||"B",s=t._tickexponent,l=$n.getTickFormat(t),u=t.separatethousands;if(n){var c={exponentformat:o,minexponent:t.minexponent,dtick:t.showexponent==="none"?t.dtick:zh(e)&&Math.abs(e)||1,range:t.showexponent==="none"?t.range.map(t.r2d):[0,e||1]};Dse(c),a=(Number(c._tickround)||0)+4,s=c._tickexponent,t.hoverformat&&(l=t.hoverformat)}if(l)return t._numFormat(l)(e).replace(/-/g,Bb);var f=Math.pow(10,-a)/2;if(o==="none"&&(s=0),e=Math.abs(e),e"+v+"":o==="B"&&s===9?e+="B":Z3(o)&&(e+=o==="SI extended"?mlt[s/3+10]:zse[s/3+5])}return i?Bb+e:e}$n.getTickFormat=function(e){var t;function r(l){return typeof l!="string"?l:Number(l.replace("M",""))*X3}function n(l,u){var c=["L","D"];if(typeof l==typeof u){if(typeof l=="number")return l-u;var f=c.indexOf(l.charAt(0)),h=c.indexOf(u.charAt(0));return f===h?Number(l.replace(/(L|D)/g,""))-Number(u.replace(/(L|D)/g,"")):f-h}else return typeof l=="number"?1:-1}function i(l,u,c){var f=c||function(v){return v},h=u[0],d=u[1];return(!h&&typeof h!="number"||f(h)<=f(l))&&(!d&&typeof d!="number"||f(d)>=f(l))}function a(l,u){var c=u[0]===null,f=u[1]===null,h=n(l,u[0])>=0,d=n(l,u[1])<=0;return(c||h)&&(f||d)}var o,s;if(e.tickformatstops&&e.tickformatstops.length>0)switch(e.type){case"date":case"linear":{for(t=0;t=0&&i.unshift(i.splice(c,1).shift())}});var s={false:{left:0,right:0}};return Wo.syncOrAsync(i.map(function(l){return function(){if(l){var u=$n.getFromId(e,l);r||(r={}),r.axShifts=s,r.overlayingShiftedAx=o;var c=$n.drawOne(e,u,r);return u._shiftPusher&&_B(u,u._fullDepth||0,s,!0),u._r=u.range.slice(),u._rl=Wo.simpleMap(u._r,u.r2l),c}}}))};$n.drawOne=function(e,t,r){r=r||{};var n=r.axShifts||{},i=r.overlayingShiftedAx||[],a,o,s;t.setScale();var l=e._fullLayout,u=t._id,c=u.charAt(0),f=$n.counterLetter(u),h=l._plots[t._mainSubplot],d=t.zerolinelayer==="above traces";if(!h)return;if(t._shiftPusher=t.autoshift||i.indexOf(t._id)!==-1||i.indexOf(t.overlaying)!==-1,t._shiftPusher&t.anchor==="free"){var v=t.linewidth/2||0;t.ticks==="inside"&&(v+=t.ticklen),_B(t,v,n,!0),_B(t,t.shift||0,n,!1)}(r.skipTitle!==!0||t._shift===void 0)&&(t._shift=Plt(t,n));var m=h[c+"axislayer"],b=t._mainLinePosition,p=b+=t._shift,k=t._mainMirrorPosition,M=t._vals=$n.calcTicks(t),T=[t.mirror,p,k].join("_");for(a=0;a0?tt.bottom-Vt:0,rr))));var rt=0,St=0;if(t._shiftPusher&&(rt=Math.max(rr,tt.height>0?ct==="l"?Vt-tt.left:tt.right-Vt:0),t.title.text!==l._dfltTitle[c]&&(St=(t._titleStandoff||0)+(t._titleScoot||0),ct==="l"&&(St+=kse(t))),t._fullDepth=Math.max(rt,St)),t.automargin){je={x:0,y:0,r:0,l:0,t:0,b:0};var Tt=[0,1],dt=typeof t._shift=="number"?t._shift:0;if(c==="x"){if(ct==="b"?je[ct]=t._depth:(je[ct]=t._depth=Math.max(tt.width>0?Vt-tt.top:0,rr),Tt.reverse()),tt.width>0){var Et=tt.right-(t._offset+t._length);Et>0&&(je.xr=1,je.r=Et);var pt=t._offset-tt.left;pt>0&&(je.xl=0,je.l=pt)}}else if(ct==="l"?(t._depth=Math.max(tt.height>0?Vt-tt.left:0,rr),je[ct]=t._depth-dt):(t._depth=Math.max(tt.height>0?tt.right-Vt:0,rr),je[ct]=t._depth+dt,Tt.reverse()),tt.height>0){var jt=tt.bottom-(t._offset+t._length);jt>0&&(je.yb=0,je.b=jt);var or=t._offset-tt.top;or>0&&(je.yt=1,je.t=or)}je[f]=t.anchor==="free"?t.position:t._anchorAxis.domain[Tt[0]],t.title.text!==l._dfltTitle[c]&&(je[ct]+=kse(t)+(t.title.standoff||0)),t.mirror&&t.anchor!=="free"&&(Ue={x:0,y:0,r:0,l:0,t:0,b:0},Ue[ar]=t.linewidth,t.mirror&&t.mirror!==!0&&(Ue[ar]+=rr),t.mirror===!0||t.mirror==="ticks"?Ue[f]=t._anchorAxis.domain[Tt[1]]:(t.mirror==="all"||t.mirror==="allticks")&&(Ue[f]=[t._counterDomainMin,t._counterDomainMax][Tt[1]]))}at&&(Ae=cM.getComponentMethod("rangeslider","autoMarginOpts")(e,t)),typeof t.automargin=="string"&&(Ese(je,t.automargin),Ese(Ue,t.automargin)),j3.autoMargin(e,TB(t),je),j3.autoMargin(e,Ose(t),Ue),j3.autoMargin(e,Bse(t),Ae)}),Wo.syncOrAsync(mt)}};function Ese(e,t){if(e){var r=Object.keys(xse).reduce(function(n,i){return t.indexOf(i)!==-1&&xse[i].forEach(function(a){n[a]=1}),n},{});Object.keys(e).forEach(function(n){r[n]||(n.length===1?e[n]=0:delete e[n])})}}function _lt(e,t){var r=[],n,i=function(a,o){var s=a.xbnd[o];s!==null&&r.push(Wo.extendFlat({},a,{x:s}))};if(t.length){for(n=0;ne.range[1],s=e.ticklabelposition&&e.ticklabelposition.indexOf("inside")!==-1,l=!s;if(r){var u=o?-1:1;r=r*u}if(n){var c=e.side,f=s&&(c==="top"||c==="left")||l&&(c==="bottom"||c==="right")?1:-1;n=n*f}return e._id.charAt(0)==="x"?function(h){return W3(i+e._offset+e.l2p(mB(h))+r,a+n)}:function(h){return W3(a+n,i+e._offset+e.l2p(mB(h))+r)}};function mB(e){return e.periodX!==void 0?e.periodX:e.x}function Tlt(e){var t=e.ticklabelposition||"",r=e.tickson||"",n=function(v){return t.indexOf(v)!==-1},i=n("top"),a=n("left"),o=n("right"),s=n("bottom"),l=n("inside"),u=r!=="boundaries"&&(s||a||i||o);if(!u&&!l)return[0,0];var c=e.side,f=u?(e.tickwidth||0)/2:0,h=qL,d=e.tickfont?e.tickfont.size:12;return(s||i)&&(f+=d*Nb,h+=(e.linewidth||0)/2),(a||o)&&(f+=(e.linewidth||0)/2,h+=qL),l&&c==="top"&&(h-=d*(1-Nb)),(a||i)&&(f=-f),(c==="bottom"||c==="right")&&(h=-h),[u?f:0,l?h:0]}$n.makeTickPath=function(e,t,r,n){n||(n={});var i=n.minor;if(i&&!e.minor)return"";var a=n.len!==void 0?n.len:i?e.minor.ticklen:e.ticklen,o=e._id.charAt(0),s=(e.linewidth||1)/2;return o==="x"?"M0,"+(t+s*r)+"v"+a*r:"M"+(t+s*r)+",0h"+a*r};$n.makeLabelFns=function(e,t,r){var n=e.ticklabelposition||"",i=e.tickson||"",a=function(q){return n.indexOf(q)!==-1},o=a("top"),s=a("left"),l=a("right"),u=a("bottom"),c=i!=="boundaries"&&(u||s||o||l),f=a("inside"),h=n==="inside"&&e.ticks==="inside"||!f&&e.ticks==="outside"&&i!=="boundaries",d=0,v=0,m=h?e.ticklen:0;if(f?m*=-1:c&&(m=0),h&&(d+=m,r)){var b=Wo.deg2rad(r);d=m*Math.cos(b)+1,v=m*Math.sin(b)}e.showticklabels&&(h||e.showline)&&(d+=.2*e.tickfont.size),d+=(e.linewidth||1)/2*(f?-1:1);var p={labelStandoff:d,labelShift:v},k,M,T,L,x=0,C=e.side,S=e._id.charAt(0),g=e.tickangle,P;if(S==="x")P=!f&&C==="bottom"||f&&C==="top",L=P?1:-1,f&&(L*=-1),k=v*L,M=t+d*L,T=P?1:-.2,Math.abs(g)===90&&(f?T+=uM:g===-90&&C==="bottom"?T=Nb:g===90&&C==="top"?T=uM:T=.5,x=uM/2*(g/90)),p.xFn=function(q){return q.dx+k+x*q.fontSize},p.yFn=function(q){return q.dy+M+q.fontSize*T},p.anchorFn=function(q,V){if(c){if(s)return"end";if(l)return"start"}return!zh(V)||V===0||V===180?"middle":V*L<0!==f?"end":"start"},p.heightFn=function(q,V,G){return V<-60||V>60?-.5*G:e.side==="top"!==f?-G:0};else if(S==="y"){if(P=!f&&C==="left"||f&&C==="right",L=P?1:-1,f&&(L*=-1),k=d,M=v*L,T=0,!f&&Math.abs(g)===90&&(g===-90&&C==="left"||g===90&&C==="right"?T=Nb:T=.5),f){var E=zh(g)?+g:0;if(E!==0){var z=Wo.deg2rad(E);x=Math.abs(Math.sin(z))*Nb*L,T=0}}p.xFn=function(q){return q.dx+t-(k+q.fontSize*T)*L+x*q.fontSize},p.yFn=function(q){return q.dy+M+q.fontSize*uM},p.anchorFn=function(q,V){return zh(V)&&Math.abs(V)===90?"middle":P?"end":"start"},p.heightFn=function(q,V,G){return e.side==="right"&&(V*=-1),V<-30?-G:V<30?-.5*G:0}}return p};function NL(e){return[e.text,e.x,e.axInfo,e.font,e.fontSize,e.fontColor].join("_")}$n.drawTicks=function(e,t,r){r=r||{};var n=t._id+"tick",i=[].concat(t.minor&&t.minor.ticks?r.vals.filter(function(o){return o.minor&&!o.noTick}):[]).concat(t.ticks?r.vals.filter(function(o){return!o.minor&&!o.noTick}):[]),a=r.layer.selectAll("path."+n).data(i,NL);a.exit().remove(),a.enter().append("path").classed(n,1).classed("ticks",1).classed("crisp",r.crisp!==!1).each(function(o){return fM.stroke(w0.select(this),o.minor?t.minor.tickcolor:t.tickcolor)}).style("stroke-width",function(o){return Xp.crispRound(e,o.minor?t.minor.tickwidth:t.tickwidth,1)+"px"}).attr("d",r.path).style("display",null),UL(t,[Cse]),a.attr("transform",r.transFn)};$n.drawGrid=function(e,t,r){if(r=r||{},t.tickmode!=="sync"){var n=t._id+"grid",i=t.minor&&t.minor.showgrid,a=i?r.vals.filter(function(p){return p.minor}):[],o=t.showgrid?r.vals.filter(function(p){return!p.minor}):[],s=r.counterAxis;if(s&&$n.shouldShowZeroLine(e,t,s))for(var l=t.tickmode==="array",u=0;u=0;v--){var m=v?h:d;if(m){var b=m.selectAll("path."+n).data(v?o:a,NL);b.exit().remove(),b.enter().append("path").classed(n,1).classed("crisp",r.crisp!==!1),b.attr("transform",r.transFn).attr("d",r.path).each(function(p){return fM.stroke(w0.select(this),p.minor?t.minor.gridcolor:t.gridcolor||"#ddd")}).style("stroke-dasharray",function(p){return Xp.dashStyle(p.minor?t.minor.griddash:t.griddash,p.minor?t.minor.gridwidth:t.gridwidth)}).style("stroke-width",function(p){return(p.minor?f:t._gw)+"px"}).style("display",null),typeof r.path=="function"&&b.attr("d",r.path)}}UL(t,[pB,gB])}};$n.drawZeroLine=function(e,t,r){r=r||r;var n=t._id+"zl",i=$n.shouldShowZeroLine(e,t,r.counterAxis),a=r.layer.selectAll("path."+n).data(i?[{x:0,id:t._id}]:[]);a.exit().remove(),a.enter().append("path").classed(n,1).classed("zl",1).classed("crisp",r.crisp!==!1).each(function(){r.layer.selectAll("path").sort(function(o,s){return Qst(o.id,s.id)})}),a.attr("transform",r.transFn).attr("d",r.path).call(fM.stroke,t.zerolinecolor||fM.defaultLine).style("stroke-width",Xp.crispRound(e,t.zerolinewidth,t._gw||1)+"px").style("display",null),UL(t,[vB])};$n.drawLabels=function(e,t,r){r=r||{};var n=e._fullLayout,i=t._id,a=t.zerolinelayer==="above traces",o=r.cls||i+"tick",s=r.vals.filter(function(H){return H.text}),l=r.labelFns,u=r.secondary?0:t.tickangle,c=(t._prevTickAngles||{})[o],f=r.layer.selectAll("g."+o).data(t.showticklabels?s:[],NL),h=[];f.enter().append("g").classed(o,1).append("text").attr("text-anchor","middle").each(function(H){var ie=w0.select(this),ae=e._promises.length;ie.call(Ob.positionText,l.xFn(H),l.yFn(H)).call(Xp.font,{family:H.font,size:H.fontSize,color:H.fontColor,weight:H.fontWeight,style:H.fontStyle,variant:H.fontVariant,textcase:H.fontTextcase,lineposition:H.fontLineposition,shadow:H.fontShadow}).text(H.text).call(Ob.convertToTspans,e),e._promises[ae]?h.push(e._promises.pop().then(function(){d(ie,u)})):d(ie,u)}),UL(t,[_se]),f.exit().remove(),r.repositionOnUpdate&&f.each(function(H){w0.select(this).select("text").call(Ob.positionText,l.xFn(H),l.yFn(H))});function d(H,ie){H.each(function(ae){var _e=w0.select(this),Ee=_e.select(".text-math-group"),Ce=l.anchorFn(ae,ie),ge=r.transFn.call(_e.node(),ae)+(zh(ie)&&+ie!=0?" rotate("+ie+","+l.xFn(ae)+","+(l.yFn(ae)-ae.fontSize/2)+")":""),re=Ob.lineCount(_e),Se=dM*ae.fontSize,ke=l.heightFn(ae,zh(ie)?+ie:0,(re-1)*Se);if(ke&&(ge+=W3(0,ke)),Ee.empty()){var be=_e.select("text");be.attr({transform:ge,"text-anchor":Ce}),be.style("display",null),t._adjustTickLabelsOverflow&&t._adjustTickLabelsOverflow()}else{var Be=Xp.bBox(Ee.node()).width,Le=Be*{end:-.5,start:.5}[Ce];Ee.attr("transform",ge+W3(Le,0))}})}t._adjustTickLabelsOverflow=function(){var H=t.ticklabeloverflow;if(!(!H||H==="allow")){var ie=H.indexOf("hide")!==-1,ae=t._id.charAt(0)==="x",_e=0,Ee=ae?e._fullLayout.width:e._fullLayout.height;if(H.indexOf("domain")!==-1){var Ce=Wo.simpleMap(t.range,t.r2l);_e=t.l2p(Ce[0])+t._offset,Ee=t.l2p(Ce[1])+t._offset}var ge=Math.min(_e,Ee),re=Math.max(_e,Ee),Se=t.side,ke=1/0,be=-1/0;f.each(function(Pe){var ce=w0.select(this),He=ce.select(".text-math-group");if(He.empty()){var lt=Xp.bBox(ce.node()),mt=0;ae?(lt.right>re||lt.leftre||lt.top+(t.tickangle?0:Pe.fontSize/4)t["_visibleLabelMin_"+Ce._id]?ce.style("display","none"):re.K==="tick"&&!ge&&ce.node().style.display!=="none"&&ce.style("display",null)})})})})},d(f,c+1?c:u);function v(){return h.length&&Promise.all(h)}var m=null;function b(){if(d(f,u),s.length&&t.autotickangles&&(t.type!=="log"||String(t.dtick).charAt(0)!=="D")){m=t.autotickangles[0];var H=0,ie=[],ae,_e=1;f.each(function(je){H=Math.max(H,je.fontSize);var Ue=t.l2p(je.x),Ae=yB(this),rt=Xp.bBox(Ae.node());_e=Math.max(_e,Ob.lineCount(Ae)),ie.push({top:0,bottom:10,height:10,left:Ue-rt.width/2,right:Ue+rt.width/2+2,width:rt.width+2})});var Ee=(t.tickson==="boundaries"||t.showdividers)&&!r.secondary,Ce=s.length,ge=Math.abs((s[Ce-1].x-s[0].x)*t._m)/(Ce-1),re=Ee?ge/2:ge,Se=Ee?t.ticklen:H*1.25*_e,ke=Math.sqrt(Math.pow(re,2)+Math.pow(Se,2)),be=re/ke,Be=t.autotickangles.map(function(je){return je*Math.PI/180}),Le=Be.find(function(je){return Math.abs(Math.cos(je))<=be});Le===void 0&&(Le=Be.reduce(function(je,Ue){return Math.abs(Math.cos(je))Z*G&&(z=G,g[S]=P[S]=q[S])}var j=Math.abs(z-E);j-L>0?(j-=L,L*=1+L/j):L=0,t._id.charAt(0)!=="y"&&(L=-L),g[C]=M.p2r(M.r2p(P[C])+x*L),M.autorange==="min"||M.autorange==="max reversed"?(g[0]=null,M._rangeInitial0=void 0,M._rangeInitial1=void 0):(M.autorange==="max"||M.autorange==="min reversed")&&(g[1]=null,M._rangeInitial0=void 0,M._rangeInitial1=void 0),n._insideTickLabelsUpdaterange[M._name+".range"]=g}var N=Wo.syncOrAsync(p);return N&&N.then&&e._promises.push(N),N};function Alt(e,t,r){var n=t._id+"divider",i=r.vals,a=r.layer.selectAll("path."+n).data(i,NL);a.exit().remove(),a.enter().insert("path",":first-child").classed(n,1).classed("crisp",1).call(fM.stroke,t.dividercolor).style("stroke-width",Xp.crispRound(e,t.dividerwidth,1)+"px"),a.attr("transform",r.transFn).attr("d",r.path)}$n.getPxPosition=function(e,t){var r=e._fullLayout._size,n=t._id.charAt(0),i=t.side,a;if(t.anchor!=="free"?a=t._anchorAxis:n==="x"?a={_offset:r.t+(1-(t.position||0))*r.h,_length:0}:n==="y"&&(a={_offset:r.l+(t.position||0)*r.w+t._shift,_length:0}),i==="top"||i==="left")return a._offset;if(i==="bottom"||i==="right")return a._offset+a._length};function kse(e){var t=e.title.font.size,r=(e.title.text.match(Ob.BR_TAG_ALL)||[]).length;return e.title.hasOwnProperty("standoff")?t*(Nb+r*dM):r?t*(r+1)*dM:t}function Slt(e,t){var r=e._fullLayout,n=t._id,i=n.charAt(0),a=t.title.font.size,o,s=(t.title.text.match(Ob.BR_TAG_ALL)||[]).length;if(t.title.hasOwnProperty("standoff"))t.side==="bottom"||t.side==="right"?o=t._depth+t.title.standoff+a*Nb:(t.side==="top"||t.side==="left")&&(o=t._depth+t.title.standoff+a*(uM+s*dM));else{var l=pM(t);if(t.type==="multicategory")o=t._depth;else{var u=1.5*a;l&&(u=.5*a,t.ticks==="outside"&&(u+=t.ticklen)),o=10+u+(t.linewidth?t.linewidth-1:0)}l||(i==="x"?o+=t.side==="top"?a*(t.showticklabels?1:0):a*(t.showticklabels?1.5:.5):o+=t.side==="right"?a*(t.showticklabels?1:.5):a*(t.showticklabels?.5:0))}var c=$n.getPxPosition(e,t),f,h,d;i==="x"?(h=t._offset+t._length/2,d=t.side==="top"?c-o:c+o):(d=t._offset+t._length/2,h=t.side==="right"?c+o:c-o,f={rotate:"-90",offset:0});var v;if(t.type!=="multicategory"){var m=t._selections[t._id+"tick"];if(v={selection:m,side:t.side},m&&m.node()&&m.node().parentNode){var b=Xp.getTranslate(m.node().parentNode);v.offsetLeft=b.x,v.offsetTop=b.y}t.title.hasOwnProperty("standoff")&&(v.pad=0)}return t._titleStandoff=o,Hst.draw(e,n+"title",{propContainer:t,propName:t._name+".title.text",placeholder:r._dfltTitle[i],avoid:v,transform:f,attributes:{x:h,y:d,"text-anchor":"middle"}})}$n.shouldShowZeroLine=function(e,t,r){var n=Wo.simpleMap(t.range,t.r2l);return n[0]*n[1]<=0&&t.zeroline&&(t.type==="linear"||t.type==="-")&&!(t.rangebreaks&&t.maskBreaks(0)===OL)&&(qse(t,0)||!Mlt(e,t,r,n)||Elt(e,t))};$n.clipEnds=function(e,t){return t.filter(function(r){return qse(e,r.x)})};function qse(e,t){var r=e.l2p(t);return r>1&&r1)for(i=1;i=i.min&&e=Kst:/%L/.test(t)?e>=Yst:/%[SX]/.test(t)?e>=zL:/%M/.test(t)?e>=hM:/%[HI]/.test(t)?e>=wm:/%p/.test(t)?e>=v_:/%[Aadejuwx]/.test(t)?e>=qv:/%[UVW]/.test(t)?e>=Zp:/%[Bbm]/.test(t)?e>=FL:/%[q]/.test(t)?e>=DL:/%[Yy]/.test(t)?e>=RL:!0}});var SB=ye((par,Use)=>{"use strict";Use.exports=function(t,r,n){var i,a;if(n){var o=r==="reversed"||r==="min reversed"||r==="max reversed";i=n[o?1:0],a=n[o?0:1]}var s=t("autorangeoptions.minallowed",a===null?i:void 0),l=t("autorangeoptions.maxallowed",i===null?a:void 0);s===void 0&&t("autorangeoptions.clipmin"),l===void 0&&t("autorangeoptions.clipmax"),t("autorangeoptions.include")}});var MB=ye((gar,Vse)=>{"use strict";var Rlt=SB();Vse.exports=function(t,r,n,i){var a=r._template||{},o=r.type||a.type||"-";n("minallowed"),n("maxallowed");var s=n("range");if(!s){var l;!i.noInsiderange&&o!=="log"&&(l=n("insiderange"),l&&(l[0]===null||l[1]===null)&&(r.insiderange=!1,l=void 0),l&&(s=n("range",l)))}var u=r.getAutorangeDflt(s,i),c=n("autorange",u),f;s&&(s[0]===null&&s[1]===null||(s[0]===null||s[1]===null)&&(c==="reversed"||c===!0)||s[0]!==null&&(c==="min"||c==="max reversed")||s[1]!==null&&(c==="max"||c==="min reversed"))&&(s=void 0,delete r.range,r.autorange=!0,f=!0),f||(u=r.getAutorangeDflt(s,i),c=n("autorange",u)),c&&(Rlt(n,c,s),(o==="linear"||o==="-")&&n("rangemode")),r.cleanRange()}});var Hse=ye((mar,Gse)=>{var Dlt={left:0,top:0};Gse.exports=Flt;function Flt(e,t,r){t=t||e.currentTarget||e.srcElement,Array.isArray(r)||(r=[0,0]);var n=e.clientX||0,i=e.clientY||0,a=zlt(t);return r[0]=n-a.left,r[1]=i-a.top,r}function zlt(e){return e===window||e===document||e===document.body?Dlt:e.getBoundingClientRect()}});var VL=ye((yar,jse)=>{"use strict";var qlt=lO();function Olt(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(r){e=!1}return e}jse.exports=qlt&&Olt()});var Xse=ye((_ar,Wse)=>{"use strict";Wse.exports=function(t,r,n,i,a){var o=(t-n)/(i-n),s=o+r/(i-n),l=(o+s)/2;return a==="left"||a==="bottom"?o:a==="center"||a==="middle"?l:a==="right"||a==="top"?s:o<2/3-l?o:s>4/3-l?s:l}});var Kse=ye((xar,Yse)=>{"use strict";var Zse=Pr(),Blt=[["sw-resize","s-resize","se-resize"],["w-resize","move","e-resize"],["nw-resize","n-resize","ne-resize"]];Yse.exports=function(t,r,n,i){return n==="left"?t=0:n==="center"?t=1:n==="right"?t=2:t=Zse.constrain(Math.floor(t*3),0,2),i==="bottom"?r=0:i==="middle"?r=1:i==="top"?r=2:r=Zse.constrain(Math.floor(r*3),0,2),Blt[r][t]}});var $se=ye((bar,Jse)=>{"use strict";var Nlt=L3(),Ult=j6(),Vlt=jS().getGraphDiv,Glt=US(),EB=Jse.exports={};EB.wrapped=function(e,t,r){e=Vlt(e),e._fullLayout&&Ult.clear(e._fullLayout._uid+Glt.HOVERID),EB.raw(e,t,r)};EB.raw=function(t,r){var n=t._fullLayout,i=t._hoverdata;r||(r={}),!(r.target&&!t._dragged&&Nlt.triggerHandler(t,"plotly_beforehover",r)===!1)&&(n._hoverlayer.selectAll("g").remove(),n._hoverlayer.selectAll("line").remove(),n._hoverlayer.selectAll("circle").remove(),t._hoverdata=void 0,r.target&&i&&t.emit("plotly_unhover",{event:r,points:i}))}});var yv=ye((war,rle)=>{"use strict";var Hlt=Hse(),kB=cO(),jlt=VL(),Wlt=Pr().removeElement,Xlt=Rh(),Ub=rle.exports={};Ub.align=Xse();Ub.getCursor=Kse();var ele=$se();Ub.unhover=ele.wrapped;Ub.unhoverRaw=ele.raw;Ub.init=function(t){var r=t.gd,n=1,i=r._context.doubleClickDelay,a=t.element,o,s,l,u,c,f,h,d;r._mouseDownTime||(r._mouseDownTime=0),a.style.pointerEvents="all",a.onmousedown=b,jlt?(a._ontouchstart&&a.removeEventListener("touchstart",a._ontouchstart),a._ontouchstart=b,a.addEventListener("touchstart",b,{passive:!1})):a.ontouchstart=b;function v(M,T,L){return Math.abs(M)i&&(n=Math.max(n-1,1)),r._dragged)t.doneFn&&t.doneFn();else{var T;f.target===h?T=f:(T={target:h,srcElement:h,toElement:h},Object.keys(f).concat(Object.keys(f.__proto__)).forEach(L=>{var x=f[L];!T[L]&&typeof x!="function"&&(T[L]=x)})),t.clickFn&&t.clickFn(n,T),d||h.dispatchEvent(new MouseEvent("click",M))}r._dragging=!1,r._dragged=!1}};function tle(){var e=document.createElement("div");e.className="dragcover";var t=e.style;return t.position="fixed",t.left=0,t.right=0,t.top=0,t.bottom=0,t.zIndex=999999999,t.background="none",document.body.appendChild(e),e}Ub.coverSlip=tle;function Qse(e){return Hlt(e.changedTouches?e.changedTouches[0]:e,document.body)}});var Eg=ye((Tar,ile)=>{"use strict";ile.exports=function(t,r){(t.attr("class")||"").split(" ").forEach(function(n){n.indexOf("cursor-")===0&&t.classed(n,!1)}),r&&t.classed("cursor-"+r,!0)}});var ole=ye((Aar,ale)=>{"use strict";var CB=Eg(),gM="data-savedcursor",nle="!!";ale.exports=function(t,r){var n=t.attr(gM);if(r){if(!n){for(var i=(t.attr("class")||"").split(" "),a=0;a{"use strict";var LB=ec(),Zlt=Ih();sle.exports={_isSubplotObj:!0,visible:{valType:"boolean",dflt:!0,editType:"legend"},bgcolor:{valType:"color",editType:"legend"},bordercolor:{valType:"color",dflt:Zlt.defaultLine,editType:"legend"},maxheight:{valType:"number",min:0,editType:"legend"},borderwidth:{valType:"number",min:0,dflt:0,editType:"legend"},font:LB({editType:"legend"}),grouptitlefont:LB({editType:"legend"}),orientation:{valType:"enumerated",values:["v","h"],dflt:"v",editType:"legend"},traceorder:{valType:"flaglist",flags:["reversed","grouped"],extras:["normal"],editType:"legend"},tracegroupgap:{valType:"number",min:0,dflt:10,editType:"legend"},entrywidth:{valType:"number",min:0,editType:"legend"},entrywidthmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"pixels",editType:"legend"},indentation:{valType:"number",min:-15,dflt:0,editType:"legend"},itemsizing:{valType:"enumerated",values:["trace","constant"],dflt:"trace",editType:"legend"},itemwidth:{valType:"number",min:30,dflt:30,editType:"legend"},itemclick:{valType:"enumerated",values:["toggle","toggleothers",!1],dflt:"toggle",editType:"legend"},itemdoubleclick:{valType:"enumerated",values:["toggle","toggleothers",!1],dflt:"toggleothers",editType:"legend"},groupclick:{valType:"enumerated",values:["toggleitem","togglegroup"],dflt:"togglegroup",editType:"legend"},titleclick:{valType:"enumerated",values:["toggle","toggleothers",!1],editType:"legend"},titledoubleclick:{valType:"enumerated",values:["toggle","toggleothers",!1],editType:"legend"},x:{valType:"number",editType:"legend"},xref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left",editType:"legend"},y:{valType:"number",editType:"legend"},yref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],editType:"legend"},uirevision:{valType:"any",editType:"none"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"legend"},title:{text:{valType:"string",dflt:"",editType:"legend"},font:LB({editType:"legend"}),side:{valType:"enumerated",values:["top","left","top left","top center","top right"],editType:"legend"},editType:"legend"},editType:"legend"}});var yM=ye(mM=>{"use strict";mM.isGrouped=function(t){return(t.traceorder||"").indexOf("grouped")!==-1};mM.isVertical=function(t){return t.orientation!=="h"};mM.isReversed=function(t){return(t.traceorder||"").indexOf("reversed")!==-1};mM.getId=function(t){return t._id||"legend"}});var RB=ye((Ear,lle)=>{"use strict";var GL=Oa(),Yp=Pr(),Ylt=vl(),Klt=Gl(),Jlt=PB(),$lt=b3(),IB=yM();function Qlt(e,t,r,n,i){var a=t[e]||{},o=Ylt.newContainer(r,e);function s(H,ie){return Yp.coerce(a,o,Jlt,H,ie)}var l=Yp.coerceFont(s,"font",r.font);s("bgcolor",r.paper_bgcolor),s("bordercolor");var u=s("visible");if(!u)return;var c,f=function(H,ie){var ae=c._input,_e=c;return Yp.coerce(ae,_e,Klt,H,ie)},h=r.font||{},d=Yp.coerceFont(s,"grouptitlefont",h,{overrideDflt:{size:Math.round(h.size*1.1)}}),v=0,m=!1,b="normal",p=(r.shapes||[]).filter(function(H){return H.showlegend});function k(H){return GL.traceIs(H,"pie-like")&&H._length!=null&&(Array.isArray(H.legend)||Array.isArray(H.showlegend))}n.filter(k).forEach(function(H){H.visible&&v++;for(var ie=0;ieH.legend.length)for(var _e=H.legend.length;_e(e==="legend"?1:0));if(x===!1&&(r[e]=void 0),!(x===!1&&!a.uirevision)&&(s("uirevision",r.uirevision),x!==!1)){s("borderwidth");var C=s("orientation"),S=s("yref"),g=s("xref"),P=C==="h",E=S==="paper",z=g==="paper",q,V,G,Z="left";P?(q=0,GL.getComponentMethod("rangeslider","isVisible")(t.xaxis)?E?(V=1.1,G="bottom"):(V=1,G="top"):E?(V=-.1,G="top"):(V=0,G="bottom")):(V=1,G="auto",z?q=1.02:(q=1,Z="right")),Yp.coerce(a,o,{x:{valType:"number",editType:"legend",min:z?-2:0,max:z?3:1,dflt:q}},"x"),Yp.coerce(a,o,{y:{valType:"number",editType:"legend",min:E?-2:0,max:E?3:1,dflt:V}},"y"),s("traceorder",b),IB.isGrouped(r[e])&&s("tracegroupgap"),s("entrywidth"),s("entrywidthmode"),s("indentation"),s("itemsizing"),s("itemwidth"),s("itemclick"),s("itemdoubleclick"),s("groupclick"),s("xanchor",Z),s("yanchor",G),s("maxheight"),s("valign"),Yp.noneOrAll(a,o,["x","y"]);var j=s("title.text");if(j){s("title.side",P?"left":"top");var N=Yp.extendFlat({},l,{size:Yp.bigFont(l.size)});Yp.coerceFont(s,"title.font",N);let H=i>1;s("titleclick",H?"toggle":!1),s("titledoubleclick",H?"toggleothers":!1)}}}lle.exports=function(t,r,n){var i,a=n.slice(),o=r.shapes;if(o)for(i=0;i{"use strict";var p_=Oa(),DB=Pr(),eut=DB.pushUnique,tut=yM(),ule=!0;FB.handleItemClick=function(t,r,n,i){var a=r._fullLayout;if(r._dragged||r._editing)return;var o=t.data()[0][0];if(o.groupTitle&&o.noClick)return;var s=n.groupclick;i==="toggle"&&n.itemdoubleclick==="toggleothers"&&ule&&r.data&&r._context.showTips&&(DB.notifier(DB._(r,"Double-click on legend to isolate one trace"),"long",r),ule=!1);var l=s==="togglegroup",u=a.hiddenlabels?a.hiddenlabels.slice():[],c=r._fullData;let f=(a.shapes||[]).filter(at=>at.showlegend||at.legendgroup);var h=c.concat(f),d=o.trace;d._isShape&&(d=d._fullInput);var v=d.legendgroup,m,b,p,k,M,T,L={},x=[],C=[],S=[];function g(at,ct){var ar=x.indexOf(at),Vt=L.visible;return Vt||(Vt=L.visible=[]),x.indexOf(at)===-1&&(x.push(at),ar=x.length-1),Vt[ar]=ct,ar}var P=(a.shapes||[]).map(function(at){return at._input}),E=!1;function z(at,ct){P[at].visible=ct,E=!0}function q(at,ct){if(!(o.groupTitle&&!l)){var ar=at._fullInput||at,Vt=ar._isShape,rr=ar.index;rr===void 0&&(rr=ar._index);var tt=ar.visible===!1?!1:ct;Vt?z(rr,tt):g(rr,tt)}}var V=d.legend,G=d._fullInput,Z=G&&G._isShape;if(!Z&&p_.traceIs(d,"pie-like")){var j=o.label,N=u.indexOf(j);if(i==="toggle")N===-1?u.push(j):u.splice(N,1);else if(i==="toggleothers"){var H=N!==-1,ie=[];for(m=0;mp.showlegend||p.legendgroup),l=a.concat(s);function u(p){return(p.legend||"legend")===o}var c,f;if(n==="toggle")c=!l.some(function(k){return u(k)&&k.visible===!0}),f=!1;else{let p=l.some(function(k){return!u(k)&&k.visible===!0&&k.showlegend!==!1});c=!0,f=!p}let h={visible:[]},d=[],v=(i.shapes||[]).map(function(p){return p._input});for(var m=!1,b=0;b{"use strict";cle.exports={scrollBarWidth:6,scrollBarMinHeight:20,scrollBarColor:"#808BA4",scrollBarMargin:4,scrollBarEnterAttrs:{rx:20,ry:3,width:0,height:0},titlePad:2,itemGap:5}});var dle=ye((Lar,hle)=>{"use strict";var{isArrayOrTypedArray:OB}=Yd(),fle=Oa(),BB=yM();hle.exports=function(t,r,n){var i=r._inHover,a=BB.isGrouped(r),o=BB.isReversed(r),s={},l=[],u=!1,c={},f=0,h=0,d,v;function m(ie,ae,_e){if(r.visible!==!1&&!(n&&ie!==r._id))if(ae===""||!BB.isGrouped(r)){var Ee="~~i"+f;l.push(Ee),s[Ee]=[_e],f++}else l.indexOf(ae)===-1?(l.push(ae),u=!0,s[ae]=[_e]):s[ae].push(_e)}for(d=0;dq&&(E=q)}g[d][0]._groupMinRank=E,g[d][0]._preGroupSort=d}var V=function(ie,ae){return ie[0]._groupMinRank-ae[0]._groupMinRank||ie[0]._preGroupSort-ae[0]._preGroupSort},G=function(ie,ae){var _e=OB(ie.trace.legendrank)?ie.trace.legendrank[ie.i]:ie.trace.legendrank,Ee=OB(ae.trace.legendrank)?ae.trace.legendrank[ae.i]:ae.trace.legendrank;return _e-Ee||ie._preSort-ae._preSort};for(g.forEach(function(ie,ae){ie[0]._preGroupSort=ae}),g.sort(V),d=0;d{"use strict";var HL=Pr();function vle(e){return e.indexOf("e")!==-1?e.replace(/[.]?0+e/,"e"):e.indexOf(".")!==-1?e.replace(/[.]?0+$/,""):e}Vb.formatPiePercent=function(t,r){var n=vle((t*100).toPrecision(3));return HL.numSeparate(n,r)+"%"};Vb.formatPieValue=function(t,r){var n=vle(t.toPrecision(10));return HL.numSeparate(n,r)};Vb.getFirstFilled=function(t,r){if(HL.isArrayOrTypedArray(t))for(var n=0;n{"use strict";var rut=So(),iut=ka();ple.exports=function(t,r,n,i){var a=n.marker.pattern;a&&a.shape?rut.pointStyle(t,n,i,r):iut.fill(t,r.color)}});var Y3=ye((Rar,_le)=>{"use strict";var mle=ka(),yle=g_().castOption,nut=gle();_le.exports=function(t,r,n,i){var a=n.marker.line,o=yle(a.color,r.pts)||mle.defaultLine,s=yle(a.width,r.pts)||0;t.call(nut,r,n,i).style("stroke-width",s).call(mle.stroke,o)}});var GB=ye((Dar,Sle)=>{"use strict";var Ov=qa(),NB=Oa(),_v=Pr(),xle=_v.strTranslate,Kp=So(),T0=ka(),UB=pv().extractOpts,jL=Ru(),aut=Y3(),out=g_().castOption,sut=qB(),ble=12,wle=5,Gb=2,lut=10,K3=5;Sle.exports=function(t,r,n){var i=r._fullLayout;n||(n=i.legend);var a=n.itemsizing==="constant",o=n.itemwidth,s=(o+sut.itemGap*2)/2,l=xle(s,0),u=function(C,S,g,P){var E;if(C+1)E=C;else if(S&&S.width>0)E=S.width;else return 0;return a?P:Math.min(E,g)};t.each(function(C){var S=Ov.select(this),g=_v.ensureSingle(S,"g","layers");g.style("opacity",C[0].trace.opacity);var P=n.indentation,E=n.valign,z=C[0].lineHeight,q=C[0].height;if(E==="middle"&&P===0||!z||!q)g.attr("transform",null);else{var V={top:1,bottom:-1}[E],G=V*(.5*(z-q+3))||0,Z=n.indentation;g.attr("transform",xle(Z,G))}var j=g.selectAll("g.legendfill").data([C]);j.enter().append("g").classed("legendfill",!0);var N=g.selectAll("g.legendlines").data([C]);N.enter().append("g").classed("legendlines",!0);var H=g.selectAll("g.legendsymbols").data([C]);H.enter().append("g").classed("legendsymbols",!0),H.selectAll("g.legendpoints").data([C]).enter().append("g").classed("legendpoints",!0)}).each(x).each(h).each(v).each(d).each(b).each(T).each(M).each(c).each(f).each(p).each(k);function c(C){var S=Tle(C),g=S.showFill,P=S.showLine,E=S.showGradientLine,z=S.showGradientFill,q=S.anyFill,V=S.anyLine,G=C[0],Z=G.trace,j,N,H=UB(Z),ie=H.colorscale,ae=H.reversescale,_e=function(be){if(be.size())if(g)Kp.fillGroupStyle(be,r,!0);else{var Be="legendfill-"+Z.uid;Kp.gradient(be,r,Be,VB(ae),ie,"fill")}},Ee=function(be){if(be.size()){var Be="legendline-"+Z.uid;Kp.lineGroupStyle(be),Kp.gradient(be,r,Be,VB(ae),ie,"stroke")}},Ce=jL.hasMarkers(Z)||!q?"M5,0":V?"M5,-2":"M5,-3",ge=Ov.select(this),re=ge.select(".legendfill").selectAll("path").data(g||z?[C]:[]);if(re.enter().append("path").classed("js-fill",!0),re.exit().remove(),re.attr("d",Ce+"h"+o+"v6h-"+o+"z").call(_e),P||E){var Se=u(void 0,Z.line,lut,wle);N=_v.minExtend(Z,{line:{width:Se}}),j=[_v.minExtend(G,{trace:N})]}var ke=ge.select(".legendlines").selectAll("path").data(P||E?[j]:[]);ke.enter().append("path").classed("js-line",!0),ke.exit().remove(),ke.attr("d",Ce+(E?"l"+o+",0.0001":"h"+o)).call(P?Kp.lineGroupStyle:Ee)}function f(C){var S=Tle(C),g=S.anyFill,P=S.anyLine,E=S.showLine,z=S.showMarker,q=C[0],V=q.trace,G=!z&&!P&&!g&&jL.hasText(V),Z,j;function N(re,Se,ke,be){var Be=_v.nestedProperty(V,re).get(),Le=_v.isArrayOrTypedArray(Be)&&Se?Se(Be):Be;if(a&&Le&&be!==void 0&&(Le=be),ke){if(Leke[1])return ke[1]}return Le}function H(re){return q._distinct&&q.index&&re[q.index]?re[q.index]:re[0]}if(z||G||E){var ie={},ae={};if(z){ie.mc=N("marker.color",H),ie.mx=N("marker.symbol",H),ie.mo=N("marker.opacity",_v.mean,[.2,1]),ie.mlc=N("marker.line.color",H),ie.mlw=N("marker.line.width",_v.mean,[0,5],Gb),ie.mld=V._isShape?"solid":N("marker.line.dash",H),ae.marker={sizeref:1,sizemin:1,sizemode:"diameter"};var _e=N("marker.size",_v.mean,[2,16],ble);ie.ms=_e,ae.marker.size=_e}E&&(ae.line={width:N("line.width",H,[0,10],wle)}),G&&(ie.tx="Aa",ie.tp=N("textposition",H),ie.ts=10,ie.tc=N("textfont.color",H),ie.tf=N("textfont.family",H),ie.tw=N("textfont.weight",H),ie.ty=N("textfont.style",H),ie.tv=N("textfont.variant",H),ie.tC=N("textfont.textcase",H),ie.tE=N("textfont.lineposition",H),ie.tS=N("textfont.shadow",H)),Z=[_v.minExtend(q,ie)],j=_v.minExtend(V,ae),j.selectedpoints=null,j.texttemplate=null}var Ee=Ov.select(this).select("g.legendpoints"),Ce=Ee.selectAll("path.scatterpts").data(z?Z:[]);Ce.enter().insert("path",":first-child").classed("scatterpts",!0).attr("transform",l),Ce.exit().remove(),Ce.call(Kp.pointStyle,j,r),z&&(Z[0].mrc=3);var ge=Ee.selectAll("g.pointtext").data(G?Z:[]);ge.enter().append("g").classed("pointtext",!0).append("text").attr("transform",l),ge.exit().remove(),ge.selectAll("text").call(Kp.textPointStyle,j,r)}function h(C){var S=C[0].trace,g=S.type==="waterfall";if(C[0]._distinct&&g){var P=C[0].trace[C[0].dir].marker;return C[0].mc=P.color,C[0].mlw=P.line.width,C[0].mlc=P.line.color,m(C,this,"waterfall")}var E=[];S.visible&&g&&(E=C[0].hasTotals?[["increasing","M-6,-6V6H0Z"],["totals","M6,6H0L-6,-6H-0Z"],["decreasing","M6,6V-6H0Z"]]:[["increasing","M-6,-6V6H6Z"],["decreasing","M6,6V-6H-6Z"]]);var z=Ov.select(this).select("g.legendpoints").selectAll("path.legendwaterfall").data(E);z.enter().append("path").classed("legendwaterfall",!0).attr("transform",l).style("stroke-miterlimit",1),z.exit().remove(),z.each(function(q){var V=Ov.select(this),G=S[q[0]].marker,Z=u(void 0,G.line,K3,Gb);V.attr("d",q[1]).style("stroke-width",Z+"px").call(T0.fill,G.color),Z&&V.call(T0.stroke,G.line.color)})}function d(C){m(C,this)}function v(C){m(C,this,"funnel")}function m(C,S,g){var P=C[0].trace,E=P.marker||{},z=E.line||{},q=E.cornerradius?"M6,3a3,3,0,0,1-3,3H-3a3,3,0,0,1-3-3V-3a3,3,0,0,1,3-3H3a3,3,0,0,1,3,3Z":"M6,6H-6V-6H6Z",V=g?P.visible&&P.type===g:NB.traceIs(P,"bar"),G=Ov.select(S).select("g.legendpoints").selectAll("path.legend"+g).data(V?[C]:[]);G.enter().append("path").classed("legend"+g,!0).attr("d",q).attr("transform",l),G.exit().remove(),G.each(function(Z){var j=Ov.select(this),N=Z[0],H=u(N.mlw,E.line,K3,Gb);j.style("stroke-width",H+"px");var ie=N.mcc;if(!n._inHover&&"mc"in N){var ae=UB(E),_e=ae.mid;_e===void 0&&(_e=(ae.max+ae.min)/2),ie=Kp.tryColorscale(E,"")(_e)}var Ee=ie||N.mc||E.color,Ce=E.pattern,ge=Kp.getPatternAttr,re=Ce&&(ge(Ce.shape,0,"")||ge(Ce.path,0,""));if(re){var Se=ge(Ce.bgcolor,0,null),ke=ge(Ce.fgcolor,0,null),be=Ce.fgopacity,Be=Ale(Ce.size,8,10),Le=Ale(Ce.solidity,.5,1),me="legend-"+P.uid;j.call(Kp.pattern,"legend",r,me,re,Be,Le,ie,Ce.fillmode,Se,ke,be)}else j.call(T0.fill,Ee);H&&T0.stroke(j,N.mlc||z.color)})}function b(C){var S=C[0].trace,g=Ov.select(this).select("g.legendpoints").selectAll("path.legendbox").data(S.visible&&NB.traceIs(S,"box-violin")?[C]:[]);g.enter().append("path").classed("legendbox",!0).attr("d","M6,6H-6V-6H6Z").attr("transform",l),g.exit().remove(),g.each(function(){var P=Ov.select(this);if((S.boxpoints==="all"||S.points==="all")&&T0.opacity(S.fillcolor)===0&&T0.opacity((S.line||{}).color)===0){var E=_v.minExtend(S,{marker:{size:a?ble:_v.constrain(S.marker.size,2,16),sizeref:1,sizemin:1,sizemode:"diameter"}});g.call(Kp.pointStyle,E,r)}else{var z=u(void 0,S.line,K3,Gb);P.style("stroke-width",z+"px").call(T0.fill,S.fillcolor),z&&T0.stroke(P,S.line.color)}})}function p(C){var S=C[0].trace,g=Ov.select(this).select("g.legendpoints").selectAll("path.legendcandle").data(S.visible&&S.type==="candlestick"?[C,C]:[]);g.enter().append("path").classed("legendcandle",!0).attr("d",function(P,E){return E?"M-15,0H-8M-8,6V-6H8Z":"M15,0H8M8,-6V6H-8Z"}).attr("transform",l).style("stroke-miterlimit",1),g.exit().remove(),g.each(function(P,E){var z=Ov.select(this),q=S[E?"increasing":"decreasing"],V=u(void 0,q.line,K3,Gb);z.style("stroke-width",V+"px").call(T0.fill,q.fillcolor),V&&T0.stroke(z,q.line.color)})}function k(C){var S=C[0].trace,g=Ov.select(this).select("g.legendpoints").selectAll("path.legendohlc").data(S.visible&&S.type==="ohlc"?[C,C]:[]);g.enter().append("path").classed("legendohlc",!0).attr("d",function(P,E){return E?"M-15,0H0M-8,-6V0":"M15,0H0M8,6V0"}).attr("transform",l).style("stroke-miterlimit",1),g.exit().remove(),g.each(function(P,E){var z=Ov.select(this),q=S[E?"increasing":"decreasing"],V=u(void 0,q.line,K3,Gb);z.style("fill","none").call(Kp.dashLine,q.line.dash,V),V&&T0.stroke(z,q.line.color)})}function M(C){L(C,this,"pie")}function T(C){L(C,this,"funnelarea")}function L(C,S,g){var P=C[0],E=P.trace,z=g?E.visible&&E.type===g:NB.traceIs(E,g),q=Ov.select(S).select("g.legendpoints").selectAll("path.legend"+g).data(z?[C]:[]);if(q.enter().append("path").classed("legend"+g,!0).attr("d","M6,6H-6V-6H6Z").attr("transform",l),q.exit().remove(),q.size()){var V=E.marker||{},G=u(out(V.line.width,P.pts),V.line,K3,Gb),Z="pieLike",j=_v.minExtend(E,{marker:{line:{width:G}}},Z),N=_v.minExtend(P,{trace:j},Z);aut(q,N,j,r)}}function x(C){var S=C[0].trace,g,P=[];if(S.visible)switch(S.type){case"histogram2d":case"heatmap":P=[["M-15,-2V4H15V-2Z"]],g=!0;break;case"choropleth":case"choroplethmapbox":case"choroplethmap":P=[["M-6,-6V6H6V-6Z"]],g=!0;break;case"densitymapbox":case"densitymap":P=[["M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0"]],g="radial";break;case"cone":P=[["M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z"],["M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z"],["M-6,-2 A2,2 0 0,0 -6,2 L6,0Z"]],g=!1;break;case"streamtube":P=[["M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z"],["M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z"],["M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z"]],g=!1;break;case"surface":P=[["M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z"],["M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z"]],g=!0;break;case"mesh3d":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],g=!1;break;case"volume":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],g=!0;break;case"isosurface":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6 A12,24 0 0,0 6,-6 L0,6Z"]],g=!1;break}var E=Ov.select(this).select("g.legendpoints").selectAll("path.legend3dandfriends").data(P);E.enter().append("path").classed("legend3dandfriends",!0).attr("transform",l).style("stroke-miterlimit",1),E.exit().remove(),E.each(function(z,q){var V=Ov.select(this),G=UB(S),Z=G.colorscale,j=G.reversescale,N=function(_e){if(_e.size()){var Ee="legendfill-"+S.uid;Kp.gradient(_e,r,Ee,VB(j,g==="radial"),Z,"fill")}},H;if(Z){if(!g){var ae=Z.length;H=q===0?Z[j?ae-1:0][1]:q===1?Z[j?0:ae-1][1]:Z[Math.floor((ae-1)/2)][1]}}else{var ie=S.vertexcolor||S.facecolor||S.color;H=_v.isArrayOrTypedArray(ie)?ie[q]||ie[0]:ie}V.attr("d",z[0]),H?V.call(T0.fill,H):V.call(N)})}};function VB(e,t){var r=t?"radial":"horizontal";return r+(e?"":"reversed")}function Tle(e){var t=e[0].trace,r=t.contours,n=jL.hasLines(t),i=jL.hasMarkers(t),a=t.visible&&t.fill&&t.fill!=="none",o=!1,s=!1;if(r){var l=r.coloring;l==="lines"?o=!0:n=l==="none"||l==="heatmap"||r.showlines,r.type==="constraint"?a=r._operation!=="=":(l==="fill"||l==="heatmap")&&(s=!0)}return{showMarker:i,showLine:n,showFill:a,showGradientLine:o,showGradientFill:s,anyLine:n||o,anyFill:a||s}}function Ale(e,t,r){return e&&_v.isArrayOrTypedArray(e)?t:e>r?r:e}});var XB=ye((Far,Dle)=>{"use strict";var np=qa(),vh=Pr(),jB=Mc(),Hb=Oa(),ZL=L3(),HB=yv(),ph=So(),_M=ka(),jb=Zl(),Mle=zB().handleItemClick,Ele=zB().handleTitleClick,qh=qB(),WB=Dh(),Ile=WB.LINE_SPACING,$3=WB.FROM_TL,kle=WB.FROM_BR,Cle=dle(),uut=GB(),Q3=yM(),J3=1,cut=/^legend[0-9]*$/;Dle.exports=function(t,r){if(r)Lle(t,r);else{var n=t._fullLayout,i=n._legends,a=n._infolayer.selectAll('[class^="legend"]');a.each(function(){var u=np.select(this),c=u.attr("class"),f=c.split(" ")[0];f.match(cut)&&i.indexOf(f)===-1&&u.remove()});for(var o=0;o1)}var v=n.hiddenlabels||[];if(!s&&(!n.showlegend||!l.length))return o.selectAll("."+i).remove(),n._topdefs.select("#"+a).remove(),jB.autoMargin(e,i);var m=vh.ensureSingle(o,"g",i,function(S){s||S.attr("pointer-events","all")}),b=vh.ensureSingleById(n._topdefs,"clipPath",a,function(S){S.append("rect")}),p=vh.ensureSingle(m,"rect","bg",function(S){S.attr("shape-rendering","crispEdges")});p.call(_M.stroke,r.bordercolor).call(_M.fill,r.bgcolor).style("stroke-width",r.borderwidth+"px");var k=vh.ensureSingle(m,"g","scrollbox"),M=r.title;r._titleWidth=0,r._titleHeight=0;var T;M.text?(T=vh.ensureSingle(k,"text",i+"titletext"),T.attr("text-anchor","start").call(ph.font,M.font).text(M.text),XL(T,k,e,r,J3),!s&&(r.titleclick||r.titledoubleclick)&&vut(k,e,r,i)):(k.selectAll("."+i+"titletext").remove(),k.selectAll("."+i+"titletoggle").remove());var L=vh.ensureSingle(m,"rect","scrollbar",function(S){S.attr(qh.scrollBarEnterAttrs).call(_M.fill,qh.scrollBarColor)}),x=k.selectAll("g.groups").data(l);x.enter().append("g").attr("class","groups"),x.exit().remove();var C=x.selectAll("g.traces").data(vh.identity);C.enter().append("g").attr("class","traces"),C.exit().remove(),C.style("opacity",function(S){let g=S[0],P=g.trace;if(g.groupTitle){let E=P.legendgroup,z=(n.shapes||[]).filter(function(V){return V.showlegend});return e._fullData.concat(z).some(function(V){return V.legendgroup===E&&(V.legend||"legend")===i&&V.visible===!0})?1:.5}return Hb.traceIs(P,"pie-like")?v.indexOf(S[0].label)!==-1?.5:1:P.visible==="legendonly"?.5:1}).each(function(){np.select(this).call(hut,e,r)}).call(uut,e,r).each(function(S){s||S[0].groupTitle&&r.groupclick==="toggleitem"||np.select(this).call(dut,e,i)}),vh.syncOrAsync([jB.previousPromises,function(){return mut(e,x,C,r,k)},function(){var S=n._size,g=r.borderwidth,P=r.xref==="paper",E=r.yref==="paper";if(M.text){let He=(n.shapes||[]).filter(function(mt){return mt.showlegend}),lt=e._fullData.concat(He).some(function(mt){let Ht=mt.legend||"legend";var at=Array.isArray(Ht)?Ht.includes(i):Ht===i;return at&&mt.visible===!0});T.style("opacity",lt?1:.5)}if(!s){var z,q;P?z=S.l+S.w*r.x-$3[YL(r)]*r._width:z=n.width*r.x-$3[YL(r)]*r._width,E?q=S.t+S.h*(1-r.y)-$3[KL(r)]*r._effHeight:q=n.height*(1-r.y)-$3[KL(r)]*r._effHeight;var V=yut(e,i,z,q);if(V)return;if(n.margin.autoexpand){var G=z,Z=q;z=P?vh.constrain(z,0,n.width-r._width):G,q=E?vh.constrain(q,0,n.height-r._effHeight):Z,z!==G&&vh.log("Constrain "+i+".x to make legend fit inside graph"),q!==Z&&vh.log("Constrain "+i+".y to make legend fit inside graph")}ph.setTranslate(m,z,q)}if(L.on(".drag",null),m.on("wheel",null),s||r._height<=r._maxHeight||e._context.staticPlot){var j=r._effHeight;s&&(j=r._height),p.attr({width:r._width-g,height:j-g,x:g/2,y:g/2}),ph.setTranslate(k,0,0),b.select("rect").attr({width:r._width-2*g,height:j-2*g,x:g,y:g}),ph.setClipUrl(k,a,e),ph.setRect(L,0,0,0,0),delete r._scrollY}else{var N=Math.max(qh.scrollBarMinHeight,r._effHeight*r._effHeight/r._height),H=r._effHeight-N-2*qh.scrollBarMargin,ie=r._height-r._effHeight,ae=H/ie,_e=Math.min(r._scrollY||0,ie);p.attr({width:r._width-2*g+qh.scrollBarWidth+qh.scrollBarMargin,height:r._effHeight-g,x:g/2,y:g/2}),b.select("rect").attr({width:r._width-2*g+qh.scrollBarWidth+qh.scrollBarMargin,height:r._effHeight-2*g,x:g,y:g+_e}),ph.setClipUrl(k,a,e),Be(_e,N,ae),m.on("wheel",function(){_e=vh.constrain(r._scrollY+np.event.deltaY/ie*H,0,ie),Be(_e,N,ae),_e!==0&&_e!==ie&&np.event.preventDefault()});var Ee,Ce,ge,re=function(He,lt,mt){var Ht=(mt-lt)/ae+He;return vh.constrain(Ht,0,ie)},Se=function(He,lt,mt){var Ht=(lt-mt)/ae+He;return vh.constrain(Ht,0,ie)},ke=np.behavior.drag().on("dragstart",function(){var He=np.event.sourceEvent;He.type==="touchstart"?Ee=He.changedTouches[0].clientY:Ee=He.clientY,ge=_e}).on("drag",function(){var He=np.event.sourceEvent;He.buttons===2||He.ctrlKey||(He.type==="touchmove"?Ce=He.changedTouches[0].clientY:Ce=He.clientY,_e=re(ge,Ee,Ce),Be(_e,N,ae))});L.call(ke);var be=np.behavior.drag().on("dragstart",function(){var He=np.event.sourceEvent;He.type==="touchstart"&&(Ee=He.changedTouches[0].clientY,ge=_e)}).on("drag",function(){var He=np.event.sourceEvent;He.type==="touchmove"&&(Ce=He.changedTouches[0].clientY,_e=Se(ge,Ee,Ce),Be(_e,N,ae))});k.call(be)}function Be(He,lt,mt){r._scrollY=e._fullLayout[i]._scrollY=He,ph.setTranslate(k,0,-He),ph.setRect(L,r._width,qh.scrollBarMargin+He*mt,qh.scrollBarWidth,lt),b.select("rect").attr("y",g+He)}if(e._context.edits.legendPosition){var Le,me,Pe,ce;m.classed("cursor-move",!0),HB.init({element:m.node(),gd:e,prepFn:function(He){if(He.target!==L.node()){var lt=ph.getTranslate(m);Pe=lt.x,ce=lt.y}},moveFn:function(He,lt){if(Pe!==void 0&&ce!==void 0){var mt=Pe+He,Ht=ce+lt;ph.setTranslate(m,mt,Ht),Le=HB.align(mt,r._width,S.l,S.l+S.w,r.xanchor),me=HB.align(Ht+r._height,-r._height,S.t+S.h,S.t,r.yanchor)}},doneFn:function(){if(Le!==void 0&&me!==void 0){var He={};He[i+".x"]=Le,He[i+".y"]=me,Hb.call("_guiRelayout",e,He)}},clickFn:function(He,lt){var mt=o.selectAll("g.traces").filter(function(){var Ht=this.getBoundingClientRect();return lt.clientX>=Ht.left&<.clientX<=Ht.right&<.clientY>=Ht.top&<.clientY<=Ht.bottom});mt.size()>0&&Rle(e,r,mt,He,lt)}})}}],e)}}function WL(e,t,r){var n=e[0],i=n.width,a=t.entrywidthmode,o=n.trace.legendwidth||t.entrywidth;return a==="fraction"?t._maxWidth*o:r+(o||i)}function Rle(e,t,r,n,i){var a=e._fullLayout,o=r.data()[0][0].trace,s=t.itemclick,l=t.itemdoubleclick,u={event:i,node:r.node(),curveNumber:o.index,expandedIndex:o.index,data:e.data,layout:e.layout,frames:e._transitionData._frames,config:e._context,fullData:e._fullData,fullLayout:a};o._group&&(u.group=o._group),Hb.traceIs(o,"pie-like")&&(u.label=r.datum()[0].label);var c=ZL.triggerHandler(e,"plotly_legendclick",u);if(n===1){if(c===!1)return;t._clickTimeout=setTimeout(function(){e._fullLayout&&s&&Mle(r,e,t,s)},e._context.doubleClickDelay)}else if(n===2){t._clickTimeout&&clearTimeout(t._clickTimeout),e._legendMouseDownTime=0;var f=ZL.triggerHandler(e,"plotly_legenddoubleclick",u);f!==!1&&c!==!1&&l&&Mle(r,e,t,l)}}function hut(e,t,r){var n=Q3.getId(r),i=e.data()[0][0],a=i.trace,o=Hb.traceIs(a,"pie-like"),s=!r._inHover&&t._context.edits.legendText&&!o,l=r._maxNameLength,u,c;i.groupTitle?(u=i.groupTitle.text,c=i.groupTitle.font):(c=r.font,r.entries?u=i.text:(u=o?i.label:a.name,a._meta&&(u=vh.templateString(u,a._meta))));var f=vh.ensureSingle(e,"text",n+"text");f.attr("text-anchor","start").call(ph.font,c).text(s?Ple(u,l):u);var h=r.indentation+r.itemwidth+qh.itemGap*2;jb.positionText(f,h,0),s?f.call(jb.makeEditable,{gd:t,text:u}).call(XL,e,t,r).on("edit",function(d){this.text(Ple(d,l)).call(XL,e,t,r);var v=i.trace._fullInput||{},m={};return m.name=d,v._isShape?Hb.call("_guiRelayout",t,"shapes["+a.index+"].name",m.name):Hb.call("_guiRestyle",t,m,a.index)}):XL(f,e,t,r)}function Ple(e,t){var r=Math.max(4,t);if(e&&e.trim().length>=r/2)return e;e=e||"";for(var n=r-e.length;n>0;n--)e+=" ";return e}function dut(e,t,r){var n=t._context.doubleClickDelay,i,a=1,o=vh.ensureSingle(e,"rect",r+"toggle",function(s){t._context.staticPlot||s.style("cursor","pointer").attr("pointer-events","all"),s.call(_M.fill,"rgba(0,0,0,0)")});t._context.staticPlot||(o.on("mousedown",function(){i=new Date().getTime(),i-t._legendMouseDownTimen&&(a=Math.max(a-1,1)),Rle(t,s,e,a,np.event)}}))}function vut(e,t,r,n){if(t._fullData.some(function(u){let c=u.legend||"legend";return(Array.isArray(c)?c.includes(n):c===n)&&Hb.traceIs(u,"pie-like")}))return;let a=t._context.doubleClickDelay;var o,s=1;let l=vh.ensureSingle(e,"rect",n+"titletoggle",function(u){t._context.staticPlot||u.style("cursor","pointer").attr("pointer-events","all"),u.call(_M.fill,"rgba(0,0,0,0)")});t._context.staticPlot||(l.on("mousedown",function(){o=new Date().getTime(),o-t._legendMouseDownTimea&&(s=Math.max(s-1,1));let u={event:np.event,legendId:n,data:t.data,layout:t.layout,fullData:t._fullData,fullLayout:t._fullLayout};if(s===1&&r.titleclick){if(ZL.triggerHandler(t,"plotly_legendtitleclick",u)===!1)return;r._titleClickTimeout=setTimeout(function(){t._fullLayout&&Ele(t,r,r.titleclick)},a)}else s===2&&(r._titleClickTimeout&&clearTimeout(r._titleClickTimeout),t._legendMouseDownTime=0,ZL.triggerHandler(t,"plotly_legendtitledoubleclick",u)!==!1&&r.titledoubleclick&&Ele(t,r,r.titledoubleclick))}))}function XL(e,t,r,n,i){n._inHover&&e.attr("data-notex",!0),jb.convertToTspans(e,r,function(){put(t,r,n,i)})}function put(e,t,r,n){var i=e.data()[0][0],a=i&&i.trace.showlegend;if(Array.isArray(a)&&(a=a[i.i]!==!1),!r._inHover&&i&&!a){e.remove();return}var o=e.select("g[class*=math-group]"),s=o.node(),l=Q3.getId(r);r||(r=t._fullLayout[l]);var u=r.borderwidth,c;n===J3?c=r.title.font:i.groupTitle?c=i.groupTitle.font:c=r.font;var f=c.size*Ile,h,d;if(s){var v=ph.bBox(s);h=v.height,d=v.width,n===J3?ph.setTranslate(o,u,u+h*.75):ph.setTranslate(o,0,h*.25)}else{var m="."+l+(n===J3?"title":"")+"text",b=e.select(m),p=jb.lineCount(b),k=b.node();if(h=f*p,d=k?ph.bBox(k).width:0,n===J3)r.title.side==="left"&&(d+=qh.itemGap*2),jb.positionText(b,u+qh.titlePad,u+f);else{var M=qh.itemGap*2+r.indentation+r.itemwidth;i.groupTitle&&(M=qh.itemGap,d-=r.indentation+r.itemwidth),jb.positionText(b,M,-f*((p-1)/2-.3))}}n===J3?(r._titleWidth=d,r._titleHeight=h):(i.lineHeight=f,i.height=Math.max(h,16)+3,i.width=d)}function gut(e){var t=0,r=0,n=e.title.side;return n&&(n.indexOf("left")!==-1&&(t=e._titleWidth),n.indexOf("top")!==-1&&(r=e._titleHeight)),[t,r]}function mut(e,t,r,n,i){var a=e._fullLayout,o=Q3.getId(n);n||(n=a[o]);var s=a._size,l=Q3.isVertical(n),u=Q3.isGrouped(n),c=n.entrywidthmode==="fraction",f=n.borderwidth,h=2*f,d=qh.itemGap,v=n.indentation+n.itemwidth+d*2,m=2*(f+d),b=KL(n),p=n.y<0||n.y===0&&b==="top",k=n.y>1||n.y===1&&b==="bottom",M=n.tracegroupgap,T={};let{orientation:L,yref:x}=n,{maxheight:C}=n,S=p||k||L!=="v"||x!=="paper";C||(C=S?.5:1);let g=S?a.height:s.h;n._maxHeight=Math.max(C>1?C:C*g,30);var P=0;n._width=0,n._height=0;var E=gut(n);if(l)r.each(function(He){var lt=He[0].height;ph.setTranslate(this,f+E[0],f+E[1]+n._height+lt/2+d),n._height+=lt,n._width=Math.max(n._width,He[0].width)}),P=v+n._width,n._width+=d+v+h,n._height+=m,u&&(t.each(function(He,lt){ph.setTranslate(this,0,lt*n.tracegroupgap)}),n._height+=(n._lgroupsLength-1)*n.tracegroupgap);else{var z=YL(n),q=n.x<0||n.x===0&&z==="right",V=n.x>1||n.x===1&&z==="left",G=k||p,Z=a.width/2;n._maxWidth=Math.max(q?G&&z==="left"?s.l+s.w:Z:V?G&&z==="right"?s.r+s.w:Z:s.w,2*v);var j=0,N=0;r.each(function(He){var lt=WL(He,n,v);j=Math.max(j,lt),N+=lt}),P=null;var H=0;if(u){var ie=0,ae=0,_e=0;t.each(function(){var He=0,lt=0;np.select(this).selectAll("g.traces").each(function(Ht){var at=WL(Ht,n,v),ct=Ht[0].height;ph.setTranslate(this,E[0],E[1]+f+d+ct/2+lt),lt+=ct,He=Math.max(He,at),T[Ht[0].trace.legendgroup]=He});var mt=He+d;ae>0&&mt+f+ae>n._maxWidth?(H=Math.max(H,ae),ae=0,_e+=ie+M,ie=lt):ie=Math.max(ie,lt),ph.setTranslate(this,ae,_e),ae+=mt}),n._width=Math.max(H,ae)+f,n._height=_e+ie+m}else{var Ee=r.size(),Ce=N+h+(Ee-1)*d=n._maxWidth&&(H=Math.max(H,ke),re=0,Se+=ge,n._height+=ge,ge=0),ph.setTranslate(this,E[0]+f+re,E[1]+f+Se+lt/2+d),ke=re+mt+d,re+=Ht,ge=Math.max(ge,lt)}),Ce?(n._width=re+h,n._height=ge+m):(n._width=Math.max(H,ke)+h,n._height+=ge+m)}}n._width=Math.ceil(Math.max(n._width+E[0],n._titleWidth+2*(f+qh.titlePad))),n._height=Math.ceil(Math.max(n._height+E[1],n._titleHeight+2*(f+qh.itemGap))),n._effHeight=Math.min(n._height,n._maxHeight);var be=e._context.edits,Be=be.legendText||be.legendPosition;r.each(function(He){var lt=np.select(this).select("."+o+"toggle"),mt=He[0].height,Ht=He[0].trace.legendgroup,at=WL(He,n,v);u&&Ht!==""&&(at=T[Ht]);var ct=Be?v:P||at;!l&&!c&&(ct+=d/2),ph.setRect(lt,0,-mt/2,ct,mt)});var Le=i.select("."+o+"titletext");Le.node()&&fut(Le,n,f);var me=i.select("."+o+"titletoggle");if(me.size()&&Le.node()){var Pe=Le.attr("x")||0,ce=qh.titlePad;ph.setRect(me,Pe-ce,f,n._titleWidth+2*ce,n._titleHeight+2*ce)}}function yut(e,t,r,n){var i=e._fullLayout,a=i[t],o=YL(a),s=KL(a),l=a.xref==="paper",u=a.yref==="paper";e._fullLayout._reservedMargin[t]={};var c=a.y<.5?"b":"t",f=a.x<.5?"l":"r",h={r:i.width-r,l:r+a._width,b:i.height-n,t:n+a._effHeight};if(l&&u)return jB.autoMargin(e,t,{x:a.x,y:a.y,l:a._width*$3[o],r:a._width*kle[o],b:a._effHeight*kle[s],t:a._effHeight*$3[s]});l?e._fullLayout._reservedMargin[t][c]=h[c]:u||a.orientation==="v"?e._fullLayout._reservedMargin[t][f]=h[f]:e._fullLayout._reservedMargin[t][c]=h[c]}function YL(e){return vh.isRightAnchor(e)?"right":vh.isCenterAnchor(e)?"center":"left"}function KL(e){return vh.isBottomAnchor(e)?"bottom":vh.isMiddleAnchor(e)?"middle":"top"}});var JB=ye(KB=>{"use strict";var Wb=qa(),Iy=Eo(),Fle=fd(),zf=Pr(),_ut=zf.pushUnique,ZB=zf.strTranslate,xut=zf.strRotate,but=L3(),A0=Zl(),wut=ole(),Am=So(),vd=ka(),JL=yv(),Sm=ho(),Tut=Rh().zindexSeparator,tT=Oa(),kg=ip(),Xb=US(),Aut=RB(),Sut=XB(),Gle=Xb.YANGLE,YB=Math.PI*Gle/180,Mut=1/Math.sin(YB),Eut=Math.cos(YB),kut=Math.sin(YB),Qc=Xb.HOVERARROWSIZE,sl=Xb.HOVERTEXTPAD,zle={box:!0,ohlc:!0,violin:!0,candlestick:!0},Cut={scatter:!0,scattergl:!0,splom:!0};function qle(e,t){return e.distance-t.distance}KB.hover=function(t,r,n,i){t=zf.getGraphDiv(t);var a=r.target;zf.throttle(t._fullLayout._uid+Xb.HOVERID,Xb.HOVERMINTIME,function(){Lut(t,r,n,i,a)})};KB.loneHover=function(t,r){var n=!0;Array.isArray(t)||(n=!1,t=[t]);var i=r.gd,a=Zle(i),o=Yle(i),s=t.map(function(b){var p=b._x0||b.x0||b.x||0,k=b._x1||b.x1||b.x||0,M=b._y0||b.y0||b.y||0,T=b._y1||b.y1||b.y||0,L=b.eventData;if(L){var x=Math.min(p,k),C=Math.max(p,k),S=Math.min(M,T),g=Math.max(M,T),P=b.trace;if(tT.traceIs(P,"gl3d")){var E=i._fullLayout[P.scene]._scene.container,z=E.offsetLeft,q=E.offsetTop;x+=z,C+=z,S+=q,g+=q}L.bbox={x0:x+o,x1:C+o,y0:S+a,y1:g+a},L.xPixel=(p+k)/2,L.yPixel=(M+T)/2,r.inOut_bbox&&r.inOut_bbox.push(L.bbox)}else L=!1;return{color:b.color||vd.defaultLine,x0:b.x0||b.x||0,x1:b.x1||b.x||0,y0:b.y0||b.y||0,y1:b.y1||b.y||0,xLabel:b.xLabel,yLabel:b.yLabel,zLabel:b.zLabel,text:b.text,name:b.name,idealAlign:b.idealAlign,borderColor:b.borderColor,fontFamily:b.fontFamily,fontSize:b.fontSize,fontColor:b.fontColor,fontWeight:b.fontWeight,fontStyle:b.fontStyle,fontVariant:b.fontVariant,nameLength:b.nameLength,textAlign:b.textAlign,trace:b.trace||{index:0,hoverinfo:""},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:b.hovertemplate||!1,hovertemplateLabels:b.hovertemplateLabels||!1,eventData:L}}),l=!1,u=jle(s,{gd:i,hovermode:"closest",rotateLabels:l,bgColor:r.bgColor||vd.background,container:Wb.select(r.container),outerContainer:r.outerContainer||r.container}),c=u.hoverLabels,f=5,h=0,d=0;c.sort(function(b,p){return b.y0-p.y0}).each(function(b,p){var k=b.y0-b.by/2;k-fC[0]._length||ce<0||ce>S[0]._length)return JL.unhoverRaw(e,t)}if(t.pointerX=Pe+C[0]._offset,t.pointerY=ce+S[0]._offset,"xval"in t?Z=kg.flat(a,t.xval):Z=kg.p2c(C,Pe),"yval"in t?j=kg.flat(a,t.yval):j=kg.p2c(S,ce),!Iy(Z[0])||!Iy(j[0]))return zf.warn("Fx.hover failed",t,e),JL.unhoverRaw(e,t)}s.clickanywhere&&(e._hoverXVals=Z,e._hoverYVals=j,e._hoverXAxes=C,e._hoverYAxes=S);var mt=1/0;function Ht(Vi,Kn){for(H=0;Hke&&(V.splice(0,ke),mt=V[0].distance),f&&q!==0&&V.length===0){Se.distance=q,Se.index=!1;var ir=ae._module.hoverPoints(Se,ge,re,"closest",{hoverLayer:s._hoverlayer});if(ir&&(ir=ir.filter(function(Zi){return Zi.spikeDistance<=q})),ir&&ir.length){var wr,Xr=ir.filter(function(Zi){return Zi.xa.showspikes&&Zi.xa.spikesnap!=="hovered data"});if(Xr.length){var ti=Xr[0];Iy(ti.x0)&&Iy(ti.y0)&&(wr=ct(ti),(!be.vLinePoint||be.vLinePoint.spikeDistance>wr.spikeDistance)&&(be.vLinePoint=wr))}var $r=ir.filter(function(Zi){return Zi.ya.showspikes&&Zi.ya.spikesnap!=="hovered data"});if($r.length){var Ri=$r[0];Iy(Ri.x0)&&Iy(Ri.y0)&&(wr=ct(Ri),(!be.hLinePoint||be.hLinePoint.spikeDistance>wr.spikeDistance)&&(be.hLinePoint=wr))}}}}}Ht();function at(Vi,Kn,Jn){for(var Gt=null,wt=1/0,tr,ir=0;irVi.trace.index===pt.trace.index):V=[pt];var jt=V.length,or=Vle("x",pt,s),mr=Vle("y",pt,s);Ht(or,mr);var Ar=[],ei={},qr=0,jr=function(Vi){var Kn=zle[Vi.trace.type]?Hle(Vi):Vi.trace.index;if(!ei[Kn])qr++,ei[Kn]=qr,Ar.push(Vi);else{var Jn=ei[Kn]-1,Gt=Ar[Jn];Jn>0&&Math.abs(Vi.distance)jt-1;gt--)jr(V[gt]);V=Ar,tt()}var Ge=e._hoverdata,Je=[],We=Zle(e),et=Yle(e);for(let Vi of V){var xt=kg.makeEventData(Vi,Vi.trace,Vi.cd);if(Vi.hovertemplate!==!1){var At=!1;Vi.cd[Vi.index]&&Vi.cd[Vi.index].ht&&(At=Vi.cd[Vi.index].ht),Vi.hovertemplate=At||Vi.trace.hovertemplate||!1}if(Vi.xa&&Vi.ya){var Kt=Vi.x0+Vi.xa._offset,Qt=Vi.x1+Vi.xa._offset,Mr=Vi.y0+Vi.ya._offset,Gr=Vi.y1+Vi.ya._offset,Ir=Math.min(Kt,Qt),Yr=Math.max(Kt,Qt),_i=Math.min(Mr,Gr),Pi=Math.max(Mr,Gr);xt.bbox={x0:Ir+et,x1:Yr+et,y0:_i+We,y1:Pi+We},xt.xPixel=(Kt+Qt)/2,xt.yPixel=(Mr+Gr)/2}Vi.eventData=[xt],Je.push(xt)}e._hoverdata=Je;var ai=h==="y"&&(G.length>1||V.length>1)||h==="closest"&&Be&&V.length>1,mi=vd.combine(s.plot_bgcolor||vd.background,s.paper_bgcolor),un=jle(V,{gd:e,hovermode:h,rotateLabels:ai,bgColor:mi,container:s._hoverlayer,outerContainer:s._paper.node(),commonLabelOpts:s.hoverlabel,hoverdistance:s.hoverdistance}),Fn=un.hoverLabels;if(kg.isUnifiedHover(h)||(Iut(Fn,ai,s,un.commonLabelBoundingBox),Xle(Fn,ai,s._invScaleX,s._invScaleY)),i&&i.tagName){var An=tT.getComponentMethod("annotations","hasClickToShow")(e,Je);wut(Wb.select(i),An?"pointer":"")}var Hn=Fut(e,t,Ge);if(!i||n||!Hn&&!s.hoveranywhere)return;Ge&&Hn&&e.emit("plotly_unhover",{event:t,points:Ge}),Qn(e._hoverdata);function Qn(Vi){e.emit("plotly_hover",{event:t,points:Vi,xaxes:C,yaxes:S,xvals:Z,yvals:j})}}function Hle(e){return[e.trace.index,e.index,e.x0,e.y0,e.name,e.attr,e.xa?e.xa._id:"",e.ya?e.ya._id:""].join(",")}var Put=/([\s\S]*)<\/extra>/;function jle(e,t){var r=t.gd,n=r._fullLayout,i=t.hovermode,a=t.rotateLabels,o=t.bgColor,s=t.container,l=t.outerContainer,u=t.commonLabelOpts||{};if(e.length===0)return[[]];var c=t.fontFamily||Xb.HOVERFONT,f=t.fontSize||Xb.HOVERFONTSIZE,h=t.fontWeight||n.font.weight,d=t.fontStyle||n.font.style,v=t.fontVariant||n.font.variant,m=t.fontTextcase||n.font.textcase,b=t.fontLineposition||n.font.lineposition,p=t.fontShadow||n.font.shadow,k=e[0],M=k.xa,T=k.ya,L=i.charAt(0),x=L+"Label",C=k[x];if(C===void 0&&M.type==="multicategory")for(var S=0;Sn.width-Je&&(We=n.width-Je),Et.attr("d","M"+(jr-We)+",0L"+(jr-We+Qc)+","+Ge+Qc+"H"+Je+"v"+Ge+(sl*2+qr.height)+"H"+-Je+"V"+Ge+Qc+"H"+(jr-We-Qc)+"Z"),jr=We,H.minX=jr-Je,H.maxX=jr+Je,M.side==="top"?(H.minY=gt-(sl*2+qr.height),H.maxY=gt-sl):(H.minY=gt+sl,H.maxY=gt+(sl*2+qr.height))}else{var et,xt,At;T.side==="right"?(et="start",xt=1,At="",jr=M._offset+M._length):(et="end",xt=-1,At="-",jr=M._offset),gt=T._offset+(k.y0+k.y1)/2,pt.attr("text-anchor",et),Et.attr("d","M0,0L"+At+Qc+","+Qc+"V"+(sl+qr.height/2)+"h"+At+(sl*2+qr.width)+"V-"+(sl+qr.height/2)+"H"+At+Qc+"V-"+Qc+"Z"),H.minY=gt-(sl+qr.height/2),H.maxY=gt+(sl+qr.height/2),T.side==="right"?(H.minX=jr+Qc,H.maxX=jr+Qc+(sl*2+qr.width)):(H.minX=jr-Qc-(sl*2+qr.width),H.maxX=jr-Qc);var Kt=qr.height/2,Qt=P-qr.top-Kt,Mr="clip"+n._uid+"commonlabel"+T._id,Gr;if(jrEt.hoverinfo!=="none");if(dt.length===0)return[];var ie=n.hoverlabel,ae=ie.font,_e=dt[0],Ee=((i==="x unified"?_e.xa:_e.ya).unifiedhovertitle||{}).text,Ce=Ee?zf.hovertemplateString({data:i==="x unified"?[{xa:_e.xa,x:_e.xVal}]:[{ya:_e.ya,y:_e.yVal}],fallback:_e.trace.hovertemplatefallback,locale:n._d3locale,template:Ee}):C,ge={showlegend:!0,legend:{title:{text:Ce,font:ae},font:ae,bgcolor:ie.bgcolor,bordercolor:ie.bordercolor,borderwidth:1,tracegroupgap:7,traceorder:n.legend?n.legend.traceorder:void 0,orientation:"v"}},re={font:ae};Aut(ge,re,r._fullData);var Se=re.legend;Se.entries=[];for(var ke=0;ke=0?rt=tt:je+lt=0?rt=je:Ue+lt=0?St=Vt:rr+mt=0?St=rr:Ae+mt=0,(dt.idealAlign==="top"||!_i)&&Pi?(At-=Qt/2,dt.anchor="end"):_i?(At+=Qt/2,dt.anchor="start"):dt.anchor="middle",dt.crossPos=At;else{if(dt.pos=At,_i=xt+Kt/2+Yr<=E,Pi=xt-Kt/2-Yr>=0,(dt.idealAlign==="left"||!_i)&&Pi)xt-=Kt/2,dt.anchor="end";else if(_i)xt+=Kt/2,dt.anchor="start";else{dt.anchor="middle";var ai=Yr/2,mi=xt+ai-E,un=xt-ai;mi>0&&(xt-=mi),un<0&&(xt+=-un)}dt.crossPos=xt}gt.attr("text-anchor",dt.anchor),Je&&Ge.attr("text-anchor",dt.anchor),Et.attr("transform",ZB(xt,At)+(a?xut(Gle):""))}),{hoverLabels:Tt,commonLabelBoundingBox:H}}function Ole(e,t,r,n,i,a){var f,h;var o="",s="";e.nameOverride!==void 0&&(e.name=e.nameOverride),e.name&&(e.trace._meta&&(e.name=zf.templateString(e.name,e.trace._meta)),o=Ule(e.name,e.nameLength));var l=r.charAt(0),u=l==="x"?"y":"x";e.zLabel!==void 0?(e.xLabel!==void 0&&(s+="x: "+e.xLabel+"
"),e.yLabel!==void 0&&(s+="y: "+e.yLabel+"
"),e.trace.type!=="choropleth"&&e.trace.type!=="choroplethmapbox"&&e.trace.type!=="choroplethmap"&&(s+=(s?"z: ":"")+e.zLabel)):t&&e[l+"Label"]===i?s=e[u+"Label"]||"":e.xLabel===void 0?e.yLabel!==void 0&&e.trace.type!=="scattercarpet"&&(s=e.yLabel):e.yLabel===void 0?s=e.xLabel:s="("+e.xLabel+", "+e.yLabel+")",(e.text||e.text===0)&&!Array.isArray(e.text)&&(s+=(s?"
":"")+e.text),e.extraText!==void 0&&(s+=(s?"
":"")+e.extraText),a&&s===""&&!e.hovertemplate&&(o===""&&a.remove(),s=o),(h=(f=e.trace)==null?void 0:f.hoverlabel)!=null&&h.split&&(e.hovertemplate="");let{hovertemplate:c=!1}=e;if(c){let d=e.hovertemplateLabels||e;e[l+"Label"]!==i&&(d[l+"other"]=d[l+"Val"],d[l+"otherLabel"]=d[l+"Label"]),s=zf.hovertemplateString({data:[e.eventData[0]||{},e.trace._meta],fallback:e.trace.hovertemplatefallback,labels:d,locale:n._d3locale,template:c}),s=s.replace(Put,(v,m)=>(o=Ule(m,e.nameLength),""))}return[s,o]}function Iut(e,t,r,n){var i=t?"xa":"ya",a=t?"ya":"xa",o=0,s=1,l=e.size(),u=new Array(l),c=0,f=n.minX,h=n.maxX,d=n.minY,v=n.maxY,m=function(Z){return Z*r._invScaleX},b=function(Z){return Z*r._invScaleY};e.each(function(Z){var j=Z[i],N=Z[a],H=j._id.charAt(0)==="x",ie=j.range;c===0&&ie&&ie[0]>ie[1]!==H&&(s=-1);var ae=0,_e=H?r.width:r.height;if(r.hovermode==="x"||r.hovermode==="y"){var Ee=Wle(Z,t),Ce=Z.anchor,ge=Ce==="end"?-1:1,re,Se;if(Ce==="middle")re=Z.crossPos+(H?b(Ee.y-Z.by/2):m(Z.bx/2+Z.tx2width/2)),Se=re+(H?b(Z.by):m(Z.bx));else if(H)re=Z.crossPos+b(Qc+Ee.y)-b(Z.by/2-Qc),Se=re+b(Z.by);else{var ke=m(ge*Qc+Ee.x),be=ke+m(ge*Z.bx);re=Z.crossPos+Math.min(ke,be),Se=Z.crossPos+Math.max(ke,be)}H?d!==void 0&&v!==void 0&&Math.min(Se,v)-Math.max(re,d)>1&&(N.side==="left"?(ae=N._mainLinePosition,_e=r.width):_e=N._mainLinePosition):f!==void 0&&h!==void 0&&Math.min(Se,h)-Math.max(re,f)>1&&(N.side==="top"?(ae=N._mainLinePosition,_e=r.height):_e=N._mainLinePosition)}u[c++]=[{datum:Z,traceIndex:Z.trace.index,dp:0,pos:Z.pos,posref:Z.posref,size:Z.by*(H?Mut:1)/2,pmin:ae,pmax:_e}]}),u.sort(function(Z,j){return Z[0].posref-j[0].posref||s*(j[0].traceIndex-Z[0].traceIndex)});var p,k,M,T,L,x,C;function S(Z){var j=Z[0],N=Z[Z.length-1];if(k=j.pmin-j.pos-j.dp+j.size,M=N.pos+N.dp+N.size-j.pmax,k>.01){for(L=Z.length-1;L>=0;L--)Z[L].dp+=k;p=!1}if(!(M<.01)){if(k<-.01){for(L=Z.length-1;L>=0;L--)Z[L].dp-=M;p=!1}if(p){var H=0;for(T=0;Tj.pmax&&H++;for(T=Z.length-1;T>=0&&!(H<=0);T--)x=Z[T],x.pos>j.pmax-1&&(x.del=!0,H--);for(T=0;T=0;L--)Z[L].dp-=M;for(T=Z.length-1;T>=0&&!(H<=0);T--)x=Z[T],x.pos+x.dp+x.size>j.pmax&&(x.del=!0,H--)}}}for(;!p&&o<=l;){for(o++,p=!0,T=0;T.01){for(L=P.length-1;L>=0;L--)P[L].dp+=k;for(g.push.apply(g,P),u.splice(T+1,1),C=0,L=g.length-1;L>=0;L--)C+=g[L].dp;for(M=C/g.length,L=g.length-1;L>=0;L--)g[L].dp-=M;p=!1}else T++}u.forEach(S)}for(T=u.length-1;T>=0;T--){var q=u[T];for(L=q.length-1;L>=0;L--){var V=q[L],G=V.datum;G.offset=V.dp,G.del=V.del}}}function Wle(e,t){var r=0,n=e.offset;return t&&(n*=-kut,r=e.offset*Eut),{x:r,y:n}}function Rut(e){var t={start:1,end:-1,middle:0}[e.anchor],r=t*(Qc+sl),n=r+t*(e.txwidth+sl),i=e.anchor==="middle";return i&&(r-=e.tx2width/2,n+=e.txwidth/2+sl),{alignShift:t,textShiftX:r,text2ShiftX:n}}function Xle(e,t,r,n){var i=function(o){return o*r},a=function(o){return o*n};e.each(function(o){var s=Wb.select(this);if(o.del)return s.remove();var l=s.select("text.nums"),u=o.anchor,c=u==="end"?-1:1,f=Rut(o),h=Wle(o,t),d=h.x,v=h.y,m=u==="middle",b="hoverlabel"in o.trace?o.trace.hoverlabel.showarrow:!0,p;m?p="M-"+i(o.bx/2+o.tx2width/2)+","+a(v-o.by/2)+"h"+i(o.bx)+"v"+a(o.by)+"h-"+i(o.bx)+"Z":b?p="M0,0L"+i(c*Qc+d)+","+a(Qc+v)+"v"+a(o.by/2-Qc)+"h"+i(c*o.bx)+"v-"+a(o.by)+"H"+i(c*Qc+d)+"V"+a(v-Qc)+"Z":p="M"+i(c*Qc+d)+","+a(v-o.by/2)+"h"+i(c*o.bx)+"v"+a(o.by)+"h"+i(-c*o.bx)+"Z",s.select("path").attr("d",p);var k=d+f.textShiftX,M=v+o.ty0-o.by/2+sl,T=o.textAlign||"auto";T!=="auto"&&(T==="left"&&u!=="start"?(l.attr("text-anchor","start"),k=m?-o.bx/2-o.tx2width/2+sl:-o.bx-sl):T==="right"&&u!=="end"&&(l.attr("text-anchor","end"),k=m?o.bx/2-o.tx2width/2-sl:o.bx+sl)),l.call(A0.positionText,i(k),a(M)),o.tx2width&&(s.select("text.name").call(A0.positionText,i(f.text2ShiftX+f.alignShift*sl+d),a(v+o.ty0-o.by/2+sl)),s.select("rect").call(Am.setRect,i(f.text2ShiftX+(f.alignShift-1)*o.tx2width/2+d),a(v-o.by/2-1),i(o.tx2width),a(o.by+2)))})}function Dut(e,t){var r=e.index,n=e.trace||{},i=e.cd[0],a=e.cd[r]||{};function o(h){return h||Iy(h)&&h===0}var s=Array.isArray(r)?function(h,d){var v=zf.castOption(i,r,h);return o(v)?v:zf.extractOption({},n,"",d)}:function(h,d){return zf.extractOption(a,n,h,d)};function l(h,d,v){var m=s(d,v);o(m)&&(e[h]=m)}if(l("hoverinfo","hi","hoverinfo"),l("bgcolor","hbg","hoverlabel.bgcolor"),l("borderColor","hbc","hoverlabel.bordercolor"),l("fontFamily","htf","hoverlabel.font.family"),l("fontSize","hts","hoverlabel.font.size"),l("fontColor","htc","hoverlabel.font.color"),l("fontWeight","htw","hoverlabel.font.weight"),l("fontStyle","hty","hoverlabel.font.style"),l("fontVariant","htv","hoverlabel.font.variant"),l("nameLength","hnl","hoverlabel.namelength"),l("textAlign","hta","hoverlabel.align"),e.posref=t==="y"||t==="closest"&&n.orientation==="h"?e.xa._offset+(e.x0+e.x1)/2:e.ya._offset+(e.y0+e.y1)/2,e.x0=zf.constrain(e.x0,0,e.xa._length),e.x1=zf.constrain(e.x1,0,e.xa._length),e.y0=zf.constrain(e.y0,0,e.ya._length),e.y1=zf.constrain(e.y1,0,e.ya._length),e.xLabelVal!==void 0&&(e.xLabel="xLabel"in e?e.xLabel:Sm.hoverLabelText(e.xa,e.xLabelVal,n.xhoverformat),e.xVal=e.xa.c2d(e.xLabelVal)),e.yLabelVal!==void 0&&(e.yLabel="yLabel"in e?e.yLabel:Sm.hoverLabelText(e.ya,e.yLabelVal,n.yhoverformat),e.yVal=e.ya.c2d(e.yLabelVal)),e.zLabelVal!==void 0&&e.zLabel===void 0&&(e.zLabel=String(e.zLabelVal)),!isNaN(e.xerr)&&!(e.xa.type==="log"&&e.xerr<=0)){var u=Sm.tickText(e.xa,e.xa.c2l(e.xerr),"hover").text;e.xerrneg!==void 0?e.xLabel+=" +"+u+" / -"+Sm.tickText(e.xa,e.xa.c2l(e.xerrneg),"hover").text:e.xLabel+=" \xB1 "+u,t==="x"&&(e.distance+=1)}if(!isNaN(e.yerr)&&!(e.ya.type==="log"&&e.yerr<=0)){var c=Sm.tickText(e.ya,e.ya.c2l(e.yerr),"hover").text;e.yerrneg!==void 0?e.yLabel+=" +"+c+" / -"+Sm.tickText(e.ya,e.ya.c2l(e.yerrneg),"hover").text:e.yLabel+=" \xB1 "+c,t==="y"&&(e.distance+=1)}var f=e.hoverinfo||e.trace.hoverinfo;return f&&f!=="all"&&(f=Array.isArray(f)?f:f.split("+"),f.indexOf("x")===-1&&(e.xLabel=void 0),f.indexOf("y")===-1&&(e.yLabel=void 0),f.indexOf("z")===-1&&(e.zLabel=void 0),f.indexOf("text")===-1&&(e.text=void 0),f.indexOf("name")===-1&&(e.name=void 0)),e}function Ble(e,t,r){var n=r.container,i=r.fullLayout,a=i._size,o=r.event,s=!!t.hLinePoint,l=!!t.vLinePoint,u,c;if(n.selectAll(".spikeline").remove(),!!(l||s)){var f=vd.combine(i.plot_bgcolor,i.paper_bgcolor);if(s){var h=t.hLinePoint,d,v;u=h&&h.xa,c=h&&h.ya;var m=c.spikesnap;m==="cursor"?(d=o.pointerX,v=o.pointerY):(d=u._offset+h.x,v=c._offset+h.y);var b=Fle.readability(h.color,f)<1.5?vd.contrast(f):h.color,p=c.spikemode,k=c.spikethickness,M=c.spikecolor||b,T=Sm.getPxPosition(e,c),L,x;if(p.indexOf("toaxis")!==-1||p.indexOf("across")!==-1){if(p.indexOf("toaxis")!==-1&&(L=T,x=d),p.indexOf("across")!==-1){var C=c._counterDomainMin,S=c._counterDomainMax;c.anchor==="free"&&(C=Math.min(C,c.position),S=Math.max(S,c.position)),L=a.l+C*a.w,x=a.l+S*a.w}n.insert("line",":first-child").attr({x1:L,x2:x,y1:v,y2:v,"stroke-width":k,stroke:M,"stroke-dasharray":Am.dashStyle(c.spikedash,k)}).classed("spikeline",!0).classed("crisp",!0),n.insert("line",":first-child").attr({x1:L,x2:x,y1:v,y2:v,"stroke-width":k+2,stroke:f}).classed("spikeline",!0).classed("crisp",!0)}p.indexOf("marker")!==-1&&n.insert("circle",":first-child").attr({cx:T+(c.side!=="right"?k:-k),cy:v,r:k,fill:M}).classed("spikeline",!0)}if(l){var g=t.vLinePoint,P,E;u=g&&g.xa,c=g&&g.ya;var z=u.spikesnap;z==="cursor"?(P=o.pointerX,E=o.pointerY):(P=u._offset+g.x,E=c._offset+g.y);var q=Fle.readability(g.color,f)<1.5?vd.contrast(f):g.color,V=u.spikemode,G=u.spikethickness,Z=u.spikecolor||q,j=Sm.getPxPosition(e,u),N,H;if(V.indexOf("toaxis")!==-1||V.indexOf("across")!==-1){if(V.indexOf("toaxis")!==-1&&(N=j,H=E),V.indexOf("across")!==-1){var ie=u._counterDomainMin,ae=u._counterDomainMax;u.anchor==="free"&&(ie=Math.min(ie,u.position),ae=Math.max(ae,u.position)),N=a.t+(1-ae)*a.h,H=a.t+(1-ie)*a.h}n.insert("line",":first-child").attr({x1:P,x2:P,y1:N,y2:H,"stroke-width":G,stroke:Z,"stroke-dasharray":Am.dashStyle(u.spikedash,G)}).classed("spikeline",!0).classed("crisp",!0),n.insert("line",":first-child").attr({x1:P,x2:P,y1:N,y2:H,"stroke-width":G+2,stroke:f}).classed("spikeline",!0).classed("crisp",!0)}V.indexOf("marker")!==-1&&n.insert("circle",":first-child").attr({cx:P,cy:j-(u.side!=="top"?G:-G),r:G,fill:Z}).classed("spikeline",!0)}}}function Fut(e,t,r){if(!r||r.length!==e._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=e._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers)||i.binNumber!==a.binNumber)return!0}return!1}function Nle(e,t){return!t||t.vLinePoint!==e._spikepoints.vLinePoint||t.hLinePoint!==e._spikepoints.hLinePoint}function Ule(e,t){return A0.plainText(e||"",{len:t,allowedTags:["br","sub","sup","b","i","em","s","u"]})}function zut(e,t){for(var r=t.charAt(0),n=[],i=[],a=[],o=0;oe.offsetTop+e.clientTop,Yle=e=>e.offsetLeft+e.clientLeft;function eT(e,t){var r=e._fullLayout,n=t.getBoundingClientRect(),i=n.left,a=n.top,o=i+n.width,s=a+n.height,l=zf.apply3DTransform(r._invTransform)(i,a),u=zf.apply3DTransform(r._invTransform)(o,s),c=l[0],f=l[1],h=u[0],d=u[1];return{x:c,y:f,width:h-c,height:d-f,top:Math.min(f,d),left:Math.min(c,h),right:Math.max(c,h),bottom:Math.max(f,d)}}});var xM=ye((qar,Kle)=>{"use strict";var qut=Pr(),Out=ka(),But=ip().isUnifiedHover;Kle.exports=function(t,r,n,i){i=i||{};var a=r.legend;function o(s){i.font[s]||(i.font[s]=a?r.legend.font[s]:r.font[s])}r&&But(r.hovermode)&&(i.font||(i.font={}),o("size"),o("family"),o("color"),o("weight"),o("style"),o("variant"),a?(i.bgcolor||(i.bgcolor=Out.combine(r.legend.bgcolor,r.paper_bgcolor)),i.bordercolor||(i.bordercolor=r.legend.bordercolor)):i.bgcolor||(i.bgcolor=r.paper_bgcolor)),n("hoverlabel.bgcolor",i.bgcolor),n("hoverlabel.bordercolor",i.bordercolor),n("hoverlabel.namelength",i.namelength),n("hoverlabel.showarrow",i.showarrow),qut.coerceFont(n,"hoverlabel.font",i.font),n("hoverlabel.align",i.align)}});var $le=ye((Oar,Jle)=>{"use strict";var Nut=Pr(),Uut=xM(),Vut=W1();Jle.exports=function(t,r){function n(i,a){return Nut.coerce(t,r,Vut,i,a)}Uut(t,r,n)}});var tue=ye((Bar,eue)=>{"use strict";var Qle=Pr(),Gut=g3(),Hut=xM();eue.exports=function(t,r,n,i){function a(s,l){return Qle.coerce(t,r,Gut,s,l)}var o=Qle.extendFlat({},i.hoverlabel);r.hovertemplate&&(o.namelength=-1),Hut(t,r,a,o)}});var $B=ye((Nar,rue)=>{"use strict";var jut=Pr(),Wut=W1();rue.exports=function(t,r){function n(i,a){return r[i]!==void 0?r[i]:jut.coerce(t,r,Wut,i,a)}return n("clickmode"),n("hoversubplots"),n("hoveranywhere"),n("clickanywhere"),n("hovermode")}});var aue=ye((Uar,nue)=>{"use strict";var iue=Pr(),Xut=W1(),Zut=$B(),Yut=xM();nue.exports=function(t,r){function n(c,f){return iue.coerce(t,r,Xut,c,f)}var i=Zut(t,r);i&&(n("hoverdistance"),n("spikedistance"),i.indexOf("unified")!==-1&&n("hoversort"));var a=n("dragmode");a==="select"&&n("selectdirection");var o=r._has("mapbox"),s=r._has("map"),l=r._has("geo"),u=r._basePlotModules.length;r.dragmode==="zoom"&&((o||s||l)&&u===1||(o||s)&&l&&u===2)&&(r.dragmode="pan"),Yut(t,r,n),iue.coerceFont(n,"hoverlabel.grouptitlefont",r.hoverlabel.font)}});var lue=ye((Var,sue)=>{"use strict";var QB=Pr(),oue=Oa();sue.exports=function(t){var r=t.calcdata,n=t._fullLayout;function i(u){return function(c){return QB.coerceHoverinfo({hoverinfo:c},{_module:u._module},n)}}for(var a=0;a{"use strict";var Jut=Oa(),$ut=JB().hover;uue.exports=function(t,r,n){var i=Jut.getComponentMethod("annotations","onClick")(t,t._hoverdata),a=t._fullLayout;n!==void 0&&$ut(t,r,n,!0);function o(){var l,u,c,f;var s={points:t._hoverdata,event:r};(l=s.xaxes)!=null||(s.xaxes=t._hoverXAxes),(u=s.yaxes)!=null||(s.yaxes=t._hoverYAxes),(c=s.xvals)!=null||(s.xvals=t._hoverXVals),(f=s.yvals)!=null||(s.yvals=t._hoverYVals),t.emit("plotly_click",s)}(t._hoverdata||a.clickanywhere)&&r&&r.target&&(t._hoverdata||(t._hoverdata=[]),i&&i.then?i.then(o):o(),r.stopImmediatePropagation&&r.stopImmediatePropagation())}});var ef=ye((Har,due)=>{"use strict";var Qut=qa(),$L=Pr(),ect=yv(),bM=ip(),fue=W1(),hue=JB();due.exports={moduleType:"component",name:"fx",constants:US(),schema:{layout:fue},attributes:g3(),layoutAttributes:fue,supplyLayoutGlobalDefaults:$le(),supplyDefaults:tue(),supplyLayoutDefaults:aue(),calc:lue(),getDistanceFunction:bM.getDistanceFunction,getClosest:bM.getClosest,inbox:bM.inbox,quadrature:bM.quadrature,appendArrayPointValue:bM.appendArrayPointValue,castHoverOption:rct,castHoverinfo:ict,hover:hue.hover,unhover:ect.unhover,loneHover:hue.loneHover,loneUnhover:tct,click:cue()};function tct(e){var t=$L.isD3Selection(e)?e:Qut.select(e);t.selectAll("g.hovertext").remove(),t.selectAll(".spikeline").remove()}function rct(e,t,r){return $L.castOption(e,t,"hoverlabel."+r)}function ict(e,t,r){function n(i){return $L.coerceHoverinfo({hoverinfo:i},{_module:e._module},t)}return $L.castOption(e,r,"hoverinfo",n)}});var Cg=ye(Ry=>{"use strict";Ry.selectMode=function(e){return e==="lasso"||e==="select"};Ry.drawMode=function(e){return e==="drawclosedpath"||e==="drawopenpath"||e==="drawline"||e==="drawrect"||e==="drawcircle"};Ry.openMode=function(e){return e==="drawline"||e==="drawopenpath"};Ry.rectMode=function(e){return e==="select"||e==="drawline"||e==="drawrect"||e==="drawcircle"};Ry.freeMode=function(e){return e==="lasso"||e==="drawclosedpath"||e==="drawopenpath"};Ry.selectingOrDrawing=function(e){return Ry.freeMode(e)||Ry.rectMode(e)}});var wM=ye((War,vue)=>{"use strict";vue.exports=function(t){var r=t._fullLayout;r._glcanvas&&r._glcanvas.size()&&r._glcanvas.each(function(n){n.regl&&n.regl.clear({color:!0,depth:!0})})}});var QL=ye((Xar,pue)=>{"use strict";pue.exports={undo:{width:857.1,height:1e3,path:"m857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z",transform:"matrix(1 0 0 -1 0 850)"},home:{width:928.6,height:1e3,path:"m786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z",transform:"matrix(1 0 0 -1 0 850)"},"camera-retro":{width:1e3,height:1e3,path:"m518 386q0 8-5 13t-13 5q-37 0-63-27t-26-63q0-8 5-13t13-5 12 5 5 13q0 23 16 38t38 16q8 0 13 5t5 13z m125-73q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m-572-320h858v71h-858v-71z m643 320q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z m-571 358h214v72h-214v-72z m-72-107h858v143h-462l-36-71h-360v-72z m929 143v-714q0-30-21-51t-50-21h-858q-29 0-50 21t-21 51v714q0 30 21 51t50 21h858q29 0 50-21t21-51z",transform:"matrix(1 0 0 -1 0 850)"},zoombox:{width:1e3,height:1e3,path:"m1000-25l-250 251c40 63 63 138 63 218 0 224-182 406-407 406-224 0-406-182-406-406s183-406 407-406c80 0 155 22 218 62l250-250 125 125z m-812 250l0 438 437 0 0-438-437 0z m62 375l313 0 0-312-313 0 0 312z",transform:"matrix(1 0 0 -1 0 850)"},pan:{width:1e3,height:1e3,path:"m1000 350l-187 188 0-125-250 0 0 250 125 0-188 187-187-187 125 0 0-250-250 0 0 125-188-188 186-187 0 125 252 0 0-250-125 0 187-188 188 188-125 0 0 250 250 0 0-126 187 188z",transform:"matrix(1 0 0 -1 0 850)"},zoom_plus:{width:875,height:1e3,path:"m1 787l0-875 875 0 0 875-875 0z m687-500l-187 0 0-187-125 0 0 187-188 0 0 125 188 0 0 187 125 0 0-187 187 0 0-125z",transform:"matrix(1 0 0 -1 0 850)"},zoom_minus:{width:875,height:1e3,path:"m0 788l0-876 875 0 0 876-875 0z m688-500l-500 0 0 125 500 0 0-125z",transform:"matrix(1 0 0 -1 0 850)"},autoscale:{width:1e3,height:1e3,path:"m250 850l-187 0-63 0 0-62 0-188 63 0 0 188 187 0 0 62z m688 0l-188 0 0-62 188 0 0-188 62 0 0 188 0 62-62 0z m-875-938l0 188-63 0 0-188 0-62 63 0 187 0 0 62-187 0z m875 188l0-188-188 0 0-62 188 0 62 0 0 62 0 188-62 0z m-125 188l-1 0-93-94-156 156 156 156 92-93 2 0 0 250-250 0 0-2 93-92-156-156-156 156 94 92 0 2-250 0 0-250 0 0 93 93 157-156-157-156-93 94 0 0 0-250 250 0 0 0-94 93 156 157 156-157-93-93 0 0 250 0 0 250z",transform:"matrix(1 0 0 -1 0 850)"},tooltip_basic:{width:1500,height:1e3,path:"m375 725l0 0-375-375 375-374 0-1 1125 0 0 750-1125 0z",transform:"matrix(1 0 0 -1 0 850)"},tooltip_compare:{width:1125,height:1e3,path:"m187 786l0 2-187-188 188-187 0 0 937 0 0 373-938 0z m0-499l0 1-187-188 188-188 0 0 937 0 0 376-938-1z",transform:"matrix(1 0 0 -1 0 850)"},plotlylogo:{width:1542,height:1e3,path:"m0-10h182v-140h-182v140z m228 146h183v-286h-183v286z m225 714h182v-1000h-182v1000z m225-285h182v-715h-182v715z m225 142h183v-857h-183v857z m231-428h182v-429h-182v429z m225-291h183v-138h-183v138z",transform:"matrix(1 0 0 -1 0 850)"},"z-axis":{width:1e3,height:1e3,path:"m833 5l-17 108v41l-130-65 130-66c0 0 0 38 0 39 0-1 36-14 39-25 4-15-6-22-16-30-15-12-39-16-56-20-90-22-187-23-279-23-261 0-341 34-353 59 3 60 228 110 228 110-140-8-351-35-351-116 0-120 293-142 474-142 155 0 477 22 477 142 0 50-74 79-163 96z m-374 94c-58-5-99-21-99-40 0-24 65-43 144-43 79 0 143 19 143 43 0 19-42 34-98 40v216h87l-132 135-133-135h88v-216z m167 515h-136v1c16 16 31 34 46 52l84 109v54h-230v-71h124v-1c-16-17-28-32-44-51l-89-114v-51h245v72z",transform:"matrix(1 0 0 -1 0 850)"},"3d_rotate":{width:1e3,height:1e3,path:"m922 660c-5 4-9 7-14 11-359 263-580-31-580-31l-102 28 58-400c0 1 1 1 2 2 118 108 351 249 351 249s-62 27-100 42c88 83 222 183 347 122 16-8 30-17 44-27-2 1-4 2-6 4z m36-329c0 0 64 229-88 296-62 27-124 14-175-11 157-78 225-208 249-266 8-19 11-31 11-31 2 5 6 15 11 32-5-13-8-20-8-20z m-775-239c70-31 117-50 198-32-121 80-199 346-199 346l-96-15-58-12c0 0 55-226 155-287z m603 133l-317-139c0 0 4-4 19-14 7-5 24-15 24-15s-177-147-389 4c235-287 536-112 536-112l31-22 100 299-4-1z m-298-153c6-4 14-9 24-15 0 0-17 10-24 15z",transform:"matrix(1 0 0 -1 0 850)"},camera:{width:1e3,height:1e3,path:"m500 450c-83 0-150-67-150-150 0-83 67-150 150-150 83 0 150 67 150 150 0 83-67 150-150 150z m400 150h-120c-16 0-34 13-39 29l-31 93c-6 15-23 28-40 28h-340c-16 0-34-13-39-28l-31-94c-6-15-23-28-40-28h-120c-55 0-100-45-100-100v-450c0-55 45-100 100-100h800c55 0 100 45 100 100v450c0 55-45 100-100 100z m-400-550c-138 0-250 112-250 250 0 138 112 250 250 250 138 0 250-112 250-250 0-138-112-250-250-250z m365 380c-19 0-35 16-35 35 0 19 16 35 35 35 19 0 35-16 35-35 0-19-16-35-35-35z",transform:"matrix(1 0 0 -1 0 850)"},movie:{width:1e3,height:1e3,path:"m938 413l-188-125c0 37-17 71-44 94 64 38 107 107 107 187 0 121-98 219-219 219-121 0-219-98-219-219 0-61 25-117 66-156h-115c30 33 49 76 49 125 0 103-84 187-187 187s-188-84-188-187c0-57 26-107 65-141-38-22-65-62-65-109v-250c0-70 56-126 125-126h500c69 0 125 56 125 126l188-126c34 0 62 28 62 63v375c0 35-28 63-62 63z m-750 0c-69 0-125 56-125 125s56 125 125 125 125-56 125-125-56-125-125-125z m406-1c-87 0-157 70-157 157 0 86 70 156 157 156s156-70 156-156-70-157-156-157z",transform:"matrix(1 0 0 -1 0 850)"},question:{width:857.1,height:1e3,path:"m500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-14 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-16-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z",transform:"matrix(1 0 0 -1 0 850)"},disk:{width:857.1,height:1e3,path:"m214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-8 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z",transform:"matrix(1 0 0 -1 0 850)"},drawopenpath:{width:70,height:70,path:"M33.21,85.65a7.31,7.31,0,0,1-2.59-.48c-8.16-3.11-9.27-19.8-9.88-41.3-.1-3.58-.19-6.68-.35-9-.15-2.1-.67-3.48-1.43-3.79-2.13-.88-7.91,2.32-12,5.86L3,32.38c1.87-1.64,11.55-9.66,18.27-6.9,2.13.87,4.75,3.14,5.17,9,.17,2.43.26,5.59.36,9.25a224.17,224.17,0,0,0,1.5,23.4c1.54,10.76,4,12.22,4.48,12.4.84.32,2.79-.46,5.76-3.59L43,80.07C41.53,81.57,37.68,85.64,33.21,85.65ZM74.81,69a11.34,11.34,0,0,0,6.09-6.72L87.26,44.5,74.72,32,56.9,38.35c-2.37.86-5.57,3.42-6.61,6L38.65,72.14l8.42,8.43ZM55,46.27a7.91,7.91,0,0,1,3.64-3.17l14.8-5.3,8,8L76.11,60.6l-.06.19a6.37,6.37,0,0,1-3,3.43L48.25,74.59,44.62,71Zm16.57,7.82A6.9,6.9,0,1,0,64.64,61,6.91,6.91,0,0,0,71.54,54.09Zm-4.05,0a2.85,2.85,0,1,1-2.85-2.85A2.86,2.86,0,0,1,67.49,54.09Zm-4.13,5.22L60.5,56.45,44.26,72.7l2.86,2.86ZM97.83,35.67,84.14,22l-8.57,8.57L89.26,44.24Zm-13.69-8,8,8-2.85,2.85-8-8Z",transform:"matrix(1 0 0 1 -15 -15)"},drawclosedpath:{width:90,height:90,path:"M88.41,21.12a26.56,26.56,0,0,0-36.18,0l-2.07,2-2.07-2a26.57,26.57,0,0,0-36.18,0,23.74,23.74,0,0,0,0,34.8L48,90.12a3.22,3.22,0,0,0,4.42,0l36-34.21a23.73,23.73,0,0,0,0-34.79ZM84,51.24,50.16,83.35,16.35,51.25a17.28,17.28,0,0,1,0-25.47,20,20,0,0,1,27.3,0l4.29,4.07a3.23,3.23,0,0,0,4.44,0l4.29-4.07a20,20,0,0,1,27.3,0,17.27,17.27,0,0,1,0,25.46ZM66.76,47.68h-33v6.91h33ZM53.35,35H46.44V68h6.91Z",transform:"matrix(1 0 0 1 -5 -5)"},lasso:{width:1031,height:1e3,path:"m1018 538c-36 207-290 336-568 286-277-48-473-256-436-463 10-57 36-108 76-151-13-66 11-137 68-183 34-28 75-41 114-42l-55-70 0 0c-2-1-3-2-4-3-10-14-8-34 5-45 14-11 34-8 45 4 1 1 2 3 2 5l0 0 113 140c16 11 31 24 45 40 4 3 6 7 8 11 48-3 100 0 151 9 278 48 473 255 436 462z m-624-379c-80 14-149 48-197 96 42 42 109 47 156 9 33-26 47-66 41-105z m-187-74c-19 16-33 37-39 60 50-32 109-55 174-68-42-25-95-24-135 8z m360 75c-34-7-69-9-102-8 8 62-16 128-68 170-73 59-175 54-244-5-9 20-16 40-20 61-28 159 121 317 333 354s407-60 434-217c28-159-121-318-333-355z",transform:"matrix(1 0 0 -1 0 850)"},selectbox:{width:1e3,height:1e3,path:"m0 850l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-285l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z",transform:"matrix(1 0 0 -1 0 850)"},drawline:{width:70,height:70,path:"M60.64,62.3a11.29,11.29,0,0,0,6.09-6.72l6.35-17.72L60.54,25.31l-17.82,6.4c-2.36.86-5.57,3.41-6.6,6L24.48,65.5l8.42,8.42ZM40.79,39.63a7.89,7.89,0,0,1,3.65-3.17l14.79-5.31,8,8L61.94,54l-.06.19a6.44,6.44,0,0,1-3,3.43L34.07,68l-3.62-3.63Zm16.57,7.81a6.9,6.9,0,1,0-6.89,6.9A6.9,6.9,0,0,0,57.36,47.44Zm-4,0a2.86,2.86,0,1,1-2.85-2.85A2.86,2.86,0,0,1,53.32,47.44Zm-4.13,5.22L46.33,49.8,30.08,66.05l2.86,2.86ZM83.65,29,70,15.34,61.4,23.9,75.09,37.59ZM70,21.06l8,8-2.84,2.85-8-8ZM87,80.49H10.67V87H87Z",transform:"matrix(1 0 0 1 -15 -15)"},drawrect:{width:80,height:80,path:"M78,22V79H21V22H78m9-9H12V88H87V13ZM68,46.22H31V54H68ZM53,32H45.22V69H53Z",transform:"matrix(1 0 0 1 -10 -10)"},drawcircle:{width:80,height:80,path:"M50,84.72C26.84,84.72,8,69.28,8,50.3S26.84,15.87,50,15.87,92,31.31,92,50.3,73.16,84.72,50,84.72Zm0-60.59c-18.6,0-33.74,11.74-33.74,26.17S31.4,76.46,50,76.46,83.74,64.72,83.74,50.3,68.6,24.13,50,24.13Zm17.15,22h-34v7.11h34Zm-13.8-13H46.24v34h7.11Z",transform:"matrix(1 0 0 1 -10 -10)"},eraseshape:{width:80,height:80,path:"M82.77,78H31.85L6,49.57,31.85,21.14H82.77a8.72,8.72,0,0,1,8.65,8.77V69.24A8.72,8.72,0,0,1,82.77,78ZM35.46,69.84H82.77a.57.57,0,0,0,.49-.6V29.91a.57.57,0,0,0-.49-.61H35.46L17,49.57Zm32.68-34.7-24,24,5,5,24-24Zm-19,.53-5,5,24,24,5-5Z",transform:"matrix(1 0 0 1 -10 -10)"},spikeline:{width:1e3,height:1e3,path:"M512 409c0-57-46-104-103-104-57 0-104 47-104 104 0 57 47 103 104 103 57 0 103-46 103-103z m-327-39l92 0 0 92-92 0z m-185 0l92 0 0 92-92 0z m370-186l92 0 0 93-92 0z m0-184l92 0 0 92-92 0z",transform:"matrix(1.5 0 0 -1.5 0 850)"},pencil:{width:1792,height:1792,path:"M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z",transform:"matrix(1 0 0 1 0 1)"},newplotlylogo:{name:"newplotlylogo",svg:[""," plotly-logomark"," "," "," "," "," "," "," "," "," "," "," "," "," ",""].join("")}}});var tP=ye((Zar,gue)=>{"use strict";var eP=32;gue.exports={CIRCLE_SIDES:eP,i000:0,i090:eP/4,i180:eP/2,i270:eP/4*3,cos45:Math.cos(Math.PI/4),sin45:Math.sin(Math.PI/4),SQRT2:Math.sqrt(2)}});var rP=ye((Yar,yue)=>{"use strict";var nct=Pr().strTranslate;function mue(e,t){switch(e.type){case"log":return e.p2d(t);case"date":return e.p2r(t,0,e.calendar);default:return e.p2r(t)}}function act(e,t){switch(e.type){case"log":return e.d2p(t);case"date":return e.r2p(t,0,e.calendar);default:return e.r2p(t)}}function oct(e){var t=e._id.charAt(0)==="y"?1:0;return function(r){return mue(e,r[t])}}function sct(e){return nct(e.xaxis._offset,e.yaxis._offset)}yue.exports={p2r:mue,r2p:act,axValue:oct,getTransform:sct}});var m_=ye(Dy=>{"use strict";var lct=aM(),bue=tP(),rT=bue.CIRCLE_SIDES,eN=bue.SQRT2,wue=rP(),_ue=wue.p2r,xue=wue.r2p,uct=[0,3,4,5,6,1,2],cct=[0,3,4,1,2];Dy.writePaths=function(e){var t=e.length;if(!t)return"M0,0Z";for(var r="",n=0;n0&&l{"use strict";var Tue=df(),kue=Cg(),fct=kue.drawMode,hct=kue.openMode,iT=tP(),Aue=iT.i000,Sue=iT.i090,Mue=iT.i180,Eue=iT.i270,dct=iT.cos45,vct=iT.sin45,Cue=rP(),nP=Cue.p2r,y_=Cue.r2p,pct=o_(),gct=pct.clearOutline,aP=m_(),mct=aP.readPaths,yct=aP.writePaths,_ct=aP.ellipseOver,xct=aP.fixDatesForPaths;function bct(e,t){if(e.length){var r=e[0][0];if(r){var n=t.gd,i=t.isActiveShape,a=t.dragmode,o=(n.layout||{}).shapes||[];if(!fct(a)&&i!==void 0){var s=n._fullLayout._activeShapeIndex;if(s{"use strict";var wct=Cg(),Tct=wct.selectMode,Act=o_(),Sct=Act.clearOutline,tN=m_(),Mct=tN.readPaths,Ect=tN.writePaths,kct=tN.fixDatesForPaths;Iue.exports=function(t,r){if(t.length){var n=t[0][0];if(n){var i=n.getAttribute("d"),a=r.gd,o=a._fullLayout.newselection,s=r.plotinfo,l=s.xaxis,u=s.yaxis,c=r.isActiveSelection,f=r.dragmode,h=(a.layout||{}).selections||[];if(!Tct(f)&&c!==void 0){var d=a._fullLayout._activeSelectionIndex;if(d{"use strict";Rue.exports={segmentRE:/[MLHVQCTSZ][^MLHVQCTSZ]*/g,paramRE:/[^\s,]+/g,paramIsX:{M:{0:!0,drawn:0},L:{0:!0,drawn:0},H:{0:!0,drawn:0},V:{},Q:{0:!0,2:!0,drawn:2},C:{0:!0,2:!0,4:!0,drawn:4},T:{0:!0,drawn:0},S:{0:!0,2:!0,drawn:2},Z:{}},paramIsY:{M:{1:!0,drawn:1},L:{1:!0,drawn:1},H:{},V:{0:!0,drawn:0},Q:{1:!0,3:!0,drawn:3},C:{1:!0,3:!0,5:!0,drawn:5},T:{1:!0,drawn:1},S:{1:!0,3:!0,drawn:3},Z:{}},numParams:{M:2,L:2,H:1,V:1,Q:4,C:6,T:2,S:4,Z:0}}});var x_=ye(Dd=>{"use strict";var Em=AM(),Due=Pr(),__=ho();Dd.rangeToShapePosition=function(e){return e.type==="log"?e.r2d:function(t){return t}};Dd.shapePositionToRange=function(e){return e.type==="log"?e.d2r:function(t){return t}};Dd.decodeDate=function(e){return function(t){return t.replace&&(t=t.replace("_"," ")),e(t)}};Dd.encodeDate=function(e){return function(t){return e(t).replace(" ","_")}};Dd.extractPathCoords=function(e,t,r){var n=[],i=e.match(Em.segmentRE);return i.forEach(function(a){var o=t[a.charAt(0)].drawn;if(o!==void 0){var s=a.slice(1).match(Em.paramRE);if(!(!s||s.length{let s=o.charAt(0),l=i[s].drawn!==void 0;return a+(l?1:0)},0)};Dd.getDataToPixel=function(e,t,r,n,i){var a=e._fullLayout._size,o;if(t)if(i==="domain")o=function(l){return t._length*(n?1-l:l)+t._offset};else{var s=Dd.shapePositionToRange(t);o=function(l){var u=Mm(t,r);return t._offset+t.r2p(s(l,!0))+u},t.type==="date"&&(o=Dd.decodeDate(o))}else n?o=function(l){return a.t+a.h*(1-l)}:o=function(l){return a.l+a.w*l};return o};Dd.getPixelToData=function(e,t,r,n){var i=e._fullLayout._size,a;if(t)if(n==="domain")a=function(s){var l=(s-t._offset)/t._length;return r?1-l:l};else{var o=Dd.rangeToShapePosition(t);a=function(s){return o(t.p2r(s-t._offset))}}else r?a=function(s){return 1-(s-i.t)/i.h}:a=function(s){return(s-i.l)/i.w};return a};Dd.roundPositionForSharpStrokeRendering=function(e,t){var r=Math.round(t%2)===1,n=Math.round(e);return r?n+.5:n};Dd.makeShapesOptionsAndPlotinfo=function(e,t){var r=e._fullLayout.shapes[t]||{},n=e._fullLayout._plots[r.xref+r.yref],i=!!n;return i?n._hadPlotinfo=!0:(n={},r.xref&&r.xref!=="paper"&&(n.xaxis=e._fullLayout[r.xref+"axis"]),r.yref&&r.yref!=="paper"&&(n.yaxis=e._fullLayout[r.yref+"axis"])),n.xsizemode=r.xsizemode,n.ysizemode=r.ysizemode,n.xanchor=r.xanchor,n.yanchor=r.yanchor,{options:r,plotinfo:n}};Dd.makeSelectionsOptionsAndPlotinfo=function(e,t){var r=e._fullLayout.selections[t]||{},n=e._fullLayout._plots[r.xref+r.yref],i=!!n;return i?n._hadPlotinfo=!0:(n={},r.xref&&(n.xaxis=e._fullLayout[r.xref+"axis"]),r.yref&&(n.yaxis=e._fullLayout[r.yref+"axis"])),{options:r,plotinfo:n}};Dd.getPathString=function(e,t){let r=t.type,n=__.getRefType(t.xref),i=__.getRefType(t.yref),a=e._fullLayout._size;var o,s,l,u,c,f,h,d,v,m,b,p;function k(P,E,z,q){var V;if(P)if(E==="domain")q?V=function(G){return P._offset+P._length*(1-G)}:V=function(G){return P._offset+P._length*G};else{let G=Dd.shapePositionToRange(P);V=function(Z){return P._offset+P.r2p(G(Z,!0))},z==="path"&&P.type==="date"&&(V=Dd.decodeDate(V))}else q?V=function(G){return a.t+a.h*(1-G)}:V=function(G){return a.l+a.w*G};return V}if(n==="array"?(h=[],o=t.xref.map(function(P){return __.getFromId(e,P)}),h=t.xref.map(function(P,E){return k(o[E],__.getRefType(P),r,!1)})):(o=__.getFromId(e,t.xref),h=k(o,n,r,!1)),i==="array"?(d=[],s=t.yref.map(function(P){return __.getFromId(e,P)}),d=t.yref.map(function(P,E){return k(s[E],__.getRefType(P),r,!0)})):(s=__.getFromId(e,t.yref),d=k(s,i,r,!0)),r==="path")return Cct(t,h,d);if(n==="array")l=Mm(o[0],t.x0shift),u=Mm(o[1],t.x1shift),v=h[0](t.x0)+l,m=h[1](t.x1)+u;else if(l=Mm(o,t.x0shift),u=Mm(o,t.x1shift),t.xsizemode==="pixel"){let P=h(t.xanchor);v=P+t.x0+l,m=P+t.x1+u}else v=h(t.x0)+l,m=h(t.x1)+u;if(i==="array")c=Mm(s[0],t.y0shift),f=Mm(s[1],t.y1shift),b=d[0](t.y0)+c,p=d[1](t.y1)+f;else if(c=Mm(s,t.y0shift),f=Mm(s,t.y1shift),t.ysizemode==="pixel"){let P=d(t.yanchor);b=P-t.y0+c,p=P-t.y1+f}else b=d(t.y0)+c,p=d(t.y1)+f;if(r==="line")return"M"+v+","+b+"L"+m+","+p;if(r==="rect")return"M"+v+","+b+"H"+m+"V"+p+"H"+v+"Z";var M=(v+m)/2,T=(b+p)/2,L=Math.abs(M-v),x=Math.abs(T-b),C="A"+L+","+x,S=M+L+","+T,g=M+","+(T-x);return"M"+S+C+" 0 1,1 "+g+C+" 0 0,1 "+S+"Z"};function Cct(e,t,r){let n=e.path,i=e.xsizemode,a=e.ysizemode,o=e.xanchor,s=e.yanchor,l=Array.isArray(e.xref),u=Array.isArray(e.yref);var c=0,f=0;return n.replace(Em.segmentRE,function(h){var d=0,v=h.charAt(0),m=Em.paramIsX[v],b=Em.paramIsY[v],p=Em.numParams[v];let k=m.drawn!==void 0,M=b.drawn!==void 0,T=l?t[c]:t,L=u?r[f]:r;var x=h.slice(1).replace(Em.paramRE,function(C){return m[d]?i==="pixel"?C=T(o)+Number(C):C=T(C):b[d]&&(a==="pixel"?C=L(s)-Number(C):C=L(C)),d++,d>p&&(C="X"),C});return d>p&&(x=x.replace(/[\s,]*X.*/,""),Due.log("Ignoring extra params in segment "+h)),k&&c++,M&&f++,v+x})}Dd.getPixelShift=Mm;function Mm(e,t){t=t||0;var r=0;return t&&e&&(e.type==="category"||e.type==="multicategory")&&(r=(e.r2p(1)-e.r2p(0))*t),r}});var iN=ye((tor,que)=>{"use strict";var Lct=Pr(),km=ho(),Fue=Zl(),zue=So(),Pct=m_().readPaths,Zb=x_(),Ict=Zb.getPathString,SM=F6(),Rct=Dh().FROM_TL;que.exports=function(t,r,n,i){if(i.selectAll(".shape-label").remove(),!!(n.label.text||n.label.texttemplate)){var a;if(n.label.texttemplate){var o={};if(n.type!=="path"){var s=km.getFromId(t,n.xref),l=km.getFromId(t,n.yref);let ae=Array.isArray(n.xref),_e=Array.isArray(n.yref);for(var u in SM){var c=typeof SM[u]=="function",f=!ae||SM.simpleXVariables.includes(u),h=!_e||SM.simpleYVariables.includes(u);if(c&&f&&h){var d=SM[u](n,s,l);d!==void 0&&(o[u]=d)}}}a=Lct.texttemplateStringForShapes({data:[o],fallback:n.label.texttemplatefallback,locale:t._fullLayout._d3locale,template:n.label.texttemplate})}else a=n.label.text;var v={"data-index":r},m=n.label.font,b={"data-notex":1},p=i.append("g").attr(v).classed("shape-label",!0),k=p.append("text").attr(b).classed("shape-label-text",!0).text(a),M,T,L,x;if(n.path){var C=Ict(t,n),S=Pct(C,t);M=1/0,L=1/0,T=-1/0,x=-1/0;for(var g=0;gZb.getDataToPixel(t,He,ce,!1,lt)(Pe),me=(Pe,ce,He,lt)=>Zb.getDataToPixel(t,He,ce,!0,lt)(Pe);if(n.xsizemode==="pixel"){let Pe=Le(n.xanchor,void 0,Ee,Se),ce=Zb.getPixelShift(Ee,n.x0shift),He=Zb.getPixelShift(Ee,n.x1shift);M=Pe+n.x0+ce,T=Pe+n.x1+He}else M=Le(n.x0,n.x0shift,Ee,Se),T=Le(n.x1,n.x1shift,Ce,ke);if(n.ysizemode==="pixel"){let Pe=me(n.yanchor,void 0,ge,be),ce=Zb.getPixelShift(ge,n.y0shift),He=Zb.getPixelShift(ge,n.y1shift);L=Pe-n.y0+ce,x=Pe-n.y1+He}else L=me(n.y0,n.y0shift,ge,be),x=me(n.y1,n.y1shift,re,Be)}var G=n.label.textangle;G==="auto"&&(n.type==="line"?G=Dct(M,L,T,x):G=0),k.call(function(ae){return ae.call(zue.font,m).attr({}),Fue.convertToTspans(ae,t),ae});var Z=zue.bBox(k.node()),j=Fct(M,L,T,x,n,G,Z),N=j.textx,H=j.texty,ie=j.xanchor;k.attr({"text-anchor":{left:"start",center:"middle",right:"end"}[ie],y:H,x:N,transform:"rotate("+G+","+N+","+H+")"}).call(Fue.positionText,N,H)}};function Dct(e,t,r,n){var i,a;return a=Math.abs(r-e),r>=e?i=t-n:i=n-t,-180/Math.PI*Math.atan2(i,a)}function Fct(e,t,r,n,i,a,o){var s=i.label.textposition,l=i.label.textangle,u=i.label.padding,c=i.type,f=Math.PI/180*a,h=Math.sin(f),d=Math.cos(f),v=i.label.xanchor,m=i.label.yanchor,b,p,k,M;if(c==="line"){s==="start"?(b=e,p=t):s==="end"?(b=r,p=n):(b=(e+r)/2,p=(t+n)/2),v==="auto"&&(s==="start"?l==="auto"?r>e?v="left":re?v="right":re?v="right":re?v="left":r{"use strict";var zct=Pr(),qct=zct.strTranslate,Oue=yv(),Uue=Cg(),Oct=Uue.drawMode,Vue=Uue.selectMode,Gue=Oa(),Bue=ka(),lP=tP(),Bct=lP.i000,Nct=lP.i090,Uct=lP.i180,Vct=lP.i270,Gct=o_(),Hue=Gct.clearOutlineControllers,aN=m_(),sP=aN.pointsOnRectangle,nN=aN.pointsOnEllipse,Hct=aN.writePaths,jct=oP().newShapes,Wct=oP().createShapeObj,Xct=rN(),Zct=iN();jue.exports=function e(t,r,n,i){i||(i=0);var a=n.gd;function o(){e(t,r,n,i++),(nN(t[0])||n.hasText)&&s({redrawing:!0})}function s(j){var N={};n.isActiveShape!==void 0&&(n.isActiveShape=!1,N=jct(r,n)),n.isActiveSelection!==void 0&&(n.isActiveSelection=!1,N=Xct(r,n),a._fullLayout._reselect=!0),Object.keys(N).length&&Gue.call((j||{}).redrawing?"relayout":"_guiRelayout",a,N)}var l=a._fullLayout,u=l._zoomlayer,c=n.dragmode,f=Oct(c),h=Vue(c);(f||h)&&(a._fullLayout._outlining=!0),Hue(a),r.attr("d",Hct(t));var d,v,m,b,p;if(!i&&(n.isActiveShape||n.isActiveSelection)){p=Yct([],t);var k=u.append("g").attr("class","outline-controllers");P(k),Z()}if(f&&n.hasText){var M=u.select(".label-temp"),T=Wct(r,n,n.dragmode);Zct(a,"label-temp",T,M)}function L(j){m=+j.srcElement.getAttribute("data-i"),b=+j.srcElement.getAttribute("data-j"),d[m][b].moveFn=x}function x(j,N){if(t.length){var H=p[m][b][1],ie=p[m][b][2],ae=t[m],_e=ae.length;if(sP(ae)){var Ee=j,Ce=N;if(n.isActiveSelection){var ge=Nue(ae,b);ge[1]===ae[b][1]?Ce=0:Ee=0}for(var re=0;re<_e;re++)if(re!==b){var Se=ae[re];Se[1]===ae[b][1]&&(Se[1]=H+Ee),Se[2]===ae[b][2]&&(Se[2]=ie+Ce)}if(ae[b][1]=H+Ee,ae[b][2]=ie+Ce,!sP(ae))for(var ke=0;ke<_e;ke++)for(var be=0;be1&&!(j.length===2&&j[1][0]==="Z")&&(b===0&&(j[0][0]="M"),t[m]=j,o(),s())}}function g(j,N){if(j===2){m=+N.srcElement.getAttribute("data-i"),b=+N.srcElement.getAttribute("data-j");var H=t[m];!sP(H)&&!nN(H)&&S()}}function P(j){d=[];for(var N=0;N{"use strict";var Jct=qa(),Jue=Oa(),sN=Pr(),Yb=ho(),$ct=m_().readPaths,Qct=uP(),fP=iN(),$ue=o_().clearOutlineControllers,oN=ka(),hP=So(),eft=vl().arrayEditor,Wue=yv(),Xue=ef(),Zue=Eg(),Kb=AM(),Ep=x_(),lN=Ep.getPathString;tce.exports={draw:uN,drawOne:Que,eraseActiveShape:aft,drawLabel:fP};function uN(e){var t=e._fullLayout;t._shapeUpperLayer.selectAll("path").remove(),t._shapeLowerLayer.selectAll("path").remove(),t._shapeUpperLayer.selectAll("text").remove(),t._shapeLowerLayer.selectAll("text").remove();for(var r in t._plots){var n=t._plots[r].shapelayer;n&&(n.selectAll("path").remove(),n.selectAll("text").remove())}for(var i=0;i{if(!e._dragging&&e._fullLayout.hoveranywhere){let o=i(a);o&&Xue.hover(e,o,r.id)}}),n.addEventListener("click",a=>{if(!e._dragged&&e._fullLayout.clickanywhere){let o=i(a);o&&Xue.click(e,o,r.id)}})}function ece(e,t,r){let n=r.xref,i=r.yref;if(Array.isArray(n)||Array.isArray(i)){let a="clip"+t._fullLayout._uid+"shape"+r._index,o=rft(t,n,i);sN.ensureSingleById(t._fullLayout._clips,"clipPath",a,function(s){s.append("rect")}).select("rect").attr(o),hP.setClipUrl(e,a,t)}else{let a=(n+i).replace(/paper/g,"").replace(/[xyz][0-9]* *domain/g,"");hP.setClipUrl(e,a?"clip"+t._fullLayout._uid+a:null,t)}}function rft(e,t,r){let n=e._fullLayout._size;function i(s,l){let u=(Array.isArray(s)?s:[s]).map(h=>Yb.getFromId(e,h)).filter(Boolean);if(!u.length)return l?[n.t,n.t+n.h]:[n.l,n.l+n.w];let c=u.map(function(h){return h._offset}),f=u.map(function(h){return h._offset+h._length});return[Math.min(...c),Math.max(...f)]}let a=i(t,!1),o=i(r,!0);return{x:a[0],y:o[0],width:a[1]-a[0],height:o[1]-o[0]}}function ift(e,t,r,n,i,a){var o=10,s=10,l=r.xsizemode==="pixel",u=r.ysizemode==="pixel",c=r.type==="line",f=r.type==="path",h=a.modifyItem,d,v,m,b,p,k,M,T,L,x,C,S,g,P,E,z=Jct.select(t.node().parentNode),q=Yb.getFromId(e,r.xref),V=Yb.getRefType(r.xref),G=Yb.getFromId(e,r.yref),Z=Yb.getRefType(r.yref),j=r.x0shift,N=r.x1shift,H=r.y0shift,ie=r.y1shift,ae=function(at,ct){var ar=Ep.getDataToPixel(e,q,ct,!1,V);return ar(at)},_e=function(at,ct){var ar=Ep.getDataToPixel(e,G,ct,!0,Z);return ar(at)},Ee=Ep.getPixelToData(e,q,!1,V),Ce=Ep.getPixelToData(e,G,!0,Z),ge=ke(),re={element:ge.node(),gd:e,prepFn:Le,doneFn:me,clickFn:Pe},Se;Wue.init(re),ge.node().onmousemove=Be;function ke(){return c?be():t}function be(){var at=10,ct=Math.max(r.line.width,at),ar=i.append("g").attr("data-index",n).attr("drag-helper",!0);ar.append("path").attr("d",t.attr("d")).style({cursor:"move","stroke-width":ct,"stroke-opacity":"0"});var Vt={"fill-opacity":"0"},rr=Math.max(ct/2,at);return ar.append("circle").attr({"data-line-point":"start-point",cx:l?ae(r.xanchor)+r.x0:ae(r.x0,j),cy:u?_e(r.yanchor)-r.y0:_e(r.y0,H),r:rr}).style(Vt).classed("cursor-grab",!0),ar.append("circle").attr({"data-line-point":"end-point",cx:l?ae(r.xanchor)+r.x1:ae(r.x1,N),cy:u?_e(r.yanchor)-r.y1:_e(r.y1,ie),r:rr}).style(Vt).classed("cursor-grab",!0),ar}function Be(at){if(cP(e)){Se=null;return}if(c)at.target.tagName==="path"?Se="move":Se=at.target.attributes["data-line-point"].value==="start-point"?"resize-over-start-point":"resize-over-end-point";else{var ct=re.element.getBoundingClientRect(),ar=ct.right-ct.left,Vt=ct.bottom-ct.top,rr=at.clientX-ct.left,tt=at.clientY-ct.top,je=!f&&ar>o&&Vt>s&&!at.shiftKey?Wue.getCursor(rr/ar,1-tt/Vt):"move";Zue(t,je),Se=je.split("-")[0]}}function Le(at){cP(e)||(l&&(p=ae(r.xanchor)),u&&(k=_e(r.yanchor)),r.type==="path"?E=r.path:(d=l?r.x0:ae(r.x0),v=u?r.y0:_e(r.y0),m=l?r.x1:ae(r.x1),b=u?r.y1:_e(r.y1)),db?(M=v,C="y0",T=b,S="y1"):(M=b,C="y1",T=v,S="y0"),Be(at),lt(i,r),Ht(t,r,e),re.moveFn=Se==="move"?ce:He,re.altKey=at.altKey)}function me(){cP(e)||(Zue(t),mt(i),ece(t,e,r),Jue.call("_guiRelayout",e,a.getUpdateObj()))}function Pe(){cP(e)||mt(i)}function ce(at,ct){if(r.type==="path"){var ar=function(tt){return tt},Vt=ar,rr=ar;l?h("xanchor",r.xanchor=Ee(p+at)):(Vt=function(je){return Ee(ae(je)+at)},q&&q.type==="date"&&(Vt=Ep.encodeDate(Vt))),u?h("yanchor",r.yanchor=Ce(k+ct)):(rr=function(je){return Ce(_e(je)+ct)},G&&G.type==="date"&&(rr=Ep.encodeDate(rr))),h("path",r.path=Yue(E,Vt,rr))}else l?h("xanchor",r.xanchor=Ee(p+at)):(h("x0",r.x0=Ee(d+at)),h("x1",r.x1=Ee(m+at))),u?h("yanchor",r.yanchor=Ce(k+ct)):(h("y0",r.y0=Ce(v+ct)),h("y1",r.y1=Ce(b+ct)));t.attr("d",lN(e,r)),lt(i,r),fP(e,n,r,z)}function He(at,ct){if(f){var ar=function(Ar){return Ar},Vt=ar,rr=ar;l?h("xanchor",r.xanchor=Ee(p+at)):(Vt=function(ei){return Ee(ae(ei)+at)},q&&q.type==="date"&&(Vt=Ep.encodeDate(Vt))),u?h("yanchor",r.yanchor=Ce(k+ct)):(rr=function(ei){return Ce(_e(ei)+ct)},G&&G.type==="date"&&(rr=Ep.encodeDate(rr))),h("path",r.path=Yue(E,Vt,rr))}else if(c){if(Se==="resize-over-start-point"){var tt=d+at,je=u?v-ct:v+ct;h("x0",r.x0=l?tt:Ee(tt)),h("y0",r.y0=u?je:Ce(je))}else if(Se==="resize-over-end-point"){var Ue=m+at,Ae=u?b-ct:b+ct;h("x1",r.x1=l?Ue:Ee(Ue)),h("y1",r.y1=u?Ae:Ce(Ae))}}else{var rt=function(Ar){return Se.indexOf(Ar)!==-1},St=rt("n"),Tt=rt("s"),dt=rt("w"),Et=rt("e"),pt=St?M+ct:M,jt=Tt?T+ct:T,or=dt?L+at:L,mr=Et?x+at:x;u&&(St&&(pt=M-ct),Tt&&(jt=T-ct)),(!u&&jt-pt>s||u&&pt-jt>s)&&(h(C,r[C]=u?pt:Ce(pt)),h(S,r[S]=u?jt:Ce(jt))),mr-or>o&&(h(g,r[g]=l?or:Ee(or)),h(P,r[P]=l?mr:Ee(mr)))}t.attr("d",lN(e,r)),lt(i,r),fP(e,n,r,z)}function lt(at,ct){(l||u)&&ar();function ar(){var Vt=ct.type!=="path",rr=at.selectAll(".visual-cue").data([0]),tt=1;rr.enter().append("path").attr({fill:"#fff","fill-rule":"evenodd",stroke:"#000","stroke-width":tt}).classed("visual-cue",!0);var je=ae(l?ct.xanchor:sN.midRange(Vt?[ct.x0,ct.x1]:Ep.extractPathCoords(ct.path,Kb.paramIsX))),Ue=_e(u?ct.yanchor:sN.midRange(Vt?[ct.y0,ct.y1]:Ep.extractPathCoords(ct.path,Kb.paramIsY)));if(je=Ep.roundPositionForSharpStrokeRendering(je,tt),Ue=Ep.roundPositionForSharpStrokeRendering(Ue,tt),l&&u){var Ae="M"+(je-1-tt)+","+(Ue-1-tt)+"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z";rr.attr("d",Ae)}else if(l){var rt="M"+(je-1-tt)+","+(Ue-9-tt)+"v18 h2 v-18 Z";rr.attr("d",rt)}else{var St="M"+(je-9-tt)+","+(Ue-1-tt)+"h18 v2 h-18 Z";rr.attr("d",St)}}}function mt(at){at.selectAll(".visual-cue").remove()}function Ht(at,ct,ar){var Vt=ct.xref,rr=ct.yref,tt=Yb.getFromId(ar,Vt),je=Yb.getFromId(ar,rr),Ue="";Vt!=="paper"&&!tt.autorange&&(Ue+=Vt),rr!=="paper"&&!je.autorange&&(Ue+=rr),hP.setClipUrl(at,Ue?"clip"+ar._fullLayout._uid+Ue:null,ar)}}function Yue(e,t,r){return e.replace(Kb.segmentRE,function(n){var i=0,a=n.charAt(0),o=Kb.paramIsX[a],s=Kb.paramIsY[a],l=Kb.numParams[a],u=n.slice(1).replace(Kb.paramRE,function(c){return i>=l||(o[i]?c=t(c):s[i]&&(c=r(c)),i++),c});return a+u})}function nft(e,t){if(dP(e)){var r=t.node(),n=+r.getAttribute("data-index");if(n>=0){if(n===e._fullLayout._activeShapeIndex){Kue(e);return}e._fullLayout._activeShapeIndex=n,e._fullLayout._deactivateShape=Kue,uN(e)}}}function Kue(e){if(dP(e)){var t=e._fullLayout._activeShapeIndex;t>=0&&($ue(e),delete e._fullLayout._activeShapeIndex,uN(e))}}function aft(e){if(dP(e)){$ue(e);var t=e._fullLayout._activeShapeIndex,r=(e.layout||{}).shapes||[];if(t{"use strict";var S0=Oa(),rce=Mc(),ice=df(),Pl=QL(),oft=vP().eraseActiveShape,pP=Pr(),tl=pP._,Il=cce.exports={};Il.toImage={name:"toImage",title:function(e){var t=e._context.toImageButtonOptions||{},r=t.format||"png";return r==="png"?tl(e,"Download plot as a PNG"):tl(e,"Download plot")},icon:Pl.camera,click:function(e){var t=e._context.toImageButtonOptions,r={format:t.format||"png"};pP.notifier(tl(e,"Taking snapshot - this may take a few seconds"),"long",e),["filename","width","height","scale"].forEach(function(n){n in t&&(r[n]=t[n])}),S0.call("downloadImage",e,r).then(function(n){pP.notifier(tl(e,"Snapshot succeeded")+" - "+n,"long",e)}).catch(function(){pP.notifier(tl(e,"Sorry, there was a problem downloading your snapshot!"),"long",e)})}};Il.sendDataToCloud={name:"sendDataToCloud",title:function(e){return tl(e,"Edit in Chart Studio")},icon:Pl.disk,click:function(e){rce.sendDataToCloud(e)}};Il.editInChartStudio={name:"editInChartStudio",title:function(e){return tl(e,"Edit in Chart Studio")},icon:Pl.pencil,click:function(e){rce.sendDataToCloud(e)}};Il.zoom2d={name:"zoom2d",_cat:"zoom",title:function(e){return tl(e,"Zoom")},attr:"dragmode",val:"zoom",icon:Pl.zoombox,click:Bv};Il.pan2d={name:"pan2d",_cat:"pan",title:function(e){return tl(e,"Pan")},attr:"dragmode",val:"pan",icon:Pl.pan,click:Bv};Il.select2d={name:"select2d",_cat:"select",title:function(e){return tl(e,"Box Select")},attr:"dragmode",val:"select",icon:Pl.selectbox,click:Bv};Il.lasso2d={name:"lasso2d",_cat:"lasso",title:function(e){return tl(e,"Lasso Select")},attr:"dragmode",val:"lasso",icon:Pl.lasso,click:Bv};Il.drawclosedpath={name:"drawclosedpath",title:function(e){return tl(e,"Draw closed freeform")},attr:"dragmode",val:"drawclosedpath",icon:Pl.drawclosedpath,click:Bv};Il.drawopenpath={name:"drawopenpath",title:function(e){return tl(e,"Draw open freeform")},attr:"dragmode",val:"drawopenpath",icon:Pl.drawopenpath,click:Bv};Il.drawline={name:"drawline",title:function(e){return tl(e,"Draw line")},attr:"dragmode",val:"drawline",icon:Pl.drawline,click:Bv};Il.drawrect={name:"drawrect",title:function(e){return tl(e,"Draw rectangle")},attr:"dragmode",val:"drawrect",icon:Pl.drawrect,click:Bv};Il.drawcircle={name:"drawcircle",title:function(e){return tl(e,"Draw circle")},attr:"dragmode",val:"drawcircle",icon:Pl.drawcircle,click:Bv};Il.eraseshape={name:"eraseshape",title:function(e){return tl(e,"Erase active shape")},icon:Pl.eraseshape,click:oft};Il.zoomIn2d={name:"zoomIn2d",_cat:"zoomin",title:function(e){return tl(e,"Zoom in")},attr:"zoom",val:"in",icon:Pl.zoom_plus,click:Bv};Il.zoomOut2d={name:"zoomOut2d",_cat:"zoomout",title:function(e){return tl(e,"Zoom out")},attr:"zoom",val:"out",icon:Pl.zoom_minus,click:Bv};Il.autoScale2d={name:"autoScale2d",_cat:"autoscale",title:function(e){return tl(e,"Autoscale")},attr:"zoom",val:"auto",icon:Pl.autoscale,click:Bv};Il.resetScale2d={name:"resetScale2d",_cat:"resetscale",title:function(e){return tl(e,"Reset axes")},attr:"zoom",val:"reset",icon:Pl.home,click:Bv};Il.hoverClosestCartesian={name:"hoverClosestCartesian",_cat:"hoverclosest",title:function(e){return tl(e,"Show closest data on hover")},attr:"hovermode",val:"closest",icon:Pl.tooltip_basic,gravity:"ne",click:Bv};Il.hoverCompareCartesian={name:"hoverCompareCartesian",_cat:"hoverCompare",title:function(e){return tl(e,"Compare data on hover")},attr:"hovermode",val:function(e){return e._fullLayout._isHoriz?"y":"x"},icon:Pl.tooltip_compare,gravity:"ne",click:Bv};function Bv(e,t){var r=t.currentTarget,n=r.getAttribute("data-attr"),i=r.getAttribute("data-val")||!0,a=e._fullLayout,o={},s=ice.list(e,null,!0),l=a._cartesianSpikesEnabled,u,c;if(n==="zoom"){var f=i==="in"?.5:2,h=(1+f)/2,d=(1-f)/2,v,m;for(c=0;c{"use strict";var fce=hN(),uft=Object.keys(fce),hce=["drawline","drawopenpath","drawclosedpath","drawcircle","drawrect","eraseshape"],dce=["v1hovermode","hoverclosest","hovercompare","togglehover","togglespikelines"].concat(hce),aT=[],cft=function(e){if(dce.indexOf(e._cat||e.name)===-1){var t=e.name,r=(e._cat||e.name).toLowerCase();aT.indexOf(t)===-1&&aT.push(t),aT.indexOf(r)===-1&&aT.push(r)}};uft.forEach(function(e){cft(fce[e])});aT.sort();vce.exports={DRAW_MODES:hce,backButtons:dce,foreButtons:aT}});var vN=ye((sor,pce)=>{"use strict";var oor=dN();pce.exports={editType:"modebar",orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"modebar"},bgcolor:{valType:"color",editType:"modebar"},color:{valType:"color",editType:"modebar"},activecolor:{valType:"color",editType:"modebar"},uirevision:{valType:"any",editType:"none"},add:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"},remove:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"}}});var mce=ye((lor,gce)=>{"use strict";var fft=Pr(),MM=ka(),hft=vl(),dft=vN();gce.exports=function(t,r){var n=t.modebar||{},i=hft.newContainer(r,"modebar");function a(s,l){return fft.coerce(n,i,dft,s,l)}a("orientation"),a("bgcolor",MM.addOpacity(r.paper_bgcolor,.5));var o=MM.contrast(MM.rgb(r.modebar.bgcolor));a("color",MM.addOpacity(o,.3)),a("activecolor",MM.addOpacity(o,.7)),a("uirevision",r.uirevision),a("add"),a("remove")}});var bce=ye((uor,xce)=>{"use strict";var pN=qa(),vft=Eo(),mP=Pr(),yce=QL(),pft=m6().version,gft=new DOMParser;function _ce(e){this.container=e.container,this.element=document.createElement("div"),this.update(e.graphInfo,e.buttons),this.container.appendChild(this.element)}var Cm=_ce.prototype;Cm.update=function(e,t){this.graphInfo=e;var r=this.graphInfo._context,n=this.graphInfo._fullLayout,i="modebar-"+n._uid;this.element.setAttribute("id",i),this.element.setAttribute("role","toolbar"),this._uid=i,this.element.className="modebar modebar--custom",r.displayModeBar==="hover"&&(this.element.className+=" modebar--hover ease-bg"),n.modebar.orientation==="v"&&(this.element.className+=" vertical",t=t.reverse());var a=n.modebar,o="#"+i+" .modebar-group";document.querySelectorAll(o).forEach(function(f){f.style.backgroundColor=a.bgcolor});var s=!this.hasButtons(t),l=this.hasLogo!==r.displaylogo,u=this.locale!==r.locale;if(this.locale=r.locale,(s||l||u)&&(this.removeAllButtons(),this.updateButtons(t),r.watermark||r.displaylogo)){var c=this.getLogo();r.watermark&&(c.className=c.className+" watermark"),n.modebar.orientation==="v"?this.element.insertBefore(c,this.element.childNodes[0]):this.element.appendChild(c),this.hasLogo=!0}this.updateActiveButton(),mP.setStyleOnHover("#"+i+" .modebar-btn",".active",".icon path","fill: "+a.activecolor,"fill: "+a.color,this.element)};Cm.updateButtons=function(e){var t=this;this.buttons=e,this.buttonElements=[],this.buttonsNames=[],this.buttons.forEach(function(r){var n=t.createGroup();r.forEach(function(i){var a=i.name;if(!a)throw new Error("must provide button 'name' in button config");if(t.buttonsNames.indexOf(a)!==-1)throw new Error("button name '"+a+"' is taken");t.buttonsNames.push(a);var o=t.createButton(i);t.buttonElements.push(o),n.appendChild(o)}),t.element.appendChild(n)})};Cm.createGroup=function(){var e=document.createElement("div");e.className="modebar-group";var t=this.graphInfo._fullLayout.modebar;return e.style.backgroundColor=t.bgcolor,e};Cm.createButton=function(e){var t=this,r=document.createElement("button");r.setAttribute("type","button"),r.setAttribute("rel","tooltip"),r.className="modebar-btn";var n=e.title;n===void 0?n=e.name:typeof n=="function"&&(n=n(this.graphInfo)),(n||n===0)&&(r.setAttribute("data-title",n),r.setAttribute("aria-label",n)),e.attr!==void 0&&r.setAttribute("data-attr",e.attr);var i=e.val;i!==void 0&&(typeof i=="function"&&(i=i(this.graphInfo)),r.setAttribute("data-val",i));var a=e.click;if(typeof a!="function")throw new Error("must provide button 'click' function in button config");r.addEventListener("click",function(s){e.click(t.graphInfo,s),t.updateActiveButton(s.currentTarget)}),r.setAttribute("data-toggle",e.toggle||!1),e.toggle&&pN.select(r).classed("active",!0);var o=e.icon;return typeof o=="function"?r.appendChild(o()):r.appendChild(this.createIcon(o||yce.question)),r.setAttribute("data-gravity",e.gravity||"n"),r};Cm.createIcon=function(e){var t=vft(e.height)?Number(e.height):e.ascent-e.descent,r="http://www.w3.org/2000/svg",n;if(e.path){n=document.createElementNS(r,"svg"),n.setAttribute("viewBox",[0,0,e.width,t].join(" ")),n.setAttribute("class","icon");var i=document.createElementNS(r,"path");i.setAttribute("d",e.path),e.transform?i.setAttribute("transform",e.transform):e.ascent!==void 0&&i.setAttribute("transform","matrix(1 0 0 -1 0 "+e.ascent+")"),n.appendChild(i)}if(e.svg){var a=gft.parseFromString(e.svg,"application/xml");n=a.childNodes[0]}return n.setAttribute("height","1em"),n.setAttribute("width","1em"),n};Cm.updateActiveButton=function(e){var t=this.graphInfo._fullLayout,r=e!==void 0?e.getAttribute("data-attr"):null;this.buttonElements.forEach(function(n){var i=n.getAttribute("data-val")||!0,a=n.getAttribute("data-attr"),o=n.getAttribute("data-toggle")==="true",s=pN.select(n),l=function(f,h){var d=t.modebar,v=f.querySelector(".icon path");v&&(h||f.matches(":hover")?v.style.fill=d.activecolor:v.style.fill=d.color)};if(o){if(a===r){var u=!s.classed("active");s.classed("active",u),l(n,u)}}else{var c=a===null?a:mP.nestedProperty(t,a).get();s.classed("active",c===i),l(n,c===i)}})};Cm.hasButtons=function(e){var t=this.buttons;if(!t||e.length!==t.length)return!1;for(var r=0;r{"use strict";var _ft=df(),wce=Ru(),gN=Oa(),xft=ip().isUnifiedHover,bft=bce(),yP=hN(),wft=dN().DRAW_MODES,Tft=Pr().extendDeep;Tce.exports=function(t){var r=t._fullLayout,n=t._context,i=r._modeBar;if(!n.displayModeBar&&!n.watermark){i&&(i.destroy(),delete r._modeBar);return}if(!Array.isArray(n.modeBarButtonsToRemove))throw new Error(["*modeBarButtonsToRemove* configuration options","must be an array."].join(" "));if(!Array.isArray(n.modeBarButtonsToAdd))throw new Error(["*modeBarButtonsToAdd* configuration options","must be an array."].join(" "));var a=n.modeBarButtons,o;Array.isArray(a)&&a.length?o=Cft(a):!n.displayModeBar&&n.watermark?o=[]:o=Aft(t),i?i.update(t,o):r._modeBar=bft(t,o)};function Aft(e){var t=e._fullLayout,r=e._fullData,n=e._context;function i(N,H){if(typeof H=="string"){if(H.toLowerCase()===N.toLowerCase())return!0}else{var ie=H.name,ae=H._cat||H.name;if(ie===N||ae===N.toLowerCase())return!0}return!1}var a=t.modebar.add;typeof a=="string"&&(a=[a]);var o=t.modebar.remove;typeof o=="string"&&(o=[o]);var s=n.modeBarButtonsToAdd.concat(a.filter(function(N){for(var H=0;H1?(P=["toggleHover"],E=["resetViews"]):f?(g=["zoomInGeo","zoomOutGeo"],P=["hoverClosestGeo"],E=["resetGeo"]):c?(P=["hoverClosest3d"],E=["resetCameraDefault3d","resetCameraLastSave3d"]):m?(g=["zoomInMapbox","zoomOutMapbox"],P=["toggleHover"],E=["resetViewMapbox"]):b?(g=["zoomInMap","zoomOutMap"],P=["toggleHover"],E=["resetViewMap"]):h?P=["hoverClosestPie"]:M?(P=["hoverClosestCartesian","hoverCompareCartesian"],E=["resetViewSankey"]):P=["toggleHover"],u&&P.push("toggleSpikelines","hoverClosestCartesian","hoverCompareCartesian"),(Eft(r)||L)&&(P=[]),u&&!T&&(g=["zoomIn2d","zoomOut2d","autoScale2d"],E[0]!=="resetViews"&&(E=["resetScale2d"])),c?z=["zoom3d","pan3d","orbitRotation","tableRotation"]:u&&!T||v?z=["zoom2d","pan2d"]:m||b||f?z=["pan2d"]:p&&(z=["zoom2d"]),Mft(r)&&z.push("select2d","lasso2d");var q=[],V=function(N){q.indexOf(N)===-1&&P.indexOf(N)!==-1&&q.push(N)};if(Array.isArray(s)){for(var G=[],Z=0;Z{"use strict";Sce.exports={moduleType:"component",name:"modebar",layoutAttributes:vN(),supplyLayoutDefaults:mce(),manage:Ace()}});var yN=ye((dor,Mce)=>{"use strict";var Lft=Dh().FROM_BL;Mce.exports=function(t,r,n){n===void 0&&(n=Lft[t.constraintoward||"center"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*n;t.range=t._input.range=[t.l2r(a+(i[0]-a)*r),t.l2r(a+(i[1]-a)*r)],t.setScale()}});var $b=ye(EM=>{"use strict";var Jb=Pr(),_N=Mg(),Lg=df().id2name,Pft=Rd(),Ece=yN(),Ift=xm(),Rft=fs().ALMOST_EQUAL,Dft=Dh().FROM_BL;EM.handleDefaults=function(e,t,r){var n=r.axIds,i=r.axHasImage,a=t._axisConstraintGroups=[],o=t._axisMatchGroups=[],s,l,u,c,f,h,d,v;for(s=0;sa?r.slice(a):n.slice(i))+o}function zft(e,t){for(var r=t._size,n=r.h/r.w,i={},a=Object.keys(e),o=0;oRft*v&&!k)){for(a=0;az&&ieP&&(P=ie);var _e=(P-g)/(2*E);f/=_e,g=l.l2r(g),P=l.l2r(P),l.range=l._input.range=x{"use strict";var xP=qa(),Nv=Oa(),Jp=Mc(),M0=Pr(),wN=Zl(),TN=wM(),kM=ka(),oT=So(),Pce=qb(),zce=mN(),CM=ho(),Fy=Dh(),qce=$b(),qft=qce.enforce,Oft=qce.clean,Ice=Mg().doAutoRange,Oce="start",Bft="middle",Bce="end",Nft=Rh().zindexSeparator;pd.layoutStyles=function(e){return M0.syncOrAsync([Jp.doAutoMargin,Vft],e)};function Uft(e,t,r){for(var n=0;n=e[1]||i[1]<=e[0])&&a[0]t[0])return!0}return!1}function Vft(e){var t=e._fullLayout,r=t._size,n=r.p,i=CM.list(e,"",!0),a,o,s,l,u,c;if(t._paperdiv.style({width:e._context.responsive&&t.autosize&&!e._context._hasZeroWidth&&!e.layout.width?"100%":t.width+"px",height:e._context.responsive&&t.autosize&&!e._context._hasZeroHeight&&!e.layout.height?"100%":t.height+"px"}).selectAll(".main-svg").call(oT.setSize,t.width,t.height),e._context.setBackground(e,t.paper_bgcolor),pd.drawMainTitle(e),zce.manage(e),!t._has("cartesian"))return Jp.previousPromises(e);function f(Le,me,Pe){var ce=Le._lw/2;if(Le._id.charAt(0)==="x"){if(me){if(Pe==="top")return me._offset-n-ce}else return r.t+r.h*(1-(Le.position||0))+ce%1;return me._offset+me._length+n+ce}if(me){if(Pe==="right")return me._offset+me._length+n+ce}else return r.l+r.w*(Le.position||0)+ce%1;return me._offset-n-ce}for(a=0;a0){Wft(e,a,u,l),s.attr({x:o,y:a,"text-anchor":n,dy:Fce(t.yanchor)}).call(wN.positionText,o,a);var c=(t.text.match(wN.BR_TAG_ALL)||[]).length;if(c){var f=Fy.LINE_SPACING*c+Fy.MID_SHIFT;t.y===0&&(f=-f),s.selectAll(".line").each(function(){var b=+this.getAttribute("dy").slice(0,-2)-f+"em";this.setAttribute("dy",b)})}var h=xP.select(e).selectAll(".gtitle-subtitle");if(h.node()){var d=s.node().getBBox(),v=d.y+d.height,m=v+Pce.SUBTITLE_PADDING_EM*t.subtitle.font.size;h.attr({x:o,y:m,"text-anchor":n,dy:Fce(t.yanchor)}).call(wN.positionText,o,m)}}}};function Gft(e,t,r,n,i){var a=t.yref==="paper"?e._fullLayout._size.h:e._fullLayout.height,o=M0.isTopAnchor(t)?n:n-i,s=r==="b"?a-o:o;return M0.isTopAnchor(t)&&r==="t"||M0.isBottomAnchor(t)&&r==="b"?!1:s.5?"t":"b",o=e._fullLayout.margin[a],s=0;return t.yref==="paper"?s=r+t.pad.t+t.pad.b:t.yref==="container"&&(s=Hft(a,n,i,e._fullLayout.height,r)+t.pad.t+t.pad.b),s>o?s:0}function Wft(e,t,r,n){var i="title.automargin",a=e._fullLayout.title,o=a.y>.5?"t":"b",s={x:a.x,y:a.y,t:0,b:0},l={};a.yref==="paper"&&Gft(e,a,o,t,n)?s[o]=r:a.yref==="container"&&(l[o]=r,e._fullLayout._reservedMargin[i]=l),Jp.allowAutoMargin(e,i),Jp.autoMargin(e,i,s)}function Xft(e,t){var r=e.title,n=e._size,i=0;switch(t===Oce?i=r.pad.l:t===Bce&&(i=-r.pad.r),r.xref){case"paper":return n.l+n.w*r.x+i;case"container":default:return e.width*r.x+i}}function Zft(e,t){var r=e.title,n=e._size,i=0;if(t==="0em"||!t?i=-r.pad.b:t===Fy.CAP_SHIFT+"em"&&(i=r.pad.t),r.y==="auto")return n.t/2;switch(r.yref){case"paper":return n.t+n.h-n.h*r.y+i;case"container":default:return e.height-e.height*r.y+i}}function Fce(e){return e==="top"?Fy.CAP_SHIFT+.3+"em":e==="bottom"?"-0.3em":Fy.MID_SHIFT+"em"}function Yft(e){var t=e.title,r=Bft;return M0.isRightAnchor(t)?r=Bce:M0.isLeftAnchor(t)&&(r=Oce),r}function Kft(e){var t=e.title,r="0em";return M0.isTopAnchor(t)?r=Fy.CAP_SHIFT+"em":M0.isMiddleAnchor(t)&&(r=Fy.MID_SHIFT+"em"),r}pd.doTraceStyle=function(e){var t=e.calcdata,r=[],n;for(n=0;n{"use strict";var Jft=m_().readPaths,$ft=uP(),Nce=o_().clearOutlineControllers,AN=ka(),Uce=So(),Qft=vl().arrayEditor,Vce=x_(),eht=Vce.getPathString;Hce.exports={draw:bP,drawOne:Gce,activateLastSelection:iht};function bP(e){var t=e._fullLayout;Nce(e),t._selectionLayer.selectAll("path").remove();for(var r in t._plots){var n=t._plots[r].selectionLayer;n&&n.selectAll("path").remove()}for(var i=0;i=0;b--){var p=o.append("path").attr(l).style("opacity",b?.1:u).call(AN.stroke,f).call(AN.fill,c).call(Uce.dashLine,b?"solid":d,b?4+h:h);if(tht(p,e,n),v){var k=Qft(e.layout,"selections",n);p.style({cursor:"move"});var M={element:p.node(),plotinfo:i,gd:e,editHelpers:k,isActiveSelection:!0},T=Jft(s,e);$ft(T,p,M)}else p.style("pointer-events",b?"all":"none");m[b]=p}var L=m[0],x=m[1];x.node().addEventListener("click",function(){return rht(e,L)})}}function tht(e,t,r){var n=r.xref+r.yref;Uce.setClipUrl(e,"clip"+t._fullLayout._uid+n,t)}function rht(e,t){if(wP(e)){var r=t.node(),n=+r.getAttribute("data-index");if(n>=0){if(n===e._fullLayout._activeSelectionIndex){SN(e);return}e._fullLayout._activeSelectionIndex=n,e._fullLayout._deactivateSelection=SN,bP(e)}}}function iht(e){if(wP(e)){var t=e._fullLayout.selections.length-1;e._fullLayout._activeSelectionIndex=t,e._fullLayout._deactivateSelection=SN,bP(e)}}function SN(e){if(wP(e)){var t=e._fullLayout._activeSelectionIndex;t>=0&&(Nce(e),delete e._fullLayout._activeSelectionIndex,bP(e))}}});var Wce=ye((mor,jce)=>{function nht(){var e,t=0,r=!1;function n(i,a){return e.list.push({type:i,data:a?JSON.parse(JSON.stringify(a)):void 0}),e}return e={list:[],segmentId:function(){return t++},checkIntersection:function(i,a){return n("check",{seg1:i,seg2:a})},segmentChop:function(i,a){return n("div_seg",{seg:i,pt:a}),n("chop",{seg:i,pt:a})},statusRemove:function(i){return n("pop_seg",{seg:i})},segmentUpdate:function(i){return n("seg_update",{seg:i})},segmentNew:function(i,a){return n("new_seg",{seg:i,primary:a})},segmentRemove:function(i){return n("rem_seg",{seg:i})},tempStatus:function(i,a,o){return n("temp_status",{seg:i,above:a,below:o})},rewind:function(i){return n("rewind",{seg:i})},status:function(i,a,o){return n("status",{seg:i,above:a,below:o})},vert:function(i){return i===r?e:(r=i,n("vert",{x:i}))},log:function(i){return typeof i!="string"&&(i=JSON.stringify(i,!1," ")),n("log",{txt:i})},reset:function(){return n("reset")},selected:function(i){return n("selected",{segs:i})},chainStart:function(i){return n("chain_start",{seg:i})},chainRemoveHead:function(i,a){return n("chain_rem_head",{index:i,pt:a})},chainRemoveTail:function(i,a){return n("chain_rem_tail",{index:i,pt:a})},chainNew:function(i,a){return n("chain_new",{pt1:i,pt2:a})},chainMatch:function(i){return n("chain_match",{index:i})},chainClose:function(i){return n("chain_close",{index:i})},chainAddHead:function(i,a){return n("chain_add_head",{index:i,pt:a})},chainAddTail:function(i,a){return n("chain_add_tail",{index:i,pt:a})},chainConnect:function(i,a){return n("chain_con",{index1:i,index2:a})},chainReverse:function(i){return n("chain_rev",{index:i})},chainJoin:function(i,a){return n("chain_join",{index1:i,index2:a})},done:function(){return n("done")}},e}jce.exports=nht});var Zce=ye((yor,Xce)=>{function aht(e){typeof e!="number"&&(e=1e-10);var t={epsilon:function(r){return typeof r=="number"&&(e=r),e},pointAboveOrOnLine:function(r,n,i){var a=n[0],o=n[1],s=i[0],l=i[1],u=r[0],c=r[1];return(s-a)*(c-o)-(l-o)*(u-a)>=-e},pointBetween:function(r,n,i){var a=r[1]-n[1],o=i[0]-n[0],s=r[0]-n[0],l=i[1]-n[1],u=s*o+a*l;if(u-e)},pointsSameX:function(r,n){return Math.abs(r[0]-n[0])e!=s-a>e&&(o-c)*(a-f)/(s-f)+c-i>e&&(l=!l),o=c,s=f}return l}};return t}Xce.exports=aht});var Kce=ye((_or,Yce)=>{var oht={create:function(){var e={root:{root:!0,next:null},exists:function(t){return!(t===null||t===e.root)},isEmpty:function(){return e.root.next===null},getHead:function(){return e.root.next},insertBefore:function(t,r){for(var n=e.root,i=e.root.next;i!==null;){if(r(i)){t.prev=i.prev,t.next=i,i.prev.next=t,i.prev=t;return}n=i,i=i.next}n.next=t,t.prev=n,t.next=null},findTransition:function(t){for(var r=e.root,n=e.root.next;n!==null&&!t(n);)r=n,n=n.next;return{before:r===e.root?null:r,after:n,insert:function(i){return i.prev=r,i.next=n,r.next=i,n!==null&&(n.prev=i),i}}}};return e},node:function(e){return e.prev=null,e.next=null,e.remove=function(){e.prev.next=e.next,e.next&&(e.next.prev=e.prev),e.prev=null,e.next=null},e}};Yce.exports=oht});var $ce=ye((xor,Jce)=>{var PM=Kce();function sht(e,t,r){function n(v,m){return{id:r?r.segmentId():-1,start:v,end:m,myFill:{above:null,below:null},otherFill:null}}function i(v,m,b){return{id:r?r.segmentId():-1,start:v,end:m,myFill:{above:b.myFill.above,below:b.myFill.below},otherFill:null}}var a=PM.create();function o(v,m,b,p,k,M){var T=t.pointsCompare(m,k);return T!==0?T:t.pointsSame(b,M)?0:v!==p?v?1:-1:t.pointAboveOrOnLine(b,p?k:M,p?M:k)?1:-1}function s(v,m){a.insertBefore(v,function(b){var p=o(v.isStart,v.pt,m,b.isStart,b.pt,b.other.pt);return p<0})}function l(v,m){var b=PM.node({isStart:!0,pt:v.start,seg:v,primary:m,other:null,status:null});return s(b,v.end),b}function u(v,m,b){var p=PM.node({isStart:!1,pt:m.end,seg:m,primary:b,other:v,status:null});v.other=p,s(p,v.pt)}function c(v,m){var b=l(v,m);return u(b,v,m),b}function f(v,m){r&&r.segmentChop(v.seg,m),v.other.remove(),v.seg.end=m,v.other.pt=m,s(v.other,v.pt)}function h(v,m){var b=i(m,v.seg.end,v.seg);return f(v,m),c(b,v.primary)}function d(v,m){var b=PM.create();function p(G,Z){var j=G.seg.start,N=G.seg.end,H=Z.seg.start,ie=Z.seg.end;return t.pointsCollinear(j,H,ie)?t.pointsCollinear(N,H,ie)||t.pointAboveOrOnLine(N,H,ie)?1:-1:t.pointAboveOrOnLine(j,H,ie)?1:-1}function k(G){return b.findTransition(function(Z){var j=p(G,Z.ev);return j>0})}function M(G,Z){var j=G.seg,N=Z.seg,H=j.start,ie=j.end,ae=N.start,_e=N.end;r&&r.checkIntersection(j,N);var Ee=t.linesIntersect(H,ie,ae,_e);if(Ee===!1){if(!t.pointsCollinear(H,ie,ae)||t.pointsSame(H,_e)||t.pointsSame(ie,ae))return!1;var Ce=t.pointsSame(H,ae),ge=t.pointsSame(ie,_e);if(Ce&&ge)return Z;var re=!Ce&&t.pointBetween(H,ae,_e),Se=!ge&&t.pointBetween(ie,ae,_e);if(Ce)return Se?h(Z,ie):h(G,_e),Z;re&&(ge||(Se?h(Z,ie):h(G,_e)),h(Z,H))}else Ee.alongA===0&&(Ee.alongB===-1?h(G,ae):Ee.alongB===0?h(G,Ee.pt):Ee.alongB===1&&h(G,_e)),Ee.alongB===0&&(Ee.alongA===-1?h(Z,H):Ee.alongA===0?h(Z,Ee.pt):Ee.alongA===1&&h(Z,ie));return!1}for(var T=[];!a.isEmpty();){var L=a.getHead();if(r&&r.vert(L.pt[0]),L.isStart){let G=function(){if(C){var Z=M(L,C);if(Z)return Z}return S?M(L,S):!1};var V=G;r&&r.segmentNew(L.seg,L.primary);var x=k(L),C=x.before?x.before.ev:null,S=x.after?x.after.ev:null;r&&r.tempStatus(L.seg,C?C.seg:!1,S?S.seg:!1);var g=G();if(g){if(e){var P;L.seg.myFill.below===null?P=!0:P=L.seg.myFill.above!==L.seg.myFill.below,P&&(g.seg.myFill.above=!g.seg.myFill.above)}else g.seg.otherFill=L.seg.myFill;r&&r.segmentUpdate(g.seg),L.other.remove(),L.remove()}if(a.getHead()!==L){r&&r.rewind(L.seg);continue}if(e){var P;L.seg.myFill.below===null?P=!0:P=L.seg.myFill.above!==L.seg.myFill.below,S?L.seg.myFill.below=S.seg.myFill.above:L.seg.myFill.below=v,P?L.seg.myFill.above=!L.seg.myFill.below:L.seg.myFill.above=L.seg.myFill.below}else if(L.seg.otherFill===null){var E;S?L.primary===S.primary?E=S.seg.otherFill.above:E=S.seg.myFill.above:E=L.primary?m:v,L.seg.otherFill={above:E,below:E}}r&&r.status(L.seg,C?C.seg:!1,S?S.seg:!1),L.other.status=x.insert(PM.node({ev:L}))}else{var z=L.status;if(z===null)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(b.exists(z.prev)&&b.exists(z.next)&&M(z.prev.ev,z.next.ev),r&&r.statusRemove(z.ev.seg),z.remove(),!L.primary){var q=L.seg.myFill;L.seg.myFill=L.seg.otherFill,L.seg.otherFill=q}T.push(L.seg)}a.getHead().remove()}return r&&r.done(),T}return e?{addRegion:function(v){for(var m,b=v[v.length-1],p=0;p{function lht(e,t,r){var n=[],i=[];return e.forEach(function(a){var o=a.start,s=a.end;if(t.pointsSame(o,s)){console.warn("PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large");return}r&&r.chainStart(a);var l={index:0,matches_head:!1,matches_pt1:!1},u={index:0,matches_head:!1,matches_pt1:!1},c=l;function f(V,G,Z){return c.index=V,c.matches_head=G,c.matches_pt1=Z,c===l?(c=u,!1):(c=null,!0)}for(var h=0;h{function IM(e,t,r){var n=[];return e.forEach(function(i){var a=(i.myFill.above?8:0)+(i.myFill.below?4:0)+(i.otherFill&&i.otherFill.above?2:0)+(i.otherFill&&i.otherFill.below?1:0);t[a]!==0&&n.push({id:r?r.segmentId():-1,start:i.start,end:i.end,myFill:{above:t[a]===1,below:t[a]===2},otherFill:null})}),r&&r.selected(n),n}var uht={union:function(e,t){return IM(e,[0,2,1,0,2,2,0,0,1,0,1,0,0,0,0,0],t)},intersect:function(e,t){return IM(e,[0,0,0,0,0,2,0,2,0,0,1,1,0,2,1,0],t)},difference:function(e,t){return IM(e,[0,0,0,0,2,0,2,0,1,1,0,0,0,1,2,0],t)},differenceRev:function(e,t){return IM(e,[0,2,1,0,0,0,1,1,0,2,0,2,0,0,0,0],t)},xor:function(e,t){return IM(e,[0,2,1,0,2,0,0,1,1,0,0,2,0,1,2,0],t)}};tfe.exports=uht});var nfe=ye((Tor,ife)=>{var cht={toPolygon:function(e,t){function r(a){if(a.length<=0)return e.segments({inverted:!1,regions:[]});function o(u){var c=u.slice(0,u.length-1);return e.segments({inverted:!1,regions:[c]})}for(var s=o(a[0]),l=1;l{var fht=Wce(),hht=Zce(),afe=$ce(),dht=efe(),RM=rfe(),ofe=nfe(),E0=!1,DM=hht(),kp;kp={buildLog:function(e){return e===!0?E0=fht():e===!1&&(E0=!1),E0===!1?!1:E0.list},epsilon:function(e){return DM.epsilon(e)},segments:function(e){var t=afe(!0,DM,E0);return e.regions.forEach(t.addRegion),{segments:t.calculate(e.inverted),inverted:e.inverted}},combine:function(e,t){var r=afe(!1,DM,E0);return{combined:r.calculate(e.segments,e.inverted,t.segments,t.inverted),inverted1:e.inverted,inverted2:t.inverted}},selectUnion:function(e){return{segments:RM.union(e.combined,E0),inverted:e.inverted1||e.inverted2}},selectIntersect:function(e){return{segments:RM.intersect(e.combined,E0),inverted:e.inverted1&&e.inverted2}},selectDifference:function(e){return{segments:RM.difference(e.combined,E0),inverted:e.inverted1&&!e.inverted2}},selectDifferenceRev:function(e){return{segments:RM.differenceRev(e.combined,E0),inverted:!e.inverted1&&e.inverted2}},selectXor:function(e){return{segments:RM.xor(e.combined,E0),inverted:e.inverted1!==e.inverted2}},polygon:function(e){return{regions:dht(e.segments,DM,E0),inverted:e.inverted}},polygonFromGeoJSON:function(e){return ofe.toPolygon(kp,e)},polygonToGeoJSON:function(e){return ofe.fromPolygon(kp,DM,e)},union:function(e,t){return FM(e,t,kp.selectUnion)},intersect:function(e,t){return FM(e,t,kp.selectIntersect)},difference:function(e,t){return FM(e,t,kp.selectDifference)},differenceRev:function(e,t){return FM(e,t,kp.selectDifferenceRev)},xor:function(e,t){return FM(e,t,kp.selectXor)}};function FM(e,t,r){var n=kp.segments(e),i=kp.segments(t),a=kp.combine(n,i),o=r(a);return kp.polygon(o)}typeof window=="object"&&(window.PolyBool=kp);sfe.exports=kp});var cfe=ye((Sor,ufe)=>{ufe.exports=function(t,r,n,i){var a=t[0],o=t[1],s=!1;n===void 0&&(n=0),i===void 0&&(i=r.length);for(var l=i-n,u=0,c=l-1;uo!=v>o&&a<(d-f)*(o-h)/(v-h)+f;m&&(s=!s)}return s}});var zM=ye((Mor,ffe)=>{"use strict";var EN=I6().dot,TP=fs().BADNUM,AP=ffe.exports={};AP.tester=function(t){var r=t.slice(),n=r[0][0],i=n,a=r[0][1],o=a,s;for((r[r.length-1][0]!==r[0][0]||r[r.length-1][1]!==r[0][1])&&r.push(r[0]),s=1;si||p===TP||po||m&&u(v))}function f(v,m){var b=v[0],p=v[1];if(b===TP||bi||p===TP||po)return!1;var k=r.length,M=r[0][0],T=r[0][1],L=0,x,C,S,g,P;for(x=1;xMath.max(C,M)||p>Math.max(S,T)))if(ps||Math.abs(EN(f,u))>i)return!0;return!1};AP.filter=function(t,r){var n=[t[0]],i=0,a=0;function o(l){t.push(l);var u=n.length,c=i;n.splice(a+1);for(var f=c+1;f1){var s=t.pop();o(s)}return{addPt:o,raw:t,filtered:n}}});var dfe=ye((Eor,hfe)=>{"use strict";hfe.exports={BENDPX:1.5,MINSELECT:12,SELECTDELAY:100,SELECTID:"-select"}});var Ffe=ye((kor,Dfe)=>{"use strict";var vfe=lfe(),vht=cfe(),BM=Oa(),pht=So().dashStyle,qM=ka(),ght=ef(),mht=ip().makeEventData,HM=Cg(),yht=HM.freeMode,_ht=HM.rectMode,NM=HM.drawMode,PN=HM.openMode,IN=HM.selectMode,pfe=x_(),gfe=AM(),bfe=uP(),wfe=o_().clearOutline,Tfe=m_(),kN=Tfe.handleEllipse,xht=Tfe.readPaths,bht=oP().newShapes,wht=rN(),Tht=MN().activateLastSelection,MP=Pr(),Aht=MP.sorterAsc,Afe=zM(),OM=j6(),k0=df().getFromId,Sht=wM(),Mht=LM().redrawReglTraces,EP=dfe(),Lm=EP.MINSELECT,Eht=Afe.filter,RN=Afe.tester,DN=rP(),mfe=DN.p2r,kht=DN.axValue,Cht=DN.getTransform;function FN(e){return e.subplot!==void 0}function Lht(e,t,r,n,i){var a=!FN(n),o=yht(i),s=_ht(i),l=PN(i),u=NM(i),c=IN(i),f=i==="drawline",h=i==="drawcircle",d=f||h,v=n.gd,m=v._fullLayout,b=c&&m.newselection.mode==="immediate"&&a,p=m._zoomlayer,k=n.element.getBoundingClientRect(),M=n.plotinfo,T=Cht(M),L=t-k.left,x=r-k.top;m._calcInverseTransform(v);var C=MP.apply3DTransform(m._invTransform)(L,x);L=C[0],x=C[1];var S=m._invScaleX,g=m._invScaleY,P=L,E=x,z="M"+L+","+x,q=n.xaxes[0],V=n.yaxes[0],G=q._length,Z=V._length,j=e.altKey&&!(NM(i)&&l),N,H,ie,ae,_e,Ee,Ce;Mfe(e,v,n),o&&(N=Eht([[L,x]],EP.BENDPX));var ge=p.selectAll("path.select-outline-"+M.id).data([1]),re=u?m.newshape:m.newselection;u&&(n.hasText=re.label.text||re.label.texttemplate);var Se=u&&!l?re.fillcolor:"rgba(0,0,0,0)",ke=re.line.color||(a?qM.contrast(v._fullLayout.plot_bgcolor):"#7f7f7f");ge.enter().append("path").attr("class","select-outline select-outline-"+M.id).style({opacity:u?re.opacity/2:1,"stroke-dasharray":pht(re.line.dash,re.line.width),"stroke-width":re.line.width+"px","shape-rendering":"crispEdges"}).call(qM.stroke,ke).call(qM.fill,Se).attr("fill-rule","evenodd").classed("cursor-move",!!u).attr("transform",T).attr("d",z+"Z");var be=p.append("path").attr("class","zoombox-corners").style({fill:qM.background,stroke:qM.defaultLine,"stroke-width":1}).attr("transform",T).attr("d","M0,0Z");if(u&&n.hasText){var Be=p.select(".label-temp");Be.empty()&&(Be=p.append("g").classed("label-temp",!0).classed("select-outline",!0).style({opacity:.8}))}var Le=m._uid+EP.SELECTID,me=[],Pe=kP(v,n.xaxes,n.yaxes,n.subplot);b&&!e.shiftKey&&(n._clearSubplotSelections=function(){if(a){var He=q._id,lt=V._id;Pfe(v,He,lt,Pe);for(var mt=(v.layout||{}).selections||[],Ht=[],at=!1,ct=0;ct=0){v._fullLayout._deactivateShape(v);return}if(!u){var mt=m.clickmode;OM.done(Le).then(function(){if(OM.clear(Le),He===2){for(ge.remove(),_e=0;_e-1&&Sfe(lt,v,n.xaxes,n.yaxes,n.subplot,n,ge),mt==="event"&&GM(v,void 0);ght.click(v,lt,M.id)}).catch(MP.error)}},n.doneFn=function(){be.remove(),OM.done(Le).then(function(){OM.clear(Le),!b&&ae&&n.selectionDefs&&(ae.subtract=j,n.selectionDefs.push(ae),n.mergedPolygons.length=0,[].push.apply(n.mergedPolygons,ie)),(b||u)&&UM(n,b),n.doneFnCompleted&&n.doneFnCompleted(me),c&&GM(v,Ce)}).catch(MP.error)}}function Sfe(e,t,r,n,i,a,o){var s=t._hoverdata,l=t._fullLayout,u=l.clickmode,c=u.indexOf("event")>-1,f=[],h,d,v,m,b,p,k,M,T,L;if(Fht(s)){Mfe(e,t,a),h=kP(t,r,n,i);var x=zht(s,h),C=x.pointNumbers.length>0;if(C?qht(h,x):Oht(h)&&(k=_fe(x))){for(o&&o.remove(),L=0;L=0}function Dht(e){return e._fullLayout._activeSelectionIndex>=0}function UM(e,t){var r=e.dragmode,n=e.plotinfo,i=e.gd;Rht(i)&&i._fullLayout._deactivateShape(i),Dht(i)&&i._fullLayout._deactivateSelection(i);var a=i._fullLayout,o=a._zoomlayer,s=NM(r),l=IN(r);if(s||l){var u=o.selectAll(".select-outline-"+n.id);if(u&&i._fullLayout._outlining){var c;s&&(c=bht(u,e)),c&&BM.call("_guiRelayout",i,{shapes:c});var f;l&&!FN(e)&&(f=wht(u,e)),f&&(i._fullLayout._noEmitSelectedAtStart=!0,BM.call("_guiRelayout",i,{selections:f}).then(function(){t&&Tht(i)})),i._fullLayout._outlining=!1}}n.selection={},n.selection.selectionDefs=e.selectionDefs=[],n.selection.mergedPolygons=e.mergedPolygons=[]}function yfe(e){return e._id}function kP(e,t,r,n){if(!e.calcdata)return[];var i=[],a=t.map(yfe),o=r.map(yfe),s,l,u;for(u=0;u0,a=i?n[0]:r;return t.selectedpoints?t.selectedpoints.indexOf(a)>-1:!1}function qht(e,t){var r=[],n,i,a,o;for(o=0;o0&&r.push(n);if(r.length===1&&(a=r[0]===t.searchInfo,a&&(i=t.searchInfo.cd[0].trace,i.selectedpoints.length===t.pointNumbers.length))){for(o=0;o1||(t+=n.selectedpoints.length,t>1)))return!1;return t===1}function VM(e,t,r){var n;for(n=0;n-1&&t;if(!o&&t){var He=xfe(e,!0);if(He.length){var lt=He[0].xref,mt=He[0].yref;if(lt&&mt){var Ht=Ife(He),at=Rfe([k0(e,lt,"x"),k0(e,mt,"y")]);at(me,Ht)}}e._fullLayout._noEmitSelectedAtStart?e._fullLayout._noEmitSelectedAtStart=!1:ce&&GM(e,me),h._reselect=!1}if(!o&&h._deselect){var ct=h._deselect;s=ct.xref,l=ct.yref,Uht(s,l,c)||Pfe(e,s,l,n),ce&&(me.points.length?GM(e,me):ON(e)),h._deselect=!1}return{eventData:me,selectionTesters:r}}function Nht(e){var t=e.calcdata;if(t)for(var r=0;r{"use strict";zfe.exports=[{path:"",backoff:0},{path:"M-2.4,-3V3L0.6,0Z",backoff:.6},{path:"M-3.7,-2.5V2.5L1.3,0Z",backoff:1.3},{path:"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z",backoff:1.55},{path:"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z",backoff:1.6},{path:"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z",backoff:2},{path:"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z",backoff:0,noRotate:!0},{path:"M2,2V-2H-2V2Z",backoff:0,noRotate:!0}]});var jM=ye((Lor,qfe)=>{"use strict";qfe.exports={axisRefDescription:function(e,t,r){return["If set to a",e,"axis id (e.g. *"+e+"* or","*"+e+"2*), the `"+e+"` position refers to a",e,"coordinate. If set to *paper*, the `"+e+"`","position refers to the distance from the",t,"of the plotting","area in normalized coordinates where *0* (*1*) corresponds to the",t,"("+r+"). If set to a",e,"axis ID followed by","*domain* (separated by a space), the position behaves like for","*paper*, but refers to the distance in fractions of the domain","length from the",t,"of the domain of that axis: e.g.,","*"+e+"2 domain* refers to the domain of the second",e," axis and a",e,"position of 0.5 refers to the","point between the",t,"and the",r,"of the domain of the","second",e,"axis."].join(" ")}}});var Qb=ye((Ior,Nfe)=>{"use strict";var Ofe=BN(),Bfe=ec(),CP=Rh(),Wht=vl().templatedArray,Por=jM();Nfe.exports=Wht("annotation",{visible:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},text:{valType:"string",editType:"calc+arraydraw"},textangle:{valType:"angle",dflt:0,editType:"calc+arraydraw"},font:Bfe({editType:"calc+arraydraw",colorEditType:"arraydraw"}),width:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},height:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},align:{valType:"enumerated",values:["left","center","right"],dflt:"center",editType:"arraydraw"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"arraydraw"},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},bordercolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},borderpad:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},borderwidth:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},showarrow:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},arrowcolor:{valType:"color",editType:"arraydraw"},arrowhead:{valType:"integer",min:0,max:Ofe.length,dflt:1,editType:"arraydraw"},startarrowhead:{valType:"integer",min:0,max:Ofe.length,dflt:1,editType:"arraydraw"},arrowside:{valType:"flaglist",flags:["end","start"],extras:["none"],dflt:"end",editType:"arraydraw"},arrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},startarrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},arrowwidth:{valType:"number",min:.1,editType:"calc+arraydraw"},standoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},startstandoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},ax:{valType:"any",editType:"calc+arraydraw"},ay:{valType:"any",editType:"calc+arraydraw"},axref:{valType:"enumerated",dflt:"pixel",values:["pixel",CP.idRegex.x.toString()],editType:"calc"},ayref:{valType:"enumerated",dflt:"pixel",values:["pixel",CP.idRegex.y.toString()],editType:"calc"},xref:{valType:"enumerated",values:["paper",CP.idRegex.x.toString()],editType:"calc"},x:{valType:"any",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},xshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},yref:{valType:"enumerated",values:["paper",CP.idRegex.y.toString()],editType:"calc"},y:{valType:"any",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"auto",editType:"calc+arraydraw"},yshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},clicktoshow:{valType:"enumerated",values:[!1,"onoff","onout"],dflt:!1,editType:"arraydraw"},xclick:{valType:"any",editType:"arraydraw"},yclick:{valType:"any",editType:"arraydraw"},hovertext:{valType:"string",editType:"arraydraw"},hoverlabel:{bgcolor:{valType:"color",editType:"arraydraw"},bordercolor:{valType:"color",editType:"arraydraw"},font:Bfe({editType:"arraydraw"}),editType:"arraydraw"},captureevents:{valType:"boolean",editType:"arraydraw"},editType:"calc"})});var Pm=ye((Ror,Ufe)=>{"use strict";Ufe.exports={PTS_LINESONLY:20,minTolerance:.2,toleranceGrowth:10,maxScreensAway:20,eventDataKeys:[]}});var Pg=ye((Dor,Vfe)=>{"use strict";Vfe.exports=function(t){return{valType:"color",editType:"style",anim:!0}}});var pf=ye((For,Kfe)=>{"use strict";var Gfe=vf().axisHoverFormat,{hovertemplateAttrs:Xht,texttemplateAttrs:Zht,templatefallbackAttrs:Hfe}=Ll(),jfe=Tu(),Yht=ec(),Wfe=Pd().dash,Kht=Pd().pattern,Jht=So(),$ht=Pm(),WM=Ao().extendFlat,Qht=Pg();function Xfe(e){return{valType:"any",dflt:0,editType:"calc"}}function Zfe(e){return{valType:"any",editType:"calc"}}function Yfe(e){return{valType:"enumerated",values:["start","middle","end"],dflt:"middle",editType:"calc"}}Kfe.exports={x:{valType:"data_array",editType:"calc+clearAxisTypes",anim:!0},x0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes",anim:!0},dx:{valType:"number",dflt:1,editType:"calc",anim:!0},y:{valType:"data_array",editType:"calc+clearAxisTypes",anim:!0},y0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes",anim:!0},dy:{valType:"number",dflt:1,editType:"calc",anim:!0},xperiod:Xfe("x"),yperiod:Xfe("y"),xperiod0:Zfe("x0"),yperiod0:Zfe("y0"),xperiodalignment:Yfe("x"),yperiodalignment:Yfe("y"),xhoverformat:Gfe("x"),yhoverformat:Gfe("y"),offsetgroup:{valType:"string",dflt:"",editType:"calc"},alignmentgroup:{valType:"string",dflt:"",editType:"calc"},stackgroup:{valType:"string",dflt:"",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc"},groupnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},stackgaps:{valType:"enumerated",values:["infer zero","interpolate"],dflt:"infer zero",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},texttemplate:Zht(),texttemplatefallback:Hfe({editType:"calc"}),hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},mode:{valType:"flaglist",flags:["lines","markers","text"],extras:["none"],editType:"calc"},hoveron:{valType:"flaglist",flags:["points","fills"],editType:"style"},hovertemplate:Xht({},{keys:$ht.eventDataKeys}),hovertemplatefallback:Hfe(),line:{color:{valType:"color",editType:"style",anim:!0},width:{valType:"number",min:0,dflt:2,editType:"style",anim:!0},shape:{valType:"enumerated",values:["linear","spline","hv","vh","hvh","vhv"],dflt:"linear",editType:"plot"},smoothing:{valType:"number",min:0,max:1.3,dflt:1,editType:"plot"},dash:WM({},Wfe,{editType:"style"}),backoff:{valType:"number",min:0,dflt:"auto",arrayOk:!0,editType:"plot"},simplify:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},cliponaxis:{valType:"boolean",dflt:!0,editType:"plot"},fill:{valType:"enumerated",values:["none","tozeroy","tozerox","tonexty","tonextx","toself","tonext"],editType:"calc"},fillcolor:Qht(!0),fillgradient:WM({type:{valType:"enumerated",values:["radial","horizontal","vertical","none"],dflt:"none",editType:"calc"},start:{valType:"number",editType:"calc"},stop:{valType:"number",editType:"calc"},colorscale:{valType:"colorscale",editType:"style"},editType:"calc"}),fillpattern:Kht,marker:WM({symbol:{valType:"enumerated",values:Jht.symbolList,dflt:"circle",arrayOk:!0,editType:"style"},opacity:{valType:"number",min:0,max:1,arrayOk:!0,editType:"style",anim:!0},angle:{valType:"angle",dflt:0,arrayOk:!0,editType:"plot",anim:!1},angleref:{valType:"enumerated",values:["previous","up"],dflt:"up",editType:"plot",anim:!1},standoff:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"plot",anim:!0},size:{valType:"number",min:0,dflt:6,arrayOk:!0,editType:"calc",anim:!0},maxdisplayed:{valType:"number",min:0,dflt:0,editType:"plot"},sizeref:{valType:"number",dflt:1,editType:"calc"},sizemin:{valType:"number",min:0,dflt:0,editType:"calc"},sizemode:{valType:"enumerated",values:["diameter","area"],dflt:"diameter",editType:"calc"},line:WM({width:{valType:"number",min:0,arrayOk:!0,editType:"style",anim:!0},dash:WM({},Wfe,{arrayOk:!0}),editType:"calc"},jfe("marker.line",{anim:!0})),gradient:{type:{valType:"enumerated",values:["radial","horizontal","vertical","none"],arrayOk:!0,dflt:"none",editType:"calc"},color:{valType:"color",arrayOk:!0,editType:"calc"},editType:"calc"},editType:"calc"},jfe("marker",{anim:!0})),selected:{marker:{opacity:{valType:"number",min:0,max:1,editType:"style"},color:{valType:"color",editType:"style"},size:{valType:"number",min:0,editType:"style"},editType:"style"},textfont:{color:{valType:"color",editType:"style"},editType:"style"},editType:"style"},unselected:{marker:{opacity:{valType:"number",min:0,max:1,editType:"style"},color:{valType:"color",editType:"style"},size:{valType:"number",min:0,editType:"style"},editType:"style"},textfont:{color:{valType:"color",editType:"style"},editType:"style"},editType:"style"},textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"middle center",arrayOk:!0,editType:"calc"},textfont:Yht({editType:"calc",colorEditType:"style",arrayOk:!0}),zorder:{valType:"integer",dflt:0,editType:"plot"}}});var NN=ye((qor,Qfe)=>{"use strict";var Jfe=Qb(),$fe=pf().line,edt=Pd().dash,LP=Ao().extendFlat,tdt=mc().overrideAll,rdt=vl().templatedArray,zor=jM();Qfe.exports=tdt(rdt("selection",{type:{valType:"enumerated",values:["rect","path"]},xref:LP({},Jfe.xref,{}),yref:LP({},Jfe.yref,{}),x0:{valType:"any"},x1:{valType:"any"},y0:{valType:"any"},y1:{valType:"any"},path:{valType:"string",editType:"arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:.7,editType:"arraydraw"},line:{color:$fe.color,width:LP({},$fe.width,{min:1,dflt:1}),dash:LP({},edt,{dflt:"dot"})}}),"arraydraw","from-root")});var ihe=ye((Oor,rhe)=>{"use strict";var ehe=Pr(),PP=ho(),idt=Kd(),ndt=NN(),the=x_();rhe.exports=function(t,r){idt(t,r,{name:"selections",handleItemDefaults:adt});for(var n=r.selections,i=0;i{"use strict";nhe.exports=function(t,r,n){n("newselection.mode");var i=n("newselection.line.width");i&&(n("newselection.line.color"),n("newselection.line.dash")),n("activeselection.fillcolor"),n("activeselection.opacity")}});var XM=ye((Nor,lhe)=>{"use strict";var odt=Oa(),ohe=Pr(),she=df();lhe.exports=function(t){return function(n,i){var a=n[t];if(Array.isArray(a))for(var o=odt.subplotsRegistry.cartesian,s=o.idRegex,l=i._subplots,u=l.xaxis,c=l.yaxis,f=l.cartesian,h=i._has("cartesian"),d=0;d{"use strict";var uhe=MN(),ZM=Ffe();che.exports={moduleType:"component",name:"selections",layoutAttributes:NN(),supplyLayoutDefaults:ihe(),supplyDrawNewSelectionDefaults:ahe(),includeBasePlot:XM()("selections"),draw:uhe.draw,drawOne:uhe.drawOne,reselect:ZM.reselect,prepSelect:ZM.prepSelect,clearOutline:ZM.clearOutline,clearSelectionsCache:ZM.clearSelectionsCache,selectOnClick:ZM.selectOnClick}});var XN=ye((Vor,Lhe)=>{"use strict";var jN=qa(),C0=Pr(),fhe=C0.numberFormat,sdt=fd(),ldt=VL(),IP=Oa(),xhe=C0.strTranslate,udt=Zl(),hhe=ka(),w_=So(),cdt=ef(),dhe=ho(),fdt=Eg(),hdt=yv(),bhe=Cg(),RP=bhe.selectingOrDrawing,ddt=bhe.freeMode,vdt=Dh().FROM_TL,pdt=wM(),gdt=LM().redrawReglTraces,mdt=Mc(),VN=df().getFromId,ydt=qf().prepSelect,_dt=qf().clearOutline,xdt=qf().selectOnClick,UN=yN(),WN=Rh(),vhe=WN.MINDRAG,ap=WN.MINZOOM,phe=!0;function bdt(e,t,r,n,i,a,o,s){var l=e._fullLayout._zoomlayer,u=o+s==="nsew",c=(o+s).length===1,f,h,d,v,m,b,p,k,M,T,L,x,C,S,g,P,E,z,q,V,G,Z,j;r+=t.yaxis._shift;function N(){if(f=t.xaxis,h=t.yaxis,M=f._length,T=h._length,p=f._offset,k=h._offset,d={},d[f._id]=f,v={},v[h._id]=h,o&&s)for(var Et=t.overlays,pt=0;pt=0){jt._fullLayout._deactivateShape(jt);return}var or=jt._fullLayout.clickmode;if(HN(jt),Et===2&&!c&&Ue(),u)or.indexOf("select")>-1&&xdt(pt,jt,m,b,t.id,ae),or.indexOf("event")>-1&&cdt.click(jt,pt,t.id);else if(Et===1&&c){var mr=o?h:f,Ar=o==="s"||s==="w"?0:1,ei=mr._name+".range["+Ar+"]",qr=wdt(mr,Ar),jr="left",gt="middle";if(mr.fixedrange)return;o?(gt=o==="n"?"top":"bottom",mr.side==="right"&&(jr="right")):s==="e"&&(jr="right"),jt._context.showAxisRangeEntryBoxes&&jN.select(ie).call(udt.makeEditable,{gd:jt,immediate:!0,background:jt._fullLayout.paper_bgcolor,text:String(qr),fill:mr.tickfont?mr.tickfont.color:"#444",horizontalAlign:jr,verticalAlign:gt}).on("edit",function(Ge){var Je=mr.d2r(Ge);Je!==void 0&&IP.call("_guiRelayout",jt,ei,Je)})}}hdt.init(ae);var Ce,ge,re,Se,ke,be,Be,Le,me,Pe;function ce(Et,pt,jt){var or=ie.getBoundingClientRect();Ce=pt-or.left,ge=jt-or.top,e._fullLayout._calcInverseTransform(e);var mr=C0.apply3DTransform(e._fullLayout._invTransform)(Ce,ge);Ce=mr[0],ge=mr[1],re={l:Ce,r:Ce,w:0,t:ge,b:ge,h:0},Se=e._hmpixcount?e._hmlumcount/e._hmpixcount:sdt(e._fullLayout.plot_bgcolor).getLuminance(),ke="M0,0H"+M+"V"+T+"H0V0",be=!1,Be="xy",Pe=!1,Le=Ahe(l,Se,p,k,ke),me=She(l,p,k)}function He(Et,pt){if(e._transitioningWithDuration)return!1;var jt=Math.max(0,Math.min(M,Z*Et+Ce)),or=Math.max(0,Math.min(T,j*pt+ge)),mr=Math.abs(jt-Ce),Ar=Math.abs(or-ge);re.l=Math.min(Ce,jt),re.r=Math.max(Ce,jt),re.t=Math.min(ge,or),re.b=Math.max(ge,or);function ei(){Be="",re.r=re.l,re.t=re.b,me.attr("d","M0,0Z")}if(L.isSubplotConstrained)mr>ap||Ar>ap?(Be="xy",mr/M>Ar/T?(Ar=mr*T/M,ge>or?re.t=ge-Ar:re.b=ge+Ar):(mr=Ar*M/T,Ce>jt?re.l=Ce-mr:re.r=Ce+mr),me.attr("d",DP(re))):ei();else if(x.isSubplotConstrained)if(mr>ap||Ar>ap){Be="xy";var qr=Math.min(re.l/M,(T-re.b)/T),jr=Math.max(re.r/M,(T-re.t)/T);re.l=qr*M,re.r=jr*M,re.b=(1-qr)*T,re.t=(1-jr)*T,me.attr("d",DP(re))}else ei();else!S||Ar0){var Ge;if(x.isSubplotConstrained||!C&&S.length===1){for(Ge=0;Ge1&&(ei.maxallowed!==void 0&&P===(ei.range[0]1&&(qr.maxallowed!==void 0&&E===(qr.range[0]=0?Math.min(e,.9):1/(1/Math.max(e,-.3)+3.222))}function Adt(e,t,r){return e?e==="nsew"?r?"":t==="pan"?"move":"crosshair":e.toLowerCase()+"-resize":"pointer"}function Ahe(e,t,r,n,i){return e.append("path").attr("class","zoombox").style({fill:t>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("transform",xhe(r,n)).attr("d",i+"Z")}function She(e,t,r){return e.append("path").attr("class","zoombox-corners").style({fill:hhe.background,stroke:hhe.defaultLine,"stroke-width":1,opacity:0}).attr("transform",xhe(t,r)).attr("d","M0,0Z")}function Mhe(e,t,r,n,i,a){e.attr("d",n+"M"+r.l+","+r.t+"v"+r.h+"h"+r.w+"v-"+r.h+"h-"+r.w+"Z"),Ehe(e,t,i,a)}function Ehe(e,t,r,n){r||(e.transition().style("fill",n>.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),t.transition().style("opacity",1).duration(200))}function HN(e){jN.select(e).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}function khe(e){phe&&e.data&&e._context.showTips&&(C0.notifier(C0._(e,"Double-click to zoom back out"),"long",e),phe=!1)}function Sdt(e,t){return"M"+(e.l-.5)+","+(t-ap-.5)+"h-3v"+(2*ap+1)+"h3ZM"+(e.r+.5)+","+(t-ap-.5)+"h3v"+(2*ap+1)+"h-3Z"}function Mdt(e,t){return"M"+(t-ap-.5)+","+(e.t-.5)+"v-3h"+(2*ap+1)+"v3ZM"+(t-ap-.5)+","+(e.b+.5)+"v3h"+(2*ap+1)+"v-3Z"}function DP(e){var t=Math.floor(Math.min(e.b-e.t,e.r-e.l,ap)/2);return"M"+(e.l-3.5)+","+(e.t-.5+t)+"h3v"+-t+"h"+t+"v-3h-"+(t+3)+"ZM"+(e.r+3.5)+","+(e.t-.5+t)+"h-3v"+-t+"h"+-t+"v-3h"+(t+3)+"ZM"+(e.r+3.5)+","+(e.b+.5-t)+"h-3v"+t+"h"+-t+"v3h"+(t+3)+"ZM"+(e.l-3.5)+","+(e.b+.5-t)+"h3v"+t+"h"+t+"v3h-"+(t+3)+"Z"}function yhe(e,t,r,n,i){for(var a=!1,o={},s={},l,u,c,f,h=(i||{}).xaHash,d=(i||{}).yaHash,v=0;v{"use strict";var Edt=qa(),FP=ef(),kdt=yv(),Cdt=Eg(),Ig=XN().makeDragBox,gd=Rh().DRAGGERSIZE;zP.initInteractions=function(t){var r=t._fullLayout;if(t._context.staticPlot){Edt.select(t).selectAll(".drag").remove();return}if(!(!r._has("cartesian")&&!r._has("splom"))){var n=Object.keys(r._plots||{}).sort(function(a,o){if((r._plots[a].mainplot&&!0)===(r._plots[o].mainplot&&!0)){var s=a.split("y"),l=o.split("y");return s[0]===l[0]?Number(s[1]||1)-Number(l[1]||1):Number(s[0]||1)-Number(l[0]||1)}return r._plots[a].mainplot?1:-1});n.forEach(function(a){var o=r._plots[a],s=o.xaxis,l=o.yaxis;if(!o.mainplot){var u=Ig(t,o,s._offset,l._offset,s._length,l._length,"ns","ew");u.onmousemove=function(h){t._fullLayout._rehover=function(){t._fullLayout._hoversubplot===a&&t._fullLayout._plots[a]&&FP.hover(t,h,a)},FP.hover(t,h,a),t._fullLayout._lasthover=u,t._fullLayout._hoversubplot=a},u.onmouseout=function(h){t._dragging||(t._fullLayout._hoversubplot=null,kdt.unhover(t,h))},t._context.showAxisDragHandles&&(Ig(t,o,s._offset-gd,l._offset-gd,gd,gd,"n","w"),Ig(t,o,s._offset+s._length,l._offset-gd,gd,gd,"n","e"),Ig(t,o,s._offset-gd,l._offset+l._length,gd,gd,"s","w"),Ig(t,o,s._offset+s._length,l._offset+l._length,gd,gd,"s","e"))}if(t._context.showAxisDragHandles){if(a===s._mainSubplot){var c=s._mainLinePosition;s.side==="top"&&(c-=gd),Ig(t,o,s._offset+s._length*.1,c,s._length*.8,gd,"","ew"),Ig(t,o,s._offset,c,s._length*.1,gd,"","w"),Ig(t,o,s._offset+s._length*.9,c,s._length*.1,gd,"","e")}if(a===l._mainSubplot){var f=l._mainLinePosition;l.side!=="right"&&(f-=gd),Ig(t,o,f,l._offset+l._length*.1,gd,l._length*.8,"ns",""),Ig(t,o,f,l._offset+l._length*.9,gd,l._length*.1,"s",""),Ig(t,o,f,l._offset,gd,l._length*.1,"n","")}}});var i=r._hoverlayer.node();i.onmousemove=function(a){a.target=t._fullLayout._lasthover,FP.hover(t,a,r._hoversubplot)},i.onclick=function(a){a.target=t._fullLayout._lasthover,FP.click(t,a)},i.onmousedown=function(a){t._fullLayout._lasthover.onmousedown(a)},zP.updateFx(t)}};zP.updateFx=function(e){var t=e._fullLayout,r=t.dragmode==="pan"?"move":"crosshair";Cdt(t._draggers,r)}});var Rhe=ye((Hor,Ihe)=>{"use strict";var Phe=Oa();Ihe.exports=function(t){for(var r=Phe.layoutArrayContainers,n=Phe.layoutArrayRegexes,i=t.split("[")[0],a,o,s=0;s{"use strict";var Ldt=Ay(),YN=P6(),YM=K1(),Pdt=V6().sorterAsc,KN=Oa();KM.containerArrayMatch=Rhe();var Idt=KM.isAddVal=function(t){return t==="add"||Ldt(t)},Dhe=KM.isRemoveVal=function(t){return t===null||t==="remove"};KM.applyContainerArrayChanges=function(t,r,n,i,a){var o=r.astr,s=KN.getComponentMethod(o,"supplyLayoutDefaults"),l=KN.getComponentMethod(o,"draw"),u=KN.getComponentMethod(o,"drawOne"),c=i.replot||i.recalc||s===YN||l===YN,f=t.layout,h=t._fullLayout;if(n[""]){Object.keys(n).length>1&&YM.warn("Full array edits are incompatible with other edits",o);var d=n[""][""];if(Dhe(d))r.set(null);else if(Array.isArray(d))r.set(d);else return YM.warn("Unrecognized full array edit value",o,d),!0;return c?!1:(s(f,h),l(t),!0)}var v=Object.keys(n).map(Number).sort(Pdt),m=r.get(),b=m||[],p=a(h,o).get(),k=[],M=-1,T=b.length,L,x,C,S,g,P,E,z;for(L=0;Lb.length-(E?0:1)){YM.warn("index out of range",o,C);continue}if(P!==void 0)g.length>1&&YM.warn("Insertion & removal are incompatible with edits to the same index.",o,C),Dhe(P)?k.push(C):E?(P==="add"&&(P={}),b.splice(C,0,P),p&&p.splice(C,0,{})):YM.warn("Unrecognized full object edit value",o,C,P),M===-1&&(M=C);else for(x=0;x=0;L--)b.splice(k[L],1),p&&p.splice(k[L],1);if(b.length?m||r.set(b):r.set(null),c)return!1;if(s(f,h),u!==YN){var q;if(M===-1)q=v;else{for(T=Math.max(b.length,T),q=[],L=0;L=M));L++)q.push(C);for(L=M;L{"use strict";var Bhe=Eo(),Nhe=Oa(),Uv=Pr(),JM=Mc(),Uhe=df(),Vhe=ka(),$M=Uhe.cleanId,Rdt=Uhe.getFromTrace,JN=Nhe.traceIs,Ddt=["x","y","z"];L0.clearPromiseQueue=function(e){Array.isArray(e._promises)&&e._promises.length>0&&Uv.log("Clearing previous rejected promises from queue."),e._promises=[]};L0.cleanLayout=function(e){var t,r;e||(e={}),e.xaxis1&&(e.xaxis||(e.xaxis=e.xaxis1),delete e.xaxis1),e.yaxis1&&(e.yaxis||(e.yaxis=e.yaxis1),delete e.yaxis1),e.scene1&&(e.scene||(e.scene=e.scene1),delete e.scene1);var n=(JM.subplotsRegistry.cartesian||{}).attrRegex,i=(JM.subplotsRegistry.polar||{}).attrRegex,a=(JM.subplotsRegistry.ternary||{}).attrRegex,o=(JM.subplotsRegistry.gl3d||{}).attrRegex,s=Object.keys(e);for(t=0;t3?(b.x=1.02,b.xanchor="left"):b.x<-2&&(b.x=-.02,b.xanchor="right"),b.y>3?(b.y=1.02,b.yanchor="bottom"):b.y<-2&&(b.y=-.02,b.yanchor="top")),e.dragmode==="rotate"&&(e.dragmode="orbit"),Vhe.clean(e),e.template&&e.template.layout&&L0.cleanLayout(e.template.layout),e};function sT(e,t,r=!1){var n=e[t],i=t.charAt(0);r&&Array.isArray(n)||n&&n!=="paper"&&(e[t]=$M(n,i,!0))}L0.cleanData=function(e){for(var t=0;t0)return e.slice(0,t)}L0.hasParent=function(e,t){for(var r=Ohe(t);r;){if(r in e)return!0;r=Ohe(r)}return!1};L0.clearAxisTypes=function(e,t,r){for(var n=0;n{let r=(...n)=>n.every(i=>Uv.isPlainObject(i))||n.every(i=>Array.isArray(i));if([e,t].every(n=>Array.isArray(n))){if(e.length!==t.length)return!1;for(let n=0;nUv.isPlainObject(n))){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e){if(n.startsWith("_"))continue;let i=e[n],a=t[n];if(i!==a&&!(r(i,a)?$N(i,a):!1))return!1}return!0}return!1};L0.collectionsAreEqual=$N});var YP=ye(_l=>{"use strict";var NP=qa(),qdt=Eo(),Odt=cO(),Sa=Pr(),Ec=Sa.nestedProperty,tU=L3(),op=Mne(),P0=Oa(),XP=R3(),Qo=Mc(),Vv=ho(),Bdt=MB(),Ndt=Rd(),QN=So(),Udt=ka(),Vdt=ZN().initInteractions,Gdt=Wp(),Hdt=qf().clearOutline,Zhe=xb().dfltConfig,OP=Fhe(),gh=Ghe(),Au=LM(),T_=mc(),jdt=Rh().AX_NAME_PATTERN,eU=0,Hhe=5;function Wdt(e,t,r,n){var i;if(e=Sa.getGraphDiv(e),tU.init(e),Sa.isPlainObject(t)){var a=t;t=a.data,r=a.layout,n=a.config,i=a.frames}var o=tU.triggerHandler(e,"plotly_beforeplot",[t,r,n]);if(o===!1)return Promise.reject();!t&&!r&&!Sa.isPlotDiv(e)&&Sa.warn("Calling _doPlot as if redrawing but this container doesn't yet have a plot.",e);function s(){if(i)return _l.addFrames(e,i)}Khe(e,n),r||(r={}),NP.select(e).classed("js-plotly-plot",!0),QN.makeTester(),Array.isArray(e._promises)||(e._promises=[]);var l=(e.data||[]).length===0&&Array.isArray(t);Array.isArray(t)&&(gh.cleanData(t),l?e.data=t:e.data.push.apply(e.data,t),e.empty=!1),(!e.layout||l)&&(e.layout=gh.cleanLayout(r)),Qo.supplyDefaults(e);var u=e._fullLayout,c=u._has("cartesian");u._replotting=!0,(l||u._shouldCreateBgLayer)&&(pvt(e),u._shouldCreateBgLayer&&delete u._shouldCreateBgLayer),QN.initGradients(e),QN.initPatterns(e),l&&Vv.saveShowSpikeInitial(e);var f=!e.calcdata||e.calcdata.length!==(e._fullData||[]).length;f&&Qo.doCalcdata(e);for(var h=0;h=e.data.length||i<-e.data.length)throw new Error(r+" must be valid indices for gd.data.");if(t.indexOf(i,n+1)>-1||i>=0&&t.indexOf(-e.data.length+i)>-1||i<0&&t.indexOf(e.data.length+i)>-1)throw new Error("each index in "+r+" must be unique.")}}function Jhe(e,t,r){if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(typeof t=="undefined")throw new Error("currentIndices is a required argument.");if(Array.isArray(t)||(t=[t]),VP(e,t,"currentIndices"),typeof r!="undefined"&&!Array.isArray(r)&&(r=[r]),typeof r!="undefined"&&VP(e,r,"newIndices"),typeof r!="undefined"&&t.length!==r.length)throw new Error("current and new indices must be of equal length.")}function Jdt(e,t,r){var n,i;if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(typeof t=="undefined")throw new Error("traces must be defined.");for(Array.isArray(t)||(t=[t]),n=0;n=0&&c=0&&c0&&typeof S.parts[E]!="string";)E--;var z=S.parts[E],q=S.parts[E-1]+"."+z,V=S.parts.slice(0,E).join("."),G=Ec(e.layout,V).get(),Z=Ec(n,V).get(),j=S.get();if(g!==void 0){p[C]=g,k[C]=z==="reverse"?g:zy(j);var N=XP.getLayoutValObject(n,S.parts);if(N&&N.impliedEdits&&g!==null)for(var H in N.impliedEdits)M(Sa.relativeAttr(C,H),N.impliedEdits[H]);if(["width","height"].indexOf(C)!==-1)if(g){M("autosize",null);var ie=C==="height"?"width":"height";M(ie,n[ie])}else n[C]=e._initialAutoSize[C];else if(C==="autosize")M("width",g?null:n.width),M("height",g?null:n.height);else if(q.match(ode))x(q),Ec(n,V+"._inputRange").set(null);else if(q.match(sde)){x(q),Ec(n,V+"._inputRange").set(null);var ae=Ec(n,V).get();ae._inputDomain&&(ae._input.domain=ae._inputDomain.slice())}else q.match(tvt)&&Ec(n,V+"._inputDomain").set(null);if(z==="type"){L=G;var _e=Z.type==="linear"&&g==="log",Ee=Z.type==="log"&&g==="linear";if(_e||Ee){if(!L||!L.range)M(V+".autorange",!0);else if(Z.autorange)_e&&(L.range=L.range[1]>L.range[0]?[1,2]:[2,1]);else{var Ce=L.range[0],ge=L.range[1];_e?(Ce<=0&&ge<=0&&M(V+".autorange",!0),Ce<=0?Ce=ge/1e6:ge<=0&&(ge=Ce/1e6),M(V+".range[0]",Math.log(Ce)/Math.LN10),M(V+".range[1]",Math.log(ge)/Math.LN10)):(M(V+".range[0]",Math.pow(10,Ce)),M(V+".range[1]",Math.pow(10,ge)))}Array.isArray(n._subplots.polar)&&n._subplots.polar.length&&n[S.parts[0]]&&S.parts[1]==="radialaxis"&&delete n[S.parts[0]]._subplot.viewInitial["radialaxis.range"],P0.getComponentMethod("annotations","convertCoords")(e,Z,g,M),P0.getComponentMethod("images","convertCoords")(e,Z,g,M)}else M(V+".autorange",!0),M(V+".range",null);Ec(n,V+"._inputRange").set(null)}else if(z.match(jdt)){var re=Ec(n,C).get(),Se=(g||{}).type;(!Se||Se==="-")&&(Se="linear"),P0.getComponentMethod("annotations","convertCoords")(e,re,Se,M),P0.getComponentMethod("images","convertCoords")(e,re,Se,M)}var ke=OP.containerArrayMatch(C);if(ke){c=ke.array,f=ke.index;var be=ke.property,Be=N||{editType:"calc"};f!==""&&be===""&&(OP.isAddVal(g)?k[C]=null:OP.isRemoveVal(g)?k[C]=(Ec(r,c).get()||[])[f]:Sa.warn("unrecognized full object value",t)),T_.update(b,Be),u[c]||(u[c]={});var Le=u[c][f];Le||(Le=u[c][f]={}),Le[be]=g,delete t[C]}else z==="reverse"?(G.range?G.range.reverse():(M(V+".autorange",!0),G.range=[1,0]),Z.autorange?b.calc=!0:b.plot=!0):(C==="dragmode"&&(g===!1&&j!==!1||g!==!1&&j===!1)||n._has("scatter-like")&&n._has("regl")&&C==="dragmode"&&(g==="lasso"||g==="select")&&!(j==="lasso"||j==="select")?b.plot=!0:N?T_.update(b,N):b.calc=!0,S.set(g))}}for(c in u){var me=OP.applyContainerArrayChanges(e,a(r,c),u[c],b,a);me||(b.plot=!0)}for(var Pe in T){L=Vv.getFromId(e,Pe);var ce=L&&L._constraintGroup;if(ce){b.calc=!0;for(var He in ce)T[He]||(Vv.getFromId(e,He)._constraintShrinkable=!0)}}(ude(e)||t.height||t.width)&&(b.plot=!0);var lt=n.shapes;for(f=0;f1;)if(n.pop(),r=Ec(t,n.join(".")+".uirevision").get(),r!==void 0)return r;return t.uirevision}function nvt(e,t){for(var r=0;r[V,e._ev.listeners(V)]);a=_l.newPlot(e,t,r,n).then(()=>{for(let[V,G]of q)G.forEach(Z=>e.on(V,Z));return _l.react(e,t,r,n)})}else{e.data=t||[],gh.cleanData(e.data),e.layout=r||{},gh.cleanLayout(e.layout),ovt(e.data,e.layout,s,l),Qo.supplyDefaults(e,{skipUpdateCalc:!0});var f=e._fullData,h=e._fullLayout,d=h.datarevision===void 0,v=h.transition,m=uvt(e,l,h,d,v),b=m.newDataRevision,p=lvt(e,s,f,d,v,b);if(ude(e)&&(m.layoutReplot=!0),p.calc||m.calc){e.calcdata=void 0;for(var k=Object.getOwnPropertyNames(h),M=0;M(c||e.emit("plotly_react",{config:n,data:t,layout:r}),e))}function lvt(e,t,r,n,i,a){var o=t.length===r.length;if(!i&&!o)return{fullReplot:!0,calc:!0};var s=T_.traceFlags();s.arrays={},s.nChanges=0,s.nChangesAnim=0;var l,u;function c(d){var v=XP.getTraceValObject(u,d);return!u._module.animatable&&v.anim&&(v.anim=!1),v}var f={getValObject:c,flags:s,immutable:n,transition:i,newDataRevision:a,gd:e},h={};for(l=0;l=i.length?i[0]:i[u]:i}function s(u){return Array.isArray(a)?u>=a.length?a[0]:a[u]:a}function l(u,c){var f=0;return function(){if(u&&++f===c)return u()}}return new Promise(function(u,c){function f(){if(n._frameQueue.length!==0){for(;n._frameQueue.length;){var z=n._frameQueue.pop();z.onInterrupt&&z.onInterrupt()}e.emit("plotly_animationinterrupted",[])}}function h(z){if(z.length!==0){for(var q=0;qn._timeToNext&&v()};z()}var b=0;function p(z){return Array.isArray(i)?b>=i.length?z.transitionOpts=i[b]:z.transitionOpts=i[0]:z.transitionOpts=i,b++,z}var k,M,T=[],L=t==null,x=Array.isArray(t),C=!L&&!x&&Sa.isPlainObject(t);if(C)T.push({type:"object",data:p(Sa.extendFlat({},t))});else if(L||["string","number"].indexOf(typeof t)!==-1)for(k=0;k0&&PP)&&E.push(M);T=E}}T.length>0?h(T):(e.emit("plotly_animated"),u())})}function fvt(e,t,r){if(e=Sa.getGraphDiv(e),t==null)return Promise.resolve();if(!Sa.isPlotDiv(e))throw new Error("This element is not a Plotly plot: "+e+". It's likely that you've failed to create a plot before adding frames. For more details, see https://plotly.com/javascript/animations/");var n,i,a,o,s=e._transitionData._frames,l=e._transitionData._frameHash;if(!Array.isArray(t))throw new Error("addFrames failure: frameList must be an Array of frame definitions"+t);var u=s.length+t.length*2,c=[],f={};for(n=t.length-1;n>=0;n--)if(Sa.isPlainObject(t[n])){var h=t[n].name,d=(l[h]||f[h]||{}).name,v=t[n].name,m=l[d]||f[d];d&&v&&typeof v=="number"&&m&&eUS.index?-1:C.index=0;n--){if(i=c[n].frame,typeof i.name=="number"&&Sa.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"),!i.name)for(;l[i.name="frame "+e._transitionData._counter++];);if(l[i.name]){for(a=0;a=0;r--)n=t[r],a.push({type:"delete",index:n}),o.unshift({type:"insert",index:n,value:i[n]});var s=Qo.modifyFrames,l=Qo.modifyFrames,u=[e,o],c=[e,a];return op&&op.add(e,s,u,l,c),Qo.modifyFrames(e,a)}function dvt(e){e=Sa.getGraphDiv(e);var t=e._fullLayout||{},r=e._fullData||[];return Qo.cleanPlot([],{},r,t),Qo.purge(e),tU.purge(e),t._container&&t._container.remove(),delete e._context,e}function vvt(e){var t=e._fullLayout,r=e.getBoundingClientRect();if(!Sa.equalDomRects(r,t._lastBBox)){var n=t._invTransform=Sa.inverseTransformMatrix(Sa.getFullTransformMatrix(e));t._invScaleX=Math.sqrt(n[0][0]*n[0][0]+n[0][1]*n[0][1]+n[0][2]*n[0][2]),t._invScaleY=Math.sqrt(n[1][0]*n[1][0]+n[1][1]*n[1][1]+n[1][2]*n[1][2]),t._lastBBox=r}}function pvt(e){var t=NP.select(e),r=e._fullLayout;if(r._calcInverseTransform=vvt,r._calcInverseTransform(e),r._container=t.selectAll(".plot-container").data([0]),r._container.enter().insert("div",":first-child").classed("plot-container",!0).classed("plotly",!0).style({width:"100%",height:"100%"}),r._paperdiv=r._container.selectAll(".svg-container").data([0]),r._paperdiv.enter().append("div").classed("user-select-none",!0).classed("svg-container",!0).style("position","relative"),r._glcontainer=r._paperdiv.selectAll(".gl-container").data([{}]),r._glcontainer.enter().append("div").classed("gl-container",!0),r._paperdiv.selectAll(".main-svg").remove(),r._paperdiv.select(".modebar-container").remove(),r._paper=r._paperdiv.insert("svg",":first-child").classed("main-svg",!0),r._toppaper=r._paperdiv.append("svg").classed("main-svg",!0),r._modebardiv=r._paperdiv.append("div"),delete r._modeBar,r._hoverpaper=r._paperdiv.append("svg").classed("main-svg",!0),!r._uid){var n={};NP.selectAll("defs").each(function(){this.id&&(n[this.id.split("-")[1]]=1)}),r._uid=Sa.randstr(n)}r._paperdiv.selectAll(".main-svg").attr(Gdt.svgAttrs),r._defs=r._paper.append("defs").attr("id","defs-"+r._uid),r._clips=r._defs.append("g").classed("clips",!0),r._topdefs=r._toppaper.append("defs").attr("id","topdefs-"+r._uid),r._topclips=r._topdefs.append("g").classed("clips",!0),r._bgLayer=r._paper.append("g").classed("bglayer",!0),r._draggers=r._paper.append("g").classed("draglayer",!0);var i=r._paper.append("g").classed("layer-below",!0);r._imageLowerLayer=i.append("g").classed("imagelayer",!0),r._shapeLowerLayer=i.append("g").classed("shapelayer",!0),r._cartesianlayer=r._paper.append("g").classed("cartesianlayer",!0),r._polarlayer=r._paper.append("g").classed("polarlayer",!0),r._smithlayer=r._paper.append("g").classed("smithlayer",!0),r._ternarylayer=r._paper.append("g").classed("ternarylayer",!0),r._geolayer=r._paper.append("g").classed("geolayer",!0),r._funnelarealayer=r._paper.append("g").classed("funnelarealayer",!0),r._pielayer=r._paper.append("g").classed("pielayer",!0),r._iciclelayer=r._paper.append("g").classed("iciclelayer",!0),r._treemaplayer=r._paper.append("g").classed("treemaplayer",!0),r._sunburstlayer=r._paper.append("g").classed("sunburstlayer",!0),r._indicatorlayer=r._toppaper.append("g").classed("indicatorlayer",!0),r._glimages=r._paper.append("g").classed("glimages",!0);var a=r._toppaper.append("g").classed("layer-above",!0);r._imageUpperLayer=a.append("g").classed("imagelayer",!0),r._shapeUpperLayer=a.append("g").classed("shapelayer",!0),r._selectionLayer=r._toppaper.append("g").classed("selectionlayer",!0),r._infolayer=r._toppaper.append("g").classed("infolayer",!0),r._menulayer=r._toppaper.append("g").classed("menulayer",!0),r._zoomlayer=r._toppaper.append("g").classed("zoomlayer",!0),r._hoverlayer=r._hoverpaper.append("g").classed("hoverlayer",!0),r._modebardiv.classed("modebar-container",!0).style("position","absolute").style("top","0px").style("right","0px"),e.emit("plotly_framework")}_l.animate=cvt;_l.addFrames=fvt;_l.deleteFrames=hvt;_l.addTraces=rde;_l.deleteTraces=ide;_l.extendTraces=ede;_l.moveTraces=rU;_l.prependTraces=tde;_l.newPlot=Kdt;_l._doPlot=Wdt;_l.purge=dvt;_l.react=svt;_l.redraw=Ydt;_l.relayout=QM;_l.restyle=GP;_l.setPlotConfig=Xdt;_l.update=jP;_l._guiRelayout=iU(QM);_l._guiRestyle=iU(GP);_l._guiUpdate=iU(jP);_l._storeDirectGUIEdit=evt});var qy=ye(Im=>{"use strict";var gvt=Oa();Im.getDelay=function(e){return e._has&&(e._has("gl3d")||e._has("mapbox")||e._has("map"))?500:0};Im.getRedrawFunc=function(e){return function(){gvt.getComponentMethod("colorbar","draw")(e)}};Im.encodeSVG=function(e){return"data:image/svg+xml,"+encodeURIComponent(e)};Im.encodeJSON=function(e){return"data:application/json,"+encodeURIComponent(e)};var cde=window.URL||window.webkitURL;Im.createObjectURL=function(e){return cde.createObjectURL(e)};Im.revokeObjectURL=function(e){return cde.revokeObjectURL(e)};Im.createBlob=function(e,t){if(t==="svg")return new window.Blob([e],{type:"image/svg+xml;charset=utf-8"});if(t==="full-json")return new window.Blob([e],{type:"application/json;charset=utf-8"});var r=mvt(window.atob(e));return new window.Blob([r],{type:"image/"+t})};Im.octetStream=function(e){document.location.href="data:application/octet-stream"+e};function mvt(e){for(var t=e.length,r=new ArrayBuffer(t),n=new Uint8Array(r),i=0;i{"use strict";var aU=qa(),Yor=Pr(),yvt=So(),_vt=ka(),Kor=Wp(),nU=/"/g,t4="TOBESTRIPPED",xvt=new RegExp('("'+t4+")|("+t4+'")',"g");function bvt(e){var t=aU.select("body").append("div").style({display:"none"}).html(""),r=e.replace(/(&[^;]*;)/gi,function(n){return n==="<"?"<":n==="&rt;"?">":n.indexOf("<")!==-1||n.indexOf(">")!==-1?"":t.html(n).text()});return t.remove(),r}function wvt(e){return e.replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g,"&")}fde.exports=function(t,r,n){var i=t._fullLayout,a=i._paper,o=i._toppaper,s=i.width,l=i.height,u;a.insert("rect",":first-child").call(yvt.setRect,0,0,s,l).call(_vt.fill,i.paper_bgcolor);var c=i._basePlotModules||[];for(u=0;u{"use strict";var Tvt=Pr(),Avt=Sb().EventEmitter,r4=qy();function Svt(e){var t=e.emitter||new Avt,r=new Promise(function(n,i){var a=window.Image,o=e.svg,s=e.format||"png",l=e.canvas,u=e.scale||1,c=e.width||300,f=e.height||150,h=u*c,d=u*f,v=l.getContext("2d",{willReadFrequently:!0}),m=new a,b,p;s==="svg"||Tvt.isSafari()?p=r4.encodeSVG(o):(b=r4.createBlob(o,"svg"),p=r4.createObjectURL(b)),l.width=h,l.height=d,m.onload=function(){var k;switch(b=null,r4.revokeObjectURL(p),s!=="svg"&&v.drawImage(m,0,0,h,d),s){case"jpeg":k=l.toDataURL("image/jpeg");break;case"png":k=l.toDataURL("image/png");break;case"webp":k=l.toDataURL("image/webp");break;case"svg":k=p;break;default:var M="Image format is not jpeg, png, svg or webp.";if(i(new Error(M)),!e.promise)return t.emit("error",M)}n(k),e.promise||t.emit("success",k)},m.onerror=function(k){if(b=null,r4.revokeObjectURL(p),i(k),!e.promise)return t.emit("error",k)},m.src=p});return e.promise?r:t}hde.exports=Svt});var sU=ye((Qor,pde)=>{"use strict";var dde=Eo(),vde=YP(),Mvt=Mc(),Rm=Pr(),i4=qy(),Evt=KP(),kvt=JP(),Cvt=m6().version,oU={format:{valType:"enumerated",values:["png","jpeg","webp","svg","full-json"],dflt:"png"},width:{valType:"number",min:1},height:{valType:"number",min:1},scale:{valType:"number",min:0,dflt:1},setBackground:{valType:"any",dflt:!1},imageDataOnly:{valType:"boolean",dflt:!1}};function Lvt(e,t){t=t||{};var r,n,i,a;Rm.isPlainObject(e)?(r=e.data||[],n=e.layout||{},i=e.config||{},a={}):(e=Rm.getGraphDiv(e),r=Rm.extendDeep([],e.data),n=Rm.extendDeep({},e.layout),i=e._context,a=e._fullLayout||{});function o(x){return!(x in t)||Rm.validate(t[x],oU[x])}if(!o("width")&&t.width!==null||!o("height")&&t.height!==null)throw new Error("Height and width should be pixel values.");if(!o("format"))throw new Error("Export format is not "+Rm.join2(oU.format.values,", "," or ")+".");var s={};function l(x,C){return Rm.coerce(t,s,oU,x,C)}var u=l("format"),c=l("width"),f=l("height"),h=l("scale"),d=l("setBackground"),v=l("imageDataOnly"),m=document.createElement("div");m.style.position="absolute",m.style.left="-5000px",document.body.appendChild(m);var b=Rm.extendFlat({},n);c?b.width=c:t.width===null&&dde(a.width)&&(b.width=a.width),f?b.height=f:t.height===null&&dde(a.height)&&(b.height=a.height);var p=Rm.extendFlat({},i,{_exportedPlot:!0,staticPlot:!0,setBackground:d}),k=i4.getRedrawFunc(m);function M(){return new Promise(function(x){setTimeout(x,i4.getDelay(m._fullLayout))})}function T(){return new Promise(function(x,C){var S=Evt(m,u,h),g=m._fullLayout.width,P=m._fullLayout.height;function E(){vde.purge(m),document.body.removeChild(m)}if(u==="full-json"){var z=Mvt.graphJson(m,!1,"keepdata","object",!0,!0);return z.version=Cvt,z=JSON.stringify(z),E(),x(v?z:i4.encodeJSON(z))}if(E(),u==="svg")return x(v?S:i4.encodeSVG(S));var q=document.createElement("canvas");q.id=Rm.randstr(),kvt({format:u,width:g,height:P,scale:h,canvas:q,svg:S,promise:!0}).then(x).catch(C)})}function L(x){return v?x.replace(i4.IMAGE_URL_PREFIX,""):x}return new Promise(function(x,C){vde.newPlot(m,r,b,p).then(k).then(M).then(T).then(function(S){x(L(S))}).catch(function(S){C(S)})})}pde.exports=Lvt});var yde=ye((esr,mde)=>{"use strict";var I0=Pr(),Pvt=Mc(),Ivt=R3(),Rvt=xb().dfltConfig,Rg=I0.isPlainObject,t2=Array.isArray,lU=I0.isArrayOrTypedArray;mde.exports=function(t,r){t===void 0&&(t=[]),r===void 0&&(r={});var n=Ivt.get(),i=[],a={_context:I0.extendFlat({},Rvt)},o,s;t2(t)?(a.data=I0.extendDeep([],t),o=t):(a.data=[],o=[],i.push(md("array","data"))),Rg(r)?(a.layout=I0.extendDeep({},r),s=r):(a.layout={},s={},arguments.length>1&&i.push(md("object","layout"))),Pvt.supplyDefaults(a);for(var l=a._fullData,u=o.length,c=0;cf.length&&n.push(md("unused",i,u.concat(f.length)));var p=f.length,k=Array.isArray(b);k&&(p=Math.min(p,b.length));var M,T,L,x,C;if(h.dimensions===2)for(T=0;Tf[T].length&&n.push(md("unused",i,u.concat(T,f[T].length)));var S=f[T].length;for(M=0;M<(k?Math.min(S,b[T].length):S);M++)L=k?b[T][M]:b,x=c[T][M],C=f[T][M],I0.validate(x,L)?C!==x&&C!==+x&&n.push(md("dynamic",i,u.concat(T,M),x,C)):n.push(md("value",i,u.concat(T,M),x))}else n.push(md("array",i,u.concat(T),c[T]));else for(T=0;T{"use strict";var Nvt=Pr(),QP=qy();function Uvt(e,t,r){var n=document.createElement("a"),i="download"in n,a=new Promise(function(o,s){var l,u;if(i)return l=QP.createBlob(e,r),u=QP.createObjectURL(l),n.href=u,n.download=t,document.body.appendChild(n),n.click(),document.body.removeChild(n),QP.revokeObjectURL(u),l=null,o(t);if(Nvt.isSafari()){var c=r==="svg"?",":";base64,";return QP.octetStream(c+encodeURIComponent(e)),o(t)}s(new Error("download error"))});return a}_de.exports=Uvt});var uU=ye((isr,wde)=>{"use strict";var bde=Pr(),Vvt=sU(),Gvt=xde(),rsr=qy();function Hvt(e,t){var r;return bde.isPlainObject(e)||(r=bde.getGraphDiv(e)),t=t||{},t.format=t.format||"png",t.width=t.width||null,t.height=t.height||null,t.imageDataOnly=!0,new Promise(function(n,i){r&&r._snapshotInProgress&&i(new Error("Snapshotting already in progress.")),r&&(r._snapshotInProgress=!0);var a=Vvt(e,t),o=t.filename||e.fn||"newplot";o+="."+t.format.replace("-","."),a.then(function(s){return r&&(r._snapshotInProgress=!1),Gvt(s,o,t.format)}).then(function(s){n(s)}).catch(function(s){r&&(r._snapshotInProgress=!1),i(s)})})}wde.exports=Hvt});var Ede=ye(cU=>{"use strict";var Cp=Pr(),Lp=Cp.isPlainObject,Tde=R3(),Ade=Mc(),jvt=Gl(),Sde=vl(),Mde=xb().dfltConfig;cU.makeTemplate=function(e){e=Cp.isPlainObject(e)?e:Cp.getGraphDiv(e),e=Cp.extendDeep({_context:Mde},{data:e.data,layout:e.layout}),Ade.supplyDefaults(e);var t=e.data||[],r=e.layout||{};r._basePlotModules=e._fullLayout._basePlotModules,r._modules=e._fullLayout._modules;var n={data:{},layout:{}};t.forEach(function(d){var v={};n4(d,v,Xvt.bind(null,d));var m=Cp.coerce(d,{},jvt,"type"),b=n.data[m];b||(b=n.data[m]=[]),b.push(v)}),n4(r,n.layout,Wvt.bind(null,r)),delete n.layout.template;var i=r.template;if(Lp(i)){var a=i.layout,o,s,l,u,c,f;Lp(a)&&eI(a,n.layout);var h=i.data;if(Lp(h)){for(s in n.data)if(l=h[s],Array.isArray(l)){for(c=n.data[s],f=c.length,u=l.length,o=0;op?o.push({code:"unused",traceType:d,templateCount:b,dataCount:p}):p>b&&o.push({code:"reused",traceType:d,templateCount:b,dataCount:p})}}function k(M,T){for(var L in M)if(L.charAt(0)!=="_"){var x=M[L],C=R0(M,L,T);Lp(x)?(Array.isArray(M)&&x._template===!1&&x.templateitemname&&o.push({code:"missing",path:C,templateitemname:x.templateitemname}),k(x,C)):Array.isArray(x)&&Zvt(x)&&k(x,C)}}if(k({data:l,layout:s},""),o.length)return o.map(Yvt)};function Zvt(e){for(var t=0;t{"use strict";var rd=YP();tf._doPlot=rd._doPlot;tf.newPlot=rd.newPlot;tf.restyle=rd.restyle;tf.relayout=rd.relayout;tf.redraw=rd.redraw;tf.update=rd.update;tf._guiRestyle=rd._guiRestyle;tf._guiRelayout=rd._guiRelayout;tf._guiUpdate=rd._guiUpdate;tf._storeDirectGUIEdit=rd._storeDirectGUIEdit;tf.react=rd.react;tf.extendTraces=rd.extendTraces;tf.prependTraces=rd.prependTraces;tf.addTraces=rd.addTraces;tf.deleteTraces=rd.deleteTraces;tf.moveTraces=rd.moveTraces;tf.purge=rd.purge;tf.addFrames=rd.addFrames;tf.deleteFrames=rd.deleteFrames;tf.animate=rd.animate;tf.setPlotConfig=rd.setPlotConfig;var Kvt=jS().getGraphDiv,Jvt=vP().eraseActiveShape;tf.deleteActiveShape=function(e){return Jvt(Kvt(e))};tf.toImage=sU();tf.validate=yde();tf.downloadImage=uU();var kde=Ede();tf.makeTemplate=kde.makeTemplate;tf.validateTemplate=kde.validateTemplate});var lT=ye((osr,Lde)=>{"use strict";var fU=Pr(),$vt=Oa();Lde.exports=function(t,r,n,i){var a=i("x"),o=i("y"),s,l=$vt.getComponentMethod("calendars","handleTraceDefaults");if(l(t,r,["x","y"],n),a){var u=fU.minRowLength(a);o?s=Math.min(u,fU.minRowLength(o)):(s=u,i("y0"),i("dy"))}else{if(!o)return 0;s=fU.minRowLength(o),i("x0"),i("dx")}return r._length=s,s}});var Dg=ye((ssr,Rde)=>{"use strict";var Pde=Pr().dateTick0,Qvt=fs(),ept=Qvt.ONEWEEK;function Ide(e,t){return e%ept===0?Pde(t,1):Pde(t,0)}Rde.exports=function(t,r,n,i,a){if(a||(a={x:!0,y:!0}),a.x){var o=i("xperiod");o&&(i("xperiod0",Ide(o,r.xcalendar)),i("xperiodalignment"))}if(a.y){var s=i("yperiod");s&&(i("yperiod0",Ide(s,r.ycalendar)),i("yperiodalignment"))}}});var zde=ye((lsr,Fde)=>{"use strict";var Dde=["orientation","groupnorm","stackgaps"];Fde.exports=function(t,r,n,i){var a=n._scatterStackOpts,o=i("stackgroup");if(o){var s=r.xaxis+r.yaxis,l=a[s];l||(l=a[s]={});var u=l[o],c=!1;u?u.traces.push(r):(u=l[o]={traceIndices:[],traces:[r]},c=!0);for(var f={orientation:r.x&&!r.y?"h":"v"},h=0;h{"use strict";var qde=ka(),Ode=pv().hasColorscale,Bde=td(),tpt=Ru();Nde.exports=function(t,r,n,i,a,o={}){var s=tpt.isBubble(t),l=(t.line||{}).color,u;if(l&&(n=l),a("marker.symbol"),a("marker.opacity",s?.7:1),a("marker.size"),o.noAngle||(a("marker.angle"),o.noAngleRef||a("marker.angleref"),o.noStandOff||a("marker.standoff")),a("marker.color",n),Ode(t,"marker")&&Bde(t,r,i,a,{prefix:"marker.",cLetter:"c"}),o.noSelect||(a("selected.marker.color"),a("unselected.marker.color"),a("selected.marker.size"),a("unselected.marker.size")),o.noLine||(l&&!Array.isArray(l)&&r.marker.color!==l?u=l:s?u=qde.background:u=qde.defaultLine,a("marker.line.color",u),Ode(t,"marker.line")&&Bde(t,r,i,a,{prefix:"marker.line.",cLetter:"c"}),a("marker.line.width",s?1:0),o.noLineDash||a("marker.line.dash")),s&&(a("marker.sizeref"),a("marker.sizemin"),a("marker.sizemode")),o.gradient){var c=a("marker.gradient.type");c!=="none"&&a("marker.gradient.color")}}});var D0=ye((csr,Ude)=>{"use strict";var rpt=Pr().isArrayOrTypedArray,ipt=pv().hasColorscale,npt=td();Ude.exports=function(t,r,n,i,a,o){o||(o={});var s=(t.marker||{}).color;if(s&&s._inputArray&&(s=s._inputArray),a("line.color",n),ipt(t,"line"))npt(t,r,i,a,{prefix:"line.",cLetter:"c"});else{var l=(rpt(s)?!1:s)||n;a("line.color",l)}a("line.width"),o.noDash||a("line.dash"),o.backoff&&a("line.backoff")}});var uT=ye((fsr,Vde)=>{"use strict";Vde.exports=function(t,r,n){var i=n("line.shape");i==="spline"&&n("line.smoothing")}});var F0=ye((hsr,Gde)=>{"use strict";var apt=Pr();Gde.exports=function(e,t,r,n,i){i=i||{},n("textposition"),apt.coerceFont(n,"textfont",i.font||r.font,i),i.noSelect||(n("selected.textfont.color"),n("unselected.textfont.color"))}});var Fg=ye((dsr,jde)=>{"use strict";var rI=ka(),Hde=Pr().isArrayOrTypedArray;function opt(e){for(var t=rI.interpolate(e[0][1],e[1][1],.5),r=2;r{"use strict";var Wde=Pr(),spt=Oa(),lpt=pf(),upt=Pm(),cT=Ru(),cpt=lT(),fpt=Dg(),hpt=zde(),dpt=$p(),vpt=D0(),Xde=uT(),ppt=F0(),gpt=Fg(),mpt=Pr().coercePattern;Zde.exports=function(t,r,n,i){function a(d,v){return Wde.coerce(t,r,lpt,d,v)}var o=cpt(t,r,i,a);if(o||(r.visible=!1),!!r.visible){fpt(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("zorder");var s=hpt(t,r,i,a);i.scattermode==="group"&&r.orientation===void 0&&a("orientation","v");var l=!s&&o{"use strict";var ypt=$b().getAxisGroup;Kde.exports=function(t,r,n,i,a){var o=r.orientation,s=r[{v:"x",h:"y"}[o]+"axis"],l=ypt(n,s)+o,u=n._alignmentOpts||{},c=i("alignmentgroup"),f=u[l];f||(f=u[l]={});var h=f[c];h?h.traces.push(r):h=f[c]={traces:[r],alignmentIndex:Object.keys(f).length,offsetGroups:{}};var d=i("offsetgroup")||"",v=h.offsetGroups,m=v[d];r._offsetIndex=0,(a!=="group"||d)&&(m||(m=v[d]={offsetIndex:Object.keys(v).length}),r._offsetIndex=m.offsetIndex)}});var hU=ye((gsr,Jde)=>{"use strict";var _pt=Pr(),xpt=r2(),bpt=pf();Jde.exports=function(t,r){var n,i,a,o=r.scattermode;function s(h){return _pt.coerce(i._input,i,bpt,h)}if(r.scattermode==="group")for(a=0;a=0;c--){var f=t[c];if(f.type==="scatter"&&f.xaxis===l.xaxis&&f.yaxis===l.yaxis){f.opacity=void 0;break}}}}}});var Qde=ye((msr,$de)=>{"use strict";var wpt=Pr(),Tpt=rL();$de.exports=function(e,t){function r(i,a){return wpt.coerce(e,t,Tpt,i,a)}var n=t.barmode==="group";t.scattermode==="group"&&r("scattergap",n?t.bargap:.2)}});var zg=ye((ysr,tve)=>{"use strict";var Apt=Eo(),eve=Pr(),Spt=eve.dateTime2ms,iI=eve.incrementMonth,Mpt=fs(),Ept=Mpt.ONEAVGMONTH;tve.exports=function(t,r,n,i){if(r.type!=="date")return{vals:i};var a=t[n+"periodalignment"];if(!a)return{vals:i};var o=t[n+"period"],s;if(Apt(o)){if(o=+o,o<=0)return{vals:i}}else if(typeof o=="string"&&o.charAt(0)==="M"){var l=+o.substring(1);if(l>0&&Math.round(l)===l)s=l;else return{vals:i}}for(var u=r.calendar,c=a==="start",f=a==="end",h=t[n+"period0"],d=Spt(h,u)||0,v=[],m=[],b=[],p=i.length,k=0;kM;)x=iI(x,-s,u);for(;x<=M;)x=iI(x,s,u);L=iI(x,-s,u)}else{for(T=Math.round((M-d)/o),x=d+T*o;x>M;)x-=o;for(;x<=M;)x+=o;L=x-o}v[k]=c?L:f?x:(L+x)/2,m[k]=L,b[k]=x}return{vals:v,starts:m,ends:b}}});var z0=ye((_sr,ive)=>{"use strict";var dU=pv().hasColorscale,vU=gv(),rve=Ru();ive.exports=function(t,r){rve.hasLines(r)&&dU(r,"line")&&vU(t,r,{vals:r.line.color,containerStr:"line",cLetter:"c"}),rve.hasMarkers(r)&&(dU(r,"marker")&&vU(t,r,{vals:r.marker.color,containerStr:"marker",cLetter:"c"}),dU(r,"marker.line")&&vU(t,r,{vals:r.marker.line.color,containerStr:"marker.line",cLetter:"c"}))}});var Dm=ye((xsr,nve)=>{"use strict";var Of=Pr();nve.exports=function(t,r){for(var n=0;n{"use strict";var ave=Pr();ove.exports=function(t,r){ave.isArrayOrTypedArray(r.selectedpoints)&&ave.tagSelected(t,r)}});var O0=ye((wsr,dve)=>{"use strict";var sve=Eo(),gU=Pr(),a4=ho(),lve=zg(),pU=fs().BADNUM,mU=Ru(),kpt=z0(),Cpt=Dm(),Lpt=q0();function Ppt(e,t){var r=e._fullLayout,n=t._xA=a4.getFromId(e,t.xaxis||"x","x"),i=t._yA=a4.getFromId(e,t.yaxis||"y","y"),a=n.makeCalcdata(t,"x"),o=i.makeCalcdata(t,"y"),s=lve(t,n,"x",a),l=lve(t,i,"y",o),u=s.vals,c=l.vals,f=t._length,h=new Array(f),d=t.ids,v=yU(t,r,n,i),m=!1,b,p,k,M,T,L;fve(r,t);var x="x",C="y",S;if(v)gU.pushUnique(v.traceIndices,t.index),b=v.orientation==="v",b?(C="s",S="x"):(x="s",S="y"),T=v.stackgaps==="interpolate";else{var g=cve(t,f);uve(e,t,n,i,u,c,g)}var P=!!t.xperiodalignment,E=!!t.yperiodalignment;for(p=0;pp&&h[M].gap;)M--;for(L=h[M].s,k=h.length-1;k>M;k--)h[k].s=L;for(;p{"use strict";vve.exports=nI;var Ipt=Pr().distinctVals;function nI(e,t){this.traces=e,this.sepNegVal=t.sepNegVal,this.overlapNoMerge=t.overlapNoMerge;for(var r=1/0,n=t.posAxis._id.charAt(0),i=[],a=0;a{"use strict";gve.exports={TEXTPAD:3,eventDataKeys:["value","label"]}});var i2=ye((Ssr,xve)=>{"use strict";var B0=Eo(),{isArrayOrTypedArray:Oy}=Pr(),{BADNUM:fT}=fs(),Rpt=Oa(),o4=ho(),{getAxisGroup:Dpt}=$b(),aI=pve(),{TEXTPAD:Fpt}=A_(),{LINE_SPACING:zpt}=Dh(),{BR_TAG_ALL:qpt}=Zl();function Opt(e,t){for(var r=t.xaxis,n=t.yaxis,i=e._fullLayout,a=e._fullData,o=e.calcdata,s=[],l=[],u=0;ul+o||!B0(s))}for(var c=0;cn(a))):n(e.text);let i=e.outsidetextfont.size*zpt*r+Fpt;return{ppadplus:t.some(a=>a.s<0)?i:0,ppadminus:t.some(a=>a.s>=0)?i:0}}return{ppadplus:void 0,ppadminus:void 0}}function Zpt(e,t,r,n){for(var i=hT(n),a=0;a{"use strict";var bve=O0(),wve=i2().setGroupPositions;function Kpt(e,t){for(var r=t.xaxis,n=t.yaxis,i=e._fullLayout,a=e._fullData,o=e.calcdata,s=[],l=[],u=0;ug[c]&&c{"use strict";var $pt=So(),kve=fs(),s4=kve.BADNUM,Cve=kve.LOG_CLIP,Sve=Cve+.5,Mve=Cve-.5,oI=Pr(),Qpt=oI.segmentsIntersect,Eve=oI.constrain,SU=Pm();Lve.exports=function(t,r){var n=r.trace||{},i=r.xaxis,a=r.yaxis,o=i.type==="log",s=a.type==="log",l=i._length,u=a._length,c=r.backoff,f=n.marker,h=r.connectGaps,d=r.baseTolerance,v=r.shape,m=v==="linear",b=n.fill&&n.fill!=="none",p=[],k=SU.minTolerance,M=t.length,T=new Array(M),L=0,x,C,S,g,P,E,z,q,V,G,Z,j,N,H,ie,ae;function _e(gt){var Ge=t[gt];if(!Ge)return!1;var Je=r.linearized?i.l2p(Ge.x):i.c2p(Ge.x),We=r.linearized?a.l2p(Ge.y):a.c2p(Ge.y);if(Je===s4){if(o&&(Je=i.c2p(Ge.x,!0)),Je===s4)return!1;s&&We===s4&&(Je*=Math.abs(i._m*u*(i._m>0?Sve:Mve)/(a._m*l*(a._m>0?Sve:Mve)))),Je*=1e3}if(We===s4){if(s&&(We=a.c2p(Ge.y,!0)),We===s4)return!1;We*=1e3}return[Je,We]}function Ee(gt,Ge,Je,We){var et=Je-gt,xt=We-Ge,At=.5-gt,Kt=.5-Ge,Qt=et*et+xt*xt,Mr=et*At+xt*Kt;if(Mr>0&&Mr1||Math.abs(At.y-Je[0][1])>1)&&(At=[At.x,At.y],We&&Se(At,gt)Be||gt[1]me)return[Eve(gt[0],be,Be),Eve(gt[1],Le,me)]}function Vt(gt,Ge){if(gt[0]===Ge[0]&&(gt[0]===be||gt[0]===Be)||gt[1]===Ge[1]&&(gt[1]===Le||gt[1]===me))return!0}function rr(gt,Ge){var Je=[],We=ar(gt),et=ar(Ge);return We&&et&&Vt(We,et)||(We&&Je.push(We),et&&Je.push(et)),Je}function tt(gt,Ge,Je){return function(We,et){var xt=ar(We),At=ar(et),Kt=[];if(xt&&At&&Vt(xt,At))return Kt;xt&&Kt.push(xt),At&&Kt.push(At);var Qt=2*oI.constrain((We[gt]+et[gt])/2,Ge,Je)-((xt||We)[gt]+(At||et)[gt]);if(Qt){var Mr;xt&&At?Mr=Qt>0==xt[gt]>At[gt]?xt:At:Mr=xt||At,Mr[gt]+=Qt}return Kt}}var je;v==="linear"||v==="spline"?je=ct:v==="hv"||v==="vh"?je=rr:v==="hvh"?je=tt(0,be,Be):v==="vhv"&&(je=tt(1,Le,me));function Ue(gt,Ge){var Je=Ge[0]-gt[0],We=(Ge[1]-gt[1])/Je,et=(gt[1]*Ge[0]-Ge[1]*gt[0])/Je;return et>0?[We>0?be:Be,me]:[We>0?Be:be,Le]}function Ae(gt){var Ge=gt[0],Je=gt[1],We=Ge===T[L-1][0],et=Je===T[L-1][1];if(!(We&&et))if(L>1){var xt=Ge===T[L-2][0],At=Je===T[L-2][1];We&&(Ge===be||Ge===Be)&&xt?At?L--:T[L-1]=gt:et&&(Je===Le||Je===me)&&At?xt?L--:T[L-1]=gt:T[L++]=gt}else T[L++]=gt}function rt(gt){T[L-1][0]!==gt[0]&&T[L-1][1]!==gt[1]&&Ae([lt,mt]),Ae(gt),Ht=null,lt=mt=0}var St=oI.isArrayOrTypedArray(f);function Tt(gt){if(gt&&c&&(gt.i=x,gt.d=t,gt.trace=n,gt.marker=St?f[gt.i]:f,gt.backoff=c),Ce=gt[0]/l,ge=gt[1]/u,ce=gt[0]Be?Be:0,He=gt[1]me?me:0,ce||He){if(!L)T[L++]=[ce||gt[0],He||gt[1]];else if(Ht){var Ge=je(Ht,gt);Ge.length>1&&(rt(Ge[0]),T[L++]=Ge[1])}else at=je(T[L-1],gt)[0],T[L++]=at;var Je=T[L-1];ce&&He&&(Je[0]!==ce||Je[1]!==He)?(Ht&&(lt!==ce&&mt!==He?Ae(lt&&mt?Ue(Ht,gt):[lt||ce,mt||He]):lt&&mt&&Ae([lt,mt])),Ae([ce,He])):lt-ce&&mt-He&&Ae([ce||lt,He||mt]),Ht=gt,lt=ce,mt=He}else Ht&&rt(je(Ht,gt)[0]),T[L++]=gt}for(x=0;xre(E,dt))break;S=E,N=V[0]*q[0]+V[1]*q[1],N>Z?(Z=N,g=E,z=!1):N=t.length||!E)break;Tt(E),C=E}}Ht&&Ae([lt||Ht[0],mt||Ht[1]]),p.push(T.slice(0,L))}var Et=v.slice(v.length-1);if(c&&Et!=="h"&&Et!=="v"){for(var pt=!1,jt=-1,or=[],mr=0;mr{"use strict";var Pve={tonextx:1,tonexty:1,tonext:1};Ive.exports=function(t,r,n){var i,a,o,s,l,u={},c=!1,f=-1,h=0,d=-1;for(a=0;a=0?l=d:(l=d=h,h++),l{"use strict";var qg=qa(),e0t=Oa(),l4=Pr(),dT=l4.ensureSingle,Dve=l4.identity,Kf=So(),vT=Ru(),t0t=MU(),r0t=EU(),sI=zM().tester;Fve.exports=function(t,r,n,i,a,o){var s,l,u=!a,c=!!a&&a.duration>0,f=r0t(t,r,n);if(s=i.selectAll("g.trace").data(f,function(d){return d[0].trace.uid}),s.enter().append("g").attr("class",function(d){return"trace scatter trace"+d[0].trace.uid}).style("stroke-miterlimit",2),s.order(),i0t(t,s,r),c){o&&(l=o());var h=qg.transition().duration(a.duration).ease(a.easing).each("end",function(){l&&l()}).each("interrupt",function(){l&&l()});h.each(function(){i.selectAll("g.trace").each(function(d,v){Rve(t,v,r,d,f,this,a)})})}else s.each(function(d,v){Rve(t,v,r,d,f,this,a)});u&&s.exit().remove(),i.selectAll("path:not([d])").remove()};function i0t(e,t,r){t.each(function(n){var i=dT(qg.select(this),"g","fills");Kf.setClipUrl(i,r.layerClipId,e);var a=n[0].trace;a._ownFill=null,a._nextFill=null;var o=[];a._ownfill&&o.push("_ownFill"),a._nexttrace&&o.push("_nextFill");var s=i.selectAll("g").data(o,Dve);s.enter().append("g"),s.exit().remove(),s.order().each(function(l){a[l]=dT(qg.select(this),"path","js-fill")})})}function Rve(e,t,r,n,i,a,o){var s=e._context.staticPlot,l;n0t(e,t,r,n,i);var u=!!o&&o.duration>0;function c(tt){return u?tt.transition():tt}var f=r.xaxis,h=r.yaxis,d=n[0].trace,v=d.line,m=qg.select(a),b=dT(m,"g","errorbars"),p=dT(m,"g","lines"),k=dT(m,"g","points"),M=dT(m,"g","text");if(e0t.getComponentMethod("errorbars","plot")(e,b,r,o),d.visible!==!0)return;c(m).style("opacity",d.opacity);var T,L,x=d.fill.charAt(d.fill.length-1);x!=="x"&&x!=="y"&&(x="");var C,S;x==="y"?(C=1,S=h.c2p(0,!0)):x==="x"&&(C=0,S=f.c2p(0,!0)),n[0][r.isRangePlot?"nodeRangePlot3":"node3"]=m;var g="",P=[],E=d._prevtrace,z=null,q=null;E&&(g=E._prevRevpath||"",L=E._nextFill,P=E._ownPolygons,z=E._fillsegments,q=E._fillElement);var V,G,Z="",j="",N,H,ie,ae,_e,Ee,Ce=[];d._polygons=[];var ge=[],re=[],Se=l4.noop;if(T=d._ownFill,vT.hasLines(d)||d.fill!=="none"){L&&L.datum(n),["hv","vh","hvh","vhv"].indexOf(v.shape)!==-1?(N=Kf.steps(v.shape),H=Kf.steps(v.shape.split("").reverse().join(""))):v.shape==="spline"?N=H=function(tt){var je=tt[tt.length-1];return tt.length>1&&tt[0][0]===je[0]&&tt[0][1]===je[1]?Kf.smoothclosed(tt.slice(1),v.smoothing):Kf.smoothopen(tt,v.smoothing)}:N=H=function(tt){return"M"+tt.join("L")},ie=function(tt){return H(tt.reverse())},re=t0t(n,{xaxis:f,yaxis:h,trace:d,connectGaps:d.connectgaps,baseTolerance:Math.max(v.width||1,3)/4,shape:v.shape,backoff:v.backoff,simplify:v.simplify,fill:d.fill}),ge=new Array(re.length);var ke=0;for(l=0;l=s[0]&&m.x<=s[1]&&m.y>=l[0]&&m.y<=l[1]}),h=Math.ceil(f.length/c),d=0;i.forEach(function(m,b){var p=m[0].trace;vT.hasMarkers(p)&&p.marker.maxdisplayed>0&&b{"use strict";zve.exports={container:"marker",min:"cmin",max:"cmax"}});var uI=ye((Psr,qve)=>{"use strict";var lI=ho();qve.exports=function(t,r,n){var i={},a={_fullLayout:n},o=lI.getFromTrace(a,r,"x"),s=lI.getFromTrace(a,r,"y"),l=t.orig_x;l===void 0&&(l=t.x);var u=t.orig_y;return u===void 0&&(u=t.y),i.xLabel=lI.tickText(o,o.c2l(l),!0).text,i.yLabel=lI.tickText(s,s.c2l(u),!0).text,i}});var sp=ye((Isr,Ove)=>{"use strict";var kU=qa(),gT=So(),a0t=Oa();function o0t(e){var t=kU.select(e).selectAll("g.trace.scatter");t.style("opacity",function(r){return r[0].trace.opacity}),t.selectAll("g.points").each(function(r){var n=kU.select(this),i=r.trace||r[0].trace;CU(n,i,e)}),t.selectAll("g.text").each(function(r){var n=kU.select(this),i=r.trace||r[0].trace;LU(n,i,e)}),t.selectAll("g.trace path.js-line").call(gT.lineGroupStyle),t.selectAll("g.trace path.js-fill").call(gT.fillGroupStyle,e,!1),a0t.getComponentMethod("errorbars","style")(t)}function CU(e,t,r){gT.pointStyle(e.selectAll("path.point"),t,r)}function LU(e,t,r){gT.textPointStyle(e.selectAll("text"),t,r)}function s0t(e,t,r){var n=t[0].trace;n.selectedpoints?(gT.selectedPointStyle(r.selectAll("path.point"),n),gT.selectedTextStyle(r.selectAll("text"),n)):(CU(r,n,e),LU(r,n,e))}Ove.exports={style:o0t,stylePoints:CU,styleText:LU,styleOnSelect:s0t}});var yT=ye((Rsr,Bve)=>{"use strict";var mT=ka(),l0t=Ru();Bve.exports=function(t,r){var n,i;if(t.mode==="lines")return n=t.line.color,n&&mT.opacity(n)?n:t.fillcolor;if(t.mode==="none")return t.fill?t.fillcolor:"";var a=r.mcc||(t.marker||{}).color,o=r.mlcc||((t.marker||{}).line||{}).color;return i=a&&mT.opacity(a)?a:o&&mT.opacity(o)&&(r.mlw||((t.marker||{}).line||{}).width)?o:"",i?mT.opacity(i)<.3?mT.addOpacity(i,.3):i:(n=(t.line||{}).color,n&&mT.opacity(n)&&l0t.hasLines(t)&&t.line.width?n:t.fillcolor)}});var _T=ye((Dsr,Uve)=>{"use strict";var cI=Pr(),Nve=ef(),u0t=Oa(),c0t=yT(),PU=ka(),f0t=cI.fillText;Uve.exports=function(t,r,n,i){var a=t.cd,o=a[0].trace,s=t.xa,l=t.ya,u=s.c2p(r),c=l.c2p(n),f=[u,c],h=o.hoveron||"",d=o.mode.indexOf("markers")!==-1?3:.5,v=!!o.xperiodalignment,m=!!o.yperiodalignment;if(h.indexOf("points")!==-1){var b=function(j){if(v){var N=s.c2p(j.xStart),H=s.c2p(j.xEnd);return u>=Math.min(N,H)&&u<=Math.max(N,H)?0:1/0}var ie=Math.max(3,j.mrc||0),ae=1-1/ie,_e=Math.abs(s.c2p(j.x)-u);return _e=Math.min(N,H)&&c<=Math.max(N,H)?0:1/0}var ie=Math.max(3,j.mrc||0),ae=1-1/ie,_e=Math.abs(l.c2p(j.y)-c);return _eCe!=me>=Ce&&(be=Se[re-1][0],Be=Se[re][0],me-Le&&(ke=be+(Be-be)*(Ce-Le)/(me-Le),ie=Math.min(ie,ke),ae=Math.max(ae,ke)));return ie=Math.max(ie,0),ae=Math.min(ae,s._length),{x0:ie,x1:ae,y0:Ce,y1:Ce}}if(h.indexOf("fills")!==-1&&o._fillElement){var V=z(o._fillElement)&&!z(o._fillExclusionElement);if(V){var G=q(o._polygons);G===null&&(G={x0:f[0],x1:f[0],y0:f[1],y1:f[1]});var Z=PU.defaultLine;return PU.opacity(o.fillcolor)?Z=o.fillcolor:PU.opacity((o.line||{}).color)&&(Z=o.line.color),cI.extendFlat(t,{distance:t.maxHoverDistance,x0:G.x0,x1:G.x1,y0:G.y0,y1:G.y1,color:Z,hovertemplate:!1}),delete t.index,o.text&&!cI.isArrayOrTypedArray(o.text)?t.text=String(o.text):t.text=o.name,[t]}}}});var xT=ye((Fsr,Gve)=>{"use strict";var Vve=Ru();Gve.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l,u,c,f,h=!Vve.hasMarkers(s)&&!Vve.hasText(s);if(h)return[];if(r===!1)for(l=0;l{"use strict";Hve.exports={xaxis:{valType:"subplotid",dflt:"x",editType:"calc+clearAxisTypes"},yaxis:{valType:"subplotid",dflt:"y",editType:"calc+clearAxisTypes"}}});var RU=ye((qsr,Zve)=>{"use strict";var u4=Oa().traceIs,IU=H3();Zve.exports=function(t,r,n,i){n("autotypenumbers",i.autotypenumbersDflt);var a=n("type",(i.splomStash||{}).type);a==="-"&&(h0t(r,i.data),r.type==="-"?r.type="linear":t.type=r.type)};function h0t(e,t){if(e.type==="-"){var r=e._id,n=r.charAt(0),i;r.indexOf("scene")!==-1&&(r=n);var a=d0t(t,r,n);if(a){if(a.type==="histogram"&&n==={v:"y",h:"x"}[a.orientation||"v"]){e.type="linear";return}var o=n+"calendar",s=a[o],l={noMultiCategory:!u4(a,"cartesian")||u4(a,"noMultiCategory")};if(a.type==="box"&&a._hasPreCompStats&&n==={h:"x",v:"y"}[a.orientation||"v"]&&(l.noMultiCategory=!0),l.autotypenumbers=e.autotypenumbers,Xve(a,n)){var u=Wve(a),c=[];for(i=0;i0&&(i["_"+r+"axes"]||{})[t])return i;if((i[r+"axis"]||r)===t){if(Xve(i,r))return i;if((i[r]||[]).length||i[r+"0"])return i}}}function Wve(e){return{v:"x",h:"y"}[e.orientation||"v"]}function Xve(e,t){var r=Wve(e),n=u4(e,"box-violin"),i=u4(e._fullInput||{},"candlestick");return n&&!i&&t===r&&e[r]===void 0&&e[r+"0"]===void 0}});var fI=ye((Osr,Yve)=>{"use strict";var v0t=Yd().isTypedArraySpec;function p0t(e,t){var r=t.dataAttr||e._id.charAt(0),n={},i,a,o;if(t.axData)i=t.axData;else for(i=[],a=0;a0||v0t(a),s;o&&(s="array");var l=n("categoryorder",s),u;l==="array"&&(u=n("categoryarray")),!o&&l==="array"&&(l=r.categoryorder="trace"),l==="trace"?r._initialCategories=[]:l==="array"?r._initialCategories=u.slice():(u=p0t(r,i).sort(),l==="category ascending"?r._initialCategories=u:l==="category descending"&&(r._initialCategories=u.reverse()))}}});var c4=ye((Bsr,Jve)=>{"use strict";var Kve=fd().mix,g0t=Ih(),m0t=Pr();Jve.exports=function(t,r,n,i){i=i||{};var a=i.dfltColor;function o(S,g){return m0t.coerce2(t,r,i.attributes,S,g)}var s=o("linecolor",a),l=o("linewidth"),u=n("showline",i.showLine||!!s||!!l);u||(delete r.linecolor,delete r.linewidth);var c=Kve(a,i.bgColor,i.blend||g0t.lightFraction).toRgbString(),f=o("gridcolor",c),h=o("gridwidth"),d=o("griddash"),v=n("showgrid",i.showGrid||!!f||!!h||!!d);if(v||(delete r.gridcolor,delete r.gridwidth,delete r.griddash),i.hasMinor){var m=Kve(r.gridcolor,i.bgColor,67).toRgbString(),b=o("minor.gridcolor",m),p=o("minor.gridwidth",r.gridwidth||1),k=o("minor.griddash",r.griddash||"solid"),M=n("minor.showgrid",!!b||!!p||!!k);M||(delete r.minor.gridcolor,delete r.minor.gridwidth,delete r.minor.griddash)}if(!i.noZeroLine){var T=o("zerolinelayer"),L=o("zerolinecolor",a),x=o("zerolinewidth"),C=n("zeroline",i.showGrid||!!L||!!x);C||(delete r.zerolinelayer,delete r.zerolinecolor,delete r.zerolinewidth)}}});var h4=ye((Nsr,ipe)=>{"use strict";var $ve=Eo(),y0t=Oa(),f4=Pr(),_0t=vl(),x0t=Kd(),DU=Rd(),Qve=Pb(),epe=q3(),b0t=s_(),w0t=l_(),T0t=fI(),A0t=c4(),S0t=MB(),tpe=xm(),hI=Rh().WEEKDAY_PATTERN,M0t=Rh().HOUR_PATTERN;ipe.exports=function(t,r,n,i,a){var o=i.letter,s=i.font||{},l=i.splomStash||{},u=n("visible",!i.visibleDflt),c=r._template||{},f=r.type||c.type||"-",h;if(f==="date"){var d=y0t.getComponentMethod("calendars","handleDefaults");d(t,r,"calendar",i.calendar),i.noTicklabelmode||(h=n("ticklabelmode"))}!i.noTicklabelindex&&(f==="date"||f==="linear")&&n("ticklabelindex");var v="";(!i.noTicklabelposition||f==="multicategory")&&(v=f4.coerce(t,r,{ticklabelposition:{valType:"enumerated",dflt:"outside",values:h==="period"?["outside","inside"]:o==="x"?["outside","inside","outside left","inside left","outside right","inside right"]:["outside","inside","outside top","inside top","outside bottom","inside bottom"]}},"ticklabelposition")),i.noTicklabeloverflow||n("ticklabeloverflow",v.indexOf("inside")!==-1?"hide past domain":f==="category"||f==="multicategory"?"allow":"hide past div"),tpe(r,a),S0t(t,r,n,i),T0t(t,r,n,i),i.noHover||(f!=="category"&&n("hoverformat"),i.noUnifiedhovertitle||n("unifiedhovertitle.text"));var m=n("color"),b=m!==DU.color.dflt?m:s.color,p=l.label||a._dfltTitle[o];if(w0t(t,r,n,f,i),!u)return r;n("title.text",p),f4.coerceFont(n,"title.font",s,{overrideDflt:{size:f4.bigFont(s.size),color:b}}),Qve(t,r,n,f);var k=i.hasMinor;if(k&&(_0t.newContainer(r,"minor"),Qve(t,r,n,f,{isMinor:!0})),b0t(t,r,n,f,i),epe(t,r,n,i),k){var M=i.isMinor;i.isMinor=!0,epe(t,r,n,i),i.isMinor=M}A0t(t,r,n,{dfltColor:m,bgColor:i.bgColor,showGrid:i.showGrid,hasMinor:k,attributes:DU}),k&&r.ticklabelindex==null&&!r.minor.ticks&&!r.minor.showgrid&&delete r.minor,(r.showline||r.ticks)&&n("mirror");var T=f==="multicategory";if(!i.noTickson&&(f==="category"||T)&&(r.ticks||r.showgrid)&&(T?(n("tickson","boundaries"),delete r.ticklabelposition):n("tickson")),T){var L=n("showdividers");L&&(n("dividercolor"),n("dividerwidth"))}if(f==="date")if(x0t(t,r,{name:"rangebreaks",inclusionAttr:"enabled",handleItemDefaults:E0t}),!r.rangebreaks.length)delete r.rangebreaks;else{for(var x=0;x=2){var o="",s,l;if(a.length===2){for(s=0;s<2;s++)if(l=rpe(a[s]),l){o=hI;break}}var u=n("pattern",o);if(u===hI)for(s=0;s<2;s++)l=rpe(a[s]),l&&(t.bounds[s]=a[s]=l-1);if(u)for(s=0;s<2;s++)switch(l=a[s],u){case hI:if(!$ve(l)){t.enabled=!1;return}if(l=+l,l!==Math.floor(l)||l<0||l>=7){t.enabled=!1;return}t.bounds[s]=a[s]=l;break;case M0t:if(!$ve(l)){t.enabled=!1;return}if(l=+l,l<0||l>24){t.enabled=!1;return}t.bounds[s]=a[s]=l;break}if(r.autorange===!1){var c=r.range;if(c[0]c[1]){t.enabled=!1;return}}else if(a[0]>c[0]&&a[1]{"use strict";var C0t=Eo(),dI=Pr();npe.exports=function(t,r,n,i){var a=i.counterAxes||[],o=i.overlayableAxes||[],s=i.letter,l=i.grid,u=i.overlayingDomain,c,f,h,d,v,m;l&&(f=l._domains[s][l._axisMap[r._id]],c=l._anchors[r._id],f&&(h=l[s+"side"].split(" ")[0],d=l.domain[s][h==="right"||h==="top"?1:0])),f=f||[0,1],c=c||(C0t(t.position)?"free":a[0]||"free"),h=h||(s==="x"?"bottom":"left"),d=d||0,v=0,m=!1;var b=dI.coerce(t,r,{anchor:{valType:"enumerated",values:["free"].concat(a),dflt:c}},"anchor"),p=dI.coerce(t,r,{side:{valType:"enumerated",values:s==="x"?["bottom","top"]:["left","right"],dflt:h}},"side");if(b==="free"){if(s==="y"){var k=n("autoshift");k&&(d=p==="left"?u[0]:u[1],m=r.automargin?r.automargin:!0,v=p==="left"?-3:3),n("shift",v)}n("position",d)}n("automargin",m);var M=!1;if(o.length&&(M=dI.coerce(t,r,{overlaying:{valType:"enumerated",values:[!1].concat(o),dflt:!1}},"overlaying")),!M){var T=n("domain",f);T[0]>T[1]-1/4096&&(r.domain=f),dI.noneOrAll(t.domain,r.domain,f),r.tickmode==="sync"&&(r.tickmode="auto")}return n("layer"),r}});var dpe=ye((Vsr,hpe)=>{"use strict";var n2=Pr(),ape=ka(),L0t=ip().isUnifiedHover,P0t=$B(),ope=vl(),I0t=b3(),spe=Rd(),R0t=RU(),lpe=h4(),D0t=$b(),upe=vI(),zU=df(),Fm=zU.id2name,cpe=zU.name2id,F0t=Rh().AX_ID_PATTERN,fpe=Oa(),pI=fpe.traceIs,FU=fpe.getComponentMethod;function gI(e,t,r){Array.isArray(e[t])?e[t].push(r):e[t]=[r]}hpe.exports=function(t,r,n){var i=r.autotypenumbers,a={},o={},s={},l={},u={},c={},f={},h={},d={},v={},m,b;for(m=0;m{"use strict";var z0t=qa(),vpe=Oa(),mI=Pr(),Qp=So(),yI=ho();ppe.exports=function(t,r,n,i){var a=t._fullLayout;if(r.length===0){yI.redrawComponents(t);return}function o(b){var p=b.xaxis,k=b.yaxis;a._defs.select("#"+b.clipId+"> rect").call(Qp.setTranslate,0,0).call(Qp.setScale,1,1),b.plot.call(Qp.setTranslate,p._offset,k._offset).call(Qp.setScale,1,1);var M=b.plot.selectAll(".scatterlayer .trace");M.selectAll(".point").call(Qp.setPointGroupScale,1,1),M.selectAll(".textpoint").call(Qp.setTextPointsScale,1,1),M.call(Qp.hideOutsideRangePoints,b)}function s(b,p){var k=b.plotinfo,M=k.xaxis,T=k.yaxis,L=M._length,x=T._length,C=!!b.xr1,S=!!b.yr1,g=[];if(C){var P=mI.simpleMap(b.xr0,M.r2l),E=mI.simpleMap(b.xr1,M.r2l),z=P[1]-P[0],q=E[1]-E[0];g[0]=(P[0]*(1-p)+p*E[0]-P[0])/(P[1]-P[0])*L,g[2]=L*(1-p+p*q/z),M.range[0]=M.l2r(P[0]*(1-p)+p*E[0]),M.range[1]=M.l2r(P[1]*(1-p)+p*E[1])}else g[0]=0,g[2]=L;if(S){var V=mI.simpleMap(b.yr0,T.r2l),G=mI.simpleMap(b.yr1,T.r2l),Z=V[1]-V[0],j=G[1]-G[0];g[1]=(V[1]*(1-p)+p*G[1]-V[1])/(V[0]-V[1])*x,g[3]=x*(1-p+p*j/Z),T.range[0]=M.l2r(V[0]*(1-p)+p*G[0]),T.range[1]=T.l2r(V[1]*(1-p)+p*G[1])}else g[1]=0,g[3]=x;yI.drawOne(t,M,{skipTitle:!0}),yI.drawOne(t,T,{skipTitle:!0}),yI.redrawComponents(t,[M._id,T._id]);var N=C?L/g[2]:1,H=S?x/g[3]:1,ie=C?g[0]:0,ae=S?g[1]:0,_e=C?g[0]/g[2]*L:0,Ee=S?g[1]/g[3]*x:0,Ce=M._offset-_e,ge=T._offset-Ee;k.clipRect.call(Qp.setTranslate,ie,ae).call(Qp.setScale,1/N,1/H),k.plot.call(Qp.setTranslate,Ce,ge).call(Qp.setScale,N,H),Qp.setPointGroupScale(k.zoomScalePts,1/N,1/H),Qp.setTextPointsScale(k.zoomScaleTxt,1/N,1/H)}var l;i&&(l=i());function u(){for(var b={},p=0;pn.duration?(u(),d=window.cancelAnimationFrame(m)):d=window.requestAnimationFrame(m)}return f=Date.now(),d=window.requestAnimationFrame(m),Promise.resolve()}});var mh=ye(xv=>{"use strict";var xI=qa(),mpe=Oa(),a2=Pr(),q0t=Mc(),O0t=So(),ype=Id().getModuleCalcData,S_=df(),Og=Rh(),B0t=Wp(),iu=a2.ensureSingle;function _I(e,t,r){return a2.ensureSingle(e,t,r,function(n){n.datum(r)})}var o2=Og.zindexSeparator;xv.name="cartesian";xv.attr=["xaxis","yaxis"];xv.idRoot=["x","y"];xv.idRegex=Og.idRegex;xv.attrRegex=Og.attrRegex;xv.attributes=jve();xv.layoutAttributes=Rd();xv.supplyLayoutDefaults=dpe();xv.transitionAxes=gpe();xv.finalizeSubplots=function(e,t){var r=t._subplots,n=r.xaxis,i=r.yaxis,a=r.cartesian,o=a,s={},l={},u,c,f;for(u=0;u0){var d=h.id;if(d.indexOf(o2)!==-1)continue;d+=o2+(u+1),h=a2.extendFlat({},h,{id:d,plot:i._cartesianlayer.selectAll(".subplot").select("."+d)})}for(var v=[],m,b=0;b1&&(L+=o2+T),M.push(s+L),o=0;o1,f=t.mainplotinfo;if(!t.mainplot||c)if(u)t.xlines=iu(n,"path","xlines-above"),t.ylines=iu(n,"path","ylines-above"),t.xaxislayer=iu(n,"g","xaxislayer-above"),t.yaxislayer=iu(n,"g","yaxislayer-above");else{if(!o){var h=iu(n,"g","layer-subplot");t.shapelayer=iu(h,"g","shapelayer"),t.imagelayer=iu(h,"g","imagelayer"),f&&c?(t.minorGridlayer=f.minorGridlayer,t.gridlayer=f.gridlayer,t.zerolinelayer=f.zerolinelayer):(t.minorGridlayer=iu(n,"g","minor-gridlayer"),t.gridlayer=iu(n,"g","gridlayer"),t.zerolinelayer=iu(n,"g","zerolinelayer"));var d=iu(n,"g","layer-between");t.shapelayerBetween=iu(d,"g","shapelayer"),t.imagelayerBetween=iu(d,"g","imagelayer"),iu(n,"path","xlines-below"),iu(n,"path","ylines-below"),t.overlinesBelow=iu(n,"g","overlines-below"),iu(n,"g","xaxislayer-below"),iu(n,"g","yaxislayer-below"),t.overaxesBelow=iu(n,"g","overaxes-below")}t.overplot=iu(n,"g","overplot"),t.plot=iu(t.overplot,"g",i),f&&c?t.zerolinelayerAbove=f.zerolinelayerAbove:t.zerolinelayerAbove=iu(n,"g","zerolinelayer-above"),o||(t.xlines=iu(n,"path","xlines-above"),t.ylines=iu(n,"path","ylines-above"),t.overlinesAbove=iu(n,"g","overlines-above"),iu(n,"g","xaxislayer-above"),iu(n,"g","yaxislayer-above"),t.overaxesAbove=iu(n,"g","overaxes-above"),t.xlines=n.select(".xlines-"+s),t.ylines=n.select(".ylines-"+l),t.xaxislayer=n.select(".xaxislayer-"+s),t.yaxislayer=n.select(".yaxislayer-"+l))}else{var v=f.plotgroup,m=i+"-x",b=i+"-y";t.minorGridlayer=f.minorGridlayer,t.gridlayer=f.gridlayer,t.zerolinelayer=f.zerolinelayer,t.zerolinelayerAbove=f.zerolinelayerAbove,iu(f.overlinesBelow,"path",m),iu(f.overlinesBelow,"path",b),iu(f.overaxesBelow,"g",m),iu(f.overaxesBelow,"g",b),t.plot=iu(f.overplot,"g",i),iu(f.overlinesAbove,"path",m),iu(f.overlinesAbove,"path",b),iu(f.overaxesAbove,"g",m),iu(f.overaxesAbove,"g",b),t.xlines=v.select(".overlines-"+s).select("."+m),t.ylines=v.select(".overlines-"+l).select("."+b),t.xaxislayer=v.select(".overaxes-"+s).select("."+m),t.yaxislayer=v.select(".overaxes-"+l).select("."+b)}o||(u||(_I(t.minorGridlayer,"g",t.xaxis._id),_I(t.minorGridlayer,"g",t.yaxis._id),t.minorGridlayer.selectAll("g").map(function(p){return p[0]}).sort(S_.idSort),_I(t.gridlayer,"g",t.xaxis._id),_I(t.gridlayer,"g",t.yaxis._id),t.gridlayer.selectAll("g").map(function(p){return p[0]}).sort(S_.idSort)),t.xlines.style("fill","none").classed("crisp",!0),t.ylines.style("fill","none").classed("crisp",!0))}function bpe(e,t){if(e){var r={};e.each(function(l){var u=l[0],c=xI.select(this);c.remove(),wpe(u,t),r[u]=!0});for(var n in t._plots)for(var i=t._plots[n],a=i.overlays||[],o=0;o{"use strict";var bI=Ru();Tpe.exports={hasLines:bI.hasLines,hasMarkers:bI.hasMarkers,hasText:bI.hasText,isBubble:bI.isBubble,attributes:pf(),layoutAttributes:rL(),supplyDefaults:Yde(),crossTraceDefaults:hU(),supplyLayoutDefaults:Qde(),calc:O0().calc,crossTraceCalc:Ave(),arraysToCalcdata:Dm(),plot:pT(),colorbar:Qd(),formatLabels:uI(),style:sp().style,styleOnSelect:sp().styleOnSelect,hoverPoints:_T(),selectPoints:xT(),animatable:!0,moduleType:"trace",name:"scatter",basePlotModule:mh(),categories:["cartesian","svg","symbols","errorBarsOK","showLegend","scatter-like","zoomScale"],meta:{}}});var Epe=ye((Wsr,Mpe)=>{"use strict";var U0t=qa(),V0t=ka(),Spe=BN(),qU=Pr(),G0t=qU.strScale,H0t=qU.strRotate,j0t=qU.strTranslate;Mpe.exports=function(t,r,n){var i=t.node(),a=Spe[n.arrowhead||0],o=Spe[n.startarrowhead||0],s=(n.arrowwidth||1)*(n.arrowsize||1),l=(n.arrowwidth||1)*(n.startarrowsize||1),u=r.indexOf("start")>=0,c=r.indexOf("end")>=0,f=a.backoff*s+n.standoff,h=o.backoff*l+n.startstandoff,d,v,m,b;if(i.nodeName==="line"){d={x:+t.attr("x1"),y:+t.attr("y1")},v={x:+t.attr("x2"),y:+t.attr("y2")};var p=d.x-v.x,k=d.y-v.y;if(m=Math.atan2(k,p),b=m+Math.PI,f&&h&&f+h>Math.sqrt(p*p+k*k)){V();return}if(f){if(f*f>p*p+k*k){V();return}var M=f*Math.cos(m),T=f*Math.sin(m);v.x+=M,v.y+=T,t.attr({x2:v.x,y2:v.y})}if(h){if(h*h>p*p+k*k){V();return}var L=h*Math.cos(m),x=h*Math.sin(m);d.x-=L,d.y-=x,t.attr({x1:d.x,y1:d.y})}}else if(i.nodeName==="path"){var C=i.getTotalLength(),S="";if(C{"use strict";var kpe=qa(),OU=Oa(),W0t=Mc(),E_=Pr(),BU=E_.strTranslate,v4=ho(),s2=ka(),By=So(),Cpe=ef(),NU=Zl(),UU=Eg(),d4=yv(),X0t=vl().arrayEditor,Z0t=Epe();Ipe.exports={draw:Y0t,drawOne:Lpe,drawRaw:Ppe};function Y0t(e){var t=e._fullLayout;t._infolayer.selectAll(".annotation").remove();for(var r=0;r2/3?et="right":et="center"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[et]}for(var Le=!1,me=["x","y"],Pe=0;Pe1)&&(lt===He?(dt=mt.r2fraction(t["a"+ce]),(dt<0||dt>1)&&(Le=!0)):Le=!0),je=mt._offset+mt.r2p(t[ce]),rt=.5}else{var Et=Tt==="domain";ce==="x"?(Ae=t[ce],je=Et?mt._offset+mt._length*Ae:je=s.l+s.w*Ae):(Ae=1-t[ce],je=Et?mt._offset+mt._length*Ae:je=s.t+s.h*Ae),rt=t.showarrow?.5:Ae}if(t.showarrow){tt.head=je;var pt=t["a"+ce];if(St=at*Be(.5,t.xanchor)-ct*Be(.5,t.yanchor),lt===He){var jt=v4.getRefType(lt);jt==="domain"?(ce==="y"&&(pt=1-pt),tt.tail=mt._offset+mt._length*pt):jt==="paper"?ce==="y"?(pt=1-pt,tt.tail=s.t+s.h*pt):tt.tail=s.l+s.w*pt:tt.tail=mt._offset+mt.r2p(pt),Ue=St}else tt.tail=je+pt,Ue=St+pt;tt.text=tt.tail+St;var or=o[ce==="x"?"width":"height"];if(He==="paper"&&(tt.head=E_.constrain(tt.head,1,or-1)),lt==="pixel"){var mr=-Math.max(tt.tail-3,tt.text),Ar=Math.min(tt.tail+3,tt.text)-or;mr>0?(tt.tail+=mr,tt.text+=mr):Ar>0&&(tt.tail-=Ar,tt.text-=Ar)}tt.tail+=rr,tt.head+=rr}else St=ar*Be(rt,Vt),Ue=St,tt.text=je+St;tt.text+=rr,St+=rr,Ue+=rr,t["_"+ce+"padplus"]=ar/2+Ue,t["_"+ce+"padminus"]=ar/2-Ue,t["_"+ce+"size"]=ar,t["_"+ce+"shift"]=St}if(Le){C.remove();return}var ei=0,qr=0;if(t.align!=="left"&&(ei=(re-Ce)*(t.align==="center"?.5:1)),t.valign!=="top"&&(qr=(Se-ge)*(t.valign==="middle"?.5:1)),_e)ae.select("svg").attr({x:P+ei-1,y:P+qr}).call(By.setClipUrl,z?m:null,e);else{var jr=P+qr-Ee.top,gt=P+ei-Ee.left;Z.call(NU.positionText,gt,jr).call(By.setClipUrl,z?m:null,e)}q.select("rect").call(By.setRect,P,P,re,Se),E.call(By.setRect,S/2,S/2,ke-S,be-S),C.call(By.setTranslate,Math.round(b.x.text-ke/2),Math.round(b.y.text-be/2)),M.attr({transform:"rotate("+p+","+b.x.text+","+b.y.text+")"});var Ge=function(We,et){k.selectAll(".annotation-arrow-g").remove();var xt=b.x.head,At=b.y.head,Kt=b.x.tail+We,Qt=b.y.tail+et,Mr=b.x.text+We,Gr=b.y.text+et,Ir=E_.rotationXYMatrix(p,Mr,Gr),Yr=E_.apply2DTransform(Ir),_i=E_.apply2DTransform2(Ir),Pi=+E.attr("width"),ai=+E.attr("height"),mi=Mr-.5*Pi,un=mi+Pi,Fn=Gr-.5*ai,An=Fn+ai,Hn=[[mi,Fn,mi,An],[mi,An,un,An],[un,An,un,Fn],[un,Fn,mi,Fn]].map(_i);if(!Hn.reduce(function($r,Ri){return $r^!!E_.segmentsIntersect(xt,At,xt+1e6,At+1e6,Ri[0],Ri[1],Ri[2],Ri[3])},!1)){Hn.forEach(function($r){var Ri=E_.segmentsIntersect(Kt,Qt,xt,At,$r[0],$r[1],$r[2],$r[3]);Ri&&(Kt=Ri.x,Qt=Ri.y)});var Qn=t.arrowwidth,Vi=t.arrowcolor,Kn=t.arrowside,Jn=k.append("g").style({opacity:s2.opacity(Vi)}).classed("annotation-arrow-g",!0),Gt=Jn.append("path").attr("d","M"+Kt+","+Qt+"L"+xt+","+At).style("stroke-width",Qn+"px").call(s2.stroke,s2.rgb(Vi));if(Z0t(Gt,Kn,t),l.annotationPosition&&Gt.node().parentNode&&!n){var wt=xt,tr=At;if(t.standoff){var ir=Math.sqrt(Math.pow(xt-Kt,2)+Math.pow(At-Qt,2));wt+=t.standoff*(Kt-xt)/ir,tr+=t.standoff*(Qt-At)/ir}var wr=Jn.append("path").classed("annotation-arrow",!0).classed("anndrag",!0).classed("cursor-move",!0).attr({d:"M3,3H-3V-3H3ZM0,0L"+(Kt-wt)+","+(Qt-tr),transform:BU(wt,tr)}).style("stroke-width",Qn+6+"px").call(s2.stroke,"rgba(0,0,0,0)").call(s2.fill,"rgba(0,0,0,0)"),Xr,ti;d4.init({element:wr.node(),gd:e,prepFn:function(){var $r=By.getTranslate(C);Xr=$r.x,ti=$r.y,i&&i.autorange&&h(i._name+".autorange",!0),a&&a.autorange&&h(a._name+".autorange",!0)},moveFn:function($r,Ri){var Zi=Yr(Xr,ti),en=Zi[0]+$r,fn=Zi[1]+Ri;C.call(By.setTranslate,en,fn),d("x",M_(i,$r,"x",s,t)),d("y",M_(a,Ri,"y",s,t)),t.axref===t.xref&&d("ax",M_(i,$r,"ax",s,t)),t.ayref===t.yref&&d("ay",M_(a,Ri,"ay",s,t)),Jn.attr("transform",BU($r,Ri)),M.attr({transform:"rotate("+p+","+en+","+fn+")"})},doneFn:function(){OU.call("_guiRelayout",e,v());var $r=document.querySelector(".js-notes-box-panel");$r&&$r.redraw($r.selectedObj)}})}}};if(t.showarrow&&Ge(0,0),T){var Je;d4.init({element:C.node(),gd:e,prepFn:function(){Je=M.attr("transform")},moveFn:function(We,et){var xt="pointer";if(t.showarrow)t.axref===t.xref?d("ax",M_(i,We,"ax",s,t)):d("ax",t.ax+We),t.ayref===t.yref?d("ay",M_(a,et,"ay",s.w,t)):d("ay",t.ay+et),Ge(We,et);else{if(n)return;var At,Kt;if(i)At=M_(i,We,"x",s,t);else{var Qt=t._xsize/s.w,Mr=t.x+(t._xshift-t.xshift)/s.w-Qt/2;At=d4.align(Mr+We/s.w,Qt,0,1,t.xanchor)}if(a)Kt=M_(a,et,"y",s,t);else{var Gr=t._ysize/s.h,Ir=t.y-(t._yshift+t.yshift)/s.h-Gr/2;Kt=d4.align(Ir-et/s.h,Gr,0,1,t.yanchor)}d("x",At),d("y",Kt),(!i||!a)&&(xt=d4.getCursor(i?.5:At,a?.5:Kt,t.xanchor,t.yanchor))}M.attr({transform:BU(We,et)+Je}),UU(C,xt)},clickFn:function(We,et){t.captureevents&&e.emit("plotly_clickannotation",x(et))},doneFn:function(){UU(C),OU.call("_guiRelayout",e,v());var We=document.querySelector(".js-notes-box-panel");We&&We.redraw(We.selectedObj)}})}}l.annotationText?Z.call(NU.makeEditable,{delegate:C,gd:e}).call(j).on("edit",function(H){t.text=H,this.call(j),d("text",H),i&&i.autorange&&h(i._name+".autorange",!0),a&&a.autorange&&h(a._name+".autorange",!0),OU.call("_guiRelayout",e,v())}):Z.call(j)}});var Ope=ye((Zsr,qpe)=>{"use strict";var Rpe=Pr(),K0t=Oa(),Dpe=vl().arrayEditor;qpe.exports={hasClickToShow:J0t,onClick:$0t};function J0t(e,t){var r=zpe(e,t);return r.on.length>0||r.explicitOff.length>0}function $0t(e,t){var r=zpe(e,t),n=r.on,i=r.off.concat(r.explicitOff),a={},o=e._fullLayout.annotations,s,l;if(n.length||i.length){for(s=0;s{"use strict";var VU=Pr(),bT=ka();Bpe.exports=function(t,r,n,i){i("opacity");var a=i("bgcolor"),o=i("bordercolor"),s=bT.opacity(o);i("borderpad");var l=i("borderwidth"),u=i("showarrow");i("text",u?" ":n._dfltTitle.annotation),i("textangle"),VU.coerceFont(i,"font",n.font),i("width"),i("align");var c=i("height");if(c&&i("valign"),u){var f=i("arrowside"),h,d;f.indexOf("end")!==-1&&(h=i("arrowhead"),d=i("arrowsize")),f.indexOf("start")!==-1&&(i("startarrowhead",h),i("startarrowsize",d)),i("arrowcolor",s?r.bordercolor:bT.defaultLine),i("arrowwidth",(s&&l||1)*2),i("standoff"),i("startstandoff")}var v=i("hovertext"),m=n.hoverlabel||{};if(v){var b=i("hoverlabel.bgcolor",m.bgcolor||(bT.opacity(a)?bT.rgb(a):bT.defaultLine)),p=i("hoverlabel.bordercolor",m.bordercolor||bT.contrast(b)),k=VU.extendFlat({},m.font);k.color||(k.color=p),VU.coerceFont(i,"hoverlabel.font",k)}i("captureevents",!!v)}});var Upe=ye((Ksr,Npe)=>{"use strict";var HU=Pr(),l2=ho(),Q0t=Kd(),egt=GU(),tgt=Qb();Npe.exports=function(t,r){Q0t(t,r,{name:"annotations",handleItemDefaults:rgt})};function rgt(e,t,r){function n(M,T){return HU.coerce(e,t,tgt,M,T)}var i=n("visible"),a=n("clicktoshow");if(i||a){egt(e,t,r,n);for(var o=t.showarrow,s=["x","y"],l=[-10,-30],u={_fullLayout:r},c=0;c<2;c++){var f=s[c],h=l2.coerceRef(e,t,u,f,"","paper");if(h!=="paper"){var d=l2.getFromId(u,h);d._annIndices.push(t._index)}if(l2.coercePosition(t,u,n,h,f,.5),o){var v="a"+f,m=l2.coerceRef(e,t,u,v,"pixel",["pixel","paper"]);m!=="pixel"&&m!==h&&(m=t[v]="pixel");var b=m==="pixel"?l[c]:.4;l2.coercePosition(t,u,n,m,v,b)}n(f+"anchor"),n(f+"shift")}if(HU.noneOrAll(e,t,["x","y"]),o&&HU.noneOrAll(e,t,["ax","ay"]),a){var p=n("xclick"),k=n("yclick");t._xclick=p===void 0?t.x:l2.cleanPosition(p,u,t.xref),t._yclick=k===void 0?t.y:l2.cleanPosition(k,u,t.yref)}}}});var Hpe=ye((Jsr,Gpe)=>{"use strict";var jU=Pr(),u2=ho(),igt=wI().draw;Gpe.exports=function(t){var r=t._fullLayout,n=jU.filterVisible(r.annotations);if(n.length&&t._fullData.length)return jU.syncOrAsync([igt,ngt],t)};function ngt(e){var t=e._fullLayout;jU.filterVisible(t.annotations).forEach(function(r){var n=u2.getFromId(e,r.xref),i=u2.getFromId(e,r.yref),a=u2.getRefType(r.xref),o=u2.getRefType(r.yref);r._extremes={},a==="range"&&Vpe(r,n),o==="range"&&Vpe(r,i)})}function Vpe(e,t){var r=t._id,n=r.charAt(0),i=e[n],a=e["a"+n],o=e[n+"ref"],s=e["a"+n+"ref"],l=e["_"+n+"padplus"],u=e["_"+n+"padminus"],c={x:1,y:-1}[n]*e[n+"shift"],f=3*e.arrowsize*e.arrowwidth||0,h=f+c,d=f-c,v=3*e.startarrowsize*e.arrowwidth||0,m=v+c,b=v-c,p;if(s===o){var k=u2.findExtremes(t,[t.r2c(i)],{ppadplus:h,ppadminus:d}),M=u2.findExtremes(t,[t.r2c(a)],{ppadplus:Math.max(l,m),ppadminus:Math.max(u,b)});p={min:[k.min[0],M.min[0]],max:[k.max[0],M.max[0]]}}else m=a?m+a:m,b=a?b-a:b,p=u2.findExtremes(t,[t.r2c(i)],{ppadplus:Math.max(l,h,m),ppadminus:Math.max(u,d,b)});e._extremes[r]=p}});var Wpe=ye(($sr,jpe)=>{"use strict";var agt=Eo(),ogt=M6();jpe.exports=function(t,r,n,i){r=r||{};var a=n==="log"&&r.type==="linear",o=n==="linear"&&r.type==="log";if(!(a||o))return;var s=t._fullLayout.annotations,l=r._id.charAt(0),u,c;function f(d){var v=u[d],m=null;a?m=ogt(v,r.range):m=Math.pow(10,v),agt(m)||(m=null),i(c+d,m)}for(var h=0;h{"use strict";var WU=wI(),Xpe=Ope();Zpe.exports={moduleType:"component",name:"annotations",layoutAttributes:Qb(),supplyLayoutDefaults:Upe(),includeBasePlot:XM()("annotations"),calcAutorange:Hpe(),draw:WU.draw,drawOne:WU.drawOne,drawRaw:WU.drawRaw,hasClickToShow:Xpe.hasClickToShow,onClick:Xpe.onClick,convertCoords:Wpe()}});var TI=ye((elr,Kpe)=>{"use strict";var kc=Qb(),sgt=mc().overrideAll,lgt=vl().templatedArray;Kpe.exports=sgt(lgt("annotation",{visible:kc.visible,x:{valType:"any"},y:{valType:"any"},z:{valType:"any"},ax:{valType:"number"},ay:{valType:"number"},xanchor:kc.xanchor,xshift:kc.xshift,yanchor:kc.yanchor,yshift:kc.yshift,text:kc.text,textangle:kc.textangle,font:kc.font,width:kc.width,height:kc.height,opacity:kc.opacity,align:kc.align,valign:kc.valign,bgcolor:kc.bgcolor,bordercolor:kc.bordercolor,borderpad:kc.borderpad,borderwidth:kc.borderwidth,showarrow:kc.showarrow,arrowcolor:kc.arrowcolor,arrowhead:kc.arrowhead,startarrowhead:kc.startarrowhead,arrowside:kc.arrowside,arrowsize:kc.arrowsize,startarrowsize:kc.startarrowsize,arrowwidth:kc.arrowwidth,standoff:kc.standoff,startstandoff:kc.startstandoff,hovertext:kc.hovertext,hoverlabel:kc.hoverlabel,captureevents:kc.captureevents}),"calc","from-root")});var $pe=ye((tlr,Jpe)=>{"use strict";var XU=Pr(),ugt=ho(),cgt=Kd(),fgt=GU(),hgt=TI();Jpe.exports=function(t,r,n){cgt(t,r,{name:"annotations",handleItemDefaults:dgt,fullLayout:n.fullLayout})};function dgt(e,t,r,n){function i(s,l){return XU.coerce(e,t,hgt,s,l)}function a(s){var l=s+"axis",u={_fullLayout:{}};return u._fullLayout[l]=r[l],ugt.coercePosition(t,u,i,s,s,.5)}var o=i("visible");o&&(fgt(e,t,n.fullLayout,i),a("x"),a("y"),a("z"),XU.noneOrAll(e,t,["x","y","z"]),t.xref="x",t.yref="y",t.zref="z",i("xanchor"),i("yanchor"),i("xshift"),i("yshift"),t.showarrow&&(t.axref="pixel",t.ayref="pixel",i("ax",-10),i("ay",-30),XU.noneOrAll(e,t,["ax","ay"])))}});var r0e=ye((rlr,t0e)=>{"use strict";var Qpe=Pr(),e0e=ho();t0e.exports=function(t){for(var r=t.fullSceneLayout,n=r.annotations,i=0;i{"use strict";function ZU(e,t){var r=[0,0,0,0],n,i;for(n=0;n<4;++n)for(i=0;i<4;++i)r[i]+=e[4*n+i]*t[n];return r}function pgt(e,t){var r=ZU(e.projection,ZU(e.view,ZU(e.model,[t[0],t[1],t[2],1])));return r}i0e.exports=pgt});var a0e=ye((nlr,n0e)=>{"use strict";var ggt=wI().drawRaw,mgt=YU(),ygt=["x","y","z"];n0e.exports=function(t){for(var r=t.fullSceneLayout,n=t.dataScale,i=r.annotations,a=0;a1){s=!0;break}}s?t.fullLayout._infolayer.select(".annotation-"+t.id+'[data-index="'+a+'"]').remove():(o._pdata=mgt(t.glplot.cameraParams,[r.xaxis.r2l(o.x)*n[0],r.yaxis.r2l(o.y)*n[1],r.zaxis.r2l(o.z)*n[2]]),ggt(t.graphDiv,o,a,t.id,o._xa,o._ya))}}});var l0e=ye((alr,s0e)=>{"use strict";var _gt=Oa(),o0e=Pr();s0e.exports={moduleType:"component",name:"annotations3d",schema:{subplots:{scene:{annotations:TI()}}},layoutAttributes:TI(),handleDefaults:$pe(),includeBasePlot:xgt,convert:r0e(),draw:a0e()};function xgt(e,t){var r=_gt.subplotsRegistry.gl3d;if(r)for(var n=r.attrRegex,i=Object.keys(e),a=0;a{"use strict";var olr=Rh(),u0e=ec(),c0e=pf().line,bgt=Pd().dash,Bg=Ao().extendFlat,wgt=vl().templatedArray,slr=jM(),wT=Gl(),f0e=Qb(),{shapeTexttemplateAttrs:Tgt,templatefallbackAttrs:Agt}=Ll(),Sgt=F6();h0e.exports=wgt("shape",{visible:Bg({},wT.visible,{editType:"calc+arraydraw"}),showlegend:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},legend:Bg({},wT.legend,{editType:"calc+arraydraw"}),legendgroup:Bg({},wT.legendgroup,{editType:"calc+arraydraw"}),legendgrouptitle:{text:Bg({},wT.legendgrouptitle.text,{editType:"calc+arraydraw"}),font:u0e({editType:"calc+arraydraw"}),editType:"calc+arraydraw"},legendrank:Bg({},wT.legendrank,{editType:"calc+arraydraw"}),legendwidth:Bg({},wT.legendwidth,{editType:"calc+arraydraw"}),type:{valType:"enumerated",values:["circle","rect","path","line"],editType:"calc+arraydraw"},layer:{valType:"enumerated",values:["below","above","between"],dflt:"above",editType:"arraydraw"},xref:Bg({},f0e.xref,{arrayOk:!0}),xsizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},xanchor:{valType:"any",editType:"calc+arraydraw"},x0:{valType:"any",editType:"calc+arraydraw"},x1:{valType:"any",editType:"calc+arraydraw"},x0shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},x1shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},yref:Bg({},f0e.yref,{arrayOk:!0}),ysizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},yanchor:{valType:"any",editType:"calc+arraydraw"},y0:{valType:"any",editType:"calc+arraydraw"},y1:{valType:"any",editType:"calc+arraydraw"},y0shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},y1shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},path:{valType:"string",editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},line:{color:Bg({},c0e.color,{editType:"arraydraw"}),width:Bg({},c0e.width,{editType:"calc+arraydraw"}),dash:Bg({},bgt,{editType:"arraydraw"}),editType:"calc+arraydraw"},fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},fillrule:{valType:"enumerated",values:["evenodd","nonzero"],dflt:"evenodd",editType:"arraydraw"},editable:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},label:{text:{valType:"string",dflt:"",editType:"arraydraw"},texttemplate:Tgt({},{keys:Object.keys(Sgt)}),texttemplatefallback:Agt({editType:"arraydraw"}),font:u0e({editType:"calc+arraydraw",colorEditType:"arraydraw"}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right","start","middle","end"],editType:"arraydraw"},textangle:{valType:"angle",dflt:"auto",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["top","middle","bottom"],editType:"calc+arraydraw"},padding:{valType:"number",dflt:3,min:0,editType:"arraydraw"},editType:"arraydraw"},editType:"arraydraw"})});var v0e=ye((ulr,d0e)=>{"use strict";var TT=Pr(),e0=ho(),Mgt=Kd(),Egt=KU(),p4=x_();d0e.exports=function(t,r){Mgt(t,r,{name:"shapes",handleItemDefaults:Cgt})};function kgt(e,t){return e?"bottom":t.indexOf("top")!==-1?"top":t.indexOf("bottom")!==-1?"bottom":"middle"}function Cgt(e,t,r){function n(M,T){return TT.coerce(e,t,Egt,M,T)}t._isShape=!0;var i=n("visible");if(!i)return;var a=n("showlegend");n("legend"),n("legendgroup"),a&&(n("legendwidth"),n("legendgrouptitle.text"),TT.coerceFont(n,"legendgrouptitle.font"),n("legendrank"));var o=n("path"),s=o?"path":"rect",l=n("type",s),u=l!=="path";u&&delete t.path,n("editable"),n("layer"),n("opacity"),n("fillcolor"),n("fillrule");var c=n("line.width");c&&(n("line.color"),n("line.dash"));var f=n("xsizemode"),h=n("ysizemode");let d=[.25,.75],v=[0,10];["x","y"].forEach(M=>{var T=M+"anchor",L=M==="x"?f:h,x={_fullLayout:r},C,S,g,P;let E=M+"ref",z=e[E];if(Array.isArray(z)&&z.length>0){let q=p4.countDefiningCoords(l,o,M);P=e0.coerceRefArray(e,t,x,M,void 0,"paper",q),t["_"+M+"refArray"]=!0}else P=e0.coerceRef(e,t,x,M,void 0,"paper");if(Array.isArray(P))P.forEach(function(q){e0.getRefType(q)==="range"&&(C=e0.getFromId(x,q),C&&C._shapeIndices.indexOf(t._index)===-1&&C._shapeIndices.push(t._index))}),u&&[0,1].forEach(function(q){let V=P[q];e0.getRefType(V)==="range"?(C=e0.getFromId(x,V),S=p4.shapePositionToRange(C),g=p4.rangeToShapePosition(C),(C.type==="category"||C.type==="multicategory")&&n(M+q+"shift")):S=g=TT.identity;let Z=M+q,j=e[Z];if(e[Z]=S(e[Z],!0),L==="pixel"?n(Z,v[q]):e0.coercePosition(t,x,n,V,Z,d[q]),t[Z]=g(t[Z]),e[Z]=j,q===0&&L==="pixel"){let N=e[T];e[T]=S(e[T],!0),e0.coercePosition(t,x,n,V,T,.25),t[T]=g(t[T]),e[T]=N}});else{if(e0.getRefType(P)==="range"?(C=e0.getFromId(x,P),C._shapeIndices.push(t._index),g=p4.rangeToShapePosition(C),S=p4.shapePositionToRange(C),u&&(C.type==="category"||C.type==="multicategory")&&(n(M+"0shift"),n(M+"1shift"))):S=g=TT.identity,u){let V=M+"0",G=M+"1",Z=e[V],j=e[G];e[V]=S(e[V],!0),e[G]=S(e[G],!0),L==="pixel"?(n(V,v[0]),n(G,v[1])):(e0.coercePosition(t,x,n,P,V,d[0]),e0.coercePosition(t,x,n,P,G,d[1])),t[V]=g(t[V]),t[G]=g(t[G]),e[V]=Z,e[G]=j}if(L==="pixel"){let V=e[T];e[T]=S(e[T],!0),e0.coercePosition(t,x,n,P,T,.25),t[T]=g(t[T]),e[T]=V}}}),u&&TT.noneOrAll(e,t,["x0","x1","y0","y1"]);var m=l==="line",b,p;if(u&&(b=n("label.texttemplate"),n("label.texttemplatefallback")),b||(p=n("label.text")),p||b){n("label.textangle");var k=n("label.textposition",m?"middle":"middle center");n("label.xanchor"),n("label.yanchor",kgt(m,k)),n("label.padding"),TT.coerceFont(n,"label.font",r.font)}}});var m0e=ye((clr,g0e)=>{"use strict";var Lgt=ka(),p0e=Pr();function Pgt(e,t){return e?"bottom":t.indexOf("top")!==-1?"top":t.indexOf("bottom")!==-1?"bottom":"middle"}g0e.exports=function(t,r,n){n("newshape.visible"),n("newshape.name"),n("newshape.showlegend"),n("newshape.legend"),n("newshape.legendwidth"),n("newshape.legendgroup"),n("newshape.legendgrouptitle.text"),p0e.coerceFont(n,"newshape.legendgrouptitle.font"),n("newshape.legendrank"),n("newshape.drawdirection"),n("newshape.layer"),n("newshape.fillcolor"),n("newshape.fillrule"),n("newshape.opacity");var i=n("newshape.line.width");if(i){var a=(t||{}).plot_bgcolor||"#FFF";n("newshape.line.color",Lgt.contrast(a)),n("newshape.line.dash")}var o=t.dragmode==="drawline",s=n("newshape.label.text"),l=n("newshape.label.texttemplate");if(n("newshape.label.texttemplatefallback"),s||l){n("newshape.label.textangle");var u=n("newshape.label.textposition",o?"middle":"middle center");n("newshape.label.xanchor"),n("newshape.label.yanchor",Pgt(o,u)),n("newshape.label.padding"),p0e.coerceFont(n,"newshape.label.font",r.font)}n("activeshape.fillcolor"),n("activeshape.opacity")}});var A0e=ye((flr,T0e)=>{"use strict";var JU=Pr(),N0=ho(),zm=AM(),$U=x_();T0e.exports=function(t){var r=t._fullLayout,n=JU.filterVisible(r.shapes);if(!(!n.length||!t._fullData.length))for(var i=0;i{o=N0.getFromId(t,f),a._extremes[o._id]=N0.findExtremes(o,h,_0e(a))})}else a.xref!=="paper"&&l!=="domain"&&(o=N0.getFromId(t,a.xref),s=b0e(o,a,zm.paramIsX),s&&(a._extremes[o._id]=N0.findExtremes(o,s,_0e(a))));if(u==="array"){let c=y0e(t,a,"y");Object.entries(c).forEach(([f,h])=>{o=N0.getFromId(t,f),a._extremes[o._id]=N0.findExtremes(o,h,x0e(a))})}else a.yref!=="paper"&&u!=="domain"&&(o=N0.getFromId(t,a.yref),s=b0e(o,a,zm.paramIsY),s&&(a._extremes[o._id]=N0.findExtremes(o,s,x0e(a))))}};function y0e(e,t,r){let n=t[r+"ref"],i=r==="x"?zm.paramIsX:zm.paramIsY;function a(f,h){f==="paper"||N0.getRefType(f)==="domain"||(o[f]||(o[f]=[]),o[f].push(h))}let o={};if(t.type==="path"&&t.path){let f=t.path.match(zm.segmentRE)||[];for(var s=0,l=0;lv&&(a(n[s],m[v]),s++)}}else a(n[0],t[r+"0"]),a(n[1],t[r+"1"]);let u={};for(let f in o){let h=N0.getFromId(e,f);if(h){var c=h.type==="category"||h.type==="multicategory"?h.r2c:h.d2c;h.type==="date"&&(c=$U.decodeDate(c)),u[h._id]=o[f].map(c)}}return u}function _0e(e){return w0e(e.line.width,e.xsizemode,e.x0,e.x1,e.path,!1)}function x0e(e){return w0e(e.line.width,e.ysizemode,e.y0,e.y1,e.path,!0)}function w0e(e,t,r,n,i,a){var o=e/2,s=a;if(t==="pixel"){var l=i?$U.extractPathCoords(i,a?zm.paramIsY:zm.paramIsX):[r,n],u=JU.aggNums(Math.max,null,l),c=JU.aggNums(Math.min,null,l),f=c<0?Math.abs(c)+o:o,h=u>0?u+o:o;return{ppad:o,ppadplus:s?f:h,ppadminus:s?h:f}}else return{ppad:o}}function b0e(e,t,r){var n=e._id.charAt(0)==="x"?"x":"y",i=e.type==="category"||e.type==="multicategory",a,o,s=0,l=0,u=i?e.r2c:e.d2c,c=t[n+"sizemode"]==="scaled";if(c?(a=t[n+"0"],o=t[n+"1"],i&&(s=t[n+"0shift"],l=t[n+"1shift"])):(a=t[n+"anchor"],o=t[n+"anchor"]),a!==void 0)return[u(a)+s,u(o)+l];if(t.path){var f=1/0,h=-1/0,d=t.path.match(zm.segmentRE),v,m,b,p,k;for(e.type==="date"&&(u=$U.decodeDate(u)),v=0;vh&&(h=k)));if(h>=f)return[f,h]}}});var E0e=ye((hlr,M0e)=>{"use strict";var S0e=vP();M0e.exports={moduleType:"component",name:"shapes",layoutAttributes:KU(),supplyLayoutDefaults:v0e(),supplyDrawNewShapeDefaults:m0e(),includeBasePlot:XM()("shapes"),calcAutorange:A0e(),draw:S0e.draw,drawOne:S0e.drawOne}});var QU=ye((vlr,C0e)=>{"use strict";var k0e=Rh(),Igt=vl().templatedArray,dlr=jM();C0e.exports=Igt("image",{visible:{valType:"boolean",dflt:!0,editType:"arraydraw"},source:{valType:"string",editType:"arraydraw"},layer:{valType:"enumerated",values:["below","above"],dflt:"above",editType:"arraydraw"},sizex:{valType:"number",dflt:0,editType:"arraydraw"},sizey:{valType:"number",dflt:0,editType:"arraydraw"},sizing:{valType:"enumerated",values:["fill","contain","stretch"],dflt:"contain",editType:"arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},x:{valType:"any",dflt:0,editType:"arraydraw"},y:{valType:"any",dflt:0,editType:"arraydraw"},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left",editType:"arraydraw"},yanchor:{valType:"enumerated",values:["top","middle","bottom"],dflt:"top",editType:"arraydraw"},xref:{valType:"enumerated",values:["paper",k0e.idRegex.x.toString()],dflt:"paper",editType:"arraydraw"},yref:{valType:"enumerated",values:["paper",k0e.idRegex.y.toString()],dflt:"paper",editType:"arraydraw"},editType:"arraydraw"})});var P0e=ye((plr,L0e)=>{"use strict";var Rgt=Pr(),eV=ho(),Dgt=Kd(),Fgt=QU(),zgt="images";L0e.exports=function(t,r){var n={name:zgt,handleItemDefaults:qgt};Dgt(t,r,n)};function qgt(e,t,r){function n(h,d){return Rgt.coerce(e,t,Fgt,h,d)}var i=n("source"),a=n("visible",!!i);if(!a)return t;n("layer"),n("xanchor"),n("yanchor"),n("sizex"),n("sizey"),n("sizing"),n("opacity");for(var o={_fullLayout:r},s=["x","y"],l=0;l<2;l++){var u=s[l],c=eV.coerceRef(e,t,o,u,"paper",void 0);if(c!=="paper"){var f=eV.getFromId(o,c);f._imgIndices.push(t._index)}eV.coercePosition(t,o,n,c,u,0)}return t}});var F0e=ye((glr,D0e)=>{"use strict";var I0e=qa(),Ogt=So(),AT=ho(),R0e=df(),Bgt=Wp();D0e.exports=function(t){var r=t._fullLayout,n=[],i={},a=[],o,s;for(s=0;s{"use strict";var z0e=Eo(),Ngt=M6();q0e.exports=function(t,r,n,i){r=r||{};var a=n==="log"&&r.type==="linear",o=n==="linear"&&r.type==="log";if(a||o){for(var s=t._fullLayout.images,l=r._id.charAt(0),u,c,f=0;f{"use strict";B0e.exports={moduleType:"component",name:"images",layoutAttributes:QU(),supplyLayoutDefaults:P0e(),includeBasePlot:XM()("images"),draw:F0e(),convertCoords:O0e()}});var AI=ye((_lr,U0e)=>{"use strict";U0e.exports={name:"updatemenus",containerClassName:"updatemenu-container",headerGroupClassName:"updatemenu-header-group",headerClassName:"updatemenu-header",headerArrowClassName:"updatemenu-header-arrow",dropdownButtonGroupClassName:"updatemenu-dropdown-button-group",dropdownButtonClassName:"updatemenu-dropdown-button",buttonClassName:"updatemenu-button",itemRectClassName:"updatemenu-item-rect",itemTextClassName:"updatemenu-item-text",menuIndexAttrName:"updatemenu-active-index",autoMarginIdRoot:"updatemenu-",blankHeaderOpts:{label:" "},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:"#F4FAFF",hoverColor:"#F4FAFF",arrowSymbol:{left:"\u25C4",right:"\u25BA",up:"\u25B2",down:"\u25BC"}}});var tV=ye((xlr,G0e)=>{"use strict";var Ugt=ec(),Vgt=Ih(),Ggt=Ao().extendFlat,Hgt=mc().overrideAll,jgt=z6(),V0e=vl().templatedArray,Wgt=V0e("button",{visible:{valType:"boolean"},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},args2:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string",dflt:""},execute:{valType:"boolean",dflt:!0}});G0e.exports=Hgt(V0e("updatemenu",{_arrayAttrRegexps:[/^updatemenus\[(0|[1-9][0-9]+)\]\.buttons/],visible:{valType:"boolean"},type:{valType:"enumerated",values:["dropdown","buttons"],dflt:"dropdown"},direction:{valType:"enumerated",values:["left","right","up","down"],dflt:"down"},active:{valType:"integer",min:-1,dflt:0},showactive:{valType:"boolean",dflt:!0},buttons:Wgt,x:{valType:"number",min:-2,max:3,dflt:-.05},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"right"},y:{valType:"number",min:-2,max:3,dflt:1},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},pad:Ggt(jgt({editType:"arraydraw"}),{}),font:Ugt({}),bgcolor:{valType:"color"},bordercolor:{valType:"color",dflt:Vgt.borderLine},borderwidth:{valType:"number",min:0,dflt:1,editType:"arraydraw"}}),"arraydraw","from-root")});var X0e=ye((blr,W0e)=>{"use strict";var SI=Pr(),H0e=Kd(),j0e=tV(),Xgt=AI(),Zgt=Xgt.name,Ygt=j0e.buttons;W0e.exports=function(t,r){var n={name:Zgt,handleItemDefaults:Kgt};H0e(t,r,n)};function Kgt(e,t,r){function n(o,s){return SI.coerce(e,t,j0e,o,s)}var i=H0e(e,t,{name:"buttons",handleItemDefaults:Jgt}),a=n("visible",i.length>0);a&&(n("active"),n("direction"),n("type"),n("showactive"),n("x"),n("y"),SI.noneOrAll(e,t,["x","y"]),n("xanchor"),n("yanchor"),n("pad.t"),n("pad.r"),n("pad.b"),n("pad.l"),SI.coerceFont(n,"font",r.font),n("bgcolor",r.paper_bgcolor),n("bordercolor"),n("borderwidth"))}function Jgt(e,t){function r(i,a){return SI.coerce(e,t,Ygt,i,a)}var n=r("visible",e.method==="skip"||Array.isArray(e.args));n&&(r("method"),r("args"),r("args2"),r("label"),r("execute"))}});var K0e=ye((wlr,Y0e)=>{"use strict";Y0e.exports=Mf;var Ng=qa(),Z0e=ka(),ST=So(),MI=Pr();function Mf(e,t,r){this.gd=e,this.container=t,this.id=r,this.position=null,this.translateX=null,this.translateY=null,this.hbar=null,this.vbar=null,this.bg=this.container.selectAll("rect.scrollbox-bg").data([0]),this.bg.exit().on(".drag",null).on("wheel",null).remove(),this.bg.enter().append("rect").classed("scrollbox-bg",!0).style("pointer-events","all").attr({opacity:0,x:0,y:0,width:0,height:0})}Mf.barWidth=2;Mf.barLength=20;Mf.barRadius=2;Mf.barPad=1;Mf.barColor="#808BA4";Mf.prototype.enable=function(t,r,n){var i=this.gd._fullLayout,a=i.width,o=i.height;this.position=t;var s=this.position.l,l=this.position.w,u=this.position.t,c=this.position.h,f=this.position.direction,h=f==="down",d=f==="left",v=f==="right",m=f==="up",b=l,p=c,k,M,T,L;!h&&!d&&!v&&!m&&(this.position.direction="down",h=!0);var x=h||m;x?(k=s,M=k+b,h?(T=u,L=Math.min(T+p,o),p=L-T):(L=u+p,T=Math.max(L-p,0),p=L-T)):(T=u,L=T+p,d?(M=s+b,k=Math.max(M-b,0),b=M-k):(k=s,M=Math.min(k+b,a),b=M-k)),this._box={l:k,t:T,w:b,h:p};var C=l>b,S=Mf.barLength+2*Mf.barPad,g=Mf.barWidth+2*Mf.barPad,P=s,E=u+c;E+g>o&&(E=o-g);var z=this.container.selectAll("rect.scrollbar-horizontal").data(C?[0]:[]);z.exit().on(".drag",null).remove(),z.enter().append("rect").classed("scrollbar-horizontal",!0).call(Z0e.fill,Mf.barColor),C?(this.hbar=z.attr({rx:Mf.barRadius,ry:Mf.barRadius,x:P,y:E,width:S,height:g}),this._hbarXMin=P+S/2,this._hbarTranslateMax=b-S):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var q=c>p,V=Mf.barWidth+2*Mf.barPad,G=Mf.barLength+2*Mf.barPad,Z=s+l,j=u;Z+V>a&&(Z=a-V);var N=this.container.selectAll("rect.scrollbar-vertical").data(q?[0]:[]);N.exit().on(".drag",null).remove(),N.enter().append("rect").classed("scrollbar-vertical",!0).call(Z0e.fill,Mf.barColor),q?(this.vbar=N.attr({rx:Mf.barRadius,ry:Mf.barRadius,x:Z,y:j,width:V,height:G}),this._vbarYMin=j+G/2,this._vbarTranslateMax=p-G):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var H=this.id,ie=k-.5,ae=q?M+V+.5:M+.5,_e=T-.5,Ee=C?L+g+.5:L+.5,Ce=i._topdefs.selectAll("#"+H).data(C||q?[0]:[]);if(Ce.exit().remove(),Ce.enter().append("clipPath").attr("id",H).append("rect"),C||q?(this._clipRect=Ce.select("rect").attr({x:Math.floor(ie),y:Math.floor(_e),width:Math.ceil(ae)-Math.floor(ie),height:Math.ceil(Ee)-Math.floor(_e)}),this.container.call(ST.setClipUrl,H,this.gd),this.bg.attr({x:s,y:u,width:l,height:c})):(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(ST.setClipUrl,null),delete this._clipRect),C||q){var ge=Ng.behavior.drag().on("dragstart",function(){Ng.event.sourceEvent.preventDefault()}).on("drag",this._onBoxDrag.bind(this));this.container.on("wheel",null).on("wheel",this._onBoxWheel.bind(this)).on(".drag",null).call(ge);var re=Ng.behavior.drag().on("dragstart",function(){Ng.event.sourceEvent.preventDefault(),Ng.event.sourceEvent.stopPropagation()}).on("drag",this._onBarDrag.bind(this));C&&this.hbar.on(".drag",null).call(re),q&&this.vbar.on(".drag",null).call(re)}this.setTranslate(r,n)};Mf.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(ST.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(".drag",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(".drag",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)};Mf.prototype._onBoxDrag=function(){var t=this.translateX,r=this.translateY;this.hbar&&(t-=Ng.event.dx),this.vbar&&(r-=Ng.event.dy),this.setTranslate(t,r)};Mf.prototype._onBoxWheel=function(){var t=this.translateX,r=this.translateY;this.hbar&&(t+=Ng.event.deltaY),this.vbar&&(r+=Ng.event.deltaY),this.setTranslate(t,r)};Mf.prototype._onBarDrag=function(){var t=this.translateX,r=this.translateY;if(this.hbar){var n=t+this._hbarXMin,i=n+this._hbarTranslateMax,a=MI.constrain(Ng.event.x,n,i),o=(a-n)/(i-n),s=this.position.w-this._box.w;t=o*s}if(this.vbar){var l=r+this._vbarYMin,u=l+this._vbarTranslateMax,c=MI.constrain(Ng.event.y,l,u),f=(c-l)/(u-l),h=this.position.h-this._box.h;r=f*h}this.setTranslate(t,r)};Mf.prototype.setTranslate=function(t,r){var n=this.position.w-this._box.w,i=this.position.h-this._box.h;if(t=MI.constrain(t||0,0,n),r=MI.constrain(r||0,0,i),this.translateX=t,this.translateY=r,this.container.call(ST.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-r),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+r-.5)}),this.hbar){var a=t/n;this.hbar.call(ST.setTranslate,t+a*this._hbarTranslateMax,r)}if(this.vbar){var o=r/i;this.vbar.call(ST.setTranslate,t,r+o*this._vbarTranslateMax)}}});var oge=ye((Tlr,age)=>{"use strict";var MT=qa(),g4=Mc(),m4=ka(),ET=So(),t0=Pr(),EI=Zl(),$gt=vl().arrayEditor,$0e=Dh().LINE_SPACING,es=AI(),Qgt=K0e();age.exports=function(t){var r=t._fullLayout,n=t0.filterVisible(r[es.name]);function i(h){g4.autoMargin(t,ige(h))}var a=r._menulayer.selectAll("g."+es.containerClassName).data(n.length>0?[0]:[]);if(a.enter().append("g").classed(es.containerClassName,!0).style("cursor","pointer"),a.exit().each(function(){MT.select(this).selectAll("g."+es.headerGroupClassName).each(i)}).remove(),n.length!==0){var o=a.selectAll("g."+es.headerGroupClassName).data(n,emt);o.enter().append("g").classed(es.headerGroupClassName,!0);for(var s=t0.ensureSingle(a,"g",es.dropdownButtonGroupClassName,function(h){h.style("pointer-events","all")}),l=0;l{"use strict";var smt=AI();sge.exports={moduleType:"component",name:smt.name,layoutAttributes:tV(),supplyLayoutDefaults:X0e(),draw:oge()}});var _4=ye((Slr,uge)=>{"use strict";uge.exports={name:"sliders",containerClassName:"slider-container",groupClassName:"slider-group",inputAreaClass:"slider-input-area",railRectClass:"slider-rail-rect",railTouchRectClass:"slider-rail-touch-rect",gripRectClass:"slider-grip-rect",tickRectClass:"slider-tick-rect",inputProxyClass:"slider-input-proxy",labelsClass:"slider-labels",labelGroupClass:"slider-label-group",labelClass:"slider-label",currentValueClass:"slider-current-value",railHeight:5,menuIndexAttrName:"slider-active-index",autoMarginIdRoot:"slider-",minWidth:30,minHeight:30,textPadX:40,arrowOffsetX:4,railRadius:2,railWidth:5,railBorder:4,railBorderWidth:1,railBorderColor:"#bec8d9",railBgColor:"#f8fafc",railInset:8,stepInset:10,gripRadius:10,gripWidth:20,gripHeight:20,gripBorder:20,gripBorderWidth:1,gripBorderColor:"#bec8d9",gripBgColor:"#f6f8fa",gripBgActiveColor:"#dbdde0",labelPadding:8,labelOffset:0,tickWidth:1,tickColor:"#333",tickOffset:25,tickLength:7,minorTickOffset:25,minorTickColor:"#333",minorTickLength:4,currentValuePadding:8,currentValueInset:0}});var aV=ye((Mlr,hge)=>{"use strict";var cge=ec(),lmt=z6(),umt=Ao().extendDeepAll,cmt=mc().overrideAll,fmt=WS(),fge=vl().templatedArray,c2=_4(),hmt=fge("step",{visible:{valType:"boolean",dflt:!0},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string"},value:{valType:"string"},execute:{valType:"boolean",dflt:!0}});hge.exports=cmt(fge("slider",{visible:{valType:"boolean",dflt:!0},active:{valType:"number",min:0,dflt:0},steps:hmt,lenmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"fraction"},len:{valType:"number",min:0,dflt:1},x:{valType:"number",min:-2,max:3,dflt:0},pad:umt(lmt({editType:"arraydraw"}),{},{t:{dflt:20}}),xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left"},y:{valType:"number",min:-2,max:3,dflt:0},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},transition:{duration:{valType:"number",min:0,dflt:150},easing:{valType:"enumerated",values:fmt.transition.easing.values,dflt:"cubic-in-out"}},currentvalue:{visible:{valType:"boolean",dflt:!0},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left"},offset:{valType:"number",dflt:10},prefix:{valType:"string"},suffix:{valType:"string"},font:cge({})},font:cge({}),activebgcolor:{valType:"color",dflt:c2.gripBgActiveColor},bgcolor:{valType:"color",dflt:c2.railBgColor},bordercolor:{valType:"color",dflt:c2.railBorderColor},borderwidth:{valType:"number",min:0,dflt:c2.railBorderWidth},ticklen:{valType:"number",min:0,dflt:c2.tickLength},tickcolor:{valType:"color",dflt:c2.tickColor},tickwidth:{valType:"number",min:0,dflt:1},minorticklen:{valType:"number",min:0,dflt:c2.minorTickLength}}),"arraydraw","from-root")});var gge=ye((Elr,pge)=>{"use strict";var kT=Pr(),dge=Kd(),vge=aV(),dmt=_4(),vmt=dmt.name,pmt=vge.steps;pge.exports=function(t,r){dge(t,r,{name:vmt,handleItemDefaults:gmt})};function gmt(e,t,r){function n(f,h){return kT.coerce(e,t,vge,f,h)}for(var i=dge(e,t,{name:"steps",handleItemDefaults:mmt}),a=0,o=0;o{"use strict";var Ug=qa(),kI=Mc(),k_=ka(),Vg=So(),r0=Pr(),ymt=r0.strTranslate,x4=Zl(),_mt=vl().arrayEditor,Rs=_4(),lV=Dh(),_ge=lV.LINE_SPACING,oV=lV.FROM_TL,sV=lV.FROM_BR;Sge.exports=function(t){var r=t._context.staticPlot,n=t._fullLayout,i=xmt(n,t),a=n._infolayer.selectAll("g."+Rs.containerClassName).data(i.length>0?[0]:[]);a.enter().append("g").classed(Rs.containerClassName,!0).style("cursor",r?null:"ew-resize");function o(c){c._commandObserver&&(c._commandObserver.remove(),delete c._commandObserver),kI.autoMargin(t,xge(c))}if(a.exit().each(function(){Ug.select(this).selectAll("g."+Rs.groupClassName).each(o)}).remove(),i.length!==0){var s=a.selectAll("g."+Rs.groupClassName).data(i,bmt);s.enter().append("g").classed(Rs.groupClassName,!0),s.exit().each(o).remove();for(var l=0;l0&&(s=s.transition().duration(t.transition.duration).ease(t.transition.easing)),s.attr("transform",ymt(o-Rs.gripWidth*.5,t._dims.currentValueTotalHeight))}}function uV(e,t){var r=e._dims;return r.inputAreaStart+Rs.stepInset+(r.inputAreaLength-2*Rs.stepInset)*Math.min(1,Math.max(0,t))}function yge(e,t){var r=e._dims;return Math.min(1,Math.max(0,(t-Rs.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*Rs.stepInset-2*r.inputAreaStart)))}function kmt(e,t,r){var n=r._dims,i=r0.ensureSingle(e,"rect",Rs.railTouchRectClass,function(a){a.call(Tge,t,e,r).style("pointer-events","all")});i.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,Rs.tickOffset+r.ticklen+n.labelHeight)}).call(k_.fill,r.bgcolor).attr("opacity",0),Vg.setTranslate(i,0,n.currentValueTotalHeight)}function Cmt(e,t){var r=t._dims,n=r.inputAreaLength-Rs.railInset*2,i=r0.ensureSingle(e,"rect",Rs.railRectClass);i.attr({width:n,height:Rs.railWidth,rx:Rs.railRadius,ry:Rs.railRadius,"shape-rendering":"crispEdges"}).call(k_.stroke,t.bordercolor).call(k_.fill,t.bgcolor).style("stroke-width",t.borderwidth+"px"),Vg.setTranslate(i,Rs.railInset,(r.inputAreaWidth-Rs.railWidth)*.5+r.currentValueTotalHeight)}});var kge=ye((Clr,Ege)=>{"use strict";var Lmt=_4();Ege.exports={moduleType:"component",name:Lmt.name,layoutAttributes:aV(),supplyLayoutDefaults:gge(),draw:Mge()}});var LI=ye((Llr,Lge)=>{"use strict";var Cge=Ih();Lge.exports={bgcolor:{valType:"color",dflt:Cge.background,editType:"plot"},bordercolor:{valType:"color",dflt:Cge.defaultLine,editType:"plot"},borderwidth:{valType:"integer",dflt:0,min:0,editType:"plot"},autorange:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},range:{valType:"info_array",items:[{valType:"any",editType:"calc",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"calc",impliedEdits:{"^autorange":!1}}],editType:"calc",impliedEdits:{autorange:!1}},thickness:{valType:"number",dflt:.15,min:0,max:1,editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"}});var cV=ye((Plr,Pge)=>{"use strict";Pge.exports={_isSubplotObj:!0,rangemode:{valType:"enumerated",values:["auto","fixed","match"],dflt:"match",editType:"calc"},range:{valType:"info_array",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},editType:"calc"}});var PI=ye((Ilr,Ige)=>{"use strict";Ige.exports={name:"rangeslider",containerClassName:"rangeslider-container",bgClassName:"rangeslider-bg",rangePlotClassName:"rangeslider-rangeplot",maskMinClassName:"rangeslider-mask-min",maskMaxClassName:"rangeslider-mask-max",slideBoxClassName:"rangeslider-slidebox",grabberMinClassName:"rangeslider-grabber-min",grabAreaMinClassName:"rangeslider-grabarea-min",handleMinClassName:"rangeslider-handle-min",grabberMaxClassName:"rangeslider-grabber-max",grabAreaMaxClassName:"rangeslider-grabarea-max",handleMaxClassName:"rangeslider-handle-max",maskMinOppAxisClassName:"rangeslider-mask-min-opp-axis",maskMaxOppAxisClassName:"rangeslider-mask-max-opp-axis",maskColor:"rgba(0,0,0,0.4)",maskOppAxisColor:"rgba(0,0,0,0.2)",slideBoxFill:"transparent",slideBoxCursor:"ew-resize",grabAreaFill:"transparent",grabAreaCursor:"col-resize",grabAreaWidth:10,handleWidth:4,handleRadius:1,handleStrokeWidth:1,extraPad:15}});var Fge=ye(RI=>{"use strict";var Pmt=df(),Imt=Zl(),Rge=PI(),Rmt=Dh().LINE_SPACING,II=Rge.name;function Dge(e){var t=e&&e[II];return t&&t.visible}RI.isVisible=Dge;RI.makeData=function(e){for(var t=Pmt.list({_fullLayout:e},"x",!0),r=e.margin,n=[],i=0;i{"use strict";var DI=Pr(),zge=vl(),qge=df(),Dmt=LI(),Fmt=cV();Oge.exports=function(t,r,n){var i=t[n],a=r[n];if(!(i.rangeslider||r._requestRangeslider[a._id]))return;DI.isPlainObject(i.rangeslider)||(i.rangeslider={});var o=i.rangeslider,s=zge.newContainer(a,"rangeslider");function l(L,x){return DI.coerce(o,s,Dmt,L,x)}var u,c;function f(L,x){return DI.coerce(u,c,Fmt,L,x)}var h=l("visible");if(h){l("bgcolor",r.plot_bgcolor),l("bordercolor"),l("borderwidth"),l("thickness"),l("autorange",!a.isValidRange(o.range)),l("range");var d=r._subplots;if(d)for(var v=d.cartesian.filter(function(L){return L.slice(0,Math.max(0,L.indexOf("y")))===qge.name2id(n)}).map(function(L){return L.slice(L.indexOf("y"),L.length)}),m=DI.simpleMap(v,qge.id2name),b=0;b{"use strict";var zmt=df().list,qmt=Mg().getAutoRange,Omt=PI();Nge.exports=function(t){for(var r=zmt(t,"x",!0),n=0;n{"use strict";var FI=qa(),Bmt=Oa(),Nmt=Mc(),Jf=Pr(),zI=Jf.strTranslate,Gge=So(),C_=ka(),Umt=qb(),Vmt=mh(),fV=df(),Gmt=yv(),Hmt=Eg(),rl=PI();Hge.exports=function(e){for(var t=e._fullLayout,r=t._rangeSliderData,n=0;n=N.max)Z=E[j+1];else if(G=N.pmax)Z=E[j+1];else if(G0?e.touches[0].clientX:0}function jmt(e,t,r,n){if(t._context.staticPlot)return;var i=e.select("rect."+rl.slideBoxClassName).node(),a=e.select("rect."+rl.grabAreaMinClassName).node(),o=e.select("rect."+rl.grabAreaMaxClassName).node();function s(){var l=FI.event,u=l.target,c=Vge(l),f=c-e.node().getBoundingClientRect().left,h=n.d2p(r._rl[0]),d=n.d2p(r._rl[1]),v=Gmt.coverSlip();this.addEventListener("touchmove",m),this.addEventListener("touchend",b),v.addEventListener("mousemove",m),v.addEventListener("mouseup",b);function m(p){var k=Vge(p),M=+k-c,T,L,x;switch(u){case i:if(x="ew-resize",h+M>r._length||d+M<0)return;T=h+M,L=d+M;break;case a:if(x="col-resize",h+M>r._length)return;T=h+M,L=d;break;case o:if(x="col-resize",d+M<0)return;T=h,L=d+M;break;default:x="ew-resize",T=f,L=f+M;break}if(L{"use strict";var tyt=Pr(),ryt=LI(),iyt=cV(),hV=Fge();Wge.exports={moduleType:"component",name:"rangeslider",schema:{subplots:{xaxis:{rangeslider:tyt.extendFlat({},ryt,{yaxis:iyt})}}},layoutAttributes:LI(),handleDefaults:Bge(),calcAutorange:Uge(),draw:jge(),isVisible:hV.isVisible,makeData:hV.makeData,autoMarginOpts:hV.autoMarginOpts}});var qI=ye((Olr,Yge)=>{"use strict";var nyt=ec(),Zge=Ih(),ayt=vl().templatedArray,oyt=ayt("button",{visible:{valType:"boolean",dflt:!0,editType:"plot"},step:{valType:"enumerated",values:["month","year","day","hour","minute","second","all"],dflt:"month",editType:"plot"},stepmode:{valType:"enumerated",values:["backward","todate"],dflt:"backward",editType:"plot"},count:{valType:"number",min:0,dflt:1,editType:"plot"},label:{valType:"string",editType:"plot"},editType:"plot"});Yge.exports={visible:{valType:"boolean",editType:"plot"},buttons:oyt,x:{valType:"number",min:-2,max:3,editType:"plot"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left",editType:"plot"},y:{valType:"number",min:-2,max:3,editType:"plot"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"bottom",editType:"plot"},font:nyt({editType:"plot"}),bgcolor:{valType:"color",dflt:Zge.lightLine,editType:"plot"},activecolor:{valType:"color",editType:"plot"},bordercolor:{valType:"color",dflt:Zge.defaultLine,editType:"plot"},borderwidth:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"plot"}});var dV=ye((Blr,Kge)=>{"use strict";Kge.exports={yPad:.02,minButtonWidth:30,rx:3,ry:3,lightAmount:25,darkAmount:10}});var Qge=ye((Nlr,$ge)=>{"use strict";var OI=Pr(),syt=ka(),lyt=vl(),uyt=Kd(),Jge=qI(),vV=dV();$ge.exports=function(t,r,n,i,a){var o=t.rangeselector||{},s=lyt.newContainer(r,"rangeselector");function l(d,v){return OI.coerce(o,s,Jge,d,v)}var u=uyt(o,s,{name:"buttons",handleItemDefaults:cyt,calendar:a}),c=l("visible",u.length>0);if(c){var f=fyt(r,n,i);l("x",f[0]),l("y",f[1]),OI.noneOrAll(t,r,["x","y"]),l("xanchor"),l("yanchor"),OI.coerceFont(l,"font",n.font);var h=l("bgcolor");l("activecolor",syt.contrast(h,vV.lightAmount,vV.darkAmount)),l("bordercolor"),l("borderwidth")}};function cyt(e,t,r,n){var i=n.calendar;function a(l,u){return OI.coerce(e,t,Jge.buttons,l,u)}var o=a("visible");if(o){var s=a("step");s!=="all"&&(i&&i!=="gregorian"&&(s==="month"||s==="year")?t.stepmode="backward":a("stepmode"),a("count")),a("label")}}function fyt(e,t,r){for(var n=r.filter(function(s){return t[s].anchor===e._id}),i=0,a=0;a{"use strict";var hyt=Eq(),dyt=Pr().titleCase;eme.exports=function(t,r){var n=t._name,i={};if(r.step==="all")i[n+".autorange"]=!0;else{var a=vyt(t,r);i[n+".range[0]"]=a[0],i[n+".range[1]"]=a[1]}return i};function vyt(e,t){var r=e.range,n=new Date(e.r2l(r[1])),i=t.step,a=hyt["utc"+dyt(i)],o=t.count,s;switch(t.stepmode){case"backward":s=e.l2r(+a.offset(n,-o));break;case"todate":var l=a.offset(n,-o);s=e.l2r(+a.ceil(l));break}var u=r[1];return[s,u]}});var ume=ye((Vlr,lme)=>{"use strict";var NI=qa(),pyt=Oa(),gyt=Mc(),rme=ka(),sme=So(),Ny=Pr(),ime=Ny.strTranslate,BI=Zl(),myt=df(),mV=Dh(),nme=mV.LINE_SPACING,ame=mV.FROM_TL,ome=mV.FROM_BR,gV=dV(),yyt=tme();lme.exports=function(t){var r=t._fullLayout,n=r._infolayer.selectAll(".rangeselector").data(_yt(t),xyt);n.enter().append("g").classed("rangeselector",!0),n.exit().remove(),n.style({cursor:"pointer","pointer-events":"all"}),n.each(function(i){var a=NI.select(this),o=i,s=o.rangeselector,l=a.selectAll("g.button").data(Ny.filterVisible(s.buttons));l.enter().append("g").classed("button",!0),l.exit().remove(),l.each(function(u){var c=NI.select(this),f=yyt(o,u);u._isActive=byt(o,u,f),c.call(pV,s,u),c.call(Tyt,s,u,t),c.on("click",function(){t._dragged||pyt.call("_guiRelayout",t,f)}),c.on("mouseover",function(){u._isHovered=!0,c.call(pV,s,u)}),c.on("mouseout",function(){u._isHovered=!1,c.call(pV,s,u)})}),Syt(t,l,s,o._name,a)})};function _yt(e){for(var t=myt.list(e,"x",!0),r=[],n=0;n{"use strict";cme.exports={moduleType:"component",name:"rangeselector",schema:{subplots:{xaxis:{rangeselector:qI()}}},layoutAttributes:qI(),handleDefaults:Qge(),draw:ume()}});var Cc=ye(yV=>{"use strict";var hme=Ao().extendFlat;yV.attributes=function(e,t){e=e||{},t=t||{};var r={valType:"info_array",editType:e.editType,items:[{valType:"number",min:0,max:1,editType:e.editType},{valType:"number",min:0,max:1,editType:e.editType}],dflt:[0,1]},n=e.name?e.name+" ":"",i=e.trace?"trace ":"subplot ",a=t.description?" "+t.description:"",o={x:hme({},r,{}),y:hme({},r,{}),editType:e.editType};return e.noGridCell||(o.row={valType:"integer",min:0,dflt:0,editType:e.editType},o.column={valType:"integer",min:0,dflt:0,editType:e.editType}),o};yV.defaults=function(e,t,r,n){var i=n&&n.x||[0,1],a=n&&n.y||[0,1],o=t.grid;if(o){var s=r("domain.column");s!==void 0&&(s{"use strict";var Myt=Pr(),Eyt=m3().counter,kyt=Cc().attributes,dme=Rh().idRegex,Cyt=vl(),_V={rows:{valType:"integer",min:1,editType:"plot"},roworder:{valType:"enumerated",values:["top to bottom","bottom to top"],dflt:"top to bottom",editType:"plot"},columns:{valType:"integer",min:1,editType:"plot"},subplots:{valType:"info_array",freeLength:!0,dimensions:2,items:{valType:"enumerated",values:[Eyt("xy").toString(),""],editType:"plot"},editType:"plot"},xaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[dme.x.toString(),""],editType:"plot"},editType:"plot"},yaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[dme.y.toString(),""],editType:"plot"},editType:"plot"},pattern:{valType:"enumerated",values:["independent","coupled"],dflt:"coupled",editType:"plot"},xgap:{valType:"number",min:0,max:1,editType:"plot"},ygap:{valType:"number",min:0,max:1,editType:"plot"},domain:kyt({name:"grid",editType:"plot",noGridCell:!0},{}),xside:{valType:"enumerated",values:["bottom","bottom plot","top plot","top"],dflt:"bottom plot",editType:"plot"},yside:{valType:"enumerated",values:["left","left plot","right plot","right"],dflt:"left plot",editType:"plot"},editType:"plot"};function UI(e,t,r){var n=t[r+"axes"],i=Object.keys((e._splomAxes||{})[r]||{});if(Array.isArray(n))return n;if(i.length)return i}function Lyt(e,t){var r=e.grid||{},n=UI(t,r,"x"),i=UI(t,r,"y");if(!e.grid&&!n&&!i)return;var a=Array.isArray(r.subplots)&&Array.isArray(r.subplots[0]),o=Array.isArray(n),s=Array.isArray(i),l=o&&n!==r.xaxes&&s&&i!==r.yaxes,u,c;a?(u=r.subplots.length,c=r.subplots[0].length):(s&&(u=i.length),o&&(c=n.length));var f=Cyt.newContainer(t,"grid");function h(x,C){return Myt.coerce(r,f,_V,x,C)}var d=h("rows",u),v=h("columns",c);if(!(d*v>1)){delete t.grid;return}if(!a&&!o&&!s){var m=h("pattern")==="independent";m&&(a=!0)}f._hasSubplotGrid=a;var b=h("roworder"),p=b==="top to bottom",k=a?.2:.1,M=a?.3:.1,T,L;l&&t._splomGridDflt&&(T=t._splomGridDflt.xside,L=t._splomGridDflt.yside),f._domains={x:vme("x",h,k,T,v),y:vme("y",h,M,L,d,p)}}function vme(e,t,r,n,i,a){var o=t(e+"gap",r),s=t("domain."+e);t(e+"side",n);for(var l=new Array(i),u=s[0],c=(s[1]-u)/(i-o),f=c*(1-o),h=0;h{"use strict";mme.exports={visible:{valType:"boolean",editType:"calc"},type:{valType:"enumerated",values:["percent","constant","sqrt","data"],editType:"calc"},symmetric:{valType:"boolean",editType:"calc"},array:{valType:"data_array",editType:"calc"},arrayminus:{valType:"data_array",editType:"calc"},value:{valType:"number",min:0,dflt:10,editType:"calc"},valueminus:{valType:"number",min:0,dflt:10,editType:"calc"},traceref:{valType:"integer",min:0,dflt:0,editType:"style"},tracerefminus:{valType:"integer",min:0,dflt:0,editType:"style"},copy_ystyle:{valType:"boolean",editType:"plot"},copy_zstyle:{valType:"boolean",editType:"style"},color:{valType:"color",editType:"style"},thickness:{valType:"number",min:0,dflt:2,editType:"style"},width:{valType:"number",min:0,editType:"plot"},editType:"calc"}});var xme=ye((Xlr,_me)=>{"use strict";var yme=Eo(),Iyt=Oa(),Ryt=Pr(),Dyt=vl(),Fyt=bV();_me.exports=function(e,t,r,n){var i="error_"+n.axis,a=Dyt.newContainer(t,i),o=e[i]||{};function s(v,m){return Ryt.coerce(o,a,Fyt,v,m)}var l=o.array!==void 0||o.value!==void 0||o.type==="sqrt",u=s("visible",l);if(u!==!1){var c=s("type","array"in o?"data":"percent"),f=!0;c!=="sqrt"&&(f=s("symmetric",!((c==="data"?"arrayminus":"valueminus")in o))),c==="data"?(s("array"),s("traceref"),f||(s("arrayminus"),s("tracerefminus"))):(c==="percent"||c==="constant")&&(s("value"),f||s("valueminus"));var h="copy_"+n.inherit+"style";if(n.inherit){var d=t["error_"+n.inherit];(d||{}).visible&&s(h,!(o.color||yme(o.thickness)||yme(o.width)))}(!n.inherit||!a[h])&&(s("color",r),s("thickness"),s("width",Iyt.traceIs(t,"gl3d")?0:4))}}});var wV=ye((Zlr,wme)=>{"use strict";wme.exports=function(t){var r=t.type,n=t.symmetric;if(r==="data"){var i=t.array||[];if(n)return function(u,c){var f=+i[c];return[f,f]};var a=t.arrayminus||[];return function(u,c){var f=+i[c],h=+a[c];return!isNaN(f)||!isNaN(h)?[h||0,f||0]:[NaN,NaN]}}else{var o=bme(r,t.value),s=bme(r,t.valueminus);return n||t.valueminus===void 0?function(u){var c=o(u);return[c,c]}:function(u){return[s(u),o(u)]}}};function bme(e,t){if(e==="percent")return function(r){return Math.abs(r*t/100)};if(e==="constant")return function(){return Math.abs(t)};if(e==="sqrt")return function(r){return Math.sqrt(Math.abs(r))}}});var Sme=ye((Ylr,Ame)=>{"use strict";var TV=Eo(),zyt=Oa(),AV=ho(),qyt=Pr(),Oyt=wV();Ame.exports=function(t){for(var r=t.calcdata,n=0;n{"use strict";var Mme=qa(),L_=Eo(),Byt=So(),Nyt=Ru();Eme.exports=function(t,r,n,i){var a,o=n.xaxis,s=n.yaxis,l=i&&i.duration>0,u=t._context.staticPlot;r.each(function(c){var f=c[0].trace,h=f.error_x||{},d=f.error_y||{},v;f.ids&&(v=function(k){return k.id});var m=Nyt.hasMarkers(f)&&f.marker.maxdisplayed>0;!d.visible&&!h.visible&&(c=[]);var b=Mme.select(this).selectAll("g.errorbar").data(c,v);if(b.exit().remove(),!!c.length){h.visible||b.selectAll("path.xerror").remove(),d.visible||b.selectAll("path.yerror").remove(),b.style("opacity",1);var p=b.enter().append("g").classed("errorbar",!0);l&&p.style("opacity",0).transition().duration(i.duration).style("opacity",1),Byt.setClipUrl(b,n.layerClipId,t),b.each(function(k){var M=Mme.select(this),T=Uyt(k,o,s);if(!(m&&!k.vis)){var L,x=M.select("path.yerror");if(d.visible&&L_(T.x)&&L_(T.yh)&&L_(T.ys)){var C=d.width;L="M"+(T.x-C)+","+T.yh+"h"+2*C+"m-"+C+",0V"+T.ys,T.noYS||(L+="m-"+C+",0h"+2*C),a=!x.size(),a?x=M.append("path").style("vector-effect",u?"none":"non-scaling-stroke").classed("yerror",!0):l&&(x=x.transition().duration(i.duration).ease(i.easing)),x.attr("d",L)}else x.remove();var S=M.select("path.xerror");if(h.visible&&L_(T.y)&&L_(T.xh)&&L_(T.xs)){var g=(h.copy_ystyle?d:h).width;L="M"+T.xh+","+(T.y-g)+"v"+2*g+"m0,-"+g+"H"+T.xs,T.noXS||(L+="m0,-"+g+"v"+2*g),a=!S.size(),a?S=M.append("path").style("vector-effect",u?"none":"non-scaling-stroke").classed("xerror",!0):l&&(S=S.transition().duration(i.duration).ease(i.easing)),S.attr("d",L)}else S.remove()}})}})};function Uyt(e,t,r){var n={x:t.c2p(e.x),y:r.c2p(e.y)};return e.yh!==void 0&&(n.yh=r.c2p(e.yh),n.ys=r.c2p(e.ys),L_(n.ys)||(n.noYS=!0,n.ys=r.c2p(e.ys,!0))),e.xh!==void 0&&(n.xh=t.c2p(e.xh),n.xs=t.c2p(e.xs),L_(n.xs)||(n.noXS=!0,n.xs=t.c2p(e.xs,!0))),n}});var Pme=ye((Jlr,Lme)=>{"use strict";var Vyt=qa(),Cme=ka();Lme.exports=function(t){t.each(function(r){var n=r[0].trace,i=n.error_y||{},a=n.error_x||{},o=Vyt.select(this);o.selectAll("path.yerror").style("stroke-width",i.thickness+"px").call(Cme.stroke,i.color),a.copy_ystyle&&(a=i),o.selectAll("path.xerror").style("stroke-width",a.thickness+"px").call(Cme.stroke,a.color)})}});var Dme=ye(($lr,Rme)=>{"use strict";var b4=Pr(),Ime=mc().overrideAll,w4=bV(),f2={error_x:b4.extendFlat({},w4),error_y:b4.extendFlat({},w4)};delete f2.error_x.copy_zstyle;delete f2.error_y.copy_zstyle;delete f2.error_y.copy_ystyle;var T4={error_x:b4.extendFlat({},w4),error_y:b4.extendFlat({},w4),error_z:b4.extendFlat({},w4)};delete T4.error_x.copy_ystyle;delete T4.error_y.copy_ystyle;delete T4.error_z.copy_ystyle;delete T4.error_z.copy_zstyle;Rme.exports={moduleType:"component",name:"errorbars",schema:{traces:{scatter:f2,bar:f2,histogram:f2,scatter3d:Ime(T4,"calc","nested"),scattergl:Ime(f2,"calc","nested")}},supplyDefaults:xme(),calc:Sme(),makeComputeError:wV(),plot:kme(),style:Pme(),hoverInfo:Gyt};function Gyt(e,t,r){(t.error_y||{}).visible&&(r.yerr=e.yh-e.y,t.error_y.symmetric||(r.yerrneg=e.y-e.ys)),(t.error_x||{}).visible&&(r.xerr=e.xh-e.x,t.error_x.symmetric||(r.xerrneg=e.x-e.xs))}});var zme=ye((Qlr,Fme)=>{"use strict";Fme.exports={cn:{colorbar:"colorbar",cbbg:"cbbg",cbfill:"cbfill",cbfills:"cbfills",cbline:"cbline",cblines:"cblines",cbaxis:"cbaxis",cbtitleunshift:"cbtitleunshift",cbtitle:"cbtitle",cboutline:"cboutline",crisp:"crisp",jsPlaceholder:"js-placeholder"}}});var Gme=ye((eur,Vme)=>{"use strict";var P_=qa(),SV=fd(),GI=Mc(),qme=Oa(),Uy=ho(),VI=yv(),U0=Pr(),Hg=U0.strTranslate,Ume=Ao().extendFlat,MV=Eg(),Gg=So(),EV=ka(),Hyt=qb(),jyt=Zl(),Wyt=pv().flipScale,Xyt=h4(),Zyt=vI(),Yyt=Rd(),kV=Dh(),Ome=kV.LINE_SPACING,Bme=kV.FROM_TL,Nme=kV.FROM_BR,gf=zme().cn;function Kyt(e){var t=e._fullLayout,r=t._infolayer.selectAll("g."+gf.colorbar).data(Jyt(e),function(n){return n._id});r.enter().append("g").attr("class",function(n){return n._id}).classed(gf.colorbar,!0),r.each(function(n){var i=P_.select(this);U0.ensureSingle(i,"rect",gf.cbbg),U0.ensureSingle(i,"g",gf.cbfills),U0.ensureSingle(i,"g",gf.cblines),U0.ensureSingle(i,"g",gf.cbaxis,function(o){o.classed(gf.crisp,!0)}),U0.ensureSingle(i,"g",gf.cbtitleunshift,function(o){o.append("g").classed(gf.cbtitle,!0)}),U0.ensureSingle(i,"rect",gf.cboutline);var a=$yt(i,n,e);a&&a.then&&(e._promises||[]).push(a),e._context.edits.colorbarPosition&&Qyt(i,n,e)}),r.exit().each(function(n){GI.autoMargin(e,n._id)}).remove(),r.order()}function Jyt(e){var t=e._fullLayout,r=e.calcdata,n=[],i,a,o,s;function l(M){return Ume(M,{_fillcolor:null,_line:{color:null,width:null,dash:null},_levels:{start:null,end:null,size:null},_filllevels:null,_fillgradient:null,_zrange:null})}function u(){typeof s.calc=="function"?s.calc(e,o,i):(i._fillgradient=a.reversescale?Wyt(a.colorscale):a.colorscale,i._zrange=[a[s.min],a[s.max]])}for(var c=0;c1){var Pe=Math.pow(10,Math.floor(Math.log(me)/Math.LN10));Be*=Pe*U0.roundUp(me/Pe,[2,5,10]),(Math.abs(z.start)/z.size+1e-6)%1<2e-6&&(ke.tick0=0)}ke.dtick=Be}ke.domain=n?[re+v/T.h,re+H-v/T.h]:[re+d/T.w,re+H-d/T.w],ke.setScale(),e.attr("transform",Hg(Math.round(T.l),Math.round(T.t)));var ce=e.select("."+gf.cbtitleunshift).attr("transform",Hg(-Math.round(T.l),-Math.round(T.t))),He=ke.ticklabelposition,lt=ke.title.font.size,mt=e.select("."+gf.cbaxis),Ht,at=0,ct=0;function ar(Ue,Ae){var rt={propContainer:ke,propName:t._propPrefix+"title.text",traceIndex:t._traceIndex,_meta:t._meta,placeholder:M._dfltTitle.colorbar,containerGroup:e.select("."+gf.cbtitle)},St=Ue.charAt(0)==="h"?Ue.slice(1):"h"+Ue;e.selectAll("."+St+",."+St+"-math-group").remove(),Hyt.draw(r,Ue,Ume(rt,Ae||{}))}function Vt(){if(n&&be||!n&&!be){var Ue,Ae;S==="top"&&(Ue=d+T.l+ie*m,Ae=v+T.t+ae*(1-re-H)+3+lt*.75),S==="bottom"&&(Ue=d+T.l+ie*m,Ae=v+T.t+ae*(1-re)-3-lt*.25),S==="right"&&(Ae=v+T.t+ae*b+3+lt*.75,Ue=d+T.l+ie*re),ar(ke._id+"title",{attributes:{x:Ue,y:Ae,"text-anchor":n?"start":"middle"}})}}function rr(){if(n&&!be||!n&&be){var Ue=ke.position||0,Ae=ke._offset+ke._length/2,rt,St;if(S==="right")St=Ae,rt=T.l+ie*Ue+10+lt*(ke.showticklabels?1:.5);else if(rt=Ae,S==="bottom"&&(St=T.t+ae*Ue+10+(He.indexOf("inside")===-1?ke.tickfont.size:0)+(ke.ticks!=="inside"&&t.ticklen||0)),S==="top"){var Tt=C.text.split("
").length;St=T.t+ae*Ue+10-Z-Ome*lt*Tt}ar((n?"h":"v")+ke._id+"title",{avoid:{selection:P_.select(r).selectAll("g."+ke._id+"tick"),side:S,offsetTop:n?0:T.t,offsetLeft:n?T.l:0,maxShift:n?M.width:M.height},attributes:{x:rt,y:St,"text-anchor":"middle"},transform:{rotate:n?-90:0,offset:0}})}}function tt(){if(!n&&!be||n&&be){var Ue=e.select("."+gf.cbtitle),Ae=Ue.select("text"),rt=[-l/2,l/2],St=Ue.select(".h"+ke._id+"title-math-group").node(),Tt=15.6;Ae.node()&&(Tt=parseInt(Ae.node().style.fontSize,10)*Ome);var dt;if(St?(dt=Gg.bBox(St),ct=dt.width,at=dt.height,at>Tt&&(rt[1]-=(at-Tt)/2)):Ae.node()&&!Ae.classed(gf.jsPlaceholder)&&(dt=Gg.bBox(Ae.node()),ct=dt.width,at=dt.height),n){if(at){if(at+=5,S==="top")ke.domain[1]-=at/T.h,rt[1]*=-1;else{ke.domain[0]+=at/T.h;var Et=jyt.lineCount(Ae);rt[1]+=(1-Et)*Tt}Ue.attr("transform",Hg(rt[0],rt[1])),ke.setScale()}}else ct&&(S==="right"&&(ke.domain[0]+=(ct+lt/2)/T.w),Ue.attr("transform",Hg(rt[0],rt[1])),ke.setScale())}e.selectAll("."+gf.cbfills+",."+gf.cblines).attr("transform",n?Hg(0,Math.round(T.h*(1-ke.domain[1]))):Hg(Math.round(T.w*ke.domain[0]),0)),mt.attr("transform",n?Hg(0,Math.round(-T.t)):Hg(Math.round(-T.l),0));var pt=e.select("."+gf.cbfills).selectAll("rect."+gf.cbfill).attr("style","").data(V);pt.enter().append("rect").classed(gf.cbfill,!0).attr("style",""),pt.exit().remove();var jt=g.map(ke.c2p).map(Math.round).sort(function(qr,jr){return qr-jr});pt.each(function(qr,jr){var gt=[jr===0?g[0]:(V[jr]+V[jr-1])/2,jr===V.length-1?g[1]:(V[jr]+V[jr+1])/2].map(ke.c2p).map(Math.round);n&&(gt[1]=U0.constrain(gt[1]+(gt[1]>gt[0])?1:-1,jt[0],jt[1]));var Ge=P_.select(this).attr(n?"x":"y",_e).attr(n?"y":"x",P_.min(gt)).attr(n?"width":"height",Math.max(Z,2)).attr(n?"height":"width",Math.max(P_.max(gt)-P_.min(gt),2));if(t._fillgradient)Gg.gradient(Ge,r,t._id,n?"vertical":"horizontalreversed",t._fillgradient,"fill");else{var Je=E(qr).replace("e-","");Ge.attr("fill",SV(Je).toHexString())}});var or=e.select("."+gf.cblines).selectAll("path."+gf.cbline).data(x.color&&x.width?G:[]);or.enter().append("path").classed(gf.cbline,!0),or.exit().remove(),or.each(function(qr){var jr=_e,gt=Math.round(ke.c2p(qr))+x.width/2%1;P_.select(this).attr("d","M"+(n?jr+","+gt:gt+","+jr)+(n?"h":"v")+Z).call(Gg.lineGroupStyle,x.width,P(qr),x.dash)}),mt.selectAll("g."+ke._id+"tick,path").remove();var mr=_e+Z+(l||0)/2-(t.ticks==="outside"?1:0),Ar=Uy.calcTicks(ke),ei=Uy.getTickSigns(ke)[2];return Uy.drawTicks(r,ke,{vals:ke.ticks==="inside"?Uy.clipEnds(ke,Ar):Ar,layer:mt,path:Uy.makeTickPath(ke,mr,ei),transFn:Uy.makeTransTickFn(ke)}),Uy.drawLabels(r,ke,{vals:Ar,layer:mt,transFn:Uy.makeTransTickLabelFn(ke),labelFns:Uy.makeLabelFns(ke,mr)})}function je(){var Ue,Ae=Z+l/2;He.indexOf("inside")===-1&&(Ue=Gg.bBox(mt.node()),Ae+=n?Ue.width:Ue.height),Ht=ce.select("text");var rt=0,St=n&&S==="top",Tt=!n&&S==="right",dt=0;if(Ht.node()&&!Ht.classed(gf.jsPlaceholder)){var Et,pt=ce.select(".h"+ke._id+"title-math-group").node();pt&&(n&&be||!n&&!be)?(Ue=Gg.bBox(pt),rt=Ue.width,Et=Ue.height):(Ue=Gg.bBox(ce.node()),rt=Ue.right-T.l-(n?_e:Se),Et=Ue.bottom-T.t-(n?Se:_e),!n&&S==="top"&&(Ae+=Ue.height,dt=Ue.height)),Tt&&(Ht.attr("transform",Hg(rt/2+lt/2,0)),rt*=2),Ae=Math.max(Ae,n?rt:Et)}var jt=(n?d:v)*2+Ae+u+l/2,or=0;!n&&C.text&&h==="bottom"&&b<=0&&(or=jt/2,jt+=or,dt+=or),M._hColorbarMoveTitle=or,M._hColorbarMoveCBTitle=dt;var mr=u+l,Ar=(n?_e:Se)-mr/2-(n?d:0),ei=(n?Se:_e)-(n?N:v+dt-or);e.select("."+gf.cbbg).attr("x",Ar).attr("y",ei).attr(n?"width":"height",Math.max(jt-or,2)).attr(n?"height":"width",Math.max(N+mr,2)).call(EV.fill,c).call(EV.stroke,t.bordercolor).style("stroke-width",u);var qr=Tt?Math.max(rt-10,0):0;e.selectAll("."+gf.cboutline).attr("x",(n?_e:Se+d)+qr).attr("y",(n?Se+v-N:_e)+(St?at:0)).attr(n?"width":"height",Math.max(Z,2)).attr(n?"height":"width",Math.max(N-(n?2*v+at:2*d+qr),2)).call(EV.stroke,t.outlinecolor).style({fill:"none","stroke-width":l});var jr=n?Ee*jt:0,gt=n?0:(1-Ce)*jt-dt;if(jr=k?T.l-jr:-jr,gt=p?T.t-gt:-gt,e.attr("transform",Hg(jr,gt)),!n&&(u||SV(c).getAlpha()&&!SV.equals(M.paper_bgcolor,c))){var Ge=mt.selectAll("text"),Je=Ge[0].length,We=e.select("."+gf.cbbg).node(),et=Gg.bBox(We),xt=Gg.getTranslate(e),At=2;Ge.each(function(mi,un){var Fn=0,An=Je-1;if(un===Fn||un===An){var Hn=Gg.bBox(this),Qn=Gg.getTranslate(this),Vi;if(un===An){var Kn=Hn.right+Qn.x,Jn=et.right+xt.x+Se-u-At+m;Vi=Jn-Kn,Vi>0&&(Vi=0)}else if(un===Fn){var Gt=Hn.left+Qn.x,wt=et.left+xt.x+Se+u+At;Vi=wt-Gt,Vi<0&&(Vi=0)}Vi&&(Je<3?this.setAttribute("transform","translate("+Vi+",0) "+this.getAttribute("transform")):this.setAttribute("visibility","hidden"))}})}var Kt={},Qt=Bme[f],Mr=Nme[f],Gr=Bme[h],Ir=Nme[h],Yr=jt-Z;n?(a==="pixels"?(Kt.y=b,Kt.t=N*Gr,Kt.b=N*Ir):(Kt.t=Kt.b=0,Kt.yt=b+i*Gr,Kt.yb=b-i*Ir),s==="pixels"?(Kt.x=m,Kt.l=jt*Qt,Kt.r=jt*Mr):(Kt.l=Yr*Qt,Kt.r=Yr*Mr,Kt.xl=m-o*Qt,Kt.xr=m+o*Mr)):(a==="pixels"?(Kt.x=m,Kt.l=N*Qt,Kt.r=N*Mr):(Kt.l=Kt.r=0,Kt.xl=m+i*Qt,Kt.xr=m-i*Mr),s==="pixels"?(Kt.y=1-b,Kt.t=jt*Gr,Kt.b=jt*Ir):(Kt.t=Yr*Gr,Kt.b=Yr*Ir,Kt.yt=b-o*Gr,Kt.yb=b+o*Ir));var _i=t.y<.5?"b":"t",Pi=t.x<.5?"l":"r";r._fullLayout._reservedMargin[t._id]={};var ai={r:M.width-Ar-jr,l:Ar+Kt.r,b:M.height-ei-gt,t:ei+Kt.b};k&&p?GI.autoMargin(r,t._id,Kt):k?r._fullLayout._reservedMargin[t._id][_i]=ai[_i]:p||n?r._fullLayout._reservedMargin[t._id][Pi]=ai[Pi]:r._fullLayout._reservedMargin[t._id][_i]=ai[_i]}return U0.syncOrAsync([GI.previousPromises,Vt,tt,rr,GI.previousPromises,je],r)}function Qyt(e,t,r){var n=t.orientation==="v",i=r._fullLayout,a=i._size,o,s,l;VI.init({element:e.node(),gd:r,prepFn:function(){o=e.attr("transform"),MV(e)},moveFn:function(u,c){e.attr("transform",o+Hg(u,c)),s=VI.align((n?t._uFrac:t._vFrac)+u/a.w,n?t._thickFrac:t._lenFrac,0,1,t.xanchor),l=VI.align((n?t._vFrac:1-t._uFrac)-c/a.h,n?t._lenFrac:t._thickFrac,0,1,t.yanchor);var f=VI.getCursor(s,l,t.xanchor,t.yanchor);MV(e,f)},doneFn:function(){if(MV(e),s!==void 0&&l!==void 0){var u={};u[t._propPrefix+"x"]=s,u[t._propPrefix+"y"]=l,t._traceIndex!==void 0?qme.call("_guiRestyle",r,u,t._traceIndex):qme.call("_guiRelayout",r,u)}}})}function e1t(e,t,r){var n=t._levels,i=[],a=[],o,s,l=n.end+n.size/100,u=n.size,c=1.001*r[0]-.001*r[1],f=1.001*r[1]-.001*r[0];for(s=0;s<1e5&&(o=n.start+s*u,!(u>0?o>=l:o<=l));s++)o>c&&o0?o>=l:o<=l));s++)o>r[0]&&o{"use strict";Hme.exports={moduleType:"component",name:"colorbar",attributes:cL(),supplyDefaults:qO(),draw:Gme().draw,hasColorbar:LO()}});var Xme=ye((rur,Wme)=>{"use strict";Wme.exports={moduleType:"component",name:"legend",layoutAttributes:PB(),supplyLayoutDefaults:RB(),draw:XB(),style:GB()}});var Yme=ye((iur,Zme)=>{"use strict";Zme.exports={moduleType:"locale",name:"en",dictionary:{"Click to enter Colorscale title":"Click to enter Colourscale title"},format:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],periods:["AM","PM"],dateTime:"%a %b %e %X %Y",date:"%d/%m/%Y",time:"%H:%M:%S",decimal:".",thousands:",",grouping:[3],currency:["$",""],year:"%Y",month:"%b %Y",dayMonth:"%b %-d",dayMonthYear:"%b %-d, %Y"}}});var Jme=ye((nur,Kme)=>{"use strict";Kme.exports={moduleType:"locale",name:"en-US",dictionary:{"Click to enter Colorscale title":"Click to enter Colorscale title"},format:{date:"%m/%d/%Y"}}});var LV=ye((aur,tye)=>{"use strict";var r1t=Oa(),eye=Pr(),CV=eye.extendFlat,$me=eye.extendDeep;function Qme(e){var t;switch(e){case"themes__thumb":t={autosize:!0,width:150,height:150,title:{text:""},showlegend:!1,margin:{l:5,r:5,t:5,b:5,pad:0},annotations:[]};break;case"thumbnail":t={title:{text:""},hidesources:!0,showlegend:!1,borderwidth:0,bordercolor:"",margin:{l:1,r:1,t:1,b:1,pad:0},annotations:[]};break;default:t={}}return t}function i1t(e){var t=["xaxis","yaxis","zaxis"];return t.indexOf(e.slice(0,5))>-1}tye.exports=function(t,r){var n,i=t.data,a=t.layout,o=$me([],i),s=$me({},a,Qme(r.tileClass)),l=t._context||{};if(r.width&&(s.width=r.width),r.height&&(s.height=r.height),r.tileClass==="thumbnail"||r.tileClass==="themes__thumb"){s.annotations=[];var u=Object.keys(s);for(n=0;n{"use strict";var n1t=Sb().EventEmitter,a1t=Oa(),o1t=Pr(),rye=qy(),s1t=LV(),l1t=KP(),u1t=JP();function c1t(e,t){var r=new n1t,n=s1t(e,{format:"png"}),i=n.gd;i.style.position="absolute",i.style.left="-5000px",document.body.appendChild(i);function a(){var s=rye.getDelay(i._fullLayout);setTimeout(function(){var l=l1t(i),u=document.createElement("canvas");u.id=o1t.randstr(),r=u1t({format:t.format,width:i._fullLayout.width,height:i._fullLayout.height,canvas:u,emitter:r,svg:l}),r.clean=function(){i&&document.body.removeChild(i)}},s)}var o=rye.getRedrawFunc(i);return a1t.call("_doPlot",i,n.data,n.layout,n.config).then(o).then(a).catch(function(s){r.emit("error",s)}),r}iye.exports=c1t});var sye=ye((sur,oye)=>{"use strict";var aye=qy(),f1t={getDelay:aye.getDelay,getRedrawFunc:aye.getRedrawFunc,clone:LV(),toSVG:KP(),svgToImg:JP(),toImage:nye(),downloadImage:uU()};oye.exports=f1t});var uye=ye(Vy=>{"use strict";Vy.version=m6().version;wee();cne();var h1t=Oa(),A4=Vy.register=h1t.register,IV=Cde(),lye=Object.keys(IV);for(HI=0;HI{"use strict";cye.exports=uye()});var qm=ye((cur,gye)=>{"use strict";var Bf=pf(),hye=vf().axisHoverFormat,{hovertemplateAttrs:d1t,texttemplateAttrs:v1t,templatefallbackAttrs:dye}=Ll(),pye=Tu(),p1t=ec(),vye=A_(),g1t=Pd().pattern,h2=Ao().extendFlat,RV=p1t({editType:"calc",arrayOk:!0,colorEditType:"style"}),m1t=Bf.marker,y1t=m1t.line,_1t=h2({},y1t.width,{dflt:0}),x1t=h2({width:_1t,editType:"calc"},pye("marker.line")),b1t=h2({line:x1t,editType:"calc"},pye("marker"),{opacity:{valType:"number",arrayOk:!0,dflt:1,min:0,max:1,editType:"style"},pattern:g1t,cornerradius:{valType:"any",editType:"calc"}});gye.exports={x:Bf.x,x0:Bf.x0,dx:Bf.dx,y:Bf.y,y0:Bf.y0,dy:Bf.dy,xperiod:Bf.xperiod,yperiod:Bf.yperiod,xperiod0:Bf.xperiod0,yperiod0:Bf.yperiod0,xperiodalignment:Bf.xperiodalignment,yperiodalignment:Bf.yperiodalignment,xhoverformat:hye("x"),yhoverformat:hye("y"),text:Bf.text,texttemplate:v1t({editType:"plot"},{keys:vye.eventDataKeys}),texttemplatefallback:dye({editType:"plot"}),hovertext:Bf.hovertext,hovertemplate:d1t({},{keys:vye.eventDataKeys}),hovertemplatefallback:dye(),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"calc"},insidetextanchor:{valType:"enumerated",values:["end","middle","start"],dflt:"end",editType:"plot"},textangle:{valType:"angle",dflt:"auto",editType:"plot"},textfont:h2({},RV,{}),insidetextfont:h2({},RV,{}),outsidetextfont:h2({},RV,{}),constraintext:{valType:"enumerated",values:["inside","outside","both","none"],dflt:"both",editType:"calc"},cliponaxis:h2({},Bf.cliponaxis,{}),orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},base:{valType:"any",dflt:null,arrayOk:!0,editType:"calc"},offset:{valType:"number",dflt:null,arrayOk:!0,editType:"calc"},width:{valType:"number",dflt:null,min:0,arrayOk:!0,editType:"calc"},marker:b1t,offsetgroup:Bf.offsetgroup,alignmentgroup:Bf.alignmentgroup,selected:{marker:{opacity:Bf.selected.marker.opacity,color:Bf.selected.marker.color,editType:"style"},textfont:Bf.selected.textfont,editType:"style"},unselected:{marker:{opacity:Bf.unselected.marker.opacity,color:Bf.unselected.marker.color,editType:"style"},textfont:Bf.unselected.textfont,editType:"style"},zorder:Bf.zorder}});var WI=ye((fur,mye)=>{"use strict";mye.exports={barmode:{valType:"enumerated",values:["stack","group","overlay","relative"],dflt:"group",editType:"calc"},barnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},bargap:{valType:"number",min:0,max:1,editType:"calc"},bargroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},barcornerradius:{valType:"any",editType:"calc"}}});var XI=ye((hur,xye)=>{"use strict";var w1t=ka(),yye=pv().hasColorscale,_ye=td(),T1t=Pr().coercePattern;xye.exports=function(t,r,n,i,a){var o=n("marker.color",i),s=yye(t,"marker");s&&_ye(t,r,a,n,{prefix:"marker.",cLetter:"c"}),n("marker.line.color",w1t.defaultLine),yye(t,"marker.line")&&_ye(t,r,a,n,{prefix:"marker.line.",cLetter:"c"}),n("marker.line.width"),n("marker.opacity"),T1t(n,"marker.pattern",o,s),n("selected.marker.color"),n("unselected.marker.color")}});var i0=ye((dur,Mye)=>{"use strict";var bye=Eo(),LT=Pr(),wye=ka(),A1t=Oa(),S1t=lT(),M1t=Dg(),E1t=XI(),k1t=r2(),Tye=qm(),ZI=LT.coerceFont;function C1t(e,t,r,n){function i(u,c){return LT.coerce(e,t,Tye,u,c)}var a=S1t(e,t,n,i);if(!a){t.visible=!1;return}M1t(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("zorder"),i("orientation",t.x&&!t.y?"h":"v"),i("base"),i("offset"),i("width"),i("text"),i("hovertext"),i("hovertemplate"),i("hovertemplatefallback");var o=i("textposition");Sye(e,t,n,i,o,{moduleHasSelected:!0,moduleHasUnselected:!0,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),E1t(e,t,i,r,n);var s=(t.marker.line||{}).color,l=A1t.getComponentMethod("errorbars","supplyDefaults");l(e,t,s||wye.defaultLine,{axis:"y"}),l(e,t,s||wye.defaultLine,{axis:"x",inherit:"y"}),LT.coerceSelectionMarkerOpacity(t,i)}function L1t(e,t){var r,n;function i(s,l){return LT.coerce(n._input,n,Tye,s,l)}for(var a=0;a=0)return e}else if(typeof e=="string"&&(e=e.trim(),e.slice(-1)==="%"&&bye(e.slice(0,-1))&&(e=+e.slice(0,-1),e>=0)))return e+"%"}function Sye(e,t,r,n,i,a){a=a||{};var o=a.moduleHasSelected!==!1,s=a.moduleHasUnselected!==!1,l=a.moduleHasConstrain!==!1,u=a.moduleHasCliponaxis!==!1,c=a.moduleHasTextangle!==!1,f=a.moduleHasInsideanchor!==!1,h=!!a.hasPathbar,d=Array.isArray(i)||i==="auto",v=d||i==="inside",m=d||i==="outside";if(v||m){var b=ZI(n,"textfont",r.font),p=LT.extendFlat({},b),k=e.textfont&&e.textfont.color,M=!k;if(M&&delete p.color,ZI(n,"insidetextfont",p),h){var T=LT.extendFlat({},b);M&&delete T.color,ZI(n,"pathbar.textfont",T)}m&&ZI(n,"outsidetextfont",b),o&&n("selected.textfont.color"),s&&n("unselected.textfont.color"),l&&n("constraintext"),u&&n("cliponaxis"),c&&n("textangle"),n("texttemplate"),n("texttemplatefallback")}v&&f&&n("insidetextanchor")}Mye.exports={supplyDefaults:C1t,crossTraceDefaults:L1t,handleText:Sye,validateCornerradius:Aye}});var DV=ye((vur,Eye)=>{"use strict";var P1t=Oa(),I1t=ho(),R1t=Pr(),D1t=WI(),F1t=i0().validateCornerradius;Eye.exports=function(e,t,r){function n(m,b){return R1t.coerce(e,t,D1t,m,b)}for(var i=!1,a=!1,o=!1,s={},l=n("barmode"),u=l==="group",c=0;c0&&!s[h]&&(o=!0),s[h]=!0),f.visible&&f.type==="histogram"){var d=I1t.getFromId({_fullLayout:t},f[f.orientation==="v"?"xaxis":"yaxis"]);d.type!=="category"&&(a=!0)}}if(!i){delete t.barmode;return}l!=="overlay"&&n("barnorm"),n("bargap",a&&!o?0:.2),n("bargroupgap");var v=n("barcornerradius");t.barcornerradius=F1t(v)}});var S4=ye((pur,kye)=>{"use strict";var PT=Pr();kye.exports=function(t,r){for(var n=0;n{"use strict";var Cye=ho(),Lye=zg(),Pye=pv().hasColorscale,Iye=gv(),z1t=S4(),q1t=q0();Rye.exports=function(t,r){var n=Cye.getFromId(t,r.xaxis||"x"),i=Cye.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c,f={msUTC:!!(r.base||r.base===0)};r.orientation==="h"?(a=n.makeCalcdata(r,"x",f),s=i.makeCalcdata(r,"y"),l=Lye(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y",f),s=n.makeCalcdata(r,"x"),l=Lye(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;for(var h=Math.min(o.length,a.length),d=new Array(h),v=0;v{"use strict";var O1t=qa(),B1t=Pr();function N1t(e,t,r){var n=e._fullLayout,i=n["_"+r+"Text_minsize"];if(i){var a=n.uniformtext.mode==="hide",o;switch(r){case"funnelarea":case"pie":case"sunburst":o="g.slice";break;case"treemap":case"icicle":o="g.slice, g.pathbar";break;default:o="g.points > g.point"}t.selectAll(o).each(function(s){var l=s.transform;if(l){l.scale=a&&l.hide?0:i/l.fontSize;var u=O1t.select(this).select("text");B1t.setTransormAndDisplay(u,l)}})}}function U1t(e,t,r){if(r.uniformtext.mode){var n=Fye(e),i=r.uniformtext.minsize,a=t.scale*t.fontSize;t.hide=a{"use strict";var G1t=Eo(),H1t=fd(),qye=Pr().isArrayOrTypedArray;d2.coerceString=function(e,t,r){if(typeof t=="string"){if(t||!e.noBlank)return t}else if((typeof t=="number"||t===!0)&&!e.strict)return String(t);return r!==void 0?r:e.dflt};d2.coerceNumber=function(e,t,r){if(G1t(t)){t=+t;var n=e.min,i=e.max,a=n!==void 0&&ti;if(!a)return t}return r!==void 0?r:e.dflt};d2.coerceColor=function(e,t,r){return H1t(t).isValid()?t:r!==void 0?r:e.dflt};d2.coerceEnumerated=function(e,t,r){return e.coerceNumber&&(t=+t),e.values.indexOf(t)!==-1?t:r!==void 0?r:e.dflt};d2.getValue=function(e,t){var r;return qye(e)?t{"use strict";var M4=qa(),j1t=ka(),E4=So(),Oye=Pr(),Bye=Oa(),Nye=bv().resizeText,FV=qm(),W1t=FV.textfont,X1t=FV.insidetextfont,Z1t=FV.outsidetextfont,ev=YI();function Y1t(e){var t=M4.select(e).selectAll('g[class^="barlayer"]').selectAll("g.trace");Nye(e,t,"bar");var r=t.size(),n=e._fullLayout;t.style("opacity",function(i){return i[0].trace.opacity}).each(function(i){(n.barmode==="stack"&&r>1||n.bargap===0&&n.bargroupgap===0&&!i[0].trace.marker.line.width)&&M4.select(this).attr("shape-rendering","crispEdges")}),t.selectAll("g.points").each(function(i){var a=M4.select(this),o=i[0].trace;Uye(a,o,e)}),Bye.getComponentMethod("errorbars","style")(t)}function Uye(e,t,r){E4.pointStyle(e.selectAll("path"),t,r),Vye(e,t,r)}function Vye(e,t,r){e.selectAll("text").each(function(n){var i=M4.select(this),a=Oye.ensureUniformFontSize(r,Gye(i,n,t,r));E4.font(i,a)})}function K1t(e,t,r){var n=t[0].trace;n.selectedpoints?J1t(r,n,e):(Uye(r,n,e),Bye.getComponentMethod("errorbars","style")(r))}function J1t(e,t,r){E4.selectedPointStyle(e.selectAll("path"),t),$1t(e.selectAll("text"),t,r)}function $1t(e,t,r){e.each(function(n){var i=M4.select(this),a;if(n.selected){a=Oye.ensureUniformFontSize(r,Gye(i,n,t,r));var o=t.selected.textfont&&t.selected.textfont.color;o&&(a.color=o),E4.font(i,a)}else E4.selectedTextStyle(i,t)})}function Gye(e,t,r,n){var i=n._fullLayout.font,a=r.textfont;if(e.classed("bartext-inside")){var o=Xye(t,r);a=jye(r,t.i,i,o)}else e.classed("bartext-outside")&&(a=Wye(r,t.i,i));return a}function Hye(e,t,r){return zV(W1t,e.textfont,t,r)}function jye(e,t,r,n){var i=Hye(e,t,r),a=e._input.textfont===void 0||e._input.textfont.color===void 0||Array.isArray(e.textfont.color)&&e.textfont.color[t]===void 0;return a&&(i={color:j1t.contrast(n),family:i.family,size:i.size,weight:i.weight,style:i.style,variant:i.variant,textcase:i.textcase,lineposition:i.lineposition,shadow:i.shadow}),zV(X1t,e.insidetextfont,t,i)}function Wye(e,t,r){var n=Hye(e,t,r);return zV(Z1t,e.outsidetextfont,t,n)}function zV(e,t,r,n){t=t||{};var i=ev.getValue(t.family,r),a=ev.getValue(t.size,r),o=ev.getValue(t.color,r),s=ev.getValue(t.weight,r),l=ev.getValue(t.style,r),u=ev.getValue(t.variant,r),c=ev.getValue(t.textcase,r),f=ev.getValue(t.lineposition,r),h=ev.getValue(t.shadow,r);return{family:ev.coerceString(e.family,i,n.family),size:ev.coerceNumber(e.size,a,n.size),color:ev.coerceColor(e.color,o,n.color),weight:ev.coerceString(e.weight,s,n.weight),style:ev.coerceString(e.style,l,n.style),variant:ev.coerceString(e.variant,u,n.variant),textcase:ev.coerceString(e.variant,c,n.textcase),lineposition:ev.coerceString(e.variant,f,n.lineposition),shadow:ev.coerceString(e.variant,h,n.shadow)}}function Xye(e,t){return t.type==="waterfall"?t[e.dir].marker.color:e.mcc||e.mc||t.marker.color}Zye.exports={style:Y1t,styleTextPoints:Vye,styleOnSelect:K1t,getInsideTextFont:jye,getOutsideTextFont:Wye,getBarColor:Xye,resizeText:Nye}});var p2=ye((xur,r1e)=>{"use strict";var KI=qa(),JI=Eo(),Fd=Pr(),Q1t=Zl(),e_t=ka(),I_=So(),t_t=Oa(),$I=ho().tickText,Yye=bv(),r_t=Yye.recordMinTextSize,i_t=Yye.clearMinTextSize,qV=V0(),IT=YI(),n_t=A_(),Kye=qm(),a_t=Kye.text,o_t=Kye.textposition,s_t=ip().appendArrayPointValue,Gv=n_t.TEXTPAD;function l_t(e){return e.id}function u_t(e){if(e.ids)return l_t}function OV(e){return(e>0)-(e<0)}function Om(e,t){return e0}function f_t(e,t,r,n,i,a){var o=t.xaxis,s=t.yaxis,l=e._fullLayout,u=e._context.staticPlot;i||(i={mode:l.barmode,norm:l.barmode,gap:l.bargap,groupgap:l.bargroupgap},i_t("bar",l));var c=Fd.makeTraceGroups(n,r,"trace bars").each(function(f){var h=KI.select(this),d=f[0].trace,v=f[0].t,m=d.type==="waterfall",b=d.type==="funnel",p=d.type==="histogram",k=d.type==="bar",M=k||b,T=0;m&&d.connector.visible&&d.connector.mode==="between"&&(T=d.connector.line.width/2);var L=d.orientation==="h",x=$ye(i),C=Fd.ensureSingle(h,"g","points"),S=u_t(d),g=C.selectAll("g.point").data(Fd.identity,S);g.enter().append("g").classed("point",!0),g.exit().remove(),g.each(function(E,z){var q=KI.select(this),V=c_t(E,o,s,L),G=V[0][0],Z=V[0][1],j=V[1][0],N=V[1][1],H=(L?Z-G:N-j)===0;H&&M&&IT.getLineWidth(d,E)&&(H=!1),H||(H=!JI(G)||!JI(Z)||!JI(j)||!JI(N)),E.isBlank=H,H&&(L?Z=G:N=j),T&&!H&&(L?(G-=Om(G,Z)*T,Z+=Om(G,Z)*T):(j-=Om(j,N)*T,N+=Om(j,N)*T));var ie,ae;if(d.type==="waterfall"){if(!H){var _e=d[E.dir].marker;ie=_e.line.width,ae=_e.color}}else ie=IT.getLineWidth(d,E),ae=E.mc||d.marker.color;function Ee(Ae){var rt=KI.round(ie/2%1,2);return i.gap===0&&i.groupgap===0?KI.round(Math.round(Ae)-rt,2):Ae}function Ce(Ae,rt,St){return St&&Ae===rt?Ae:Math.abs(Ae-rt)>=2?Ee(Ae):Ae>rt?Math.ceil(Ae):Math.floor(Ae)}var ge=e_t.opacity(ae),re=ge<1||ie>.01?Ee:Ce;e._context.staticPlot||(G=re(G,Z,L),Z=re(Z,G,L),j=re(j,N,!L),N=re(N,j,!L));var Se=L?o.c2p:s.c2p,ke;E.s0>0?ke=E._sMax:E.s0<0?ke=E._sMin:ke=E.s1>0?E._sMax:E._sMin;function be(Ae,rt){if(!Ae)return 0;var St=Math.abs(L?N-j:Z-G),Tt=Math.abs(L?Z-G:N-j),dt=re(Math.abs(Se(ke,!0)-Se(0,!0))),Et=E.hasB?Math.min(St/2,Tt/2):Math.min(St/2,dt),pt;if(rt==="%"){var jt=Math.min(50,Ae);pt=St*(jt/100)}else pt=Ae;return re(Math.max(Math.min(pt,Et),0))}var Be=k||p?be(v.cornerradiusvalue,v.cornerradiusform):0,Le,me,Pe="M"+G+","+j+"V"+N+"H"+Z+"V"+j+"Z",ce=0;if(Be&&E.s){var He=OV(E.s0)===0||OV(E.s)===OV(E.s0)?E.s1:E.s0;if(ce=re(E.hasB?0:Math.abs(Se(ke,!0)-Se(He,!0))),ce0?Math.sqrt(ce*(2*Be-ce)):0,ar=lt>0?Math.max:Math.min;Le="M"+G+","+j+"V"+(N-at*mt)+"H"+ar(Z-(Be-ce)*lt,G)+"A "+Be+","+Be+" 0 0 "+Ht+" "+Z+","+(N-Be*mt-ct)+"V"+(j+Be*mt+ct)+"A "+Be+","+Be+" 0 0 "+Ht+" "+ar(Z-(Be-ce)*lt,G)+","+(j+at*mt)+"Z"}else if(E.hasB)Le="M"+(G+Be*lt)+","+j+"A "+Be+","+Be+" 0 0 "+Ht+" "+G+","+(j+Be*mt)+"V"+(N-Be*mt)+"A "+Be+","+Be+" 0 0 "+Ht+" "+(G+Be*lt)+","+N+"H"+(Z-Be*lt)+"A "+Be+","+Be+" 0 0 "+Ht+" "+Z+","+(N-Be*mt)+"V"+(j+Be*mt)+"A "+Be+","+Be+" 0 0 "+Ht+" "+(Z-Be*lt)+","+j+"Z";else{me=Math.abs(N-j)+ce;var Vt=me0?Math.sqrt(ce*(2*Be-ce)):0,tt=mt>0?Math.max:Math.min;Le="M"+(G+Vt*lt)+","+j+"V"+tt(N-(Be-ce)*mt,j)+"A "+Be+","+Be+" 0 0 "+Ht+" "+(G+Be*lt-rr)+","+N+"H"+(Z-Be*lt+rr)+"A "+Be+","+Be+" 0 0 "+Ht+" "+(Z-Vt*lt)+","+tt(N-(Be-ce)*mt,j)+"V"+j+"Z"}}else Le=Pe}else Le=Pe;var je=Jye(Fd.ensureSingle(q,"path"),l,i,a);if(je.style("vector-effect",u?"none":"non-scaling-stroke").attr("d",isNaN((Z-G)*(N-j))||H&&e._context.staticPlot?"M0,0Z":Le).call(I_.setClipUrl,t.layerClipId,e),!l.uniformtext.mode&&x){var Ue=I_.makePointStyleFns(d);I_.singlePointStyle(E,je,d,Ue,e)}h_t(e,t,q,f,z,G,Z,j,N,Be,ce,i,a),t.layerClipId&&I_.hideOutsideRangePoint(E,q.select("text"),o,s,d.xcalendar,d.ycalendar)});var P=d.cliponaxis===!1;I_.setClipUrl(h,P?null:t.layerClipId,e)});t_t.getComponentMethod("errorbars","plot")(e,c,t,i)}function h_t(e,t,r,n,i,a,o,s,l,u,c,f,h){var d=t.xaxis,v=t.yaxis,m=e._fullLayout,b;function p(me,Pe,ce){var He=Fd.ensureSingle(me,"text").text(Pe).attr({class:"bartext bartext-"+b,"text-anchor":"middle","data-notex":1}).call(I_.font,ce).call(Q1t.convertToTspans,e);return He}var k=n[0].trace,M=k.orientation==="h",T=p_t(m,n,i,d,v);b=g_t(k,i);var L=f.mode==="stack"||f.mode==="relative",x=n[i],C=!L||x._outmost,S=x.hasB,g=u&&u-c>Gv;if(!T||b==="none"||(x.isBlank||a===o||s===l)&&(b==="auto"||b==="inside")){r.select("text").remove();return}var P=m.font,E=qV.getBarColor(n[i],k),z=qV.getInsideTextFont(k,i,P,E),q=qV.getOutsideTextFont(k,i,P),V=k.insidetextanchor||"end",G=r.datum();M?d.type==="log"&&G.s0<=0&&(d.range[0]0&&Ee>0,re;g?S?re=v2(N-2*u,H,_e,Ee,M)||v2(N,H-2*u,_e,Ee,M):M?re=v2(N-(u-c),H,_e,Ee,M)||v2(N,H-2*(u-c),_e,Ee,M):re=v2(N,H-(u-c),_e,Ee,M)||v2(N-2*(u-c),H,_e,Ee,M):re=v2(N,H,_e,Ee,M),ge&&re?b="inside":(b="outside",ie.remove(),ie=null)}else b="inside";if(!ie){Ce=Fd.ensureUniformFontSize(e,b==="outside"?q:z),ie=p(r,T,Ce);var Se=ie.attr("transform");if(ie.attr("transform",""),ae=I_.bBox(ie.node()),_e=ae.width,Ee=ae.height,ie.attr("transform",Se),_e<=0||Ee<=0){ie.remove();return}}var ke=k.textangle,be,Be;b==="outside"?(Be=k.constraintext==="both"||k.constraintext==="outside",be=v_t(a,o,s,l,ae,{isHorizontal:M,constrained:Be,angle:ke})):(Be=k.constraintext==="both"||k.constraintext==="inside",be=t1e(a,o,s,l,ae,{isHorizontal:M,constrained:Be,angle:ke,anchor:V,hasB:S,r:u,overhead:c})),be.fontSize=Ce.size,r_t(k.type==="histogram"?"bar":k.type,be,m),x.transform=be;var Le=Jye(ie,m,f,h);Fd.setTransormAndDisplay(Le,be)}function v2(e,t,r,n,i){if(e<0||t<0)return!1;var a=r<=e&&n<=t,o=r<=t&&n<=e,s=i?e>=r*(t/n):t>=n*(e/r);return a||o||s}function Qye(e){return e==="auto"?0:e}function e1e(e,t){var r=Math.PI/180*t,n=Math.abs(Math.sin(r)),i=Math.abs(Math.cos(r));return{x:e.width*i+e.height*n,y:e.width*n+e.height*i}}function t1e(e,t,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,u=a.anchor,c=u==="end",f=u==="start",h=a.leftToRight||0,d=(h+1)/2,v=1-d,m=a.hasB,b=a.r,p=a.overhead,k=i.width,M=i.height,T=Math.abs(t-e),L=Math.abs(n-r),x=T>2*Gv&&L>2*Gv?Gv:0;T-=2*x,L-=2*x;var C=Qye(l);l==="auto"&&!(k<=T&&M<=L)&&(k>T||M>L)&&(!(k>L||M>T)||kGv){var E=d_t(e,t,r,n,S,b,p,o,m);g=E.scale,P=E.pad}else g=1,s&&(g=Math.min(1,T/S.x,L/S.y)),P=0;var z=i.left*v+i.right*d,q=(i.top+i.bottom)/2,V=(e+Gv)*v+(t-Gv)*d,G=(r+n)/2,Z=0,j=0;if(f||c){var N=(o?S.x:S.y)/2;b&&(c||m)&&(x+=P);var H=o?Om(e,t):Om(r,n);o?f?(V=e+H*x,Z=-H*N):(V=t-H*x,Z=H*N):f?(G=r+H*x,j=-H*N):(G=n-H*x,j=H*N)}return{textX:z,textY:q,targetX:V,targetY:G,anchorX:Z,anchorY:j,scale:g,rotate:C}}function d_t(e,t,r,n,i,a,o,s,l){var u=Math.max(0,Math.abs(t-e)-2*Gv),c=Math.max(0,Math.abs(n-r)-2*Gv),f=a-Gv,h=o?f-Math.sqrt(f*f-(f-o)*(f-o)):f,d=l?f*2:s?f-o:2*h,v=l?f*2:s?2*h:f-o,m,b,p,k,M;return i.y/i.x>=c/(u-d)?k=c/i.y:i.y/i.x<=(c-v)/u?k=u/i.x:!l&&s?(m=i.x*i.x+i.y*i.y/4,b=-2*i.x*(u-f)-i.y*(c/2-f),p=(u-f)*(u-f)+(c/2-f)*(c/2-f)-f*f,k=(-b+Math.sqrt(b*b-4*m*p))/(2*m)):l?(m=(i.x*i.x+i.y*i.y)/4,b=-i.x*(u/2-f)-i.y*(c/2-f),p=(u/2-f)*(u/2-f)+(c/2-f)*(c/2-f)-f*f,k=(-b+Math.sqrt(b*b-4*m*p))/(2*m)):(m=i.x*i.x/4+i.y*i.y,b=-i.x*(u/2-f)-2*i.y*(c-f),p=(u/2-f)*(u/2-f)+(c-f)*(c-f)-f*f,k=(-b+Math.sqrt(b*b-4*m*p))/(2*m)),k=Math.min(1,k),s?M=Math.max(0,f-Math.sqrt(Math.max(0,f*f-(f-(c-i.y*k)/2)*(f-(c-i.y*k)/2)))-o):M=Math.max(0,f-Math.sqrt(Math.max(0,f*f-(f-(u-i.x*k)/2)*(f-(u-i.x*k)/2)))-o),{scale:k,pad:M}}function v_t(e,t,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,u=i.width,c=i.height,f=Math.abs(t-e),h=Math.abs(n-r),d;o?d=h>2*Gv?Gv:0:d=f>2*Gv?Gv:0;var v=1;s&&(v=o?Math.min(1,h/c):Math.min(1,f/u));var m=Qye(l),b=e1e(i,m),p=(o?b.x:b.y)/2,k=(i.left+i.right)/2,M=(i.top+i.bottom)/2,T=(e+t)/2,L=(r+n)/2,x=0,C=0,S=o?Om(t,e):Om(r,n);return o?(T=t-S*d,x=S*p):(L=n+S*d,C=-S*p),{textX:k,textY:M,targetX:T,targetY:L,anchorX:x,anchorY:C,scale:v,rotate:m}}function p_t(e,t,r,n,i){var a=t[0].trace,o=a.texttemplate,s;return o?s=m_t(e,t,r,n,i):a.textinfo?s=y_t(t,r,n,i):s=IT.getValue(a.text,r),IT.coerceString(a_t,s)}function g_t(e,t){var r=IT.getValue(e.textposition,t);return IT.coerceEnumerated(o_t,r)}function m_t(e,t,r,n,i){var a=t[0].trace,o=Fd.castOption(a,r,"texttemplate");if(!o)return"";var s=a.type==="histogram",l=a.type==="waterfall",u=a.type==="funnel",c=a.orientation==="h",f,h,d,v;c?(f="y",h=i,d="x",v=n):(f="x",h=n,d="y",v=i);function m(x){return $I(h,h.c2l(x),!0).text}function b(x){return $I(v,v.c2l(x),!0).text}var p=t[r],k={};k.label=p.p,k.labelLabel=k[f+"Label"]=m(p.p);var M=Fd.castOption(a,p.i,"text");(M===0||M)&&(k.text=M),k.value=p.s,k.valueLabel=k[d+"Label"]=b(p.s);var T={};s_t(T,a,p.i),(s||T.x===void 0)&&(T.x=c?k.value:k.label),(s||T.y===void 0)&&(T.y=c?k.label:k.value),(s||T.xLabel===void 0)&&(T.xLabel=c?k.valueLabel:k.labelLabel),(s||T.yLabel===void 0)&&(T.yLabel=c?k.labelLabel:k.valueLabel),l&&(k.delta=+p.rawS||p.s,k.deltaLabel=b(k.delta),k.final=p.v,k.finalLabel=b(k.final),k.initial=k.final-k.delta,k.initialLabel=b(k.initial)),u&&(k.value=p.s,k.valueLabel=b(k.value),k.percentInitial=p.begR,k.percentInitialLabel=Fd.formatPercent(p.begR),k.percentPrevious=p.difR,k.percentPreviousLabel=Fd.formatPercent(p.difR),k.percentTotal=p.sumR,k.percenTotalLabel=Fd.formatPercent(p.sumR));var L=Fd.castOption(a,p.i,"customdata");return L&&(k.customdata=L),Fd.texttemplateString({data:[T,k,a._meta],fallback:a.texttemplatefallback,labels:k,locale:e._d3locale,template:o})}function y_t(e,t,r,n){var i=e[0].trace,a=i.orientation==="h",o=i.type==="waterfall",s=i.type==="funnel";function l(L){var x=a?n:r;return $I(x,L,!0).text}function u(L){var x=a?r:n;return $I(x,+L,!0).text}var c=i.textinfo,f=e[t],h=c.split("+"),d=[],v,m=function(L){return h.indexOf(L)!==-1};if(m("label")&&d.push(l(e[t].p)),m("text")&&(v=Fd.castOption(i,f.i,"text"),(v===0||v)&&d.push(v)),o){var b=+f.rawS||f.s,p=f.v,k=p-b;m("initial")&&d.push(u(k)),m("delta")&&d.push(u(b)),m("final")&&d.push(u(p))}if(s){m("value")&&d.push(u(f.s));var M=0;m("percent initial")&&M++,m("percent previous")&&M++,m("percent total")&&M++;var T=M>1;m("percent initial")&&(v=Fd.formatPercent(f.begR),T&&(v+=" of initial"),d.push(v)),m("percent previous")&&(v=Fd.formatPercent(f.difR),T&&(v+=" of previous"),d.push(v)),m("percent total")&&(v=Fd.formatPercent(f.sumR),T&&(v+=" of total"),d.push(v))}return d.join("
")}r1e.exports={plot:f_t,toMoveInsideBar:t1e}});var RT=ye((bur,o1e)=>{"use strict";var k4=ef(),__t=Oa(),i1e=ka(),x_t=Pr().fillText,b_t=YI().getLineWidth,BV=ho().hoverLabelText,w_t=fs().BADNUM;function T_t(e,t,r,n,i){var a=n1e(e,t,r,n,i);if(a){var o=a.cd,s=o[0].trace,l=o[a.index];return a.color=a1e(s,l),__t.getComponentMethod("errorbars","hoverInfo")(l,s,a),[a]}}function n1e(e,t,r,n,i){var a=e.cd,o=a[0].trace,s=a[0].t,l=n==="closest",u=o.type==="waterfall",c=e.maxHoverDistance,f=e.maxSpikeDistance,h,d,v,m,b,p,k;o.orientation==="h"?(h=r,d=t,v="y",m="x",b=G,p=z):(h=t,d=r,v="x",m="y",p=G,b=z);var M=o[v+"period"],T=l||M;function L(re){return C(re,-1)}function x(re){return C(re,1)}function C(re,Se){var ke=re.w;return re[v]+Se*ke/2}function S(re){return re[v+"End"]-re[v+"Start"]}var g=l?L:M?function(re){return re.p-S(re)/2}:function(re){return Math.min(L(re),re.p-s.bardelta/2)},P=l?x:M?function(re){return re.p+S(re)/2}:function(re){return Math.max(x(re),re.p+s.bardelta/2)};function E(re,Se,ke){return i.finiteRange&&(ke=0),k4.inbox(re-h,Se-h,ke+Math.min(1,Math.abs(Se-re)/k)-1)}function z(re){return E(g(re),P(re),c)}function q(re){return E(L(re),x(re),f)}function V(re){var Se=re[m];if(u){var ke=Math.abs(re.rawS)||0;d>0?Se+=ke:d<0&&(Se-=ke)}return Se}function G(re){var Se=d,ke=re.b,be=V(re);return k4.inbox(ke-Se,be-Se,c+(be-Se)/(be-ke)-1)}function Z(re){var Se=d,ke=re.b,be=V(re);return k4.inbox(ke-Se,be-Se,f+(be-Se)/(be-ke)-1)}var j=e[v+"a"],N=e[m+"a"];k=Math.abs(j.r2c(j.range[1])-j.r2c(j.range[0]));function H(re){return(b(re)+p(re))/2}var ie=k4.getDistanceFunction(n,b,p,H);if(k4.getClosest(a,ie,e),e.index!==!1&&a[e.index].p!==w_t){T||(g=function(re){return Math.min(L(re),re.p-s.bargroupwidth/2)},P=function(re){return Math.max(x(re),re.p+s.bargroupwidth/2)});var ae=e.index,_e=a[ae],Ee=o.base?_e.b+_e.s:_e.s;e[m+"0"]=e[m+"1"]=N.c2p(_e[m],!0),e[m+"LabelVal"]=Ee;var Ce=s.extents[s.extents.round(_e.p)];e[v+"0"]=j.c2p(l?g(_e):Ce[0],!0),e[v+"1"]=j.c2p(l?P(_e):Ce[1],!0);var ge=_e.orig_p!==void 0;return e[v+"LabelVal"]=ge?_e.orig_p:_e.p,e.labelLabel=BV(j,e[v+"LabelVal"],o[v+"hoverformat"]),e.valueLabel=BV(N,e[m+"LabelVal"],o[m+"hoverformat"]),e.baseLabel=BV(N,_e.b,o[m+"hoverformat"]),e.spikeDistance=(Z(_e)+q(_e))/2,e[v+"Spike"]=j.c2p(_e.p,!0),x_t(_e,o,e),e.hovertemplate=o.hovertemplate,e}}function a1e(e,t){var r=t.mcc||e.marker.color,n=t.mlcc||e.marker.line.color,i=b_t(e,t);if(i1e.opacity(r))return r;if(i1e.opacity(n)&&i)return n}o1e.exports={hoverPoints:T_t,hoverOnBars:n1e,getTraceColor:a1e}});var l1e=ye((wur,s1e)=>{"use strict";s1e.exports=function(t,r,n){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),n.orientation==="h"?(t.label=t.y,t.value=t.x):(t.label=t.x,t.value=t.y),t}});var DT=ye((Tur,u1e)=>{"use strict";u1e.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=n[0].trace,s=o.type==="funnel",l=o.orientation==="h",u=[],c;if(r===!1)for(c=0;c{"use strict";c1e.exports={attributes:qm(),layoutAttributes:WI(),supplyDefaults:i0().supplyDefaults,crossTraceDefaults:i0().crossTraceDefaults,supplyLayoutDefaults:DV(),calc:Dye(),crossTraceCalc:i2().crossTraceCalc,colorbar:Qd(),arraysToCalcdata:S4(),plot:p2().plot,style:V0().style,styleOnSelect:V0().styleOnSelect,hoverPoints:RT().hoverPoints,eventData:l1e(),selectPoints:DT(),moduleType:"trace",name:"bar",basePlotModule:mh(),categories:["bar-like","cartesian","svg","bar","oriented","errorBarsOK","showLegend","zoomScale"],animatable:!0,meta:{}}});var d1e=ye((Sur,h1e)=>{"use strict";h1e.exports=f1e()});var C4=ye((Mur,m1e)=>{"use strict";var S_t=Pg(),G0=pf(),v1e=qm(),M_t=Ih(),p1e=vf().axisHoverFormat,{hovertemplateAttrs:E_t,templatefallbackAttrs:k_t}=Ll(),Gy=Ao().extendFlat,FT=G0.marker,g1e=FT.line;m1e.exports={y:{valType:"data_array",editType:"calc+clearAxisTypes"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},x0:{valType:"any",editType:"calc+clearAxisTypes"},y0:{valType:"any",editType:"calc+clearAxisTypes"},dx:{valType:"number",editType:"calc"},dy:{valType:"number",editType:"calc"},xperiod:G0.xperiod,yperiod:G0.yperiod,xperiod0:G0.xperiod0,yperiod0:G0.yperiod0,xperiodalignment:G0.xperiodalignment,yperiodalignment:G0.yperiodalignment,xhoverformat:p1e("x"),yhoverformat:p1e("y"),name:{valType:"string",editType:"calc+clearAxisTypes"},q1:{valType:"data_array",editType:"calc+clearAxisTypes"},median:{valType:"data_array",editType:"calc+clearAxisTypes"},q3:{valType:"data_array",editType:"calc+clearAxisTypes"},lowerfence:{valType:"data_array",editType:"calc"},upperfence:{valType:"data_array",editType:"calc"},notched:{valType:"boolean",editType:"calc"},notchwidth:{valType:"number",min:0,max:.5,dflt:.25,editType:"calc"},notchspan:{valType:"data_array",editType:"calc"},boxpoints:{valType:"enumerated",values:["all","outliers","suspectedoutliers",!1],editType:"calc"},jitter:{valType:"number",min:0,max:1,editType:"calc"},pointpos:{valType:"number",min:-2,max:2,editType:"calc"},sdmultiple:{valType:"number",min:0,editType:"calc",dflt:1},sizemode:{valType:"enumerated",values:["quartiles","sd"],editType:"calc",dflt:"quartiles"},boxmean:{valType:"enumerated",values:[!0,"sd",!1],editType:"calc"},mean:{valType:"data_array",editType:"calc"},sd:{valType:"data_array",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},quartilemethod:{valType:"enumerated",values:["linear","exclusive","inclusive"],dflt:"linear",editType:"calc"},width:{valType:"number",min:0,dflt:0,editType:"calc"},marker:{outliercolor:{valType:"color",dflt:"rgba(0, 0, 0, 0)",editType:"style"},symbol:Gy({},FT.symbol,{arrayOk:!1,editType:"plot"}),opacity:Gy({},FT.opacity,{arrayOk:!1,dflt:1,editType:"style"}),angle:Gy({},FT.angle,{arrayOk:!1,editType:"calc"}),size:Gy({},FT.size,{arrayOk:!1,editType:"calc"}),color:Gy({},FT.color,{arrayOk:!1,editType:"style"}),line:{color:Gy({},g1e.color,{arrayOk:!1,dflt:M_t.defaultLine,editType:"style"}),width:Gy({},g1e.width,{arrayOk:!1,dflt:0,editType:"style"}),outliercolor:{valType:"color",editType:"style"},outlierwidth:{valType:"number",min:0,dflt:1,editType:"style"},editType:"style"},editType:"plot"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:S_t(),whiskerwidth:{valType:"number",min:0,max:1,dflt:.5,editType:"calc"},showwhiskers:{valType:"boolean",editType:"calc"},offsetgroup:v1e.offsetgroup,alignmentgroup:v1e.alignmentgroup,selected:{marker:G0.selected.marker,editType:"style"},unselected:{marker:G0.unselected.marker,editType:"style"},text:Gy({},G0.text,{}),hovertext:Gy({},G0.hovertext,{}),hovertemplate:E_t({}),hovertemplatefallback:k_t(),hoveron:{valType:"flaglist",flags:["boxes","points"],dflt:"boxes+points",editType:"style"},zorder:G0.zorder}});var L4=ye((Eur,y1e)=>{"use strict";y1e.exports={boxmode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},boxgap:{valType:"number",min:0,max:1,dflt:.3,editType:"calc"},boxgroupgap:{valType:"number",min:0,max:1,dflt:.3,editType:"calc"}}});var I4=ye((kur,w1e)=>{"use strict";var H0=Pr(),C_t=Oa(),L_t=ka(),P_t=Dg(),I_t=r2(),_1e=H3(),P4=C4();function R_t(e,t,r,n){function i(v,m){return H0.coerce(e,t,P4,v,m)}if(x1e(e,t,i,n),t.visible!==!1){P_t(e,t,n,i),i("xhoverformat"),i("yhoverformat");var a=t._hasPreCompStats;a&&(i("lowerfence"),i("upperfence")),i("line.color",(e.marker||{}).color||r),i("line.width"),i("fillcolor",L_t.addOpacity(t.line.color,.5));var o=!1;if(a){var s=i("mean"),l=i("sd");s&&s.length&&(o=!0,l&&l.length&&(o="sd"))}i("whiskerwidth");var u=i("sizemode"),c;u==="quartiles"&&(c=i("boxmean",o)),i("showwhiskers",u==="quartiles"),(u==="sd"||c==="sd")&&i("sdmultiple"),i("width"),i("quartilemethod");var f=!1;if(a){var h=i("notchspan");h&&h.length&&(f=!0)}else H0.validate(e.notchwidth,P4.notchwidth)&&(f=!0);var d=i("notched",f);d&&i("notchwidth"),b1e(e,t,i,{prefix:"box"}),i("zorder")}}function x1e(e,t,r,n){function i(P){var E=0;return P&&P.length&&(E+=1,H0.isArrayOrTypedArray(P[0])&&P[0].length&&(E+=1)),E}function a(P){return H0.validate(e[P],P4[P])}var o=r("y"),s=r("x"),l;if(t.type==="box"){var u=r("q1"),c=r("median"),f=r("q3");t._hasPreCompStats=u&&u.length&&c&&c.length&&f&&f.length,l=Math.min(H0.minRowLength(u),H0.minRowLength(c),H0.minRowLength(f))}else t._hasPreCompStats=!1;var h=i(o),d=i(s),v=h&&H0.minRowLength(o),m=d&&H0.minRowLength(s),b=n.calendar,p={autotypenumbers:n.autotypenumbers},k,M;if(t._hasPreCompStats)switch(String(d)+String(h)){case"00":var T=a("x0")||a("dx"),L=a("y0")||a("dy");L&&!T?k="h":k="v",M=l;break;case"10":k="v",M=Math.min(l,m);break;case"20":k="h",M=Math.min(l,s.length);break;case"01":k="h",M=Math.min(l,v);break;case"02":k="v",M=Math.min(l,o.length);break;case"12":k="v",M=Math.min(l,m,o.length);break;case"21":k="h",M=Math.min(l,s.length,v);break;case"11":M=0;break;case"22":var x=!1,C;for(C=0;C0?(k="v",d>0?M=Math.min(m,v):M=Math.min(v)):d>0?(k="h",M=Math.min(m)):M=0;if(!M){t.visible=!1;return}t._length=M;var S=r("orientation",k);t._hasPreCompStats?S==="v"&&d===0?(r("x0",0),r("dx",1)):S==="h"&&h===0&&(r("y0",0),r("dy",1)):S==="v"&&d===0?r("x0"):S==="h"&&h===0&&r("y0");var g=C_t.getComponentMethod("calendars","handleTraceDefaults");g(e,t,["x","y"],n)}function b1e(e,t,r,n){var i=n.prefix,a=H0.coerce2(e,t,P4,"marker.outliercolor"),o=r("marker.line.outliercolor"),s="outliers";t._hasPreCompStats?s="all":(a||o)&&(s="suspectedoutliers");var l=r(i+"points",s);l?(r("jitter",l==="all"?.3:0),r("pointpos",l==="all"?-1.5:0),r("marker.symbol"),r("marker.opacity"),r("marker.size"),r("marker.angle"),r("marker.color",t.line.color),r("marker.line.color"),r("marker.line.width"),l==="suspectedoutliers"&&(r("marker.line.outliercolor",t.marker.color),r("marker.line.outlierwidth")),r("selected.marker.color"),r("unselected.marker.color"),r("selected.marker.size"),r("unselected.marker.size"),r("text"),r("hovertext")):delete t.marker;var u=r("hoveron");(u==="all"||u.indexOf("points")!==-1)&&(r("hovertemplate"),r("hovertemplatefallback")),H0.coerceSelectionMarkerOpacity(t,r)}function D_t(e,t){var r,n;function i(l){return H0.coerce(n._input,n,P4,l)}for(var a=0;a{"use strict";var F_t=Oa(),z_t=Pr(),q_t=L4();function T1e(e,t,r,n,i){for(var a=i+"Layout",o=!1,s=0;s{"use strict";var UV=Eo(),e8=ho(),B_t=zg(),yh=Pr(),n0=fs().BADNUM,Hy=yh._;R1e.exports=function(t,r){var n=t._fullLayout,i=e8.getFromId(t,r.xaxis||"x"),a=e8.getFromId(t,r.yaxis||"y"),o=[],s=r.type==="violin"?"_numViolins":"_numBoxes",l,u,c,f,h,d,v;r.orientation==="h"?(c=i,f="x",h=a,d="y",v=!!r.yperiodalignment):(c=a,f="y",h=i,d="x",v=!!r.xperiodalignment);var m=N_t(r,d,h,n[s]),b=m[0],p=m[1],k=yh.distinctVals(b,h),M=k.vals,T=k.minDiff/2,L,x,C,S,g,P,E=(r.boxpoints||r.points)==="all"?yh.identity:function(Ht){return Ht.vL.uf};if(r._hasPreCompStats){var z=r[f],q=function(Ht){return c.d2c((r[Ht]||[])[l])},V=1/0,G=-1/0;for(l=0;l=L.q1&&L.q3>=L.med){var j=q("lowerfence");L.lf=j!==n0&&j<=L.q1?j:k1e(L,C,S);var N=q("upperfence");L.uf=N!==n0&&N>=L.q3?N:C1e(L,C,S);var H=q("mean");L.mean=H!==n0?H:S?yh.mean(C,S):(L.q1+L.q3)/2;var ie=q("sd");L.sd=H!==n0&&ie>=0?ie:S?yh.stdev(C,S,L.mean):L.q3-L.q1,L.lo=L1e(L),L.uo=P1e(L);var ae=q("notchspan");ae=ae!==n0&&ae>0?ae:I1e(L,S),L.ln=L.med-ae,L.un=L.med+ae;var _e=L.lf,Ee=L.uf;r.boxpoints&&C.length&&(_e=Math.min(_e,C[0]),Ee=Math.max(Ee,C[S-1])),r.notched&&(_e=Math.min(_e,L.ln),Ee=Math.max(Ee,L.un)),L.min=_e,L.max=Ee}else{yh.warn(["Invalid input - make sure that q1 <= median <= q3","q1 = "+L.q1,"median = "+L.med,"q3 = "+L.q3].join(` +`));var Ce;L.med!==n0?Ce=L.med:L.q1!==n0?L.q3!==n0?Ce=(L.q1+L.q3)/2:Ce=L.q1:L.q3!==n0?Ce=L.q3:Ce=0,L.med=Ce,L.q1=L.q3=Ce,L.lf=L.uf=Ce,L.mean=L.sd=Ce,L.ln=L.un=Ce,L.min=L.max=Ce}V=Math.min(V,L.min),G=Math.max(G,L.max),L.pts2=x.filter(E),o.push(L)}}r._extremes[c._id]=e8.findExtremes(c,[V,G],{padded:!0})}else{var ge=c.makeCalcdata(r,f),re=U_t(M,T),Se=M.length,ke=V_t(Se);for(l=0;l=0&&be0){if(L={},L.pos=L[d]=M[l],x=L.pts=ke[l].sort(M1e),C=L[f]=x.map(E1e),S=C.length,L.min=C[0],L.max=C[S-1],L.mean=yh.mean(C,S),L.sd=yh.stdev(C,S,L.mean)*r.sdmultiple,L.med=yh.interp(C,.5),S%2&&(Pe||ce)){var He,lt;Pe?(He=C.slice(0,S/2),lt=C.slice(S/2+1)):ce&&(He=C.slice(0,S/2+1),lt=C.slice(S/2)),L.q1=yh.interp(He,.5),L.q3=yh.interp(lt,.5)}else L.q1=yh.interp(C,.25),L.q3=yh.interp(C,.75);L.lf=k1e(L,C,S),L.uf=C1e(L,C,S),L.lo=L1e(L),L.uo=P1e(L);var mt=I1e(L,S);L.ln=L.med-mt,L.un=L.med+mt,Be=Math.min(Be,L.ln),Le=Math.max(Le,L.un),L.pts2=x.filter(E),o.push(L)}r.notched&&yh.isTypedArray(ge)&&(ge=Array.from(ge)),r._extremes[c._id]=e8.findExtremes(c,r.notched?ge.concat([Be,Le]):ge,{padded:!0})}return G_t(o,r),o.length>0?(o[0].t={num:n[s],dPos:T,posLetter:d,valLetter:f,labels:{med:Hy(t,"median:"),min:Hy(t,"min:"),q1:Hy(t,"q1:"),q3:Hy(t,"q3:"),max:Hy(t,"max:"),mean:r.boxmean==="sd"||r.sizemode==="sd"?Hy(t,"mean \xB1 \u03C3:").replace("\u03C3",r.sdmultiple===1?"\u03C3":r.sdmultiple+"\u03C3"):Hy(t,"mean:"),lf:Hy(t,"lower fence:"),uf:Hy(t,"upper fence:")}},n[s]++,o):[{t:{empty:!0}}]};function N_t(e,t,r,n){var i=t in e,a=t+"0"in e,o="d"+t in e;if(i||a&&o){var s=r.makeCalcdata(e,t),l=B_t(e,r,t,s).vals;return[l,s]}var u;a?u=e[t+"0"]:"name"in e&&(r.type==="category"||UV(e.name)&&["linear","log"].indexOf(r.type)!==-1||yh.isDateTime(e.name)&&r.type==="date")?u=e.name:u=n;for(var c=r.type==="multicategory"?r.r2c_just_indices(u):r.d2c(u,0,e[t+"calendar"]),f=e._length,h=new Array(f),d=0;d{"use strict";var D1e=ho(),H_t=Pr(),j_t=$b().getAxisGroup,F1e=["v","h"];function W_t(e,t){for(var r=e.calcdata,n=t.xaxis,i=t.yaxis,a=0;a1,k=1-a[e+"gap"],M=1-a[e+"groupgap"];for(l=0;l0;if(C==="positive"?(N=S*(x?1:.5),ae=ie,H=ae=P):C==="negative"?(N=ae=P,H=S*(x?1:.5),_e=ie):(N=H=S,ae=_e=ie),ke){var be=T.pointpos,Be=T.jitter,Le=T.marker.size/2,me=0;be+Be>=0&&(me=ie*(be+Be),me>N?(Se=!0,ge=Le,Ee=me):me>ae&&(ge=Le,Ee=N)),me<=N&&(Ee=N);var Pe=0;be-Be<=0&&(Pe=-ie*(be-Be),Pe>H?(Se=!0,re=Le,Ce=Pe):Pe>_e&&(re=Le,Ce=H)),Pe<=H&&(Ce=H)}else Ee=N,Ce=H;var ce=new Array(c.length);for(u=0;u{"use strict";var zT=qa(),g2=Pr(),X_t=So(),O1e=5,Z_t=.01;function Y_t(e,t,r,n){var i=e._context.staticPlot,a=t.xaxis,o=t.yaxis;g2.makeTraceGroups(n,r,"trace boxes").each(function(s){var l=zT.select(this),u=s[0],c=u.t,f=u.trace;if(c.wdPos=c.bdPos*f.whiskerwidth,f.visible!==!0||c.empty){l.remove();return}var h,d;f.orientation==="h"?(h=o,d=a):(h=a,d=o),B1e(l,{pos:h,val:d},f,c,i),N1e(l,{x:a,y:o},f,c),U1e(l,{pos:h,val:d},f,c)})}function B1e(e,t,r,n,i){var a=r.orientation==="h",o=t.val,s=t.pos,l=!!s.rangebreaks,u=n.bPos,c=n.wdPos||0,f=n.bPosPxOffset||0,h=r.whiskerwidth||0,d=r.showwhiskers!==!1,v=r.notched||!1,m=v?1-2*r.notchwidth:1,b,p;Array.isArray(n.bdPos)?(b=n.bdPos[0],p=n.bdPos[1]):(b=n.bdPos,p=n.bdPos);var k=e.selectAll("path.box").data(r.type!=="violin"||r.box.visible?g2.identity:[]);k.enter().append("path").style("vector-effect",i?"none":"non-scaling-stroke").attr("class","box"),k.exit().remove(),k.each(function(M){if(M.empty)return zT.select(this).attr("d","M0,0Z");var T=s.c2l(M.pos+u,!0),L=s.l2p(T-b)+f,x=s.l2p(T+p)+f,C=l?(L+x)/2:s.l2p(T)+f,S=r.whiskerwidth,g=l?L*S+(1-S)*C:s.l2p(T-c)+f,P=l?x*S+(1-S)*C:s.l2p(T+c)+f,E=s.l2p(T-b*m)+f,z=s.l2p(T+p*m)+f,q=r.sizemode==="sd",V=o.c2p(q?M.mean-M.sd:M.q1,!0),G=q?o.c2p(M.mean+M.sd,!0):o.c2p(M.q3,!0),Z=g2.constrain(q?o.c2p(M.mean,!0):o.c2p(M.med,!0),Math.min(V,G)+1,Math.max(V,G)-1),j=M.lf===void 0||r.boxpoints===!1||q,N=o.c2p(j?M.min:M.lf,!0),H=o.c2p(j?M.max:M.uf,!0),ie=o.c2p(M.ln,!0),ae=o.c2p(M.un,!0);a?zT.select(this).attr("d","M"+Z+","+E+"V"+z+"M"+V+","+L+"V"+x+(v?"H"+ie+"L"+Z+","+z+"L"+ae+","+x:"")+"H"+G+"V"+L+(v?"H"+ae+"L"+Z+","+E+"L"+ie+","+L:"")+"Z"+(d?"M"+V+","+C+"H"+N+"M"+G+","+C+"H"+H+(h===0?"":"M"+N+","+g+"V"+P+"M"+H+","+g+"V"+P):"")):zT.select(this).attr("d","M"+E+","+Z+"H"+z+"M"+L+","+V+"H"+x+(v?"V"+ie+"L"+z+","+Z+"L"+x+","+ae:"")+"V"+G+"H"+L+(v?"V"+ae+"L"+E+","+Z+"L"+L+","+ie:"")+"Z"+(d?"M"+C+","+V+"V"+N+"M"+C+","+G+"V"+H+(h===0?"":"M"+g+","+N+"H"+P+"M"+g+","+H+"H"+P):""))})}function N1e(e,t,r,n){var i=t.x,a=t.y,o=n.bdPos,s=n.bPos,l=r.boxpoints||r.points;g2.seedPseudoRandom();var u=function(h){return h.forEach(function(d){d.t=n,d.trace=r}),h},c=e.selectAll("g.points").data(l?u:[]);c.enter().append("g").attr("class","points"),c.exit().remove();var f=c.selectAll("path").data(function(h){var d,v=h.pts2,m=Math.max((h.max-h.min)/10,h.q3-h.q1),b=m*1e-9,p=m*Z_t,k=[],M=0,T;if(r.jitter){if(m===0)for(M=1,k=new Array(v.length),d=0;dh.lo&&(P.so=!0)}return v});f.enter().append("path").classed("point",!0),f.exit().remove(),f.call(X_t.translatePoints,i,a)}function U1e(e,t,r,n){var i=t.val,a=t.pos,o=!!a.rangebreaks,s=n.bPos,l=n.bPosPxOffset||0,u=r.boxmean||(r.meanline||{}).visible,c,f;Array.isArray(n.bdPos)?(c=n.bdPos[0],f=n.bdPos[1]):(c=n.bdPos,f=n.bdPos);var h=e.selectAll("path.mean").data(r.type==="box"&&r.boxmean||r.type==="violin"&&r.box.visible&&r.meanline.visible?g2.identity:[]);h.enter().append("path").attr("class","mean").style({fill:"none","vector-effect":"non-scaling-stroke"}),h.exit().remove(),h.each(function(d){var v=a.c2l(d.pos+s,!0),m=a.l2p(v-c)+l,b=a.l2p(v+f)+l,p=o?(m+b)/2:a.l2p(v)+l,k=i.c2p(d.mean,!0),M=i.c2p(d.mean-d.sd,!0),T=i.c2p(d.mean+d.sd,!0);r.orientation==="h"?zT.select(this).attr("d","M"+k+","+m+"V"+b+(u==="sd"?"m0,0L"+M+","+p+"L"+k+","+m+"L"+T+","+p+"Z":"")):zT.select(this).attr("d","M"+m+","+k+"H"+b+(u==="sd"?"m0,0L"+p+","+M+"L"+m+","+k+"L"+p+","+T+"Z":""))})}V1e.exports={plot:Y_t,plotBoxAndWhiskers:B1e,plotPoints:N1e,plotBoxMean:U1e}});var i8=ye((Rur,G1e)=>{"use strict";var GV=qa(),HV=ka(),jV=So();function K_t(e,t,r){var n=r||GV.select(e).selectAll("g.trace.boxes");n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=GV.select(this),o=i[0].trace,s=o.line.width;function l(f,h,d,v){f.style("stroke-width",h+"px").call(HV.stroke,d).call(HV.fill,v)}var u=a.selectAll("path.box");if(o.type==="candlestick")u.each(function(f){if(!f.empty){var h=GV.select(this),d=o[f.dir];l(h,d.line.width,d.line.color,d.fillcolor),h.style("opacity",o.selectedpoints&&!f.selected?.3:1)}});else{l(u,s,o.line.color,o.fillcolor),a.selectAll("path.mean").style({"stroke-width":s,"stroke-dasharray":2*s+"px,"+s+"px"}).call(HV.stroke,o.line.color);var c=a.selectAll("path.point");jV.pointStyle(c,o,e)}})}function J_t(e,t,r){var n=t[0].trace,i=r.selectAll("path.point");n.selectedpoints?jV.selectedPointStyle(i,n):jV.pointStyle(i,n,e)}G1e.exports={style:K_t,styleOnSelect:J_t}});var XV=ye((Dur,X1e)=>{"use strict";var $_t=ho(),WV=Pr(),R_=ef(),H1e=ka(),Q_t=WV.fillText;function ext(e,t,r,n){var i=e.cd,a=i[0].trace,o=a.hoveron,s=[],l;return o.indexOf("boxes")!==-1&&(s=s.concat(j1e(e,t,r,n))),o.indexOf("points")!==-1&&(l=W1e(e,t,r)),n==="closest"?l?[l]:s:(l&&s.push(l),s)}function j1e(e,t,r,n){var i=e.cd,a=e.xa,o=e.ya,s=i[0].trace,l=i[0].t,u=s.type==="violin",c,f,h,d,v,m,b,p,k,M,T,L=l.bdPos,x,C,S=l.wHover,g=function(Le){return h.c2l(Le.pos)+l.bPos-h.c2l(m)};u&&s.side!=="both"?(s.side==="positive"&&(k=function(Le){var me=g(Le);return R_.inbox(me,me+S,M)},x=L,C=0),s.side==="negative"&&(k=function(Le){var me=g(Le);return R_.inbox(me-S,me,M)},x=0,C=L)):(k=function(Le){var me=g(Le);return R_.inbox(me-S,me+S,M)},x=C=L);var P;u?P=function(Le){return R_.inbox(Le.span[0]-v,Le.span[1]-v,M)}:P=function(Le){return R_.inbox(Le.min-v,Le.max-v,M)},s.orientation==="h"?(v=t,m=r,b=P,p=k,c="y",h=o,f="x",d=a):(v=r,m=t,b=k,p=P,c="x",h=a,f="y",d=o);var E=Math.min(1,L/Math.abs(h.r2c(h.range[1])-h.r2c(h.range[0])));M=e.maxHoverDistance-E,T=e.maxSpikeDistance-E;function z(Le){return(b(Le)+p(Le))/2}var q=R_.getDistanceFunction(n,b,p,z);if(R_.getClosest(i,q,e),e.index===!1)return[];var V=i[e.index],G=s.line.color,Z=(s.marker||{}).color;H1e.opacity(G)&&s.line.width?e.color=G:H1e.opacity(Z)&&s.boxpoints?e.color=Z:e.color=s.fillcolor,e[c+"0"]=h.c2p(V.pos+l.bPos-C,!0),e[c+"1"]=h.c2p(V.pos+l.bPos+x,!0),e[c+"LabelVal"]=V.orig_p!==void 0?V.orig_p:V.pos;var j=c+"Spike";e.spikeDistance=z(V)*T/M,e[j]=h.c2p(V.pos,!0);var N=s.boxmean||s.sizemode==="sd"||(s.meanline||{}).visible,H=s.boxpoints||s.points,ie=H&&N?["max","uf","q3","med","mean","q1","lf","min"]:H&&!N?["max","uf","q3","med","q1","lf","min"]:!H&&N?["max","q3","med","mean","q1","min"]:["max","q3","med","q1","min"],ae=d.range[1]{"use strict";Z1e.exports=function(t,r){return r.hoverOnBox&&(t.hoverOnBox=r.hoverOnBox),"xVal"in r&&(t.x=r.xVal),"yVal"in r&&(t.y=r.yVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var ZV=ye((zur,K1e)=>{"use strict";K1e.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l;if(r===!1)for(s=0;s{"use strict";J1e.exports={attributes:C4(),layoutAttributes:L4(),supplyDefaults:I4().supplyDefaults,crossTraceDefaults:I4().crossTraceDefaults,supplyLayoutDefaults:QI().supplyLayoutDefaults,calc:VV(),crossTraceCalc:t8().crossTraceCalc,plot:r8().plot,style:i8().style,styleOnSelect:i8().styleOnSelect,hoverPoints:XV().hoverPoints,eventData:Y1e(),selectPoints:ZV(),moduleType:"trace",name:"box",basePlotModule:mh(),categories:["cartesian","svg","symbols","oriented","box-violin","showLegend","boxLayout","zoomScale"],meta:{}}});var e_e=ye((Our,Q1e)=>{"use strict";Q1e.exports=$1e()});var qT=ye((Bur,r_e)=>{"use strict";var txt=Tu(),{extendFlat:Pp}=Ao(),rxt=Gl(),{axisHoverFormat:YV}=vf(),ixt=ec(),{hovertemplateAttrs:nxt,templatefallbackAttrs:t_e,texttemplateAttrs:axt}=Ll(),a0=pf();r_e.exports=Pp({z:{valType:"data_array",editType:"calc"},x:Pp({},a0.x,{impliedEdits:{xtype:"array"}}),x0:Pp({},a0.x0,{impliedEdits:{xtype:"scaled"}}),dx:Pp({},a0.dx,{impliedEdits:{xtype:"scaled"}}),y:Pp({},a0.y,{impliedEdits:{ytype:"array"}}),y0:Pp({},a0.y0,{impliedEdits:{ytype:"scaled"}}),dy:Pp({},a0.dy,{impliedEdits:{ytype:"scaled"}}),xperiod:Pp({},a0.xperiod,{impliedEdits:{xtype:"scaled"}}),yperiod:Pp({},a0.yperiod,{impliedEdits:{ytype:"scaled"}}),xperiod0:Pp({},a0.xperiod0,{impliedEdits:{xtype:"scaled"}}),yperiod0:Pp({},a0.yperiod0,{impliedEdits:{ytype:"scaled"}}),xperiodalignment:Pp({},a0.xperiodalignment,{impliedEdits:{xtype:"scaled"}}),yperiodalignment:Pp({},a0.yperiodalignment,{impliedEdits:{ytype:"scaled"}}),text:{valType:"data_array",editType:"calc"},hovertext:{valType:"data_array",editType:"calc"},transpose:{valType:"boolean",dflt:!1,editType:"calc"},xtype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},ytype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},zsmooth:{valType:"enumerated",values:["fast","best",!1],dflt:!1,editType:"calc"},hoverongaps:{valType:"boolean",dflt:!0,editType:"none"},connectgaps:{valType:"boolean",editType:"calc"},xgap:{valType:"number",dflt:0,min:0,editType:"plot"},ygap:{valType:"number",dflt:0,min:0,editType:"plot"},xhoverformat:YV("x"),yhoverformat:YV("y"),zhoverformat:YV("z",1),hovertemplate:nxt(),hovertemplatefallback:t_e(),texttemplate:axt({arrayOk:!1,editType:"plot"},{keys:["x","y","z","text"]}),texttemplatefallback:t_e({editType:"plot"}),textfont:ixt({editType:"plot",autoSize:!0,autoColor:!0,colorEditType:"style"}),showlegend:Pp({},rxt.showlegend,{dflt:!1}),zorder:a0.zorder},txt("",{cLetter:"z",autoColorDflt:!1}))});var a8=ye((Nur,n_e)=>{"use strict";var oxt=Eo(),n8=Pr(),sxt=Oa();n_e.exports=function(t,r,n,i,a,o){var s=n("z");a=a||"x",o=o||"y";var l,u;if(s===void 0||!s.length)return 0;if(n8.isArray1D(s)){l=n(a),u=n(o);var c=n8.minRowLength(l),f=n8.minRowLength(u);if(c===0||f===0)return 0;r._length=Math.min(c,f,s.length)}else{if(l=i_e(a,n),u=i_e(o,n),!lxt(s))return 0;n("transpose"),r._length=null}var h=sxt.getComponentMethod("calendars","handleTraceDefaults");return h(t,r,[a,o],i),!0};function i_e(e,t){var r=t(e),n=r?t(e+"type","array"):"scaled";return n==="scaled"&&(t(e+"0"),t("d"+e)),r}function lxt(e){for(var t=!0,r=!1,n=!1,i,a=0;a0&&(r=!0);for(var o=0;o{"use strict";var a_e=Pr();o_e.exports=function(t,r){t("texttemplate"),t("texttemplatefallback");var n=a_e.extendFlat({},r.font,{color:"auto",size:"auto"});a_e.coerceFont(t,"textfont",n)}});var KV=ye((Vur,s_e)=>{"use strict";s_e.exports=function(t,r,n){var i=n("zsmooth");i===!1&&(n("xgap"),n("ygap")),n("zhoverformat")}});var c_e=ye((Gur,u_e)=>{"use strict";var l_e=Pr(),uxt=a8(),cxt=R4(),fxt=Dg(),hxt=KV(),dxt=td(),vxt=qT();u_e.exports=function(t,r,n,i){function a(s,l){return l_e.coerce(t,r,vxt,s,l)}var o=uxt(t,r,a,i);if(!o){r.visible=!1;return}fxt(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),cxt(a,i),hxt(t,r,a,i),a("hoverongaps"),a("connectgaps",l_e.isArray1D(r.z)&&r.zsmooth!==!1),dxt(t,r,i,a,{prefix:"",cLetter:"z"}),a("zorder")}});var JV=ye((Hur,f_e)=>{"use strict";var OT=Eo();f_e.exports={count:function(e,t,r){return r[e]++,1},sum:function(e,t,r,n){var i=n[t];return OT(i)?(i=Number(i),r[e]+=i,i):0},avg:function(e,t,r,n,i){var a=n[t];return OT(a)&&(a=Number(a),r[e]+=a,i[e]++),0},min:function(e,t,r,n){var i=n[t];if(OT(i))if(i=Number(i),OT(r[e])){if(r[e]>i){var a=i-r[e];return r[e]=i,a}}else return r[e]=i,i;return 0},max:function(e,t,r,n){var i=n[t];if(OT(i))if(i=Number(i),OT(r[e])){if(r[e]{"use strict";h_e.exports={percent:function(e,t){for(var r=e.length,n=100/t,i=0;i{"use strict";d_e.exports=function(t,r){for(var n=t.length,i=0,a=0;a{"use strict";var BT=fs(),m2=BT.ONEAVGYEAR,v_e=BT.ONEAVGMONTH,s8=BT.ONEDAY,p_e=BT.ONEHOUR,g_e=BT.ONEMIN,m_e=BT.ONESEC,y_e=ho().tickIncrement;b_e.exports=function(t,r,n,i,a){var o=-1.1*r,s=-.1*r,l=t-s,u=n[0],c=n[1],f=Math.min(o8(u+s,u+l,i,a),o8(c+s,c+l,i,a)),h=Math.min(o8(u+o,u+s,i,a),o8(c+o,c+s,i,a)),d,v;if(f>h&&hs8){var m=d===m2?1:6,b=d===m2?"M12":"M1";return function(p,k){var M=i.c2d(p,m2,a),T=M.indexOf("-",m);T>0&&(M=M.slice(0,T));var L=i.d2c(M,0,a);if(Lm_e?e>s8?e>m2*1.1?m2:e>v_e*1.1?v_e:s8:e>p_e?p_e:e>g_e?g_e:m_e:Math.pow(10,Math.floor(Math.log(e)/Math.LN10))}function pxt(e,t,r,n,i,a){if(n&&e>s8){var o=x_e(t,i,a),s=x_e(r,i,a),l=e===m2?0:1;return o[l]!==s[l]}return Math.floor(r/e)-Math.floor(t/e)>.1}function x_e(e,t,r){var n=t.c2d(e,m2,r).split("-");return n[0]===""&&(n.unshift(),n[0]="-"+n[0]),n}});var iG=ye((Zur,M_e)=>{"use strict";var tG=Eo(),Hv=Pr(),w_e=Oa(),j0=ho(),{hasColorscale:T_e}=pv(),A_e=gv(),gxt=S4(),S_e=JV(),mxt=$V(),yxt=QV(),_xt=eG();function xxt(e,t){var r=[],n=[],i=t.orientation==="h",a=j0.getFromId(e,i?t.yaxis:t.xaxis),o=i?"y":"x",s={x:"y",y:"x"}[o],l=t[o+"calendar"],u=t.cumulative,c,f=rG(e,t,a,o),h=f[0],d=f[1],v=typeof h.size=="string",m=[],b=v?m:h,p=[],k=[],M=[],T=0,L=t.histnorm,x=t.histfunc,C=L.indexOf("density")!==-1,S,g,P;u.enabled&&C&&(L=L.replace(/ ?density$/,""),C=!1);var E=x==="max"||x==="min",z=E?null:0,q=S_e.count,V=mxt[L],G=!1,Z=function(me){return a.r2c(me,0,l)},j;for(Hv.isArrayOrTypedArray(t[s])&&x!=="count"&&(j=t[s],G=x==="avg",q=S_e[x]),c=Z(h.start),g=Z(h.end)+(c-j0.tickIncrement(c,h.size,!1,l))/1e6;c=0&&P=be;c--)if(n[c]){Be=c;break}for(c=be;c<=Be;c++)if(tG(r[c])&&tG(n[c])){var Le={p:r[c],s:n[c],b:0};u.enabled||(Le.pts=M[c],ae?Le.ph0=Le.ph1=M[c].length?d[M[c][0]]:r[c]:(t._computePh=!0,Le.ph0=re(m[c]),Le.ph1=re(m[c+1],!0))),ke.push(Le)}return ke.length===1&&(ke[0].width1=j0.tickIncrement(ke[0].p,h.size,!1,l)-ke[0].p),T_e(t,"marker")&&A_e(e,t,{vals:t.marker.color,containerStr:"marker",cLetter:"c"}),T_e(t,"marker.line")&&A_e(e,t,{vals:t.marker.line.color,containerStr:"marker.line",cLetter:"c"}),gxt(ke,t),Hv.isArrayOrTypedArray(t.selectedpoints)&&Hv.tagSelected(ke,t,Ce),ke}function rG(e,t,r,n,i){var a=n+"bins",o=e._fullLayout,s=t["_"+n+"bingroup"],l=o._histogramBinOpts[s],u=o.barmode==="overlay",c,f,h,d,v,m,b,p=function(ge){return r.r2c(ge,0,d)},k=function(ge){return r.c2r(ge,0,d)},M=r.type==="date"?function(ge){return ge||ge===0?Hv.cleanDate(ge,null,d):null}:function(ge){return tG(ge)?Number(ge):null};function T(ge,re,Se){re[ge+"Found"]?(re[ge]=M(re[ge]),re[ge]===null&&(re[ge]=Se[ge])):(m[ge]=re[ge]=Se[ge],Hv.nestedProperty(f[0],a+"."+ge).set(Se[ge]))}if(t["_"+n+"autoBinFinished"])delete t["_"+n+"autoBinFinished"];else{f=l.traces;var L=[],x=!0,C=!1,S=!1;for(c=0;cr.r2l(j)&&(H=j0.tickIncrement(H,l.size,!0,d)),q.start=r.l2r(H),Z||Hv.nestedProperty(t,a+".start").set(q.start)}var ie=l.end,ae=r.r2l(z.end),_e=ae!==void 0;if((l.endFound||_e)&&ae!==r.r2l(ie)){var Ee=_e?ae:Hv.aggNums(Math.max,null,v);q.end=r.l2r(Ee),_e||Hv.nestedProperty(t,a+".start").set(q.end)}var Ce="autobin"+n;return t._input[Ce]===!1&&(t._input[a]=Hv.extendFlat({},t[a]||{}),delete t._input[Ce],delete t[Ce]),[q,v]}function bxt(e,t,r,n,i){var a=e._fullLayout,o=wxt(e,t),s=!1,l=1/0,u=[t],c,f,h;for(c=0;c=0;n--)s(n);else if(t==="increasing"){for(n=1;n=0;n--)e[n]+=e[n+1];r==="exclude"&&(e.push(0),e.shift())}}M_e.exports={calc:xxt,calcAllAutoBins:rG}});var D_e=ye((Yur,R_e)=>{"use strict";var E_e=Pr(),NT=ho(),k_e=JV(),Axt=$V(),Sxt=QV(),Mxt=eG(),C_e=iG().calcAllAutoBins;R_e.exports=function(t,r){var n=NT.getFromId(t,r.xaxis),i=NT.getFromId(t,r.yaxis),a=r.xcalendar,o=r.ycalendar,s=function(Et){return n.r2c(Et,0,a)},l=function(Et){return i.r2c(Et,0,o)},u=function(Et){return n.c2r(Et,0,a)},c=function(Et){return i.c2r(Et,0,o)},f,h,d,v,m=C_e(t,r,n,"x"),b=m[0],p=m[1],k=C_e(t,r,i,"y"),M=k[0],T=k[1],L=r._length;p.length>L&&p.splice(L,p.length-L),T.length>L&&T.splice(L,T.length-L);var x=[],C=[],S=[],g=typeof b.size=="string",P=typeof M.size=="string",E=[],z=[],q=g?E:b,V=P?z:M,G=0,Z=[],j=[],N=r.histnorm,H=r.histfunc,ie=N.indexOf("density")!==-1,ae=H==="max"||H==="min",_e=ae?null:0,Ee=k_e.count,Ce=Axt[N],ge=!1,re=[],Se=[],ke="z"in r?r.z:"marker"in r&&Array.isArray(r.marker.color)?r.marker.color:"";ke&&H!=="count"&&(ge=H==="avg",Ee=k_e[H]);var be=b.size,Be=s(b.start),Le=s(b.end)+(Be-NT.tickIncrement(Be,be,!1,a))/1e6;for(f=Be;f=0&&d=0&&v{"use strict";var Bm=Pr(),F_e=fs().BADNUM,z_e=zg();q_e.exports=function(t,r,n,i,a,o){var s=t._length,l=r.makeCalcdata(t,i),u=n.makeCalcdata(t,a);l=z_e(t,r,i,l).vals,u=z_e(t,n,a,u).vals;var c=t.text,f=c!==void 0&&Bm.isArray1D(c),h=t.hovertext,d=h!==void 0&&Bm.isArray1D(h),v,m,b=Bm.distinctVals(l),p=b.vals,k=Bm.distinctVals(u),M=k.vals,T=[],L,x,C=M.length,S=p.length;for(v=0;v{"use strict";var Ext=Eo(),kxt=Pr(),u8=fs().BADNUM;O_e.exports=function(t,r,n,i){var a,o,s,l,u,c;function f(p){if(Ext(p))return+p}if(r&&r.transpose){for(a=0,u=0;u{"use strict";var Cxt=Pr(),B_e=.01,Lxt=[[-1,0],[1,0],[0,-1],[0,1]];function Pxt(e){return .5-.25*Math.min(1,e*.5)}U_e.exports=function(t,r){var n=1,i;for(N_e(t,r),i=0;iB_e;i++)n=N_e(t,r,Pxt(n));return n>B_e&&Cxt.log("interp2d didn't converge quickly",n),t};function N_e(e,t,r){var n=0,i,a,o,s,l,u,c,f,h,d,v,m,b;for(s=0;sm&&(n=Math.max(n,Math.abs(e[a][o]-v)/(b-m))))}return n}});var h8=ye((Qur,V_e)=>{"use strict";var Ixt=Pr().maxRowLength;V_e.exports=function(t){var r=[],n={},i=[],a=t[0],o=[],s=[0,0,0],l=Ixt(t),u,c,f,h,d,v,m,b;for(c=0;c=0;d--)h=i[d],c=h[0],f=h[1],v=((n[[c-1,f]]||s)[2]+(n[[c+1,f]]||s)[2]+(n[[c,f-1]]||s)[2]+(n[[c,f+1]]||s)[2])/20,v&&(m[h]=[c,f,v],i.splice(d,1),b=!0);if(!b)throw"findEmpties iterated with no new neighbors";for(h in m)n[h]=m[h],r.push(m[h])}return r.sort(function(p,k){return k[2]-p[2]})}});var nG=ye((ecr,j_e)=>{"use strict";var G_e=Oa(),H_e=Pr().isArrayOrTypedArray;j_e.exports=function(t,r,n,i,a,o){var s=[],l=G_e.traceIs(t,"contour"),u=G_e.traceIs(t,"histogram"),c,f,h,d=H_e(r)&&r.length>1;if(d&&!u&&o.type!=="category"){var v=r.length;if(v<=a){if(l)s=Array.from(r).slice(0,a);else if(a===1)o.type==="log"?s=[.5*r[0],2*r[0]]:s=[r[0]-.5,r[0]+.5];else if(o.type==="log"){for(s=[Math.pow(r[0],1.5)/Math.pow(r[1],.5)],h=1;h{"use strict";var W_e=Oa(),aG=Pr(),d8=ho(),X_e=zg(),Rxt=D_e(),Dxt=gv(),Fxt=l8(),zxt=c8(),qxt=f8(),Oxt=h8(),v8=nG(),oG=fs().BADNUM;Y_e.exports=function(t,r){var n=d8.getFromId(t,r.xaxis||"x"),i=d8.getFromId(t,r.yaxis||"y"),a=W_e.traceIs(r,"contour"),o=W_e.traceIs(r,"histogram"),s=a?"best":r.zsmooth,l,u,c,f,h,d,v,m,b,p,k;if(n._minDtick=0,i._minDtick=0,o)k=Rxt(t,r),f=k.orig_x,l=k.x,u=k.x0,c=k.dx,m=k.orig_y,h=k.y,d=k.y0,v=k.dy,b=k.z;else{var M=r.z;aG.isArray1D(M)?(Fxt(r,n,i,"x","y",["z"]),l=r._x,h=r._y,M=r._z):(f=r.x?n.makeCalcdata(r,"x"):[],m=r.y?i.makeCalcdata(r,"y"):[],l=X_e(r,n,"x",f).vals,h=X_e(r,i,"y",m).vals,r._x=l,r._y=h),u=r.x0,c=r.dx,d=r.y0,v=r.dy,b=zxt(M,r,n,i)}(n.rangebreaks||i.rangebreaks)&&(b=Bxt(l,h,b),o||(l=Z_e(l),h=Z_e(h),r._x=l,r._y=h)),!o&&(a||r.connectgaps)&&(r._emptypoints=Oxt(b),qxt(b,r._emptypoints));function T(q){s=r._input.zsmooth=r.zsmooth=!1,aG.warn('cannot use zsmooth: "fast": '+q)}function L(q){if(q.length>1){var V=(q[q.length-1]-q[0])/(q.length-1),G=Math.abs(V/100);for(p=0;pG)return!1}return!0}r._islinear=!1,n.type==="log"||i.type==="log"?s==="fast"&&T("log axis found"):L(l)?L(h)?r._islinear=!0:s==="fast"&&T("y scale is not linear"):s==="fast"&&T("x scale is not linear");var x=aG.maxRowLength(b),C=r.xtype==="scaled"?"":l,S=v8(r,C,u,c,x,n),g=r.ytype==="scaled"?"":h,P=v8(r,g,d,v,b.length,i);r._extremes[n._id]=d8.findExtremes(n,S),r._extremes[i._id]=d8.findExtremes(i,P);var E={x:S,y:P,z:b,text:r._text||r.text,hovertext:r._hovertext||r.hovertext};if(r.xperiodalignment&&f&&(E.orig_x=f),r.yperiodalignment&&m&&(E.orig_y=m),C&&C.length===S.length-1&&(E.xCenter=C),g&&g.length===P.length-1&&(E.yCenter=g),o&&(E.xRanges=k.xRanges,E.yRanges=k.yRanges,E.pts=k.pts),a||Dxt(t,r,{vals:b,cLetter:"z"}),a&&r.contours&&r.contours.coloring==="heatmap"){var z={type:r.type==="contour"?"heatmap":"histogram2d",xcalendar:r.xcalendar,ycalendar:r.ycalendar};E.xfill=v8(z,C,u,c,x,n),E.yfill=v8(z,g,d,v,b.length,i)}return[E]};function Z_e(e){for(var t=[],r=e.length,n=0;n{"use strict";g8.CSS_DECLARATIONS=[["image-rendering","optimizeSpeed"],["image-rendering","-moz-crisp-edges"],["image-rendering","-o-crisp-edges"],["image-rendering","-webkit-optimize-contrast"],["image-rendering","optimize-contrast"],["image-rendering","crisp-edges"],["image-rendering","pixelated"]];g8.STYLE=g8.CSS_DECLARATIONS.map(function(e){return e.join(": ")+"; "}).join("")});var lG=ye((icr,J_e)=>{"use strict";var K_e=m8(),Nxt=So(),sG=Pr(),UT=null;function Uxt(){if(UT!==null)return UT;UT=!1;var e=sG.isSafari()||sG.isMacWKWebView()||sG.isIOS();if(window.navigator.userAgent&&!e){var t=Array.from(K_e.CSS_DECLARATIONS).reverse(),r=window.CSS&&window.CSS.supports||window.supportsCSS;if(typeof r=="function")UT=t.some(function(o){return r.apply(null,o)});else{var n=Nxt.tester.append("image").attr("style",K_e.STYLE),i=window.getComputedStyle(n.node()),a=i.imageRendering;UT=t.some(function(o){var s=o[1];return a===s||a===s.toLowerCase()}),n.remove()}}return UT}J_e.exports=Uxt});var y8=ye((ncr,oxe)=>{"use strict";var $_e=qa(),Vxt=fd(),Gxt=Oa(),Hxt=So(),jxt=ho(),W0=Pr(),Q_e=Zl(),Wxt=uI(),Xxt=ka(),Zxt=tc().extractOpts,Yxt=tc().makeColorScaleFuncFromTrace,Kxt=Wp(),Jxt=Dh(),uG=Jxt.LINE_SPACING,$xt=lG(),Qxt=m8().STYLE,nxe="heatmap-label";function axe(e){return e.selectAll("g."+nxe)}function exe(e){axe(e).remove()}oxe.exports=function(e,t,r,n){var i=t.xaxis,a=t.yaxis;W0.makeTraceGroups(n,r,"hm").each(function(o){var s=$_e.select(this),l=o[0],u=l.trace,c=u.xgap||0,f=u.ygap||0,h=l.z,d=l.x,v=l.y,m=l.xCenter,b=l.yCenter,p=Gxt.traceIs(u,"contour"),k=p?"best":u.zsmooth,M=h.length,T=W0.maxRowLength(h),L=!1,x=!1,C,S,g,P,E,z,q,V;for(z=0;C===void 0&&z0;)S=i.c2p(d[z]),z--;for(S0;)E=a.c2p(v[z]),z--;E=i._length||S<=0||P>=a._length||E<=0;if(H){var ie=s.selectAll("image").data([]);ie.exit().remove(),exe(s);return}var ae,_e;G==="fast"?(ae=T,_e=M):(ae=j,_e=N);var Ee=document.createElement("canvas");Ee.width=ae,Ee.height=_e;var Ce=Ee.getContext("2d",{willReadFrequently:!0}),ge=Yxt(u,{noNumericCheck:!0,returnArray:!0}),re,Se;G==="fast"?(re=L?function(fn){return T-1-fn}:W0.identity,Se=x?function(fn){return M-1-fn}:W0.identity):(re=function(fn){return W0.constrain(Math.round(i.c2p(d[fn])-C),0,j)},Se=function(fn){return W0.constrain(Math.round(a.c2p(v[fn])-P),0,N)});var ke=Se(0),be=[ke,ke],Be=L?0:1,Le=x?0:1,me=0,Pe=0,ce=0,He=0,lt,mt,Ht,at,ct;function ar(fn,yn){if(fn!==void 0){var Mn=ge(fn);return Mn[0]=Math.round(Mn[0]),Mn[1]=Math.round(Mn[1]),Mn[2]=Math.round(Mn[2]),me+=yn,Pe+=Mn[0]*yn,ce+=Mn[1]*yn,He+=Mn[2]*yn,Mn}return[0,0,0,0]}function Vt(fn,yn,Mn,Ba){var ua=fn[Mn.bin0];if(ua===void 0)return ar(void 0,1);var ma=fn[Mn.bin1],Wa=yn[Mn.bin0],Fa=yn[Mn.bin1],Xo=ma-ua||0,da=Wa-ua||0,jn;return ma===void 0?Fa===void 0?jn=0:Wa===void 0?jn=2*(Fa-ua):jn=(2*Fa-Wa-ua)*2/3:Fa===void 0?Wa===void 0?jn=0:jn=(2*ua-ma-Wa)*2/3:Wa===void 0?jn=(2*Fa-ma-ua)*2/3:jn=Fa+ua-ma-Wa,ar(ua+Mn.frac*Xo+Ba.frac*(da+Mn.frac*jn))}if(G!=="default"){var rr=0,tt;try{tt=new Uint8Array(ae*_e*4)}catch(fn){tt=new Array(ae*_e*4)}if(G==="smooth"){var je=m||d,Ue=b||v,Ae=new Array(je.length),rt=new Array(Ue.length),St=new Array(j),Tt=m?rxe:txe,dt=b?rxe:txe,Et,pt,jt;for(z=0;zYr||Yr>a._length))for(q=Qt;qPi||Pi>i._length)){var ai=Wxt({x:_i,y:Ir},u,e._fullLayout);ai.x=_i,ai.y=Ir;var mi=l.z[z][q];mi===void 0?(ai.z="",ai.zLabel=""):(ai.z=mi,ai.zLabel=jxt.tickText(We,mi,"hover").text);var un=l.text&&l.text[z]&&l.text[z][q];(un===void 0||un===!1)&&(un=""),ai.text=un;var Fn=W0.texttemplateString({data:[ai,u._meta],fallback:u.texttemplatefallback,labels:ai,locale:e._fullLayout._d3locale,template:Ge});if(Fn){var An=Fn.split("
"),Hn=An.length,Qn=0;for(V=0;V{"use strict";sxe.exports={min:"zmin",max:"zmax"}});var _8=ye((ocr,lxe)=>{"use strict";var ebt=qa();lxe.exports=function(t){ebt.select(t).selectAll(".hm image").style("opacity",function(r){return r.trace.opacity})}});var b8=ye((scr,cxe)=>{"use strict";var uxe=ef(),D4=Pr(),x8=D4.isArrayOrTypedArray,tbt=ho(),rbt=tc().extractOpts;cxe.exports=function(t,r,n,i,a){a||(a={});var o=a.isContour,s=t.cd[0],l=s.trace,u=t.xa,c=t.ya,f=s.x,h=s.y,d=s.z,v=s.xCenter,m=s.yCenter,b=s.zmask,p=l.zhoverformat,k=f,M=h,T,L,x,C;if(t.index!==!1){try{x=Math.round(t.index[1]),C=Math.round(t.index[0])}catch(ie){D4.error("Error hovering on heatmap, pointNumber must be [row,col], found:",t.index);return}if(x<0||x>=d[0].length||C<0||C>d.length)return}else{if(uxe.inbox(r-f[0],r-f[f.length-1],0)>0||uxe.inbox(n-h[0],n-h[h.length-1],0)>0)return;if(o){var S;for(k=[2*f[0]-f[1]],S=1;S{"use strict";fxe.exports={attributes:qT(),supplyDefaults:c_e(),calc:p8(),plot:y8(),colorbar:D_(),style:_8(),hoverPoints:b8(),moduleType:"trace",name:"heatmap",basePlotModule:mh(),categories:["cartesian","svg","2dMap","showLegend"],meta:{}}});var vxe=ye((ucr,dxe)=>{"use strict";dxe.exports=hxe()});var cG=ye((ccr,pxe)=>{"use strict";pxe.exports=function(t,r){return{start:{valType:"any",editType:"calc"},end:{valType:"any",editType:"calc"},size:{valType:"any",editType:"calc"},editType:"calc"}}});var mxe=ye((fcr,gxe)=>{"use strict";gxe.exports={eventDataKeys:["binNumber"]}});var w8=ye((hcr,bxe)=>{"use strict";var Ip=qm(),yxe=vf().axisHoverFormat,{hovertemplateAttrs:ibt,texttemplateAttrs:nbt,templatefallbackAttrs:_xe}=Ll(),fG=ec(),xxe=cG(),abt=mxe(),hG=Ao().extendFlat;bxe.exports={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},xhoverformat:yxe("x"),yhoverformat:yxe("y"),text:hG({},Ip.text,{}),hovertext:hG({},Ip.hovertext,{}),orientation:Ip.orientation,histfunc:{valType:"enumerated",values:["count","sum","avg","min","max"],dflt:"count",editType:"calc"},histnorm:{valType:"enumerated",values:["","percent","probability","density","probability density"],dflt:"",editType:"calc"},cumulative:{enabled:{valType:"boolean",dflt:!1,editType:"calc"},direction:{valType:"enumerated",values:["increasing","decreasing"],dflt:"increasing",editType:"calc"},currentbin:{valType:"enumerated",values:["include","exclude","half"],dflt:"include",editType:"calc"},editType:"calc"},nbinsx:{valType:"integer",min:0,dflt:0,editType:"calc"},xbins:xxe("x",!0),nbinsy:{valType:"integer",min:0,dflt:0,editType:"calc"},ybins:xxe("y",!0),autobinx:{valType:"boolean",dflt:null,editType:"calc"},autobiny:{valType:"boolean",dflt:null,editType:"calc"},bingroup:{valType:"string",dflt:"",editType:"calc"},hovertemplate:ibt({},{keys:abt.eventDataKeys}),hovertemplatefallback:_xe(),texttemplate:nbt({arrayOk:!1,editType:"plot"},{keys:["label","value"]}),texttemplatefallback:_xe({editType:"plot"}),textposition:hG({},Ip.textposition,{arrayOk:!1}),textfont:fG({arrayOk:!1,editType:"plot",colorEditType:"style"}),outsidetextfont:fG({arrayOk:!1,editType:"plot",colorEditType:"style"}),insidetextfont:fG({arrayOk:!1,editType:"plot",colorEditType:"style"}),insidetextanchor:Ip.insidetextanchor,textangle:Ip.textangle,cliponaxis:Ip.cliponaxis,constraintext:Ip.constraintext,marker:Ip.marker,offsetgroup:Ip.offsetgroup,alignmentgroup:Ip.alignmentgroup,selected:Ip.selected,unselected:Ip.unselected,zorder:Ip.zorder}});var Sxe=ye((dcr,Axe)=>{"use strict";var wxe=Oa(),F4=Pr(),Txe=ka(),obt=i0().handleText,sbt=XI(),lbt=w8();Axe.exports=function(t,r,n,i){function a(k,M){return F4.coerce(t,r,lbt,k,M)}var o=a("x"),s=a("y"),l=a("cumulative.enabled");l&&(a("cumulative.direction"),a("cumulative.currentbin")),a("text");var u=a("textposition");obt(t,r,i,a,u,{moduleHasSelected:!0,moduleHasUnselected:!0,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),a("xhoverformat"),a("yhoverformat");var c=a("orientation",s&&!o?"h":"v"),f=c==="v"?"x":"y",h=c==="v"?"y":"x",d=o&&s?Math.min(F4.minRowLength(o)&&F4.minRowLength(s)):F4.minRowLength(r[f]||[]);if(!d){r.visible=!1;return}r._length=d;var v=wxe.getComponentMethod("calendars","handleTraceDefaults");v(t,r,["x","y"],i);var m=r[h];m&&a("histfunc"),a("histnorm"),a("autobin"+f),sbt(t,r,a,n,i),F4.coerceSelectionMarkerOpacity(r,a);var b=(r.marker.line||{}).color,p=wxe.getComponentMethod("errorbars","supplyDefaults");p(t,r,b||Txe.defaultLine,{axis:"y"}),p(t,r,b||Txe.defaultLine,{axis:"x",inherit:"y"}),a("zorder")}});var A8=ye((vcr,kxe)=>{"use strict";var z4=Pr(),ubt=df(),T8=Oa().traceIs,cbt=r2(),fbt=i0().validateCornerradius,Mxe=z4.nestedProperty,dG=$b().getAxisGroup,Exe=[{aStr:{x:"xbins.start",y:"ybins.start"},name:"start"},{aStr:{x:"xbins.end",y:"ybins.end"},name:"end"},{aStr:{x:"xbins.size",y:"ybins.size"},name:"size"},{aStr:{x:"nbinsx",y:"nbinsy"},name:"nbins"}],hbt=["x","y"];kxe.exports=function(t,r){var n=r._histogramBinOpts={},i=[],a={},o=[],s,l,u,c,f,h,d;function v(G,Z){return z4.coerce(s._input,s,s._module.attributes,G,Z)}function m(G){return G.orientation==="v"?"x":"y"}function b(G,Z){var j=ubt.getFromTrace({_fullLayout:r},G,Z);return j.type}function p(G,Z,j){var N=G.uid+"__"+j;Z||(Z=N);var H=b(G,j),ie=G[j+"calendar"]||"",ae=n[Z],_e=!0;ae&&(H===ae.axType&&ie===ae.calendar?(_e=!1,ae.traces.push(G),ae.dirs.push(j)):(Z=N,H!==ae.axType&&z4.warn(["Attempted to group the bins of trace",G.index,"set on a","type:"+H,"axis","with bins on","type:"+ae.axType,"axis."].join(" ")),ie!==ae.calendar&&z4.warn(["Attempted to group the bins of trace",G.index,"set with a",ie,"calendar","with bins",ae.calendar?"on a "+ae.calendar+" calendar":"w/o a set calendar"].join(" ")))),_e&&(n[Z]={traces:[G],dirs:[j],axType:H,calendar:G[j+"calendar"]||""}),G["_"+j+"bingroup"]=Z}for(f=0;f{"use strict";var dbt=RT().hoverPoints,vbt=ho().hoverLabelText;Cxe.exports=function(t,r,n,i,a){var o=dbt(t,r,n,i,a);if(o){t=o[0];var s=t.cd[t.index],l=t.cd[0].trace;if(!l.cumulative.enabled){var u=l.orientation==="h"?"y":"x";t[u+"Label"]=vbt(t[u+"a"],[s.ph0,s.ph1],l[u+"hoverformat"])}return o}}});var vG=ye((gcr,Pxe)=>{"use strict";Pxe.exports=function(t,r,n,i,a){if(t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"zLabelVal"in r&&(t.z=r.zLabelVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),!(n.cumulative||{}).enabled){var o=Array.isArray(a)?i[0].pts[a[0]][a[1]]:i[a].pts;t.pointNumbers=o,t.binNumber=t.pointNumber,delete t.pointNumber,delete t.pointIndex;var s;if(n._indexToPoints){s=[];for(var l=0;l{"use strict";Ixe.exports={attributes:w8(),layoutAttributes:WI(),supplyDefaults:Sxe(),crossTraceDefaults:A8(),supplyLayoutDefaults:DV(),calc:iG().calc,crossTraceCalc:i2().crossTraceCalc,plot:p2().plot,layerName:"barlayer",style:V0().style,styleOnSelect:V0().styleOnSelect,colorbar:Qd(),hoverPoints:Lxe(),selectPoints:DT(),eventData:vG(),moduleType:"trace",name:"histogram",basePlotModule:mh(),categories:["bar-like","cartesian","svg","bar","histogram","oriented","errorBarsOK","showLegend"],meta:{}}});var Fxe=ye((ycr,Dxe)=>{"use strict";Dxe.exports=Rxe()});var M8=ye((_cr,Oxe)=>{"use strict";var jg=w8(),zxe=cG(),S8=qT(),pbt=Gl(),pG=vf().axisHoverFormat,{hovertemplateAttrs:gbt,texttemplateAttrs:mbt,templatefallbackAttrs:qxe}=Ll(),ybt=Tu(),q4=Ao().extendFlat;Oxe.exports=q4({x:jg.x,y:jg.y,z:{valType:"data_array",editType:"calc"},marker:{color:{valType:"data_array",editType:"calc"},editType:"calc"},histnorm:jg.histnorm,histfunc:jg.histfunc,nbinsx:jg.nbinsx,xbins:zxe("x"),nbinsy:jg.nbinsy,ybins:zxe("y"),autobinx:jg.autobinx,autobiny:jg.autobiny,bingroup:q4({},jg.bingroup,{}),xbingroup:q4({},jg.bingroup,{}),ybingroup:q4({},jg.bingroup,{}),xgap:S8.xgap,ygap:S8.ygap,zsmooth:S8.zsmooth,xhoverformat:pG("x"),yhoverformat:pG("y"),zhoverformat:pG("z",1),hovertemplate:gbt({},{keys:["z"]}),hovertemplatefallback:qxe(),texttemplate:mbt({arrayOk:!1,editType:"plot"},{keys:["z"]}),texttemplatefallback:qxe({editType:"plot"}),textfont:S8.textfont,showlegend:q4({},pbt.showlegend,{dflt:!1})},ybt("",{cLetter:"z",autoColorDflt:!1}))});var gG=ye((xcr,Nxe)=>{"use strict";var _bt=Oa(),Bxe=Pr();Nxe.exports=function(t,r,n,i){var a=n("x"),o=n("y"),s=Bxe.minRowLength(a),l=Bxe.minRowLength(o);if(!s||!l){r.visible=!1;return}r._length=Math.min(s,l);var u=_bt.getComponentMethod("calendars","handleTraceDefaults");u(t,r,["x","y"],i);var c=n("z")||n("marker.color");c&&n("histfunc"),n("histnorm"),n("autobinx"),n("autobiny")}});var Vxe=ye((bcr,Uxe)=>{"use strict";var xbt=Pr(),bbt=gG(),wbt=KV(),Tbt=td(),Abt=R4(),Sbt=M8();Uxe.exports=function(t,r,n,i){function a(o,s){return xbt.coerce(t,r,Sbt,o,s)}bbt(t,r,a,i),r.visible!==!1&&(wbt(t,r,a,i),Tbt(t,r,i,a,{prefix:"",cLetter:"z"}),a("hovertemplate"),a("hovertemplatefallback"),Abt(a,i),a("xhoverformat"),a("yhoverformat"))}});var jxe=ye((wcr,Hxe)=>{"use strict";var Mbt=b8(),Gxe=ho().hoverLabelText;Hxe.exports=function(t,r,n,i,a){var o=Mbt(t,r,n,i,a);if(o){t=o[0];var s=t.index,l=s[0],u=s[1],c=t.cd[0],f=c.trace,h=c.xRanges[u],d=c.yRanges[l];return t.xLabel=Gxe(t.xa,[h[0],h[1]],f.xhoverformat),t.yLabel=Gxe(t.ya,[d[0],d[1]],f.yhoverformat),o}}});var Xxe=ye((Tcr,Wxe)=>{"use strict";Wxe.exports={attributes:M8(),supplyDefaults:Vxe(),crossTraceDefaults:A8(),calc:p8(),plot:y8(),layerName:"heatmaplayer",colorbar:D_(),style:_8(),hoverPoints:jxe(),eventData:vG(),moduleType:"trace",name:"histogram2d",basePlotModule:mh(),categories:["cartesian","svg","2dMap","histogram","showLegend"],meta:{}}});var Yxe=ye((Acr,Zxe)=>{"use strict";Zxe.exports=Xxe()});var E8=ye((Scr,Kxe)=>{"use strict";Kxe.exports={COMPARISON_OPS:["=","!=","<",">=",">","<="],COMPARISON_OPS2:["=","<",">=",">","<="],INTERVAL_OPS:["[]","()","[)","(]","][",")(","](",")["],SET_OPS:["{}","}{"],CONSTRAINT_REDUCTION:{"=":"=","<":"<","<=":"<",">":">",">=":">","[]":"[]","()":"[]","[)":"[]","(]":"[]","][":"][",")(":"][","](":"][",")[":"]["}}});var O4=ye((Mcr,ebe)=>{"use strict";var _h=qT(),k8=pf(),$xe=vf(),mG=$xe.axisHoverFormat,Ebt=$xe.descriptionOnlyNumbers,kbt=Tu(),Cbt=Pd().dash,Lbt=ec(),VT=Ao().extendFlat,Qxe=E8(),Pbt=Qxe.COMPARISON_OPS2,Ibt=Qxe.INTERVAL_OPS,Jxe=k8.line;ebe.exports=VT({z:_h.z,x:_h.x,x0:_h.x0,dx:_h.dx,y:_h.y,y0:_h.y0,dy:_h.dy,xperiod:_h.xperiod,yperiod:_h.yperiod,xperiod0:k8.xperiod0,yperiod0:k8.yperiod0,xperiodalignment:_h.xperiodalignment,yperiodalignment:_h.yperiodalignment,text:_h.text,hovertext:_h.hovertext,transpose:_h.transpose,xtype:_h.xtype,ytype:_h.ytype,xhoverformat:mG("x"),yhoverformat:mG("y"),zhoverformat:mG("z",1),hovertemplate:_h.hovertemplate,hovertemplatefallback:_h.hovertemplatefallback,texttemplate:VT({},_h.texttemplate,{}),texttemplatefallback:_h.texttemplatefallback,textfont:VT({},_h.textfont,{}),hoverongaps:_h.hoverongaps,connectgaps:VT({},_h.connectgaps,{}),fillcolor:{valType:"color",editType:"calc"},autocontour:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"contours.start":void 0,"contours.end":void 0,"contours.size":void 0}},ncontours:{valType:"integer",dflt:15,min:1,editType:"calc"},contours:{type:{valType:"enumerated",values:["levels","constraint"],dflt:"levels",editType:"calc"},start:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},end:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},size:{valType:"number",dflt:null,min:0,editType:"plot",impliedEdits:{"^autocontour":!1}},coloring:{valType:"enumerated",values:["fill","heatmap","lines","none"],dflt:"fill",editType:"calc"},showlines:{valType:"boolean",dflt:!0,editType:"plot"},showlabels:{valType:"boolean",dflt:!1,editType:"plot"},labelfont:Lbt({editType:"plot",colorEditType:"style"}),labelformat:{valType:"string",dflt:"",editType:"plot",description:Ebt("contour label")},operation:{valType:"enumerated",values:[].concat(Pbt).concat(Ibt),dflt:"=",editType:"calc"},value:{valType:"any",dflt:0,editType:"calc"},editType:"calc",impliedEdits:{autocontour:!1}},line:{color:VT({},Jxe.color,{editType:"style+colorbars"}),width:{valType:"number",min:0,editType:"style+colorbars"},dash:Cbt,smoothing:VT({},Jxe.smoothing,{}),editType:"plot"},zorder:k8.zorder},kbt("",{cLetter:"z",autoColorDflt:!1,editTypeOverride:"calc"}))});var _G=ye((Ecr,rbe)=>{"use strict";var wv=M8(),Nm=O4(),Rbt=Tu(),yG=vf().axisHoverFormat,tbe=Ao().extendFlat;rbe.exports=tbe({x:wv.x,y:wv.y,z:wv.z,marker:wv.marker,histnorm:wv.histnorm,histfunc:wv.histfunc,nbinsx:wv.nbinsx,xbins:wv.xbins,nbinsy:wv.nbinsy,ybins:wv.ybins,autobinx:wv.autobinx,autobiny:wv.autobiny,bingroup:wv.bingroup,xbingroup:wv.xbingroup,ybingroup:wv.ybingroup,autocontour:Nm.autocontour,ncontours:Nm.ncontours,contours:Nm.contours,line:{color:Nm.line.color,width:tbe({},Nm.line.width,{dflt:.5}),dash:Nm.line.dash,smoothing:Nm.line.smoothing,editType:"plot"},xhoverformat:yG("x"),yhoverformat:yG("y"),zhoverformat:yG("z",1),hovertemplate:wv.hovertemplate,hovertemplatefallback:wv.hovertemplatefallback,texttemplate:Nm.texttemplate,texttemplatefallback:Nm.texttemplatefallback,textfont:Nm.textfont},Rbt("",{cLetter:"z",editTypeOverride:"calc"}))});var C8=ye((kcr,ibe)=>{"use strict";ibe.exports=function(t,r,n,i){var a=i("contours.start"),o=i("contours.end"),s=a===!1||o===!1,l=n("contours.size"),u;s?u=r.autocontour=!0:u=n("autocontour",!1),(u||!l)&&n("ncontours")}});var xG=ye((Ccr,nbe)=>{"use strict";var Dbt=Pr();nbe.exports=function(t,r,n,i){i||(i={});var a=t("contours.showlabels");if(a){var o=r.font;Dbt.coerceFont(t,"contours.labelfont",o,{overrideDflt:{color:n}}),t("contours.labelformat")}i.hasHover!==!1&&t("zhoverformat")}});var L8=ye((Lcr,abe)=>{"use strict";var Fbt=td(),zbt=xG();abe.exports=function(t,r,n,i,a){var o=n("contours.coloring"),s,l="";o==="fill"&&(s=n("contours.showlines")),s!==!1&&(o!=="lines"&&(l=n("line.color","#000")),n("line.width",.5),n("line.dash")),o!=="none"&&(t.showlegend!==!0&&(r.showlegend=!1),r._dfltShowLegend=!1,Fbt(t,r,i,n,{prefix:"",cLetter:"z"})),n("line.smoothing"),zbt(n,i,l,a)}});var ube=ye((Pcr,lbe)=>{"use strict";var obe=Pr(),qbt=gG(),Obt=C8(),Bbt=L8(),Nbt=R4(),sbe=_G();lbe.exports=function(t,r,n,i){function a(s,l){return obe.coerce(t,r,sbe,s,l)}function o(s){return obe.coerce2(t,r,sbe,s)}qbt(t,r,a,i),r.visible!==!1&&(Obt(t,r,a,o),Bbt(t,r,a,i),a("xhoverformat"),a("yhoverformat"),a("hovertemplate"),a("hovertemplatefallback"),r.contours&&r.contours.coloring==="heatmap"&&Nbt(a,i))}});var TG=ye((Icr,fbe)=>{"use strict";var wG=ho(),bG=Pr();fbe.exports=function(t,r){var n=t.contours;if(t.autocontour){var i=t.zmin,a=t.zmax;(t.zauto||i===void 0)&&(i=bG.aggNums(Math.min,null,r)),(t.zauto||a===void 0)&&(a=bG.aggNums(Math.max,null,r));var o=cbe(i,a,t.ncontours);n.size=o.dtick,n.start=wG.tickFirst(o),o.range.reverse(),n.end=wG.tickFirst(o),n.start===i&&(n.start+=n.size),n.end===a&&(n.end-=n.size),n.start>n.end&&(n.start=n.end=(n.start+n.end)/2),t._input.contours||(t._input.contours={}),bG.extendFlat(t._input.contours,{start:n.start,end:n.end,size:n.size}),t._input.autocontour=!0}else if(n.type!=="constraint"){var s=n.start,l=n.end,u=t._input.contours;if(s>l&&(n.start=u.start=l,l=n.end=u.end=s,s=n.start),!(n.size>0)){var c;s===l?c=1:c=cbe(s,l,t.ncontours).dtick,u.size=n.size=c}}};function cbe(e,t,r){var n={type:"linear",range:[e,t]};return wG.autoTicks(n,(t-e)/(r||15)),n}});var B4=ye((Rcr,hbe)=>{"use strict";hbe.exports=function(t){return t.end+t.size/1e6}});var AG=ye((Dcr,vbe)=>{"use strict";var dbe=tc(),Ubt=p8(),Vbt=TG(),Gbt=B4();vbe.exports=function(t,r){var n=Ubt(t,r),i=n[0].z;Vbt(r,i);var a=r.contours,o=dbe.extractOpts(r),s;if(a.coloring==="heatmap"&&o.auto&&r.autocontour===!1){var l=a.start,u=Gbt(a),c=a.size||1,f=Math.floor((u-l)/c)+1;isFinite(c)||(c=1,f=1);var h=l-c/2,d=h+f*c;s=[h,d]}else s=i;return dbe.calc(t,r,{vals:s,cLetter:"z"}),n}});var N4=ye((Fcr,pbe)=>{"use strict";pbe.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}});var SG=ye((zcr,gbe)=>{"use strict";var P8=N4();gbe.exports=function(t){var r=t[0].z,n=r.length,i=r[0].length,a=n===2||i===2,o,s,l,u,c,f,h,d,v;for(s=0;se?0:1)+(t[0][1]>e?0:2)+(t[1][1]>e?0:4)+(t[1][0]>e?0:8);if(r===5||r===10){var n=(t[0][0]+t[0][1]+t[1][0]+t[1][1])/4;return e>n?r===5?713:1114:r===5?104:208}return r===15?0:r}});var MG=ye((qcr,_be)=>{"use strict";var I8=Pr(),GT=N4();_be.exports=function(t,r,n){var i,a,o,s,l;for(r=r||.01,n=n||.01,o=0;o20?(o=GT.CHOOSESADDLE[o][(s[0]||s[1])<0?0:1],e.crossings[a]=GT.SADDLEREMAINDER[o]):delete e.crossings[a],s=GT.NEWDELTA[o],!s){I8.log("Found bad marching index:",o,t,e.level);break}l.push(ybe(e,t,s)),t[0]+=s[0],t[1]+=s[1],a=t.join(","),U4(l[l.length-1],l[l.length-2],n,i)&&l.pop();var v=s[0]&&(t[0]<0||t[0]>c-2)||s[1]&&(t[1]<0||t[1]>u-2),m=t[0]===f[0]&&t[1]===f[1]&&s[0]===h[0]&&s[1]===h[1];if(m||r&&v)break;o=e.crossings[a]}d===1e4&&I8.log("Infinite loop in contour?");var b=U4(l[0],l[l.length-1],n,i),p=0,k=.2*e.smoothing,M=[],T=0,L,x,C,S,g,P,E,z,q,V,G;for(d=1;d=T;d--)if(L=M[d],L=T&&L+M[x]z&&q--,e.edgepaths[q]=G.concat(l,V));break}H||(e.edgepaths[z]=l.concat(V))}for(z=0;z20&&t?e===208||e===1114?n=r[0]===0?1:-1:i=r[1]===0?1:-1:GT.BOTTOMSTART.indexOf(e)!==-1?i=1:GT.LEFTSTART.indexOf(e)!==-1?n=1:GT.TOPSTART.indexOf(e)!==-1?i=-1:n=-1,[n,i]}function ybe(e,t,r){var n=t[0]+Math.max(r[0],0),i=t[1]+Math.max(r[1],0),a=e.z[i][n],o=e.xaxis,s=e.yaxis;if(r[1]){var l=(e.level-a)/(e.z[i][n+1]-a),u=(l!==1?(1-l)*o.c2l(e.x[n]):0)+(l!==0?l*o.c2l(e.x[n+1]):0);return[o.c2p(o.l2c(u),!0),s.c2p(e.y[i],!0),n+l,i]}else{var c=(e.level-a)/(e.z[i+1][n]-a),f=(c!==1?(1-c)*s.c2l(e.y[i]):0)+(c!==0?c*s.c2l(e.y[i+1]):0);return[o.c2p(e.x[n],!0),s.c2p(s.l2c(f),!0),n,i+c]}}});var Tbe=ye((Ocr,wbe)=>{"use strict";var EG=E8(),Xbt=Eo();wbe.exports={"[]":xbe("[]"),"][":xbe("]["),">":kG(">"),"<":kG("<"),"=":kG("=")};function bbe(e,t){var r=Array.isArray(t),n;function i(a){return Xbt(a)?+a:null}return EG.COMPARISON_OPS2.indexOf(e)!==-1?n=i(r?t[0]:t):EG.INTERVAL_OPS.indexOf(e)!==-1?n=r?[i(t[0]),i(t[1])]:[i(t),i(t)]:EG.SET_OPS.indexOf(e)!==-1&&(n=r?t.map(i):[i(t)]),n}function xbe(e){return function(t){t=bbe(e,t);var r=Math.min(t[0],t[1]),n=Math.max(t[0],t[1]);return{start:r,end:n,size:n-r}}}function kG(e){return function(t){return t=bbe(e,t),{start:t,end:1/0,size:1/0}}}});var CG=ye((Bcr,Sbe)=>{"use strict";var Abe=Pr(),Zbt=Tbe(),Ybt=B4();Sbe.exports=function(t,r,n){for(var i=t.type==="constraint"?Zbt[t._operation](t.value):t,a=i.size,o=[],s=Ybt(i),l=n.trace._carpetTrace,u=l?{xaxis:l.aaxis,yaxis:l.baxis,x:n.a,y:n.b}:{xaxis:r.xaxis,yaxis:r.yaxis,x:n.x,y:n.y},c=i.start;c1e3){Abe.warn("Too many contours, clipping at 1000",t);break}return o}});var LG=ye((Ncr,Ebe)=>{"use strict";var HT=Pr();Ebe.exports=function(e,t){var r,n,i,a=function(l){return l.reverse()},o=function(l){return l};switch(t){case"=":case"<":return e;case">":for(e.length!==1&&HT.warn("Contour data invalid for the specified inequality operation."),n=e[0],r=0;r{"use strict";kbe.exports=function(e,t){var r=e[0],n=r.z,i;switch(t.type){case"levels":var a=Math.min(n[0][0],n[0][1]);for(i=0;io.level||o.starts.length&&a===o.level)}break;case"constraint":if(r.prefixBoundary=!1,r.edgepaths.length)return;var s=r.x.length,l=r.y.length,u=-1/0,c=1/0;for(i=0;i":f>u&&(r.prefixBoundary=!0);break;case"<":(fu||r.starts.length&&d===c)&&(r.prefixBoundary=!0);break;case"][":h=Math.min(f[0],f[1]),d=Math.max(f[0],f[1]),hu&&(r.prefixBoundary=!0);break}break}}});var R8=ye(jv=>{"use strict";var G4=qa(),zd=Pr(),jy=So(),Kbt=tc(),Pbe=Zl(),Cbe=ho(),Lbe=xm(),Jbt=y8(),Ibe=SG(),Rbe=MG(),$bt=CG(),Qbt=LG(),Dbe=PG(),V4=N4(),Um=V4.LABELOPTIMIZER;jv.plot=function(t,r,n,i){var a=r.xaxis,o=r.yaxis;zd.makeTraceGroups(i,n,"contour").each(function(s){var l=G4.select(this),u=s[0],c=u.trace,f=u.x,h=u.y,d=c.contours,v=$bt(d,r,u),m=zd.ensureSingle(l,"g","heatmapcoloring"),b=[];d.coloring==="heatmap"&&(b=[s]),Jbt(t,r,b,m),Ibe(v),Rbe(v);var p=a.c2p(f[0],!0),k=a.c2p(f[f.length-1],!0),M=o.c2p(h[0],!0),T=o.c2p(h[h.length-1],!0),L=[[p,T],[k,T],[k,M],[p,M]],x=v;d.type==="constraint"&&(x=Qbt(v,d._operation)),e2t(l,L,d),t2t(l,x,L,d),r2t(l,v,t,u,d),n2t(l,r,t,u,L)})};function e2t(e,t,r){var n=zd.ensureSingle(e,"g","contourbg"),i=n.selectAll("path").data(r.coloring==="fill"?[0]:[]);i.enter().append("path"),i.exit().remove(),i.attr("d","M"+t.join("L")+"Z").style("stroke","none")}function t2t(e,t,r,n){var i=n.coloring==="fill"||n.type==="constraint"&&n._operation!=="=",a="M"+r.join("L")+"Z";i&&Dbe(t,n);var o=zd.ensureSingle(e,"g","contourfill"),s=o.selectAll("path").data(i?t:[]);s.enter().append("path"),s.exit().remove(),s.each(function(l){var u=(l.prefixBoundary?a:"")+Fbe(l,r);u?G4.select(this).attr("d",u).style("stroke","none"):G4.select(this).remove()})}function Fbe(e,t){var r="",n=0,i=e.edgepaths.map(function(p,k){return k}),a=!0,o,s,l,u,c,f;function h(p){return Math.abs(p[1]-t[0][1])<.01}function d(p){return Math.abs(p[1]-t[2][1])<.01}function v(p){return Math.abs(p[0]-t[0][0])<.01}function m(p){return Math.abs(p[0]-t[2][0])<.01}for(;i.length;){for(f=jy.smoothopen(e.edgepaths[n],e.smoothing),r+=a?f:f.replace(/^M/,"L"),i.splice(i.indexOf(n),1),o=e.edgepaths[n][e.edgepaths[n].length-1],u=-1,l=0;l<4;l++){if(!o){zd.log("Missing end?",n,e);break}for(h(o)&&!m(o)?s=t[1]:v(o)?s=t[0]:d(o)?s=t[3]:m(o)&&(s=t[2]),c=0;c=0&&(s=b,u=c):Math.abs(o[1]-s[1])<.01?Math.abs(o[1]-b[1])<.01&&(b[0]-o[0])*(s[0]-b[0])>=0&&(s=b,u=c):zd.log("endpt to newendpt is not vert. or horz.",o,s,b)}if(o=s,u>=0)break;r+="L"+s}if(u===e.edgepaths.length){zd.log("unclosed perimeter path");break}n=u,a=i.indexOf(n)===-1,a&&(n=i[0],r+="Z")}for(n=0;nUm.MAXCOST*2)break;h&&(s/=2),o=u-s/2,l=o+s*1.5}if(f<=Um.MAXCOST)return c};function i2t(e,t,r,n){var i=t.width/2,a=t.height/2,o=e.x,s=e.y,l=e.theta,u=Math.cos(l)*i,c=Math.sin(l)*i,f=(o>n.center?n.right-o:o-n.left)/(u+Math.abs(Math.sin(l)*a)),h=(s>n.middle?n.bottom-s:s-n.top)/(Math.abs(c)+Math.cos(l)*a);if(f<1||h<1)return 1/0;var d=Um.EDGECOST*(1/(f-1)+1/(h-1));d+=Um.ANGLECOST*l*l;for(var v=o-u,m=s-c,b=o+u,p=s+c,k=0;k{"use strict";var o2t=qa(),IG=tc(),s2t=B4();zbe.exports=function(t){var r=t.contours,n=r.start,i=s2t(r),a=r.size||1,o=Math.floor((i-n)/a)+1,s=r.coloring==="lines"?0:1,l=IG.extractOpts(t);isFinite(a)||(a=1,o=1);var u=l.reversescale?IG.flipScale(l.colorscale):l.colorscale,c=u.length,f=new Array(c),h=new Array(c),d,v,m=l.min,b=l.max;if(r.coloring==="heatmap"){for(v=0;v=b)&&(n<=m&&(n=m),i>=b&&(i=b),o=Math.floor((i-n)/a)+1,s=0),v=0;vm&&(f.unshift(m),h.unshift(h[0])),f[f.length-1]{"use strict";var D8=qa(),qbe=So(),l2t=_8(),u2t=RG();Obe.exports=function(t){var r=D8.select(t).selectAll("g.contour");r.style("opacity",function(n){return n[0].trace.opacity}),r.each(function(n){var i=D8.select(this),a=n[0].trace,o=a.contours,s=a.line,l=o.size||1,u=o.start,c=o.type==="constraint",f=!c&&o.coloring==="lines",h=!c&&o.coloring==="fill",d=f||h?u2t(a):null;i.selectAll("g.contourlevel").each(function(b){D8.select(this).selectAll("path").call(qbe.lineGroupStyle,s.width,f?d(b.level):s.color,s.dash)});var v=o.labelfont;if(i.selectAll("g.contourlabels text").each(function(b){qbe.font(D8.select(this),{weight:v.weight,style:v.style,variant:v.variant,textcase:v.textcase,lineposition:v.lineposition,shadow:v.shadow,family:v.family,size:v.size,color:v.color||(f?d(b.level):s.color)})}),c)i.selectAll("g.contourfill path").style("fill",a.fillcolor);else if(h){var m;i.selectAll("g.contourfill path").style("fill",function(b){return m===void 0&&(m=b.level),d(b.level+.5*l)}),m===void 0&&(m=u),i.selectAll("g.contourbg path").style("fill",d(m-.5*l))}}),l2t(t)}});var z8=ye((jcr,Nbe)=>{"use strict";var Bbe=tc(),c2t=RG(),f2t=B4();function h2t(e,t,r){var n=t.contours,i=t.line,a=n.size||1,o=n.coloring,s=c2t(t,{isColorbar:!0});if(o==="heatmap"){var l=Bbe.extractOpts(t);r._fillgradient=l.reversescale?Bbe.flipScale(l.colorscale):l.colorscale,r._zrange=[l.min,l.max]}else o==="fill"&&(r._fillcolor=s);r._line={color:o==="lines"?s:i.color,width:n.showlines!==!1?i.width:0,dash:i.dash},r._levels={start:n.start,end:f2t(n),size:a}}Nbe.exports={min:"zmin",max:"zmax",calc:h2t}});var DG=ye((Wcr,Ube)=>{"use strict";var q8=ka(),d2t=b8();Ube.exports=function(t,r,n,i,a){a||(a={}),a.isContour=!0;var o=d2t(t,r,n,i,a);return o&&o.forEach(function(s){var l=s.trace;l.contours.type==="constraint"&&(l.fillcolor&&q8.opacity(l.fillcolor)?s.color=q8.addOpacity(l.fillcolor,1):l.contours.showlines&&q8.opacity(l.line.color)&&(s.color=q8.addOpacity(l.line.color,1)))}),o}});var Gbe=ye((Xcr,Vbe)=>{"use strict";Vbe.exports={attributes:_G(),supplyDefaults:ube(),crossTraceDefaults:A8(),calc:AG(),plot:R8().plot,layerName:"contourlayer",style:F8(),colorbar:z8(),hoverPoints:DG(),moduleType:"trace",name:"histogram2dcontour",basePlotModule:mh(),categories:["cartesian","svg","2dMap","contour","histogram","showLegend"],meta:{}}});var jbe=ye((Zcr,Hbe)=>{"use strict";Hbe.exports=Gbe()});var FG=ye((Ycr,Jbe)=>{"use strict";var Wbe=Eo(),v2t=xG(),Ybe=ka(),Xbe=Ybe.addOpacity,p2t=Ybe.opacity,Kbe=E8(),Zbe=Pr().isArrayOrTypedArray,g2t=Kbe.CONSTRAINT_REDUCTION,m2t=Kbe.COMPARISON_OPS2;Jbe.exports=function(t,r,n,i,a,o){var s=r.contours,l,u,c,f=n("contours.operation");if(s._operation=g2t[f],y2t(n,s),f==="="?l=s.showlines=!0:(l=n("contours.showlines"),c=n("fillcolor",Xbe((t.line||{}).color||a,.5))),l){var h=c&&p2t(c)?Xbe(r.fillcolor,1):a;u=n("line.color",h),n("line.width",2),n("line.dash")}n("line.smoothing"),v2t(n,i,u,o)};function y2t(e,t){var r;m2t.indexOf(t.operation)===-1?(e("contours.value",[0,1]),Zbe(t.value)?t.value.length>2?t.value=t.value.slice(2):t.length===0?t.value=[0,1]:t.length<2?(r=parseFloat(t.value[0]),t.value=[r,r+1]):t.value=[parseFloat(t.value[0]),parseFloat(t.value[1])]:Wbe(t.value)&&(r=parseFloat(t.value),t.value=[r,r+1])):(e("contours.value",0),Wbe(t.value)||(Zbe(t.value)?t.value=parseFloat(t.value[0]):t.value=0))}});var e2e=ye((Kcr,Qbe)=>{"use strict";var zG=Pr(),_2t=a8(),x2t=Dg(),b2t=FG(),w2t=C8(),T2t=L8(),A2t=R4(),$be=O4();Qbe.exports=function(t,r,n,i){function a(u,c){return zG.coerce(t,r,$be,u,c)}function o(u){return zG.coerce2(t,r,$be,u)}var s=_2t(t,r,a,i);if(!s){r.visible=!1;return}x2t(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("text"),a("hovertext"),a("hoverongaps"),a("hovertemplate"),a("hovertemplatefallback");var l=a("contours.type")==="constraint";a("connectgaps",zG.isArray1D(r.z)),l?b2t(t,r,a,i,n):(w2t(t,r,a,o),T2t(t,r,a,i)),r.contours&&r.contours.coloring==="heatmap"&&A2t(a,i),a("zorder")}});var r2e=ye((Jcr,t2e)=>{"use strict";t2e.exports={attributes:O4(),supplyDefaults:e2e(),calc:AG(),plot:R8().plot,style:F8(),colorbar:z8(),hoverPoints:DG(),moduleType:"trace",name:"contour",basePlotModule:mh(),categories:["cartesian","svg","2dMap","contour","showLegend"],meta:{}}});var n2e=ye(($cr,i2e)=>{"use strict";i2e.exports=r2e()});var qG=ye((Qcr,l2e)=>{"use strict";var{hovertemplateAttrs:S2t,texttemplateAttrs:M2t,templatefallbackAttrs:a2e}=Ll(),E2t=Pg(),o0=pf(),k2t=Gl(),o2e=Tu(),C2t=Pd().dash,F_=Ao().extendFlat,X0=o0.marker,H4=o0.line,s2e=X0.line;l2e.exports={a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},c:{valType:"data_array",editType:"calc"},sum:{valType:"number",dflt:0,min:0,editType:"calc"},mode:F_({},o0.mode,{dflt:"markers"}),text:F_({},o0.text,{}),texttemplate:M2t({editType:"plot"},{keys:["a","b","c","text"]}),texttemplatefallback:a2e({editType:"plot"}),hovertext:F_({},o0.hovertext,{}),line:{color:H4.color,width:H4.width,dash:C2t,backoff:H4.backoff,shape:F_({},H4.shape,{values:["linear","spline"]}),smoothing:H4.smoothing,editType:"calc"},connectgaps:o0.connectgaps,cliponaxis:o0.cliponaxis,fill:F_({},o0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:E2t(),marker:F_({symbol:X0.symbol,opacity:X0.opacity,angle:X0.angle,angleref:X0.angleref,standoff:X0.standoff,maxdisplayed:X0.maxdisplayed,size:X0.size,sizeref:X0.sizeref,sizemin:X0.sizemin,sizemode:X0.sizemode,line:F_({width:s2e.width,dash:s2e.dash,editType:"calc"},o2e("marker.line")),gradient:X0.gradient,editType:"calc"},o2e("marker")),textfont:o0.textfont,textposition:o0.textposition,selected:o0.selected,unselected:o0.unselected,hoverinfo:F_({},k2t.hoverinfo,{flags:["a","b","c","text","name"]}),hoveron:o0.hoveron,hovertemplate:S2t(),hovertemplatefallback:a2e()}});var h2e=ye((efr,f2e)=>{"use strict";var u2e=Pr(),L2t=Pm(),jT=Ru(),P2t=$p(),I2t=D0(),c2e=uT(),R2t=F0(),D2t=Fg(),F2t=qG();f2e.exports=function(t,r,n,i){function a(h,d){return u2e.coerce(t,r,F2t,h,d)}var o=a("a"),s=a("b"),l=a("c"),u;if(o?(u=o.length,s?(u=Math.min(u,s.length),l&&(u=Math.min(u,l.length))):l?u=Math.min(u,l.length):u=0):s&&l&&(u=Math.min(s.length,l.length)),!u){r.visible=!1;return}r._length=u,a("sum"),a("text"),a("hovertext"),r.hoveron!=="fills"&&(a("hovertemplate"),a("hovertemplatefallback"));var c=u{"use strict";var OG=ho();d2e.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot;return i.aLabel=OG.tickText(a.aaxis,t.a,!0).text,i.bLabel=OG.tickText(a.baxis,t.b,!0).text,i.cLabel=OG.tickText(a.caxis,t.c,!0).text,i}});var y2e=ye((rfr,m2e)=>{"use strict";var BG=Eo(),z2t=z0(),q2t=Dm(),O2t=q0(),B2t=O0().calcMarkerSize,p2e=["a","b","c"],g2e={a:["b","c"],b:["a","c"],c:["a","b"]};m2e.exports=function(t,r){var n=t._fullLayout[r.subplot],i=n.sum,a=r.sum||i,o={a:r.a,b:r.b,c:r.c},s=r.ids,l,u,c,f,h,d;for(l=0;l{"use strict";var N2t=pT();_2e.exports=function(t,r,n){var i=r.plotContainer;i.select(".scatterlayer").selectAll("*").remove();for(var a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:i,layerClipId:r._hasClipOnAxisFalse?r.clipIdRelative:null},l=r.layers.frontplot.select("g.scatterlayer"),u=0;u{"use strict";var U2t=_T();b2e.exports=function(t,r,n,i){var a=U2t(t,r,n,i);if(!a||a[0].index===!1)return;var o=a[0];if(o.index===void 0){var s=1-o.y0/t.ya._length,l=t.xa._length,u=l*s/2,c=l-u;return o.x0=Math.max(Math.min(o.x0,c),u),o.x1=Math.max(Math.min(o.x1,c),u),a}var f=o.cd[o.index],h=o.trace,d=o.subplot;o.a=f.a,o.b=f.b,o.c=f.c,o.xLabelVal=void 0,o.yLabelVal=void 0;var v={};v[h.subplot]={_subplot:d};var m=h._module.formatLabels(f,h,v);o.aLabel=m.aLabel,o.bLabel=m.bLabel,o.cLabel=m.cLabel;var b=f.hi||h.hoverinfo,p=[];function k(T,L){p.push(T._hovertitle+": "+L)}if(!h.hovertemplate){var M=b.split("+");M.indexOf("all")!==-1&&(M=["a","b","c"]),M.indexOf("a")!==-1&&k(d.aaxis,o.aLabel),M.indexOf("b")!==-1&&k(d.baxis,o.bLabel),M.indexOf("c")!==-1&&k(d.caxis,o.cLabel)}return o.extraText=p.join("
"),o.hovertemplate=h.hovertemplate,a}});var A2e=ye((afr,T2e)=>{"use strict";T2e.exports=function(t,r,n,i,a){if(r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),i[a]){var o=i[a];t.a=o.a,t.b=o.b,t.c=o.c}else t.a=r.a,t.b=r.b,t.c=r.c;return t}});var F2e=ye((ofr,D2e)=>{"use strict";var L2e=qa(),V2t=fd(),NG=Oa(),Wy=Pr(),Vm=Wy.strTranslate,O8=Wy._,XT=ka(),B8=So(),j4=xm(),UG=Ao().extendFlat,G2t=Mc(),z_=ho(),S2e=yv(),M2e=ef(),P2e=Cg(),E2e=P2e.freeMode,H2t=P2e.rectMode,VG=qb(),j2t=qf().prepSelect,W2t=qf().selectOnClick,X2t=qf().clearOutline,Z2t=qf().clearSelectionsCache,I2e=Rh();function R2e(e,t){this.id=e.id,this.graphDiv=e.graphDiv,this.init(t),this.makeFramework(t),this.updateFx(t),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}D2e.exports=R2e;var Gm=R2e.prototype;Gm.init=function(e){this.container=e._ternarylayer,this.defs=e._defs,this.layoutId=e._uid,this.traceHash={},this.layers={}};Gm.plot=function(e,t){var r=this,n=t[r.id],i=t._size;r._hasClipOnAxisFalse=!1;for(var a=0;aWT*u?(p=u,b=p*WT):(b=l,p=b/WT),k=o*b/l,M=s*p/u,v=t.l+t.w*i-b/2,m=t.t+t.h*(1-a)-p/2,r.x0=v,r.y0=m,r.w=b,r.h=p,r.sum=c,r.xaxis={type:"linear",range:[f+2*d-c,c-f-2*h],domain:[i-k/2,i+k/2],_id:"x"},j4(r.xaxis,r.graphDiv._fullLayout),r.xaxis.setScale(),r.xaxis.isPtWithinRange=function(V){return V.a>=r.aaxis.range[0]&&V.a<=r.aaxis.range[1]&&V.b>=r.baxis.range[1]&&V.b<=r.baxis.range[0]&&V.c>=r.caxis.range[1]&&V.c<=r.caxis.range[0]},r.yaxis={type:"linear",range:[f,c-h-d],domain:[a-M/2,a+M/2],_id:"y"},j4(r.yaxis,r.graphDiv._fullLayout),r.yaxis.setScale(),r.yaxis.isPtWithinRange=function(){return!0};var T=r.yaxis.domain[0],L=r.aaxis=UG({},e.aaxis,{range:[f,c-h-d],side:"left",tickangle:(+e.aaxis.tickangle||0)-30,domain:[T,T+M*WT],anchor:"free",position:0,_id:"y",_length:b});j4(L,r.graphDiv._fullLayout),L.setScale();var x=r.baxis=UG({},e.baxis,{range:[c-f-d,h],side:"bottom",domain:r.xaxis.domain,anchor:"free",position:0,_id:"x",_length:b});j4(x,r.graphDiv._fullLayout),x.setScale();var C=r.caxis=UG({},e.caxis,{range:[c-f-h,d],side:"right",tickangle:(+e.caxis.tickangle||0)+30,domain:[T,T+M*WT],anchor:"free",position:0,_id:"y",_length:b});j4(C,r.graphDiv._fullLayout),C.setScale();var S="M"+v+","+(m+p)+"h"+b+"l-"+b/2+",-"+p+"Z";r.clipDef.select("path").attr("d",S),r.layers.plotbg.select("path").attr("d",S);var g="M0,"+p+"h"+b+"l-"+b/2+",-"+p+"Z";r.clipDefRelative.select("path").attr("d",g);var P=Vm(v,m);r.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",P),r.clipDefRelative.select("path").attr("transform",null);var E=Vm(v-x._offset,m+p);r.layers.baxis.attr("transform",E),r.layers.bgrid.attr("transform",E);var z=Vm(v+b/2,m)+"rotate(30)"+Vm(0,-L._offset);r.layers.aaxis.attr("transform",z),r.layers.agrid.attr("transform",z);var q=Vm(v+b/2,m)+"rotate(-30)"+Vm(0,-C._offset);r.layers.caxis.attr("transform",q),r.layers.cgrid.attr("transform",q),r.drawAxes(!0),r.layers.aline.select("path").attr("d",L.showline?"M"+v+","+(m+p)+"l"+b/2+",-"+p:"M0,0").call(XT.stroke,L.linecolor||"#000").style("stroke-width",(L.linewidth||0)+"px"),r.layers.bline.select("path").attr("d",x.showline?"M"+v+","+(m+p)+"h"+b:"M0,0").call(XT.stroke,x.linecolor||"#000").style("stroke-width",(x.linewidth||0)+"px"),r.layers.cline.select("path").attr("d",C.showline?"M"+(v+b/2)+","+m+"l"+b/2+","+p:"M0,0").call(XT.stroke,C.linecolor||"#000").style("stroke-width",(C.linewidth||0)+"px"),r.graphDiv._context.staticPlot||r.initInteractions(),B8.setClipUrl(r.layers.frontplot,r._hasClipOnAxisFalse?null:r.clipId,r.graphDiv)};Gm.drawAxes=function(e){var t=this,r=t.graphDiv,n=t.id.slice(7)+"title",i=t.layers,a=t.aaxis,o=t.baxis,s=t.caxis;if(t.drawAx(a),t.drawAx(o),t.drawAx(s),e){var l=Math.max(a.showticklabels?a.tickfont.size/2:0,(s.showticklabels?s.tickfont.size*.75:0)+(s.ticks==="outside"?s.ticklen*.87:0)),u=(o.showticklabels?o.tickfont.size:0)+(o.ticks==="outside"?o.ticklen:0)+3;i["a-title"]=VG.draw(r,"a"+n,{propContainer:a,propName:t.id+".aaxis.title.text",placeholder:O8(r,"Click to enter Component A title"),attributes:{x:t.x0+t.w/2,y:t.y0-a.title.font.size/3-l,"text-anchor":"middle"}}),i["b-title"]=VG.draw(r,"b"+n,{propContainer:o,propName:t.id+".baxis.title.text",placeholder:O8(r,"Click to enter Component B title"),attributes:{x:t.x0-u,y:t.y0+t.h+o.title.font.size*.83+u,"text-anchor":"middle"}}),i["c-title"]=VG.draw(r,"c"+n,{propContainer:s,propName:t.id+".caxis.title.text",placeholder:O8(r,"Click to enter Component C title"),attributes:{x:t.x0+t.w+u,y:t.y0+t.h+s.title.font.size*.83+u,"text-anchor":"middle"}})}};Gm.drawAx=function(e){var t=this,r=t.graphDiv,n=e._name,i=n.charAt(0),a=e._id,o=t.layers[n],s=30,l=i+"tickLayout",u=Y2t(e);t[l]!==u&&(o.selectAll("."+a+"tick").remove(),t[l]=u),e.setScale();var c=z_.calcTicks(e),f=z_.clipEnds(e,c),h=z_.makeTransTickFn(e),d=z_.getTickSigns(e)[2],v=Wy.deg2rad(s),m=d*(e.linewidth||1)/2,b=d*e.ticklen,p=t.w,k=t.h,M=i==="b"?"M0,"+m+"l"+Math.sin(v)*b+","+Math.cos(v)*b:"M"+m+",0l"+Math.cos(v)*b+","+-Math.sin(v)*b,T={a:"M0,0l"+k+",-"+p/2,b:"M0,0l-"+p/2+",-"+k,c:"M0,0l-"+k+","+p/2}[i];z_.drawTicks(r,e,{vals:e.ticks==="inside"?f:c,layer:o,path:M,transFn:h,crisp:!1}),z_.drawGrid(r,e,{vals:f,layer:t.layers[i+"grid"],path:T,transFn:h,crisp:!1}),z_.drawLabels(r,e,{vals:c,layer:o,transFn:h,labelFns:z_.makeLabelFns(e,0,s)})};function Y2t(e){return e.ticks+String(e.ticklen)+String(e.showticklabels)}var yd=I2e.MINZOOM/2+.87,K2t="m-0.87,.5h"+yd+"v3h-"+(yd+5.2)+"l"+(yd/2+2.6)+",-"+(yd*.87+4.5)+"l2.6,1.5l-"+yd/2+","+yd*.87+"Z",J2t="m0.87,.5h-"+yd+"v3h"+(yd+5.2)+"l-"+(yd/2+2.6)+",-"+(yd*.87+4.5)+"l-2.6,1.5l"+yd/2+","+yd*.87+"Z",$2t="m0,1l"+yd/2+","+yd*.87+"l2.6,-1.5l-"+(yd/2+2.6)+",-"+(yd*.87+4.5)+"l-"+(yd/2+2.6)+","+(yd*.87+4.5)+"l2.6,1.5l"+yd/2+",-"+yd*.87+"Z",Q2t="m0.5,0.5h5v-2h-5v-5h-2v5h-5v2h5v5h2Z",k2e=!0;Gm.clearOutline=function(){Z2t(this.dragOptions),X2t(this.dragOptions.gd)};Gm.initInteractions=function(){var e=this,t=e.layers.plotbg.select("path").node(),r=e.graphDiv,n=r._fullLayout._zoomlayer,i,a;this.dragOptions={element:t,gd:r,plotinfo:{id:e.id,domain:r._fullLayout[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis},subplot:e.id,prepFn:function(E,z,q){e.dragOptions.xaxes=[e.xaxis],e.dragOptions.yaxes=[e.yaxis],i=r._fullLayout._invScaleX,a=r._fullLayout._invScaleY;var V=e.dragOptions.dragmode=r._fullLayout.dragmode;E2e(V)?e.dragOptions.minDrag=1:e.dragOptions.minDrag=void 0,V==="zoom"?(e.dragOptions.moveFn=x,e.dragOptions.clickFn=p,e.dragOptions.doneFn=C,k(E,z,q)):V==="pan"?(e.dragOptions.moveFn=g,e.dragOptions.clickFn=p,e.dragOptions.doneFn=P,S(),e.clearOutline(r)):(H2t(V)||E2e(V))&&j2t(E,z,q,e.dragOptions,V)}};var o,s,l,u,c,f,h,d,v,m;function b(E){var z={};return z[e.id+".aaxis.min"]=E.a,z[e.id+".baxis.min"]=E.b,z[e.id+".caxis.min"]=E.c,z}function p(E,z){var q=r._fullLayout.clickmode;C2e(r),E===2&&(r.emit("plotly_doubleclick",null),NG.call("_guiRelayout",r,b({a:0,b:0,c:0}))),q.indexOf("select")>-1&&E===1&&W2t(z,r,[e.xaxis],[e.yaxis],e.id,e.dragOptions),q.indexOf("event")>-1&&M2e.click(r,z,e.id)}function k(E,z,q){var V=t.getBoundingClientRect();o=z-V.left,s=q-V.top,r._fullLayout._calcInverseTransform(r);var G=r._fullLayout._invTransform,Z=Wy.apply3DTransform(G)(o,s);o=Z[0],s=Z[1],l={a:e.aaxis.range[0],b:e.baxis.range[1],c:e.caxis.range[1]},c=l,u=e.aaxis.range[1]-l.a,f=V2t(e.graphDiv._fullLayout[e.id].bgcolor).getLuminance(),h="M0,"+e.h+"L"+e.w/2+", 0L"+e.w+","+e.h+"Z",d=!1,v=n.append("path").attr("class","zoombox").attr("transform",Vm(e.x0,e.y0)).style({fill:f>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("d",h),m=n.append("path").attr("class","zoombox-corners").attr("transform",Vm(e.x0,e.y0)).style({fill:XT.background,stroke:XT.defaultLine,"stroke-width":1,opacity:0}).attr("d","M0,0Z"),e.clearOutline(r)}function M(E,z){return 1-z/e.h}function T(E,z){return 1-(E+(e.h-z)/Math.sqrt(3))/e.w}function L(E,z){return(E-(e.h-z)/Math.sqrt(3))/e.w}function x(E,z){var q=o+E*i,V=s+z*a,G=Math.max(0,Math.min(1,M(o,s),M(q,V))),Z=Math.max(0,Math.min(1,T(o,s),T(q,V))),j=Math.max(0,Math.min(1,L(o,s),L(q,V))),N=(G/2+j)*e.w,H=(1-G/2-Z)*e.w,ie=(N+H)/2,ae=H-N,_e=(1-G)*e.h,Ee=_e-ae/WT;ae.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),m.transition().style("opacity",1).duration(200),d=!0),r.emit("plotly_relayouting",b(c))}function C(){C2e(r),c!==l&&(NG.call("_guiRelayout",r,b(c)),k2e&&r.data&&r._context.showTips&&(Wy.notifier(O8(r,"Double-click to zoom back out"),"long",r),k2e=!1))}function S(){l={a:e.aaxis.range[0],b:e.baxis.range[1],c:e.caxis.range[1]},c=l}function g(E,z){var q=E/e.xaxis._m,V=z/e.yaxis._m;c={a:l.a-V,b:l.b+(q+V)/2,c:l.c-(q-V)/2};var G=[c.a,c.b,c.c].sort(Wy.sorterAsc),Z={a:G.indexOf(c.a),b:G.indexOf(c.b),c:G.indexOf(c.c)};G[0]<0&&(G[1]+G[0]/2<0?(G[2]+=G[0]+G[1],G[0]=G[1]=0):(G[2]+=G[0]/2,G[1]+=G[0]/2,G[0]=0),c={a:G[Z.a],b:G[Z.b],c:G[Z.c]},z=(l.a-c.a)*e.yaxis._m,E=(l.c-c.c-l.b+c.b)*e.xaxis._m);var j=Vm(e.x0+E,e.y0+z);e.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",j);var N=Vm(-E,-z);e.clipDefRelative.select("path").attr("transform",N),e.aaxis.range=[c.a,e.sum-c.b-c.c],e.baxis.range=[e.sum-c.a-c.c,c.b],e.caxis.range=[e.sum-c.a-c.b,c.c],e.drawAxes(!1),e._hasClipOnAxisFalse&&e.plotContainer.select(".scatterlayer").selectAll(".trace").call(B8.hideOutsideRangePoints,e),r.emit("plotly_relayouting",b(c))}function P(){NG.call("_guiRelayout",r,b(c))}t.onmousemove=function(E){M2e.hover(r,E,e.id),r._fullLayout._lasthover=t,r._fullLayout._hoversubplot=e.id},t.onmouseout=function(E){r._dragging||S2e.unhover(r,E)},S2e.init(this.dragOptions)};function C2e(e){L2e.select(e).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}});var jG=ye((sfr,z2e)=>{"use strict";var ewt=Ih(),twt=Cc().attributes,su=Rd(),rwt=mc().overrideAll,GG=Ao().extendFlat,HG={title:{text:su.title.text,font:su.title.font},color:su.color,tickmode:su.minor.tickmode,nticks:GG({},su.nticks,{dflt:6,min:1}),tick0:su.tick0,dtick:su.dtick,tickvals:su.tickvals,ticktext:su.ticktext,ticks:su.ticks,ticklen:su.ticklen,tickwidth:su.tickwidth,tickcolor:su.tickcolor,ticklabelstep:su.ticklabelstep,showticklabels:su.showticklabels,labelalias:su.labelalias,showtickprefix:su.showtickprefix,tickprefix:su.tickprefix,showticksuffix:su.showticksuffix,ticksuffix:su.ticksuffix,showexponent:su.showexponent,exponentformat:su.exponentformat,minexponent:su.minexponent,separatethousands:su.separatethousands,tickfont:su.tickfont,tickangle:su.tickangle,tickformat:su.tickformat,tickformatstops:su.tickformatstops,hoverformat:su.hoverformat,showline:GG({},su.showline,{dflt:!0}),linecolor:su.linecolor,linewidth:su.linewidth,showgrid:GG({},su.showgrid,{dflt:!0}),gridcolor:su.gridcolor,gridwidth:su.gridwidth,griddash:su.griddash,layer:su.layer,min:{valType:"number",dflt:0,min:0}},N8=z2e.exports=rwt({domain:twt({name:"ternary"}),bgcolor:{valType:"color",dflt:ewt.background},sum:{valType:"number",dflt:1,min:0},aaxis:HG,baxis:HG,caxis:HG},"plot","from-root");N8.uirevision={valType:"any",editType:"none"};N8.aaxis.uirevision=N8.baxis.uirevision=N8.caxis.uirevision={valType:"any",editType:"none"}});var q_=ye((lfr,q2e)=>{"use strict";var iwt=Pr(),nwt=vl(),awt=Cc().defaults;q2e.exports=function(t,r,n,i){var a=i.type,o=i.attributes,s=i.handleDefaults,l=i.partition||"x",u=r._subplots[a],c=u.length,f=c&&u[0].replace(/\d+$/,""),h,d;function v(k,M){return iwt.coerce(h,d,o,k,M)}for(var m=0;m{"use strict";var owt=ka(),swt=vl(),U8=Pr(),lwt=q_(),uwt=s_(),cwt=l_(),fwt=q3(),hwt=Pb(),dwt=c4(),B2e=jG(),O2e=["aaxis","baxis","caxis"];N2e.exports=function(t,r,n){lwt(t,r,n,{type:"ternary",attributes:B2e,handleDefaults:vwt,font:r.font,paper_bgcolor:r.paper_bgcolor})};function vwt(e,t,r,n){var i=r("bgcolor"),a=r("sum");n.bgColor=owt.combine(i,n.paper_bgcolor);for(var o,s,l,u=0;u=a&&(c.min=0,f.min=0,h.min=0,e.aaxis&&delete e.aaxis.min,e.baxis&&delete e.baxis.min,e.caxis&&delete e.caxis.min)}function pwt(e,t,r,n){var i=B2e[t._name];function a(d,v){return U8.coerce(e,t,i,d,v)}a("uirevision",n.uirevision),t.type="linear";var o=a("color"),s=o!==i.color.dflt?o:r.font.color,l=t._name,u=l.charAt(0).toUpperCase(),c="Component "+u,f=a("title.text",c);t._hovertitle=f===c?f:u,U8.coerceFont(a,"title.font",r.font,{overrideDflt:{size:U8.bigFont(r.font.size),color:s}}),a("min"),hwt(e,t,a,"linear"),cwt(e,t,a,"linear"),uwt(e,t,a,"linear",{noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0}),fwt(e,t,a,{outerTicks:!0});var h=a("showticklabels");h&&(U8.coerceFont(a,"tickfont",r.font,{overrideDflt:{color:s}}),a("tickangle"),a("tickformat")),dwt(e,t,a,{dfltColor:o,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:i}),a("hoverformat"),a("layer")}});var V2e=ye(Z0=>{"use strict";var gwt=F2e(),mwt=Id().getSubplotCalcData,ywt=Pr().counterRegex,ZT="ternary";Z0.name=ZT;var _wt=Z0.attr="subplot";Z0.idRoot=ZT;Z0.idRegex=Z0.attrRegex=ywt(ZT);var xwt=Z0.attributes={};xwt[_wt]={valType:"subplotid",dflt:"ternary",editType:"calc"};Z0.layoutAttributes=jG();Z0.supplyLayoutDefaults=U2e();Z0.plot=function(t){for(var r=t._fullLayout,n=t.calcdata,i=r._subplots[ZT],a=0;a{"use strict";G2e.exports={attributes:qG(),supplyDefaults:h2e(),colorbar:Qd(),formatLabels:v2e(),calc:y2e(),plot:x2e(),style:sp().style,styleOnSelect:sp().styleOnSelect,hoverPoints:w2e(),selectPoints:xT(),eventData:A2e(),moduleType:"trace",name:"scatterternary",basePlotModule:V2e(),categories:["ternary","symbols","showLegend","scatter-like"],meta:{}}});var W2e=ye((hfr,j2e)=>{"use strict";j2e.exports=H2e()});var WG=ye((dfr,Z2e)=>{"use strict";var Oh=C4(),YT=Ao().extendFlat,X2e=vf().axisHoverFormat;Z2e.exports={y:Oh.y,x:Oh.x,x0:Oh.x0,y0:Oh.y0,xhoverformat:X2e("x"),yhoverformat:X2e("y"),name:YT({},Oh.name,{}),orientation:YT({},Oh.orientation,{}),bandwidth:{valType:"number",min:0,editType:"calc"},scalegroup:{valType:"string",dflt:"",editType:"calc"},scalemode:{valType:"enumerated",values:["width","count"],dflt:"width",editType:"calc"},spanmode:{valType:"enumerated",values:["soft","hard","manual"],dflt:"soft",editType:"calc"},span:{valType:"info_array",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}],editType:"calc"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:Oh.fillcolor,points:YT({},Oh.boxpoints,{}),jitter:YT({},Oh.jitter,{}),pointpos:YT({},Oh.pointpos,{}),width:YT({},Oh.width,{}),marker:Oh.marker,text:Oh.text,hovertext:Oh.hovertext,hovertemplate:Oh.hovertemplate,hovertemplatefallback:Oh.hovertemplatefallback,quartilemethod:Oh.quartilemethod,box:{visible:{valType:"boolean",dflt:!1,editType:"plot"},width:{valType:"number",min:0,max:1,dflt:.25,editType:"plot"},fillcolor:{valType:"color",editType:"style"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,editType:"style"},editType:"style"},editType:"plot"},meanline:{visible:{valType:"boolean",dflt:!1,editType:"plot"},color:{valType:"color",editType:"style"},width:{valType:"number",min:0,editType:"style"},editType:"plot"},side:{valType:"enumerated",values:["both","positive","negative"],dflt:"both",editType:"calc"},offsetgroup:Oh.offsetgroup,alignmentgroup:Oh.alignmentgroup,selected:Oh.selected,unselected:Oh.unselected,hoveron:{valType:"flaglist",flags:["violins","points","kde"],dflt:"violins+points+kde",extras:["all"],editType:"style"},zorder:Oh.zorder}});var YG=ye((vfr,Y2e)=>{"use strict";var XG=L4(),ZG=Pr().extendFlat;Y2e.exports={violinmode:ZG({},XG.boxmode,{}),violingap:ZG({},XG.boxgap,{}),violingroupgap:ZG({},XG.boxgroupgap,{})}});var ewe=ye((pfr,Q2e)=>{"use strict";var K2e=Pr(),bwt=ka(),J2e=I4(),$2e=WG();Q2e.exports=function(t,r,n,i){function a(L,x){return K2e.coerce(t,r,$2e,L,x)}function o(L,x){return K2e.coerce2(t,r,$2e,L,x)}if(J2e.handleSampleDefaults(t,r,a,i),r.visible!==!1){a("bandwidth"),a("side");var s=a("width");s||(a("scalegroup",r.name),a("scalemode"));var l=a("span"),u;Array.isArray(l)&&(u="manual"),a("spanmode",u);var c=a("line.color",(t.marker||{}).color||n),f=a("line.width"),h=a("fillcolor",bwt.addOpacity(r.line.color,.5));J2e.handlePointsDefaults(t,r,a,{prefix:""});var d=o("box.width"),v=o("box.fillcolor",h),m=o("box.line.color",c),b=o("box.line.width",f),p=a("box.visible",!!(d||v||m||b));p||(r.box={visible:!1});var k=o("meanline.color",c),M=o("meanline.width",f),T=a("meanline.visible",!!(k||M));T||(r.meanline={visible:!1}),a("quartilemethod"),a("zorder")}}});var rwe=ye((gfr,twe)=>{"use strict";var wwt=Pr(),Twt=YG(),Awt=QI();twe.exports=function(t,r,n){function i(a,o){return wwt.coerce(t,r,Twt,a,o)}Awt._supply(t,r,n,i,"violin")}});var V8=ye(y2=>{"use strict";var Swt=Pr(),Mwt={gaussian:function(e){return 1/Math.sqrt(2*Math.PI)*Math.exp(-.5*e*e)}};y2.makeKDE=function(e,t,r){var n=r.length,i=Mwt.gaussian,a=e.bandwidth,o=1/(n*a);return function(s){for(var l=0,u=0;u{"use strict";var KG=Pr(),JG=ho(),Ewt=VV(),iwe=V8(),kwt=fs().BADNUM;nwe.exports=function(t,r){var n=Ewt(t,r);if(n[0].t.empty)return n;for(var i=t._fullLayout,a=JG.getFromId(t,r[r.orientation==="h"?"xaxis":"yaxis"]),o=1/0,s=-1/0,l=0,u=0,c=0;c{"use strict";var Iwt=t8().setPositionOffset,owe=["v","h"];swe.exports=function(t,r){for(var n=t.calcdata,i=r.xaxis,a=r.yaxis,o=0;o{"use strict";var $G=qa(),QG=Pr(),Rwt=So(),eH=r8(),Dwt=MU(),Fwt=V8();uwe.exports=function(t,r,n,i){var a=t._context.staticPlot,o=t._fullLayout,s=r.xaxis,l=r.yaxis;function u(c,f){var h=Dwt(c,{xaxis:s,yaxis:l,trace:f,connectGaps:!0,baseTolerance:.75,shape:"spline",simplify:!0,linearized:!0});return Rwt.smoothopen(h[0],1)}QG.makeTraceGroups(i,n,"trace violins").each(function(c){var f=$G.select(this),h=c[0],d=h.t,v=h.trace;if(v.visible!==!0||d.empty){f.remove();return}var m=d.bPos,b=d.bdPos,p=r[d.valLetter+"axis"],k=r[d.posLetter+"axis"],M=v.side==="both",T=M||v.side==="positive",L=M||v.side==="negative",x=f.selectAll("path.violin").data(QG.identity);x.enter().append("path").style("vector-effect",a?"none":"non-scaling-stroke").attr("class","violin"),x.exit().remove(),x.each(function(V){var G=$G.select(this),Z=V.density,j=Z.length,N=k.c2l(V.pos+m,!0),H=k.l2p(N),ie;if(v.width)ie=d.maxKDE/b;else{var ae=o._violinScaleGroupStats[v.scalegroup];ie=v.scalemode==="count"?ae.maxKDE/b*(ae.maxCount/V.pts.length):ae.maxKDE/b}var _e,Ee,Ce,ge,re,Se,ke;if(T){for(Se=new Array(j),ge=0;ge{"use strict";var fwe=qa(),KT=ka(),zwt=sp().stylePoints;hwe.exports=function(t){var r=fwe.select(t).selectAll("g.trace.violins");r.style("opacity",function(n){return n[0].trace.opacity}),r.each(function(n){var i=n[0].trace,a=fwe.select(this),o=i.box||{},s=o.line||{},l=i.meanline||{},u=l.width;a.selectAll("path.violin").style("stroke-width",i.line.width+"px").call(KT.stroke,i.line.color).call(KT.fill,i.fillcolor),a.selectAll("path.box").style("stroke-width",s.width+"px").call(KT.stroke,s.color).call(KT.fill,o.fillcolor);var c={"stroke-width":u+"px","stroke-dasharray":2*u+"px,"+u+"px"};a.selectAll("path.mean").style(c).call(KT.stroke,l.color),a.selectAll("path.meanline").style(c).call(KT.stroke,l.color),zwt(a,i,t)})}});var mwe=ye((wfr,gwe)=>{"use strict";var qwt=ka(),tH=Pr(),Owt=ho(),vwe=XV(),pwe=V8();gwe.exports=function(t,r,n,i,a){a||(a={});var o=a.hoverLayer,s=t.cd,l=s[0].trace,u=l.hoveron,c=u.indexOf("violins")!==-1,f=u.indexOf("kde")!==-1,h=[],d,v;if(c||f){var m=vwe.hoverOnBoxes(t,r,n,i);if(f&&m.length>0){var b=t.xa,p=t.ya,k,M,T,L,x;l.orientation==="h"?(x=r,k="y",T=p,M="x",L=b):(x=n,k="x",T=b,M="y",L=p);var C=s[t.index];if(x>=C.span[0]&&x<=C.span[1]){var S=tH.extendFlat({},t),g=L.c2p(x,!0),P=pwe.getKdeValue(C,l,x),E=pwe.getPositionOnKdePath(C,l,g),z=T._offset,q=T._length;S[k+"0"]=E[0],S[k+"1"]=E[1],S[M+"0"]=S[M+"1"]=g,S[M+"Label"]=M+": "+Owt.hoverLabelText(L,x,l[M+"hoverformat"])+", "+s[0].t.labels.kde+" "+P.toFixed(3);for(var V=0,G=0;G{"use strict";ywe.exports={attributes:WG(),layoutAttributes:YG(),supplyDefaults:ewe(),crossTraceDefaults:I4().crossTraceDefaults,supplyLayoutDefaults:rwe(),calc:awe(),crossTraceCalc:lwe(),plot:cwe(),style:dwe(),styleOnSelect:sp().styleOnSelect,hoverPoints:mwe(),selectPoints:ZV(),moduleType:"trace",name:"violin",basePlotModule:mh(),categories:["cartesian","svg","symbols","oriented","box-violin","showLegend","violinLayout","zoomScale"],meta:{}}});var bwe=ye((Afr,xwe)=>{"use strict";xwe.exports=_we()});var Twe=ye((Sfr,wwe)=>{"use strict";wwe.exports={eventDataKeys:["percentInitial","percentPrevious","percentTotal"]}});var iH=ye((Mfr,Ewe)=>{"use strict";var jc=qm(),rH=pf().line,Bwt=Gl(),Awe=vf().axisHoverFormat,{hovertemplateAttrs:Nwt,texttemplateAttrs:Uwt,templatefallbackAttrs:Swe}=Ll(),Mwe=Twe(),Xy=Ao().extendFlat,Vwt=ka();Ewe.exports={x:jc.x,x0:jc.x0,dx:jc.dx,y:jc.y,y0:jc.y0,dy:jc.dy,xperiod:jc.xperiod,yperiod:jc.yperiod,xperiod0:jc.xperiod0,yperiod0:jc.yperiod0,xperiodalignment:jc.xperiodalignment,yperiodalignment:jc.yperiodalignment,xhoverformat:Awe("x"),yhoverformat:Awe("y"),hovertext:jc.hovertext,hovertemplate:Nwt({},{keys:Mwe.eventDataKeys}),hovertemplatefallback:Swe(),hoverinfo:Xy({},Bwt.hoverinfo,{flags:["name","x","y","text","percent initial","percent previous","percent total"]}),textinfo:{valType:"flaglist",flags:["label","text","percent initial","percent previous","percent total","value"],extras:["none"],editType:"plot",arrayOk:!1},texttemplate:Uwt({editType:"plot"},{keys:Mwe.eventDataKeys.concat(["label","value"])}),texttemplatefallback:Swe({editType:"plot"}),text:jc.text,textposition:jc.textposition,insidetextanchor:Xy({},jc.insidetextanchor,{dflt:"middle"}),textangle:Xy({},jc.textangle,{dflt:0}),textfont:jc.textfont,insidetextfont:jc.insidetextfont,outsidetextfont:jc.outsidetextfont,constraintext:jc.constraintext,cliponaxis:jc.cliponaxis,orientation:Xy({},jc.orientation,{}),offset:Xy({},jc.offset,{arrayOk:!1}),width:Xy({},jc.width,{arrayOk:!1}),marker:Gwt(),connector:{fillcolor:{valType:"color",editType:"style"},line:{color:Xy({},rH.color,{dflt:Vwt.defaultLine}),width:Xy({},rH.width,{dflt:0,editType:"plot"}),dash:rH.dash,editType:"style"},visible:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},offsetgroup:jc.offsetgroup,alignmentgroup:jc.alignmentgroup,zorder:jc.zorder};function Gwt(){var e=Xy({},jc.marker);return delete e.pattern,delete e.cornerradius,e}});var nH=ye((Efr,kwe)=>{"use strict";kwe.exports={funnelmode:{valType:"enumerated",values:["stack","group","overlay"],dflt:"stack",editType:"calc"},funnelgap:{valType:"number",min:0,max:1,editType:"calc"},funnelgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}});var oH=ye((kfr,Lwe)=>{"use strict";var G8=Pr(),Hwt=r2(),jwt=i0().handleText,Wwt=lT(),Xwt=Dg(),Cwe=iH(),aH=ka();function Zwt(e,t,r,n){function i(f,h){return G8.coerce(e,t,Cwe,f,h)}var a=Wwt(e,t,n,i);if(!a){t.visible=!1;return}Xwt(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("orientation",t.y&&!t.x?"v":"h"),i("offset"),i("width");var o=i("text");i("hovertext"),i("hovertemplate"),i("hovertemplatefallback");var s=i("textposition");jwt(e,t,n,i,s,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),t.textposition!=="none"&&!t.texttemplate&&i("textinfo",G8.isArrayOrTypedArray(o)?"text+value":"value");var l=i("marker.color",r);i("marker.line.color",aH.defaultLine),i("marker.line.width");var u=i("connector.visible");if(u){i("connector.fillcolor",Ywt(l));var c=i("connector.line.width");c&&(i("connector.line.color"),i("connector.line.dash"))}i("zorder")}function Ywt(e){var t=G8.isArrayOrTypedArray(e)?"#000":e;return aH.addOpacity(t,.5*aH.opacity(t))}function Kwt(e,t){var r,n;function i(o){return G8.coerce(n._input,n,Cwe,o)}for(var a=0;a{"use strict";var Jwt=Pr(),$wt=nH();Pwe.exports=function(e,t,r){var n=!1;function i(s,l){return Jwt.coerce(e,t,$wt,s,l)}for(var a=0;a{"use strict";var JT=Pr();Rwe.exports=function(t,r){for(var n=0;n{"use strict";var Fwe=ho(),zwe=zg(),Qwt=Dwe(),e3t=q0(),W4=fs().BADNUM;qwe.exports=function(t,r){var n=Fwe.getFromId(t,r.xaxis||"x"),i=Fwe.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c,f,h;r.orientation==="h"?(a=n.makeCalcdata(r,"x"),s=i.makeCalcdata(r,"y"),l=zwe(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y"),s=n.makeCalcdata(r,"x"),l=zwe(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;var d=Math.min(o.length,a.length),v=new Array(d);for(r._base=[],f=0;f{"use strict";var Bwe=i2().setGroupPositions;Nwe.exports=function(t,r){var n=t._fullLayout,i=t._fullData,a=t.calcdata,o=r.xaxis,s=r.yaxis,l=[],u=[],c=[],f,h;for(h=0;h{"use strict";var H8=qa(),B_=Pr(),Vwe=So(),O_=fs().BADNUM,t3t=p2(),r3t=bv().clearMinTextSize;Hwe.exports=function(t,r,n,i){var a=t._fullLayout;r3t("funnel",a),i3t(t,r,n,i),n3t(t,r,n,i),t3t.plot(t,r,n,i,{mode:a.funnelmode,norm:a.funnelmode,gap:a.funnelgap,groupgap:a.funnelgroupgap})};function i3t(e,t,r,n){var i=t.xaxis,a=t.yaxis;B_.makeTraceGroups(n,r,"trace bars").each(function(o){var s=H8.select(this),l=o[0].trace,u=B_.ensureSingle(s,"g","regions");if(!l.connector||!l.connector.visible){u.remove();return}var c=l.orientation==="h",f=u.selectAll("g.region").data(B_.identity);f.enter().append("g").classed("region",!0),f.exit().remove();var h=f.size();f.each(function(d,v){if(!(v!==h-1&&!d.cNext)){var m=Gwe(d,i,a,c),b=m[0],p=m[1],k="";b[0]!==O_&&p[0]!==O_&&b[1]!==O_&&p[1]!==O_&&b[2]!==O_&&p[2]!==O_&&b[3]!==O_&&p[3]!==O_&&(c?k+="M"+b[0]+","+p[1]+"L"+b[2]+","+p[2]+"H"+b[3]+"L"+b[1]+","+p[1]+"Z":k+="M"+b[1]+","+p[1]+"L"+b[2]+","+p[3]+"V"+p[2]+"L"+b[1]+","+p[0]+"Z"),k===""&&(k="M0,0Z"),B_.ensureSingle(H8.select(this),"path").attr("d",k).call(Vwe.setClipUrl,t.layerClipId,e)}})})}function n3t(e,t,r,n){var i=t.xaxis,a=t.yaxis;B_.makeTraceGroups(n,r,"trace bars").each(function(o){var s=H8.select(this),l=o[0].trace,u=B_.ensureSingle(s,"g","lines");if(!l.connector||!l.connector.visible||!l.connector.line.width){u.remove();return}var c=l.orientation==="h",f=u.selectAll("g.line").data(B_.identity);f.enter().append("g").classed("line",!0),f.exit().remove();var h=f.size();f.each(function(d,v){if(!(v!==h-1&&!d.cNext)){var m=Gwe(d,i,a,c),b=m[0],p=m[1],k="";b[3]!==void 0&&p[3]!==void 0&&(c?(k+="M"+b[0]+","+p[1]+"L"+b[2]+","+p[2],k+="M"+b[1]+","+p[1]+"L"+b[3]+","+p[2]):(k+="M"+b[1]+","+p[1]+"L"+b[2]+","+p[3],k+="M"+b[1]+","+p[0]+"L"+b[2]+","+p[2])),k===""&&(k="M0,0Z"),B_.ensureSingle(H8.select(this),"path").attr("d",k).call(Vwe.setClipUrl,t.layerClipId,e)}})})}function Gwe(e,t,r,n){var i=[],a=[],o=n?t:r,s=n?r:t;return i[0]=o.c2p(e.s0,!0),a[0]=s.c2p(e.p0,!0),i[1]=o.c2p(e.s1,!0),a[1]=s.c2p(e.p1,!0),i[2]=o.c2p(e.nextS0,!0),a[2]=s.c2p(e.nextP0,!0),i[3]=o.c2p(e.nextS1,!0),a[3]=s.c2p(e.nextP1,!0),n?[i,a]:[a,i]}});var Zwe=ye((Dfr,Xwe)=>{"use strict";var X4=qa(),Wwe=So(),lH=ka(),a3t=X1().DESELECTDIM,o3t=V0(),s3t=bv().resizeText,l3t=o3t.styleTextPoints;function u3t(e,t,r){var n=r||X4.select(e).selectAll('g[class^="funnellayer"]').selectAll("g.trace");s3t(e,n,"funnel"),n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=X4.select(this),o=i[0].trace;a.selectAll(".point > path").each(function(s){if(!s.isBlank){var l=o.marker;X4.select(this).call(lH.fill,s.mc||l.color).call(lH.stroke,s.mlc||l.line.color).call(Wwe.dashLine,l.line.dash,s.mlw||l.line.width).style("opacity",o.selectedpoints&&!s.selected?a3t:1)}}),l3t(a,o,e),a.selectAll(".regions").each(function(){X4.select(this).selectAll("path").style("stroke-width",0).call(lH.fill,o.connector.fillcolor)}),a.selectAll(".lines").each(function(){var s=o.connector.line;Wwe.lineGroupStyle(X4.select(this).selectAll("path"),s.width,s.color,s.dash)})})}Xwe.exports={style:u3t}});var Jwe=ye((Ffr,Kwe)=>{"use strict";var Ywe=ka().opacity,c3t=RT().hoverOnBars,uH=Pr().formatPercent;Kwe.exports=function(t,r,n,i,a){var o=c3t(t,r,n,i,a);if(o){var s=o.cd,l=s[0].trace,u=l.orientation==="h",c=o.index,f=s[c],h=u?"x":"y";o[h+"LabelVal"]=f.s,o.percentInitial=f.begR,o.percentInitialLabel=uH(f.begR,1),o.percentPrevious=f.difR,o.percentPreviousLabel=uH(f.difR,1),o.percentTotal=f.sumR,o.percentTotalLabel=uH(f.sumR,1);var d=f.hi||l.hoverinfo,v=[];if(d&&d!=="none"&&d!=="skip"){var m=d==="all",b=d.split("+"),p=function(k){return m||b.indexOf(k)!==-1};p("percent initial")&&v.push(o.percentInitialLabel+" of initial"),p("percent previous")&&v.push(o.percentPreviousLabel+" of previous"),p("percent total")&&v.push(o.percentTotalLabel+" of total")}return o.extraText=v.join("
"),o.color=f3t(l,f),[o]}};function f3t(e,t){var r=e.marker,n=t.mc||r.color,i=t.mlc||r.line.color,a=t.mlw||r.line.width;if(Ywe(n))return n;if(Ywe(i)&&a)return i}});var Qwe=ye((zfr,$we)=>{"use strict";$we.exports=function(t,r){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"percentInitial"in r&&(t.percentInitial=r.percentInitial),"percentPrevious"in r&&(t.percentPrevious=r.percentPrevious),"percentTotal"in r&&(t.percentTotal=r.percentTotal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var t3e=ye((qfr,e3e)=>{"use strict";e3e.exports={attributes:iH(),layoutAttributes:nH(),supplyDefaults:oH().supplyDefaults,crossTraceDefaults:oH().crossTraceDefaults,supplyLayoutDefaults:Iwe(),calc:Owe(),crossTraceCalc:Uwe(),plot:jwe(),style:Zwe().style,hoverPoints:Jwe(),eventData:Qwe(),selectPoints:DT(),moduleType:"trace",name:"funnel",basePlotModule:mh(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}});var i3e=ye((Ofr,r3e)=>{"use strict";r3e.exports=t3e()});var a3e=ye((Bfr,n3e)=>{"use strict";n3e.exports={eventDataKeys:["initial","delta","final"]}});var hH=ye((Nfr,u3e)=>{"use strict";var _c=qm(),cH=pf().line,h3t=Gl(),o3e=vf().axisHoverFormat,{hovertemplateAttrs:d3t,texttemplateAttrs:v3t,templatefallbackAttrs:s3e}=Ll(),l3e=a3e(),$T=Ao().extendFlat,p3t=ka();function fH(e){return{marker:{color:$T({},_c.marker.color,{arrayOk:!1,editType:"style"}),line:{color:$T({},_c.marker.line.color,{arrayOk:!1,editType:"style"}),width:$T({},_c.marker.line.width,{arrayOk:!1,editType:"style"}),editType:"style"},editType:"style"},editType:"style"}}u3e.exports={measure:{valType:"data_array",dflt:[],editType:"calc"},base:{valType:"number",dflt:null,arrayOk:!1,editType:"calc"},x:_c.x,x0:_c.x0,dx:_c.dx,y:_c.y,y0:_c.y0,dy:_c.dy,xperiod:_c.xperiod,yperiod:_c.yperiod,xperiod0:_c.xperiod0,yperiod0:_c.yperiod0,xperiodalignment:_c.xperiodalignment,yperiodalignment:_c.yperiodalignment,xhoverformat:o3e("x"),yhoverformat:o3e("y"),hovertext:_c.hovertext,hovertemplate:d3t({},{keys:l3e.eventDataKeys}),hovertemplatefallback:s3e(),hoverinfo:$T({},h3t.hoverinfo,{flags:["name","x","y","text","initial","delta","final"]}),textinfo:{valType:"flaglist",flags:["label","text","initial","delta","final"],extras:["none"],editType:"plot",arrayOk:!1},texttemplate:v3t({editType:"plot"},{keys:l3e.eventDataKeys.concat(["label"])}),texttemplatefallback:s3e({editType:"plot"}),text:_c.text,textposition:_c.textposition,insidetextanchor:_c.insidetextanchor,textangle:_c.textangle,textfont:_c.textfont,insidetextfont:_c.insidetextfont,outsidetextfont:_c.outsidetextfont,constraintext:_c.constraintext,cliponaxis:_c.cliponaxis,orientation:_c.orientation,offset:_c.offset,width:_c.width,increasing:fH("increasing"),decreasing:fH("decreasing"),totals:fH("intermediate sums and total"),connector:{line:{color:$T({},cH.color,{dflt:p3t.defaultLine}),width:$T({},cH.width,{editType:"plot"}),dash:cH.dash,editType:"plot"},mode:{valType:"enumerated",values:["spanning","between"],dflt:"between",editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},offsetgroup:_c.offsetgroup,alignmentgroup:_c.alignmentgroup,zorder:_c.zorder}});var dH=ye((Ufr,c3e)=>{"use strict";c3e.exports={waterfallmode:{valType:"enumerated",values:["group","overlay"],dflt:"group",editType:"calc"},waterfallgap:{valType:"number",min:0,max:1,editType:"calc"},waterfallgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}});var QT=ye((Vfr,f3e)=>{"use strict";f3e.exports={INCREASING:{COLOR:"#3D9970",SYMBOL:"\u25B2"},DECREASING:{COLOR:"#FF4136",SYMBOL:"\u25BC"}}});var pH=ye((Gfr,p3e)=>{"use strict";var h3e=Pr(),g3t=r2(),m3t=i0().handleText,y3t=lT(),_3t=Dg(),d3e=hH(),x3t=ka(),v3e=QT(),b3t=v3e.INCREASING.COLOR,w3t=v3e.DECREASING.COLOR,T3t="#4499FF";function vH(e,t,r){e(t+".marker.color",r),e(t+".marker.line.color",x3t.defaultLine),e(t+".marker.line.width")}function A3t(e,t,r,n){function i(u,c){return h3e.coerce(e,t,d3e,u,c)}var a=y3t(e,t,n,i);if(!a){t.visible=!1;return}_3t(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("measure"),i("orientation",t.x&&!t.y?"h":"v"),i("base"),i("offset"),i("width"),i("text"),i("hovertext"),i("hovertemplate"),i("hovertemplatefallback");var o=i("textposition");m3t(e,t,n,i,o,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),t.textposition!=="none"&&(i("texttemplate"),i("texttemplatefallback"),t.texttemplate||i("textinfo")),vH(i,"increasing",b3t),vH(i,"decreasing",w3t),vH(i,"totals",T3t);var s=i("connector.visible");if(s){i("connector.mode");var l=i("connector.line.width");l&&(i("connector.line.color"),i("connector.line.dash"))}i("zorder")}function S3t(e,t){var r,n;function i(o){return h3e.coerce(n._input,n,d3e,o)}if(t.waterfallmode==="group")for(var a=0;a{"use strict";var M3t=Pr(),E3t=dH();g3e.exports=function(e,t,r){var n=!1;function i(s,l){return M3t.coerce(e,t,E3t,s,l)}for(var a=0;a{"use strict";var y3e=ho(),_3e=zg(),x3e=Pr().mergeArray,k3t=q0(),b3e=fs().BADNUM;function gH(e){return e==="a"||e==="absolute"}function mH(e){return e==="t"||e==="total"}w3e.exports=function(t,r){var n=y3e.getFromId(t,r.xaxis||"x"),i=y3e.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c;r.orientation==="h"?(a=n.makeCalcdata(r,"x"),s=i.makeCalcdata(r,"y"),l=_3e(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y"),s=n.makeCalcdata(r,"x"),l=_3e(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;for(var f=Math.min(o.length,a.length),h=new Array(f),d=0,v,m=!1,b=0;b{"use strict";var A3e=i2().setGroupPositions;S3e.exports=function(t,r){var n=t._fullLayout,i=t._fullData,a=t.calcdata,o=r.xaxis,s=r.yaxis,l=[],u=[],c=[],f,h;for(h=0;h{"use strict";var E3e=qa(),j8=Pr(),C3t=So(),eA=fs().BADNUM,L3t=p2(),P3t=bv().clearMinTextSize;k3e.exports=function(t,r,n,i){var a=t._fullLayout;P3t("waterfall",a),L3t.plot(t,r,n,i,{mode:a.waterfallmode,norm:a.waterfallmode,gap:a.waterfallgap,groupgap:a.waterfallgroupgap}),I3t(t,r,n,i)};function I3t(e,t,r,n){var i=t.xaxis,a=t.yaxis;j8.makeTraceGroups(n,r,"trace bars").each(function(o){var s=E3e.select(this),l=o[0].trace,u=j8.ensureSingle(s,"g","lines");if(!l.connector||!l.connector.visible){u.remove();return}var c=l.orientation==="h",f=l.connector.mode,h=u.selectAll("g.line").data(j8.identity);h.enter().append("g").classed("line",!0),h.exit().remove();var d=h.size();h.each(function(v,m){if(!(m!==d-1&&!v.cNext)){var b=R3t(v,i,a,c),p=b[0],k=b[1],M="";p[0]!==eA&&k[0]!==eA&&p[1]!==eA&&k[1]!==eA&&(f==="spanning"&&!v.isSum&&m>0&&(c?M+="M"+p[0]+","+k[1]+"V"+k[0]:M+="M"+p[1]+","+k[0]+"H"+p[0]),f!=="between"&&(v.isSum||m{"use strict";var W8=qa(),L3e=So(),P3e=ka(),D3t=X1().DESELECTDIM,F3t=V0(),z3t=bv().resizeText,q3t=F3t.styleTextPoints;function O3t(e,t,r){var n=r||W8.select(e).selectAll('g[class^="waterfalllayer"]').selectAll("g.trace");z3t(e,n,"waterfall"),n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=W8.select(this),o=i[0].trace;a.selectAll(".point > path").each(function(s){if(!s.isBlank){var l=o[s.dir].marker;W8.select(this).call(P3e.fill,l.color).call(P3e.stroke,l.line.color).call(L3e.dashLine,l.line.dash,l.line.width).style("opacity",o.selectedpoints&&!s.selected?D3t:1)}}),q3t(a,o,e),a.selectAll(".lines").each(function(){var s=o.connector.line;L3e.lineGroupStyle(W8.select(this).selectAll("path"),s.width,s.color,s.dash)})})}I3e.exports={style:O3t}});var O3e=ye((Yfr,q3e)=>{"use strict";var B3t=ho().hoverLabelText,D3e=ka().opacity,N3t=RT().hoverOnBars,F3e=QT(),z3e={increasing:F3e.INCREASING.SYMBOL,decreasing:F3e.DECREASING.SYMBOL};q3e.exports=function(t,r,n,i,a){var o=N3t(t,r,n,i,a);if(!o)return;var s=o.cd,l=s[0].trace,u=l.orientation==="h",c=u?"x":"y",f=u?t.xa:t.ya;function h(x){return B3t(f,x,l[c+"hoverformat"])}var d=o.index,v=s[d],m=v.isSum?v.b+v.s:v.rawS;o.initial=v.b+v.s-m,o.delta=m,o.final=o.initial+o.delta;var b=h(Math.abs(o.delta));o.deltaLabel=m<0?"("+b+")":b,o.finalLabel=h(o.final),o.initialLabel=h(o.initial);var p=v.hi||l.hoverinfo,k=[];if(p&&p!=="none"&&p!=="skip"){var M=p==="all",T=p.split("+"),L=function(x){return M||T.indexOf(x)!==-1};v.isSum||(L("final")&&(u?!L("x"):!L("y"))&&k.push(o.finalLabel),L("delta")&&(m<0?k.push(o.deltaLabel+" "+z3e.decreasing):k.push(o.deltaLabel+" "+z3e.increasing)),L("initial")&&k.push("Initial: "+o.initialLabel))}return k.length&&(o.extraText=k.join("
")),o.color=U3t(l,v),[o]};function U3t(e,t){var r=e[t.dir].marker,n=r.color,i=r.line.color,a=r.line.width;if(D3e(n))return n;if(D3e(i)&&a)return i}});var N3e=ye((Kfr,B3e)=>{"use strict";B3e.exports=function(t,r){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"initial"in r&&(t.initial=r.initial),"delta"in r&&(t.delta=r.delta),"final"in r&&(t.final=r.final),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var V3e=ye((Jfr,U3e)=>{"use strict";U3e.exports={attributes:hH(),layoutAttributes:dH(),supplyDefaults:pH().supplyDefaults,crossTraceDefaults:pH().crossTraceDefaults,supplyLayoutDefaults:m3e(),calc:T3e(),crossTraceCalc:M3e(),plot:C3e(),style:R3e().style,hoverPoints:O3e(),eventData:N3e(),selectPoints:DT(),moduleType:"trace",name:"waterfall",basePlotModule:mh(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}});var H3e=ye(($fr,G3e)=>{"use strict";G3e.exports=V3e()});var tA=ye((Qfr,j3e)=>{"use strict";j3e.exports={colormodel:{rgb:{min:[0,0,0],max:[255,255,255],fmt:function(e){return e.slice(0,3)},suffix:["","",""]},rgba:{min:[0,0,0,0],max:[255,255,255,1],fmt:function(e){return e.slice(0,4)},suffix:["","","",""]},rgba256:{colormodel:"rgba",zminDflt:[0,0,0,0],zmaxDflt:[255,255,255,255],min:[0,0,0,0],max:[255,255,255,1],fmt:function(e){return e.slice(0,4)},suffix:["","","",""]},hsl:{min:[0,0,0],max:[360,100,100],fmt:function(e){var t=e.slice(0,3);return t[1]=t[1]+"%",t[2]=t[2]+"%",t},suffix:["\xB0","%","%"]},hsla:{min:[0,0,0,0],max:[360,100,100,1],fmt:function(e){var t=e.slice(0,4);return t[1]=t[1]+"%",t[2]=t[2]+"%",t},suffix:["\xB0","%","%",""]}}}});var yH=ye((ehr,X3e)=>{"use strict";var V3t=Gl(),G3t=pf().zorder,{hovertemplateAttrs:H3t,templatefallbackAttrs:j3t}=Ll(),W3e=Ao().extendFlat,W3t=tA().colormodel,Y4=["rgb","rgba","rgba256","hsl","hsla"],X3t=[],Z3t=[];for(rA=0;rA{"use strict";var Y3t=Pr(),K3t=yH(),Z3e=tA(),J3t=qy().IMAGE_URL_PREFIX;Y3e.exports=function(t,r){function n(o,s){return Y3t.coerce(t,r,K3t,o,s)}n("source"),r.source&&!r.source.match(J3t)&&delete r.source,r._hasSource=!!r.source;var i=n("z");if(r._hasZ=!(i===void 0||!i.length||!i[0]||!i[0].length),!r._hasZ&&!r._hasSource){r.visible=!1;return}n("x0"),n("y0"),n("dx"),n("dy");var a;r._hasZ?(n("colormodel","rgb"),a=Z3e.colormodel[r.colormodel],n("zmin",a.zminDflt||a.min),n("zmax",a.zmaxDflt||a.max)):r._hasSource&&(r.colormodel="rgba256",a=Z3e.colormodel[r.colormodel],r.zmin=a.zminDflt,r.zmax=a.zmaxDflt),n("zsmooth"),n("text"),n("hovertext"),n("hovertemplate"),n("hovertemplatefallback"),r._length=null,n("zorder")}});var Zy=ye((rhr,_H)=>{typeof Object.create=="function"?_H.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:_H.exports=function(t,r){if(r){t.super_=r;var n=function(){};n.prototype=r.prototype,t.prototype=new n,t.prototype.constructor=t}}});var xH=ye((ihr,J3e)=>{J3e.exports=Sb().EventEmitter});var eTe=ye(X8=>{"use strict";X8.byteLength=Q3t;X8.toByteArray=tTt;X8.fromByteArray=nTt;var Hm=[],Y0=[],$3t=typeof Uint8Array!="undefined"?Uint8Array:Array,bH="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(_2=0,$3e=bH.length;_2<$3e;++_2)Hm[_2]=bH[_2],Y0[bH.charCodeAt(_2)]=_2;var _2,$3e;Y0[45]=62;Y0[95]=63;function Q3e(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var n=r===t?0:4-r%4;return[r,n]}function Q3t(e){var t=Q3e(e),r=t[0],n=t[1];return(r+n)*3/4-n}function eTt(e,t,r){return(t+r)*3/4-r}function tTt(e){var t,r=Q3e(e),n=r[0],i=r[1],a=new $3t(eTt(e,n,i)),o=0,s=i>0?n-4:n,l;for(l=0;l>16&255,a[o++]=t>>8&255,a[o++]=t&255;return i===2&&(t=Y0[e.charCodeAt(l)]<<2|Y0[e.charCodeAt(l+1)]>>4,a[o++]=t&255),i===1&&(t=Y0[e.charCodeAt(l)]<<10|Y0[e.charCodeAt(l+1)]<<4|Y0[e.charCodeAt(l+2)]>>2,a[o++]=t>>8&255,a[o++]=t&255),a}function rTt(e){return Hm[e>>18&63]+Hm[e>>12&63]+Hm[e>>6&63]+Hm[e&63]}function iTt(e,t,r){for(var n,i=[],a=t;as?s:o+a));return n===1?(t=e[r-1],i.push(Hm[t>>2]+Hm[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],i.push(Hm[t>>10]+Hm[t>>4&63]+Hm[t<<2&63]+"=")),i.join("")}});var tTe=ye(wH=>{wH.read=function(e,t,r,n,i){var a,o,s=i*8-n-1,l=(1<>1,c=-7,f=r?i-1:0,h=r?-1:1,d=e[t+f];for(f+=h,a=d&(1<<-c)-1,d>>=-c,c+=s;c>0;a=a*256+e[t+f],f+=h,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=n;c>0;o=o*256+e[t+f],f+=h,c-=8);if(a===0)a=1-u;else{if(a===l)return o?NaN:(d?-1:1)*(1/0);o=o+Math.pow(2,n),a=a-u}return(d?-1:1)*o*Math.pow(2,a-n)};wH.write=function(e,t,r,n,i,a){var o,s,l,u=a*8-i-1,c=(1<>1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:a-1,v=n?1:-1,m=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+f>=1?t+=h/l:t+=h*Math.pow(2,1-f),t*l>=2&&(o++,l/=2),o+f>=c?(s=0,o=c):o+f>=1?(s=(t*l-1)*Math.pow(2,i),o=o+f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;e[r+d]=s&255,d+=v,s/=256,i-=8);for(o=o<0;e[r+d]=o&255,d+=v,o/=256,u-=8);e[r+d-v]|=m*128}});var b2=ye(oA=>{"use strict";var TH=eTe(),nA=tTe(),rTe=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;oA.Buffer=ra;oA.SlowBuffer=cTt;oA.INSPECT_MAX_BYTES=50;var Z8=2147483647;oA.kMaxLength=Z8;ra.TYPED_ARRAY_SUPPORT=aTt();!ra.TYPED_ARRAY_SUPPORT&&typeof console!="undefined"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function aTt(){try{let e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch(e){return!1}}Object.defineProperty(ra.prototype,"parent",{enumerable:!0,get:function(){if(ra.isBuffer(this))return this.buffer}});Object.defineProperty(ra.prototype,"offset",{enumerable:!0,get:function(){if(ra.isBuffer(this))return this.byteOffset}});function Yy(e){if(e>Z8)throw new RangeError('The value "'+e+'" is invalid for option "size"');let t=new Uint8Array(e);return Object.setPrototypeOf(t,ra.prototype),t}function ra(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return EH(e)}return oTe(e,t,r)}ra.poolSize=8192;function oTe(e,t,r){if(typeof e=="string")return sTt(e,t);if(ArrayBuffer.isView(e))return lTt(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(jm(e,ArrayBuffer)||e&&jm(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(jm(e,SharedArrayBuffer)||e&&jm(e.buffer,SharedArrayBuffer)))return SH(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return ra.from(n,t,r);let i=uTt(e);if(i)return i;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return ra.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}ra.from=function(e,t,r){return oTe(e,t,r)};Object.setPrototypeOf(ra.prototype,Uint8Array.prototype);Object.setPrototypeOf(ra,Uint8Array);function sTe(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function oTt(e,t,r){return sTe(e),e<=0?Yy(e):t!==void 0?typeof r=="string"?Yy(e).fill(t,r):Yy(e).fill(t):Yy(e)}ra.alloc=function(e,t,r){return oTt(e,t,r)};function EH(e){return sTe(e),Yy(e<0?0:kH(e)|0)}ra.allocUnsafe=function(e){return EH(e)};ra.allocUnsafeSlow=function(e){return EH(e)};function sTt(e,t){if((typeof t!="string"||t==="")&&(t="utf8"),!ra.isEncoding(t))throw new TypeError("Unknown encoding: "+t);let r=lTe(e,t)|0,n=Yy(r),i=n.write(e,t);return i!==r&&(n=n.slice(0,i)),n}function AH(e){let t=e.length<0?0:kH(e.length)|0,r=Yy(t);for(let n=0;n=Z8)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Z8.toString(16)+" bytes");return e|0}function cTt(e){return+e!=e&&(e=0),ra.alloc(+e)}ra.isBuffer=function(t){return t!=null&&t._isBuffer===!0&&t!==ra.prototype};ra.compare=function(t,r){if(jm(t,Uint8Array)&&(t=ra.from(t,t.offset,t.byteLength)),jm(r,Uint8Array)&&(r=ra.from(r,r.offset,r.byteLength)),!ra.isBuffer(t)||!ra.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===r)return 0;let n=t.length,i=r.length;for(let a=0,o=Math.min(n,i);ai.length?(ra.isBuffer(o)||(o=ra.from(o)),o.copy(i,a)):Uint8Array.prototype.set.call(i,o,a);else if(ra.isBuffer(o))o.copy(i,a);else throw new TypeError('"list" argument must be an Array of Buffers');a+=o.length}return i};function lTe(e,t){if(ra.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||jm(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);let r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return MH(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return mTe(e).length;default:if(i)return n?-1:MH(e).length;t=(""+t).toLowerCase(),i=!0}}ra.byteLength=lTe;function fTt(e,t,r){let n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return bTt(this,t,r);case"utf8":case"utf-8":return cTe(this,t,r);case"ascii":return _Tt(this,t,r);case"latin1":case"binary":return xTt(this,t,r);case"base64":return mTt(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return wTt(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}ra.prototype._isBuffer=!0;function x2(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}ra.prototype.swap16=function(){let t=this.length;if(t%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let r=0;rr&&(t+=" ... "),""};rTe&&(ra.prototype[rTe]=ra.prototype.inspect);ra.prototype.compare=function(t,r,n,i,a){if(jm(t,Uint8Array)&&(t=ra.from(t,t.offset,t.byteLength)),!ra.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(r===void 0&&(r=0),n===void 0&&(n=t?t.length:0),i===void 0&&(i=0),a===void 0&&(a=this.length),r<0||n>t.length||i<0||a>this.length)throw new RangeError("out of range index");if(i>=a&&r>=n)return 0;if(i>=a)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,a>>>=0,this===t)return 0;let o=a-i,s=n-r,l=Math.min(o,s),u=this.slice(i,a),c=t.slice(r,n);for(let f=0;f2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,LH(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=ra.from(t,n)),ra.isBuffer(t))return t.length===0?-1:iTe(e,t,r,n,i);if(typeof t=="number")return t=t&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):iTe(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function iTe(e,t,r,n,i){let a=1,o=e.length,s=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;a=2,o/=2,s/=2,r/=2}function l(c,f){return a===1?c[f]:c.readUInt16BE(f*a)}let u;if(i){let c=-1;for(u=r;uo&&(r=o-s),u=r;u>=0;u--){let c=!0;for(let f=0;fi&&(n=i)):n=i;let a=t.length;n>a/2&&(n=a/2);let o;for(o=0;o>>0,isFinite(n)?(n=n>>>0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let a=this.length-r;if((n===void 0||n>a)&&(n=a),t.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return hTt(this,t,r,n);case"utf8":case"utf-8":return dTt(this,t,r,n);case"ascii":case"latin1":case"binary":return vTt(this,t,r,n);case"base64":return pTt(this,t,r,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return gTt(this,t,r,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}};ra.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function mTt(e,t,r){return t===0&&r===e.length?TH.fromByteArray(e):TH.fromByteArray(e.slice(t,r))}function cTe(e,t,r){r=Math.min(e.length,r);let n=[],i=t;for(;i239?4:a>223?3:a>191?2:1;if(i+s<=r){let l,u,c,f;switch(s){case 1:a<128&&(o=a);break;case 2:l=e[i+1],(l&192)===128&&(f=(a&31)<<6|l&63,f>127&&(o=f));break;case 3:l=e[i+1],u=e[i+2],(l&192)===128&&(u&192)===128&&(f=(a&15)<<12|(l&63)<<6|u&63,f>2047&&(f<55296||f>57343)&&(o=f));break;case 4:l=e[i+1],u=e[i+2],c=e[i+3],(l&192)===128&&(u&192)===128&&(c&192)===128&&(f=(a&15)<<18|(l&63)<<12|(u&63)<<6|c&63,f>65535&&f<1114112&&(o=f))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),i+=s}return yTt(n)}var nTe=4096;function yTt(e){let t=e.length;if(t<=nTe)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn)&&(r=n);let i="";for(let a=t;an&&(t=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),rr)throw new RangeError("Trying to access beyond buffer length")}ra.prototype.readUintLE=ra.prototype.readUIntLE=function(t,r,n){t=t>>>0,r=r>>>0,n||tv(t,r,this.length);let i=this[t],a=1,o=0;for(;++o>>0,r=r>>>0,n||tv(t,r,this.length);let i=this[t+--r],a=1;for(;r>0&&(a*=256);)i+=this[t+--r]*a;return i};ra.prototype.readUint8=ra.prototype.readUInt8=function(t,r){return t=t>>>0,r||tv(t,1,this.length),this[t]};ra.prototype.readUint16LE=ra.prototype.readUInt16LE=function(t,r){return t=t>>>0,r||tv(t,2,this.length),this[t]|this[t+1]<<8};ra.prototype.readUint16BE=ra.prototype.readUInt16BE=function(t,r){return t=t>>>0,r||tv(t,2,this.length),this[t]<<8|this[t+1]};ra.prototype.readUint32LE=ra.prototype.readUInt32LE=function(t,r){return t=t>>>0,r||tv(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216};ra.prototype.readUint32BE=ra.prototype.readUInt32BE=function(t,r){return t=t>>>0,r||tv(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])};ra.prototype.readBigUInt64LE=N_(function(t){t=t>>>0,aA(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&K4(t,this.length-8);let i=r+this[++t]*2**8+this[++t]*2**16+this[++t]*2**24,a=this[++t]+this[++t]*2**8+this[++t]*2**16+n*2**24;return BigInt(i)+(BigInt(a)<>>0,aA(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&K4(t,this.length-8);let i=r*2**24+this[++t]*2**16+this[++t]*2**8+this[++t],a=this[++t]*2**24+this[++t]*2**16+this[++t]*2**8+n;return(BigInt(i)<>>0,r=r>>>0,n||tv(t,r,this.length);let i=this[t],a=1,o=0;for(;++o=a&&(i-=Math.pow(2,8*r)),i};ra.prototype.readIntBE=function(t,r,n){t=t>>>0,r=r>>>0,n||tv(t,r,this.length);let i=r,a=1,o=this[t+--i];for(;i>0&&(a*=256);)o+=this[t+--i]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o};ra.prototype.readInt8=function(t,r){return t=t>>>0,r||tv(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]};ra.prototype.readInt16LE=function(t,r){t=t>>>0,r||tv(t,2,this.length);let n=this[t]|this[t+1]<<8;return n&32768?n|4294901760:n};ra.prototype.readInt16BE=function(t,r){t=t>>>0,r||tv(t,2,this.length);let n=this[t+1]|this[t]<<8;return n&32768?n|4294901760:n};ra.prototype.readInt32LE=function(t,r){return t=t>>>0,r||tv(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24};ra.prototype.readInt32BE=function(t,r){return t=t>>>0,r||tv(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]};ra.prototype.readBigInt64LE=N_(function(t){t=t>>>0,aA(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&K4(t,this.length-8);let i=this[t+4]+this[t+5]*2**8+this[t+6]*2**16+(n<<24);return(BigInt(i)<>>0,aA(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&K4(t,this.length-8);let i=(r<<24)+this[++t]*2**16+this[++t]*2**8+this[++t];return(BigInt(i)<>>0,r||tv(t,4,this.length),nA.read(this,t,!0,23,4)};ra.prototype.readFloatBE=function(t,r){return t=t>>>0,r||tv(t,4,this.length),nA.read(this,t,!1,23,4)};ra.prototype.readDoubleLE=function(t,r){return t=t>>>0,r||tv(t,8,this.length),nA.read(this,t,!0,52,8)};ra.prototype.readDoubleBE=function(t,r){return t=t>>>0,r||tv(t,8,this.length),nA.read(this,t,!1,52,8)};function Rp(e,t,r,n,i,a){if(!ra.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}ra.prototype.writeUintLE=ra.prototype.writeUIntLE=function(t,r,n,i){if(t=+t,r=r>>>0,n=n>>>0,!i){let s=Math.pow(2,8*n)-1;Rp(this,t,r,n,s,0)}let a=1,o=0;for(this[r]=t&255;++o>>0,n=n>>>0,!i){let s=Math.pow(2,8*n)-1;Rp(this,t,r,n,s,0)}let a=n-1,o=1;for(this[r+a]=t&255;--a>=0&&(o*=256);)this[r+a]=t/o&255;return r+n};ra.prototype.writeUint8=ra.prototype.writeUInt8=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,1,255,0),this[r]=t&255,r+1};ra.prototype.writeUint16LE=ra.prototype.writeUInt16LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,65535,0),this[r]=t&255,this[r+1]=t>>>8,r+2};ra.prototype.writeUint16BE=ra.prototype.writeUInt16BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,65535,0),this[r]=t>>>8,this[r+1]=t&255,r+2};ra.prototype.writeUint32LE=ra.prototype.writeUInt32LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,4294967295,0),this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=t&255,r+4};ra.prototype.writeUint32BE=ra.prototype.writeUInt32BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,4294967295,0),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};function fTe(e,t,r,n,i){gTe(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r++]=a,a=a>>8,e[r++]=a,a=a>>8,e[r++]=a,a=a>>8,e[r++]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o,r}function hTe(e,t,r,n,i){gTe(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r+7]=a,a=a>>8,e[r+6]=a,a=a>>8,e[r+5]=a,a=a>>8,e[r+4]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=o,o=o>>8,e[r+2]=o,o=o>>8,e[r+1]=o,o=o>>8,e[r]=o,r+8}ra.prototype.writeBigUInt64LE=N_(function(t,r=0){return fTe(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});ra.prototype.writeBigUInt64BE=N_(function(t,r=0){return hTe(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});ra.prototype.writeIntLE=function(t,r,n,i){if(t=+t,r=r>>>0,!i){let l=Math.pow(2,8*n-1);Rp(this,t,r,n,l-1,-l)}let a=0,o=1,s=0;for(this[r]=t&255;++a>0)-s&255;return r+n};ra.prototype.writeIntBE=function(t,r,n,i){if(t=+t,r=r>>>0,!i){let l=Math.pow(2,8*n-1);Rp(this,t,r,n,l-1,-l)}let a=n-1,o=1,s=0;for(this[r+a]=t&255;--a>=0&&(o*=256);)t<0&&s===0&&this[r+a+1]!==0&&(s=1),this[r+a]=(t/o>>0)-s&255;return r+n};ra.prototype.writeInt8=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,1,127,-128),t<0&&(t=255+t+1),this[r]=t&255,r+1};ra.prototype.writeInt16LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,32767,-32768),this[r]=t&255,this[r+1]=t>>>8,r+2};ra.prototype.writeInt16BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,32767,-32768),this[r]=t>>>8,this[r+1]=t&255,r+2};ra.prototype.writeInt32LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,2147483647,-2147483648),this[r]=t&255,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24,r+4};ra.prototype.writeInt32BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};ra.prototype.writeBigInt64LE=N_(function(t,r=0){return fTe(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});ra.prototype.writeBigInt64BE=N_(function(t,r=0){return hTe(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function dTe(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function vTe(e,t,r,n,i){return t=+t,r=r>>>0,i||dTe(e,t,r,4,34028234663852886e22,-34028234663852886e22),nA.write(e,t,r,n,23,4),r+4}ra.prototype.writeFloatLE=function(t,r,n){return vTe(this,t,r,!0,n)};ra.prototype.writeFloatBE=function(t,r,n){return vTe(this,t,r,!1,n)};function pTe(e,t,r,n,i){return t=+t,r=r>>>0,i||dTe(e,t,r,8,17976931348623157e292,-17976931348623157e292),nA.write(e,t,r,n,52,8),r+8}ra.prototype.writeDoubleLE=function(t,r,n){return pTe(this,t,r,!0,n)};ra.prototype.writeDoubleBE=function(t,r,n){return pTe(this,t,r,!1,n)};ra.prototype.copy=function(t,r,n,i){if(!ra.isBuffer(t))throw new TypeError("argument should be a Buffer");if(n||(n=0),!i&&i!==0&&(i=this.length),r>=t.length&&(r=t.length),r||(r=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-r>>0,n=n===void 0?this.length:n>>>0,t||(t=0);let a;if(typeof t=="number")for(a=r;a2**32?i=aTe(String(r)):typeof r=="bigint"&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=aTe(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n},RangeError);function aTe(e){let t="",r=e.length,n=e[0]==="-"?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function TTt(e,t,r){aA(t,"offset"),(e[t]===void 0||e[t+r]===void 0)&&K4(t,e.length-(r+1))}function gTe(e,t,r,n,i,a){if(e>r||e3?t===0||t===BigInt(0)?s=`>= 0${o} and < 2${o} ** ${(a+1)*8}${o}`:s=`>= -(2${o} ** ${(a+1)*8-1}${o}) and < 2 ** ${(a+1)*8-1}${o}`:s=`>= ${t}${o} and <= ${r}${o}`,new iA.ERR_OUT_OF_RANGE("value",s,e)}TTt(n,i,a)}function aA(e,t){if(typeof e!="number")throw new iA.ERR_INVALID_ARG_TYPE(t,"number",e)}function K4(e,t,r){throw Math.floor(e)!==e?(aA(e,r),new iA.ERR_OUT_OF_RANGE(r||"offset","an integer",e)):t<0?new iA.ERR_BUFFER_OUT_OF_BOUNDS:new iA.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}var ATt=/[^+/0-9A-Za-z-_]/g;function STt(e){if(e=e.split("=")[0],e=e.trim().replace(ATt,""),e.length<2)return"";for(;e.length%4!==0;)e=e+"=";return e}function MH(e,t){t=t||1/0;let r,n=e.length,i=null,a=[];for(let o=0;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}else if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function MTt(e){let t=[];for(let r=0;r>8,i=r%256,a.push(i),a.push(n);return a}function mTe(e){return TH.toByteArray(STt(e))}function Y8(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function jm(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function LH(e){return e!==e}var kTt=function(){let e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){let n=r*16;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function N_(e){return typeof BigInt=="undefined"?CTt:e}function CTt(){throw new Error("BigInt not supported")}});var K8=ye((lhr,yTe)=>{"use strict";yTe.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var t={},r=Symbol("test"),n=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var i=42;t[r]=i;for(var a in t)return!1;if(typeof Object.keys=="function"&&Object.keys(t).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(t).length!==0)return!1;var o=Object.getOwnPropertySymbols(t);if(o.length!==1||o[0]!==r||!Object.prototype.propertyIsEnumerable.call(t,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var s=Object.getOwnPropertyDescriptor(t,r);if(s.value!==i||s.enumerable!==!0)return!1}return!0}});var J4=ye((uhr,_Te)=>{"use strict";var LTt=K8();_Te.exports=function(){return LTt()&&!!Symbol.toStringTag}});var PH=ye((chr,xTe)=>{"use strict";xTe.exports=Object});var wTe=ye((fhr,bTe)=>{"use strict";bTe.exports=Error});var ATe=ye((hhr,TTe)=>{"use strict";TTe.exports=EvalError});var MTe=ye((dhr,STe)=>{"use strict";STe.exports=RangeError});var kTe=ye((vhr,ETe)=>{"use strict";ETe.exports=ReferenceError});var IH=ye((phr,CTe)=>{"use strict";CTe.exports=SyntaxError});var sA=ye((ghr,LTe)=>{"use strict";LTe.exports=TypeError});var ITe=ye((mhr,PTe)=>{"use strict";PTe.exports=URIError});var DTe=ye((yhr,RTe)=>{"use strict";RTe.exports=Math.abs});var zTe=ye((_hr,FTe)=>{"use strict";FTe.exports=Math.floor});var OTe=ye((xhr,qTe)=>{"use strict";qTe.exports=Math.max});var NTe=ye((bhr,BTe)=>{"use strict";BTe.exports=Math.min});var VTe=ye((whr,UTe)=>{"use strict";UTe.exports=Math.pow});var HTe=ye((Thr,GTe)=>{"use strict";GTe.exports=Math.round});var WTe=ye((Ahr,jTe)=>{"use strict";jTe.exports=Number.isNaN||function(t){return t!==t}});var ZTe=ye((Shr,XTe)=>{"use strict";var PTt=WTe();XTe.exports=function(t){return PTt(t)||t===0?t:t<0?-1:1}});var KTe=ye((Mhr,YTe)=>{"use strict";YTe.exports=Object.getOwnPropertyDescriptor});var w2=ye((Ehr,JTe)=>{"use strict";var J8=KTe();if(J8)try{J8([],"length")}catch(e){J8=null}JTe.exports=J8});var $4=ye((khr,$Te)=>{"use strict";var $8=Object.defineProperty||!1;if($8)try{$8({},"a",{value:1})}catch(e){$8=!1}$Te.exports=$8});var tAe=ye((Chr,eAe)=>{"use strict";var QTe=typeof Symbol!="undefined"&&Symbol,ITt=K8();eAe.exports=function(){return typeof QTe!="function"||typeof Symbol!="function"||typeof QTe("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:ITt()}});var RH=ye((Lhr,rAe)=>{"use strict";rAe.exports=typeof Reflect!="undefined"&&Reflect.getPrototypeOf||null});var DH=ye((Phr,iAe)=>{"use strict";var RTt=PH();iAe.exports=RTt.getPrototypeOf||null});var oAe=ye((Ihr,aAe)=>{"use strict";var DTt="Function.prototype.bind called on incompatible ",FTt=Object.prototype.toString,zTt=Math.max,qTt="[object Function]",nAe=function(t,r){for(var n=[],i=0;i{"use strict";var NTt=oAe();sAe.exports=Function.prototype.bind||NTt});var Q8=ye((Dhr,lAe)=>{"use strict";lAe.exports=Function.prototype.call});var FH=ye((Fhr,uAe)=>{"use strict";uAe.exports=Function.prototype.apply});var fAe=ye((zhr,cAe)=>{"use strict";cAe.exports=typeof Reflect!="undefined"&&Reflect&&Reflect.apply});var dAe=ye((qhr,hAe)=>{"use strict";var UTt=lA(),VTt=FH(),GTt=Q8(),HTt=fAe();hAe.exports=HTt||UTt.call(GTt,VTt)});var pAe=ye((Ohr,vAe)=>{"use strict";var jTt=lA(),WTt=sA(),XTt=Q8(),ZTt=dAe();vAe.exports=function(t){if(t.length<1||typeof t[0]!="function")throw new WTt("a function is required");return ZTt(jTt,XTt,t)}});var bAe=ye((Bhr,xAe)=>{"use strict";var YTt=pAe(),gAe=w2(),yAe;try{yAe=[].__proto__===Array.prototype}catch(e){if(!e||typeof e!="object"||!("code"in e)||e.code!=="ERR_PROTO_ACCESS")throw e}var zH=!!yAe&&gAe&&gAe(Object.prototype,"__proto__"),_Ae=Object,mAe=_Ae.getPrototypeOf;xAe.exports=zH&&typeof zH.get=="function"?YTt([zH.get]):typeof mAe=="function"?function(t){return mAe(t==null?t:_Ae(t))}:!1});var MAe=ye((Nhr,SAe)=>{"use strict";var wAe=RH(),TAe=DH(),AAe=bAe();SAe.exports=wAe?function(t){return wAe(t)}:TAe?function(t){if(!t||typeof t!="object"&&typeof t!="function")throw new TypeError("getProto: not an object");return TAe(t)}:AAe?function(t){return AAe(t)}:null});var kAe=ye((Uhr,EAe)=>{"use strict";var KTt=Function.prototype.call,JTt=Object.prototype.hasOwnProperty,$Tt=lA();EAe.exports=$Tt.call(KTt,JTt)});var rR=ye((Vhr,DAe)=>{"use strict";var lu,QTt=PH(),eAt=wTe(),tAt=ATe(),rAt=MTe(),iAt=kTe(),hA=IH(),fA=sA(),nAt=ITe(),aAt=DTe(),oAt=zTe(),sAt=OTe(),lAt=NTe(),uAt=VTe(),cAt=HTe(),fAt=ZTe(),IAe=Function,qH=function(e){try{return IAe('"use strict"; return ('+e+").constructor;")()}catch(t){}},Q4=w2(),hAt=$4(),OH=function(){throw new fA},dAt=Q4?function(){try{return arguments.callee,OH}catch(e){try{return Q4(arguments,"callee").get}catch(t){return OH}}}():OH,uA=tAe()(),rv=MAe(),vAt=DH(),pAt=RH(),RAe=FH(),eE=Q8(),cA={},gAt=typeof Uint8Array=="undefined"||!rv?lu:rv(Uint8Array),T2={__proto__:null,"%AggregateError%":typeof AggregateError=="undefined"?lu:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer=="undefined"?lu:ArrayBuffer,"%ArrayIteratorPrototype%":uA&&rv?rv([][Symbol.iterator]()):lu,"%AsyncFromSyncIteratorPrototype%":lu,"%AsyncFunction%":cA,"%AsyncGenerator%":cA,"%AsyncGeneratorFunction%":cA,"%AsyncIteratorPrototype%":cA,"%Atomics%":typeof Atomics=="undefined"?lu:Atomics,"%BigInt%":typeof BigInt=="undefined"?lu:BigInt,"%BigInt64Array%":typeof BigInt64Array=="undefined"?lu:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array=="undefined"?lu:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView=="undefined"?lu:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":eAt,"%eval%":eval,"%EvalError%":tAt,"%Float16Array%":typeof Float16Array=="undefined"?lu:Float16Array,"%Float32Array%":typeof Float32Array=="undefined"?lu:Float32Array,"%Float64Array%":typeof Float64Array=="undefined"?lu:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry=="undefined"?lu:FinalizationRegistry,"%Function%":IAe,"%GeneratorFunction%":cA,"%Int8Array%":typeof Int8Array=="undefined"?lu:Int8Array,"%Int16Array%":typeof Int16Array=="undefined"?lu:Int16Array,"%Int32Array%":typeof Int32Array=="undefined"?lu:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":uA&&rv?rv(rv([][Symbol.iterator]())):lu,"%JSON%":typeof JSON=="object"?JSON:lu,"%Map%":typeof Map=="undefined"?lu:Map,"%MapIteratorPrototype%":typeof Map=="undefined"||!uA||!rv?lu:rv(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":QTt,"%Object.getOwnPropertyDescriptor%":Q4,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise=="undefined"?lu:Promise,"%Proxy%":typeof Proxy=="undefined"?lu:Proxy,"%RangeError%":rAt,"%ReferenceError%":iAt,"%Reflect%":typeof Reflect=="undefined"?lu:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set=="undefined"?lu:Set,"%SetIteratorPrototype%":typeof Set=="undefined"||!uA||!rv?lu:rv(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer=="undefined"?lu:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":uA&&rv?rv(""[Symbol.iterator]()):lu,"%Symbol%":uA?Symbol:lu,"%SyntaxError%":hA,"%ThrowTypeError%":dAt,"%TypedArray%":gAt,"%TypeError%":fA,"%Uint8Array%":typeof Uint8Array=="undefined"?lu:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray=="undefined"?lu:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array=="undefined"?lu:Uint16Array,"%Uint32Array%":typeof Uint32Array=="undefined"?lu:Uint32Array,"%URIError%":nAt,"%WeakMap%":typeof WeakMap=="undefined"?lu:WeakMap,"%WeakRef%":typeof WeakRef=="undefined"?lu:WeakRef,"%WeakSet%":typeof WeakSet=="undefined"?lu:WeakSet,"%Function.prototype.call%":eE,"%Function.prototype.apply%":RAe,"%Object.defineProperty%":hAt,"%Object.getPrototypeOf%":vAt,"%Math.abs%":aAt,"%Math.floor%":oAt,"%Math.max%":sAt,"%Math.min%":lAt,"%Math.pow%":uAt,"%Math.round%":cAt,"%Math.sign%":fAt,"%Reflect.getPrototypeOf%":pAt};if(rv)try{null.error}catch(e){CAe=rv(rv(e)),T2["%Error.prototype%"]=CAe}var CAe,mAt=function e(t){var r;if(t==="%AsyncFunction%")r=qH("async function () {}");else if(t==="%GeneratorFunction%")r=qH("function* () {}");else if(t==="%AsyncGeneratorFunction%")r=qH("async function* () {}");else if(t==="%AsyncGenerator%"){var n=e("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(t==="%AsyncIteratorPrototype%"){var i=e("%AsyncGenerator%");i&&rv&&(r=rv(i.prototype))}return T2[t]=r,r},LAe={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},tE=lA(),eR=kAe(),yAt=tE.call(eE,Array.prototype.concat),_At=tE.call(RAe,Array.prototype.splice),PAe=tE.call(eE,String.prototype.replace),tR=tE.call(eE,String.prototype.slice),xAt=tE.call(eE,RegExp.prototype.exec),bAt=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,wAt=/\\(\\)?/g,TAt=function(t){var r=tR(t,0,1),n=tR(t,-1);if(r==="%"&&n!=="%")throw new hA("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new hA("invalid intrinsic syntax, expected opening `%`");var i=[];return PAe(t,bAt,function(a,o,s,l){i[i.length]=s?PAe(l,wAt,"$1"):o||a}),i},AAt=function(t,r){var n=t,i;if(eR(LAe,n)&&(i=LAe[n],n="%"+i[0]+"%"),eR(T2,n)){var a=T2[n];if(a===cA&&(a=mAt(n)),typeof a=="undefined"&&!r)throw new fA("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:i,name:n,value:a}}throw new hA("intrinsic "+t+" does not exist!")};DAe.exports=function(t,r){if(typeof t!="string"||t.length===0)throw new fA("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new fA('"allowMissing" argument must be a boolean');if(xAt(/^%?[^%]*%?$/,t)===null)throw new hA("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=TAt(t),i=n.length>0?n[0]:"",a=AAt("%"+i+"%",r),o=a.name,s=a.value,l=!1,u=a.alias;u&&(i=u[0],_At(n,yAt([0,1],u)));for(var c=1,f=!0;c=n.length){var m=Q4(s,h);f=!!m,f&&"get"in m&&!("originalValue"in m.get)?s=m.get:s=s[h]}else f=eR(s,h),s=s[h];f&&!l&&(T2[o]=s)}}return s}});var OAe=ye((Ghr,qAe)=>{"use strict";var FAe=$4(),SAt=IH(),dA=sA(),zAe=w2();qAe.exports=function(t,r,n){if(!t||typeof t!="object"&&typeof t!="function")throw new dA("`obj` must be an object or a function`");if(typeof r!="string"&&typeof r!="symbol")throw new dA("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new dA("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new dA("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new dA("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new dA("`loose`, if provided, must be a boolean");var i=arguments.length>3?arguments[3]:null,a=arguments.length>4?arguments[4]:null,o=arguments.length>5?arguments[5]:null,s=arguments.length>6?arguments[6]:!1,l=!!zAe&&zAe(t,r);if(FAe)FAe(t,r,{configurable:o===null&&l?l.configurable:!o,enumerable:i===null&&l?l.enumerable:!i,value:n,writable:a===null&&l?l.writable:!a});else if(s||!i&&!a&&!o)t[r]=n;else throw new SAt("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")}});var NH=ye((Hhr,NAe)=>{"use strict";var BH=$4(),BAe=function(){return!!BH};BAe.hasArrayLengthDefineBug=function(){if(!BH)return null;try{return BH([],"length",{value:1}).length!==1}catch(t){return!0}};NAe.exports=BAe});var jAe=ye((jhr,HAe)=>{"use strict";var MAt=rR(),UAe=OAe(),EAt=NH()(),VAe=w2(),GAe=sA(),kAt=MAt("%Math.floor%");HAe.exports=function(t,r){if(typeof t!="function")throw new GAe("`fn` is not a function");if(typeof r!="number"||r<0||r>4294967295||kAt(r)!==r)throw new GAe("`length` must be a positive 32-bit integer");var n=arguments.length>2&&!!arguments[2],i=!0,a=!0;if("length"in t&&VAe){var o=VAe(t,"length");o&&!o.configurable&&(i=!1),o&&!o.writable&&(a=!1)}return(i||a||!n)&&(EAt?UAe(t,"length",r,!0,!0):UAe(t,"length",r)),t}});var rE=ye((Whr,iR)=>{"use strict";var UH=lA(),nR=rR(),CAt=jAe(),LAt=sA(),ZAe=nR("%Function.prototype.apply%"),YAe=nR("%Function.prototype.call%"),KAe=nR("%Reflect.apply%",!0)||UH.call(YAe,ZAe),WAe=$4(),PAt=nR("%Math.max%");iR.exports=function(t){if(typeof t!="function")throw new LAt("a function is required");var r=KAe(UH,YAe,arguments);return CAt(r,1+PAt(0,t.length-(arguments.length-1)),!0)};var XAe=function(){return KAe(UH,ZAe,arguments)};WAe?WAe(iR.exports,"apply",{value:XAe}):iR.exports.apply=XAe});var vA=ye((Xhr,QAe)=>{"use strict";var JAe=rR(),$Ae=rE(),IAt=$Ae(JAe("String.prototype.indexOf"));QAe.exports=function(t,r){var n=JAe(t,!!r);return typeof n=="function"&&IAt(t,".prototype.")>-1?$Ae(n):n}});var r5e=ye((Zhr,t5e)=>{"use strict";var RAt=J4()(),DAt=vA(),VH=DAt("Object.prototype.toString"),aR=function(t){return RAt&&t&&typeof t=="object"&&Symbol.toStringTag in t?!1:VH(t)==="[object Arguments]"},e5e=function(t){return aR(t)?!0:t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&VH(t)!=="[object Array]"&&VH(t.callee)==="[object Function]"},FAt=function(){return aR(arguments)}();aR.isLegacyArguments=e5e;t5e.exports=FAt?aR:e5e});var a5e=ye((Yhr,n5e)=>{"use strict";var zAt=Object.prototype.toString,qAt=Function.prototype.toString,OAt=/^\s*(?:function)?\*/,i5e=J4()(),GH=Object.getPrototypeOf,BAt=function(){if(!i5e)return!1;try{return Function("return function*() {}")()}catch(e){}},HH;n5e.exports=function(t){if(typeof t!="function")return!1;if(OAt.test(qAt.call(t)))return!0;if(!i5e){var r=zAt.call(t);return r==="[object GeneratorFunction]"}if(!GH)return!1;if(typeof HH=="undefined"){var n=BAt();HH=n?GH(n):!1}return GH(t)===HH}});var u5e=ye((Khr,l5e)=>{"use strict";var s5e=Function.prototype.toString,pA=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,WH,oR;if(typeof pA=="function"&&typeof Object.defineProperty=="function")try{WH=Object.defineProperty({},"length",{get:function(){throw oR}}),oR={},pA(function(){throw 42},null,WH)}catch(e){e!==oR&&(pA=null)}else pA=null;var NAt=/^\s*class\b/,XH=function(t){try{var r=s5e.call(t);return NAt.test(r)}catch(n){return!1}},jH=function(t){try{return XH(t)?!1:(s5e.call(t),!0)}catch(r){return!1}},sR=Object.prototype.toString,UAt="[object Object]",VAt="[object Function]",GAt="[object GeneratorFunction]",HAt="[object HTMLAllCollection]",jAt="[object HTML document.all class]",WAt="[object HTMLCollection]",XAt=typeof Symbol=="function"&&!!Symbol.toStringTag,ZAt=!(0 in[,]),ZH=function(){return!1};typeof document=="object"&&(o5e=document.all,sR.call(o5e)===sR.call(document.all)&&(ZH=function(t){if((ZAt||!t)&&(typeof t=="undefined"||typeof t=="object"))try{var r=sR.call(t);return(r===HAt||r===jAt||r===WAt||r===UAt)&&t("")==null}catch(n){}return!1}));var o5e;l5e.exports=pA?function(t){if(ZH(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;try{pA(t,null,WH)}catch(r){if(r!==oR)return!1}return!XH(t)&&jH(t)}:function(t){if(ZH(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;if(XAt)return jH(t);if(XH(t))return!1;var r=sR.call(t);return r!==VAt&&r!==GAt&&!/^\[object HTML/.test(r)?!1:jH(t)}});var YH=ye((Jhr,f5e)=>{"use strict";var YAt=u5e(),KAt=Object.prototype.toString,c5e=Object.prototype.hasOwnProperty,JAt=function(t,r,n){for(var i=0,a=t.length;i=3&&(i=n),KAt.call(t)==="[object Array]"?JAt(t,r,i):typeof t=="string"?$At(t,r,i):QAt(t,r,i)};f5e.exports=e5t});var JH=ye(($hr,h5e)=>{"use strict";var KH=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],t5t=typeof globalThis=="undefined"?window:globalThis;h5e.exports=function(){for(var t=[],r=0;r{"use strict";var uR=YH(),r5t=JH(),d5e=rE(),ej=vA(),lR=w2(),i5t=ej("Object.prototype.toString"),p5e=J4()(),v5e=typeof globalThis=="undefined"?window:globalThis,QH=r5t(),tj=ej("String.prototype.slice"),$H=Object.getPrototypeOf,n5t=ej("Array.prototype.indexOf",!0)||function(t,r){for(var n=0;n-1?r:r!=="Object"?!1:o5t(t)}return lR?a5t(t):null}});var T5e=ye((edr,w5e)=>{"use strict";var y5e=YH(),s5t=JH(),ij=vA(),l5t=ij("Object.prototype.toString"),_5e=J4()(),fR=w2(),u5t=typeof globalThis=="undefined"?window:globalThis,x5e=s5t(),c5t=ij("Array.prototype.indexOf",!0)||function(t,r){for(var n=0;n-1}return fR?h5t(t):!1}});var oj=ye(uu=>{"use strict";var d5t=r5e(),v5t=a5e(),Wg=m5e(),A5e=T5e();function gA(e){return e.call.bind(e)}var S5e=typeof BigInt!="undefined",M5e=typeof Symbol!="undefined",K0=gA(Object.prototype.toString),p5t=gA(Number.prototype.valueOf),g5t=gA(String.prototype.valueOf),m5t=gA(Boolean.prototype.valueOf);S5e&&(E5e=gA(BigInt.prototype.valueOf));var E5e;M5e&&(k5e=gA(Symbol.prototype.valueOf));var k5e;function nE(e,t){if(typeof e!="object")return!1;try{return t(e),!0}catch(r){return!1}}uu.isArgumentsObject=d5t;uu.isGeneratorFunction=v5t;uu.isTypedArray=A5e;function y5t(e){return typeof Promise!="undefined"&&e instanceof Promise||e!==null&&typeof e=="object"&&typeof e.then=="function"&&typeof e.catch=="function"}uu.isPromise=y5t;function _5t(e){return typeof ArrayBuffer!="undefined"&&ArrayBuffer.isView?ArrayBuffer.isView(e):A5e(e)||L5e(e)}uu.isArrayBufferView=_5t;function x5t(e){return Wg(e)==="Uint8Array"}uu.isUint8Array=x5t;function b5t(e){return Wg(e)==="Uint8ClampedArray"}uu.isUint8ClampedArray=b5t;function w5t(e){return Wg(e)==="Uint16Array"}uu.isUint16Array=w5t;function T5t(e){return Wg(e)==="Uint32Array"}uu.isUint32Array=T5t;function A5t(e){return Wg(e)==="Int8Array"}uu.isInt8Array=A5t;function S5t(e){return Wg(e)==="Int16Array"}uu.isInt16Array=S5t;function M5t(e){return Wg(e)==="Int32Array"}uu.isInt32Array=M5t;function E5t(e){return Wg(e)==="Float32Array"}uu.isFloat32Array=E5t;function k5t(e){return Wg(e)==="Float64Array"}uu.isFloat64Array=k5t;function C5t(e){return Wg(e)==="BigInt64Array"}uu.isBigInt64Array=C5t;function L5t(e){return Wg(e)==="BigUint64Array"}uu.isBigUint64Array=L5t;function hR(e){return K0(e)==="[object Map]"}hR.working=typeof Map!="undefined"&&hR(new Map);function P5t(e){return typeof Map=="undefined"?!1:hR.working?hR(e):e instanceof Map}uu.isMap=P5t;function dR(e){return K0(e)==="[object Set]"}dR.working=typeof Set!="undefined"&&dR(new Set);function I5t(e){return typeof Set=="undefined"?!1:dR.working?dR(e):e instanceof Set}uu.isSet=I5t;function vR(e){return K0(e)==="[object WeakMap]"}vR.working=typeof WeakMap!="undefined"&&vR(new WeakMap);function R5t(e){return typeof WeakMap=="undefined"?!1:vR.working?vR(e):e instanceof WeakMap}uu.isWeakMap=R5t;function aj(e){return K0(e)==="[object WeakSet]"}aj.working=typeof WeakSet!="undefined"&&aj(new WeakSet);function D5t(e){return aj(e)}uu.isWeakSet=D5t;function pR(e){return K0(e)==="[object ArrayBuffer]"}pR.working=typeof ArrayBuffer!="undefined"&&pR(new ArrayBuffer);function C5e(e){return typeof ArrayBuffer=="undefined"?!1:pR.working?pR(e):e instanceof ArrayBuffer}uu.isArrayBuffer=C5e;function gR(e){return K0(e)==="[object DataView]"}gR.working=typeof ArrayBuffer!="undefined"&&typeof DataView!="undefined"&&gR(new DataView(new ArrayBuffer(1),0,1));function L5e(e){return typeof DataView=="undefined"?!1:gR.working?gR(e):e instanceof DataView}uu.isDataView=L5e;var nj=typeof SharedArrayBuffer!="undefined"?SharedArrayBuffer:void 0;function iE(e){return K0(e)==="[object SharedArrayBuffer]"}function P5e(e){return typeof nj=="undefined"?!1:(typeof iE.working=="undefined"&&(iE.working=iE(new nj)),iE.working?iE(e):e instanceof nj)}uu.isSharedArrayBuffer=P5e;function F5t(e){return K0(e)==="[object AsyncFunction]"}uu.isAsyncFunction=F5t;function z5t(e){return K0(e)==="[object Map Iterator]"}uu.isMapIterator=z5t;function q5t(e){return K0(e)==="[object Set Iterator]"}uu.isSetIterator=q5t;function O5t(e){return K0(e)==="[object Generator]"}uu.isGeneratorObject=O5t;function B5t(e){return K0(e)==="[object WebAssembly.Module]"}uu.isWebAssemblyCompiledModule=B5t;function I5e(e){return nE(e,p5t)}uu.isNumberObject=I5e;function R5e(e){return nE(e,g5t)}uu.isStringObject=R5e;function D5e(e){return nE(e,m5t)}uu.isBooleanObject=D5e;function F5e(e){return S5e&&nE(e,E5e)}uu.isBigIntObject=F5e;function z5e(e){return M5e&&nE(e,k5e)}uu.isSymbolObject=z5e;function N5t(e){return I5e(e)||R5e(e)||D5e(e)||F5e(e)||z5e(e)}uu.isBoxedPrimitive=N5t;function U5t(e){return typeof Uint8Array!="undefined"&&(C5e(e)||P5e(e))}uu.isAnyArrayBuffer=U5t;["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(e){Object.defineProperty(uu,e,{enumerable:!1,value:function(){throw new Error(e+" is not supported in userland")}})})});var sj=ye((rdr,q5e)=>{q5e.exports=function(t){return t&&typeof t=="object"&&typeof t.copy=="function"&&typeof t.fill=="function"&&typeof t.readUInt8=="function"}});var dj=ye(cu=>{var O5e=Object.getOwnPropertyDescriptors||function(t){for(var r=Object.keys(t),n={},i=0;i=i)return s;switch(s){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(l){return"[Circular]"}default:return s}}),o=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),fj(t)?r.showHidden=t:t&&cu._extend(r,t),S2(r.showHidden)&&(r.showHidden=!1),S2(r.depth)&&(r.depth=2),S2(r.colors)&&(r.colors=!1),S2(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=G5t),xR(r,e,r.depth)}cu.inspect=U_;U_.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};U_.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function G5t(e,t){var r=U_.styles[t];return r?"\x1B["+U_.colors[r][0]+"m"+e+"\x1B["+U_.colors[r][1]+"m":e}function H5t(e,t){return e}function j5t(e){var t={};return e.forEach(function(r,n){t[r]=!0}),t}function xR(e,t,r){if(e.customInspect&&t&&_R(t.inspect)&&t.inspect!==cu.inspect&&!(t.constructor&&t.constructor.prototype===t)){var n=t.inspect(r,e);return TR(n)||(n=xR(e,n,r)),n}var i=W5t(e,t);if(i)return i;var a=Object.keys(t),o=j5t(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),oE(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return lj(t);if(a.length===0){if(_R(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(aE(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(bR(t))return e.stylize(Date.prototype.toString.call(t),"date");if(oE(t))return lj(t)}var l="",u=!1,c=["{","}"];if(N5e(t)&&(u=!0,c=["[","]"]),_R(t)){var f=t.name?": "+t.name:"";l=" [Function"+f+"]"}if(aE(t)&&(l=" "+RegExp.prototype.toString.call(t)),bR(t)&&(l=" "+Date.prototype.toUTCString.call(t)),oE(t)&&(l=" "+lj(t)),a.length===0&&(!u||t.length==0))return c[0]+l+c[1];if(r<0)return aE(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var h;return u?h=X5t(e,t,r,o,a):h=a.map(function(d){return cj(e,t,r,o,d,u)}),e.seen.pop(),Z5t(h,l,c)}function W5t(e,t){if(S2(t))return e.stylize("undefined","undefined");if(TR(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(U5e(t))return e.stylize(""+t,"number");if(fj(t))return e.stylize(""+t,"boolean");if(wR(t))return e.stylize("null","null")}function lj(e){return"["+Error.prototype.toString.call(e)+"]"}function X5t(e,t,r,n,i){for(var a=[],o=0,s=t.length;o-1&&(a?s=s.split(` +`).map(function(u){return" "+u}).join(` +`).slice(2):s=` +`+s.split(` +`).map(function(u){return" "+u}).join(` +`))):s=e.stylize("[Circular]","special")),S2(o)){if(a&&i.match(/^\d+$/))return s;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.slice(1,-1),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+s}function Z5t(e,t,r){var n=0,i=e.reduce(function(a,o){return n++,o.indexOf(` +`)>=0&&n++,a+o.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(t===""?"":t+` + `)+" "+e.join(`, + `)+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}cu.types=oj();function N5e(e){return Array.isArray(e)}cu.isArray=N5e;function fj(e){return typeof e=="boolean"}cu.isBoolean=fj;function wR(e){return e===null}cu.isNull=wR;function Y5t(e){return e==null}cu.isNullOrUndefined=Y5t;function U5e(e){return typeof e=="number"}cu.isNumber=U5e;function TR(e){return typeof e=="string"}cu.isString=TR;function K5t(e){return typeof e=="symbol"}cu.isSymbol=K5t;function S2(e){return e===void 0}cu.isUndefined=S2;function aE(e){return mA(e)&&hj(e)==="[object RegExp]"}cu.isRegExp=aE;cu.types.isRegExp=aE;function mA(e){return typeof e=="object"&&e!==null}cu.isObject=mA;function bR(e){return mA(e)&&hj(e)==="[object Date]"}cu.isDate=bR;cu.types.isDate=bR;function oE(e){return mA(e)&&(hj(e)==="[object Error]"||e instanceof Error)}cu.isError=oE;cu.types.isNativeError=oE;function _R(e){return typeof e=="function"}cu.isFunction=_R;function J5t(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}cu.isPrimitive=J5t;cu.isBuffer=sj();function hj(e){return Object.prototype.toString.call(e)}function uj(e){return e<10?"0"+e.toString(10):e.toString(10)}var $5t=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Q5t(){var e=new Date,t=[uj(e.getHours()),uj(e.getMinutes()),uj(e.getSeconds())].join(":");return[e.getDate(),$5t[e.getMonth()],t].join(" ")}cu.log=function(){console.log("%s - %s",Q5t(),cu.format.apply(cu,arguments))};cu.inherits=Zy();cu._extend=function(e,t){if(!t||!mA(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};function V5e(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var A2=typeof Symbol!="undefined"?Symbol("util.promisify.custom"):void 0;cu.promisify=function(t){if(typeof t!="function")throw new TypeError('The "original" argument must be of type Function');if(A2&&t[A2]){var r=t[A2];if(typeof r!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(r,A2,{value:r,enumerable:!1,writable:!1,configurable:!0}),r}function r(){for(var n,i,a=new Promise(function(l,u){n=l,i=u}),o=[],s=0;s{"use strict";function G5e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function rSt(e){for(var t=1;t0?this.tail.next=n:this.head=n,this.tail=n,++this.length}},{key:"unshift",value:function(r){var n={data:r,next:this.head};this.length===0&&(this.tail=n),this.head=n,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var n=this.head,i=""+n.data;n=n.next;)i+=r+n.data;return i}},{key:"concat",value:function(r){if(this.length===0)return AR.alloc(0);for(var n=AR.allocUnsafe(r>>>0),i=this.head,a=0;i;)uSt(i.data,n,a),a+=i.data.length,i=i.next;return n}},{key:"consume",value:function(r,n){var i;return ro.length?o.length:r;if(s===o.length?a+=o:a+=o.slice(0,r),r-=s,r===0){s===o.length?(++i,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(s));break}++i}return this.length-=i,a}},{key:"_getBuffer",value:function(r){var n=AR.allocUnsafe(r),i=this.head,a=1;for(i.data.copy(n),r-=i.data.length;i=i.next;){var o=i.data,s=r>o.length?o.length:r;if(o.copy(n,n.length-r,0,s),r-=s,r===0){s===o.length?(++a,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(s));break}++a}return this.length-=a,n}},{key:lSt,value:function(r,n){return vj(this,rSt({},n,{depth:0,customInspect:!1}))}}]),e}()});var gj=ye((adr,Z5e)=>{"use strict";function cSt(e,t){var r=this,n=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return n||i?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(pj,this,e)):process.nextTick(pj,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(a){!t&&a?r._writableState?r._writableState.errorEmitted?process.nextTick(SR,r):(r._writableState.errorEmitted=!0,process.nextTick(X5e,r,a)):process.nextTick(X5e,r,a):t?(process.nextTick(SR,r),t(a)):process.nextTick(SR,r)}),this)}function X5e(e,t){pj(e,t),SR(e)}function SR(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function fSt(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function pj(e,t){e.emit("error",t)}function hSt(e,t){var r=e._readableState,n=e._writableState;r&&r.autoDestroy||n&&n.autoDestroy?e.destroy(t):e.emit("error",t)}Z5e.exports={destroy:cSt,undestroy:fSt,errorOrDestroy:hSt}});var M2=ye((odr,J5e)=>{"use strict";function dSt(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var K5e={};function J0(e,t,r){r||(r=Error);function n(a,o,s){return typeof t=="string"?t:t(a,o,s)}var i=function(a){dSt(o,a);function o(s,l,u){return a.call(this,n(s,l,u))||this}return o}(r);i.prototype.name=r.name,i.prototype.code=e,K5e[e]=i}function Y5e(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(n){return String(n)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function vSt(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function pSt(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function gSt(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}J0("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);J0("ERR_INVALID_ARG_TYPE",function(e,t,r){var n;typeof t=="string"&&vSt(t,"not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";var i;if(pSt(e," argument"))i="The ".concat(e," ").concat(n," ").concat(Y5e(t,"type"));else{var a=gSt(e,".")?"property":"argument";i='The "'.concat(e,'" ').concat(a," ").concat(n," ").concat(Y5e(t,"type"))}return i+=". Received type ".concat(typeof r),i},TypeError);J0("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");J0("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});J0("ERR_STREAM_PREMATURE_CLOSE","Premature close");J0("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});J0("ERR_MULTIPLE_CALLBACK","Callback called multiple times");J0("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");J0("ERR_STREAM_WRITE_AFTER_END","write after end");J0("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);J0("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);J0("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");J5e.exports.codes=K5e});var mj=ye((sdr,$5e)=>{"use strict";var mSt=M2().codes.ERR_INVALID_OPT_VALUE;function ySt(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function _St(e,t,r,n){var i=ySt(t,n,r);if(i!=null){if(!(isFinite(i)&&Math.floor(i)===i)||i<0){var a=n?r:"highWaterMark";throw new mSt(a,i)}return Math.floor(i)}return e.objectMode?16:16*1024}$5e.exports={getHighWaterMark:_St}});var eSe=ye((ldr,Q5e)=>{Q5e.exports=xSt;function xSt(e,t){if(yj("noDeprecation"))return e;var r=!1;function n(){if(!r){if(yj("throwDeprecation"))throw new Error(t);yj("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}return n}function yj(e){try{if(!window.localStorage)return!1}catch(r){return!1}var t=window.localStorage[e];return t==null?!1:String(t).toLowerCase()==="true"}});var bj=ye((udr,oSe)=>{"use strict";oSe.exports=Bh;function rSe(e){var t=this;this.next=null,this.entry=null,this.finish=function(){XSt(t,e)}}var yA;Bh.WritableState=lE;var bSt={deprecate:eSe()},iSe=xH(),ER=b2().Buffer,wSt=window.Uint8Array||function(){};function TSt(e){return ER.from(e)}function ASt(e){return ER.isBuffer(e)||e instanceof wSt}var xj=gj(),SSt=mj(),MSt=SSt.getHighWaterMark,V_=M2().codes,ESt=V_.ERR_INVALID_ARG_TYPE,kSt=V_.ERR_METHOD_NOT_IMPLEMENTED,CSt=V_.ERR_MULTIPLE_CALLBACK,LSt=V_.ERR_STREAM_CANNOT_PIPE,PSt=V_.ERR_STREAM_DESTROYED,ISt=V_.ERR_STREAM_NULL_VALUES,RSt=V_.ERR_STREAM_WRITE_AFTER_END,DSt=V_.ERR_UNKNOWN_ENCODING,_A=xj.errorOrDestroy;Zy()(Bh,iSe);function FSt(){}function lE(e,t,r){yA=yA||E2(),e=e||{},typeof r!="boolean"&&(r=t instanceof yA),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=MSt(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var n=e.decodeStrings===!1;this.decodeStrings=!n,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(i){VSt(t,i)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new rSe(this)}lE.prototype.getBuffer=function(){for(var t=this.bufferedRequest,r=[];t;)r.push(t),t=t.next;return r};(function(){try{Object.defineProperty(lE.prototype,"buffer",{get:bSt.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}})();var MR;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(MR=Function.prototype[Symbol.hasInstance],Object.defineProperty(Bh,Symbol.hasInstance,{value:function(t){return MR.call(this,t)?!0:this!==Bh?!1:t&&t._writableState instanceof lE}})):MR=function(t){return t instanceof this};function Bh(e){yA=yA||E2();var t=this instanceof yA;if(!t&&!MR.call(Bh,this))return new Bh(e);this._writableState=new lE(e,this,t),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev),typeof e.destroy=="function"&&(this._destroy=e.destroy),typeof e.final=="function"&&(this._final=e.final)),iSe.call(this)}Bh.prototype.pipe=function(){_A(this,new LSt)};function zSt(e,t){var r=new RSt;_A(e,r),process.nextTick(t,r)}function qSt(e,t,r,n){var i;return r===null?i=new ISt:typeof r!="string"&&!t.objectMode&&(i=new ESt("chunk",["string","Buffer"],r)),i?(_A(e,i),process.nextTick(n,i),!1):!0}Bh.prototype.write=function(e,t,r){var n=this._writableState,i=!1,a=!n.objectMode&&ASt(e);return a&&!ER.isBuffer(e)&&(e=TSt(e)),typeof t=="function"&&(r=t,t=null),a?t="buffer":t||(t=n.defaultEncoding),typeof r!="function"&&(r=FSt),n.ending?zSt(this,r):(a||qSt(this,n,e,r))&&(n.pendingcb++,i=BSt(this,n,a,e,t,r)),i};Bh.prototype.cork=function(){this._writableState.corked++};Bh.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&nSe(this,e))};Bh.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new DSt(t);return this._writableState.defaultEncoding=t,this};Object.defineProperty(Bh.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function OSt(e,t,r){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=ER.from(t,r)),t}Object.defineProperty(Bh.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function BSt(e,t,r,n,i,a){if(!r){var o=OSt(t,n,i);n!==o&&(r=!0,i="buffer",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length{"use strict";var ZSt=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};lSe.exports=Wm;var sSe=Aj(),Tj=bj();Zy()(Wm,sSe);for(wj=ZSt(Tj.prototype),kR=0;kR{var LR=b2(),Xm=LR.Buffer;function uSe(e,t){for(var r in e)t[r]=e[r]}Xm.from&&Xm.alloc&&Xm.allocUnsafe&&Xm.allocUnsafeSlow?cSe.exports=LR:(uSe(LR,Sj),Sj.Buffer=k2);function k2(e,t,r){return Xm(e,t,r)}k2.prototype=Object.create(Xm.prototype);uSe(Xm,k2);k2.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return Xm(e,t,r)};k2.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=Xm(e);return t!==void 0?typeof r=="string"?n.fill(t,r):n.fill(t):n.fill(0),n};k2.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Xm(e)};k2.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return LR.SlowBuffer(e)}});var kj=ye(dSe=>{"use strict";var Ej=fSe().Buffer,hSe=Ej.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function JSt(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function $St(e){var t=JSt(e);if(typeof t!="string"&&(Ej.isEncoding===hSe||!hSe(e)))throw new Error("Unknown encoding: "+e);return t||e}dSe.StringDecoder=uE;function uE(e){this.encoding=$St(e);var t;switch(this.encoding){case"utf16le":this.text=nMt,this.end=aMt,t=4;break;case"utf8":this.fillLast=tMt,t=4;break;case"base64":this.text=oMt,this.end=sMt,t=3;break;default:this.write=lMt,this.end=uMt;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=Ej.allocUnsafe(t)}uE.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function QSt(e,t,r){var n=t.length-1;if(n=0?(i>0&&(e.lastNeed=i-1),i):--n=0?(i>0&&(e.lastNeed=i-2),i):--n=0?(i>0&&(i===2?i=0:e.lastNeed=i-3),i):0))}function eMt(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"\uFFFD";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"\uFFFD";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"\uFFFD"}}function tMt(e){var t=this.lastTotal-this.lastNeed,r=eMt(this,e,t);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function rMt(e,t){var r=QSt(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)}function iMt(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"\uFFFD":t}function nMt(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function aMt(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function oMt(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function sMt(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function lMt(e){return e.toString(this.encoding)}function uMt(e){return e&&e.length?this.write(e):""}});var PR=ye((hdr,gSe)=>{"use strict";var vSe=M2().codes.ERR_STREAM_PREMATURE_CLOSE;function cMt(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i{"use strict";var IR;function G_(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var dMt=PR(),H_=Symbol("lastResolve"),C2=Symbol("lastReject"),cE=Symbol("error"),RR=Symbol("ended"),L2=Symbol("lastPromise"),Cj=Symbol("handlePromise"),P2=Symbol("stream");function j_(e,t){return{value:e,done:t}}function vMt(e){var t=e[H_];if(t!==null){var r=e[P2].read();r!==null&&(e[L2]=null,e[H_]=null,e[C2]=null,t(j_(r,!1)))}}function pMt(e){process.nextTick(vMt,e)}function gMt(e,t){return function(r,n){e.then(function(){if(t[RR]){r(j_(void 0,!0));return}t[Cj](r,n)},n)}}var mMt=Object.getPrototypeOf(function(){}),yMt=Object.setPrototypeOf((IR={get stream(){return this[P2]},next:function(){var t=this,r=this[cE];if(r!==null)return Promise.reject(r);if(this[RR])return Promise.resolve(j_(void 0,!0));if(this[P2].destroyed)return new Promise(function(o,s){process.nextTick(function(){t[cE]?s(t[cE]):o(j_(void 0,!0))})});var n=this[L2],i;if(n)i=new Promise(gMt(n,this));else{var a=this[P2].read();if(a!==null)return Promise.resolve(j_(a,!1));i=new Promise(this[Cj])}return this[L2]=i,i}},G_(IR,Symbol.asyncIterator,function(){return this}),G_(IR,"return",function(){var t=this;return new Promise(function(r,n){t[P2].destroy(null,function(i){if(i){n(i);return}r(j_(void 0,!0))})})}),IR),mMt),_Mt=function(t){var r,n=Object.create(yMt,(r={},G_(r,P2,{value:t,writable:!0}),G_(r,H_,{value:null,writable:!0}),G_(r,C2,{value:null,writable:!0}),G_(r,cE,{value:null,writable:!0}),G_(r,RR,{value:t._readableState.endEmitted,writable:!0}),G_(r,Cj,{value:function(a,o){var s=n[P2].read();s?(n[L2]=null,n[H_]=null,n[C2]=null,a(j_(s,!1))):(n[H_]=a,n[C2]=o)},writable:!0}),r));return n[L2]=null,dMt(t,function(i){if(i&&i.code!=="ERR_STREAM_PREMATURE_CLOSE"){var a=n[C2];a!==null&&(n[L2]=null,n[H_]=null,n[C2]=null,a(i)),n[cE]=i;return}var o=n[H_];o!==null&&(n[L2]=null,n[H_]=null,n[C2]=null,o(j_(void 0,!0))),n[RR]=!0}),t.on("readable",pMt.bind(null,n)),n};mSe.exports=_Mt});var xSe=ye((vdr,_Se)=>{_Se.exports=function(){throw new Error("Readable.from is not available in the browser")}});var Aj=ye((gdr,LSe)=>{"use strict";LSe.exports=Bu;var xA;Bu.ReadableState=ASe;var pdr=Sb().EventEmitter,TSe=function(t,r){return t.listeners(r).length},hE=xH(),DR=b2().Buffer,xMt=window.Uint8Array||function(){};function bMt(e){return DR.from(e)}function wMt(e){return DR.isBuffer(e)||e instanceof xMt}var Lj=dj(),nu;Lj&&Lj.debuglog?nu=Lj.debuglog("stream"):nu=function(){};var TMt=W5e(),qj=gj(),AMt=mj(),SMt=AMt.getHighWaterMark,FR=M2().codes,MMt=FR.ERR_INVALID_ARG_TYPE,EMt=FR.ERR_STREAM_PUSH_AFTER_EOF,kMt=FR.ERR_METHOD_NOT_IMPLEMENTED,CMt=FR.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,bA,Pj,Ij;Zy()(Bu,hE);var fE=qj.errorOrDestroy,Rj=["error","close","destroy","pause","resume"];function LMt(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}function ASe(e,t,r){xA=xA||E2(),e=e||{},typeof r!="boolean"&&(r=t instanceof xA),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=SMt(this,e,"readableHighWaterMark",r),this.buffer=new TMt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(bA||(bA=kj().StringDecoder),this.decoder=new bA(e.encoding),this.encoding=e.encoding)}function Bu(e){if(xA=xA||E2(),!(this instanceof Bu))return new Bu(e);var t=this instanceof xA;this._readableState=new ASe(e,this,t),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),hE.call(this)}Object.defineProperty(Bu.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}});Bu.prototype.destroy=qj.destroy;Bu.prototype._undestroy=qj.undestroy;Bu.prototype._destroy=function(e,t){t(e)};Bu.prototype.push=function(e,t){var r=this._readableState,n;return r.objectMode?n=!0:typeof e=="string"&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=DR.from(e,t),t=""),n=!0),SSe(this,e,t,!1,n)};Bu.prototype.unshift=function(e){return SSe(this,e,null,!0,!1)};function SSe(e,t,r,n,i){nu("readableAddChunk",t);var a=e._readableState;if(t===null)a.reading=!1,RMt(e,a);else{var o;if(i||(o=PMt(a,t)),o)fE(e,o);else if(a.objectMode||t&&t.length>0)if(typeof t!="string"&&!a.objectMode&&Object.getPrototypeOf(t)!==DR.prototype&&(t=bMt(t)),n)a.endEmitted?fE(e,new CMt):Dj(e,a,t,!0);else if(a.ended)fE(e,new EMt);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||t.length!==0?Dj(e,a,t,!1):zj(e,a)):Dj(e,a,t,!1)}else n||(a.reading=!1,zj(e,a))}return!a.ended&&(a.length=bSe?e=bSe:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function wSe(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=IMt(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}Bu.prototype.read=function(e){nu("read",e),e=parseInt(e,10);var t=this._readableState,r=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended))return nu("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?Fj(this):zR(this),null;if(e=wSe(e,t),e===0&&t.ended)return t.length===0&&Fj(this),null;var n=t.needReadable;nu("need readable",n),(t.length===0||t.length-e0?i=kSe(e,t):i=null,i===null?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),t.length===0&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&Fj(this)),i!==null&&this.emit("data",i),i};function RMt(e,t){if(nu("onEofChunk"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?zR(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,MSe(e)))}}function zR(e){var t=e._readableState;nu("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(nu("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(MSe,e))}function MSe(e){var t=e._readableState;nu("emitReadable_",t.destroyed,t.length,t.ended),!t.destroyed&&(t.length||t.ended)&&(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,Oj(e)}function zj(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(DMt,e,t))}function DMt(e,t){for(;!t.reading&&!t.ended&&(t.length1&&CSe(n.pipes,e)!==-1)&&!u&&(nu("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function h(b){nu("onerror",b),m(),e.removeListener("error",h),TSe(e,"error")===0&&fE(e,b)}LMt(e,"error",h);function d(){e.removeListener("finish",v),m()}e.once("close",d);function v(){nu("onfinish"),e.removeListener("close",d),m()}e.once("finish",v);function m(){nu("unpipe"),r.unpipe(e)}return e.emit("pipe",r),n.flowing||(nu("pipe resume"),r.resume()),e};function FMt(e){return function(){var r=e._readableState;nu("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&TSe(e,"data")&&(r.flowing=!0,Oj(e))}}Bu.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a0,n.flowing!==!1&&this.resume()):e==="readable"&&!n.endEmitted&&!n.readableListening&&(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,nu("on readable",n.length,n.reading),n.length?zR(this):n.reading||process.nextTick(zMt,this)),r};Bu.prototype.addListener=Bu.prototype.on;Bu.prototype.removeListener=function(e,t){var r=hE.prototype.removeListener.call(this,e,t);return e==="readable"&&process.nextTick(ESe,this),r};Bu.prototype.removeAllListeners=function(e){var t=hE.prototype.removeAllListeners.apply(this,arguments);return(e==="readable"||e===void 0)&&process.nextTick(ESe,this),t};function ESe(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function zMt(e){nu("readable nexttick read 0"),e.read(0)}Bu.prototype.resume=function(){var e=this._readableState;return e.flowing||(nu("resume"),e.flowing=!e.readableListening,qMt(this,e)),e.paused=!1,this};function qMt(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(OMt,e,t))}function OMt(e,t){nu("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),Oj(e),t.flowing&&!t.reading&&e.read(0)}Bu.prototype.pause=function(){return nu("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(nu("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function Oj(e){var t=e._readableState;for(nu("flow",t.flowing);t.flowing&&e.read()!==null;);}Bu.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;e.on("end",function(){if(nu("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&t.push(o)}t.push(null)}),e.on("data",function(o){if(nu("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var s=t.push(o);s||(n=!0,e.pause())}});for(var i in e)this[i]===void 0&&typeof e[i]=="function"&&(this[i]=function(s){return function(){return e[s].apply(e,arguments)}}(i));for(var a=0;a=t.length?(t.decoder?r=t.buffer.join(""):t.buffer.length===1?r=t.buffer.first():r=t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r}function Fj(e){var t=e._readableState;nu("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(BMt,t,e))}function BMt(e,t){if(nu("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}typeof Symbol=="function"&&(Bu.from=function(e,t){return Ij===void 0&&(Ij=xSe()),Ij(Bu,e,t)});function CSe(e,t){for(var r=0,n=e.length;r{"use strict";ISe.exports=Ky;var qR=M2().codes,NMt=qR.ERR_METHOD_NOT_IMPLEMENTED,UMt=qR.ERR_MULTIPLE_CALLBACK,VMt=qR.ERR_TRANSFORM_ALREADY_TRANSFORMING,GMt=qR.ERR_TRANSFORM_WITH_LENGTH_0,OR=E2();Zy()(Ky,OR);function HMt(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(n===null)return this.emit("error",new UMt);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length{"use strict";DSe.exports=dE;var RSe=Bj();Zy()(dE,RSe);function dE(e){if(!(this instanceof dE))return new dE(e);RSe.call(this,e)}dE.prototype._transform=function(e,t,r){r(null,e)}});var NSe=ye((_dr,BSe)=>{"use strict";var Nj;function WMt(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var OSe=M2().codes,XMt=OSe.ERR_MISSING_ARGS,ZMt=OSe.ERR_STREAM_DESTROYED;function zSe(e){if(e)throw e}function YMt(e){return e.setHeader&&typeof e.abort=="function"}function KMt(e,t,r,n){n=WMt(n);var i=!1;e.on("close",function(){i=!0}),Nj===void 0&&(Nj=PR()),Nj(e,{readable:t,writable:r},function(o){if(o)return n(o);i=!0,n()});var a=!1;return function(o){if(!i&&!a){if(a=!0,YMt(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();n(o||new ZMt("pipe"))}}}function qSe(e){e()}function JMt(e,t){return e.pipe(t)}function $Mt(e){return!e.length||typeof e[e.length-1]!="function"?zSe:e.pop()}function QMt(){for(var e=arguments.length,t=new Array(e),r=0;r0;return KMt(o,l,u,function(c){i||(i=c),c&&a.forEach(qSe),!l&&(a.forEach(qSe),n(i))})});return t.reduce(JMt)}BSe.exports=QMt});var VSe=ye((xdr,USe)=>{USe.exports=$0;var Uj=Sb().EventEmitter,e4t=Zy();e4t($0,Uj);$0.Readable=Aj();$0.Writable=bj();$0.Duplex=E2();$0.Transform=Bj();$0.PassThrough=FSe();$0.finished=PR();$0.pipeline=NSe();$0.Stream=$0;function $0(){Uj.call(this)}$0.prototype.pipe=function(e,t){var r=this;function n(c){e.writable&&e.write(c)===!1&&r.pause&&r.pause()}r.on("data",n);function i(){r.readable&&r.resume&&r.resume()}e.on("drain",i),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",o),r.on("close",s));var a=!1;function o(){a||(a=!0,e.end())}function s(){a||(a=!0,typeof e.destroy=="function"&&e.destroy())}function l(c){if(u(),Uj.listenerCount(this,"error")===0)throw c}r.on("error",l),e.on("error",l);function u(){r.removeListener("data",n),e.removeListener("drain",i),r.removeListener("end",o),r.removeListener("close",s),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",u),r.removeListener("close",u),e.removeListener("close",u)}return r.on("end",u),r.on("close",u),e.on("close",u),e.emit("pipe",r),e}});var TA=ye(fu=>{var GSe=Object.getOwnPropertyDescriptors||function(t){for(var r=Object.keys(t),n={},i=0;i=i)return s;switch(s){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(l){return"[Circular]"}default:return s}}),o=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),jj(t)?r.showHidden=t:t&&fu._extend(r,t),R2(r.showHidden)&&(r.showHidden=!1),R2(r.depth)&&(r.depth=2),R2(r.colors)&&(r.colors=!1),R2(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=r4t),VR(r,e,r.depth)}fu.inspect=W_;W_.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};W_.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function r4t(e,t){var r=W_.styles[t];return r?"\x1B["+W_.colors[r][0]+"m"+e+"\x1B["+W_.colors[r][1]+"m":e}function i4t(e,t){return e}function n4t(e){var t={};return e.forEach(function(r,n){t[r]=!0}),t}function VR(e,t,r){if(e.customInspect&&t&&UR(t.inspect)&&t.inspect!==fu.inspect&&!(t.constructor&&t.constructor.prototype===t)){var n=t.inspect(r,e);return jR(n)||(n=VR(e,n,r)),n}var i=a4t(e,t);if(i)return i;var a=Object.keys(t),o=n4t(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),pE(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return Vj(t);if(a.length===0){if(UR(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(vE(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(GR(t))return e.stylize(Date.prototype.toString.call(t),"date");if(pE(t))return Vj(t)}var l="",u=!1,c=["{","}"];if(jSe(t)&&(u=!0,c=["[","]"]),UR(t)){var f=t.name?": "+t.name:"";l=" [Function"+f+"]"}if(vE(t)&&(l=" "+RegExp.prototype.toString.call(t)),GR(t)&&(l=" "+Date.prototype.toUTCString.call(t)),pE(t)&&(l=" "+Vj(t)),a.length===0&&(!u||t.length==0))return c[0]+l+c[1];if(r<0)return vE(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var h;return u?h=o4t(e,t,r,o,a):h=a.map(function(d){return Hj(e,t,r,o,d,u)}),e.seen.pop(),s4t(h,l,c)}function a4t(e,t){if(R2(t))return e.stylize("undefined","undefined");if(jR(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(WSe(t))return e.stylize(""+t,"number");if(jj(t))return e.stylize(""+t,"boolean");if(HR(t))return e.stylize("null","null")}function Vj(e){return"["+Error.prototype.toString.call(e)+"]"}function o4t(e,t,r,n,i){for(var a=[],o=0,s=t.length;o-1&&(a?s=s.split(` +`).map(function(u){return" "+u}).join(` +`).slice(2):s=` +`+s.split(` +`).map(function(u){return" "+u}).join(` +`))):s=e.stylize("[Circular]","special")),R2(o)){if(a&&i.match(/^\d+$/))return s;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.slice(1,-1),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+s}function s4t(e,t,r){var n=0,i=e.reduce(function(a,o){return n++,o.indexOf(` +`)>=0&&n++,a+o.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(t===""?"":t+` + `)+" "+e.join(`, + `)+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}fu.types=oj();function jSe(e){return Array.isArray(e)}fu.isArray=jSe;function jj(e){return typeof e=="boolean"}fu.isBoolean=jj;function HR(e){return e===null}fu.isNull=HR;function l4t(e){return e==null}fu.isNullOrUndefined=l4t;function WSe(e){return typeof e=="number"}fu.isNumber=WSe;function jR(e){return typeof e=="string"}fu.isString=jR;function u4t(e){return typeof e=="symbol"}fu.isSymbol=u4t;function R2(e){return e===void 0}fu.isUndefined=R2;function vE(e){return wA(e)&&Wj(e)==="[object RegExp]"}fu.isRegExp=vE;fu.types.isRegExp=vE;function wA(e){return typeof e=="object"&&e!==null}fu.isObject=wA;function GR(e){return wA(e)&&Wj(e)==="[object Date]"}fu.isDate=GR;fu.types.isDate=GR;function pE(e){return wA(e)&&(Wj(e)==="[object Error]"||e instanceof Error)}fu.isError=pE;fu.types.isNativeError=pE;function UR(e){return typeof e=="function"}fu.isFunction=UR;function c4t(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}fu.isPrimitive=c4t;fu.isBuffer=sj();function Wj(e){return Object.prototype.toString.call(e)}function Gj(e){return e<10?"0"+e.toString(10):e.toString(10)}var f4t=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function h4t(){var e=new Date,t=[Gj(e.getHours()),Gj(e.getMinutes()),Gj(e.getSeconds())].join(":");return[e.getDate(),f4t[e.getMonth()],t].join(" ")}fu.log=function(){console.log("%s - %s",h4t(),fu.format.apply(fu,arguments))};fu.inherits=Zy();fu._extend=function(e,t){if(!t||!wA(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};function XSe(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var I2=typeof Symbol!="undefined"?Symbol("util.promisify.custom"):void 0;fu.promisify=function(t){if(typeof t!="function")throw new TypeError('The "original" argument must be of type Function');if(I2&&t[I2]){var r=t[I2];if(typeof r!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(r,I2,{value:r,enumerable:!1,writable:!1,configurable:!0}),r}function r(){for(var n,i,a=new Promise(function(l,u){n=l,i=u}),o=[],s=0;s{"use strict";function X_(e){"@babel/helpers - typeof";return X_=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},X_(e)}function ZSe(e,t){for(var r=0;r2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function A4t(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function S4t(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function M4t(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}gE("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError);gE("ERR_INVALID_ARG_TYPE",function(e,t,r){AA===void 0&&(AA=mE()),AA(typeof e=="string","'name' must be a string");var n;typeof t=="string"&&A4t(t,"not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";var i;if(S4t(e," argument"))i="The ".concat(e," ").concat(n," ").concat(YSe(t,"type"));else{var a=M4t(e,".")?"property":"argument";i='The "'.concat(e,'" ').concat(a," ").concat(n," ").concat(YSe(t,"type"))}return i+=". Received type ".concat(X_(r)),i},TypeError);gE("ERR_INVALID_ARG_VALUE",function(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"is invalid";Xj===void 0&&(Xj=TA());var n=Xj.inspect(t);return n.length>128&&(n="".concat(n.slice(0,128),"...")),"The argument '".concat(e,"' ").concat(r,". Received ").concat(n)},TypeError,RangeError);gE("ERR_INVALID_RETURN_VALUE",function(e,t,r){var n;return r&&r.constructor&&r.constructor.name?n="instance of ".concat(r.constructor.name):n="type ".concat(X_(r)),"Expected ".concat(e,' to be returned from the "').concat(t,'"')+" function but got ".concat(n,".")},TypeError);gE("ERR_MISSING_ARGS",function(){for(var e=arguments.length,t=new Array(e),r=0;r0,"At least one arg needs to be specified");var n="The ",i=t.length;switch(t=t.map(function(a){return'"'.concat(a,'"')}),i){case 1:n+="".concat(t[0]," argument");break;case 2:n+="".concat(t[0]," and ").concat(t[1]," arguments");break;default:n+=t.slice(0,i-1).join(", "),n+=", and ".concat(t[i-1]," arguments");break}return"".concat(n," must be specified")},TypeError);JSe.exports.codes=KSe});var sMe=ye((Tdr,oMe)=>{"use strict";function $Se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function QSe(e){for(var t=1;te.length)&&(r=e.length),e.substring(r-t.length,r)===t}function q4t(e,t){if(t=Math.floor(t),e.length==0||t==0)return"";var r=e.length*t;for(t=Math.floor(Math.log(t)/Math.log(2));t;)e+=e,t--;return e+=e.substring(0,r-e.length),e}var Xg="",yE="",_E="",Tv="",D2={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"},O4t=10;function rMe(e){var t=Object.keys(e),r=Object.create(Object.getPrototypeOf(e));return t.forEach(function(n){r[n]=e[n]}),Object.defineProperty(r,"message",{value:e.message}),r}function xE(e){return $j(e,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}function B4t(e,t,r){var n="",i="",a=0,o="",s=!1,l=xE(e),u=l.split(` +`),c=xE(t).split(` +`),f=0,h="";if(r==="strictEqual"&&Dp(e)==="object"&&Dp(t)==="object"&&e!==null&&t!==null&&(r="strictEqualObject"),u.length===1&&c.length===1&&u[0]!==c[0]){var d=u[0].length+c[0].length;if(d<=O4t){if((Dp(e)!=="object"||e===null)&&(Dp(t)!=="object"||t===null)&&(e!==0||t!==0))return"".concat(D2[r],` + +`)+"".concat(u[0]," !== ").concat(c[0],` +`)}else if(r!=="strictEqualObject"){var v=process.stderr&&process.stderr.isTTY?process.stderr.columns:80;if(d2&&(h=` + `.concat(q4t(" ",f),"^"),f=0)}}}for(var m=u[u.length-1],b=c[c.length-1];m===b&&(f++<2?o=` + `.concat(m).concat(o):n=m,u.pop(),c.pop(),!(u.length===0||c.length===0));)m=u[u.length-1],b=c[c.length-1];var p=Math.max(u.length,c.length);if(p===0){var k=l.split(` +`);if(k.length>30)for(k[26]="".concat(Xg,"...").concat(Tv);k.length>27;)k.pop();return"".concat(D2.notIdentical,` + +`).concat(k.join(` +`),` +`)}f>3&&(o=` +`.concat(Xg,"...").concat(Tv).concat(o),s=!0),n!==""&&(o=` + `.concat(n).concat(o),n="");var M=0,T=D2[r]+` +`.concat(yE,"+ actual").concat(Tv," ").concat(_E,"- expected").concat(Tv),L=" ".concat(Xg,"...").concat(Tv," Lines skipped");for(f=0;f1&&f>2&&(x>4?(i+=` +`.concat(Xg,"...").concat(Tv),s=!0):x>3&&(i+=` + `.concat(c[f-2]),M++),i+=` + `.concat(c[f-1]),M++),a=f,n+=` +`.concat(_E,"-").concat(Tv," ").concat(c[f]),M++;else if(c.length1&&f>2&&(x>4?(i+=` +`.concat(Xg,"...").concat(Tv),s=!0):x>3&&(i+=` + `.concat(u[f-2]),M++),i+=` + `.concat(u[f-1]),M++),a=f,i+=` +`.concat(yE,"+").concat(Tv," ").concat(u[f]),M++;else{var C=c[f],S=u[f],g=S!==C&&(!tMe(S,",")||S.slice(0,-1)!==C);g&&tMe(C,",")&&C.slice(0,-1)===S&&(g=!1,S+=","),g?(x>1&&f>2&&(x>4?(i+=` +`.concat(Xg,"...").concat(Tv),s=!0):x>3&&(i+=` + `.concat(u[f-2]),M++),i+=` + `.concat(u[f-1]),M++),a=f,i+=` +`.concat(yE,"+").concat(Tv," ").concat(S),n+=` +`.concat(_E,"-").concat(Tv," ").concat(C),M+=2):(i+=n,n="",(x===1||f===0)&&(i+=` + `.concat(S),M++))}if(M>20&&f30)for(d[26]="".concat(Xg,"...").concat(Tv);d.length>27;)d.pop();d.length===1?a=r.call(this,"".concat(h," ").concat(d[0])):a=r.call(this,"".concat(h,` + +`).concat(d.join(` +`),` +`))}else{var v=xE(u),m="",b=D2[s];s==="notDeepEqual"||s==="notEqual"?(v="".concat(D2[s],` + +`).concat(v),v.length>1024&&(v="".concat(v.slice(0,1021),"..."))):(m="".concat(xE(c)),v.length>512&&(v="".concat(v.slice(0,509),"...")),m.length>512&&(m="".concat(m.slice(0,509),"...")),s==="deepEqual"||s==="equal"?v="".concat(b,` + +`).concat(v,` + +should equal + +`):m=" ".concat(s," ").concat(m)),a=r.call(this,"".concat(v).concat(m))}return Error.stackTraceLimit=f,a.generatedMessage=!o,Object.defineProperty(Kj(a),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),a.code="ERR_ASSERTION",a.actual=u,a.expected=c,a.operator=s,Error.captureStackTrace&&Error.captureStackTrace(Kj(a),l),a.stack,a.name="AssertionError",nMe(a)}return C4t(n,[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:t,value:function(a,o){return $j(this,QSe(QSe({},o),{},{customInspect:!1,depth:0}))}}]),n}(Jj(Error),$j.custom);oMe.exports=N4t});var Qj=ye((Adr,uMe)=>{"use strict";var lMe=Object.prototype.toString;uMe.exports=function(t){var r=lMe.call(t),n=r==="[object Arguments]";return n||(n=r!=="[object Array]"&&t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&lMe.call(t.callee)==="[object Function]"),n}});var yMe=ye((Sdr,mMe)=>{"use strict";var gMe;Object.keys||(TE=Object.prototype.hasOwnProperty,eW=Object.prototype.toString,cMe=Qj(),tW=Object.prototype.propertyIsEnumerable,fMe=!tW.call({toString:null},"toString"),hMe=tW.call(function(){},"prototype"),AE=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],ZR=function(e){var t=e.constructor;return t&&t.prototype===e},dMe={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},vMe=function(){if(typeof window=="undefined")return!1;for(var e in window)try{if(!dMe["$"+e]&&TE.call(window,e)&&window[e]!==null&&typeof window[e]=="object")try{ZR(window[e])}catch(t){return!0}}catch(t){return!0}return!1}(),pMe=function(e){if(typeof window=="undefined"||!vMe)return ZR(e);try{return ZR(e)}catch(t){return!1}},gMe=function(t){var r=t!==null&&typeof t=="object",n=eW.call(t)==="[object Function]",i=cMe(t),a=r&&eW.call(t)==="[object String]",o=[];if(!r&&!n&&!i)throw new TypeError("Object.keys called on a non-object");var s=hMe&&n;if(a&&t.length>0&&!TE.call(t,0))for(var l=0;l0)for(var u=0;u{"use strict";var U4t=Array.prototype.slice,V4t=Qj(),_Me=Object.keys,YR=_Me?function(t){return _Me(t)}:yMe(),xMe=Object.keys;YR.shim=function(){if(Object.keys){var t=function(){var r=Object.keys(arguments);return r&&r.length===arguments.length}(1,2);t||(Object.keys=function(n){return V4t(n)?xMe(U4t.call(n)):xMe(n)})}else Object.keys=YR;return Object.keys||YR};bMe.exports=YR});var EMe=ye((Edr,MMe)=>{"use strict";var G4t=rW(),AMe=K8()(),SMe=vA(),wMe=Object,H4t=SMe("Array.prototype.push"),TMe=SMe("Object.prototype.propertyIsEnumerable"),j4t=AMe?Object.getOwnPropertySymbols:null;MMe.exports=function(t,r){if(t==null)throw new TypeError("target must be an object");var n=wMe(t);if(arguments.length===1)return n;for(var i=1;i{"use strict";var iW=EMe(),W4t=function(){if(!Object.assign)return!1;for(var e="abcdefghijklmnopqrst",t=e.split(""),r={},n=0;n{"use strict";var LMe=function(e){return e!==e};PMe.exports=function(t,r){return t===0&&r===0?1/t===1/r:!!(t===r||LMe(t)&&LMe(r))}});var KR=ye((Ldr,IMe)=>{"use strict";var Z4t=nW();IMe.exports=function(){return typeof Object.is=="function"?Object.is:Z4t}});var SE=ye((Pdr,zMe)=>{"use strict";var Y4t=rW(),K4t=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",J4t=Object.prototype.toString,$4t=Array.prototype.concat,RMe=Object.defineProperty,Q4t=function(e){return typeof e=="function"&&J4t.call(e)==="[object Function]"},eEt=NH()(),DMe=RMe&&eEt,tEt=function(e,t,r,n){if(t in e){if(n===!0){if(e[t]===r)return}else if(!Q4t(n)||!n())return}DMe?RMe(e,t,{configurable:!0,enumerable:!1,value:r,writable:!0}):e[t]=r},FMe=function(e,t){var r=arguments.length>2?arguments[2]:{},n=Y4t(t);K4t&&(n=$4t.call(n,Object.getOwnPropertySymbols(t)));for(var i=0;i{"use strict";var rEt=KR(),iEt=SE();qMe.exports=function(){var t=rEt();return iEt(Object,{is:t},{is:function(){return Object.is!==t}}),t}});var VMe=ye((Rdr,UMe)=>{"use strict";var nEt=SE(),aEt=rE(),oEt=nW(),BMe=KR(),sEt=OMe(),NMe=aEt(BMe(),Object);nEt(NMe,{getPolyfill:BMe,implementation:oEt,shim:sEt});UMe.exports=NMe});var aW=ye((Ddr,GMe)=>{"use strict";GMe.exports=function(t){return t!==t}});var oW=ye((Fdr,HMe)=>{"use strict";var lEt=aW();HMe.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:lEt}});var WMe=ye((zdr,jMe)=>{"use strict";var uEt=SE(),cEt=oW();jMe.exports=function(){var t=cEt();return uEt(Number,{isNaN:t},{isNaN:function(){return Number.isNaN!==t}}),t}});var KMe=ye((qdr,YMe)=>{"use strict";var fEt=rE(),hEt=SE(),dEt=aW(),XMe=oW(),vEt=WMe(),ZMe=fEt(XMe(),Number);hEt(ZMe,{getPolyfill:XMe,implementation:dEt,shim:vEt});YMe.exports=ZMe});var g4e=ye((Odr,p4e)=>{"use strict";function JMe(e,t){return yEt(e)||mEt(e,t)||gEt(e,t)||pEt()}function pEt(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function gEt(e,t){if(e){if(typeof e=="string")return $Me(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return $Me(e,t)}}function $Me(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r10)return!0;for(var t=0;t57)return!0}return e.length===10&&e>=Math.pow(2,32)}function QR(e){return Object.keys(e).filter(EEt).concat(tD(e).filter(Object.prototype.propertyIsEnumerable.bind(e)))}function f4e(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i{"use strict";function Zg(e){"@babel/helpers - typeof";return Zg=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Zg(e)}function m4e(e,t){for(var r=0;r1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i{var LE=1e3,PE=LE*60,IE=PE*60,RE=IE*24,QEt=RE*365.25;F4e.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return ekt(e);if(r==="number"&&isNaN(e)===!1)return t.long?rkt(e):tkt(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function ekt(e){if(e=String(e),!(e.length>100)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*QEt;case"days":case"day":case"d":return r*RE;case"hours":case"hour":case"hrs":case"hr":case"h":return r*IE;case"minutes":case"minute":case"mins":case"min":case"m":return r*PE;case"seconds":case"second":case"secs":case"sec":case"s":return r*LE;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function tkt(e){return e>=RE?Math.round(e/RE)+"d":e>=IE?Math.round(e/IE)+"h":e>=PE?Math.round(e/PE)+"m":e>=LE?Math.round(e/LE)+"s":e+"ms"}function rkt(e){return uD(e,RE,"day")||uD(e,IE,"hour")||uD(e,PE,"minute")||uD(e,LE,"second")||e+" ms"}function uD(e,t,r){if(!(e{Lc=q4e.exports=dW.debug=dW.default=dW;Lc.coerce=skt;Lc.disable=akt;Lc.enable=nkt;Lc.enabled=okt;Lc.humanize=z4e();Lc.names=[];Lc.skips=[];Lc.formatters={};var hW;function ikt(e){var t=0,r;for(r in e)t=(t<<5)-t+e.charCodeAt(r),t|=0;return Lc.colors[Math.abs(t)%Lc.colors.length]}function dW(e){function t(){if(t.enabled){var r=t,n=+new Date,i=n-(hW||n);r.diff=i,r.prev=hW,r.curr=n,hW=n;for(var a=new Array(arguments.length),o=0;o{up=N4e.exports=O4e();up.log=ckt;up.formatArgs=ukt;up.save=fkt;up.load=B4e;up.useColors=lkt;up.storage=typeof chrome!="undefined"&&typeof chrome.storage!="undefined"?chrome.storage.local:hkt();up.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function lkt(){return typeof window!="undefined"&&window.process&&window.process.type==="renderer"?!0:typeof document!="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}up.formatters.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}};function ukt(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+up.humanize(this.diff),!!t){var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var n=0,i=0;e[0].replace(/%[a-zA-Z%]/g,function(a){a!=="%%"&&(n++,a==="%c"&&(i=n))}),e.splice(i,0,r)}}function ckt(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function fkt(e){try{e==null?up.storage.removeItem("debug"):up.storage.debug=e}catch(t){}}function B4e(){var e;try{e=up.storage.debug}catch(t){}return!e&&typeof process!="undefined"&&"env"in process&&(e=process.env.DEBUG),e}up.enable(B4e());function hkt(){try{return window.localStorage}catch(e){}}});var Y4e=ye((Udr,Z4e)=>{var MA=mE(),J_=U4e()("stream-parser");Z4e.exports=vkt;var G4e=-1,cD=0,dkt=1,H4e=2;function vkt(e){var t=e&&typeof e._transform=="function",r=e&&typeof e._write=="function";if(!t&&!r)throw new Error("must pass a Writable or Transform stream in");J_("extending Parser into stream"),e._bytes=pkt,e._skipBytes=gkt,t&&(e._passthrough=mkt),t?e._transform=_kt:e._write=ykt}function DE(e){J_("initializing parser stream"),e._parserBytesLeft=0,e._parserBuffers=[],e._parserBuffered=0,e._parserState=G4e,e._parserCallback=null,typeof e.push=="function"&&(e._parserOutput=e.push.bind(e)),e._parserInit=!0}function pkt(e,t){MA(!this._parserCallback,'there is already a "callback" set!'),MA(isFinite(e)&&e>0,'can only buffer a finite number of bytes > 0, got "'+e+'"'),this._parserInit||DE(this),J_("buffering %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=cD}function gkt(e,t){MA(!this._parserCallback,'there is already a "callback" set!'),MA(e>0,'can only skip > 0 bytes, got "'+e+'"'),this._parserInit||DE(this),J_("skipping %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=dkt}function mkt(e,t){MA(!this._parserCallback,'There is already a "callback" set!'),MA(e>0,'can only pass through > 0 bytes, got "'+e+'"'),this._parserInit||DE(this),J_("passing through %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=H4e}function ykt(e,t,r){this._parserInit||DE(this),J_("write(%o bytes)",e.length),typeof t=="function"&&(r=t),W4e(this,e,null,r)}function _kt(e,t,r){this._parserInit||DE(this),J_("transform(%o bytes)",e.length),typeof t!="function"&&(t=this._parserOutput),W4e(this,e,t,r)}function j4e(e,t,r,n){return e._parserBytesLeft<=0?n(new Error("got data but not currently parsing anything")):t.length<=e._parserBytesLeft?function(){return V4e(e,t,r,n)}:function(){var i=t.slice(0,e._parserBytesLeft);return V4e(e,i,r,function(a){if(a)return n(a);if(t.length>i.length)return function(){return j4e(e,t.slice(i.length),r,n)}})}}function V4e(e,t,r,n){if(e._parserBytesLeft-=t.length,J_("%o bytes left for stream piece",e._parserBytesLeft),e._parserState===cD?(e._parserBuffers.push(t),e._parserBuffered+=t.length):e._parserState===H4e&&r(t),e._parserBytesLeft===0){var i=e._parserCallback;if(i&&e._parserState===cD&&e._parserBuffers.length>1&&(t=Buffer.concat(e._parserBuffers,e._parserBuffered)),e._parserState!==cD&&(t=null),e._parserCallback=null,e._parserBuffered=0,e._parserState=G4e,e._parserBuffers.splice(0),i){var a=[];t&&a.push(t),r&&a.push(r);var o=i.length>a.length;o&&a.push(X4e(n));var s=i.apply(e,a);if(!o||n===s)return n}}else return n}var W4e=X4e(j4e);function X4e(e){return function(){for(var t=e.apply(this,arguments);typeof t=="function";)t=t();return t}}});var rc=ye(Jy=>{"use strict";var K4e=VSe().Transform,xkt=Y4e();function FE(){K4e.call(this,{readableObjectMode:!0})}FE.prototype=Object.create(K4e.prototype);FE.prototype.constructor=FE;xkt(FE.prototype);Jy.ParserStream=FE;Jy.sliceEq=function(e,t,r){for(var n=t,i=0;i{"use strict";var EA=rc().readUInt16BE,pW=rc().readUInt32BE;function zE(e,t){if(e.length<4+t)return null;var r=pW(e,t);return e.length>4&15,n=e[4]&15,i=e[5]>>4&15,a=EA(e,6),o=8,s=0;sa.width||i.width===a.width&&i.height>a.height?i:a}),r=e.reduce(function(i,a){return i.height>a.height||i.height===a.height&&i.width>a.width?i:a}),n;return t.width>r.height||t.width===r.height&&t.height>r.width?n=t:n=r,n}hD.exports.readSizeFromMeta=function(e){var t={sizes:[],transforms:[],item_inf:{},item_loc:{}};if(Skt(e,t),!!t.sizes.length){var r=Mkt(t.sizes),n=1;t.transforms.forEach(function(a){var o={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},s={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(a.type==="imir"&&(a.value===0?n=s[n]:(n=s[n],n=o[n],n=o[n])),a.type==="irot")for(var l=0;l{"use strict";function dD(e,t){var r=new Error(e);return r.code=t,r}function Ekt(e){try{return decodeURIComponent(escape(e))}catch(t){return e}}function $y(e,t,r){this.input=e.subarray(t,r),this.start=t;var n=String.fromCharCode.apply(null,this.input.subarray(0,4));if(n!=="II*\0"&&n!=="MM\0*")throw dD("invalid TIFF signature","EBADDATA");this.big_endian=n[0]==="M"}$y.prototype.each=function(e){this.aborted=!1;var t=this.read_uint32(4);for(this.ifds_to_read=[{id:0,offset:t}];this.ifds_to_read.length>0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,e)}};$y.prototype.read_uint16=function(e){var t=this.input;if(e+2>t.length)throw dD("unexpected EOF","EBADDATA");return this.big_endian?t[e]*256+t[e+1]:t[e]+t[e+1]*256};$y.prototype.read_uint32=function(e){var t=this.input;if(e+4>t.length)throw dD("unexpected EOF","EBADDATA");return this.big_endian?t[e]*16777216+t[e+1]*65536+t[e+2]*256+t[e+3]:t[e]+t[e+1]*256+t[e+2]*65536+t[e+3]*16777216};$y.prototype.is_subifd_link=function(e,t){return e===0&&t===34665||e===0&&t===34853||e===34665&&t===40965};$y.prototype.exif_format_length=function(e){switch(e){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}};$y.prototype.exif_format_read=function(e,t){var r;switch(e){case 1:case 2:return r=this.input[t],r;case 6:return r=this.input[t],r|(r&128)*33554430;case 3:return r=this.read_uint16(t),r;case 8:return r=this.read_uint16(t),r|(r&32768)*131070;case 4:return r=this.read_uint32(t),r;case 9:return r=this.read_uint32(t),r|0;case 5:case 10:case 11:case 12:return null;case 7:return null;default:return null}};$y.prototype.scan_ifd=function(e,t,r){var n=this.read_uint16(t);t+=2;for(var i=0;ithis.input.length)throw dD("unexpected EOF","EBADDATA");for(var h=[],d=c,v=0;v0&&(this.ifds_to_read.push({id:a,offset:h[0]}),f=!0);var b={is_big_endian:this.big_endian,ifd:e,tag:a,format:o,count:s,entry_offset:t+this.start,data_length:u,data_offset:c+this.start,value:h,is_subifd_link:f};if(r(b)===!1){this.aborted=!0;return}t+=12}e===0&&this.ifds_to_read.push({id:1,offset:this.read_uint32(t)})};gW.exports.ExifParser=$y;gW.exports.get_orientation=function(e){var t=0;try{return new $y(e,0,e.length).each(function(r){if(r.ifd===0&&r.tag===274&&Array.isArray(r.value))return t=r.value[0],!1}),t}catch(r){return-1}}});var Q4e=ye((jdr,$4e)=>{"use strict";var kkt=rc().str2arr,Ckt=rc().sliceEq,Lkt=rc().readUInt32BE,pD=J4e(),Pkt=vD(),Ikt=kkt("ftyp");$4e.exports=function(e){if(Ckt(e,4,Ikt)){var t=pD.unbox(e,0);if(t){var r=pD.getMimeType(t.data);if(r){for(var n,i=t.end;;){var a=pD.unbox(e,i);if(!a)break;if(i=a.end,a.boxtype==="mdat")return;if(a.boxtype==="meta"){n=a.data;break}}if(n){var o=pD.readSizeFromMeta(n);if(o){var s={width:o.width,height:o.height,type:r.type,mime:r.mime,wUnits:"px",hUnits:"px"};if(o.variants.length>1&&(s.variants=o.variants),o.orientation&&(s.orientation=o.orientation),o.exif_location&&o.exif_location.offset+o.exif_location.length<=e.length){var l=Lkt(e,o.exif_location.offset),u=e.slice(o.exif_location.offset+l+4,o.exif_location.offset+o.exif_location.length),c=Pkt.get_orientation(u);c>0&&(s.orientation=c)}return s}}}}}}});var rEe=ye((Wdr,tEe)=>{"use strict";var Rkt=rc().str2arr,Dkt=rc().sliceEq,eEe=rc().readUInt16LE,Fkt=Rkt("BM");tEe.exports=function(e){if(!(e.length<26)&&Dkt(e,0,Fkt))return{width:eEe(e,18),height:eEe(e,22),type:"bmp",mime:"image/bmp",wUnits:"px",hUnits:"px"}}});var sEe=ye((Xdr,oEe)=>{"use strict";var aEe=rc().str2arr,iEe=rc().sliceEq,nEe=rc().readUInt16LE,zkt=aEe("GIF87a"),qkt=aEe("GIF89a");oEe.exports=function(e){if(!(e.length<10)&&!(!iEe(e,0,zkt)&&!iEe(e,0,qkt)))return{width:nEe(e,6),height:nEe(e,8),type:"gif",mime:"image/gif",wUnits:"px",hUnits:"px"}}});var cEe=ye((Zdr,uEe)=>{"use strict";var mW=rc().readUInt16LE,Okt=0,Bkt=1,lEe=16;uEe.exports=function(e){var t=mW(e,0),r=mW(e,2),n=mW(e,4);if(!(t!==Okt||r!==Bkt||!n)){for(var i=[],a={width:0,height:0},o=0;oa.width||l>a.height)&&(a=u)}return{width:a.width,height:a.height,variants:i,type:"ico",mime:"image/x-icon",wUnits:"px",hUnits:"px"}}}});var hEe=ye((Ydr,fEe)=>{"use strict";var yW=rc().readUInt16BE,Nkt=rc().str2arr,Ukt=rc().sliceEq,Vkt=vD(),Gkt=Nkt("Exif\0\0");fEe.exports=function(e){if(!(e.length<2)&&!(e[0]!==255||e[1]!==216||e[2]!==255))for(var t=2;;){for(;;){if(e.length-t<2)return;if(e[t++]===255)break}for(var r=e[t++],n;r===255;)r=e[t++];if(208<=r&&r<=217||r===1)n=0;else if(192<=r&&r<=254){if(e.length-t<2)return;n=yW(e,t)-2,t+=2}else return;if(r===217||r===218)return;var i;if(r===225&&n>=10&&Ukt(e,t,Gkt)&&(i=Vkt.get_orientation(e.slice(t+6,t+n))),n>=5&&192<=r&&r<=207&&r!==196&&r!==200&&r!==204){if(e.length-t0&&(a.orientation=i),a}t+=n}}});var mEe=ye((Kdr,gEe)=>{"use strict";var pEe=rc().str2arr,dEe=rc().sliceEq,vEe=rc().readUInt32BE,Hkt=pEe(`\x89PNG\r + +`),jkt=pEe("IHDR");gEe.exports=function(e){if(!(e.length<24)&&dEe(e,0,Hkt)&&dEe(e,12,jkt))return{width:vEe(e,16),height:vEe(e,20),type:"png",mime:"image/png",wUnits:"px",hUnits:"px"}}});var xEe=ye((Jdr,_Ee)=>{"use strict";var Wkt=rc().str2arr,Xkt=rc().sliceEq,yEe=rc().readUInt32BE,Zkt=Wkt("8BPS\0");_Ee.exports=function(e){if(!(e.length<22)&&Xkt(e,0,Zkt))return{width:yEe(e,18),height:yEe(e,14),type:"psd",mime:"image/vnd.adobe.photoshop",wUnits:"px",hUnits:"px"}}});var TEe=ye(($dr,wEe)=>{"use strict";function Ykt(e){return e===32||e===9||e===13||e===10}function kA(e){return typeof e=="number"&&isFinite(e)&&e>0}function Kkt(e){var t=0,r=e.length;for(e[0]===239&&e[1]===187&&e[2]===191&&(t=3);t]*>/,$kt=/^<([-_.:a-zA-Z0-9]+:)?svg\s/,Qkt=/[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/,eCt=/\bheight="([^%]+?)"|\bheight='([^%]+?)'/,tCt=/\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/,bEe=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function rCt(e){var t=e.match(Qkt),r=e.match(eCt),n=e.match(tCt);return{width:t&&(t[1]||t[2]),height:r&&(r[1]||r[2]),viewbox:n&&(n[1]||n[2])}}function Zm(e){return bEe.test(e)?e.match(bEe)[0]:"px"}wEe.exports=function(e){if(Kkt(e)){for(var t="",r=0;r{"use strict";var MEe=rc().str2arr,AEe=rc().sliceEq,iCt=rc().readUInt16LE,nCt=rc().readUInt16BE,aCt=rc().readUInt32LE,oCt=rc().readUInt32BE,sCt=MEe("II*\0"),lCt=MEe("MM\0*");function gD(e,t,r){return r?nCt(e,t):iCt(e,t)}function _W(e,t,r){return r?oCt(e,t):aCt(e,t)}function SEe(e,t,r){var n=gD(e,t+2,r),i=_W(e,t+4,r);return i!==1||n!==3&&n!==4?null:n===3?gD(e,t+8,r):_W(e,t+8,r)}EEe.exports=function(e){if(!(e.length<8)&&!(!AEe(e,0,sCt)&&!AEe(e,0,lCt))){var t=e[0]===77,r=_W(e,4,t)-8;if(!(r<0)){var n=r+8;if(!(e.length-n<2)){var i=gD(e,n+0,t)*12;if(!(i<=0)&&(n+=2,!(e.length-n{"use strict";var PEe=rc().str2arr,CEe=rc().sliceEq,LEe=rc().readUInt16LE,xW=rc().readUInt32LE,uCt=vD(),cCt=PEe("RIFF"),fCt=PEe("WEBP");function hCt(e,t){if(!(e[t+3]!==157||e[t+4]!==1||e[t+5]!==42))return{width:LEe(e,t+6)&16383,height:LEe(e,t+8)&16383,type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}function dCt(e,t){if(e[t]===47){var r=xW(e,t+1);return{width:(r&16383)+1,height:(r>>14&16383)+1,type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}}function vCt(e,t){return{width:(e[t+6]<<16|e[t+5]<<8|e[t+4])+1,height:(e[t+9]<e.length)){for(;t+8=10?r=r||hCt(e,t+8):a==="VP8L"&&o>=9?r=r||dCt(e,t+8):a==="VP8X"&&o>=10?r=r||vCt(e,t+8):a==="EXIF"&&(n=uCt.get_orientation(e.slice(t+8,t+8+o)),t=1/0),t+=8+o}if(r)return n>0&&(r.orientation=n),r}}}});var FEe=ye((tvr,DEe)=>{"use strict";DEe.exports={avif:Q4e(),bmp:rEe(),gif:sEe(),ico:cEe(),jpeg:hEe(),png:mEe(),psd:xEe(),svg:TEe(),tiff:kEe(),webp:REe()}});var zEe=ye((rvr,wW)=>{"use strict";var bW=FEe();function pCt(e){for(var t=Object.keys(bW),r=0;r{"use strict";var gCt=zEe(),mCt=qy().IMAGE_URL_PREFIX,yCt=b2().Buffer;qEe.getImageSize=function(e){var t=e.replace(mCt,""),r=new yCt(t,"base64");return gCt(r)}});var UEe=ye((nvr,NEe)=>{"use strict";var BEe=Pr(),_Ct=tA(),xCt=Eo(),mD=ho(),bCt=Pr().maxRowLength,wCt=OEe().getImageSize;NEe.exports=function(t,r){var n,i;if(r._hasZ)n=r.z.length,i=bCt(r.z);else if(r._hasSource){var a=wCt(r.source);n=a.height,i=a.width}var o=mD.getFromId(t,r.xaxis||"x"),s=mD.getFromId(t,r.yaxis||"y"),l=o.d2c(r.x0)-r.dx/2,u=s.d2c(r.y0)-r.dy/2,c,f=[l,l+i*r.dx],h=[u,u+n*r.dy];if(o&&o.type==="log")for(c=0;c{"use strict";var MCt=qa(),F2=Pr(),VEe=F2.strTranslate,ECt=Wp(),kCt=tA(),CCt=lG(),LCt=m8().STYLE;GEe.exports=function(t,r,n,i){var a=r.xaxis,o=r.yaxis,s=!t._context._exportedPlot&&CCt();F2.makeTraceGroups(i,n,"im").each(function(l){var u=MCt.select(this),c=l[0],f=c.trace,h=(f.zsmooth==="fast"||f.zsmooth===!1&&s)&&!f._hasZ&&f._hasSource&&a.type==="linear"&&o.type==="linear";f._realImage=h;var d=c.z,v=c.x0,m=c.y0,b=c.w,p=c.h,k=f.dx,M=f.dy,T,L,x,C,S,g;for(g=0;T===void 0&&g0;)L=a.c2p(v+g*k),g--;for(g=0;C===void 0&&g0;)S=o.c2p(m+g*M),g--;if(LH[0];if(ie||ae){var _e=T+E/2,Ee=C+z/2;j+="transform:"+VEe(_e+"px",Ee+"px")+"scale("+(ie?-1:1)+","+(ae?-1:1)+")"+VEe(-_e+"px",-Ee+"px")+";"}}Z.attr("style",j);var Ce=new Promise(function(ge){if(f._hasZ)ge();else if(f._hasSource)if(f._canvas&&f._canvas.el.width===b&&f._canvas.el.height===p&&f._canvas.source===f.source)ge();else{var re=document.createElement("canvas");re.width=b,re.height=p;var Se=re.getContext("2d",{willReadFrequently:!0});f._image=f._image||new Image;var ke=f._image;ke.onload=function(){Se.drawImage(ke,0,0),f._canvas={el:re,source:f.source},ge()},ke.setAttribute("src",f.source)}}).then(function(){var ge,re;if(f._hasZ)re=G(function(be,Be){var Le=d[Be][be];return F2.isTypedArray(Le)&&(Le=Array.from(Le)),Le}),ge=re.toDataURL("image/png");else if(f._hasSource)if(h)ge=f.source;else{var Se=f._canvas.el.getContext("2d",{willReadFrequently:!0}),ke=Se.getImageData(0,0,b,p).data;re=G(function(be,Be){var Le=4*(Be*b+be);return[ke[Le],ke[Le+1],ke[Le+2],ke[Le+3]]}),ge=re.toDataURL("image/png")}Z.attr({"xlink:href":ge,height:z,width:E,x:T,y:C})});t._promises.push(Ce)})}});var WEe=ye((ovr,jEe)=>{"use strict";var PCt=qa();jEe.exports=function(t){PCt.select(t).selectAll(".im image").style("opacity",function(r){return r[0].trace.opacity})}});var KEe=ye((svr,YEe)=>{"use strict";var XEe=ef(),ZEe=Pr(),yD=ZEe.isArrayOrTypedArray,ICt=tA();YEe.exports=function(t,r,n){var i=t.cd[0],a=i.trace,o=t.xa,s=t.ya;if(!(XEe.inbox(r-i.x0,r-(i.x0+i.w*a.dx),0)>0||XEe.inbox(n-i.y0,n-(i.y0+i.h*a.dy),0)>0)){var l=Math.floor((r-i.x0)/a.dx),u=Math.floor(Math.abs(n-i.y0)/a.dy),c;if(a._hasZ?c=i.z[u][l]:a._hasSource&&(c=a._canvas.el.getContext("2d",{willReadFrequently:!0}).getImageData(l,u,1,1).data),!!c){var f=i.hi||a.hoverinfo,h;if(f){var d=f.split("+");d.indexOf("all")!==-1&&(d=["color"]),d.indexOf("color")!==-1&&(h=!0)}var v=ICt.colormodel[a.colormodel],m=v.colormodel||a.colormodel,b=m.length,p=a._scaler(c),k=v.suffix,M=[];(a.hovertemplate||h)&&(M.push("["+[p[0]+k[0],p[1]+k[1],p[2]+k[2]].join(", ")),b===4&&M.push(", "+p[3]+k[3]),M.push("]"),M=M.join(""),t.extraText=m.toUpperCase()+": "+M);var T;yD(a.hovertext)&&yD(a.hovertext[u])?T=a.hovertext[u][l]:yD(a.text)&&yD(a.text[u])&&(T=a.text[u][l]);var L=s.c2p(i.y0+(u+.5)*a.dy),x=i.x0+(l+.5)*a.dx,C=i.y0+(u+.5)*a.dy,S="["+c.slice(0,a.colormodel.length).join(", ")+"]";return[ZEe.extendFlat(t,{index:[u,l],x0:o.c2p(i.x0+l*a.dx),x1:o.c2p(i.x0+(l+1)*a.dx),y0:L,y1:L,color:p,xVal:x,xLabelVal:x,yVal:C,yLabelVal:C,zLabelVal:S,text:T,hovertemplateLabels:{zLabel:S,colorLabel:M,"color[0]Label":p[0]+k[0],"color[1]Label":p[1]+k[1],"color[2]Label":p[2]+k[2],"color[3]Label":p[3]+k[3]}})]}}}});var $Ee=ye((lvr,JEe)=>{"use strict";JEe.exports=function(t,r){return"xVal"in r&&(t.x=r.xVal),"yVal"in r&&(t.y=r.yVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t.color=r.color,t.colormodel=r.trace.colormodel,t.z||(t.z=r.color),t}});var eke=ye((uvr,QEe)=>{"use strict";QEe.exports={attributes:yH(),supplyDefaults:K3e(),calc:UEe(),plot:HEe(),style:WEe(),hoverPoints:KEe(),eventData:$Ee(),moduleType:"trace",name:"image",basePlotModule:mh(),categories:["cartesian","svg","2dMap","noSortingByValue"],animatable:!1,meta:{}}});var rke=ye((cvr,tke)=>{"use strict";tke.exports=eke()});var z2=ye((fvr,nke)=>{"use strict";var _D=Gl(),RCt=Cc().attributes,DCt=ec(),FCt=Ih(),{hovertemplateAttrs:zCt,texttemplateAttrs:qCt,templatefallbackAttrs:ike}=Ll(),$_=Ao().extendFlat,OCt=Pd().pattern,xD=DCt({editType:"plot",arrayOk:!0,colorEditType:"plot"});nke.exports={labels:{valType:"data_array",editType:"calc"},label0:{valType:"number",dflt:0,editType:"calc"},dlabel:{valType:"number",dflt:1,editType:"calc"},values:{valType:"data_array",editType:"calc"},marker:{colors:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:FCt.defaultLine,arrayOk:!0,editType:"style"},width:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"style"},editType:"calc"},pattern:OCt,editType:"calc"},text:{valType:"data_array",editType:"plot"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},scalegroup:{valType:"string",dflt:"",editType:"calc"},textinfo:{valType:"flaglist",flags:["label","text","value","percent"],extras:["none"],editType:"calc"},hoverinfo:$_({},_D.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:zCt({},{keys:["label","color","value","percent","text"]}),hovertemplatefallback:ike(),texttemplate:qCt({editType:"plot"},{keys:["label","color","value","percent","text"]}),texttemplatefallback:ike({editType:"plot"}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"plot"},textfont:$_({},xD,{}),insidetextorientation:{valType:"enumerated",values:["horizontal","radial","tangential","auto"],dflt:"auto",editType:"plot"},insidetextfont:$_({},xD,{}),outsidetextfont:$_({},xD,{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},showlegend:$_({},_D.showlegend,{arrayOk:!0}),legend:$_({},_D.legend,{arrayOk:!0}),legendrank:$_({},_D.legendrank,{arrayOk:!0}),title:{text:{valType:"string",dflt:"",editType:"plot"},font:$_({},xD,{}),position:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"plot"},editType:"plot"},domain:RCt({name:"pie",trace:!0,editType:"calc"}),hole:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},sort:{valType:"boolean",dflt:!0,editType:"calc"},direction:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",dflt:0,editType:"calc"},pull:{valType:"number",min:0,max:1,dflt:0,arrayOk:!0,editType:"calc"}}});var q2=ye((hvr,ske)=>{"use strict";var BCt=Eo(),qE=Pr(),NCt=z2(),UCt=Cc().defaults,VCt=i0().handleText,GCt=Pr().coercePattern;function ake(e,t){var r=qE.isArrayOrTypedArray(e),n=qE.isArrayOrTypedArray(t),i=Math.min(r?e.length:1/0,n?t.length:1/0);if(isFinite(i)||(i=0),i&&n){for(var a,o=0;o0){a=!0;break}}a||(i=0)}return{hasLabels:r,hasValues:n,len:i}}function oke(e,t,r,n,i){var a=n("marker.line.width");a&&n("marker.line.color",i?void 0:r.paper_bgcolor);var o=n("marker.colors");GCt(n,"marker.pattern",o),e.marker&&!t.marker.pattern.fgcolor&&(t.marker.pattern.fgcolor=e.marker.colors),t.marker.pattern.bgcolor||(t.marker.pattern.bgcolor=r.paper_bgcolor)}function HCt(e,t,r,n){function i(k,M){return qE.coerce(e,t,NCt,k,M)}var a=i("labels"),o=i("values"),s=ake(a,o),l=s.len;if(t._hasLabels=s.hasLabels,t._hasValues=s.hasValues,!t._hasLabels&&t._hasValues&&(i("label0"),i("dlabel")),!l){t.visible=!1;return}t._length=l,oke(e,t,n,i,!0),i("scalegroup");var u=i("text"),c=i("texttemplate");i("texttemplatefallback");var f;if(c||(f=i("textinfo",qE.isArrayOrTypedArray(u)?"text+percent":"percent")),i("hovertext"),i("hovertemplate"),i("hovertemplatefallback"),c||f&&f!=="none"){var h=i("textposition");VCt(e,t,n,i,h,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1});var d=Array.isArray(h)||h==="auto",v=d||h==="outside";v&&i("automargin"),(h==="inside"||h==="auto"||Array.isArray(h))&&i("insidetextorientation")}else f==="none"&&i("textposition","none");UCt(t,n,i);var m=i("hole"),b=i("title.text");if(b){var p=i("title.position",m?"middle center":"top center");!m&&p==="middle center"&&(t.title.position="top center"),qE.coerceFont(i,"title.font",n.font)}i("sort"),i("direction"),i("rotation"),i("pull")}ske.exports={handleLabelsAndValues:ake,handleMarkerDefaults:oke,supplyDefaults:HCt}});var bD=ye((dvr,lke)=>{"use strict";lke.exports={hiddenlabels:{valType:"data_array",editType:"calc"},piecolorway:{valType:"colorlist",editType:"calc"},extendpiecolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var cke=ye((vvr,uke)=>{"use strict";var jCt=Pr(),WCt=bD();uke.exports=function(t,r){function n(i,a){return jCt.coerce(t,r,WCt,i,a)}n("hiddenlabels"),n("piecolorway",r.colorway),n("extendpiecolors")}});var CA=ye((pvr,dke)=>{"use strict";var XCt=Eo(),TW=fd(),ZCt=ka(),YCt={};function KCt(e,t){var r=[],n=e._fullLayout,i=n.hiddenlabels||[],a=t.labels,o=t.marker.colors||[],s=t.values,l=t._length,u=t._hasValues&&l,c,f;if(t.dlabel)for(a=new Array(l),c=0;c=0});var T=t.type==="funnelarea"?m:t.sort;return T&&r.sort(function(L,x){return x.v-L.v}),r[0]&&(r[0].vTotal=v),r}function fke(e){return function(r,n){return!r||(r=TW(r),!r.isValid())?!1:(r=ZCt.addOpacity(r,r.getAlpha()),e[n]||(e[n]=r),r)}}function JCt(e,t){var r=(t||{}).type;r||(r="pie");var n=e._fullLayout,i=e.calcdata,a=n[r+"colorway"],o=n["_"+r+"colormap"];n["extend"+r+"colors"]&&(a=hke(a,YCt));for(var s=0,l=0;l{"use strict";var $Ct=ip().appendArrayMultiPointValues;vke.exports=function(t,r){var n={curveNumber:r.index,pointNumbers:t.pts,data:r._input,fullData:r,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,bbox:t.bbox,v:t.v};return t.pts.length===1&&(n.pointNumber=n.i=t.pts[0]),$Ct(n,r,t.pts),r.type==="funnelarea"&&(delete n.v,delete n.i),n}});var SD=ye((mvr,zke)=>{"use strict";var Fp=qa(),QCt=Mc(),wD=ef(),bke=ka(),Qy=So(),iv=Pr(),e6t=iv.strScale,gke=iv.strTranslate,AW=Zl(),wke=bv(),t6t=wke.recordMinTextSize,r6t=wke.clearMinTextSize,Tke=A_().TEXTPAD,ns=g_(),TD=pke(),mke=Pr().isValidTextValue;function i6t(e,t){var r=e._context.staticPlot,n=e._fullLayout,i=n._size;r6t("pie",n),Mke(t,e),Rke(t,i);var a=iv.makeTraceGroups(n._pielayer,t,"trace").each(function(o){var s=Fp.select(this),l=o[0],u=l.trace;h6t(o),s.attr("stroke-linejoin","round"),s.each(function(){var c=Fp.select(this).selectAll("g.slice").data(o);c.enter().append("g").classed("slice",!0),c.exit().remove();var f=[[[],[]],[[],[]]],h=!1;c.each(function(T,L){if(T.hidden){Fp.select(this).selectAll("path,g").remove();return}T.pointNumber=T.i,T.curveNumber=u.index,f[T.pxmid[1]<0?0:1][T.pxmid[0]<0?0:1].push(T);var x=l.cx,C=l.cy,S=Fp.select(this),g=S.selectAll("path.surface").data([T]);if(g.enter().append("path").classed("surface",!0).style({"pointer-events":r?"none":"all"}),S.call(Ake,e,o),u.pull){var P=+ns.castOption(u.pull,T.pts)||0;P>0&&(x+=P*T.pxmid[0],C+=P*T.pxmid[1])}T.cxFinal=x,T.cyFinal=C;function E(N,H,ie,ae){var _e=ae*(H[0]-N[0]),Ee=ae*(H[1]-N[1]);return"a"+ae*l.r+","+ae*l.r+" 0 "+T.largeArc+(ie?" 1 ":" 0 ")+_e+","+Ee}var z=u.hole;if(T.v===l.vTotal){var q="M"+(x+T.px0[0])+","+(C+T.px0[1])+E(T.px0,T.pxmid,!0,1)+E(T.pxmid,T.px0,!0,1)+"Z";z?g.attr("d","M"+(x+z*T.px0[0])+","+(C+z*T.px0[1])+E(T.px0,T.pxmid,!1,z)+E(T.pxmid,T.px0,!1,z)+"Z"+q):g.attr("d",q)}else{var V=E(T.px0,T.px1,!0,1);if(z){var G=1-z;g.attr("d","M"+(x+z*T.px1[0])+","+(C+z*T.px1[1])+E(T.px1,T.px0,!1,z)+"l"+G*T.px0[0]+","+G*T.px0[1]+V+"Z")}else g.attr("d","M"+x+","+C+"l"+T.px0[0]+","+T.px0[1]+V+"Z")}Dke(e,T,l);var Z=ns.castOption(u.textposition,T.pts),j=S.selectAll("g.slicetext").data(T.text&&Z!=="none"?[0]:[]);j.enter().append("g").classed("slicetext",!0),j.exit().remove(),j.each(function(){var N=iv.ensureSingle(Fp.select(this),"text","",function(re){re.attr("data-notex",1)}),H=iv.ensureUniformFontSize(e,Z==="outside"?a6t(u,T,n.font):Ske(u,T,n.font));N.text(T.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(Qy.font,H).call(AW.convertToTspans,e);var ie=Qy.bBox(N.node()),ae;if(Z==="outside")ae=xke(ie,T);else if(ae=Eke(ie,T,l),Z==="auto"&&ae.scale<1){var _e=iv.ensureUniformFontSize(e,u.outsidetextfont);N.call(Qy.font,_e),ie=Qy.bBox(N.node()),ae=xke(ie,T)}var Ee=ae.textPosAngle,Ce=Ee===void 0?T.pxmid:AD(l.r,Ee);if(ae.targetX=x+Ce[0]*ae.rCenter+(ae.x||0),ae.targetY=C+Ce[1]*ae.rCenter+(ae.y||0),Fke(ae,ie),ae.outside){var ge=ae.targetY;T.yLabelMin=ge-ie.height/2,T.yLabelMid=ge,T.yLabelMax=ge+ie.height/2,T.labelExtraX=0,T.labelExtraY=0,h=!0}ae.fontSize=H.size,t6t(u.type,ae,n),o[L].transform=ae,iv.setTransormAndDisplay(N,ae)})});var d=Fp.select(this).selectAll("g.titletext").data(u.title.text?[0]:[]);if(d.enter().append("g").classed("titletext",!0),d.exit().remove(),d.each(function(){var T=iv.ensureSingle(Fp.select(this),"text","",function(C){C.attr("data-notex",1)}),L=u.title.text;u._meta&&(L=iv.templateString(L,u._meta)),T.text(L).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(Qy.font,u.title.font).call(AW.convertToTspans,e);var x;u.title.position==="middle center"?x=l6t(l):x=Pke(l,i),T.attr("transform",gke(x.x,x.y)+e6t(Math.min(1,x.scale))+gke(x.tx,x.ty))}),h&&c6t(f,u),n6t(c,u),h&&u.automargin){var v=Qy.bBox(s.node()),m=u.domain,b=i.w*(m.x[1]-m.x[0]),p=i.h*(m.y[1]-m.y[0]),k=(.5*b-l.r)/i.w,M=(.5*p-l.r)/i.h;QCt.autoMargin(e,"pie."+u.uid+".automargin",{xl:m.x[0]-k,xr:m.x[1]+k,yb:m.y[0]-M,yt:m.y[1]+M,l:Math.max(l.cx-l.r-v.left,0),r:Math.max(v.right-(l.cx+l.r),0),b:Math.max(v.bottom-(l.cy+l.r),0),t:Math.max(l.cy-l.r-v.top,0),pad:5})}})});setTimeout(function(){a.selectAll("tspan").each(function(){var o=Fp.select(this);o.attr("dy")&&o.attr("dy",o.attr("dy"))})},0)}function n6t(e,t){e.each(function(r){var n=Fp.select(this);if(!r.labelExtraX&&!r.labelExtraY){n.select("path.textline").remove();return}var i=n.select("g.slicetext text");r.transform.targetX+=r.labelExtraX,r.transform.targetY+=r.labelExtraY,iv.setTransormAndDisplay(i,r.transform);var a=r.cxFinal+r.pxmid[0],o=r.cyFinal+r.pxmid[1],s="M"+a+","+o,l=(r.yLabelMax-r.yLabelMin)*(r.pxmid[0]<0?-1:1)/4;if(r.labelExtraX){var u=r.labelExtraX*r.pxmid[1]/r.pxmid[0],c=r.yLabelMid+r.labelExtraY-(r.cyFinal+r.pxmid[1]);Math.abs(u)>Math.abs(c)?s+="l"+c*r.pxmid[0]/r.pxmid[1]+","+c+"H"+(a+r.labelExtraX+l):s+="l"+r.labelExtraX+","+u+"v"+(c-u)+"h"+l}else s+="V"+(r.yLabelMid+r.labelExtraY)+"h"+l;iv.ensureSingle(n,"path","textline").call(bke.stroke,t.outsidetextfont.color).attr({"stroke-width":Math.min(2,t.outsidetextfont.size/8),d:s,fill:"none"})})}function Ake(e,t,r){var n=r[0],i=n.cx,a=n.cy,o=n.trace,s=o.type==="funnelarea";"_hasHoverLabel"in o||(o._hasHoverLabel=!1),"_hasHoverEvent"in o||(o._hasHoverEvent=!1),e.on("mouseover",function(l){var u=t._fullLayout,c=t._fullData[o.index];if(!(t._dragging||u.hovermode===!1)){var f=c.hoverinfo;if(Array.isArray(f)&&(f=wD.castHoverinfo({hoverinfo:[ns.castOption(f,l.pts)],_module:o._module},u,0)),f==="all"&&(f="label+text+value+percent+name"),c.hovertemplate||f!=="none"&&f!=="skip"&&f){var h=l.rInscribed||0,d=i+l.pxmid[0]*(1-h),v=a+l.pxmid[1]*(1-h),m=u.separators,b=[];if(f&&f.indexOf("label")!==-1&&b.push(l.label),l.text=ns.castOption(c.hovertext||c.text,l.pts),f&&f.indexOf("text")!==-1){var p=l.text;iv.isValidTextValue(p)&&b.push(p)}l.value=l.v,l.valueLabel=ns.formatPieValue(l.v,m),f&&f.indexOf("value")!==-1&&b.push(l.valueLabel),l.percent=l.v/n.vTotal,l.percentLabel=ns.formatPiePercent(l.percent,m),f&&f.indexOf("percent")!==-1&&b.push(l.percentLabel);var k=c.hoverlabel,M=k.font,T=[];wD.loneHover({trace:o,x0:d-h*n.r,x1:d+h*n.r,y:v,_x0:s?i+l.TL[0]:d-h*n.r,_x1:s?i+l.TR[0]:d+h*n.r,_y0:s?a+l.TL[1]:v-h*n.r,_y1:s?a+l.BL[1]:v+h*n.r,text:b.join("
"),name:c.hovertemplate||f.indexOf("name")!==-1?c.name:void 0,idealAlign:l.pxmid[0]<0?"left":"right",color:ns.castOption(k.bgcolor,l.pts)||l.color,borderColor:ns.castOption(k.bordercolor,l.pts),fontFamily:ns.castOption(M.family,l.pts),fontSize:ns.castOption(M.size,l.pts),fontColor:ns.castOption(M.color,l.pts),nameLength:ns.castOption(k.namelength,l.pts),textAlign:ns.castOption(k.align,l.pts),hovertemplate:ns.castOption(c.hovertemplate,l.pts),hovertemplateLabels:l,eventData:[TD(l,c)]},{container:u._hoverlayer.node(),outerContainer:u._paper.node(),gd:t,inOut_bbox:T}),l.bbox=T[0],o._hasHoverLabel=!0}o._hasHoverEvent=!0,t.emit("plotly_hover",{points:[TD(l,c)],event:Fp.event})}}),e.on("mouseout",function(l){var u=t._fullLayout,c=t._fullData[o.index],f=Fp.select(this).datum();o._hasHoverEvent&&(l.originalEvent=Fp.event,t.emit("plotly_unhover",{points:[TD(f,c)],event:Fp.event}),o._hasHoverEvent=!1),o._hasHoverLabel&&(wD.loneUnhover(u._hoverlayer.node()),o._hasHoverLabel=!1)}),e.on("click",function(l){var u=t._fullLayout,c=t._fullData[o.index];t._dragging||u.hovermode===!1||(t._hoverdata=[TD(l,c)],wD.click(t,Fp.event))})}function a6t(e,t,r){var n=ns.castOption(e.outsidetextfont.color,t.pts)||ns.castOption(e.textfont.color,t.pts)||r.color,i=ns.castOption(e.outsidetextfont.family,t.pts)||ns.castOption(e.textfont.family,t.pts)||r.family,a=ns.castOption(e.outsidetextfont.size,t.pts)||ns.castOption(e.textfont.size,t.pts)||r.size,o=ns.castOption(e.outsidetextfont.weight,t.pts)||ns.castOption(e.textfont.weight,t.pts)||r.weight,s=ns.castOption(e.outsidetextfont.style,t.pts)||ns.castOption(e.textfont.style,t.pts)||r.style,l=ns.castOption(e.outsidetextfont.variant,t.pts)||ns.castOption(e.textfont.variant,t.pts)||r.variant,u=ns.castOption(e.outsidetextfont.textcase,t.pts)||ns.castOption(e.textfont.textcase,t.pts)||r.textcase,c=ns.castOption(e.outsidetextfont.lineposition,t.pts)||ns.castOption(e.textfont.lineposition,t.pts)||r.lineposition,f=ns.castOption(e.outsidetextfont.shadow,t.pts)||ns.castOption(e.textfont.shadow,t.pts)||r.shadow;return{color:n,family:i,size:a,weight:o,style:s,variant:l,textcase:u,lineposition:c,shadow:f}}function Ske(e,t,r){var n=ns.castOption(e.insidetextfont.color,t.pts);!n&&e._input.textfont&&(n=ns.castOption(e._input.textfont.color,t.pts));var i=ns.castOption(e.insidetextfont.family,t.pts)||ns.castOption(e.textfont.family,t.pts)||r.family,a=ns.castOption(e.insidetextfont.size,t.pts)||ns.castOption(e.textfont.size,t.pts)||r.size,o=ns.castOption(e.insidetextfont.weight,t.pts)||ns.castOption(e.textfont.weight,t.pts)||r.weight,s=ns.castOption(e.insidetextfont.style,t.pts)||ns.castOption(e.textfont.style,t.pts)||r.style,l=ns.castOption(e.insidetextfont.variant,t.pts)||ns.castOption(e.textfont.variant,t.pts)||r.variant,u=ns.castOption(e.insidetextfont.textcase,t.pts)||ns.castOption(e.textfont.textcase,t.pts)||r.textcase,c=ns.castOption(e.insidetextfont.lineposition,t.pts)||ns.castOption(e.textfont.lineposition,t.pts)||r.lineposition,f=ns.castOption(e.insidetextfont.shadow,t.pts)||ns.castOption(e.textfont.shadow,t.pts)||r.shadow;return{color:n||bke.contrast(t.color),family:i,size:a,weight:o,style:s,variant:l,textcase:u,lineposition:c,shadow:f}}function Mke(e,t){for(var r,n,i=0;i=-4;k-=2)p(Math.PI*k,"tan");for(k=4;k>=-4;k-=2)p(Math.PI*(k+1),"tan")}if(f||d){for(k=4;k>=-4;k-=2)p(Math.PI*(k+1.5),"rad");for(k=4;k>=-4;k-=2)p(Math.PI*(k+.5),"rad")}}if(s||v||f){var M=Math.sqrt(e.width*e.width+e.height*e.height);if(b={scale:i*n*2/M,rCenter:1-i,rotate:0},b.textPosAngle=(t.startangle+t.stopangle)/2,b.scale>=1)return b;m.push(b)}(v||d)&&(b=yke(e,n,o,l,u),b.textPosAngle=(t.startangle+t.stopangle)/2,m.push(b)),(v||h)&&(b=_ke(e,n,o,l,u),b.textPosAngle=(t.startangle+t.stopangle)/2,m.push(b));for(var T=0,L=0,x=0;x=1)break}return m[T]}function o6t(e,t){var r=e.startangle,n=e.stopangle;return r>t&&t>n||r0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function l6t(e){var t=Math.sqrt(e.titleBox.width*e.titleBox.width+e.titleBox.height*e.titleBox.height);return{x:e.cx,y:e.cy,scale:e.trace.hole*e.r*2/t,tx:0,ty:-e.titleBox.height/2+e.trace.title.font.size}}function Pke(e,t){var r=1,n=1,i,a=e.trace,o={x:e.cx,y:e.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=Ike(a),a.title.position.indexOf("top")!==-1?(o.y-=(1+i)*e.r,s.ty-=e.titleBox.height):a.title.position.indexOf("bottom")!==-1&&(o.y+=(1+i)*e.r);var l=u6t(e.r,e.trace.aspectratio),u=t.w*(a.domain.x[1]-a.domain.x[0])/2;return a.title.position.indexOf("left")!==-1?(u=u+l,o.x-=(1+i)*l,s.tx+=e.titleBox.width/2):a.title.position.indexOf("center")!==-1?u*=2:a.title.position.indexOf("right")!==-1&&(u=u+l,o.x+=(1+i)*l,s.tx-=e.titleBox.width/2),r=u/e.titleBox.width,n=SW(e,t)/e.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function u6t(e,t){return e/(t===void 0?1:t)}function SW(e,t){var r=e.trace,n=t.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(e.titleBox.height,n/2)}function Ike(e){var t=e.pull;if(!t)return 0;var r;if(iv.isArrayOrTypedArray(t))for(t=0,r=0;rt&&(t=e.pull[r]);return t}function c6t(e,t){var r,n,i,a,o,s,l,u,c,f,h,d,v;function m(M,T){return M.pxmid[1]-T.pxmid[1]}function b(M,T){return T.pxmid[1]-M.pxmid[1]}function p(M,T){T||(T={});var L=T.labelExtraY+(n?T.yLabelMax:T.yLabelMin),x=n?M.yLabelMin:M.yLabelMax,C=n?M.yLabelMax:M.yLabelMin,S=M.cyFinal+o(M.px0[1],M.px1[1]),g=L-x,P,E,z,q,V,G;if(g*l>0&&(M.labelExtraY=g),!!iv.isArrayOrTypedArray(t.pull))for(E=0;E=(ns.castOption(t.pull,z.pts)||0))&&((M.pxmid[1]-z.pxmid[1])*l>0?(q=z.cyFinal+o(z.px0[1],z.px1[1]),g=q-x-M.labelExtraY,g*l>0&&(M.labelExtraY+=g)):(C+M.labelExtraY-S)*l>0&&(P=3*s*Math.abs(E-f.indexOf(M)),V=z.cxFinal+a(z.px0[0],z.px1[0]),G=V+P-(M.cxFinal+M.pxmid[0])-M.labelExtraX,G*s>0&&(M.labelExtraX+=G)))}for(n=0;n<2;n++)for(i=n?m:b,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,u=e[n][r],u.sort(i),c=e[1-n][r],f=c.concat(u),d=[],h=0;h1?(u=r.r,c=u/i.aspectratio):(c=r.r,u=c*i.aspectratio),u*=(1+i.baseratio)/2,l=u*c}o=Math.min(o,l/r.vTotal)}for(n=0;nt.vTotal/2?1:0,u.halfangle=Math.PI*Math.min(u.v/t.vTotal,.5),u.ring=1-n.hole,u.rInscribed=s6t(u,t))}function AD(e,t){return[e*Math.sin(t),-e*Math.cos(t)]}function Dke(e,t,r){var n=e._fullLayout,i=r.trace,a=i.texttemplate,o=i.textinfo;if(!a&&o&&o!=="none"){var s=o.split("+"),l=function(T){return s.indexOf(T)!==-1},u=l("label"),c=l("text"),f=l("value"),h=l("percent"),d=n.separators,v;if(v=u?[t.label]:[],c){var m=ns.getFirstFilled(i.text,t.pts);mke(m)&&v.push(m)}f&&v.push(ns.formatPieValue(t.v,d)),h&&v.push(ns.formatPiePercent(t.v/r.vTotal,d)),t.text=v.join("
")}function b(T){return{label:T.label,value:T.v,valueLabel:ns.formatPieValue(T.v,n.separators),percent:T.v/r.vTotal,percentLabel:ns.formatPiePercent(T.v/r.vTotal,n.separators),color:T.color,text:T.text,customdata:iv.castOption(i,T.i,"customdata")}}if(a){var p=iv.castOption(i,t.i,"texttemplate");if(!p)t.text="";else{var k=b(t),M=ns.getFirstFilled(i.text,t.pts);(mke(M)||M==="")&&(k.text=M),t.text=iv.texttemplateString({data:[k,i._meta],fallback:i.texttemplatefallback,labels:k,locale:e._fullLayout._d3locale,template:p})}}}function Fke(e,t){var r=e.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(t.left+t.right)/2,o=(t.top+t.bottom)/2;e.textX=a*n-o*i,e.textY=a*i+o*n,e.noCenter=!0}zke.exports={plot:i6t,formatSliceLabel:Dke,transformInsideText:Eke,determineInsideTextFont:Ske,positionTitleOutside:Pke,prerenderTitles:Mke,layoutAreas:Rke,attachFxHandlers:Ake,computeTransform:Fke}});var Bke=ye((yvr,Oke)=>{"use strict";var qke=qa(),d6t=Y3(),v6t=bv().resizeText;Oke.exports=function(t){var r=t._fullLayout._pielayer.selectAll(".trace");v6t(t,r,"pie"),r.each(function(n){var i=n[0],a=i.trace,o=qke.select(this);o.style({opacity:a.opacity}),o.selectAll("path.surface").each(function(s){qke.select(this).call(d6t,s,a,t)})})}});var Uke=ye(LA=>{"use strict";var Nke=Mc();LA.name="pie";LA.plot=function(e,t,r,n){Nke.plotBasePlot(LA.name,e,t,r,n)};LA.clean=function(e,t,r,n){Nke.cleanBasePlot(LA.name,e,t,r,n)}});var Gke=ye((xvr,Vke)=>{"use strict";Vke.exports={attributes:z2(),supplyDefaults:q2().supplyDefaults,supplyLayoutDefaults:cke(),layoutAttributes:bD(),calc:CA().calc,crossTraceCalc:CA().crossTraceCalc,plot:SD().plot,style:Bke(),styleOne:Y3(),moduleType:"trace",name:"pie",basePlotModule:Uke(),categories:["pie-like","pie","showLegend"],meta:{}}});var jke=ye((bvr,Hke)=>{"use strict";Hke.exports=Gke()});var Xke=ye(PA=>{"use strict";var Wke=Mc();PA.name="sunburst";PA.plot=function(e,t,r,n){Wke.plotBasePlot(PA.name,e,t,r,n)};PA.clean=function(e,t,r,n){Wke.cleanBasePlot(PA.name,e,t,r,n)}});var MW=ye((Tvr,Zke)=>{"use strict";Zke.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"linear",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"]}});var BE=ye((Avr,Jke)=>{"use strict";var p6t=Gl(),{hovertemplateAttrs:g6t,texttemplateAttrs:m6t,templatefallbackAttrs:Yke}=Ll(),y6t=Tu(),_6t=Cc().attributes,e1=z2(),Kke=MW(),OE=Ao().extendFlat,x6t=Pd().pattern;Jke.exports={labels:{valType:"data_array",editType:"calc"},parents:{valType:"data_array",editType:"calc"},values:{valType:"data_array",editType:"calc"},branchvalues:{valType:"enumerated",values:["remainder","total"],dflt:"remainder",editType:"calc"},count:{valType:"flaglist",flags:["branches","leaves"],dflt:"leaves",editType:"calc"},level:{valType:"any",editType:"plot",anim:!0},maxdepth:{valType:"integer",editType:"plot",dflt:-1},marker:OE({colors:{valType:"data_array",editType:"calc"},line:{color:OE({},e1.marker.line.color,{dflt:null}),width:OE({},e1.marker.line.width,{dflt:1}),editType:"calc"},pattern:x6t,editType:"calc"},y6t("marker",{colorAttr:"colors",anim:!1})),leaf:{opacity:{valType:"number",editType:"style",min:0,max:1},editType:"plot"},text:e1.text,textinfo:{valType:"flaglist",flags:["label","text","value","current path","percent root","percent entry","percent parent"],extras:["none"],editType:"plot"},texttemplate:m6t({editType:"plot"},{keys:Kke.eventDataKeys.concat(["label","value"])}),texttemplatefallback:Yke({editType:"plot"}),hovertext:e1.hovertext,hoverinfo:OE({},p6t.hoverinfo,{flags:["label","text","value","name","current path","percent root","percent entry","percent parent"],dflt:"label+text+value+name"}),hovertemplate:g6t({},{keys:Kke.eventDataKeys}),hovertemplatefallback:Yke(),textfont:e1.textfont,insidetextorientation:e1.insidetextorientation,insidetextfont:e1.insidetextfont,outsidetextfont:OE({},e1.outsidetextfont,{}),rotation:{valType:"angle",dflt:0,editType:"plot"},sort:e1.sort,root:{color:{valType:"color",editType:"calc",dflt:"rgba(0,0,0,0)"},editType:"calc"},domain:_6t({name:"sunburst",trace:!0,editType:"calc"})}});var EW=ye((Svr,$ke)=>{"use strict";$ke.exports={sunburstcolorway:{valType:"colorlist",editType:"calc"},extendsunburstcolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var rCe=ye((Mvr,tCe)=>{"use strict";var Qke=Pr(),b6t=BE(),w6t=Cc().defaults,T6t=i0().handleText,A6t=q2().handleMarkerDefaults,eCe=tc(),S6t=eCe.hasColorscale,M6t=eCe.handleDefaults;tCe.exports=function(t,r,n,i){function a(h,d){return Qke.coerce(t,r,b6t,h,d)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth"),A6t(t,r,i,a);var u=r._hasColorscale=S6t(t,"marker","colors")||(t.marker||{}).coloraxis;u&&M6t(t,r,i,a,{prefix:"marker.",cLetter:"c"}),a("leaf.opacity",u?1:.7);var c=a("text");a("texttemplate"),a("texttemplatefallback"),r.texttemplate||a("textinfo",Qke.isArrayOrTypedArray(c)?"text+label":"label"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback");var f="auto";T6t(t,r,i,a,f,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("insidetextorientation"),a("sort"),a("rotation"),a("root.color"),w6t(r,i,a),r._length=null}});var nCe=ye((Evr,iCe)=>{"use strict";var E6t=Pr(),k6t=EW();iCe.exports=function(t,r){function n(i,a){return E6t.coerce(t,r,k6t,i,a)}n("sunburstcolorway",r.colorway),n("extendsunburstcolors")}});var NE=ye((MD,aCe)=>{(function(e,t){typeof MD=="object"&&typeof aCe!="undefined"?t(MD):(e=e||self,t(e.d3=e.d3||{}))})(MD,function(e){"use strict";function t(We,et){return We.parent===et.parent?1:2}function r(We){return We.reduce(n,0)/We.length}function n(We,et){return We+et.x}function i(We){return 1+We.reduce(a,0)}function a(We,et){return Math.max(We,et.y)}function o(We){for(var et;et=We.children;)We=et[0];return We}function s(We){for(var et;et=We.children;)We=et[et.length-1];return We}function l(){var We=t,et=1,xt=1,At=!1;function Kt(Qt){var Mr,Gr=0;Qt.eachAfter(function(ai){var mi=ai.children;mi?(ai.x=r(mi),ai.y=i(mi)):(ai.x=Mr?Gr+=We(ai,Mr):0,ai.y=0,Mr=ai)});var Ir=o(Qt),Yr=s(Qt),_i=Ir.x-We(Ir,Yr)/2,Pi=Yr.x+We(Yr,Ir)/2;return Qt.eachAfter(At?function(ai){ai.x=(ai.x-Qt.x)*et,ai.y=(Qt.y-ai.y)*xt}:function(ai){ai.x=(ai.x-_i)/(Pi-_i)*et,ai.y=(1-(Qt.y?ai.y/Qt.y:1))*xt})}return Kt.separation=function(Qt){return arguments.length?(We=Qt,Kt):We},Kt.size=function(Qt){return arguments.length?(At=!1,et=+Qt[0],xt=+Qt[1],Kt):At?null:[et,xt]},Kt.nodeSize=function(Qt){return arguments.length?(At=!0,et=+Qt[0],xt=+Qt[1],Kt):At?[et,xt]:null},Kt}function u(We){var et=0,xt=We.children,At=xt&&xt.length;if(!At)et=1;else for(;--At>=0;)et+=xt[At].value;We.value=et}function c(){return this.eachAfter(u)}function f(We){var et=this,xt,At=[et],Kt,Qt,Mr;do for(xt=At.reverse(),At=[];et=xt.pop();)if(We(et),Kt=et.children,Kt)for(Qt=0,Mr=Kt.length;Qt=0;--Kt)xt.push(At[Kt]);return this}function d(We){for(var et=this,xt=[et],At=[],Kt,Qt,Mr;et=xt.pop();)if(At.push(et),Kt=et.children,Kt)for(Qt=0,Mr=Kt.length;Qt=0;)xt+=At[Kt].value;et.value=xt})}function m(We){return this.eachBefore(function(et){et.children&&et.children.sort(We)})}function b(We){for(var et=this,xt=p(et,We),At=[et];et!==xt;)et=et.parent,At.push(et);for(var Kt=At.length;We!==xt;)At.splice(Kt,0,We),We=We.parent;return At}function p(We,et){if(We===et)return We;var xt=We.ancestors(),At=et.ancestors(),Kt=null;for(We=xt.pop(),et=At.pop();We===et;)Kt=We,We=xt.pop(),et=At.pop();return Kt}function k(){for(var We=this,et=[We];We=We.parent;)et.push(We);return et}function M(){var We=[];return this.each(function(et){We.push(et)}),We}function T(){var We=[];return this.eachBefore(function(et){et.children||We.push(et)}),We}function L(){var We=this,et=[];return We.each(function(xt){xt!==We&&et.push({source:xt.parent,target:xt})}),et}function x(We,et){var xt=new E(We),At=+We.value&&(xt.value=We.value),Kt,Qt=[xt],Mr,Gr,Ir,Yr;for(et==null&&(et=S);Kt=Qt.pop();)if(At&&(Kt.value=+Kt.data.value),(Gr=et(Kt.data))&&(Yr=Gr.length))for(Kt.children=new Array(Yr),Ir=Yr-1;Ir>=0;--Ir)Qt.push(Mr=Kt.children[Ir]=new E(Gr[Ir])),Mr.parent=Kt,Mr.depth=Kt.depth+1;return xt.eachBefore(P)}function C(){return x(this).eachBefore(g)}function S(We){return We.children}function g(We){We.data=We.data.data}function P(We){var et=0;do We.height=et;while((We=We.parent)&&We.height<++et)}function E(We){this.data=We,this.depth=this.height=0,this.parent=null}E.prototype=x.prototype={constructor:E,count:c,each:f,eachAfter:d,eachBefore:h,sum:v,sort:m,path:b,ancestors:k,descendants:M,leaves:T,links:L,copy:C};var z=Array.prototype.slice;function q(We){for(var et=We.length,xt,At;et;)At=Math.random()*et--|0,xt=We[et],We[et]=We[At],We[At]=xt;return We}function V(We){for(var et=0,xt=(We=q(z.call(We))).length,At=[],Kt,Qt;et0&&xt*xt>At*At+Kt*Kt}function N(We,et){for(var xt=0;xtIr?(Kt=(Yr+Ir-Qt)/(2*Yr),Gr=Math.sqrt(Math.max(0,Ir/Yr-Kt*Kt)),xt.x=We.x-Kt*At-Gr*Mr,xt.y=We.y-Kt*Mr+Gr*At):(Kt=(Yr+Qt-Ir)/(2*Yr),Gr=Math.sqrt(Math.max(0,Qt/Yr-Kt*Kt)),xt.x=et.x+Kt*At-Gr*Mr,xt.y=et.y+Kt*Mr+Gr*At)):(xt.x=et.x+xt.r,xt.y=et.y)}function Ce(We,et){var xt=We.r+et.r-1e-6,At=et.x-We.x,Kt=et.y-We.y;return xt>0&&xt*xt>At*At+Kt*Kt}function ge(We){var et=We._,xt=We.next._,At=et.r+xt.r,Kt=(et.x*xt.r+xt.x*et.r)/At,Qt=(et.y*xt.r+xt.y*et.r)/At;return Kt*Kt+Qt*Qt}function re(We){this._=We,this.next=null,this.previous=null}function Se(We){if(!(Kt=We.length))return 0;var et,xt,At,Kt,Qt,Mr,Gr,Ir,Yr,_i,Pi;if(et=We[0],et.x=0,et.y=0,!(Kt>1))return et.r;if(xt=We[1],et.x=-xt.r,xt.x=et.r,xt.y=0,!(Kt>2))return et.r+xt.r;Ee(xt,et,At=We[2]),et=new re(et),xt=new re(xt),At=new re(At),et.next=At.previous=xt,xt.next=et.previous=At,At.next=xt.previous=et;e:for(Gr=3;Gr0)throw new Error("cycle");return Gr}return xt.id=function(At){return arguments.length?(We=Be(At),xt):We},xt.parentId=function(At){return arguments.length?(et=Be(At),xt):et},xt}function Ae(We,et){return We.parent===et.parent?1:2}function rt(We){var et=We.children;return et?et[0]:We.t}function St(We){var et=We.children;return et?et[et.length-1]:We.t}function Tt(We,et,xt){var At=xt/(et.i-We.i);et.c-=At,et.s+=xt,We.c+=At,et.z+=xt,et.m+=xt}function dt(We){for(var et=0,xt=0,At=We.children,Kt=At.length,Qt;--Kt>=0;)Qt=At[Kt],Qt.z+=et,Qt.m+=et,et+=Qt.s+(xt+=Qt.c)}function Et(We,et,xt){return We.a.parent===et.parent?We.a:xt}function pt(We,et){this._=We,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=et}pt.prototype=Object.create(E.prototype);function jt(We){for(var et=new pt(We,0),xt,At=[et],Kt,Qt,Mr,Gr;xt=At.pop();)if(Qt=xt._.children)for(xt.children=new Array(Gr=Qt.length),Mr=Gr-1;Mr>=0;--Mr)At.push(Kt=xt.children[Mr]=new pt(Qt[Mr],Mr)),Kt.parent=xt;return(et.parent=new pt(null,0)).children=[et],et}function or(){var We=Ae,et=1,xt=1,At=null;function Kt(Yr){var _i=jt(Yr);if(_i.eachAfter(Qt),_i.parent.m=-_i.z,_i.eachBefore(Mr),At)Yr.eachBefore(Ir);else{var Pi=Yr,ai=Yr,mi=Yr;Yr.eachBefore(function(Qn){Qn.xai.x&&(ai=Qn),Qn.depth>mi.depth&&(mi=Qn)});var un=Pi===ai?1:We(Pi,ai)/2,Fn=un-Pi.x,An=et/(ai.x+un+Fn),Hn=xt/(mi.depth||1);Yr.eachBefore(function(Qn){Qn.x=(Qn.x+Fn)*An,Qn.y=Qn.depth*Hn})}return Yr}function Qt(Yr){var _i=Yr.children,Pi=Yr.parent.children,ai=Yr.i?Pi[Yr.i-1]:null;if(_i){dt(Yr);var mi=(_i[0].z+_i[_i.length-1].z)/2;ai?(Yr.z=ai.z+We(Yr._,ai._),Yr.m=Yr.z-mi):Yr.z=mi}else ai&&(Yr.z=ai.z+We(Yr._,ai._));Yr.parent.A=Gr(Yr,ai,Yr.parent.A||Pi[0])}function Mr(Yr){Yr._.x=Yr.z+Yr.parent.m,Yr.m+=Yr.parent.m}function Gr(Yr,_i,Pi){if(_i){for(var ai=Yr,mi=Yr,un=_i,Fn=ai.parent.children[0],An=ai.m,Hn=mi.m,Qn=un.m,Vi=Fn.m,Kn;un=St(un),ai=rt(ai),un&&ai;)Fn=rt(Fn),mi=St(mi),mi.a=Yr,Kn=un.z+Qn-ai.z-An+We(un._,ai._),Kn>0&&(Tt(Et(un,Yr,Pi),Yr,Kn),An+=Kn,Hn+=Kn),Qn+=un.m,An+=ai.m,Vi+=Fn.m,Hn+=mi.m;un&&!St(mi)&&(mi.t=un,mi.m+=Qn-Hn),ai&&!rt(Fn)&&(Fn.t=ai,Fn.m+=An-Vi,Pi=Yr)}return Pi}function Ir(Yr){Yr.x*=et,Yr.y=Yr.depth*xt}return Kt.separation=function(Yr){return arguments.length?(We=Yr,Kt):We},Kt.size=function(Yr){return arguments.length?(At=!1,et=+Yr[0],xt=+Yr[1],Kt):At?null:[et,xt]},Kt.nodeSize=function(Yr){return arguments.length?(At=!0,et=+Yr[0],xt=+Yr[1],Kt):At?[et,xt]:null},Kt}function mr(We,et,xt,At,Kt){for(var Qt=We.children,Mr,Gr=-1,Ir=Qt.length,Yr=We.value&&(Kt-xt)/We.value;++GrQn&&(Qn=Yr),Gt=An*An*Jn,Vi=Math.max(Qn/Gt,Gt/Hn),Vi>Kn){An-=Yr;break}Kn=Vi}Mr.push(Ir={value:An,dice:mi1?At:1)},xt}(Ar);function jr(){var We=qr,et=!1,xt=1,At=1,Kt=[0],Qt=Le,Mr=Le,Gr=Le,Ir=Le,Yr=Le;function _i(ai){return ai.x0=ai.y0=0,ai.x1=xt,ai.y1=At,ai.eachBefore(Pi),Kt=[0],et&&ai.eachBefore(Ht),ai}function Pi(ai){var mi=Kt[ai.depth],un=ai.x0+mi,Fn=ai.y0+mi,An=ai.x1-mi,Hn=ai.y1-mi;An=ai-1){var Qn=Qt[Pi];Qn.x0=un,Qn.y0=Fn,Qn.x1=An,Qn.y1=Hn;return}for(var Vi=Yr[Pi],Kn=mi/2+Vi,Jn=Pi+1,Gt=ai-1;Jn>>1;Yr[wt]Hn-Fn){var wr=(un*ir+An*tr)/mi;_i(Pi,Jn,tr,un,Fn,wr,Hn),_i(Jn,ai,ir,wr,Fn,An,Hn)}else{var Xr=(Fn*ir+Hn*tr)/mi;_i(Pi,Jn,tr,un,Fn,An,Xr),_i(Jn,ai,ir,un,Xr,An,Hn)}}}function Ge(We,et,xt,At,Kt){(We.depth&1?mr:at)(We,et,xt,At,Kt)}var Je=function We(et){function xt(At,Kt,Qt,Mr,Gr){if((Ir=At._squarify)&&Ir.ratio===et)for(var Ir,Yr,_i,Pi,ai=-1,mi,un=Ir.length,Fn=At.value;++ai1?At:1)},xt}(Ar);e.cluster=l,e.hierarchy=x,e.pack=ce,e.packEnclose=V,e.packSiblings=ke,e.partition=ct,e.stratify=Ue,e.tree=or,e.treemap=jr,e.treemapBinary=gt,e.treemapDice=at,e.treemapResquarify=Je,e.treemapSlice=mr,e.treemapSliceDice=Ge,e.treemapSquarify=qr,Object.defineProperty(e,"__esModule",{value:!0})})});var VE=ye(UE=>{"use strict";var oCe=NE(),C6t=Eo(),IA=Pr(),L6t=tc().makeColorScaleFuncFromTrace,P6t=CA().makePullColorFn,I6t=CA().generateExtendedColors,R6t=tc().calc,D6t=fs().ALMOST_EQUAL,F6t={},z6t={},q6t={};UE.calc=function(e,t){var r=e._fullLayout,n=t.ids,i=IA.isArrayOrTypedArray(n),a=t.labels,o=t.parents,s=t.values,l=IA.isArrayOrTypedArray(s),u=[],c={},f={},h=function(j,N){c[j]?c[j].push(N):c[j]=[N],f[N]=1},d=function(j){return j||typeof j=="number"},v=function(j){return!l||C6t(s[j])&&s[j]>=0},m,b,p;i?(m=Math.min(n.length,o.length),b=function(j){return d(n[j])&&v(j)},p=function(j){return String(n[j])}):(m=Math.min(a.length,o.length),b=function(j){return d(a[j])&&v(j)},p=function(j){return String(a[j])}),l&&(m=Math.min(m,s.length));for(var k=0;k1){for(var S=IA.randstr(),g=0;g{});function Km(){}function uCe(){return this.rgb().formatHex()}function j6t(){return this.rgb().formatHex8()}function W6t(){return gCe(this).formatHsl()}function cCe(){return this.rgb().formatRgb()}function tx(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=O6t.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?fCe(t):r===3?new _d(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?kD(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?kD(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=B6t.exec(e))?new _d(t[1],t[2],t[3],1):(t=N6t.exec(e))?new _d(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=U6t.exec(e))?kD(t[1],t[2],t[3],t[4]):(t=V6t.exec(e))?kD(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=G6t.exec(e))?vCe(t[1],t[2]/100,t[3]/100,1):(t=H6t.exec(e))?vCe(t[1],t[2]/100,t[3]/100,t[4]):lCe.hasOwnProperty(e)?fCe(lCe[e]):e==="transparent"?new _d(NaN,NaN,NaN,0):null}function fCe(e){return new _d(e>>16&255,e>>8&255,e&255,1)}function kD(e,t,r,n){return n<=0&&(e=t=r=NaN),new _d(e,t,r,n)}function HE(e){return e instanceof Km||(e=tx(e)),e?(e=e.rgb(),new _d(e.r,e.g,e.b,e.opacity)):new _d}function DA(e,t,r,n){return arguments.length===1?HE(e):new _d(e,t,r,n==null?1:n)}function _d(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function hCe(){return`#${O2(this.r)}${O2(this.g)}${O2(this.b)}`}function X6t(){return`#${O2(this.r)}${O2(this.g)}${O2(this.b)}${O2((isNaN(this.opacity)?1:this.opacity)*255)}`}function dCe(){let e=LD(this.opacity);return`${e===1?"rgb(":"rgba("}${B2(this.r)}, ${B2(this.g)}, ${B2(this.b)}${e===1?")":`, ${e})`}`}function LD(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function B2(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function O2(e){return e=B2(e),(e<16?"0":"")+e.toString(16)}function vCe(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Kg(e,t,r,n)}function gCe(e){if(e instanceof Kg)return new Kg(e.h,e.s,e.l,e.opacity);if(e instanceof Km||(e=tx(e)),!e)return new Kg;if(e instanceof Kg)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=NaN,s=a-i,l=(a+i)/2;return s?(t===a?o=(r-n)/s+(r0&&l<1?0:o,new Kg(o,s,l,e.opacity)}function jE(e,t,r,n){return arguments.length===1?gCe(e):new Kg(e,t,r,n==null?1:n)}function Kg(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function pCe(e){return e=(e||0)%360,e<0?e+360:e}function CD(e){return Math.max(0,Math.min(1,e||0))}function kW(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var ex,N2,RA,GE,Ym,O6t,B6t,N6t,U6t,V6t,G6t,H6t,lCe,PD=gu(()=>{ED();ex=.7,N2=1/ex,RA="\\s*([+-]?\\d+)\\s*",GE="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ym="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",O6t=/^#([0-9a-f]{3,8})$/,B6t=new RegExp(`^rgb\\(${RA},${RA},${RA}\\)$`),N6t=new RegExp(`^rgb\\(${Ym},${Ym},${Ym}\\)$`),U6t=new RegExp(`^rgba\\(${RA},${RA},${RA},${GE}\\)$`),V6t=new RegExp(`^rgba\\(${Ym},${Ym},${Ym},${GE}\\)$`),G6t=new RegExp(`^hsl\\(${GE},${Ym},${Ym}\\)$`),H6t=new RegExp(`^hsla\\(${GE},${Ym},${Ym},${GE}\\)$`),lCe={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};t1(Km,tx,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:uCe,formatHex:uCe,formatHex8:j6t,formatHsl:W6t,formatRgb:cCe,toString:cCe});t1(_d,DA,Q_(Km,{brighter(e){return e=e==null?N2:Math.pow(N2,e),new _d(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?ex:Math.pow(ex,e),new _d(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new _d(B2(this.r),B2(this.g),B2(this.b),LD(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:hCe,formatHex:hCe,formatHex8:X6t,formatRgb:dCe,toString:dCe}));t1(Kg,jE,Q_(Km,{brighter(e){return e=e==null?N2:Math.pow(N2,e),new Kg(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ex:Math.pow(ex,e),new Kg(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new _d(kW(e>=240?e-240:e+120,i,n),kW(e,i,n),kW(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Kg(pCe(this.h),CD(this.s),CD(this.l),LD(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=LD(this.opacity);return`${e===1?"hsl(":"hsla("}${pCe(this.h)}, ${CD(this.s)*100}%, ${CD(this.l)*100}%${e===1?")":`, ${e})`}`}}))});var ID,RD,CW=gu(()=>{ID=Math.PI/180,RD=180/Math.PI});function wCe(e){if(e instanceof Jm)return new Jm(e.l,e.a,e.b,e.opacity);if(e instanceof r1)return TCe(e);e instanceof _d||(e=HE(e));var t=RW(e.r),r=RW(e.g),n=RW(e.b),i=LW((.2225045*t+.7168786*r+.0606169*n)/yCe),a,o;return t===r&&r===n?a=o=i:(a=LW((.4360747*t+.3850649*r+.1430804*n)/mCe),o=LW((.0139322*t+.0971045*r+.7141733*n)/_Ce)),new Jm(116*i-16,500*(a-i),200*(i-o),e.opacity)}function zA(e,t,r,n){return arguments.length===1?wCe(e):new Jm(e,t,r,n==null?1:n)}function Jm(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}function LW(e){return e>Z6t?Math.pow(e,1/3):e/bCe+xCe}function PW(e){return e>FA?e*e*e:bCe*(e-xCe)}function IW(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function RW(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function Y6t(e){if(e instanceof r1)return new r1(e.h,e.c,e.l,e.opacity);if(e instanceof Jm||(e=wCe(e)),e.a===0&&e.b===0)return new r1(NaN,0{ED();PD();CW();DD=18,mCe=.96422,yCe=1,_Ce=.82521,xCe=4/29,FA=6/29,bCe=3*FA*FA,Z6t=FA*FA*FA;t1(Jm,zA,Q_(Km,{brighter(e){return new Jm(this.l+DD*(e==null?1:e),this.a,this.b,this.opacity)},darker(e){return new Jm(this.l-DD*(e==null?1:e),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=mCe*PW(t),e=yCe*PW(e),r=_Ce*PW(r),new _d(IW(3.1338561*t-1.6168667*e-.4906146*r),IW(-.9787684*t+1.9161415*e+.033454*r),IW(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));t1(r1,WE,Q_(Km,{brighter(e){return new r1(this.h,this.c,this.l+DD*(e==null?1:e),this.opacity)},darker(e){return new r1(this.h,this.c,this.l-DD*(e==null?1:e),this.opacity)},rgb(){return TCe(this).rgb()}}))});function K6t(e){if(e instanceof U2)return new U2(e.h,e.s,e.l,e.opacity);e instanceof _d||(e=HE(e));var t=e.r/255,r=e.g/255,n=e.b/255,i=(ECe*n+SCe*t-MCe*r)/(ECe+SCe-MCe),a=n-i,o=(XE*(r-i)-FW*a)/FD,s=Math.sqrt(o*o+a*a)/(XE*i*(1-i)),l=s?Math.atan2(o,a)*RD-120:NaN;return new U2(l<0?l+360:l,s,i,e.opacity)}function qA(e,t,r,n){return arguments.length===1?K6t(e):new U2(e,t,r,n==null?1:n)}function U2(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}var kCe,DW,FW,FD,XE,SCe,MCe,ECe,CCe=gu(()=>{ED();PD();CW();kCe=-.14861,DW=1.78277,FW=-.29227,FD=-.90649,XE=1.97294,SCe=XE*FD,MCe=XE*DW,ECe=DW*FW-FD*kCe;t1(U2,qA,Q_(Km,{brighter(e){return e=e==null?N2:Math.pow(N2,e),new U2(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ex:Math.pow(ex,e),new U2(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*ID,t=+this.l,r=isNaN(this.s)?0:this.s*t*(1-t),n=Math.cos(e),i=Math.sin(e);return new _d(255*(t+r*(kCe*n+DW*i)),255*(t+r*(FW*n+FD*i)),255*(t+r*(XE*n)),this.opacity)}}))});var V2=gu(()=>{PD();ACe();CCe()});function zW(e,t,r,n,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*r+(1+3*e+3*a-3*o)*n+o*i)/6}function zD(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],a=e[n+1],o=n>0?e[n-1]:2*i-a,s=n{});function OD(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],a=e[n%t],o=e[(n+1)%t],s=e[(n+2)%t];return zW((r-n/t)*t,i,a,o,s)}}var qW=gu(()=>{qD()});var OA,OW=gu(()=>{OA=e=>()=>e});function LCe(e,t){return function(r){return e+r*t}}function J6t(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function rx(e,t){var r=t-e;return r?LCe(e,r>180||r<-180?r-360*Math.round(r/360):r):OA(isNaN(e)?t:e)}function PCe(e){return(e=+e)==1?$f:function(t,r){return r-t?J6t(t,r,e):OA(isNaN(t)?r:t)}}function $f(e,t){var r=t-e;return r?LCe(e,r):OA(isNaN(e)?t:e)}var G2=gu(()=>{OW()});function ICe(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),a=new Array(r),o,s;for(o=0;o{V2();qD();qW();G2();ZE=function e(t){var r=PCe(t);function n(i,a){var o=r((i=DA(i)).r,(a=DA(a)).r),s=r(i.g,a.g),l=r(i.b,a.b),u=$f(i.opacity,a.opacity);return function(c){return i.r=o(c),i.g=s(c),i.b=l(c),i.opacity=u(c),i+""}}return n.gamma=e,n}(1);RCe=ICe(zD),DCe=ICe(OD)});function BA(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(a){for(i=0;i{});function FCe(e,t){return(BD(t)?BA:NW)(e,t)}function NW(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),a=new Array(r),o;for(o=0;o{YE();ND()});function UD(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}var VW=gu(()=>{});function zp(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var KE=gu(()=>{});function VD(e,t){var r={},n={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?r[i]=ix(e[i],t[i]):n[i]=t[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var GW=gu(()=>{YE()});function $6t(e){return function(){return e}}function Q6t(e){return function(t){return e(t)+""}}function GD(e,t){var r=jW.lastIndex=HW.lastIndex=0,n,i,a,o=-1,s=[],l=[];for(e=e+"",t=t+"";(n=jW.exec(e))&&(i=HW.exec(t));)(a=i.index)>r&&(a=t.slice(r,a),s[o]?s[o]+=a:s[++o]=a),(n=n[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,l.push({i:o,x:zp(n,i)})),r=HW.lastIndex;return r{KE();jW=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,HW=new RegExp(jW.source,"g")});function ix(e,t){var r=typeof t,n;return t==null||r==="boolean"?OA(t):(r==="number"?zp:r==="string"?(n=tx(t))?(t=n,ZE):GD:t instanceof tx?ZE:t instanceof Date?UD:BD(t)?BA:Array.isArray(t)?NW:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?VD:zp)(e,t)}var YE=gu(()=>{V2();BW();UW();VW();KE();GW();WW();OW();ND()});function zCe(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var qCe=gu(()=>{});function OCe(e,t){var r=rx(+e,+t);return function(n){var i=r(n);return i-360*Math.floor(i/360)}}var BCe=gu(()=>{G2()});function NCe(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var UCe=gu(()=>{});function XW(e,t,r,n,i,a){var o,s,l;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(l=e*r+t*n)&&(r-=e*l,n-=t*l),(s=Math.sqrt(r*r+n*n))&&(r/=s,n/=s,l/=s),e*n{VCe=180/Math.PI,HD={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1}});function HCe(e){let t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?HD:XW(t.a,t.b,t.c,t.d,t.e,t.f)}function jCe(e){return e==null?HD:(jD||(jD=document.createElementNS("http://www.w3.org/2000/svg","g")),jD.setAttribute("transform",e),(e=jD.transform.baseVal.consolidate())?(e=e.matrix,XW(e.a,e.b,e.c,e.d,e.e,e.f)):HD)}var jD,WCe=gu(()=>{GCe()});function XCe(e,t,r,n){function i(u){return u.length?u.pop()+" ":""}function a(u,c,f,h,d,v){if(u!==f||c!==h){var m=d.push("translate(",null,t,null,r);v.push({i:m-4,x:zp(u,f)},{i:m-2,x:zp(c,h)})}else(f||h)&&d.push("translate("+f+t+h+r)}function o(u,c,f,h){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),h.push({i:f.push(i(f)+"rotate(",null,n)-2,x:zp(u,c)})):c&&f.push(i(f)+"rotate("+c+n)}function s(u,c,f,h){u!==c?h.push({i:f.push(i(f)+"skewX(",null,n)-2,x:zp(u,c)}):c&&f.push(i(f)+"skewX("+c+n)}function l(u,c,f,h,d,v){if(u!==f||c!==h){var m=d.push(i(d)+"scale(",null,",",null,")");v.push({i:m-4,x:zp(u,f)},{i:m-2,x:zp(c,h)})}else(f!==1||h!==1)&&d.push(i(d)+"scale("+f+","+h+")")}return function(u,c){var f=[],h=[];return u=e(u),c=e(c),a(u.translateX,u.translateY,c.translateX,c.translateY,f,h),o(u.rotate,c.rotate,f,h),s(u.skewX,c.skewX,f,h),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,f,h),u=c=null,function(d){for(var v=-1,m=h.length,b;++v{KE();WCe();ZCe=XCe(HCe,"px, ","px)","deg)"),YCe=XCe(jCe,", ",")",")")});function JCe(e){return((e=Math.exp(e))+1/e)/2}function tLt(e){return((e=Math.exp(e))-1/e)/2}function rLt(e){return((e=Math.exp(2*e))-1)/(e+1)}var eLt,$Ce,QCe=gu(()=>{eLt=1e-12;$Ce=function e(t,r,n){function i(a,o){var s=a[0],l=a[1],u=a[2],c=o[0],f=o[1],h=o[2],d=c-s,v=f-l,m=d*d+v*v,b,p;if(m{V2();G2();t6e=e6e(rx),r6e=e6e($f)});function ZW(e,t){var r=$f((e=zA(e)).l,(t=zA(t)).l),n=$f(e.a,t.a),i=$f(e.b,t.b),a=$f(e.opacity,t.opacity);return function(o){return e.l=r(o),e.a=n(o),e.b=i(o),e.opacity=a(o),e+""}}var n6e=gu(()=>{V2();G2()});function a6e(e){return function(t,r){var n=e((t=WE(t)).h,(r=WE(r)).h),i=$f(t.c,r.c),a=$f(t.l,r.l),o=$f(t.opacity,r.opacity);return function(s){return t.h=n(s),t.c=i(s),t.l=a(s),t.opacity=o(s),t+""}}}var o6e,s6e,l6e=gu(()=>{V2();G2();o6e=a6e(rx),s6e=a6e($f)});function u6e(e){return function t(r){r=+r;function n(i,a){var o=e((i=qA(i)).h,(a=qA(a)).h),s=$f(i.s,a.s),l=$f(i.l,a.l),u=$f(i.opacity,a.opacity);return function(c){return i.h=o(c),i.s=s(c),i.l=l(Math.pow(c,r)),i.opacity=u(c),i+""}}return n.gamma=t,n}(1)}var c6e,f6e,h6e=gu(()=>{V2();G2();c6e=u6e(rx),f6e=u6e($f)});function YW(e,t){t===void 0&&(t=e,e=ix);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r{YE()});function v6e(e,t){for(var r=new Array(t),n=0;n{});var H2={};yee(H2,{interpolate:()=>ix,interpolateArray:()=>FCe,interpolateBasis:()=>zD,interpolateBasisClosed:()=>OD,interpolateCubehelix:()=>c6e,interpolateCubehelixLong:()=>f6e,interpolateDate:()=>UD,interpolateDiscrete:()=>zCe,interpolateHcl:()=>o6e,interpolateHclLong:()=>s6e,interpolateHsl:()=>t6e,interpolateHslLong:()=>r6e,interpolateHue:()=>OCe,interpolateLab:()=>ZW,interpolateNumber:()=>zp,interpolateNumberArray:()=>BA,interpolateObject:()=>VD,interpolateRgb:()=>ZE,interpolateRgbBasis:()=>RCe,interpolateRgbBasisClosed:()=>DCe,interpolateRound:()=>NCe,interpolateString:()=>GD,interpolateTransformCss:()=>ZCe,interpolateTransformSvg:()=>YCe,interpolateZoom:()=>$Ce,piecewise:()=>YW,quantize:()=>v6e});var j2=gu(()=>{YE();UW();qD();qW();VW();qCe();BCe();KE();ND();GW();UCe();WW();KCe();QCe();BW();i6e();n6e();l6e();h6e();d6e();p6e()});var WD=ye((m0r,g6e)=>{"use strict";var iLt=So(),nLt=ka();g6e.exports=function(t,r,n,i,a){var o=r.data.data,s=o.i,l=a||o.color;if(s>=0){r.i=o.i;var u=n.marker;u.pattern?(!u.colors||!u.pattern.shape)&&(u.color=l,r.color=l):(u.color=l,r.color=l),iLt.pointStyle(t,n,i,r)}else nLt.fill(t,l)}});var KW=ye((y0r,b6e)=>{"use strict";var m6e=qa(),y6e=ka(),_6e=Pr(),aLt=bv().resizeText,oLt=WD();function sLt(e){var t=e._fullLayout._sunburstlayer.selectAll(".trace");aLt(e,t,"sunburst"),t.each(function(r){var n=m6e.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){m6e.select(this).call(x6e,o,a,e)})})}function x6e(e,t,r,n){var i=t.data.data,a=!t.children,o=i.i,s=_6e.castOption(r,o,"marker.line.color")||y6e.defaultLine,l=_6e.castOption(r,o,"marker.line.width")||0;e.call(oLt,t,r,n).style("stroke-width",l).call(y6e.stroke,s).style("opacity",a?r.leaf.opacity:null)}b6e.exports={style:sLt,styleOne:x6e}});var i1=ye(Bs=>{"use strict";var W2=Pr(),lLt=ka(),uLt=Eg(),w6e=g_();Bs.findEntryWithLevel=function(e,t){var r;return t&&e.eachAfter(function(n){if(Bs.getPtId(n)===t)return r=n.copy()}),r||e};Bs.findEntryWithChild=function(e,t){var r;return e.eachAfter(function(n){for(var i=n.children||[],a=0;a0)};Bs.getMaxDepth=function(e){return e.maxdepth>=0?e.maxdepth:1/0};Bs.isHeader=function(e,t){return!(Bs.isLeaf(e)||e.depth===t._maxDepth-1)};function T6e(e){return e.data.data.pid}Bs.getParent=function(e,t){return Bs.findEntryWithLevel(e,T6e(t))};Bs.listPath=function(e,t){var r=e.parent;if(!r)return[];var n=t?[r.data[t]]:[r];return Bs.listPath(r,t).concat(n)};Bs.getPath=function(e){return Bs.listPath(e,"label").join("/")+"/"};Bs.formatValue=w6e.formatPieValue;Bs.formatPercent=function(e,t){var r=W2.formatPercent(e,0);return r==="0%"&&(r=w6e.formatPiePercent(e,t)),r}});var QE=ye((x0r,M6e)=>{"use strict";var NA=qa(),A6e=Oa(),hLt=ip().appendArrayPointValue,JE=ef(),S6e=Pr(),dLt=L3(),id=i1(),vLt=g_(),pLt=vLt.formatPieValue;M6e.exports=function(t,r,n,i,a){var o=i[0],s=o.trace,l=o.hierarchy,u=s.type==="sunburst",c=s.type==="treemap"||s.type==="icicle";"_hasHoverLabel"in s||(s._hasHoverLabel=!1),"_hasHoverEvent"in s||(s._hasHoverEvent=!1);var f=function(v){var m=n._fullLayout;if(!(n._dragging||m.hovermode===!1)){var b=n._fullData[s.index],p=v.data.data,k=p.i,M=id.isHierarchyRoot(v),T=id.getParent(l,v),L=id.getValue(v),x=function(Ee){return S6e.castOption(b,k,Ee)},C=x("hovertemplate"),S=JE.castHoverinfo(b,m,k),g=m.separators,P;if(C||S&&S!=="none"&&S!=="skip"){var E,z;u&&(E=o.cx+v.pxmid[0]*(1-v.rInscribed),z=o.cy+v.pxmid[1]*(1-v.rInscribed)),c&&(E=v._hoverX,z=v._hoverY);var q={},V=[],G=[],Z=function(Ee){return V.indexOf(Ee)!==-1};S&&(V=S==="all"?b._module.attributes.hoverinfo.flags:S.split("+")),q.label=p.label,Z("label")&&q.label&&G.push(q.label),p.hasOwnProperty("v")&&(q.value=p.v,q.valueLabel=pLt(q.value,g),Z("value")&&G.push(q.valueLabel)),q.currentPath=v.currentPath=id.getPath(v.data),Z("current path")&&!M&&G.push(q.currentPath);var j,N=[],H=function(){N.indexOf(j)===-1&&(G.push(j),N.push(j))};q.percentParent=v.percentParent=L/id.getValue(T),q.parent=v.parentString=id.getPtLabel(T),Z("percent parent")&&(j=id.formatPercent(q.percentParent,g)+" of "+q.parent,H()),q.percentEntry=v.percentEntry=L/id.getValue(r),q.entry=v.entry=id.getPtLabel(r),Z("percent entry")&&!M&&!v.onPathbar&&(j=id.formatPercent(q.percentEntry,g)+" of "+q.entry,H()),q.percentRoot=v.percentRoot=L/id.getValue(l),q.root=v.root=id.getPtLabel(l),Z("percent root")&&!M&&(j=id.formatPercent(q.percentRoot,g)+" of "+q.root,H()),q.text=x("hovertext")||x("text"),Z("text")&&(j=q.text,S6e.isValidTextValue(j)&&G.push(j)),P=[$E(v,b,a.eventDataKeys)];var ie={trace:b,y:z,_x0:v._x0,_x1:v._x1,_y0:v._y0,_y1:v._y1,text:G.join("
"),name:C||Z("name")?b.name:void 0,color:x("hoverlabel.bgcolor")||p.color,borderColor:x("hoverlabel.bordercolor"),fontFamily:x("hoverlabel.font.family"),fontSize:x("hoverlabel.font.size"),fontColor:x("hoverlabel.font.color"),fontWeight:x("hoverlabel.font.weight"),fontStyle:x("hoverlabel.font.style"),fontVariant:x("hoverlabel.font.variant"),nameLength:x("hoverlabel.namelength"),textAlign:x("hoverlabel.align"),hovertemplate:C,hovertemplateLabels:q,eventData:P};u&&(ie.x0=E-v.rInscribed*v.rpx1,ie.x1=E+v.rInscribed*v.rpx1,ie.idealAlign=v.pxmid[0]<0?"left":"right"),c&&(ie.x=E,ie.idealAlign=E<0?"left":"right");var ae=[];JE.loneHover(ie,{container:m._hoverlayer.node(),outerContainer:m._paper.node(),gd:n,inOut_bbox:ae}),P[0].bbox=ae[0],s._hasHoverLabel=!0}if(c){var _e=t.select("path.surface");a.styleOne(_e,v,b,n,{hovered:!0})}s._hasHoverEvent=!0,n.emit("plotly_hover",{points:P||[$E(v,b,a.eventDataKeys)],event:NA.event})}},h=function(v){var m=n._fullLayout,b=n._fullData[s.index],p=NA.select(this).datum();if(s._hasHoverEvent&&(v.originalEvent=NA.event,n.emit("plotly_unhover",{points:[$E(p,b,a.eventDataKeys)],event:NA.event}),s._hasHoverEvent=!1),s._hasHoverLabel&&(JE.loneUnhover(m._hoverlayer.node()),s._hasHoverLabel=!1),c){var k=t.select("path.surface");a.styleOne(k,p,b,n,{hovered:!1})}},d=function(v){var m=n._fullLayout,b=n._fullData[s.index],p=u&&(id.isHierarchyRoot(v)||id.isLeaf(v)),k=id.getPtId(v),M=id.isEntry(v)?id.findEntryWithChild(l,k):id.findEntryWithLevel(l,k),T=id.getPtId(M),L={points:[$E(v,b,a.eventDataKeys)],event:NA.event};p||(L.nextLevel=T);var x=dLt.triggerHandler(n,"plotly_"+s.type+"click",L);if(x!==!1&&m.hovermode&&(n._hoverdata=[$E(v,b,a.eventDataKeys)],JE.click(n,NA.event)),!p&&x!==!1&&!n._dragging&&!n._transitioning){A6e.call("_storeDirectGUIEdit",b,m._tracePreGUI[b.uid],{level:b.level});var C={data:[{level:T}],traces:[s.index]},S={frame:{redraw:!1,duration:a.transitionTime},transition:{duration:a.transitionTime,easing:a.transitionEasing},mode:"immediate",fromcurrent:!0};JE.loneUnhover(m._hoverlayer.node()),A6e.call("animate",n,C,S)}};t.on("mouseover",f),t.on("mouseout",h),t.on("click",d)};function $E(e,t,r){for(var n=e.data.data,i={curveNumber:t.index,pointNumber:n.i,data:t._input,fullData:t},a=0;a{"use strict";var ek=qa(),gLt=NE(),Jg=(j2(),gb(H2)).interpolate,E6e=So(),Av=Pr(),mLt=Zl(),P6e=bv(),k6e=P6e.recordMinTextSize,yLt=P6e.clearMinTextSize,I6e=SD(),_Lt=g_().getRotationAngle,xLt=I6e.computeTransform,bLt=I6e.transformInsideText,wLt=KW().styleOne,TLt=V0().resizeText,ALt=QE(),JW=MW(),Rl=i1();XD.plot=function(e,t,r,n){var i=e._fullLayout,a=i._sunburstlayer,o,s,l=!r,u=!i.uniformtext.mode&&Rl.hasTransition(r);if(yLt("sunburst",i),o=a.selectAll("g.trace.sunburst").data(t,function(f){return f[0].trace.uid}),o.enter().append("g").classed("trace",!0).classed("sunburst",!0).attr("stroke-linejoin","round"),o.order(),u){n&&(s=n());var c=ek.transition().duration(r.duration).ease(r.easing).each("end",function(){s&&s()}).each("interrupt",function(){s&&s()});c.each(function(){a.selectAll("g.trace").each(function(f){C6e(e,f,this,r)})})}else o.each(function(f){C6e(e,f,this,r)}),i.uniformtext.mode&&TLt(e,i._sunburstlayer.selectAll(".trace"),"sunburst");l&&o.exit().remove()};function C6e(e,t,r,n){var i=e._context.staticPlot,a=e._fullLayout,o=!a.uniformtext.mode&&Rl.hasTransition(n),s=ek.select(r),l=s.selectAll("g.slice"),u=t[0],c=u.trace,f=u.hierarchy,h=Rl.findEntryWithLevel(f,c.level),d=Rl.getMaxDepth(c),v=a._size,m=c.domain,b=v.w*(m.x[1]-m.x[0]),p=v.h*(m.y[1]-m.y[0]),k=.5*Math.min(b,p),M=u.cx=v.l+v.w*(m.x[1]+m.x[0])/2,T=u.cy=v.t+v.h*(1-m.y[0])-p/2;if(!h)return l.remove();var L=null,x={};o&&l.each(function(ge){x[Rl.getPtId(ge)]={rpx0:ge.rpx0,rpx1:ge.rpx1,x0:ge.x0,x1:ge.x1,transform:ge.transform},!L&&Rl.isEntry(ge)&&(L=ge)});var C=SLt(h).descendants(),S=h.height+1,g=0,P=d;u.hasMultipleRoots&&Rl.isHierarchyRoot(h)&&(C=C.slice(1),S-=1,g=1,P+=1),C=C.filter(function(ge){return ge.y1<=P});var E=_Lt(c.rotation);E&&C.forEach(function(ge){ge.x0+=E,ge.x1+=E});var z=Math.min(S,d),q=function(ge){return(ge-g)/z*k},V=function(ge,re){return[ge*Math.cos(re),-ge*Math.sin(re)]},G=function(ge){return Av.pathAnnulus(ge.rpx0,ge.rpx1,ge.x0,ge.x1,M,T)},Z=function(ge){return M+L6e(ge)[0]*(ge.transform.rCenter||0)+(ge.transform.x||0)},j=function(ge){return T+L6e(ge)[1]*(ge.transform.rCenter||0)+(ge.transform.y||0)};l=l.data(C,Rl.getPtId),l.enter().append("g").classed("slice",!0),o?l.exit().transition().each(function(){var ge=ek.select(this),re=ge.select("path.surface");re.transition().attrTween("d",function(ke){var be=ae(ke);return function(Be){return G(be(Be))}});var Se=ge.select("g.slicetext");Se.attr("opacity",0)}).remove():l.exit().remove(),l.order();var N=null;if(o&&L){var H=Rl.getPtId(L);l.each(function(ge){N===null&&Rl.getPtId(ge)===H&&(N=ge.x1)})}var ie=l;o&&(ie=ie.transition().each("end",function(){var ge=ek.select(this);Rl.setSliceCursor(ge,e,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:!1})})),ie.each(function(ge){var re=ek.select(this),Se=Av.ensureSingle(re,"path","surface",function(Pe){Pe.style("pointer-events",i?"none":"all")});ge.rpx0=q(ge.y0),ge.rpx1=q(ge.y1),ge.xmid=(ge.x0+ge.x1)/2,ge.pxmid=V(ge.rpx1,ge.xmid),ge.midangle=-(ge.xmid-Math.PI/2),ge.startangle=-(ge.x0-Math.PI/2),ge.stopangle=-(ge.x1-Math.PI/2),ge.halfangle=.5*Math.min(Av.angleDelta(ge.x0,ge.x1)||Math.PI,Math.PI),ge.ring=1-ge.rpx0/ge.rpx1,ge.rInscribed=MLt(ge,c),o?Se.transition().attrTween("d",function(Pe){var ce=_e(Pe);return function(He){return G(ce(He))}}):Se.attr("d",G),re.call(ALt,h,e,t,{eventDataKeys:JW.eventDataKeys,transitionTime:JW.CLICK_TRANSITION_TIME,transitionEasing:JW.CLICK_TRANSITION_EASING}).call(Rl.setSliceCursor,e,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:e._transitioning}),Se.call(wLt,ge,c,e);var ke=Av.ensureSingle(re,"g","slicetext"),be=Av.ensureSingle(ke,"text","",function(Pe){Pe.attr("data-notex",1)}),Be=Av.ensureUniformFontSize(e,Rl.determineTextFont(c,ge,a.font));be.text(XD.formatSliceLabel(ge,h,c,t,a)).classed("slicetext",!0).attr("text-anchor","middle").call(E6e.font,Be).call(mLt.convertToTspans,e);var Le=E6e.bBox(be.node());ge.transform=bLt(Le,ge,u),ge.transform.targetX=Z(ge),ge.transform.targetY=j(ge);var me=function(Pe,ce){var He=Pe.transform;return xLt(He,ce),He.fontSize=Be.size,k6e(c.type,He,a),Av.getTextTransform(He)};o?be.transition().attrTween("transform",function(Pe){var ce=Ee(Pe);return function(He){return me(ce(He),Le)}}):be.attr("transform",me(ge,Le))});function ae(ge){var re=Rl.getPtId(ge),Se=x[re],ke=x[Rl.getPtId(h)],be;if(ke){var Be=(ge.x1>ke.x1?2*Math.PI:0)+E;be=ge.rpx1N?2*Math.PI:0)+E;Se={x0:be,x1:be}}else Se={rpx0:k,rpx1:k},Av.extendFlat(Se,Ce(ge));else Se={rpx0:0,rpx1:0};else Se={x0:E,x1:E};return Jg(Se,ke)}function Ee(ge){var re=x[Rl.getPtId(ge)],Se,ke=ge.transform;if(re)Se=re;else if(Se={rpx1:ge.rpx1,transform:{textPosAngle:ke.textPosAngle,scale:0,rotate:ke.rotate,rCenter:ke.rCenter,x:ke.x,y:ke.y}},L)if(ge.parent)if(N){var be=ge.x1>N?2*Math.PI:0;Se.x0=Se.x1=be}else Av.extendFlat(Se,Ce(ge));else Se.x0=Se.x1=E;else Se.x0=Se.x1=E;var Be=Jg(Se.transform.textPosAngle,ge.transform.textPosAngle),Le=Jg(Se.rpx1,ge.rpx1),me=Jg(Se.x0,ge.x0),Pe=Jg(Se.x1,ge.x1),ce=Jg(Se.transform.scale,ke.scale),He=Jg(Se.transform.rotate,ke.rotate),lt=ke.rCenter===0?3:Se.transform.rCenter===0?1/3:1,mt=Jg(Se.transform.rCenter,ke.rCenter),Ht=function(at){return mt(Math.pow(at,lt))};return function(at){var ct=Le(at),ar=me(at),Vt=Pe(at),rr=Ht(at),tt=V(ct,(ar+Vt)/2),je=Be(at),Ue={pxmid:tt,rpx1:ct,transform:{textPosAngle:je,rCenter:rr,x:ke.x,y:ke.y}};return k6e(c.type,ke,a),{transform:{targetX:Z(Ue),targetY:j(Ue),scale:ce(at),rotate:He(at),rCenter:rr}}}}function Ce(ge){var re=ge.parent,Se=x[Rl.getPtId(re)],ke={};if(Se){var be=re.children,Be=be.indexOf(ge),Le=be.length,me=Jg(Se.x0,Se.x1);ke.x0=me(Be/Le),ke.x1=me(Be/Le)}else ke.x0=ke.x1=0;return ke}}function SLt(e){return gLt.partition().size([2*Math.PI,e.height+1])(e)}XD.formatSliceLabel=function(e,t,r,n,i){var a=r.texttemplate,o=r.textinfo;if(!a&&(!o||o==="none"))return"";var s=i.separators,l=n[0],u=e.data.data,c=l.hierarchy,f=Rl.isHierarchyRoot(e),h=Rl.getParent(c,e),d=Rl.getValue(e);if(!a){var v=o.split("+"),m=function(g){return v.indexOf(g)!==-1},b=[],p;if(m("label")&&u.label&&b.push(u.label),u.hasOwnProperty("v")&&m("value")&&b.push(Rl.formatValue(u.v,s)),!f){m("current path")&&b.push(Rl.getPath(e.data));var k=0;m("percent parent")&&k++,m("percent entry")&&k++,m("percent root")&&k++;var M=k>1;if(k){var T,L=function(g){p=Rl.formatPercent(T,s),M&&(p+=" of "+g),b.push(p)};m("percent parent")&&!f&&(T=d/Rl.getValue(h),L("parent")),m("percent entry")&&(T=d/Rl.getValue(t),L("entry")),m("percent root")&&(T=d/Rl.getValue(c),L("root"))}}return m("text")&&(p=Av.castOption(r,u.i,"text"),Av.isValidTextValue(p)&&b.push(p)),b.join("
")}var x=Av.castOption(r,u.i,"texttemplate");if(!x)return"";var C={};u.label&&(C.label=u.label),u.hasOwnProperty("v")&&(C.value=u.v,C.valueLabel=Rl.formatValue(u.v,s)),C.currentPath=Rl.getPath(e.data),f||(C.percentParent=d/Rl.getValue(h),C.percentParentLabel=Rl.formatPercent(C.percentParent,s),C.parent=Rl.getPtLabel(h)),C.percentEntry=d/Rl.getValue(t),C.percentEntryLabel=Rl.formatPercent(C.percentEntry,s),C.entry=Rl.getPtLabel(t),C.percentRoot=d/Rl.getValue(c),C.percentRootLabel=Rl.formatPercent(C.percentRoot,s),C.root=Rl.getPtLabel(c),u.hasOwnProperty("color")&&(C.color=u.color);var S=Av.castOption(r,u.i,"text");return(Av.isValidTextValue(S)||S==="")&&(C.text=S),C.customdata=Av.castOption(r,u.i,"customdata"),Av.texttemplateString({data:[C,r._meta],fallback:r.texttemplatefallback,labels:C,locale:i._d3locale,template:x})};function MLt(e){return e.rpx0===0&&Av.isFullCircle([e.x0,e.x1])?1:Math.max(0,Math.min(1/(1+1/Math.sin(e.halfangle)),e.ring/2))}function L6e(e){return ELt(e.rpx1,e.transform.textPosAngle)}function ELt(e,t){return[e*Math.sin(t),-e*Math.cos(t)]}});var D6e=ye((w0r,R6e)=>{"use strict";R6e.exports={moduleType:"trace",name:"sunburst",basePlotModule:Xke(),categories:[],animatable:!0,attributes:BE(),layoutAttributes:EW(),supplyDefaults:rCe(),supplyLayoutDefaults:nCe(),calc:VE().calc,crossTraceCalc:VE().crossTraceCalc,plot:ZD().plot,style:KW().style,colorbar:Qd(),meta:{}}});var z6e=ye((T0r,F6e)=>{"use strict";F6e.exports=D6e()});var O6e=ye(UA=>{"use strict";var q6e=Mc();UA.name="treemap";UA.plot=function(e,t,r,n){q6e.plotBasePlot(UA.name,e,t,r,n)};UA.clean=function(e,t,r,n){q6e.cleanBasePlot(UA.name,e,t,r,n)}});var X2=ye((S0r,B6e)=>{"use strict";B6e.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"poly",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"],gapWithPathbar:1}});var YD=ye((M0r,V6e)=>{"use strict";var{hovertemplateAttrs:kLt,texttemplateAttrs:CLt,templatefallbackAttrs:N6e}=Ll(),LLt=Tu(),PLt=Cc().attributes,Z2=z2(),tg=BE(),U6e=X2(),$W=Ao().extendFlat,ILt=Pd().pattern;V6e.exports={labels:tg.labels,parents:tg.parents,values:tg.values,branchvalues:tg.branchvalues,count:tg.count,level:tg.level,maxdepth:tg.maxdepth,tiling:{packing:{valType:"enumerated",values:["squarify","binary","dice","slice","slice-dice","dice-slice"],dflt:"squarify",editType:"plot"},squarifyratio:{valType:"number",min:1,dflt:1,editType:"plot"},flip:{valType:"flaglist",flags:["x","y"],dflt:"",editType:"plot"},pad:{valType:"number",min:0,dflt:3,editType:"plot"},editType:"calc"},marker:$W({pad:{t:{valType:"number",min:0,editType:"plot"},l:{valType:"number",min:0,editType:"plot"},r:{valType:"number",min:0,editType:"plot"},b:{valType:"number",min:0,editType:"plot"},editType:"calc"},colors:tg.marker.colors,pattern:ILt,depthfade:{valType:"enumerated",values:[!0,!1,"reversed"],editType:"style"},line:tg.marker.line,cornerradius:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},LLt("marker",{colorAttr:"colors",anim:!1})),pathbar:{visible:{valType:"boolean",dflt:!0,editType:"plot"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},edgeshape:{valType:"enumerated",values:[">","<","|","/","\\"],dflt:">",editType:"plot"},thickness:{valType:"number",min:12,editType:"plot"},textfont:$W({},Z2.textfont,{}),editType:"calc"},text:Z2.text,textinfo:tg.textinfo,texttemplate:CLt({editType:"plot"},{keys:U6e.eventDataKeys.concat(["label","value"])}),texttemplatefallback:N6e({editType:"plot"}),hovertext:Z2.hovertext,hoverinfo:tg.hoverinfo,hovertemplate:kLt({},{keys:U6e.eventDataKeys}),hovertemplatefallback:N6e(),textfont:Z2.textfont,insidetextfont:Z2.insidetextfont,outsidetextfont:$W({},Z2.outsidetextfont,{}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"top left",editType:"plot"},sort:Z2.sort,root:tg.root,domain:PLt({name:"treemap",trace:!0,editType:"calc"})}});var QW=ye((E0r,G6e)=>{"use strict";G6e.exports={treemapcolorway:{valType:"colorlist",editType:"calc"},extendtreemapcolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var X6e=ye((k0r,W6e)=>{"use strict";var H6e=Pr(),RLt=YD(),DLt=ka(),FLt=Cc().defaults,zLt=i0().handleText,qLt=A_().TEXTPAD,OLt=q2().handleMarkerDefaults,j6e=tc(),BLt=j6e.hasColorscale,NLt=j6e.handleDefaults;W6e.exports=function(t,r,n,i){function a(b,p){return H6e.coerce(t,r,RLt,b,p)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth");var u=a("tiling.packing");u==="squarify"&&a("tiling.squarifyratio"),a("tiling.flip"),a("tiling.pad");var c=a("text");a("texttemplate"),a("texttemplatefallback"),r.texttemplate||a("textinfo",H6e.isArrayOrTypedArray(c)?"text+label":"label"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback");var f=a("pathbar.visible"),h="auto";zLt(t,r,i,a,h,{hasPathbar:f,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("textposition");var d=r.textposition.indexOf("bottom")!==-1;OLt(t,r,i,a);var v=r._hasColorscale=BLt(t,"marker","colors")||(t.marker||{}).coloraxis;v?NLt(t,r,i,a,{prefix:"marker.",cLetter:"c"}):a("marker.depthfade",!(r.marker.colors||[]).length);var m=r.textfont.size*2;a("marker.pad.t",d?m/4:m),a("marker.pad.l",m/4),a("marker.pad.r",m/4),a("marker.pad.b",d?m:m/4),a("marker.cornerradius"),r._hovered={marker:{line:{width:2,color:DLt.contrast(i.paper_bgcolor)}}},f&&(a("pathbar.thickness",r.pathbar.textfont.size+2*qLt),a("pathbar.side"),a("pathbar.edgeshape")),a("sort"),a("root.color"),FLt(r,i,a),r._length=null}});var Y6e=ye((C0r,Z6e)=>{"use strict";var ULt=Pr(),VLt=QW();Z6e.exports=function(t,r){function n(i,a){return ULt.coerce(t,r,VLt,i,a)}n("treemapcolorway",r.colorway),n("extendtreemapcolors")}});var tX=ye(eX=>{"use strict";var K6e=VE();eX.calc=function(e,t){return K6e.calc(e,t)};eX.crossTraceCalc=function(e){return K6e._runCrossTraceCalc("treemap",e)}});var rX=ye((P0r,J6e)=>{"use strict";J6e.exports=function e(t,r,n){var i;n.swapXY&&(i=t.x0,t.x0=t.y0,t.y0=i,i=t.x1,t.x1=t.y1,t.y1=i),n.flipX&&(i=t.x0,t.x0=r[0]-t.x1,t.x1=r[0]-i),n.flipY&&(i=t.y0,t.y0=r[1]-t.y1,t.y1=r[1]-i);var a=t.children;if(a)for(var o=0;o{"use strict";var VA=NE(),GLt=rX();$6e.exports=function(t,r,n){var i=n.flipX,a=n.flipY,o=n.packing==="dice-slice",s=n.pad[a?"bottom":"top"],l=n.pad[i?"right":"left"],u=n.pad[i?"left":"right"],c=n.pad[a?"top":"bottom"],f;o&&(f=l,l=s,s=f,f=u,u=c,c=f);var h=VA.treemap().tile(HLt(n.packing,n.squarifyratio)).paddingInner(n.pad.inner).paddingLeft(l).paddingRight(u).paddingTop(s).paddingBottom(c).size(o?[r[1],r[0]]:r)(t);return(o||i||a)&&GLt(h,r,{swapXY:o,flipX:i,flipY:a}),h};function HLt(e,t){switch(e){case"squarify":return VA.treemapSquarify.ratio(t);case"binary":return VA.treemapBinary;case"dice":return VA.treemapDice;case"slice":return VA.treemapSlice;default:return VA.treemapSliceDice}}});var KD=ye((R0r,rLe)=>{"use strict";var Q6e=qa(),GA=ka(),eLe=Pr(),nX=i1(),jLt=bv().resizeText,WLt=WD();function XLt(e){var t=e._fullLayout._treemaplayer.selectAll(".trace");jLt(e,t,"treemap"),t.each(function(r){var n=Q6e.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){Q6e.select(this).call(tLe,o,a,e,{hovered:!1})})})}function tLe(e,t,r,n,i){var a=(i||{}).hovered,o=t.data.data,s=o.i,l,u,c=o.color,f=nX.isHierarchyRoot(t),h=1;if(a)l=r._hovered.marker.line.color,u=r._hovered.marker.line.width;else if(f&&c===r.root.color)h=100,l="rgba(0,0,0,0)",u=0;else if(l=eLe.castOption(r,s,"marker.line.color")||GA.defaultLine,u=eLe.castOption(r,s,"marker.line.width")||0,!r._hasColorscale&&!t.onPathbar){var d=r.marker.depthfade;if(d){var v=GA.combine(GA.addOpacity(r._backgroundColor,.75),c),m;if(d===!0){var b=nX.getMaxDepth(r);isFinite(b)?nX.isLeaf(t)?m=0:m=r._maxVisibleLayers-(t.data.depth-r._entryDepth):m=t.data.height+1}else m=t.data.depth-r._entryDepth,r._atRootLevel||m++;if(m>0)for(var p=0;p{"use strict";var iLe=qa(),JD=Pr(),nLe=So(),ZLt=Zl(),YLt=iX(),aLe=KD().styleOne,aX=X2(),HA=i1(),KLt=QE(),oX=!0;oLe.exports=function(t,r,n,i,a){var o=a.barDifY,s=a.width,l=a.height,u=a.viewX,c=a.viewY,f=a.pathSlice,h=a.toMoveInsideSlice,d=a.strTransform,v=a.hasTransition,m=a.handleSlicesExit,b=a.makeUpdateSliceInterpolator,p=a.makeUpdateTextInterpolator,k={},M=t._context.staticPlot,T=t._fullLayout,L=r[0],x=L.trace,C=L.hierarchy,S=s/x._entryDepth,g=HA.listPath(n.data,"id"),P=YLt(C.copy(),[s,l],{packing:"dice",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();P=P.filter(function(z){var q=g.indexOf(z.data.id);return q===-1?!1:(z.x0=S*q,z.x1=S*(q+1),z.y0=o,z.y1=o+l,z.onPathbar=!0,!0)}),P.reverse(),i=i.data(P,HA.getPtId),i.enter().append("g").classed("pathbar",!0),m(i,oX,k,[s,l],f),i.order();var E=i;v&&(E=E.transition().each("end",function(){var z=iLe.select(this);HA.setSliceCursor(z,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})})),E.each(function(z){z._x0=u(z.x0),z._x1=u(z.x1),z._y0=c(z.y0),z._y1=c(z.y1),z._hoverX=u(z.x1-Math.min(s,l)/2),z._hoverY=c(z.y1-l/2);var q=iLe.select(this),V=JD.ensureSingle(q,"path","surface",function(N){N.style("pointer-events",M?"none":"all")});v?V.transition().attrTween("d",function(N){var H=b(N,oX,k,[s,l]);return function(ie){return f(H(ie))}}):V.attr("d",f),q.call(KLt,n,t,r,{styleOne:aLe,eventDataKeys:aX.eventDataKeys,transitionTime:aX.CLICK_TRANSITION_TIME,transitionEasing:aX.CLICK_TRANSITION_EASING}).call(HA.setSliceCursor,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:t._transitioning}),V.call(aLe,z,x,t,{hovered:!1}),z._text=(HA.getPtLabel(z)||"").split("
").join(" ")||"";var G=JD.ensureSingle(q,"g","slicetext"),Z=JD.ensureSingle(G,"text","",function(N){N.attr("data-notex",1)}),j=JD.ensureUniformFontSize(t,HA.determineTextFont(x,z,T.font,{onPathbar:!0}));Z.text(z._text||" ").classed("slicetext",!0).attr("text-anchor","start").call(nLe.font,j).call(ZLt.convertToTspans,t),z.textBB=nLe.bBox(Z.node()),z.transform=h(z,{fontSize:j.size,onPathbar:!0}),z.transform.fontSize=j.size,v?Z.transition().attrTween("transform",function(N){var H=p(N,oX,k,[s,l]);return function(ie){return d(H(ie))}}):Z.attr("transform",d(z))})}});var fLe=ye((F0r,cLe)=>{"use strict";var lLe=qa(),sX=(j2(),gb(H2)).interpolate,nx=i1(),tk=Pr(),uLe=A_().TEXTPAD,JLt=p2(),$Lt=JLt.toMoveInsideBar,QLt=bv(),lX=QLt.recordMinTextSize,ePt=X2(),tPt=sLe();function Y2(e){return nx.isHierarchyRoot(e)?"":nx.getPtId(e)}cLe.exports=function(t,r,n,i,a){var o=t._fullLayout,s=r[0],l=s.trace,u=l.type,c=u==="icicle",f=s.hierarchy,h=nx.findEntryWithLevel(f,l.level),d=lLe.select(n),v=d.selectAll("g.pathbar"),m=d.selectAll("g.slice");if(!h){v.remove(),m.remove();return}var b=nx.isHierarchyRoot(h),p=!o.uniformtext.mode&&nx.hasTransition(i),k=nx.getMaxDepth(l),M=function(Ae){return Ae.data.depth-h.data.depth-1?C+P:-(g+P):0,z={x0:S,x1:S,y0:E,y1:E+g},q=function(Ae,rt,St){var Tt=l.tiling.pad,dt=function(or){return or-Tt<=rt.x0},Et=function(or){return or+Tt>=rt.x1},pt=function(or){return or-Tt<=rt.y0},jt=function(or){return or+Tt>=rt.y1};return Ae.x0===rt.x0&&Ae.x1===rt.x1&&Ae.y0===rt.y0&&Ae.y1===rt.y1?{x0:Ae.x0,x1:Ae.x1,y0:Ae.y0,y1:Ae.y1}:{x0:dt(Ae.x0-Tt)?0:Et(Ae.x0-Tt)?St[0]:Ae.x0,x1:dt(Ae.x1+Tt)?0:Et(Ae.x1+Tt)?St[0]:Ae.x1,y0:pt(Ae.y0-Tt)?0:jt(Ae.y0-Tt)?St[1]:Ae.y0,y1:pt(Ae.y1+Tt)?0:jt(Ae.y1+Tt)?St[1]:Ae.y1}},V=null,G={},Z={},j=null,N=function(Ae,rt){return rt?G[Y2(Ae)]:Z[Y2(Ae)]},H=function(Ae,rt,St,Tt){if(rt)return G[Y2(f)]||z;var dt=Z[l.level]||St;return M(Ae)?q(Ae,dt,Tt):{}};s.hasMultipleRoots&&b&&k++,l._maxDepth=k,l._backgroundColor=o.paper_bgcolor,l._entryDepth=h.data.depth,l._atRootLevel=b;var ie=-x/2+T.l+T.w*(L.x[1]+L.x[0])/2,ae=-C/2+T.t+T.h*(1-(L.y[1]+L.y[0])/2),_e=function(Ae){return ie+Ae},Ee=function(Ae){return ae+Ae},Ce=Ee(0),ge=_e(0),re=function(Ae){return ge+Ae},Se=function(Ae){return Ce+Ae};function ke(Ae,rt){return Ae+","+rt}var be=re(0),Be=function(Ae){Ae.x=Math.max(be,Ae.x)},Le=l.pathbar.edgeshape,me=function(Ae){var rt=re(Math.max(Math.min(Ae.x0,Ae.x0),0)),St=re(Math.min(Math.max(Ae.x1,Ae.x1),S)),Tt=Se(Ae.y0),dt=Se(Ae.y1),Et=g/2,pt={},jt={};pt.x=rt,jt.x=St,pt.y=jt.y=(Tt+dt)/2;var or={x:rt,y:Tt},mr={x:St,y:Tt},Ar={x:St,y:dt},ei={x:rt,y:dt};return Le===">"?(or.x-=Et,mr.x-=Et,Ar.x-=Et,ei.x-=Et):Le==="/"?(Ar.x-=Et,ei.x-=Et,pt.x-=Et/2,jt.x-=Et/2):Le==="\\"?(or.x-=Et,mr.x-=Et,pt.x-=Et/2,jt.x-=Et/2):Le==="<"&&(pt.x-=Et,jt.x-=Et),Be(or),Be(ei),Be(pt),Be(mr),Be(Ar),Be(jt),"M"+ke(or.x,or.y)+"L"+ke(mr.x,mr.y)+"L"+ke(jt.x,jt.y)+"L"+ke(Ar.x,Ar.y)+"L"+ke(ei.x,ei.y)+"L"+ke(pt.x,pt.y)+"Z"},Pe=l[c?"tiling":"marker"].pad,ce=function(Ae){return l.textposition.indexOf(Ae)!==-1},He=ce("top"),lt=ce("left"),mt=ce("right"),Ht=ce("bottom"),at=function(Ae){var rt=_e(Ae.x0),St=_e(Ae.x1),Tt=Ee(Ae.y0),dt=Ee(Ae.y1),Et=St-rt,pt=dt-Tt;if(!Et||!pt)return"";var jt=l.marker.cornerradius||0,or=Math.min(jt,Et/2,pt/2);or&&Ae.data&&Ae.data.data&&Ae.data.data.label&&(He&&(or=Math.min(or,Pe.t)),lt&&(or=Math.min(or,Pe.l)),mt&&(or=Math.min(or,Pe.r)),Ht&&(or=Math.min(or,Pe.b)));var mr=function(Ar,ei){return or?"a"+ke(or,or)+" 0 0 1 "+ke(Ar,ei):""};return"M"+ke(rt,Tt+or)+mr(or,-or)+"L"+ke(St-or,Tt)+mr(or,or)+"L"+ke(St,dt-or)+mr(-or,or)+"L"+ke(rt+or,dt)+mr(-or,-or)+"Z"},ct=function(Ae,rt){var St=Ae.x0,Tt=Ae.x1,dt=Ae.y0,Et=Ae.y1,pt=Ae.textBB,jt=He||rt.isHeader&&!Ht,or=jt?"start":Ht?"end":"middle",mr=ce("right"),Ar=ce("left")||rt.onPathbar,ei=Ar?-1:mr?1:0;if(rt.isHeader){if(St+=(c?Pe:Pe.l)-uLe,Tt-=(c?Pe:Pe.r)-uLe,St>=Tt){var qr=(St+Tt)/2;St=qr,Tt=qr}var jr;Ht?(jr=Et-(c?Pe:Pe.b),dt{"use strict";var rPt=qa(),iPt=i1(),nPt=bv(),aPt=nPt.clearMinTextSize,oPt=V0().resizeText,hLe=fLe();dLe.exports=function(t,r,n,i,a){var o=a.type,s=a.drawDescendants,l=t._fullLayout,u=l["_"+o+"layer"],c,f,h=!n;if(aPt(o,l),c=u.selectAll("g.trace."+o).data(r,function(v){return v[0].trace.uid}),c.enter().append("g").classed("trace",!0).classed(o,!0),c.order(),!l.uniformtext.mode&&iPt.hasTransition(n)){i&&(f=i());var d=rPt.transition().duration(n.duration).ease(n.easing).each("end",function(){f&&f()}).each("interrupt",function(){f&&f()});d.each(function(){u.selectAll("g.trace").each(function(v){hLe(t,v,this,n,s)})})}else c.each(function(v){hLe(t,v,this,n,s)}),l.uniformtext.mode&&oPt(t,u.selectAll(".trace"),o);h&&c.exit().remove()}});var yLe=ye((q0r,mLe)=>{"use strict";var vLe=qa(),$D=Pr(),pLe=So(),sPt=Zl(),lPt=iX(),gLe=KD().styleOne,cX=X2(),ax=i1(),uPt=QE(),cPt=ZD().formatSliceLabel,fX=!1;mLe.exports=function(t,r,n,i,a){var o=a.width,s=a.height,l=a.viewX,u=a.viewY,c=a.pathSlice,f=a.toMoveInsideSlice,h=a.strTransform,d=a.hasTransition,v=a.handleSlicesExit,m=a.makeUpdateSliceInterpolator,b=a.makeUpdateTextInterpolator,p=a.prevEntry,k={},M=t._context.staticPlot,T=t._fullLayout,L=r[0],x=L.trace,C=x.textposition.indexOf("left")!==-1,S=x.textposition.indexOf("right")!==-1,g=x.textposition.indexOf("bottom")!==-1,P=!g&&!x.marker.pad.t||g&&!x.marker.pad.b,E=lPt(n,[o,s],{packing:x.tiling.packing,squarifyratio:x.tiling.squarifyratio,flipX:x.tiling.flip.indexOf("x")>-1,flipY:x.tiling.flip.indexOf("y")>-1,pad:{inner:x.tiling.pad,top:x.marker.pad.t,left:x.marker.pad.l,right:x.marker.pad.r,bottom:x.marker.pad.b}}),z=E.descendants(),q=1/0,V=-1/0;z.forEach(function(H){var ie=H.depth;ie>=x._maxDepth?(H.x0=H.x1=(H.x0+H.x1)/2,H.y0=H.y1=(H.y0+H.y1)/2):(q=Math.min(q,ie),V=Math.max(V,ie))}),i=i.data(z,ax.getPtId),x._maxVisibleLayers=isFinite(V)?V-q+1:0,i.enter().append("g").classed("slice",!0),v(i,fX,k,[o,s],c),i.order();var G=null;if(d&&p){var Z=ax.getPtId(p);i.each(function(H){G===null&&ax.getPtId(H)===Z&&(G={x0:H.x0,x1:H.x1,y0:H.y0,y1:H.y1})})}var j=function(){return G||{x0:0,x1:o,y0:0,y1:s}},N=i;return d&&(N=N.transition().each("end",function(){var H=vLe.select(this);ax.setSliceCursor(H,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),N.each(function(H){var ie=ax.isHeader(H,x);H._x0=l(H.x0),H._x1=l(H.x1),H._y0=u(H.y0),H._y1=u(H.y1),H._hoverX=l(H.x1-x.marker.pad.r),H._hoverY=u(g?H.y1-x.marker.pad.b/2:H.y0+x.marker.pad.t/2);var ae=vLe.select(this),_e=$D.ensureSingle(ae,"path","surface",function(ke){ke.style("pointer-events",M?"none":"all")});d?_e.transition().attrTween("d",function(ke){var be=m(ke,fX,j(),[o,s]);return function(Be){return c(be(Be))}}):_e.attr("d",c),ae.call(uPt,n,t,r,{styleOne:gLe,eventDataKeys:cX.eventDataKeys,transitionTime:cX.CLICK_TRANSITION_TIME,transitionEasing:cX.CLICK_TRANSITION_EASING}).call(ax.setSliceCursor,t,{isTransitioning:t._transitioning}),_e.call(gLe,H,x,t,{hovered:!1}),H.x0===H.x1||H.y0===H.y1?H._text="":ie?H._text=P?"":ax.getPtLabel(H)||"":H._text=cPt(H,n,x,r,T)||"";var Ee=$D.ensureSingle(ae,"g","slicetext"),Ce=$D.ensureSingle(Ee,"text","",function(ke){ke.attr("data-notex",1)}),ge=$D.ensureUniformFontSize(t,ax.determineTextFont(x,H,T.font)),re=H._text||" ",Se=ie&&re.indexOf("
")===-1;Ce.text(re).classed("slicetext",!0).attr("text-anchor",S?"end":C||Se?"start":"middle").call(pLe.font,ge).call(sPt.convertToTspans,t),H.textBB=pLe.bBox(Ce.node()),H.transform=f(H,{fontSize:ge.size,isHeader:ie}),H.transform.fontSize=ge.size,d?Ce.transition().attrTween("transform",function(ke){var be=b(ke,fX,j(),[o,s]);return function(Be){return h(be(Be))}}):Ce.attr("transform",h(H))}),G}});var xLe=ye((O0r,_Le)=>{"use strict";var fPt=uX(),hPt=yLe();_Le.exports=function(t,r,n,i){return fPt(t,r,n,i,{type:"treemap",drawDescendants:hPt})}});var wLe=ye((B0r,bLe)=>{"use strict";bLe.exports={moduleType:"trace",name:"treemap",basePlotModule:O6e(),categories:[],animatable:!0,attributes:YD(),layoutAttributes:QW(),supplyDefaults:X6e(),supplyLayoutDefaults:Y6e(),calc:tX().calc,crossTraceCalc:tX().crossTraceCalc,plot:xLe(),style:KD().style,colorbar:Qd(),meta:{}}});var ALe=ye((N0r,TLe)=>{"use strict";TLe.exports=wLe()});var MLe=ye(jA=>{"use strict";var SLe=Mc();jA.name="icicle";jA.plot=function(e,t,r,n){SLe.plotBasePlot(jA.name,e,t,r,n)};jA.clean=function(e,t,r,n){SLe.cleanBasePlot(jA.name,e,t,r,n)}});var hX=ye((V0r,CLe)=>{"use strict";var{hovertemplateAttrs:dPt,texttemplateAttrs:vPt,templatefallbackAttrs:ELe}=Ll(),pPt=Tu(),gPt=Cc().attributes,rk=z2(),s0=BE(),QD=YD(),kLe=X2(),mPt=Ao().extendFlat,yPt=Pd().pattern;CLe.exports={labels:s0.labels,parents:s0.parents,values:s0.values,branchvalues:s0.branchvalues,count:s0.count,level:s0.level,maxdepth:s0.maxdepth,tiling:{orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"plot"},flip:QD.tiling.flip,pad:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},marker:mPt({colors:s0.marker.colors,line:s0.marker.line,pattern:yPt,editType:"calc"},pPt("marker",{colorAttr:"colors",anim:!1})),leaf:s0.leaf,pathbar:QD.pathbar,text:rk.text,textinfo:s0.textinfo,texttemplate:vPt({editType:"plot"},{keys:kLe.eventDataKeys.concat(["label","value"])}),texttemplatefallback:ELe({editType:"plot"}),hovertext:rk.hovertext,hoverinfo:s0.hoverinfo,hovertemplate:dPt({},{keys:kLe.eventDataKeys}),hovertemplatefallback:ELe(),textfont:rk.textfont,insidetextfont:rk.insidetextfont,outsidetextfont:QD.outsidetextfont,textposition:QD.textposition,sort:rk.sort,root:s0.root,domain:gPt({name:"icicle",trace:!0,editType:"calc"})}});var dX=ye((G0r,LLe)=>{"use strict";LLe.exports={iciclecolorway:{valType:"colorlist",editType:"calc"},extendiciclecolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var DLe=ye((H0r,RLe)=>{"use strict";var PLe=Pr(),_Pt=hX(),xPt=ka(),bPt=Cc().defaults,wPt=i0().handleText,TPt=A_().TEXTPAD,APt=q2().handleMarkerDefaults,ILe=tc(),SPt=ILe.hasColorscale,MPt=ILe.handleDefaults;RLe.exports=function(t,r,n,i){function a(d,v){return PLe.coerce(t,r,_Pt,d,v)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth"),a("tiling.orientation"),a("tiling.flip"),a("tiling.pad");var u=a("text");a("texttemplate"),a("texttemplatefallback"),r.texttemplate||a("textinfo",PLe.isArrayOrTypedArray(u)?"text+label":"label"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback");var c=a("pathbar.visible"),f="auto";wPt(t,r,i,a,f,{hasPathbar:c,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("textposition"),APt(t,r,i,a);var h=r._hasColorscale=SPt(t,"marker","colors")||(t.marker||{}).coloraxis;h&&MPt(t,r,i,a,{prefix:"marker.",cLetter:"c"}),a("leaf.opacity",h?1:.7),r._hovered={marker:{line:{width:2,color:xPt.contrast(i.paper_bgcolor)}}},c&&(a("pathbar.thickness",r.pathbar.textfont.size+2*TPt),a("pathbar.side"),a("pathbar.edgeshape")),a("sort"),a("root.color"),bPt(r,i,a),r._length=null}});var zLe=ye((j0r,FLe)=>{"use strict";var EPt=Pr(),kPt=dX();FLe.exports=function(t,r){function n(i,a){return EPt.coerce(t,r,kPt,i,a)}n("iciclecolorway",r.colorway),n("extendiciclecolors")}});var pX=ye(vX=>{"use strict";var qLe=VE();vX.calc=function(e,t){return qLe.calc(e,t)};vX.crossTraceCalc=function(e){return qLe._runCrossTraceCalc("icicle",e)}});var BLe=ye((X0r,OLe)=>{"use strict";var CPt=NE(),LPt=rX();OLe.exports=function(t,r,n){var i=n.flipX,a=n.flipY,o=n.orientation==="h",s=n.maxDepth,l=r[0],u=r[1];s&&(l=(t.height+1)*r[0]/Math.min(t.height+1,s),u=(t.height+1)*r[1]/Math.min(t.height+1,s));var c=CPt.partition().padding(n.pad.inner).size(o?[r[1],l]:[r[0],u])(t);return(o||i||a)&&LPt(c,r,{swapXY:o,flipX:i,flipY:a}),c}});var gX=ye((Z0r,HLe)=>{"use strict";var NLe=qa(),ULe=ka(),VLe=Pr(),PPt=bv().resizeText,IPt=WD();function RPt(e){var t=e._fullLayout._iciclelayer.selectAll(".trace");PPt(e,t,"icicle"),t.each(function(r){var n=NLe.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){NLe.select(this).call(GLe,o,a,e)})})}function GLe(e,t,r,n){var i=t.data.data,a=!t.children,o=i.i,s=VLe.castOption(r,o,"marker.line.color")||ULe.defaultLine,l=VLe.castOption(r,o,"marker.line.width")||0;e.call(IPt,t,r,n).style("stroke-width",l).call(ULe.stroke,s).style("opacity",a?r.leaf.opacity:null)}HLe.exports={style:RPt,styleOne:GLe}});var YLe=ye((Y0r,ZLe)=>{"use strict";var jLe=qa(),eF=Pr(),WLe=So(),DPt=Zl(),FPt=BLe(),XLe=gX().styleOne,mX=X2(),WA=i1(),zPt=QE(),qPt=ZD().formatSliceLabel,yX=!1;ZLe.exports=function(t,r,n,i,a){var o=a.width,s=a.height,l=a.viewX,u=a.viewY,c=a.pathSlice,f=a.toMoveInsideSlice,h=a.strTransform,d=a.hasTransition,v=a.handleSlicesExit,m=a.makeUpdateSliceInterpolator,b=a.makeUpdateTextInterpolator,p=a.prevEntry,k={},M=t._context.staticPlot,T=t._fullLayout,L=r[0],x=L.trace,C=x.textposition.indexOf("left")!==-1,S=x.textposition.indexOf("right")!==-1,g=x.textposition.indexOf("bottom")!==-1,P=FPt(n,[o,s],{flipX:x.tiling.flip.indexOf("x")>-1,flipY:x.tiling.flip.indexOf("y")>-1,orientation:x.tiling.orientation,pad:{inner:x.tiling.pad},maxDepth:x._maxDepth}),E=P.descendants(),z=1/0,q=-1/0;E.forEach(function(N){var H=N.depth;H>=x._maxDepth?(N.x0=N.x1=(N.x0+N.x1)/2,N.y0=N.y1=(N.y0+N.y1)/2):(z=Math.min(z,H),q=Math.max(q,H))}),i=i.data(E,WA.getPtId),x._maxVisibleLayers=isFinite(q)?q-z+1:0,i.enter().append("g").classed("slice",!0),v(i,yX,k,[o,s],c),i.order();var V=null;if(d&&p){var G=WA.getPtId(p);i.each(function(N){V===null&&WA.getPtId(N)===G&&(V={x0:N.x0,x1:N.x1,y0:N.y0,y1:N.y1})})}var Z=function(){return V||{x0:0,x1:o,y0:0,y1:s}},j=i;return d&&(j=j.transition().each("end",function(){var N=jLe.select(this);WA.setSliceCursor(N,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),j.each(function(N){N._x0=l(N.x0),N._x1=l(N.x1),N._y0=u(N.y0),N._y1=u(N.y1),N._hoverX=l(N.x1-x.tiling.pad),N._hoverY=u(g?N.y1-x.tiling.pad/2:N.y0+x.tiling.pad/2);var H=jLe.select(this),ie=eF.ensureSingle(H,"path","surface",function(Ce){Ce.style("pointer-events",M?"none":"all")});d?ie.transition().attrTween("d",function(Ce){var ge=m(Ce,yX,Z(),[o,s],{orientation:x.tiling.orientation,flipX:x.tiling.flip.indexOf("x")>-1,flipY:x.tiling.flip.indexOf("y")>-1});return function(re){return c(ge(re))}}):ie.attr("d",c),H.call(zPt,n,t,r,{styleOne:XLe,eventDataKeys:mX.eventDataKeys,transitionTime:mX.CLICK_TRANSITION_TIME,transitionEasing:mX.CLICK_TRANSITION_EASING}).call(WA.setSliceCursor,t,{isTransitioning:t._transitioning}),ie.call(XLe,N,x,t,{hovered:!1}),N.x0===N.x1||N.y0===N.y1?N._text="":N._text=qPt(N,n,x,r,T)||"";var ae=eF.ensureSingle(H,"g","slicetext"),_e=eF.ensureSingle(ae,"text","",function(Ce){Ce.attr("data-notex",1)}),Ee=eF.ensureUniformFontSize(t,WA.determineTextFont(x,N,T.font));_e.text(N._text||" ").classed("slicetext",!0).attr("text-anchor",S?"end":C?"start":"middle").call(WLe.font,Ee).call(DPt.convertToTspans,t),N.textBB=WLe.bBox(_e.node()),N.transform=f(N,{fontSize:Ee.size}),N.transform.fontSize=Ee.size,d?_e.transition().attrTween("transform",function(Ce){var ge=b(Ce,yX,Z(),[o,s]);return function(re){return h(ge(re))}}):_e.attr("transform",h(N))}),V}});var JLe=ye((K0r,KLe)=>{"use strict";var OPt=uX(),BPt=YLe();KLe.exports=function(t,r,n,i){return OPt(t,r,n,i,{type:"icicle",drawDescendants:BPt})}});var QLe=ye((J0r,$Le)=>{"use strict";$Le.exports={moduleType:"trace",name:"icicle",basePlotModule:MLe(),categories:[],animatable:!0,attributes:hX(),layoutAttributes:dX(),supplyDefaults:DLe(),supplyLayoutDefaults:zLe(),calc:pX().calc,crossTraceCalc:pX().crossTraceCalc,plot:JLe(),style:gX().style,colorbar:Qd(),meta:{}}});var tPe=ye(($0r,ePe)=>{"use strict";ePe.exports=QLe()});var iPe=ye(XA=>{"use strict";var rPe=Mc();XA.name="funnelarea";XA.plot=function(e,t,r,n){rPe.plotBasePlot(XA.name,e,t,r,n)};XA.clean=function(e,t,r,n){rPe.cleanBasePlot(XA.name,e,t,r,n)}});var _X=ye((egr,aPe)=>{"use strict";var nv=z2(),NPt=Gl(),UPt=Cc().attributes,{hovertemplateAttrs:VPt,texttemplateAttrs:GPt,templatefallbackAttrs:nPe}=Ll(),K2=Ao().extendFlat;aPe.exports={labels:nv.labels,label0:nv.label0,dlabel:nv.dlabel,values:nv.values,marker:{colors:nv.marker.colors,line:{color:K2({},nv.marker.line.color,{dflt:null}),width:K2({},nv.marker.line.width,{dflt:1}),editType:"calc"},pattern:nv.marker.pattern,editType:"calc"},text:nv.text,hovertext:nv.hovertext,scalegroup:K2({},nv.scalegroup,{}),textinfo:K2({},nv.textinfo,{flags:["label","text","value","percent"]}),texttemplate:GPt({editType:"plot"},{keys:["label","color","value","text","percent"]}),texttemplatefallback:nPe({editType:"plot"}),hoverinfo:K2({},NPt.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:VPt({},{keys:["label","color","value","text","percent"]}),hovertemplatefallback:nPe(),textposition:K2({},nv.textposition,{values:["inside","none"],dflt:"inside"}),textfont:nv.textfont,insidetextfont:nv.insidetextfont,title:{text:nv.title.text,font:nv.title.font,position:K2({},nv.title.position,{values:["top left","top center","top right"],dflt:"top center"}),editType:"plot"},domain:UPt({name:"funnelarea",trace:!0,editType:"calc"}),aspectratio:{valType:"number",min:0,dflt:1,editType:"plot"},baseratio:{valType:"number",min:0,max:1,dflt:.333,editType:"plot"}}});var xX=ye((tgr,oPe)=>{"use strict";var HPt=bD().hiddenlabels;oPe.exports={hiddenlabels:HPt,funnelareacolorway:{valType:"colorlist",editType:"calc"},extendfunnelareacolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var uPe=ye((rgr,lPe)=>{"use strict";var sPe=Pr(),jPt=_X(),WPt=Cc().defaults,XPt=i0().handleText,ZPt=q2().handleLabelsAndValues,YPt=q2().handleMarkerDefaults;lPe.exports=function(t,r,n,i){function a(m,b){return sPe.coerce(t,r,jPt,m,b)}var o=a("labels"),s=a("values"),l=ZPt(o,s),u=l.len;if(r._hasLabels=l.hasLabels,r._hasValues=l.hasValues,!r._hasLabels&&r._hasValues&&(a("label0"),a("dlabel")),!u){r.visible=!1;return}r._length=u,YPt(t,r,i,a),a("scalegroup");var c=a("text"),f=a("texttemplate");a("texttemplatefallback");var h;if(f||(h=a("textinfo",Array.isArray(c)?"text+percent":"percent")),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),f||h&&h!=="none"){var d=a("textposition");XPt(t,r,i,a,d,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}else h==="none"&&a("textposition","none");WPt(r,i,a);var v=a("title.text");v&&(a("title.position"),sPe.coerceFont(a,"title.font",i.font)),a("aspectratio"),a("baseratio")}});var fPe=ye((igr,cPe)=>{"use strict";var KPt=Pr(),JPt=xX();cPe.exports=function(t,r){function n(i,a){return KPt.coerce(t,r,JPt,i,a)}n("hiddenlabels"),n("funnelareacolorway",r.colorway),n("extendfunnelareacolors")}});var bX=ye((ngr,dPe)=>{"use strict";var hPe=CA();function $Pt(e,t){return hPe.calc(e,t)}function QPt(e){hPe.crossTraceCalc(e,{type:"funnelarea"})}dPe.exports={calc:$Pt,crossTraceCalc:QPt}});var yPe=ye((agr,mPe)=>{"use strict";var J2=qa(),wX=So(),ox=Pr(),eIt=ox.strScale,vPe=ox.strTranslate,pPe=Zl(),tIt=p2(),rIt=tIt.toMoveInsideBar,gPe=bv(),iIt=gPe.recordMinTextSize,nIt=gPe.clearMinTextSize,aIt=g_(),ZA=SD(),oIt=ZA.attachFxHandlers,sIt=ZA.determineInsideTextFont,lIt=ZA.layoutAreas,uIt=ZA.prerenderTitles,cIt=ZA.positionTitleOutside,fIt=ZA.formatSliceLabel;mPe.exports=function(t,r){var n=t._context.staticPlot,i=t._fullLayout;nIt("funnelarea",i),uIt(r,t),lIt(r,i._size),ox.makeTraceGroups(i._funnelarealayer,r,"trace").each(function(a){var o=J2.select(this),s=a[0],l=s.trace;dIt(a),o.each(function(){var u=J2.select(this).selectAll("g.slice").data(a);u.enter().append("g").classed("slice",!0),u.exit().remove(),u.each(function(f,h){if(f.hidden){J2.select(this).selectAll("path,g").remove();return}f.pointNumber=f.i,f.curveNumber=l.index;var d=s.cx,v=s.cy,m=J2.select(this),b=m.selectAll("path.surface").data([f]);b.enter().append("path").classed("surface",!0).style({"pointer-events":n?"none":"all"}),m.call(oIt,t,a);var p="M"+(d+f.TR[0])+","+(v+f.TR[1])+TX(f.TR,f.BR)+TX(f.BR,f.BL)+TX(f.BL,f.TL)+"Z";b.attr("d",p),fIt(t,f,s);var k=aIt.castOption(l.textposition,f.pts),M=m.selectAll("g.slicetext").data(f.text&&k!=="none"?[0]:[]);M.enter().append("g").classed("slicetext",!0),M.exit().remove(),M.each(function(){var T=ox.ensureSingle(J2.select(this),"text","",function(z){z.attr("data-notex",1)}),L=ox.ensureUniformFontSize(t,sIt(l,f,i.font));T.text(f.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(wX.font,L).call(pPe.convertToTspans,t);var x=wX.bBox(T.node()),C,S,g,P=Math.min(f.BL[1],f.BR[1])+v,E=Math.max(f.TL[1],f.TR[1])+v;S=Math.max(f.TL[0],f.BL[0])+d,g=Math.min(f.TR[0],f.BR[0])+d,C=rIt(S,g,P,E,x,{isHorizontal:!0,constrained:!0,angle:0,anchor:"middle"}),C.fontSize=L.size,iIt(l.type,C,i),a[h].transform=C,ox.setTransormAndDisplay(T,C)})});var c=J2.select(this).selectAll("g.titletext").data(l.title.text?[0]:[]);c.enter().append("g").classed("titletext",!0),c.exit().remove(),c.each(function(){var f=ox.ensureSingle(J2.select(this),"text","",function(v){v.attr("data-notex",1)}),h=l.title.text;l._meta&&(h=ox.templateString(h,l._meta)),f.text(h).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(wX.font,l.title.font).call(pPe.convertToTspans,t);var d=cIt(s,i._size);f.attr("transform",vPe(d.x,d.y)+eIt(Math.min(1,d.scale))+vPe(d.tx,d.ty))})})})};function TX(e,t){var r=t[0]-e[0],n=t[1]-e[1];return"l"+r+","+n}function hIt(e,t){return[.5*(e[0]+t[0]),.5*(e[1]+t[1])]}function dIt(e){if(!e.length)return;var t=e[0],r=t.trace,n=r.aspectratio,i=r.baseratio;i>.999&&(i=.999);var a=Math.pow(i,2),o=t.vTotal,s=o*a/(1-a),l=o,u=s/o;function c(){var q=Math.sqrt(u);return{x:q,y:-q}}function f(){var q=c();return[q.x,q.y]}var h,d=[];d.push(f());var v,m;for(v=e.length-1;v>-1;v--)if(m=e[v],!m.hidden){var b=m.v/l;u+=b,d.push(f())}var p=1/0,k=-1/0;for(v=0;v-1;v--)if(m=e[v],!m.hidden){P+=1;var E=d[P][0],z=d[P][1];m.TL=[-E,z],m.TR=[E,z],m.BL=S,m.BR=g,m.pxmid=hIt(m.TR,m.BR),S=m.TL,g=m.TR}}});var bPe=ye((ogr,xPe)=>{"use strict";var _Pe=qa(),vIt=Y3(),pIt=bv().resizeText;xPe.exports=function(t){var r=t._fullLayout._funnelarealayer.selectAll(".trace");pIt(t,r,"funnelarea"),r.each(function(n){var i=n[0],a=i.trace,o=_Pe.select(this);o.style({opacity:a.opacity}),o.selectAll("path.surface").each(function(s){_Pe.select(this).call(vIt,s,a,t)})})}});var TPe=ye((sgr,wPe)=>{"use strict";wPe.exports={moduleType:"trace",name:"funnelarea",basePlotModule:iPe(),categories:["pie-like","funnelarea","showLegend"],attributes:_X(),layoutAttributes:xX(),supplyDefaults:uPe(),supplyLayoutDefaults:fPe(),calc:bX().calc,crossTraceCalc:bX().crossTraceCalc,plot:yPe(),style:bPe(),styleOne:Y3(),meta:{}}});var SPe=ye((lgr,APe)=>{"use strict";APe.exports=TPe()});var qd=ye((ugr,MPe)=>{(function(){var e={1964:function(i,a,o){i.exports={alpha_shape:o(3502),convex_hull:o(7352),delaunay_triangulate:o(7642),gl_cone3d:o(6405),gl_error3d:o(9165),gl_line3d:o(5714),gl_mesh3d:o(7201),gl_plot3d:o(4100),gl_scatter3d:o(8418),gl_streamtube3d:o(7815),gl_surface3d:o(9499),ndarray:o(9618),ndarray_linear_interpolate:o(4317)}},4793:function(i,a,o){"use strict";var s;function l(tt){"@babel/helpers - typeof";return l=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(je){return typeof je}:function(je){return je&&typeof Symbol=="function"&&je.constructor===Symbol&&je!==Symbol.prototype?"symbol":typeof je},l(tt)}var u=o(7507),c=o(3778),f=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;a.hp=m,s=P,a.IS=50;var h=2147483647;s=h,m.TYPED_ARRAY_SUPPORT=d(),!m.TYPED_ARRAY_SUPPORT&&typeof console!="undefined"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function d(){try{var tt=new Uint8Array(1),je={foo:function(){return 42}};return Object.setPrototypeOf(je,Uint8Array.prototype),Object.setPrototypeOf(tt,je),tt.foo()===42}catch(Ue){return!1}}Object.defineProperty(m.prototype,"parent",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.buffer}}),Object.defineProperty(m.prototype,"offset",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.byteOffset}});function v(tt){if(tt>h)throw new RangeError('The value "'+tt+'" is invalid for option "size"');var je=new Uint8Array(tt);return Object.setPrototypeOf(je,m.prototype),je}function m(tt,je,Ue){if(typeof tt=="number"){if(typeof je=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return M(tt)}return b(tt,je,Ue)}m.poolSize=8192;function b(tt,je,Ue){if(typeof tt=="string")return T(tt,je);if(ArrayBuffer.isView(tt))return x(tt);if(tt==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+l(tt));if(ar(tt,ArrayBuffer)||tt&&ar(tt.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(ar(tt,SharedArrayBuffer)||tt&&ar(tt.buffer,SharedArrayBuffer)))return C(tt,je,Ue);if(typeof tt=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var Ae=tt.valueOf&&tt.valueOf();if(Ae!=null&&Ae!==tt)return m.from(Ae,je,Ue);var rt=S(tt);if(rt)return rt;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof tt[Symbol.toPrimitive]=="function")return m.from(tt[Symbol.toPrimitive]("string"),je,Ue);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+l(tt))}m.from=function(tt,je,Ue){return b(tt,je,Ue)},Object.setPrototypeOf(m.prototype,Uint8Array.prototype),Object.setPrototypeOf(m,Uint8Array);function p(tt){if(typeof tt!="number")throw new TypeError('"size" argument must be of type number');if(tt<0)throw new RangeError('The value "'+tt+'" is invalid for option "size"')}function k(tt,je,Ue){return p(tt),tt<=0?v(tt):je!==void 0?typeof Ue=="string"?v(tt).fill(je,Ue):v(tt).fill(je):v(tt)}m.alloc=function(tt,je,Ue){return k(tt,je,Ue)};function M(tt){return p(tt),v(tt<0?0:g(tt)|0)}m.allocUnsafe=function(tt){return M(tt)},m.allocUnsafeSlow=function(tt){return M(tt)};function T(tt,je){if((typeof je!="string"||je==="")&&(je="utf8"),!m.isEncoding(je))throw new TypeError("Unknown encoding: "+je);var Ue=E(tt,je)|0,Ae=v(Ue),rt=Ae.write(tt,je);return rt!==Ue&&(Ae=Ae.slice(0,rt)),Ae}function L(tt){for(var je=tt.length<0?0:g(tt.length)|0,Ue=v(je),Ae=0;Ae=h)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+h.toString(16)+" bytes");return tt|0}function P(tt){return+tt!=tt&&(tt=0),m.alloc(+tt)}m.isBuffer=function(je){return je!=null&&je._isBuffer===!0&&je!==m.prototype},m.compare=function(je,Ue){if(ar(je,Uint8Array)&&(je=m.from(je,je.offset,je.byteLength)),ar(Ue,Uint8Array)&&(Ue=m.from(Ue,Ue.offset,Ue.byteLength)),!m.isBuffer(je)||!m.isBuffer(Ue))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(je===Ue)return 0;for(var Ae=je.length,rt=Ue.length,St=0,Tt=Math.min(Ae,rt);Strt.length?m.from(Tt).copy(rt,St):Uint8Array.prototype.set.call(rt,Tt,St);else if(m.isBuffer(Tt))Tt.copy(rt,St);else throw new TypeError('"list" argument must be an Array of Buffers');St+=Tt.length}return rt};function E(tt,je){if(m.isBuffer(tt))return tt.length;if(ArrayBuffer.isView(tt)||ar(tt,ArrayBuffer))return tt.byteLength;if(typeof tt!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+l(tt));var Ue=tt.length,Ae=arguments.length>2&&arguments[2]===!0;if(!Ae&&Ue===0)return 0;for(var rt=!1;;)switch(je){case"ascii":case"latin1":case"binary":return Ue;case"utf8":case"utf-8":return lt(tt).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ue*2;case"hex":return Ue>>>1;case"base64":return at(tt).length;default:if(rt)return Ae?-1:lt(tt).length;je=(""+je).toLowerCase(),rt=!0}}m.byteLength=E;function z(tt,je,Ue){var Ae=!1;if((je===void 0||je<0)&&(je=0),je>this.length||((Ue===void 0||Ue>this.length)&&(Ue=this.length),Ue<=0)||(Ue>>>=0,je>>>=0,Ue<=je))return"";for(tt||(tt="utf8");;)switch(tt){case"hex":return Se(this,je,Ue);case"utf8":case"utf-8":return _e(this,je,Ue);case"ascii":return ge(this,je,Ue);case"latin1":case"binary":return re(this,je,Ue);case"base64":return ae(this,je,Ue);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ke(this,je,Ue);default:if(Ae)throw new TypeError("Unknown encoding: "+tt);tt=(tt+"").toLowerCase(),Ae=!0}}m.prototype._isBuffer=!0;function q(tt,je,Ue){var Ae=tt[je];tt[je]=tt[Ue],tt[Ue]=Ae}m.prototype.swap16=function(){var je=this.length;if(je%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Ue=0;UeUe&&(je+=" ... "),""},f&&(m.prototype[f]=m.prototype.inspect),m.prototype.compare=function(je,Ue,Ae,rt,St){if(ar(je,Uint8Array)&&(je=m.from(je,je.offset,je.byteLength)),!m.isBuffer(je))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+l(je));if(Ue===void 0&&(Ue=0),Ae===void 0&&(Ae=je?je.length:0),rt===void 0&&(rt=0),St===void 0&&(St=this.length),Ue<0||Ae>je.length||rt<0||St>this.length)throw new RangeError("out of range index");if(rt>=St&&Ue>=Ae)return 0;if(rt>=St)return-1;if(Ue>=Ae)return 1;if(Ue>>>=0,Ae>>>=0,rt>>>=0,St>>>=0,this===je)return 0;for(var Tt=St-rt,dt=Ae-Ue,Et=Math.min(Tt,dt),pt=this.slice(rt,St),jt=je.slice(Ue,Ae),or=0;or2147483647?Ue=2147483647:Ue<-2147483648&&(Ue=-2147483648),Ue=+Ue,Vt(Ue)&&(Ue=rt?0:tt.length-1),Ue<0&&(Ue=tt.length+Ue),Ue>=tt.length){if(rt)return-1;Ue=tt.length-1}else if(Ue<0)if(rt)Ue=0;else return-1;if(typeof je=="string"&&(je=m.from(je,Ae)),m.isBuffer(je))return je.length===0?-1:G(tt,je,Ue,Ae,rt);if(typeof je=="number")return je=je&255,typeof Uint8Array.prototype.indexOf=="function"?rt?Uint8Array.prototype.indexOf.call(tt,je,Ue):Uint8Array.prototype.lastIndexOf.call(tt,je,Ue):G(tt,[je],Ue,Ae,rt);throw new TypeError("val must be string, number or Buffer")}function G(tt,je,Ue,Ae,rt){var St=1,Tt=tt.length,dt=je.length;if(Ae!==void 0&&(Ae=String(Ae).toLowerCase(),Ae==="ucs2"||Ae==="ucs-2"||Ae==="utf16le"||Ae==="utf-16le")){if(tt.length<2||je.length<2)return-1;St=2,Tt/=2,dt/=2,Ue/=2}function Et(Ar,ei){return St===1?Ar[ei]:Ar.readUInt16BE(ei*St)}var pt;if(rt){var jt=-1;for(pt=Ue;ptTt&&(Ue=Tt-dt),pt=Ue;pt>=0;pt--){for(var or=!0,mr=0;mrrt&&(Ae=rt)):Ae=rt;var St=je.length;Ae>St/2&&(Ae=St/2);for(var Tt=0;Tt>>0,isFinite(Ae)?(Ae=Ae>>>0,rt===void 0&&(rt="utf8")):(rt=Ae,Ae=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var St=this.length-Ue;if((Ae===void 0||Ae>St)&&(Ae=St),je.length>0&&(Ae<0||Ue<0)||Ue>this.length)throw new RangeError("Attempt to write outside buffer bounds");rt||(rt="utf8");for(var Tt=!1;;)switch(rt){case"hex":return Z(this,je,Ue,Ae);case"utf8":case"utf-8":return j(this,je,Ue,Ae);case"ascii":case"latin1":case"binary":return N(this,je,Ue,Ae);case"base64":return H(this,je,Ue,Ae);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ie(this,je,Ue,Ae);default:if(Tt)throw new TypeError("Unknown encoding: "+rt);rt=(""+rt).toLowerCase(),Tt=!0}},m.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function ae(tt,je,Ue){return je===0&&Ue===tt.length?u.fromByteArray(tt):u.fromByteArray(tt.slice(je,Ue))}function _e(tt,je,Ue){Ue=Math.min(tt.length,Ue);for(var Ae=[],rt=je;rt239?4:St>223?3:St>191?2:1;if(rt+dt<=Ue){var Et,pt,jt,or;switch(dt){case 1:St<128&&(Tt=St);break;case 2:Et=tt[rt+1],(Et&192)===128&&(or=(St&31)<<6|Et&63,or>127&&(Tt=or));break;case 3:Et=tt[rt+1],pt=tt[rt+2],(Et&192)===128&&(pt&192)===128&&(or=(St&15)<<12|(Et&63)<<6|pt&63,or>2047&&(or<55296||or>57343)&&(Tt=or));break;case 4:Et=tt[rt+1],pt=tt[rt+2],jt=tt[rt+3],(Et&192)===128&&(pt&192)===128&&(jt&192)===128&&(or=(St&15)<<18|(Et&63)<<12|(pt&63)<<6|jt&63,or>65535&&or<1114112&&(Tt=or))}}Tt===null?(Tt=65533,dt=1):Tt>65535&&(Tt-=65536,Ae.push(Tt>>>10&1023|55296),Tt=56320|Tt&1023),Ae.push(Tt),rt+=dt}return Ce(Ae)}var Ee=4096;function Ce(tt){var je=tt.length;if(je<=Ee)return String.fromCharCode.apply(String,tt);for(var Ue="",Ae=0;AeAe)&&(Ue=Ae);for(var rt="",St=je;StAe&&(je=Ae),Ue<0?(Ue+=Ae,Ue<0&&(Ue=0)):Ue>Ae&&(Ue=Ae),UeUe)throw new RangeError("Trying to access beyond buffer length")}m.prototype.readUintLE=m.prototype.readUIntLE=function(je,Ue,Ae){je=je>>>0,Ue=Ue>>>0,Ae||be(je,Ue,this.length);for(var rt=this[je],St=1,Tt=0;++Tt>>0,Ue=Ue>>>0,Ae||be(je,Ue,this.length);for(var rt=this[je+--Ue],St=1;Ue>0&&(St*=256);)rt+=this[je+--Ue]*St;return rt},m.prototype.readUint8=m.prototype.readUInt8=function(je,Ue){return je=je>>>0,Ue||be(je,1,this.length),this[je]},m.prototype.readUint16LE=m.prototype.readUInt16LE=function(je,Ue){return je=je>>>0,Ue||be(je,2,this.length),this[je]|this[je+1]<<8},m.prototype.readUint16BE=m.prototype.readUInt16BE=function(je,Ue){return je=je>>>0,Ue||be(je,2,this.length),this[je]<<8|this[je+1]},m.prototype.readUint32LE=m.prototype.readUInt32LE=function(je,Ue){return je=je>>>0,Ue||be(je,4,this.length),(this[je]|this[je+1]<<8|this[je+2]<<16)+this[je+3]*16777216},m.prototype.readUint32BE=m.prototype.readUInt32BE=function(je,Ue){return je=je>>>0,Ue||be(je,4,this.length),this[je]*16777216+(this[je+1]<<16|this[je+2]<<8|this[je+3])},m.prototype.readIntLE=function(je,Ue,Ae){je=je>>>0,Ue=Ue>>>0,Ae||be(je,Ue,this.length);for(var rt=this[je],St=1,Tt=0;++Tt=St&&(rt-=Math.pow(2,8*Ue)),rt},m.prototype.readIntBE=function(je,Ue,Ae){je=je>>>0,Ue=Ue>>>0,Ae||be(je,Ue,this.length);for(var rt=Ue,St=1,Tt=this[je+--rt];rt>0&&(St*=256);)Tt+=this[je+--rt]*St;return St*=128,Tt>=St&&(Tt-=Math.pow(2,8*Ue)),Tt},m.prototype.readInt8=function(je,Ue){return je=je>>>0,Ue||be(je,1,this.length),this[je]&128?(255-this[je]+1)*-1:this[je]},m.prototype.readInt16LE=function(je,Ue){je=je>>>0,Ue||be(je,2,this.length);var Ae=this[je]|this[je+1]<<8;return Ae&32768?Ae|4294901760:Ae},m.prototype.readInt16BE=function(je,Ue){je=je>>>0,Ue||be(je,2,this.length);var Ae=this[je+1]|this[je]<<8;return Ae&32768?Ae|4294901760:Ae},m.prototype.readInt32LE=function(je,Ue){return je=je>>>0,Ue||be(je,4,this.length),this[je]|this[je+1]<<8|this[je+2]<<16|this[je+3]<<24},m.prototype.readInt32BE=function(je,Ue){return je=je>>>0,Ue||be(je,4,this.length),this[je]<<24|this[je+1]<<16|this[je+2]<<8|this[je+3]},m.prototype.readFloatLE=function(je,Ue){return je=je>>>0,Ue||be(je,4,this.length),c.read(this,je,!0,23,4)},m.prototype.readFloatBE=function(je,Ue){return je=je>>>0,Ue||be(je,4,this.length),c.read(this,je,!1,23,4)},m.prototype.readDoubleLE=function(je,Ue){return je=je>>>0,Ue||be(je,8,this.length),c.read(this,je,!0,52,8)},m.prototype.readDoubleBE=function(je,Ue){return je=je>>>0,Ue||be(je,8,this.length),c.read(this,je,!1,52,8)};function Be(tt,je,Ue,Ae,rt,St){if(!m.isBuffer(tt))throw new TypeError('"buffer" argument must be a Buffer instance');if(je>rt||jett.length)throw new RangeError("Index out of range")}m.prototype.writeUintLE=m.prototype.writeUIntLE=function(je,Ue,Ae,rt){if(je=+je,Ue=Ue>>>0,Ae=Ae>>>0,!rt){var St=Math.pow(2,8*Ae)-1;Be(this,je,Ue,Ae,St,0)}var Tt=1,dt=0;for(this[Ue]=je&255;++dt>>0,Ae=Ae>>>0,!rt){var St=Math.pow(2,8*Ae)-1;Be(this,je,Ue,Ae,St,0)}var Tt=Ae-1,dt=1;for(this[Ue+Tt]=je&255;--Tt>=0&&(dt*=256);)this[Ue+Tt]=je/dt&255;return Ue+Ae},m.prototype.writeUint8=m.prototype.writeUInt8=function(je,Ue,Ae){return je=+je,Ue=Ue>>>0,Ae||Be(this,je,Ue,1,255,0),this[Ue]=je&255,Ue+1},m.prototype.writeUint16LE=m.prototype.writeUInt16LE=function(je,Ue,Ae){return je=+je,Ue=Ue>>>0,Ae||Be(this,je,Ue,2,65535,0),this[Ue]=je&255,this[Ue+1]=je>>>8,Ue+2},m.prototype.writeUint16BE=m.prototype.writeUInt16BE=function(je,Ue,Ae){return je=+je,Ue=Ue>>>0,Ae||Be(this,je,Ue,2,65535,0),this[Ue]=je>>>8,this[Ue+1]=je&255,Ue+2},m.prototype.writeUint32LE=m.prototype.writeUInt32LE=function(je,Ue,Ae){return je=+je,Ue=Ue>>>0,Ae||Be(this,je,Ue,4,4294967295,0),this[Ue+3]=je>>>24,this[Ue+2]=je>>>16,this[Ue+1]=je>>>8,this[Ue]=je&255,Ue+4},m.prototype.writeUint32BE=m.prototype.writeUInt32BE=function(je,Ue,Ae){return je=+je,Ue=Ue>>>0,Ae||Be(this,je,Ue,4,4294967295,0),this[Ue]=je>>>24,this[Ue+1]=je>>>16,this[Ue+2]=je>>>8,this[Ue+3]=je&255,Ue+4},m.prototype.writeIntLE=function(je,Ue,Ae,rt){if(je=+je,Ue=Ue>>>0,!rt){var St=Math.pow(2,8*Ae-1);Be(this,je,Ue,Ae,St-1,-St)}var Tt=0,dt=1,Et=0;for(this[Ue]=je&255;++Tt>0)-Et&255;return Ue+Ae},m.prototype.writeIntBE=function(je,Ue,Ae,rt){if(je=+je,Ue=Ue>>>0,!rt){var St=Math.pow(2,8*Ae-1);Be(this,je,Ue,Ae,St-1,-St)}var Tt=Ae-1,dt=1,Et=0;for(this[Ue+Tt]=je&255;--Tt>=0&&(dt*=256);)je<0&&Et===0&&this[Ue+Tt+1]!==0&&(Et=1),this[Ue+Tt]=(je/dt>>0)-Et&255;return Ue+Ae},m.prototype.writeInt8=function(je,Ue,Ae){return je=+je,Ue=Ue>>>0,Ae||Be(this,je,Ue,1,127,-128),je<0&&(je=255+je+1),this[Ue]=je&255,Ue+1},m.prototype.writeInt16LE=function(je,Ue,Ae){return je=+je,Ue=Ue>>>0,Ae||Be(this,je,Ue,2,32767,-32768),this[Ue]=je&255,this[Ue+1]=je>>>8,Ue+2},m.prototype.writeInt16BE=function(je,Ue,Ae){return je=+je,Ue=Ue>>>0,Ae||Be(this,je,Ue,2,32767,-32768),this[Ue]=je>>>8,this[Ue+1]=je&255,Ue+2},m.prototype.writeInt32LE=function(je,Ue,Ae){return je=+je,Ue=Ue>>>0,Ae||Be(this,je,Ue,4,2147483647,-2147483648),this[Ue]=je&255,this[Ue+1]=je>>>8,this[Ue+2]=je>>>16,this[Ue+3]=je>>>24,Ue+4},m.prototype.writeInt32BE=function(je,Ue,Ae){return je=+je,Ue=Ue>>>0,Ae||Be(this,je,Ue,4,2147483647,-2147483648),je<0&&(je=4294967295+je+1),this[Ue]=je>>>24,this[Ue+1]=je>>>16,this[Ue+2]=je>>>8,this[Ue+3]=je&255,Ue+4};function Le(tt,je,Ue,Ae,rt,St){if(Ue+Ae>tt.length)throw new RangeError("Index out of range");if(Ue<0)throw new RangeError("Index out of range")}function me(tt,je,Ue,Ae,rt){return je=+je,Ue=Ue>>>0,rt||Le(tt,je,Ue,4,34028234663852886e22,-34028234663852886e22),c.write(tt,je,Ue,Ae,23,4),Ue+4}m.prototype.writeFloatLE=function(je,Ue,Ae){return me(this,je,Ue,!0,Ae)},m.prototype.writeFloatBE=function(je,Ue,Ae){return me(this,je,Ue,!1,Ae)};function Pe(tt,je,Ue,Ae,rt){return je=+je,Ue=Ue>>>0,rt||Le(tt,je,Ue,8,17976931348623157e292,-17976931348623157e292),c.write(tt,je,Ue,Ae,52,8),Ue+8}m.prototype.writeDoubleLE=function(je,Ue,Ae){return Pe(this,je,Ue,!0,Ae)},m.prototype.writeDoubleBE=function(je,Ue,Ae){return Pe(this,je,Ue,!1,Ae)},m.prototype.copy=function(je,Ue,Ae,rt){if(!m.isBuffer(je))throw new TypeError("argument should be a Buffer");if(Ae||(Ae=0),!rt&&rt!==0&&(rt=this.length),Ue>=je.length&&(Ue=je.length),Ue||(Ue=0),rt>0&&rt=this.length)throw new RangeError("Index out of range");if(rt<0)throw new RangeError("sourceEnd out of bounds");rt>this.length&&(rt=this.length),je.length-Ue>>0,Ae=Ae===void 0?this.length:Ae>>>0,je||(je=0);var Tt;if(typeof je=="number")for(Tt=Ue;Tt55295&&Ue<57344){if(!rt){if(Ue>56319){(je-=3)>-1&&St.push(239,191,189);continue}else if(Tt+1===Ae){(je-=3)>-1&&St.push(239,191,189);continue}rt=Ue;continue}if(Ue<56320){(je-=3)>-1&&St.push(239,191,189),rt=Ue;continue}Ue=(rt-55296<<10|Ue-56320)+65536}else rt&&(je-=3)>-1&&St.push(239,191,189);if(rt=null,Ue<128){if((je-=1)<0)break;St.push(Ue)}else if(Ue<2048){if((je-=2)<0)break;St.push(Ue>>6|192,Ue&63|128)}else if(Ue<65536){if((je-=3)<0)break;St.push(Ue>>12|224,Ue>>6&63|128,Ue&63|128)}else if(Ue<1114112){if((je-=4)<0)break;St.push(Ue>>18|240,Ue>>12&63|128,Ue>>6&63|128,Ue&63|128)}else throw new Error("Invalid code point")}return St}function mt(tt){for(var je=[],Ue=0;Ue>8,rt=Ue%256,St.push(rt),St.push(Ae);return St}function at(tt){return u.toByteArray(He(tt))}function ct(tt,je,Ue,Ae){for(var rt=0;rt=je.length||rt>=tt.length);++rt)je[rt+Ue]=tt[rt];return rt}function ar(tt,je){return tt instanceof je||tt!=null&&tt.constructor!=null&&tt.constructor.name!=null&&tt.constructor.name===je.name}function Vt(tt){return tt!==tt}var rr=function(){for(var tt="0123456789abcdef",je=new Array(256),Ue=0;Ue<16;++Ue)for(var Ae=Ue*16,rt=0;rt<16;++rt)je[Ae+rt]=tt[Ue]+tt[rt];return je}()},9216:function(i){"use strict";i.exports=l,i.exports.isMobile=l,i.exports.default=l;var a=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,o=/CrOS/,s=/android|ipad|playbook|silk/i;function l(u){u||(u={});var c=u.ua;if(!c&&typeof navigator!="undefined"&&(c=navigator.userAgent),c&&c.headers&&typeof c.headers["user-agent"]=="string"&&(c=c.headers["user-agent"]),typeof c!="string")return!1;var f=a.test(c)&&!o.test(c)||!!u.tablet&&s.test(c);return!f&&u.tablet&&u.featureDetect&&navigator&&navigator.maxTouchPoints>1&&c.indexOf("Macintosh")!==-1&&c.indexOf("Safari")!==-1&&(f=!0),f}},6296:function(i,a,o){"use strict";i.exports=h;var s=o(7261),l=o(9977),u=o(1811);function c(d,v){this._controllerNames=Object.keys(d),this._controllerList=this._controllerNames.map(function(m){return d[m]}),this._mode=v,this._active=d[v],this._active||(this._mode="turntable",this._active=d.turntable),this.modes=this._controllerNames,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}var f=c.prototype;f.flush=function(d){for(var v=this._controllerList,m=0;m0)throw new Error("Invalid string. Length must be a multiple of 4");var L=M.indexOf("=");L===-1&&(L=T);var x=L===T?0:4-L%4;return[L,x]}function d(M){var T=h(M),L=T[0],x=T[1];return(L+x)*3/4-x}function v(M,T,L){return(T+L)*3/4-L}function m(M){var T,L=h(M),x=L[0],C=L[1],S=new l(v(M,x,C)),g=0,P=C>0?x-4:x,E;for(E=0;E>16&255,S[g++]=T>>8&255,S[g++]=T&255;return C===2&&(T=s[M.charCodeAt(E)]<<2|s[M.charCodeAt(E+1)]>>4,S[g++]=T&255),C===1&&(T=s[M.charCodeAt(E)]<<10|s[M.charCodeAt(E+1)]<<4|s[M.charCodeAt(E+2)]>>2,S[g++]=T>>8&255,S[g++]=T&255),S}function b(M){return o[M>>18&63]+o[M>>12&63]+o[M>>6&63]+o[M&63]}function p(M,T,L){for(var x,C=[],S=T;SP?P:g+S));return x===1?(T=M[L-1],C.push(o[T>>2]+o[T<<4&63]+"==")):x===2&&(T=(M[L-2]<<8)+M[L-1],C.push(o[T>>10]+o[T>>4&63]+o[T<<2&63]+"=")),C.join("")}},3865:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]).add(c[0].mul(u[1])),u[1].mul(c[1]))}},1318:function(i){"use strict";i.exports=a;function a(o,s){return o[0].mul(s[1]).cmp(s[0].mul(o[1]))}},8697:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]),u[1].mul(c[0]))}},7842:function(i,a,o){"use strict";var s=o(6330),l=o(1533),u=o(2651),c=o(6768),f=o(869),h=o(8697);i.exports=d;function d(v,m){if(s(v))return m?h(v,d(m)):[v[0].clone(),v[1].clone()];var b=0,p,k;if(l(v))p=v.clone();else if(typeof v=="string")p=c(v);else{if(v===0)return[u(0),u(1)];if(v===Math.floor(v))p=u(v);else{for(;v!==Math.floor(v);)v=v*Math.pow(2,256),b-=256;p=u(v)}}if(s(m))p.mul(m[1]),k=m[0].clone();else if(l(m))k=m.clone();else if(typeof m=="string")k=c(m);else if(!m)k=u(1);else if(m===Math.floor(m))k=u(m);else{for(;m!==Math.floor(m);)m=m*Math.pow(2,256),b+=256;k=u(m)}return b>0?p=p.ushln(b):b<0&&(k=k.ushln(-b)),f(p,k)}},6330:function(i,a,o){"use strict";var s=o(1533);i.exports=l;function l(u){return Array.isArray(u)&&u.length===2&&s(u[0])&&s(u[1])}},5716:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return u.cmp(new s(0))}},1369:function(i,a,o){"use strict";var s=o(5716);i.exports=l;function l(u){var c=u.length,f=u.words,h=0;if(c===1)h=f[0];else if(c===2)h=f[0]+f[1]*67108864;else for(var d=0;d20?52:h+32}},1533:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return u&&typeof u=="object"&&!!u.words}},2651:function(i,a,o){"use strict";var s=o(6859),l=o(2361);i.exports=u;function u(c){var f=l.exponent(c);return f<52?new s(c):new s(c*Math.pow(2,52-f)).ushln(f-52)}},869:function(i,a,o){"use strict";var s=o(2651),l=o(5716);i.exports=u;function u(c,f){var h=l(c),d=l(f);if(h===0)return[s(0),s(1)];if(d===0)return[s(0),s(0)];d<0&&(c=c.neg(),f=f.neg());var v=c.gcd(f);return v.cmpn(1)?[c.div(v),f.div(v)]:[c,f]}},6768:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return new s(u)}},6504:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[0]),u[1].mul(c[1]))}},7721:function(i,a,o){"use strict";var s=o(5716);i.exports=l;function l(u){return s(u[0])*s(u[1])}},5572:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]).sub(u[1].mul(c[0])),u[1].mul(c[1]))}},946:function(i,a,o){"use strict";var s=o(1369),l=o(4025);i.exports=u;function u(c){var f=c[0],h=c[1];if(f.cmpn(0)===0)return 0;var d=f.abs().divmod(h.abs()),v=d.div,m=s(v),b=d.mod,p=f.negative!==h.negative?-1:1;if(b.cmpn(0)===0)return p*m;if(m){var k=l(m)+4,M=s(b.ushln(k).divRound(h));return p*(m+M*Math.pow(2,-k))}else{var T=h.bitLength()-b.bitLength()+53,M=s(b.ushln(T).divRound(h));return T<1023?p*M*Math.pow(2,-T):(M*=Math.pow(2,-1023),p*M*Math.pow(2,1023-T))}}},2478:function(i){"use strict";function a(f,h,d,v,m){for(var b=m+1;v<=m;){var p=v+m>>>1,k=f[p],M=d!==void 0?d(k,h):k-h;M>=0?(b=p,m=p-1):v=p+1}return b}function o(f,h,d,v,m){for(var b=m+1;v<=m;){var p=v+m>>>1,k=f[p],M=d!==void 0?d(k,h):k-h;M>0?(b=p,m=p-1):v=p+1}return b}function s(f,h,d,v,m){for(var b=v-1;v<=m;){var p=v+m>>>1,k=f[p],M=d!==void 0?d(k,h):k-h;M<0?(b=p,v=p+1):m=p-1}return b}function l(f,h,d,v,m){for(var b=v-1;v<=m;){var p=v+m>>>1,k=f[p],M=d!==void 0?d(k,h):k-h;M<=0?(b=p,v=p+1):m=p-1}return b}function u(f,h,d,v,m){for(;v<=m;){var b=v+m>>>1,p=f[b],k=d!==void 0?d(p,h):p-h;if(k===0)return b;k<=0?v=b+1:m=b-1}return-1}function c(f,h,d,v,m,b){return typeof d=="function"?b(f,h,d,v===void 0?0:v|0,m===void 0?f.length-1:m|0):b(f,h,void 0,d===void 0?0:d|0,v===void 0?f.length-1:v|0)}i.exports={ge:function(f,h,d,v,m){return c(f,h,d,v,m,a)},gt:function(f,h,d,v,m){return c(f,h,d,v,m,o)},lt:function(f,h,d,v,m){return c(f,h,d,v,m,s)},le:function(f,h,d,v,m){return c(f,h,d,v,m,l)},eq:function(f,h,d,v,m){return c(f,h,d,v,m,u)}}},8828:function(i,a){"use strict";"use restrict";var o=32;a.INT_BITS=o,a.INT_MAX=2147483647,a.INT_MIN=-1<0)-(u<0)},a.abs=function(u){var c=u>>o-1;return(u^c)-c},a.min=function(u,c){return c^(u^c)&-(u65535)<<4,u>>>=c,f=(u>255)<<3,u>>>=f,c|=f,f=(u>15)<<2,u>>>=f,c|=f,f=(u>3)<<1,u>>>=f,c|=f,c|u>>1},a.log10=function(u){return u>=1e9?9:u>=1e8?8:u>=1e7?7:u>=1e6?6:u>=1e5?5:u>=1e4?4:u>=1e3?3:u>=100?2:u>=10?1:0},a.popCount=function(u){return u=u-(u>>>1&1431655765),u=(u&858993459)+(u>>>2&858993459),(u+(u>>>4)&252645135)*16843009>>>24};function s(u){var c=32;return u&=-u,u&&c--,u&65535&&(c-=16),u&16711935&&(c-=8),u&252645135&&(c-=4),u&858993459&&(c-=2),u&1431655765&&(c-=1),c}a.countTrailingZeros=s,a.nextPow2=function(u){return u+=u===0,--u,u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u+1},a.prevPow2=function(u){return u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u-(u>>>1)},a.parity=function(u){return u^=u>>>16,u^=u>>>8,u^=u>>>4,u&=15,27030>>>u&1};var l=new Array(256);(function(u){for(var c=0;c<256;++c){var f=c,h=c,d=7;for(f>>>=1;f;f>>>=1)h<<=1,h|=f&1,--d;u[c]=h<>>8&255]<<16|l[u>>>16&255]<<8|l[u>>>24&255]},a.interleave2=function(u,c){return u&=65535,u=(u|u<<8)&16711935,u=(u|u<<4)&252645135,u=(u|u<<2)&858993459,u=(u|u<<1)&1431655765,c&=65535,c=(c|c<<8)&16711935,c=(c|c<<4)&252645135,c=(c|c<<2)&858993459,c=(c|c<<1)&1431655765,u|c<<1},a.deinterleave2=function(u,c){return u=u>>>c&1431655765,u=(u|u>>>1)&858993459,u=(u|u>>>2)&252645135,u=(u|u>>>4)&16711935,u=(u|u>>>16)&65535,u<<16>>16},a.interleave3=function(u,c,f){return u&=1023,u=(u|u<<16)&4278190335,u=(u|u<<8)&251719695,u=(u|u<<4)&3272356035,u=(u|u<<2)&1227133513,c&=1023,c=(c|c<<16)&4278190335,c=(c|c<<8)&251719695,c=(c|c<<4)&3272356035,c=(c|c<<2)&1227133513,u|=c<<1,f&=1023,f=(f|f<<16)&4278190335,f=(f|f<<8)&251719695,f=(f|f<<4)&3272356035,f=(f|f<<2)&1227133513,u|f<<2},a.deinterleave3=function(u,c){return u=u>>>c&1227133513,u=(u|u>>>2)&3272356035,u=(u|u>>>4)&251719695,u=(u|u>>>8)&4278190335,u=(u|u>>>16)&1023,u<<22>>22},a.nextCombination=function(u){var c=u|u-1;return c+1|(~c&-~c)-1>>>s(u)+1}},6859:function(i,a,o){i=o.nmd(i),function(s,l){"use strict";function u(j,N){if(!j)throw new Error(N||"Assertion failed")}function c(j,N){j.super_=N;var H=function(){};H.prototype=N.prototype,j.prototype=new H,j.prototype.constructor=j}function f(j,N,H){if(f.isBN(j))return j;this.negative=0,this.words=null,this.length=0,this.red=null,j!==null&&((N==="le"||N==="be")&&(H=N,N=10),this._init(j||0,N||10,H||"be"))}typeof s=="object"?s.exports=f:l.BN=f,f.BN=f,f.wordSize=26;var h;try{typeof window!="undefined"&&typeof window.Buffer!="undefined"?h=window.Buffer:h=o(7790).Buffer}catch(j){}f.isBN=function(N){return N instanceof f?!0:N!==null&&typeof N=="object"&&N.constructor.wordSize===f.wordSize&&Array.isArray(N.words)},f.max=function(N,H){return N.cmp(H)>0?N:H},f.min=function(N,H){return N.cmp(H)<0?N:H},f.prototype._init=function(N,H,ie){if(typeof N=="number")return this._initNumber(N,H,ie);if(typeof N=="object")return this._initArray(N,H,ie);H==="hex"&&(H=16),u(H===(H|0)&&H>=2&&H<=36),N=N.toString().replace(/\s+/g,"");var ae=0;N[0]==="-"&&(ae++,this.negative=1),ae=0;ae-=3)Ee=N[ae]|N[ae-1]<<8|N[ae-2]<<16,this.words[_e]|=Ee<>>26-Ce&67108863,Ce+=24,Ce>=26&&(Ce-=26,_e++);else if(ie==="le")for(ae=0,_e=0;ae>>26-Ce&67108863,Ce+=24,Ce>=26&&(Ce-=26,_e++);return this.strip()};function d(j,N){var H=j.charCodeAt(N);return H>=65&&H<=70?H-55:H>=97&&H<=102?H-87:H-48&15}function v(j,N,H){var ie=d(j,H);return H-1>=N&&(ie|=d(j,H-1)<<4),ie}f.prototype._parseHex=function(N,H,ie){this.length=Math.ceil((N.length-H)/6),this.words=new Array(this.length);for(var ae=0;ae=H;ae-=2)Ce=v(N,H,ae)<<_e,this.words[Ee]|=Ce&67108863,_e>=18?(_e-=18,Ee+=1,this.words[Ee]|=Ce>>>26):_e+=8;else{var ge=N.length-H;for(ae=ge%2===0?H+1:H;ae=18?(_e-=18,Ee+=1,this.words[Ee]|=Ce>>>26):_e+=8}this.strip()};function m(j,N,H,ie){for(var ae=0,_e=Math.min(j.length,H),Ee=N;Ee<_e;Ee++){var Ce=j.charCodeAt(Ee)-48;ae*=ie,Ce>=49?ae+=Ce-49+10:Ce>=17?ae+=Ce-17+10:ae+=Ce}return ae}f.prototype._parseBase=function(N,H,ie){this.words=[0],this.length=1;for(var ae=0,_e=1;_e<=67108863;_e*=H)ae++;ae--,_e=_e/H|0;for(var Ee=N.length-ie,Ce=Ee%ae,ge=Math.min(Ee,Ee-Ce)+ie,re=0,Se=ie;Se1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},f.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},f.prototype.inspect=function(){return(this.red?""};var b=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],p=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],k=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];f.prototype.toString=function(N,H){N=N||10,H=H|0||1;var ie;if(N===16||N==="hex"){ie="";for(var ae=0,_e=0,Ee=0;Ee>>24-ae&16777215,ae+=2,ae>=26&&(ae-=26,Ee--),_e!==0||Ee!==this.length-1?ie=b[6-ge.length]+ge+ie:ie=ge+ie}for(_e!==0&&(ie=_e.toString(16)+ie);ie.length%H!==0;)ie="0"+ie;return this.negative!==0&&(ie="-"+ie),ie}if(N===(N|0)&&N>=2&&N<=36){var re=p[N],Se=k[N];ie="";var ke=this.clone();for(ke.negative=0;!ke.isZero();){var be=ke.modn(Se).toString(N);ke=ke.idivn(Se),ke.isZero()?ie=be+ie:ie=b[re-be.length]+be+ie}for(this.isZero()&&(ie="0"+ie);ie.length%H!==0;)ie="0"+ie;return this.negative!==0&&(ie="-"+ie),ie}u(!1,"Base should be between 2 and 36")},f.prototype.toNumber=function(){var N=this.words[0];return this.length===2?N+=this.words[1]*67108864:this.length===3&&this.words[2]===1?N+=4503599627370496+this.words[1]*67108864:this.length>2&&u(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-N:N},f.prototype.toJSON=function(){return this.toString(16)},f.prototype.toBuffer=function(N,H){return u(typeof h!="undefined"),this.toArrayLike(h,N,H)},f.prototype.toArray=function(N,H){return this.toArrayLike(Array,N,H)},f.prototype.toArrayLike=function(N,H,ie){var ae=this.byteLength(),_e=ie||Math.max(1,ae);u(ae<=_e,"byte array longer than desired length"),u(_e>0,"Requested array length <= 0"),this.strip();var Ee=H==="le",Ce=new N(_e),ge,re,Se=this.clone();if(Ee){for(re=0;!Se.isZero();re++)ge=Se.andln(255),Se.iushrn(8),Ce[re]=ge;for(;re<_e;re++)Ce[re]=0}else{for(re=0;re<_e-ae;re++)Ce[re]=0;for(re=0;!Se.isZero();re++)ge=Se.andln(255),Se.iushrn(8),Ce[_e-re-1]=ge}return Ce},Math.clz32?f.prototype._countBits=function(N){return 32-Math.clz32(N)}:f.prototype._countBits=function(N){var H=N,ie=0;return H>=4096&&(ie+=13,H>>>=13),H>=64&&(ie+=7,H>>>=7),H>=8&&(ie+=4,H>>>=4),H>=2&&(ie+=2,H>>>=2),ie+H},f.prototype._zeroBits=function(N){if(N===0)return 26;var H=N,ie=0;return(H&8191)===0&&(ie+=13,H>>>=13),(H&127)===0&&(ie+=7,H>>>=7),(H&15)===0&&(ie+=4,H>>>=4),(H&3)===0&&(ie+=2,H>>>=2),(H&1)===0&&ie++,ie},f.prototype.bitLength=function(){var N=this.words[this.length-1],H=this._countBits(N);return(this.length-1)*26+H};function M(j){for(var N=new Array(j.bitLength()),H=0;H>>ae}return N}f.prototype.zeroBits=function(){if(this.isZero())return 0;for(var N=0,H=0;HN.length?this.clone().ior(N):N.clone().ior(this)},f.prototype.uor=function(N){return this.length>N.length?this.clone().iuor(N):N.clone().iuor(this)},f.prototype.iuand=function(N){var H;this.length>N.length?H=N:H=this;for(var ie=0;ieN.length?this.clone().iand(N):N.clone().iand(this)},f.prototype.uand=function(N){return this.length>N.length?this.clone().iuand(N):N.clone().iuand(this)},f.prototype.iuxor=function(N){var H,ie;this.length>N.length?(H=this,ie=N):(H=N,ie=this);for(var ae=0;aeN.length?this.clone().ixor(N):N.clone().ixor(this)},f.prototype.uxor=function(N){return this.length>N.length?this.clone().iuxor(N):N.clone().iuxor(this)},f.prototype.inotn=function(N){u(typeof N=="number"&&N>=0);var H=Math.ceil(N/26)|0,ie=N%26;this._expand(H),ie>0&&H--;for(var ae=0;ae0&&(this.words[ae]=~this.words[ae]&67108863>>26-ie),this.strip()},f.prototype.notn=function(N){return this.clone().inotn(N)},f.prototype.setn=function(N,H){u(typeof N=="number"&&N>=0);var ie=N/26|0,ae=N%26;return this._expand(ie+1),H?this.words[ie]=this.words[ie]|1<N.length?(ie=this,ae=N):(ie=N,ae=this);for(var _e=0,Ee=0;Ee>>26;for(;_e!==0&&Ee>>26;if(this.length=ie.length,_e!==0)this.words[this.length]=_e,this.length++;else if(ie!==this)for(;EeN.length?this.clone().iadd(N):N.clone().iadd(this)},f.prototype.isub=function(N){if(N.negative!==0){N.negative=0;var H=this.iadd(N);return N.negative=1,H._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(N),this.negative=1,this._normSign();var ie=this.cmp(N);if(ie===0)return this.negative=0,this.length=1,this.words[0]=0,this;var ae,_e;ie>0?(ae=this,_e=N):(ae=N,_e=this);for(var Ee=0,Ce=0;Ce<_e.length;Ce++)H=(ae.words[Ce]|0)-(_e.words[Ce]|0)+Ee,Ee=H>>26,this.words[Ce]=H&67108863;for(;Ee!==0&&Ce>26,this.words[Ce]=H&67108863;if(Ee===0&&Ce>>26,ke=ge&67108863,be=Math.min(re,N.length-1),Be=Math.max(0,re-j.length+1);Be<=be;Be++){var Le=re-Be|0;ae=j.words[Le]|0,_e=N.words[Be]|0,Ee=ae*_e+ke,Se+=Ee/67108864|0,ke=Ee&67108863}H.words[re]=ke|0,ge=Se|0}return ge!==0?H.words[re]=ge|0:H.length--,H.strip()}var L=function(N,H,ie){var ae=N.words,_e=H.words,Ee=ie.words,Ce=0,ge,re,Se,ke=ae[0]|0,be=ke&8191,Be=ke>>>13,Le=ae[1]|0,me=Le&8191,Pe=Le>>>13,ce=ae[2]|0,He=ce&8191,lt=ce>>>13,mt=ae[3]|0,Ht=mt&8191,at=mt>>>13,ct=ae[4]|0,ar=ct&8191,Vt=ct>>>13,rr=ae[5]|0,tt=rr&8191,je=rr>>>13,Ue=ae[6]|0,Ae=Ue&8191,rt=Ue>>>13,St=ae[7]|0,Tt=St&8191,dt=St>>>13,Et=ae[8]|0,pt=Et&8191,jt=Et>>>13,or=ae[9]|0,mr=or&8191,Ar=or>>>13,ei=_e[0]|0,qr=ei&8191,jr=ei>>>13,gt=_e[1]|0,Ge=gt&8191,Je=gt>>>13,We=_e[2]|0,et=We&8191,xt=We>>>13,At=_e[3]|0,Kt=At&8191,Qt=At>>>13,Mr=_e[4]|0,Gr=Mr&8191,Ir=Mr>>>13,Yr=_e[5]|0,_i=Yr&8191,Pi=Yr>>>13,ai=_e[6]|0,mi=ai&8191,un=ai>>>13,Fn=_e[7]|0,An=Fn&8191,Hn=Fn>>>13,Qn=_e[8]|0,Vi=Qn&8191,Kn=Qn>>>13,Jn=_e[9]|0,Gt=Jn&8191,wt=Jn>>>13;ie.negative=N.negative^H.negative,ie.length=19,ge=Math.imul(be,qr),re=Math.imul(be,jr),re=re+Math.imul(Be,qr)|0,Se=Math.imul(Be,jr);var tr=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(tr>>>26)|0,tr&=67108863,ge=Math.imul(me,qr),re=Math.imul(me,jr),re=re+Math.imul(Pe,qr)|0,Se=Math.imul(Pe,jr),ge=ge+Math.imul(be,Ge)|0,re=re+Math.imul(be,Je)|0,re=re+Math.imul(Be,Ge)|0,Se=Se+Math.imul(Be,Je)|0;var ir=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(ir>>>26)|0,ir&=67108863,ge=Math.imul(He,qr),re=Math.imul(He,jr),re=re+Math.imul(lt,qr)|0,Se=Math.imul(lt,jr),ge=ge+Math.imul(me,Ge)|0,re=re+Math.imul(me,Je)|0,re=re+Math.imul(Pe,Ge)|0,Se=Se+Math.imul(Pe,Je)|0,ge=ge+Math.imul(be,et)|0,re=re+Math.imul(be,xt)|0,re=re+Math.imul(Be,et)|0,Se=Se+Math.imul(Be,xt)|0;var wr=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(wr>>>26)|0,wr&=67108863,ge=Math.imul(Ht,qr),re=Math.imul(Ht,jr),re=re+Math.imul(at,qr)|0,Se=Math.imul(at,jr),ge=ge+Math.imul(He,Ge)|0,re=re+Math.imul(He,Je)|0,re=re+Math.imul(lt,Ge)|0,Se=Se+Math.imul(lt,Je)|0,ge=ge+Math.imul(me,et)|0,re=re+Math.imul(me,xt)|0,re=re+Math.imul(Pe,et)|0,Se=Se+Math.imul(Pe,xt)|0,ge=ge+Math.imul(be,Kt)|0,re=re+Math.imul(be,Qt)|0,re=re+Math.imul(Be,Kt)|0,Se=Se+Math.imul(Be,Qt)|0;var Xr=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(Xr>>>26)|0,Xr&=67108863,ge=Math.imul(ar,qr),re=Math.imul(ar,jr),re=re+Math.imul(Vt,qr)|0,Se=Math.imul(Vt,jr),ge=ge+Math.imul(Ht,Ge)|0,re=re+Math.imul(Ht,Je)|0,re=re+Math.imul(at,Ge)|0,Se=Se+Math.imul(at,Je)|0,ge=ge+Math.imul(He,et)|0,re=re+Math.imul(He,xt)|0,re=re+Math.imul(lt,et)|0,Se=Se+Math.imul(lt,xt)|0,ge=ge+Math.imul(me,Kt)|0,re=re+Math.imul(me,Qt)|0,re=re+Math.imul(Pe,Kt)|0,Se=Se+Math.imul(Pe,Qt)|0,ge=ge+Math.imul(be,Gr)|0,re=re+Math.imul(be,Ir)|0,re=re+Math.imul(Be,Gr)|0,Se=Se+Math.imul(Be,Ir)|0;var ti=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(ti>>>26)|0,ti&=67108863,ge=Math.imul(tt,qr),re=Math.imul(tt,jr),re=re+Math.imul(je,qr)|0,Se=Math.imul(je,jr),ge=ge+Math.imul(ar,Ge)|0,re=re+Math.imul(ar,Je)|0,re=re+Math.imul(Vt,Ge)|0,Se=Se+Math.imul(Vt,Je)|0,ge=ge+Math.imul(Ht,et)|0,re=re+Math.imul(Ht,xt)|0,re=re+Math.imul(at,et)|0,Se=Se+Math.imul(at,xt)|0,ge=ge+Math.imul(He,Kt)|0,re=re+Math.imul(He,Qt)|0,re=re+Math.imul(lt,Kt)|0,Se=Se+Math.imul(lt,Qt)|0,ge=ge+Math.imul(me,Gr)|0,re=re+Math.imul(me,Ir)|0,re=re+Math.imul(Pe,Gr)|0,Se=Se+Math.imul(Pe,Ir)|0,ge=ge+Math.imul(be,_i)|0,re=re+Math.imul(be,Pi)|0,re=re+Math.imul(Be,_i)|0,Se=Se+Math.imul(Be,Pi)|0;var $r=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+($r>>>26)|0,$r&=67108863,ge=Math.imul(Ae,qr),re=Math.imul(Ae,jr),re=re+Math.imul(rt,qr)|0,Se=Math.imul(rt,jr),ge=ge+Math.imul(tt,Ge)|0,re=re+Math.imul(tt,Je)|0,re=re+Math.imul(je,Ge)|0,Se=Se+Math.imul(je,Je)|0,ge=ge+Math.imul(ar,et)|0,re=re+Math.imul(ar,xt)|0,re=re+Math.imul(Vt,et)|0,Se=Se+Math.imul(Vt,xt)|0,ge=ge+Math.imul(Ht,Kt)|0,re=re+Math.imul(Ht,Qt)|0,re=re+Math.imul(at,Kt)|0,Se=Se+Math.imul(at,Qt)|0,ge=ge+Math.imul(He,Gr)|0,re=re+Math.imul(He,Ir)|0,re=re+Math.imul(lt,Gr)|0,Se=Se+Math.imul(lt,Ir)|0,ge=ge+Math.imul(me,_i)|0,re=re+Math.imul(me,Pi)|0,re=re+Math.imul(Pe,_i)|0,Se=Se+Math.imul(Pe,Pi)|0,ge=ge+Math.imul(be,mi)|0,re=re+Math.imul(be,un)|0,re=re+Math.imul(Be,mi)|0,Se=Se+Math.imul(Be,un)|0;var Ri=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(Ri>>>26)|0,Ri&=67108863,ge=Math.imul(Tt,qr),re=Math.imul(Tt,jr),re=re+Math.imul(dt,qr)|0,Se=Math.imul(dt,jr),ge=ge+Math.imul(Ae,Ge)|0,re=re+Math.imul(Ae,Je)|0,re=re+Math.imul(rt,Ge)|0,Se=Se+Math.imul(rt,Je)|0,ge=ge+Math.imul(tt,et)|0,re=re+Math.imul(tt,xt)|0,re=re+Math.imul(je,et)|0,Se=Se+Math.imul(je,xt)|0,ge=ge+Math.imul(ar,Kt)|0,re=re+Math.imul(ar,Qt)|0,re=re+Math.imul(Vt,Kt)|0,Se=Se+Math.imul(Vt,Qt)|0,ge=ge+Math.imul(Ht,Gr)|0,re=re+Math.imul(Ht,Ir)|0,re=re+Math.imul(at,Gr)|0,Se=Se+Math.imul(at,Ir)|0,ge=ge+Math.imul(He,_i)|0,re=re+Math.imul(He,Pi)|0,re=re+Math.imul(lt,_i)|0,Se=Se+Math.imul(lt,Pi)|0,ge=ge+Math.imul(me,mi)|0,re=re+Math.imul(me,un)|0,re=re+Math.imul(Pe,mi)|0,Se=Se+Math.imul(Pe,un)|0,ge=ge+Math.imul(be,An)|0,re=re+Math.imul(be,Hn)|0,re=re+Math.imul(Be,An)|0,Se=Se+Math.imul(Be,Hn)|0;var Zi=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(Zi>>>26)|0,Zi&=67108863,ge=Math.imul(pt,qr),re=Math.imul(pt,jr),re=re+Math.imul(jt,qr)|0,Se=Math.imul(jt,jr),ge=ge+Math.imul(Tt,Ge)|0,re=re+Math.imul(Tt,Je)|0,re=re+Math.imul(dt,Ge)|0,Se=Se+Math.imul(dt,Je)|0,ge=ge+Math.imul(Ae,et)|0,re=re+Math.imul(Ae,xt)|0,re=re+Math.imul(rt,et)|0,Se=Se+Math.imul(rt,xt)|0,ge=ge+Math.imul(tt,Kt)|0,re=re+Math.imul(tt,Qt)|0,re=re+Math.imul(je,Kt)|0,Se=Se+Math.imul(je,Qt)|0,ge=ge+Math.imul(ar,Gr)|0,re=re+Math.imul(ar,Ir)|0,re=re+Math.imul(Vt,Gr)|0,Se=Se+Math.imul(Vt,Ir)|0,ge=ge+Math.imul(Ht,_i)|0,re=re+Math.imul(Ht,Pi)|0,re=re+Math.imul(at,_i)|0,Se=Se+Math.imul(at,Pi)|0,ge=ge+Math.imul(He,mi)|0,re=re+Math.imul(He,un)|0,re=re+Math.imul(lt,mi)|0,Se=Se+Math.imul(lt,un)|0,ge=ge+Math.imul(me,An)|0,re=re+Math.imul(me,Hn)|0,re=re+Math.imul(Pe,An)|0,Se=Se+Math.imul(Pe,Hn)|0,ge=ge+Math.imul(be,Vi)|0,re=re+Math.imul(be,Kn)|0,re=re+Math.imul(Be,Vi)|0,Se=Se+Math.imul(Be,Kn)|0;var en=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(en>>>26)|0,en&=67108863,ge=Math.imul(mr,qr),re=Math.imul(mr,jr),re=re+Math.imul(Ar,qr)|0,Se=Math.imul(Ar,jr),ge=ge+Math.imul(pt,Ge)|0,re=re+Math.imul(pt,Je)|0,re=re+Math.imul(jt,Ge)|0,Se=Se+Math.imul(jt,Je)|0,ge=ge+Math.imul(Tt,et)|0,re=re+Math.imul(Tt,xt)|0,re=re+Math.imul(dt,et)|0,Se=Se+Math.imul(dt,xt)|0,ge=ge+Math.imul(Ae,Kt)|0,re=re+Math.imul(Ae,Qt)|0,re=re+Math.imul(rt,Kt)|0,Se=Se+Math.imul(rt,Qt)|0,ge=ge+Math.imul(tt,Gr)|0,re=re+Math.imul(tt,Ir)|0,re=re+Math.imul(je,Gr)|0,Se=Se+Math.imul(je,Ir)|0,ge=ge+Math.imul(ar,_i)|0,re=re+Math.imul(ar,Pi)|0,re=re+Math.imul(Vt,_i)|0,Se=Se+Math.imul(Vt,Pi)|0,ge=ge+Math.imul(Ht,mi)|0,re=re+Math.imul(Ht,un)|0,re=re+Math.imul(at,mi)|0,Se=Se+Math.imul(at,un)|0,ge=ge+Math.imul(He,An)|0,re=re+Math.imul(He,Hn)|0,re=re+Math.imul(lt,An)|0,Se=Se+Math.imul(lt,Hn)|0,ge=ge+Math.imul(me,Vi)|0,re=re+Math.imul(me,Kn)|0,re=re+Math.imul(Pe,Vi)|0,Se=Se+Math.imul(Pe,Kn)|0,ge=ge+Math.imul(be,Gt)|0,re=re+Math.imul(be,wt)|0,re=re+Math.imul(Be,Gt)|0,Se=Se+Math.imul(Be,wt)|0;var fn=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(fn>>>26)|0,fn&=67108863,ge=Math.imul(mr,Ge),re=Math.imul(mr,Je),re=re+Math.imul(Ar,Ge)|0,Se=Math.imul(Ar,Je),ge=ge+Math.imul(pt,et)|0,re=re+Math.imul(pt,xt)|0,re=re+Math.imul(jt,et)|0,Se=Se+Math.imul(jt,xt)|0,ge=ge+Math.imul(Tt,Kt)|0,re=re+Math.imul(Tt,Qt)|0,re=re+Math.imul(dt,Kt)|0,Se=Se+Math.imul(dt,Qt)|0,ge=ge+Math.imul(Ae,Gr)|0,re=re+Math.imul(Ae,Ir)|0,re=re+Math.imul(rt,Gr)|0,Se=Se+Math.imul(rt,Ir)|0,ge=ge+Math.imul(tt,_i)|0,re=re+Math.imul(tt,Pi)|0,re=re+Math.imul(je,_i)|0,Se=Se+Math.imul(je,Pi)|0,ge=ge+Math.imul(ar,mi)|0,re=re+Math.imul(ar,un)|0,re=re+Math.imul(Vt,mi)|0,Se=Se+Math.imul(Vt,un)|0,ge=ge+Math.imul(Ht,An)|0,re=re+Math.imul(Ht,Hn)|0,re=re+Math.imul(at,An)|0,Se=Se+Math.imul(at,Hn)|0,ge=ge+Math.imul(He,Vi)|0,re=re+Math.imul(He,Kn)|0,re=re+Math.imul(lt,Vi)|0,Se=Se+Math.imul(lt,Kn)|0,ge=ge+Math.imul(me,Gt)|0,re=re+Math.imul(me,wt)|0,re=re+Math.imul(Pe,Gt)|0,Se=Se+Math.imul(Pe,wt)|0;var yn=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(yn>>>26)|0,yn&=67108863,ge=Math.imul(mr,et),re=Math.imul(mr,xt),re=re+Math.imul(Ar,et)|0,Se=Math.imul(Ar,xt),ge=ge+Math.imul(pt,Kt)|0,re=re+Math.imul(pt,Qt)|0,re=re+Math.imul(jt,Kt)|0,Se=Se+Math.imul(jt,Qt)|0,ge=ge+Math.imul(Tt,Gr)|0,re=re+Math.imul(Tt,Ir)|0,re=re+Math.imul(dt,Gr)|0,Se=Se+Math.imul(dt,Ir)|0,ge=ge+Math.imul(Ae,_i)|0,re=re+Math.imul(Ae,Pi)|0,re=re+Math.imul(rt,_i)|0,Se=Se+Math.imul(rt,Pi)|0,ge=ge+Math.imul(tt,mi)|0,re=re+Math.imul(tt,un)|0,re=re+Math.imul(je,mi)|0,Se=Se+Math.imul(je,un)|0,ge=ge+Math.imul(ar,An)|0,re=re+Math.imul(ar,Hn)|0,re=re+Math.imul(Vt,An)|0,Se=Se+Math.imul(Vt,Hn)|0,ge=ge+Math.imul(Ht,Vi)|0,re=re+Math.imul(Ht,Kn)|0,re=re+Math.imul(at,Vi)|0,Se=Se+Math.imul(at,Kn)|0,ge=ge+Math.imul(He,Gt)|0,re=re+Math.imul(He,wt)|0,re=re+Math.imul(lt,Gt)|0,Se=Se+Math.imul(lt,wt)|0;var Mn=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(Mn>>>26)|0,Mn&=67108863,ge=Math.imul(mr,Kt),re=Math.imul(mr,Qt),re=re+Math.imul(Ar,Kt)|0,Se=Math.imul(Ar,Qt),ge=ge+Math.imul(pt,Gr)|0,re=re+Math.imul(pt,Ir)|0,re=re+Math.imul(jt,Gr)|0,Se=Se+Math.imul(jt,Ir)|0,ge=ge+Math.imul(Tt,_i)|0,re=re+Math.imul(Tt,Pi)|0,re=re+Math.imul(dt,_i)|0,Se=Se+Math.imul(dt,Pi)|0,ge=ge+Math.imul(Ae,mi)|0,re=re+Math.imul(Ae,un)|0,re=re+Math.imul(rt,mi)|0,Se=Se+Math.imul(rt,un)|0,ge=ge+Math.imul(tt,An)|0,re=re+Math.imul(tt,Hn)|0,re=re+Math.imul(je,An)|0,Se=Se+Math.imul(je,Hn)|0,ge=ge+Math.imul(ar,Vi)|0,re=re+Math.imul(ar,Kn)|0,re=re+Math.imul(Vt,Vi)|0,Se=Se+Math.imul(Vt,Kn)|0,ge=ge+Math.imul(Ht,Gt)|0,re=re+Math.imul(Ht,wt)|0,re=re+Math.imul(at,Gt)|0,Se=Se+Math.imul(at,wt)|0;var Ba=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(Ba>>>26)|0,Ba&=67108863,ge=Math.imul(mr,Gr),re=Math.imul(mr,Ir),re=re+Math.imul(Ar,Gr)|0,Se=Math.imul(Ar,Ir),ge=ge+Math.imul(pt,_i)|0,re=re+Math.imul(pt,Pi)|0,re=re+Math.imul(jt,_i)|0,Se=Se+Math.imul(jt,Pi)|0,ge=ge+Math.imul(Tt,mi)|0,re=re+Math.imul(Tt,un)|0,re=re+Math.imul(dt,mi)|0,Se=Se+Math.imul(dt,un)|0,ge=ge+Math.imul(Ae,An)|0,re=re+Math.imul(Ae,Hn)|0,re=re+Math.imul(rt,An)|0,Se=Se+Math.imul(rt,Hn)|0,ge=ge+Math.imul(tt,Vi)|0,re=re+Math.imul(tt,Kn)|0,re=re+Math.imul(je,Vi)|0,Se=Se+Math.imul(je,Kn)|0,ge=ge+Math.imul(ar,Gt)|0,re=re+Math.imul(ar,wt)|0,re=re+Math.imul(Vt,Gt)|0,Se=Se+Math.imul(Vt,wt)|0;var ua=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(ua>>>26)|0,ua&=67108863,ge=Math.imul(mr,_i),re=Math.imul(mr,Pi),re=re+Math.imul(Ar,_i)|0,Se=Math.imul(Ar,Pi),ge=ge+Math.imul(pt,mi)|0,re=re+Math.imul(pt,un)|0,re=re+Math.imul(jt,mi)|0,Se=Se+Math.imul(jt,un)|0,ge=ge+Math.imul(Tt,An)|0,re=re+Math.imul(Tt,Hn)|0,re=re+Math.imul(dt,An)|0,Se=Se+Math.imul(dt,Hn)|0,ge=ge+Math.imul(Ae,Vi)|0,re=re+Math.imul(Ae,Kn)|0,re=re+Math.imul(rt,Vi)|0,Se=Se+Math.imul(rt,Kn)|0,ge=ge+Math.imul(tt,Gt)|0,re=re+Math.imul(tt,wt)|0,re=re+Math.imul(je,Gt)|0,Se=Se+Math.imul(je,wt)|0;var ma=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(ma>>>26)|0,ma&=67108863,ge=Math.imul(mr,mi),re=Math.imul(mr,un),re=re+Math.imul(Ar,mi)|0,Se=Math.imul(Ar,un),ge=ge+Math.imul(pt,An)|0,re=re+Math.imul(pt,Hn)|0,re=re+Math.imul(jt,An)|0,Se=Se+Math.imul(jt,Hn)|0,ge=ge+Math.imul(Tt,Vi)|0,re=re+Math.imul(Tt,Kn)|0,re=re+Math.imul(dt,Vi)|0,Se=Se+Math.imul(dt,Kn)|0,ge=ge+Math.imul(Ae,Gt)|0,re=re+Math.imul(Ae,wt)|0,re=re+Math.imul(rt,Gt)|0,Se=Se+Math.imul(rt,wt)|0;var Wa=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(Wa>>>26)|0,Wa&=67108863,ge=Math.imul(mr,An),re=Math.imul(mr,Hn),re=re+Math.imul(Ar,An)|0,Se=Math.imul(Ar,Hn),ge=ge+Math.imul(pt,Vi)|0,re=re+Math.imul(pt,Kn)|0,re=re+Math.imul(jt,Vi)|0,Se=Se+Math.imul(jt,Kn)|0,ge=ge+Math.imul(Tt,Gt)|0,re=re+Math.imul(Tt,wt)|0,re=re+Math.imul(dt,Gt)|0,Se=Se+Math.imul(dt,wt)|0;var Fa=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(Fa>>>26)|0,Fa&=67108863,ge=Math.imul(mr,Vi),re=Math.imul(mr,Kn),re=re+Math.imul(Ar,Vi)|0,Se=Math.imul(Ar,Kn),ge=ge+Math.imul(pt,Gt)|0,re=re+Math.imul(pt,wt)|0,re=re+Math.imul(jt,Gt)|0,Se=Se+Math.imul(jt,wt)|0;var Xo=(Ce+ge|0)+((re&8191)<<13)|0;Ce=(Se+(re>>>13)|0)+(Xo>>>26)|0,Xo&=67108863,ge=Math.imul(mr,Gt),re=Math.imul(mr,wt),re=re+Math.imul(Ar,Gt)|0,Se=Math.imul(Ar,wt);var da=(Ce+ge|0)+((re&8191)<<13)|0;return Ce=(Se+(re>>>13)|0)+(da>>>26)|0,da&=67108863,Ee[0]=tr,Ee[1]=ir,Ee[2]=wr,Ee[3]=Xr,Ee[4]=ti,Ee[5]=$r,Ee[6]=Ri,Ee[7]=Zi,Ee[8]=en,Ee[9]=fn,Ee[10]=yn,Ee[11]=Mn,Ee[12]=Ba,Ee[13]=ua,Ee[14]=ma,Ee[15]=Wa,Ee[16]=Fa,Ee[17]=Xo,Ee[18]=da,Ce!==0&&(Ee[19]=Ce,ie.length++),ie};Math.imul||(L=T);function x(j,N,H){H.negative=N.negative^j.negative,H.length=j.length+N.length;for(var ie=0,ae=0,_e=0;_e>>26)|0,ae+=Ee>>>26,Ee&=67108863}H.words[_e]=Ce,ie=Ee,Ee=ae}return ie!==0?H.words[_e]=ie:H.length--,H.strip()}function C(j,N,H){var ie=new S;return ie.mulp(j,N,H)}f.prototype.mulTo=function(N,H){var ie,ae=this.length+N.length;return this.length===10&&N.length===10?ie=L(this,N,H):ae<63?ie=T(this,N,H):ae<1024?ie=x(this,N,H):ie=C(this,N,H),ie};function S(j,N){this.x=j,this.y=N}S.prototype.makeRBT=function(N){for(var H=new Array(N),ie=f.prototype._countBits(N)-1,ae=0;ae>=1;return ae},S.prototype.permute=function(N,H,ie,ae,_e,Ee){for(var Ce=0;Ce>>1)_e++;return 1<<_e+1+ae},S.prototype.conjugate=function(N,H,ie){if(!(ie<=1))for(var ae=0;ae>>13,ie[2*Ee+1]=_e&8191,_e=_e>>>13;for(Ee=2*H;Ee>=26,H+=ae/67108864|0,H+=_e>>>26,this.words[ie]=_e&67108863}return H!==0&&(this.words[ie]=H,this.length++),this.length=N===0?1:this.length,this},f.prototype.muln=function(N){return this.clone().imuln(N)},f.prototype.sqr=function(){return this.mul(this)},f.prototype.isqr=function(){return this.imul(this.clone())},f.prototype.pow=function(N){var H=M(N);if(H.length===0)return new f(1);for(var ie=this,ae=0;ae=0);var H=N%26,ie=(N-H)/26,ae=67108863>>>26-H<<26-H,_e;if(H!==0){var Ee=0;for(_e=0;_e>>26-H}Ee&&(this.words[_e]=Ee,this.length++)}if(ie!==0){for(_e=this.length-1;_e>=0;_e--)this.words[_e+ie]=this.words[_e];for(_e=0;_e=0);var ae;H?ae=(H-H%26)/26:ae=0;var _e=N%26,Ee=Math.min((N-_e)/26,this.length),Ce=67108863^67108863>>>_e<<_e,ge=ie;if(ae-=Ee,ae=Math.max(0,ae),ge){for(var re=0;reEe)for(this.length-=Ee,re=0;re=0&&(Se!==0||re>=ae);re--){var ke=this.words[re]|0;this.words[re]=Se<<26-_e|ke>>>_e,Se=ke&Ce}return ge&&Se!==0&&(ge.words[ge.length++]=Se),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},f.prototype.ishrn=function(N,H,ie){return u(this.negative===0),this.iushrn(N,H,ie)},f.prototype.shln=function(N){return this.clone().ishln(N)},f.prototype.ushln=function(N){return this.clone().iushln(N)},f.prototype.shrn=function(N){return this.clone().ishrn(N)},f.prototype.ushrn=function(N){return this.clone().iushrn(N)},f.prototype.testn=function(N){u(typeof N=="number"&&N>=0);var H=N%26,ie=(N-H)/26,ae=1<=0);var H=N%26,ie=(N-H)/26;if(u(this.negative===0,"imaskn works only with positive numbers"),this.length<=ie)return this;if(H!==0&&ie++,this.length=Math.min(ie,this.length),H!==0){var ae=67108863^67108863>>>H<=67108864;H++)this.words[H]-=67108864,H===this.length-1?this.words[H+1]=1:this.words[H+1]++;return this.length=Math.max(this.length,H+1),this},f.prototype.isubn=function(N){if(u(typeof N=="number"),u(N<67108864),N<0)return this.iaddn(-N);if(this.negative!==0)return this.negative=0,this.iaddn(N),this.negative=1,this;if(this.words[0]-=N,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var H=0;H>26)-(ge/67108864|0),this.words[_e+ie]=Ee&67108863}for(;_e>26,this.words[_e+ie]=Ee&67108863;if(Ce===0)return this.strip();for(u(Ce===-1),Ce=0,_e=0;_e>26,this.words[_e]=Ee&67108863;return this.negative=1,this.strip()},f.prototype._wordDiv=function(N,H){var ie=this.length-N.length,ae=this.clone(),_e=N,Ee=_e.words[_e.length-1]|0,Ce=this._countBits(Ee);ie=26-Ce,ie!==0&&(_e=_e.ushln(ie),ae.iushln(ie),Ee=_e.words[_e.length-1]|0);var ge=ae.length-_e.length,re;if(H!=="mod"){re=new f(null),re.length=ge+1,re.words=new Array(re.length);for(var Se=0;Se=0;be--){var Be=(ae.words[_e.length+be]|0)*67108864+(ae.words[_e.length+be-1]|0);for(Be=Math.min(Be/Ee|0,67108863),ae._ishlnsubmul(_e,Be,be);ae.negative!==0;)Be--,ae.negative=0,ae._ishlnsubmul(_e,1,be),ae.isZero()||(ae.negative^=1);re&&(re.words[be]=Be)}return re&&re.strip(),ae.strip(),H!=="div"&&ie!==0&&ae.iushrn(ie),{div:re||null,mod:ae}},f.prototype.divmod=function(N,H,ie){if(u(!N.isZero()),this.isZero())return{div:new f(0),mod:new f(0)};var ae,_e,Ee;return this.negative!==0&&N.negative===0?(Ee=this.neg().divmod(N,H),H!=="mod"&&(ae=Ee.div.neg()),H!=="div"&&(_e=Ee.mod.neg(),ie&&_e.negative!==0&&_e.iadd(N)),{div:ae,mod:_e}):this.negative===0&&N.negative!==0?(Ee=this.divmod(N.neg(),H),H!=="mod"&&(ae=Ee.div.neg()),{div:ae,mod:Ee.mod}):(this.negative&N.negative)!==0?(Ee=this.neg().divmod(N.neg(),H),H!=="div"&&(_e=Ee.mod.neg(),ie&&_e.negative!==0&&_e.isub(N)),{div:Ee.div,mod:_e}):N.length>this.length||this.cmp(N)<0?{div:new f(0),mod:this}:N.length===1?H==="div"?{div:this.divn(N.words[0]),mod:null}:H==="mod"?{div:null,mod:new f(this.modn(N.words[0]))}:{div:this.divn(N.words[0]),mod:new f(this.modn(N.words[0]))}:this._wordDiv(N,H)},f.prototype.div=function(N){return this.divmod(N,"div",!1).div},f.prototype.mod=function(N){return this.divmod(N,"mod",!1).mod},f.prototype.umod=function(N){return this.divmod(N,"mod",!0).mod},f.prototype.divRound=function(N){var H=this.divmod(N);if(H.mod.isZero())return H.div;var ie=H.div.negative!==0?H.mod.isub(N):H.mod,ae=N.ushrn(1),_e=N.andln(1),Ee=ie.cmp(ae);return Ee<0||_e===1&&Ee===0?H.div:H.div.negative!==0?H.div.isubn(1):H.div.iaddn(1)},f.prototype.modn=function(N){u(N<=67108863);for(var H=(1<<26)%N,ie=0,ae=this.length-1;ae>=0;ae--)ie=(H*ie+(this.words[ae]|0))%N;return ie},f.prototype.idivn=function(N){u(N<=67108863);for(var H=0,ie=this.length-1;ie>=0;ie--){var ae=(this.words[ie]|0)+H*67108864;this.words[ie]=ae/N|0,H=ae%N}return this.strip()},f.prototype.divn=function(N){return this.clone().idivn(N)},f.prototype.egcd=function(N){u(N.negative===0),u(!N.isZero());var H=this,ie=N.clone();H.negative!==0?H=H.umod(N):H=H.clone();for(var ae=new f(1),_e=new f(0),Ee=new f(0),Ce=new f(1),ge=0;H.isEven()&&ie.isEven();)H.iushrn(1),ie.iushrn(1),++ge;for(var re=ie.clone(),Se=H.clone();!H.isZero();){for(var ke=0,be=1;(H.words[0]&be)===0&&ke<26;++ke,be<<=1);if(ke>0)for(H.iushrn(ke);ke-- >0;)(ae.isOdd()||_e.isOdd())&&(ae.iadd(re),_e.isub(Se)),ae.iushrn(1),_e.iushrn(1);for(var Be=0,Le=1;(ie.words[0]&Le)===0&&Be<26;++Be,Le<<=1);if(Be>0)for(ie.iushrn(Be);Be-- >0;)(Ee.isOdd()||Ce.isOdd())&&(Ee.iadd(re),Ce.isub(Se)),Ee.iushrn(1),Ce.iushrn(1);H.cmp(ie)>=0?(H.isub(ie),ae.isub(Ee),_e.isub(Ce)):(ie.isub(H),Ee.isub(ae),Ce.isub(_e))}return{a:Ee,b:Ce,gcd:ie.iushln(ge)}},f.prototype._invmp=function(N){u(N.negative===0),u(!N.isZero());var H=this,ie=N.clone();H.negative!==0?H=H.umod(N):H=H.clone();for(var ae=new f(1),_e=new f(0),Ee=ie.clone();H.cmpn(1)>0&&ie.cmpn(1)>0;){for(var Ce=0,ge=1;(H.words[0]&ge)===0&&Ce<26;++Ce,ge<<=1);if(Ce>0)for(H.iushrn(Ce);Ce-- >0;)ae.isOdd()&&ae.iadd(Ee),ae.iushrn(1);for(var re=0,Se=1;(ie.words[0]&Se)===0&&re<26;++re,Se<<=1);if(re>0)for(ie.iushrn(re);re-- >0;)_e.isOdd()&&_e.iadd(Ee),_e.iushrn(1);H.cmp(ie)>=0?(H.isub(ie),ae.isub(_e)):(ie.isub(H),_e.isub(ae))}var ke;return H.cmpn(1)===0?ke=ae:ke=_e,ke.cmpn(0)<0&&ke.iadd(N),ke},f.prototype.gcd=function(N){if(this.isZero())return N.abs();if(N.isZero())return this.abs();var H=this.clone(),ie=N.clone();H.negative=0,ie.negative=0;for(var ae=0;H.isEven()&&ie.isEven();ae++)H.iushrn(1),ie.iushrn(1);do{for(;H.isEven();)H.iushrn(1);for(;ie.isEven();)ie.iushrn(1);var _e=H.cmp(ie);if(_e<0){var Ee=H;H=ie,ie=Ee}else if(_e===0||ie.cmpn(1)===0)break;H.isub(ie)}while(!0);return ie.iushln(ae)},f.prototype.invm=function(N){return this.egcd(N).a.umod(N)},f.prototype.isEven=function(){return(this.words[0]&1)===0},f.prototype.isOdd=function(){return(this.words[0]&1)===1},f.prototype.andln=function(N){return this.words[0]&N},f.prototype.bincn=function(N){u(typeof N=="number");var H=N%26,ie=(N-H)/26,ae=1<>>26,Ce&=67108863,this.words[Ee]=Ce}return _e!==0&&(this.words[Ee]=_e,this.length++),this},f.prototype.isZero=function(){return this.length===1&&this.words[0]===0},f.prototype.cmpn=function(N){var H=N<0;if(this.negative!==0&&!H)return-1;if(this.negative===0&&H)return 1;this.strip();var ie;if(this.length>1)ie=1;else{H&&(N=-N),u(N<=67108863,"Number is too big");var ae=this.words[0]|0;ie=ae===N?0:aeN.length)return 1;if(this.length=0;ie--){var ae=this.words[ie]|0,_e=N.words[ie]|0;if(ae!==_e){ae<_e?H=-1:ae>_e&&(H=1);break}}return H},f.prototype.gtn=function(N){return this.cmpn(N)===1},f.prototype.gt=function(N){return this.cmp(N)===1},f.prototype.gten=function(N){return this.cmpn(N)>=0},f.prototype.gte=function(N){return this.cmp(N)>=0},f.prototype.ltn=function(N){return this.cmpn(N)===-1},f.prototype.lt=function(N){return this.cmp(N)===-1},f.prototype.lten=function(N){return this.cmpn(N)<=0},f.prototype.lte=function(N){return this.cmp(N)<=0},f.prototype.eqn=function(N){return this.cmpn(N)===0},f.prototype.eq=function(N){return this.cmp(N)===0},f.red=function(N){return new G(N)},f.prototype.toRed=function(N){return u(!this.red,"Already a number in reduction context"),u(this.negative===0,"red works only with positives"),N.convertTo(this)._forceRed(N)},f.prototype.fromRed=function(){return u(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},f.prototype._forceRed=function(N){return this.red=N,this},f.prototype.forceRed=function(N){return u(!this.red,"Already a number in reduction context"),this._forceRed(N)},f.prototype.redAdd=function(N){return u(this.red,"redAdd works only with red numbers"),this.red.add(this,N)},f.prototype.redIAdd=function(N){return u(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,N)},f.prototype.redSub=function(N){return u(this.red,"redSub works only with red numbers"),this.red.sub(this,N)},f.prototype.redISub=function(N){return u(this.red,"redISub works only with red numbers"),this.red.isub(this,N)},f.prototype.redShl=function(N){return u(this.red,"redShl works only with red numbers"),this.red.shl(this,N)},f.prototype.redMul=function(N){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,N),this.red.mul(this,N)},f.prototype.redIMul=function(N){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,N),this.red.imul(this,N)},f.prototype.redSqr=function(){return u(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},f.prototype.redISqr=function(){return u(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},f.prototype.redSqrt=function(){return u(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},f.prototype.redInvm=function(){return u(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},f.prototype.redNeg=function(){return u(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},f.prototype.redPow=function(N){return u(this.red&&!N.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,N)};var g={k256:null,p224:null,p192:null,p25519:null};function P(j,N){this.name=j,this.p=new f(N,16),this.n=this.p.bitLength(),this.k=new f(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}P.prototype._tmp=function(){var N=new f(null);return N.words=new Array(Math.ceil(this.n/13)),N},P.prototype.ireduce=function(N){var H=N,ie;do this.split(H,this.tmp),H=this.imulK(H),H=H.iadd(this.tmp),ie=H.bitLength();while(ie>this.n);var ae=ie0?H.isub(this.p):H.strip!==void 0?H.strip():H._strip(),H},P.prototype.split=function(N,H){N.iushrn(this.n,0,H)},P.prototype.imulK=function(N){return N.imul(this.k)};function E(){P.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}c(E,P),E.prototype.split=function(N,H){for(var ie=4194303,ae=Math.min(N.length,9),_e=0;_e>>22,Ee=Ce}Ee>>>=22,N.words[_e-10]=Ee,Ee===0&&N.length>10?N.length-=10:N.length-=9},E.prototype.imulK=function(N){N.words[N.length]=0,N.words[N.length+1]=0,N.length+=2;for(var H=0,ie=0;ie>>=26,N.words[ie]=_e,H=ae}return H!==0&&(N.words[N.length++]=H),N},f._prime=function(N){if(g[N])return g[N];var H;if(N==="k256")H=new E;else if(N==="p224")H=new z;else if(N==="p192")H=new q;else if(N==="p25519")H=new V;else throw new Error("Unknown prime "+N);return g[N]=H,H};function G(j){if(typeof j=="string"){var N=f._prime(j);this.m=N.p,this.prime=N}else u(j.gtn(1),"modulus must be greater than 1"),this.m=j,this.prime=null}G.prototype._verify1=function(N){u(N.negative===0,"red works only with positives"),u(N.red,"red works only with red numbers")},G.prototype._verify2=function(N,H){u((N.negative|H.negative)===0,"red works only with positives"),u(N.red&&N.red===H.red,"red works only with red numbers")},G.prototype.imod=function(N){return this.prime?this.prime.ireduce(N)._forceRed(this):N.umod(this.m)._forceRed(this)},G.prototype.neg=function(N){return N.isZero()?N.clone():this.m.sub(N)._forceRed(this)},G.prototype.add=function(N,H){this._verify2(N,H);var ie=N.add(H);return ie.cmp(this.m)>=0&&ie.isub(this.m),ie._forceRed(this)},G.prototype.iadd=function(N,H){this._verify2(N,H);var ie=N.iadd(H);return ie.cmp(this.m)>=0&&ie.isub(this.m),ie},G.prototype.sub=function(N,H){this._verify2(N,H);var ie=N.sub(H);return ie.cmpn(0)<0&&ie.iadd(this.m),ie._forceRed(this)},G.prototype.isub=function(N,H){this._verify2(N,H);var ie=N.isub(H);return ie.cmpn(0)<0&&ie.iadd(this.m),ie},G.prototype.shl=function(N,H){return this._verify1(N),this.imod(N.ushln(H))},G.prototype.imul=function(N,H){return this._verify2(N,H),this.imod(N.imul(H))},G.prototype.mul=function(N,H){return this._verify2(N,H),this.imod(N.mul(H))},G.prototype.isqr=function(N){return this.imul(N,N.clone())},G.prototype.sqr=function(N){return this.mul(N,N)},G.prototype.sqrt=function(N){if(N.isZero())return N.clone();var H=this.m.andln(3);if(u(H%2===1),H===3){var ie=this.m.add(new f(1)).iushrn(2);return this.pow(N,ie)}for(var ae=this.m.subn(1),_e=0;!ae.isZero()&&ae.andln(1)===0;)_e++,ae.iushrn(1);u(!ae.isZero());var Ee=new f(1).toRed(this),Ce=Ee.redNeg(),ge=this.m.subn(1).iushrn(1),re=this.m.bitLength();for(re=new f(2*re*re).toRed(this);this.pow(re,ge).cmp(Ce)!==0;)re.redIAdd(Ce);for(var Se=this.pow(re,ae),ke=this.pow(N,ae.addn(1).iushrn(1)),be=this.pow(N,ae),Be=_e;be.cmp(Ee)!==0;){for(var Le=be,me=0;Le.cmp(Ee)!==0;me++)Le=Le.redSqr();u(me=0;_e--){for(var Se=H.words[_e],ke=re-1;ke>=0;ke--){var be=Se>>ke&1;if(Ee!==ae[0]&&(Ee=this.sqr(Ee)),be===0&&Ce===0){ge=0;continue}Ce<<=1,Ce|=be,ge++,!(ge!==ie&&(_e!==0||ke!==0))&&(Ee=this.mul(Ee,ae[Ce]),ge=0,Ce=0)}re=26}return Ee},G.prototype.convertTo=function(N){var H=N.umod(this.m);return H===N?H.clone():H},G.prototype.convertFrom=function(N){var H=N.clone();return H.red=null,H},f.mont=function(N){return new Z(N)};function Z(j){G.call(this,j),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new f(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}c(Z,G),Z.prototype.convertTo=function(N){return this.imod(N.ushln(this.shift))},Z.prototype.convertFrom=function(N){var H=this.imod(N.mul(this.rinv));return H.red=null,H},Z.prototype.imul=function(N,H){if(N.isZero()||H.isZero())return N.words[0]=0,N.length=1,N;var ie=N.imul(H),ae=ie.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_e=ie.isub(ae).iushrn(this.shift),Ee=_e;return _e.cmp(this.m)>=0?Ee=_e.isub(this.m):_e.cmpn(0)<0&&(Ee=_e.iadd(this.m)),Ee._forceRed(this)},Z.prototype.mul=function(N,H){if(N.isZero()||H.isZero())return new f(0)._forceRed(this);var ie=N.mul(H),ae=ie.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_e=ie.isub(ae).iushrn(this.shift),Ee=_e;return _e.cmp(this.m)>=0?Ee=_e.isub(this.m):_e.cmpn(0)<0&&(Ee=_e.iadd(this.m)),Ee._forceRed(this)},Z.prototype.invm=function(N){var H=this.imod(N._invmp(this.m).mul(this.r2));return H._forceRed(this)}}(i,this)},6204:function(i){"use strict";i.exports=a;function a(o){var s,l,u,c=o.length,f=0;for(s=0;s>>1;if(!(S<=0)){var g,P=s.mallocDouble(2*S*x),E=s.mallocInt32(x);if(x=f(k,S,P,E),x>0){if(S===1&&L)l.init(x),g=l.sweepComplete(S,T,0,x,P,E,0,x,P,E);else{var z=s.mallocDouble(2*S*C),q=s.mallocInt32(C);C=f(M,S,z,q),C>0&&(l.init(x+C),S===1?g=l.sweepBipartite(S,T,0,x,P,E,0,C,z,q):g=u(S,T,L,x,P,E,C,z,q),s.free(z),s.free(q))}s.free(P),s.free(E)}return g}}}var d;function v(k,M){d.push([k,M])}function m(k){return d=[],h(k,k,v,!0),d}function b(k,M){return d=[],h(k,M,v,!1),d}function p(k,M,T){switch(arguments.length){case 1:return m(k);case 2:return typeof M=="function"?h(k,k,M,!0):b(k,M);case 3:return h(k,M,T,!1);default:throw new Error("box-intersect: Invalid arguments")}}},2455:function(i,a){"use strict";function o(){function u(h,d,v,m,b,p,k,M,T,L,x){for(var C=2*h,S=m,g=C*m;ST-M?u(h,d,v,m,b,p,k,M,T,L,x):c(h,d,v,m,b,p,k,M,T,L,x)}return f}function s(){function u(v,m,b,p,k,M,T,L,x,C,S){for(var g=2*v,P=p,E=g*p;PC-x?p?u(v,m,b,k,M,T,L,x,C,S,g):c(v,m,b,k,M,T,L,x,C,S,g):p?f(v,m,b,k,M,T,L,x,C,S,g):h(v,m,b,k,M,T,L,x,C,S,g)}return d}function l(u){return u?o():s()}a.partial=l(!1),a.full=l(!0)},7150:function(i,a,o){"use strict";i.exports=j;var s=o(1888),l=o(8828),u=o(2455),c=u.partial,f=u.full,h=o(855),d=o(3545),v=o(8105),m=128,b=1<<22,p=1<<22,k=v("!(lo>=p0)&&!(p1>=hi)"),M=v("lo===p0"),T=v("lo0;){Se-=1;var Be=Se*S,Le=E[Be],me=E[Be+1],Pe=E[Be+2],ce=E[Be+3],He=E[Be+4],lt=E[Be+5],mt=Se*g,Ht=z[mt],at=z[mt+1],ct=lt&1,ar=!!(lt&16),Vt=_e,rr=Ee,tt=ge,je=re;if(ct&&(Vt=ge,rr=re,tt=_e,je=Ee),!(lt&2&&(Pe=T(N,Le,me,Pe,Vt,rr,at),me>=Pe))&&!(lt&4&&(me=L(N,Le,me,Pe,Vt,rr,Ht),me>=Pe))){var Ue=Pe-me,Ae=He-ce;if(ar){if(N*Ue*(Ue+Ae)v&&b[C+d]>L;--x,C-=k){for(var S=C,g=C+k,P=0;P>>1,L=2*h,x=T,C=b[L*T+d];k=z?(x=E,C=z):P>=V?(x=g,C=P):(x=q,C=V):z>=V?(x=E,C=z):V>=P?(x=g,C=P):(x=q,C=V);for(var j=L*(M-1),N=L*x,G=0;G=p0)&&!(p1>=hi)":d};function o(v){return a[v]}function s(v,m,b,p,k,M,T){for(var L=2*v,x=L*b,C=x,S=b,g=m,P=v+m,E=b;p>E;++E,x+=L){var z=k[x+g];if(z===T)if(S===E)S+=1,C+=L;else{for(var q=0;L>q;++q){var V=k[x+q];k[x+q]=k[C],k[C++]=V}var G=M[E];M[E]=M[S],M[S++]=G}}return S}function l(v,m,b,p,k,M,T){for(var L=2*v,x=L*b,C=x,S=b,g=m,P=v+m,E=b;p>E;++E,x+=L){var z=k[x+g];if(zq;++q){var V=k[x+q];k[x+q]=k[C],k[C++]=V}var G=M[E];M[E]=M[S],M[S++]=G}}return S}function u(v,m,b,p,k,M,T){for(var L=2*v,x=L*b,C=x,S=b,g=m,P=v+m,E=b;p>E;++E,x+=L){var z=k[x+P];if(z<=T)if(S===E)S+=1,C+=L;else{for(var q=0;L>q;++q){var V=k[x+q];k[x+q]=k[C],k[C++]=V}var G=M[E];M[E]=M[S],M[S++]=G}}return S}function c(v,m,b,p,k,M,T){for(var L=2*v,x=L*b,C=x,S=b,g=m,P=v+m,E=b;p>E;++E,x+=L){var z=k[x+P];if(z<=T)if(S===E)S+=1,C+=L;else{for(var q=0;L>q;++q){var V=k[x+q];k[x+q]=k[C],k[C++]=V}var G=M[E];M[E]=M[S],M[S++]=G}}return S}function f(v,m,b,p,k,M,T){for(var L=2*v,x=L*b,C=x,S=b,g=m,P=v+m,E=b;p>E;++E,x+=L){var z=k[x+g],q=k[x+P];if(z<=T&&T<=q)if(S===E)S+=1,C+=L;else{for(var V=0;L>V;++V){var G=k[x+V];k[x+V]=k[C],k[C++]=G}var Z=M[E];M[E]=M[S],M[S++]=Z}}return S}function h(v,m,b,p,k,M,T){for(var L=2*v,x=L*b,C=x,S=b,g=m,P=v+m,E=b;p>E;++E,x+=L){var z=k[x+g],q=k[x+P];if(zV;++V){var G=k[x+V];k[x+V]=k[C],k[C++]=G}var Z=M[E];M[E]=M[S],M[S++]=Z}}return S}function d(v,m,b,p,k,M,T,L){for(var x=2*v,C=x*b,S=C,g=b,P=m,E=v+m,z=b;p>z;++z,C+=x){var q=k[C+P],V=k[C+E];if(!(q>=T)&&!(L>=V))if(g===z)g+=1,S+=x;else{for(var G=0;x>G;++G){var Z=k[C+G];k[C+G]=k[S],k[S++]=Z}var j=M[z];M[z]=M[g],M[g++]=j}}return g}},4192:function(i){"use strict";i.exports=o;var a=32;function o(m,b){b<=4*a?s(0,b-1,m):v(0,b-1,m)}function s(m,b,p){for(var k=2*(m+1),M=m+1;M<=b;++M){for(var T=p[k++],L=p[k++],x=M,C=k-2;x-- >m;){var S=p[C-2],g=p[C-1];if(Sp[b+1]:!0}function d(m,b,p,k){m*=2;var M=k[m];return M>1,x=L-k,C=L+k,S=M,g=x,P=L,E=C,z=T,q=m+1,V=b-1,G=0;h(S,g,p)&&(G=S,S=g,g=G),h(E,z,p)&&(G=E,E=z,z=G),h(S,P,p)&&(G=S,S=P,P=G),h(g,P,p)&&(G=g,g=P,P=G),h(S,E,p)&&(G=S,S=E,E=G),h(P,E,p)&&(G=P,P=E,E=G),h(g,z,p)&&(G=g,g=z,z=G),h(g,P,p)&&(G=g,g=P,P=G),h(E,z,p)&&(G=E,E=z,z=G);for(var Z=p[2*g],j=p[2*g+1],N=p[2*E],H=p[2*E+1],ie=2*S,ae=2*P,_e=2*z,Ee=2*M,Ce=2*L,ge=2*T,re=0;re<2;++re){var Se=p[ie+re],ke=p[ae+re],be=p[_e+re];p[Ee+re]=Se,p[Ce+re]=ke,p[ge+re]=be}u(x,m,p),u(C,b,p);for(var Be=q;Be<=V;++Be)if(d(Be,Z,j,p))Be!==q&&l(Be,q,p),++q;else if(!d(Be,N,H,p))for(;;)if(d(V,N,H,p)){d(V,Z,j,p)?(c(Be,q,V,p),++q,--V):(l(Be,V,p),--V);break}else{if(--V>>1;u(k,ke);for(var be=0,Be=0,Ce=0;Ce=c)Le=Le-c|0,T(v,m,Be--,Le);else if(Le>=0)T(h,d,be--,Le);else if(Le<=-c){Le=-Le-c|0;for(var me=0;me>>1;u(k,ke);for(var be=0,Be=0,Le=0,Ce=0;Ce>1===k[2*Ce+3]>>1&&(Pe=2,Ce+=1),me<0){for(var ce=-(me>>1)-1,He=0;He>1)-1;Pe===0?T(h,d,be--,ce):Pe===1?T(v,m,Be--,ce):Pe===2&&T(b,p,Le--,ce)}}}function S(P,E,z,q,V,G,Z,j,N,H,ie,ae){var _e=0,Ee=2*P,Ce=E,ge=E+P,re=1,Se=1;q?Se=c:re=c;for(var ke=V;ke>>1;u(k,me);for(var Pe=0,ke=0;ke=c?(He=!q,be-=c):(He=!!q,be-=1),He)L(h,d,Pe++,be);else{var lt=ae[be],mt=Ee*be,Ht=ie[mt+E+1],at=ie[mt+E+1+P];e:for(var ct=0;ct>>1;u(k,be);for(var Be=0,ge=0;ge=c)h[Be++]=re-c;else{re-=1;var me=ie[re],Pe=_e*re,ce=H[Pe+E+1],He=H[Pe+E+1+P];e:for(var lt=0;lt=0;--lt)if(h[lt]===re){for(var ct=lt+1;ct0;){for(var M=d.pop(),b=d.pop(),T=-1,L=-1,p=m[b],C=1;C=0||(h.flip(b,M),u(f,h,d,T,b,L),u(f,h,d,b,L,T),u(f,h,d,L,M,T),u(f,h,d,M,T,L))}}},5023:function(i,a,o){"use strict";var s=o(2478);i.exports=d;function l(v,m,b,p,k,M,T){this.cells=v,this.neighbor=m,this.flags=p,this.constraint=b,this.active=k,this.next=M,this.boundary=T}var u=l.prototype;function c(v,m){return v[0]-m[0]||v[1]-m[1]||v[2]-m[2]}u.locate=function(){var v=[0,0,0];return function(m,b,p){var k=m,M=b,T=p;return b0||T.length>0;){for(;M.length>0;){var g=M.pop();if(L[g]!==-k){L[g]=k;for(var P=x[g],E=0;E<3;++E){var z=S[3*g+E];z>=0&&L[z]===0&&(C[3*g+E]?T.push(z):(M.push(z),L[z]=k))}}}var q=T;T=M,M=q,T.length=0,k=-k}var V=h(x,L,m);return b?V.concat(p.boundary):V}},8902:function(i,a,o){"use strict";var s=o(2478),l=o(3250)[3],u=0,c=1,f=2;i.exports=T;function h(L,x,C,S,g){this.a=L,this.b=x,this.idx=C,this.lowerIds=S,this.upperIds=g}function d(L,x,C,S){this.a=L,this.b=x,this.type=C,this.idx=S}function v(L,x){var C=L.a[0]-x.a[0]||L.a[1]-x.a[1]||L.type-x.type;return C||L.type!==u&&(C=l(L.a,L.b,x.b),C)?C:L.idx-x.idx}function m(L,x){return l(L.a,L.b,x)}function b(L,x,C,S,g){for(var P=s.lt(x,S,m),E=s.gt(x,S,m),z=P;z1&&l(C[V[Z-2]],C[V[Z-1]],S)>0;)L.push([V[Z-1],V[Z-2],g]),Z-=1;V.length=Z,V.push(g);for(var G=q.upperIds,Z=G.length;Z>1&&l(C[G[Z-2]],C[G[Z-1]],S)<0;)L.push([G[Z-2],G[Z-1],g]),Z-=1;G.length=Z,G.push(g)}}function p(L,x){var C;return L.a[0]q[0]&&g.push(new d(q,z,f,P),new d(z,q,c,P))}g.sort(v);for(var V=g[0].a[0]-(1+Math.abs(g[0].a[0]))*Math.pow(2,-52),G=[new h([V,1],[V,0],-1,[],[],[],[])],Z=[],P=0,j=g.length;P=0}}(),u.removeTriangle=function(h,d,v){var m=this.stars;c(m[h],d,v),c(m[d],v,h),c(m[v],h,d)},u.addTriangle=function(h,d,v){var m=this.stars;m[h].push(d,v),m[d].push(v,h),m[v].push(h,d)},u.opposite=function(h,d){for(var v=this.stars[d],m=1,b=v.length;m=0;--N){var Se=Z[N];H=Se[0];var ke=V[H],be=ke[0],Be=ke[1],Le=q[be],me=q[Be];if((Le[0]-me[0]||Le[1]-me[1])<0){var Pe=be;be=Be,Be=Pe}ke[0]=be;var ce=ke[1]=Se[1],He;for(j&&(He=ke[2]);N>0&&Z[N-1][0]===H;){var Se=Z[--N],lt=Se[1];j?V.push([ce,lt,He]):V.push([ce,lt]),ce=lt}j?V.push([ce,Be,He]):V.push([ce,Be])}return ie}function x(q,V,G){for(var Z=V.length,j=new s(Z),N=[],H=0;HV[2]?1:0)}function g(q,V,G){if(q.length!==0){if(V)for(var Z=0;Z0||H.length>0}function z(q,V,G){var Z;if(G){Z=V;for(var j=new Array(V.length),N=0;NL+1)throw new Error(M+" map requires nshades to be at least size "+k.length);Array.isArray(d.alpha)?d.alpha.length!==2?x=[1,1]:x=d.alpha.slice():typeof d.alpha=="number"?x=[d.alpha,d.alpha]:x=[1,1],v=k.map(function(z){return Math.round(z.index*L)}),x[0]=Math.min(Math.max(x[0],0),1),x[1]=Math.min(Math.max(x[1],0),1);var S=k.map(function(z,q){var V=k[q].index,G=k[q].rgb.slice();return G.length===4&&G[3]>=0&&G[3]<=1||(G[3]=x[0]+(x[1]-x[0])*V),G}),g=[];for(C=0;C=0}function d(v,m,b,p){var k=s(m,b,p);if(k===0){var M=l(s(v,m,b)),T=l(s(v,m,p));if(M===T){if(M===0){var L=h(v,m,b),x=h(v,m,p);return L===x?0:L?1:-1}return 0}else{if(T===0)return M>0||h(v,m,p)?-1:1;if(M===0)return T>0||h(v,m,b)?1:-1}return l(T-M)}var C=s(v,m,b);if(C>0)return k>0&&s(v,m,p)>0?1:-1;if(C<0)return k>0||s(v,m,p)>0?1:-1;var S=s(v,m,p);return S>0||h(v,m,b)?1:-1}},8572:function(i){"use strict";i.exports=function(o){return o<0?-1:o>0?1:0}},8507:function(i){i.exports=s;var a=Math.min;function o(l,u){return l-u}function s(l,u){var c=l.length,f=l.length-u.length;if(f)return f;switch(c){case 0:return 0;case 1:return l[0]-u[0];case 2:return l[0]+l[1]-u[0]-u[1]||a(l[0],l[1])-a(u[0],u[1]);case 3:var h=l[0]+l[1],d=u[0]+u[1];if(f=h+l[2]-(d+u[2]),f)return f;var v=a(l[0],l[1]),m=a(u[0],u[1]);return a(v,l[2])-a(m,u[2])||a(v+l[2],h)-a(m+u[2],d);case 4:var b=l[0],p=l[1],k=l[2],M=l[3],T=u[0],L=u[1],x=u[2],C=u[3];return b+p+k+M-(T+L+x+C)||a(b,p,k,M)-a(T,L,x,C,T)||a(b+p,b+k,b+M,p+k,p+M,k+M)-a(T+L,T+x,T+C,L+x,L+C,x+C)||a(b+p+k,b+p+M,b+k+M,p+k+M)-a(T+L+x,T+L+C,T+x+C,L+x+C);default:for(var S=l.slice().sort(o),g=u.slice().sort(o),P=0;Po[l][0]&&(l=u);return sl?[[l],[s]]:[[s]]}},4750:function(i,a,o){"use strict";i.exports=l;var s=o(3090);function l(u){var c=s(u),f=c.length;if(f<=2)return[];for(var h=new Array(f),d=c[f-1],v=0;v=d[T]&&(M+=1);p[k]=M}}return h}function f(h,d){try{return s(h,!0)}catch(p){var v=l(h);if(v.length<=d)return[];var m=u(h,v),b=s(m,!0);return c(b,v)}}},4769:function(i){"use strict";function a(s,l,u,c,f,h){var d=6*f*f-6*f,v=3*f*f-4*f+1,m=-6*f*f+6*f,b=3*f*f-2*f;if(s.length){h||(h=new Array(s.length));for(var p=s.length-1;p>=0;--p)h[p]=d*s[p]+v*l[p]+m*u[p]+b*c[p];return h}return d*s+v*l+m*u[p]+b*c}function o(s,l,u,c,f,h){var d=f-1,v=f*f,m=d*d,b=(1+2*f)*m,p=f*m,k=v*(3-2*f),M=v*d;if(s.length){h||(h=new Array(s.length));for(var T=s.length-1;T>=0;--T)h[T]=b*s[T]+p*l[T]+k*u[T]+M*c[T];return h}return b*s+p*l+k*u+M*c}i.exports=o,i.exports.derivative=a},7642:function(i,a,o){"use strict";var s=o(8954),l=o(1682);i.exports=h;function u(d,v){this.point=d,this.index=v}function c(d,v){for(var m=d.point,b=v.point,p=m.length,k=0;k=2)return!1;G[j]=N}return!0}):V=V.filter(function(G){for(var Z=0;Z<=b;++Z){var j=P[G[Z]];if(j<0)return!1;G[Z]=j}return!0}),b&1)for(var M=0;M>>31},i.exports.exponent=function(k){var M=i.exports.hi(k);return(M<<1>>>21)-1023},i.exports.fraction=function(k){var M=i.exports.lo(k),T=i.exports.hi(k),L=T&(1<<20)-1;return T&2146435072&&(L+=1048576),[M,L]},i.exports.denormalized=function(k){var M=i.exports.hi(k);return!(M&2146435072)}},1338:function(i){"use strict";function a(l,u,c){var f=l[c]|0;if(f<=0)return[];var h=new Array(f),d;if(c===l.length-1)for(d=0;d0)return o(l|0,u);break;case"object":if(typeof l.length=="number")return a(l,u,0);break}return[]}i.exports=s},3134:function(i,a,o){"use strict";i.exports=l;var s=o(1682);function l(u,c){var f=u.length;if(typeof c!="number"){c=0;for(var h=0;h=b-1)for(var C=M.length-1,g=v-m[b-1],S=0;S=b-1)for(var x=M.length-1,C=v-m[b-1],S=0;S=0;--b)if(v[--m])return!1;return!0},f.jump=function(v){var m=this.lastT(),b=this.dimension;if(!(v0;--S)p.push(u(L[S-1],x[S-1],arguments[S])),k.push(0)}},f.push=function(v){var m=this.lastT(),b=this.dimension;if(!(v1e-6?1/T:0;this._time.push(v);for(var g=b;g>0;--g){var P=u(x[g-1],C[g-1],arguments[g]);p.push(P),k.push((P-p[M++])*S)}}},f.set=function(v){var m=this.dimension;if(!(v0;--L)b.push(u(M[L-1],T[L-1],arguments[L])),p.push(0)}},f.move=function(v){var m=this.lastT(),b=this.dimension;if(!(v<=m||arguments.length!==b+1)){var p=this._state,k=this._velocity,M=p.length-this.dimension,T=this.bounds,L=T[0],x=T[1],C=v-m,S=C>1e-6?1/C:0;this._time.push(v);for(var g=b;g>0;--g){var P=arguments[g];p.push(u(L[g-1],x[g-1],p[M++]+P)),k.push(P*S)}}},f.idle=function(v){var m=this.lastT();if(!(v=0;--S)p.push(u(L[S],x[S],p[M]+C*k[M])),k.push(0),M+=1}};function h(v){for(var m=new Array(v),b=0;b=0;--q){var g=P[q];E[q]<=0?P[q]=new s(g._color,g.key,g.value,P[q+1],g.right,g._count+1):P[q]=new s(g._color,g.key,g.value,g.left,P[q+1],g._count+1)}for(var q=P.length-1;q>1;--q){var V=P[q-1],g=P[q];if(V._color===o||g._color===o)break;var G=P[q-2];if(G.left===V)if(V.left===g){var Z=G.right;if(Z&&Z._color===a)V._color=o,G.right=u(o,Z),G._color=a,q-=1;else{if(G._color=a,G.left=V.right,V._color=o,V.right=G,P[q-2]=V,P[q-1]=g,c(G),c(V),q>=3){var j=P[q-3];j.left===G?j.left=V:j.right=V}break}}else{var Z=G.right;if(Z&&Z._color===a)V._color=o,G.right=u(o,Z),G._color=a,q-=1;else{if(V.right=g.left,G._color=a,G.left=g.right,g._color=o,g.left=V,g.right=G,P[q-2]=g,P[q-1]=V,c(G),c(V),c(g),q>=3){var j=P[q-3];j.left===G?j.left=g:j.right=g}break}}else if(V.right===g){var Z=G.left;if(Z&&Z._color===a)V._color=o,G.left=u(o,Z),G._color=a,q-=1;else{if(G._color=a,G.right=V.left,V._color=o,V.left=G,P[q-2]=V,P[q-1]=g,c(G),c(V),q>=3){var j=P[q-3];j.right===G?j.right=V:j.left=V}break}}else{var Z=G.left;if(Z&&Z._color===a)V._color=o,G.left=u(o,Z),G._color=a,q-=1;else{if(V.left=g.right,G._color=a,G.right=g.left,g._color=o,g.right=V,g.left=G,P[q-2]=g,P[q-1]=V,c(G),c(V),c(g),q>=3){var j=P[q-3];j.right===G?j.right=g:j.left=g}break}}}return P[0]._color=o,new f(S,P[0])};function d(x,C){if(C.left){var S=d(x,C.left);if(S)return S}var S=x(C.key,C.value);if(S)return S;if(C.right)return d(x,C.right)}function v(x,C,S,g){var P=C(x,g.key);if(P<=0){if(g.left){var E=v(x,C,S,g.left);if(E)return E}var E=S(g.key,g.value);if(E)return E}if(g.right)return v(x,C,S,g.right)}function m(x,C,S,g,P){var E=S(x,P.key),z=S(C,P.key),q;if(E<=0&&(P.left&&(q=m(x,C,S,g,P.left),q)||z>0&&(q=g(P.key,P.value),q)))return q;if(z>0&&P.right)return m(x,C,S,g,P.right)}h.forEach=function(C,S,g){if(this.root)switch(arguments.length){case 1:return d(C,this.root);case 2:return v(S,this._compare,C,this.root);case 3:return this._compare(S,g)>=0?void 0:m(S,g,this._compare,C,this.root)}},Object.defineProperty(h,"begin",{get:function(){for(var x=[],C=this.root;C;)x.push(C),C=C.left;return new b(this,x)}}),Object.defineProperty(h,"end",{get:function(){for(var x=[],C=this.root;C;)x.push(C),C=C.right;return new b(this,x)}}),h.at=function(x){if(x<0)return new b(this,[]);for(var C=this.root,S=[];;){if(S.push(C),C.left){if(x=C.right._count)break;C=C.right}else break}return new b(this,[])},h.ge=function(x){for(var C=this._compare,S=this.root,g=[],P=0;S;){var E=C(x,S.key);g.push(S),E<=0&&(P=g.length),E<=0?S=S.left:S=S.right}return g.length=P,new b(this,g)},h.gt=function(x){for(var C=this._compare,S=this.root,g=[],P=0;S;){var E=C(x,S.key);g.push(S),E<0&&(P=g.length),E<0?S=S.left:S=S.right}return g.length=P,new b(this,g)},h.lt=function(x){for(var C=this._compare,S=this.root,g=[],P=0;S;){var E=C(x,S.key);g.push(S),E>0&&(P=g.length),E<=0?S=S.left:S=S.right}return g.length=P,new b(this,g)},h.le=function(x){for(var C=this._compare,S=this.root,g=[],P=0;S;){var E=C(x,S.key);g.push(S),E>=0&&(P=g.length),E<0?S=S.left:S=S.right}return g.length=P,new b(this,g)},h.find=function(x){for(var C=this._compare,S=this.root,g=[];S;){var P=C(x,S.key);if(g.push(S),P===0)return new b(this,g);P<=0?S=S.left:S=S.right}return new b(this,[])},h.remove=function(x){var C=this.find(x);return C?C.remove():this},h.get=function(x){for(var C=this._compare,S=this.root;S;){var g=C(x,S.key);if(g===0)return S.value;g<=0?S=S.left:S=S.right}};function b(x,C){this.tree=x,this._stack=C}var p=b.prototype;Object.defineProperty(p,"valid",{get:function(){return this._stack.length>0}}),Object.defineProperty(p,"node",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1]:null},enumerable:!0}),p.clone=function(){return new b(this.tree,this._stack.slice())};function k(x,C){x.key=C.key,x.value=C.value,x.left=C.left,x.right=C.right,x._color=C._color,x._count=C._count}function M(x){for(var C,S,g,P,E=x.length-1;E>=0;--E){if(C=x[E],E===0){C._color=o;return}if(S=x[E-1],S.left===C){if(g=S.right,g.right&&g.right._color===a){if(g=S.right=l(g),P=g.right=l(g.right),S.right=g.left,g.left=S,g.right=P,g._color=S._color,C._color=o,S._color=o,P._color=o,c(S),c(g),E>1){var z=x[E-2];z.left===S?z.left=g:z.right=g}x[E-1]=g;return}else if(g.left&&g.left._color===a){if(g=S.right=l(g),P=g.left=l(g.left),S.right=P.left,g.left=P.right,P.left=S,P.right=g,P._color=S._color,S._color=o,g._color=o,C._color=o,c(S),c(g),c(P),E>1){var z=x[E-2];z.left===S?z.left=P:z.right=P}x[E-1]=P;return}if(g._color===o)if(S._color===a){S._color=o,S.right=u(a,g);return}else{S.right=u(a,g);continue}else{if(g=l(g),S.right=g.left,g.left=S,g._color=S._color,S._color=a,c(S),c(g),E>1){var z=x[E-2];z.left===S?z.left=g:z.right=g}x[E-1]=g,x[E]=S,E+11){var z=x[E-2];z.right===S?z.right=g:z.left=g}x[E-1]=g;return}else if(g.right&&g.right._color===a){if(g=S.left=l(g),P=g.right=l(g.right),S.left=P.right,g.right=P.left,P.right=S,P.left=g,P._color=S._color,S._color=o,g._color=o,C._color=o,c(S),c(g),c(P),E>1){var z=x[E-2];z.right===S?z.right=P:z.left=P}x[E-1]=P;return}if(g._color===o)if(S._color===a){S._color=o,S.left=u(a,g);return}else{S.left=u(a,g);continue}else{if(g=l(g),S.left=g.right,g.right=S,g._color=S._color,S._color=a,c(S),c(g),E>1){var z=x[E-2];z.right===S?z.right=g:z.left=g}x[E-1]=g,x[E]=S,E+1=0;--g){var S=x[g];S.left===x[g+1]?C[g]=new s(S._color,S.key,S.value,C[g+1],S.right,S._count):C[g]=new s(S._color,S.key,S.value,S.left,C[g+1],S._count)}if(S=C[C.length-1],S.left&&S.right){var P=C.length;for(S=S.left;S.right;)C.push(S),S=S.right;var E=C[P-1];C.push(new s(S._color,E.key,E.value,S.left,S.right,S._count)),C[P-1].key=S.key,C[P-1].value=S.value;for(var g=C.length-2;g>=P;--g)S=C[g],C[g]=new s(S._color,S.key,S.value,S.left,C[g+1],S._count);C[P-1].left=C[P]}if(S=C[C.length-1],S._color===a){var z=C[C.length-2];z.left===S?z.left=null:z.right===S&&(z.right=null),C.pop();for(var g=0;g0)return this._stack[this._stack.length-1].key},enumerable:!0}),Object.defineProperty(p,"value",{get:function(){if(this._stack.length>0)return this._stack[this._stack.length-1].value},enumerable:!0}),Object.defineProperty(p,"index",{get:function(){var x=0,C=this._stack;if(C.length===0){var S=this.tree.root;return S?S._count:0}else C[C.length-1].left&&(x=C[C.length-1].left._count);for(var g=C.length-2;g>=0;--g)C[g+1]===C[g].right&&(++x,C[g].left&&(x+=C[g].left._count));return x},enumerable:!0}),p.next=function(){var x=this._stack;if(x.length!==0){var C=x[x.length-1];if(C.right)for(C=C.right;C;)x.push(C),C=C.left;else for(x.pop();x.length>0&&x[x.length-1].right===C;)C=x[x.length-1],x.pop()}},Object.defineProperty(p,"hasNext",{get:function(){var x=this._stack;if(x.length===0)return!1;if(x[x.length-1].right)return!0;for(var C=x.length-1;C>0;--C)if(x[C-1].left===x[C])return!0;return!1}}),p.update=function(x){var C=this._stack;if(C.length===0)throw new Error("Can't update empty node!");var S=new Array(C.length),g=C[C.length-1];S[S.length-1]=new s(g._color,g.key,x,g.left,g.right,g._count);for(var P=C.length-2;P>=0;--P)g=C[P],g.left===C[P+1]?S[P]=new s(g._color,g.key,g.value,S[P+1],g.right,g._count):S[P]=new s(g._color,g.key,g.value,g.left,S[P+1],g._count);return new f(this.tree._compare,S[0])},p.prev=function(){var x=this._stack;if(x.length!==0){var C=x[x.length-1];if(C.left)for(C=C.left;C;)x.push(C),C=C.right;else for(x.pop();x.length>0&&x[x.length-1].left===C;)C=x[x.length-1],x.pop()}},Object.defineProperty(p,"hasPrev",{get:function(){var x=this._stack;if(x.length===0)return!1;if(x[x.length-1].left)return!0;for(var C=x.length-1;C>0;--C)if(x[C-1].right===x[C])return!0;return!1}});function T(x,C){return xC?1:0}function L(x){return new f(x||T,null)}},3837:function(i,a,o){"use strict";i.exports=q;var s=o(4935),l=o(501),u=o(5304),c=o(6429),f=o(6444),h=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),d=ArrayBuffer,v=DataView;function m(V){return d.isView(V)&&!(V instanceof v)}function b(V){return Array.isArray(V)||m(V)}function p(V,G){return V[0]=G[0],V[1]=G[1],V[2]=G[2],V}function k(V){this.gl=V,this.pixelRatio=1,this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.autoTicks=!0,this.tickSpacing=[1,1,1],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickFontStyle=["normal","normal","normal"],this.tickFontWeight=["normal","normal","normal"],this.tickFontVariant=["normal","normal","normal"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this.tickAlign=["auto","auto","auto"],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[10,10,10],this.lastCubeProps={cubeEdges:[0,0,0],axis:[0,0,0]},this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont=["sans-serif","sans-serif","sans-serif"],this.labelFontStyle=["normal","normal","normal"],this.labelFontWeight=["normal","normal","normal"],this.labelFontVariant=["normal","normal","normal"],this.labelSize=[20,20,20],this.labelAngle=[0,0,0],this.labelAlign=["auto","auto","auto"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[10,10,10],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[0,0,0],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!1,!1,!1],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._firstInit=!0,this._text=null,this._lines=null,this._background=u(V)}var M=k.prototype;M.update=function(V){V=V||{};function G(be,Be,Le){if(Le in V){var me=V[Le],Pe=this[Le],ce;(be?b(me)&&b(me[0]):b(me))?this[Le]=ce=[Be(me[0]),Be(me[1]),Be(me[2])]:this[Le]=ce=[Be(me),Be(me),Be(me)];for(var He=0;He<3;++He)if(ce[He]!==Pe[He])return!0}return!1}var Z=G.bind(this,!1,Number),j=G.bind(this,!1,Boolean),N=G.bind(this,!1,String),H=G.bind(this,!0,function(be){if(b(be)){if(be.length===3)return[+be[0],+be[1],+be[2],1];if(be.length===4)return[+be[0],+be[1],+be[2],+be[3]]}return[0,0,0,1]}),ie,ae=!1,_e=!1;if("bounds"in V)for(var Ee=V.bounds,Ce=0;Ce<2;++Ce)for(var ge=0;ge<3;++ge)Ee[Ce][ge]!==this.bounds[Ce][ge]&&(_e=!0),this.bounds[Ce][ge]=Ee[Ce][ge];if("ticks"in V){ie=V.ticks,ae=!0,this.autoTicks=!1;for(var Ce=0;Ce<3;++Ce)this.tickSpacing[Ce]=0}else Z("tickSpacing")&&(this.autoTicks=!0,_e=!0);if(this._firstInit&&("ticks"in V||"tickSpacing"in V||(this.autoTicks=!0),_e=!0,ae=!0,this._firstInit=!1),_e&&this.autoTicks&&(ie=f.create(this.bounds,this.tickSpacing),ae=!0),ae){for(var Ce=0;Ce<3;++Ce)ie[Ce].sort(function(Be,Le){return Be.x-Le.x});f.equal(ie,this.ticks)?ae=!1:this.ticks=ie}j("tickEnable"),N("tickFont")&&(ae=!0),N("tickFontStyle")&&(ae=!0),N("tickFontWeight")&&(ae=!0),N("tickFontVariant")&&(ae=!0),Z("tickSize"),Z("tickAngle"),Z("tickPad"),H("tickColor");var re=N("labels");N("labelFont")&&(re=!0),N("labelFontStyle")&&(re=!0),N("labelFontWeight")&&(re=!0),N("labelFontVariant")&&(re=!0),j("labelEnable"),Z("labelSize"),Z("labelPad"),H("labelColor"),j("lineEnable"),j("lineMirror"),Z("lineWidth"),H("lineColor"),j("lineTickEnable"),j("lineTickMirror"),Z("lineTickLength"),Z("lineTickWidth"),H("lineTickColor"),j("gridEnable"),Z("gridWidth"),H("gridColor"),j("zeroEnable"),H("zeroLineColor"),Z("zeroLineWidth"),j("backgroundEnable"),H("backgroundColor");var Se=[{family:this.labelFont[0],style:this.labelFontStyle[0],weight:this.labelFontWeight[0],variant:this.labelFontVariant[0]},{family:this.labelFont[1],style:this.labelFontStyle[1],weight:this.labelFontWeight[1],variant:this.labelFontVariant[1]},{family:this.labelFont[2],style:this.labelFontStyle[2],weight:this.labelFontWeight[2],variant:this.labelFontVariant[2]}],ke=[{family:this.tickFont[0],style:this.tickFontStyle[0],weight:this.tickFontWeight[0],variant:this.tickFontVariant[0]},{family:this.tickFont[1],style:this.tickFontStyle[1],weight:this.tickFontWeight[1],variant:this.tickFontVariant[1]},{family:this.tickFont[2],style:this.tickFontStyle[2],weight:this.tickFontWeight[2],variant:this.tickFontVariant[2]}];this._text?this._text&&(re||ae)&&this._text.update(this.bounds,this.labels,Se,this.ticks,ke):this._text=s(this.gl,this.bounds,this.labels,Se,this.ticks,ke),this._lines&&ae&&(this._lines.dispose(),this._lines=null),this._lines||(this._lines=l(this.gl,this.bounds,this.ticks))};function T(){this.primalOffset=[0,0,0],this.primalMinor=[0,0,0],this.mirrorOffset=[0,0,0],this.mirrorMinor=[0,0,0]}var L=[new T,new T,new T];function x(V,G,Z,j,N){for(var H=V.primalOffset,ie=V.primalMinor,ae=V.mirrorOffset,_e=V.mirrorMinor,Ee=j[G],Ce=0;Ce<3;++Ce)if(G!==Ce){var ge=H,re=ae,Se=ie,ke=_e;Ee&1<0?(Se[Ce]=-1,ke[Ce]=0):(Se[Ce]=0,ke[Ce]=1)}}var C=[0,0,0],S={model:h,view:h,projection:h,_ortho:!1};M.isOpaque=function(){return!0},M.isTransparent=function(){return!1},M.drawTransparent=function(V){};var g=0,P=[0,0,0],E=[0,0,0],z=[0,0,0];M.draw=function(V){V=V||S;for(var Le=this.gl,G=V.model||h,Z=V.view||h,j=V.projection||h,N=this.bounds,H=V._ortho||!1,ie=c(G,Z,j,N,H),ae=ie.cubeEdges,_e=ie.axis,Ee=Z[12],Ce=Z[13],ge=Z[14],re=Z[15],Se=H?2:1,ke=Se*this.pixelRatio*(j[3]*Ee+j[7]*Ce+j[11]*ge+j[15]*re)/Le.drawingBufferHeight,be=0;be<3;++be)this.lastCubeProps.cubeEdges[be]=ae[be],this.lastCubeProps.axis[be]=_e[be];for(var Be=L,be=0;be<3;++be)x(L[be],be,this.bounds,ae,_e);for(var Le=this.gl,me=C,be=0;be<3;++be)this.backgroundEnable[be]?me[be]=_e[be]:me[be]=0;this._background.draw(G,Z,j,N,me,this.backgroundColor),this._lines.bind(G,Z,j,this);for(var be=0;be<3;++be){var Pe=[0,0,0];_e[be]>0?Pe[be]=N[1][be]:Pe[be]=N[0][be];for(var ce=0;ce<2;++ce){var He=(be+1+ce)%3,lt=(be+1+(ce^1))%3;this.gridEnable[He]&&this._lines.drawGrid(He,lt,this.bounds,Pe,this.gridColor[He],this.gridWidth[He]*this.pixelRatio)}for(var ce=0;ce<2;++ce){var He=(be+1+ce)%3,lt=(be+1+(ce^1))%3;this.zeroEnable[lt]&&Math.min(N[0][lt],N[1][lt])<=0&&Math.max(N[0][lt],N[1][lt])>=0&&this._lines.drawZero(He,lt,this.bounds,Pe,this.zeroLineColor[lt],this.zeroLineWidth[lt]*this.pixelRatio)}}for(var be=0;be<3;++be){this.lineEnable[be]&&this._lines.drawAxisLine(be,this.bounds,Be[be].primalOffset,this.lineColor[be],this.lineWidth[be]*this.pixelRatio),this.lineMirror[be]&&this._lines.drawAxisLine(be,this.bounds,Be[be].mirrorOffset,this.lineColor[be],this.lineWidth[be]*this.pixelRatio);for(var mt=p(P,Be[be].primalMinor),Ht=p(E,Be[be].mirrorMinor),at=this.lineTickLength,ce=0;ce<3;++ce){var ct=ke/G[5*ce];mt[ce]*=at[ce]*ct,Ht[ce]*=at[ce]*ct}this.lineTickEnable[be]&&this._lines.drawAxisTicks(be,Be[be].primalOffset,mt,this.lineTickColor[be],this.lineTickWidth[be]*this.pixelRatio),this.lineTickMirror[be]&&this._lines.drawAxisTicks(be,Be[be].mirrorOffset,Ht,this.lineTickColor[be],this.lineTickWidth[be]*this.pixelRatio)}this._lines.unbind(),this._text.bind(G,Z,j,this.pixelRatio);var ar,Vt=.5,rr,tt;function je(dt){tt=[0,0,0],tt[dt]=1}function Ue(dt,Et,pt){var jt=(dt+1)%3,or=(dt+2)%3,mr=Et[jt],Ar=Et[or],ei=pt[jt],qr=pt[or];if(mr>0&&qr>0){je(jt);return}else if(mr>0&&qr<0){je(jt);return}else if(mr<0&&qr>0){je(jt);return}else if(mr<0&&qr<0){je(jt);return}else if(Ar>0&&ei>0){je(or);return}else if(Ar>0&&ei<0){je(or);return}else if(Ar<0&&ei>0){je(or);return}else if(Ar<0&&ei<0){je(or);return}}for(var be=0;be<3;++be){for(var Ae=Be[be].primalMinor,rt=Be[be].mirrorMinor,St=p(z,Be[be].primalOffset),ce=0;ce<3;++ce)this.lineTickEnable[be]&&(St[ce]+=ke*Ae[ce]*Math.max(this.lineTickLength[ce],0)/G[5*ce]);var Tt=[0,0,0];if(Tt[be]=1,this.tickEnable[be]){this.tickAngle[be]===-3600?(this.tickAngle[be]=0,this.tickAlign[be]="auto"):this.tickAlign[be]=-1,rr=1,ar=[this.tickAlign[be],Vt,rr],ar[0]==="auto"?ar[0]=g:ar[0]=parseInt(""+ar[0]),tt=[0,0,0],Ue(be,Ae,rt);for(var ce=0;ce<3;++ce)St[ce]+=ke*Ae[ce]*this.tickPad[ce]/G[5*ce];this._text.drawTicks(be,this.tickSize[be],this.tickAngle[be],St,this.tickColor[be],Tt,tt,ar)}if(this.labelEnable[be]){rr=0,tt=[0,0,0],this.labels[be].length>4&&(je(be),rr=1),ar=[this.labelAlign[be],Vt,rr],ar[0]==="auto"?ar[0]=g:ar[0]=parseInt(""+ar[0]);for(var ce=0;ce<3;++ce)St[ce]+=ke*Ae[ce]*this.labelPad[ce]/G[5*ce];St[be]+=.5*(N[0][be]+N[1][be]),this._text.drawLabel(be,this.labelSize[be],this.labelAngle[be],St,this.labelColor[be],[0,0,0],tt,ar)}}this._text.unbind()},M.dispose=function(){this._text.dispose(),this._lines.dispose(),this._background.dispose(),this._lines=null,this._text=null,this._background=null,this.gl=null};function q(V,G){var Z=new k(V);return Z.update(G),Z}},5304:function(i,a,o){"use strict";i.exports=h;var s=o(2762),l=o(8116),u=o(1879).bg;function c(d,v,m,b){this.gl=d,this.buffer=v,this.vao=m,this.shader=b}var f=c.prototype;f.draw=function(d,v,m,b,p,k){for(var M=!1,T=0;T<3;++T)M=M||p[T];if(M){var L=this.gl;L.enable(L.POLYGON_OFFSET_FILL),L.polygonOffset(1,2),this.shader.bind(),this.shader.uniforms={model:d,view:v,projection:m,bounds:b,enable:p,colors:k},this.vao.bind(),this.vao.draw(this.gl.TRIANGLES,36),this.vao.unbind(),L.disable(L.POLYGON_OFFSET_FILL)}},f.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()};function h(d){for(var v=[],m=[],b=0,p=0;p<3;++p)for(var k=(p+1)%3,M=(p+2)%3,T=[0,0,0],L=[0,0,0],x=-1;x<=1;x+=2){m.push(b,b+2,b+1,b+1,b+2,b+3),T[p]=x,L[p]=x;for(var C=-1;C<=1;C+=2){T[k]=C;for(var S=-1;S<=1;S+=2)T[M]=S,v.push(T[0],T[1],T[2],L[0],L[1],L[2]),b+=1}var g=k;k=M,M=g}var P=s(d,new Float32Array(v)),E=s(d,new Uint16Array(m),d.ELEMENT_ARRAY_BUFFER),z=l(d,[{buffer:P,type:d.FLOAT,size:3,offset:0,stride:24},{buffer:P,type:d.FLOAT,size:3,offset:12,stride:24}],E),q=u(d);return q.attributes.position.location=0,q.attributes.normal.location=1,new c(d,P,z,q)}},6429:function(i,a,o){"use strict";i.exports=x;var s=o(8828),l=o(6760),u=o(5202),c=o(3250),f=new Array(16),h=new Array(8),d=new Array(8),v=new Array(3),m=[0,0,0];(function(){for(var C=0;C<8;++C)h[C]=[1,1,1,1],d[C]=[1,1,1]})();function b(C,S,g){for(var P=0;P<4;++P){C[P]=g[12+P];for(var E=0;E<3;++E)C[P]+=S[E]*g[4*E+P]}}var p=[[0,0,1,0,0],[0,0,-1,1,0],[0,-1,0,1,0],[0,1,0,1,0],[-1,0,0,1,0],[1,0,0,1,0]];function k(C){for(var S=0;S_e&&(Z|=1<_e){Z|=1<d[q][1])&&(Be=q);for(var Le=-1,q=0;q<3;++q){var me=Be^1<d[Pe][0]&&(Pe=me)}}var ce=M;ce[0]=ce[1]=ce[2]=0,ce[s.log2(Le^Be)]=Be&Le,ce[s.log2(Be^Pe)]=Be&Pe;var He=Pe^7;He===Z||He===be?(He=Le^7,ce[s.log2(Pe^He)]=He&Pe):ce[s.log2(Le^He)]=He&Le;for(var lt=T,mt=Z,H=0;H<3;++H)mt&1< HALF_PI) && (b <= ONE_AND_HALF_PI)) ? + b - PI : + b; +} + +float look_horizontal_or_vertical(float a, float ratio) { + // ratio controls the ratio between being horizontal to (vertical + horizontal) + // if ratio is set to 0.5 then it is 50%, 50%. + // when using a higher ratio e.g. 0.75 the result would + // likely be more horizontal than vertical. + + float b = positive_angle(a); + + return + (b < ( ratio) * HALF_PI) ? 0.0 : + (b < (2.0 - ratio) * HALF_PI) ? -HALF_PI : + (b < (2.0 + ratio) * HALF_PI) ? 0.0 : + (b < (4.0 - ratio) * HALF_PI) ? HALF_PI : + 0.0; +} + +float roundTo(float a, float b) { + return float(b * floor((a + 0.5 * b) / b)); +} + +float look_round_n_directions(float a, int n) { + float b = positive_angle(a); + float div = TWO_PI / float(n); + float c = roundTo(b, div); + return look_upwards(c); +} + +float applyAlignOption(float rawAngle, float delta) { + return + (option > 2) ? look_round_n_directions(rawAngle + delta, option) : // option 3-n: round to n directions + (option == 2) ? look_horizontal_or_vertical(rawAngle + delta, hv_ratio) : // horizontal or vertical + (option == 1) ? rawAngle + delta : // use free angle, and flip to align with one direction of the axis + (option == 0) ? look_upwards(rawAngle) : // use free angle, and stay upwards + (option ==-1) ? 0.0 : // useful for backward compatibility, all texts remains horizontal + rawAngle; // otherwise return back raw input angle +} + +bool isAxisTitle = (axis.x == 0.0) && + (axis.y == 0.0) && + (axis.z == 0.0); + +void main() { + //Compute world offset + float axisDistance = position.z; + vec3 dataPosition = axisDistance * axis + offset; + + float beta = angle; // i.e. user defined attributes for each tick + + float axisAngle; + float clipAngle; + float flip; + + if (enableAlign) { + axisAngle = (isAxisTitle) ? HALF_PI : + computeViewAngle(dataPosition, dataPosition + axis); + clipAngle = computeViewAngle(dataPosition, dataPosition + alignDir); + + axisAngle += (sin(axisAngle) < 0.0) ? PI : 0.0; + clipAngle += (sin(clipAngle) < 0.0) ? PI : 0.0; + + flip = (dot(vec2(cos(axisAngle), sin(axisAngle)), + vec2(sin(clipAngle),-cos(clipAngle))) > 0.0) ? 1.0 : 0.0; + + beta += applyAlignOption(clipAngle, flip * PI); + } + + //Compute plane offset + vec2 planeCoord = position.xy * pixelScale; + + mat2 planeXform = scale * mat2( + cos(beta), sin(beta), + -sin(beta), cos(beta) + ); + + vec2 viewOffset = 2.0 * planeXform * planeCoord / resolution; + + //Compute clip position + vec3 clipPosition = project(dataPosition); + + //Apply text offset in clip coordinates + clipPosition += vec3(viewOffset, 0.0); + + //Done + gl_Position = vec4(clipPosition, 1.0); +} +`]),h=s([`precision highp float; +#define GLSLIFY 1 + +uniform vec4 color; +void main() { + gl_FragColor = color; +}`]);a.Q=function(m){return l(m,f,h,null,[{name:"position",type:"vec3"}])};var d=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec3 normal; + +uniform mat4 model, view, projection; +uniform vec3 enable; +uniform vec3 bounds[2]; + +varying vec3 colorChannel; + +void main() { + + vec3 signAxis = sign(bounds[1] - bounds[0]); + + vec3 realNormal = signAxis * normal; + + if(dot(realNormal, enable) > 0.0) { + vec3 minRange = min(bounds[0], bounds[1]); + vec3 maxRange = max(bounds[0], bounds[1]); + vec3 nPosition = mix(minRange, maxRange, 0.5 * (position + 1.0)); + gl_Position = projection * (view * (model * vec4(nPosition, 1.0))); + } else { + gl_Position = vec4(0,0,0,0); + } + + colorChannel = abs(realNormal); +} +`]),v=s([`precision highp float; +#define GLSLIFY 1 + +uniform vec4 colors[3]; + +varying vec3 colorChannel; + +void main() { + gl_FragColor = colorChannel.x * colors[0] + + colorChannel.y * colors[1] + + colorChannel.z * colors[2]; +}`]);a.bg=function(m){return l(m,d,v,null,[{name:"position",type:"vec3"},{name:"normal",type:"vec3"}])}},4935:function(i,a,o){"use strict";i.exports=k;var s=o(2762),l=o(8116),u=o(4359),c=o(1879).Q,f=window||process.global||{},h=f.__TEXT_CACHE||{};f.__TEXT_CACHE={};var d=3;function v(M,T,L,x){this.gl=M,this.shader=T,this.buffer=L,this.vao=x,this.tickOffset=this.tickCount=this.labelOffset=this.labelCount=null}var m=v.prototype,b=[0,0];m.bind=function(M,T,L,x){this.vao.bind(),this.shader.bind();var C=this.shader.uniforms;C.model=M,C.view=T,C.projection=L,C.pixelScale=x,b[0]=this.gl.drawingBufferWidth,b[1]=this.gl.drawingBufferHeight,this.shader.uniforms.resolution=b},m.unbind=function(){this.vao.unbind()},m.update=function(M,T,L,x,C){var S=[];function g(H,ie,ae,_e,Ee,Ce){var ge=[ae.style,ae.weight,ae.variant,ae.family].join("_"),re=h[ge];re||(re=h[ge]={});var Se=re[ie];Se||(Se=re[ie]=p(ie,{triangles:!0,font:ae.family,fontStyle:ae.style,fontWeight:ae.weight,fontVariant:ae.variant,textAlign:"center",textBaseline:"middle",lineSpacing:Ee,styletags:Ce}));for(var ke=(_e||12)/12,be=Se.positions,Be=Se.cells,Le=0,me=Be.length;Le=0;--ce){var He=be[Pe[ce]];S.push(ke*He[0],-ke*He[1],H)}}for(var P=[0,0,0],E=[0,0,0],z=[0,0,0],q=[0,0,0],V=1.25,G={breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},Z=0;Z<3;++Z){z[Z]=S.length/d|0,g(.5*(M[0][Z]+M[1][Z]),T[Z],L[Z],12,V,G),q[Z]=(S.length/d|0)-z[Z],P[Z]=S.length/d|0;for(var j=0;j=0&&(d=f.length-h-1);var v=Math.pow(10,d),m=Math.round(u*c*v),b=m+"";if(b.indexOf("e")>=0)return b;var p=m/v,k=m%v;m<0?(p=-Math.ceil(p)|0,k=-k|0):(p=Math.floor(p)|0,k=k|0);var M=""+p;if(m<0&&(M="-"+M),d){for(var T=""+k;T.length=u[0][h];--m)d.push({x:m*c[h],text:o(c[h],m)});f.push(d)}return f}function l(u,c){for(var f=0;f<3;++f){if(u[f].length!==c[f].length)return!1;for(var h=0;hM)throw new Error("gl-buffer: If resizing buffer, must not specify offset");return p.bufferSubData(k,x,L),M}function v(p,k){for(var M=s.malloc(p.length,k),T=p.length,L=0;L=0;--T){if(k[T]!==M)return!1;M*=p[T]}return!0}h.update=function(p,k){if(typeof k!="number"&&(k=-1),this.bind(),typeof p=="object"&&typeof p.shape!="undefined"){var M=p.dtype;if(c.indexOf(M)<0&&(M="float32"),this.type===this.gl.ELEMENT_ARRAY_BUFFER){var T=gl.getExtension("OES_element_index_uint");T&&M!=="uint16"?M="uint32":M="uint16"}if(M===p.dtype&&m(p.shape,p.stride))p.offset===0&&p.data.length===p.shape[0]?this.length=d(this.gl,this.type,this.length,this.usage,p.data,k):this.length=d(this.gl,this.type,this.length,this.usage,p.data.subarray(p.offset,p.shape[0]),k);else{var L=s.malloc(p.size,M),x=u(L,p.shape);l.assign(x,p),k<0?this.length=d(this.gl,this.type,this.length,this.usage,L,k):this.length=d(this.gl,this.type,this.length,this.usage,L.subarray(0,p.size),k),s.free(L)}}else if(Array.isArray(p)){var C;this.type===this.gl.ELEMENT_ARRAY_BUFFER?C=v(p,"uint16"):C=v(p,"float32"),k<0?this.length=d(this.gl,this.type,this.length,this.usage,C,k):this.length=d(this.gl,this.type,this.length,this.usage,C.subarray(0,p.length),k),s.free(C)}else if(typeof p=="object"&&typeof p.length=="number")this.length=d(this.gl,this.type,this.length,this.usage,p,k);else if(typeof p=="number"||p===void 0){if(k>=0)throw new Error("gl-buffer: Cannot specify offset when resizing buffer");p=p|0,p<=0&&(p=1),this.gl.bufferData(this.type,p|0,this.usage),this.length=p}else throw new Error("gl-buffer: Invalid data type")};function b(p,k,M,T){if(M=M||p.ARRAY_BUFFER,T=T||p.DYNAMIC_DRAW,M!==p.ARRAY_BUFFER&&M!==p.ELEMENT_ARRAY_BUFFER)throw new Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");if(T!==p.DYNAMIC_DRAW&&T!==p.STATIC_DRAW&&T!==p.STREAM_DRAW)throw new Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");var L=p.createBuffer(),x=new f(p,M,L,0,T);return x.update(k),x}i.exports=b},6405:function(i,a,o){"use strict";var s=o(2931);i.exports=function(u,c){var f=u.positions,h=u.vectors,d={positions:[],vertexIntensity:[],vertexIntensityBounds:u.vertexIntensityBounds,vectors:[],cells:[],coneOffset:u.coneOffset,colormap:u.colormap};if(u.positions.length===0)return c&&(c[0]=[0,0,0],c[1]=[0,0,0]),d;for(var v=0,m=1/0,b=-1/0,p=1/0,k=-1/0,M=1/0,T=-1/0,L=null,x=null,C=[],S=1/0,g=!1,P=u.coneSizemode==="raw",E=0;Ev&&(v=s.length(q)),E&&!P){var V=2*s.distance(L,z)/(s.length(x)+s.length(q));V?(S=Math.min(S,V),g=!1):g=!0}g||(L=z,x=q),C.push(q)}var G=[m,p,M],Z=[b,k,T];c&&(c[0]=G,c[1]=Z),v===0&&(v=1);var j=1/v;isFinite(S)||(S=1),d.vectorScale=S;var N=u.coneSize||(P?1:.5);u.absoluteConeSize&&(N=u.absoluteConeSize*j),d.coneScale=N;for(var E=0,H=0;E=1},p.isTransparent=function(){return this.opacity<1},p.pickSlots=1,p.setPickBase=function(C){this.pickId=C};function k(C){for(var S=v({colormap:C,nshades:256,format:"rgba"}),g=new Uint8Array(256*4),P=0;P<256;++P){for(var E=S[P],z=0;z<3;++z)g[4*P+z]=E[z];g[4*P+3]=E[3]*255}return d(g,[256,256,4],[4,0,1])}function M(C){for(var S=C.length,g=new Array(S),P=0;P0){var H=this.triShader;H.bind(),H.uniforms=V,this.triangleVAO.bind(),S.drawArrays(S.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()}},p.drawPick=function(C){C=C||{};for(var S=this.gl,g=C.model||m,P=C.view||m,E=C.projection||m,z=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],q=0;q<3;++q)z[0][q]=Math.max(z[0][q],this.clipBounds[0][q]),z[1][q]=Math.min(z[1][q],this.clipBounds[1][q]);this._model=[].slice.call(g),this._view=[].slice.call(P),this._projection=[].slice.call(E),this._resolution=[S.drawingBufferWidth,S.drawingBufferHeight];var V={model:g,view:P,projection:E,clipBounds:z,tubeScale:this.tubeScale,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,pickId:this.pickId/255},G=this.pickShader;G.bind(),G.uniforms=V,this.triangleCount>0&&(this.triangleVAO.bind(),S.drawArrays(S.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind())},p.pick=function(C){if(!C||C.id!==this.pickId)return null;var S=C.value[0]+256*C.value[1]+65536*C.value[2],g=this.cells[S],P=this.positions[g[1]].slice(0,3),E={position:P,dataCoordinate:P,index:Math.floor(g[1]/48)};return this.traceType==="cone"?E.index=Math.floor(g[1]/48):this.traceType==="streamtube"&&(E.intensity=this.intensity[g[1]],E.velocity=this.vectors[g[1]].slice(0,3),E.divergence=this.vectors[g[1]][3],E.index=S),E},p.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.pickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleVectors.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleIds.dispose()};function T(C,S){var g=s(C,S.meshShader.vertex,S.meshShader.fragment,null,S.meshShader.attributes);return g.attributes.position.location=0,g.attributes.color.location=2,g.attributes.uv.location=3,g.attributes.vector.location=4,g}function L(C,S){var g=s(C,S.pickShader.vertex,S.pickShader.fragment,null,S.pickShader.attributes);return g.attributes.position.location=0,g.attributes.id.location=1,g.attributes.vector.location=4,g}function x(C,S,g){var P=g.shaders;arguments.length===1&&(S=C,C=S.gl);var E=T(C,P),z=L(C,P),q=c(C,d(new Uint8Array([255,255,255,255]),[1,1,4]));q.generateMipmap(),q.minFilter=C.LINEAR_MIPMAP_LINEAR,q.magFilter=C.LINEAR;var V=l(C),G=l(C),Z=l(C),j=l(C),N=l(C),H=u(C,[{buffer:V,type:C.FLOAT,size:4},{buffer:N,type:C.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:Z,type:C.FLOAT,size:4},{buffer:j,type:C.FLOAT,size:2},{buffer:G,type:C.FLOAT,size:4}]),ie=new b(C,q,E,z,V,G,N,Z,j,H,g.traceType||"cone");return ie.update(S),ie}i.exports=x},614:function(i,a,o){var s=o(3236),l=s([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the cone vertex and normal at the given index. +// +// The returned vertex is for a cone with its top at origin and height of 1.0, +// pointing in the direction of the vector attribute. +// +// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices. +// These vertices are used to make up the triangles of the cone by the following: +// segment + 0 top vertex +// segment + 1 perimeter vertex a+1 +// segment + 2 perimeter vertex a +// segment + 3 center base vertex +// segment + 4 perimeter vertex a +// segment + 5 perimeter vertex a+1 +// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment. +// To go from index to segment, floor(index / 6) +// To go from segment to angle, 2*pi * (segment/segmentCount) +// To go from index to segment index, index - (segment*6) +// +vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) { + + const float segmentCount = 8.0; + + float index = rawIndex - floor(rawIndex / + (segmentCount * 6.0)) * + (segmentCount * 6.0); + + float segment = floor(0.001 + index/6.0); + float segmentIndex = index - (segment*6.0); + + normal = -normalize(d); + + if (segmentIndex > 2.99 && segmentIndex < 3.01) { + return mix(vec3(0.0), -d, coneOffset); + } + + float nextAngle = ( + (segmentIndex > 0.99 && segmentIndex < 1.01) || + (segmentIndex > 4.99 && segmentIndex < 5.01) + ) ? 1.0 : 0.0; + float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount); + + vec3 v1 = mix(d, vec3(0.0), coneOffset); + vec3 v2 = v1 - d; + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d)*0.25; + vec3 y = v * sin(angle) * length(d)*0.25; + vec3 v3 = v2 + x + y; + if (segmentIndex < 3.0) { + vec3 tx = u * sin(angle); + vec3 ty = v * -cos(angle); + vec3 tangent = tx + ty; + normal = normalize(cross(v3 - v1, tangent)); + } + + if (segmentIndex == 0.0) { + return mix(d, vec3(0.0), coneOffset); + } + return v3; +} + +attribute vec3 vector; +attribute vec4 color, position; +attribute vec2 uv; + +uniform float vectorScale, coneScale, coneOffset; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 eyePosition, lightPosition; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + // Scale the vector magnitude to stay constant with + // model & view changes. + vec3 normal; + vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector), position.w, coneOffset, normal); + vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * conePosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + // vec4 m_position = model * vec4(conePosition, 1.0); + vec4 t_position = view * conePosition; + gl_Position = projection * t_position; + + f_color = color; + f_data = conePosition.xyz; + f_position = position.xyz; + f_uv = uv; +} +`]),u=s([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform sampler2D texture; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = f_color * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * opacity; +} +`]),c=s([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the cone vertex and normal at the given index. +// +// The returned vertex is for a cone with its top at origin and height of 1.0, +// pointing in the direction of the vector attribute. +// +// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices. +// These vertices are used to make up the triangles of the cone by the following: +// segment + 0 top vertex +// segment + 1 perimeter vertex a+1 +// segment + 2 perimeter vertex a +// segment + 3 center base vertex +// segment + 4 perimeter vertex a +// segment + 5 perimeter vertex a+1 +// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment. +// To go from index to segment, floor(index / 6) +// To go from segment to angle, 2*pi * (segment/segmentCount) +// To go from index to segment index, index - (segment*6) +// +vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) { + + const float segmentCount = 8.0; + + float index = rawIndex - floor(rawIndex / + (segmentCount * 6.0)) * + (segmentCount * 6.0); + + float segment = floor(0.001 + index/6.0); + float segmentIndex = index - (segment*6.0); + + normal = -normalize(d); + + if (segmentIndex > 2.99 && segmentIndex < 3.01) { + return mix(vec3(0.0), -d, coneOffset); + } + + float nextAngle = ( + (segmentIndex > 0.99 && segmentIndex < 1.01) || + (segmentIndex > 4.99 && segmentIndex < 5.01) + ) ? 1.0 : 0.0; + float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount); + + vec3 v1 = mix(d, vec3(0.0), coneOffset); + vec3 v2 = v1 - d; + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d)*0.25; + vec3 y = v * sin(angle) * length(d)*0.25; + vec3 v3 = v2 + x + y; + if (segmentIndex < 3.0) { + vec3 tx = u * sin(angle); + vec3 ty = v * -cos(angle); + vec3 tangent = tx + ty; + normal = normalize(cross(v3 - v1, tangent)); + } + + if (segmentIndex == 0.0) { + return mix(d, vec3(0.0), coneOffset); + } + return v3; +} + +attribute vec4 vector; +attribute vec4 position; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform float vectorScale, coneScale, coneOffset; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + vec3 normal; + vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector.xyz), position.w, coneOffset, normal); + vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + gl_Position = projection * (view * conePosition); + f_id = id; + f_position = position.xyz; +} +`]),f=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec3"}]},a.pickShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec3"}]}},737:function(i){i.exports={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"}},5171:function(i,a,o){var s=o(737);i.exports=function(u){return s[u]}},9165:function(i,a,o){"use strict";i.exports=b;var s=o(2762),l=o(8116),u=o(3436),c=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function f(p,k,M,T){this.gl=p,this.shader=T,this.buffer=k,this.vao=M,this.pixelRatio=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lineWidth=[1,1,1],this.capSize=[10,10,10],this.lineCount=[0,0,0],this.lineOffset=[0,0,0],this.opacity=1,this.hasAlpha=!1}var h=f.prototype;h.isOpaque=function(){return!this.hasAlpha},h.isTransparent=function(){return this.hasAlpha},h.drawTransparent=h.draw=function(p){var k=this.gl,M=this.shader.uniforms;this.shader.bind();var T=M.view=p.view||c,L=M.projection=p.projection||c;M.model=p.model||c,M.clipBounds=this.clipBounds,M.opacity=this.opacity;var x=T[12],C=T[13],S=T[14],g=T[15],P=p._ortho||!1,E=P?2:1,z=E*this.pixelRatio*(L[3]*x+L[7]*C+L[11]*S+L[15]*g)/k.drawingBufferHeight;this.vao.bind();for(var q=0;q<3;++q)k.lineWidth(this.lineWidth[q]*this.pixelRatio),M.capSize=this.capSize[q]*z,this.lineCount[q]&&k.drawArrays(k.LINES,this.lineOffset[q],this.lineCount[q]);this.vao.unbind()};function d(p,k){for(var M=0;M<3;++M)p[0][M]=Math.min(p[0][M],k[M]),p[1][M]=Math.max(p[1][M],k[M])}var v=function(){for(var p=new Array(3),k=0;k<3;++k){for(var M=[],T=1;T<=2;++T)for(var L=-1;L<=1;L+=2){var x=(T+k)%3,C=[0,0,0];C[x]=L,M.push(C)}p[k]=M}return p}();function m(p,k,M,T){for(var L=v[T],x=0;x0){var V=P.slice();V[S]+=z[1][S],L.push(P[0],P[1],P[2],q[0],q[1],q[2],q[3],0,0,0,V[0],V[1],V[2],q[0],q[1],q[2],q[3],0,0,0),d(this.bounds,V),C+=2+m(L,V,q,S)}}}this.lineCount[S]=C-this.lineOffset[S]}this.buffer.update(L)}},h.dispose=function(){this.shader.dispose(),this.buffer.dispose(),this.vao.dispose()};function b(p){var k=p.gl,M=s(k),T=l(k,[{buffer:M,type:k.FLOAT,size:3,offset:0,stride:40},{buffer:M,type:k.FLOAT,size:4,offset:12,stride:40},{buffer:M,type:k.FLOAT,size:3,offset:28,stride:40}]),L=u(k);L.attributes.position.location=0,L.attributes.color.location=1,L.attributes.offset.location=2;var x=new f(k,M,T,L);return x.update(p),x}},3436:function(i,a,o){"use strict";var s=o(3236),l=o(9405),u=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position, offset; +attribute vec4 color; +uniform mat4 model, view, projection; +uniform float capSize; +varying vec4 fragColor; +varying vec3 fragPosition; + +void main() { + vec4 worldPosition = model * vec4(position, 1.0); + worldPosition = (worldPosition / worldPosition.w) + vec4(capSize * offset, 0.0); + gl_Position = projection * (view * worldPosition); + fragColor = color; + fragPosition = position; +}`]),c=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float opacity; +varying vec3 fragPosition; +varying vec4 fragColor; + +void main() { + if ( + outOfRange(clipBounds[0], clipBounds[1], fragPosition) || + fragColor.a * opacity == 0. + ) discard; + + gl_FragColor = opacity * fragColor; +}`]);i.exports=function(f){return l(f,u,c,null,[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"offset",type:"vec3"}])}},2260:function(i,a,o){"use strict";var s=o(7766);i.exports=C;var l=null,u,c,f,h;function d(S){var g=S.getParameter(S.FRAMEBUFFER_BINDING),P=S.getParameter(S.RENDERBUFFER_BINDING),E=S.getParameter(S.TEXTURE_BINDING_2D);return[g,P,E]}function v(S,g){S.bindFramebuffer(S.FRAMEBUFFER,g[0]),S.bindRenderbuffer(S.RENDERBUFFER,g[1]),S.bindTexture(S.TEXTURE_2D,g[2])}function m(S,g){var P=S.getParameter(g.MAX_COLOR_ATTACHMENTS_WEBGL);l=new Array(P+1);for(var E=0;E<=P;++E){for(var z=new Array(P),q=0;q1&&G.drawBuffersWEBGL(l[V]);var ie=P.getExtension("WEBGL_depth_texture");ie?Z?S.depth=p(P,z,q,ie.UNSIGNED_INT_24_8_WEBGL,P.DEPTH_STENCIL,P.DEPTH_STENCIL_ATTACHMENT):j&&(S.depth=p(P,z,q,P.UNSIGNED_SHORT,P.DEPTH_COMPONENT,P.DEPTH_ATTACHMENT)):j&&Z?S._depth_rb=k(P,z,q,P.DEPTH_STENCIL,P.DEPTH_STENCIL_ATTACHMENT):j?S._depth_rb=k(P,z,q,P.DEPTH_COMPONENT16,P.DEPTH_ATTACHMENT):Z&&(S._depth_rb=k(P,z,q,P.STENCIL_INDEX,P.STENCIL_ATTACHMENT));var ae=P.checkFramebufferStatus(P.FRAMEBUFFER);if(ae!==P.FRAMEBUFFER_COMPLETE){S._destroyed=!0,P.bindFramebuffer(P.FRAMEBUFFER,null),P.deleteFramebuffer(S.handle),S.handle=null,S.depth&&(S.depth.dispose(),S.depth=null),S._depth_rb&&(P.deleteRenderbuffer(S._depth_rb),S._depth_rb=null);for(var H=0;Hz||P<0||P>z)throw new Error("gl-fbo: Can't resize FBO, invalid dimensions");S._shape[0]=g,S._shape[1]=P;for(var q=d(E),V=0;Vq||P<0||P>q)throw new Error("gl-fbo: Parameters are too large for FBO");E=E||{};var V=1;if("color"in E){if(V=Math.max(E.color|0,0),V<0)throw new Error("gl-fbo: Must specify a nonnegative number of colors");if(V>1)if(z){if(V>S.getParameter(z.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error("gl-fbo: Context does not support "+V+" draw buffers")}else throw new Error("gl-fbo: Multiple draw buffer extension not supported")}var G=S.UNSIGNED_BYTE,Z=S.getExtension("OES_texture_float");if(E.float&&V>0){if(!Z)throw new Error("gl-fbo: Context does not support floating point textures");G=S.FLOAT}else E.preferFloat&&V>0&&Z&&(G=S.FLOAT);var j=!0;"depth"in E&&(j=!!E.depth);var N=!1;return"stencil"in E&&(N=!!E.stencil),new T(S,g,P,G,V,j,N,z)}},2992:function(i,a,o){var s=o(3387).sprintf,l=o(5171),u=o(1848),c=o(1085);i.exports=f;function f(h,d,v){"use strict";var m=u(d)||"of unknown name (see npm glsl-shader-name)",b="unknown type";v!==void 0&&(b=v===l.FRAGMENT_SHADER?"fragment":"vertex");for(var p=s(`Error compiling %s shader %s: +`,b,m),k=s("%s%s",p,h),M=h.split(` +`),T={},L=0;L max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform sampler2D dashTexture; +uniform float dashScale; +uniform float opacity; + +varying vec3 worldPosition; +varying float pixelArcLength; +varying vec4 fragColor; + +void main() { + if ( + outOfRange(clipBounds[0], clipBounds[1], worldPosition) || + fragColor.a * opacity == 0. + ) discard; + + float dashWeight = texture2D(dashTexture, vec2(dashScale * pixelArcLength, 0)).r; + if(dashWeight < 0.5) { + discard; + } + gl_FragColor = fragColor * opacity; +} +`]),f=s([`precision highp float; +#define GLSLIFY 1 + +#define FLOAT_MAX 1.70141184e38 +#define FLOAT_MIN 1.17549435e-38 + +// https://github.com/mikolalysenko/glsl-read-float/blob/master/index.glsl +vec4 packFloat(float v) { + float av = abs(v); + + //Handle special cases + if(av < FLOAT_MIN) { + return vec4(0.0, 0.0, 0.0, 0.0); + } else if(v > FLOAT_MAX) { + return vec4(127.0, 128.0, 0.0, 0.0) / 255.0; + } else if(v < -FLOAT_MAX) { + return vec4(255.0, 128.0, 0.0, 0.0) / 255.0; + } + + vec4 c = vec4(0,0,0,0); + + //Compute exponent and mantissa + float e = floor(log2(av)); + float m = av * pow(2.0, -e) - 1.0; + + //Unpack mantissa + c[1] = floor(128.0 * m); + m -= c[1] / 128.0; + c[2] = floor(32768.0 * m); + m -= c[2] / 32768.0; + c[3] = floor(8388608.0 * m); + + //Unpack exponent + float ebias = e + 127.0; + c[0] = floor(ebias / 2.0); + ebias -= c[0] * 2.0; + c[1] += floor(ebias) * 128.0; + + //Unpack sign bit + c[0] += 128.0 * step(0.0, -v); + + //Scale back to range + return c / 255.0; +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform float pickId; +uniform vec3 clipBounds[2]; + +varying vec3 worldPosition; +varying float pixelArcLength; +varying vec4 fragColor; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], worldPosition)) discard; + + gl_FragColor = vec4(pickId/255.0, packFloat(pixelArcLength).xyz); +}`]),h=[{name:"position",type:"vec3"},{name:"nextPosition",type:"vec3"},{name:"arcLength",type:"float"},{name:"lineWidth",type:"float"},{name:"color",type:"vec4"}];a.createShader=function(d){return l(d,u,c,null,h)},a.createPickShader=function(d){return l(d,u,f,null,h)}},5714:function(i,a,o){"use strict";i.exports=S;var s=o(2762),l=o(8116),u=o(7766),c=new Uint8Array(4),f=new Float32Array(c.buffer);function h(g,P,E,z){return c[0]=z,c[1]=E,c[2]=P,c[3]=g,f[0]}var d=o(2478),v=o(9618),m=o(7319),b=m.createShader,p=m.createPickShader,k=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function M(g,P){for(var E=0,z=0;z<3;++z){var q=g[z]-P[z];E+=q*q}return Math.sqrt(E)}function T(g){for(var P=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],E=0;E<3;++E)P[0][E]=Math.max(g[0][E],P[0][E]),P[1][E]=Math.min(g[1][E],P[1][E]);return P}function L(g,P,E,z){this.arcLength=g,this.position=P,this.index=E,this.dataCoordinate=z}function x(g,P,E,z,q,V){this.gl=g,this.shader=P,this.pickShader=E,this.buffer=z,this.vao=q,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.points=[],this.arcLength=[],this.vertexCount=0,this.bounds=[[0,0,0],[0,0,0]],this.pickId=0,this.lineWidth=1,this.texture=V,this.dashScale=1,this.opacity=1,this.hasAlpha=!1,this.dirty=!0,this.pixelRatio=1}var C=x.prototype;C.isTransparent=function(){return this.hasAlpha},C.isOpaque=function(){return!this.hasAlpha},C.pickSlots=1,C.setPickBase=function(g){this.pickId=g},C.drawTransparent=C.draw=function(g){if(this.vertexCount){var P=this.gl,E=this.shader,z=this.vao;E.bind(),E.uniforms={model:g.model||k,view:g.view||k,projection:g.projection||k,clipBounds:T(this.clipBounds),dashTexture:this.texture.bind(),dashScale:this.dashScale/this.arcLength[this.arcLength.length-1],opacity:this.opacity,screenShape:[P.drawingBufferWidth,P.drawingBufferHeight],pixelRatio:this.pixelRatio},z.bind(),z.draw(P.TRIANGLE_STRIP,this.vertexCount),z.unbind()}},C.drawPick=function(g){if(this.vertexCount){var P=this.gl,E=this.pickShader,z=this.vao;E.bind(),E.uniforms={model:g.model||k,view:g.view||k,projection:g.projection||k,pickId:this.pickId,clipBounds:T(this.clipBounds),screenShape:[P.drawingBufferWidth,P.drawingBufferHeight],pixelRatio:this.pixelRatio},z.bind(),z.draw(P.TRIANGLE_STRIP,this.vertexCount),z.unbind()}},C.update=function(g){var P,E;this.dirty=!0;var z=!!g.connectGaps;"dashScale"in g&&(this.dashScale=g.dashScale),this.hasAlpha=!1,"opacity"in g&&(this.opacity=+g.opacity,this.opacity<1&&(this.hasAlpha=!0));var q=[],V=[],G=[],Z=0,j=0,N=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],H=g.position||g.positions;if(H){var ie=g.color||g.colors||[0,0,0,1],ae=g.lineWidth||1,_e=!1;e:for(P=1;P0){for(var ge=0;ge<24;++ge)q.push(q[q.length-12]);j+=2,_e=!0}continue e}N[0][E]=Math.min(N[0][E],Ee[E],Ce[E]),N[1][E]=Math.max(N[1][E],Ee[E],Ce[E])}var re,Se;Array.isArray(ie[0])?(re=ie.length>P-1?ie[P-1]:ie.length>0?ie[ie.length-1]:[0,0,0,1],Se=ie.length>P?ie[P]:ie.length>0?ie[ie.length-1]:[0,0,0,1]):re=Se=ie,re.length===3&&(re=[re[0],re[1],re[2],1]),Se.length===3&&(Se=[Se[0],Se[1],Se[2],1]),!this.hasAlpha&&re[3]<1&&(this.hasAlpha=!0);var ke;Array.isArray(ae)?ke=ae.length>P-1?ae[P-1]:ae.length>0?ae[ae.length-1]:[0,0,0,1]:ke=ae;var be=Z;if(Z+=M(Ee,Ce),_e){for(E=0;E<2;++E)q.push(Ee[0],Ee[1],Ee[2],Ce[0],Ce[1],Ce[2],be,ke,re[0],re[1],re[2],re[3]);j+=2,_e=!1}q.push(Ee[0],Ee[1],Ee[2],Ce[0],Ce[1],Ce[2],be,ke,re[0],re[1],re[2],re[3],Ee[0],Ee[1],Ee[2],Ce[0],Ce[1],Ce[2],be,-ke,re[0],re[1],re[2],re[3],Ce[0],Ce[1],Ce[2],Ee[0],Ee[1],Ee[2],Z,-ke,Se[0],Se[1],Se[2],Se[3],Ce[0],Ce[1],Ce[2],Ee[0],Ee[1],Ee[2],Z,ke,Se[0],Se[1],Se[2],Se[3]),j+=4}}if(this.buffer.update(q),V.push(Z),G.push(H[H.length-1].slice()),this.bounds=N,this.vertexCount=j,this.points=G,this.arcLength=V,"dashes"in g){var Be=g.dashes,Le=Be.slice();for(Le.unshift(0),P=1;P1.0001)return null;E+=P[L]}return Math.abs(E-1)>.001?null:[x,h(v,P),P]}},840:function(i,a,o){var s=o(3236),l=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position, normal; +attribute vec4 color; +attribute vec2 uv; + +uniform mat4 model + , view + , projection + , inverseModel; +uniform vec3 eyePosition + , lightPosition; + +varying vec3 f_normal + , f_lightDirection + , f_eyeDirection + , f_data; +varying vec4 f_color; +varying vec2 f_uv; + +vec4 project(vec3 p) { + return projection * (view * (model * vec4(p, 1.0))); +} + +void main() { + gl_Position = project(position); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * vec4(position , 1.0); + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + f_color = color; + f_data = position; + f_uv = uv; +} +`]),u=s([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +//#pragma glslify: beckmann = require(glsl-specular-beckmann) // used in gl-surface3d + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness + , fresnel + , kambient + , kdiffuse + , kspecular; +uniform sampler2D texture; + +varying vec3 f_normal + , f_lightDirection + , f_eyeDirection + , f_data; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (f_color.a == 0.0 || + outOfRange(clipBounds[0], clipBounds[1], f_data) + ) discard; + + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + //float specular = max(0.0, beckmann(L, V, N, roughness)); // used in gl-surface3d + + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = vec4(f_color.rgb, 1.0) * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * f_color.a; +} +`]),c=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec4 color; +attribute vec2 uv; + +uniform mat4 model, view, projection; + +varying vec4 f_color; +varying vec3 f_data; +varying vec2 f_uv; + +void main() { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + f_color = color; + f_data = position; + f_uv = uv; +}`]),f=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform sampler2D texture; +uniform float opacity; + +varying vec4 f_color; +varying vec3 f_data; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_data)) discard; + + gl_FragColor = f_color * texture2D(texture, f_uv) * opacity; +}`]),h=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 uv; +attribute float pointSize; + +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0.0, 0.0 ,0.0 ,0.0); + } else { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + } + gl_PointSize = pointSize; + f_color = color; + f_uv = uv; +}`]),d=s([`precision highp float; +#define GLSLIFY 1 + +uniform sampler2D texture; +uniform float opacity; + +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + vec2 pointR = gl_PointCoord.xy - vec2(0.5, 0.5); + if(dot(pointR, pointR) > 0.25) { + discard; + } + gl_FragColor = f_color * texture2D(texture, f_uv) * opacity; +}`]),v=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec4 id; + +uniform mat4 model, view, projection; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + f_id = id; + f_position = position; +}`]),m=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]),b=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute float pointSize; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0.0, 0.0, 0.0, 0.0); + } else { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + gl_PointSize = pointSize; + } + f_id = id; + f_position = position; +}`]),p=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; + +uniform mat4 model, view, projection; + +void main() { + gl_Position = projection * (view * (model * vec4(position, 1.0))); +}`]),k=s([`precision highp float; +#define GLSLIFY 1 + +uniform vec3 contourColor; + +void main() { + gl_FragColor = vec4(contourColor, 1.0); +} +`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec3"},{name:"normal",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},a.wireShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},a.pointShader={vertex:h,fragment:d,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"pointSize",type:"float"}]},a.pickShader={vertex:v,fragment:m,attributes:[{name:"position",type:"vec3"},{name:"id",type:"vec4"}]},a.pointPickShader={vertex:b,fragment:m,attributes:[{name:"position",type:"vec3"},{name:"pointSize",type:"float"},{name:"id",type:"vec4"}]},a.contourShader={vertex:p,fragment:k,attributes:[{name:"position",type:"vec3"}]}},7201:function(i,a,o){"use strict";var s=1e-6,l=1e-6,u=o(9405),c=o(2762),f=o(8116),h=o(7766),d=o(8406),v=o(6760),m=o(7608),b=o(9618),p=o(6729),k=o(7765),M=o(1888),T=o(840),L=o(7626),x=T.meshShader,C=T.wireShader,S=T.pointShader,g=T.pickShader,P=T.pointPickShader,E=T.contourShader,z=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function q(ge,re,Se,ke,be,Be,Le,me,Pe,ce,He,lt,mt,Ht,at,ct,ar,Vt,rr,tt,je,Ue,Ae,rt,St,Tt,dt){this.gl=ge,this.pixelRatio=1,this.cells=[],this.positions=[],this.intensity=[],this.texture=re,this.dirty=!0,this.triShader=Se,this.lineShader=ke,this.pointShader=be,this.pickShader=Be,this.pointPickShader=Le,this.contourShader=me,this.trianglePositions=Pe,this.triangleColors=He,this.triangleNormals=mt,this.triangleUVs=lt,this.triangleIds=ce,this.triangleVAO=Ht,this.triangleCount=0,this.lineWidth=1,this.edgePositions=at,this.edgeColors=ar,this.edgeUVs=Vt,this.edgeIds=ct,this.edgeVAO=rr,this.edgeCount=0,this.pointPositions=tt,this.pointColors=Ue,this.pointUVs=Ae,this.pointSizes=rt,this.pointIds=je,this.pointVAO=St,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=Tt,this.contourVAO=dt,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickVertex=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this.hasAlpha=!1,this.opacityscale=!1,this._model=z,this._view=z,this._projection=z,this._resolution=[1,1]}var V=q.prototype;V.isOpaque=function(){return!this.hasAlpha},V.isTransparent=function(){return this.hasAlpha},V.pickSlots=1,V.setPickBase=function(ge){this.pickId=ge};function G(ge,re){if(!re||!re.length)return 1;for(var Se=0;Sege&&Se>0){var ke=(re[Se][0]-ge)/(re[Se][0]-re[Se-1][0]);return re[Se][1]*(1-ke)+ke*re[Se-1][1]}}return 1}function Z(ge,re){for(var Se=p({colormap:ge,nshades:256,format:"rgba"}),ke=new Uint8Array(256*4),be=0;be<256;++be){for(var Be=Se[be],Le=0;Le<3;++Le)ke[4*be+Le]=Be[Le];re?ke[4*be+3]=255*G(be/255,re):ke[4*be+3]=255*Be[3]}return b(ke,[256,256,4],[4,0,1])}function j(ge){for(var re=ge.length,Se=new Array(re),ke=0;ke0){var mt=this.triShader;mt.bind(),mt.uniforms=me,this.triangleVAO.bind(),re.drawArrays(re.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()}if(this.edgeCount>0&&this.lineWidth>0){var mt=this.lineShader;mt.bind(),mt.uniforms=me,this.edgeVAO.bind(),re.lineWidth(this.lineWidth*this.pixelRatio),re.drawArrays(re.LINES,0,this.edgeCount*2),this.edgeVAO.unbind()}if(this.pointCount>0){var mt=this.pointShader;mt.bind(),mt.uniforms=me,this.pointVAO.bind(),re.drawArrays(re.POINTS,0,this.pointCount),this.pointVAO.unbind()}if(this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0){var mt=this.contourShader;mt.bind(),mt.uniforms=me,this.contourVAO.bind(),re.drawArrays(re.LINES,0,this.contourCount),this.contourVAO.unbind()}},V.drawPick=function(ge){ge=ge||{};for(var re=this.gl,Se=ge.model||z,ke=ge.view||z,be=ge.projection||z,Be=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],Le=0;Le<3;++Le)Be[0][Le]=Math.max(Be[0][Le],this.clipBounds[0][Le]),Be[1][Le]=Math.min(Be[1][Le],this.clipBounds[1][Le]);this._model=[].slice.call(Se),this._view=[].slice.call(ke),this._projection=[].slice.call(be),this._resolution=[re.drawingBufferWidth,re.drawingBufferHeight];var me={model:Se,view:ke,projection:be,clipBounds:Be,pickId:this.pickId/255},Pe=this.pickShader;if(Pe.bind(),Pe.uniforms=me,this.triangleCount>0&&(this.triangleVAO.bind(),re.drawArrays(re.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),re.lineWidth(this.lineWidth*this.pixelRatio),re.drawArrays(re.LINES,0,this.edgeCount*2),this.edgeVAO.unbind()),this.pointCount>0){var Pe=this.pointPickShader;Pe.bind(),Pe.uniforms=me,this.pointVAO.bind(),re.drawArrays(re.POINTS,0,this.pointCount),this.pointVAO.unbind()}},V.pick=function(ge){if(!ge||ge.id!==this.pickId)return null;for(var re=ge.value[0]+256*ge.value[1]+65536*ge.value[2],Se=this.cells[re],ke=this.positions,be=new Array(Se.length),Be=0;BeMath.abs(g))p.rotate(z,0,0,-S*P*Math.PI*x.rotateSpeed/window.innerWidth);else if(!x._ortho){var q=-x.zoomSpeed*E*g/window.innerHeight*(z-p.lastT())/20;p.pan(z,0,0,M*(Math.exp(q)-1))}}},!0)},x.enableMouseListeners(),x}},799:function(i,a,o){var s=o(3236),l=o(9405),u=s([`precision mediump float; +#define GLSLIFY 1 +attribute vec2 position; +varying vec2 uv; +void main() { + uv = position; + gl_Position = vec4(position, 0, 1); +}`]),c=s([`precision mediump float; +#define GLSLIFY 1 + +uniform sampler2D accumBuffer; +varying vec2 uv; + +void main() { + vec4 accum = texture2D(accumBuffer, 0.5 * (uv + 1.0)); + gl_FragColor = min(vec4(1,1,1,1), accum); +}`]);i.exports=function(f){return l(f,u,c,null,[{name:"position",type:"vec2"}])}},4100:function(i,a,o){"use strict";var s=o(4437),l=o(3837),u=o(5445),c=o(4449),f=o(3589),h=o(2260),d=o(7169),v=o(351),m=o(4772),b=o(4040),p=o(799),k=o(9216)({tablet:!0,featureDetect:!0});i.exports={createScene:C,createCamera:s};function M(){this.mouse=[-1,-1],this.screen=null,this.distance=1/0,this.index=null,this.dataCoordinate=null,this.dataPosition=null,this.object=null,this.data=null}function T(g,P){var E=null;try{E=g.getContext("webgl",P),E||(E=g.getContext("experimental-webgl",P))}catch(z){return null}return E}function L(g){var P=Math.round(Math.log(Math.abs(g))/Math.log(10));if(P<0){var E=Math.round(Math.pow(10,-P));return Math.ceil(g*E)/E}else if(P>0){var E=Math.round(Math.pow(10,P));return Math.ceil(g/E)*E}return Math.ceil(g)}function x(g){return typeof g=="boolean"?g:!0}function C(g){g=g||{},g.camera=g.camera||{};var P=g.canvas;if(!P)if(P=document.createElement("canvas"),g.container){var E=g.container;E.appendChild(P)}else document.body.appendChild(P);var z=g.gl;if(z||(g.glOptions&&(k=!!g.glOptions.preserveDrawingBuffer),z=T(P,g.glOptions||{premultipliedAlpha:!0,antialias:!0,preserveDrawingBuffer:k})),!z)throw new Error("webgl not supported");var q=g.bounds||[[-10,-10,-10],[10,10,10]],V=new M,G=h(z,z.drawingBufferWidth,z.drawingBufferHeight,{preferFloat:!k}),Z=p(z),j=g.cameraObject&&g.cameraObject._ortho===!0||g.camera.projection&&g.camera.projection.type==="orthographic"||!1,N={eye:g.camera.eye||[2,0,0],center:g.camera.center||[0,0,0],up:g.camera.up||[0,1,0],zoomMin:g.camera.zoomMax||.1,zoomMax:g.camera.zoomMin||100,mode:g.camera.mode||"turntable",_ortho:j},H=g.axes||{},ie=l(z,H);ie.enable=!H.disable;var ae=g.spikes||{},_e=c(z,ae),Ee=[],Ce=[],ge=[],re=[],Se=!0,Le=!0,ke=new Array(16),be=new Array(16),Be={view:null,projection:ke,model:be,_ortho:!1},Le=!0,me=[z.drawingBufferWidth,z.drawingBufferHeight],Pe=g.cameraObject||s(P,N),ce={gl:z,contextLost:!1,pixelRatio:g.pixelRatio||1,canvas:P,selection:V,camera:Pe,axes:ie,axesPixels:null,spikes:_e,bounds:q,objects:Ee,shape:me,aspect:g.aspectRatio||[1,1,1],pickRadius:g.pickRadius||10,zNear:g.zNear||.01,zFar:g.zFar||1e3,fovy:g.fovy||Math.PI/4,clearColor:g.clearColor||[0,0,0,0],autoResize:x(g.autoResize),autoBounds:x(g.autoBounds),autoScale:!!g.autoScale,autoCenter:x(g.autoCenter),clipToBounds:x(g.clipToBounds),snapToData:!!g.snapToData,onselect:g.onselect||null,onrender:g.onrender||null,onclick:g.onclick||null,cameraParams:Be,oncontextloss:null,mouseListener:null,_stopped:!1,getAspectratio:function(){return{x:this.aspect[0],y:this.aspect[1],z:this.aspect[2]}},setAspectratio:function(tt){this.aspect[0]=tt.x,this.aspect[1]=tt.y,this.aspect[2]=tt.z,Le=!0},setBounds:function(tt,je){this.bounds[0][tt]=je.min,this.bounds[1][tt]=je.max},setClearColor:function(tt){this.clearColor=tt},clearRGBA:function(){this.gl.clearColor(this.clearColor[0],this.clearColor[1],this.clearColor[2],this.clearColor[3]),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}},He=[z.drawingBufferWidth/ce.pixelRatio|0,z.drawingBufferHeight/ce.pixelRatio|0];function lt(){if(!ce._stopped&&ce.autoResize){var tt=P.parentNode,je=1,Ue=1;tt&&tt!==document.body?(je=tt.clientWidth,Ue=tt.clientHeight):(je=window.innerWidth,Ue=window.innerHeight);var Ae=Math.ceil(je*ce.pixelRatio)|0,rt=Math.ceil(Ue*ce.pixelRatio)|0;if(Ae!==P.width||rt!==P.height){P.width=Ae,P.height=rt;var St=P.style;St.position=St.position||"absolute",St.left="0px",St.top="0px",St.width=je+"px",St.height=Ue+"px",Se=!0}}}ce.autoResize&<(),window.addEventListener("resize",lt);function mt(){for(var tt=Ee.length,je=re.length,Ue=0;Ue0&&ge[je-1]===0;)ge.pop(),re.pop().dispose()}ce.update=function(tt){ce._stopped||(tt=tt||{},Se=!0,Le=!0)},ce.add=function(tt){ce._stopped||(tt.axes=ie,Ee.push(tt),Ce.push(-1),Se=!0,Le=!0,mt())},ce.remove=function(tt){if(!ce._stopped){var je=Ee.indexOf(tt);je<0||(Ee.splice(je,1),Ce.pop(),Se=!0,Le=!0,mt())}},ce.dispose=function(){if(!ce._stopped&&(ce._stopped=!0,window.removeEventListener("resize",lt),P.removeEventListener("webglcontextlost",Ht),ce.mouseListener.enabled=!1,!ce.contextLost)){ie.dispose(),_e.dispose();for(var tt=0;ttV.distance)continue;for(var pt=0;pt1e-6?(k=Math.acos(M),T=Math.sin(k),L=Math.sin((1-u)*k)/T,x=Math.sin(u*k)/T):(L=1-u,x=u),o[0]=L*c+x*v,o[1]=L*f+x*m,o[2]=L*h+x*b,o[3]=L*d+x*p,o}},5964:function(i){"use strict";i.exports=function(a){return!a&&a!==0?"":a.toString()}},9366:function(i,a,o){"use strict";var s=o(4359);i.exports=u;var l={};function u(c,f,h){var d=[f.style,f.weight,f.variant,f.family].join("_"),v=l[d];if(v||(v=l[d]={}),c in v)return v[c];var m={textAlign:"center",textBaseline:"middle",lineHeight:1,font:f.family,fontStyle:f.style,fontWeight:f.weight,fontVariant:f.variant,lineSpacing:1.25,styletags:{breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0}};m.triangles=!0;var b=s(c,m);m.triangles=!1;var p=s(c,m),k,M;if(h&&h!==1){for(k=0;k max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform vec4 highlightId; +uniform float highlightScale; +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float scale = 1.0; + if(distance(highlightId, id) < 0.0001) { + scale = highlightScale; + } + + vec4 worldPosition = model * vec4(position, 1); + vec4 viewPosition = view * worldPosition; + viewPosition = viewPosition / viewPosition.w; + vec4 clipPosition = projection * (viewPosition + scale * vec4(glyph.x, -glyph.y, 0, 0)); + + gl_Position = clipPosition; + interpColor = color; + pickId = id; + dataCoordinate = position; + } +}`]),c=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform vec2 screenSize; +uniform vec3 clipBounds[2]; +uniform float highlightScale, pixelRatio; +uniform vec4 highlightId; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float scale = pixelRatio; + if(distance(highlightId.bgr, id.bgr) < 0.001) { + scale *= highlightScale; + } + + vec4 worldPosition = model * vec4(position, 1.0); + vec4 viewPosition = view * worldPosition; + vec4 clipPosition = projection * viewPosition; + clipPosition /= clipPosition.w; + + gl_Position = clipPosition + vec4(screenSize * scale * vec2(glyph.x, -glyph.y), 0.0, 0.0); + interpColor = color; + pickId = id; + dataCoordinate = position; + } +}`]),f=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform float highlightScale; +uniform vec4 highlightId; +uniform vec3 axes[2]; +uniform mat4 model, view, projection; +uniform vec2 screenSize; +uniform vec3 clipBounds[2]; +uniform float scale, pixelRatio; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float lscale = pixelRatio * scale; + if(distance(highlightId, id) < 0.0001) { + lscale *= highlightScale; + } + + vec4 clipCenter = projection * (view * (model * vec4(position, 1))); + vec3 dataPosition = position + 0.5*lscale*(axes[0] * glyph.x + axes[1] * glyph.y) * clipCenter.w * screenSize.y; + vec4 clipPosition = projection * (view * (model * vec4(dataPosition, 1))); + + gl_Position = clipPosition; + interpColor = color; + pickId = id; + dataCoordinate = dataPosition; + } +} +`]),h=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 fragClipBounds[2]; +uniform float opacity; + +varying vec4 interpColor; +varying vec3 dataCoordinate; + +void main() { + if ( + outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate) || + interpColor.a * opacity == 0. + ) discard; + gl_FragColor = interpColor * opacity; +} +`]),d=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 fragClipBounds[2]; +uniform float pickGroup; + +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate)) discard; + + gl_FragColor = vec4(pickGroup, pickId.bgr); +}`]),v=[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"glyph",type:"vec2"},{name:"id",type:"vec4"}],m={vertex:u,fragment:h,attributes:v},b={vertex:c,fragment:h,attributes:v},p={vertex:f,fragment:h,attributes:v},k={vertex:u,fragment:d,attributes:v},M={vertex:c,fragment:d,attributes:v},T={vertex:f,fragment:d,attributes:v};function L(x,C){var S=s(x,C),g=S.attributes;return g.position.location=0,g.color.location=1,g.glyph.location=2,g.id.location=3,S}a.createPerspective=function(x){return L(x,m)},a.createOrtho=function(x){return L(x,b)},a.createProject=function(x){return L(x,p)},a.createPickPerspective=function(x){return L(x,k)},a.createPickOrtho=function(x){return L(x,M)},a.createPickProject=function(x){return L(x,T)}},8418:function(i,a,o){"use strict";var s=o(5219),l=o(2762),u=o(8116),c=o(1888),f=o(6760),h=o(1283),d=o(9366),v=o(5964),m=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],b=ArrayBuffer,p=DataView;function k(be){return b.isView(be)&&!(be instanceof p)}function M(be){return Array.isArray(be)||k(be)}i.exports=ke;function T(be,Be){var Le=be[0],me=be[1],Pe=be[2],ce=be[3];return be[0]=Be[0]*Le+Be[4]*me+Be[8]*Pe+Be[12]*ce,be[1]=Be[1]*Le+Be[5]*me+Be[9]*Pe+Be[13]*ce,be[2]=Be[2]*Le+Be[6]*me+Be[10]*Pe+Be[14]*ce,be[3]=Be[3]*Le+Be[7]*me+Be[11]*Pe+Be[15]*ce,be}function L(be,Be,Le,me){return T(me,me,Le),T(me,me,Be),T(me,me,be)}function x(be,Be){this.index=be,this.dataCoordinate=this.position=Be}function C(be){return be===!0||be>1?1:be}function S(be,Be,Le,me,Pe,ce,He,lt,mt,Ht,at,ct){this.gl=be,this.pixelRatio=1,this.shader=Be,this.orthoShader=Le,this.projectShader=me,this.pointBuffer=Pe,this.colorBuffer=ce,this.glyphBuffer=He,this.idBuffer=lt,this.vao=mt,this.vertexCount=0,this.lineVertexCount=0,this.opacity=1,this.hasAlpha=!1,this.lineWidth=0,this.projectScale=[.6666666666666666,.6666666666666666,.6666666666666666],this.projectOpacity=[1,1,1],this.projectHasAlpha=!1,this.pickId=0,this.pickPerspectiveShader=Ht,this.pickOrthoShader=at,this.pickProjectShader=ct,this.points=[],this._selectResult=new x(0,[0,0,0]),this.useOrtho=!0,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.axesProject=[!0,!0,!0],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.highlightId=[1,1,1,1],this.highlightScale=2,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.dirty=!0}var g=S.prototype;g.pickSlots=1,g.setPickBase=function(be){this.pickId=be},g.isTransparent=function(){if(this.hasAlpha)return!0;for(var be=0;be<3;++be)if(this.axesProject[be]&&this.projectHasAlpha)return!0;return!1},g.isOpaque=function(){if(!this.hasAlpha)return!0;for(var be=0;be<3;++be)if(this.axesProject[be]&&!this.projectHasAlpha)return!0;return!1};var P=[0,0],E=[0,0,0],z=[0,0,0],q=[0,0,0,1],V=[0,0,0,1],G=m.slice(),Z=[0,0,0],j=[[0,0,0],[0,0,0]];function N(be){return be[0]=be[1]=be[2]=0,be}function H(be,Be){return be[0]=Be[0],be[1]=Be[1],be[2]=Be[2],be[3]=1,be}function ie(be,Be,Le,me){return be[0]=Be[0],be[1]=Be[1],be[2]=Be[2],be[Le]=me,be}function ae(be){for(var Be=j,Le=0;Le<2;++Le)for(var me=0;me<3;++me)Be[Le][me]=Math.max(Math.min(be[Le][me],1e8),-1e8);return Be}function _e(be,Be,Le,me){var Pe=Be.axesProject,ce=Be.gl,He=be.uniforms,lt=Le.model||m,mt=Le.view||m,Ht=Le.projection||m,at=Be.axesBounds,ct=ae(Be.clipBounds),ar;Be.axes&&Be.axes.lastCubeProps?ar=Be.axes.lastCubeProps.axis:ar=[1,1,1],P[0]=2/ce.drawingBufferWidth,P[1]=2/ce.drawingBufferHeight,be.bind(),He.view=mt,He.projection=Ht,He.screenSize=P,He.highlightId=Be.highlightId,He.highlightScale=Be.highlightScale,He.clipBounds=ct,He.pickGroup=Be.pickId/255,He.pixelRatio=me;for(var Vt=0;Vt<3;++Vt)if(Pe[Vt]){He.scale=Be.projectScale[Vt],He.opacity=Be.projectOpacity[Vt];for(var rr=G,tt=0;tt<16;++tt)rr[tt]=0;for(var tt=0;tt<4;++tt)rr[5*tt]=1;rr[5*Vt]=0,ar[Vt]<0?rr[12+Vt]=at[0][Vt]:rr[12+Vt]=at[1][Vt],f(rr,lt,rr),He.model=rr;var je=(Vt+1)%3,Ue=(Vt+2)%3,Ae=N(E),rt=N(z);Ae[je]=1,rt[Ue]=1;var St=L(Ht,mt,lt,H(q,Ae)),Tt=L(Ht,mt,lt,H(V,rt));if(Math.abs(St[1])>Math.abs(Tt[1])){var dt=St;St=Tt,Tt=dt,dt=Ae,Ae=rt,rt=dt;var Et=je;je=Ue,Ue=Et}St[0]<0&&(Ae[je]=-1),Tt[1]>0&&(rt[Ue]=-1);for(var pt=0,jt=0,tt=0;tt<4;++tt)pt+=Math.pow(lt[4*je+tt],2),jt+=Math.pow(lt[4*Ue+tt],2);Ae[je]/=Math.sqrt(pt),rt[Ue]/=Math.sqrt(jt),He.axes[0]=Ae,He.axes[1]=rt,He.fragClipBounds[0]=ie(Z,ct[0],Vt,-1e8),He.fragClipBounds[1]=ie(Z,ct[1],Vt,1e8),Be.vao.bind(),Be.vao.draw(ce.TRIANGLES,Be.vertexCount),Be.lineWidth>0&&(ce.lineWidth(Be.lineWidth*me),Be.vao.draw(ce.LINES,Be.lineVertexCount,Be.vertexCount)),Be.vao.unbind()}}var Ee=[-1e8,-1e8,-1e8],Ce=[1e8,1e8,1e8],ge=[Ee,Ce];function re(be,Be,Le,me,Pe,ce,He){var lt=Le.gl;if((ce===Le.projectHasAlpha||He)&&_e(Be,Le,me,Pe),ce===Le.hasAlpha||He){be.bind();var mt=be.uniforms;mt.model=me.model||m,mt.view=me.view||m,mt.projection=me.projection||m,P[0]=2/lt.drawingBufferWidth,P[1]=2/lt.drawingBufferHeight,mt.screenSize=P,mt.highlightId=Le.highlightId,mt.highlightScale=Le.highlightScale,mt.fragClipBounds=ge,mt.clipBounds=Le.axes.bounds,mt.opacity=Le.opacity,mt.pickGroup=Le.pickId/255,mt.pixelRatio=Pe,Le.vao.bind(),Le.vao.draw(lt.TRIANGLES,Le.vertexCount),Le.lineWidth>0&&(lt.lineWidth(Le.lineWidth*Pe),Le.vao.draw(lt.LINES,Le.lineVertexCount,Le.vertexCount)),Le.vao.unbind()}}g.draw=function(be){var Be=this.useOrtho?this.orthoShader:this.shader;re(Be,this.projectShader,this,be,this.pixelRatio,!1,!1)},g.drawTransparent=function(be){var Be=this.useOrtho?this.orthoShader:this.shader;re(Be,this.projectShader,this,be,this.pixelRatio,!0,!1)},g.drawPick=function(be){var Be=this.useOrtho?this.pickOrthoShader:this.pickPerspectiveShader;re(Be,this.pickProjectShader,this,be,1,!0,!0)},g.pick=function(be){if(!be||be.id!==this.pickId)return null;var Be=be.value[2]+(be.value[1]<<8)+(be.value[0]<<16);if(Be>=this.pointCount||Be<0)return null;var Le=this.points[Be],me=this._selectResult;me.index=Be;for(var Pe=0;Pe<3;++Pe)me.position[Pe]=me.dataCoordinate[Pe]=Le[Pe];return me},g.highlight=function(be){if(!be)this.highlightId=[1,1,1,1];else{var Be=be.index,Le=Be&255,me=Be>>8&255,Pe=Be>>16&255;this.highlightId=[Le/255,me/255,Pe/255,0]}};function Se(be,Be,Le,me){var Pe;M(be)?Be0){var jr=0,gt=Ue,Ge=[0,0,0,1],Je=[0,0,0,1],We=M(ar)&&M(ar[0]),et=M(tt)&&M(tt[0]);e:for(var me=0;me0?1-jt[0][0]:Ir<0?1+jt[1][0]:1,Yr*=Yr>0?1-jt[0][1]:Yr<0?1+jt[1][1]:1;for(var _i=[Ir,Yr],Fn=Et.cells||[],An=Et.positions||[],Tt=0;Ttthis.buffer.length){l.free(this.buffer);for(var M=this.buffer=l.mallocUint8(c(k*p*4)),T=0;TM)for(p=M;pk)for(p=k;p=0){for(var j=Z.type.charAt(Z.type.length-1)|0,N=new Array(j),H=0;H=0;)ie+=1;V[G]=ie}var ae=new Array(M.length);function _e(){x.program=c.program(C,x._vref,x._fref,q,V);for(var Ee=0;Ee=0){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new s("","Invalid data type for attribute "+x+": "+C);f(v,m,S[0],p,g,k,x)}else if(C.indexOf("mat")>=0){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new s("","Invalid data type for attribute "+x+": "+C);h(v,m,S,p,g,k,x)}else throw new s("","Unknown data type for attribute "+x+": "+C);break}}return k}},3327:function(i,a,o){"use strict";var s=o(216),l=o(8866);i.exports=f;function u(h){return function(){return h}}function c(h,d){for(var v=new Array(h),m=0;m4)throw new l("","Invalid data type");switch(ie.charAt(0)){case"b":case"i":h["uniform"+ae+"iv"](m[V],G);break;case"v":h["uniform"+ae+"fv"](m[V],G);break;default:throw new l("","Unrecognized data type for vector "+name+": "+ie)}}else if(ie.indexOf("mat")===0&&ie.length===4){if(ae=ie.charCodeAt(ie.length-1)-48,ae<2||ae>4)throw new l("","Invalid uniform dimension type for matrix "+name+": "+ie);h["uniformMatrix"+ae+"fv"](m[V],!1,G);break}else throw new l("","Unknown uniform data type for "+name+": "+ie)}}}}}function k(C,S){if(typeof S!="object")return[[C,S]];var g=[];for(var P in S){var E=S[P],z=C;parseInt(P)+""===P?z+="["+P+"]":z+="."+P,typeof E=="object"?g.push.apply(g,k(z,E)):g.push([z,E])}return g}function M(C){switch(C){case"bool":return!1;case"int":case"sampler2D":case"samplerCube":return 0;case"float":return 0;default:var S=C.indexOf("vec");if(0<=S&&S<=1&&C.length===4+S){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new l("","Invalid data type");return C.charAt(0)==="b"?c(g,!1):c(g,0)}else if(C.indexOf("mat")===0&&C.length===4){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new l("","Invalid uniform dimension type for matrix "+name+": "+C);return c(g*g,0)}else throw new l("","Unknown uniform data type for "+name+": "+C)}}function T(C,S,g){if(typeof g=="object"){var P=L(g);Object.defineProperty(C,S,{get:u(P),set:p(g),enumerable:!0,configurable:!1})}else m[g]?Object.defineProperty(C,S,{get:b(g),set:p(g),enumerable:!0,configurable:!1}):C[S]=M(v[g].type)}function L(C){var S;if(Array.isArray(C)){S=new Array(C.length);for(var g=0;g1){v[0]in h||(h[v[0]]=[]),h=h[v[0]];for(var m=1;m1)for(var k=0;k 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the tube vertex and normal at the given index. +// +// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d. +// +// Each tube segment is made up of a ring of vertices. +// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array. +// The indexes of tube segments run from 0 to 8. +// +vec3 getTubePosition(vec3 d, float index, out vec3 normal) { + float segmentCount = 8.0; + + float angle = 2.0 * 3.14159 * (index / segmentCount); + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d); + vec3 y = v * sin(angle) * length(d); + vec3 v3 = x + y; + + normal = normalize(v3); + + return v3; +} + +attribute vec4 vector; +attribute vec4 color, position; +attribute vec2 uv; + +uniform float vectorScale, tubeScale; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 eyePosition, lightPosition; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + // Scale the vector magnitude to stay constant with + // model & view changes. + vec3 normal; + vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal); + vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * tubePosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + // vec4 m_position = model * vec4(tubePosition, 1.0); + vec4 t_position = view * tubePosition; + gl_Position = projection * t_position; + + f_color = color; + f_data = tubePosition.xyz; + f_position = position.xyz; + f_uv = uv; +} +`]),u=s([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform sampler2D texture; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = f_color * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * opacity; +} +`]),c=s([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the tube vertex and normal at the given index. +// +// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d. +// +// Each tube segment is made up of a ring of vertices. +// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array. +// The indexes of tube segments run from 0 to 8. +// +vec3 getTubePosition(vec3 d, float index, out vec3 normal) { + float segmentCount = 8.0; + + float angle = 2.0 * 3.14159 * (index / segmentCount); + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d); + vec3 y = v * sin(angle) * length(d); + vec3 v3 = x + y; + + normal = normalize(v3); + + return v3; +} + +attribute vec4 vector; +attribute vec4 position; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform float tubeScale; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + vec3 normal; + vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal); + vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + gl_Position = projection * (view * tubePosition); + f_id = id; + f_position = position.xyz; +} +`]),f=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec4"}]},a.pickShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec4"}]}},7815:function(i,a,o){"use strict";var s=o(2931),l=o(9970),u=["xyz","xzy","yxz","yzx","zxy","zyx"],c=function(T,L,x,C){for(var S=T.points,g=T.velocities,P=T.divergences,E=[],z=[],q=[],V=[],G=[],Z=[],j=0,N=0,H=l.create(),ie=l.create(),ae=8,_e=0;_e0)for(var re=0;reL)return C-1}return C},d=function(T,L,x){return Tx?x:T},v=function(T,L,x){var C=L.vectors,S=L.meshgrid,g=T[0],P=T[1],E=T[2],z=S[0].length,q=S[1].length,V=S[2].length,G=h(S[0],g),Z=h(S[1],P),j=h(S[2],E),N=G+1,H=Z+1,ie=j+1;if(G=d(G,0,z-1),N=d(N,0,z-1),Z=d(Z,0,q-1),H=d(H,0,q-1),j=d(j,0,V-1),ie=d(ie,0,V-1),G<0||Z<0||j<0||N>z-1||H>q-1||ie>V-1)return s.create();var ae=S[0][G],_e=S[0][N],Ee=S[1][Z],Ce=S[1][H],ge=S[2][j],re=S[2][ie],Se=(g-ae)/(_e-ae),ke=(P-Ee)/(Ce-Ee),be=(E-ge)/(re-ge);isFinite(Se)||(Se=.5),isFinite(ke)||(ke=.5),isFinite(be)||(be=.5);var Be,Le,me,Pe,ce,He;switch(x.reversedX&&(G=z-1-G,N=z-1-N),x.reversedY&&(Z=q-1-Z,H=q-1-H),x.reversedZ&&(j=V-1-j,ie=V-1-ie),x.filled){case 5:ce=j,He=ie,me=Z*V,Pe=H*V,Be=G*V*q,Le=N*V*q;break;case 4:ce=j,He=ie,Be=G*V,Le=N*V,me=Z*V*z,Pe=H*V*z;break;case 3:me=Z,Pe=H,ce=j*q,He=ie*q,Be=G*q*V,Le=N*q*V;break;case 2:me=Z,Pe=H,Be=G*q,Le=N*q,ce=j*q*z,He=ie*q*z;break;case 1:Be=G,Le=N,ce=j*z,He=ie*z,me=Z*z*V,Pe=H*z*V;break;default:Be=G,Le=N,me=Z*z,Pe=H*z,ce=j*z*q,He=ie*z*q;break}var lt=C[Be+me+ce],mt=C[Be+me+He],Ht=C[Be+Pe+ce],at=C[Be+Pe+He],ct=C[Le+me+ce],ar=C[Le+me+He],Vt=C[Le+Pe+ce],rr=C[Le+Pe+He],tt=s.create(),je=s.create(),Ue=s.create(),Ae=s.create();s.lerp(tt,lt,ct,Se),s.lerp(je,mt,ar,Se),s.lerp(Ue,Ht,Vt,Se),s.lerp(Ae,at,rr,Se);var rt=s.create(),St=s.create();s.lerp(rt,tt,Ue,ke),s.lerp(St,je,Ae,ke);var Tt=s.create();return s.lerp(Tt,rt,St,be),Tt},m=function(T,L){var x=L[0],C=L[1],S=L[2];return T[0]=x<0?-x:x,T[1]=C<0?-C:C,T[2]=S<0?-S:S,T},b=function(T){var L=1/0;T.sort(function(g,P){return g-P});for(var x=T.length,C=1;CN||rrH||ttie)},_e=s.distance(L[0],L[1]),Ee=10*_e/C,Ce=Ee*Ee,ge=1,re=0,Se=x.length;Se>1&&(ge=p(x));for(var ke=0;kere&&(re=lt),ce.push(lt),V.push({points:Be,velocities:Le,divergences:ce});for(var mt=0;mtCe&&s.scale(Ht,Ht,Ee/Math.sqrt(at)),s.add(Ht,Ht,be),me=z(Ht),s.squaredDistance(Pe,Ht)-Ce>-1e-4*Ce){Be.push(Ht),Pe=Ht,Le.push(me);var He=q(Ht,me),lt=s.length(He);isFinite(lt)&<>re&&(re=lt),ce.push(lt)}be=Ht}}var ct=f(V,T.colormap,re,ge);return g?ct.tubeScale=g:(re===0&&(re=1),ct.tubeScale=S*.5*ge/re),ct};var k=o(6740),M=o(6405).createMesh;i.exports.createTubeMesh=function(T,L){return M(T,L,{shaders:k,traceType:"streamtube"})}},990:function(i,a,o){var s=o(9405),l=o(3236),u=l([`precision highp float; +#define GLSLIFY 1 + +attribute vec4 uv; +attribute vec3 f; +attribute vec3 normal; + +uniform vec3 objectOffset; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 lightPosition, eyePosition; +uniform sampler2D colormap; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + vec3 localCoordinate = vec3(uv.zw, f.x); + worldCoordinate = objectOffset + localCoordinate; + mat4 objectOffsetTranslation = mat4(1.0) + mat4(vec4(0), vec4(0), vec4(0), vec4(objectOffset, 0)); + vec4 worldPosition = (model * objectOffsetTranslation) * vec4(localCoordinate, 1.0); + vec4 clipPosition = projection * (view * worldPosition); + gl_Position = clipPosition; + kill = f.y; + value = f.z; + planeCoordinate = uv.xy; + + vColor = texture2D(colormap, vec2(value, value)); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * worldPosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + lightDirection = lightPosition - cameraCoordinate.xyz; + eyeDirection = eyePosition - cameraCoordinate.xyz; + surfaceNormal = normalize((vec4(normal,0) * inverseModel).xyz); +} +`]),c=l([`precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float beckmannSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness) { + return beckmannDistribution(dot(surfaceNormal, normalize(lightDirection + viewDirection)), roughness); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 lowerBound, upperBound; +uniform float contourTint; +uniform vec4 contourColor; +uniform sampler2D colormap; +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform float vertexColor; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + if ( + kill > 0.0 || + vColor.a == 0.0 || + outOfRange(clipBounds[0], clipBounds[1], worldCoordinate) + ) discard; + + vec3 N = normalize(surfaceNormal); + vec3 V = normalize(eyeDirection); + vec3 L = normalize(lightDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = max(beckmannSpecular(L, V, N, roughness), 0.); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + //decide how to interpolate color \u2014 in vertex or in fragment + vec4 surfaceColor = + step(vertexColor, .5) * texture2D(colormap, vec2(value, value)) + + step(.5, vertexColor) * vColor; + + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = mix(litColor, contourColor, contourTint) * opacity; +} +`]),f=l([`precision highp float; +#define GLSLIFY 1 + +attribute vec4 uv; +attribute float f; + +uniform vec3 objectOffset; +uniform mat3 permutation; +uniform mat4 model, view, projection; +uniform float height, zOffset; +uniform sampler2D colormap; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + vec3 dataCoordinate = permutation * vec3(uv.xy, height); + worldCoordinate = objectOffset + dataCoordinate; + mat4 objectOffsetTranslation = mat4(1.0) + mat4(vec4(0), vec4(0), vec4(0), vec4(objectOffset, 0)); + vec4 worldPosition = (model * objectOffsetTranslation) * vec4(dataCoordinate, 1.0); + + vec4 clipPosition = projection * (view * worldPosition); + clipPosition.z += zOffset; + + gl_Position = clipPosition; + value = f + objectOffset.z; + kill = -1.0; + planeCoordinate = uv.zw; + + vColor = texture2D(colormap, vec2(value, value)); + + //Don't do lighting for contours + surfaceNormal = vec3(1,0,0); + eyeDirection = vec3(0,1,0); + lightDirection = vec3(0,0,1); +} +`]),h=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec2 shape; +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 surfaceNormal; + +vec2 splitFloat(float v) { + float vh = 255.0 * v; + float upper = floor(vh); + float lower = fract(vh); + return vec2(upper / 255.0, floor(lower * 16.0) / 16.0); +} + +void main() { + if ((kill > 0.0) || + (outOfRange(clipBounds[0], clipBounds[1], worldCoordinate))) discard; + + vec2 ux = splitFloat(planeCoordinate.x / shape.x); + vec2 uy = splitFloat(planeCoordinate.y / shape.y); + gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0)); +} +`]);a.createShader=function(d){var v=s(d,u,c,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v.attributes.normal.location=2,v},a.createPickShader=function(d){var v=s(d,u,h,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v.attributes.normal.location=2,v},a.createContourShader=function(d){var v=s(d,f,c,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v},a.createPickContourShader=function(d){var v=s(d,f,h,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v}},9499:function(i,a,o){"use strict";i.exports=Be;var s=o(8828),l=o(2762),u=o(8116),c=o(7766),f=o(1888),h=o(6729),d=o(5298),v=o(9994),m=o(9618),b=o(3711),p=o(6760),k=o(7608),M=o(2478),T=o(6199),L=o(990),x=L.createShader,C=L.createContourShader,S=L.createPickShader,g=L.createPickContourShader,P=4*10,E=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],z=[[0,0],[0,1],[1,0],[1,1],[1,0],[0,1]],q=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];(function(){for(var Le=0;Le<3;++Le){var me=q[Le],Pe=(Le+1)%3,ce=(Le+2)%3;me[Pe+0]=1,me[ce+3]=1,me[Le+6]=1}})();function V(Le,me,Pe,ce,He){this.position=Le,this.index=me,this.uv=Pe,this.level=ce,this.dataCoordinate=He}var G=256;function Z(Le,me,Pe,ce,He,lt,mt,Ht,at,ct,ar,Vt,rr,tt,je){this.gl=Le,this.shape=me,this.bounds=Pe,this.objectOffset=je,this.intensityBounds=[],this._shader=ce,this._pickShader=He,this._coordinateBuffer=lt,this._vao=mt,this._colorMap=Ht,this._contourShader=at,this._contourPickShader=ct,this._contourBuffer=ar,this._contourVAO=Vt,this._contourOffsets=[[],[],[]],this._contourCounts=[[],[],[]],this._vertexCount=0,this._pickResult=new V([0,0,0],[0,0],[0,0],[0,0,0],[0,0,0]),this._dynamicBuffer=rr,this._dynamicVAO=tt,this._dynamicOffsets=[0,0,0],this._dynamicCounts=[0,0,0],this.contourWidth=[1,1,1],this.contourLevels=[[1],[1],[1]],this.contourTint=[0,0,0],this.contourColor=[[.5,.5,.5,1],[.5,.5,.5,1],[.5,.5,.5,1]],this.showContour=!0,this.showSurface=!0,this.enableHighlight=[!0,!0,!0],this.highlightColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.highlightTint=[1,1,1],this.highlightLevel=[-1,-1,-1],this.enableDynamic=[!0,!0,!0],this.dynamicLevel=[NaN,NaN,NaN],this.dynamicColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.dynamicTint=[1,1,1],this.dynamicWidth=[1,1,1],this.axesBounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.surfaceProject=[!1,!1,!1],this.contourProject=[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],this.colorBounds=[!1,!1],this._field=[m(f.mallocFloat(1024),[0,0]),m(f.mallocFloat(1024),[0,0]),m(f.mallocFloat(1024),[0,0])],this.pickId=1,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.snapToData=!1,this.pixelRatio=1,this.opacity=1,this.lightPosition=[10,1e4,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.vertexColor=0,this.dirty=!0}var j=Z.prototype;j.genColormap=function(Le,me){var Pe=!1,ce=v([h({colormap:Le,nshades:G,format:"rgba"}).map(function(He,lt){var mt=me?N(lt/255,me):He[3];return mt<1&&(Pe=!0),[He[0],He[1],He[2],255*mt]})]);return d.divseq(ce,255),this.hasAlphaScale=Pe,ce},j.isTransparent=function(){return this.opacity<1||this.hasAlphaScale},j.isOpaque=function(){return!this.isTransparent()},j.pickSlots=1,j.setPickBase=function(Le){this.pickId=Le};function N(Le,me){if(!me||!me.length)return 1;for(var Pe=0;PeLe&&Pe>0){var ce=(me[Pe][0]-Le)/(me[Pe][0]-me[Pe-1][0]);return me[Pe][1]*(1-ce)+ce*me[Pe-1][1]}}return 1}var H=[0,0,0],ie={showSurface:!1,showContour:!1,projections:[E.slice(),E.slice(),E.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function ae(Le,me){var Pe,ce,He,lt=me.axes&&me.axes.lastCubeProps.axis||H,mt=me.showSurface,Ht=me.showContour;for(Pe=0;Pe<3;++Pe)for(mt=mt||me.surfaceProject[Pe],ce=0;ce<3;++ce)Ht=Ht||me.contourProject[Pe][ce];for(Pe=0;Pe<3;++Pe){var at=ie.projections[Pe];for(ce=0;ce<16;++ce)at[ce]=0;for(ce=0;ce<4;++ce)at[5*ce]=1;at[5*Pe]=0,at[12+Pe]=me.axesBounds[+(lt[Pe]>0)][Pe],p(at,Le.model,at);var ct=ie.clipBounds[Pe];for(He=0;He<2;++He)for(ce=0;ce<3;++ce)ct[He][ce]=Le.clipBounds[He][ce];ct[0][Pe]=-1e8,ct[1][Pe]=1e8}return ie.showSurface=mt,ie.showContour=Ht,ie}var _e={model:E,view:E,projection:E,inverseModel:E.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,objectOffset:[0,0,0],kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1e3,1e3,1e3],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1,vertexColor:0},Ee=E.slice(),Ce=[1,0,0,0,1,0,0,0,1];function ge(Le,me){Le=Le||{};var Pe=this.gl;Pe.disable(Pe.CULL_FACE),this._colorMap.bind(0);var ce=_e;ce.model=Le.model||E,ce.view=Le.view||E,ce.projection=Le.projection||E,ce.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]],ce.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]],ce.objectOffset=this.objectOffset,ce.contourColor=this.contourColor[0],ce.inverseModel=k(ce.inverseModel,ce.model);for(var He=0;He<2;++He)for(var lt=ce.clipBounds[He],mt=0;mt<3;++mt)lt[mt]=Math.min(Math.max(this.clipBounds[He][mt],-1e8),1e8);ce.kambient=this.ambientLight,ce.kdiffuse=this.diffuseLight,ce.kspecular=this.specularLight,ce.roughness=this.roughness,ce.fresnel=this.fresnel,ce.opacity=this.opacity,ce.height=0,ce.permutation=Ce,ce.vertexColor=this.vertexColor;var Ht=Ee;for(p(Ht,ce.view,ce.model),p(Ht,ce.projection,Ht),k(Ht,Ht),He=0;He<3;++He)ce.eyePosition[He]=Ht[12+He]/Ht[15];var at=Ht[15];for(He=0;He<3;++He)at+=this.lightPosition[He]*Ht[4*He+3];for(He=0;He<3;++He){var ct=Ht[12+He];for(mt=0;mt<3;++mt)ct+=Ht[4*mt+He]*this.lightPosition[mt];ce.lightPosition[He]=ct/at}var ar=ae(ce,this);if(ar.showSurface){for(this._shader.bind(),this._shader.uniforms=ce,this._vao.bind(),this.showSurface&&this._vertexCount&&this._vao.draw(Pe.TRIANGLES,this._vertexCount),He=0;He<3;++He)!this.surfaceProject[He]||!this.vertexCount||(this._shader.uniforms.model=ar.projections[He],this._shader.uniforms.clipBounds=ar.clipBounds[He],this._vao.draw(Pe.TRIANGLES,this._vertexCount));this._vao.unbind()}if(ar.showContour){var Vt=this._contourShader;ce.kambient=1,ce.kdiffuse=0,ce.kspecular=0,ce.opacity=1,Vt.bind(),Vt.uniforms=ce;var rr=this._contourVAO;for(rr.bind(),He=0;He<3;++He)for(Vt.uniforms.permutation=q[He],Pe.lineWidth(this.contourWidth[He]*this.pixelRatio),mt=0;mt>4)/16)/255,He=Math.floor(ce),lt=ce-He,mt=me[1]*(Le.value[1]+(Le.value[2]&15)/16)/255,Ht=Math.floor(mt),at=mt-Ht;He+=1,Ht+=1;var ct=Pe.position;ct[0]=ct[1]=ct[2]=0;for(var ar=0;ar<2;++ar)for(var Vt=ar?lt:1-lt,rr=0;rr<2;++rr)for(var tt=rr?at:1-at,je=He+ar,Ue=Ht+rr,Ae=Vt*tt,rt=0;rt<3;++rt)ct[rt]+=this._field[rt].get(je,Ue)*Ae;for(var St=this._pickResult.level,Tt=0;Tt<3;++Tt)if(St[Tt]=M.le(this.contourLevels[Tt],ct[Tt]),St[Tt]<0)this.contourLevels[Tt].length>0&&(St[Tt]=0);else if(St[Tt]Math.abs(Et-ct[Tt])&&(St[Tt]+=1)}for(Pe.index[0]=lt<.5?He:He+1,Pe.index[1]=at<.5?Ht:Ht+1,Pe.uv[0]=ce/me[0],Pe.uv[1]=mt/me[1],rt=0;rt<3;++rt)Pe.dataCoordinate[rt]=this._field[rt].get(Pe.index[0],Pe.index[1]);return Pe},j.padField=function(Le,me){var Pe=me.shape.slice(),ce=Le.shape.slice();d.assign(Le.lo(1,1).hi(Pe[0],Pe[1]),me),d.assign(Le.lo(1).hi(Pe[0],1),me.hi(Pe[0],1)),d.assign(Le.lo(1,ce[1]-1).hi(Pe[0],1),me.lo(0,Pe[1]-1).hi(Pe[0],1)),d.assign(Le.lo(0,1).hi(1,Pe[1]),me.hi(1)),d.assign(Le.lo(ce[0]-1,1).hi(1,Pe[1]),me.lo(Pe[0]-1)),Le.set(0,0,me.get(0,0)),Le.set(0,ce[1]-1,me.get(0,Pe[1]-1)),Le.set(ce[0]-1,0,me.get(Pe[0]-1,0)),Le.set(ce[0]-1,ce[1]-1,me.get(Pe[0]-1,Pe[1]-1))};function Se(Le,me){return Array.isArray(Le)?[me(Le[0]),me(Le[1]),me(Le[2])]:[me(Le),me(Le),me(Le)]}function ke(Le){return Array.isArray(Le)?Le.length===3?[Le[0],Le[1],Le[2],1]:[Le[0],Le[1],Le[2],Le[3]]:[0,0,0,1]}function be(Le){if(Array.isArray(Le)){if(Array.isArray(Le))return[ke(Le[0]),ke(Le[1]),ke(Le[2])];var me=ke(Le);return[me.slice(),me.slice(),me.slice()]}}j.update=function(Le){Le=Le||{},this.objectOffset=Le.objectOffset||this.objectOffset,this.dirty=!0,"contourWidth"in Le&&(this.contourWidth=Se(Le.contourWidth,Number)),"showContour"in Le&&(this.showContour=Se(Le.showContour,Boolean)),"showSurface"in Le&&(this.showSurface=!!Le.showSurface),"contourTint"in Le&&(this.contourTint=Se(Le.contourTint,Boolean)),"contourColor"in Le&&(this.contourColor=be(Le.contourColor)),"contourProject"in Le&&(this.contourProject=Se(Le.contourProject,function(yn){return Se(yn,Boolean)})),"surfaceProject"in Le&&(this.surfaceProject=Le.surfaceProject),"dynamicColor"in Le&&(this.dynamicColor=be(Le.dynamicColor)),"dynamicTint"in Le&&(this.dynamicTint=Se(Le.dynamicTint,Number)),"dynamicWidth"in Le&&(this.dynamicWidth=Se(Le.dynamicWidth,Number)),"opacity"in Le&&(this.opacity=Le.opacity),"opacityscale"in Le&&(this.opacityscale=Le.opacityscale),"colorBounds"in Le&&(this.colorBounds=Le.colorBounds),"vertexColor"in Le&&(this.vertexColor=Le.vertexColor?1:0),"colormap"in Le&&this._colorMap.setPixels(this.genColormap(Le.colormap,this.opacityscale));var me=Le.field||Le.coords&&Le.coords[2]||null,Pe=!1;if(me||(this._field[2].shape[0]||this._field[2].shape[2]?me=this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2):me=this._field[2].hi(0,0)),"field"in Le||"coords"in Le){var ce=(me.shape[0]+2)*(me.shape[1]+2);ce>this._field[2].data.length&&(f.freeFloat(this._field[2].data),this._field[2].data=f.mallocFloat(s.nextPow2(ce))),this._field[2]=m(this._field[2].data,[me.shape[0]+2,me.shape[1]+2]),this.padField(this._field[2],me),this.shape=me.shape.slice();for(var He=this.shape,lt=0;lt<2;++lt)this._field[2].size>this._field[lt].data.length&&(f.freeFloat(this._field[lt].data),this._field[lt].data=f.mallocFloat(this._field[2].size)),this._field[lt]=m(this._field[lt].data,[He[0]+2,He[1]+2]);if(Le.coords){var mt=Le.coords;if(!Array.isArray(mt)||mt.length!==3)throw new Error("gl-surface: invalid coordinates for x/y");for(lt=0;lt<2;++lt){var Ht=mt[lt];for(rr=0;rr<2;++rr)if(Ht.shape[rr]!==He[rr])throw new Error("gl-surface: coords have incorrect shape");this.padField(this._field[lt],Ht)}}else if(Le.ticks){var at=Le.ticks;if(!Array.isArray(at)||at.length!==2)throw new Error("gl-surface: invalid ticks");for(lt=0;lt<2;++lt){var ct=at[lt];if((Array.isArray(ct)||ct.length)&&(ct=m(ct)),ct.shape[0]!==He[lt])throw new Error("gl-surface: invalid tick length");var ar=m(ct.data,He);ar.stride[lt]=ct.stride[0],ar.stride[lt^1]=0,this.padField(this._field[lt],ar)}}else{for(lt=0;lt<2;++lt){var Vt=[0,0];Vt[lt]=1,this._field[lt]=m(this._field[lt].data,[He[0]+2,He[1]+2],Vt,0)}this._field[0].set(0,0,0);for(var rr=0;rr0){for(var en=0;en<5;++en)Pi.pop();We-=1}continue e}}}Fn.push(We)}this._contourOffsets[ai]=un,this._contourCounts[ai]=Fn}var fn=f.mallocFloat(Pi.length);for(lt=0;ltV||z<0||z>V)throw new Error("gl-texture2d: Invalid texture size");return P._shape=[E,z],P.bind(),q.texImage2D(q.TEXTURE_2D,0,P.format,E,z,0,P.format,P.type,null),P._mipLevels=[0],P}function p(P,E,z,q,V,G){this.gl=P,this.handle=E,this.format=V,this.type=G,this._shape=[z,q],this._mipLevels=[0],this._magFilter=P.NEAREST,this._minFilter=P.NEAREST,this._wrapS=P.CLAMP_TO_EDGE,this._wrapT=P.CLAMP_TO_EDGE,this._anisoSamples=1;var Z=this,j=[this._wrapS,this._wrapT];Object.defineProperties(j,[{get:function(){return Z._wrapS},set:function(H){return Z.wrapS=H}},{get:function(){return Z._wrapT},set:function(H){return Z.wrapT=H}}]),this._wrapVector=j;var N=[this._shape[0],this._shape[1]];Object.defineProperties(N,[{get:function(){return Z._shape[0]},set:function(H){return Z.width=H}},{get:function(){return Z._shape[1]},set:function(H){return Z.height=H}}]),this._shapeVector=N}var k=p.prototype;Object.defineProperties(k,{minFilter:{get:function(){return this._minFilter},set:function(P){this.bind();var E=this.gl;if(this.type===E.FLOAT&&c.indexOf(P)>=0&&(E.getExtension("OES_texture_float_linear")||(P=E.NEAREST)),f.indexOf(P)<0)throw new Error("gl-texture2d: Unknown filter mode "+P);return E.texParameteri(E.TEXTURE_2D,E.TEXTURE_MIN_FILTER,P),this._minFilter=P}},magFilter:{get:function(){return this._magFilter},set:function(P){this.bind();var E=this.gl;if(this.type===E.FLOAT&&c.indexOf(P)>=0&&(E.getExtension("OES_texture_float_linear")||(P=E.NEAREST)),f.indexOf(P)<0)throw new Error("gl-texture2d: Unknown filter mode "+P);return E.texParameteri(E.TEXTURE_2D,E.TEXTURE_MAG_FILTER,P),this._magFilter=P}},mipSamples:{get:function(){return this._anisoSamples},set:function(P){var E=this._anisoSamples;if(this._anisoSamples=Math.max(P,1)|0,E!==this._anisoSamples){var z=this.gl.getExtension("EXT_texture_filter_anisotropic");z&&this.gl.texParameterf(this.gl.TEXTURE_2D,z.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(P){if(this.bind(),h.indexOf(P)<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,P),this._wrapS=P}},wrapT:{get:function(){return this._wrapT},set:function(P){if(this.bind(),h.indexOf(P)<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,P),this._wrapT=P}},wrap:{get:function(){return this._wrapVector},set:function(P){if(Array.isArray(P)||(P=[P,P]),P.length!==2)throw new Error("gl-texture2d: Must specify wrap mode for rows and columns");for(var E=0;E<2;++E)if(h.indexOf(P[E])<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);this._wrapS=P[0],this._wrapT=P[1];var z=this.gl;return this.bind(),z.texParameteri(z.TEXTURE_2D,z.TEXTURE_WRAP_S,this._wrapS),z.texParameteri(z.TEXTURE_2D,z.TEXTURE_WRAP_T,this._wrapT),P}},shape:{get:function(){return this._shapeVector},set:function(P){if(!Array.isArray(P))P=[P|0,P|0];else if(P.length!==2)throw new Error("gl-texture2d: Invalid texture shape");return b(this,P[0]|0,P[1]|0),[P[0]|0,P[1]|0]}},width:{get:function(){return this._shape[0]},set:function(P){return P=P|0,b(this,P,this._shape[1]),P}},height:{get:function(){return this._shape[1]},set:function(P){return P=P|0,b(this,this._shape[0],P),P}}}),k.bind=function(P){var E=this.gl;return P!==void 0&&E.activeTexture(E.TEXTURE0+(P|0)),E.bindTexture(E.TEXTURE_2D,this.handle),P!==void 0?P|0:E.getParameter(E.ACTIVE_TEXTURE)-E.TEXTURE0},k.dispose=function(){this.gl.deleteTexture(this.handle)},k.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var P=Math.min(this._shape[0],this._shape[1]),E=0;P>0;++E,P>>>=1)this._mipLevels.indexOf(E)<0&&this._mipLevels.push(E)},k.setPixels=function(P,E,z,q){var V=this.gl;this.bind(),Array.isArray(E)?(q=z,z=E[1]|0,E=E[0]|0):(E=E||0,z=z||0),q=q||0;var G=v(P)?P:P.raw;if(G){var Z=this._mipLevels.indexOf(q)<0;Z?(V.texImage2D(V.TEXTURE_2D,0,this.format,this.format,this.type,G),this._mipLevels.push(q)):V.texSubImage2D(V.TEXTURE_2D,q,E,z,this.format,this.type,G)}else if(P.shape&&P.stride&&P.data){if(P.shape.length<2||E+P.shape[1]>this._shape[1]>>>q||z+P.shape[0]>this._shape[0]>>>q||E<0||z<0)throw new Error("gl-texture2d: Texture dimensions are out of bounds");T(V,E,z,q,this.format,this.type,this._mipLevels,P)}else throw new Error("gl-texture2d: Unsupported data type")};function M(P,E){return P.length===3?E[2]===1&&E[1]===P[0]*P[2]&&E[0]===P[2]:E[0]===1&&E[1]===P[0]}function T(P,E,z,q,V,G,Z,j){var N=j.dtype,H=j.shape.slice();if(H.length<2||H.length>3)throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");var ie=0,ae=0,_e=M(H,j.stride.slice());N==="float32"?ie=P.FLOAT:N==="float64"?(ie=P.FLOAT,_e=!1,N="float32"):N==="uint8"?ie=P.UNSIGNED_BYTE:(ie=P.UNSIGNED_BYTE,_e=!1,N="uint8");var Ee=1;if(H.length===2)ae=P.LUMINANCE,H=[H[0],H[1],1],j=s(j.data,H,[j.stride[0],j.stride[1],1],j.offset);else if(H.length===3){if(H[2]===1)ae=P.ALPHA;else if(H[2]===2)ae=P.LUMINANCE_ALPHA;else if(H[2]===3)ae=P.RGB;else if(H[2]===4)ae=P.RGBA;else throw new Error("gl-texture2d: Invalid shape for pixel coords");Ee=H[2]}else throw new Error("gl-texture2d: Invalid shape for texture");if((ae===P.LUMINANCE||ae===P.ALPHA)&&(V===P.LUMINANCE||V===P.ALPHA)&&(ae=V),ae!==V)throw new Error("gl-texture2d: Incompatible texture format for setPixels");var Ce=j.size,ge=Z.indexOf(q)<0;if(ge&&Z.push(q),ie===G&&_e)j.offset===0&&j.data.length===Ce?ge?P.texImage2D(P.TEXTURE_2D,q,V,H[0],H[1],0,V,G,j.data):P.texSubImage2D(P.TEXTURE_2D,q,E,z,H[0],H[1],V,G,j.data):ge?P.texImage2D(P.TEXTURE_2D,q,V,H[0],H[1],0,V,G,j.data.subarray(j.offset,j.offset+Ce)):P.texSubImage2D(P.TEXTURE_2D,q,E,z,H[0],H[1],V,G,j.data.subarray(j.offset,j.offset+Ce));else{var re;G===P.FLOAT?re=u.mallocFloat32(Ce):re=u.mallocUint8(Ce);var Se=s(re,H,[H[2],H[2]*H[0],1]);ie===P.FLOAT&&G===P.UNSIGNED_BYTE?m(Se,j):l.assign(Se,j),ge?P.texImage2D(P.TEXTURE_2D,q,V,H[0],H[1],0,V,G,re.subarray(0,Ce)):P.texSubImage2D(P.TEXTURE_2D,q,E,z,H[0],H[1],V,G,re.subarray(0,Ce)),G===P.FLOAT?u.freeFloat32(re):u.freeUint8(re)}}function L(P){var E=P.createTexture();return P.bindTexture(P.TEXTURE_2D,E),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_MIN_FILTER,P.NEAREST),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_MAG_FILTER,P.NEAREST),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_WRAP_S,P.CLAMP_TO_EDGE),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_WRAP_T,P.CLAMP_TO_EDGE),E}function x(P,E,z,q,V){var G=P.getParameter(P.MAX_TEXTURE_SIZE);if(E<0||E>G||z<0||z>G)throw new Error("gl-texture2d: Invalid texture shape");if(V===P.FLOAT&&!P.getExtension("OES_texture_float"))throw new Error("gl-texture2d: Floating point textures not supported on this platform");var Z=L(P);return P.texImage2D(P.TEXTURE_2D,0,q,E,z,0,q,V,null),new p(P,Z,E,z,q,V)}function C(P,E,z,q,V,G){var Z=L(P);return P.texImage2D(P.TEXTURE_2D,0,V,V,G,E),new p(P,Z,z,q,V,G)}function S(P,E){var z=E.dtype,q=E.shape.slice(),V=P.getParameter(P.MAX_TEXTURE_SIZE);if(q[0]<0||q[0]>V||q[1]<0||q[1]>V)throw new Error("gl-texture2d: Invalid texture size");var G=M(q,E.stride.slice()),Z=0;z==="float32"?Z=P.FLOAT:z==="float64"?(Z=P.FLOAT,G=!1,z="float32"):z==="uint8"?Z=P.UNSIGNED_BYTE:(Z=P.UNSIGNED_BYTE,G=!1,z="uint8");var j=0;if(q.length===2)j=P.LUMINANCE,q=[q[0],q[1],1],E=s(E.data,q,[E.stride[0],E.stride[1],1],E.offset);else if(q.length===3)if(q[2]===1)j=P.ALPHA;else if(q[2]===2)j=P.LUMINANCE_ALPHA;else if(q[2]===3)j=P.RGB;else if(q[2]===4)j=P.RGBA;else throw new Error("gl-texture2d: Invalid shape for pixel coords");else throw new Error("gl-texture2d: Invalid shape for texture");Z===P.FLOAT&&!P.getExtension("OES_texture_float")&&(Z=P.UNSIGNED_BYTE,G=!1);var N,H,ie=E.size;if(G)E.offset===0&&E.data.length===ie?N=E.data:N=E.data.subarray(E.offset,E.offset+ie);else{var ae=[q[2],q[2]*q[0],1];H=u.malloc(ie,z);var _e=s(H,q,ae,0);(z==="float32"||z==="float64")&&Z===P.UNSIGNED_BYTE?m(_e,E):l.assign(_e,E),N=H.subarray(0,ie)}var Ee=L(P);return P.texImage2D(P.TEXTURE_2D,0,j,q[0],q[1],0,j,Z,N),G||u.free(H),new p(P,Ee,q[0],q[1],j,Z)}function g(P){if(arguments.length<=1)throw new Error("gl-texture2d: Missing arguments for texture2d constructor");if(c||d(P),typeof arguments[1]=="number")return x(P,arguments[1],arguments[2],arguments[3]||P.RGBA,arguments[4]||P.UNSIGNED_BYTE);if(Array.isArray(arguments[1]))return x(P,arguments[1][0]|0,arguments[1][1]|0,arguments[2]||P.RGBA,arguments[3]||P.UNSIGNED_BYTE);if(typeof arguments[1]=="object"){var E=arguments[1],z=v(E)?E:E.raw;if(z)return C(P,z,E.width|0,E.height|0,arguments[2]||P.RGBA,arguments[3]||P.UNSIGNED_BYTE);if(E.shape&&E.data&&E.stride)return S(P,E)}throw new Error("gl-texture2d: Invalid arguments for texture2d constructor")}},1433:function(i){"use strict";function a(o,s,l){s?s.bind():o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,null);var u=o.getParameter(o.MAX_VERTEX_ATTRIBS)|0;if(l){if(l.length>u)throw new Error("gl-vao: Too many vertex attributes");for(var c=0;c1?0:Math.acos(m)}},9226:function(i){i.exports=a;function a(o,s){return o[0]=Math.ceil(s[0]),o[1]=Math.ceil(s[1]),o[2]=Math.ceil(s[2]),o}},3126:function(i){i.exports=a;function a(o){var s=new Float32Array(3);return s[0]=o[0],s[1]=o[1],s[2]=o[2],s}},3990:function(i){i.exports=a;function a(o,s){return o[0]=s[0],o[1]=s[1],o[2]=s[2],o}},1091:function(i){i.exports=a;function a(){var o=new Float32Array(3);return o[0]=0,o[1]=0,o[2]=0,o}},5911:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2];return o[0]=c*v-f*d,o[1]=f*h-u*v,o[2]=u*d-c*h,o}},5455:function(i,a,o){i.exports=o(7056)},7056:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2];return Math.sqrt(l*l+u*u+c*c)}},4008:function(i,a,o){i.exports=o(6690)},6690:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]/l[0],o[1]=s[1]/l[1],o[2]=s[2]/l[2],o}},244:function(i){i.exports=a;function a(o,s){return o[0]*s[0]+o[1]*s[1]+o[2]*s[2]}},2613:function(i){i.exports=1e-6},9922:function(i,a,o){i.exports=l;var s=o(2613);function l(u,c){var f=u[0],h=u[1],d=u[2],v=c[0],m=c[1],b=c[2];return Math.abs(f-v)<=s*Math.max(1,Math.abs(f),Math.abs(v))&&Math.abs(h-m)<=s*Math.max(1,Math.abs(h),Math.abs(m))&&Math.abs(d-b)<=s*Math.max(1,Math.abs(d),Math.abs(b))}},9265:function(i){i.exports=a;function a(o,s){return o[0]===s[0]&&o[1]===s[1]&&o[2]===s[2]}},2681:function(i){i.exports=a;function a(o,s){return o[0]=Math.floor(s[0]),o[1]=Math.floor(s[1]),o[2]=Math.floor(s[2]),o}},5137:function(i,a,o){i.exports=l;var s=o(1091)();function l(u,c,f,h,d,v){var m,b;for(c||(c=3),f||(f=0),h?b=Math.min(h*c+f,u.length):b=u.length,m=f;m0&&(f=1/Math.sqrt(f),o[0]=s[0]*f,o[1]=s[1]*f,o[2]=s[2]*f),o}},7636:function(i){i.exports=a;function a(o,s){s=s||1;var l=Math.random()*2*Math.PI,u=Math.random()*2-1,c=Math.sqrt(1-u*u)*s;return o[0]=Math.cos(l)*c,o[1]=Math.sin(l)*c,o[2]=u*s,o}},6894:function(i){i.exports=a;function a(o,s,l,u){var c=l[1],f=l[2],h=s[1]-c,d=s[2]-f,v=Math.sin(u),m=Math.cos(u);return o[0]=s[0],o[1]=c+h*m-d*v,o[2]=f+h*v+d*m,o}},109:function(i){i.exports=a;function a(o,s,l,u){var c=l[0],f=l[2],h=s[0]-c,d=s[2]-f,v=Math.sin(u),m=Math.cos(u);return o[0]=c+d*v+h*m,o[1]=s[1],o[2]=f+d*m-h*v,o}},8692:function(i){i.exports=a;function a(o,s,l,u){var c=l[0],f=l[1],h=s[0]-c,d=s[1]-f,v=Math.sin(u),m=Math.cos(u);return o[0]=c+h*m-d*v,o[1]=f+h*v+d*m,o[2]=s[2],o}},2447:function(i){i.exports=a;function a(o,s){return o[0]=Math.round(s[0]),o[1]=Math.round(s[1]),o[2]=Math.round(s[2]),o}},6621:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l,o[1]=s[1]*l,o[2]=s[2]*l,o}},8489:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s[0]+l[0]*u,o[1]=s[1]+l[1]*u,o[2]=s[2]+l[2]*u,o}},1463:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s,o[1]=l,o[2]=u,o}},6141:function(i,a,o){i.exports=o(2953)},5486:function(i,a,o){i.exports=o(3066)},2953:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2];return l*l+u*u+c*c}},3066:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2];return s*s+l*l+u*u}},2229:function(i,a,o){i.exports=o(6843)},6843:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]-l[0],o[1]=s[1]-l[1],o[2]=s[2]-l[2],o}},492:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2];return o[0]=u*l[0]+c*l[3]+f*l[6],o[1]=u*l[1]+c*l[4]+f*l[7],o[2]=u*l[2]+c*l[5]+f*l[8],o}},5673:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[3]*u+l[7]*c+l[11]*f+l[15];return h=h||1,o[0]=(l[0]*u+l[4]*c+l[8]*f+l[12])/h,o[1]=(l[1]*u+l[5]*c+l[9]*f+l[13])/h,o[2]=(l[2]*u+l[6]*c+l[10]*f+l[14])/h,o}},264:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2],m=l[3],b=m*u+d*f-v*c,p=m*c+v*u-h*f,k=m*f+h*c-d*u,M=-h*u-d*c-v*f;return o[0]=b*m+M*-h+p*-v-k*-d,o[1]=p*m+M*-d+k*-h-b*-v,o[2]=k*m+M*-v+b*-d-p*-h,o}},4361:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]+l[0],o[1]=s[1]+l[1],o[2]=s[2]+l[2],o[3]=s[3]+l[3],o}},2335:function(i){i.exports=a;function a(o){var s=new Float32Array(4);return s[0]=o[0],s[1]=o[1],s[2]=o[2],s[3]=o[3],s}},2933:function(i){i.exports=a;function a(o,s){return o[0]=s[0],o[1]=s[1],o[2]=s[2],o[3]=s[3],o}},7536:function(i){i.exports=a;function a(){var o=new Float32Array(4);return o[0]=0,o[1]=0,o[2]=0,o[3]=0,o}},4691:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2],f=s[3]-o[3];return Math.sqrt(l*l+u*u+c*c+f*f)}},1373:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]/l[0],o[1]=s[1]/l[1],o[2]=s[2]/l[2],o[3]=s[3]/l[3],o}},3750:function(i){i.exports=a;function a(o,s){return o[0]*s[0]+o[1]*s[1]+o[2]*s[2]+o[3]*s[3]}},3390:function(i){i.exports=a;function a(o,s,l,u){var c=new Float32Array(4);return c[0]=o,c[1]=s,c[2]=l,c[3]=u,c}},9970:function(i,a,o){i.exports={create:o(7536),clone:o(2335),fromValues:o(3390),copy:o(2933),set:o(4578),add:o(4361),subtract:o(6860),multiply:o(3576),divide:o(1373),min:o(2334),max:o(160),scale:o(9288),scaleAndAdd:o(4844),distance:o(4691),squaredDistance:o(7960),length:o(6808),squaredLength:o(483),negate:o(1498),inverse:o(4494),normalize:o(5177),dot:o(3750),lerp:o(2573),random:o(9131),transformMat4:o(5352),transformQuat:o(4041)}},4494:function(i){i.exports=a;function a(o,s){return o[0]=1/s[0],o[1]=1/s[1],o[2]=1/s[2],o[3]=1/s[3],o}},6808:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2],c=o[3];return Math.sqrt(s*s+l*l+u*u+c*c)}},2573:function(i){i.exports=a;function a(o,s,l,u){var c=s[0],f=s[1],h=s[2],d=s[3];return o[0]=c+u*(l[0]-c),o[1]=f+u*(l[1]-f),o[2]=h+u*(l[2]-h),o[3]=d+u*(l[3]-d),o}},160:function(i){i.exports=a;function a(o,s,l){return o[0]=Math.max(s[0],l[0]),o[1]=Math.max(s[1],l[1]),o[2]=Math.max(s[2],l[2]),o[3]=Math.max(s[3],l[3]),o}},2334:function(i){i.exports=a;function a(o,s,l){return o[0]=Math.min(s[0],l[0]),o[1]=Math.min(s[1],l[1]),o[2]=Math.min(s[2],l[2]),o[3]=Math.min(s[3],l[3]),o}},3576:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l[0],o[1]=s[1]*l[1],o[2]=s[2]*l[2],o[3]=s[3]*l[3],o}},1498:function(i){i.exports=a;function a(o,s){return o[0]=-s[0],o[1]=-s[1],o[2]=-s[2],o[3]=-s[3],o}},5177:function(i){i.exports=a;function a(o,s){var l=s[0],u=s[1],c=s[2],f=s[3],h=l*l+u*u+c*c+f*f;return h>0&&(h=1/Math.sqrt(h),o[0]=l*h,o[1]=u*h,o[2]=c*h,o[3]=f*h),o}},9131:function(i,a,o){var s=o(5177),l=o(9288);i.exports=u;function u(c,f){return f=f||1,c[0]=Math.random(),c[1]=Math.random(),c[2]=Math.random(),c[3]=Math.random(),s(c,c),l(c,c,f),c}},9288:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l,o[1]=s[1]*l,o[2]=s[2]*l,o[3]=s[3]*l,o}},4844:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s[0]+l[0]*u,o[1]=s[1]+l[1]*u,o[2]=s[2]+l[2]*u,o[3]=s[3]+l[3]*u,o}},4578:function(i){i.exports=a;function a(o,s,l,u,c){return o[0]=s,o[1]=l,o[2]=u,o[3]=c,o}},7960:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2],f=s[3]-o[3];return l*l+u*u+c*c+f*f}},483:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2],c=o[3];return s*s+l*l+u*u+c*c}},6860:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]-l[0],o[1]=s[1]-l[1],o[2]=s[2]-l[2],o[3]=s[3]-l[3],o}},5352:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=s[3];return o[0]=l[0]*u+l[4]*c+l[8]*f+l[12]*h,o[1]=l[1]*u+l[5]*c+l[9]*f+l[13]*h,o[2]=l[2]*u+l[6]*c+l[10]*f+l[14]*h,o[3]=l[3]*u+l[7]*c+l[11]*f+l[15]*h,o}},4041:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2],m=l[3],b=m*u+d*f-v*c,p=m*c+v*u-h*f,k=m*f+h*c-d*u,M=-h*u-d*c-v*f;return o[0]=b*m+M*-h+p*-v-k*-d,o[1]=p*m+M*-d+k*-h-b*-v,o[2]=k*m+M*-v+b*-d-p*-h,o[3]=s[3],o}},1848:function(i,a,o){var s=o(4905),l=o(6468);i.exports=u;function u(c){for(var f=Array.isArray(c)?c:s(c),h=0;h0)continue;Tt=Ae.slice(0,1).join("")}return Pe(Tt),Ce+=Tt.length,N=N.slice(Tt.length),N.length}while(!0)}function rr(){return/[^a-fA-F0-9]/.test(Z)?(Pe(N.join("")),G=h,q):(N.push(Z),j=Z,q+1)}function tt(){return Z==="."||/[eE]/.test(Z)?(N.push(Z),G=M,j=Z,q+1):Z==="x"&&N.length===1&&N[0]==="0"?(G=g,N.push(Z),j=Z,q+1):/[^\d]/.test(Z)?(Pe(N.join("")),G=h,q):(N.push(Z),j=Z,q+1)}function je(){return Z==="f"&&(N.push(Z),j=Z,q+=1),/[eE]/.test(Z)||(Z==="-"||Z==="+")&&/[eE]/.test(j)?(N.push(Z),j=Z,q+1):/[^\d]/.test(Z)?(Pe(N.join("")),G=h,q):(N.push(Z),j=Z,q+1)}function Ue(){if(/[^\d\w_]/.test(Z)){var Ae=N.join("");return me[Ae]?G=x:Le[Ae]?G=L:G=T,Pe(N.join("")),G=h,q}return N.push(Z),j=Z,q+1}}},3508:function(i,a,o){var s=o(6852);s=s.slice().filter(function(l){return!/^(gl\_|texture)/.test(l)}),i.exports=s.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"])},6852:function(i){i.exports=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"]},7932:function(i,a,o){var s=o(620);i.exports=s.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"])},620:function(i){i.exports=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","uint","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"]},7827:function(i){i.exports=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"]},4905:function(i,a,o){var s=o(5874);i.exports=l;function l(u,c){var f=s(c),h=[];return h=h.concat(f(u)),h=h.concat(f(null)),h}},3236:function(i){i.exports=function(a){typeof a=="string"&&(a=[a]);for(var o=[].slice.call(arguments,1),s=[],l=0;l>1,b=-7,p=l?c-1:0,k=l?-1:1,M=o[s+p];for(p+=k,f=M&(1<<-b)-1,M>>=-b,b+=d;b>0;f=f*256+o[s+p],p+=k,b-=8);for(h=f&(1<<-b)-1,f>>=-b,b+=u;b>0;h=h*256+o[s+p],p+=k,b-=8);if(f===0)f=1-m;else{if(f===v)return h?NaN:(M?-1:1)*(1/0);h=h+Math.pow(2,u),f=f-m}return(M?-1:1)*h*Math.pow(2,f-u)},a.write=function(o,s,l,u,c,f){var h,d,v,m=f*8-c-1,b=(1<>1,k=c===23?Math.pow(2,-24)-Math.pow(2,-77):0,M=u?0:f-1,T=u?1:-1,L=s<0||s===0&&1/s<0?1:0;for(s=Math.abs(s),isNaN(s)||s===1/0?(d=isNaN(s)?1:0,h=b):(h=Math.floor(Math.log(s)/Math.LN2),s*(v=Math.pow(2,-h))<1&&(h--,v*=2),h+p>=1?s+=k/v:s+=k*Math.pow(2,1-p),s*v>=2&&(h++,v/=2),h+p>=b?(d=0,h=b):h+p>=1?(d=(s*v-1)*Math.pow(2,c),h=h+p):(d=s*Math.pow(2,p-1)*Math.pow(2,c),h=0));c>=8;o[l+M]=d&255,M+=T,d/=256,c-=8);for(h=h<0;o[l+M]=h&255,M+=T,h/=256,m-=8);o[l+M-T]|=L*128}},8954:function(i,a,o){"use strict";i.exports=p;var s=o(3250),l=o(6803).Fw;function u(k,M,T){this.vertices=k,this.adjacent=M,this.boundary=T,this.lastVisited=-1}u.prototype.flip=function(){var k=this.vertices[0];this.vertices[0]=this.vertices[1],this.vertices[1]=k;var M=this.adjacent[0];this.adjacent[0]=this.adjacent[1],this.adjacent[1]=M};function c(k,M,T){this.vertices=k,this.cell=M,this.index=T}function f(k,M){return l(k.vertices,M.vertices)}function h(k){return function(){var M=this.tuple;return k.apply(this,M)}}function d(k){var M=s[k+1];return M||(M=s),h(M)}var v=[];function m(k,M,T){this.dimension=k,this.vertices=M,this.simplices=T,this.interior=T.filter(function(C){return!C.boundary}),this.tuple=new Array(k+1);for(var L=0;L<=k;++L)this.tuple[L]=this.vertices[L];var x=v[k];x||(x=v[k]=d(k)),this.orient=x}var b=m.prototype;b.handleBoundaryDegeneracy=function(k,M){var T=this.dimension,L=this.vertices.length-1,x=this.tuple,C=this.vertices,S=[k];for(k.lastVisited=-L;S.length>0;){k=S.pop();for(var g=k.adjacent,P=0;P<=T;++P){var E=g[P];if(!(!E.boundary||E.lastVisited<=-L)){for(var z=E.vertices,q=0;q<=T;++q){var V=z[q];V<0?x[q]=M:x[q]=C[V]}var G=this.orient();if(G>0)return E;E.lastVisited=-L,G===0&&S.push(E)}}}return null},b.walk=function(k,M){var T=this.vertices.length-1,L=this.dimension,x=this.vertices,C=this.tuple,S=M?this.interior.length*Math.random()|0:this.interior.length-1,g=this.interior[S];e:for(;!g.boundary;){for(var P=g.vertices,E=g.adjacent,z=0;z<=L;++z)C[z]=x[P[z]];g.lastVisited=T;for(var z=0;z<=L;++z){var q=E[z];if(!(q.lastVisited>=T)){var V=C[z];C[z]=k;var G=this.orient();if(C[z]=V,G<0){g=q;continue e}else q.boundary?q.lastVisited=-T:q.lastVisited=T}}return}return g},b.addPeaks=function(k,M){var T=this.vertices.length-1,L=this.dimension,x=this.vertices,C=this.tuple,S=this.interior,g=this.simplices,P=[M];M.lastVisited=T,M.vertices[M.vertices.indexOf(-1)]=T,M.boundary=!1,S.push(M);for(var E=[];P.length>0;){var M=P.pop(),z=M.vertices,q=M.adjacent,V=z.indexOf(T);if(!(V<0)){for(var G=0;G<=L;++G)if(G!==V){var Z=q[G];if(!(!Z.boundary||Z.lastVisited>=T)){var j=Z.vertices;if(Z.lastVisited!==-T){for(var N=0,H=0;H<=L;++H)j[H]<0?(N=H,C[H]=k):C[H]=x[j[H]];var ie=this.orient();if(ie>0){j[N]=T,Z.boundary=!1,S.push(Z),P.push(Z),Z.lastVisited=T;continue}else Z.lastVisited=-T}var ae=Z.adjacent,_e=z.slice(),Ee=q.slice(),Ce=new u(_e,Ee,!0);g.push(Ce);var ge=ae.indexOf(M);if(!(ge<0)){ae[ge]=Ce,Ee[V]=Z,_e[G]=-1,Ee[G]=M,q[G]=Ce,Ce.flip();for(var H=0;H<=L;++H){var re=_e[H];if(!(re<0||re===T)){for(var Se=new Array(L-1),ke=0,be=0;be<=L;++be){var Be=_e[be];Be<0||be===H||(Se[ke++]=Be)}E.push(new c(Se,Ce,H))}}}}}}}E.sort(f);for(var G=0;G+1=0?S[P++]=g[z]:E=z&1;if(E===(k&1)){var q=S[0];S[0]=S[1],S[1]=q}M.push(S)}}return M};function p(k,M){var T=k.length;if(T===0)throw new Error("Must have at least d+1 points");var L=k[0].length;if(T<=L)throw new Error("Must input at least d+1 points");var x=k.slice(0,L+1),C=s.apply(void 0,x);if(C===0)throw new Error("Input not in general position");for(var S=new Array(L+1),g=0;g<=L;++g)S[g]=g;C<0&&(S[0]=1,S[1]=0);for(var P=new u(S,new Array(L+1),!1),E=P.adjacent,z=new Array(L+2),g=0;g<=L;++g){for(var q=S.slice(),V=0;V<=L;++V)V===g&&(q[V]=-1);var G=q[0];q[0]=q[1],q[1]=G;var Z=new u(q,new Array(L+1),!0);E[g]=Z,z[g]=Z}z[L+1]=P;for(var g=0;g<=L;++g)for(var q=E[g].vertices,j=E[g].adjacent,V=0;V<=L;++V){var N=q[V];if(N<0){j[V]=P;continue}for(var H=0;H<=L;++H)E[H].vertices.indexOf(N)<0&&(j[V]=E[H])}for(var ie=new m(L,x,z),ae=!!M,g=L+1;g3*(z+1)?m(this,E):this.left.insert(E):this.left=C([E]);else if(E[0]>this.mid)this.right?4*(this.right.count+1)>3*(z+1)?m(this,E):this.right.insert(E):this.right=C([E]);else{var q=s.ge(this.leftPoints,E,L),V=s.ge(this.rightPoints,E,x);this.leftPoints.splice(q,0,E),this.rightPoints.splice(V,0,E)}},h.remove=function(E){var z=this.count-this.leftPoints;if(E[1]3*(z-1))return b(this,E);var V=this.left.remove(E);return V===c?(this.left=null,this.count-=1,u):(V===u&&(this.count-=1),V)}else if(E[0]>this.mid){if(!this.right)return l;var G=this.left?this.left.count:0;if(4*G>3*(z-1))return b(this,E);var V=this.right.remove(E);return V===c?(this.right=null,this.count-=1,u):(V===u&&(this.count-=1),V)}else{if(this.count===1)return this.leftPoints[0]===E?c:l;if(this.leftPoints.length===1&&this.leftPoints[0]===E){if(this.left&&this.right){for(var Z=this,j=this.left;j.right;)Z=j,j=j.right;if(Z===this)j.right=this.right;else{var N=this.left,V=this.right;Z.count-=j.count,Z.right=j.left,j.left=N,j.right=V}d(this,j),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?d(this,this.left):d(this,this.right);return u}for(var N=s.ge(this.leftPoints,E,L);N=0&&E[V][1]>=z;--V){var G=q(E[V]);if(G)return G}}function M(E,z){for(var q=0;qthis.mid){if(this.right){var q=this.right.queryPoint(E,z);if(q)return q}return k(this.rightPoints,E,z)}else return M(this.leftPoints,z)},h.queryInterval=function(E,z,q){if(Ethis.mid&&this.right){var V=this.right.queryInterval(E,z,q);if(V)return V}return zthis.mid?k(this.rightPoints,E,q):M(this.leftPoints,q)};function T(E,z){return E-z}function L(E,z){var q=E[0]-z[0];return q||E[1]-z[1]}function x(E,z){var q=E[1]-z[1];return q||E[0]-z[0]}function C(E){if(E.length===0)return null;for(var z=[],q=0;q>1],G=[],Z=[],j=[],q=0;q13)&&s!==32&&s!==133&&s!==160&&s!==5760&&s!==6158&&(s<8192||s>8205)&&s!==8232&&s!==8233&&s!==8239&&s!==8287&&s!==8288&&s!==12288&&s!==65279)return!1;return!0}},395:function(i){function a(o,s,l){return o*(1-l)+s*l}i.exports=a},2652:function(i,a,o){var s=o(4335),l=o(6864),u=o(1903),c=o(9921),f=o(7608),h=o(5665),d={length:o(1387),normalize:o(3536),dot:o(244),cross:o(5911)},v=l(),m=l(),b=[0,0,0,0],p=[[0,0,0],[0,0,0],[0,0,0]],k=[0,0,0];i.exports=function(C,S,g,P,E,z){if(S||(S=[0,0,0]),g||(g=[0,0,0]),P||(P=[0,0,0]),E||(E=[0,0,0,1]),z||(z=[0,0,0,1]),!s(v,C)||(u(m,v),m[3]=0,m[7]=0,m[11]=0,m[15]=1,Math.abs(c(m)<1e-8)))return!1;var q=v[3],V=v[7],G=v[11],Z=v[12],j=v[13],N=v[14],H=v[15];if(q!==0||V!==0||G!==0){b[0]=q,b[1]=V,b[2]=G,b[3]=H;var ie=f(m,m);if(!ie)return!1;h(m,m),M(E,b,m)}else E[0]=E[1]=E[2]=0,E[3]=1;if(S[0]=Z,S[1]=j,S[2]=N,T(p,v),g[0]=d.length(p[0]),d.normalize(p[0],p[0]),P[0]=d.dot(p[0],p[1]),L(p[1],p[1],p[0],1,-P[0]),g[1]=d.length(p[1]),d.normalize(p[1],p[1]),P[0]/=g[1],P[1]=d.dot(p[0],p[2]),L(p[2],p[2],p[0],1,-P[1]),P[2]=d.dot(p[1],p[2]),L(p[2],p[2],p[1],1,-P[2]),g[2]=d.length(p[2]),d.normalize(p[2],p[2]),P[1]/=g[2],P[2]/=g[2],d.cross(k,p[1],p[2]),d.dot(p[0],k)<0)for(var ae=0;ae<3;ae++)g[ae]*=-1,p[ae][0]*=-1,p[ae][1]*=-1,p[ae][2]*=-1;return z[0]=.5*Math.sqrt(Math.max(1+p[0][0]-p[1][1]-p[2][2],0)),z[1]=.5*Math.sqrt(Math.max(1-p[0][0]+p[1][1]-p[2][2],0)),z[2]=.5*Math.sqrt(Math.max(1-p[0][0]-p[1][1]+p[2][2],0)),z[3]=.5*Math.sqrt(Math.max(1+p[0][0]+p[1][1]+p[2][2],0)),p[2][1]>p[1][2]&&(z[0]=-z[0]),p[0][2]>p[2][0]&&(z[1]=-z[1]),p[1][0]>p[0][1]&&(z[2]=-z[2]),!0};function M(x,C,S){var g=C[0],P=C[1],E=C[2],z=C[3];return x[0]=S[0]*g+S[4]*P+S[8]*E+S[12]*z,x[1]=S[1]*g+S[5]*P+S[9]*E+S[13]*z,x[2]=S[2]*g+S[6]*P+S[10]*E+S[14]*z,x[3]=S[3]*g+S[7]*P+S[11]*E+S[15]*z,x}function T(x,C){x[0][0]=C[0],x[0][1]=C[1],x[0][2]=C[2],x[1][0]=C[4],x[1][1]=C[5],x[1][2]=C[6],x[2][0]=C[8],x[2][1]=C[9],x[2][2]=C[10]}function L(x,C,S,g,P){x[0]=C[0]*g+S[0]*P,x[1]=C[1]*g+S[1]*P,x[2]=C[2]*g+S[2]*P}},4335:function(i){i.exports=function(o,s){var l=s[15];if(l===0)return!1;for(var u=1/l,c=0;c<16;c++)o[c]=s[c]*u;return!0}},7442:function(i,a,o){var s=o(6658),l=o(7182),u=o(2652),c=o(9921),f=o(8648),h=b(),d=b(),v=b();i.exports=m;function m(M,T,L,x){if(c(T)===0||c(L)===0)return!1;var C=u(T,h.translate,h.scale,h.skew,h.perspective,h.quaternion),S=u(L,d.translate,d.scale,d.skew,d.perspective,d.quaternion);return!C||!S?!1:(s(v.translate,h.translate,d.translate,x),s(v.skew,h.skew,d.skew,x),s(v.scale,h.scale,d.scale,x),s(v.perspective,h.perspective,d.perspective,x),f(v.quaternion,h.quaternion,d.quaternion,x),l(M,v.translate,v.scale,v.skew,v.perspective,v.quaternion),!0)}function b(){return{translate:p(),scale:p(1),skew:p(),perspective:k(),quaternion:k()}}function p(M){return[M||0,M||0,M||0]}function k(){return[0,0,0,1]}},7182:function(i,a,o){var s={identity:o(7894),translate:o(7656),multiply:o(6760),create:o(6864),scale:o(2504),fromRotationTranslation:o(6743)},l=s.create(),u=s.create();i.exports=function(f,h,d,v,m,b){return s.identity(f),s.fromRotationTranslation(f,b,h),f[3]=m[0],f[7]=m[1],f[11]=m[2],f[15]=m[3],s.identity(u),v[2]!==0&&(u[9]=v[2],s.multiply(f,f,u)),v[1]!==0&&(u[9]=0,u[8]=v[1],s.multiply(f,f,u)),v[0]!==0&&(u[8]=0,u[4]=v[0],s.multiply(f,f,u)),s.scale(f,f,d),f}},1811:function(i,a,o){"use strict";var s=o(2478),l=o(7442),u=o(7608),c=o(5567),f=o(2408),h=o(7089),d=o(6582),v=o(7656),m=o(2504),b=o(3536),p=[0,0,0];i.exports=L;function k(x){this._components=x.slice(),this._time=[0],this.prevMatrix=x.slice(),this.nextMatrix=x.slice(),this.computedMatrix=x.slice(),this.computedInverse=x.slice(),this.computedEye=[0,0,0],this.computedUp=[0,0,0],this.computedCenter=[0,0,0],this.computedRadius=[0],this._limits=[-1/0,1/0]}var M=k.prototype;M.recalcMatrix=function(x){var C=this._time,S=s.le(C,x),g=this.computedMatrix;if(!(S<0)){var P=this._components;if(S===C.length-1)for(var E=16*S,z=0;z<16;++z)g[z]=P[E++];else{for(var q=C[S+1]-C[S],E=16*S,V=this.prevMatrix,G=!0,z=0;z<16;++z)V[z]=P[E++];for(var Z=this.nextMatrix,z=0;z<16;++z)Z[z]=P[E++],G=G&&V[z]===Z[z];if(q<1e-6||G)for(var z=0;z<16;++z)g[z]=V[z];else l(g,V,Z,(x-C[S])/q)}var j=this.computedUp;j[0]=g[1],j[1]=g[5],j[2]=g[9],b(j,j);var N=this.computedInverse;u(N,g);var H=this.computedEye,ie=N[15];H[0]=N[12]/ie,H[1]=N[13]/ie,H[2]=N[14]/ie;for(var ae=this.computedCenter,_e=Math.exp(this.computedRadius[0]),z=0;z<3;++z)ae[z]=H[z]-g[2+4*z]*_e}},M.idle=function(x){if(!(x1&&s(u[d[p-2]],u[d[p-1]],b)<=0;)p-=1,d.pop();for(d.push(m),p=v.length;p>1&&s(u[v[p-2]],u[v[p-1]],b)>=0;)p-=1,v.pop();v.push(m)}for(var k=new Array(v.length+d.length-2),M=0,f=0,T=d.length;f0;--L)k[M++]=v[L];return k}},351:function(i,a,o){"use strict";i.exports=l;var s=o(4687);function l(u,c){c||(c=u,u=window);var f=0,h=0,d=0,v={shift:!1,alt:!1,control:!1,meta:!1},m=!1;function b(E){var z=!1;return"altKey"in E&&(z=z||E.altKey!==v.alt,v.alt=!!E.altKey),"shiftKey"in E&&(z=z||E.shiftKey!==v.shift,v.shift=!!E.shiftKey),"ctrlKey"in E&&(z=z||E.ctrlKey!==v.control,v.control=!!E.ctrlKey),"metaKey"in E&&(z=z||E.metaKey!==v.meta,v.meta=!!E.metaKey),z}function p(E,z){var q=s.x(z),V=s.y(z);"buttons"in z&&(E=z.buttons|0),(E!==f||q!==h||V!==d||b(z))&&(f=E|0,h=q||0,d=V||0,c&&c(f,h,d,v))}function k(E){p(0,E)}function M(){(f||h||d||v.shift||v.alt||v.meta||v.control)&&(h=d=0,f=0,v.shift=v.alt=v.control=v.meta=!1,c&&c(0,0,0,v))}function T(E){b(E)&&c&&c(f,h,d,v)}function L(E){s.buttons(E)===0?p(0,E):p(f,E)}function x(E){p(f|s.buttons(E),E)}function C(E){p(f&~s.buttons(E),E)}function S(){m||(m=!0,u.addEventListener("mousemove",L),u.addEventListener("mousedown",x),u.addEventListener("mouseup",C),u.addEventListener("mouseleave",k),u.addEventListener("mouseenter",k),u.addEventListener("mouseout",k),u.addEventListener("mouseover",k),u.addEventListener("blur",M),u.addEventListener("keyup",T),u.addEventListener("keydown",T),u.addEventListener("keypress",T),u!==window&&(window.addEventListener("blur",M),window.addEventListener("keyup",T),window.addEventListener("keydown",T),window.addEventListener("keypress",T)))}function g(){m&&(m=!1,u.removeEventListener("mousemove",L),u.removeEventListener("mousedown",x),u.removeEventListener("mouseup",C),u.removeEventListener("mouseleave",k),u.removeEventListener("mouseenter",k),u.removeEventListener("mouseout",k),u.removeEventListener("mouseover",k),u.removeEventListener("blur",M),u.removeEventListener("keyup",T),u.removeEventListener("keydown",T),u.removeEventListener("keypress",T),u!==window&&(window.removeEventListener("blur",M),window.removeEventListener("keyup",T),window.removeEventListener("keydown",T),window.removeEventListener("keypress",T)))}S();var P={element:u};return Object.defineProperties(P,{enabled:{get:function(){return m},set:function(E){E?S():g()},enumerable:!0},buttons:{get:function(){return f},enumerable:!0},x:{get:function(){return h},enumerable:!0},y:{get:function(){return d},enumerable:!0},mods:{get:function(){return v},enumerable:!0}}),P}},24:function(i){var a={left:0,top:0};i.exports=o;function o(l,u,c){u=u||l.currentTarget||l.srcElement,Array.isArray(c)||(c=[0,0]);var f=l.clientX||0,h=l.clientY||0,d=s(u);return c[0]=f-d.left,c[1]=h-d.top,c}function s(l){return l===window||l===document||l===document.body?a:l.getBoundingClientRect()}},4687:function(i,a){"use strict";function o(c){if(typeof c=="object"){if("buttons"in c)return c.buttons;if("which"in c){var f=c.which;if(f===2)return 4;if(f===3)return 2;if(f>0)return 1<=0)return 1<0){if(Ee=1,re[ke++]=v(S[z],M,T,L),z+=ie,x>0)for(_e=1,q=S[z],be=re[ke]=v(q,M,T,L),me=re[ke+Be],He=re[ke+Pe],Ht=re[ke+lt],(be!==me||be!==He||be!==Ht)&&(G=S[z+V],j=S[z+Z],H=S[z+N],h(_e,Ee,q,G,j,H,be,me,He,Ht,M,T,L),at=Se[ke]=Ce++),ke+=1,z+=ie,_e=2;_e0)for(_e=1,q=S[z],be=re[ke]=v(q,M,T,L),me=re[ke+Be],He=re[ke+Pe],Ht=re[ke+lt],(be!==me||be!==He||be!==Ht)&&(G=S[z+V],j=S[z+Z],H=S[z+N],h(_e,Ee,q,G,j,H,be,me,He,Ht,M,T,L),at=Se[ke]=Ce++,Ht!==He&&d(Se[ke+Pe],at,j,H,He,Ht,M,T,L)),ke+=1,z+=ie,_e=2;_e0){if(_e=1,re[ke++]=v(S[z],M,T,L),z+=ie,C>0)for(Ee=1,q=S[z],be=re[ke]=v(q,M,T,L),He=re[ke+Pe],me=re[ke+Be],Ht=re[ke+lt],(be!==He||be!==me||be!==Ht)&&(G=S[z+V],j=S[z+Z],H=S[z+N],h(_e,Ee,q,G,j,H,be,He,me,Ht,M,T,L),at=Se[ke]=Ce++),ke+=1,z+=ie,Ee=2;Ee0)for(Ee=1,q=S[z],be=re[ke]=v(q,M,T,L),He=re[ke+Pe],me=re[ke+Be],Ht=re[ke+lt],(be!==He||be!==me||be!==Ht)&&(G=S[z+V],j=S[z+Z],H=S[z+N],h(_e,Ee,q,G,j,H,be,He,me,Ht,M,T,L),at=Se[ke]=Ce++,Ht!==He&&d(Se[ke+Pe],at,H,G,Ht,He,M,T,L)),ke+=1,z+=ie,Ee=2;Ee 0"),typeof f.vertex!="function"&&h("Must specify vertex creation function"),typeof f.cell!="function"&&h("Must specify cell creation function"),typeof f.phase!="function"&&h("Must specify phase function");for(var b=f.getters||[],p=new Array(v),k=0;k=0?p[k]=!0:p[k]=!1;return u(f.vertex,f.cell,f.phase,m,d,p)}},6199:function(i,a,o){"use strict";var s=o(1338),l={zero:function(L,x,C,S){var g=L[0],P=C[0];S|=0;var E=0,z=P;for(E=0;E2&&E[1]>2&&S(P.pick(-1,-1).lo(1,1).hi(E[0]-2,E[1]-2),g.pick(-1,-1,0).lo(1,1).hi(E[0]-2,E[1]-2),g.pick(-1,-1,1).lo(1,1).hi(E[0]-2,E[1]-2)),E[1]>2&&(C(P.pick(0,-1).lo(1).hi(E[1]-2),g.pick(0,-1,1).lo(1).hi(E[1]-2)),x(g.pick(0,-1,0).lo(1).hi(E[1]-2))),E[1]>2&&(C(P.pick(E[0]-1,-1).lo(1).hi(E[1]-2),g.pick(E[0]-1,-1,1).lo(1).hi(E[1]-2)),x(g.pick(E[0]-1,-1,0).lo(1).hi(E[1]-2))),E[0]>2&&(C(P.pick(-1,0).lo(1).hi(E[0]-2),g.pick(-1,0,0).lo(1).hi(E[0]-2)),x(g.pick(-1,0,1).lo(1).hi(E[0]-2))),E[0]>2&&(C(P.pick(-1,E[1]-1).lo(1).hi(E[0]-2),g.pick(-1,E[1]-1,0).lo(1).hi(E[0]-2)),x(g.pick(-1,E[1]-1,1).lo(1).hi(E[0]-2))),g.set(0,0,0,0),g.set(0,0,1,0),g.set(E[0]-1,0,0,0),g.set(E[0]-1,0,1,0),g.set(0,E[1]-1,0,0),g.set(0,E[1]-1,1,0),g.set(E[0]-1,E[1]-1,0,0),g.set(E[0]-1,E[1]-1,1,0),g}}function T(L){var x=L.join(),E=v[x];if(E)return E;for(var C=L.length,S=[b,p],g=1;g<=C;++g)S.push(k(g));var P=M,E=P.apply(void 0,S);return v[x]=E,E}i.exports=function(x,C,S){if(Array.isArray(S)||(typeof S=="string"?S=s(C.dimension,S):S=s(C.dimension,"clamp")),C.size===0)return x;if(C.dimension===0)return x.set(0),x;var g=T(S);return g(x,C)}},4317:function(i){"use strict";function a(c,f){var h=Math.floor(f),d=f-h,v=0<=h&&h0;){j<64?(x=j,j=0):(x=64,j-=64);for(var N=v[1]|0;N>0;){N<64?(C=N,N=0):(C=64,N-=64),p=G+j*g+N*P,T=Z+j*z+N*q;var H=0,ie=0,ae=0,_e=E,Ee=g-S*E,Ce=P-x*g,ge=V,re=z-S*V,Se=q-x*z;for(ae=0;ae0;){q<64?(x=q,q=0):(x=64,q-=64);for(var V=v[0]|0;V>0;){V<64?(L=V,V=0):(L=64,V-=64),p=E+q*S+V*C,T=z+q*P+V*g;var G=0,Z=0,j=S,N=C-x*S,H=P,ie=g-x*P;for(Z=0;Z0;){Z<64?(C=Z,Z=0):(C=64,Z-=64);for(var j=v[0]|0;j>0;){j<64?(L=j,j=0):(L=64,j-=64);for(var N=v[1]|0;N>0;){N<64?(x=N,N=0):(x=64,N-=64),p=V+Z*P+j*S+N*g,T=G+Z*q+j*E+N*z;var H=0,ie=0,ae=0,_e=P,Ee=S-C*P,Ce=g-L*S,ge=q,re=E-C*q,Se=z-L*E;for(ae=0;aek;){H=0,ie=G-x;t:for(j=0;j_e)break t;ie+=E,H+=z}for(H=G,ie=G-x,j=0;j>1,N=j-V,H=j+V,ie=G,ae=N,_e=j,Ee=H,Ce=Z,ge=M+1,re=T-1,Se=!0,ke,be,Be,Le,me,Pe,ce,He,lt,mt=0,Ht=0,at=0,ct,ar,Vt,rr,tt,je,Ue,Ae,rt,St,Tt,dt,Et,pt,jt,or,mr=P,Ar=b(mr),ei=b(mr);ar=C*ie,Vt=C*ae,or=x;e:for(ct=0;ct0){be=ie,ie=ae,ae=be;break e}if(at<0)break e;or+=z}ar=C*Ee,Vt=C*Ce,or=x;e:for(ct=0;ct0){be=Ee,Ee=Ce,Ce=be;break e}if(at<0)break e;or+=z}ar=C*ie,Vt=C*_e,or=x;e:for(ct=0;ct0){be=ie,ie=_e,_e=be;break e}if(at<0)break e;or+=z}ar=C*ae,Vt=C*_e,or=x;e:for(ct=0;ct0){be=ae,ae=_e,_e=be;break e}if(at<0)break e;or+=z}ar=C*ie,Vt=C*Ee,or=x;e:for(ct=0;ct0){be=ie,ie=Ee,Ee=be;break e}if(at<0)break e;or+=z}ar=C*_e,Vt=C*Ee,or=x;e:for(ct=0;ct0){be=_e,_e=Ee,Ee=be;break e}if(at<0)break e;or+=z}ar=C*ae,Vt=C*Ce,or=x;e:for(ct=0;ct0){be=ae,ae=Ce,Ce=be;break e}if(at<0)break e;or+=z}ar=C*ae,Vt=C*_e,or=x;e:for(ct=0;ct0){be=ae,ae=_e,_e=be;break e}if(at<0)break e;or+=z}ar=C*Ee,Vt=C*Ce,or=x;e:for(ct=0;ct0){be=Ee,Ee=Ce,Ce=be;break e}if(at<0)break e;or+=z}for(ar=C*ie,Vt=C*ae,rr=C*_e,tt=C*Ee,je=C*Ce,Ue=C*G,Ae=C*j,rt=C*Z,jt=0,or=x,ct=0;ct0)re--;else if(at<0){for(ar=C*Pe,Vt=C*ge,rr=C*re,or=x,ct=0;ct0)for(;;){ce=x+re*C,jt=0;e:for(ct=0;ct0){if(--reZ){e:for(;;){for(ce=x+ge*C,jt=0,or=x,ct=0;ct1&&k?T(p,k[0],k[1]):T(p)}var d={"uint32,1,0":function(m,b){return function(p){var k=p.data,M=p.offset|0,T=p.shape,L=p.stride,x=L[0]|0,C=T[0]|0,S=L[1]|0,g=T[1]|0,P=S,E=S,z=1;C<=32?m(0,C-1,k,M,x,S,C,g,P,E,z):b(0,C-1,k,M,x,S,C,g,P,E,z)}}};function v(m,b){var p=[b,m].join(","),k=d[p],M=c(m,b),T=h(m,b,M);return k(M,T)}i.exports=v},446:function(i,a,o){"use strict";var s=o(7640),l={};function u(c){var f=c.order,h=c.dtype,d=[f,h],v=d.join(":"),m=l[v];return m||(l[v]=m=s(f,h)),m(c),c}i.exports=u},9618:function(i,a,o){var s=o(7163),l=typeof Float64Array!="undefined";function u(b,p){return b[0]-p[0]}function c(){var b=this.stride,p=new Array(b.length),k;for(k=0;k=0&&(S=x|0,C+=P*S,g-=S),new M(this.data,g,P,C)},T.step=function(x){var C=this.shape[0],S=this.stride[0],g=this.offset,P=0,E=Math.ceil;return typeof x=="number"&&(P=x|0,P<0?(g+=S*(C-1),C=E(-C/P)):C=E(C/P),S*=P),new M(this.data,C,S,g)},T.transpose=function(x){x=x===void 0?0:x|0;var C=this.shape,S=this.stride;return new M(this.data,C[x],S[x],this.offset)},T.pick=function(x){var C=[],S=[],g=this.offset;typeof x=="number"&&x>=0?g=g+this.stride[0]*x|0:(C.push(this.shape[0]),S.push(this.stride[0]));var P=p[C.length+1];return P(this.data,C,S,g)},function(x,C,S,g){return new M(x,C[0],S[0],g)}},2:function(b,p,k){function M(L,x,C,S,g,P){this.data=L,this.shape=[x,C],this.stride=[S,g],this.offset=P|0}var T=M.prototype;return T.dtype=b,T.dimension=2,Object.defineProperty(T,"size",{get:function(){return this.shape[0]*this.shape[1]}}),Object.defineProperty(T,"order",{get:function(){return Math.abs(this.stride[0])>Math.abs(this.stride[1])?[1,0]:[0,1]}}),T.set=function(x,C,S){return b==="generic"?this.data.set(this.offset+this.stride[0]*x+this.stride[1]*C,S):this.data[this.offset+this.stride[0]*x+this.stride[1]*C]=S},T.get=function(x,C){return b==="generic"?this.data.get(this.offset+this.stride[0]*x+this.stride[1]*C):this.data[this.offset+this.stride[0]*x+this.stride[1]*C]},T.index=function(x,C){return this.offset+this.stride[0]*x+this.stride[1]*C},T.hi=function(x,C){return new M(this.data,typeof x!="number"||x<0?this.shape[0]:x|0,typeof C!="number"||C<0?this.shape[1]:C|0,this.stride[0],this.stride[1],this.offset)},T.lo=function(x,C){var S=this.offset,g=0,P=this.shape[0],E=this.shape[1],z=this.stride[0],q=this.stride[1];return typeof x=="number"&&x>=0&&(g=x|0,S+=z*g,P-=g),typeof C=="number"&&C>=0&&(g=C|0,S+=q*g,E-=g),new M(this.data,P,E,z,q,S)},T.step=function(x,C){var S=this.shape[0],g=this.shape[1],P=this.stride[0],E=this.stride[1],z=this.offset,q=0,V=Math.ceil;return typeof x=="number"&&(q=x|0,q<0?(z+=P*(S-1),S=V(-S/q)):S=V(S/q),P*=q),typeof C=="number"&&(q=C|0,q<0?(z+=E*(g-1),g=V(-g/q)):g=V(g/q),E*=q),new M(this.data,S,g,P,E,z)},T.transpose=function(x,C){x=x===void 0?0:x|0,C=C===void 0?1:C|0;var S=this.shape,g=this.stride;return new M(this.data,S[x],S[C],g[x],g[C],this.offset)},T.pick=function(x,C){var S=[],g=[],P=this.offset;typeof x=="number"&&x>=0?P=P+this.stride[0]*x|0:(S.push(this.shape[0]),g.push(this.stride[0])),typeof C=="number"&&C>=0?P=P+this.stride[1]*C|0:(S.push(this.shape[1]),g.push(this.stride[1]));var E=p[S.length+1];return E(this.data,S,g,P)},function(x,C,S,g){return new M(x,C[0],C[1],S[0],S[1],g)}},3:function(b,p,k){function M(L,x,C,S,g,P,E,z){this.data=L,this.shape=[x,C,S],this.stride=[g,P,E],this.offset=z|0}var T=M.prototype;return T.dtype=b,T.dimension=3,Object.defineProperty(T,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]}}),Object.defineProperty(T,"order",{get:function(){var x=Math.abs(this.stride[0]),C=Math.abs(this.stride[1]),S=Math.abs(this.stride[2]);return x>C?C>S?[2,1,0]:x>S?[1,2,0]:[1,0,2]:x>S?[2,0,1]:S>C?[0,1,2]:[0,2,1]}}),T.set=function(x,C,S,g){return b==="generic"?this.data.set(this.offset+this.stride[0]*x+this.stride[1]*C+this.stride[2]*S,g):this.data[this.offset+this.stride[0]*x+this.stride[1]*C+this.stride[2]*S]=g},T.get=function(x,C,S){return b==="generic"?this.data.get(this.offset+this.stride[0]*x+this.stride[1]*C+this.stride[2]*S):this.data[this.offset+this.stride[0]*x+this.stride[1]*C+this.stride[2]*S]},T.index=function(x,C,S){return this.offset+this.stride[0]*x+this.stride[1]*C+this.stride[2]*S},T.hi=function(x,C,S){return new M(this.data,typeof x!="number"||x<0?this.shape[0]:x|0,typeof C!="number"||C<0?this.shape[1]:C|0,typeof S!="number"||S<0?this.shape[2]:S|0,this.stride[0],this.stride[1],this.stride[2],this.offset)},T.lo=function(x,C,S){var g=this.offset,P=0,E=this.shape[0],z=this.shape[1],q=this.shape[2],V=this.stride[0],G=this.stride[1],Z=this.stride[2];return typeof x=="number"&&x>=0&&(P=x|0,g+=V*P,E-=P),typeof C=="number"&&C>=0&&(P=C|0,g+=G*P,z-=P),typeof S=="number"&&S>=0&&(P=S|0,g+=Z*P,q-=P),new M(this.data,E,z,q,V,G,Z,g)},T.step=function(x,C,S){var g=this.shape[0],P=this.shape[1],E=this.shape[2],z=this.stride[0],q=this.stride[1],V=this.stride[2],G=this.offset,Z=0,j=Math.ceil;return typeof x=="number"&&(Z=x|0,Z<0?(G+=z*(g-1),g=j(-g/Z)):g=j(g/Z),z*=Z),typeof C=="number"&&(Z=C|0,Z<0?(G+=q*(P-1),P=j(-P/Z)):P=j(P/Z),q*=Z),typeof S=="number"&&(Z=S|0,Z<0?(G+=V*(E-1),E=j(-E/Z)):E=j(E/Z),V*=Z),new M(this.data,g,P,E,z,q,V,G)},T.transpose=function(x,C,S){x=x===void 0?0:x|0,C=C===void 0?1:C|0,S=S===void 0?2:S|0;var g=this.shape,P=this.stride;return new M(this.data,g[x],g[C],g[S],P[x],P[C],P[S],this.offset)},T.pick=function(x,C,S){var g=[],P=[],E=this.offset;typeof x=="number"&&x>=0?E=E+this.stride[0]*x|0:(g.push(this.shape[0]),P.push(this.stride[0])),typeof C=="number"&&C>=0?E=E+this.stride[1]*C|0:(g.push(this.shape[1]),P.push(this.stride[1])),typeof S=="number"&&S>=0?E=E+this.stride[2]*S|0:(g.push(this.shape[2]),P.push(this.stride[2]));var z=p[g.length+1];return z(this.data,g,P,E)},function(x,C,S,g){return new M(x,C[0],C[1],C[2],S[0],S[1],S[2],g)}},4:function(b,p,k){function M(L,x,C,S,g,P,E,z,q,V){this.data=L,this.shape=[x,C,S,g],this.stride=[P,E,z,q],this.offset=V|0}var T=M.prototype;return T.dtype=b,T.dimension=4,Object.defineProperty(T,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]}}),Object.defineProperty(T,"order",{get:k}),T.set=function(x,C,S,g,P){return b==="generic"?this.data.set(this.offset+this.stride[0]*x+this.stride[1]*C+this.stride[2]*S+this.stride[3]*g,P):this.data[this.offset+this.stride[0]*x+this.stride[1]*C+this.stride[2]*S+this.stride[3]*g]=P},T.get=function(x,C,S,g){return b==="generic"?this.data.get(this.offset+this.stride[0]*x+this.stride[1]*C+this.stride[2]*S+this.stride[3]*g):this.data[this.offset+this.stride[0]*x+this.stride[1]*C+this.stride[2]*S+this.stride[3]*g]},T.index=function(x,C,S,g){return this.offset+this.stride[0]*x+this.stride[1]*C+this.stride[2]*S+this.stride[3]*g},T.hi=function(x,C,S,g){return new M(this.data,typeof x!="number"||x<0?this.shape[0]:x|0,typeof C!="number"||C<0?this.shape[1]:C|0,typeof S!="number"||S<0?this.shape[2]:S|0,typeof g!="number"||g<0?this.shape[3]:g|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.offset)},T.lo=function(x,C,S,g){var P=this.offset,E=0,z=this.shape[0],q=this.shape[1],V=this.shape[2],G=this.shape[3],Z=this.stride[0],j=this.stride[1],N=this.stride[2],H=this.stride[3];return typeof x=="number"&&x>=0&&(E=x|0,P+=Z*E,z-=E),typeof C=="number"&&C>=0&&(E=C|0,P+=j*E,q-=E),typeof S=="number"&&S>=0&&(E=S|0,P+=N*E,V-=E),typeof g=="number"&&g>=0&&(E=g|0,P+=H*E,G-=E),new M(this.data,z,q,V,G,Z,j,N,H,P)},T.step=function(x,C,S,g){var P=this.shape[0],E=this.shape[1],z=this.shape[2],q=this.shape[3],V=this.stride[0],G=this.stride[1],Z=this.stride[2],j=this.stride[3],N=this.offset,H=0,ie=Math.ceil;return typeof x=="number"&&(H=x|0,H<0?(N+=V*(P-1),P=ie(-P/H)):P=ie(P/H),V*=H),typeof C=="number"&&(H=C|0,H<0?(N+=G*(E-1),E=ie(-E/H)):E=ie(E/H),G*=H),typeof S=="number"&&(H=S|0,H<0?(N+=Z*(z-1),z=ie(-z/H)):z=ie(z/H),Z*=H),typeof g=="number"&&(H=g|0,H<0?(N+=j*(q-1),q=ie(-q/H)):q=ie(q/H),j*=H),new M(this.data,P,E,z,q,V,G,Z,j,N)},T.transpose=function(x,C,S,g){x=x===void 0?0:x|0,C=C===void 0?1:C|0,S=S===void 0?2:S|0,g=g===void 0?3:g|0;var P=this.shape,E=this.stride;return new M(this.data,P[x],P[C],P[S],P[g],E[x],E[C],E[S],E[g],this.offset)},T.pick=function(x,C,S,g){var P=[],E=[],z=this.offset;typeof x=="number"&&x>=0?z=z+this.stride[0]*x|0:(P.push(this.shape[0]),E.push(this.stride[0])),typeof C=="number"&&C>=0?z=z+this.stride[1]*C|0:(P.push(this.shape[1]),E.push(this.stride[1])),typeof S=="number"&&S>=0?z=z+this.stride[2]*S|0:(P.push(this.shape[2]),E.push(this.stride[2])),typeof g=="number"&&g>=0?z=z+this.stride[3]*g|0:(P.push(this.shape[3]),E.push(this.stride[3]));var q=p[P.length+1];return q(this.data,P,E,z)},function(x,C,S,g){return new M(x,C[0],C[1],C[2],C[3],S[0],S[1],S[2],S[3],g)}},5:function(p,k,M){function T(x,C,S,g,P,E,z,q,V,G,Z,j){this.data=x,this.shape=[C,S,g,P,E],this.stride=[z,q,V,G,Z],this.offset=j|0}var L=T.prototype;return L.dtype=p,L.dimension=5,Object.defineProperty(L,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]*this.shape[4]}}),Object.defineProperty(L,"order",{get:M}),L.set=function(C,S,g,P,E,z){return p==="generic"?this.data.set(this.offset+this.stride[0]*C+this.stride[1]*S+this.stride[2]*g+this.stride[3]*P+this.stride[4]*E,z):this.data[this.offset+this.stride[0]*C+this.stride[1]*S+this.stride[2]*g+this.stride[3]*P+this.stride[4]*E]=z},L.get=function(C,S,g,P,E){return p==="generic"?this.data.get(this.offset+this.stride[0]*C+this.stride[1]*S+this.stride[2]*g+this.stride[3]*P+this.stride[4]*E):this.data[this.offset+this.stride[0]*C+this.stride[1]*S+this.stride[2]*g+this.stride[3]*P+this.stride[4]*E]},L.index=function(C,S,g,P,E){return this.offset+this.stride[0]*C+this.stride[1]*S+this.stride[2]*g+this.stride[3]*P+this.stride[4]*E},L.hi=function(C,S,g,P,E){return new T(this.data,typeof C!="number"||C<0?this.shape[0]:C|0,typeof S!="number"||S<0?this.shape[1]:S|0,typeof g!="number"||g<0?this.shape[2]:g|0,typeof P!="number"||P<0?this.shape[3]:P|0,typeof E!="number"||E<0?this.shape[4]:E|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.stride[4],this.offset)},L.lo=function(C,S,g,P,E){var z=this.offset,q=0,V=this.shape[0],G=this.shape[1],Z=this.shape[2],j=this.shape[3],N=this.shape[4],H=this.stride[0],ie=this.stride[1],ae=this.stride[2],_e=this.stride[3],Ee=this.stride[4];return typeof C=="number"&&C>=0&&(q=C|0,z+=H*q,V-=q),typeof S=="number"&&S>=0&&(q=S|0,z+=ie*q,G-=q),typeof g=="number"&&g>=0&&(q=g|0,z+=ae*q,Z-=q),typeof P=="number"&&P>=0&&(q=P|0,z+=_e*q,j-=q),typeof E=="number"&&E>=0&&(q=E|0,z+=Ee*q,N-=q),new T(this.data,V,G,Z,j,N,H,ie,ae,_e,Ee,z)},L.step=function(C,S,g,P,E){var z=this.shape[0],q=this.shape[1],V=this.shape[2],G=this.shape[3],Z=this.shape[4],j=this.stride[0],N=this.stride[1],H=this.stride[2],ie=this.stride[3],ae=this.stride[4],_e=this.offset,Ee=0,Ce=Math.ceil;return typeof C=="number"&&(Ee=C|0,Ee<0?(_e+=j*(z-1),z=Ce(-z/Ee)):z=Ce(z/Ee),j*=Ee),typeof S=="number"&&(Ee=S|0,Ee<0?(_e+=N*(q-1),q=Ce(-q/Ee)):q=Ce(q/Ee),N*=Ee),typeof g=="number"&&(Ee=g|0,Ee<0?(_e+=H*(V-1),V=Ce(-V/Ee)):V=Ce(V/Ee),H*=Ee),typeof P=="number"&&(Ee=P|0,Ee<0?(_e+=ie*(G-1),G=Ce(-G/Ee)):G=Ce(G/Ee),ie*=Ee),typeof E=="number"&&(Ee=E|0,Ee<0?(_e+=ae*(Z-1),Z=Ce(-Z/Ee)):Z=Ce(Z/Ee),ae*=Ee),new T(this.data,z,q,V,G,Z,j,N,H,ie,ae,_e)},L.transpose=function(C,S,g,P,E){C=C===void 0?0:C|0,S=S===void 0?1:S|0,g=g===void 0?2:g|0,P=P===void 0?3:P|0,E=E===void 0?4:E|0;var z=this.shape,q=this.stride;return new T(this.data,z[C],z[S],z[g],z[P],z[E],q[C],q[S],q[g],q[P],q[E],this.offset)},L.pick=function(C,S,g,P,E){var z=[],q=[],V=this.offset;typeof C=="number"&&C>=0?V=V+this.stride[0]*C|0:(z.push(this.shape[0]),q.push(this.stride[0])),typeof S=="number"&&S>=0?V=V+this.stride[1]*S|0:(z.push(this.shape[1]),q.push(this.stride[1])),typeof g=="number"&&g>=0?V=V+this.stride[2]*g|0:(z.push(this.shape[2]),q.push(this.stride[2])),typeof P=="number"&&P>=0?V=V+this.stride[3]*P|0:(z.push(this.shape[3]),q.push(this.stride[3])),typeof E=="number"&&E>=0?V=V+this.stride[4]*E|0:(z.push(this.shape[4]),q.push(this.stride[4]));var G=k[z.length+1];return G(this.data,z,q,V)},function(C,S,g,P){return new T(C,S[0],S[1],S[2],S[3],S[4],g[0],g[1],g[2],g[3],g[4],P)}}};function h(b,p){var k=p===-1?"T":String(p),M=f[k];return p===-1?M(b):p===0?M(b,v[b][0]):M(b,v[b],c)}function d(b){if(s(b))return"buffer";if(l)switch(Object.prototype.toString.call(b)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(b)?"array":"generic"}var v={generic:[],buffer:[],array:[],float32:[],float64:[],int8:[],int16:[],int32:[],uint8_clamped:[],uint8:[],uint16:[],uint32:[],bigint64:[],biguint64:[]};function m(b,p,k,M){if(b===void 0){var g=v.array[0];return g([])}else typeof b=="number"&&(b=[b]);p===void 0&&(p=[b.length]);var T=p.length;if(k===void 0){k=new Array(T);for(var L=T-1,x=1;L>=0;--L)k[L]=x,x*=p[L]}if(M===void 0){M=0;for(var L=0;L>>0;i.exports=c;function c(f,h){if(isNaN(f)||isNaN(h))return NaN;if(f===h)return f;if(f===0)return h<0?-l:l;var d=s.hi(f),v=s.lo(f);return h>f==f>0?v===u?(d+=1,v=0):v+=1:v===0?(v=u,d-=1):v-=1,s.pack(v,d)}},8406:function(i,a){var o=1e-6,s=1e-6;a.vertexNormals=function(l,u,c){for(var f=u.length,h=new Array(f),d=c===void 0?o:c,v=0;vd)for(var z=h[p],q=1/Math.sqrt(S*P),E=0;E<3;++E){var V=(E+1)%3,G=(E+2)%3;z[E]+=q*(g[V]*C[G]-g[G]*C[V])}}for(var v=0;vd)for(var q=1/Math.sqrt(Z),E=0;E<3;++E)z[E]*=q;else for(var E=0;E<3;++E)z[E]=0}return h},a.faceNormals=function(l,u,c){for(var f=l.length,h=new Array(f),d=c===void 0?s:c,v=0;vd?L=1/Math.sqrt(L):L=0;for(var p=0;p<3;++p)T[p]*=L;h[v]=T}return h}},4081:function(i){"use strict";i.exports=a;function a(o,s,l,u,c,f,h,d,v,m){var b=s+f+m;if(p>0){var p=Math.sqrt(b+1);o[0]=.5*(h-v)/p,o[1]=.5*(d-u)/p,o[2]=.5*(l-f)/p,o[3]=.5*p}else{var k=Math.max(s,f,m),p=Math.sqrt(2*k-b+1);s>=k?(o[0]=.5*p,o[1]=.5*(c+l)/p,o[2]=.5*(d+u)/p,o[3]=.5*(h-v)/p):f>=k?(o[0]=.5*(l+c)/p,o[1]=.5*p,o[2]=.5*(v+h)/p,o[3]=.5*(d-u)/p):(o[0]=.5*(u+d)/p,o[1]=.5*(h+v)/p,o[2]=.5*p,o[3]=.5*(l-c)/p)}return o}},9977:function(i,a,o){"use strict";i.exports=p;var s=o(9215),l=o(6582),u=o(7399),c=o(7608),f=o(4081);function h(k,M,T){return Math.sqrt(Math.pow(k,2)+Math.pow(M,2)+Math.pow(T,2))}function d(k,M,T,L){return Math.sqrt(Math.pow(k,2)+Math.pow(M,2)+Math.pow(T,2)+Math.pow(L,2))}function v(k,M){var T=M[0],L=M[1],x=M[2],C=M[3],S=d(T,L,x,C);S>1e-6?(k[0]=T/S,k[1]=L/S,k[2]=x/S,k[3]=C/S):(k[0]=k[1]=k[2]=0,k[3]=1)}function m(k,M,T){this.radius=s([T]),this.center=s(M),this.rotation=s(k),this.computedRadius=this.radius.curve(0),this.computedCenter=this.center.curve(0),this.computedRotation=this.rotation.curve(0),this.computedUp=[.1,0,0],this.computedEye=[.1,0,0],this.computedMatrix=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.recalcMatrix(0)}var b=m.prototype;b.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT())},b.recalcMatrix=function(k){this.radius.curve(k),this.center.curve(k),this.rotation.curve(k);var M=this.computedRotation;v(M,M);var T=this.computedMatrix;u(T,M);var L=this.computedCenter,x=this.computedEye,C=this.computedUp,S=Math.exp(this.computedRadius[0]);x[0]=L[0]+S*T[2],x[1]=L[1]+S*T[6],x[2]=L[2]+S*T[10],C[0]=T[1],C[1]=T[5],C[2]=T[9];for(var g=0;g<3;++g){for(var P=0,E=0;E<3;++E)P+=T[g+4*E]*x[E];T[12+g]=-P}},b.getMatrix=function(k,M){this.recalcMatrix(k);var T=this.computedMatrix;if(M){for(var L=0;L<16;++L)M[L]=T[L];return M}return T},b.idle=function(k){this.center.idle(k),this.radius.idle(k),this.rotation.idle(k)},b.flush=function(k){this.center.flush(k),this.radius.flush(k),this.rotation.flush(k)},b.pan=function(k,M,T,L){M=M||0,T=T||0,L=L||0,this.recalcMatrix(k);var x=this.computedMatrix,C=x[1],S=x[5],g=x[9],P=h(C,S,g);C/=P,S/=P,g/=P;var E=x[0],z=x[4],q=x[8],V=E*C+z*S+q*g;E-=C*V,z-=S*V,q-=g*V;var G=h(E,z,q);E/=G,z/=G,q/=G;var Z=x[2],j=x[6],N=x[10],H=Z*C+j*S+N*g,ie=Z*E+j*z+N*q;Z-=H*C+ie*E,j-=H*S+ie*z,N-=H*g+ie*q;var ae=h(Z,j,N);Z/=ae,j/=ae,N/=ae;var _e=E*M+C*T,Ee=z*M+S*T,Ce=q*M+g*T;this.center.move(k,_e,Ee,Ce);var ge=Math.exp(this.computedRadius[0]);ge=Math.max(1e-4,ge+L),this.radius.set(k,Math.log(ge))},b.rotate=function(k,M,T,L){this.recalcMatrix(k),M=M||0,T=T||0;var x=this.computedMatrix,C=x[0],S=x[4],g=x[8],P=x[1],E=x[5],z=x[9],q=x[2],V=x[6],G=x[10],Z=M*C+T*P,j=M*S+T*E,N=M*g+T*z,H=-(V*N-G*j),ie=-(G*Z-q*N),ae=-(q*j-V*Z),_e=Math.sqrt(Math.max(0,1-Math.pow(H,2)-Math.pow(ie,2)-Math.pow(ae,2))),Ee=d(H,ie,ae,_e);Ee>1e-6?(H/=Ee,ie/=Ee,ae/=Ee,_e/=Ee):(H=ie=ae=0,_e=1);var Ce=this.computedRotation,ge=Ce[0],re=Ce[1],Se=Ce[2],ke=Ce[3],be=ge*_e+ke*H+re*ae-Se*ie,Be=re*_e+ke*ie+Se*H-ge*ae,Le=Se*_e+ke*ae+ge*ie-re*H,me=ke*_e-ge*H-re*ie-Se*ae;if(L){H=q,ie=V,ae=G;var Pe=Math.sin(L)/h(H,ie,ae);H*=Pe,ie*=Pe,ae*=Pe,_e=Math.cos(M),be=be*_e+me*H+Be*ae-Le*ie,Be=Be*_e+me*ie+Le*H-be*ae,Le=Le*_e+me*ae+be*ie-Be*H,me=me*_e-be*H-Be*ie-Le*ae}var ce=d(be,Be,Le,me);ce>1e-6?(be/=ce,Be/=ce,Le/=ce,me/=ce):(be=Be=Le=0,me=1),this.rotation.set(k,be,Be,Le,me)},b.lookAt=function(k,M,T,L){this.recalcMatrix(k),T=T||this.computedCenter,M=M||this.computedEye,L=L||this.computedUp;var x=this.computedMatrix;l(x,M,T,L);var C=this.computedRotation;f(C,x[0],x[1],x[2],x[4],x[5],x[6],x[8],x[9],x[10]),v(C,C),this.rotation.set(k,C[0],C[1],C[2],C[3]);for(var S=0,g=0;g<3;++g)S+=Math.pow(T[g]-M[g],2);this.radius.set(k,.5*Math.log(Math.max(S,1e-6))),this.center.set(k,T[0],T[1],T[2])},b.translate=function(k,M,T,L){this.center.move(k,M||0,T||0,L||0)},b.setMatrix=function(k,M){var T=this.computedRotation;f(T,M[0],M[1],M[2],M[4],M[5],M[6],M[8],M[9],M[10]),v(T,T),this.rotation.set(k,T[0],T[1],T[2],T[3]);var L=this.computedMatrix;c(L,M);var x=L[15];if(Math.abs(x)>1e-6){var C=L[12]/x,S=L[13]/x,g=L[14]/x;this.recalcMatrix(k);var P=Math.exp(this.computedRadius[0]);this.center.set(k,C-L[2]*P,S-L[6]*P,g-L[10]*P),this.radius.idle(k)}else this.center.idle(k),this.radius.idle(k)},b.setDistance=function(k,M){M>0&&this.radius.set(k,Math.log(M))},b.setDistanceLimits=function(k,M){k>0?k=Math.log(k):k=-1/0,M>0?M=Math.log(M):M=1/0,M=Math.max(M,k),this.radius.bounds[0][0]=k,this.radius.bounds[1][0]=M},b.getDistanceLimits=function(k){var M=this.radius.bounds;return k?(k[0]=Math.exp(M[0][0]),k[1]=Math.exp(M[1][0]),k):[Math.exp(M[0][0]),Math.exp(M[1][0])]},b.toJSON=function(){return this.recalcMatrix(this.lastT()),{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]}},b.fromJSON=function(k){var M=this.lastT(),T=k.center;T&&this.center.set(M,T[0],T[1],T[2]);var L=k.rotation;L&&this.rotation.set(M,L[0],L[1],L[2],L[3]);var x=k.distance;x&&x>0&&this.radius.set(M,Math.log(x)),this.setDistanceLimits(k.zoomMin,k.zoomMax)};function p(k){k=k||{};var M=k.center||[0,0,0],T=k.rotation||[0,0,0,1],L=k.radius||1;M=[].slice.call(M,0,3),T=[].slice.call(T,0,4),v(T,T);var x=new m(T,M,Math.log(L));return x.setDistanceLimits(k.zoomMin,k.zoomMax),("eye"in k||"up"in k)&&x.lookAt(0,k.eye,k.center,k.up),x}},1371:function(i,a,o){"use strict";var s=o(3233);i.exports=function(u,c,f){return f=typeof f!="undefined"?f+"":" ",s(f,c)+u}},3202:function(i){i.exports=function(o,s){s||(s=[0,""]),o=String(o);var l=parseFloat(o,10);return s[0]=l,s[1]=o.match(/[\d.\-\+]*\s*(.*)/)[1]||"",s}},3088:function(i,a,o){"use strict";i.exports=l;var s=o(3140);function l(u,c){for(var f=c.length|0,h=u.length,d=[new Array(f),new Array(f)],v=0;v0){z=d[G][P][0],V=G;break}q=z[V^1];for(var Z=0;Z<2;++Z)for(var j=d[Z][P],N=0;N0&&(z=H,q=ie,V=Z)}return E||z&&p(z,V),q}function M(g,P){var E=d[P][g][0],z=[g];p(E,P);for(var q=E[P^1],V=P;;){for(;q!==g;)z.push(q),q=k(z[z.length-2],q,!1);if(d[0][g].length+d[1][g].length===0)break;var G=z[z.length-1],Z=g,j=z[1],N=k(G,Z,!0);if(s(c[G],c[Z],c[j],c[N])<0)break;z.push(g),q=k(G,Z)}return z}function T(g,P){return P[1]===P[P.length-1]}for(var v=0;v0;){var C=d[0][v].length,S=M(v,L);T(x,S)?x.push.apply(x,S):(x.length>0&&b.push(x),x=S)}x.length>0&&b.push(x)}return b}},5609:function(i,a,o){"use strict";i.exports=l;var s=o(3134);function l(u,c){for(var f=s(u,c.length),h=new Array(c.length),d=new Array(c.length),v=[],m=0;m0;){var p=v.pop();h[p]=!1;for(var k=f[p],m=0;m0}C=C.filter(S);for(var g=C.length,P=new Array(g),E=new Array(g),x=0;x0;){var ce=Le.pop(),He=Ee[ce];h(He,function(ct,ar){return ct-ar});var lt=He.length,mt=me[ce],Ht;if(mt===0){var j=C[ce];Ht=[j]}for(var x=0;x=0)&&(me[at]=mt^1,Le.push(at),mt===0)){var j=C[at];Be(j)||(j.reverse(),Ht.push(j))}}mt===0&&Pe.push(Ht)}return Pe}},5085:function(i,a,o){i.exports=k;var s=o(3250)[3],l=o(4209),u=o(3352),c=o(2478);function f(){return!0}function h(M){return function(T,L){var x=M[T];return x?!!x.queryPoint(L,f):!1}}function d(M){for(var T={},L=0;L0&&T[x]===L[0])C=M[x-1];else return 1;for(var S=1;C;){var g=C.key,P=s(L,g[0],g[1]);if(g[0][0]0)S=-1,C=C.right;else return 0;else if(P>0)C=C.left;else if(P<0)S=1,C=C.right;else return 0}return S}}function m(M){return 1}function b(M){return function(L){return M(L[0],L[1])?0:1}}function p(M,T){return function(x){return M(x[0],x[1])?0:T(x)}}function k(M){for(var T=M.length,L=[],x=[],C=0,S=0;S=m?(g=1,E=m+2*k+T):(g=-k/m,E=k*g+T)):(g=0,M>=0?(P=0,E=T):-M>=p?(P=1,E=p+2*M+T):(P=-M/p,E=M*P+T));else if(P<0)P=0,k>=0?(g=0,E=T):-k>=m?(g=1,E=m+2*k+T):(g=-k/m,E=k*g+T);else{var z=1/S;g*=z,P*=z,E=g*(m*g+b*P+2*k)+P*(b*g+p*P+2*M)+T}else{var q,V,G,Z;g<0?(q=b+k,V=p+M,V>q?(G=V-q,Z=m-2*b+p,G>=Z?(g=1,P=0,E=m+2*k+T):(g=G/Z,P=1-g,E=g*(m*g+b*P+2*k)+P*(b*g+p*P+2*M)+T)):(g=0,V<=0?(P=1,E=p+2*M+T):M>=0?(P=0,E=T):(P=-M/p,E=M*P+T))):P<0?(q=b+M,V=m+k,V>q?(G=V-q,Z=m-2*b+p,G>=Z?(P=1,g=0,E=p+2*M+T):(P=G/Z,g=1-P,E=g*(m*g+b*P+2*k)+P*(b*g+p*P+2*M)+T)):(P=0,V<=0?(g=1,E=m+2*k+T):k>=0?(g=0,E=T):(g=-k/m,E=k*g+T))):(G=p+M-b-k,G<=0?(g=0,P=1,E=p+2*M+T):(Z=m-2*b+p,G>=Z?(g=1,P=0,E=m+2*k+T):(g=G/Z,P=1-g,E=g*(m*g+b*P+2*k)+P*(b*g+p*P+2*M)+T)))}for(var j=1-g-P,v=0;v0){var p=f[d-1];if(s(m,p)===0&&u(p)!==b){d-=1;continue}}f[d++]=m}}return f.length=d,f}},3233:function(i){"use strict";var a="",o;i.exports=s;function s(l,u){if(typeof l!="string")throw new TypeError("expected a string");if(u===1)return l;if(u===2)return l+l;var c=l.length*u;if(o!==l||typeof o=="undefined")o=l,a="";else if(a.length>=c)return a.substr(0,c);for(;c>a.length&&u>1;)u&1&&(a+=l),u>>=1,l+=l;return a+=l,a=a.substr(0,c),a}},3025:function(i,a,o){i.exports=o.g.performance&&o.g.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}},7004:function(i){"use strict";i.exports=a;function a(o){for(var s=o.length,l=o[o.length-1],u=s,c=s-2;c>=0;--c){var f=l,h=o[c];l=f+h;var d=l-f,v=h-d;v&&(o[--u]=l,l=v)}for(var m=0,c=u;c0){if(V<=0)return G;Z=q+V}else if(q<0){if(V>=0)return G;Z=-(q+V)}else return G;var j=d*Z;return G>=j||G<=-j?G:M(P,E,z)},function(P,E,z,q){var V=P[0]-q[0],G=E[0]-q[0],Z=z[0]-q[0],j=P[1]-q[1],N=E[1]-q[1],H=z[1]-q[1],ie=P[2]-q[2],ae=E[2]-q[2],_e=z[2]-q[2],Ee=G*H,Ce=Z*N,ge=Z*j,re=V*H,Se=V*N,ke=G*j,be=ie*(Ee-Ce)+ae*(ge-re)+_e*(Se-ke),Be=(Math.abs(Ee)+Math.abs(Ce))*Math.abs(ie)+(Math.abs(ge)+Math.abs(re))*Math.abs(ae)+(Math.abs(Se)+Math.abs(ke))*Math.abs(_e),Le=v*Be;return be>Le||-be>Le?be:T(P,E,z,q)}];function x(g){var P=L[g.length];return P||(P=L[g.length]=k(g.length)),P.apply(void 0,g)}function C(g,P,E,z,q,V,G){return function(j,N,H,ie,ae){switch(arguments.length){case 0:case 1:return 0;case 2:return z(j,N);case 3:return q(j,N,H);case 4:return V(j,N,H,ie);case 5:return G(j,N,H,ie,ae)}for(var _e=new Array(arguments.length),Ee=0;Ee0&&m>0||v<0&&m<0)return!1;var b=s(h,c,f),p=s(d,c,f);return b>0&&p>0||b<0&&p<0?!1:v===0&&m===0&&b===0&&p===0?l(c,f,h,d):!0}},8545:function(i){"use strict";i.exports=o;function a(s,l){var u=s+l,c=u-s,f=u-c,h=l-c,d=s-f,v=d+h;return v?[v,u]:[u]}function o(s,l){var u=s.length|0,c=l.length|0;if(u===1&&c===1)return a(s[0],-l[0]);var f=u+c,h=new Array(f),d=0,v=0,m=0,b=Math.abs,p=s[v],k=b(p),M=-l[m],T=b(M),L,x;k=c?(L=p,v+=1,v=c?(L=p,v+=1,v>1,M=f[2*k+1];if(M===m)return k;m>1,M=f[2*k+1];if(M===m)return k;m>1,M=f[2*k+1];if(M===m)return k;m>1,M=f[2*k+1];if(M===m)return k;m>1,Z=d(P[G],E);Z<=0?(Z===0&&(V=G),z=G+1):Z>0&&(q=G-1)}return V}s=p;function k(P,E){for(var z=new Array(P.length),q=0,V=z.length;q=P.length||d(P[Ee],G)!==0););}return z}s=k;function M(P,E){if(!E)return k(b(L(P,0)),P,0);for(var z=new Array(E),q=0;q>>H&1&&N.push(V[H]);E.push(N)}return m(E)}s=T;function L(P,E){if(E<0)return[];for(var z=[],q=(1<0)-(u<0)},a.abs=function(u){var c=u>>o-1;return(u^c)-c},a.min=function(u,c){return c^(u^c)&-(u65535)<<4,u>>>=c,f=(u>255)<<3,u>>>=f,c|=f,f=(u>15)<<2,u>>>=f,c|=f,f=(u>3)<<1,u>>>=f,c|=f,c|u>>1},a.log10=function(u){return u>=1e9?9:u>=1e8?8:u>=1e7?7:u>=1e6?6:u>=1e5?5:u>=1e4?4:u>=1e3?3:u>=100?2:u>=10?1:0},a.popCount=function(u){return u=u-(u>>>1&1431655765),u=(u&858993459)+(u>>>2&858993459),(u+(u>>>4)&252645135)*16843009>>>24};function s(u){var c=32;return u&=-u,u&&c--,u&65535&&(c-=16),u&16711935&&(c-=8),u&252645135&&(c-=4),u&858993459&&(c-=2),u&1431655765&&(c-=1),c}a.countTrailingZeros=s,a.nextPow2=function(u){return u+=u===0,--u,u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u+1},a.prevPow2=function(u){return u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u-(u>>>1)},a.parity=function(u){return u^=u>>>16,u^=u>>>8,u^=u>>>4,u&=15,27030>>>u&1};var l=new Array(256);(function(u){for(var c=0;c<256;++c){var f=c,h=c,d=7;for(f>>>=1;f;f>>>=1)h<<=1,h|=f&1,--d;u[c]=h<>>8&255]<<16|l[u>>>16&255]<<8|l[u>>>24&255]},a.interleave2=function(u,c){return u&=65535,u=(u|u<<8)&16711935,u=(u|u<<4)&252645135,u=(u|u<<2)&858993459,u=(u|u<<1)&1431655765,c&=65535,c=(c|c<<8)&16711935,c=(c|c<<4)&252645135,c=(c|c<<2)&858993459,c=(c|c<<1)&1431655765,u|c<<1},a.deinterleave2=function(u,c){return u=u>>>c&1431655765,u=(u|u>>>1)&858993459,u=(u|u>>>2)&252645135,u=(u|u>>>4)&16711935,u=(u|u>>>16)&65535,u<<16>>16},a.interleave3=function(u,c,f){return u&=1023,u=(u|u<<16)&4278190335,u=(u|u<<8)&251719695,u=(u|u<<4)&3272356035,u=(u|u<<2)&1227133513,c&=1023,c=(c|c<<16)&4278190335,c=(c|c<<8)&251719695,c=(c|c<<4)&3272356035,c=(c|c<<2)&1227133513,u|=c<<1,f&=1023,f=(f|f<<16)&4278190335,f=(f|f<<8)&251719695,f=(f|f<<4)&3272356035,f=(f|f<<2)&1227133513,u|f<<2},a.deinterleave3=function(u,c){return u=u>>>c&1227133513,u=(u|u>>>2)&3272356035,u=(u|u>>>4)&251719695,u=(u|u>>>8)&4278190335,u=(u|u>>>16)&1023,u<<22>>22},a.nextCombination=function(u){var c=u|u-1;return c+1|(~c&-~c)-1>>>s(u)+1}},2014:function(i,a,o){"use strict";"use restrict";var s=o(3105),l=o(4623);function u(g){for(var P=0,E=Math.max,z=0,q=g.length;z>1,G=h(g[V],P);G<=0?(G===0&&(q=V),E=V+1):G>0&&(z=V-1)}return q}a.findCell=b;function p(g,P){for(var E=new Array(g.length),z=0,q=E.length;z=g.length||h(g[_e],V)!==0););}return E}a.incidence=p;function k(g,P){if(!P)return p(m(T(g,0)),g,0);for(var E=new Array(P),z=0;z>>N&1&&j.push(q[N]);P.push(j)}return v(P)}a.explode=M;function T(g,P){if(P<0)return[];for(var E=[],z=(1<>1:(re>>1)-1}function z(re){for(var Se=P(re);;){var ke=Se,be=2*re+1,Be=2*(re+1),Le=re;if(be0;){var ke=E(re);if(ke>=0){var be=P(ke);if(Se0){var re=j[0];return g(0,ie-1),ie-=1,z(0),re}return-1}function G(re,Se){var ke=j[re];return k[ke]===Se?re:(k[ke]=-1/0,q(re),V(),k[ke]=Se,ie+=1,q(ie-1))}function Z(re){if(!M[re]){M[re]=!0;var Se=b[re],ke=p[re];b[ke]>=0&&(b[ke]=Se),p[Se]>=0&&(p[Se]=ke),N[Se]>=0&&G(N[Se],S(Se)),N[ke]>=0&&G(N[ke],S(ke))}}for(var j=[],N=new Array(v),T=0;T>1;T>=0;--T)z(T);for(;;){var ae=V();if(ae<0||k[ae]>d)break;Z(ae)}for(var _e=[],T=0;T=0&&ke>=0&&Se!==ke){var be=N[Se],Be=N[ke];be!==Be&&ge.push([be,Be])}}),l.unique(l.normalize(ge)),{positions:_e,edges:ge}}},1303:function(i,a,o){"use strict";i.exports=u;var s=o(3250);function l(c,f){var h,d;if(f[0][0]f[1][0])h=f[1],d=f[0];else{var v=Math.min(c[0][1],c[1][1]),m=Math.max(c[0][1],c[1][1]),b=Math.min(f[0][1],f[1][1]),p=Math.max(f[0][1],f[1][1]);return mp?v-p:m-p}var k,M;c[0][1]f[1][0])h=f[1],d=f[0];else return l(f,c);var v,m;if(c[0][0]c[1][0])v=c[1],m=c[0];else return-l(c,f);var b=s(h,d,m),p=s(h,d,v);if(b<0){if(p<=0)return b}else if(b>0){if(p>=0)return b}else if(p)return p;if(b=s(m,v,d),p=s(m,v,h),b<0){if(p<=0)return b}else if(b>0){if(p>=0)return b}else if(p)return p;return d[0]-m[0]}},4209:function(i,a,o){"use strict";i.exports=p;var s=o(2478),l=o(3840),u=o(3250),c=o(1303);function f(k,M,T){this.slabs=k,this.coordinates=M,this.horizontal=T}var h=f.prototype;function d(k,M){return k.y-M}function v(k,M){for(var T=null;k;){var L=k.key,x,C;L[0][0]0)if(M[0]!==L[1][0])T=k,k=k.right;else{var g=v(k.right,M);if(g)return g;k=k.left}else{if(M[0]!==L[1][0])return k;var g=v(k.right,M);if(g)return g;k=k.left}}return T}h.castUp=function(k){var M=s.le(this.coordinates,k[0]);if(M<0)return-1;var T=this.slabs[M],L=v(this.slabs[M],k),x=-1;if(L&&(x=L.value),this.coordinates[M]===k[0]){var C=null;if(L&&(C=L.key),M>0){var S=v(this.slabs[M-1],k);S&&(C?c(S.key,C)>0&&(C=S.key,x=S.value):(x=S.value,C=S.key))}var g=this.horizontal[M];if(g.length>0){var P=s.ge(g,k[1],d);if(P=g.length)return x;E=g[P]}}if(E.start)if(C){var z=u(C[0],C[1],[k[0],E.y]);C[0][0]>C[1][0]&&(z=-z),z>0&&(x=E.index)}else x=E.index;else E.y!==k[1]&&(x=E.index)}}}return x};function m(k,M,T,L){this.y=k,this.index=M,this.start=T,this.closed=L}function b(k,M,T,L){this.x=k,this.segment=M,this.create=T,this.index=L}function p(k){for(var M=k.length,T=2*M,L=new Array(T),x=0;x1&&(M=1);for(var T=1-M,L=v.length,x=new Array(L),C=0;C0||k>0&&x<0){var C=c(M,x,T,k);b.push(C),p.push(C.slice())}x<0?p.push(T.slice()):x>0?b.push(T.slice()):(b.push(T.slice()),p.push(T.slice())),k=x}return{positive:b,negative:p}}function h(v,m){for(var b=[],p=u(v[v.length-1],m),k=v[v.length-1],M=v[0],T=0;T0||p>0&&L<0)&&b.push(c(k,L,M,p)),L>=0&&b.push(M.slice()),p=L}return b}function d(v,m){for(var b=[],p=u(v[v.length-1],m),k=v[v.length-1],M=v[0],T=0;T0||p>0&&L<0)&&b.push(c(k,L,M,p)),L<=0&&b.push(M.slice()),p=L}return b}},3387:function(i,a,o){var s;(function(){"use strict";var l={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function u(v){return f(d(v),arguments)}function c(v,m){return u.apply(null,[v].concat(m||[]))}function f(v,m){var b=1,p=v.length,k,M="",T,L,x,C,S,g,P,E;for(T=0;T=0),x.type){case"b":k=parseInt(k,10).toString(2);break;case"c":k=String.fromCharCode(parseInt(k,10));break;case"d":case"i":k=parseInt(k,10);break;case"j":k=JSON.stringify(k,null,x.width?parseInt(x.width):0);break;case"e":k=x.precision?parseFloat(k).toExponential(x.precision):parseFloat(k).toExponential();break;case"f":k=x.precision?parseFloat(k).toFixed(x.precision):parseFloat(k);break;case"g":k=x.precision?String(Number(k.toPrecision(x.precision))):parseFloat(k);break;case"o":k=(parseInt(k,10)>>>0).toString(8);break;case"s":k=String(k),k=x.precision?k.substring(0,x.precision):k;break;case"t":k=String(!!k),k=x.precision?k.substring(0,x.precision):k;break;case"T":k=Object.prototype.toString.call(k).slice(8,-1).toLowerCase(),k=x.precision?k.substring(0,x.precision):k;break;case"u":k=parseInt(k,10)>>>0;break;case"v":k=k.valueOf(),k=x.precision?k.substring(0,x.precision):k;break;case"x":k=(parseInt(k,10)>>>0).toString(16);break;case"X":k=(parseInt(k,10)>>>0).toString(16).toUpperCase();break}l.json.test(x.type)?M+=k:(l.number.test(x.type)&&(!P||x.sign)?(E=P?"+":"-",k=k.toString().replace(l.sign,"")):E="",S=x.pad_char?x.pad_char==="0"?"0":x.pad_char.charAt(1):" ",g=x.width-(E+k).length,C=x.width&&g>0?S.repeat(g):"",M+=x.align?E+k+C:S==="0"?E+C+k:C+E+k)}return M}var h=Object.create(null);function d(v){if(h[v])return h[v];for(var m=v,b,p=[],k=0;m;){if((b=l.text.exec(m))!==null)p.push(b[0]);else if((b=l.modulo.exec(m))!==null)p.push("%");else if((b=l.placeholder.exec(m))!==null){if(b[2]){k|=1;var M=[],T=b[2],L=[];if((L=l.key.exec(T))!==null)for(M.push(L[1]);(T=T.substring(L[0].length))!=="";)if((L=l.key_access.exec(T))!==null)M.push(L[1]);else if((L=l.index_access.exec(T))!==null)M.push(L[1]);else throw new SyntaxError("[sprintf] failed to parse named argument key");else throw new SyntaxError("[sprintf] failed to parse named argument key");b[2]=M}else k|=2;if(k===3)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");p.push({placeholder:b[0],param_no:b[1],keys:b[2],sign:b[3],pad_char:b[4],align:b[5],width:b[6],precision:b[7],type:b[8]})}else throw new SyntaxError("[sprintf] unexpected placeholder");m=m.substring(b[0].length)}return h[v]=p}a.sprintf=u,a.vsprintf=c,typeof window!="undefined"&&(window.sprintf=u,window.vsprintf=c,s=function(){return{sprintf:u,vsprintf:c}}.call(a,o,a,i),s!==void 0&&(i.exports=s))})()},3711:function(i,a,o){"use strict";i.exports=d;var s=o(2640),l=o(781),u={"2d":function(v,m,b){var p=v({order:m,scalarArguments:3,getters:b==="generic"?[0]:void 0,phase:function(M,T,L,x){return M>x|0},vertex:function(M,T,L,x,C,S,g,P,E,z,q,V,G){var Z=(g<<0)+(P<<1)+(E<<2)+(z<<3)|0;if(!(Z===0||Z===15))switch(Z){case 0:q.push([M-.5,T-.5]);break;case 1:q.push([M-.25-.25*(x+L-2*G)/(L-x),T-.25-.25*(C+L-2*G)/(L-C)]);break;case 2:q.push([M-.75-.25*(-x-L+2*G)/(x-L),T-.25-.25*(S+x-2*G)/(x-S)]);break;case 3:q.push([M-.5,T-.5-.5*(C+L+S+x-4*G)/(L-C+x-S)]);break;case 4:q.push([M-.25-.25*(S+C-2*G)/(C-S),T-.75-.25*(-C-L+2*G)/(C-L)]);break;case 5:q.push([M-.5-.5*(x+L+S+C-4*G)/(L-x+C-S),T-.5]);break;case 6:q.push([M-.5-.25*(-x-L+S+C)/(x-L+C-S),T-.5-.25*(-C-L+S+x)/(C-L+x-S)]);break;case 7:q.push([M-.75-.25*(S+C-2*G)/(C-S),T-.75-.25*(S+x-2*G)/(x-S)]);break;case 8:q.push([M-.75-.25*(-S-C+2*G)/(S-C),T-.75-.25*(-S-x+2*G)/(S-x)]);break;case 9:q.push([M-.5-.25*(x+L+-S-C)/(L-x+S-C),T-.5-.25*(C+L+-S-x)/(L-C+S-x)]);break;case 10:q.push([M-.5-.5*(-x-L+-S-C+4*G)/(x-L+S-C),T-.5]);break;case 11:q.push([M-.25-.25*(-S-C+2*G)/(S-C),T-.75-.25*(C+L-2*G)/(L-C)]);break;case 12:q.push([M-.5,T-.5-.5*(-C-L+-S-x+4*G)/(C-L+S-x)]);break;case 13:q.push([M-.75-.25*(x+L-2*G)/(L-x),T-.25-.25*(-S-x+2*G)/(S-x)]);break;case 14:q.push([M-.25-.25*(-x-L+2*G)/(x-L),T-.25-.25*(-C-L+2*G)/(C-L)]);break;case 15:q.push([M-.5,T-.5]);break}},cell:function(M,T,L,x,C,S,g,P,E){C?P.push([M,T]):P.push([T,M])}});return function(k,M){var T=[],L=[];return p(k,T,L,M),{positions:T,cells:L}}}};function c(v,m){var b=v.length+"d",p=u[b];if(p)return p(s,v,m)}function f(v,m){for(var b=l(v,m),p=b.length,k=new Array(p),M=new Array(p),T=0;TMath.max(x,C)?S[2]=1:x>Math.max(L,C)?S[0]=1:S[1]=1;for(var g=0,P=0,E=0;E<3;++E)g+=T[E]*T[E],P+=S[E]*T[E];for(var E=0;E<3;++E)S[E]-=P/g*T[E];return f(S,S),S}function b(T,L,x,C,S,g,P,E){this.center=s(x),this.up=s(C),this.right=s(S),this.radius=s([g]),this.angle=s([P,E]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(T,L),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var z=0;z<16;++z)this.computedMatrix[z]=.5;this.recalcMatrix(0)}var p=b.prototype;p.setDistanceLimits=function(T,L){T>0?T=Math.log(T):T=-1/0,L>0?L=Math.log(L):L=1/0,L=Math.max(L,T),this.radius.bounds[0][0]=T,this.radius.bounds[1][0]=L},p.getDistanceLimits=function(T){var L=this.radius.bounds[0];return T?(T[0]=Math.exp(L[0][0]),T[1]=Math.exp(L[1][0]),T):[Math.exp(L[0][0]),Math.exp(L[1][0])]},p.recalcMatrix=function(T){this.center.curve(T),this.up.curve(T),this.right.curve(T),this.radius.curve(T),this.angle.curve(T);for(var L=this.computedUp,x=this.computedRight,C=0,S=0,g=0;g<3;++g)S+=L[g]*x[g],C+=L[g]*L[g];for(var P=Math.sqrt(C),E=0,g=0;g<3;++g)x[g]-=L[g]*S/C,E+=x[g]*x[g],L[g]/=P;for(var z=Math.sqrt(E),g=0;g<3;++g)x[g]/=z;var q=this.computedToward;c(q,L,x),f(q,q);for(var V=Math.exp(this.computedRadius[0]),G=this.computedAngle[0],Z=this.computedAngle[1],j=Math.cos(G),N=Math.sin(G),H=Math.cos(Z),ie=Math.sin(Z),ae=this.computedCenter,_e=j*H,Ee=N*H,Ce=ie,ge=-j*ie,re=-N*ie,Se=H,ke=this.computedEye,be=this.computedMatrix,g=0;g<3;++g){var Be=_e*x[g]+Ee*q[g]+Ce*L[g];be[4*g+1]=ge*x[g]+re*q[g]+Se*L[g],be[4*g+2]=Be,be[4*g+3]=0}var Le=be[1],me=be[5],Pe=be[9],ce=be[2],He=be[6],lt=be[10],mt=me*lt-Pe*He,Ht=Pe*ce-Le*lt,at=Le*He-me*ce,ct=d(mt,Ht,at);mt/=ct,Ht/=ct,at/=ct,be[0]=mt,be[4]=Ht,be[8]=at;for(var g=0;g<3;++g)ke[g]=ae[g]+be[2+4*g]*V;for(var g=0;g<3;++g){for(var E=0,ar=0;ar<3;++ar)E+=be[g+4*ar]*ke[ar];be[12+g]=-E}be[15]=1},p.getMatrix=function(T,L){this.recalcMatrix(T);var x=this.computedMatrix;if(L){for(var C=0;C<16;++C)L[C]=x[C];return L}return x};var k=[0,0,0];p.rotate=function(T,L,x,C){if(this.angle.move(T,L,x),C){this.recalcMatrix(T);var S=this.computedMatrix;k[0]=S[2],k[1]=S[6],k[2]=S[10];for(var g=this.computedUp,P=this.computedRight,E=this.computedToward,z=0;z<3;++z)S[4*z]=g[z],S[4*z+1]=P[z],S[4*z+2]=E[z];u(S,S,C,k);for(var z=0;z<3;++z)g[z]=S[4*z],P[z]=S[4*z+1];this.up.set(T,g[0],g[1],g[2]),this.right.set(T,P[0],P[1],P[2])}},p.pan=function(T,L,x,C){L=L||0,x=x||0,C=C||0,this.recalcMatrix(T);var S=this.computedMatrix,g=Math.exp(this.computedRadius[0]),P=S[1],E=S[5],z=S[9],q=d(P,E,z);P/=q,E/=q,z/=q;var V=S[0],G=S[4],Z=S[8],j=V*P+G*E+Z*z;V-=P*j,G-=E*j,Z-=z*j;var N=d(V,G,Z);V/=N,G/=N,Z/=N;var H=V*L+P*x,ie=G*L+E*x,ae=Z*L+z*x;this.center.move(T,H,ie,ae);var _e=Math.exp(this.computedRadius[0]);_e=Math.max(1e-4,_e+C),this.radius.set(T,Math.log(_e))},p.translate=function(T,L,x,C){this.center.move(T,L||0,x||0,C||0)},p.setMatrix=function(T,L,x,C){var S=1;typeof x=="number"&&(S=x|0),(S<0||S>3)&&(S=1);var g=(S+2)%3,P=(S+1)%3;L||(this.recalcMatrix(T),L=this.computedMatrix);var E=L[S],z=L[S+4],q=L[S+8];if(C){var G=Math.abs(E),Z=Math.abs(z),j=Math.abs(q),N=Math.max(G,Z,j);G===N?(E=E<0?-1:1,z=q=0):j===N?(q=q<0?-1:1,E=z=0):(z=z<0?-1:1,E=q=0)}else{var V=d(E,z,q);E/=V,z/=V,q/=V}var H=L[g],ie=L[g+4],ae=L[g+8],_e=H*E+ie*z+ae*q;H-=E*_e,ie-=z*_e,ae-=q*_e;var Ee=d(H,ie,ae);H/=Ee,ie/=Ee,ae/=Ee;var Ce=z*ae-q*ie,ge=q*H-E*ae,re=E*ie-z*H,Se=d(Ce,ge,re);Ce/=Se,ge/=Se,re/=Se,this.center.jump(T,Ue,Ae,rt),this.radius.idle(T),this.up.jump(T,E,z,q),this.right.jump(T,H,ie,ae);var ke,be;if(S===2){var Be=L[1],Le=L[5],me=L[9],Pe=Be*H+Le*ie+me*ae,ce=Be*Ce+Le*ge+me*re;Ht<0?ke=-Math.PI/2:ke=Math.PI/2,be=Math.atan2(ce,Pe)}else{var He=L[2],lt=L[6],mt=L[10],Ht=He*E+lt*z+mt*q,at=He*H+lt*ie+mt*ae,ct=He*Ce+lt*ge+mt*re;ke=Math.asin(v(Ht)),be=Math.atan2(ct,at)}this.angle.jump(T,be,ke),this.recalcMatrix(T);var ar=L[2],Vt=L[6],rr=L[10],tt=this.computedMatrix;l(tt,L);var je=tt[15],Ue=tt[12]/je,Ae=tt[13]/je,rt=tt[14]/je,St=Math.exp(this.computedRadius[0]);this.center.jump(T,Ue-ar*St,Ae-Vt*St,rt-rr*St)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(T){this.center.idle(T),this.up.idle(T),this.right.idle(T),this.radius.idle(T),this.angle.idle(T)},p.flush=function(T){this.center.flush(T),this.up.flush(T),this.right.flush(T),this.radius.flush(T),this.angle.flush(T)},p.setDistance=function(T,L){L>0&&this.radius.set(T,Math.log(L))},p.lookAt=function(T,L,x,C){this.recalcMatrix(T),L=L||this.computedEye,x=x||this.computedCenter,C=C||this.computedUp;var S=C[0],g=C[1],P=C[2],E=d(S,g,P);if(!(E<1e-6)){S/=E,g/=E,P/=E;var z=L[0]-x[0],q=L[1]-x[1],V=L[2]-x[2],G=d(z,q,V);if(!(G<1e-6)){z/=G,q/=G,V/=G;var Z=this.computedRight,j=Z[0],N=Z[1],H=Z[2],ie=S*j+g*N+P*H;j-=ie*S,N-=ie*g,H-=ie*P;var ae=d(j,N,H);if(!(ae<.01&&(j=g*V-P*q,N=P*z-S*V,H=S*q-g*z,ae=d(j,N,H),ae<1e-6))){j/=ae,N/=ae,H/=ae,this.up.set(T,S,g,P),this.right.set(T,j,N,H),this.center.set(T,x[0],x[1],x[2]),this.radius.set(T,Math.log(G));var _e=g*H-P*N,Ee=P*j-S*H,Ce=S*N-g*j,ge=d(_e,Ee,Ce);_e/=ge,Ee/=ge,Ce/=ge;var re=S*z+g*q+P*V,Se=j*z+N*q+H*V,ke=_e*z+Ee*q+Ce*V,be=Math.asin(v(re)),Be=Math.atan2(ke,Se),Le=this.angle._state,me=Le[Le.length-1],Pe=Le[Le.length-2];me=me%(2*Math.PI);var ce=Math.abs(me+2*Math.PI-Be),He=Math.abs(me-Be),lt=Math.abs(me-2*Math.PI-Be);ce0?H.pop():new ArrayBuffer(j)}a.mallocArrayBuffer=k;function M(Z){return new Uint8Array(k(Z),0,Z)}a.mallocUint8=M;function T(Z){return new Uint16Array(k(2*Z),0,Z)}a.mallocUint16=T;function L(Z){return new Uint32Array(k(4*Z),0,Z)}a.mallocUint32=L;function x(Z){return new Int8Array(k(Z),0,Z)}a.mallocInt8=x;function C(Z){return new Int16Array(k(2*Z),0,Z)}a.mallocInt16=C;function S(Z){return new Int32Array(k(4*Z),0,Z)}a.mallocInt32=S;function g(Z){return new Float32Array(k(4*Z),0,Z)}a.mallocFloat32=a.mallocFloat=g;function P(Z){return new Float64Array(k(8*Z),0,Z)}a.mallocFloat64=a.mallocDouble=P;function E(Z){return c?new Uint8ClampedArray(k(Z),0,Z):M(Z)}a.mallocUint8Clamped=E;function z(Z){return f?new BigUint64Array(k(8*Z),0,Z):null}a.mallocBigUint64=z;function q(Z){return h?new BigInt64Array(k(8*Z),0,Z):null}a.mallocBigInt64=q;function V(Z){return new DataView(k(Z),0,Z)}a.mallocDataView=V;function G(Z){Z=s.nextPow2(Z);var j=s.log2(Z),N=m[j];return N.length>0?N.pop():new u(Z)}a.mallocBuffer=G,a.clearCache=function(){for(var j=0;j<32;++j)d.UINT8[j].length=0,d.UINT16[j].length=0,d.UINT32[j].length=0,d.INT8[j].length=0,d.INT16[j].length=0,d.INT32[j].length=0,d.FLOAT[j].length=0,d.DOUBLE[j].length=0,d.BIGUINT64[j].length=0,d.BIGINT64[j].length=0,d.UINT8C[j].length=0,v[j].length=0,m[j].length=0}},1755:function(i){"use strict";"use restrict";i.exports=a;function a(s){this.roots=new Array(s),this.ranks=new Array(s);for(var l=0;l",H="",ie=N.length,ae=H.length,_e=G[0]===k||G[0]===L,Ee=0,Ce=-ae;Ee>-1&&(Ee=Z.indexOf(N,Ee),!(Ee===-1||(Ce=Z.indexOf(H,Ee+ie),Ce===-1)||Ce<=Ee));){for(var ge=Ee;ge=Ce)j[ge]=null,Z=Z.substr(0,ge)+" "+Z.substr(ge+1);else if(j[ge]!==null){var re=j[ge].indexOf(G[0]);re===-1?j[ge]+=G:_e&&(j[ge]=j[ge].substr(0,re+1)+(1+parseInt(j[ge][re+1]))+j[ge].substr(re+2))}var Se=Ee+ie,ke=Z.substr(Se,Ce-Se),be=ke.indexOf(N);be!==-1?Ee=be:Ee=Ce+ae}return j}function S(V,G,Z){for(var j=G.textAlign||"start",N=G.textBaseline||"alphabetic",H=[1<<30,1<<30],ie=[0,0],ae=V.length,_e=0;_e/g,` +`):Z=Z.replace(/\/g," ");var ie="",ae=[];for(me=0;me-1?parseInt(Ae[1+Tt]):0,pt=dt>-1?parseInt(rt[1+dt]):0;Et!==pt&&(St=St.replace(at(),"?px "),He*=Math.pow(.75,pt-Et),St=St.replace("?px ",at())),ce+=.25*re*(pt-Et)}if(H.superscripts===!0){var jt=Ae.indexOf(k),or=rt.indexOf(k),mr=jt>-1?parseInt(Ae[1+jt]):0,Ar=or>-1?parseInt(rt[1+or]):0;mr!==Ar&&(St=St.replace(at(),"?px "),He*=Math.pow(.75,Ar-mr),St=St.replace("?px ",at())),ce-=.25*re*(Ar-mr)}if(H.bolds===!0){var ei=Ae.indexOf(v)>-1,qr=rt.indexOf(v)>-1;!ei&&qr&&(jr?St=St.replace("italic ","italic bold "):St="bold "+St),ei&&!qr&&(St=St.replace("bold ",""))}if(H.italics===!0){var jr=Ae.indexOf(b)>-1,gt=rt.indexOf(b)>-1;!jr&>&&(St="italic "+St),jr&&!gt&&(St=St.replace("italic ",""))}G.font=St}for(Le=0;Le0&&(N=j.size),j.lineSpacing&&j.lineSpacing>0&&(H=j.lineSpacing),j.styletags&&j.styletags.breaklines&&(ie.breaklines=!!j.styletags.breaklines),j.styletags&&j.styletags.bolds&&(ie.bolds=!!j.styletags.bolds),j.styletags&&j.styletags.italics&&(ie.italics=!!j.styletags.italics),j.styletags&&j.styletags.subscripts&&(ie.subscripts=!!j.styletags.subscripts),j.styletags&&j.styletags.superscripts&&(ie.superscripts=!!j.styletags.superscripts)),Z.font=[j.fontStyle,j.fontVariant,j.fontWeight,N+"px",j.font].filter(function(_e){return _e}).join(" "),Z.textAlign="start",Z.textBaseline="alphabetic",Z.direction="ltr";var ae=g(G,Z,V,N,H,ie);return z(ae,j,N)}},1538:function(i){(function(){"use strict";if(typeof ses!="undefined"&&ses.ok&&!ses.ok())return;function o(E){E.permitHostObjects___&&E.permitHostObjects___(o)}typeof ses!="undefined"&&(ses.weakMapPermitHostObjects=o);var s=!1;if(typeof WeakMap=="function"){var l=WeakMap;if(!(typeof navigator!="undefined"&&/Firefox/.test(navigator.userAgent))){var u=new l,c=Object.freeze({});if(u.set(c,1),u.get(c)!==1)s=!0;else{i.exports=WeakMap;return}}}var f=Object.prototype.hasOwnProperty,h=Object.getOwnPropertyNames,d=Object.defineProperty,v=Object.isExtensible,m="weakmap:",b=m+"ident:"+Math.random()+"___";if(typeof crypto!="undefined"&&typeof crypto.getRandomValues=="function"&&typeof ArrayBuffer=="function"&&typeof Uint8Array=="function"){var p=new ArrayBuffer(25),k=new Uint8Array(p);crypto.getRandomValues(k),b=m+"rand:"+Array.prototype.map.call(k,function(E){return(E%36).toString(36)}).join("")+"___"}function M(E){return!(E.substr(0,m.length)==m&&E.substr(E.length-3)==="___")}if(d(Object,"getOwnPropertyNames",{value:function(z){return h(z).filter(M)}}),"getPropertyNames"in Object){var T=Object.getPropertyNames;d(Object,"getPropertyNames",{value:function(z){return T(z).filter(M)}})}function L(E){if(E!==Object(E))throw new TypeError("Not an object: "+E);var z=E[b];if(z&&z.key===E)return z;if(v(E)){z={key:E};try{return d(E,b,{value:z,writable:!1,enumerable:!1,configurable:!1}),z}catch(q){return}}}(function(){var E=Object.freeze;d(Object,"freeze",{value:function(G){return L(G),E(G)}});var z=Object.seal;d(Object,"seal",{value:function(G){return L(G),z(G)}});var q=Object.preventExtensions;d(Object,"preventExtensions",{value:function(G){return L(G),q(G)}})})();function x(E){return E.prototype=null,Object.freeze(E)}var C=!1;function S(){!C&&typeof console!="undefined"&&(C=!0,console.warn("WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future."))}var g=0,P=function(){this instanceof P||S();var E=[],z=[],q=g++;function V(N,H){var ie,ae=L(N);return ae?q in ae?ae[q]:H:(ie=E.indexOf(N),ie>=0?z[ie]:H)}function G(N){var H=L(N);return H?q in H:E.indexOf(N)>=0}function Z(N,H){var ie,ae=L(N);return ae?ae[q]=H:(ie=E.indexOf(N),ie>=0?z[ie]=H:(ie=E.length,z[ie]=H,E[ie]=N)),this}function j(N){var H=L(N),ie,ae;return H?q in H&&delete H[q]:(ie=E.indexOf(N),ie<0?!1:(ae=E.length-1,E[ie]=void 0,z[ie]=z[ae],E[ie]=E[ae],E.length=ae,z.length=ae,!0))}return Object.create(P.prototype,{get___:{value:x(V)},has___:{value:x(G)},set___:{value:x(Z)},delete___:{value:x(j)}})};P.prototype=Object.create(Object.prototype,{get:{value:function(z,q){return this.get___(z,q)},writable:!0,configurable:!0},has:{value:function(z){return this.has___(z)},writable:!0,configurable:!0},set:{value:function(z,q){return this.set___(z,q)},writable:!0,configurable:!0},delete:{value:function(z){return this.delete___(z)},writable:!0,configurable:!0}}),typeof l=="function"?function(){s&&typeof Proxy!="undefined"&&(Proxy=void 0);function E(){this instanceof P||S();var z=new l,q=void 0,V=!1;function G(H,ie){return q?z.has(H)?z.get(H):q.get___(H,ie):z.get(H,ie)}function Z(H){return z.has(H)||(q?q.has___(H):!1)}var j;s?j=function(H,ie){return z.set(H,ie),z.has(H)||(q||(q=new P),q.set(H,ie)),this}:j=function(H,ie){if(V)try{z.set(H,ie)}catch(ae){q||(q=new P),q.set___(H,ie)}else z.set(H,ie);return this};function N(H){var ie=!!z.delete(H);return q&&q.delete___(H)||ie}return Object.create(P.prototype,{get___:{value:x(G)},has___:{value:x(Z)},set___:{value:x(j)},delete___:{value:x(N)},permitHostObjects___:{value:x(function(H){if(H===o)V=!0;else throw new Error("bogus call to permitHostObjects___")})}})}E.prototype=P.prototype,i.exports=E,Object.defineProperty(WeakMap.prototype,"constructor",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(typeof Proxy!="undefined"&&(Proxy=void 0),i.exports=P)})()},236:function(i,a,o){var s=o(8284);i.exports=l;function l(){var u={};return function(c){if((typeof c!="object"||c===null)&&typeof c!="function")throw new Error("Weakmap-shim: Key must be object");var f=c.valueOf(u);return f&&f.identity===u?f:s(c,u)}}},8284:function(i){i.exports=a;function a(o,s){var l={identity:s},u=o.valueOf;return Object.defineProperty(o,"valueOf",{value:function(c){return c!==s?u.apply(this,arguments):l},writable:!0}),l}},606:function(i,a,o){var s=o(236);i.exports=l;function l(){var u=s();return{get:function(c,f){var h=u(c);return h.hasOwnProperty("value")?h.value:f},set:function(c,f){return u(c).value=f,this},has:function(c){return"value"in u(c)},delete:function(c){return delete u(c).value}}}},3349:function(i){"use strict";function a(){return function(f,h,d,v,m,b){var p=f[0],k=d[0],M=[0],T=k;v|=0;var L=0,x=k;for(L=0;L=0!=S>=0&&m.push(M[0]+.5+.5*(C+S)/(C-S))}v+=x,++M[0]}}}function o(){return a()}var s=o;function l(f){var h={};return function(v,m,b){var p=v.dtype,k=v.order,M=[p,k.join()].join(),T=h[M];return T||(h[M]=T=f([p,k])),T(v.shape.slice(0),v.data,v.stride,v.offset|0,m,b)}}function u(f){return l(s.bind(void 0,f))}function c(f){return u({funcName:f.funcName})}i.exports=c({funcName:"zeroCrossings"})},781:function(i,a,o){"use strict";i.exports=l;var s=o(3349);function l(u,c){var f=[];return c=+c||0,s(u.hi(u.shape[0]-1),f,c),f}},7790:function(){}},t={};function r(i){var a=t[i];if(a!==void 0)return a.exports;var o=t[i]={id:i,loaded:!1,exports:{}};return e[i].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}(function(){r.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(i){if(typeof window=="object")return window}}()})(),function(){r.nmd=function(i){return i.paths=[],i.children||(i.children=[]),i}}();var n=r(1964);MPe.exports=n})()});var AX=ye((cgr,EPe)=>{"use strict";EPe.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var PPe=ye((fgr,LPe)=>{"use strict";var kPe=AX();LPe.exports=gIt;var CPe={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function gIt(e){var t,r=[],n=1,i;if(typeof e=="string")if(e=e.toLowerCase(),kPe[e])r=kPe[e].slice(),i="rgb";else if(e==="transparent")n=0,i="rgb",r=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(e)){var a=e.slice(1),o=a.length,s=o<=4;n=1,s?(r=[parseInt(a[0]+a[0],16),parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16)],o===4&&(n=parseInt(a[3]+a[3],16)/255)):(r=[parseInt(a[0]+a[1],16),parseInt(a[2]+a[3],16),parseInt(a[4]+a[5],16)],o===8&&(n=parseInt(a[6]+a[7],16)/255)),r[0]||(r[0]=0),r[1]||(r[1]=0),r[2]||(r[2]=0),i="rgb"}else if(t=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(e)){var l=t[1],u=l==="rgb",a=l.replace(/a$/,"");i=a;var o=a==="cmyk"?4:a==="gray"?1:3;r=t[2].trim().split(/\s*[,\/]\s*|\s+/).map(function(h,d){if(/%$/.test(h))return d===o?parseFloat(h)/100:a==="rgb"?parseFloat(h)*255/100:parseFloat(h);if(a[d]==="h"){if(/deg$/.test(h))return parseFloat(h);if(CPe[h]!==void 0)return CPe[h]}return parseFloat(h)}),l===a&&r.push(1),n=u||r[o]===void 0?1:r[o],r=r.slice(0,o)}else e.length>10&&/[0-9](?:\s|\/)/.test(e)&&(r=e.match(/([0-9]+)/g).map(function(c){return parseFloat(c)}),i=e.match(/([a-z])/ig).join("").toLowerCase());else isNaN(e)?Array.isArray(e)||e.length?(r=[e[0],e[1],e[2]],i="rgb",n=e.length===4?e[3]:1):e instanceof Object&&(e.r!=null||e.red!=null||e.R!=null?(i="rgb",r=[e.r||e.red||e.R||0,e.g||e.green||e.G||0,e.b||e.blue||e.B||0]):(i="hsl",r=[e.h||e.hue||e.H||0,e.s||e.saturation||e.S||0,e.l||e.lightness||e.L||e.b||e.brightness]),n=e.a||e.alpha||e.opacity||1,e.opacity!=null&&(n/=100)):(i="rgb",r=[e>>>16,(e&65280)>>>8,e&255]);return{space:i,values:r,alpha:n}}});var RPe=ye((hgr,IPe)=>{"use strict";var mIt=PPe();IPe.exports=function(t){Array.isArray(t)&&t.raw&&(t=String.raw.apply(null,arguments));var r,n,i,a=mIt(t);if(!a.space)return[];var o=[0,0,0],s=a.space[0]==="h"?[360,100,100]:[255,255,255];return r=Array(3),r[0]=Math.min(Math.max(a.values[0],o[0]),s[0]),r[1]=Math.min(Math.max(a.values[1],o[1]),s[1]),r[2]=Math.min(Math.max(a.values[2],o[2]),s[2]),a.space[0]==="h"&&(r=yIt(r)),r.push(Math.min(Math.max(a.alpha,0),1)),r};function yIt(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100,i,a,o,s,l,u=0;if(r===0)return l=n*255,[l,l,l];for(a=n<.5?n*(1+r):n+r-n*r,i=2*n-a,s=[0,0,0];u<3;)o=t+1/3*-(u-1),o<0?o++:o>1&&o--,l=6*o<1?i+(a-i)*6*o:2*o<1?a:3*o<2?i+(a-i)*(2/3-o)*6:i,s[u++]=l*255;return s}});var ik=ye((dgr,DPe)=>{DPe.exports=_It;function _It(e,t,r){return tr?r:e:et?t:e}});var tF=ye((vgr,FPe)=>{FPe.exports=function(e){switch(e){case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"uint8":return Uint8Array;case"uint16":return Uint16Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;case"array":return Array;case"uint8_clamped":return Uint8ClampedArray}}});var sx=ye((pgr,zPe)=>{"use strict";var xIt=RPe(),rF=ik(),bIt=tF();zPe.exports=function(t,r){(r==="float"||!r)&&(r="array"),r==="uint"&&(r="uint8"),r==="uint_clamped"&&(r="uint8_clamped");var n=bIt(r),i=new n(4),a=r!=="uint8"&&r!=="uint8_clamped";return(!t.length||typeof t=="string")&&(t=xIt(t),t[0]/=255,t[1]/=255,t[2]/=255),wIt(t)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3]!=null?t[3]:255,a&&(i[0]/=255,i[1]/=255,i[2]/=255,i[3]/=255),i):(a?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3]!=null?t[3]:1):(i[0]=rF(Math.floor(t[0]*255),0,255),i[1]=rF(Math.floor(t[1]*255),0,255),i[2]=rF(Math.floor(t[2]*255),0,255),i[3]=t[3]==null?255:rF(Math.floor(t[3]*255),0,255)),i)};function wIt(e){return!!(e instanceof Uint8Array||e instanceof Uint8ClampedArray||Array.isArray(e)&&(e[0]>1||e[0]===0)&&(e[1]>1||e[1]===0)&&(e[2]>1||e[2]===0)&&(!e[3]||e[3]>1))}});var n1=ye((ggr,qPe)=>{"use strict";var TIt=sx();function AIt(e){return e?TIt(e):[0,0,0,1]}qPe.exports=AIt});var a1=ye((mgr,HPe)=>{"use strict";var VPe=Eo(),SIt=fd(),iF=sx(),nF=tc(),MIt=Ih().defaultLine,OPe=Yd().isArrayOrTypedArray,SX=iF(MIt),GPe=1;function BPe(e,t){var r=e;return r[3]*=t,r}function NPe(e){if(VPe(e))return SX;var t=iF(e);return t.length?t:SX}function UPe(e){return VPe(e)?e:GPe}function EIt(e,t,r){var n=e.color;n&&n._inputArray&&(n=n._inputArray);var i=OPe(n),a=OPe(t),o=nF.extractOpts(e),s=[],l,u,c,f,h;if(o.colorscale!==void 0?l=nF.makeColorScaleFuncFromTrace(e):l=NPe,i?u=function(v,m){return v[m]===void 0?SX:iF(l(v[m]))}:u=NPe,a?c=function(v,m){return v[m]===void 0?GPe:UPe(v[m])}:c=UPe,i||a)for(var d=0;d{"use strict";jPe.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}});var aF=ye((_gr,WPe)=>{"use strict";WPe.exports={circle:"\u25CF","circle-open":"\u25CB",square:"\u25A0","square-open":"\u25A1",diamond:"\u25C6","diamond-open":"\u25C7",cross:"+",x:"\u274C"}});var ZPe=ye((xgr,XPe)=>{"use strict";var CIt=Oa();function EX(e,t,r,n){if(!t||!t.visible)return null;for(var i=CIt.getComponentMethod("errorbars","makeComputeError")(t),a=new Array(e.length),o=0;o0){var f=n.c2l(u);n._lowerLogErrorBound||(n._lowerLogErrorBound=f),n._lowerErrorBound=Math.min(n._lowerLogErrorBound,f)}}else a[o]=[-s[0]*r,s[1]*r]}return a}function LIt(e){for(var t=0;t{"use strict";var IIt=qd().gl_line3d,YPe=qd().gl_scatter3d,RIt=qd().gl_error3d,DIt=qd().gl_mesh3d,FIt=qd().delaunay_triangulate,o1=Pr(),eIe=n1(),oF=a1().formatColor,zIt=B3(),kX=MX(),qIt=aF(),OIt=ho(),BIt=ip().appendArrayPointValue,NIt=ZPe();function tIe(e,t){this.scene=e,this.uid=t,this.linePlot=null,this.scatterPlot=null,this.errorBars=null,this.textMarkers=null,this.delaunayMesh=null,this.color=null,this.mode="",this.dataPoints=[],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.textLabels=null,this.data=null}var LX=tIe.prototype;LX.handlePick=function(e){if(e.object&&(e.object===this.linePlot||e.object===this.delaunayMesh||e.object===this.textMarkers||e.object===this.scatterPlot)){var t=e.index=e.data.index;return e.object.highlight&&e.object.highlight(null),this.scatterPlot&&(e.object=this.scatterPlot,this.scatterPlot.highlight(e.data)),e.textLabel="",this.textLabels&&(o1.isArrayOrTypedArray(this.textLabels)?(this.textLabels[t]||this.textLabels[t]===0)&&(e.textLabel=this.textLabels[t]):e.textLabel=this.textLabels),e.traceCoordinate=[this.data.x[t],this.data.y[t],this.data.z[t]],!0}};function UIt(e,t,r){var n=(r+1)%3,i=(r+2)%3,a=[],o=[],s;for(s=0;s-1?-1:e.indexOf("right")>-1?1:0}function JPe(e){return e==null?0:e.indexOf("top")>-1?-1:e.indexOf("bottom")>-1?1:0}function GIt(e){var t=0,r=0,n=[t,r];if(Array.isArray(e))for(var i=0;i=0){var u=UIt(s.position,s.delaunayColor,s.delaunayAxis);u.opacity=e.opacity,this.delaunayMesh?this.delaunayMesh.update(u):(u.gl=t,this.delaunayMesh=DIt(u),this.delaunayMesh._trace=this,this.scene.glplot.add(this.delaunayMesh))}else this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose(),this.delaunayMesh=null)};LX.dispose=function(){this.linePlot&&(this.scene.glplot.remove(this.linePlot),this.linePlot.dispose()),this.scatterPlot&&(this.scene.glplot.remove(this.scatterPlot),this.scatterPlot.dispose()),this.errorBars&&(this.scene.glplot.remove(this.errorBars),this.errorBars.dispose()),this.textMarkers&&(this.scene.glplot.remove(this.textMarkers),this.textMarkers.dispose()),this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose())};function XIt(e,t){var r=new tIe(e,t.uid);return r.update(t),r}rIe.exports=XIt});var FX=ye((wgr,sIe)=>{"use strict";var s1=pf(),ZIt=ec(),DX=Tu(),PX=vf().axisHoverFormat,{hovertemplateAttrs:YIt,texttemplateAttrs:KIt,templatefallbackAttrs:nIe}=Ll(),aIe=Gl(),JIt=MX(),$It=aF(),$g=Ao().extendFlat,QIt=mc().overrideAll,oIe=t_(),e8t=s1.line,$2=s1.marker,t8t=$2.line,r8t=$g({width:e8t.width,dash:{valType:"enumerated",values:oIe(JIt),dflt:"solid"}},DX("line"));function IX(e){return{show:{valType:"boolean",dflt:!1},opacity:{valType:"number",min:0,max:1,dflt:1},scale:{valType:"number",min:0,max:10,dflt:2/3}}}var RX=sIe.exports=QIt({x:s1.x,y:s1.y,z:{valType:"data_array"},text:$g({},s1.text,{}),texttemplate:KIt(),texttemplatefallback:nIe({editType:"calc"}),hovertext:$g({},s1.hovertext,{}),hovertemplate:YIt(),hovertemplatefallback:nIe(),xhoverformat:PX("x"),yhoverformat:PX("y"),zhoverformat:PX("z"),mode:$g({},s1.mode,{dflt:"lines+markers"}),surfaceaxis:{valType:"enumerated",values:[-1,0,1,2],dflt:-1},surfacecolor:{valType:"color"},projection:{x:IX("x"),y:IX("y"),z:IX("z")},connectgaps:s1.connectgaps,line:r8t,marker:$g({symbol:{valType:"enumerated",values:oIe($It),dflt:"circle",arrayOk:!0},size:$g({},$2.size,{dflt:8}),sizeref:$2.sizeref,sizemin:$2.sizemin,sizemode:$2.sizemode,opacity:$g({},$2.opacity,{arrayOk:!1}),colorbar:$2.colorbar,line:$g({width:$g({},t8t.width,{arrayOk:!1})},DX("marker.line"))},DX("marker")),textposition:$g({},s1.textposition,{dflt:"top center"}),textfont:ZIt({noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,editType:"calc",colorEditType:"style",arrayOk:!0,variantValues:["normal","small-caps"]}),opacity:aIe.opacity,hoverinfo:$g({},aIe.hoverinfo)},"calc","nested");RX.x.editType=RX.y.editType=RX.z.editType="calc+clearAxisTypes"});var cIe=ye((Tgr,uIe)=>{"use strict";var lIe=Oa(),i8t=Pr(),zX=Ru(),n8t=$p(),a8t=D0(),o8t=F0(),s8t=FX();uIe.exports=function(t,r,n,i){function a(d,v){return i8t.coerce(t,r,s8t,d,v)}var o=l8t(t,r,a,i);if(!o){r.visible=!1;return}a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),a("mode"),zX.hasMarkers(r)&&n8t(t,r,n,i,a,{noAngle:!0,noLineDash:!0,noSelect:!0}),zX.hasLines(r)&&(a("connectgaps"),a8t(t,r,n,i,a)),zX.hasText(r)&&(a("texttemplate"),a("texttemplatefallback"),o8t(t,r,i,a,{noSelect:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}));var s=(r.line||{}).color,l=(r.marker||{}).color;a("surfaceaxis")>=0&&a("surfacecolor",s||l);for(var u=["x","y","z"],c=0;c<3;++c){var f="projection."+u[c];a(f+".show")&&(a(f+".opacity"),a(f+".scale"))}var h=lIe.getComponentMethod("errorbars","supplyDefaults");h(t,r,s||l||n,{axis:"z"}),h(t,r,s||l||n,{axis:"y",inherit:"z"}),h(t,r,s||l||n,{axis:"x",inherit:"z"})};function l8t(e,t,r,n){var i=0,a=r("x"),o=r("y"),s=r("z"),l=lIe.getComponentMethod("calendars","handleTraceDefaults");return l(e,t,["x","y","z"],n),a&&o&&s&&(i=Math.min(a.length,o.length,s.length),t._length=t._xlength=t._ylength=t._zlength=i),i}});var hIe=ye((Agr,fIe)=>{"use strict";var u8t=Dm(),c8t=z0();fIe.exports=function(t,r){var n=[{x:!1,y:!1,trace:r,t:{}}];return u8t(n,r),c8t(t,r),n}});var vIe=ye((Sgr,dIe)=>{dIe.exports=f8t;function f8t(e,t){if(typeof e!="string")throw new TypeError("must specify type string");if(t=t||{},typeof document=="undefined"&&!t.canvas)return null;var r=t.canvas||document.createElement("canvas");typeof t.width=="number"&&(r.width=t.width),typeof t.height=="number"&&(r.height=t.height);var n=t,i;try{var a=[e];e.indexOf("webgl")===0&&a.push("experimental-"+e);for(var o=0;o{var h8t=vIe();pIe.exports=function(t){return h8t("webgl",t)}});var qX=ye((Egr,yIe)=>{"use strict";var mIe=ka(),d8t=function(){};yIe.exports=function(t){for(var r in t)typeof t[r]=="function"&&(t[r]=d8t);t.destroy=function(){t.container.parentNode.removeChild(t.container)};var n=document.createElement("div");n.className="no-webgl",n.style.cursor="pointer",n.style.fontSize="24px",n.style.color=mIe.defaults[0],n.style.position="absolute",n.style.left=n.style.top="0px",n.style.width=n.style.height="100%",n.style["background-color"]=mIe.lightLine,n.style["z-index"]=30;var i=document.createElement("p");return i.textContent="WebGL is not supported by your browser - visit https://get.webgl.org for more info",i.style.position="relative",i.style.top="50%",i.style.left="50%",i.style.height="30%",i.style.width="50%",i.style.margin="-15% 0 0 -25%",n.appendChild(i),t.container.appendChild(n),t.container.style.background="#FFFFFF",t.container.onclick=function(){window.open("https://get.webgl.org")},!1}});var bIe=ye((kgr,xIe)=>{"use strict";var Q2=n1(),v8t=Pr(),p8t=["xaxis","yaxis","zaxis"];function _Ie(){this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickSize=[12,12,12],this.tickFontWeight=["normal","normal","normal","normal"],this.tickFontStyle=["normal","normal","normal","normal"],this.tickFontVariant=["normal","normal","normal","normal"],this.tickAngle=[0,0,0],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[18,18,18],this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont=["Open Sans","Open Sans","Open Sans"],this.labelSize=[20,20,20],this.labelFontWeight=["normal","normal","normal","normal"],this.labelFontStyle=["normal","normal","normal","normal"],this.labelFontVariant=["normal","normal","normal","normal"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[30,30,30],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[10,10,10],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!0,!0,!0],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._defaultTickPad=this.tickPad.slice(),this._defaultLabelPad=this.labelPad.slice(),this._defaultLineTickLength=this.lineTickLength.slice()}var g8t=_Ie.prototype;g8t.merge=function(e,t){for(var r=this,n=0;n<3;++n){var i=t[p8t[n]];if(!i.visible){r.tickEnable[n]=!1,r.labelEnable[n]=!1,r.lineEnable[n]=!1,r.lineTickEnable[n]=!1,r.gridEnable[n]=!1,r.zeroEnable[n]=!1,r.backgroundEnable[n]=!1;continue}r.labels[n]=e._meta?v8t.templateString(i.title.text,e._meta):i.title.text,"font"in i.title&&(i.title.font.color&&(r.labelColor[n]=Q2(i.title.font.color)),i.title.font.family&&(r.labelFont[n]=i.title.font.family),i.title.font.size&&(r.labelSize[n]=i.title.font.size),i.title.font.weight&&(r.labelFontWeight[n]=i.title.font.weight),i.title.font.style&&(r.labelFontStyle[n]=i.title.font.style),i.title.font.variant&&(r.labelFontVariant[n]=i.title.font.variant)),"showline"in i&&(r.lineEnable[n]=i.showline),"linecolor"in i&&(r.lineColor[n]=Q2(i.linecolor)),"linewidth"in i&&(r.lineWidth[n]=i.linewidth),"showgrid"in i&&(r.gridEnable[n]=i.showgrid),"gridcolor"in i&&(r.gridColor[n]=Q2(i.gridcolor)),"gridwidth"in i&&(r.gridWidth[n]=i.gridwidth),i.type==="log"?r.zeroEnable[n]=!1:"zeroline"in i&&(r.zeroEnable[n]=i.zeroline),"zerolinecolor"in i&&(r.zeroLineColor[n]=Q2(i.zerolinecolor)),"zerolinewidth"in i&&(r.zeroLineWidth[n]=i.zerolinewidth),"ticks"in i&&i.ticks?r.lineTickEnable[n]=!0:r.lineTickEnable[n]=!1,"ticklen"in i&&(r.lineTickLength[n]=r._defaultLineTickLength[n]=i.ticklen),"tickcolor"in i&&(r.lineTickColor[n]=Q2(i.tickcolor)),"tickwidth"in i&&(r.lineTickWidth[n]=i.tickwidth),"tickangle"in i&&(r.tickAngle[n]=i.tickangle==="auto"?-3600:Math.PI*-i.tickangle/180),"showticklabels"in i&&(r.tickEnable[n]=i.showticklabels),"tickfont"in i&&(i.tickfont.color&&(r.tickColor[n]=Q2(i.tickfont.color)),i.tickfont.family&&(r.tickFont[n]=i.tickfont.family),i.tickfont.size&&(r.tickSize[n]=i.tickfont.size),i.tickfont.weight&&(r.tickFontWeight[n]=i.tickfont.weight),i.tickfont.style&&(r.tickFontStyle[n]=i.tickfont.style),i.tickfont.variant&&(r.tickFontVariant[n]=i.tickfont.variant)),"mirror"in i?["ticks","all","allticks"].indexOf(i.mirror)!==-1?(r.lineTickMirror[n]=!0,r.lineMirror[n]=!0):i.mirror===!0?(r.lineTickMirror[n]=!1,r.lineMirror[n]=!0):(r.lineTickMirror[n]=!1,r.lineMirror[n]=!1):r.lineMirror[n]=!1,"showbackground"in i&&i.showbackground!==!1?(r.backgroundEnable[n]=!0,r.backgroundColor[n]=Q2(i.backgroundcolor)):r.backgroundEnable[n]=!1}};function m8t(e,t){var r=new _Ie;return r.merge(e,t),r}xIe.exports=m8t});var AIe=ye((Cgr,TIe)=>{"use strict";var y8t=n1(),_8t=["xaxis","yaxis","zaxis"];function wIe(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}var x8t=wIe.prototype;x8t.merge=function(e){for(var t=0;t<3;++t){var r=e[_8t[t]];if(!r.visible){this.enabled[t]=!1,this.drawSides[t]=!1;continue}this.enabled[t]=r.showspikes,this.colors[t]=y8t(r.spikecolor),this.drawSides[t]=r.spikesides,this.lineWidth[t]=r.spikethickness}};function b8t(e){var t=new wIe;return t.merge(e),t}TIe.exports=b8t});var EIe=ye((Lgr,MIe)=>{"use strict";MIe.exports=M8t;var SIe=ho(),w8t=Pr(),T8t=["xaxis","yaxis","zaxis"],A8t=[0,0,0];function S8t(e){for(var t=new Array(3),r=0;r<3;++r){for(var n=e[r],i=new Array(n.length),a=0;a/g," "));i[a]=u,o.tickmode=s}}t.ticks=i;for(var a=0;a<3;++a){A8t[a]=.5*(e.glplot.bounds[0][a]+e.glplot.bounds[1][a]);for(var c=0;c<2;++c)t.bounds[c][a]=e.glplot.bounds[c][a]}e.contourLevels=S8t(i)}});var DIe=ye((Pgr,RIe)=>{"use strict";var LIe=qd().gl_plot3d,E8t=LIe.createCamera,kIe=LIe.createScene,k8t=gIe(),C8t=VL(),uF=Oa(),cp=Pr(),lF=cp.preserveDrawingBuffer(),cF=ho(),Qg=ef(),L8t=n1(),P8t=qX(),I8t=YU(),R8t=bIe(),D8t=AIe(),F8t=EIe(),z8t=Mg().applyAutorangeOptions,nk,sF,PIe=!1;function IIe(e,t){var r=document.createElement("div"),n=e.container;this.graphDiv=e.graphDiv;var i=document.createElementNS("http://www.w3.org/2000/svg","svg");i.style.position="absolute",i.style.top=i.style.left="0px",i.style.width=i.style.height="100%",i.style["z-index"]=20,i.style["pointer-events"]="none",r.appendChild(i),this.svgContainer=i,r.id=e.id,r.style.position="absolute",r.style.top=r.style.left="0px",r.style.width=r.style.height="100%",n.appendChild(r),this.fullLayout=t,this.id=e.id||"scene",this.fullSceneLayout=t[this.id],this.plotArgs=[[],{},{}],this.axesOptions=R8t(t,t[this.id]),this.spikeOptions=D8t(t[this.id]),this.container=r,this.staticMode=!!e.staticPlot,this.pixelRatio=this.pixelRatio||e.plotGlPixelRatio||2,this.dataScale=[1,1,1],this.contourLevels=[[],[],[]],this.convertAnnotations=uF.getComponentMethod("annotations3d","convert"),this.drawAnnotations=uF.getComponentMethod("annotations3d","draw"),this.initializeGLPlot()}var Sv=IIe.prototype;Sv.prepareOptions=function(){var e=this,t={canvas:e.canvas,gl:e.gl,glOptions:{preserveDrawingBuffer:lF,premultipliedAlpha:!0,antialias:!0},container:e.container,axes:e.axesOptions,spikes:e.spikeOptions,pickRadius:10,snapToData:!0,autoScale:!0,autoBounds:!1,cameraObject:e.camera,pixelRatio:e.pixelRatio};if(e.staticMode){if(!sF&&(nk=document.createElement("canvas"),sF=k8t({canvas:nk,preserveDrawingBuffer:!0,premultipliedAlpha:!0,antialias:!0}),!sF))throw new Error("error creating static canvas/context for image server");t.gl=sF,t.canvas=nk}return t};var CIe=!0;Sv.tryCreatePlot=function(){var e=this,t=e.prepareOptions(),r=!0;try{e.glplot=kIe(t)}catch(n){if(e.staticMode||!CIe||lF)r=!1;else{cp.warn(["webgl setup failed possibly due to","false preserveDrawingBuffer config.","The mobile/tablet device may not be detected by is-mobile module.","Enabling preserveDrawingBuffer in second attempt to create webgl scene..."].join(" "));try{lF=t.glOptions.preserveDrawingBuffer=!0,e.glplot=kIe(t)}catch(i){lF=t.glOptions.preserveDrawingBuffer=!1,r=!1}}}return CIe=!1,r};Sv.initializeGLCamera=function(){var e=this,t=e.fullSceneLayout.camera,r=t.projection.type==="orthographic";e.camera=E8t(e.container,{center:[t.center.x,t.center.y,t.center.z],eye:[t.eye.x,t.eye.y,t.eye.z],up:[t.up.x,t.up.y,t.up.z],_ortho:r,zoomMin:.01,zoomMax:100,mode:"orbit"})};Sv.initializeGLPlot=function(){var e=this;e.initializeGLCamera();var t=e.tryCreatePlot();if(!t)return P8t(e);e.traces={},e.make4thDimension();var r=e.graphDiv,n=r.layout,i=function(){var o={};return e.isCameraChanged(n)&&(o[e.id+".camera"]=e.getCamera()),e.isAspectChanged(n)&&(o[e.id+".aspectratio"]=e.glplot.getAspectratio(),n[e.id].aspectmode!=="manual"&&(e.fullSceneLayout.aspectmode=n[e.id].aspectmode=o[e.id+".aspectmode"]="manual")),o},a=function(o){if(o.fullSceneLayout.dragmode!==!1){var s=i();o.saveLayout(n),o.graphDiv.emit("plotly_relayout",s)}};return e.glplot.canvas&&(e.glplot.canvas.addEventListener("mouseup",function(){a(e)}),e.glplot.canvas.addEventListener("touchstart",function(){PIe=!0}),e.glplot.canvas.addEventListener("wheel",function(o){if(r._context._scrollZoom.gl3d){if(e.camera._ortho){var s=o.deltaX>o.deltaY?1.1:.9090909090909091,l=e.glplot.getAspectratio();e.glplot.setAspectratio({x:s*l.x,y:s*l.y,z:s*l.z})}a(e)}},C8t?{passive:!1}:!1),e.glplot.canvas.addEventListener("mousemove",function(){if(e.fullSceneLayout.dragmode!==!1&&e.camera.mouseListener.buttons!==0){var o=i();e.graphDiv.emit("plotly_relayouting",o)}}),e.staticMode||e.glplot.canvas.addEventListener("webglcontextlost",function(o){r&&r.emit&&r.emit("plotly_webglcontextlost",{event:o,layer:e.id})},!1)),e.glplot.oncontextloss=function(){e.recoverContext()},e.glplot.onrender=function(){e.render()},!0};Sv.render=function(){var e=this,t=e.graphDiv,r,n=e.svgContainer,i=e.container.getBoundingClientRect();t._fullLayout._calcInverseTransform(t);var a=t._fullLayout._invScaleX,o=t._fullLayout._invScaleY,s=i.width*a,l=i.height*o;n.setAttributeNS(null,"viewBox","0 0 "+s+" "+l),n.setAttributeNS(null,"width",s),n.setAttributeNS(null,"height",l),F8t(e),e.glplot.axes.update(e.axesOptions);for(var u=Object.keys(e.traces),c=null,f=e.glplot.selection,h=0;h")):r.type==="isosurface"||r.type==="volume"?(p.valueLabel=cF.hoverLabelText(e._mockAxis,e._mockAxis.d2l(f.traceCoordinate[3]),r.valuehoverformat),x.push("value: "+p.valueLabel),f.textLabel&&x.push(f.textLabel),L=x.join("
")):L=f.textLabel;var C={x:f.traceCoordinate[0],y:f.traceCoordinate[1],z:f.traceCoordinate[2],data:m._input,fullData:m,curveNumber:m.index,pointNumber:b};Qg.appendArrayPointValue(C,m,b),r._module.eventData&&(C=m._module.eventData(C,f,m,{},b));var S={points:[C]};if(e.fullSceneLayout.hovermode){var g=[];Qg.loneHover({trace:m,x:(.5+.5*v[0]/v[3])*s,y:(.5-.5*v[1]/v[3])*l,xLabel:p.xLabel,yLabel:p.yLabel,zLabel:p.zLabel,text:L,name:c.name,color:Qg.castHoverOption(m,b,"bgcolor")||c.color,borderColor:Qg.castHoverOption(m,b,"bordercolor"),fontFamily:Qg.castHoverOption(m,b,"font.family"),fontSize:Qg.castHoverOption(m,b,"font.size"),fontColor:Qg.castHoverOption(m,b,"font.color"),nameLength:Qg.castHoverOption(m,b,"namelength"),textAlign:Qg.castHoverOption(m,b,"align"),hovertemplate:cp.castOption(m,b,"hovertemplate"),hovertemplateLabels:cp.extendFlat({},C,p),eventData:[C]},{container:n,gd:t,inOut_bbox:g}),C.bbox=g[0]}f.distance<5&&(f.buttons||PIe)?t.emit("plotly_click",S):t.emit("plotly_hover",S),this.oldEventData=S}else Qg.loneUnhover(n),this.oldEventData&&t.emit("plotly_unhover",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)};Sv.recoverContext=function(){var e=this;e.glplot.dispose();var t=function(){if(e.glplot.gl.isContextLost()){requestAnimationFrame(t);return}if(!e.initializeGLPlot()){cp.error("Catastrophic and unrecoverable WebGL error. Context lost.");return}e.plot.apply(e,e.plotArgs)};requestAnimationFrame(t)};var ak=["xaxis","yaxis","zaxis"];function q8t(e,t,r){for(var n=e.fullSceneLayout,i=0;i<3;i++){var a=ak[i],o=a.charAt(0),s=n[a],l=t[o],u=t[o+"calendar"],c=t["_"+o+"length"];if(!cp.isArrayOrTypedArray(l))r[0][i]=Math.min(r[0][i],0),r[1][i]=Math.max(r[1][i],c-1);else for(var f,h=0;h<(c||l.length);h++)if(cp.isArrayOrTypedArray(l[h]))for(var d=0;dm[1][o])m[0][o]=-1,m[1][o]=1;else{var E=m[1][o]-m[0][o];m[0][o]-=E/32,m[1][o]+=E/32}if(k=[m[0][o],m[1][o]],k=z8t(k,l),m[0][o]=k[0],m[1][o]=k[1],l.isReversed()){var z=m[0][o];m[0][o]=m[1][o],m[1][o]=z}}else k=l.range,m[0][o]=l.r2l(k[0]),m[1][o]=l.r2l(k[1]);m[0][o]===m[1][o]&&(m[0][o]-=1,m[1][o]+=1),b[o]=m[1][o]-m[0][o],l.range=[m[0][o],m[1][o]],l.limitRange(),n.glplot.setBounds(o,{min:l.range[0]*d[o],max:l.range[1]*d[o]})}var q,V=c.aspectmode;if(V==="cube")q=[1,1,1];else if(V==="manual"){var G=c.aspectratio;q=[G.x,G.y,G.z]}else if(V==="auto"||V==="data"){var Z=[1,1,1];for(o=0;o<3;++o){l=c[ak[o]],u=l.type;var j=p[u];Z[o]=Math.pow(j.acc,1/j.count)/d[o]}V==="data"||Math.max.apply(null,Z)/Math.min.apply(null,Z)<=4?q=Z:q=[1,1,1]}else throw new Error("scene.js aspectRatio was not one of the enumerated types");c.aspectratio.x=f.aspectratio.x=q[0],c.aspectratio.y=f.aspectratio.y=q[1],c.aspectratio.z=f.aspectratio.z=q[2],n.glplot.setAspectratio(c.aspectratio),n.viewInitial.aspectratio||(n.viewInitial.aspectratio={x:c.aspectratio.x,y:c.aspectratio.y,z:c.aspectratio.z}),n.viewInitial.aspectmode||(n.viewInitial.aspectmode=c.aspectmode);var N=c.domain||null,H=t._size||null;if(N&&H){var ie=n.container.style;ie.position="absolute",ie.left=H.l+N.x[0]*H.w+"px",ie.top=H.t+(1-N.y[1])*H.h+"px",ie.width=H.w*(N.x[1]-N.x[0])+"px",ie.height=H.h*(N.y[1]-N.y[0])+"px"}n.glplot.redraw()}};Sv.destroy=function(){var e=this;e.glplot&&(e.camera.mouseListener.enabled=!1,e.container.removeEventListener("wheel",e.camera.wheelListener),e.camera=null,e.glplot.dispose(),e.container.parentNode.removeChild(e.container),e.glplot=null)};function B8t(e){return[[e.eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]]}function N8t(e){return{up:{x:e.up[0],y:e.up[1],z:e.up[2]},center:{x:e.center[0],y:e.center[1],z:e.center[2]},eye:{x:e.eye[0],y:e.eye[1],z:e.eye[2]},projection:{type:e._ortho===!0?"orthographic":"perspective"}}}Sv.getCamera=function(){var e=this;return e.camera.view.recalcMatrix(e.camera.view.lastT()),N8t(e.camera)};Sv.setViewport=function(e){var t=this,r=e.camera;t.camera.lookAt.apply(this,B8t(r)),t.glplot.setAspectratio(e.aspectratio);var n=r.projection.type==="orthographic",i=t.camera._ortho;n!==i&&(t.glplot.redraw(),t.glplot.clearRGBA(),t.glplot.dispose(),t.initializeGLPlot())};Sv.isCameraChanged=function(e){var t=this,r=t.getCamera(),n=cp.nestedProperty(e,t.id+".camera"),i=n.get();function a(u,c,f,h){var d=["up","center","eye"],v=["x","y","z"];return c[d[f]]&&u[d[f]][v[h]]===c[d[f]][v[h]]}var o=!1;if(i===void 0)o=!0;else{for(var s=0;s<3;s++)for(var l=0;l<3;l++)if(!a(r,i,s,l)){o=!0;break}(!i.projection||r.projection&&r.projection.type!==i.projection.type)&&(o=!0)}return o};Sv.isAspectChanged=function(e){var t=this,r=t.glplot.getAspectratio(),n=cp.nestedProperty(e,t.id+".aspectratio"),i=n.get();return i===void 0||i.x!==r.x||i.y!==r.y||i.z!==r.z};Sv.saveLayout=function(e){var t=this,r=t.fullLayout,n,i,a,o,s,l,u=t.isCameraChanged(e),c=t.isAspectChanged(e),f=u||c;if(f){var h={};if(u&&(n=t.getCamera(),i=cp.nestedProperty(e,t.id+".camera"),a=i.get(),h[t.id+".camera"]=a),c&&(o=t.glplot.getAspectratio(),s=cp.nestedProperty(e,t.id+".aspectratio"),l=s.get(),h[t.id+".aspectratio"]=l),uF.call("_storeDirectGUIEdit",e,r._preGUI,h),u){i.set(n);var d=cp.nestedProperty(r,t.id+".camera");d.set(n)}if(c){s.set(o);var v=cp.nestedProperty(r,t.id+".aspectratio");v.set(o),t.glplot.redraw()}}return f};Sv.updateFx=function(e,t){var r=this,n=r.camera;if(n)if(e==="orbit")n.mode="orbit",n.keyBindingMode="rotate";else if(e==="turntable"){n.up=[0,0,1],n.mode="turntable",n.keyBindingMode="rotate";var i=r.graphDiv,a=i._fullLayout,o=r.fullSceneLayout.camera,s=o.up.x,l=o.up.y,u=o.up.z;if(u/Math.sqrt(s*s+l*l+u*u)<.999){var c=r.id+".camera.up",f={x:0,y:0,z:1},h={};h[c]=f;var d=i.layout;uF.call("_storeDirectGUIEdit",d,a._preGUI,h),o.up=f,cp.nestedProperty(d,c).set(f)}}else n.keyBindingMode=e;r.fullSceneLayout.hovermode=t};function U8t(e,t,r){for(var n=0,i=r-1;n0)for(var s=255/o,l=0;l<3;++l)e[a+l]=Math.min(s*e[a+l],255)}}Sv.toImage=function(e){var t=this;e||(e="png"),t.staticMode&&t.container.appendChild(nk),t.glplot.redraw();var r=t.glplot.gl,n=r.drawingBufferWidth,i=r.drawingBufferHeight;r.bindFramebuffer(r.FRAMEBUFFER,null);var a=new Uint8Array(n*i*4);r.readPixels(0,0,n,i,r.RGBA,r.UNSIGNED_BYTE,a),U8t(a,n,i),V8t(a,n,i);var o=document.createElement("canvas");o.width=n,o.height=i;var s=o.getContext("2d",{willReadFrequently:!0}),l=s.createImageData(n,i);l.data.set(a),s.putImageData(l,0,0);var u;switch(e){case"jpeg":u=o.toDataURL("image/jpeg");break;case"webp":u=o.toDataURL("image/webp");break;default:u=o.toDataURL("image/png")}return t.staticMode&&t.container.removeChild(nk),u};Sv.setConvert=function(){for(var e=this,t=0;t<3;t++){var r=e.fullSceneLayout[ak[t]];cF.setConvert(r,e.fullLayout),r.setScale=cp.noop}};Sv.make4thDimension=function(){var e=this,t=e.graphDiv,r=t._fullLayout;e._mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},cF.setConvert(e._mockAxis,r)};RIe.exports=IIe});var zIe=ye((Igr,FIe)=>{"use strict";FIe.exports={scene:{valType:"subplotid",dflt:"scene",editType:"calc+clearAxisTypes"}}});var BX=ye((Rgr,qIe)=>{"use strict";var G8t=ka(),xs=Rd(),OX=Ao().extendFlat,H8t=mc().overrideAll;qIe.exports=H8t({visible:xs.visible,showspikes:{valType:"boolean",dflt:!0},spikesides:{valType:"boolean",dflt:!0},spikethickness:{valType:"number",min:0,dflt:2},spikecolor:{valType:"color",dflt:G8t.defaultLine},showbackground:{valType:"boolean",dflt:!1},backgroundcolor:{valType:"color",dflt:"rgba(204, 204, 204, 0.5)"},showaxeslabels:{valType:"boolean",dflt:!0},color:xs.color,categoryorder:xs.categoryorder,categoryarray:xs.categoryarray,title:{text:xs.title.text,font:xs.title.font},type:OX({},xs.type,{values:["-","linear","log","date","category"]}),autotypenumbers:xs.autotypenumbers,autorange:xs.autorange,autorangeoptions:{minallowed:xs.autorangeoptions.minallowed,maxallowed:xs.autorangeoptions.maxallowed,clipmin:xs.autorangeoptions.clipmin,clipmax:xs.autorangeoptions.clipmax,include:xs.autorangeoptions.include,editType:"plot"},rangemode:xs.rangemode,minallowed:xs.minallowed,maxallowed:xs.maxallowed,range:OX({},xs.range,{items:[{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}}],anim:!1}),tickmode:xs.minor.tickmode,nticks:xs.nticks,tick0:xs.tick0,dtick:xs.dtick,tickvals:xs.tickvals,ticktext:xs.ticktext,ticks:xs.ticks,mirror:xs.mirror,ticklen:xs.ticklen,tickwidth:xs.tickwidth,tickcolor:xs.tickcolor,showticklabels:xs.showticklabels,labelalias:xs.labelalias,tickfont:xs.tickfont,tickangle:xs.tickangle,tickprefix:xs.tickprefix,showtickprefix:xs.showtickprefix,ticksuffix:xs.ticksuffix,showticksuffix:xs.showticksuffix,showexponent:xs.showexponent,exponentformat:xs.exponentformat,minexponent:xs.minexponent,separatethousands:xs.separatethousands,tickformat:xs.tickformat,tickformatstops:xs.tickformatstops,hoverformat:xs.hoverformat,showline:xs.showline,linecolor:xs.linecolor,linewidth:xs.linewidth,showgrid:xs.showgrid,gridcolor:OX({},xs.gridcolor,{dflt:"rgb(204, 204, 204)"}),gridwidth:xs.gridwidth,zeroline:xs.zeroline,zerolinecolor:xs.zerolinecolor,zerolinewidth:xs.zerolinewidth},"plot","from-root")});var GX=ye((Dgr,OIe)=>{"use strict";var NX=BX(),j8t=Cc().attributes,UX=Ao().extendFlat,W8t=Pr().counterRegex;function VX(e,t,r){return{x:{valType:"number",dflt:e,editType:"camera"},y:{valType:"number",dflt:t,editType:"camera"},z:{valType:"number",dflt:r,editType:"camera"},editType:"camera"}}OIe.exports={_arrayAttrRegexps:[W8t("scene",".annotations",!0)],bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"plot"},camera:{up:UX(VX(0,0,1),{}),center:UX(VX(0,0,0),{}),eye:UX(VX(1.25,1.25,1.25),{}),projection:{type:{valType:"enumerated",values:["perspective","orthographic"],dflt:"perspective",editType:"calc"},editType:"calc"},editType:"camera"},domain:j8t({name:"scene",editType:"plot"}),aspectmode:{valType:"enumerated",values:["auto","cube","data","manual"],dflt:"auto",editType:"plot",impliedEdits:{"aspectratio.x":void 0,"aspectratio.y":void 0,"aspectratio.z":void 0}},aspectratio:{x:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},y:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},z:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},editType:"plot",impliedEdits:{aspectmode:"manual"}},xaxis:NX,yaxis:NX,zaxis:NX,dragmode:{valType:"enumerated",values:["orbit","turntable","zoom","pan",!1],editType:"plot"},hovermode:{valType:"enumerated",values:["closest",!1],dflt:"closest",editType:"modebar"},uirevision:{valType:"any",editType:"none"},editType:"plot"}});var VIe=ye((Fgr,UIe)=>{"use strict";var X8t=fd().mix,BIe=Pr(),Z8t=vl(),Y8t=BX(),K8t=RU(),J8t=h4(),NIe=["xaxis","yaxis","zaxis"],$8t=100*136/187;UIe.exports=function(t,r,n){var i,a;function o(u,c){return BIe.coerce(i,a,Y8t,u,c)}for(var s=0;s{"use strict";var Q8t=Pr(),eRt=ka(),tRt=Oa(),rRt=q_(),iRt=VIe(),GIe=GX(),nRt=Id().getSubplotData,HIe="gl3d";jIe.exports=function(t,r,n){var i=r._basePlotModules.length>1;function a(o){if(!i){var s=Q8t.validate(t[o],GIe[o]);if(s)return t[o]}}rRt(t,r,n,{type:HIe,attributes:GIe,handleDefaults:aRt,fullLayout:r,font:r.font,fullData:n,getDfltFromLayout:a,autotypenumbersDflt:r.autotypenumbers,paper_bgcolor:r.paper_bgcolor,calendar:r.calendar})};function aRt(e,t,r,n){for(var i=r("bgcolor"),a=eRt.combine(i,n.paper_bgcolor),o=["up","center","eye"],s=0;s.999)&&(h="turntable")}else h="turntable";r("dragmode",h),r("hovermode",n.getDfltFromLayout("hovermode"))}});var lx=ye(fp=>{"use strict";var oRt=mc().overrideAll,sRt=W1(),lRt=DIe(),uRt=Id().getSubplotData,cRt=Pr(),fRt=Wp(),YA="gl3d",HX="scene";fp.name=YA;fp.attr=HX;fp.idRoot=HX;fp.idRegex=fp.attrRegex=cRt.counterRegex("scene");fp.attributes=zIe();fp.layoutAttributes=GX();fp.baseLayoutAttrOverrides=oRt({hoverlabel:sRt.hoverlabel},"plot","nested");fp.supplyLayoutDefaults=WIe();fp.plot=function(t){for(var r=t._fullLayout,n=t._fullData,i=r._subplots[YA],a=0;a{"use strict";XIe.exports={plot:iIe(),attributes:FX(),markerSymbols:aF(),supplyDefaults:cIe(),colorbar:[{container:"marker",min:"cmin",max:"cmax"},{container:"line",min:"cmin",max:"cmax"}],calc:hIe(),moduleType:"trace",name:"scatter3d",basePlotModule:lx(),categories:["gl3d","symbols","showLegend","scatter-like"],meta:{}}});var KIe=ye((Bgr,YIe)=>{"use strict";YIe.exports=ZIe()});var ok=ye((Ngr,QIe)=>{"use strict";var JIe=ka(),hRt=Tu(),jX=vf().axisHoverFormat,{hovertemplateAttrs:dRt,templatefallbackAttrs:vRt}=Ll(),$Ie=Gl(),WX=Ao().extendFlat,pRt=mc().overrideAll;function XX(e){return{valType:"boolean",dflt:!1}}function ZX(e){return{show:{valType:"boolean",dflt:!1},start:{valType:"number",dflt:null,editType:"plot"},end:{valType:"number",dflt:null,editType:"plot"},size:{valType:"number",dflt:null,min:0,editType:"plot"},project:{x:XX("x"),y:XX("y"),z:XX("z")},color:{valType:"color",dflt:JIe.defaultLine},usecolormap:{valType:"boolean",dflt:!1},width:{valType:"number",min:1,max:16,dflt:2},highlight:{valType:"boolean",dflt:!0},highlightcolor:{valType:"color",dflt:JIe.defaultLine},highlightwidth:{valType:"number",min:1,max:16,dflt:2}}}var YX=QIe.exports=pRt(WX({z:{valType:"data_array"},x:{valType:"data_array"},y:{valType:"data_array"},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:dRt(),hovertemplatefallback:vRt(),xhoverformat:jX("x"),yhoverformat:jX("y"),zhoverformat:jX("z"),connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},surfacecolor:{valType:"data_array"}},hRt("",{colorAttr:"z or surfacecolor",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:"calc"}),{contours:{x:ZX("x"),y:ZX("y"),z:ZX("z")},hidesurface:{valType:"boolean",dflt:!1},lightposition:{x:{valType:"number",min:-1e5,max:1e5,dflt:10},y:{valType:"number",min:-1e5,max:1e5,dflt:1e4},z:{valType:"number",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:"number",min:0,max:1,dflt:.8},diffuse:{valType:"number",min:0,max:1,dflt:.8},specular:{valType:"number",min:0,max:2,dflt:.05,description:"Represents the level that incident rays are reflected in a single direction, causing shine."},roughness:{valType:"number",min:0,max:1,dflt:.5,description:"Alters specular reflection; the rougher the surface, the wider and less contrasty the shine."},fresnel:{valType:"number",min:0,max:5,dflt:.2}},opacity:{valType:"number",min:0,max:1,dflt:1},opacityscale:{valType:"any",editType:"calc"},hoverinfo:WX({},$Ie.hoverinfo),showlegend:WX({},$Ie.showlegend,{dflt:!1})}),"calc","nested");YX.x.editType=YX.y.editType=YX.z.editType="calc+clearAxisTypes"});var JX=ye((Ugr,r8e)=>{"use strict";var gRt=Oa(),e8e=Pr(),mRt=td(),yRt=ok(),KX=.1;function _Rt(e,t){for(var r=[],n=32,i=0;i{"use strict";var i8e=gv();n8e.exports=function(t,r){r.surfacecolor?i8e(t,r,{vals:r.surfacecolor,containerStr:"",cLetter:"c"}):i8e(t,r,{vals:r.z,containerStr:"",cLetter:"c"})}});var f8e=ye((Ggr,c8e)=>{"use strict";var wRt=qd().gl_surface3d,KA=qd().ndarray,TRt=qd().ndarray_linear_interpolate.d2,ARt=f8(),SRt=h8(),sk=Pr().isArrayOrTypedArray,MRt=a1().parseColorScale,o8e=n1(),ERt=tc().extractOpts;function l8e(e,t,r){this.scene=e,this.uid=r,this.surface=t,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var em=l8e.prototype;em.getXat=function(e,t,r,n){var i=sk(this.data.x)?sk(this.data.x[0])?this.data.x[t][e]:this.data.x[e]:e;return r===void 0?i:n.d2l(i,0,r)};em.getYat=function(e,t,r,n){var i=sk(this.data.y)?sk(this.data.y[0])?this.data.y[t][e]:this.data.y[t]:t;return r===void 0?i:n.d2l(i,0,r)};em.getZat=function(e,t,r,n){var i=this.data.z[t][e];return i===null&&this.data.connectgaps&&this.data._interpolatedZ&&(i=this.data._interpolatedZ[t][e]),r===void 0?i:n.d2l(i,0,r)};em.handlePick=function(e){if(e.object===this.surface){var t=(e.data.index[0]-1)/this.dataScaleX-1,r=(e.data.index[1]-1)/this.dataScaleY-1,n=Math.max(Math.min(Math.round(t),this.data.z[0].length-1),0),i=Math.max(Math.min(Math.round(r),this.data._ylength-1),0);e.index=[n,i],e.traceCoordinate=[this.getXat(n,i),this.getYat(n,i),this.getZat(n,i)],e.dataCoordinate=[this.getXat(n,i,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(n,i,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(n,i,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var a=0;a<3;a++){var o=e.dataCoordinate[a];o!=null&&(e.dataCoordinate[a]*=this.scene.dataScale[a])}var s=this.data.hovertext||this.data.text;return sk(s)&&s[i]&&s[i][n]!==void 0?e.textLabel=s[i][n]:s?e.textLabel=s:e.textLabel="",e.data.dataCoordinate=e.dataCoordinate.slice(),this.surface.highlight(e.data),this.scene.glplot.spikes.position=e.dataCoordinate,!0}};function kRt(e){var t=e[0].rgb,r=e[e.length-1].rgb;return t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]&&t[3]===r[3]}var JA=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function CRt(e,t){if(e0){r=JA[n];break}return r}function PRt(e,t){if(!(e<1||t<1)){for(var r=$X(e),n=$X(t),i=1,a=0;afF;)n--,n/=LRt(n),n++,n1?i:1};function RRt(e,t,r){var n=r[8]+r[2]*t[0]+r[5]*t[1];return e[0]=(r[6]+r[0]*t[0]+r[3]*t[1])/n,e[1]=(r[7]+r[1]*t[0]+r[4]*t[1])/n,e}function DRt(e,t,r){return FRt(e,t,RRt,r),e}function FRt(e,t,r,n){for(var i=[0,0],a=e.shape[0],o=e.shape[1],s=0;s0&&this.contourStart[n]!==null&&this.contourEnd[n]!==null&&this.contourEnd[n]>this.contourStart[n]))for(t[n]=!0,i=this.contourStart[n];ih&&(this.minValues[u]=h),this.maxValues[u]{"use strict";h8e.exports={attributes:ok(),supplyDefaults:JX().supplyDefaults,colorbar:{min:"cmin",max:"cmax"},calc:a8e(),plot:f8e(),moduleType:"trace",name:"surface",basePlotModule:lx(),categories:["gl3d","2dMap","showLegend"],meta:{}}});var p8e=ye((jgr,v8e)=>{"use strict";v8e.exports=d8e()});var $A=ye((Wgr,m8e)=>{"use strict";var ORt=Tu(),QX=vf().axisHoverFormat,{hovertemplateAttrs:BRt,templatefallbackAttrs:NRt}=Ll(),ux=ok(),g8e=Gl(),cx=Ao().extendFlat;m8e.exports=cx({x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},i:{valType:"data_array",editType:"calc"},j:{valType:"data_array",editType:"calc"},k:{valType:"data_array",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:BRt({editType:"calc"}),hovertemplatefallback:NRt({editType:"calc"}),xhoverformat:QX("x"),yhoverformat:QX("y"),zhoverformat:QX("z"),delaunayaxis:{valType:"enumerated",values:["x","y","z"],dflt:"z",editType:"calc"},alphahull:{valType:"number",dflt:-1,editType:"calc"},intensity:{valType:"data_array",editType:"calc"},intensitymode:{valType:"enumerated",values:["vertex","cell"],dflt:"vertex",editType:"calc"},color:{valType:"color",editType:"calc"},vertexcolor:{valType:"data_array",editType:"calc"},facecolor:{valType:"data_array",editType:"calc"}},ORt("",{colorAttr:"`intensity`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:ux.opacity,flatshading:{valType:"boolean",dflt:!1,editType:"calc"},contour:{show:cx({},ux.contours.x.show,{}),color:ux.contours.x.color,width:ux.contours.x.width,editType:"calc"},lightposition:{x:cx({},ux.lightposition.x,{dflt:1e5}),y:cx({},ux.lightposition.y,{dflt:1e5}),z:cx({},ux.lightposition.z,{dflt:0}),editType:"calc"},lighting:cx({vertexnormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-12,editType:"calc",description:"Epsilon for vertex normals calculation avoids math issues arising from degenerate geometry."},facenormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-6,editType:"calc",description:"Epsilon for face normals calculation avoids math issues arising from degenerate geometry."},editType:"calc"},ux.lighting),hoverinfo:cx({},g8e.hoverinfo,{editType:"calc"}),showlegend:cx({},g8e.showlegend,{dflt:!1})})});var dF=ye((Xgr,_8e)=>{"use strict";var URt=Tu(),hF=vf().axisHoverFormat,{hovertemplateAttrs:VRt,templatefallbackAttrs:GRt}=Ll(),lk=$A(),y8e=Gl(),eZ=Ao().extendFlat,HRt=mc().overrideAll;function tZ(e){return{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}}}function rZ(e){return{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}}}var QA=_8e.exports=HRt(eZ({x:{valType:"data_array"},y:{valType:"data_array"},z:{valType:"data_array"},value:{valType:"data_array"},isomin:{valType:"number"},isomax:{valType:"number"},surface:{show:{valType:"boolean",dflt:!0},count:{valType:"integer",dflt:2,min:1},fill:{valType:"number",min:0,max:1,dflt:1},pattern:{valType:"flaglist",flags:["A","B","C","D","E"],extras:["all","odd","even"],dflt:"all"}},spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:.15}},slices:{x:tZ("x"),y:tZ("y"),z:tZ("z")},caps:{x:rZ("x"),y:rZ("y"),z:rZ("z")},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:VRt(),hovertemplatefallback:GRt(),xhoverformat:hF("x"),yhoverformat:hF("y"),zhoverformat:hF("z"),valuehoverformat:hF("value",1),showlegend:eZ({},y8e.showlegend,{dflt:!1})},URt("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:lk.opacity,lightposition:lk.lightposition,lighting:lk.lighting,flatshading:lk.flatshading,contour:lk.contour,hoverinfo:eZ({},y8e.hoverinfo)}),"calc","nested");QA.flatshading.dflt=!0;QA.lighting.facenormalsepsilon.dflt=0;QA.x.editType=QA.y.editType=QA.z.editType=QA.value.editType="calc+clearAxisTypes"});var iZ=ye((Zgr,b8e)=>{"use strict";var jRt=Pr(),WRt=Oa(),XRt=dF(),ZRt=td();function YRt(e,t,r,n){function i(a,o){return jRt.coerce(e,t,XRt,a,o)}x8e(e,t,r,n,i)}function x8e(e,t,r,n,i){var a=i("isomin"),o=i("isomax");o!=null&&a!==void 0&&a!==null&&a>o&&(t.isomin=null,t.isomax=null);var s=i("x"),l=i("y"),u=i("z"),c=i("value");if(!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length){t.visible=!1;return}var f=WRt.getComponentMethod("calendars","handleTraceDefaults");f(e,t,["x","y","z"],n),i("valuehoverformat"),["x","y","z"].forEach(function(m){i(m+"hoverformat");var b="caps."+m,p=i(b+".show");p&&i(b+".fill");var k="slices."+m,M=i(k+".show");M&&(i(k+".fill"),i(k+".locations"))});var h=i("spaceframe.show");h&&i("spaceframe.fill");var d=i("surface.show");d&&(i("surface.count"),i("surface.fill"),i("surface.pattern"));var v=i("contour.show");v&&(i("contour.color"),i("contour.width")),["text","hovertext","hovertemplate","lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","opacity"].forEach(function(m){i(m)}),ZRt(e,t,n,i,{prefix:"",cLetter:"c"}),t._length=null}b8e.exports={supplyDefaults:YRt,supplyIsoDefaults:x8e}});var vF=ye((Ygr,T8e)=>{"use strict";var aZ=Pr(),KRt=gv();function JRt(e,t){t._len=Math.min(t.u.length,t.v.length,t.w.length,t.x.length,t.y.length,t.z.length),t._u=$m(t.u,t._len),t._v=$m(t.v,t._len),t._w=$m(t.w,t._len),t._x=$m(t.x,t._len),t._y=$m(t.y,t._len),t._z=$m(t.z,t._len);var r=w8e(t);t._gridFill=r.fill,t._Xs=r.Xs,t._Ys=r.Ys,t._Zs=r.Zs,t._len=r.len;var n=0,i,a,o;t.starts&&(i=$m(t.starts.x||[]),a=$m(t.starts.y||[]),o=$m(t.starts.z||[]),n=Math.min(i.length,a.length,o.length)),t._startsX=i||[],t._startsY=a||[],t._startsZ=o||[];var s=0,l=1/0,u;for(u=0;u1&&(M=t[i-1],L=r[i-1],C=n[i-1]),a=0;aM?"-":"+")+"x"),v=v.replace("y",(T>L?"-":"+")+"y"),v=v.replace("z",(x>C?"-":"+")+"z");var E=function(){i=0,S=[],g=[],P=[]};(!i||i{"use strict";var $Rt=gv(),QRt=vF().processGrid,pF=vF().filter;A8e.exports=function(t,r){r._len=Math.min(r.x.length,r.y.length,r.z.length,r.value.length),r._x=pF(r.x,r._len),r._y=pF(r.y,r._len),r._z=pF(r.z,r._len),r._value=pF(r.value,r._len);var n=QRt(r);r._gridFill=n.fill,r._Xs=n.Xs,r._Ys=n.Ys,r._Zs=n.Zs,r._len=n.len;for(var i=1/0,a=-1/0,o=0;o{"use strict";S8e.exports=function(t,r,n,i){i=i||t.length;for(var a=new Array(i),o=0;o{"use strict";var eDt=qd().gl_mesh3d,tDt=a1().parseColorScale,rDt=Pr().isArrayOrTypedArray,iDt=n1(),nDt=tc().extractOpts,M8e=e5(),uk=function(e,t){for(var r=t.length-1;r>0;r--){var n=Math.min(t[r],t[r-1]),i=Math.max(t[r],t[r-1]);if(i>n&&n-1}function ae(St,Tt){return St===null?Tt:St}function _e(St,Tt,dt){E();var Et=[Tt],pt=[dt];if(j>=1)Et=[Tt],pt=[dt];else if(j>0){var jt=H(Tt,dt);Et=jt.xyzv,pt=jt.abc}for(var or=0;or-1?dt[Ar]:P(ei,qr,jr);Ge>-1?mr[Ar]=Ge:mr[Ar]=q(ei,qr,jr,ae(St,gt))}V(mr[0],mr[1],mr[2])}}function Ee(St,Tt,dt){var Et=function(pt,jt,or){_e(St,[Tt[pt],Tt[jt],Tt[or]],[dt[pt],dt[jt],dt[or]])};Et(0,1,2),Et(2,3,0)}function Ce(St,Tt,dt){var Et=function(pt,jt,or){_e(St,[Tt[pt],Tt[jt],Tt[or]],[dt[pt],dt[jt],dt[or]])};Et(0,1,2),Et(3,0,1),Et(2,3,0),Et(1,2,3)}function ge(St,Tt,dt,Et){var pt=St[3];ptEt&&(pt=Et);for(var jt=(St[3]-pt)/(St[3]-Tt[3]+1e-9),or=[],mr=0;mr<4;mr++)or[mr]=(1-jt)*St[mr]+jt*Tt[mr];return or}function re(St,Tt,dt){return St>=Tt&&St<=dt}function Se(St){var Tt=.001*(L-T);return St>=T-Tt&&St<=L+Tt}function ke(St){for(var Tt=[],dt=0;dt<4;dt++){var Et=St[dt];Tt.push([e._x[Et],e._y[Et],e._z[Et],e._value[Et]])}return Tt}var be=3;function Be(St,Tt,dt,Et,pt,jt){jt||(jt=1),dt=[-1,-1,-1];var or=!1,mr=[re(Tt[0][3],Et,pt),re(Tt[1][3],Et,pt),re(Tt[2][3],Et,pt)];if(!mr[0]&&!mr[1]&&!mr[2])return!1;var Ar=function(qr,jr,gt){return Se(jr[0][3])&&Se(jr[1][3])&&Se(jr[2][3])?(_e(qr,jr,gt),!0):jtmr?[k,jt]:[jt,M];Vt(Tt,Ar[0],Ar[1])}}var ei=[[Math.min(T,M),Math.max(T,M)],[Math.min(k,L),Math.max(k,L)]];["x","y","z"].forEach(function(qr){for(var jr=[],gt=0;gt0&&(At.push(Mr.id),qr==="x"?Kt.push([Mr.distRatio,0,0]):qr==="y"?Kt.push([0,Mr.distRatio,0]):Kt.push([0,0,Mr.distRatio]))}else qr==="x"?xt=Ue(1,d-1):qr==="y"?xt=Ue(1,v-1):xt=Ue(1,m-1);At.length>0&&(qr==="x"?jr[Ge]=rr(St,At,Je,We,Kt,jr[Ge]):qr==="y"?jr[Ge]=tt(St,At,Je,We,Kt,jr[Ge]):jr[Ge]=je(St,At,Je,We,Kt,jr[Ge]),Ge++),xt.length>0&&(qr==="x"?jr[Ge]=mt(St,xt,Je,We,jr[Ge]):qr==="y"?jr[Ge]=Ht(St,xt,Je,We,jr[Ge]):jr[Ge]=at(St,xt,Je,We,jr[Ge]),Ge++)}var Gr=e.caps[qr];Gr.show&&Gr.fill&&(N(Gr.fill),qr==="x"?jr[Ge]=mt(St,[0,d-1],Je,We,jr[Ge]):qr==="y"?jr[Ge]=Ht(St,[0,v-1],Je,We,jr[Ge]):jr[Ge]=at(St,[0,m-1],Je,We,jr[Ge]),Ge++)}}),s===0&&z(),e._meshX=x,e._meshY=C,e._meshZ=S,e._meshIntensity=g,e._Xs=c,e._Ys=f,e._Zs=h}return rt(),e}function oDt(e,t){var r=e.glplot.gl,n=eDt({gl:r}),i=new E8e(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}C8e.exports={findNearestOnAxis:uk,generateIsoMeshes:k8e,createIsosurfaceTrace:oDt}});var P8e=ye((Qgr,L8e)=>{"use strict";L8e.exports={attributes:dF(),supplyDefaults:iZ().supplyDefaults,calc:oZ(),colorbar:{min:"cmin",max:"cmax"},plot:gF().createIsosurfaceTrace,moduleType:"trace",name:"isosurface",basePlotModule:lx(),categories:["gl3d","showLegend"],meta:{}}});var R8e=ye((emr,I8e)=>{"use strict";I8e.exports=P8e()});var uZ=ye((tmr,F8e)=>{"use strict";var sDt=Tu(),xh=dF(),lDt=ok(),D8e=Gl(),lZ=Ao().extendFlat,uDt=mc().overrideAll,mF=F8e.exports=uDt(lZ({x:xh.x,y:xh.y,z:xh.z,value:xh.value,isomin:xh.isomin,isomax:xh.isomax,surface:xh.surface,spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:1}},slices:xh.slices,caps:xh.caps,text:xh.text,hovertext:xh.hovertext,xhoverformat:xh.xhoverformat,yhoverformat:xh.yhoverformat,zhoverformat:xh.zhoverformat,valuehoverformat:xh.valuehoverformat,hovertemplate:xh.hovertemplate,hovertemplatefallback:xh.hovertemplatefallback},sDt("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{colorbar:xh.colorbar,opacity:xh.opacity,opacityscale:lDt.opacityscale,lightposition:xh.lightposition,lighting:xh.lighting,flatshading:xh.flatshading,contour:xh.contour,hoverinfo:lZ({},D8e.hoverinfo),showlegend:lZ({},D8e.showlegend,{dflt:!1})}),"calc","nested");mF.x.editType=mF.y.editType=mF.z.editType=mF.value.editType="calc+clearAxisTypes"});var q8e=ye((rmr,z8e)=>{"use strict";var cDt=Pr(),fDt=uZ(),hDt=iZ().supplyIsoDefaults,dDt=JX().opacityscaleDefaults;z8e.exports=function(t,r,n,i){function a(o,s){return cDt.coerce(t,r,fDt,o,s)}hDt(t,r,n,i,a),dDt(t,r,i,a)}});var U8e=ye((imr,N8e)=>{"use strict";var vDt=qd().gl_mesh3d,pDt=a1().parseColorScale,gDt=Pr().isArrayOrTypedArray,mDt=n1(),yDt=tc().extractOpts,O8e=e5(),cZ=gF().findNearestOnAxis,_Dt=gF().generateIsoMeshes;function B8e(e,t,r){this.scene=e,this.uid=r,this.mesh=t,this.name="",this.data=null,this.showContour=!1}var fZ=B8e.prototype;fZ.handlePick=function(e){if(e.object===this.mesh){var t=e.data.index,r=this.data._meshX[t],n=this.data._meshY[t],i=this.data._meshZ[t],a=this.data._Ys.length,o=this.data._Zs.length,s=cZ(r,this.data._Xs).id,l=cZ(n,this.data._Ys).id,u=cZ(i,this.data._Zs).id,c=e.index=u+o*l+o*a*s;e.traceCoordinate=[this.data._meshX[c],this.data._meshY[c],this.data._meshZ[c],this.data._value[c]];var f=this.data.hovertext||this.data.text;return gDt(f)&&f[c]!==void 0?e.textLabel=f[c]:f&&(e.textLabel=f),!0}};fZ.update=function(e){var t=this.scene,r=t.fullSceneLayout;this.data=_Dt(e);function n(l,u,c,f){return u.map(function(h){return l.d2l(h,0,f)*c})}var i=O8e(n(r.xaxis,e._meshX,t.dataScale[0],e.xcalendar),n(r.yaxis,e._meshY,t.dataScale[1],e.ycalendar),n(r.zaxis,e._meshZ,t.dataScale[2],e.zcalendar)),a=O8e(e._meshI,e._meshJ,e._meshK),o={positions:i,cells:a,lightPosition:[e.lightposition.x,e.lightposition.y,e.lightposition.z],ambient:e.lighting.ambient,diffuse:e.lighting.diffuse,specular:e.lighting.specular,roughness:e.lighting.roughness,fresnel:e.lighting.fresnel,vertexNormalsEpsilon:e.lighting.vertexnormalsepsilon,faceNormalsEpsilon:e.lighting.facenormalsepsilon,opacity:e.opacity,opacityscale:e.opacityscale,contourEnable:e.contour.show,contourColor:mDt(e.contour.color).slice(0,3),contourWidth:e.contour.width,useFacetNormals:e.flatshading},s=yDt(e);o.vertexIntensity=e._meshIntensity,o.vertexIntensityBounds=[s.min,s.max],o.colormap=pDt(e),this.mesh.update(o)};fZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function xDt(e,t){var r=e.glplot.gl,n=vDt({gl:r}),i=new B8e(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}N8e.exports=xDt});var G8e=ye((nmr,V8e)=>{"use strict";V8e.exports={attributes:uZ(),supplyDefaults:q8e(),calc:oZ(),colorbar:{min:"cmin",max:"cmax"},plot:U8e(),moduleType:"trace",name:"volume",basePlotModule:lx(),categories:["gl3d","showLegend"],meta:{}}});var j8e=ye((amr,H8e)=>{"use strict";H8e.exports=G8e()});var Z8e=ye((omr,X8e)=>{"use strict";var bDt=Oa(),W8e=Pr(),wDt=td(),TDt=$A();X8e.exports=function(t,r,n,i){function a(c,f){return W8e.coerce(t,r,TDt,c,f)}function o(c){var f=c.map(function(h){var d=a(h);return d&&W8e.isArrayOrTypedArray(d)?d:null});return f.every(function(h){return h&&h.length===f[0].length})&&f}var s=o(["x","y","z"]);if(!s){r.visible=!1;return}if(o(["i","j","k"]),r.i&&(!r.j||!r.k)||r.j&&(!r.k||!r.i)||r.k&&(!r.i||!r.j)){r.visible=!1;return}var l=bDt.getComponentMethod("calendars","handleTraceDefaults");l(t,r,["x","y","z"],i),["lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","alphahull","delaunayaxis","opacity"].forEach(function(c){a(c)});var u=a("contour.show");u&&(a("contour.color"),a("contour.width")),"intensity"in t?(a("intensity"),a("intensitymode"),wDt(t,r,i,a,{prefix:"",cLetter:"c"})):(r.showscale=!1,"facecolor"in t?a("facecolor"):"vertexcolor"in t?a("vertexcolor"):a("color",n)),a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var K8e=ye((smr,Y8e)=>{"use strict";var ADt=gv();Y8e.exports=function(t,r){r.intensity&&ADt(t,r,{vals:r.intensity,containerStr:"",cLetter:"c"})}});var tRe=ye((lmr,eRe)=>{"use strict";var SDt=qd().gl_mesh3d,MDt=qd().delaunay_triangulate,EDt=qd().alpha_shape,kDt=qd().convex_hull,CDt=a1().parseColorScale,LDt=Pr().isArrayOrTypedArray,pZ=n1(),PDt=tc().extractOpts,J8e=e5();function Q8e(e,t,r){this.scene=e,this.uid=r,this.mesh=t,this.name="",this.color="#fff",this.data=null,this.showContour=!1}var gZ=Q8e.prototype;gZ.handlePick=function(e){if(e.object===this.mesh){var t=e.index=e.data.index;e.data._cellCenter?e.traceCoordinate=e.data.dataCoordinate:e.traceCoordinate=[this.data.x[t],this.data.y[t],this.data.z[t]];var r=this.data.hovertext||this.data.text;return LDt(r)&&r[t]!==void 0?e.textLabel=r[t]:r&&(e.textLabel=r),!0}};function $8e(e){for(var t=[],r=e.length,n=0;n=t-.5)return!1;return!0}gZ.update=function(e){var t=this.scene,r=t.fullSceneLayout;this.data=e;var n=e.x.length,i=J8e(hZ(r.xaxis,e.x,t.dataScale[0],e.xcalendar),hZ(r.yaxis,e.y,t.dataScale[1],e.ycalendar),hZ(r.zaxis,e.z,t.dataScale[2],e.zcalendar)),a;if(e.i&&e.j&&e.k){if(e.i.length!==e.j.length||e.j.length!==e.k.length||!vZ(e.i,n)||!vZ(e.j,n)||!vZ(e.k,n))return;a=J8e(dZ(e.i),dZ(e.j),dZ(e.k))}else e.alphahull===0?a=kDt(i):e.alphahull>0?a=EDt(e.alphahull,i):a=IDt(e.delaunayaxis,i);var o={positions:i,cells:a,lightPosition:[e.lightposition.x,e.lightposition.y,e.lightposition.z],ambient:e.lighting.ambient,diffuse:e.lighting.diffuse,specular:e.lighting.specular,roughness:e.lighting.roughness,fresnel:e.lighting.fresnel,vertexNormalsEpsilon:e.lighting.vertexnormalsepsilon,faceNormalsEpsilon:e.lighting.facenormalsepsilon,opacity:e.opacity,contourEnable:e.contour.show,contourColor:pZ(e.contour.color).slice(0,3),contourWidth:e.contour.width,useFacetNormals:e.flatshading};if(e.intensity){var s=PDt(e);this.color="#fff";var l=e.intensitymode;o[l+"Intensity"]=e.intensity,o[l+"IntensityBounds"]=[s.min,s.max],o.colormap=CDt(e)}else e.vertexcolor?(this.color=e.vertexcolor[0],o.vertexColors=$8e(e.vertexcolor)):e.facecolor?(this.color=e.facecolor[0],o.cellColors=$8e(e.facecolor)):(this.color=e.color,o.meshColor=pZ(e.color));this.mesh.update(o)};gZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function RDt(e,t){var r=e.glplot.gl,n=SDt({gl:r}),i=new Q8e(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}eRe.exports=RDt});var iRe=ye((umr,rRe)=>{"use strict";rRe.exports={attributes:$A(),supplyDefaults:Z8e(),calc:K8e(),colorbar:{min:"cmin",max:"cmax"},plot:tRe(),moduleType:"trace",name:"mesh3d",basePlotModule:lx(),categories:["gl3d","showLegend"],meta:{}}});var aRe=ye((cmr,nRe)=>{"use strict";nRe.exports=iRe()});var yZ=ye((fmr,sRe)=>{"use strict";var DDt=Tu(),t5=vf().axisHoverFormat,{hovertemplateAttrs:FDt,templatefallbackAttrs:zDt}=Ll(),qDt=$A(),oRe=Gl(),mZ=Ao().extendFlat,yF={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},sizemode:{valType:"enumerated",values:["scaled","absolute","raw"],editType:"calc",dflt:"scaled"},sizeref:{valType:"number",editType:"calc",min:0},anchor:{valType:"enumerated",editType:"calc",values:["tip","tail","cm","center"],dflt:"cm"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:FDt({editType:"calc"},{keys:["norm"]}),hovertemplatefallback:zDt({editType:"calc"}),uhoverformat:t5("u",1),vhoverformat:t5("v",1),whoverformat:t5("w",1),xhoverformat:t5("x"),yhoverformat:t5("y"),zhoverformat:t5("z"),showlegend:mZ({},oRe.showlegend,{dflt:!1})};mZ(yF,DDt("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"}));var ODt=["opacity","lightposition","lighting"];ODt.forEach(function(e){yF[e]=qDt[e]});yF.hoverinfo=mZ({},oRe.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","text","name"],dflt:"x+y+z+norm+text+name"});sRe.exports=yF});var uRe=ye((hmr,lRe)=>{"use strict";var BDt=Pr(),NDt=td(),UDt=yZ();lRe.exports=function(t,r,n,i){function a(d,v){return BDt.coerce(t,r,UDt,d,v)}var o=a("u"),s=a("v"),l=a("w"),u=a("x"),c=a("y"),f=a("z");if(!o||!o.length||!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length||!f||!f.length){r.visible=!1;return}var h=a("sizemode");a("sizeref",h==="raw"?1:.5),a("anchor"),a("lighting.ambient"),a("lighting.diffuse"),a("lighting.specular"),a("lighting.roughness"),a("lighting.fresnel"),a("lightposition.x"),a("lightposition.y"),a("lightposition.z"),NDt(t,r,i,a,{prefix:"",cLetter:"c"}),a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),a("uhoverformat"),a("vhoverformat"),a("whoverformat"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var fRe=ye((dmr,cRe)=>{"use strict";var VDt=gv();cRe.exports=function(t,r){for(var n=r.u,i=r.v,a=r.w,o=Math.min(r.x.length,r.y.length,r.z.length,n.length,i.length,a.length),s=-1/0,l=1/0,u=0;u{"use strict";var GDt=qd().gl_cone3d,HDt=qd().gl_cone3d.createConeMesh,jDt=Pr().simpleMap,WDt=a1().parseColorScale,XDt=tc().extractOpts,ZDt=Pr().isArrayOrTypedArray,hRe=e5();function dRe(e,t){this.scene=e,this.uid=t,this.mesh=null,this.data=null}var _Z=dRe.prototype;_Z.handlePick=function(e){if(e.object===this.mesh){var t=e.index=e.data.index,r=this.data.x[t],n=this.data.y[t],i=this.data.z[t],a=this.data.u[t],o=this.data.v[t],s=this.data.w[t];e.traceCoordinate=[r,n,i,a,o,s,Math.sqrt(a*a+o*o+s*s)];var l=this.data.hovertext||this.data.text;return ZDt(l)&&l[t]!==void 0?e.textLabel=l[t]:l&&(e.textLabel=l),!0}};var YDt={xaxis:0,yaxis:1,zaxis:2},KDt={tip:1,tail:0,cm:.25,center:.5},JDt={tip:1,tail:1,cm:.75,center:.5};function vRe(e,t){var r=e.fullSceneLayout,n=e.dataScale,i={};function a(c,f){var h=r[f],d=n[YDt[f]];return jDt(c,function(v){return h.d2l(v)*d})}i.vectors=hRe(a(t.u,"xaxis"),a(t.v,"yaxis"),a(t.w,"zaxis"),t._len),i.positions=hRe(a(t.x,"xaxis"),a(t.y,"yaxis"),a(t.z,"zaxis"),t._len);var o=XDt(t);i.colormap=WDt(t),i.vertexIntensityBounds=[o.min/t._normMax,o.max/t._normMax],i.coneOffset=KDt[t.anchor];var s=t.sizemode;s==="scaled"?i.coneSize=t.sizeref||.5:s==="absolute"?i.coneSize=t.sizeref&&t._normMax?t.sizeref/t._normMax:.5:s==="raw"&&(i.coneSize=t.sizeref),i.coneSizemode=s;var l=GDt(i),u=t.lightposition;return l.lightPosition=[u.x,u.y,u.z],l.ambient=t.lighting.ambient,l.diffuse=t.lighting.diffuse,l.specular=t.lighting.specular,l.roughness=t.lighting.roughness,l.fresnel=t.lighting.fresnel,l.opacity=t.opacity,t._pad=JDt[t.anchor]*l.vectorScale*l.coneScale*t._normMax,l}_Z.update=function(e){this.data=e;var t=vRe(this.scene,e);this.mesh.update(t)};_Z.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function $Dt(e,t){var r=e.glplot.gl,n=vRe(e,t),i=HDt(r,n),a=new dRe(e,t.uid);return a.mesh=i,a.data=t,i._trace=a,e.glplot.add(i),a}pRe.exports=$Dt});var yRe=ye((pmr,mRe)=>{"use strict";mRe.exports={moduleType:"trace",name:"cone",basePlotModule:lx(),categories:["gl3d","showLegend"],attributes:yZ(),supplyDefaults:uRe(),colorbar:{min:"cmin",max:"cmax"},calc:fRe(),plot:gRe(),eventData:function(e,t){return e.norm=t.traceCoordinate[6],e},meta:{}}});var xRe=ye((gmr,_Re)=>{"use strict";_Re.exports=yRe()});var bZ=ye((mmr,wRe)=>{"use strict";var QDt=Tu(),r5=vf().axisHoverFormat,{hovertemplateAttrs:eFt,templatefallbackAttrs:tFt}=Ll(),rFt=$A(),bRe=Gl(),xZ=Ao().extendFlat,_F={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},starts:{x:{valType:"data_array",editType:"calc"},y:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},editType:"calc"},maxdisplayed:{valType:"integer",min:0,dflt:1e3,editType:"calc"},sizeref:{valType:"number",editType:"calc",min:0,dflt:1},text:{valType:"string",dflt:"",editType:"calc"},hovertext:{valType:"string",dflt:"",editType:"calc"},hovertemplate:eFt({editType:"calc"},{keys:["tubex","tubey","tubez","tubeu","tubev","tubew","norm","divergence"]}),hovertemplatefallback:tFt({editType:"calc"}),uhoverformat:r5("u",1),vhoverformat:r5("v",1),whoverformat:r5("w",1),xhoverformat:r5("x"),yhoverformat:r5("y"),zhoverformat:r5("z"),showlegend:xZ({},bRe.showlegend,{dflt:!1})};xZ(_F,QDt("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"}));var iFt=["opacity","lightposition","lighting"];iFt.forEach(function(e){_F[e]=rFt[e]});_F.hoverinfo=xZ({},bRe.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","divergence","text","name"],dflt:"x+y+z+norm+text+name"});wRe.exports=_F});var ARe=ye((ymr,TRe)=>{"use strict";var nFt=Pr(),aFt=td(),oFt=bZ();TRe.exports=function(t,r,n,i){function a(h,d){return nFt.coerce(t,r,oFt,h,d)}var o=a("u"),s=a("v"),l=a("w"),u=a("x"),c=a("y"),f=a("z");if(!o||!o.length||!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length||!f||!f.length){r.visible=!1;return}a("starts.x"),a("starts.y"),a("starts.z"),a("maxdisplayed"),a("sizeref"),a("lighting.ambient"),a("lighting.diffuse"),a("lighting.specular"),a("lighting.roughness"),a("lighting.fresnel"),a("lightposition.x"),a("lightposition.y"),a("lightposition.z"),aFt(t,r,i,a,{prefix:"",cLetter:"c"}),a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),a("uhoverformat"),a("vhoverformat"),a("whoverformat"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var IRe=ye((_mr,PRe)=>{"use strict";var ERe=qd().gl_streamtube3d,sFt=ERe.createTubeMesh,lFt=Pr(),uFt=a1().parseColorScale,cFt=tc().extractOpts,SRe=e5(),kRe={xaxis:0,yaxis:1,zaxis:2};function CRe(e,t){this.scene=e,this.uid=t,this.mesh=null,this.data=null}var TZ=CRe.prototype;TZ.handlePick=function(e){var t=this.scene.fullSceneLayout,r=this.scene.dataScale;function n(o,s){var l=t[s],u=r[kRe[s]];return l.l2c(o)/u}if(e.object===this.mesh){var i=e.data.position,a=e.data.velocity;return e.traceCoordinate=[n(i[0],"xaxis"),n(i[1],"yaxis"),n(i[2],"zaxis"),n(a[0],"xaxis"),n(a[1],"yaxis"),n(a[2],"zaxis"),e.data.intensity*this.data._normMax,e.data.divergence],e.textLabel=this.data.hovertext||this.data.text,!0}};function MRe(e){var t=e.length,r;return t>2?r=e.slice(1,t-1):t===2?r=[(e[0]+e[1])/2]:r=e,r}function wZ(e){var t=e.length;return t===1?[.5,.5]:[e[1]-e[0],e[t-1]-e[t-2]]}function LRe(e,t){var r=e.fullSceneLayout,n=e.dataScale,i=t._len,a={};function o(z,q){var V=r[q],G=n[kRe[q]];return lFt.simpleMap(z,function(Z){return V.d2l(Z)*G})}if(a.vectors=SRe(o(t._u,"xaxis"),o(t._v,"yaxis"),o(t._w,"zaxis"),i),!i)return{positions:[],cells:[]};var s=o(t._Xs,"xaxis"),l=o(t._Ys,"yaxis"),u=o(t._Zs,"zaxis");a.meshgrid=[s,l,u],a.gridFill=t._gridFill;var c=t._slen;if(c)a.startingPositions=SRe(o(t._startsX,"xaxis"),o(t._startsY,"yaxis"),o(t._startsZ,"zaxis"));else{for(var f=l[0],h=MRe(s),d=MRe(u),v=new Array(h.length*d.length),m=0,b=0;b{"use strict";RRe.exports={moduleType:"trace",name:"streamtube",basePlotModule:lx(),categories:["gl3d","showLegend"],attributes:bZ(),supplyDefaults:ARe(),colorbar:{min:"cmin",max:"cmax"},calc:vF().calc,plot:IRe(),eventData:function(e,t){return e.tubex=e.x,e.tubey=e.y,e.tubez=e.z,e.tubeu=t.traceCoordinate[3],e.tubev=t.traceCoordinate[4],e.tubew=t.traceCoordinate[5],e.norm=t.traceCoordinate[6],e.divergence=t.traceCoordinate[7],delete e.x,delete e.y,delete e.z,e},meta:{}}});var zRe=ye((bmr,FRe)=>{"use strict";FRe.exports=DRe()});var tw=ye((Tmr,URe)=>{"use strict";var{hovertemplateAttrs:hFt,texttemplateAttrs:dFt,templatefallbackAttrs:qRe}=Ll(),vFt=Pg(),Qm=pf(),pFt=Gl(),ORe=Tu(),gFt=Pd().dash,ew=Ao().extendFlat,mFt=mc().overrideAll,rg=Qm.marker,BRe=Qm.line,NRe=rg.line,wmr=["The library used by the *country names* `locationmode` option is changing in an upcoming version.","Country names in existing plots may not work in the new version."].join(" ");URe.exports=mFt({lon:{valType:"data_array"},lat:{valType:"data_array"},locations:{valType:"data_array"},locationmode:{valType:"enumerated",values:["ISO-3","USA-states","country names","geojson-id"],dflt:"ISO-3"},geojson:{valType:"any",editType:"calc"},featureidkey:{valType:"string",editType:"calc",dflt:"id"},mode:ew({},Qm.mode,{dflt:"markers"}),text:ew({},Qm.text,{}),texttemplate:dFt({editType:"plot"},{keys:["lat","lon","location","text"]}),texttemplatefallback:qRe({editType:"plot"}),hovertext:ew({},Qm.hovertext,{}),textfont:Qm.textfont,textposition:Qm.textposition,line:{color:BRe.color,width:BRe.width,dash:gFt},connectgaps:Qm.connectgaps,marker:ew({symbol:rg.symbol,opacity:rg.opacity,angle:rg.angle,angleref:ew({},rg.angleref,{values:["previous","up","north"]}),standoff:rg.standoff,size:rg.size,sizeref:rg.sizeref,sizemin:rg.sizemin,sizemode:rg.sizemode,colorbar:rg.colorbar,line:ew({width:NRe.width,dash:NRe.dash},ORe("marker.line")),gradient:rg.gradient},ORe("marker")),fill:{valType:"enumerated",values:["none","toself"],dflt:"none"},fillcolor:vFt(),selected:Qm.selected,unselected:Qm.unselected,hoverinfo:ew({},pFt.hoverinfo,{flags:["lon","lat","location","text","name"]}),hovertemplate:hFt(),hovertemplatefallback:qRe()},"calc","nested")});var GRe=ye((Amr,VRe)=>{"use strict";var xF=Pr(),AZ=Ru(),yFt=$p(),_Ft=D0(),xFt=F0(),bFt=Fg(),wFt=tw(),TFt=["The library used by the *country names* `locationmode` option is changing in the next major version.","Some country names in existing plots may not work in the new version.","To ensure consistent behavior, consider setting `locationmode` to *ISO-3*."].join(" ");VRe.exports=function(t,r,n,i){function a(d,v){return xF.coerce(t,r,wFt,d,v)}var o=a("locations"),s;if(o&&o.length){var l=a("geojson"),u;(typeof l=="string"&&l!==""||xF.isPlainObject(l))&&(u="geojson-id");var c=a("locationmode",u);c==="country names"&&xF.warn(TFt),c==="geojson-id"&&a("featureidkey"),s=o.length}else{var f=a("lon")||[],h=a("lat")||[];s=Math.min(f.length,h.length)}if(!s){r.visible=!1;return}r._length=s,a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),a("mode"),AZ.hasMarkers(r)&&yFt(t,r,n,i,a,{gradient:!0}),AZ.hasLines(r)&&(_Ft(t,r,n,i,a),a("connectgaps")),AZ.hasText(r)&&(a("texttemplate"),a("texttemplatefallback"),xFt(t,r,i,a)),a("fill"),r.fill!=="none"&&bFt(t,r,n,a),xF.coerceSelectionMarkerOpacity(r,a)}});var WRe=ye((Smr,jRe)=>{"use strict";var HRe=ho();jRe.exports=function(t,r,n){var i={},a=n[r.geo]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=HRe.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=HRe.tickText(o,o.c2l(s[1]),!0).text,i}});var bF=ye((Mmr,KRe)=>{"use strict";var SZ=Eo(),XRe=fs().BADNUM,AFt=z0(),SFt=Dm(),MFt=q0(),EFt=Pr().isArrayOrTypedArray,ZRe=Pr()._;function YRe(e){return e&&typeof e=="string"}KRe.exports=function(t,r){var n=EFt(r.locations),i=n?r.locations.length:r._length,a=new Array(i),o;r.geojson?o=function(h){return YRe(h)||SZ(h)}:o=YRe;for(var s=0;s{"use strict";Mv.projNames={airy:"airy",aitoff:"aitoff","albers usa":"albersUsa",albers:"albers",august:"august","azimuthal equal area":"azimuthalEqualArea","azimuthal equidistant":"azimuthalEquidistant",baker:"baker",bertin1953:"bertin1953",boggs:"boggs",bonne:"bonne",bottomley:"bottomley",bromley:"bromley",collignon:"collignon","conic conformal":"conicConformal","conic equal area":"conicEqualArea","conic equidistant":"conicEquidistant",craig:"craig",craster:"craster","cylindrical equal area":"cylindricalEqualArea","cylindrical stereographic":"cylindricalStereographic",eckert1:"eckert1",eckert2:"eckert2",eckert3:"eckert3",eckert4:"eckert4",eckert5:"eckert5",eckert6:"eckert6",eisenlohr:"eisenlohr","equal earth":"equalEarth",equirectangular:"equirectangular",fahey:"fahey","foucaut sinusoidal":"foucautSinusoidal",foucaut:"foucaut",ginzburg4:"ginzburg4",ginzburg5:"ginzburg5",ginzburg6:"ginzburg6",ginzburg8:"ginzburg8",ginzburg9:"ginzburg9",gnomonic:"gnomonic","gringorten quincuncial":"gringortenQuincuncial",gringorten:"gringorten",guyou:"guyou",hammer:"hammer",hill:"hill",homolosine:"homolosine",hufnagel:"hufnagel",hyperelliptical:"hyperelliptical",kavrayskiy7:"kavrayskiy7",lagrange:"lagrange",larrivee:"larrivee",laskowski:"laskowski",loximuthal:"loximuthal",mercator:"mercator",miller:"miller",mollweide:"mollweide","mt flat polar parabolic":"mtFlatPolarParabolic","mt flat polar quartic":"mtFlatPolarQuartic","mt flat polar sinusoidal":"mtFlatPolarSinusoidal","natural earth":"naturalEarth","natural earth1":"naturalEarth1","natural earth2":"naturalEarth2","nell hammer":"nellHammer",nicolosi:"nicolosi",orthographic:"orthographic",patterson:"patterson","peirce quincuncial":"peirceQuincuncial",polyconic:"polyconic","rectangular polyconic":"rectangularPolyconic",robinson:"robinson",satellite:"satellite","sinu mollweide":"sinuMollweide",sinusoidal:"sinusoidal",stereographic:"stereographic",times:"times","transverse mercator":"transverseMercator","van der grinten":"vanDerGrinten","van der grinten2":"vanDerGrinten2","van der grinten3":"vanDerGrinten3","van der grinten4":"vanDerGrinten4",wagner4:"wagner4",wagner6:"wagner6",wiechel:"wiechel","winkel tripel":"winkel3",winkel3:"winkel3"};Mv.axesNames=["lonaxis","lataxis"];Mv.lonaxisSpan={orthographic:180,"azimuthal equal area":360,"azimuthal equidistant":360,"conic conformal":180,gnomonic:160,stereographic:180,"transverse mercator":180,"*":360};Mv.lataxisSpan={"conic conformal":150,stereographic:179.5,"*":180};Mv.scopeDefaults={world:{lonaxisRange:[-180,180],lataxisRange:[-90,90],projType:"equirectangular",projRotate:[0,0,0]},usa:{lonaxisRange:[-180,-50],lataxisRange:[15,80],projType:"albers usa"},europe:{lonaxisRange:[-30,60],lataxisRange:[30,85],projType:"conic conformal",projRotate:[15,0,0],projParallels:[0,60]},asia:{lonaxisRange:[22,160],lataxisRange:[-15,55],projType:"mercator",projRotate:[0,0,0]},africa:{lonaxisRange:[-30,60],lataxisRange:[-40,40],projType:"mercator",projRotate:[0,0,0]},"north america":{lonaxisRange:[-180,-45],lataxisRange:[5,85],projType:"conic conformal",projRotate:[-100,0,0],projParallels:[29.5,45.5]},"south america":{lonaxisRange:[-100,-30],lataxisRange:[-60,15],projType:"mercator",projRotate:[0,0,0]},antarctica:{lonaxisRange:[-180,180],lataxisRange:[-90,-60],projType:"equirectangular",projRotate:[0,0,0]},oceania:{lonaxisRange:[-180,180],lataxisRange:[-50,25],projType:"equirectangular",projRotate:[0,0,0]}};Mv.clipPad=.001;Mv.precision=.1;Mv.landColor="#F0DC82";Mv.waterColor="#3399FF";Mv.locationmodeToLayer={"ISO-3":"countries","USA-states":"subunits","country names":"countries"};Mv.sphereSVG={type:"Sphere"};Mv.fillLayers={ocean:1,land:1,lakes:1};Mv.lineLayers={subunits:1,countries:1,coastlines:1,rivers:1,frame:1};Mv.layers=["bg","ocean","land","lakes","subunits","countries","coastlines","rivers","lataxis","lonaxis","frame","backplot","frontplot"];Mv.layersForChoropleth=["bg","ocean","land","subunits","countries","coastlines","lataxis","lonaxis","frame","backplot","rivers","lakes","frontplot"];Mv.layerNameToAdjective={ocean:"ocean",land:"land",lakes:"lake",subunits:"subunit",countries:"country",coastlines:"coastline",rivers:"river",frame:"frame"}});var MZ=ye((wF,JRe)=>{(function(e,t){typeof wF=="object"&&typeof JRe!="undefined"?t(wF):(e=e||self,t(e.topojson=e.topojson||{}))})(wF,function(e){"use strict";function t(M){return M}function r(M){if(M==null)return t;var T,L,x=M.scale[0],C=M.scale[1],S=M.translate[0],g=M.translate[1];return function(P,E){E||(T=L=0);var z=2,q=P.length,V=new Array(q);for(V[0]=(T+=P[0])*x+S,V[1]=(L+=P[1])*C+g;zS&&(S=z[0]),z[1]g&&(g=z[1])}function E(z){switch(z.type){case"GeometryCollection":z.geometries.forEach(E);break;case"Point":P(z.coordinates);break;case"MultiPoint":z.coordinates.forEach(P);break}}M.arcs.forEach(function(z){for(var q=-1,V=z.length,G;++qS&&(S=G[0]),G[1]g&&(g=G[1])});for(L in M.objects)E(M.objects[L]);return[x,C,S,g]}function i(M,T){for(var L,x=M.length,C=x-T;C<--x;)L=M[C],M[C++]=M[x],M[x]=L}function a(M,T){return typeof T=="string"&&(T=M.objects[T]),T.type==="GeometryCollection"?{type:"FeatureCollection",features:T.geometries.map(function(L){return o(M,L)})}:o(M,T)}function o(M,T){var L=T.id,x=T.bbox,C=T.properties==null?{}:T.properties,S=s(M,T);return L==null&&x==null?{type:"Feature",properties:C,geometry:S}:x==null?{type:"Feature",id:L,properties:C,geometry:S}:{type:"Feature",id:L,bbox:x,properties:C,geometry:S}}function s(M,T){var L=r(M.transform),x=M.arcs;function C(q,V){V.length&&V.pop();for(var G=x[q<0?~q:q],Z=0,j=G.length;Z1)x=f(M,T,L);else for(C=0,x=new Array(S=M.arcs.length);C1)for(var V=1,G=P(z[0]),Z,j;VG&&(j=z[0],z[0]=z[V],z[V]=j,G=Z);return z}).filter(function(E){return E.length>0})}}function m(M,T){for(var L=0,x=M.length;L>>1;M[C]=2))throw new Error("n must be \u22652");E=M.bbox||n(M);var L=E[0],x=E[1],C=E[2],S=E[3],g;T={scale:[C-L?(C-L)/(g-1):1,S-x?(S-x)/(g-1):1],translate:[L,x]}}else E=M.bbox;var P=p(T),E,z,q=M.objects,V={};function G(N){return P(N)}function Z(N){var H;switch(N.type){case"GeometryCollection":H={type:"GeometryCollection",geometries:N.geometries.map(Z)};break;case"Point":H={type:"Point",coordinates:G(N.coordinates)};break;case"MultiPoint":H={type:"MultiPoint",coordinates:N.coordinates.map(G)};break;default:return N}return N.id!=null&&(H.id=N.id),N.bbox!=null&&(H.bbox=N.bbox),N.properties!=null&&(H.properties=N.properties),H}function j(N){var H=0,ie=1,ae=N.length,_e,Ee=new Array(ae);for(Ee[0]=P(N[0],0);++H{"use strict";var EZ=$Re.exports={},kFt=ck().locationmodeToLayer,CFt=MZ().feature;EZ.getTopojsonName=function(e){return[e.scope.replace(/ /g,"-"),"_",e.resolution.toString(),"m"].join("")};EZ.getTopojsonPath=function(e,t){return e+=e.endsWith("/")?"":"/",`${e}${t}.json`};EZ.getTopojsonFeatures=function(e,t){var r=kFt[e.locationmode],n=t.objects[r];return CFt(t,n).features}});var fx=ye(fk=>{"use strict";var LFt=fs().BADNUM;fk.calcTraceToLineCoords=function(e){for(var t=e[0].trace,r=t.connectgaps,n=[],i=[],a=0;a0&&(n.push(i),i=[])}return i.length>0&&n.push(i),n};fk.makeLine=function(e){return e.length===1?{type:"LineString",coordinates:e[0]}:{type:"MultiLineString",coordinates:e}};fk.makePolygon=function(e){if(e.length===1)return{type:"Polygon",coordinates:e};for(var t=new Array(e.length),r=0;r{QRe.exports={AFG:"afghan",ALA:"\\b\\wland",ALB:"albania",DZA:"algeria",ASM:"^(?=.*americ).*samoa",AND:"andorra",AGO:"angola",AIA:"anguill?a",ATA:"antarctica",ATG:"antigua",ARG:"argentin",ARM:"armenia",ABW:"^(?!.*bonaire).*\\baruba",AUS:"australia",AUT:"^(?!.*hungary).*austria|\\baustri.*\\bemp",AZE:"azerbaijan",BHS:"bahamas",BHR:"bahrain",BGD:"bangladesh|^(?=.*east).*paki?stan",BRB:"barbados",BLR:"belarus|byelo",BEL:"^(?!.*luxem).*belgium",BLZ:"belize|^(?=.*british).*honduras",BEN:"benin|dahome",BMU:"bermuda",BTN:"bhutan",BOL:"bolivia",BES:"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\bbes.?islands",BIH:"herzegovina|bosnia",BWA:"botswana|bechuana",BVT:"bouvet",BRA:"brazil",IOT:"british.?indian.?ocean",BRN:"brunei",BGR:"bulgaria",BFA:"burkina|\\bfaso|upper.?volta",BDI:"burundi",CPV:"verde",KHM:"cambodia|kampuchea|khmer",CMR:"cameroon",CAN:"canada",CYM:"cayman",CAF:"\\bcentral.african.republic",TCD:"\\bchad",CHL:"\\bchile",CHN:"^(?!.*\\bmac)(?!.*\\bhong)(?!.*\\btai)(?!.*\\brep).*china|^(?=.*peo)(?=.*rep).*china",CXR:"christmas",CCK:"\\bcocos|keeling",COL:"colombia",COM:"comoro",COG:"^(?!.*\\bdem)(?!.*\\bd[\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\bcongo",COK:"\\bcook",CRI:"costa.?rica",CIV:"ivoire|ivory",HRV:"croatia",CUB:"\\bcuba",CUW:"^(?!.*bonaire).*\\bcura(c|\xE7)ao",CYP:"cyprus",CSK:"czechoslovakia",CZE:"^(?=.*rep).*czech|czechia|bohemia",COD:"\\bdem.*congo|congo.*\\bdem|congo.*\\bd[\\.]?r|\\bd[\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc",DNK:"denmark",DJI:"djibouti",DMA:"dominica(?!n)",DOM:"dominican.rep",ECU:"ecuador",EGY:"egypt",SLV:"el.?salvador",GNQ:"guine.*eq|eq.*guine|^(?=.*span).*guinea",ERI:"eritrea",EST:"estonia",ETH:"ethiopia|abyssinia",FLK:"falkland|malvinas",FRO:"faroe|faeroe",FJI:"fiji",FIN:"finland",FRA:"^(?!.*\\bdep)(?!.*martinique).*france|french.?republic|\\bgaul",GUF:"^(?=.*french).*guiana",PYF:"french.?polynesia|tahiti",ATF:"french.?southern",GAB:"gabon",GMB:"gambia",GEO:"^(?!.*south).*georgia",DDR:"german.?democratic.?republic|democratic.?republic.*germany|east.germany",DEU:"^(?!.*east).*germany|^(?=.*\\bfed.*\\brep).*german",GHA:"ghana|gold.?coast",GIB:"gibraltar",GRC:"greece|hellenic|hellas",GRL:"greenland",GRD:"grenada",GLP:"guadeloupe",GUM:"\\bguam",GTM:"guatemala",GGY:"guernsey",GIN:"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea",GNB:"bissau|^(?=.*portu).*guinea",GUY:"guyana|british.?guiana",HTI:"haiti",HMD:"heard.*mcdonald",VAT:"holy.?see|vatican|papal.?st",HND:"^(?!.*brit).*honduras",HKG:"hong.?kong",HUN:"^(?!.*austr).*hungary",ISL:"iceland",IND:"india(?!.*ocea)",IDN:"indonesia",IRN:"\\biran|persia",IRQ:"\\biraq|mesopotamia",IRL:"(^ireland)|(^republic.*ireland)",IMN:"^(?=.*isle).*\\bman",ISR:"israel",ITA:"italy",JAM:"jamaica",JPN:"japan",JEY:"jersey",JOR:"jordan",KAZ:"kazak",KEN:"kenya|british.?east.?africa|east.?africa.?prot",KIR:"kiribati",PRK:"^(?=.*democrat|people|north|d.*p.*.r).*\\bkorea|dprk|korea.*(d.*p.*r)",KWT:"kuwait",KGZ:"kyrgyz|kirghiz",LAO:"\\blaos?\\b",LVA:"latvia",LBN:"lebanon",LSO:"lesotho|basuto",LBR:"liberia",LBY:"libya",LIE:"liechtenstein",LTU:"lithuania",LUX:"^(?!.*belg).*luxem",MAC:"maca(o|u)",MDG:"madagascar|malagasy",MWI:"malawi|nyasa",MYS:"malaysia",MDV:"maldive",MLI:"\\bmali\\b",MLT:"\\bmalta",MHL:"marshall",MTQ:"martinique",MRT:"mauritania",MUS:"mauritius",MYT:"\\bmayotte",MEX:"\\bmexic",FSM:"fed.*micronesia|micronesia.*fed",MCO:"monaco",MNG:"mongolia",MNE:"^(?!.*serbia).*montenegro",MSR:"montserrat",MAR:"morocco|\\bmaroc",MOZ:"mozambique",MMR:"myanmar|burma",NAM:"namibia",NRU:"nauru",NPL:"nepal",NLD:"^(?!.*\\bant)(?!.*\\bcarib).*netherlands",ANT:"^(?=.*\\bant).*(nether|dutch)",NCL:"new.?caledonia",NZL:"new.?zealand",NIC:"nicaragua",NER:"\\bniger(?!ia)",NGA:"nigeria",NIU:"niue",NFK:"norfolk",MNP:"mariana",NOR:"norway",OMN:"\\boman|trucial",PAK:"^(?!.*east).*paki?stan",PLW:"palau",PSE:"palestin|\\bgaza|west.?bank",PAN:"panama",PNG:"papua|new.?guinea",PRY:"paraguay",PER:"peru",PHL:"philippines",PCN:"pitcairn",POL:"poland",PRT:"portugal",PRI:"puerto.?rico",QAT:"qatar",KOR:"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\bkorea(?!.*d.*p.*r)",MDA:"moldov|b(a|e)ssarabia",REU:"r(e|\xE9)union",ROU:"r(o|u|ou)mania",RUS:"\\brussia|soviet.?union|u\\.?s\\.?s\\.?r|socialist.?republics",RWA:"rwanda",BLM:"barth(e|\xE9)lemy",SHN:"helena",KNA:"kitts|\\bnevis",LCA:"\\blucia",MAF:"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)",SPM:"miquelon",VCT:"vincent",WSM:"^(?!.*amer).*samoa",SMR:"san.?marino",STP:"\\bs(a|\xE3)o.?tom(e|\xE9)",SAU:"\\bsa\\w*.?arabia",SEN:"senegal",SRB:"^(?!.*monte).*serbia",SYC:"seychell",SLE:"sierra",SGP:"singapore",SXM:"^(?!.*martin)(?!.*saba).*maarten",SVK:"^(?!.*cze).*slovak",SVN:"slovenia",SLB:"solomon",SOM:"somali",ZAF:"south.africa|s\\\\..?africa",SGS:"south.?georgia|sandwich",SSD:"\\bs\\w*.?sudan",ESP:"spain",LKA:"sri.?lanka|ceylon",SDN:"^(?!.*\\bs(?!u)).*sudan",SUR:"surinam|dutch.?guiana",SJM:"svalbard",SWZ:"swaziland",SWE:"sweden",CHE:"switz|swiss",SYR:"syria",TWN:"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china",TJK:"tajik",THA:"thailand|\\bsiam",MKD:"macedonia|fyrom",TLS:"^(?=.*leste).*timor|^(?=.*east).*timor",TGO:"togo",TKL:"tokelau",TON:"tonga",TTO:"trinidad|tobago",TUN:"tunisia",TUR:"turkey",TKM:"turkmen",TCA:"turks",TUV:"tuvalu",UGA:"uganda",UKR:"ukrain",ARE:"emirates|^u\\.?a\\.?e\\.?$|united.?arab.?em",GBR:"united.?kingdom|britain|^u\\.?k\\.?$",TZA:"tanzania",USA:"united.?states\\b(?!.*islands)|\\bu\\.?s\\.?a\\.?\\b|^\\s*u\\.?s\\.?\\b(?!.*islands)",UMI:"minor.?outlying.?is",URY:"uruguay",UZB:"uzbek",VUT:"vanuatu|new.?hebrides",VEN:"venezuela",VNM:"^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam",VGB:"^(?=.*\\bu\\.?\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin",VIR:"^(?=.*\\bu\\.?\\s?s).*virgin|^(?=.*states).*virgin",WLF:"futuna|wallis",ESH:"western.sahara",YEM:"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\bp\\.?d\\.?r).*yemen",YMD:"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\bp\\.?d\\.?r).*yemen",YUG:"yugoslavia",ZMB:"zambia|northern.?rhodesia",EAZ:"zanzibar",ZWE:"zimbabwe|^(?!.*northern).*rhodesia"}});var MF=ye(ic=>{"use strict";Object.defineProperty(ic,"__esModule",{value:!0});var qp=63710088e-1,CZ={centimeters:qp*100,centimetres:qp*100,degrees:360/(2*Math.PI),feet:qp*3.28084,inches:qp*39.37,kilometers:qp/1e3,kilometres:qp/1e3,meters:qp,metres:qp,miles:qp/1609.344,millimeters:qp*1e3,millimetres:qp*1e3,nauticalmiles:qp/1852,radians:1,yards:qp*1.0936},kZ={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,nauticalmiles:29155334959812285e-23,millimeters:1e6,millimetres:1e6,yards:1.195990046};function hx(e,t,r={}){let n={type:"Feature"};return(r.id===0||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function PFt(e,t,r={}){switch(e){case"Point":return LZ(t).geometry;case"LineString":return IZ(t).geometry;case"Polygon":return PZ(t).geometry;case"MultiPoint":return rDe(t).geometry;case"MultiLineString":return tDe(t).geometry;case"MultiPolygon":return iDe(t).geometry;default:throw new Error(e+" is invalid")}}function LZ(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!AF(e[0])||!AF(e[1]))throw new Error("coordinates must contain numbers");return hx({type:"Point",coordinates:e},t,r)}function IFt(e,t,r={}){return SF(e.map(n=>LZ(n,t)),r)}function PZ(e,t,r={}){for(let i of e){if(i.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(i[i.length-1].length!==i[0].length)throw new Error("First and last Position are not equivalent.");for(let a=0;aPZ(n,t)),r)}function IZ(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return hx({type:"LineString",coordinates:e},t,r)}function DFt(e,t,r={}){return SF(e.map(n=>IZ(n,t)),r)}function SF(e,t={}){let r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function tDe(e,t,r={}){return hx({type:"MultiLineString",coordinates:e},t,r)}function rDe(e,t,r={}){return hx({type:"MultiPoint",coordinates:e},t,r)}function iDe(e,t,r={}){return hx({type:"MultiPolygon",coordinates:e},t,r)}function FFt(e,t,r={}){return hx({type:"GeometryCollection",geometries:e},t,r)}function zFt(e,t=0){if(t&&!(t>=0))throw new Error("precision must be a positive number");let r=Math.pow(10,t||0);return Math.round(e*r)/r}function nDe(e,t="kilometers"){let r=CZ[t];if(!r)throw new Error(t+" units is invalid");return e*r}function RZ(e,t="kilometers"){let r=CZ[t];if(!r)throw new Error(t+" units is invalid");return e/r}function qFt(e,t){return aDe(RZ(e,t))}function OFt(e){let t=e%360;return t<0&&(t+=360),t}function BFt(e){return e=e%360,e>180?e-360:e<-180?e+360:e}function aDe(e){return e%(2*Math.PI)*180/Math.PI}function NFt(e){return e%360*Math.PI/180}function UFt(e,t="kilometers",r="kilometers"){if(!(e>=0))throw new Error("length must be a positive number");return nDe(RZ(e,t),r)}function VFt(e,t="meters",r="kilometers"){if(!(e>=0))throw new Error("area must be a positive number");let n=kZ[t];if(!n)throw new Error("invalid original units");let i=kZ[r];if(!i)throw new Error("invalid final units");return e/n*i}function AF(e){return!isNaN(e)&&e!==null&&!Array.isArray(e)}function GFt(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function HFt(e){if(!e)throw new Error("bbox is required");if(!Array.isArray(e))throw new Error("bbox must be an Array");if(e.length!==4&&e.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");e.forEach(t=>{if(!AF(t))throw new Error("bbox must only contain numbers")})}function jFt(e){if(!e)throw new Error("id is required");if(["string","number"].indexOf(typeof e)===-1)throw new Error("id must be a number or a string")}ic.areaFactors=kZ;ic.azimuthToBearing=BFt;ic.bearingToAzimuth=OFt;ic.convertArea=VFt;ic.convertLength=UFt;ic.degreesToRadians=NFt;ic.earthRadius=qp;ic.factors=CZ;ic.feature=hx;ic.featureCollection=SF;ic.geometry=PFt;ic.geometryCollection=FFt;ic.isNumber=AF;ic.isObject=GFt;ic.lengthToDegrees=qFt;ic.lengthToRadians=RZ;ic.lineString=IZ;ic.lineStrings=DFt;ic.multiLineString=tDe;ic.multiPoint=rDe;ic.multiPolygon=iDe;ic.point=LZ;ic.points=IFt;ic.polygon=PZ;ic.polygons=RFt;ic.radiansToDegrees=aDe;ic.radiansToLength=nDe;ic.round=zFt;ic.validateBBox=HFt;ic.validateId=jFt});var kF=ye(Od=>{"use strict";Object.defineProperty(Od,"__esModule",{value:!0});var Wv=MF();function hk(e,t,r){if(e!==null)for(var n,i,a,o,s,l,u,c=0,f=0,h,d=e.type,v=d==="FeatureCollection",m=d==="Feature",b=v?e.features.length:1,p=0;pl||v>u||m>c){s=f,l=n,u=v,c=m,a=0;return}var b=Wv.lineString.call(void 0,[s,f],r.properties);if(t(b,n,i,m,a)===!1)return!1;a++,s=f})===!1)return!1}}})}function $Ft(e,t,r){var n=r,i=!1;return lDe(e,function(a,o,s,l,u){i===!1&&r===void 0?n=a:n=t(n,a,o,s,l,u),i=!0}),n}function uDe(e,t){if(!e)throw new Error("geojson is required");EF(e,function(r,n,i){if(r.geometry!==null){var a=r.geometry.type,o=r.geometry.coordinates;switch(a){case"LineString":if(t(r,n,i,0,0)===!1)return!1;break;case"Polygon":for(var s=0;s{"use strict";Object.defineProperty(CF,"__esModule",{value:!0});var cDe=MF(),rzt=kF();function dDe(e){return rzt.geomReduce.call(void 0,e,(t,r)=>t+izt(r),0)}function izt(e){let t=0,r;switch(e.type){case"Polygon":return fDe(e.coordinates);case"MultiPolygon":for(r=0;r0){t+=Math.abs(hDe(e[0]));for(let r=1;r=t?(n+2)%t:n+2],s=i[0]*FZ,l=a[1]*FZ,u=o[0]*FZ;r+=(u-s)*Math.sin(l),n++}return r*nzt}var azt=dDe;CF.area=dDe;CF.default=azt});var gDe=ye(LF=>{"use strict";Object.defineProperty(LF,"__esModule",{value:!0});var ozt=MF(),szt=kF();function pDe(e,t={}){let r=0,n=0,i=0;return szt.coordEach.call(void 0,e,function(a){r+=a[0],n+=a[1],i++},!0),ozt.point.call(void 0,[r/i,n/i],t.properties)}var lzt=pDe;LF.centroid=pDe;LF.default=lzt});var yDe=ye(PF=>{"use strict";Object.defineProperty(PF,"__esModule",{value:!0});var uzt=kF();function mDe(e,t={}){if(e.bbox!=null&&t.recompute!==!0)return e.bbox;let r=[1/0,1/0,-1/0,-1/0];return uzt.coordEach.call(void 0,e,n=>{r[0]>n[0]&&(r[0]=n[0]),r[1]>n[1]&&(r[1]=n[1]),r[2]{"use strict";var _De={alabama:"AL",alaska:"AK",arizona:"AZ",arkansas:"AR",california:"CA",colorado:"CO",connecticut:"CT",delaware:"DE","district of columbia":"DC",florida:"FL",georgia:"GA",hawaii:"HI",idaho:"ID",illinois:"IL",indiana:"IN",iowa:"IA",kansas:"KS",kentucky:"KY",louisiana:"LA",maine:"ME",maryland:"MD",massachusetts:"MA",michigan:"MI",minnesota:"MN",mississippi:"MS",missouri:"MO",montana:"MT",nebraska:"NE",nevada:"NV","new hampshire":"NH","new jersey":"NJ","new mexico":"NM","new york":"NY","north carolina":"NC","north dakota":"ND",ohio:"OH",oklahoma:"OK",oregon:"OR",pennsylvania:"PA","rhode island":"RI","south carolina":"SC","south dakota":"SD",tennessee:"TN",texas:"TX",utah:"UT",vermont:"VT",virginia:"VA",washington:"WA","washington dc":"DC","washington d.c.":"DC","west virginia":"WV",wisconsin:"WI",wyoming:"WY"},fzt=new Set(Object.values(_De));xDe.exports={usaLocationAbbreviations:fzt,usaLocationList:_De}});var dx=ye((qmr,SDe)=>{"use strict";var hzt=qa(),TDe=eDe(),{area:dzt}=vDe(),{centroid:vzt}=gDe(),{bbox:pzt}=yDe(),gzt=YS(),rw=K1(),mzt=Ay(),yzt=zS(),IF=zM(),{usaLocationAbbreviations:_zt,usaLocationList:xzt}=bDe(),wDe=Object.keys(TDe),bzt={"ISO-3":gzt,"USA-states":Tzt,"country names":wzt};function wzt(e){for(var t=0;t0&&c[f+1][0]<0)return f;return null}switch(n==="RUS"||n==="FJI"?a=function(c){var f;if(u(c)===null)f=c;else for(f=new Array(c.length),l=0;lf?h[d++]=[c[l][0]+360,c[l][1]]:l===f?(h[d++]=c[l],h[d++]=[c[l][0],-90]):h[d++]=c[l];var v=IF.tester(h);v.pts.pop(),i.push(v)}:a=function(c){i.push(IF.tester(c))},t.type){case"MultiPolygon":for(o=0;o0?v.properties.ct=Ezt(v):v.properties.ct=[NaN,NaN],h.fIn=c,h.fOut=v,i.push(v)}else rw.log(["Location",h.loc,"does not have a valid GeoJSON geometry.","Traces with locationmode *geojson-id* only support","*Polygon* and *MultiPolygon* geometries."].join(" "))}delete n[f]}switch(r.type){case"FeatureCollection":var l=r.features;for(a=0;ai&&(i=s,r=o)}else r=t;return vzt(r).geometry.coordinates}function kzt(e){var t=window.PlotlyGeoAssets||{},r=[];function n(l){return new Promise(function(u,c){hzt.json(l,function(f,h){if(f){delete t[l];var d=f.status===404?'GeoJSON at URL "'+l+'" does not exist.':"Unexpected error while fetching from "+l;return c(new Error(d))}return t[l]=h,u(h)})})}function i(l){return new Promise(function(u,c){var f=0,h=setInterval(function(){if(t[l]&&t[l]!=="pending")return clearInterval(h),u(t[l]);if(f>100)return clearInterval(h),c("Unexpected error while fetching from "+l);f++},50)})}for(var a=0;a{"use strict";var Lzt=qa(),Pzt=So(),MDe=ka(),EDe=sp(),Izt=EDe.stylePoints,Rzt=EDe.styleText;kDe.exports=function(t,r){r&&Dzt(t,r)};function Dzt(e,t){var r=t[0].trace,n=t[0].node3;n.style("opacity",t[0].trace.opacity),Izt(n,r,e),Rzt(n,r,e),n.selectAll("path.js-line").style("fill","none").each(function(i){var a=Lzt.select(this),o=i.trace,s=o.line||{};a.call(MDe.stroke,s.color).call(Pzt.dashLine,s.dash||"",s.width||0),o.fill!=="none"&&a.call(MDe.fill,o.fillcolor)})}});var NZ=ye((Bmr,PDe)=>{"use strict";var CDe=qa(),DF=Pr(),Fzt=TF().getTopojsonFeatures,qZ=fx(),RF=dx(),LDe=Mg().findExtremes,BZ=fs().BADNUM,zzt=O0().calcMarkerSize,OZ=Ru(),qzt=zZ();function Ozt(e,t,r){var n=t.layers.frontplot.select(".scatterlayer"),i=DF.makeTraceGroups(n,r,"trace scattergeo");function a(o,s){o.lonlat[0]===BZ&&CDe.select(s).remove()}i.selectAll("*").remove(),i.each(function(o){var s=CDe.select(this),l=o[0].trace;if(OZ.hasLines(l)||l.fill!=="none"){var u=qZ.calcTraceToLineCoords(o),c=l.fill!=="none"?qZ.makePolygon(u):qZ.makeLine(u);s.selectAll("path.js-line").data([{geojson:c,trace:l}]).enter().append("path").classed("js-line",!0).style("stroke-miterlimit",2)}OZ.hasMarkers(l)&&s.selectAll("path.point").data(DF.identity).enter().append("path").classed("point",!0).each(function(f){a(f,this)}),OZ.hasText(l)&&s.selectAll("g").data(DF.identity).enter().append("g").append("text").each(function(f){a(f,this)}),qzt(e,o)})}function Bzt(e,t){var r=e[0].trace,n=t[r.geo],i=n._subplot,a=r._length,o,s;if(DF.isArrayOrTypedArray(r.locations)){var l=r.locationmode,u=l==="geojson-id"?RF.extractTraceFeature(e):Fzt(r,i.topojson);for(o=0;o{"use strict";var Nzt=ef(),Uzt=fs().BADNUM,Vzt=yT(),Gzt=Pr().fillText,Hzt=tw();IDe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.xa,s=t.ya,l=t.subplot,u=l.projection.isLonLatOverEdges,c=l.project;function f(k){var M=k.lonlat;if(M[0]===Uzt||u(M))return 1/0;var T=c(M),L=c([r,n]),x=Math.abs(T[0]-L[0]),C=Math.abs(T[1]-L[1]),S=Math.max(3,k.mrc||0);return Math.max(Math.sqrt(x*x+C*C)-S,1-3/S)}if(Nzt.getClosest(i,f,t),t.index!==!1){var h=i[t.index],d=h.lonlat,v=[o.c2p(d),s.c2p(d)],m=h.mrc||1;t.x0=v[0]-m,t.x1=v[0]+m,t.y0=v[1]-m,t.y1=v[1]+m,t.loc=h.loc,t.lon=d[0],t.lat=d[1];var b={};b[a.geo]={_subplot:l};var p=a._module.formatLabels(h,a,b);return t.lonLabel=p.lonLabel,t.latLabel=p.latLabel,t.color=Vzt(a,h),t.extraText=jzt(a,h,t,i[0].t.labels),t.hovertemplate=a.hovertemplate,[t]}};function jzt(e,t,r,n){if(e.hovertemplate)return;var i=t.hi||e.hoverinfo,a=i==="all"?Hzt.hoverinfo.flags:i.split("+"),o=a.indexOf("location")!==-1&&Array.isArray(e.locations),s=a.indexOf("lon")!==-1,l=a.indexOf("lat")!==-1,u=a.indexOf("text")!==-1,c=[];function f(h){return h+"\xB0"}return o?c.push(t.loc):s&&l?c.push("("+f(r.latLabel)+", "+f(r.lonLabel)+")"):s?c.push(n.lon+f(r.lonLabel)):l&&c.push(n.lat+f(r.latLabel)),u&&Gzt(t,e,c),c.join("
")}});var FDe=ye((Umr,DDe)=>{"use strict";DDe.exports=function(t,r,n,i,a){t.lon=r.lon,t.lat=r.lat,t.location=r.loc?r.loc:null;var o=i[a];return o.fIn&&o.fIn.properties&&(t.properties=o.fIn.properties),t}});var ODe=ye((Vmr,qDe)=>{"use strict";var zDe=Ru(),Wzt=fs().BADNUM;qDe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l,u,c,f,h,d=!zDe.hasMarkers(s)&&!zDe.hasText(s);if(d)return[];if(r===!1)for(h=0;h{(function(e,t){t(typeof FF=="object"&&typeof BDe!="undefined"?FF:e.d3=e.d3||{})})(FF,function(e){"use strict";function t(ke,be){return kebe?1:ke>=be?0:NaN}function r(ke){return ke.length===1&&(ke=n(ke)),{left:function(be,Be,Le,me){for(Le==null&&(Le=0),me==null&&(me=be.length);Le>>1;ke(be[Pe],Be)<0?Le=Pe+1:me=Pe}return Le},right:function(be,Be,Le,me){for(Le==null&&(Le=0),me==null&&(me=be.length);Le>>1;ke(be[Pe],Be)>0?me=Pe:Le=Pe+1}return Le}}}function n(ke){return function(be,Be){return t(ke(be),Be)}}var i=r(t),a=i.right,o=i.left;function s(ke,be){be==null&&(be=l);for(var Be=0,Le=ke.length-1,me=ke[0],Pe=new Array(Le<0?0:Le);Beke?1:be>=ke?0:NaN}function f(ke){return ke===null?NaN:+ke}function h(ke,be){var Be=ke.length,Le=0,me=-1,Pe=0,ce,He,lt=0;if(be==null)for(;++me1)return lt/(Le-1)}function d(ke,be){var Be=h(ke,be);return Be&&Math.sqrt(Be)}function v(ke,be){var Be=ke.length,Le=-1,me,Pe,ce;if(be==null){for(;++Le=me)for(Pe=ce=me;++Leme&&(Pe=me),ce=me)for(Pe=ce=me;++Leme&&(Pe=me),ce0)return[ke];if((Le=be0)for(ke=Math.ceil(ke/He),be=Math.floor(be/He),ce=new Array(Pe=Math.ceil(be-ke+1));++me=0?(Pe>=L?10:Pe>=x?5:Pe>=C?2:1)*Math.pow(10,me):-Math.pow(10,-me)/(Pe>=L?10:Pe>=x?5:Pe>=C?2:1)}function P(ke,be,Be){var Le=Math.abs(be-ke)/Math.max(0,Be),me=Math.pow(10,Math.floor(Math.log(Le)/Math.LN10)),Pe=Le/me;return Pe>=L?me*=10:Pe>=x?me*=5:Pe>=C&&(me*=2),beat;)ct.pop(),--ar;var Vt=new Array(ar+1),rr;for(Pe=0;Pe<=ar;++Pe)rr=Vt[Pe]=[],rr.x0=Pe>0?ct[Pe-1]:Ht,rr.x1=Pe=1)return+Be(ke[Le-1],Le-1,ke);var Le,me=(Le-1)*be,Pe=Math.floor(me),ce=+Be(ke[Pe],Pe,ke),He=+Be(ke[Pe+1],Pe+1,ke);return ce+(He-ce)*(me-Pe)}}function V(ke,be,Be){return ke=p.call(ke,f).sort(t),Math.ceil((Be-be)/(2*(q(ke,.75)-q(ke,.25))*Math.pow(ke.length,-1/3)))}function G(ke,be,Be){return Math.ceil((Be-be)/(3.5*d(ke)*Math.pow(ke.length,-1/3)))}function Z(ke,be){var Be=ke.length,Le=-1,me,Pe;if(be==null){for(;++Le=me)for(Pe=me;++LePe&&(Pe=me)}else for(;++Le=me)for(Pe=me;++LePe&&(Pe=me);return Pe}function j(ke,be){var Be=ke.length,Le=Be,me=-1,Pe,ce=0;if(be==null)for(;++me=0;)for(ce=ke[be],Be=ce.length;--Be>=0;)Pe[--me]=ce[Be];return Pe}function ie(ke,be){var Be=ke.length,Le=-1,me,Pe;if(be==null){for(;++Le=me)for(Pe=me;++Leme&&(Pe=me)}else for(;++Le=me)for(Pe=me;++Leme&&(Pe=me);return Pe}function ae(ke,be){for(var Be=be.length,Le=new Array(Be);Be--;)Le[Be]=ke[be[Be]];return Le}function _e(ke,be){if(Be=ke.length){var Be,Le=0,me=0,Pe,ce=ke[me];for(be==null&&(be=t);++Le{(function(e,t){typeof zF=="object"&&typeof NDe!="undefined"?t(zF,dk()):(e=e||self,t(e.d3=e.d3||{},e.d3))})(zF,function(e,t){"use strict";function r(){return new n}function n(){this.reset()}n.prototype={constructor:n,reset:function(){this.s=this.t=0},add:function(kt){a(i,kt,this.t),a(this,i.s,this.s),this.s?this.t+=i.t:this.s=i.t},valueOf:function(){return this.s}};var i=new n;function a(kt,Zt,Er){var xr=kt.s=Zt+Er,Kr=xr-Zt,Mi=xr-Kr;kt.t=Zt-Mi+(Er-Kr)}var o=1e-6,s=1e-12,l=Math.PI,u=l/2,c=l/4,f=l*2,h=180/l,d=l/180,v=Math.abs,m=Math.atan,b=Math.atan2,p=Math.cos,k=Math.ceil,M=Math.exp,T=Math.log,L=Math.pow,x=Math.sin,C=Math.sign||function(kt){return kt>0?1:kt<0?-1:0},S=Math.sqrt,g=Math.tan;function P(kt){return kt>1?0:kt<-1?l:Math.acos(kt)}function E(kt){return kt>1?u:kt<-1?-u:Math.asin(kt)}function z(kt){return(kt=x(kt/2))*kt}function q(){}function V(kt,Zt){kt&&Z.hasOwnProperty(kt.type)&&Z[kt.type](kt,Zt)}var G={Feature:function(kt,Zt){V(kt.geometry,Zt)},FeatureCollection:function(kt,Zt){for(var Er=kt.features,xr=-1,Kr=Er.length;++xr=0?1:-1,Kr=xr*Er,Mi=p(Zt),Wi=x(Zt),dn=re*Wi,wn=ge*Mi+dn*p(Kr),On=dn*xr*x(Kr);ie.add(b(On,wn)),Ce=kt,ge=Mi,re=Wi}function me(kt){return ae.reset(),H(kt,Se),ae*2}function Pe(kt){return[b(kt[1],kt[0]),E(kt[2])]}function ce(kt){var Zt=kt[0],Er=kt[1],xr=p(Er);return[xr*p(Zt),xr*x(Zt),x(Er)]}function He(kt,Zt){return kt[0]*Zt[0]+kt[1]*Zt[1]+kt[2]*Zt[2]}function lt(kt,Zt){return[kt[1]*Zt[2]-kt[2]*Zt[1],kt[2]*Zt[0]-kt[0]*Zt[2],kt[0]*Zt[1]-kt[1]*Zt[0]]}function mt(kt,Zt){kt[0]+=Zt[0],kt[1]+=Zt[1],kt[2]+=Zt[2]}function Ht(kt,Zt){return[kt[0]*Zt,kt[1]*Zt,kt[2]*Zt]}function at(kt){var Zt=S(kt[0]*kt[0]+kt[1]*kt[1]+kt[2]*kt[2]);kt[0]/=Zt,kt[1]/=Zt,kt[2]/=Zt}var ct,ar,Vt,rr,tt,je,Ue,Ae,rt=r(),St,Tt,dt={point:Et,lineStart:jt,lineEnd:or,polygonStart:function(){dt.point=mr,dt.lineStart=Ar,dt.lineEnd=ei,rt.reset(),Se.polygonStart()},polygonEnd:function(){Se.polygonEnd(),dt.point=Et,dt.lineStart=jt,dt.lineEnd=or,ie<0?(ct=-(Vt=180),ar=-(rr=90)):rt>o?rr=90:rt<-o&&(ar=-90),Tt[0]=ct,Tt[1]=Vt},sphere:function(){ct=-(Vt=180),ar=-(rr=90)}};function Et(kt,Zt){St.push(Tt=[ct=kt,Vt=kt]),Ztrr&&(rr=Zt)}function pt(kt,Zt){var Er=ce([kt*d,Zt*d]);if(Ae){var xr=lt(Ae,Er),Kr=[xr[1],-xr[0],0],Mi=lt(Kr,xr);at(Mi),Mi=Pe(Mi);var Wi=kt-tt,dn=Wi>0?1:-1,wn=Mi[0]*h*dn,On,Yi=v(Wi)>180;Yi^(dn*ttrr&&(rr=On)):(wn=(wn+360)%360-180,Yi^(dn*ttrr&&(rr=Zt))),Yi?ktqr(ct,Vt)&&(Vt=kt):qr(kt,Vt)>qr(ct,Vt)&&(ct=kt):Vt>=ct?(ktVt&&(Vt=kt)):kt>tt?qr(ct,kt)>qr(ct,Vt)&&(Vt=kt):qr(kt,Vt)>qr(ct,Vt)&&(ct=kt)}else St.push(Tt=[ct=kt,Vt=kt]);Ztrr&&(rr=Zt),Ae=Er,tt=kt}function jt(){dt.point=pt}function or(){Tt[0]=ct,Tt[1]=Vt,dt.point=Et,Ae=null}function mr(kt,Zt){if(Ae){var Er=kt-tt;rt.add(v(Er)>180?Er+(Er>0?360:-360):Er)}else je=kt,Ue=Zt;Se.point(kt,Zt),pt(kt,Zt)}function Ar(){Se.lineStart()}function ei(){mr(je,Ue),Se.lineEnd(),v(rt)>o&&(ct=-(Vt=180)),Tt[0]=ct,Tt[1]=Vt,Ae=null}function qr(kt,Zt){return(Zt-=kt)<0?Zt+360:Zt}function jr(kt,Zt){return kt[0]-Zt[0]}function gt(kt,Zt){return kt[0]<=kt[1]?kt[0]<=Zt&&Zt<=kt[1]:Ztqr(xr[0],xr[1])&&(xr[1]=Kr[1]),qr(Kr[0],xr[1])>qr(xr[0],xr[1])&&(xr[0]=Kr[0])):Mi.push(xr=Kr);for(Wi=-1/0,Er=Mi.length-1,Zt=0,xr=Mi[Er];Zt<=Er;xr=Kr,++Zt)Kr=Mi[Zt],(dn=qr(xr[1],Kr[0]))>Wi&&(Wi=dn,ct=Kr[0],Vt=xr[1])}return St=Tt=null,ct===1/0||ar===1/0?[[NaN,NaN],[NaN,NaN]]:[[ct,ar],[Vt,rr]]}var Je,We,et,xt,At,Kt,Qt,Mr,Gr,Ir,Yr,_i,Pi,ai,mi,un,Fn={sphere:q,point:An,lineStart:Qn,lineEnd:Jn,polygonStart:function(){Fn.lineStart=Gt,Fn.lineEnd=wt},polygonEnd:function(){Fn.lineStart=Qn,Fn.lineEnd=Jn}};function An(kt,Zt){kt*=d,Zt*=d;var Er=p(Zt);Hn(Er*p(kt),Er*x(kt),x(Zt))}function Hn(kt,Zt,Er){++Je,et+=(kt-et)/Je,xt+=(Zt-xt)/Je,At+=(Er-At)/Je}function Qn(){Fn.point=Vi}function Vi(kt,Zt){kt*=d,Zt*=d;var Er=p(Zt);ai=Er*p(kt),mi=Er*x(kt),un=x(Zt),Fn.point=Kn,Hn(ai,mi,un)}function Kn(kt,Zt){kt*=d,Zt*=d;var Er=p(Zt),xr=Er*p(kt),Kr=Er*x(kt),Mi=x(Zt),Wi=b(S((Wi=mi*Mi-un*Kr)*Wi+(Wi=un*xr-ai*Mi)*Wi+(Wi=ai*Kr-mi*xr)*Wi),ai*xr+mi*Kr+un*Mi);We+=Wi,Kt+=Wi*(ai+(ai=xr)),Qt+=Wi*(mi+(mi=Kr)),Mr+=Wi*(un+(un=Mi)),Hn(ai,mi,un)}function Jn(){Fn.point=An}function Gt(){Fn.point=tr}function wt(){ir(_i,Pi),Fn.point=An}function tr(kt,Zt){_i=kt,Pi=Zt,kt*=d,Zt*=d,Fn.point=ir;var Er=p(Zt);ai=Er*p(kt),mi=Er*x(kt),un=x(Zt),Hn(ai,mi,un)}function ir(kt,Zt){kt*=d,Zt*=d;var Er=p(Zt),xr=Er*p(kt),Kr=Er*x(kt),Mi=x(Zt),Wi=mi*Mi-un*Kr,dn=un*xr-ai*Mi,wn=ai*Kr-mi*xr,On=S(Wi*Wi+dn*dn+wn*wn),Yi=E(On),$i=On&&-Yi/On;Gr+=$i*Wi,Ir+=$i*dn,Yr+=$i*wn,We+=Yi,Kt+=Yi*(ai+(ai=xr)),Qt+=Yi*(mi+(mi=Kr)),Mr+=Yi*(un+(un=Mi)),Hn(ai,mi,un)}function wr(kt){Je=We=et=xt=At=Kt=Qt=Mr=Gr=Ir=Yr=0,H(kt,Fn);var Zt=Gr,Er=Ir,xr=Yr,Kr=Zt*Zt+Er*Er+xr*xr;return Krl?kt+Math.round(-kt/f)*f:kt,Zt]}$r.invert=$r;function Ri(kt,Zt,Er){return(kt%=f)?Zt||Er?ti(en(kt),fn(Zt,Er)):en(kt):Zt||Er?fn(Zt,Er):$r}function Zi(kt){return function(Zt,Er){return Zt+=kt,[Zt>l?Zt-f:Zt<-l?Zt+f:Zt,Er]}}function en(kt){var Zt=Zi(kt);return Zt.invert=Zi(-kt),Zt}function fn(kt,Zt){var Er=p(kt),xr=x(kt),Kr=p(Zt),Mi=x(Zt);function Wi(dn,wn){var On=p(wn),Yi=p(dn)*On,$i=x(dn)*On,an=x(wn),Fi=an*Er+Yi*xr;return[b($i*Kr-Fi*Mi,Yi*Er-an*xr),E(Fi*Kr+$i*Mi)]}return Wi.invert=function(dn,wn){var On=p(wn),Yi=p(dn)*On,$i=x(dn)*On,an=x(wn),Fi=an*Kr-$i*Mi;return[b($i*Kr+an*Mi,Yi*Er+Fi*xr),E(Fi*Er-Yi*xr)]},Wi}function yn(kt){kt=Ri(kt[0]*d,kt[1]*d,kt.length>2?kt[2]*d:0);function Zt(Er){return Er=kt(Er[0]*d,Er[1]*d),Er[0]*=h,Er[1]*=h,Er}return Zt.invert=function(Er){return Er=kt.invert(Er[0]*d,Er[1]*d),Er[0]*=h,Er[1]*=h,Er},Zt}function Mn(kt,Zt,Er,xr,Kr,Mi){if(Er){var Wi=p(Zt),dn=x(Zt),wn=xr*Er;Kr==null?(Kr=Zt+xr*f,Mi=Zt-wn/2):(Kr=Ba(Wi,Kr),Mi=Ba(Wi,Mi),(xr>0?KrMi)&&(Kr+=xr*f));for(var On,Yi=Kr;xr>0?Yi>Mi:Yi1&&kt.push(kt.pop().concat(kt.shift()))},result:function(){var Er=kt;return kt=[],Zt=null,Er}}}function Wa(kt,Zt){return v(kt[0]-Zt[0])=0;--dn)Kr.point(($i=Yi[dn])[0],$i[1]);else xr(an.x,an.p.x,-1,Kr);an=an.p}an=an.o,Yi=an.z,Fi=!Fi}while(!an.v);Kr.lineEnd()}}}function da(kt){if(Zt=kt.length){for(var Zt,Er=0,xr=kt[0],Kr;++Er=0?1:-1,as=Ss*Zo,ws=as>l,Ho=Ca*Ka;if(jn.add(b(Ho*Ss*x(as),Ra*bo+Ho*p(as))),Wi+=ws?Zo+Ss*f:Zo,ws^Fi>=Er^Zn>=Er){var ml=lt(ce(an),ce(Ua));at(ml);var Ws=lt(Mi,ml);at(Ws);var Ls=(ws^Zo>=0?-1:1)*E(Ws[2]);(xr>Ls||xr===Ls&&(ml[0]||ml[1]))&&(dn+=ws^Zo>=0?1:-1)}}return(Wi<-o||Wi0){for(wn||(Kr.polygonStart(),wn=!0),Kr.lineStart(),bo=0;bo1&&Dn&2&&Ka.push(Ka.pop().concat(Ka.shift())),Yi.push(Ka.filter(Ct))}}return an}}function Ct(kt){return kt.length>1}function Sr(kt,Zt){return((kt=kt.x)[0]<0?kt[1]-u-o:u-kt[1])-((Zt=Zt.x)[0]<0?Zt[1]-u-o:u-Zt[1])}var Jr=Gn(function(){return!0},hi,Sn,[-l,-u]);function hi(kt){var Zt=NaN,Er=NaN,xr=NaN,Kr;return{lineStart:function(){kt.lineStart(),Kr=1},point:function(Mi,Wi){var dn=Mi>0?l:-l,wn=v(Mi-Zt);v(wn-l)0?u:-u),kt.point(xr,Er),kt.lineEnd(),kt.lineStart(),kt.point(dn,Er),kt.point(Mi,Er),Kr=0):xr!==dn&&wn>=l&&(v(Zt-xr)o?m((x(Zt)*(Mi=p(xr))*x(Er)-x(xr)*(Kr=p(Zt))*x(kt))/(Kr*Mi*Wi)):(Zt+xr)/2}function Sn(kt,Zt,Er,xr){var Kr;if(kt==null)Kr=Er*u,xr.point(-l,Kr),xr.point(0,Kr),xr.point(l,Kr),xr.point(l,0),xr.point(l,-Kr),xr.point(0,-Kr),xr.point(-l,-Kr),xr.point(-l,0),xr.point(-l,Kr);else if(v(kt[0]-Zt[0])>o){var Mi=kt[0]0,Kr=v(Zt)>o;function Mi(Yi,$i,an,Fi){Mn(Fi,kt,Er,an,Yi,$i)}function Wi(Yi,$i){return p(Yi)*p($i)>Zt}function dn(Yi){var $i,an,Fi,ta,Ca;return{lineStart:function(){ta=Fi=!1,Ca=1},point:function(Ra,La){var Ua=[Ra,La],Zn,Dn=Wi(Ra,La),Ka=xr?Dn?0:On(Ra,La):Dn?On(Ra+(Ra<0?l:-l),La):0;if(!$i&&(ta=Fi=Dn)&&Yi.lineStart(),Dn!==Fi&&(Zn=wn($i,Ua),(!Zn||Wa($i,Zn)||Wa(Ua,Zn))&&(Ua[2]=1)),Dn!==Fi)Ca=0,Dn?(Yi.lineStart(),Zn=wn(Ua,$i),Yi.point(Zn[0],Zn[1])):(Zn=wn($i,Ua),Yi.point(Zn[0],Zn[1],2),Yi.lineEnd()),$i=Zn;else if(Kr&&$i&&xr^Dn){var bo;!(Ka&an)&&(bo=wn(Ua,$i,!0))&&(Ca=0,xr?(Yi.lineStart(),Yi.point(bo[0][0],bo[0][1]),Yi.point(bo[1][0],bo[1][1]),Yi.lineEnd()):(Yi.point(bo[1][0],bo[1][1]),Yi.lineEnd(),Yi.lineStart(),Yi.point(bo[0][0],bo[0][1],3)))}Dn&&(!$i||!Wa($i,Ua))&&Yi.point(Ua[0],Ua[1]),$i=Ua,Fi=Dn,an=Ka},lineEnd:function(){Fi&&Yi.lineEnd(),$i=null},clean:function(){return Ca|(ta&&Fi)<<1}}}function wn(Yi,$i,an){var Fi=ce(Yi),ta=ce($i),Ca=[1,0,0],Ra=lt(Fi,ta),La=He(Ra,Ra),Ua=Ra[0],Zn=La-Ua*Ua;if(!Zn)return!an&&Yi;var Dn=Zt*La/Zn,Ka=-Zt*Ua/Zn,bo=lt(Ca,Ra),Zo=Ht(Ca,Dn),Ss=Ht(Ra,Ka);mt(Zo,Ss);var as=bo,ws=He(Zo,as),Ho=He(as,as),ml=ws*ws-Ho*(He(Zo,Zo)-1);if(!(ml<0)){var Ws=S(ml),Ls=Ht(as,(-ws-Ws)/Ho);if(mt(Ls,Zo),Ls=Pe(Ls),!an)return Ls;var va=Yi[0],no=$i[0],ys=Yi[1],rs=$i[1],Ql;no0^Ls[1]<(v(Ls[0]-va)l^(va<=Ls[0]&&Ls[0]<=no)){var pu=Ht(as,(-ws+Ws)/Ho);return mt(pu,Zo),[Ls,Pe(pu)]}}}function On(Yi,$i){var an=xr?kt:l-kt,Fi=0;return Yi<-an?Fi|=1:Yi>an&&(Fi|=2),$i<-an?Fi|=4:$i>an&&(Fi|=8),Fi}return Gn(Wi,dn,Mi,xr?[0,-kt]:[-l,kt-l])}function ki(kt,Zt,Er,xr,Kr,Mi){var Wi=kt[0],dn=kt[1],wn=Zt[0],On=Zt[1],Yi=0,$i=1,an=wn-Wi,Fi=On-dn,ta;if(ta=Er-Wi,!(!an&&ta>0)){if(ta/=an,an<0){if(ta0){if(ta>$i)return;ta>Yi&&(Yi=ta)}if(ta=Kr-Wi,!(!an&&ta<0)){if(ta/=an,an<0){if(ta>$i)return;ta>Yi&&(Yi=ta)}else if(an>0){if(ta0)){if(ta/=Fi,Fi<0){if(ta0){if(ta>$i)return;ta>Yi&&(Yi=ta)}if(ta=Mi-dn,!(!Fi&&ta<0)){if(ta/=Fi,Fi<0){if(ta>$i)return;ta>Yi&&(Yi=ta)}else if(Fi>0){if(ta0&&(kt[0]=Wi+Yi*an,kt[1]=dn+Yi*Fi),$i<1&&(Zt[0]=Wi+$i*an,Zt[1]=dn+$i*Fi),!0}}}}}var _n=1e9,ya=-_n;function ea(kt,Zt,Er,xr){function Kr(On,Yi){return kt<=On&&On<=Er&&Zt<=Yi&&Yi<=xr}function Mi(On,Yi,$i,an){var Fi=0,ta=0;if(On==null||(Fi=Wi(On,$i))!==(ta=Wi(Yi,$i))||wn(On,Yi)<0^$i>0)do an.point(Fi===0||Fi===3?kt:Er,Fi>1?xr:Zt);while((Fi=(Fi+$i+4)%4)!==ta);else an.point(Yi[0],Yi[1])}function Wi(On,Yi){return v(On[0]-kt)0?0:3:v(On[0]-Er)0?2:1:v(On[1]-Zt)0?1:0:Yi>0?3:2}function dn(On,Yi){return wn(On.x,Yi.x)}function wn(On,Yi){var $i=Wi(On,1),an=Wi(Yi,1);return $i!==an?$i-an:$i===0?Yi[1]-On[1]:$i===1?On[0]-Yi[0]:$i===2?On[1]-Yi[1]:Yi[0]-On[0]}return function(On){var Yi=On,$i=ma(),an,Fi,ta,Ca,Ra,La,Ua,Zn,Dn,Ka,bo,Zo={point:Ss,lineStart:ml,lineEnd:Ws,polygonStart:ws,polygonEnd:Ho};function Ss(va,no){Kr(va,no)&&Yi.point(va,no)}function as(){for(var va=0,no=0,ys=Fi.length;noxr&&(Uc-Nc)*(xr-pu)>(xu-pu)*(kt-Nc)&&++va:xu<=xr&&(Uc-Nc)*(xr-pu)<(xu-pu)*(kt-Nc)&&--va;return va}function ws(){Yi=$i,an=[],Fi=[],bo=!0}function Ho(){var va=as(),no=bo&&va,ys=(an=t.merge(an)).length;(no||ys)&&(On.polygonStart(),no&&(On.lineStart(),Mi(null,null,1,On),On.lineEnd()),ys&&Xo(an,dn,va,Mi,On),On.polygonEnd()),Yi=On,an=Fi=ta=null}function ml(){Zo.point=Ls,Fi&&Fi.push(ta=[]),Ka=!0,Dn=!1,Ua=Zn=NaN}function Ws(){an&&(Ls(Ca,Ra),La&&Dn&&$i.rejoin(),an.push($i.result())),Zo.point=Ss,Dn&&Yi.lineEnd()}function Ls(va,no){var ys=Kr(va,no);if(Fi&&ta.push([va,no]),Ka)Ca=va,Ra=no,La=ys,Ka=!1,ys&&(Yi.lineStart(),Yi.point(va,no));else if(ys&&Dn)Yi.point(va,no);else{var rs=[Ua=Math.max(ya,Math.min(_n,Ua)),Zn=Math.max(ya,Math.min(_n,Zn))],Ql=[va=Math.max(ya,Math.min(_n,va)),no=Math.max(ya,Math.min(_n,no))];ki(rs,Ql,kt,Zt,Er,xr)?(Dn||(Yi.lineStart(),Yi.point(rs[0],rs[1])),Yi.point(Ql[0],Ql[1]),ys||Yi.lineEnd(),bo=!1):ys&&(Yi.lineStart(),Yi.point(va,no),bo=!1)}Ua=va,Zn=no,Dn=ys}return Zo}}function Ma(){var kt=0,Zt=0,Er=960,xr=500,Kr,Mi,Wi;return Wi={stream:function(dn){return Kr&&Mi===dn?Kr:Kr=ea(kt,Zt,Er,xr)(Mi=dn)},extent:function(dn){return arguments.length?(kt=+dn[0][0],Zt=+dn[0][1],Er=+dn[1][0],xr=+dn[1][1],Kr=Mi=null,Wi):[[kt,Zt],[Er,xr]]}}}var _o=r(),No,po,Lo,ko={sphere:q,point:q,lineStart:Ds,lineEnd:q,polygonStart:q,polygonEnd:q};function Ds(){ko.point=ll,ko.lineEnd=Fs}function Fs(){ko.point=ko.lineEnd=q}function ll(kt,Zt){kt*=d,Zt*=d,No=kt,po=x(Zt),Lo=p(Zt),ko.point=ul}function ul(kt,Zt){kt*=d,Zt*=d;var Er=x(Zt),xr=p(Zt),Kr=v(kt-No),Mi=p(Kr),Wi=x(Kr),dn=xr*Wi,wn=Lo*Er-po*xr*Mi,On=po*Er+Lo*xr*Mi;_o.add(b(S(dn*dn+wn*wn),On)),No=kt,po=Er,Lo=xr}function zl(kt){return _o.reset(),H(kt,ko),+_o}var us=[null,null],il={type:"LineString",coordinates:us};function As(kt,Zt){return us[0]=kt,us[1]=Zt,zl(il)}var cl={Feature:function(kt,Zt){return zs(kt.geometry,Zt)},FeatureCollection:function(kt,Zt){for(var Er=kt.features,xr=-1,Kr=Er.length;++xr0&&(Kr=As(kt[Mi],kt[Mi-1]),Kr>0&&Er<=Kr&&xr<=Kr&&(Er+xr-Kr)*(1-Math.pow((Er-xr)/Kr,2))o}).map(an)).concat(t.range(k(Mi/On)*On,Kr,On).filter(function(Zn){return v(Zn%$i)>o}).map(Fi))}return La.lines=function(){return Ua().map(function(Zn){return{type:"LineString",coordinates:Zn}})},La.outline=function(){return{type:"Polygon",coordinates:[ta(xr).concat(Ca(Wi).slice(1),ta(Er).reverse().slice(1),Ca(dn).reverse().slice(1))]}},La.extent=function(Zn){return arguments.length?La.extentMajor(Zn).extentMinor(Zn):La.extentMinor()},La.extentMajor=function(Zn){return arguments.length?(xr=+Zn[0][0],Er=+Zn[1][0],dn=+Zn[0][1],Wi=+Zn[1][1],xr>Er&&(Zn=xr,xr=Er,Er=Zn),dn>Wi&&(Zn=dn,dn=Wi,Wi=Zn),La.precision(Ra)):[[xr,dn],[Er,Wi]]},La.extentMinor=function(Zn){return arguments.length?(Zt=+Zn[0][0],kt=+Zn[1][0],Mi=+Zn[0][1],Kr=+Zn[1][1],Zt>kt&&(Zn=Zt,Zt=kt,kt=Zn),Mi>Kr&&(Zn=Mi,Mi=Kr,Kr=Zn),La.precision(Ra)):[[Zt,Mi],[kt,Kr]]},La.step=function(Zn){return arguments.length?La.stepMajor(Zn).stepMinor(Zn):La.stepMinor()},La.stepMajor=function(Zn){return arguments.length?(Yi=+Zn[0],$i=+Zn[1],La):[Yi,$i]},La.stepMinor=function(Zn){return arguments.length?(wn=+Zn[0],On=+Zn[1],La):[wn,On]},La.precision=function(Zn){return arguments.length?(Ra=+Zn,an=Rn(Mi,Kr,90),Fi=_a(Zt,kt,Ra),ta=Rn(dn,Wi,90),Ca=_a(xr,Er,Ra),La):Ra},La.extentMajor([[-180,-90+o],[180,90-o]]).extentMinor([[-180,-80-o],[180,80+o]])}function ql(){return Vu()()}function xo(kt,Zt){var Er=kt[0]*d,xr=kt[1]*d,Kr=Zt[0]*d,Mi=Zt[1]*d,Wi=p(xr),dn=x(xr),wn=p(Mi),On=x(Mi),Yi=Wi*p(Er),$i=Wi*x(Er),an=wn*p(Kr),Fi=wn*x(Kr),ta=2*E(S(z(Mi-xr)+Wi*wn*z(Kr-Er))),Ca=x(ta),Ra=ta?function(La){var Ua=x(La*=ta)/Ca,Zn=x(ta-La)/Ca,Dn=Zn*Yi+Ua*an,Ka=Zn*$i+Ua*Fi,bo=Zn*dn+Ua*On;return[b(Ka,Dn)*h,b(bo,S(Dn*Dn+Ka*Ka))*h]}:function(){return[Er*h,xr*h]};return Ra.distance=ta,Ra}function Kl(kt){return kt}var Ns=r(),Hl=r(),ac,oa,qo,Oo,Ol={point:q,lineStart:q,lineEnd:q,polygonStart:function(){Ol.lineStart=Pc,Ol.lineEnd=Vf},polygonEnd:function(){Ol.lineStart=Ol.lineEnd=Ol.point=q,Ns.add(v(Hl)),Hl.reset()},result:function(){var kt=Ns/2;return Ns.reset(),kt}};function Pc(){Ol.point=Do}function Do(kt,Zt){Ol.point=nf,ac=qo=kt,oa=Oo=Zt}function nf(kt,Zt){Hl.add(Oo*kt-qo*Zt),qo=kt,Oo=Zt}function Vf(){nf(ac,oa)}var pl=1/0,Zc=pl,Jl=-pl,qs=Jl,yu={point:oc,lineStart:q,lineEnd:q,polygonStart:q,polygonEnd:q,result:function(){var kt=[[pl,Zc],[Jl,qs]];return Jl=qs=-(Zc=pl=1/0),kt}};function oc(kt,Zt){ktJl&&(Jl=kt),Ztqs&&(qs=Zt)}var Cf=0,sc=0,jh=0,Lf=0,cs=0,af=0,Gf=0,$l=0,fl=0,lc,Fu,Es,Hs,Go={point:ps,lineStart:uc,lineEnd:Os,polygonStart:function(){Go.lineStart=od,Go.lineEnd=Po},polygonEnd:function(){Go.point=ps,Go.lineStart=uc,Go.lineEnd=Os},result:function(){var kt=fl?[Gf/fl,$l/fl]:af?[Lf/af,cs/af]:jh?[Cf/jh,sc/jh]:[NaN,NaN];return Cf=sc=jh=Lf=cs=af=Gf=$l=fl=0,kt}};function ps(kt,Zt){Cf+=kt,sc+=Zt,++jh}function uc(){Go.point=xl}function xl(kt,Zt){Go.point=Gu,ps(Es=kt,Hs=Zt)}function Gu(kt,Zt){var Er=kt-Es,xr=Zt-Hs,Kr=S(Er*Er+xr*xr);Lf+=Kr*(Es+kt)/2,cs+=Kr*(Hs+Zt)/2,af+=Kr,ps(Es=kt,Hs=Zt)}function Os(){Go.point=ps}function od(){Go.point=sd}function Po(){Ko(lc,Fu)}function sd(kt,Zt){Go.point=Ko,ps(lc=Es=kt,Fu=Hs=Zt)}function Ko(kt,Zt){var Er=kt-Es,xr=Zt-Hs,Kr=S(Er*Er+xr*xr);Lf+=Kr*(Es+kt)/2,cs+=Kr*(Hs+Zt)/2,af+=Kr,Kr=Hs*kt-Es*Zt,Gf+=Kr*(Es+kt),$l+=Kr*(Hs+Zt),fl+=Kr*3,ps(Es=kt,Hs=Zt)}function Pa(kt){this._context=kt}Pa.prototype={_radius:4.5,pointRadius:function(kt){return this._radius=kt,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(kt,Zt){switch(this._point){case 0:{this._context.moveTo(kt,Zt),this._point=1;break}case 1:{this._context.lineTo(kt,Zt);break}default:{this._context.moveTo(kt+this._radius,Zt),this._context.arc(kt,Zt,this._radius,0,f);break}}},result:q};var of=r(),Hu,bl,Hf,Ic,yf,Bl={point:q,lineStart:function(){Bl.point=Ah},lineEnd:function(){Hu&&Qf(bl,Hf),Bl.point=q},polygonStart:function(){Hu=!0},polygonEnd:function(){Hu=null},result:function(){var kt=+of;return of.reset(),kt}};function Ah(kt,Zt){Bl.point=Qf,bl=Ic=kt,Hf=yf=Zt}function Qf(kt,Zt){Ic-=kt,yf-=Zt,of.add(S(Ic*Ic+yf*yf)),Ic=kt,yf=Zt}function _f(){this._string=[]}_f.prototype={_radius:4.5,_circle:Yc(4.5),pointRadius:function(kt){return(kt=+kt)!==this._radius&&(this._radius=kt,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._string.push("Z"),this._point=NaN},point:function(kt,Zt){switch(this._point){case 0:{this._string.push("M",kt,",",Zt),this._point=1;break}case 1:{this._string.push("L",kt,",",Zt);break}default:{this._circle==null&&(this._circle=Yc(this._radius)),this._string.push("M",kt,",",Zt,this._circle);break}}},result:function(){if(this._string.length){var kt=this._string.join("");return this._string=[],kt}else return null}};function Yc(kt){return"m0,"+kt+"a"+kt+","+kt+" 0 1,1 0,"+-2*kt+"a"+kt+","+kt+" 0 1,1 0,"+2*kt+"z"}function eh(kt,Zt){var Er=4.5,xr,Kr;function Mi(Wi){return Wi&&(typeof Er=="function"&&Kr.pointRadius(+Er.apply(this,arguments)),H(Wi,xr(Kr))),Kr.result()}return Mi.area=function(Wi){return H(Wi,xr(Ol)),Ol.result()},Mi.measure=function(Wi){return H(Wi,xr(Bl)),Bl.result()},Mi.bounds=function(Wi){return H(Wi,xr(yu)),yu.result()},Mi.centroid=function(Wi){return H(Wi,xr(Go)),Go.result()},Mi.projection=function(Wi){return arguments.length?(xr=Wi==null?(kt=null,Kl):(kt=Wi).stream,Mi):kt},Mi.context=function(Wi){return arguments.length?(Kr=Wi==null?(Zt=null,new _f):new Pa(Zt=Wi),typeof Er!="function"&&Kr.pointRadius(Er),Mi):Zt},Mi.pointRadius=function(Wi){return arguments.length?(Er=typeof Wi=="function"?Wi:(Kr.pointRadius(+Wi),+Wi),Mi):Er},Mi.projection(kt).context(Zt)}function th(kt){return{stream:ju(kt)}}function ju(kt){return function(Zt){var Er=new jf;for(var xr in kt)Er[xr]=kt[xr];return Er.stream=Zt,Er}}function jf(){}jf.prototype={constructor:jf,point:function(kt,Zt){this.stream.point(kt,Zt)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function cc(kt,Zt,Er){var xr=kt.clipExtent&&kt.clipExtent();return kt.scale(150).translate([0,0]),xr!=null&&kt.clipExtent(null),H(Er,kt.stream(yu)),Zt(yu.result()),xr!=null&&kt.clipExtent(xr),kt}function sf(kt,Zt,Er){return cc(kt,function(xr){var Kr=Zt[1][0]-Zt[0][0],Mi=Zt[1][1]-Zt[0][1],Wi=Math.min(Kr/(xr[1][0]-xr[0][0]),Mi/(xr[1][1]-xr[0][1])),dn=+Zt[0][0]+(Kr-Wi*(xr[1][0]+xr[0][0]))/2,wn=+Zt[0][1]+(Mi-Wi*(xr[1][1]+xr[0][1]))/2;kt.scale(150*Wi).translate([dn,wn])},Er)}function Nl(kt,Zt,Er){return sf(kt,[[0,0],Zt],Er)}function Kc(kt,Zt,Er){return cc(kt,function(xr){var Kr=+Zt,Mi=Kr/(xr[1][0]-xr[0][0]),Wi=(Kr-Mi*(xr[1][0]+xr[0][0]))/2,dn=-Mi*xr[0][1];kt.scale(150*Mi).translate([Wi,dn])},Er)}function Rc(kt,Zt,Er){return cc(kt,function(xr){var Kr=+Zt,Mi=Kr/(xr[1][1]-xr[0][1]),Wi=-Mi*xr[0][0],dn=(Kr-Mi*(xr[1][1]+xr[0][1]))/2;kt.scale(150*Mi).translate([Wi,dn])},Er)}var gs=16,Wf=p(30*d);function Wh(kt,Zt){return+Zt?lf(kt,Zt):rh(kt)}function rh(kt){return ju({point:function(Zt,Er){Zt=kt(Zt,Er),this.stream.point(Zt[0],Zt[1])}})}function lf(kt,Zt){function Er(xr,Kr,Mi,Wi,dn,wn,On,Yi,$i,an,Fi,ta,Ca,Ra){var La=On-xr,Ua=Yi-Kr,Zn=La*La+Ua*Ua;if(Zn>4*Zt&&Ca--){var Dn=Wi+an,Ka=dn+Fi,bo=wn+ta,Zo=S(Dn*Dn+Ka*Ka+bo*bo),Ss=E(bo/=Zo),as=v(v(bo)-1)Zt||v((La*Ws+Ua*Ls)/Zn-.5)>.3||Wi*an+dn*Fi+wn*ta2?va[2]%360*d:0,Ws()):[dn*h,wn*h,On*h]},Ho.angle=function(va){return arguments.length?($i=va%360*d,Ws()):$i*h},Ho.reflectX=function(va){return arguments.length?(an=va?-1:1,Ws()):an<0},Ho.reflectY=function(va){return arguments.length?(Fi=va?-1:1,Ws()):Fi<0},Ho.precision=function(va){return arguments.length?(bo=Wh(Zo,Ka=va*va),Ls()):S(Ka)},Ho.fitExtent=function(va,no){return sf(Ho,va,no)},Ho.fitSize=function(va,no){return Nl(Ho,va,no)},Ho.fitWidth=function(va,no){return Kc(Ho,va,no)},Ho.fitHeight=function(va,no){return Rc(Ho,va,no)};function Ws(){var va=js(Er,0,0,an,Fi,$i).apply(null,Zt(Mi,Wi)),no=($i?js:ih)(Er,xr-va[0],Kr-va[1],an,Fi,$i);return Yi=Ri(dn,wn,On),Zo=ti(Zt,no),Ss=ti(Yi,Zo),bo=Wh(Zo,Ka),Ls()}function Ls(){return as=ws=null,Ho}return function(){return Zt=kt.apply(this,arguments),Ho.invert=Zt.invert&&ml,Ws()}}function ks(kt){var Zt=0,Er=l/3,xr=Dc(kt),Kr=xr(Zt,Er);return Kr.parallels=function(Mi){return arguments.length?xr(Zt=Mi[0]*d,Er=Mi[1]*d):[Zt*h,Er*h]},Kr}function bc(kt){var Zt=p(kt);function Er(xr,Kr){return[xr*Zt,x(Kr)/Zt]}return Er.invert=function(xr,Kr){return[xr/Zt,E(Kr*Zt)]},Er}function hu(kt,Zt){var Er=x(kt),xr=(Er+x(Zt))/2;if(v(xr)=.12&&Ra<.234&&Ca>=-.425&&Ca<-.214?Kr:Ra>=.166&&Ra<.234&&Ca>=-.214&&Ca<-.115?Wi:Er).invert(an)},Yi.stream=function(an){return kt&&Zt===an?kt:kt=nh([Er.stream(Zt=an),Kr.stream(an),Wi.stream(an)])},Yi.precision=function(an){return arguments.length?(Er.precision(an),Kr.precision(an),Wi.precision(an),$i()):Er.precision()},Yi.scale=function(an){return arguments.length?(Er.scale(an),Kr.scale(an*.35),Wi.scale(an),Yi.translate(Er.translate())):Er.scale()},Yi.translate=function(an){if(!arguments.length)return Er.translate();var Fi=Er.scale(),ta=+an[0],Ca=+an[1];return xr=Er.translate(an).clipExtent([[ta-.455*Fi,Ca-.238*Fi],[ta+.455*Fi,Ca+.238*Fi]]).stream(On),Mi=Kr.translate([ta-.307*Fi,Ca+.201*Fi]).clipExtent([[ta-.425*Fi+o,Ca+.12*Fi+o],[ta-.214*Fi-o,Ca+.234*Fi-o]]).stream(On),dn=Wi.translate([ta-.205*Fi,Ca+.212*Fi]).clipExtent([[ta-.214*Fi+o,Ca+.166*Fi+o],[ta-.115*Fi-o,Ca+.234*Fi-o]]).stream(On),$i()},Yi.fitExtent=function(an,Fi){return sf(Yi,an,Fi)},Yi.fitSize=function(an,Fi){return Nl(Yi,an,Fi)},Yi.fitWidth=function(an,Fi){return Kc(Yi,an,Fi)},Yi.fitHeight=function(an,Fi){return Rc(Yi,an,Fi)};function $i(){return kt=Zt=null,Yi}return Yi.scale(1070)}function zu(kt){return function(Zt,Er){var xr=p(Zt),Kr=p(Er),Mi=kt(xr*Kr);return[Mi*Kr*x(Zt),Mi*x(Er)]}}function Fc(kt){return function(Zt,Er){var xr=S(Zt*Zt+Er*Er),Kr=kt(xr),Mi=x(Kr),Wi=p(Kr);return[b(Zt*Mi,xr*Wi),E(xr&&Er*Mi/xr)]}}var wc=zu(function(kt){return S(2/(1+kt))});wc.invert=Fc(function(kt){return 2*E(kt/2)});function bd(){return Eu(wc).scale(124.75).clipAngle(180-.001)}var xf=zu(function(kt){return(kt=P(kt))&&kt/x(kt)});xf.invert=Fc(function(kt){return kt});function Pf(){return Eu(xf).scale(79.4188).clipAngle(180-.001)}function qu(kt,Zt){return[kt,T(g((u+Zt)/2))]}qu.invert=function(kt,Zt){return[kt,2*m(M(Zt))-u]};function bf(){return jl(qu).scale(961/f)}function jl(kt){var Zt=Eu(kt),Er=Zt.center,xr=Zt.scale,Kr=Zt.translate,Mi=Zt.clipExtent,Wi=null,dn,wn,On;Zt.scale=function($i){return arguments.length?(xr($i),Yi()):xr()},Zt.translate=function($i){return arguments.length?(Kr($i),Yi()):Kr()},Zt.center=function($i){return arguments.length?(Er($i),Yi()):Er()},Zt.clipExtent=function($i){return arguments.length?($i==null?Wi=dn=wn=On=null:(Wi=+$i[0][0],dn=+$i[0][1],wn=+$i[1][0],On=+$i[1][1]),Yi()):Wi==null?null:[[Wi,dn],[wn,On]]};function Yi(){var $i=l*xr(),an=Zt(yn(Zt.rotate()).invert([0,0]));return Mi(Wi==null?[[an[0]-$i,an[1]-$i],[an[0]+$i,an[1]+$i]]:kt===qu?[[Math.max(an[0]-$i,Wi),dn],[Math.min(an[0]+$i,wn),On]]:[[Wi,Math.max(an[1]-$i,dn)],[wn,Math.min(an[1]+$i,On)]])}return Yi()}function uf(kt){return g((u+kt)/2)}function Xh(kt,Zt){var Er=p(kt),xr=kt===Zt?x(kt):T(Er/p(Zt))/T(uf(Zt)/uf(kt)),Kr=Er*L(uf(kt),xr)/xr;if(!xr)return qu;function Mi(Wi,dn){Kr>0?dn<-u+o&&(dn=-u+o):dn>u-o&&(dn=u-o);var wn=Kr/L(uf(dn),xr);return[wn*x(xr*Wi),Kr-wn*p(xr*Wi)]}return Mi.invert=function(Wi,dn){var wn=Kr-dn,On=C(xr)*S(Wi*Wi+wn*wn),Yi=b(Wi,v(wn))*C(wn);return wn*xr<0&&(Yi-=l*C(Wi)*C(wn)),[Yi/xr,2*m(L(Kr/On,1/xr))-u]},Mi}function If(){return ks(Xh).scale(109.5).parallels([30,30])}function Cs(kt,Zt){return[kt,Zt]}Cs.invert=Cs;function du(){return Eu(Cs).scale(152.63)}function ku(kt,Zt){var Er=p(kt),xr=kt===Zt?x(kt):(Er-p(Zt))/(Zt-kt),Kr=Er/xr+kt;if(v(xr)o&&--xr>0);return[kt/(.8707+(Mi=Er*Er)*(-.131979+Mi*(-.013791+Mi*Mi*Mi*(.003971-.001529*Mi)))),Er]};function Tc(){return Eu(qc).scale(175.295)}function wl(kt,Zt){return[p(Zt)*x(kt),x(Zt)]}wl.invert=Fc(E);function vu(){return Eu(wl).scale(249.5).clipAngle(90+o)}function Oc(kt,Zt){var Er=p(Zt),xr=1+p(kt)*Er;return[Er*x(kt)/xr,x(Zt)/xr]}Oc.invert=Fc(function(kt){return 2*m(kt)});function ff(){return Eu(Oc).scale(250).clipAngle(142)}function fc(kt,Zt){return[T(g((u+Zt)/2)),-kt]}fc.invert=function(kt,Zt){return[-Zt,2*m(M(kt))-u]};function Bc(){var kt=jl(fc),Zt=kt.center,Er=kt.rotate;return kt.center=function(xr){return arguments.length?Zt([-xr[1],xr[0]]):(xr=Zt(),[xr[1],-xr[0]])},kt.rotate=function(xr){return arguments.length?Er([xr[0],xr[1],xr.length>2?xr[2]+90:90]):(xr=Er(),[xr[0],xr[1],xr[2]-90])},Er([0,0,90]).scale(159.155)}e.geoAlbers=nl,e.geoAlbersUsa=Mh,e.geoArea=me,e.geoAzimuthalEqualArea=bd,e.geoAzimuthalEqualAreaRaw=wc,e.geoAzimuthalEquidistant=Pf,e.geoAzimuthalEquidistantRaw=xf,e.geoBounds=Ge,e.geoCentroid=wr,e.geoCircle=ua,e.geoClipAntimeridian=Jr,e.geoClipCircle=En,e.geoClipExtent=Ma,e.geoClipRectangle=ea,e.geoConicConformal=If,e.geoConicConformalRaw=Xh,e.geoConicEqualArea=_u,e.geoConicEqualAreaRaw=hu,e.geoConicEquidistant=Xf,e.geoConicEquidistantRaw=ku,e.geoContains=bs,e.geoDistance=As,e.geoEqualEarth=Zf,e.geoEqualEarthRaw=cf,e.geoEquirectangular=du,e.geoEquirectangularRaw=Cs,e.geoGnomonic=ah,e.geoGnomonicRaw=Wl,e.geoGraticule=Vu,e.geoGraticule10=ql,e.geoIdentity=Zu,e.geoInterpolate=xo,e.geoLength=zl,e.geoMercator=bf,e.geoMercatorRaw=qu,e.geoNaturalEarth1=Tc,e.geoNaturalEarth1Raw=qc,e.geoOrthographic=vu,e.geoOrthographicRaw=wl,e.geoPath=eh,e.geoProjection=Eu,e.geoProjectionMutator=Dc,e.geoRotation=yn,e.geoStereographic=ff,e.geoStereographicRaw=Oc,e.geoStream=H,e.geoTransform=th,e.geoTransverseMercator=Bc,e.geoTransverseMercatorRaw=fc,Object.defineProperty(e,"__esModule",{value:!0})})});var VDe=ye((qF,UDe)=>{(function(e,t){typeof qF=="object"&&typeof UDe!="undefined"?t(qF,UZ(),dk()):t(e.d3=e.d3||{},e.d3,e.d3)})(qF,function(e,t,r){"use strict";var n=Math.abs,i=Math.atan,a=Math.atan2,o=Math.cos,s=Math.exp,l=Math.floor,u=Math.log,c=Math.max,f=Math.min,h=Math.pow,d=Math.round,v=Math.sign||function(ve){return ve>0?1:ve<0?-1:0},m=Math.sin,b=Math.tan,p=1e-6,k=1e-12,M=Math.PI,T=M/2,L=M/4,x=Math.SQRT1_2,C=G(2),S=G(M),g=M*2,P=180/M,E=M/180;function z(ve){return ve?ve/Math.sin(ve):1}function q(ve){return ve>1?T:ve<-1?-T:Math.asin(ve)}function V(ve){return ve>1?0:ve<-1?M:Math.acos(ve)}function G(ve){return ve>0?Math.sqrt(ve):0}function Z(ve){return ve=s(2*ve),(ve-1)/(ve+1)}function j(ve){return(s(ve)-s(-ve))/2}function N(ve){return(s(ve)+s(-ve))/2}function H(ve){return u(ve+G(ve*ve+1))}function ie(ve){return u(ve+G(ve*ve-1))}function ae(ve){var xe=b(ve/2),Ie=2*u(o(ve/2))/(xe*xe);function ze(Qe,Xe){var nt=o(Qe),qt=o(Xe),Wt=m(Xe),nr=qt*nt,fr=-((1-nr?u((1+nr)/2)/(1-nr):-.5)+Ie/(1+nr));return[fr*qt*m(Qe),fr*Wt]}return ze.invert=function(Qe,Xe){var nt=G(Qe*Qe+Xe*Xe),qt=-ve/2,Wt=50,nr;if(!nt)return[0,0];do{var fr=qt/2,br=o(fr),Fr=m(fr),Hr=Fr/br,ri=-u(n(br));qt-=nr=(2/Hr*ri-Ie*Hr-nt)/(-ri/(Fr*Fr)+1-Ie/(2*br*br))*(br<0?.7:1)}while(n(nr)>p&&--Wt>0);var Ci=m(qt);return[a(Qe*Ci,nt*o(qt)),q(Xe*Ci/nt)]},ze}function _e(){var ve=T,xe=t.geoProjectionMutator(ae),Ie=xe(ve);return Ie.radius=function(ze){return arguments.length?xe(ve=ze*E):ve*P},Ie.scale(179.976).clipAngle(147)}function Ee(ve,xe){var Ie=o(xe),ze=z(V(Ie*o(ve/=2)));return[2*Ie*m(ve)*ze,m(xe)*ze]}Ee.invert=function(ve,xe){if(!(ve*ve+4*xe*xe>M*M+p)){var Ie=ve,ze=xe,Qe=25;do{var Xe=m(Ie),nt=m(Ie/2),qt=o(Ie/2),Wt=m(ze),nr=o(ze),fr=m(2*ze),br=Wt*Wt,Fr=nr*nr,Hr=nt*nt,ri=1-Fr*qt*qt,Ci=ri?V(nr*qt)*G(cn=1/ri):cn=0,cn,sn=2*Ci*nr*nt-ve,Ln=Ci*Wt-xe,Yn=cn*(Fr*Hr+Ci*nr*qt*br),Aa=cn*(.5*Xe*fr-Ci*2*Wt*nt),fa=cn*.25*(fr*nt-Ci*Wt*Fr*Xe),$a=cn*(br*qt+Ci*Hr*nr),Co=Aa*fa-$a*Yn;if(!Co)break;var Qa=(Ln*Aa-sn*$a)/Co,mo=(sn*fa-Ln*Yn)/Co;Ie-=Qa,ze-=mo}while((n(Qa)>p||n(mo)>p)&&--Qe>0);return[Ie,ze]}};function Ce(){return t.geoProjection(Ee).scale(152.63)}function ge(ve){var xe=m(ve),Ie=o(ve),ze=ve>=0?1:-1,Qe=b(ze*ve),Xe=(1+xe-Ie)/2;function nt(qt,Wt){var nr=o(Wt),fr=o(qt/=2);return[(1+nr)*m(qt),(ze*Wt>-a(fr,Qe)-.001?0:-ze*10)+Xe+m(Wt)*Ie-(1+nr)*xe*fr]}return nt.invert=function(qt,Wt){var nr=0,fr=0,br=50;do{var Fr=o(nr),Hr=m(nr),ri=o(fr),Ci=m(fr),cn=1+ri,sn=cn*Hr-qt,Ln=Xe+Ci*Ie-cn*xe*Fr-Wt,Yn=cn*Fr/2,Aa=-Hr*Ci,fa=xe*cn*Hr/2,$a=Ie*ri+xe*Fr*Ci,Co=Aa*fa-$a*Yn,Qa=(Ln*Aa-sn*$a)/Co/2,mo=(sn*fa-Ln*Yn)/Co;n(mo)>2&&(mo/=2),nr-=Qa,fr-=mo}while((n(Qa)>p||n(mo)>p)&&--br>0);return ze*fr>-a(o(nr),Qe)-.001?[nr*2,fr]:null},nt}function re(){var ve=20*E,xe=ve>=0?1:-1,Ie=b(xe*ve),ze=t.geoProjectionMutator(ge),Qe=ze(ve),Xe=Qe.stream;return Qe.parallel=function(nt){return arguments.length?(Ie=b((xe=(ve=nt*E)>=0?1:-1)*ve),ze(ve)):ve*P},Qe.stream=function(nt){var qt=Qe.rotate(),Wt=Xe(nt),nr=(Qe.rotate([0,0]),Xe(nt)),fr=Qe.precision();return Qe.rotate(qt),Wt.sphere=function(){nr.polygonStart(),nr.lineStart();for(var br=xe*-180;xe*br<180;br+=xe*90)nr.point(br,xe*90);if(ve)for(;xe*(br-=3*xe*fr)>=-180;)nr.point(br,xe*-a(o(br*E/2),Ie)*P);nr.lineEnd(),nr.polygonEnd()},Wt},Qe.scale(218.695).center([0,28.0974])}function Se(ve,xe){var Ie=b(xe/2),ze=G(1-Ie*Ie),Qe=1+ze*o(ve/=2),Xe=m(ve)*ze/Qe,nt=Ie/Qe,qt=Xe*Xe,Wt=nt*nt;return[4/3*Xe*(3+qt-3*Wt),4/3*nt*(3+3*qt-Wt)]}Se.invert=function(ve,xe){if(ve*=3/8,xe*=3/8,!ve&&n(xe)>1)return null;var Ie=ve*ve,ze=xe*xe,Qe=1+Ie+ze,Xe=G((Qe-G(Qe*Qe-4*xe*xe))/2),nt=q(Xe)/3,qt=Xe?ie(n(xe/Xe))/3:H(n(ve))/3,Wt=o(nt),nr=N(qt),fr=nr*nr-Wt*Wt;return[v(ve)*2*a(j(qt)*Wt,.25-fr),v(xe)*2*a(nr*m(nt),.25+fr)]};function ke(){return t.geoProjection(Se).scale(66.1603)}var be=G(8),Be=u(1+C);function Le(ve,xe){var Ie=n(xe);return Iek&&--ze>0);return[ve/(o(Ie)*(be-1/m(Ie))),v(xe)*Ie]};function me(){return t.geoProjection(Le).scale(112.314)}function Pe(ve){var xe=2*M/ve;function Ie(ze,Qe){var Xe=t.geoAzimuthalEquidistantRaw(ze,Qe);if(n(ze)>T){var nt=a(Xe[1],Xe[0]),qt=G(Xe[0]*Xe[0]+Xe[1]*Xe[1]),Wt=xe*d((nt-T)/xe)+T,nr=a(m(nt-=Wt),2-o(nt));nt=Wt+q(M/qt*m(nr))-nr,Xe[0]=qt*o(nt),Xe[1]=qt*m(nt)}return Xe}return Ie.invert=function(ze,Qe){var Xe=G(ze*ze+Qe*Qe);if(Xe>T){var nt=a(Qe,ze),qt=xe*d((nt-T)/xe)+T,Wt=nt>qt?-1:1,nr=Xe*o(qt-nt),fr=1/b(Wt*V((nr-M)/G(M*(M-2*nr)+Xe*Xe)));nt=qt+2*i((fr+Wt*G(fr*fr-3))/3),ze=Xe*o(nt),Qe=Xe*m(nt)}return t.geoAzimuthalEquidistantRaw.invert(ze,Qe)},Ie}function ce(){var ve=5,xe=t.geoProjectionMutator(Pe),Ie=xe(ve),ze=Ie.stream,Qe=.01,Xe=-o(Qe*E),nt=m(Qe*E);return Ie.lobes=function(qt){return arguments.length?xe(ve=+qt):ve},Ie.stream=function(qt){var Wt=Ie.rotate(),nr=ze(qt),fr=(Ie.rotate([0,0]),ze(qt));return Ie.rotate(Wt),nr.sphere=function(){fr.polygonStart(),fr.lineStart();for(var br=0,Fr=360/ve,Hr=2*M/ve,ri=90-180/ve,Ci=T;br0&&n(Qe)>p);return ze<0?NaN:Ie}function at(ve,xe,Ie){return xe===void 0&&(xe=40),Ie===void 0&&(Ie=k),function(ze,Qe,Xe,nt){var qt,Wt,nr;Xe=Xe===void 0?0:+Xe,nt=nt===void 0?0:+nt;for(var fr=0;frqt){Xe-=Wt/=2,nt-=nr/=2;continue}qt=ri;var Ci=(Xe>0?-1:1)*Ie,cn=(nt>0?-1:1)*Ie,sn=ve(Xe+Ci,nt),Ln=ve(Xe,nt+cn),Yn=(sn[0]-br[0])/Ci,Aa=(sn[1]-br[1])/Ci,fa=(Ln[0]-br[0])/cn,$a=(Ln[1]-br[1])/cn,Co=$a*Yn-Aa*fa,Qa=(n(Co)<.5?.5:1)/Co;if(Wt=(Hr*fa-Fr*$a)*Qa,nr=(Fr*Aa-Hr*Yn)*Qa,Xe+=Wt,nt+=nr,n(Wt)0&&(qt[1]*=1+Wt/1.5*qt[0]*qt[0]),qt}return ze.invert=at(ze),ze}function ar(){return t.geoProjection(ct()).rotate([-16.5,-42]).scale(176.57).center([7.93,.09])}function Vt(ve,xe){var Ie=ve*m(xe),ze=30,Qe;do xe-=Qe=(xe+m(xe)-Ie)/(1+o(xe));while(n(Qe)>p&&--ze>0);return xe/2}function rr(ve,xe,Ie){function ze(Qe,Xe){return[ve*Qe*o(Xe=Vt(Ie,Xe)),xe*m(Xe)]}return ze.invert=function(Qe,Xe){return Xe=q(Xe/xe),[Qe/(ve*o(Xe)),q((2*Xe+m(2*Xe))/Ie)]},ze}var tt=rr(C/T,C,M);function je(){return t.geoProjection(tt).scale(169.529)}var Ue=2.00276,Ae=1.11072;function rt(ve,xe){var Ie=Vt(M,xe);return[Ue*ve/(1/o(xe)+Ae/o(Ie)),(xe+C*m(Ie))/Ue]}rt.invert=function(ve,xe){var Ie=Ue*xe,ze=xe<0?-L:L,Qe=25,Xe,nt;do nt=Ie-C*m(ze),ze-=Xe=(m(2*ze)+2*ze-M*m(nt))/(2*o(2*ze)+2+M*o(nt)*C*o(ze));while(n(Xe)>p&&--Qe>0);return nt=Ie-C*m(ze),[ve*(1/o(nt)+Ae/o(ze))/Ue,nt]};function St(){return t.geoProjection(rt).scale(160.857)}function Tt(ve){var xe=0,Ie=t.geoProjectionMutator(ve),ze=Ie(xe);return ze.parallel=function(Qe){return arguments.length?Ie(xe=Qe*E):xe*P},ze}function dt(ve,xe){return[ve*o(xe),xe]}dt.invert=function(ve,xe){return[ve/o(xe),xe]};function Et(){return t.geoProjection(dt).scale(152.63)}function pt(ve){if(!ve)return dt;var xe=1/b(ve);function Ie(ze,Qe){var Xe=xe+ve-Qe,nt=Xe&&ze*o(Qe)/Xe;return[Xe*m(nt),xe-Xe*o(nt)]}return Ie.invert=function(ze,Qe){var Xe=G(ze*ze+(Qe=xe-Qe)*Qe),nt=xe+ve-Xe;return[Xe/o(nt)*a(ze,Qe),nt]},Ie}function jt(){return Tt(pt).scale(123.082).center([0,26.1441]).parallel(45)}function or(ve){function xe(Ie,ze){var Qe=T-ze,Xe=Qe&&Ie*ve*m(Qe)/Qe;return[Qe*m(Xe)/ve,T-Qe*o(Xe)]}return xe.invert=function(Ie,ze){var Qe=Ie*ve,Xe=T-ze,nt=G(Qe*Qe+Xe*Xe),qt=a(Qe,Xe);return[(nt?nt/m(nt):1)*qt/ve,T-nt]},xe}function mr(){var ve=.5,xe=t.geoProjectionMutator(or),Ie=xe(ve);return Ie.fraction=function(ze){return arguments.length?xe(ve=+ze):ve},Ie.scale(158.837)}var Ar=rr(1,4/M,M);function ei(){return t.geoProjection(Ar).scale(152.63)}function qr(ve,xe,Ie,ze,Qe,Xe){var nt=o(Xe),qt;if(n(ve)>1||n(Xe)>1)qt=V(Ie*Qe+xe*ze*nt);else{var Wt=m(ve/2),nr=m(Xe/2);qt=2*q(G(Wt*Wt+xe*ze*nr*nr))}return n(qt)>p?[qt,a(ze*m(Xe),xe*Qe-Ie*ze*nt)]:[0,0]}function jr(ve,xe,Ie){return V((ve*ve+xe*xe-Ie*Ie)/(2*ve*xe))}function gt(ve){return ve-2*M*l((ve+M)/(2*M))}function Ge(ve,xe,Ie){for(var ze=[[ve[0],ve[1],m(ve[1]),o(ve[1])],[xe[0],xe[1],m(xe[1]),o(xe[1])],[Ie[0],Ie[1],m(Ie[1]),o(Ie[1])]],Qe=ze[2],Xe,nt=0;nt<3;++nt,Qe=Xe)Xe=ze[nt],Qe.v=qr(Xe[1]-Qe[1],Qe[3],Qe[2],Xe[3],Xe[2],Xe[0]-Qe[0]),Qe.point=[0,0];var qt=jr(ze[0].v[0],ze[2].v[0],ze[1].v[0]),Wt=jr(ze[0].v[0],ze[1].v[0],ze[2].v[0]),nr=M-qt;ze[2].point[1]=0,ze[0].point[0]=-(ze[1].point[0]=ze[0].v[0]/2);var fr=[ze[2].point[0]=ze[0].point[0]+ze[2].v[0]*o(qt),2*(ze[0].point[1]=ze[1].point[1]=ze[2].v[0]*m(qt))];function br(Fr,Hr){var ri=m(Hr),Ci=o(Hr),cn=new Array(3),sn;for(sn=0;sn<3;++sn){var Ln=ze[sn];if(cn[sn]=qr(Hr-Ln[1],Ln[3],Ln[2],Ci,ri,Fr-Ln[0]),!cn[sn][0])return Ln.point;cn[sn][1]=gt(cn[sn][1]-Ln.v[1])}var Yn=fr.slice();for(sn=0;sn<3;++sn){var Aa=sn==2?0:sn+1,fa=jr(ze[sn].v[0],cn[sn][0],cn[Aa][0]);cn[sn][1]<0&&(fa=-fa),sn?sn==1?(fa=Wt-fa,Yn[0]-=cn[sn][0]*o(fa),Yn[1]-=cn[sn][0]*m(fa)):(fa=nr-fa,Yn[0]+=cn[sn][0]*o(fa),Yn[1]+=cn[sn][0]*m(fa)):(Yn[0]+=cn[sn][0]*o(fa),Yn[1]-=cn[sn][0]*m(fa))}return Yn[0]/=3,Yn[1]/=3,Yn}return br}function Je(ve){return ve[0]*=E,ve[1]*=E,ve}function We(){return et([0,22],[45,22],[22.5,-22]).scale(380).center([22.5,2])}function et(ve,xe,Ie){var ze=t.geoCentroid({type:"MultiPoint",coordinates:[ve,xe,Ie]}),Qe=[-ze[0],-ze[1]],Xe=t.geoRotation(Qe),nt=Ge(Je(Xe(ve)),Je(Xe(xe)),Je(Xe(Ie)));nt.invert=at(nt);var qt=t.geoProjection(nt).rotate(Qe),Wt=qt.center;return delete qt.rotate,qt.center=function(nr){return arguments.length?Wt(Xe(nr)):Xe.invert(Wt())},qt.clipAngle(90)}function xt(ve,xe){var Ie=G(1-m(xe));return[2/S*ve*Ie,S*(1-Ie)]}xt.invert=function(ve,xe){var Ie=(Ie=xe/S-1)*Ie;return[Ie>0?ve*G(M/Ie)/2:0,q(1-Ie)]};function At(){return t.geoProjection(xt).scale(95.6464).center([0,30])}function Kt(ve){var xe=b(ve);function Ie(ze,Qe){return[ze,(ze?ze/m(ze):1)*(m(Qe)*o(ze)-xe*o(Qe))]}return Ie.invert=xe?function(ze,Qe){ze&&(Qe*=m(ze)/ze);var Xe=o(ze);return[ze,2*a(G(Xe*Xe+xe*xe-Qe*Qe)-Xe,xe-Qe)]}:function(ze,Qe){return[ze,q(ze?Qe*b(ze)/ze:Qe)]},Ie}function Qt(){return Tt(Kt).scale(249.828).clipAngle(90)}var Mr=G(3);function Gr(ve,xe){return[Mr*ve*(2*o(2*xe/3)-1)/S,Mr*S*m(xe/3)]}Gr.invert=function(ve,xe){var Ie=3*q(xe/(Mr*S));return[S*ve/(Mr*(2*o(2*Ie/3)-1)),Ie]};function Ir(){return t.geoProjection(Gr).scale(156.19)}function Yr(ve){var xe=o(ve);function Ie(ze,Qe){return[ze*xe,m(Qe)/xe]}return Ie.invert=function(ze,Qe){return[ze/xe,q(Qe*xe)]},Ie}function _i(){return Tt(Yr).parallel(38.58).scale(195.044)}function Pi(ve){var xe=o(ve);function Ie(ze,Qe){return[ze*xe,(1+xe)*b(Qe/2)]}return Ie.invert=function(ze,Qe){return[ze/xe,i(Qe/(1+xe))*2]},Ie}function ai(){return Tt(Pi).scale(124.75)}function mi(ve,xe){var Ie=G(8/(3*M));return[Ie*ve*(1-n(xe)/M),Ie*xe]}mi.invert=function(ve,xe){var Ie=G(8/(3*M)),ze=xe/Ie;return[ve/(Ie*(1-n(ze)/M)),ze]};function un(){return t.geoProjection(mi).scale(165.664)}function Fn(ve,xe){var Ie=G(4-3*m(n(xe)));return[2/G(6*M)*ve*Ie,v(xe)*G(2*M/3)*(2-Ie)]}Fn.invert=function(ve,xe){var Ie=2-n(xe)/G(2*M/3);return[ve*G(6*M)/(2*Ie),v(xe)*q((4-Ie*Ie)/3)]};function An(){return t.geoProjection(Fn).scale(165.664)}function Hn(ve,xe){var Ie=G(M*(4+M));return[2/Ie*ve*(1+G(1-4*xe*xe/(M*M))),4/Ie*xe]}Hn.invert=function(ve,xe){var Ie=G(M*(4+M))/2;return[ve*Ie/(1+G(1-xe*xe*(4+M)/(4*M))),xe*Ie/2]};function Qn(){return t.geoProjection(Hn).scale(180.739)}function Vi(ve,xe){var Ie=(2+T)*m(xe);xe/=2;for(var ze=0,Qe=1/0;ze<10&&n(Qe)>p;ze++){var Xe=o(xe);xe-=Qe=(xe+m(xe)*(Xe+2)-Ie)/(2*Xe*(1+Xe))}return[2/G(M*(4+M))*ve*(1+o(xe)),2*G(M/(4+M))*m(xe)]}Vi.invert=function(ve,xe){var Ie=xe*G((4+M)/M)/2,ze=q(Ie),Qe=o(ze);return[ve/(2/G(M*(4+M))*(1+Qe)),q((ze+Ie*(Qe+2))/(2+T))]};function Kn(){return t.geoProjection(Vi).scale(180.739)}function Jn(ve,xe){return[ve*(1+o(xe))/G(2+M),2*xe/G(2+M)]}Jn.invert=function(ve,xe){var Ie=G(2+M),ze=xe*Ie/2;return[Ie*ve/(1+o(ze)),ze]};function Gt(){return t.geoProjection(Jn).scale(173.044)}function wt(ve,xe){for(var Ie=(1+T)*m(xe),ze=0,Qe=1/0;ze<10&&n(Qe)>p;ze++)xe-=Qe=(xe+m(xe)-Ie)/(1+o(xe));return Ie=G(2+M),[ve*(1+o(xe))/Ie,2*xe/Ie]}wt.invert=function(ve,xe){var Ie=1+T,ze=G(Ie/2);return[ve*2*ze/(1+o(xe*=ze)),q((xe+m(xe))/Ie)]};function tr(){return t.geoProjection(wt).scale(173.044)}var ir=3+2*C;function wr(ve,xe){var Ie=m(ve/=2),ze=o(ve),Qe=G(o(xe)),Xe=o(xe/=2),nt=m(xe)/(Xe+C*ze*Qe),qt=G(2/(1+nt*nt)),Wt=G((C*Xe+(ze+Ie)*Qe)/(C*Xe+(ze-Ie)*Qe));return[ir*(qt*(Wt-1/Wt)-2*u(Wt)),ir*(qt*nt*(Wt+1/Wt)-2*i(nt))]}wr.invert=function(ve,xe){if(!(Xe=Se.invert(ve/1.2,xe*1.065)))return null;var Ie=Xe[0],ze=Xe[1],Qe=20,Xe;ve/=ir,xe/=ir;do{var nt=Ie/2,qt=ze/2,Wt=m(nt),nr=o(nt),fr=m(qt),br=o(qt),Fr=o(ze),Hr=G(Fr),ri=fr/(br+C*nr*Hr),Ci=ri*ri,cn=G(2/(1+Ci)),sn=C*br+(nr+Wt)*Hr,Ln=C*br+(nr-Wt)*Hr,Yn=sn/Ln,Aa=G(Yn),fa=Aa-1/Aa,$a=Aa+1/Aa,Co=cn*fa-2*u(Aa)-ve,Qa=cn*ri*$a-2*i(ri)-xe,mo=fr&&x*Hr*Wt*Ci/fr,Bo=(C*nr*br+Hr)/(2*(br+C*nr*Hr)*(br+C*nr*Hr)*Hr),Ps=-.5*ri*cn*cn*cn,Ts=Ps*mo,wo=Ps*Bo,To=(To=2*br+C*Hr*(nr-Wt))*To*Aa,hl=(C*nr*br*Hr+Fr)/To,Ul=-(C*Wt*fr)/(Hr*To),Lu=fa*Ts-2*hl/Aa+cn*(hl+hl/Yn),au=fa*wo-2*Ul/Aa+cn*(Ul+Ul/Yn),Js=ri*$a*Ts-2*mo/(1+Ci)+cn*$a*mo+cn*ri*(hl-hl/Yn),eu=ri*$a*wo-2*Bo/(1+Ci)+cn*$a*Bo+cn*ri*(Ul-Ul/Yn),dc=au*Js-eu*Lu;if(!dc)break;var Tl=(Qa*au-Co*eu)/dc,Al=(Co*Js-Qa*Lu)/dc;Ie-=Tl,ze=c(-T,f(T,ze-Al))}while((n(Tl)>p||n(Al)>p)&&--Qe>0);return n(n(ze)-T)ze){var br=G(fr),Fr=a(nr,Wt),Hr=Ie*d(Fr/Ie),ri=Fr-Hr,Ci=ve*o(ri),cn=(ve*m(ri)-ri*m(Ci))/(T-Ci),sn=Wa(ri,cn),Ln=(M-ve)/Fa(sn,Ci,M);Wt=br;var Yn=50,Aa;do Wt-=Aa=(ve+Fa(sn,Ci,Wt)*Ln-br)/(sn(Wt)*Ln);while(n(Aa)>p&&--Yn>0);nr=ri*m(Wt),Wtze){var Wt=G(qt),nr=a(nt,Xe),fr=Ie*d(nr/Ie),br=nr-fr;Xe=Wt*o(br),nt=Wt*m(br);for(var Fr=Xe-T,Hr=m(Xe),ri=nt/Hr,Ci=Xep||n(ri)>p)&&--Ci>0);return[br,Fr]},Wt}var jn=da(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);function Ha(){return t.geoProjection(jn).scale(149.995)}var vo=da(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);function Gn(){return t.geoProjection(vo).scale(153.93)}var Ct=da(5/6*M,-.62636,-.0344,0,1.3493,-.05524,0,.045);function Sr(){return t.geoProjection(Ct).scale(130.945)}function Jr(ve,xe){var Ie=ve*ve,ze=xe*xe;return[ve*(1-.162388*ze)*(.87-952426e-9*Ie*Ie),xe*(1+ze/12)]}Jr.invert=function(ve,xe){var Ie=ve,ze=xe,Qe=50,Xe;do{var nt=ze*ze;ze-=Xe=(ze*(1+nt/12)-xe)/(1+nt/4)}while(n(Xe)>p&&--Qe>0);Qe=50,ve/=1-.162388*nt;do{var qt=(qt=Ie*Ie)*qt;Ie-=Xe=(Ie*(.87-952426e-9*qt)-ve)/(.87-.00476213*qt)}while(n(Xe)>p&&--Qe>0);return[Ie,ze]};function hi(){return t.geoProjection(Jr).scale(131.747)}var hn=da(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Sn(){return t.geoProjection(hn).scale(131.087)}function En(ve){var xe=ve(T,0)[0]-ve(-T,0)[0];function Ie(ze,Qe){var Xe=ze>0?-.5:.5,nt=ve(ze+Xe*M,Qe);return nt[0]-=Xe*xe,nt}return ve.invert&&(Ie.invert=function(ze,Qe){var Xe=ze>0?-.5:.5,nt=ve.invert(ze+Xe*xe,Qe),qt=nt[0]-Xe*M;return qt<-M?qt+=2*M:qt>M&&(qt-=2*M),nt[0]=qt,nt}),Ie}function ki(ve,xe){var Ie=v(ve),ze=v(xe),Qe=o(xe),Xe=o(ve)*Qe,nt=m(ve)*Qe,qt=m(ze*xe);ve=n(a(nt,qt)),xe=q(Xe),n(ve-T)>p&&(ve%=T);var Wt=_n(ve>M/4?T-ve:ve,xe);return ve>M/4&&(qt=Wt[0],Wt[0]=-Wt[1],Wt[1]=-qt),Wt[0]*=Ie,Wt[1]*=-ze,Wt}ki.invert=function(ve,xe){n(ve)>1&&(ve=v(ve)*2-ve),n(xe)>1&&(xe=v(xe)*2-xe);var Ie=v(ve),ze=v(xe),Qe=-Ie*ve,Xe=-ze*xe,nt=Xe/Qe<1,qt=ya(nt?Xe:Qe,nt?Qe:Xe),Wt=qt[0],nr=qt[1],fr=o(nr);return nt&&(Wt=-T-Wt),[Ie*(a(m(Wt)*fr,-m(nr))+M),ze*q(o(Wt)*fr)]};function _n(ve,xe){if(xe===T)return[0,0];var Ie=m(xe),ze=Ie*Ie,Qe=ze*ze,Xe=1+Qe,nt=1+3*Qe,qt=1-Qe,Wt=q(1/G(Xe)),nr=qt+ze*Xe*Wt,fr=(1-Ie)/nr,br=G(fr),Fr=fr*Xe,Hr=G(Fr),ri=br*qt,Ci,cn;if(ve===0)return[0,-(ri+ze*Hr)];var sn=o(xe),Ln=1/sn,Yn=2*Ie*sn,Aa=(-3*ze+Wt*nt)*Yn,fa=(-nr*sn-(1-Ie)*Aa)/(nr*nr),$a=.5*fa/br,Co=qt*$a-2*ze*br*Yn,Qa=ze*Xe*fa+fr*nt*Yn,mo=-Ln*Yn,Bo=-Ln*Qa,Ps=-2*Ln*Co,Ts=4*ve/M,wo;if(ve>.222*M||xe.175*M){if(Ci=(ri+ze*G(Fr*(1+Qe)-ri*ri))/(1+Qe),ve>M/4)return[Ci,Ci];var To=Ci,hl=.5*Ci;Ci=.5*(hl+To),cn=50;do{var Ul=G(Fr-Ci*Ci),Lu=Ci*(Ps+mo*Ul)+Bo*q(Ci/Hr)-Ts;if(!Lu)break;Lu<0?hl=Ci:To=Ci,Ci=.5*(hl+To)}while(n(To-hl)>p&&--cn>0)}else{Ci=p,cn=25;do{var au=Ci*Ci,Js=G(Fr-au),eu=Ps+mo*Js,dc=Ci*eu+Bo*q(Ci/Hr)-Ts,Tl=eu+(Bo-mo*au)/Js;Ci-=wo=Js?dc/Tl:0}while(n(wo)>p&&--cn>0)}return[Ci,-ri-ze*G(Fr-Ci*Ci)]}function ya(ve,xe){for(var Ie=0,ze=1,Qe=.5,Xe=50;;){var nt=Qe*Qe,qt=G(Qe),Wt=q(1/G(1+nt)),nr=1-nt+Qe*(1+nt)*Wt,fr=(1-qt)/nr,br=G(fr),Fr=fr*(1+nt),Hr=br*(1-nt),ri=Fr-ve*ve,Ci=G(ri),cn=xe+Hr+Qe*Ci;if(n(ze-Ie)0?Ie=Qe:ze=Qe,Qe=.5*(Ie+ze)}if(!Xe)return null;var sn=q(qt),Ln=o(sn),Yn=1/Ln,Aa=2*qt*Ln,fa=(-3*Qe+Wt*(1+3*nt))*Aa,$a=(-nr*Ln-(1-qt)*fa)/(nr*nr),Co=.5*$a/br,Qa=(1-nt)*Co-2*Qe*br*Aa,mo=-2*Yn*Qa,Bo=-Yn*Aa,Ps=-Yn*(Qe*(1+nt)*$a+fr*(1+3*nt)*Aa);return[M/4*(ve*(mo+Bo*Ci)+Ps*q(ve/G(Fr))),sn]}function ea(){return t.geoProjection(En(ki)).scale(239.75)}function Ma(ve,xe,Ie){var ze,Qe,Xe;return ve?(ze=_o(ve,Ie),xe?(Qe=_o(xe,1-Ie),Xe=Qe[1]*Qe[1]+Ie*ze[0]*ze[0]*Qe[0]*Qe[0],[[ze[0]*Qe[2]/Xe,ze[1]*ze[2]*Qe[0]*Qe[1]/Xe],[ze[1]*Qe[1]/Xe,-ze[0]*ze[2]*Qe[0]*Qe[2]/Xe],[ze[2]*Qe[1]*Qe[2]/Xe,-Ie*ze[0]*ze[1]*Qe[0]/Xe]]):[[ze[0],0],[ze[1],0],[ze[2],0]]):(Qe=_o(xe,1-Ie),[[0,Qe[0]/Qe[1]],[1/Qe[1],0],[Qe[2]/Qe[1],0]])}function _o(ve,xe){var Ie,ze,Qe,Xe,nt;if(xe=1-p)return Ie=(1-xe)/4,ze=N(ve),Xe=Z(ve),Qe=1/ze,nt=ze*j(ve),[Xe+Ie*(nt-ve)/(ze*ze),Qe-Ie*Xe*Qe*(nt-ve),Qe+Ie*Xe*Qe*(nt+ve),2*i(s(ve))-T+Ie*(nt-ve)/ze];var qt=[1,0,0,0,0,0,0,0,0],Wt=[G(xe),0,0,0,0,0,0,0,0],nr=0;for(ze=G(1-xe),nt=1;n(Wt[nr]/qt[nr])>p&&nr<8;)Ie=qt[nr++],Wt[nr]=(Ie-ze)/2,qt[nr]=(Ie+ze)/2,ze=G(Ie*ze),nt*=2;Qe=nt*qt[nr]*ve;do Xe=Wt[nr]*m(ze=Qe)/qt[nr],Qe=(q(Xe)+Qe)/2;while(--nr);return[m(Qe),Xe=o(Qe),Xe/o(Qe-ze),Qe]}function No(ve,xe,Ie){var ze=n(ve),Qe=n(xe),Xe=j(Qe);if(ze){var nt=1/m(ze),qt=1/(b(ze)*b(ze)),Wt=-(qt+Ie*(Xe*Xe*nt*nt)-1+Ie),nr=(Ie-1)*qt,fr=(-Wt+G(Wt*Wt-4*nr))/2;return[po(i(1/G(fr)),Ie)*v(ve),po(i(G((fr/qt-1)/Ie)),1-Ie)*v(xe)]}return[0,po(i(Xe),1-Ie)*v(xe)]}function po(ve,xe){if(!xe)return ve;if(xe===1)return u(b(ve/2+L));for(var Ie=1,ze=G(1-xe),Qe=G(xe),Xe=0;n(Qe)>p;Xe++){if(ve%M){var nt=i(ze*b(ve)/Ie);nt<0&&(nt+=M),ve+=nt+~~(ve/M)*M}else ve+=ve;Qe=(Ie+ze)/2,ze=G(Ie*ze),Qe=((Ie=Qe)-ze)/2}return ve/(h(2,Xe)*Ie)}function Lo(ve,xe){var Ie=(C-1)/(C+1),ze=G(1-Ie*Ie),Qe=po(T,ze*ze),Xe=-1,nt=u(b(M/4+n(xe)/2)),qt=s(Xe*nt)/G(Ie),Wt=ko(qt*o(Xe*ve),qt*m(Xe*ve)),nr=No(Wt[0],Wt[1],ze*ze);return[-nr[1],(xe>=0?1:-1)*(.5*Qe-nr[0])]}function ko(ve,xe){var Ie=ve*ve,ze=xe+1,Qe=1-Ie-xe*xe;return[.5*((ve>=0?T:-T)-a(Qe,2*ve)),-.25*u(Qe*Qe+4*Ie)+.5*u(ze*ze+Ie)]}function Ds(ve,xe){var Ie=xe[0]*xe[0]+xe[1]*xe[1];return[(ve[0]*xe[0]+ve[1]*xe[1])/Ie,(ve[1]*xe[0]-ve[0]*xe[1])/Ie]}Lo.invert=function(ve,xe){var Ie=(C-1)/(C+1),ze=G(1-Ie*Ie),Qe=po(T,ze*ze),Xe=-1,nt=Ma(.5*Qe-xe,-ve,ze*ze),qt=Ds(nt[0],nt[1]),Wt=a(qt[1],qt[0])/Xe;return[Wt,2*i(s(.5/Xe*u(Ie*qt[0]*qt[0]+Ie*qt[1]*qt[1])))-T]};function Fs(){return t.geoProjection(En(Lo)).scale(151.496)}function ll(ve){var xe=m(ve),Ie=o(ve),ze=ul(ve);ze.invert=ul(-ve);function Qe(Xe,nt){var qt=ze(Xe,nt);Xe=qt[0],nt=qt[1];var Wt=m(nt),nr=o(nt),fr=o(Xe),br=V(xe*Wt+Ie*nr*fr),Fr=m(br),Hr=n(Fr)>p?br/Fr:1;return[Hr*Ie*m(Xe),(n(Xe)>T?Hr:-Hr)*(xe*nr-Ie*Wt*fr)]}return Qe.invert=function(Xe,nt){var qt=G(Xe*Xe+nt*nt),Wt=-m(qt),nr=o(qt),fr=qt*nr,br=-nt*Wt,Fr=qt*xe,Hr=G(fr*fr+br*br-Fr*Fr),ri=a(fr*Fr+br*Hr,br*Fr-fr*Hr),Ci=(qt>T?-1:1)*a(Xe*Wt,qt*o(ri)*nr+nt*m(ri)*Wt);return ze.invert(Ci,ri)},Qe}function ul(ve){var xe=m(ve),Ie=o(ve);return function(ze,Qe){var Xe=o(Qe),nt=o(ze)*Xe,qt=m(ze)*Xe,Wt=m(Qe);return[a(qt,nt*Ie-Wt*xe),q(Wt*Ie+nt*xe)]}}function zl(){var ve=0,xe=t.geoProjectionMutator(ll),Ie=xe(ve),ze=Ie.rotate,Qe=Ie.stream,Xe=t.geoCircle();return Ie.parallel=function(nt){if(!arguments.length)return ve*P;var qt=Ie.rotate();return xe(ve=nt*E).rotate(qt)},Ie.rotate=function(nt){return arguments.length?(ze.call(Ie,[nt[0],nt[1]-ve*P]),Xe.center([-nt[0],-nt[1]]),Ie):(nt=ze.call(Ie),nt[1]+=ve*P,nt)},Ie.stream=function(nt){return nt=Qe(nt),nt.sphere=function(){nt.polygonStart();var qt=.01,Wt=Xe.radius(90-qt)().coordinates[0],nr=Wt.length-1,fr=-1,br;for(nt.lineStart();++fr=0;)nt.point((br=Wt[fr])[0],br[1]);nt.lineEnd(),nt.polygonEnd()},nt},Ie.scale(79.4187).parallel(45).clipAngle(180-.001)}var us=3,il=q(1-1/us)*P,As=Yr(0);function cl(ve){var xe=il*E,Ie=xt(M,xe)[0]-xt(-M,xe)[0],ze=As(0,xe)[1],Qe=xt(0,xe)[1],Xe=S-Qe,nt=g/ve,qt=4/g,Wt=ze+Xe*Xe*4/g;function nr(fr,br){var Fr,Hr=n(br);if(Hr>xe){var ri=f(ve-1,c(0,l((fr+M)/nt)));fr+=M*(ve-1)/ve-ri*nt,Fr=xt(fr,Hr),Fr[0]=Fr[0]*g/Ie-g*(ve-1)/(2*ve)+ri*g/ve,Fr[1]=ze+(Fr[1]-Qe)*4*Xe/g,br<0&&(Fr[1]=-Fr[1])}else Fr=As(fr,br);return Fr[0]*=qt,Fr[1]/=Wt,Fr}return nr.invert=function(fr,br){fr/=qt,br*=Wt;var Fr=n(br);if(Fr>ze){var Hr=f(ve-1,c(0,l((fr+M)/nt)));fr=(fr+M*(ve-1)/ve-Hr*nt)*Ie/g;var ri=xt.invert(fr,.25*(Fr-ze)*g/Xe+Qe);return ri[0]-=M*(ve-1)/ve-Hr*nt,br<0&&(ri[1]=-ri[1]),ri}return As.invert(fr,br)},nr}function Ks(ve,xe){return[ve,xe&1?90-p:il]}function zs(ve,xe){return[ve,xe&1?-90+p:-il]}function Io(ve){return[ve[0]*(1-p),ve[1]]}function ls(ve){var xe=[].concat(r.range(-180,180+ve/2,ve).map(Ks),r.range(180,-180-ve/2,-ve).map(zs));return{type:"Polygon",coordinates:[ve===180?xe.map(Io):xe]}}function Yl(){var ve=4,xe=t.geoProjectionMutator(cl),Ie=xe(ve),ze=Ie.stream;return Ie.lobes=function(Qe){return arguments.length?xe(ve=+Qe):ve},Ie.stream=function(Qe){var Xe=Ie.rotate(),nt=ze(Qe),qt=(Ie.rotate([0,0]),ze(Qe));return Ie.rotate(Xe),nt.sphere=function(){t.geoStream(ls(180/ve),qt)},nt},Ie.scale(239.75)}function Su(ve){var xe=1+ve,Ie=m(1/xe),ze=q(Ie),Qe=2*G(M/(Xe=M+4*ze*xe)),Xe,nt=.5*Qe*(xe+G(ve*(2+ve))),qt=ve*ve,Wt=xe*xe;function nr(fr,br){var Fr=1-m(br),Hr,ri;if(Fr&&Fr<2){var Ci=T-br,cn=25,sn;do{var Ln=m(Ci),Yn=o(Ci),Aa=ze+a(Ln,xe-Yn),fa=1+Wt-2*xe*Yn;Ci-=sn=(Ci-qt*ze-xe*Ln+fa*Aa-.5*Fr*Xe)/(2*xe*Ln*Aa)}while(n(sn)>k&&--cn>0);Hr=Qe*G(fa),ri=fr*Aa/M}else Hr=Qe*(ve+Fr),ri=fr*ze/M;return[Hr*m(ri),nt-Hr*o(ri)]}return nr.invert=function(fr,br){var Fr=fr*fr+(br-=nt)*br,Hr=(1+Wt-Fr/(Qe*Qe))/(2*xe),ri=V(Hr),Ci=m(ri),cn=ze+a(Ci,xe-Hr);return[q(fr/G(Fr))*M/cn,q(1-2*(ri-qt*ze-xe*Ci+(1+Wt-2*xe*Hr)*cn)/Xe)]},nr}function nc(){var ve=1,xe=t.geoProjectionMutator(Su),Ie=xe(ve);return Ie.ratio=function(ze){return arguments.length?xe(ve=+ze):ve},Ie.scale(167.774).center([0,18.67])}var bs=.7109889596207567,Rn=.0528035274542;function _a(ve,xe){return xe>-bs?(ve=tt(ve,xe),ve[1]+=Rn,ve):dt(ve,xe)}_a.invert=function(ve,xe){return xe>-bs?tt.invert(ve,xe-Rn):dt.invert(ve,xe)};function Vu(){return t.geoProjection(_a).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}function ql(ve,xe){return n(xe)>bs?(ve=tt(ve,xe),ve[1]-=xe>0?Rn:-Rn,ve):dt(ve,xe)}ql.invert=function(ve,xe){return n(xe)>bs?tt.invert(ve,xe+(xe>0?Rn:-Rn)):dt.invert(ve,xe)};function xo(){return t.geoProjection(ql).scale(152.63)}function Kl(ve,xe,Ie,ze){var Qe=G(4*M/(2*Ie+(1+ve-xe/2)*m(2*Ie)+(ve+xe)/2*m(4*Ie)+xe/2*m(6*Ie))),Xe=G(ze*m(Ie)*G((1+ve*o(2*Ie)+xe*o(4*Ie))/(1+ve+xe))),nt=Ie*Wt(1);function qt(br){return G(1+ve*o(2*br)+xe*o(4*br))}function Wt(br){var Fr=br*Ie;return(2*Fr+(1+ve-xe/2)*m(2*Fr)+(ve+xe)/2*m(4*Fr)+xe/2*m(6*Fr))/Ie}function nr(br){return qt(br)*m(br)}var fr=function(br,Fr){var Hr=Ie*Ht(Wt,nt*m(Fr)/Ie,Fr/M);isNaN(Hr)&&(Hr=Ie*v(Fr));var ri=Qe*qt(Hr);return[ri*Xe*br/M*o(Hr),ri/Xe*m(Hr)]};return fr.invert=function(br,Fr){var Hr=Ht(nr,Fr*Xe/Qe);return[br*M/(o(Hr)*Qe*Xe*qt(Hr)),q(Ie*Wt(Hr/Ie)/nt)]},Ie===0&&(Qe=G(ze/M),fr=function(br,Fr){return[br*Qe,m(Fr)/Qe]},fr.invert=function(br,Fr){return[br/Qe,q(Fr*Qe)]}),fr}function Ns(){var ve=1,xe=0,Ie=45*E,ze=2,Qe=t.geoProjectionMutator(Kl),Xe=Qe(ve,xe,Ie,ze);return Xe.a=function(nt){return arguments.length?Qe(ve=+nt,xe,Ie,ze):ve},Xe.b=function(nt){return arguments.length?Qe(ve,xe=+nt,Ie,ze):xe},Xe.psiMax=function(nt){return arguments.length?Qe(ve,xe,Ie=+nt*E,ze):Ie*P},Xe.ratio=function(nt){return arguments.length?Qe(ve,xe,Ie,ze=+nt):ze},Xe.scale(180.739)}function Hl(ve,xe,Ie,ze,Qe,Xe,nt,qt,Wt,nr,fr){if(fr.nanEncountered)return NaN;var br,Fr,Hr,ri,Ci,cn,sn,Ln,Yn,Aa;if(br=Ie-xe,Fr=ve(xe+br*.25),Hr=ve(Ie-br*.25),isNaN(Fr)){fr.nanEncountered=!0;return}if(isNaN(Hr)){fr.nanEncountered=!0;return}return ri=br*(ze+4*Fr+Qe)/12,Ci=br*(Qe+4*Hr+Xe)/12,cn=ri+Ci,Aa=(cn-nt)/15,nr>Wt?(fr.maxDepthCount++,cn+Aa):Math.abs(Aa)>1;do Wt[cn]>Hr?Ci=cn:ri=cn,cn=ri+Ci>>1;while(cn>ri);var sn=Wt[cn+1]-Wt[cn];return sn&&(sn=(Hr-Wt[cn+1])/sn),(cn+1+sn)/nt}var br=2*fr(1)/M*Xe/Ie,Fr=function(Hr,ri){var Ci=fr(n(m(ri))),cn=ze(Ci)*Hr;return Ci/=br,[cn,ri>=0?Ci:-Ci]};return Fr.invert=function(Hr,ri){var Ci;return ri*=br,n(ri)<1&&(Ci=v(ri)*q(Qe(n(ri))*Xe)),[Hr/ze(n(ri)),Ci]},Fr}function qo(){var ve=0,xe=2.5,Ie=1.183136,ze=t.geoProjectionMutator(oa),Qe=ze(ve,xe,Ie);return Qe.alpha=function(Xe){return arguments.length?ze(ve=+Xe,xe,Ie):ve},Qe.k=function(Xe){return arguments.length?ze(ve,xe=+Xe,Ie):xe},Qe.gamma=function(Xe){return arguments.length?ze(ve,xe,Ie=+Xe):Ie},Qe.scale(152.63)}function Oo(ve,xe){return n(ve[0]-xe[0])=0;--Wt)Ie=ve[1][Wt],ze=Ie[0][0],Qe=Ie[0][1],Xe=Ie[1][1],nt=Ie[2][0],qt=Ie[2][1],xe.push(Ol([[nt-p,qt-p],[nt-p,Xe+p],[ze+p,Xe+p],[ze+p,Qe-p]],30));return{type:"Polygon",coordinates:[r.merge(xe)]}}function Do(ve,xe,Ie){var ze,Qe;function Xe(Wt,nr){for(var fr=nr<0?-1:1,br=xe[+(nr<0)],Fr=0,Hr=br.length-1;Frbr[Fr][2][0];++Fr);var ri=ve(Wt-br[Fr][1][0],nr);return ri[0]+=ve(br[Fr][1][0],fr*nr>fr*br[Fr][0][1]?br[Fr][0][1]:nr)[0],ri}Ie?Xe.invert=Ie(Xe):ve.invert&&(Xe.invert=function(Wt,nr){for(var fr=Qe[+(nr<0)],br=xe[+(nr<0)],Fr=0,Hr=fr.length;Frri&&(Ci=Hr,Hr=ri,ri=Ci),[[br,Hr],[Fr,ri]]})}),nt):xe.map(function(nr){return nr.map(function(fr){return[[fr[0][0]*P,fr[0][1]*P],[fr[1][0]*P,fr[1][1]*P],[fr[2][0]*P,fr[2][1]*P]]})})},xe!=null&&nt.lobes(xe),nt}var nf=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Vf(){return Do(rt,nf).scale(160.857)}var pl=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Zc(){return Do(ql,pl).scale(152.63)}var Jl=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function qs(){return Do(tt,Jl).scale(169.529)}var yu=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function oc(){return Do(tt,yu).scale(169.529).rotate([20,0])}var Cf=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];function sc(){return Do(_a,Cf,at).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}var jh=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function Lf(){return Do(dt,jh).scale(152.63).rotate([-20,0])}function cs(ve,xe){return[3/g*ve*G(M*M/3-xe*xe),xe]}cs.invert=function(ve,xe){return[g/3*ve/G(M*M/3-xe*xe),xe]};function af(){return t.geoProjection(cs).scale(158.837)}function Gf(ve){function xe(Ie,ze){if(n(n(ze)-T)2)return null;Ie/=2,ze/=2;var Xe=Ie*Ie,nt=ze*ze,qt=2*ze/(1+Xe+nt);return qt=h((1+qt)/(1-qt),1/ve),[a(2*Ie,1-Xe-nt)/ve,q((qt-1)/(qt+1))]},xe}function $l(){var ve=.5,xe=t.geoProjectionMutator(Gf),Ie=xe(ve);return Ie.spacing=function(ze){return arguments.length?xe(ve=+ze):ve},Ie.scale(124.75)}var fl=M/C;function lc(ve,xe){return[ve*(1+G(o(xe)))/2,xe/(o(xe/2)*o(ve/6))]}lc.invert=function(ve,xe){var Ie=n(ve),ze=n(xe),Qe=p,Xe=T;zep||n(cn)>p)&&--Qe>0);return Qe&&[Ie,ze]};function Hs(){return t.geoProjection(Es).scale(139.98)}function Go(ve,xe){return[m(ve)/o(xe),b(xe)*o(ve)]}Go.invert=function(ve,xe){var Ie=ve*ve,ze=xe*xe,Qe=ze+1,Xe=Ie+Qe,nt=ve?x*G((Xe-G(Xe*Xe-4*Ie))/Ie):1/G(Qe);return[q(ve*nt),v(xe)*V(nt)]};function ps(){return t.geoProjection(Go).scale(144.049).clipAngle(90-.001)}function uc(ve){var xe=o(ve),Ie=b(L+ve/2);function ze(Qe,Xe){var nt=Xe-ve,qt=n(nt)=0;)fr=ve[nr],br=fr[0]+qt*(Hr=br)-Wt*Fr,Fr=fr[1]+qt*Fr+Wt*Hr;return br=qt*(Hr=br)-Wt*Fr,Fr=qt*Fr+Wt*Hr,[br,Fr]}return Ie.invert=function(ze,Qe){var Xe=20,nt=ze,qt=Qe;do{for(var Wt=xe,nr=ve[Wt],fr=nr[0],br=nr[1],Fr=0,Hr=0,ri;--Wt>=0;)nr=ve[Wt],Fr=fr+nt*(ri=Fr)-qt*Hr,Hr=br+nt*Hr+qt*ri,fr=nr[0]+nt*(ri=fr)-qt*br,br=nr[1]+nt*br+qt*ri;Fr=fr+nt*(ri=Fr)-qt*Hr,Hr=br+nt*Hr+qt*ri,fr=nt*(ri=fr)-qt*br-ze,br=nt*br+qt*ri-Qe;var Ci=Fr*Fr+Hr*Hr,cn,sn;nt-=cn=(fr*Fr+br*Hr)/Ci,qt-=sn=(br*Fr-fr*Hr)/Ci}while(n(cn)+n(sn)>p*p&&--Xe>0);if(Xe){var Ln=G(nt*nt+qt*qt),Yn=2*i(Ln*.5),Aa=m(Yn);return[a(nt*Aa,Ln*o(Yn)),Ln?q(qt*Aa/Ln):0]}},Ie}var Po=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],sd=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],Ko=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],Pa=[[.9245,0],[0,0],[.01943,0]],of=[[.721316,0],[0,0],[-.00881625,-.00617325]];function Hu(){return Bl(Po,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)}function bl(){return Bl(sd,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])}function Hf(){return Bl(Ko,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])}function Ic(){return Bl(Pa,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)}function yf(){return Bl(of,[165,10]).scale(250).clipAngle(130).center([-165,-10])}function Bl(ve,xe){var Ie=t.geoProjection(od(ve)).rotate(xe).clipAngle(90),ze=t.geoRotation(xe),Qe=Ie.center;return delete Ie.rotate,Ie.center=function(Xe){return arguments.length?Qe(ze(Xe)):ze.invert(Qe())},Ie}var Ah=G(6),Qf=G(7);function _f(ve,xe){var Ie=q(7*m(xe)/(3*Ah));return[Ah*ve*(2*o(2*Ie/3)-1)/Qf,9*m(Ie/3)/Qf]}_f.invert=function(ve,xe){var Ie=3*q(xe*Qf/9);return[ve*Qf/(Ah*(2*o(2*Ie/3)-1)),q(m(Ie)*3*Ah/7)]};function Yc(){return t.geoProjection(_f).scale(164.859)}function eh(ve,xe){for(var Ie=(1+x)*m(xe),ze=xe,Qe=0,Xe;Qe<25&&(ze-=Xe=(m(ze/2)+m(ze)-Ie)/(.5*o(ze/2)+o(ze)),!(n(Xe)k&&--ze>0);return Xe=Ie*Ie,nt=Xe*Xe,qt=Xe*nt,[ve/(.84719-.13063*Xe+qt*qt*(-.04515+.05494*Xe-.02326*nt+.00331*qt)),Ie]};function sf(){return t.geoProjection(cc).scale(175.295)}function Nl(ve,xe){return[ve*(1+o(xe))/2,2*(xe-b(xe/2))]}Nl.invert=function(ve,xe){for(var Ie=xe/2,ze=0,Qe=1/0;ze<10&&n(Qe)>p;++ze){var Xe=o(xe/2);xe-=Qe=(xe-b(xe/2)-Ie)/(1-.5/(Xe*Xe))}return[2*ve/(1+o(xe)),xe]};function Kc(){return t.geoProjection(Nl).scale(152.63)}var Rc=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function gs(){return Do(He(1/0),Rc).rotate([20,0]).scale(152.63)}function Wf(ve,xe){var Ie=m(xe),ze=o(xe),Qe=v(ve);if(ve===0||n(xe)===T)return[0,xe];if(xe===0)return[ve,0];if(n(ve)===T)return[ve*ze,T*Ie];var Xe=M/(2*ve)-2*ve/M,nt=2*xe/M,qt=(1-nt*nt)/(Ie-nt),Wt=Xe*Xe,nr=qt*qt,fr=1+Wt/nr,br=1+nr/Wt,Fr=(Xe*Ie/qt-Xe/2)/fr,Hr=(nr*Ie/Wt+qt/2)/br,ri=Fr*Fr+ze*ze/fr,Ci=Hr*Hr-(nr*Ie*Ie/Wt+qt*Ie-1)/br;return[T*(Fr+G(ri)*Qe),T*(Hr+G(Ci<0?0:Ci)*v(-xe*Xe)*Qe)]}Wf.invert=function(ve,xe){ve/=T,xe/=T;var Ie=ve*ve,ze=xe*xe,Qe=Ie+ze,Xe=M*M;return[ve?(Qe-1+G((1-Qe)*(1-Qe)+4*Ie))/(2*ve)*T:0,Ht(function(nt){return Qe*(M*m(nt)-2*nt)*M+4*nt*nt*(xe-m(nt))+2*M*nt-Xe*xe},0)]};function Wh(){return t.geoProjection(Wf).scale(127.267)}var rh=1.0148,lf=.23185,Sh=-.14499,Mu=.02406,ih=rh,js=5*lf,Eu=7*Sh,Dc=9*Mu,ks=1.790857183;function bc(ve,xe){var Ie=xe*xe;return[ve,xe*(rh+Ie*Ie*(lf+Ie*(Sh+Mu*Ie)))]}bc.invert=function(ve,xe){xe>ks?xe=ks:xe<-ks&&(xe=-ks);var Ie=xe,ze;do{var Qe=Ie*Ie;Ie-=ze=(Ie*(rh+Qe*Qe*(lf+Qe*(Sh+Mu*Qe)))-xe)/(ih+Qe*Qe*(js+Qe*(Eu+Dc*Qe)))}while(n(ze)>p);return[ve,Ie]};function hu(){return t.geoProjection(bc).scale(139.319)}function _u(ve,xe){if(n(xe)p&&--Qe>0);return nt=b(ze),[(n(xe)=0;)if(ze=xe[qt],Ie[0]===ze[0]&&Ie[1]===ze[1]){if(Xe)return[Xe,Ie];Xe=Ie}}}function jl(ve){for(var xe=ve.length,Ie=[],ze=ve[xe-1],Qe=0;Qe0?[-ze[0],0]:[180-ze[0],180])};var xe=If.map(function(Ie){return{face:Ie,project:ve(Ie)}});return[-1,0,0,1,0,1,4,5].forEach(function(Ie,ze){var Qe=xe[Ie];Qe&&(Qe.children||(Qe.children=[])).push(xe[ze])}),xf(xe[0],function(Ie,ze){return xe[Ie<-M/2?ze<0?6:4:Ie<0?ze<0?2:0:Ieze^Hr>ze&&Ie<(Fr-nr)*(ze-fr)/(Hr-fr)+nr&&(Qe=!Qe)}return Qe}function Wl(ve,xe){var Ie=xe.stream,ze;if(!Ie)throw new Error("invalid projection");switch(ve&&ve.type){case"Feature":ze=Zu;break;case"FeatureCollection":ze=ah;break;default:ze=Tc;break}return ze(ve,Ie)}function ah(ve,xe){return{type:"FeatureCollection",features:ve.features.map(function(Ie){return Zu(Ie,xe)})}}function Zu(ve,xe){return{type:"Feature",id:ve.id,properties:ve.properties,geometry:Tc(ve.geometry,xe)}}function qc(ve,xe){return{type:"GeometryCollection",geometries:ve.geometries.map(function(Ie){return Tc(Ie,xe)})}}function Tc(ve,xe){if(!ve)return null;if(ve.type==="GeometryCollection")return qc(ve,xe);var Ie;switch(ve.type){case"Point":Ie=Oc;break;case"MultiPoint":Ie=Oc;break;case"LineString":Ie=ff;break;case"MultiLineString":Ie=ff;break;case"Polygon":Ie=fc;break;case"MultiPolygon":Ie=fc;break;case"Sphere":Ie=fc;break;default:return null}return t.geoStream(ve,xe(Ie)),Ie.result()}var wl=[],vu=[],Oc={point:function(ve,xe){wl.push([ve,xe])},result:function(){var ve=wl.length?wl.length<2?{type:"Point",coordinates:wl[0]}:{type:"MultiPoint",coordinates:wl}:null;return wl=[],ve}},ff={lineStart:Xu,point:function(ve,xe){wl.push([ve,xe])},lineEnd:function(){wl.length&&(vu.push(wl),wl=[])},result:function(){var ve=vu.length?vu.length<2?{type:"LineString",coordinates:vu[0]}:{type:"MultiLineString",coordinates:vu}:null;return vu=[],ve}},fc={polygonStart:Xu,lineStart:Xu,point:function(ve,xe){wl.push([ve,xe])},lineEnd:function(){var ve=wl.length;if(ve){do wl.push(wl[0].slice());while(++ve<4);vu.push(wl),wl=[]}},polygonEnd:Xu,result:function(){if(!vu.length)return null;var ve=[],xe=[];return vu.forEach(function(Ie){cf(Ie)?ve.push([Ie]):xe.push(Ie)}),xe.forEach(function(Ie){var ze=Ie[0];ve.some(function(Qe){if(Zf(Qe[0],ze))return Qe.push(Ie),!0})||ve.push([Ie])}),vu=[],ve.length?ve.length>1?{type:"MultiPolygon",coordinates:ve}:{type:"Polygon",coordinates:ve[0]}:null}};function Bc(ve){var xe=ve(T,0)[0]-ve(-T,0)[0];function Ie(ze,Qe){var Xe=n(ze)0?ze-M:ze+M,Qe),qt=(nt[0]-nt[1])*x,Wt=(nt[0]+nt[1])*x;if(Xe)return[qt,Wt];var nr=xe*x,fr=qt>0^Wt>0?-1:1;return[fr*qt-v(Wt)*nr,fr*Wt-v(qt)*nr]}return ve.invert&&(Ie.invert=function(ze,Qe){var Xe=(ze+Qe)*x,nt=(Qe-ze)*x,qt=n(Xe)<.5*xe&&n(nt)<.5*xe;if(!qt){var Wt=xe*x,nr=Xe>0^nt>0?-1:1,fr=-nr*ze+(nt>0?1:-1)*Wt,br=-nr*Qe+(Xe>0?1:-1)*Wt;Xe=(-fr-br)*x,nt=(fr-br)*x}var Fr=ve.invert(Xe,nt);return qt||(Fr[0]+=Xe>0?M:-M),Fr}),t.geoProjection(Ie).rotate([-90,-90,45]).clipAngle(180-.001)}function kt(){return Bc(ki).scale(176.423)}function Zt(){return Bc(Lo).scale(111.48)}function Er(ve,xe){if(!(0<=(xe=+xe)&&xe<=20))throw new Error("invalid digits");function Ie(nr){var fr=nr.length,br=2,Fr=new Array(fr);for(Fr[0]=+nr[0].toFixed(xe),Fr[1]=+nr[1].toFixed(xe);br2||Hr[0]!=fr[0]||Hr[1]!=fr[1])&&(br.push(Hr),fr=Hr)}return br.length===1&&nr.length>1&&br.push(Ie(nr[nr.length-1])),br}function Xe(nr){return nr.map(Qe)}function nt(nr){if(nr==null)return nr;var fr;switch(nr.type){case"GeometryCollection":fr={type:"GeometryCollection",geometries:nr.geometries.map(nt)};break;case"Point":fr={type:"Point",coordinates:Ie(nr.coordinates)};break;case"MultiPoint":fr={type:nr.type,coordinates:ze(nr.coordinates)};break;case"LineString":fr={type:nr.type,coordinates:Qe(nr.coordinates)};break;case"MultiLineString":case"Polygon":fr={type:nr.type,coordinates:Xe(nr.coordinates)};break;case"MultiPolygon":fr={type:"MultiPolygon",coordinates:nr.coordinates.map(Xe)};break;default:return nr}return nr.bbox!=null&&(fr.bbox=nr.bbox),fr}function qt(nr){var fr={type:"Feature",properties:nr.properties,geometry:nt(nr.geometry)};return nr.id!=null&&(fr.id=nr.id),nr.bbox!=null&&(fr.bbox=nr.bbox),fr}if(ve!=null)switch(ve.type){case"Feature":return qt(ve);case"FeatureCollection":{var Wt={type:"FeatureCollection",features:ve.features.map(qt)};return ve.bbox!=null&&(Wt.bbox=ve.bbox),Wt}default:return nt(ve)}return ve}function xr(ve){var xe=m(ve);function Ie(ze,Qe){var Xe=xe?b(ze*xe/2)/xe:ze/2;if(!Qe)return[2*Xe,-ve];var nt=2*i(Xe*m(Qe)),qt=1/b(Qe);return[m(nt)*qt,Qe+(1-o(nt))*qt-ve]}return Ie.invert=function(ze,Qe){if(n(Qe+=ve)p&&--qt>0);var Fr=ze*(nr=b(nt)),Hr=b(n(Qe)0?T:-T)*(Wt+Qe*(fr-nt)/2+Qe*Qe*(fr-2*Wt+nt)/2)]}Wi.invert=function(ve,xe){var Ie=xe/T,ze=Ie*90,Qe=f(18,n(ze/5)),Xe=c(0,l(Qe));do{var nt=Mi[Xe][1],qt=Mi[Xe+1][1],Wt=Mi[f(19,Xe+2)][1],nr=Wt-nt,fr=Wt-2*qt+nt,br=2*(n(Ie)-qt)/nr,Fr=fr/nr,Hr=br*(1-Fr*br*(1-2*Fr*br));if(Hr>=0||Xe===1){ze=(xe>=0?5:-5)*(Hr+Qe);var ri=50,Ci;do Qe=f(18,n(ze)/5),Xe=l(Qe),Hr=Qe-Xe,nt=Mi[Xe][1],qt=Mi[Xe+1][1],Wt=Mi[f(19,Xe+2)][1],ze-=(Ci=(xe>=0?T:-T)*(qt+Hr*(Wt-nt)/2+Hr*Hr*(Wt-2*qt+nt)/2)-xe)*P;while(n(Ci)>k&&--ri>0);break}}while(--Xe>=0);var cn=Mi[Xe][0],sn=Mi[Xe+1][0],Ln=Mi[f(19,Xe+2)][0];return[ve/(sn+Hr*(Ln-cn)/2+Hr*Hr*(Ln-2*sn+cn)/2),ze*E]};function dn(){return t.geoProjection(Wi).scale(152.63)}function wn(ve){function xe(Ie,ze){var Qe=o(ze),Xe=(ve-1)/(ve-Qe*o(Ie));return[Xe*Qe*m(Ie),Xe*m(ze)]}return xe.invert=function(Ie,ze){var Qe=Ie*Ie+ze*ze,Xe=G(Qe),nt=(ve-G(1-Qe*(ve+1)/(ve-1)))/((ve-1)/Xe+Xe/(ve-1));return[a(Ie*nt,Xe*G(1-nt*nt)),Xe?q(ze*nt/Xe):0]},xe}function On(ve,xe){var Ie=wn(ve);if(!xe)return Ie;var ze=o(xe),Qe=m(xe);function Xe(nt,qt){var Wt=Ie(nt,qt),nr=Wt[1],fr=nr*Qe/(ve-1)+ze;return[Wt[0]*ze/fr,nr/fr]}return Xe.invert=function(nt,qt){var Wt=(ve-1)/(ve-1-qt*Qe);return Ie.invert(Wt*nt,Wt*qt*ze)},Xe}function Yi(){var ve=2,xe=0,Ie=t.geoProjectionMutator(On),ze=Ie(ve,xe);return ze.distance=function(Qe){return arguments.length?Ie(ve=+Qe,xe):ve},ze.tilt=function(Qe){return arguments.length?Ie(ve,xe=Qe*E):xe*P},ze.scale(432.147).clipAngle(V(1/ve)*P-1e-6)}var $i=1e-4,an=1e4,Fi=-180,ta=Fi+$i,Ca=180,Ra=Ca-$i,La=-90,Ua=La+$i,Zn=90,Dn=Zn-$i;function Ka(ve){return ve.length>0}function bo(ve){return Math.floor(ve*an)/an}function Zo(ve){return ve===La||ve===Zn?[0,ve]:[Fi,bo(ve)]}function Ss(ve){var xe=ve[0],Ie=ve[1],ze=!1;return xe<=ta?(xe=Fi,ze=!0):xe>=Ra&&(xe=Ca,ze=!0),Ie<=Ua?(Ie=La,ze=!0):Ie>=Dn&&(Ie=Zn,ze=!0),ze?[xe,Ie]:ve}function as(ve){return ve.map(Ss)}function ws(ve,xe,Ie){for(var ze=0,Qe=ve.length;ze=Ra||fr<=Ua||fr>=Dn){Xe[nt]=Ss(Wt);for(var br=nt+1;brta&&HrUa&&ri=qt)break;Ie.push({index:-1,polygon:xe,ring:Xe=Xe.slice(br-1)}),Xe[0]=Zo(Xe[0][1]),nt=-1,qt=Xe.length}}}}function Ho(ve){var xe,Ie=ve.length,ze={},Qe={},Xe,nt,qt,Wt,nr;for(xe=0;xe0?M-qt:qt)*P],nr=t.geoProjection(ve(nt)).rotate(Wt),fr=t.geoRotation(Wt),br=nr.center;return delete nr.rotate,nr.center=function(Fr){return arguments.length?br(fr(Fr)):fr.invert(br())},nr.clipAngle(90)}function rs(ve){var xe=o(ve);function Ie(ze,Qe){var Xe=t.geoGnomonicRaw(ze,Qe);return Xe[0]*=xe,Xe}return Ie.invert=function(ze,Qe){return t.geoGnomonicRaw.invert(ze/xe,Qe)},Ie}function Ql(){return Cu([-158,21.5],[-77,39]).clipAngle(60).scale(400)}function Cu(ve,xe){return ys(rs,ve,xe)}function Yu(ve){if(!(ve*=2))return t.geoAzimuthalEquidistantRaw;var xe=-ve/2,Ie=-xe,ze=ve*ve,Qe=b(Ie),Xe=.5/m(Ie);function nt(qt,Wt){var nr=V(o(Wt)*o(qt-xe)),fr=V(o(Wt)*o(qt-Ie)),br=Wt<0?-1:1;return nr*=nr,fr*=fr,[(nr-fr)/(2*ve),br*G(4*ze*fr-(ze-nr+fr)*(ze-nr+fr))/(2*ve)]}return nt.invert=function(qt,Wt){var nr=Wt*Wt,fr=o(G(nr+(Fr=qt+xe)*Fr)),br=o(G(nr+(Fr=qt+Ie)*Fr)),Fr,Hr;return[a(Hr=fr-br,Fr=(fr+br)*Qe),(Wt<0?-1:1)*V(G(Fr*Fr+Hr*Hr)*Xe)]},nt}function Nc(){return pu([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)}function pu(ve,xe){return ys(Yu,ve,xe)}function Uc(ve,xe){if(n(xe)p&&--qt>0);return[v(ve)*(G(Qe*Qe+4)+Qe)*M/4,T*nt]};function Ku(){return t.geoProjection(hc).scale(127.16)}function ue(ve,xe,Ie,ze,Qe){function Xe(nt,qt){var Wt=Ie*m(ze*qt),nr=G(1-Wt*Wt),fr=G(2/(1+nr*o(nt*=Qe)));return[ve*nr*fr*m(nt),xe*Wt*fr]}return Xe.invert=function(nt,qt){var Wt=nt/ve,nr=qt/xe,fr=G(Wt*Wt+nr*nr),br=2*q(fr/2);return[a(nt*b(br),ve*fr)/Qe,fr&&q(qt*m(br)/(xe*Ie*fr))/ze]},Xe}function w(ve,xe,Ie,ze){var Qe=M/3;ve=c(ve,p),xe=c(xe,p),ve=f(ve,T),xe=f(xe,M-p),Ie=c(Ie,0),Ie=f(Ie,100-p),ze=c(ze,p);var Xe=Ie/100+1,nt=ze/100,qt=V(Xe*o(Qe))/Qe,Wt=m(ve)/m(qt*T),nr=xe/M,fr=G(nt*m(ve/2)/m(xe/2)),br=fr/G(nr*Wt*qt),Fr=1/(fr*G(nr*Wt*qt));return ue(br,Fr,Wt,qt,nr)}function B(){var ve=65*E,xe=60*E,Ie=20,ze=200,Qe=t.geoProjectionMutator(w),Xe=Qe(ve,xe,Ie,ze);return Xe.poleline=function(nt){return arguments.length?Qe(ve=+nt*E,xe,Ie,ze):ve*P},Xe.parallels=function(nt){return arguments.length?Qe(ve,xe=+nt*E,Ie,ze):xe*P},Xe.inflation=function(nt){return arguments.length?Qe(ve,xe,Ie=+nt,ze):Ie},Xe.ratio=function(nt){return arguments.length?Qe(ve,xe,Ie,ze=+nt):ze},Xe.scale(163.775)}function Q(){return B().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633)}var ee=4*M+3*G(3),le=2*G(2*M*G(3)/ee),Fe=rr(le*G(3)/M,le,ee/6);function Ze(){return t.geoProjection(Fe).scale(176.84)}function ut(ve,xe){return[ve*G(1-3*xe*xe/(M*M)),xe]}ut.invert=function(ve,xe){return[ve/G(1-3*xe*xe/(M*M)),xe]};function Mt(){return t.geoProjection(ut).scale(152.63)}function Jt(ve,xe){var Ie=o(xe),ze=o(ve)*Ie,Qe=1-ze,Xe=o(ve=a(m(ve)*Ie,-m(xe))),nt=m(ve);return Ie=G(1-ze*ze),[nt*Ie-Xe*Qe,-Xe*Ie-nt*Qe]}Jt.invert=function(ve,xe){var Ie=(ve*ve+xe*xe)/-2,ze=G(-Ie*(2+Ie)),Qe=xe*Ie+ve*ze,Xe=ve*Ie-xe*ze,nt=G(Xe*Xe+Qe*Qe);return[a(ze*Qe,nt*(1+Ie)),nt?-q(ze*Xe/nt):0]};function $t(){return t.geoProjection(Jt).rotate([0,-90,45]).scale(124.75).clipAngle(180-.001)}function yr(ve,xe){var Ie=Ee(ve,xe);return[(Ie[0]+ve/T)/2,(Ie[1]+xe)/2]}yr.invert=function(ve,xe){var Ie=ve,ze=xe,Qe=25;do{var Xe=o(ze),nt=m(ze),qt=m(2*ze),Wt=nt*nt,nr=Xe*Xe,fr=m(Ie),br=o(Ie/2),Fr=m(Ie/2),Hr=Fr*Fr,ri=1-nr*br*br,Ci=ri?V(Xe*br)*G(cn=1/ri):cn=0,cn,sn=.5*(2*Ci*Xe*Fr+Ie/T)-ve,Ln=.5*(Ci*nt+ze)-xe,Yn=.5*cn*(nr*Hr+Ci*Xe*br*Wt)+.5/T,Aa=cn*(fr*qt/4-Ci*nt*Fr),fa=.125*cn*(qt*Fr-Ci*nt*nr*fr),$a=.5*cn*(Wt*br+Ci*Hr*Xe)+.5,Co=Aa*fa-$a*Yn,Qa=(Ln*Aa-sn*$a)/Co,mo=(sn*fa-Ln*Yn)/Co;Ie-=Qa,ze-=mo}while((n(Qa)>p||n(mo)>p)&&--Qe>0);return[Ie,ze]};function Cr(){return t.geoProjection(yr).scale(158.837)}e.geoNaturalEarth=t.geoNaturalEarth1,e.geoNaturalEarthRaw=t.geoNaturalEarth1Raw,e.geoAiry=_e,e.geoAiryRaw=ae,e.geoAitoff=Ce,e.geoAitoffRaw=Ee,e.geoArmadillo=re,e.geoArmadilloRaw=ge,e.geoAugust=ke,e.geoAugustRaw=Se,e.geoBaker=me,e.geoBakerRaw=Le,e.geoBerghaus=ce,e.geoBerghausRaw=Pe,e.geoBertin1953=ar,e.geoBertin1953Raw=ct,e.geoBoggs=St,e.geoBoggsRaw=rt,e.geoBonne=jt,e.geoBonneRaw=pt,e.geoBottomley=mr,e.geoBottomleyRaw=or,e.geoBromley=ei,e.geoBromleyRaw=Ar,e.geoChamberlin=et,e.geoChamberlinRaw=Ge,e.geoChamberlinAfrica=We,e.geoCollignon=At,e.geoCollignonRaw=xt,e.geoCraig=Qt,e.geoCraigRaw=Kt,e.geoCraster=Ir,e.geoCrasterRaw=Gr,e.geoCylindricalEqualArea=_i,e.geoCylindricalEqualAreaRaw=Yr,e.geoCylindricalStereographic=ai,e.geoCylindricalStereographicRaw=Pi,e.geoEckert1=un,e.geoEckert1Raw=mi,e.geoEckert2=An,e.geoEckert2Raw=Fn,e.geoEckert3=Qn,e.geoEckert3Raw=Hn,e.geoEckert4=Kn,e.geoEckert4Raw=Vi,e.geoEckert5=Gt,e.geoEckert5Raw=Jn,e.geoEckert6=tr,e.geoEckert6Raw=wt,e.geoEisenlohr=Xr,e.geoEisenlohrRaw=wr,e.geoFahey=Ri,e.geoFaheyRaw=$r,e.geoFoucaut=en,e.geoFoucautRaw=Zi,e.geoFoucautSinusoidal=yn,e.geoFoucautSinusoidalRaw=fn,e.geoGilbert=ua,e.geoGingery=Xo,e.geoGingeryRaw=ma,e.geoGinzburg4=Ha,e.geoGinzburg4Raw=jn,e.geoGinzburg5=Gn,e.geoGinzburg5Raw=vo,e.geoGinzburg6=Sr,e.geoGinzburg6Raw=Ct,e.geoGinzburg8=hi,e.geoGinzburg8Raw=Jr,e.geoGinzburg9=Sn,e.geoGinzburg9Raw=hn,e.geoGringorten=ea,e.geoGringortenRaw=ki,e.geoGuyou=Fs,e.geoGuyouRaw=Lo,e.geoHammer=mt,e.geoHammerRaw=He,e.geoHammerRetroazimuthal=zl,e.geoHammerRetroazimuthalRaw=ll,e.geoHealpix=Yl,e.geoHealpixRaw=cl,e.geoHill=nc,e.geoHillRaw=Su,e.geoHomolosine=xo,e.geoHomolosineRaw=ql,e.geoHufnagel=Ns,e.geoHufnagelRaw=Kl,e.geoHyperelliptical=qo,e.geoHyperellipticalRaw=oa,e.geoInterrupt=Do,e.geoInterruptedBoggs=Vf,e.geoInterruptedHomolosine=Zc,e.geoInterruptedMollweide=qs,e.geoInterruptedMollweideHemispheres=oc,e.geoInterruptedSinuMollweide=sc,e.geoInterruptedSinusoidal=Lf,e.geoKavrayskiy7=af,e.geoKavrayskiy7Raw=cs,e.geoLagrange=$l,e.geoLagrangeRaw=Gf,e.geoLarrivee=Fu,e.geoLarriveeRaw=lc,e.geoLaskowski=Hs,e.geoLaskowskiRaw=Es,e.geoLittrow=ps,e.geoLittrowRaw=Go,e.geoLoximuthal=xl,e.geoLoximuthalRaw=uc,e.geoMiller=Os,e.geoMillerRaw=Gu,e.geoModifiedStereographic=Bl,e.geoModifiedStereographicRaw=od,e.geoModifiedStereographicAlaska=Hu,e.geoModifiedStereographicGs48=bl,e.geoModifiedStereographicGs50=Hf,e.geoModifiedStereographicMiller=Ic,e.geoModifiedStereographicLee=yf,e.geoMollweide=je,e.geoMollweideRaw=tt,e.geoMtFlatPolarParabolic=Yc,e.geoMtFlatPolarParabolicRaw=_f,e.geoMtFlatPolarQuartic=th,e.geoMtFlatPolarQuarticRaw=eh,e.geoMtFlatPolarSinusoidal=jf,e.geoMtFlatPolarSinusoidalRaw=ju,e.geoNaturalEarth2=sf,e.geoNaturalEarth2Raw=cc,e.geoNellHammer=Kc,e.geoNellHammerRaw=Nl,e.geoInterruptedQuarticAuthalic=gs,e.geoNicolosi=Wh,e.geoNicolosiRaw=Wf,e.geoPatterson=hu,e.geoPattersonRaw=bc,e.geoPolyconic=nl,e.geoPolyconicRaw=_u,e.geoPolyhedral=xf,e.geoPolyhedralButterfly=Cs,e.geoPolyhedralCollignon=Xf,e.geoPolyhedralWaterman=Us,e.geoProject=Wl,e.geoGringortenQuincuncial=kt,e.geoPeirceQuincuncial=Zt,e.geoPierceQuincuncial=Zt,e.geoQuantize=Er,e.geoQuincuncial=Bc,e.geoRectangularPolyconic=Kr,e.geoRectangularPolyconicRaw=xr,e.geoRobinson=dn,e.geoRobinsonRaw=Wi,e.geoSatellite=Yi,e.geoSatelliteRaw=On,e.geoSinuMollweide=Vu,e.geoSinuMollweideRaw=_a,e.geoSinusoidal=Et,e.geoSinusoidalRaw=dt,e.geoStitch=Ls,e.geoTimes=no,e.geoTimesRaw=va,e.geoTwoPointAzimuthal=Cu,e.geoTwoPointAzimuthalRaw=rs,e.geoTwoPointAzimuthalUsa=Ql,e.geoTwoPointEquidistant=pu,e.geoTwoPointEquidistantRaw=Yu,e.geoTwoPointEquidistantUsa=Nc,e.geoVanDerGrinten=xu,e.geoVanDerGrintenRaw=Uc,e.geoVanDerGrinten2=Va,e.geoVanDerGrinten2Raw=Ac,e.geoVanDerGrinten3=Vc,e.geoVanDerGrinten3Raw=oo,e.geoVanDerGrinten4=Ku,e.geoVanDerGrinten4Raw=hc,e.geoWagner=B,e.geoWagner7=Q,e.geoWagnerRaw=w,e.geoWagner4=Ze,e.geoWagner4Raw=Fe,e.geoWagner6=Mt,e.geoWagner6Raw=ut,e.geoWiechel=$t,e.geoWiechelRaw=Jt,e.geoWinkel3=Cr,e.geoWinkel3Raw=yr,Object.defineProperty(e,"__esModule",{value:!0})})});var XDe=ye((Gmr,WDe)=>{"use strict";var nd=qa(),VZ=Pr(),Xzt=Oa(),i5=Math.PI/180,iw=180/Math.PI,HZ={cursor:"pointer"},jZ={cursor:"auto"};function Zzt(e,t){var r=e.projection,n;return t._isScoped?n=Yzt:t._isClipped?n=Jzt:n=Kzt,n(e,r)}WDe.exports=Zzt;function WZ(e,t){return nd.behavior.zoom().translate(t.translate()).scale(t.scale())}function XZ(e,t,r){var n=e.id,i=e.graphDiv,a=i.layout,o=a[n],s=i._fullLayout,l=s[n],u={},c={};function f(h,d){u[n+"."+h]=VZ.nestedProperty(o,h).get(),Xzt.call("_storeDirectGUIEdit",a,s._preGUI,u);var v=VZ.nestedProperty(l,h);v.get()!==d&&(v.set(d),VZ.nestedProperty(o,h).set(d),c[n+"."+h]=d)}r(f),f("projection.scale",t.scale()/e.fitScale),f("fitbounds",!1),i.emit("plotly_relayout",c)}function Yzt(e,t){var r=WZ(e,t);function n(){nd.select(this).style(HZ)}function i(){t.scale(nd.event.scale).translate(nd.event.translate),e.render(!0);var s=t.invert(e.midPt);e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.center.lon":s[0],"geo.center.lat":s[1]})}function a(s){var l=t.invert(e.midPt);s("center.lon",l[0]),s("center.lat",l[1])}function o(){nd.select(this).style(jZ),XZ(e,t,a)}return r.on("zoomstart",n).on("zoom",i).on("zoomend",o),r}function Kzt(e,t){var r=WZ(e,t),n=2,i,a,o,s,l,u,c,f,h;function d(M){return t.invert(M)}function v(M){var T=d(M);if(!T)return!0;var L=t(T);return Math.abs(L[0]-M[0])>n||Math.abs(L[1]-M[1])>n}function m(){nd.select(this).style(HZ),i=nd.mouse(this),a=t.rotate(),o=t.translate(),s=a,l=d(i)}function b(){if(u=nd.mouse(this),v(i)){r.scale(t.scale()),r.translate(t.translate());return}t.scale(nd.event.scale),t.translate([o[0],nd.event.translate[1]]),l?d(u)&&(f=d(u),c=[s[0]+(f[0]-l[0]),a[1],a[2]],t.rotate(c),s=c):(i=u,l=d(i)),h=!0,e.render(!0);var M=t.rotate(),T=t.invert(e.midPt);e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.center.lon":T[0],"geo.center.lat":T[1],"geo.projection.rotation.lon":-M[0]})}function p(){nd.select(this).style(jZ),h&&XZ(e,t,k)}function k(M){var T=t.rotate(),L=t.invert(e.midPt);M("projection.rotation.lon",-T[0]),M("center.lon",L[0]),M("center.lat",L[1])}return r.on("zoomstart",m).on("zoom",b).on("zoomend",p),r}function Jzt(e,t){var r={r:t.rotate(),k:t.scale()},n=WZ(e,t),i=a7t(n,"zoomstart","zoom","zoomend"),a=0,o=n.on,s;n.on("zoomstart",function(){nd.select(this).style(HZ);var h=nd.mouse(this),d=t.rotate(),v=d,m=t.translate(),b=$zt(d);s=OF(t,h),o.call(n,"zoom",function(){var p=nd.mouse(this);if(t.scale(r.k=nd.event.scale),!s)h=p,s=OF(t,h);else if(OF(t,p)){t.rotate(d).translate(m);var k=OF(t,p),M=e7t(s,k),T=r7t(Qzt(b,M)),L=r.r=t7t(T,s,v);(!isFinite(L[0])||!isFinite(L[1])||!isFinite(L[2]))&&(L=v),t.rotate(L),v=L}u(i.of(this,arguments))}),l(i.of(this,arguments))}).on("zoomend",function(){nd.select(this).style(jZ),o.call(n,"zoom",null),c(i.of(this,arguments)),XZ(e,t,f)}).on("zoom.redraw",function(){e.render(!0);var h=t.rotate();e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.projection.rotation.lon":-h[0],"geo.projection.rotation.lat":-h[1]})});function l(h){a++||h({type:"zoomstart"})}function u(h){h({type:"zoom"})}function c(h){--a||h({type:"zoomend"})}function f(h){var d=t.rotate();h("projection.rotation.lon",-d[0]),h("projection.rotation.lat",-d[1])}return nd.rebind(n,i,"on")}function OF(e,t){var r=e.invert(t);return r&&isFinite(r[0])&&isFinite(r[1])&&i7t(r)}function $zt(e){var t=.5*e[0]*i5,r=.5*e[1]*i5,n=.5*e[2]*i5,i=Math.sin(t),a=Math.cos(t),o=Math.sin(r),s=Math.cos(r),l=Math.sin(n),u=Math.cos(n);return[a*s*u+i*o*l,i*s*u-a*o*l,a*o*u+i*s*l,a*s*l-i*o*u]}function Qzt(e,t){var r=e[0],n=e[1],i=e[2],a=e[3],o=t[0],s=t[1],l=t[2],u=t[3];return[r*o-n*s-i*l-a*u,r*s+n*o+i*u-a*l,r*l-n*u+i*o+a*s,r*u+n*l-i*s+a*o]}function e7t(e,t){if(!(!e||!t)){var r=n7t(e,t),n=Math.sqrt(jDe(r,r)),i=.5*Math.acos(Math.max(-1,Math.min(1,jDe(e,t)))),a=Math.sin(i)/n;return n&&[Math.cos(i),r[2]*a,-r[1]*a,r[0]*a]}}function t7t(e,t,r){var n=GZ(t,2,e[0]);n=GZ(n,1,e[1]),n=GZ(n,0,e[2]-r[2]);var i=t[0],a=t[1],o=t[2],s=n[0],l=n[1],u=n[2],c=Math.atan2(a,i)*iw,f=Math.sqrt(i*i+a*a),h,d;Math.abs(l)>f?(d=(l>0?90:-90)-c,h=0):(d=Math.asin(l/f)*iw-c,h=Math.sqrt(f*f-l*l));var v=180-d-2*c,m=(Math.atan2(u,s)-Math.atan2(o,h))*iw,b=(Math.atan2(u,s)-Math.atan2(o,-h))*iw,p=GDe(r[0],r[1],d,m),k=GDe(r[0],r[1],v,b);return p<=k?[d,m,r[2]]:[v,b,r[2]]}function GDe(e,t,r,n){var i=HDe(r-e),a=HDe(n-t);return Math.sqrt(i*i+a*a)}function HDe(e){return(e%360+540)%360-180}function GZ(e,t,r){var n=r*i5,i=e.slice(),a=t===0?1:0,o=t===2?1:2,s=Math.cos(n),l=Math.sin(n);return i[a]=e[a]*s-e[o]*l,i[o]=e[o]*s+e[a]*l,i}function r7t(e){return[Math.atan2(2*(e[0]*e[1]+e[2]*e[3]),1-2*(e[1]*e[1]+e[2]*e[2]))*iw,Math.asin(Math.max(-1,Math.min(1,2*(e[0]*e[2]-e[3]*e[1]))))*iw,Math.atan2(2*(e[0]*e[3]+e[1]*e[2]),1-2*(e[2]*e[2]+e[3]*e[3]))*iw]}function i7t(e){var t=e[0]*i5,r=e[1]*i5,n=Math.cos(r);return[n*Math.cos(t),n*Math.sin(t),Math.sin(r)]}function jDe(e,t){for(var r=0,n=0,i=e.length;n{"use strict";var l1=qa(),KZ=UZ(),o7t=KZ.geoPath,s7t=KZ.geoDistance,l7t=VDe(),u7t=Oa(),pk=Pr(),c7t=pk.strTranslate,BF=ka(),vk=So(),ZDe=ef(),f7t=Mc(),YZ=ho(),YDe=Mg().getAutoRange,ZZ=yv(),h7t=qf().prepSelect,d7t=qf().clearOutline,v7t=qf().selectOnClick,p7t=XDe(),hp=ck(),g7t=dx(),JDe=TF(),m7t=MZ().feature;function $De(e){this.id=e.id,this.graphDiv=e.graphDiv,this.container=e.container,this.topojsonURL=e.topojsonURL,this.isStatic=e.staticPlot,this.topojsonName=null,this.topojson=null,this.projection=null,this.scope=null,this.viewInitial=null,this.fitScale=null,this.bounds=null,this.midPt=null,this.hasChoropleth=!1,this.traceHash={},this.layers={},this.basePaths={},this.dataPaths={},this.dataPoints={},this.clipDef=null,this.clipRect=null,this.bgRect=null,this.makeFramework()}var tm=$De.prototype;QDe.exports=function(t){return new $De(t)};tm.plot=function(e,t,r,n){var i=this;if(n)return i.update(e,t,!0);i._geoCalcData=e,i._fullLayout=t;var a=t[this.id],o=[],s=!1;for(var l in hp.layerNameToAdjective)if(l!=="frame"&&a["show"+l]){s=!0;break}for(var u=!1,c=0;c0&&o._module.calcGeoJSON(a,t)}if(!r){var s=this.updateProjection(e,t);if(s)return;(!this.viewInitial||this.scope!==n.scope)&&this.saveViewInitial(n)}this.scope=n.scope,this.updateBaseLayers(t,n),this.updateDims(t,n),this.updateFx(t,n),f7t.generalUpdatePerTraceModule(this.graphDiv,this,e,n);var l=this.layers.frontplot.select(".scatterlayer");this.dataPoints.point=l.selectAll(".point"),this.dataPoints.text=l.selectAll("text"),this.dataPaths.line=l.selectAll(".js-line");var u=this.layers.backplot.select(".choroplethlayer");this.dataPaths.choropleth=u.selectAll("path"),this._render()};tm.updateProjection=function(e,t){var r=this.graphDiv,n=t[this.id],i=t._size,a=n.domain,o=n.projection,s=n.lonaxis,l=n.lataxis,u=s._ax,c=l._ax,f=this.projection=y7t(n),h=[[i.l+i.w*a.x[0],i.t+i.h*(1-a.y[1])],[i.l+i.w*a.x[1],i.t+i.h*(1-a.y[0])]],d=n.center||{},v=o.rotation||{},m=s.range||[],b=l.range||[];if(n.fitbounds){u._length=h[1][0]-h[0][0],c._length=h[1][1]-h[0][1],u.range=YDe(r,u),c.range=YDe(r,c);var p=(u.range[0]+u.range[1])/2,k=(c.range[0]+c.range[1])/2;if(n._isScoped)d={lon:p,lat:k};else if(n._isClipped){d={lon:p,lat:k},v={lon:p,lat:k,roll:v.roll};var M=o.type,T=hp.lonaxisSpan[M]/2||180,L=hp.lataxisSpan[M]/2||90;m=[p-T,p+T],b=[k-L,k+L]}else d={lon:p,lat:k},v={lon:p,lat:v.lat,roll:v.roll}}f.center([d.lon-v.lon,d.lat-v.lat]).rotate([-v.lon,-v.lat,v.roll]).parallels(o.parallels);var x=KDe(m,b);f.fitExtent(h,x);var C=this.bounds=f.getBounds(x),S=this.fitScale=f.scale(),g=f.translate();if(n.fitbounds){var P=f.getBounds(KDe(u.range,c.range)),E=Math.min((C[1][0]-C[0][0])/(P[1][0]-P[0][0]),(C[1][1]-C[0][1])/(P[1][1]-P[0][1]));isFinite(E)?f.scale(E*S):pk.warn("Something went wrong during"+this.id+"fitbounds computations.")}else f.scale(o.scale*S);var z=this.midPt=[(C[0][0]+C[1][0])/2,(C[0][1]+C[1][1])/2];if(f.translate([g[0]+(z[0]-g[0]),g[1]+(z[1]-g[1])]).clipExtent(C),n._isAlbersUsa){var q=f([d.lon,d.lat]),V=f.translate();f.translate([V[0]-(q[0]-V[0]),V[1]-(q[1]-V[1])])}};tm.updateBaseLayers=function(e,t){var r=this,n=r.topojson,i=r.layers,a=r.basePaths;function o(h){return h==="lonaxis"||h==="lataxis"}function s(h){return!!hp.lineLayers[h]}function l(h){return!!hp.fillLayers[h]}var u=this.hasChoropleth?hp.layersForChoropleth:hp.layers,c=u.filter(function(h){return s(h)||l(h)?t["show"+h]:o(h)?t[h].showgrid:!0}),f=r.framework.selectAll(".layer").data(c,String);f.exit().each(function(h){delete i[h],delete a[h],l1.select(this).remove()}),f.enter().append("g").attr("class",function(h){return"layer "+h}).each(function(h){var d=i[h]=l1.select(this);h==="bg"?r.bgRect=d.append("rect").style("pointer-events","all"):o(h)?a[h]=d.append("path").style("fill","none"):h==="backplot"?d.append("g").classed("choroplethlayer",!0):h==="frontplot"?d.append("g").classed("scatterlayer",!0):s(h)?a[h]=d.append("path").style("fill","none").style("stroke-miterlimit",2):l(h)&&(a[h]=d.append("path").style("stroke","none"))}),f.order(),f.each(function(h){var d=a[h],v=hp.layerNameToAdjective[h];h==="frame"?d.datum(hp.sphereSVG):s(h)||l(h)?d.datum(m7t(n,n.objects[h])):o(h)&&d.datum(_7t(h,t,e)).call(BF.stroke,t[h].gridcolor).call(vk.dashLine,t[h].griddash,t[h].gridwidth),s(h)?d.call(BF.stroke,t[v+"color"]).call(vk.dashLine,"",t[v+"width"]):l(h)&&d.call(BF.fill,t[v+"color"])})};tm.updateDims=function(e,t){var r=this.bounds,n=(t.framewidth||0)/2,i=r[0][0]-n,a=r[0][1]-n,o=r[1][0]-i+n,s=r[1][1]-a+n;vk.setRect(this.clipRect,i,a,o,s),this.bgRect.call(vk.setRect,i,a,o,s).call(BF.fill,t.bgcolor),this.xaxis._offset=i,this.xaxis._length=o,this.yaxis._offset=a,this.yaxis._length=s};tm.updateFx=function(e,t){var r=this,n=r.graphDiv,i=r.bgRect,a=e.dragmode,o=e.clickmode;if(r.isStatic)return;function s(){var f=r.viewInitial,h={};for(var d in f)h[r.id+"."+d]=f[d];u7t.call("_guiRelayout",n,h),n.emit("plotly_doubleclick",null)}function l(f){return r.projection.invert([f[0]+r.xaxis._offset,f[1]+r.yaxis._offset])}var u=function(f,h){if(h.isRect){var d=f.range={};d[r.id]=[l([h.xmin,h.ymin]),l([h.xmax,h.ymax])]}else{var v=f.lassoPoints={};v[r.id]=h.map(l)}},c={element:r.bgRect.node(),gd:n,plotinfo:{id:r.id,xaxis:r.xaxis,yaxis:r.yaxis,fillRangeItems:u},xaxes:[r.xaxis],yaxes:[r.yaxis],subplot:r.id,clickFn:function(f){f===2&&d7t(n)}};a==="pan"?(i.node().onmousedown=null,i.call(p7t(r,t)),i.on("dblclick.zoom",s),n._context._scrollZoom.geo||i.on("wheel.zoom",null)):(a==="select"||a==="lasso")&&(i.on(".zoom",null),c.prepFn=function(f,h,d){h7t(f,h,d,c,a)},ZZ.init(c)),i.on("mousemove",function(){var f=r.projection.invert(pk.getPositionFromD3Event());if(!f)return ZZ.unhover(n,l1.event);r.xaxis.p2c=function(){return f[0]},r.yaxis.p2c=function(){return f[1]},ZDe.hover(n,l1.event,r.id)}),i.on("mouseout",function(){n._dragging||ZZ.unhover(n,l1.event)}),i.on("click",function(){a!=="select"&&a!=="lasso"&&(o.indexOf("select")>-1&&v7t(l1.event,n,[r.xaxis],[r.yaxis],r.id,c),o.indexOf("event")>-1&&ZDe.click(n,l1.event))})};tm.makeFramework=function(){var e=this,t=e.graphDiv,r=t._fullLayout,n="clip"+r._uid+e.id;e.clipDef=r._clips.append("clipPath").attr("id",n),e.clipRect=e.clipDef.append("rect"),e.framework=l1.select(e.container).append("g").attr("class","geo "+e.id).call(vk.setClipUrl,n,t),e.project=function(i){var a=e.projection(i);return a?[a[0]-e.xaxis._offset,a[1]-e.yaxis._offset]:[null,null]},e.xaxis={_id:"x",c2p:function(i){return e.project(i)[0]}},e.yaxis={_id:"y",c2p:function(i){return e.project(i)[1]}},e.mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},YZ.setConvert(e.mockAxis,r)};tm.saveViewInitial=function(e){var t=e.center||{},r=e.projection,n=r.rotation||{};this.viewInitial={fitbounds:e.fitbounds,"projection.scale":r.scale};var i;e._isScoped?i={"center.lon":t.lon,"center.lat":t.lat}:e._isClipped?i={"projection.rotation.lon":n.lon,"projection.rotation.lat":n.lat}:i={"center.lon":t.lon,"center.lat":t.lat,"projection.rotation.lon":n.lon},pk.extendFlat(this.viewInitial,i)};tm.render=function(e){this._hasMarkerAngles&&e?this.plot(this._geoCalcData,this._fullLayout,[],!0):this._render()};tm._render=function(){var e=this.projection,t=e.getPath(),r;function n(a){var o=e(a.lonlat);return o?c7t(o[0],o[1]):null}function i(a){return e.isLonLatOverEdges(a.lonlat)?"none":null}for(r in this.basePaths)this.basePaths[r].attr("d",t);for(r in this.dataPaths)this.dataPaths[r].attr("d",function(a){return t(a.geojson)});for(r in this.dataPoints)this.dataPoints[r].attr("display",i).attr("transform",n)};function y7t(e){var t=e.projection,r=t.type,n=hp.projNames[r];n="geo"+pk.titleCase(n);for(var i=KZ[n]||l7t[n],a=i(),o=e._isSatellite?Math.acos(1/t.distance)*180/Math.PI:e._isClipped?hp.lonaxisSpan[r]/2:null,s=["center","rotate","parallels","clipExtent"],l=function(f){return f?a:[]},u=0;uv}else return!1},a.getPath=function(){return o7t().projection(a)},a.getBounds=function(f){return a.getPath().bounds(f)},a.precision(hp.precision),e._isSatellite&&a.tilt(t.tilt).distance(t.distance),o&&a.clipAngle(o-hp.clipPad),a}function _7t(e,t,r){var n=1e-6,i=2.5,a=t[e],o=hp.scopeDefaults[t.scope],s,l,u;e==="lonaxis"?(s=o.lonaxisRange,l=o.lataxisRange,u=function(k,M){return[k,M]}):e==="lataxis"&&(s=o.lataxisRange,l=o.lonaxisRange,u=function(k,M){return[M,k]});var c={type:"linear",range:[s[0],s[1]-n],tick0:a.tick0,dtick:a.dtick};YZ.setConvert(c,r);var f=YZ.calcTicks(c);!t.isScoped&&e==="lonaxis"&&f.pop();for(var h=f.length,d=new Array(h),v=0;v0&&i<0&&(i+=360);var s=(i-n)/4;return{type:"Polygon",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}});var JZ=ye((jmr,iFe)=>{"use strict";var a5=Ih(),x7t=Cc().attributes,b7t=Pd().dash,n5=ck(),w7t=mc().overrideAll,tFe=t_(),rFe={range:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},showgrid:{valType:"boolean",dflt:!1},tick0:{valType:"number",dflt:0},dtick:{valType:"number"},gridcolor:{valType:"color",dflt:a5.lightLine},gridwidth:{valType:"number",min:0,dflt:1},griddash:b7t},T7t=iFe.exports=w7t({domain:x7t({name:"geo"},{}),fitbounds:{valType:"enumerated",values:[!1,"locations","geojson"],dflt:!1,editType:"plot"},resolution:{valType:"enumerated",values:[110,50],dflt:110,coerceNumber:!0},scope:{valType:"enumerated",values:tFe(n5.scopeDefaults),dflt:"world"},projection:{type:{valType:"enumerated",values:tFe(n5.projNames)},rotation:{lon:{valType:"number"},lat:{valType:"number"},roll:{valType:"number"}},tilt:{valType:"number",dflt:0},distance:{valType:"number",min:1.001,dflt:2},parallels:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},scale:{valType:"number",min:0,dflt:1}},center:{lon:{valType:"number"},lat:{valType:"number"}},visible:{valType:"boolean",dflt:!0},showcoastlines:{valType:"boolean"},coastlinecolor:{valType:"color",dflt:a5.defaultLine},coastlinewidth:{valType:"number",min:0,dflt:1},showland:{valType:"boolean",dflt:!1},landcolor:{valType:"color",dflt:n5.landColor},showocean:{valType:"boolean",dflt:!1},oceancolor:{valType:"color",dflt:n5.waterColor},showlakes:{valType:"boolean",dflt:!1},lakecolor:{valType:"color",dflt:n5.waterColor},showrivers:{valType:"boolean",dflt:!1},rivercolor:{valType:"color",dflt:n5.waterColor},riverwidth:{valType:"number",min:0,dflt:1},showcountries:{valType:"boolean"},countrycolor:{valType:"color",dflt:a5.defaultLine},countrywidth:{valType:"number",min:0,dflt:1},showsubunits:{valType:"boolean"},subunitcolor:{valType:"color",dflt:a5.defaultLine},subunitwidth:{valType:"number",min:0,dflt:1},showframe:{valType:"boolean"},framecolor:{valType:"color",dflt:a5.defaultLine},framewidth:{valType:"number",min:0,dflt:1},bgcolor:{valType:"color",dflt:a5.background},lonaxis:rFe,lataxis:rFe},"plot","from-root");T7t.uirevision={valType:"any",editType:"none"}});var oFe=ye((Wmr,aFe)=>{"use strict";var NF=Pr(),A7t=q_(),S7t=Id().getSubplotData,UF=ck(),M7t=JZ(),nFe=UF.axesNames;aFe.exports=function(t,r,n){A7t(t,r,n,{type:"geo",attributes:M7t,handleDefaults:E7t,fullData:n,partition:"y"})};function E7t(e,t,r,n){var i=S7t(n.fullData,"geo",n.id),a=i.map(function(ae){return ae.index}),o=r("resolution"),s=r("scope"),l=UF.scopeDefaults[s],u=r("projection.type",l.projType),c=t._isAlbersUsa=u==="albers usa";c&&(s=t.scope="usa");var f=t._isScoped=s!=="world",h=t._isSatellite=u==="satellite",d=t._isConic=u.indexOf("conic")!==-1||u==="albers",v=t._isClipped=!!UF.lonaxisSpan[u];if(e.visible===!1){var m=NF.extendDeep({},t._template);m.showcoastlines=!1,m.showcountries=!1,m.showframe=!1,m.showlakes=!1,m.showland=!1,m.showocean=!1,m.showrivers=!1,m.showsubunits=!1,m.lonaxis&&(m.lonaxis.showgrid=!1),m.lataxis&&(m.lataxis.showgrid=!1),t._template=m}for(var b=r("visible"),p,k=0;k0&&q<0&&(q+=360);var V=(z+q)/2,G;if(!c){var Z=f?l.projRotate:[V,0,0];G=r("projection.rotation.lon",Z[0]),r("projection.rotation.lat",Z[1]),r("projection.rotation.roll",Z[2]),p=r("showcoastlines",!f&&b),p&&(r("coastlinecolor"),r("coastlinewidth")),p=r("showocean",b?void 0:!1),p&&r("oceancolor")}var j,N;if(c?(j=-96.6,N=38.7):(j=f?V:G,N=(E[0]+E[1])/2),r("center.lon",j),r("center.lat",N),h&&(r("projection.tilt"),r("projection.distance")),d){var H=l.projParallels||[0,60];r("projection.parallels",H)}r("projection.scale"),p=r("showland",b?void 0:!1),p&&r("landcolor"),p=r("showlakes",b?void 0:!1),p&&r("lakecolor"),p=r("showrivers",b?void 0:!1),p&&(r("rivercolor"),r("riverwidth")),p=r("showcountries",f&&s!=="usa"&&b),p&&(r("countrycolor"),r("countrywidth")),(s==="usa"||s==="north america"&&o===50)&&(r("showsubunits",b),r("subunitcolor"),r("subunitwidth")),f||(p=r("showframe",b),p&&(r("framecolor"),r("framewidth"))),r("bgcolor");var ie=r("fitbounds");ie&&(delete t.projection.scale,f?(delete t.center.lon,delete t.center.lat):v?(delete t.center.lon,delete t.center.lat,delete t.projection.rotation.lon,delete t.projection.rotation.lat,delete t.lonaxis.range,delete t.lataxis.range):(delete t.center.lon,delete t.center.lat,delete t.projection.rotation.lon))}});var $Z=ye((Xmr,uFe)=>{"use strict";var k7t=Id().getSubplotCalcData,C7t=Pr().counterRegex,L7t=eFe(),ey="geo",sFe=C7t(ey),lFe={};lFe[ey]={valType:"subplotid",dflt:ey,editType:"calc"};function P7t(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[ey],i=0;i{"use strict";cFe.exports={attributes:tw(),supplyDefaults:GRe(),colorbar:Qd(),formatLabels:WRe(),calc:bF(),calcGeoJSON:NZ().calcGeoJSON,plot:NZ().plot,style:zZ(),styleOnSelect:sp().styleOnSelect,hoverPoints:RDe(),eventData:FDe(),selectPoints:ODe(),moduleType:"trace",name:"scattergeo",basePlotModule:$Z(),categories:["geo","symbols","showLegend","scatter-like"],meta:{}}});var dFe=ye((Ymr,hFe)=>{"use strict";hFe.exports=fFe()});var o5=ye((Kmr,gFe)=>{"use strict";var{hovertemplateAttrs:D7t,templatefallbackAttrs:F7t}=Ll(),px=tw(),z7t=Tu(),vFe=Gl(),q7t=Ih().defaultLine,vx=Ao().extendFlat,pFe=px.marker.line;gFe.exports=vx({locations:{valType:"data_array",editType:"calc"},locationmode:px.locationmode,z:{valType:"data_array",editType:"calc"},geojson:vx({},px.geojson,{}),featureidkey:px.featureidkey,text:vx({},px.text,{}),hovertext:vx({},px.hovertext,{}),marker:{line:{color:vx({},pFe.color,{dflt:q7t}),width:vx({},pFe.width,{dflt:1}),editType:"calc"},opacity:{valType:"number",arrayOk:!0,min:0,max:1,dflt:1,editType:"style"},editType:"calc"},selected:{marker:{opacity:px.selected.marker.opacity,editType:"plot"},editType:"plot"},unselected:{marker:{opacity:px.unselected.marker.opacity,editType:"plot"},editType:"plot"},hoverinfo:vx({},vFe.hoverinfo,{editType:"calc",flags:["location","z","text","name"]}),hovertemplate:D7t(),hovertemplatefallback:F7t(),showlegend:vx({},vFe.showlegend,{dflt:!1})},z7t("",{cLetter:"z",editTypeOverride:"calc"}))});var yFe=ye((Jmr,mFe)=>{"use strict";var gk=Pr(),O7t=td(),B7t=o5(),N7t=["The library used by the *country names* `locationmode` option is changing in the next major version.","Some country names in existing plots may not work in the new version.","To ensure consistent behavior, consider setting `locationmode` to *ISO-3*."].join(" ");mFe.exports=function(t,r,n,i){function a(h,d){return gk.coerce(t,r,B7t,h,d)}var o=a("locations"),s=a("z");if(!(o&&o.length&&gk.isArrayOrTypedArray(s)&&s.length)){r.visible=!1;return}r._length=Math.min(o.length,s.length);var l=a("geojson"),u;(typeof l=="string"&&l!==""||gk.isPlainObject(l))&&(u="geojson-id");var c=a("locationmode",u);c==="country names"&&gk.warn(N7t),c==="geojson-id"&&a("featureidkey"),a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback");var f=a("marker.line.width");f&&a("marker.line.color"),a("marker.opacity"),O7t(t,r,i,a,{prefix:"",cLetter:"z"}),gk.coerceSelectionMarkerOpacity(r,a)}});var VF=ye(($mr,bFe)=>{"use strict";var _Fe=Eo(),U7t=fs().BADNUM,V7t=gv(),G7t=Dm(),H7t=q0();function xFe(e){return e&&typeof e=="string"}bFe.exports=function(t,r){var n=r._length,i=new Array(n),a;r.geojson?a=function(c){return xFe(c)||_Fe(c)}:a=xFe;for(var o=0;o{"use strict";var j7t=qa(),W7t=ka(),QZ=So(),X7t=tc();function Z7t(e,t){t&&wFe(e,t)}function wFe(e,t){var r=t[0].trace,n=t[0].node3,i=n.selectAll(".choroplethlocation"),a=r.marker||{},o=a.line||{},s=X7t.makeColorScaleFuncFromTrace(r);i.each(function(l){j7t.select(this).attr("fill",s(l.z)).call(W7t.stroke,l.mlc||o.color).call(QZ.dashLine,"",l.mlw||o.width||0).style("opacity",a.opacity)}),QZ.selectedPointStyle(i,r)}function Y7t(e,t){var r=t[0].node3,n=t[0].trace;n.selectedpoints?QZ.selectedPointStyle(r.selectAll(".choroplethlocation"),n):wFe(e,t)}TFe.exports={style:Z7t,styleOnSelect:Y7t}});var eY=ye((eyr,MFe)=>{"use strict";var K7t=qa(),AFe=Pr(),s5=dx(),J7t=TF().getTopojsonFeatures,SFe=Mg().findExtremes,$7t=GF().style;function Q7t(e,t,r){var n=t.layers.backplot.select(".choroplethlayer");AFe.makeTraceGroups(n,r,"trace choropleth").each(function(i){var a=K7t.select(this),o=a.selectAll("path.choroplethlocation").data(AFe.identity);o.enter().append("path").classed("choroplethlocation",!0),o.exit().remove(),$7t(e,i)})}function e9t(e,t){for(var r=e[0].trace,n=t[r.geo],i=n._subplot,a=r.locationmode,o=r._length,s=a==="geojson-id"?s5.extractTraceFeature(e):J7t(r,i.topojson),l=[],u=[],c=0;c{"use strict";var t9t=ho(),r9t=o5(),i9t=Pr().fillText;EFe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.subplot,s,l,u,c,f=[r,n],h=[r+360,n];for(l=0;l")}}});var jF=ye((ryr,kFe)=>{"use strict";kFe.exports=function(t,r,n,i,a){t.location=r.location,t.z=r.z;var o=i[a];return o.fIn&&o.fIn.properties&&(t.properties=o.fIn.properties),t.ct=o.ct,t}});var WF=ye((iyr,CFe)=>{"use strict";CFe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l,u,c,f;if(r===!1)for(s=0;s{"use strict";LFe.exports={attributes:o5(),supplyDefaults:yFe(),colorbar:D_(),calc:VF(),calcGeoJSON:eY().calcGeoJSON,plot:eY().plot,style:GF().style,styleOnSelect:GF().styleOnSelect,hoverPoints:HF(),eventData:jF(),selectPoints:WF(),moduleType:"trace",name:"choropleth",basePlotModule:$Z(),categories:["geo","noOpacity","showLegend"],meta:{}}});var RFe=ye((ayr,IFe)=>{"use strict";IFe.exports=PFe()});var XF=ye((oyr,FFe)=>{"use strict";var a9t=Oa(),l0=Pr(),o9t=yT();function s9t(e,t,r,n){var i=e.cd,a=i[0].t,o=i[0].trace,s=e.xa,l=e.ya,u=a.x,c=a.y,f=s.c2p(t),h=l.c2p(r),d=e.distance,v;if(a.tree){var m=s.p2c(f-d),b=s.p2c(f+d),p=l.p2c(h-d),k=l.p2c(h+d);n==="x"?v=a.tree.range(Math.min(m,b),Math.min(l._rl[0],l._rl[1]),Math.max(m,b),Math.max(l._rl[0],l._rl[1])):v=a.tree.range(Math.min(m,b),Math.min(p,k),Math.max(m,b),Math.max(p,k))}else v=a.ids;var M,T,L,x,C,S,g,P,E,z=d;if(n==="x"){var q=!!o.xperiodalignment,V=!!o.yperiodalignment;for(C=0;C=Math.min(G,Z)&&f<=Math.max(G,Z)?0:1/0}if(S=Math.min(j,N)&&h<=Math.max(j,N)?0:1/0}E=Math.sqrt(S*S+g*g),T=v[C]}}}else for(C=v.length-1;C>-1;C--)M=v[C],L=u[M],x=c[M],S=s.c2p(L)-f,g=l.c2p(x)-h,P=Math.sqrt(S*S+g*g),P{"use strict";var zFe=20;qFe.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:zFe,SYMBOL_STROKE:zFe/20,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}});var mk=ye((lyr,UFe)=>{"use strict";var l9t=Gl(),u9t=ec(),c9t=Pg(),mf=pf(),OFe=vf().axisHoverFormat,BFe=Tu(),f9t=t_(),tY=Ao().extendFlat,h9t=mc().overrideAll,d9t=gx().DASHES,NFe=mf.line,u1=mf.marker,v9t=u1.line,mx=UFe.exports=h9t({x:mf.x,x0:mf.x0,dx:mf.dx,y:mf.y,y0:mf.y0,dy:mf.dy,xperiod:mf.xperiod,yperiod:mf.yperiod,xperiod0:mf.xperiod0,yperiod0:mf.yperiod0,xperiodalignment:mf.xperiodalignment,yperiodalignment:mf.yperiodalignment,xhoverformat:OFe("x"),yhoverformat:OFe("y"),text:mf.text,hovertext:mf.hovertext,textposition:mf.textposition,textfont:u9t({noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,editType:"calc",colorEditType:"style",arrayOk:!0,noNumericWeightValues:!0,variantValues:["normal","small-caps"]}),mode:{valType:"flaglist",flags:["lines","markers","text"],extras:["none"]},line:{color:NFe.color,width:NFe.width,shape:{valType:"enumerated",values:["linear","hv","vh","hvh","vhv"],dflt:"linear",editType:"plot"},dash:{valType:"enumerated",values:f9t(d9t),dflt:"solid"}},marker:tY({},BFe("marker"),{symbol:u1.symbol,angle:u1.angle,size:u1.size,sizeref:u1.sizeref,sizemin:u1.sizemin,sizemode:u1.sizemode,opacity:u1.opacity,colorbar:u1.colorbar,line:tY({},BFe("marker.line"),{width:v9t.width})}),connectgaps:mf.connectgaps,fill:tY({},mf.fill,{dflt:"none"}),fillcolor:c9t(),selected:{marker:mf.selected.marker,textfont:mf.selected.textfont},unselected:{marker:mf.unselected.marker,textfont:mf.unselected.textfont},opacity:l9t.opacity},"calc","nested");mx.x.editType=mx.y.editType=mx.x0.editType=mx.y0.editType="calc+clearAxisTypes";mx.hovertemplate=mf.hovertemplate;mx.hovertemplatefallback=mf.hovertemplatefallback;mx.texttemplate=mf.texttemplate;mx.texttemplatefallback=mf.texttemplatefallback});var ZF=ye(rY=>{"use strict";var VFe=gx();rY.isOpenSymbol=function(e){return typeof e=="string"?VFe.OPEN_RE.test(e):e%200>100};rY.isDotSymbol=function(e){return typeof e=="string"?VFe.DOT_RE.test(e):e>200}});var jFe=ye((cyr,HFe)=>{"use strict";var GFe=Pr(),p9t=Oa(),g9t=ZF(),m9t=mk(),y9t=Pm(),YF=Ru(),_9t=lT(),x9t=Dg(),b9t=$p(),w9t=D0(),T9t=Fg(),A9t=F0();HFe.exports=function(t,r,n,i){function a(d,v){return GFe.coerce(t,r,m9t,d,v)}var o=t.marker?g9t.isOpenSymbol(t.marker.symbol):!1,s=YF.isBubble(t),l=_9t(t,r,i,a);if(!l){r.visible=!1;return}x9t(t,r,i,a),a("xhoverformat"),a("yhoverformat");var u=l{"use strict";var S9t=uI();WFe.exports=function(t,r,n){var i=t.i;return"x"in t||(t.x=r._x[i]),"y"in t||(t.y=r._y[i]),S9t(t,r,n)}});var YFe=ye((hyr,ZFe)=>{"use strict";function M9t(e,t,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l>=0?(a=o,i=o-1):n=o+1}return a}function E9t(e,t,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l>0?(a=o,i=o-1):n=o+1}return a}function k9t(e,t,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l<0?(a=o,n=o+1):i=o-1}return a}function C9t(e,t,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l<=0?(a=o,n=o+1):i=o-1}return a}function L9t(e,t,r,n,i){for(;n<=i;){var a=n+i>>>1,o=e[a],s=r!==void 0?r(o,t):o-t;if(s===0)return a;s<=0?n=a+1:i=a-1}return-1}function yk(e,t,r,n,i,a){return typeof r=="function"?a(e,t,r,n===void 0?0:n|0,i===void 0?e.length-1:i|0):a(e,t,void 0,r===void 0?0:r|0,n===void 0?e.length-1:n|0)}ZFe.exports={ge:function(e,t,r,n,i){return yk(e,t,r,n,i,M9t)},gt:function(e,t,r,n,i){return yk(e,t,r,n,i,E9t)},lt:function(e,t,r,n,i){return yk(e,t,r,n,i,k9t)},le:function(e,t,r,n,i){return yk(e,t,r,n,i,C9t)},eq:function(e,t,r,n,i){return yk(e,t,r,n,i,L9t)}}});var ty=ye((dyr,JFe)=>{"use strict";JFe.exports=function(t,r,n){var i={},a,o;if(typeof r=="string"&&(r=KFe(r)),Array.isArray(r)){var s={};for(o=0;o{"use strict";var P9t=ty();$Fe.exports=I9t;function I9t(e){var t;return arguments.length>1&&(e=arguments),typeof e=="string"?e=e.split(/\s/).map(parseFloat):typeof e=="number"&&(e=[e]),e.length&&typeof e[0]=="number"?e.length===1?t={width:e[0],height:e[0],x:0,y:0}:e.length===2?t={width:e[0],height:e[1],x:0,y:0}:t={x:e[0],y:e[1],width:e[2]-e[0]||0,height:e[3]-e[1]||0}:e&&(e=P9t(e,{left:"x l left Left",top:"y t top Top",width:"w width W Width",height:"h height W Width",bottom:"b bottom Bottom",right:"r right Right"}),t={x:e.left||0,y:e.top||0},e.width==null?e.right?t.width=e.right-t.x:t.width=0:t.width=e.width,e.height==null?e.bottom?t.height=e.bottom-t.y:t.height=0:t.height=e.height),t}});var nw=ye((pyr,QFe)=>{"use strict";QFe.exports=R9t;function R9t(e,t){if(!e||e.length==null)throw Error("Argument should be an array");t==null?t=1:t=Math.floor(t);for(var r=Array(t*2),n=0;ni&&(i=e[o]),e[o]{eze.exports=function(){for(var e=0;e{var rze=tF();ize.exports=D9t;function D9t(e,t,r){if(!e)throw new TypeError("must specify data as first parameter");if(r=+(r||0)|0,Array.isArray(e)&&e[0]&&typeof e[0][0]=="number"){var n=e[0].length,i=e.length*n,a,o,s,l;(!t||typeof t=="string")&&(t=new(rze(t||"float32"))(i+r));var u=t.length-r;if(i!==u)throw new Error("source length "+i+" ("+n+"x"+e.length+") does not match destination length "+u);for(a=0,s=r;a{"use strict";nze.exports=function(e){var t=typeof e;return e!==null&&(t==="object"||t==="function")}});var sze=ye((_yr,oze)=>{"use strict";oze.exports=Math.log2||function(e){return Math.log(e)*Math.LOG2E}});var vze=ye((xyr,dze)=>{"use strict";var lze=YFe(),uze=ik(),F9t=l5(),z9t=nw(),cze=ty(),nY=tze(),q9t=aw(),O9t=aze(),B9t=tF(),fze=sze(),N9t=1073741824;dze.exports=function(t,r){r||(r={}),t=q9t(t,"float64"),r=cze(r,{bounds:"range bounds dataBox databox",maxDepth:"depth maxDepth maxdepth level maxLevel maxlevel levels",dtype:"type dtype format out dst output destination"});let n=nY(r.maxDepth,255),i=nY(r.bounds,z9t(t,2));i[0]===i[2]&&i[2]++,i[1]===i[3]&&i[3]++;let a=hze(t,i),o=t.length>>>1,s;r.dtype||(r.dtype="array"),typeof r.dtype=="string"?s=new(B9t(r.dtype))(o):r.dtype&&(s=r.dtype,Array.isArray(s)&&(s.length=o));for(let p=0;pn||x>N9t){for(let N=0;N_e||g>Ee||P=z||ie===ae)return;let Ce=l[H];ae===void 0&&(ae=Ce.length);for(let Pe=ie;Pe=T&&He<=x&<>=L&<<=C&&q.push(ce)}let ge=u[H],re=ge[ie*4+0],Se=ge[ie*4+1],ke=ge[ie*4+2],be=ge[ie*4+3],Be=G(ge,ie+1),Le=N*.5,me=H+1;V(Z,j,Le,me,re,Se||ke||be||Be),V(Z,j+Le,Le,me,Se,ke||be||Be),V(Z+Le,j,Le,me,ke,be||Be),V(Z+Le,j+Le,Le,me,be,Be)}function G(Z,j){let N=null,H=0;for(;N===null;)if(N=Z[j*4+H],H++,H>Z.length)return null;return N}return q}function m(p,k,M,T,L){let x=[];for(let C=0;C{"use strict";pze.exports=vze()});var aY=ye((wyr,gze)=>{gze.exports=U9t;function U9t(e){var t=0,r=0,n=0,i=0;return e.map(function(a){a=a.slice();var o=a[0],s=o.toUpperCase();if(o!=s)switch(a[0]=s,o){case"a":a[6]+=n,a[7]+=i;break;case"v":a[1]+=i;break;case"h":a[1]+=n;break;default:for(var l=1;l{"use strict";Object.defineProperty(JF,"__esModule",{value:!0});var V9t=function(){function e(t,r){var n=[],i=!0,a=!1,o=void 0;try{for(var s=t[Symbol.iterator](),l;!(i=(l=s.next()).done)&&(n.push(l.value),!(r&&n.length===r));i=!0);}catch(u){a=!0,o=u}finally{try{!i&&s.return&&s.return()}finally{if(a)throw o}}return n}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_k=Math.PI*2,oY=function(t,r,n,i,a,o,s){var l=t.x,u=t.y;l*=r,u*=n;var c=i*l-a*u,f=a*l+i*u;return{x:c+o,y:f+s}},G9t=function(t,r){var n=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),i=Math.cos(t),a=Math.sin(t),o=Math.cos(t+r),s=Math.sin(t+r);return[{x:i-a*n,y:a+i*n},{x:o+s*n,y:s-o*n},{x:o,y:s}]},mze=function(t,r,n,i){var a=t*i-r*n<0?-1:1,o=t*n+r*i;return o>1&&(o=1),o<-1&&(o=-1),a*Math.acos(o)},H9t=function(t,r,n,i,a,o,s,l,u,c,f,h){var d=Math.pow(a,2),v=Math.pow(o,2),m=Math.pow(f,2),b=Math.pow(h,2),p=d*v-d*b-v*m;p<0&&(p=0),p/=d*b+v*m,p=Math.sqrt(p)*(s===l?-1:1);var k=p*a/o*h,M=p*-o/a*f,T=c*k-u*M+(t+n)/2,L=u*k+c*M+(r+i)/2,x=(f-k)/a,C=(h-M)/o,S=(-f-k)/a,g=(-h-M)/o,P=mze(1,0,x,C),E=mze(x,C,S,g);return l===0&&E>0&&(E-=_k),l===1&&E<0&&(E+=_k),[T,L,P,E]},j9t=function(t){var r=t.px,n=t.py,i=t.cx,a=t.cy,o=t.rx,s=t.ry,l=t.xAxisRotation,u=l===void 0?0:l,c=t.largeArcFlag,f=c===void 0?0:c,h=t.sweepFlag,d=h===void 0?0:h,v=[];if(o===0||s===0)return[];var m=Math.sin(u*_k/360),b=Math.cos(u*_k/360),p=b*(r-i)/2+m*(n-a)/2,k=-m*(r-i)/2+b*(n-a)/2;if(p===0&&k===0)return[];o=Math.abs(o),s=Math.abs(s);var M=Math.pow(p,2)/Math.pow(o,2)+Math.pow(k,2)/Math.pow(s,2);M>1&&(o*=Math.sqrt(M),s*=Math.sqrt(M));var T=H9t(r,n,i,a,o,s,f,d,m,b,p,k),L=V9t(T,4),x=L[0],C=L[1],S=L[2],g=L[3],P=Math.abs(g)/(_k/4);Math.abs(1-P)<1e-7&&(P=1);var E=Math.max(Math.ceil(P),1);g/=E;for(var z=0;z{"use strict";bze.exports=X9t;var W9t=_ze();function X9t(e){for(var t,r=[],n=0,i=0,a=0,o=0,s=null,l=null,u=0,c=0,f=0,h=e.length;f4?(n=d[d.length-4],i=d[d.length-3]):(n=u,i=c),r.push(d)}return r}function $F(e,t,r,n){return["C",e,t,r,n,r,n]}function xze(e,t,r,n,i,a){return["C",e/3+2/3*r,t/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}});var sY=ye((Ayr,Tze)=>{"use strict";Tze.exports=function(t){return typeof t!="string"?!1:(t=t.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\dz]$/i.test(t)&&t.length>4))}});var Mze=ye((Syr,Sze)=>{"use strict";var Z9t=aM(),Y9t=aY(),K9t=wze(),J9t=sY(),Aze=mE();Sze.exports=$9t;function $9t(e){if(Array.isArray(e)&&e.length===1&&typeof e[0]=="string"&&(e=e[0]),typeof e=="string"&&(Aze(J9t(e),"String is not an SVG path."),e=Z9t(e)),Aze(Array.isArray(e),"Argument should be a string or an array of path segments."),e=Y9t(e),e=K9t(e),!e.length)return[0,0,0,0];for(var t=[1/0,1/0,-1/0,-1/0],r=0,n=e.length;rt[2]&&(t[2]=i[a+0]),i[a+1]>t[3]&&(t[3]=i[a+1]);return t}});var Ize=ye((Myr,Pze)=>{var ow=Math.PI,Eze=Lze(120);Pze.exports=Q9t;function Q9t(e){for(var t,r=[],n=0,i=0,a=0,o=0,s=null,l=null,u=0,c=0,f=0,h=e.length;f7&&(r.push(d.splice(0,7)),d.unshift("C"));break;case"S":var m=u,b=c;(t=="C"||t=="S")&&(m+=m-n,b+=b-i),d=["C",m,b,d[1],d[2],d[3],d[4]];break;case"T":t=="Q"||t=="T"?(s=u*2-s,l=c*2-l):(s=u,l=c),d=kze(u,c,s,l,d[1],d[2]);break;case"Q":s=d[1],l=d[2],d=kze(u,c,d[1],d[2],d[3],d[4]);break;case"L":d=QF(u,c,d[1],d[2]);break;case"H":d=QF(u,c,d[1],c);break;case"V":d=QF(u,c,u,d[1]);break;case"Z":d=QF(u,c,a,o);break}t=v,u=d[d.length-2],c=d[d.length-1],d.length>4?(n=d[d.length-4],i=d[d.length-3]):(n=u,i=c),r.push(d)}return r}function QF(e,t,r,n){return["C",e,t,r,n,r,n]}function kze(e,t,r,n,i,a){return["C",e/3+2/3*r,t/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}function Cze(e,t,r,n,i,a,o,s,l,u){if(u)M=u[0],T=u[1],p=u[2],k=u[3];else{var c=lY(e,t,-i);e=c.x,t=c.y,c=lY(s,l,-i),s=c.x,l=c.y;var f=(e-s)/2,h=(t-l)/2,d=f*f/(r*r)+h*h/(n*n);d>1&&(d=Math.sqrt(d),r=d*r,n=d*n);var v=r*r,m=n*n,b=(a==o?-1:1)*Math.sqrt(Math.abs((v*m-v*h*h-m*f*f)/(v*h*h+m*f*f)));b==1/0&&(b=1);var p=b*r*h/n+(e+s)/2,k=b*-n*f/r+(t+l)/2,M=Math.asin(((t-k)/n).toFixed(9)),T=Math.asin(((l-k)/n).toFixed(9));M=eT&&(M=M-ow*2),!o&&T>M&&(T=T-ow*2)}if(Math.abs(T-M)>Eze){var L=T,x=s,C=l;T=M+Eze*(o&&T>M?1:-1),s=p+r*Math.cos(T),l=k+n*Math.sin(T);var S=Cze(s,l,r,n,i,0,o,x,C,[T,L,p,k])}var g=Math.tan((T-M)/4),P=4/3*r*g,E=4/3*n*g,z=[2*e-(e+P*Math.sin(M)),2*t-(t-E*Math.cos(M)),s+P*Math.sin(T),l-E*Math.cos(T),s,l];if(u)return z;S&&(z=z.concat(S));for(var q=0;q{var eqt=aY(),tqt=Ize(),rqt={M:"moveTo",C:"bezierCurveTo"};Rze.exports=function(e,t){e.beginPath(),tqt(eqt(t)).forEach(function(r){var n=r[0],i=r.slice(1);e[rqt[n]].apply(e,i)}),e.closePath()}});var Oze=ye((kyr,qze)=>{"use strict";var iqt=ik();qze.exports=nqt;var xk=1e20;function nqt(e,t){t||(t={});var r=t.cutoff==null?.25:t.cutoff,n=t.radius==null?8:t.radius,i=t.channel||0,a,o,s,l,u,c,f,h,d,v,m;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!t.width||!t.height)throw Error("For raw data width and height should be provided by options");a=t.width,o=t.height,l=e,t.stride?c=t.stride:c=Math.floor(e.length/a/o)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(h=e,f=h.getContext("2d"),a=h.width,o=h.height,d=f.getImageData(0,0,a,o),l=d.data,c=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(h=e.canvas,f=e,a=h.width,o=h.height,d=f.getImageData(0,0,a,o),l=d.data,c=4):window.ImageData&&e instanceof window.ImageData&&(d=e,a=e.width,o=e.height,l=d.data,c=4);if(s=Math.max(a,o),window.Uint8ClampedArray&&l instanceof window.Uint8ClampedArray||window.Uint8Array&&l instanceof window.Uint8Array)for(u=l,l=Array(a*o),v=0,m=u.length;v{"use strict";var aqt=Mze(),oqt=aM(),sqt=Dze(),lqt=sY(),uqt=Oze(),uY=document.createElement("canvas"),dp=uY.getContext("2d");Bze.exports=cqt;function cqt(e,t){if(!lqt(e))throw Error("Argument should be valid svg path string");t||(t={});var r,n;t.shape?(r=t.shape[0],n=t.shape[1]):(r=uY.width=t.w||t.width||200,n=uY.height=t.h||t.height||200);var i=Math.min(r,n),a=t.stroke||0,o=t.viewbox||t.viewBox||aqt(e),s=[r/(o[2]-o[0]),n/(o[3]-o[1])],l=Math.min(s[0]||0,s[1]||0)/2;if(dp.fillStyle="black",dp.fillRect(0,0,r,n),dp.fillStyle="white",a&&(typeof a!="number"&&(a=1),a>0?dp.strokeStyle="white":dp.strokeStyle="black",dp.lineWidth=Math.abs(a)),dp.translate(r*.5,n*.5),dp.scale(l,l),fqt()){var u=new Path2D(e);dp.fill(u),a&&dp.stroke(u)}else{var c=oqt(e);sqt(dp,c),dp.fill(),a&&dp.stroke()}dp.setTransform(1,0,0,1,0,0);var f=uqt(dp,{cutoff:t.cutoff!=null?t.cutoff:.5,radius:t.radius!=null?t.radius:i*.5});return f}var ez;function fqt(){if(ez!=null)return ez;var e=document.createElement("canvas").getContext("2d");if(e.canvas.width=e.canvas.height=1,!window.Path2D)return ez=!1;var t=new Path2D("M0,0h1v1h-1v-1Z");e.fillStyle="black",e.fill(t);var r=e.getImageData(0,0,1,1);return ez=r&&r.data&&r.data[3]===255}});var lw=ye((Lyr,Jze)=>{"use strict";var rz=Eo(),hqt=Nze(),tz=sx(),dqt=Oa(),f5=Pr(),bh=f5.isArrayOrTypedArray,u5=So(),Uze=df(),Vze=a1().formatColor,c5=Ru(),vqt=B3(),fY=ZF(),bk=gx(),pqt=X1().DESELECTDIM,Gze={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},gqt=ip().appendArrayPointValue;function mqt(e,t){var r,n={marker:void 0,markerSel:void 0,markerUnsel:void 0,line:void 0,fill:void 0,errorX:void 0,errorY:void 0,text:void 0,textSel:void 0,textUnsel:void 0},i=e._context.plotGlPixelRatio;if(t.visible!==!0)return n;if(c5.hasText(t)&&(n.text=Kze(e,t),n.textSel=jze(e,t,t.selected),n.textUnsel=jze(e,t,t.unselected)),c5.hasMarkers(t)&&(n.marker=dY(e,t),n.markerSel=hY(e,t,t.selected),n.markerUnsel=hY(e,t,t.unselected),!t.unselected&&bh(t.marker.opacity))){var a=t.marker.opacity;for(n.markerUnsel.opacity=new Array(a.length),r=0;r500?"bold":"normal":e}function dY(e,t){var r=t._length,n=t.marker,i={},a,o=bh(n.symbol),s=bh(n.angle),l=bh(n.color),u=bh(n.line.color),c=bh(n.opacity),f=bh(n.size),h=bh(n.line.width),d;if(o||(d=fY.isOpenSymbol(n.symbol)),o||l||u||c||s){i.symbols=new Array(r),i.angles=new Array(r),i.colors=new Array(r),i.borderColors=new Array(r);var v=n.symbol,m=n.angle,b=Vze(n,n.opacity,r),p=Vze(n.line,n.opacity,r);if(!bh(p[0])){var k=p;for(p=Array(r),a=0;abk.TOO_MANY_POINTS||c5.hasMarkers(t)?"rect":"round";if(u&&t.connectgaps){var f=a[0],h=a[1];for(o=0;o1?l[o]:l[0]:l,d=bh(u)?u.length>1?u[o]:u[0]:u,v=Gze[h],m=Gze[d],b=c?c/.8+1:0,p=-m*b-m*.5;a.offset[o]=[v*b/f,p/f]}}return a}Jze.exports={style:mqt,markerStyle:dY,markerSelection:hY,linePositions:_qt,errorBarPositions:xqt,textPosition:bqt}});var vY=ye((Pyr,$ze)=>{"use strict";var iz=Pr();$ze.exports=function(t,r){var n=r._scene,i={count:0,dirty:!0,lineOptions:[],fillOptions:[],markerOptions:[],markerSelectedOptions:[],markerUnselectedOptions:[],errorXOptions:[],errorYOptions:[],textOptions:[],textSelectedOptions:[],textUnselectedOptions:[],selectBatch:[],unselectBatch:[]},a={fill2d:!1,scatter2d:!1,error2d:!1,line2d:!1,glText:!1,select2d:!1};return r._scene||(n=r._scene={},n.init=function(){iz.extendFlat(n,a,i)},n.init(),n.update=function(s){var l=iz.repeat(s,n.count);if(n.fill2d&&n.fill2d.update(l),n.scatter2d&&n.scatter2d.update(l),n.line2d&&n.line2d.update(l),n.error2d&&n.error2d.update(l.concat(l)),n.select2d&&n.select2d.update(l),n.glText)for(var u=0;u{"use strict";var wqt=KF(),h5=Pr(),Qze=df(),Tqt=Mg().findExtremes,e7e=zg(),pY=O0(),Aqt=pY.calcMarkerSize,Sqt=pY.calcAxisExpansion,Mqt=pY.setFirstScatter,Eqt=z0(),d5=lw(),kqt=vY(),t7e=fs().BADNUM,Cqt=gx().TOO_MANY_POINTS;i7e.exports=function(t,r){var n=t._fullLayout,i=r._xA=Qze.getFromId(t,r.xaxis,"x"),a=r._yA=Qze.getFromId(t,r.yaxis,"y"),o=n._plots[r.xaxis+r.yaxis],s=r._length,l=s>=Cqt,u=s*2,c={},f,h=i.makeCalcdata(r,"x"),d=a.makeCalcdata(r,"y"),v=e7e(r,i,"x",h),m=e7e(r,a,"y",d),b=v.vals,p=m.vals;r._x=b,r._y=p,r.xperiodalignment&&(r._origX=h,r._xStarts=v.starts,r._xEnds=v.ends),r.yperiodalignment&&(r._origY=d,r._yStarts=m.starts,r._yEnds=m.ends);var k=new Array(u),M=new Array(s);for(f=0;f1&&h5.extendFlat(o.line,d5.linePositions(e,r,n)),o.errorX||o.errorY){var s=d5.errorBarPositions(e,r,n,i,a);o.errorX&&h5.extendFlat(o.errorX,s.x),o.errorY&&h5.extendFlat(o.errorY,s.y)}return o.text&&(h5.extendFlat(o.text,{positions:n},d5.textPosition(e,r,o.text,o.marker)),h5.extendFlat(o.textSel,{positions:n},d5.textPosition(e,r,o.text,o.markerSel)),h5.extendFlat(o.textUnsel,{positions:n},d5.textPosition(e,r,o.text,o.markerUnsel))),o}});var gY=ye((Ryr,o7e)=>{"use strict";var a7e=Pr(),Pqt=ka(),Iqt=X1().DESELECTDIM;function Rqt(e){var t=e[0],r=t.trace,n=t.t,i=n._scene,a=n.index,o=i.selectBatch[a],s=i.unselectBatch[a],l=i.textOptions[a],u=i.textSelectedOptions[a]||{},c=i.textUnselectedOptions[a]||{},f=a7e.extendFlat({},l),h,d;if(o.length||s.length){var v=u.color,m=c.color,b=l.color,p=a7e.isArrayOrTypedArray(b);for(f.color=new Array(r._length),h=0;h{"use strict";var s7e=Ru(),Dqt=gY().styleTextSelection;l7e.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l=n[0].t,u=s._length,c=l.x,f=l.y,h=l._scene,d=l.index;if(!h)return o;var v=s7e.hasText(s),m=s7e.hasMarkers(s),b=!m&&!v;if(s.visible!==!0||b)return o;var p=[],k=[];if(r!==!1&&!r.degenerate)for(var M=0;M{"use strict";var Fqt=XF();u7e.exports={moduleType:"trace",name:"scattergl",basePlotModule:mh(),categories:["gl","regl","cartesian","symbols","errorBarsOK","showLegend","scatter-like"],attributes:mk(),supplyDefaults:jFe(),crossTraceDefaults:hU(),colorbar:Qd(),formatLabels:XFe(),calc:n7e(),hoverPoints:Fqt.hoverPoints,selectPoints:mY(),meta:{}}});var h7e=ye((zyr,az)=>{"use strict";var nz=ik();az.exports=f7e;az.exports.to=f7e;az.exports.from=zqt;function f7e(e,t){t==null&&(t=!0);var r=e[0],n=e[1],i=e[2],a=e[3];a==null&&(a=t?1:255),t&&(r*=255,n*=255,i*=255,a*=255),r=nz(r,0,255)&255,n=nz(n,0,255)&255,i=nz(i,0,255)&255,a=nz(a,0,255)&255;var o=r*16777216+(n<<16)+(i<<8)+a;return o}function zqt(e,t){e=+e;var r=e>>>24,n=(e&16711680)>>>16,i=(e&65280)>>>8,a=e&255;return t===!1?[r,n,i,a]:[r/255,n/255,i/255,a/255]}});var Nh=ye((qyr,v7e)=>{"use strict";var d7e=Object.getOwnPropertySymbols,qqt=Object.prototype.hasOwnProperty,Oqt=Object.prototype.propertyIsEnumerable;function Bqt(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function Nqt(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;var n=Object.getOwnPropertyNames(t).map(function(a){return t[a]});if(n.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(a){i[a]=a}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch(a){return!1}}v7e.exports=Nqt()?Object.assign:function(e,t){for(var r,n=Bqt(e),i,a=1;a{p7e.exports=function(e){typeof e=="string"&&(e=[e]);for(var t=[].slice.call(arguments,1),r=[],n=0;n{"use strict";m7e.exports=function(t,r,n){Array.isArray(n)||(n=[].slice.call(arguments,2));for(var i=0,a=n.length;i{"use strict";y7e.exports=typeof navigator!="undefined"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion))});var oz=ye((Uyr,v5)=>{"use strict";v5.exports=wk;v5.exports.float32=v5.exports.float=wk;v5.exports.fract32=v5.exports.fract=Uqt;var x7e=new Float32Array(1);function Uqt(e,t){if(e.length){if(e instanceof Float32Array)return new Float32Array(e.length);t instanceof Float32Array||(t=wk(e));for(var r=0,n=t.length;r{"use strict";function Vqt(e,t){var r=e==null?null:typeof Symbol!="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(r!=null){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(e)).next,t===0){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&r.return!=null&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}function Gqt(e,t){return Wqt(e)||Vqt(e,t)||w7e(e,t)||Yqt()}function Hqt(e){return jqt(e)||Xqt(e)||w7e(e)||Zqt()}function jqt(e){if(Array.isArray(e))return _Y(e)}function Wqt(e){if(Array.isArray(e))return e}function Xqt(e){if(typeof Symbol!="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function w7e(e,t){if(e){if(typeof e=="string")return _Y(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return _Y(e,t)}}function _Y(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r 1.0 + delta) { + discard; + } + + alpha -= smoothstep(1.0 - delta, 1.0 + delta, radius); + + float borderRadius = fragBorderRadius; + float ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius); + vec4 color = mix(fragColor, fragBorderColor, ratio); + color.a *= alpha * opacity; + gl_FragColor = color; +} +`]),v.vert=sz([`precision highp float; +#define GLSLIFY 1 + +attribute float x, y, xFract, yFract; +attribute float size, borderSize; +attribute vec4 colorId, borderColorId; +attribute float isActive; + +// \`invariant\` effectively turns off optimizations for the position. +// We need this because -fast-math on M1 Macs is re-ordering +// floating point operations in a way that causes floating point +// precision limits to put points in the wrong locations. +invariant gl_Position; + +uniform bool constPointSize; +uniform float pixelRatio; +uniform vec2 paletteSize, scale, scaleFract, translate, translateFract; +uniform sampler2D paletteTexture; + +const float maxSize = 100.; + +varying vec4 fragColor, fragBorderColor; +varying float fragBorderRadius, fragWidth; + +float pointSizeScale = (constPointSize) ? 2. : pixelRatio; + +bool isDirect = (paletteSize.x < 1.); + +vec4 getColor(vec4 id) { + return isDirect ? id / 255. : texture2D(paletteTexture, + vec2( + (id.x + .5) / paletteSize.x, + (id.y + .5) / paletteSize.y + ) + ); +} + +void main() { + // ignore inactive points + if (isActive == 0.) return; + + vec2 position = vec2(x, y); + vec2 positionFract = vec2(xFract, yFract); + + vec4 color = getColor(colorId); + vec4 borderColor = getColor(borderColorId); + + float size = size * maxSize / 255.; + float borderSize = borderSize * maxSize / 255.; + + gl_PointSize = (size + borderSize) * pointSizeScale; + + vec2 pos = (position + translate) * scale + + (positionFract + translateFract) * scale + + (position + translate) * scaleFract + + (positionFract + translateFract) * scaleFract; + + gl_Position = vec4(pos * 2. - 1., 0., 1.); + + fragBorderRadius = 1. - 2. * borderSize / (size + borderSize); + fragColor = color; + fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor; + fragWidth = 1. / gl_PointSize; +} +`]),b7e&&(v.frag=v.frag.replace("smoothstep","smoothStep"),d.frag=d.frag.replace("smoothstep","smoothStep")),this.drawCircle=e(v)}av.defaults={color:"black",borderColor:"transparent",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4};av.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this};av.prototype.draw=function(){for(var e=this,t=arguments.length,r=new Array(t),n=0;nie)?N.tree=Qqt(j,{bounds:ge}):ie&&ie.length&&(N.tree=ie),N.tree){var re={primitive:"points",usage:"static",data:N.tree,type:"uint32"};N.elements?N.elements(re):N.elements=o.elements(re)}var Se=lz.float32(j);ae({data:Se,usage:"dynamic"});var ke=lz.fract32(j,Se);return _e({data:ke,usage:"dynamic"}),Ee({data:new Uint8Array(Ce),type:"uint8",usage:"stream"}),j}},{marker:function(j,N,H){var ie=N.activation;if(ie.forEach(function(ke){return ke&&ke.destroy&&ke.destroy()}),ie.length=0,!j||typeof j[0]=="number"){var ae=e.addMarker(j);ie[ae]=!0}else{for(var _e=[],Ee=0,Ce=Math.min(j.length,N.count);Ee=0)return i;var a;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)a=e;else{a=new Uint8Array(e.length);for(var o=0,s=e.length;on*4&&(this.tooManyColors=!0),this.updatePalette(r),i.length===1?i[0]:i};av.prototype.updatePalette=function(e){if(!this.tooManyColors){var t=this.maxColors,r=this.paletteTexture,n=Math.ceil(e.length*.25/t);if(n>1){e=e.slice();for(var i=e.length*.25%t;i{"use strict";AY.exports=fz;AY.exports.default=fz;function fz(e,t,r){r=r||2;var n=t&&t.length,i=n?t[0]*r:e.length,a=S7e(e,0,i,r,!0),o=[];if(!a||a.next===a.prev)return o;var s,l,u,c,f,h,d;if(n&&(a=fOt(e,t,a,r)),e.length>80*r){s=u=e[0],l=c=e[1];for(var v=r;vu&&(u=f),h>c&&(c=h);d=Math.max(u-s,c-l),d=d!==0?32767/d:0}return Tk(a,o,r,s,l,d,0),o}function S7e(e,t,r,n,i){var a,o;if(i===TY(e,t,r,n)>0)for(a=t;a=t;a-=n)o=A7e(a,e[a],e[a+1],o);return o&&hz(o,o.next)&&(Sk(o),o=o.next),o}function cw(e,t){if(!e)return e;t||(t=e);var r=e,n;do if(n=!1,!r.steiner&&(hz(r,r.next)||wh(r.prev,r,r.next)===0)){if(Sk(r),r=t=r.prev,r===r.next)break;n=!0}else r=r.next;while(n||r!==t);return t}function Tk(e,t,r,n,i,a,o){if(e){!o&&a&&gOt(e,n,i,a);for(var s=e,l,u;e.prev!==e.next;){if(l=e.prev,u=e.next,a?lOt(e,n,i,a):sOt(e)){t.push(l.i/r|0),t.push(e.i/r|0),t.push(u.i/r|0),Sk(e),e=u.next,s=u.next;continue}if(e=u,e===s){o?o===1?(e=uOt(cw(e),t,r),Tk(e,t,r,n,i,a,2)):o===2&&cOt(e,t,r,n,i,a):Tk(cw(e),t,r,n,i,a,1);break}}}}function sOt(e){var t=e.prev,r=e,n=e.next;if(wh(t,r,n)>=0)return!1;for(var i=t.x,a=r.x,o=n.x,s=t.y,l=r.y,u=n.y,c=ia?i>o?i:o:a>o?a:o,d=s>l?s>u?s:u:l>u?l:u,v=n.next;v!==t;){if(v.x>=c&&v.x<=h&&v.y>=f&&v.y<=d&&p5(i,s,a,l,o,u,v.x,v.y)&&wh(v.prev,v,v.next)>=0)return!1;v=v.next}return!0}function lOt(e,t,r,n){var i=e.prev,a=e,o=e.next;if(wh(i,a,o)>=0)return!1;for(var s=i.x,l=a.x,u=o.x,c=i.y,f=a.y,h=o.y,d=sl?s>u?s:u:l>u?l:u,b=c>f?c>h?c:h:f>h?f:h,p=bY(d,v,t,r,n),k=bY(m,b,t,r,n),M=e.prevZ,T=e.nextZ;M&&M.z>=p&&T&&T.z<=k;){if(M.x>=d&&M.x<=m&&M.y>=v&&M.y<=b&&M!==i&&M!==o&&p5(s,c,l,f,u,h,M.x,M.y)&&wh(M.prev,M,M.next)>=0||(M=M.prevZ,T.x>=d&&T.x<=m&&T.y>=v&&T.y<=b&&T!==i&&T!==o&&p5(s,c,l,f,u,h,T.x,T.y)&&wh(T.prev,T,T.next)>=0))return!1;T=T.nextZ}for(;M&&M.z>=p;){if(M.x>=d&&M.x<=m&&M.y>=v&&M.y<=b&&M!==i&&M!==o&&p5(s,c,l,f,u,h,M.x,M.y)&&wh(M.prev,M,M.next)>=0)return!1;M=M.prevZ}for(;T&&T.z<=k;){if(T.x>=d&&T.x<=m&&T.y>=v&&T.y<=b&&T!==i&&T!==o&&p5(s,c,l,f,u,h,T.x,T.y)&&wh(T.prev,T,T.next)>=0)return!1;T=T.nextZ}return!0}function uOt(e,t,r){var n=e;do{var i=n.prev,a=n.next.next;!hz(i,a)&&M7e(i,n,n.next,a)&&Ak(i,a)&&Ak(a,i)&&(t.push(i.i/r|0),t.push(n.i/r|0),t.push(a.i/r|0),Sk(n),Sk(n.next),n=e=a),n=n.next}while(n!==e);return cw(n)}function cOt(e,t,r,n,i,a){var o=e;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&_Ot(o,s)){var l=E7e(o,s);o=cw(o,o.next),l=cw(l,l.next),Tk(o,t,r,n,i,a,0),Tk(l,t,r,n,i,a,0);return}s=s.next}o=o.next}while(o!==e)}function fOt(e,t,r,n){var i=[],a,o,s,l,u;for(a=0,o=t.length;a=r.next.y&&r.next.y!==r.y){var s=r.x+(i-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(s<=n&&s>a&&(a=s,o=r.x=r.x&&r.x>=u&&n!==r.x&&p5(io.x||r.x===o.x&&pOt(o,r)))&&(o=r,f=h)),r=r.next;while(r!==l);return o}function pOt(e,t){return wh(e.prev,e,t.prev)<0&&wh(t.next,e,e.next)<0}function gOt(e,t,r,n){var i=e;do i.z===0&&(i.z=bY(i.x,i.y,t,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,mOt(i)}function mOt(e){var t,r,n,i,a,o,s,l,u=1;do{for(r=e,e=null,a=null,o=0;r;){for(o++,n=r,s=0,t=0;t0||l>0&&n;)s!==0&&(l===0||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:e=i,i.prevZ=a,a=i;r=n}a.nextZ=null,u*=2}while(o>1);return e}function bY(e,t,r,n,i){return e=(e-r)*i|0,t=(t-n)*i|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function yOt(e){var t=e,r=e;do(t.x=(e-o)*(a-s)&&(e-o)*(n-s)>=(r-o)*(t-s)&&(r-o)*(a-s)>=(i-o)*(n-s)}function _Ot(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!xOt(e,t)&&(Ak(e,t)&&Ak(t,e)&&bOt(e,t)&&(wh(e.prev,e,t.prev)||wh(e,t.prev,t))||hz(e,t)&&wh(e.prev,e,e.next)>0&&wh(t.prev,t,t.next)>0)}function wh(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function hz(e,t){return e.x===t.x&&e.y===t.y}function M7e(e,t,r,n){var i=cz(wh(e,t,r)),a=cz(wh(e,t,n)),o=cz(wh(r,n,e)),s=cz(wh(r,n,t));return!!(i!==a&&o!==s||i===0&&uz(e,r,t)||a===0&&uz(e,n,t)||o===0&&uz(r,e,n)||s===0&&uz(r,t,n))}function uz(e,t,r){return t.x<=Math.max(e.x,r.x)&&t.x>=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)}function cz(e){return e>0?1:e<0?-1:0}function xOt(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&M7e(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function Ak(e,t){return wh(e.prev,e,e.next)<0?wh(e,t,e.next)>=0&&wh(e,e.prev,t)>=0:wh(e,t,e.prev)<0||wh(e,e.next,t)<0}function bOt(e,t){var r=e,n=!1,i=(e.x+t.x)/2,a=(e.y+t.y)/2;do r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;while(r!==e);return n}function E7e(e,t){var r=new wY(e.i,e.x,e.y),n=new wY(t.i,t.x,t.y),i=e.next,a=t.prev;return e.next=t,t.prev=e,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function A7e(e,t,r,n){var i=new wY(e,t,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function Sk(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function wY(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}fz.deviation=function(e,t,r,n){var i=t&&t.length,a=i?t[0]*r:e.length,o=Math.abs(TY(e,0,a,r));if(i)for(var s=0,l=t.length;s0&&(n+=e[i-1].length,r.holes.push(n))}return r}});var L7e=ye((Hyr,C7e)=>{"use strict";var wOt=nw();C7e.exports=TOt;function TOt(e,t,r){if(!e||e.length==null)throw Error("Argument should be an array");t==null&&(t=1),r==null&&(r=wOt(e,t));for(var n=0;n{"use strict";P7e.exports=function(){var e,t;if(typeof WeakMap!="function")return!1;try{e=new WeakMap([[t={},"one"],[{},"two"],[{},"three"]])}catch(r){return!1}return!(String(e)!=="[object WeakMap]"||typeof e.set!="function"||e.set({},1)!==e||typeof e.delete!="function"||typeof e.has!="function"||e.get(t)!=="one")}});var D7e=ye((Wyr,R7e)=>{"use strict";R7e.exports=function(){}});var yx=ye((Xyr,F7e)=>{"use strict";var AOt=D7e()();F7e.exports=function(e){return e!==AOt&&e!==null}});var SY=ye((Zyr,q7e)=>{"use strict";var SOt=Object.create,MOt=Object.getPrototypeOf,z7e={};q7e.exports=function(){var e=Object.setPrototypeOf,t=arguments[0]||SOt;return typeof e!="function"?!1:MOt(e(t(null),z7e))===z7e}});var MY=ye((Yyr,O7e)=>{"use strict";var EOt=yx(),kOt={function:!0,object:!0};O7e.exports=function(e){return EOt(e)&&kOt[typeof e]||!1}});var c1=ye((Kyr,B7e)=>{"use strict";var COt=yx();B7e.exports=function(e){if(!COt(e))throw new TypeError("Cannot use null or undefined");return e}});var U7e=ye((Jyr,N7e)=>{"use strict";var EY=Object.create,dz;SY()()||(dz=kY());N7e.exports=function(){var e,t,r;return!dz||dz.level!==1?EY:(e={},t={},r={configurable:!1,enumerable:!1,writable:!0,value:void 0},Object.getOwnPropertyNames(Object.prototype).forEach(function(n){if(n==="__proto__"){t[n]={configurable:!0,enumerable:!1,writable:!0,value:void 0};return}t[n]=r}),Object.defineProperties(e,t),Object.defineProperty(dz,"nullPolyfill",{configurable:!1,enumerable:!1,writable:!1,value:e}),function(n,i){return EY(n===null?e:n,i)})}()});var kY=ye(($yr,V7e)=>{"use strict";var LOt=MY(),POt=c1(),IOt=Object.prototype.isPrototypeOf,ROt=Object.defineProperty,DOt={configurable:!0,enumerable:!1,writable:!0,value:void 0},vz;vz=function(e,t){if(POt(e),t===null||LOt(t))return e;throw new TypeError("Prototype must be null or an object")};V7e.exports=function(e){var t,r;return e?(e.level===2?e.set?(r=e.set,t=function(n,i){return r.call(vz(n,i),i),n}):t=function(n,i){return vz(n,i).__proto__=i,n}:t=function n(i,a){var o;return vz(i,a),o=IOt.call(n.nullPolyfill,i),o&&delete n.nullPolyfill.__proto__,a===null&&(a=n.nullPolyfill),i.__proto__=a,o&&ROt(n.nullPolyfill,"__proto__",DOt),i},Object.defineProperty(t,"level",{configurable:!1,enumerable:!1,writable:!1,value:e.level})):null}(function(){var e=Object.create(null),t={},r,n=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__");if(n){try{r=n.set,r.call(e,t)}catch(i){}if(Object.getPrototypeOf(e)===t)return{set:r,level:2}}return e.__proto__=t,Object.getPrototypeOf(e)===t?{level:2}:(e={},e.__proto__=t,Object.getPrototypeOf(e)===t?{level:1}:!1)}());U7e()});var pz=ye((Qyr,G7e)=>{"use strict";G7e.exports=SY()()?Object.setPrototypeOf:kY()});var j7e=ye((e1r,H7e)=>{"use strict";var FOt=MY();H7e.exports=function(e){if(!FOt(e))throw new TypeError(e+" is not an Object");return e}});var X7e=ye((t1r,W7e)=>{"use strict";var zOt=Object.create(null),qOt=Math.random;W7e.exports=function(){var e;do e=qOt().toString(36).slice(2);while(zOt[e]);return e}});var fw=ye((r1r,Z7e)=>{"use strict";var OOt=void 0;Z7e.exports=function(e){return e!==OOt&&e!==null}});var gz=ye((i1r,Y7e)=>{"use strict";var BOt=fw(),NOt={object:!0,function:!0,undefined:!0};Y7e.exports=function(e){return BOt(e)?hasOwnProperty.call(NOt,typeof e):!1}});var J7e=ye((n1r,K7e)=>{"use strict";var UOt=gz();K7e.exports=function(e){if(!UOt(e))return!1;try{return e.constructor?e.constructor.prototype===e:!1}catch(t){return!1}}});var Q7e=ye((a1r,$7e)=>{"use strict";var VOt=J7e();$7e.exports=function(e){if(typeof e!="function"||!hasOwnProperty.call(e,"length"))return!1;try{if(typeof e.length!="number"||typeof e.call!="function"||typeof e.apply!="function")return!1}catch(t){return!1}return!VOt(e)}});var CY=ye((o1r,e9e)=>{"use strict";var GOt=Q7e(),HOt=/^\s*class[\s{/}]/,jOt=Function.prototype.toString;e9e.exports=function(e){return!(!GOt(e)||HOt.test(jOt.call(e)))}});var r9e=ye((s1r,t9e)=>{"use strict";t9e.exports=function(){var e=Object.assign,t;return typeof e!="function"?!1:(t={foo:"raz"},e(t,{bar:"dwa"},{trzy:"trzy"}),t.foo+t.bar+t.trzy==="razdwatrzy")}});var n9e=ye((l1r,i9e)=>{"use strict";i9e.exports=function(){try{return Object.keys("primitive"),!0}catch(e){return!1}}});var o9e=ye((u1r,a9e)=>{"use strict";var WOt=yx(),XOt=Object.keys;a9e.exports=function(e){return XOt(WOt(e)?Object(e):e)}});var l9e=ye((c1r,s9e)=>{"use strict";s9e.exports=n9e()()?Object.keys:o9e()});var c9e=ye((f1r,u9e)=>{"use strict";var ZOt=l9e(),YOt=c1(),KOt=Math.max;u9e.exports=function(e,t){var r,n,i=KOt(arguments.length,2),a;for(e=Object(YOt(e)),a=function(o){try{e[o]=t[o]}catch(s){r||(r=s)}},n=1;n{"use strict";f9e.exports=r9e()()?Object.assign:c9e()});var LY=ye((d1r,h9e)=>{"use strict";var JOt=yx(),$Ot=Array.prototype.forEach,QOt=Object.create,eBt=function(e,t){var r;for(r in e)t[r]=e[r]};h9e.exports=function(e){var t=QOt(null);return $Ot.call(arguments,function(r){JOt(r)&&eBt(Object(r),t)}),t}});var v9e=ye((v1r,d9e)=>{"use strict";var PY="razdwatrzy";d9e.exports=function(){return typeof PY.contains!="function"?!1:PY.contains("dwa")===!0&&PY.contains("foo")===!1}});var g9e=ye((p1r,p9e)=>{"use strict";var tBt=String.prototype.indexOf;p9e.exports=function(e){return tBt.call(this,e,arguments[1])>-1}});var IY=ye((g1r,m9e)=>{"use strict";m9e.exports=v9e()()?String.prototype.contains:g9e()});var f1=ye((m1r,b9e)=>{"use strict";var yz=fw(),y9e=CY(),_9e=mz(),x9e=LY(),Mk=IY(),rBt=b9e.exports=function(e,t){var r,n,i,a,o;return arguments.length<2||typeof e!="string"?(a=t,t=e,e=null):a=arguments[2],yz(e)?(r=Mk.call(e,"c"),n=Mk.call(e,"e"),i=Mk.call(e,"w")):(r=i=!0,n=!1),o={value:t,configurable:r,enumerable:n,writable:i},a?_9e(x9e(a),o):o};rBt.gs=function(e,t,r){var n,i,a,o;return typeof e!="string"?(a=r,r=t,t=e,e=null):a=arguments[3],yz(t)?y9e(t)?yz(r)?y9e(r)||(a=r,r=void 0):r=void 0:(a=t,t=r=void 0):t=void 0,yz(e)?(n=Mk.call(e,"c"),i=Mk.call(e,"e")):(n=!0,i=!1),o={get:t,set:r,configurable:n,enumerable:i},a?_9e(x9e(a),o):o}});var Ek=ye((y1r,T9e)=>{"use strict";var w9e=Object.prototype.toString,iBt=w9e.call(function(){return arguments}());T9e.exports=function(e){return w9e.call(e)===iBt}});var kk=ye((_1r,S9e)=>{"use strict";var A9e=Object.prototype.toString,nBt=A9e.call("");S9e.exports=function(e){return typeof e=="string"||e&&typeof e=="object"&&(e instanceof String||A9e.call(e)===nBt)||!1}});var E9e=ye((x1r,M9e)=>{"use strict";M9e.exports=function(){return typeof globalThis!="object"||!globalThis?!1:globalThis.Array===Array}});var L9e=ye((b1r,C9e)=>{var k9e=function(){if(typeof self=="object"&&self)return self;if(typeof window=="object"&&window)return window;throw new Error("Unable to resolve global `this`")};C9e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return k9e()}try{return __global__||k9e()}finally{delete Object.prototype.__global__}}()});var Ck=ye((w1r,P9e)=>{"use strict";P9e.exports=E9e()()?globalThis:L9e()});var R9e=ye((T1r,I9e)=>{"use strict";var aBt=Ck(),RY={object:!0,symbol:!0};I9e.exports=function(){var e=aBt.Symbol,t;if(typeof e!="function")return!1;t=e("test symbol");try{String(t)}catch(r){return!1}return!(!RY[typeof e.iterator]||!RY[typeof e.toPrimitive]||!RY[typeof e.toStringTag])}});var F9e=ye((A1r,D9e)=>{"use strict";D9e.exports=function(e){return e?typeof e=="symbol"?!0:!e.constructor||e.constructor.name!=="Symbol"?!1:e[e.constructor.toStringTag]==="Symbol":!1}});var DY=ye((S1r,z9e)=>{"use strict";var oBt=F9e();z9e.exports=function(e){if(!oBt(e))throw new TypeError(e+" is not a symbol");return e}});var U9e=ye((M1r,N9e)=>{"use strict";var q9e=f1(),sBt=Object.create,O9e=Object.defineProperty,lBt=Object.prototype,B9e=sBt(null);N9e.exports=function(e){for(var t=0,r,n;B9e[e+(t||"")];)++t;return e+=t||"",B9e[e]=!0,r="@@"+e,O9e(lBt,r,q9e.gs(null,function(i){n||(n=!0,O9e(this,r,q9e(i)),n=!1)})),r}});var G9e=ye((E1r,V9e)=>{"use strict";var rm=f1(),Uh=Ck().Symbol;V9e.exports=function(e){return Object.defineProperties(e,{hasInstance:rm("",Uh&&Uh.hasInstance||e("hasInstance")),isConcatSpreadable:rm("",Uh&&Uh.isConcatSpreadable||e("isConcatSpreadable")),iterator:rm("",Uh&&Uh.iterator||e("iterator")),match:rm("",Uh&&Uh.match||e("match")),replace:rm("",Uh&&Uh.replace||e("replace")),search:rm("",Uh&&Uh.search||e("search")),species:rm("",Uh&&Uh.species||e("species")),split:rm("",Uh&&Uh.split||e("split")),toPrimitive:rm("",Uh&&Uh.toPrimitive||e("toPrimitive")),toStringTag:rm("",Uh&&Uh.toStringTag||e("toStringTag")),unscopables:rm("",Uh&&Uh.unscopables||e("unscopables"))})}});var W9e=ye((k1r,j9e)=>{"use strict";var H9e=f1(),uBt=DY(),Lk=Object.create(null);j9e.exports=function(e){return Object.defineProperties(e,{for:H9e(function(t){return Lk[t]?Lk[t]:Lk[t]=e(String(t))}),keyFor:H9e(function(t){var r;uBt(t);for(r in Lk)if(Lk[r]===t)return r})})}});var Y9e=ye((C1r,Z9e)=>{"use strict";var ry=f1(),FY=DY(),_z=Ck().Symbol,cBt=U9e(),fBt=G9e(),hBt=W9e(),dBt=Object.create,zY=Object.defineProperties,xz=Object.defineProperty,Xv,g5,X9e;if(typeof _z=="function")try{String(_z()),X9e=!0}catch(e){}else _z=null;g5=function(t){if(this instanceof g5)throw new TypeError("Symbol is not a constructor");return Xv(t)};Z9e.exports=Xv=function e(t){var r;if(this instanceof e)throw new TypeError("Symbol is not a constructor");return X9e?_z(t):(r=dBt(g5.prototype),t=t===void 0?"":String(t),zY(r,{__description__:ry("",t),__name__:ry("",cBt(t))}))};fBt(Xv);hBt(Xv);zY(g5.prototype,{constructor:ry(Xv),toString:ry("",function(){return this.__name__})});zY(Xv.prototype,{toString:ry(function(){return"Symbol ("+FY(this).__description__+")"}),valueOf:ry(function(){return FY(this)})});xz(Xv.prototype,Xv.toPrimitive,ry("",function(){var e=FY(this);return typeof e=="symbol"?e:e.toString()}));xz(Xv.prototype,Xv.toStringTag,ry("c","Symbol"));xz(g5.prototype,Xv.toStringTag,ry("c",Xv.prototype[Xv.toStringTag]));xz(g5.prototype,Xv.toPrimitive,ry("c",Xv.prototype[Xv.toPrimitive]))});var _x=ye((L1r,K9e)=>{"use strict";K9e.exports=R9e()()?Ck().Symbol:Y9e()});var $9e=ye((P1r,J9e)=>{"use strict";var vBt=c1();J9e.exports=function(){return vBt(this).length=0,this}});var m5=ye((I1r,Q9e)=>{"use strict";Q9e.exports=function(e){if(typeof e!="function")throw new TypeError(e+" is not a function");return e}});var tqe=ye((R1r,eqe)=>{"use strict";var pBt=fw(),gBt=gz(),mBt=Object.prototype.toString;eqe.exports=function(e){if(!pBt(e))return null;if(gBt(e)){var t=e.toString;if(typeof t!="function"||t===mBt)return null}try{return""+e}catch(r){return null}}});var iqe=ye((D1r,rqe)=>{"use strict";rqe.exports=function(e){try{return e.toString()}catch(t){try{return String(e)}catch(r){return null}}}});var aqe=ye((F1r,nqe)=>{"use strict";var yBt=iqe(),_Bt=/[\n\r\u2028\u2029]/g;nqe.exports=function(e){var t=yBt(e);return t===null?"":(t.length>100&&(t=t.slice(0,99)+"\u2026"),t=t.replace(_Bt,function(r){switch(r){case` +`:return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw new Error("Unexpected character")}}),t)}});var qY=ye((z1r,lqe)=>{"use strict";var oqe=fw(),xBt=gz(),bBt=tqe(),wBt=aqe(),sqe=function(e,t){return e.replace("%v",wBt(t))};lqe.exports=function(e,t,r){if(!xBt(r))throw new TypeError(sqe(t,e));if(!oqe(e)){if("default"in r)return r.default;if(r.isOptional)return null}var n=bBt(r.errorMessage);throw oqe(n)||(n=t),new TypeError(sqe(n,e))}});var cqe=ye((q1r,uqe)=>{"use strict";var TBt=qY(),ABt=fw();uqe.exports=function(e){return ABt(e)?e:TBt(e,"Cannot use %v",arguments[1])}});var hqe=ye((O1r,fqe)=>{"use strict";var SBt=qY(),MBt=CY();fqe.exports=function(e){return MBt(e)?e:SBt(e,"%v is not a plain function",arguments[1])}});var vqe=ye((B1r,dqe)=>{"use strict";dqe.exports=function(){var e=Array.from,t,r;return typeof e!="function"?!1:(t=["raz","dwa"],r=e(t),!!(r&&r!==t&&r[1]==="dwa"))}});var gqe=ye((N1r,pqe)=>{"use strict";var EBt=Object.prototype.toString,kBt=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);pqe.exports=function(e){return typeof e=="function"&&kBt(EBt.call(e))}});var yqe=ye((U1r,mqe)=>{"use strict";mqe.exports=function(){var e=Math.sign;return typeof e!="function"?!1:e(10)===1&&e(-20)===-1}});var xqe=ye((V1r,_qe)=>{"use strict";_qe.exports=function(e){return e=Number(e),isNaN(e)||e===0?e:e>0?1:-1}});var wqe=ye((G1r,bqe)=>{"use strict";bqe.exports=yqe()()?Math.sign:xqe()});var Aqe=ye((H1r,Tqe)=>{"use strict";var CBt=wqe(),LBt=Math.abs,PBt=Math.floor;Tqe.exports=function(e){return isNaN(e)?0:(e=Number(e),e===0||!isFinite(e)?e:CBt(e)*PBt(LBt(e)))}});var Mqe=ye((j1r,Sqe)=>{"use strict";var IBt=Aqe(),RBt=Math.max;Sqe.exports=function(e){return RBt(0,IBt(e))}});var Lqe=ye((W1r,Cqe)=>{"use strict";var DBt=_x().iterator,FBt=Ek(),zBt=gqe(),qBt=Mqe(),Eqe=m5(),OBt=c1(),BBt=yx(),NBt=kk(),kqe=Array.isArray,OY=Function.prototype.call,hw={configurable:!0,enumerable:!0,writable:!0,value:null},BY=Object.defineProperty;Cqe.exports=function(e){var t=arguments[1],r=arguments[2],n,i,a,o,s,l,u,c,f,h;if(e=Object(OBt(e)),BBt(t)&&Eqe(t),!this||this===Array||!zBt(this)){if(!t){if(FBt(e))return s=e.length,s!==1?Array.apply(null,e):(o=new Array(1),o[0]=e[0],o);if(kqe(e)){for(o=new Array(s=e.length),i=0;i=55296&&l<=56319&&(h+=e[++i])),h=t?OY.call(t,r,h,a):h,n?(hw.value=h,BY(o,a,hw)):o[a]=h,++a;s=a}}if(s===void 0)for(s=qBt(e.length),n&&(o=new n(s)),i=0;i{"use strict";Pqe.exports=vqe()()?Array.from:Lqe()});var Dqe=ye((Z1r,Rqe)=>{"use strict";var UBt=Iqe(),VBt=mz(),GBt=c1();Rqe.exports=function(e){var t=Object(GBt(e)),r=arguments[1],n=Object(arguments[2]);if(t!==e&&!r)return t;var i={};return r?UBt(r,function(a){(n.ensure||a in e)&&(i[a]=e[a])}):VBt(i,e),i}});var qqe=ye((Y1r,zqe)=>{"use strict";var HBt=m5(),jBt=c1(),WBt=Function.prototype.bind,Fqe=Function.prototype.call,XBt=Object.keys,ZBt=Object.prototype.propertyIsEnumerable;zqe.exports=function(e,t){return function(r,n){var i,a=arguments[2],o=arguments[3];return r=Object(jBt(r)),HBt(n),i=XBt(r),o&&i.sort(typeof o=="function"?WBt.call(o,r):void 0),typeof e!="function"&&(e=i[e]),Fqe.call(e,i,function(s,l){return ZBt.call(r,s)?Fqe.call(n,a,r[s],s,r,l):t})}}});var Bqe=ye((K1r,Oqe)=>{"use strict";Oqe.exports=qqe()("forEach")});var Uqe=ye((J1r,Nqe)=>{"use strict";var YBt=m5(),KBt=Bqe(),JBt=Function.prototype.call;Nqe.exports=function(e,t){var r={},n=arguments[2];return YBt(t),KBt(e,function(i,a,o,s){r[a]=JBt.call(t,n,i,a,o,s)}),r}});var jqe=ye(($1r,Hqe)=>{"use strict";var $Bt=fw(),QBt=cqe(),Vqe=hqe(),eNt=Dqe(),tNt=LY(),rNt=Uqe(),iNt=Function.prototype.bind,nNt=Object.defineProperty,aNt=Object.prototype.hasOwnProperty,Gqe;Gqe=function(e,t,r){var n=QBt(t)&&Vqe(t.value),i;return i=eNt(t),delete i.writable,delete i.value,i.get=function(){return!r.overwriteDefinition&&aNt.call(this,e)?n:(t.value=iNt.call(n,r.resolveContext?r.resolveContext(this):this),nNt(this,e,t),this[e])},i};Hqe.exports=function(e){var t=tNt(arguments[1]);return $Bt(t.resolveContext)&&Vqe(t.resolveContext),rNt(e,function(r,n){return Gqe(n,r,t)})}});var NY=ye((Q1r,Yqe)=>{"use strict";var oNt=$9e(),sNt=mz(),lNt=m5(),uNt=c1(),Op=f1(),cNt=jqe(),Wqe=_x(),Xqe=Object.defineProperty,Zqe=Object.defineProperties,Pk;Yqe.exports=Pk=function(e,t){if(!(this instanceof Pk))throw new TypeError("Constructor requires 'new'");Zqe(this,{__list__:Op("w",uNt(e)),__context__:Op("w",t),__nextIndex__:Op("w",0)}),t&&(lNt(t.on),t.on("_add",this._onAdd),t.on("_delete",this._onDelete),t.on("_clear",this._onClear))};delete Pk.prototype.constructor;Zqe(Pk.prototype,sNt({_next:Op(function(){var e;if(this.__list__){if(this.__redo__&&(e=this.__redo__.shift(),e!==void 0))return e;if(this.__nextIndex__=this.__nextIndex__)){if(++this.__nextIndex__,!this.__redo__){Xqe(this,"__redo__",Op("c",[e]));return}this.__redo__.forEach(function(t,r){t>=e&&(this.__redo__[r]=++t)},this),this.__redo__.push(e)}}),_onDelete:Op(function(e){var t;e>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(t=this.__redo__.indexOf(e),t!==-1&&this.__redo__.splice(t,1),this.__redo__.forEach(function(r,n){r>e&&(this.__redo__[n]=--r)},this)))}),_onClear:Op(function(){this.__redo__&&oNt.call(this.__redo__),this.__nextIndex__=0})})));Xqe(Pk.prototype,Wqe.iterator,Op(function(){return this}))});var eOe=ye((e_r,Qqe)=>{"use strict";var Kqe=pz(),Jqe=IY(),UY=f1(),fNt=_x(),VY=NY(),$qe=Object.defineProperty,y5;y5=Qqe.exports=function(e,t){if(!(this instanceof y5))throw new TypeError("Constructor requires 'new'");VY.call(this,e),t?Jqe.call(t,"key+value")?t="key+value":Jqe.call(t,"key")?t="key":t="value":t="value",$qe(this,"__kind__",UY("",t))};Kqe&&Kqe(y5,VY);delete y5.prototype.constructor;y5.prototype=Object.create(VY.prototype,{_resolve:UY(function(e){return this.__kind__==="value"?this.__list__[e]:this.__kind__==="key+value"?[e,this.__list__[e]]:e})});$qe(y5.prototype,fNt.toStringTag,UY("c","Array Iterator"))});var nOe=ye((t_r,iOe)=>{"use strict";var tOe=pz(),bz=f1(),hNt=_x(),GY=NY(),rOe=Object.defineProperty,_5;_5=iOe.exports=function(e){if(!(this instanceof _5))throw new TypeError("Constructor requires 'new'");e=String(e),GY.call(this,e),rOe(this,"__length__",bz("",e.length))};tOe&&tOe(_5,GY);delete _5.prototype.constructor;_5.prototype=Object.create(GY.prototype,{_next:bz(function(){if(this.__list__){if(this.__nextIndex__=55296&&r<=56319?t+this.__list__[this.__nextIndex__++]:t)})});rOe(_5.prototype,hNt.toStringTag,bz("c","String Iterator"))});var oOe=ye((r_r,aOe)=>{"use strict";var dNt=Ek(),vNt=yx(),pNt=kk(),gNt=_x().iterator,mNt=Array.isArray;aOe.exports=function(e){return vNt(e)?mNt(e)||pNt(e)||dNt(e)?!0:typeof e[gNt]=="function":!1}});var lOe=ye((i_r,sOe)=>{"use strict";var yNt=oOe();sOe.exports=function(e){if(!yNt(e))throw new TypeError(e+" is not iterable");return e}});var HY=ye((n_r,fOe)=>{"use strict";var _Nt=Ek(),xNt=kk(),uOe=eOe(),bNt=nOe(),wNt=lOe(),cOe=_x().iterator;fOe.exports=function(e){return typeof wNt(e)[cOe]=="function"?e[cOe]():_Nt(e)?new uOe(e):xNt(e)?new bNt(e):new uOe(e)}});var dOe=ye((a_r,hOe)=>{"use strict";var TNt=Ek(),ANt=m5(),SNt=kk(),MNt=HY(),ENt=Array.isArray,jY=Function.prototype.call,kNt=Array.prototype.some;hOe.exports=function(e,t){var r,n=arguments[2],i,a,o,s,l,u,c;if(ENt(e)||TNt(e)?r="array":SNt(e)?r="string":e=MNt(e),ANt(t),a=function(){o=!0},r==="array"){kNt.call(e,function(f){return jY.call(t,n,f,a),o});return}if(r==="string"){for(l=e.length,s=0;s=55296&&c<=56319&&(u+=e[++s])),jY.call(t,n,u,a),!o);++s);return}for(i=e.next();!i.done;){if(jY.call(t,n,i.value,a),o)return;i=e.next()}}});var pOe=ye((o_r,vOe)=>{"use strict";vOe.exports=function(){return typeof WeakMap!="function"?!1:Object.prototype.toString.call(new WeakMap)==="[object WeakMap]"}()});var yOe=ye((s_r,mOe)=>{"use strict";var CNt=yx(),Tz=pz(),wz=j7e(),LNt=c1(),PNt=X7e(),h1=f1(),INt=HY(),RNt=dOe(),DNt=_x().toStringTag,gOe=pOe(),FNt=Array.isArray,XY=Object.defineProperty,WY=Object.prototype.hasOwnProperty,zNt=Object.getPrototypeOf,xx;mOe.exports=xx=function(){var e=arguments[0],t;if(!(this instanceof xx))throw new TypeError("Constructor requires 'new'");return t=gOe&&Tz&&WeakMap!==xx?Tz(new WeakMap,zNt(this)):this,CNt(e)&&(FNt(e)||(e=INt(e))),XY(t,"__weakMapData__",h1("c","$weakMap$"+PNt())),e&&RNt(e,function(r){LNt(r),t.set(r[0],r[1])}),t};gOe&&(Tz&&Tz(xx,WeakMap),xx.prototype=Object.create(WeakMap.prototype,{constructor:h1(xx)}));Object.defineProperties(xx.prototype,{delete:h1(function(e){return WY.call(wz(e),this.__weakMapData__)?(delete e[this.__weakMapData__],!0):!1}),get:h1(function(e){if(WY.call(wz(e),this.__weakMapData__))return e[this.__weakMapData__]}),has:h1(function(e){return WY.call(wz(e),this.__weakMapData__)}),set:h1(function(e,t){return XY(wz(e),this.__weakMapData__,h1("c",t)),this}),toString:h1(function(){return"[object WeakMap]"})});XY(xx.prototype,DNt,h1("c","WeakMap"))});var ZY=ye((l_r,_Oe)=>{"use strict";_Oe.exports=I7e()()?WeakMap:yOe()});var bOe=ye((u_r,xOe)=>{"use strict";xOe.exports=function(e,t,r){if(typeof Array.prototype.findIndex=="function")return e.findIndex(t,r);if(typeof t!="function")throw new TypeError("predicate must be a function");var n=Object(e),i=n.length;if(i===0)return-1;for(var a=0;a{"use strict";var Az=sx(),qNt=nw(),KY=Nh(),ONt=ty(),BNt=aw(),wOe=k7e(),NNt=L7e(),{float32:UNt,fract32:YY}=oz(),VNt=ZY(),TOe=l5(),GNt=bOe(),HNt=` +precision highp float; + +attribute vec2 aCoord, bCoord, aCoordFract, bCoordFract; +attribute vec4 color; +attribute float lineEnd, lineTop; + +uniform vec2 scale, scaleFract, translate, translateFract; +uniform float thickness, pixelRatio, id, depth; +uniform vec4 viewport; + +varying vec4 fragColor; +varying vec2 tangent; + +vec2 project(vec2 position, vec2 positionFract, vec2 scale, vec2 scaleFract, vec2 translate, vec2 translateFract) { + // the order is important + return position * scale + translate + + positionFract * scale + translateFract + + position * scaleFract + + positionFract * scaleFract; +} + +void main() { + float lineStart = 1. - lineEnd; + float lineOffset = lineTop * 2. - 1.; + + vec2 diff = (bCoord + bCoordFract - aCoord - aCoordFract); + tangent = normalize(diff * scale * viewport.zw); + vec2 normal = vec2(-tangent.y, tangent.x); + + vec2 position = project(aCoord, aCoordFract, scale, scaleFract, translate, translateFract) * lineStart + + project(bCoord, bCoordFract, scale, scaleFract, translate, translateFract) * lineEnd + + + thickness * normal * .5 * lineOffset / viewport.zw; + + gl_Position = vec4(position * 2.0 - 1.0, depth, 1); + + fragColor = color / 255.; +} +`,jNt=` +precision highp float; + +uniform float dashLength, pixelRatio, thickness, opacity, id; +uniform sampler2D dashTexture; + +varying vec4 fragColor; +varying vec2 tangent; + +void main() { + float alpha = 1.; + + float t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25; + float dash = texture2D(dashTexture, vec2(t, .5)).r; + + gl_FragColor = fragColor; + gl_FragColor.a *= alpha * opacity * dash; +} +`,WNt=` +precision highp float; + +attribute vec2 position, positionFract; + +uniform vec4 color; +uniform vec2 scale, scaleFract, translate, translateFract; +uniform float pixelRatio, id; +uniform vec4 viewport; +uniform float opacity; + +varying vec4 fragColor; + +const float MAX_LINES = 256.; + +void main() { + float depth = (MAX_LINES - 4. - id) / (MAX_LINES); + + vec2 position = position * scale + translate + + positionFract * scale + translateFract + + position * scaleFract + + positionFract * scaleFract; + + gl_Position = vec4(position * 2.0 - 1.0, depth, 1); + + fragColor = color / 255.; + fragColor.a *= opacity; +} +`,XNt=` +precision highp float; +varying vec4 fragColor; + +void main() { + gl_FragColor = fragColor; +} +`,ZNt=` +precision highp float; + +attribute vec2 aCoord, bCoord, nextCoord, prevCoord; +attribute vec4 aColor, bColor; +attribute float lineEnd, lineTop; + +uniform vec2 scale, translate; +uniform float thickness, pixelRatio, id, depth; +uniform vec4 viewport; +uniform float miterLimit, miterMode; + +varying vec4 fragColor; +varying vec4 startCutoff, endCutoff; +varying vec2 tangent; +varying vec2 startCoord, endCoord; +varying float enableStartMiter, enableEndMiter; + +const float REVERSE_THRESHOLD = -.875; +const float MIN_DIFF = 1e-6; + +// TODO: possible optimizations: avoid overcalculating all for vertices and calc just one instead +// TODO: precalculate dot products, normalize things beforehead etc. +// TODO: refactor to rectangular algorithm + +float distToLine(vec2 p, vec2 a, vec2 b) { + vec2 diff = b - a; + vec2 perp = normalize(vec2(-diff.y, diff.x)); + return dot(p - a, perp); +} + +bool isNaN( float val ){ + return ( val < 0.0 || 0.0 < val || val == 0.0 ) ? false : true; +} + +void main() { + vec2 aCoord = aCoord, bCoord = bCoord, prevCoord = prevCoord, nextCoord = nextCoord; + + vec2 adjustedScale; + adjustedScale.x = (abs(scale.x) < MIN_DIFF) ? MIN_DIFF : scale.x; + adjustedScale.y = (abs(scale.y) < MIN_DIFF) ? MIN_DIFF : scale.y; + + vec2 scaleRatio = adjustedScale * viewport.zw; + vec2 normalWidth = thickness / scaleRatio; + + float lineStart = 1. - lineEnd; + float lineBot = 1. - lineTop; + + fragColor = (lineStart * aColor + lineEnd * bColor) / 255.; + + if (isNaN(aCoord.x) || isNaN(aCoord.y) || isNaN(bCoord.x) || isNaN(bCoord.y)) return; + + if (aCoord == prevCoord) prevCoord = aCoord + normalize(bCoord - aCoord); + if (bCoord == nextCoord) nextCoord = bCoord - normalize(bCoord - aCoord); + + + vec2 prevDiff = aCoord - prevCoord; + vec2 currDiff = bCoord - aCoord; + vec2 nextDiff = nextCoord - bCoord; + + vec2 prevTangent = normalize(prevDiff * scaleRatio); + vec2 currTangent = normalize(currDiff * scaleRatio); + vec2 nextTangent = normalize(nextDiff * scaleRatio); + + vec2 prevNormal = vec2(-prevTangent.y, prevTangent.x); + vec2 currNormal = vec2(-currTangent.y, currTangent.x); + vec2 nextNormal = vec2(-nextTangent.y, nextTangent.x); + + vec2 startJoinDirection = normalize(prevTangent - currTangent); + vec2 endJoinDirection = normalize(currTangent - nextTangent); + + // collapsed/unidirectional segment cases + // FIXME: there should be more elegant solution + vec2 prevTanDiff = abs(prevTangent - currTangent); + vec2 nextTanDiff = abs(nextTangent - currTangent); + if (max(prevTanDiff.x, prevTanDiff.y) < MIN_DIFF) { + startJoinDirection = currNormal; + } + if (max(nextTanDiff.x, nextTanDiff.y) < MIN_DIFF) { + endJoinDirection = currNormal; + } + if (aCoord == bCoord) { + endJoinDirection = startJoinDirection; + currNormal = prevNormal; + currTangent = prevTangent; + } + + tangent = currTangent; + + //calculate join shifts relative to normals + float startJoinShift = dot(currNormal, startJoinDirection); + float endJoinShift = dot(currNormal, endJoinDirection); + + float startMiterRatio = abs(1. / startJoinShift); + float endMiterRatio = abs(1. / endJoinShift); + + vec2 startJoin = startJoinDirection * startMiterRatio; + vec2 endJoin = endJoinDirection * endMiterRatio; + + vec2 startTopJoin, startBotJoin, endTopJoin, endBotJoin; + startTopJoin = sign(startJoinShift) * startJoin * .5; + startBotJoin = -startTopJoin; + + endTopJoin = sign(endJoinShift) * endJoin * .5; + endBotJoin = -endTopJoin; + + vec2 aTopCoord = aCoord + normalWidth * startTopJoin; + vec2 bTopCoord = bCoord + normalWidth * endTopJoin; + vec2 aBotCoord = aCoord + normalWidth * startBotJoin; + vec2 bBotCoord = bCoord + normalWidth * endBotJoin; + + //miter anti-clipping + float baClipping = distToLine(bCoord, aCoord, aBotCoord) / dot(normalize(normalWidth * endBotJoin), normalize(normalWidth.yx * vec2(-startBotJoin.y, startBotJoin.x))); + float abClipping = distToLine(aCoord, bCoord, bTopCoord) / dot(normalize(normalWidth * startBotJoin), normalize(normalWidth.yx * vec2(-endBotJoin.y, endBotJoin.x))); + + //prevent close to reverse direction switch + bool prevReverse = dot(currTangent, prevTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, prevNormal)) * min(length(prevDiff), length(currDiff)) < length(normalWidth * currNormal); + bool nextReverse = dot(currTangent, nextTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, nextNormal)) * min(length(nextDiff), length(currDiff)) < length(normalWidth * currNormal); + + if (prevReverse) { + //make join rectangular + vec2 miterShift = normalWidth * startJoinDirection * miterLimit * .5; + float normalAdjust = 1. - min(miterLimit / startMiterRatio, 1.); + aBotCoord = aCoord + miterShift - normalAdjust * normalWidth * currNormal * .5; + aTopCoord = aCoord + miterShift + normalAdjust * normalWidth * currNormal * .5; + } + else if (!nextReverse && baClipping > 0. && baClipping < length(normalWidth * endBotJoin)) { + //handle miter clipping + bTopCoord -= normalWidth * endTopJoin; + bTopCoord += normalize(endTopJoin * normalWidth) * baClipping; + } + + if (nextReverse) { + //make join rectangular + vec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5; + float normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.); + bBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5; + bTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5; + } + else if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) { + //handle miter clipping + aBotCoord -= normalWidth * startBotJoin; + aBotCoord += normalize(startBotJoin * normalWidth) * abClipping; + } + + vec2 aTopPosition = (aTopCoord) * adjustedScale + translate; + vec2 aBotPosition = (aBotCoord) * adjustedScale + translate; + + vec2 bTopPosition = (bTopCoord) * adjustedScale + translate; + vec2 bBotPosition = (bBotCoord) * adjustedScale + translate; + + //position is normalized 0..1 coord on the screen + vec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd; + + startCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy; + endCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy; + + gl_Position = vec4(position * 2.0 - 1.0, depth, 1); + + enableStartMiter = step(dot(currTangent, prevTangent), .5); + enableEndMiter = step(dot(currTangent, nextTangent), .5); + + //bevel miter cutoffs + if (miterMode == 1.) { + if (enableStartMiter == 1.) { + vec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5; + startCutoff = vec4(aCoord, aCoord); + startCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio; + startCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + startCutoff += viewport.xyxy; + startCutoff += startMiterWidth.xyxy; + } + + if (enableEndMiter == 1.) { + vec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5; + endCutoff = vec4(bCoord, bCoord); + endCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio; + endCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + endCutoff += viewport.xyxy; + endCutoff += endMiterWidth.xyxy; + } + } + + //round miter cutoffs + else if (miterMode == 2.) { + if (enableStartMiter == 1.) { + vec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5; + startCutoff = vec4(aCoord, aCoord); + startCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio; + startCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + startCutoff += viewport.xyxy; + startCutoff += startMiterWidth.xyxy; + } + + if (enableEndMiter == 1.) { + vec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5; + endCutoff = vec4(bCoord, bCoord); + endCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio; + endCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + endCutoff += viewport.xyxy; + endCutoff += endMiterWidth.xyxy; + } + } +} +`,YNt=` +precision highp float; + +uniform float dashLength, pixelRatio, thickness, opacity, id, miterMode; +uniform sampler2D dashTexture; + +varying vec4 fragColor; +varying vec2 tangent; +varying vec4 startCutoff, endCutoff; +varying vec2 startCoord, endCoord; +varying float enableStartMiter, enableEndMiter; + +float distToLine(vec2 p, vec2 a, vec2 b) { + vec2 diff = b - a; + vec2 perp = normalize(vec2(-diff.y, diff.x)); + return dot(p - a, perp); +} + +void main() { + float alpha = 1., distToStart, distToEnd; + float cutoff = thickness * .5; + + //bevel miter + if (miterMode == 1.) { + if (enableStartMiter == 1.) { + distToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw); + if (distToStart < -1.) { + discard; + return; + } + alpha *= min(max(distToStart + 1., 0.), 1.); + } + + if (enableEndMiter == 1.) { + distToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw); + if (distToEnd < -1.) { + discard; + return; + } + alpha *= min(max(distToEnd + 1., 0.), 1.); + } + } + + // round miter + else if (miterMode == 2.) { + if (enableStartMiter == 1.) { + distToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw); + if (distToStart < 0.) { + float radius = length(gl_FragCoord.xy - startCoord); + + if(radius > cutoff + .5) { + discard; + return; + } + + alpha -= smoothstep(cutoff - .5, cutoff + .5, radius); + } + } + + if (enableEndMiter == 1.) { + distToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw); + if (distToEnd < 0.) { + float radius = length(gl_FragCoord.xy - endCoord); + + if(radius > cutoff + .5) { + discard; + return; + } + + alpha -= smoothstep(cutoff - .5, cutoff + .5, radius); + } + } + } + + float t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25; + float dash = texture2D(dashTexture, vec2(t, .5)).r; + + gl_FragColor = fragColor; + gl_FragColor.a *= alpha * opacity * dash; +} +`;AOe.exports=Wc;function Wc(e,t){if(!(this instanceof Wc))return new Wc(e,t);if(typeof e=="function"?(t||(t={}),t.regl=e):t=e,t.length&&(t.positions=t),e=t.regl,!e.hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");this.gl=e._gl,this.regl=e,this.passes=[],this.shaders=Wc.shaders.has(e)?Wc.shaders.get(e):Wc.shaders.set(e,Wc.createShaders(e)).get(e),this.update(t)}Wc.dashMult=2;Wc.maxPatternLength=256;Wc.precisionThreshold=3e6;Wc.maxPoints=1e4;Wc.maxLines=2048;Wc.shaders=new VNt;Wc.createShaders=function(e){let t=e.buffer({usage:"static",type:"float",data:[0,1,0,0,1,1,1,0]}),r={primitive:"triangle strip",instances:e.prop("count"),count:4,offset:0,uniforms:{miterMode:(o,s)=>s.join==="round"?2:1,miterLimit:e.prop("miterLimit"),scale:e.prop("scale"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),translate:e.prop("translate"),thickness:e.prop("thickness"),dashTexture:e.prop("dashTexture"),opacity:e.prop("opacity"),pixelRatio:e.context("pixelRatio"),id:e.prop("id"),dashLength:e.prop("dashLength"),viewport:(o,s)=>[s.viewport.x,s.viewport.y,o.viewportWidth,o.viewportHeight],depth:e.prop("depth")},blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:(o,s)=>!s.overlay},stencil:{enable:!1},scissor:{enable:!0,box:e.prop("viewport")},viewport:e.prop("viewport")},n=e(KY({vert:HNt,frag:jNt,attributes:{lineEnd:{buffer:t,divisor:0,stride:8,offset:0},lineTop:{buffer:t,divisor:0,stride:8,offset:4},aCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:16,divisor:1},aCoordFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:8,divisor:1},bCoordFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:16,divisor:1},color:{buffer:e.prop("colorBuffer"),stride:4,offset:0,divisor:1}}},r)),i;try{i=e(KY({cull:{enable:!0,face:"back"},vert:ZNt,frag:YNt,attributes:{lineEnd:{buffer:t,divisor:0,stride:8,offset:0},lineTop:{buffer:t,divisor:0,stride:8,offset:4},aColor:{buffer:e.prop("colorBuffer"),stride:4,offset:0,divisor:1},bColor:{buffer:e.prop("colorBuffer"),stride:4,offset:4,divisor:1},prevCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:0,divisor:1},aCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:16,divisor:1},nextCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:24,divisor:1}}},r))}catch(o){i=n}return{fill:e({primitive:"triangle",elements:(o,s)=>s.triangles,offset:0,vert:WNt,frag:XNt,uniforms:{scale:e.prop("scale"),color:e.prop("fill"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),translate:e.prop("translate"),opacity:e.prop("opacity"),pixelRatio:e.context("pixelRatio"),id:e.prop("id"),viewport:(o,s)=>[s.viewport.x,s.viewport.y,o.viewportWidth,o.viewportHeight]},attributes:{position:{buffer:e.prop("positionBuffer"),stride:8,offset:8},positionFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:8}},blend:r.blend,depth:{enable:!1},scissor:r.scissor,stencil:r.stencil,viewport:r.viewport}),rect:n,miter:i}};Wc.defaults={dashes:null,join:"miter",miterLimit:1,thickness:10,cap:"square",color:"black",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null};Wc.prototype.render=function(...e){e.length&&this.update(...e),this.draw()};Wc.prototype.draw=function(...e){return(e.length?e:this.passes).forEach((t,r)=>{if(t&&Array.isArray(t))return this.draw(...t);typeof t=="number"&&(t=this.passes[t]),t&&t.count>1&&t.opacity&&(this.regl._refresh(),t.fill&&t.triangles&&t.triangles.length>2&&this.shaders.fill(t),t.thickness&&(t.scale[0]*t.viewport.width>Wc.precisionThreshold||t.scale[1]*t.viewport.height>Wc.precisionThreshold?this.shaders.rect(t):t.join==="rect"||!t.join&&(t.thickness<=2||t.count>=Wc.maxPoints)?this.shaders.rect(t):this.shaders.miter(t)))}),this};Wc.prototype.update=function(e){if(!e)return;e.length!=null?typeof e[0]=="number"&&(e=[{positions:e}]):Array.isArray(e)||(e=[e]);let{regl:t,gl:r}=this;if(e.forEach((i,a)=>{let o=this.passes[a];if(i!==void 0){if(i===null){this.passes[a]=null;return}if(typeof i[0]=="number"&&(i={positions:i}),i=ONt(i,{positions:"positions points data coords",thickness:"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth",join:"lineJoin linejoin join type mode",miterLimit:"miterlimit miterLimit",dashes:"dash dashes dasharray dash-array dashArray",color:"color colour stroke colors colours stroke-color strokeColor",fill:"fill fill-color fillColor",opacity:"alpha opacity",overlay:"overlay crease overlap intersect",close:"closed close closed-path closePath",range:"range dataBox",viewport:"viewport viewBox",hole:"holes hole hollow",splitNull:"splitNull"}),o||(this.passes[a]=o={id:a,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:t.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:"linear",min:"linear"}),colorBuffer:t.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array}),positionBuffer:t.buffer({usage:"dynamic",type:"float",data:new Uint8Array}),positionFractBuffer:t.buffer({usage:"dynamic",type:"float",data:new Uint8Array})},i=KY({},Wc.defaults,i)),i.thickness!=null&&(o.thickness=parseFloat(i.thickness)),i.opacity!=null&&(o.opacity=parseFloat(i.opacity)),i.miterLimit!=null&&(o.miterLimit=parseFloat(i.miterLimit)),i.overlay!=null&&(o.overlay=!!i.overlay,aL-x),k=[],M=0,T=o.hole!=null?o.hole[0]:null;if(T!=null){let L=GNt(p,x=>x>=T);p=p.slice(0,L),p.push(T)}for(let L=0;Lg-T+(p[L]-M)),S=wOe(x,C);S=S.map(g=>g+M+(g+M{e.colorBuffer.destroy(),e.positionBuffer.destroy(),e.dashTexture.destroy()}),this.passes.length=0,this}});var COe=ye((f_r,kOe)=>{"use strict";var KNt=nw(),JNt=sx(),$Nt=yY(),QNt=ty(),SOe=Nh(),MOe=aw(),{float32:eUt,fract32:$Y}=oz();kOe.exports=tUt;var EOe=[[1,0,0,1,0,0],[1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,1,0,0],[1,0,0,1,0,0],[1,0,-1,0,0,1],[1,0,-1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,1],[1,0,-1,0,0,1],[-1,0,-1,0,0,1],[-1,0,-1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,1],[-1,0,-1,0,0,1],[0,1,1,0,0,0],[0,1,-1,0,0,0],[0,-1,-1,0,0,0],[0,-1,-1,0,0,0],[0,1,1,0,0,0],[0,-1,1,0,0,0],[0,1,0,-1,1,0],[0,1,0,-1,-1,0],[0,1,0,1,-1,0],[0,1,0,1,1,0],[0,1,0,-1,1,0],[0,1,0,1,-1,0],[0,-1,0,-1,1,0],[0,-1,0,-1,-1,0],[0,-1,0,1,-1,0],[0,-1,0,1,1,0],[0,-1,0,-1,1,0],[0,-1,0,1,-1,0]];function tUt(e,t){if(typeof e=="function"?(t||(t={}),t.regl=e):t=e,t.length&&(t.positions=t),e=t.regl,!e.hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");let r=e._gl,n,i,a,o,s,l,u={color:"black",capSize:5,lineWidth:1,opacity:1,viewport:null,range:null,offset:0,count:0,bounds:null,positions:[],errors:[]},c=[];return o=e.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array(0)}),i=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),a=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),s=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),l=e.buffer({usage:"static",type:"float",data:EOe}),v(t),n=e({vert:` + precision highp float; + + attribute vec2 position, positionFract; + attribute vec4 error; + attribute vec4 color; + + attribute vec2 direction, lineOffset, capOffset; + + uniform vec4 viewport; + uniform float lineWidth, capSize; + uniform vec2 scale, scaleFract, translate, translateFract; + + varying vec4 fragColor; + + void main() { + fragColor = color / 255.; + + vec2 pixelOffset = lineWidth * lineOffset + (capSize + lineWidth) * capOffset; + + vec2 dxy = -step(.5, direction.xy) * error.xz + step(direction.xy, vec2(-.5)) * error.yw; + + vec2 position = position + dxy; + + vec2 pos = (position + translate) * scale + + (positionFract + translateFract) * scale + + (position + translate) * scaleFract + + (positionFract + translateFract) * scaleFract; + + pos += pixelOffset / viewport.zw; + + gl_Position = vec4(pos * 2. - 1., 0, 1); + } + `,frag:` + precision highp float; + + varying vec4 fragColor; + + uniform float opacity; + + void main() { + gl_FragColor = fragColor; + gl_FragColor.a *= opacity; + } + `,uniforms:{range:e.prop("range"),lineWidth:e.prop("lineWidth"),capSize:e.prop("capSize"),opacity:e.prop("opacity"),scale:e.prop("scale"),translate:e.prop("translate"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),viewport:(b,p)=>[p.viewport.x,p.viewport.y,b.viewportWidth,b.viewportHeight]},attributes:{color:{buffer:o,offset:(b,p)=>p.offset*4,divisor:1},position:{buffer:i,offset:(b,p)=>p.offset*8,divisor:1},positionFract:{buffer:a,offset:(b,p)=>p.offset*8,divisor:1},error:{buffer:s,offset:(b,p)=>p.offset*16,divisor:1},direction:{buffer:l,stride:24,offset:0},lineOffset:{buffer:l,stride:24,offset:8},capOffset:{buffer:l,stride:24,offset:16}},primitive:"triangles",blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:!1},scissor:{enable:!0,box:e.prop("viewport")},viewport:e.prop("viewport"),stencil:!1,instances:e.prop("count"),count:EOe.length}),SOe(f,{update:v,draw:h,destroy:m,regl:e,gl:r,canvas:r.canvas,groups:c}),f;function f(b){b?v(b):b===null&&m(),h()}function h(b){if(typeof b=="number")return d(b);b&&!Array.isArray(b)&&(b=[b]),e._refresh(),c.forEach((p,k)=>{if(p){if(b&&(b[k]?p.draw=!0:p.draw=!1),!p.draw){p.draw=!0;return}d(k)}})}function d(b){typeof b=="number"&&(b=c[b]),b!=null&&b&&b.count&&b.color&&b.opacity&&b.positions&&b.positions.length>1&&(b.scaleRatio=[b.scale[0]*b.viewport.width,b.scale[1]*b.viewport.height],n(b),b.after&&b.after(b))}function v(b){if(!b)return;b.length!=null?typeof b[0]=="number"&&(b=[{positions:b}]):Array.isArray(b)||(b=[b]);let p=0,k=0;if(f.groups=c=b.map((L,x)=>{let C=c[x];if(L)typeof L=="function"?L={after:L}:typeof L[0]=="number"&&(L={positions:L});else return C;return L=QNt(L,{color:"color colors fill",capSize:"capSize cap capsize cap-size",lineWidth:"lineWidth line-width width line thickness",opacity:"opacity alpha",range:"range dataBox",viewport:"viewport viewBox",errors:"errors error",positions:"positions position data points"}),C||(c[x]=C={id:x,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},L=SOe({},u,L)),$Nt(C,L,[{lineWidth:S=>+S*.5,capSize:S=>+S*.5,opacity:parseFloat,errors:S=>(S=MOe(S),k+=S.length,S),positions:(S,g)=>(S=MOe(S,"float64"),g.count=Math.floor(S.length/2),g.bounds=KNt(S,2),g.offset=p,p+=g.count,S)},{color:(S,g)=>{let P=g.count;if(S||(S="transparent"),!Array.isArray(S)||typeof S[0]=="number"){let z=S;S=Array(P);for(let q=0;q{let E=g.bounds;return S||(S=E),g.scale=[1/(S[2]-S[0]),1/(S[3]-S[1])],g.translate=[-S[0],-S[1]],g.scaleFract=$Y(g.scale),g.translateFract=$Y(g.translate),S},viewport:S=>{let g;return Array.isArray(S)?g={x:S[0],y:S[1],width:S[2]-S[0],height:S[3]-S[1]}:S?(g={x:S.x||S.left||0,y:S.y||S.top||0},S.right?g.width=S.right-g.x:g.width=S.w||S.width||0,S.bottom?g.height=S.bottom-g.y:g.height=S.h||S.height||0):g={x:0,y:0,width:r.drawingBufferWidth,height:r.drawingBufferHeight},g}}]),C}),p||k){let L=c.reduce((g,P,E)=>g+(P?P.count:0),0),x=new Float64Array(L*2),C=new Uint8Array(L*4),S=new Float32Array(L*4);c.forEach((g,P)=>{if(!g)return;let{positions:E,count:z,offset:q,color:V,errors:G}=g;z&&(C.set(V,q*4),S.set(G,q*4),x.set(E,q*2))});var M=eUt(x);i(M);var T=$Y(x,M);a(T),o(C),s(S)}}function m(){i.destroy(),a.destroy(),o.destroy(),s.destroy(),l.destroy()}}});var IOe=ye((h_r,POe)=>{var LOe=/[\'\"]/;POe.exports=function(t){return t?(LOe.test(t.charAt(0))&&(t=t.substr(1)),LOe.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):""}});var QY=ye((d_r,rUt)=>{rUt.exports=["inherit","initial","unset"]});var eK=ye((v_r,iUt)=>{iUt.exports=["caption","icon","menu","message-box","small-caption","status-bar"]});var tK=ye((p_r,nUt)=>{nUt.exports=["normal","bold","bolder","lighter","100","200","300","400","500","600","700","800","900"]});var rK=ye((g_r,aUt)=>{aUt.exports=["normal","italic","oblique"]});var iK=ye((m_r,oUt)=>{oUt.exports=["normal","condensed","semi-condensed","extra-condensed","ultra-condensed","expanded","semi-expanded","extra-expanded","ultra-expanded"]});var zOe=ye((y_r,FOe)=>{"use strict";function ROe(e,t){if(typeof e!="string")return[e];var r=[e];typeof t=="string"||Array.isArray(t)?t={brackets:t}:t||(t={});var n=t.brackets?Array.isArray(t.brackets)?t.brackets:[t.brackets]:["{}","[]","()"],i=t.escape||"___",a=!!t.flat;n.forEach(function(l){var u=new RegExp(["\\",l[0],"[^\\",l[0],"\\",l[1],"]*\\",l[1]].join("")),c=[];function f(h,d,v){var m=r.push(h.slice(l[0].length,-l[1].length))-1;return c.push(m),i+m+i}r.forEach(function(h,d){for(var v,m=0;h!=v;)if(v=h,h=h.replace(u,f),m++>1e4)throw Error("References have circular dependency. Please, check them.");r[d]=h}),c=c.reverse(),r=r.map(function(h){return c.forEach(function(d){h=h.replace(new RegExp("(\\"+i+d+"\\"+i+")","g"),l[0]+"$1"+l[1])}),h})});var o=new RegExp("\\"+i+"([0-9]+)\\"+i);function s(l,u,c){for(var f=[],h,d=0;h=o.exec(l);){if(d++>1e4)throw Error("Circular references in parenthesis");f.push(l.slice(0,h.index)),f.push(s(u[h[1]],u)),l=l.slice(h.index+h[0].length)}return f.push(l),f}return a?r:s(r[0],r)}function DOe(e,t){if(t&&t.flat){var r=t&&t.escape||"___",n=e[0],i;if(!n)return"";for(var a=new RegExp("\\"+r+"([0-9]+)\\"+r),o=0;n!=i;){if(o++>1e4)throw Error("Circular references in "+e);i=n,n=n.replace(a,s)}return n}return e.reduce(function l(u,c){return Array.isArray(c)&&(c=c.reduce(l,"")),u+c},"");function s(l,u){if(e[u]==null)throw Error("Reference "+u+"is undefined");return e[u]}}function nK(e,t){return Array.isArray(e)?DOe(e,t):ROe(e,t)}nK.parse=ROe;nK.stringify=DOe;FOe.exports=nK});var BOe=ye((__r,OOe)=>{"use strict";var qOe=zOe();OOe.exports=function(t,r,n){if(t==null)throw Error("First argument should be a string");if(r==null)throw Error("Separator should be a string or a RegExp");n?(typeof n=="string"||Array.isArray(n))&&(n={ignore:n}):n={},n.escape==null&&(n.escape=!0),n.ignore==null?n.ignore=["[]","()","{}","<>",'""',"''","``","\u201C\u201D","\xAB\xBB"]:(typeof n.ignore=="string"&&(n.ignore=[n.ignore]),n.ignore=n.ignore.map(function(f){return f.length===1&&(f=f+f),f}));var i=qOe.parse(t,{flat:!0,brackets:n.ignore}),a=i[0],o=a.split(r);if(n.escape){for(var s=[],l=0;l{sUt.exports=["xx-small","x-small","small","medium","large","x-large","xx-large","larger","smaller"]});var aK=ye((b_r,UOe)=>{"use strict";var lUt=NOe();UOe.exports={isSize:function(t){return/^[\d\.]/.test(t)||t.indexOf("/")!==-1||lUt.indexOf(t)!==-1}}});var jOe=ye((w_r,HOe)=>{"use strict";var uUt=IOe(),cUt=QY(),fUt=eK(),hUt=tK(),dUt=rK(),vUt=iK(),oK=BOe(),pUt=aK().isSize;HOe.exports=GOe;var Ik=GOe.cache={};function GOe(e){if(typeof e!="string")throw new Error("Font argument must be a string.");if(Ik[e])return Ik[e];if(e==="")throw new Error("Cannot parse an empty string.");if(fUt.indexOf(e)!==-1)return Ik[e]={system:e};for(var t={style:"normal",variant:"normal",weight:"normal",stretch:"normal",lineHeight:"normal",size:"1rem",family:["serif"]},r=oK(e,/\s+/),n;n=r.shift();){if(cUt.indexOf(n)!==-1)return["style","variant","weight","stretch"].forEach(function(a){t[a]=n}),Ik[e]=t;if(dUt.indexOf(n)!==-1){t.style=n;continue}if(n==="normal"||n==="small-caps"){t.variant=n;continue}if(vUt.indexOf(n)!==-1){t.stretch=n;continue}if(hUt.indexOf(n)!==-1){t.weight=n;continue}if(pUt(n)){var i=oK(n,"/");if(t.size=i[0],i[1]!=null?t.lineHeight=VOe(i[1]):r[0]==="/"&&(r.shift(),t.lineHeight=VOe(r.shift())),!r.length)throw new Error("Missing required font-family.");return t.family=oK(r.join(" "),/\s*,\s*/).map(uUt),Ik[e]=t}throw new Error("Unknown or unsupported font token: "+n)}throw new Error("Missing required font-size.")}function VOe(e){var t=parseFloat(e);return t.toString()===e?t:e}});var lK=ye((T_r,WOe)=>{"use strict";var gUt=ty(),mUt=aK().isSize,yUt=Dk(QY()),_Ut=Dk(eK()),xUt=Dk(tK()),bUt=Dk(rK()),wUt=Dk(iK()),TUt={normal:1,"small-caps":1},AUt={serif:1,"sans-serif":1,monospace:1,cursive:1,fantasy:1,"system-ui":1},sK={style:"normal",variant:"normal",weight:"normal",stretch:"normal",size:"1rem",lineHeight:"normal",family:"serif"};WOe.exports=function(t){if(t=gUt(t,{style:"style fontstyle fontStyle font-style slope distinction",variant:"variant font-variant fontVariant fontvariant var capitalization",weight:"weight w font-weight fontWeight fontweight",stretch:"stretch font-stretch fontStretch fontstretch width",size:"size s font-size fontSize fontsize height em emSize",lineHeight:"lh line-height lineHeight lineheight leading",family:"font family fontFamily font-family fontfamily type typeface face",system:"system reserved default global"}),t.system)return t.system&&Rk(t.system,_Ut),t.system;if(Rk(t.style,bUt),Rk(t.variant,TUt),Rk(t.weight,xUt),Rk(t.stretch,wUt),t.size==null&&(t.size=sK.size),typeof t.size=="number"&&(t.size+="px"),!mUt)throw Error("Bad size value `"+t.size+"`");t.family||(t.family=sK.family),Array.isArray(t.family)&&(t.family.length||(t.family=[sK.family]),t.family=t.family.map(function(n){return AUt[n]?n:'"'+n+'"'}).join(", "));var r=[];return r.push(t.style),t.variant!==t.style&&r.push(t.variant),t.weight!==t.variant&&t.weight!==t.style&&r.push(t.weight),t.stretch!==t.weight&&t.stretch!==t.variant&&t.stretch!==t.style&&r.push(t.stretch),r.push(t.size+(t.lineHeight==null||t.lineHeight==="normal"||t.lineHeight+""=="1"?"":"/"+t.lineHeight)),r.push(t.family),r.filter(Boolean).join(" ")};function Rk(e,t){if(e&&!t[e]&&!yUt[e])throw Error("Unknown keyword `"+e+"`");return e}function Dk(e){for(var t={},r=0;r{"use strict";XOe.exports={parse:jOe(),stringify:lK()}});var YOe=ye((uK,cK)=>{(function(e,t){typeof uK=="object"&&typeof cK!="undefined"?cK.exports=t():e.createREGL=t()})(uK,function(){"use strict";var e=function(Me,bt){for(var Ot=Object.keys(bt),Lr=0;Lr1&&bt===Ot&&(bt==='"'||bt==="'"))return['"'+o(Me.substr(1,Me.length-2))+'"'];var Lr=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(Me);if(Lr)return s(Me.substr(0,Lr.index)).concat(s(Lr[1])).concat(s(Me.substr(Lr.index+Lr[0].length)));var Vr=Me.split(".");if(Vr.length===1)return['"'+o(Me)+'"'];for(var Or=[],Nr=0;Nr65535)<<4,Me>>>=bt,Ot=(Me>255)<<3,Me>>>=Ot,bt|=Ot,Ot=(Me>15)<<2,Me>>>=Ot,bt|=Ot,Ot=(Me>3)<<1,Me>>>=Ot,bt|=Ot,bt|Me>>1}function N(){var Me=S(8,function(){return[]});function bt(Or){var Nr=Z(Or),vi=Me[j(Nr)>>2];return vi.length>0?vi.pop():new ArrayBuffer(Nr)}function Ot(Or){Me[j(Or.byteLength)>>2].push(Or)}function Lr(Or,Nr){var vi=null;switch(Or){case g:vi=new Int8Array(bt(Nr),0,Nr);break;case P:vi=new Uint8Array(bt(Nr),0,Nr);break;case E:vi=new Int16Array(bt(2*Nr),0,Nr);break;case z:vi=new Uint16Array(bt(2*Nr),0,Nr);break;case q:vi=new Int32Array(bt(4*Nr),0,Nr);break;case V:vi=new Uint32Array(bt(4*Nr),0,Nr);break;case G:vi=new Float32Array(bt(4*Nr),0,Nr);break;default:return null}return vi.length!==Nr?vi.subarray(0,Nr):vi}function Vr(Or){Ot(Or.buffer)}return{alloc:bt,free:Ot,allocType:Lr,freeType:Vr}}var H=N();H.zero=N();var ie=3408,ae=3410,_e=3411,Ee=3412,Ce=3413,ge=3414,re=3415,Se=33901,ke=33902,be=3379,Be=3386,Le=34921,me=36347,Pe=36348,ce=35661,He=35660,lt=34930,mt=36349,Ht=34076,at=34024,ct=7936,ar=7937,Vt=7938,rr=35724,tt=34047,je=36063,Ue=34852,Ae=3553,rt=34067,St=34069,Tt=33984,dt=6408,Et=5126,pt=5121,jt=36160,or=36053,mr=36064,Ar=16384,ei=function(Me,bt){var Ot=1;bt.ext_texture_filter_anisotropic&&(Ot=Me.getParameter(tt));var Lr=1,Vr=1;bt.webgl_draw_buffers&&(Lr=Me.getParameter(Ue),Vr=Me.getParameter(je));var Or=!!bt.oes_texture_float;if(Or){var Nr=Me.createTexture();Me.bindTexture(Ae,Nr),Me.texImage2D(Ae,0,dt,1,1,0,dt,Et,null);var vi=Me.createFramebuffer();if(Me.bindFramebuffer(jt,vi),Me.framebufferTexture2D(jt,mr,Ae,Nr,0),Me.bindTexture(Ae,null),Me.checkFramebufferStatus(jt)!==or)Or=!1;else{Me.viewport(0,0,1,1),Me.clearColor(1,0,0,1),Me.clear(Ar);var Ni=H.allocType(Et,4);Me.readPixels(0,0,1,1,dt,Et,Ni),Me.getError()?Or=!1:(Me.deleteFramebuffer(vi),Me.deleteTexture(Nr),Or=Ni[0]===1),H.freeType(Ni)}}var qi=typeof navigator!="undefined"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent)),Si=!0;if(!qi){var Vn=Me.createTexture(),Qi=H.allocType(pt,36);Me.activeTexture(Tt),Me.bindTexture(rt,Vn),Me.texImage2D(St,0,dt,3,3,0,dt,pt,Qi),H.freeType(Qi),Me.bindTexture(rt,null),Me.deleteTexture(Vn),Si=!Me.getError()}return{colorBits:[Me.getParameter(ae),Me.getParameter(_e),Me.getParameter(Ee),Me.getParameter(Ce)],depthBits:Me.getParameter(ge),stencilBits:Me.getParameter(re),subpixelBits:Me.getParameter(ie),extensions:Object.keys(bt).filter(function(ji){return!!bt[ji]}),maxAnisotropic:Ot,maxDrawbuffers:Lr,maxColorAttachments:Vr,pointSizeDims:Me.getParameter(Se),lineWidthDims:Me.getParameter(ke),maxViewportDims:Me.getParameter(Be),maxCombinedTextureUnits:Me.getParameter(ce),maxCubeMapSize:Me.getParameter(Ht),maxRenderbufferSize:Me.getParameter(at),maxTextureUnits:Me.getParameter(lt),maxTextureSize:Me.getParameter(be),maxAttributes:Me.getParameter(Le),maxVertexUniforms:Me.getParameter(me),maxVertexTextureUnits:Me.getParameter(He),maxVaryingVectors:Me.getParameter(Pe),maxFragmentUniforms:Me.getParameter(mt),glsl:Me.getParameter(rr),renderer:Me.getParameter(ar),vendor:Me.getParameter(ct),version:Me.getParameter(Vt),readFloat:Or,npotTextureCube:Si}},qr=function(Me){return Me instanceof Uint8Array||Me instanceof Uint16Array||Me instanceof Uint32Array||Me instanceof Int8Array||Me instanceof Int16Array||Me instanceof Int32Array||Me instanceof Float32Array||Me instanceof Float64Array||Me instanceof Uint8ClampedArray};function jr(Me){return!!Me&&typeof Me=="object"&&Array.isArray(Me.shape)&&Array.isArray(Me.stride)&&typeof Me.offset=="number"&&Me.shape.length===Me.stride.length&&(Array.isArray(Me.data)||qr(Me.data))}var gt=function(Me){return Object.keys(Me).map(function(bt){return Me[bt]})},Ge={shape:Kt,flatten:At};function Je(Me,bt,Ot){for(var Lr=0;Lr0){var qn;if(Array.isArray(Zr[0])){Xi=Vi(Zr);for(var fi=1,si=1;si0){if(typeof fi[0]=="number"){var Ui=H.allocType(ui.dtype,fi.length);wr(Ui,fi),Xi(Ui,mn),H.freeType(Ui)}else if(Array.isArray(fi[0])||qr(fi[0])){Ji=Vi(fi);var Bi=Qn(fi,Ji,ui.dtype);Xi(Bi,mn),H.freeType(Bi)}}}else if(jr(fi)){Ji=fi.shape;var pn=fi.stride,Nn=0,aa=0,Ki=0,Cn=0;Ji.length===1?(Nn=Ji[0],aa=1,Ki=pn[0],Cn=0):Ji.length===2&&(Nn=Ji[0],aa=Ji[1],Ki=pn[0],Cn=pn[1]);var ia=Array.isArray(fi.data)?ui.dtype:ir(fi.data),sa=H.allocType(ia,Nn*aa);Xr(sa,fi.data,Nn,aa,Ki,Cn,fi.offset),Xi(sa,mn),H.freeType(sa)}return nn}return yi||nn(Tr),nn._reglType="buffer",nn._buffer=ui,nn.subdata=qn,Ot.profile&&(nn.stats=ui.stats),nn.destroy=function(){Qi(ui)},nn}function oi(){gt(Or).forEach(function(Tr){Tr.buffer=Me.createBuffer(),Me.bindBuffer(Tr.type,Tr.buffer),Me.bufferData(Tr.type,Tr.persistentData||Tr.byteLength,Tr.usage)})}return Ot.profile&&(bt.getTotalBufferSize=function(){var Tr=0;return Object.keys(Or).forEach(function(Zr){Tr+=Or[Zr].stats.size}),Tr}),{create:ji,createStream:Ni,destroyStream:qi,clear:function(){gt(Or).forEach(Qi),vi.forEach(Qi)},getBuffer:function(Tr){return Tr&&Tr._buffer instanceof Nr?Tr._buffer:null},restore:oi,_initBuffer:Vn}}var $r=0,Ri=0,Zi=1,en=1,fn=4,yn=4,Mn={points:$r,point:Ri,lines:Zi,line:en,triangles:fn,triangle:yn,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},Ba=0,ua=1,ma=4,Wa=5120,Fa=5121,Xo=5122,da=5123,jn=5124,Ha=5125,vo=34963,Gn=35040,Ct=35044;function Sr(Me,bt,Ot,Lr){var Vr={},Or=0,Nr={uint8:Fa,uint16:da};bt.oes_element_index_uint&&(Nr.uint32=Ha);function vi(oi){this.id=Or++,Vr[this.id]=this,this.buffer=oi,this.primType=ma,this.vertCount=0,this.type=0}vi.prototype.bind=function(){this.buffer.bind()};var Ni=[];function qi(oi){var Tr=Ni.pop();return Tr||(Tr=new vi(Ot.create(null,vo,!0,!1)._buffer)),Vn(Tr,oi,Gn,-1,-1,0,0),Tr}function Si(oi){Ni.push(oi)}function Vn(oi,Tr,Zr,yi,Ii,ui,nn){oi.buffer.bind();var Xi;if(Tr){var qn=nn;!nn&&(!qr(Tr)||jr(Tr)&&!qr(Tr.data))&&(qn=bt.oes_element_index_uint?Ha:da),Ot._initBuffer(oi.buffer,Tr,Zr,qn,3)}else Me.bufferData(vo,ui,Zr),oi.buffer.dtype=Xi||Fa,oi.buffer.usage=Zr,oi.buffer.dimension=3,oi.buffer.byteLength=ui;if(Xi=nn,!nn){switch(oi.buffer.dtype){case Fa:case Wa:Xi=Fa;break;case da:case Xo:Xi=da;break;case Ha:case jn:Xi=Ha;break;default:}oi.buffer.dtype=Xi}oi.type=Xi;var fi=Ii;fi<0&&(fi=oi.buffer.byteLength,Xi===da?fi>>=1:Xi===Ha&&(fi>>=2)),oi.vertCount=fi;var si=yi;if(yi<0){si=ma;var mn=oi.buffer.dimension;mn===1&&(si=Ba),mn===2&&(si=ua),mn===3&&(si=ma)}oi.primType=si}function Qi(oi){Lr.elementsCount--,delete Vr[oi.id],oi.buffer.destroy(),oi.buffer=null}function ji(oi,Tr){var Zr=Ot.create(null,vo,!0),yi=new vi(Zr._buffer);Lr.elementsCount++;function Ii(ui){if(!ui)Zr(),yi.primType=ma,yi.vertCount=0,yi.type=Fa;else if(typeof ui=="number")Zr(ui),yi.primType=ma,yi.vertCount=ui|0,yi.type=Fa;else{var nn=null,Xi=Ct,qn=-1,fi=-1,si=0,mn=0;Array.isArray(ui)||qr(ui)||jr(ui)?nn=ui:("data"in ui&&(nn=ui.data),"usage"in ui&&(Xi=Hn[ui.usage]),"primitive"in ui&&(qn=Mn[ui.primitive]),"count"in ui&&(fi=ui.count|0),"type"in ui&&(mn=Nr[ui.type]),"length"in ui?si=ui.length|0:(si=fi,mn===da||mn===Xo?si*=2:(mn===Ha||mn===jn)&&(si*=4))),Vn(yi,nn,Xi,qn,fi,si,mn)}return Ii}return Ii(oi),Ii._reglType="elements",Ii._elements=yi,Ii.subdata=function(ui,nn){return Zr.subdata(ui,nn),Ii},Ii.destroy=function(){Qi(yi)},Ii}return{create:ji,createStream:qi,destroyStream:Si,getElements:function(oi){return typeof oi=="function"&&oi._elements instanceof vi?oi._elements:null},clear:function(){gt(Vr).forEach(Qi)}}}var Jr=new Float32Array(1),hi=new Uint32Array(Jr.buffer),hn=5123;function Sn(Me){for(var bt=H.allocType(hn,Me.length),Ot=0;Ot>>31<<15,Or=(Lr<<1>>>24)-127,Nr=Lr>>13&1023;if(Or<-24)bt[Ot]=Vr;else if(Or<-14){var vi=-14-Or;bt[Ot]=Vr+(Nr+1024>>vi)}else Or>15?bt[Ot]=Vr+31744:bt[Ot]=Vr+(Or+15<<10)+Nr}return bt}function En(Me){return Array.isArray(Me)||qr(Me)}var ki=34467,_n=3553,ya=34067,ea=34069,Ma=6408,_o=6406,No=6407,po=6409,Lo=6410,ko=32854,Ds=32855,Fs=36194,ll=32819,ul=32820,zl=33635,us=34042,il=6402,As=34041,cl=35904,Ks=35906,zs=36193,Io=33776,ls=33777,Yl=33778,Su=33779,nc=35986,bs=35987,Rn=34798,_a=35840,Vu=35841,ql=35842,xo=35843,Kl=36196,Ns=5121,Hl=5123,ac=5125,oa=5126,qo=10242,Oo=10243,Ol=10497,Pc=33071,Do=33648,nf=10240,Vf=10241,pl=9728,Zc=9729,Jl=9984,qs=9985,yu=9986,oc=9987,Cf=33170,sc=4352,jh=4353,Lf=4354,cs=34046,af=3317,Gf=37440,$l=37441,fl=37443,lc=37444,Fu=33984,Es=[Jl,yu,qs,oc],Hs=[0,po,Lo,No,Ma],Go={};Go[po]=Go[_o]=Go[il]=1,Go[As]=Go[Lo]=2,Go[No]=Go[cl]=3,Go[Ma]=Go[Ks]=4;function ps(Me){return"[object "+Me+"]"}var uc=ps("HTMLCanvasElement"),xl=ps("OffscreenCanvas"),Gu=ps("CanvasRenderingContext2D"),Os=ps("ImageBitmap"),od=ps("HTMLImageElement"),Po=ps("HTMLVideoElement"),sd=Object.keys(Qt).concat([uc,xl,Gu,Os,od,Po]),Ko=[];Ko[Ns]=1,Ko[oa]=4,Ko[zs]=2,Ko[Hl]=2,Ko[ac]=4;var Pa=[];Pa[ko]=2,Pa[Ds]=2,Pa[Fs]=2,Pa[As]=4,Pa[Io]=.5,Pa[ls]=.5,Pa[Yl]=1,Pa[Su]=1,Pa[nc]=.5,Pa[bs]=1,Pa[Rn]=1,Pa[_a]=.5,Pa[Vu]=.25,Pa[ql]=.5,Pa[xo]=.25,Pa[Kl]=.5;function of(Me){return Array.isArray(Me)&&(Me.length===0||typeof Me[0]=="number")}function Hu(Me){if(!Array.isArray(Me))return!1;var bt=Me.length;return!(bt===0||!En(Me[0]))}function bl(Me){return Object.prototype.toString.call(Me)}function Hf(Me){return bl(Me)===uc}function Ic(Me){return bl(Me)===xl}function yf(Me){return bl(Me)===Gu}function Bl(Me){return bl(Me)===Os}function Ah(Me){return bl(Me)===od}function Qf(Me){return bl(Me)===Po}function _f(Me){if(!Me)return!1;var bt=bl(Me);return sd.indexOf(bt)>=0?!0:of(Me)||Hu(Me)||jr(Me)}function Yc(Me){return Qt[Object.prototype.toString.call(Me)]|0}function eh(Me,bt){var Ot=bt.length;switch(Me.type){case Ns:case Hl:case ac:case oa:var Lr=H.allocType(Me.type,Ot);Lr.set(bt),Me.data=Lr;break;case zs:Me.data=Sn(bt);break;default:}}function th(Me,bt){return H.allocType(Me.type===zs?oa:Me.type,bt)}function ju(Me,bt){Me.type===zs?(Me.data=Sn(bt),H.freeType(bt)):Me.data=bt}function jf(Me,bt,Ot,Lr,Vr,Or){for(var Nr=Me.width,vi=Me.height,Ni=Me.channels,qi=Nr*vi*Ni,Si=th(Me,qi),Vn=0,Qi=0;Qi=1;)vi+=Nr*Ni*Ni,Ni/=2;return vi}else return Nr*Ot*Lr}function sf(Me,bt,Ot,Lr,Vr,Or,Nr){var vi={"don't care":sc,"dont care":sc,nice:Lf,fast:jh},Ni={repeat:Ol,clamp:Pc,mirror:Do},qi={nearest:pl,linear:Zc},Si=e({mipmap:oc,"nearest mipmap nearest":Jl,"linear mipmap nearest":qs,"nearest mipmap linear":yu,"linear mipmap linear":oc},qi),Vn={none:0,browser:lc},Qi={uint8:Ns,rgba4:ll,rgb565:zl,"rgb5 a1":ul},ji={alpha:_o,luminance:po,"luminance alpha":Lo,rgb:No,rgba:Ma,rgba4:ko,"rgb5 a1":Ds,rgb565:Fs},oi={};bt.ext_srgb&&(ji.srgb=cl,ji.srgba=Ks),bt.oes_texture_float&&(Qi.float32=Qi.float=oa),bt.oes_texture_half_float&&(Qi.float16=Qi["half float"]=zs),bt.webgl_depth_texture&&(e(ji,{depth:il,"depth stencil":As}),e(Qi,{uint16:Hl,uint32:ac,"depth stencil":us})),bt.webgl_compressed_texture_s3tc&&e(oi,{"rgb s3tc dxt1":Io,"rgba s3tc dxt1":ls,"rgba s3tc dxt3":Yl,"rgba s3tc dxt5":Su}),bt.webgl_compressed_texture_atc&&e(oi,{"rgb atc":nc,"rgba atc explicit alpha":bs,"rgba atc interpolated alpha":Rn}),bt.webgl_compressed_texture_pvrtc&&e(oi,{"rgb pvrtc 4bppv1":_a,"rgb pvrtc 2bppv1":Vu,"rgba pvrtc 4bppv1":ql,"rgba pvrtc 2bppv1":xo}),bt.webgl_compressed_texture_etc1&&(oi["rgb etc1"]=Kl);var Tr=Array.prototype.slice.call(Me.getParameter(ki));Object.keys(oi).forEach(function(ne){var we=oi[ne];Tr.indexOf(we)>=0&&(ji[ne]=we)});var Zr=Object.keys(ji);Ot.textureFormats=Zr;var yi=[];Object.keys(ji).forEach(function(ne){var we=ji[ne];yi[we]=ne});var Ii=[];Object.keys(Qi).forEach(function(ne){var we=Qi[ne];Ii[we]=ne});var ui=[];Object.keys(qi).forEach(function(ne){var we=qi[ne];ui[we]=ne});var nn=[];Object.keys(Si).forEach(function(ne){var we=Si[ne];nn[we]=ne});var Xi=[];Object.keys(Ni).forEach(function(ne){var we=Ni[ne];Xi[we]=ne});var qn=Zr.reduce(function(ne,we){var Oe=ji[we];return Oe===po||Oe===_o||Oe===po||Oe===Lo||Oe===il||Oe===As||bt.ext_srgb&&(Oe===cl||Oe===Ks)?ne[Oe]=Oe:Oe===Ds||we.indexOf("rgba")>=0?ne[Oe]=Ma:ne[Oe]=No,ne},{});function fi(){this.internalformat=Ma,this.format=Ma,this.type=Ns,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=lc,this.width=0,this.height=0,this.channels=0}function si(ne,we){ne.internalformat=we.internalformat,ne.format=we.format,ne.type=we.type,ne.compressed=we.compressed,ne.premultiplyAlpha=we.premultiplyAlpha,ne.flipY=we.flipY,ne.unpackAlignment=we.unpackAlignment,ne.colorSpace=we.colorSpace,ne.width=we.width,ne.height=we.height,ne.channels=we.channels}function mn(ne,we){if(!(typeof we!="object"||!we)){if("premultiplyAlpha"in we&&(ne.premultiplyAlpha=we.premultiplyAlpha),"flipY"in we&&(ne.flipY=we.flipY),"alignment"in we&&(ne.unpackAlignment=we.alignment),"colorSpace"in we&&(ne.colorSpace=Vn[we.colorSpace]),"type"in we){var Oe=we.type;ne.type=Qi[Oe]}var ht=ne.width,Yt=ne.height,cr=ne.channels,Nt=!1;"shape"in we?(ht=we.shape[0],Yt=we.shape[1],we.shape.length===3&&(cr=we.shape[2],Nt=!0)):("radius"in we&&(ht=Yt=we.radius),"width"in we&&(ht=we.width),"height"in we&&(Yt=we.height),"channels"in we&&(cr=we.channels,Nt=!0)),ne.width=ht|0,ne.height=Yt|0,ne.channels=cr|0;var Ne=!1;if("format"in we){var $e=we.format,st=ne.internalformat=ji[$e];ne.format=qn[st],$e in Qi&&("type"in we||(ne.type=Qi[$e])),$e in oi&&(ne.compressed=!0),Ne=!0}!Nt&&Ne?ne.channels=Go[ne.format]:Nt&&!Ne&&ne.channels!==Hs[ne.format]&&(ne.format=ne.internalformat=Hs[ne.channels])}}function Ji(ne){Me.pixelStorei(Gf,ne.flipY),Me.pixelStorei($l,ne.premultiplyAlpha),Me.pixelStorei(fl,ne.colorSpace),Me.pixelStorei(af,ne.unpackAlignment)}function Ui(){fi.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function Bi(ne,we){var Oe=null;if(_f(we)?Oe=we:we&&(mn(ne,we),"x"in we&&(ne.xOffset=we.x|0),"y"in we&&(ne.yOffset=we.y|0),_f(we.data)&&(Oe=we.data)),we.copy){var ht=Vr.viewportWidth,Yt=Vr.viewportHeight;ne.width=ne.width||ht-ne.xOffset,ne.height=ne.height||Yt-ne.yOffset,ne.needsCopy=!0}else if(!Oe)ne.width=ne.width||1,ne.height=ne.height||1,ne.channels=ne.channels||4;else if(qr(Oe))ne.channels=ne.channels||4,ne.data=Oe,!("type"in we)&&ne.type===Ns&&(ne.type=Yc(Oe));else if(of(Oe))ne.channels=ne.channels||4,eh(ne,Oe),ne.alignment=1,ne.needsFree=!0;else if(jr(Oe)){var cr=Oe.data;!Array.isArray(cr)&&ne.type===Ns&&(ne.type=Yc(cr));var Nt=Oe.shape,Ne=Oe.stride,$e,st,It,Bt,Ft,Ut;Nt.length===3?(It=Nt[2],Ut=Ne[2]):(It=1,Ut=1),$e=Nt[0],st=Nt[1],Bt=Ne[0],Ft=Ne[1],ne.alignment=1,ne.width=$e,ne.height=st,ne.channels=It,ne.format=ne.internalformat=Hs[It],ne.needsFree=!0,jf(ne,cr,Bt,Ft,Ut,Oe.offset)}else if(Hf(Oe)||Ic(Oe)||yf(Oe))Hf(Oe)||Ic(Oe)?ne.element=Oe:ne.element=Oe.canvas,ne.width=ne.element.width,ne.height=ne.element.height,ne.channels=4;else if(Bl(Oe))ne.element=Oe,ne.width=Oe.width,ne.height=Oe.height,ne.channels=4;else if(Ah(Oe))ne.element=Oe,ne.width=Oe.naturalWidth,ne.height=Oe.naturalHeight,ne.channels=4;else if(Qf(Oe))ne.element=Oe,ne.width=Oe.videoWidth,ne.height=Oe.videoHeight,ne.channels=4;else if(Hu(Oe)){var zt=ne.width||Oe[0].length,_t=ne.height||Oe.length,Dt=ne.channels;En(Oe[0][0])?Dt=Dt||Oe[0][0].length:Dt=Dt||1;for(var vt=Ge.shape(Oe),lr=1,_r=0;_r>=Yt,Oe.height>>=Yt,Bi(Oe,ht[Yt]),ne.mipmask|=1<=0&&!("faces"in we)&&(ne.genMipmaps=!0)}if("mag"in we){var ht=we.mag;ne.magFilter=qi[ht]}var Yt=ne.wrapS,cr=ne.wrapT;if("wrap"in we){var Nt=we.wrap;typeof Nt=="string"?Yt=cr=Ni[Nt]:Array.isArray(Nt)&&(Yt=Ni[Nt[0]],cr=Ni[Nt[1]])}else{if("wrapS"in we){var Ne=we.wrapS;Yt=Ni[Ne]}if("wrapT"in we){var $e=we.wrapT;cr=Ni[$e]}}if(ne.wrapS=Yt,ne.wrapT=cr,"anisotropic"in we){var st=we.anisotropic;ne.anisotropic=we.anisotropic}if("mipmap"in we){var It=!1;switch(typeof we.mipmap){case"string":ne.mipmapHint=vi[we.mipmap],ne.genMipmaps=!0,It=!0;break;case"boolean":It=ne.genMipmaps=we.mipmap;break;case"object":ne.genMipmaps=!1,It=!0;break;default:}It&&!("min"in we)&&(ne.minFilter=Jl)}}function al(ne,we){Me.texParameteri(we,Vf,ne.minFilter),Me.texParameteri(we,nf,ne.magFilter),Me.texParameteri(we,qo,ne.wrapS),Me.texParameteri(we,Oo,ne.wrapT),bt.ext_texture_filter_anisotropic&&Me.texParameteri(we,cs,ne.anisotropic),ne.genMipmaps&&(Me.hint(Cf,ne.mipmapHint),Me.generateMipmap(we))}var Vl=0,ss={},Vs=Ot.maxTextureUnits,Ys=Array(Vs).map(function(){return null});function wa(ne){fi.call(this),this.mipmask=0,this.internalformat=Ma,this.id=Vl++,this.refCount=1,this.target=ne,this.texture=Me.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new zo,Nr.profile&&(this.stats={size:0})}function ol(ne){Me.activeTexture(Fu),Me.bindTexture(ne.target,ne.texture)}function io(){var ne=Ys[0];ne?Me.bindTexture(ne.target,ne.texture):Me.bindTexture(_n,null)}function Y(ne){var we=ne.texture,Oe=ne.unit,ht=ne.target;Oe>=0&&(Me.activeTexture(Fu+Oe),Me.bindTexture(ht,null),Ys[Oe]=null),Me.deleteTexture(we),ne.texture=null,ne.params=null,ne.pixels=null,ne.refCount=0,delete ss[ne.id],Or.textureCount--}e(wa.prototype,{bind:function(){var ne=this;ne.bindCount+=1;var we=ne.unit;if(we<0){for(var Oe=0;Oe0)continue;ht.unit=-1}Ys[Oe]=ne,we=Oe;break}we>=Vs,Nr.profile&&Or.maxTextureUnits>Ft)-It,Ut.height=Ut.height||(Oe.height>>Ft)-Bt,ol(Oe),Nn(Ut,_n,It,Bt,Ft),io(),Cn(Ut),ht}function cr(Nt,Ne){var $e=Nt|0,st=Ne|0||$e;if($e===Oe.width&&st===Oe.height)return ht;ht.width=Oe.width=$e,ht.height=Oe.height=st,ol(Oe);for(var It=0;Oe.mipmask>>It;++It){var Bt=$e>>It,Ft=st>>It;if(!Bt||!Ft)break;Me.texImage2D(_n,It,Oe.format,Bt,Ft,0,Oe.format,Oe.type,null)}return io(),Nr.profile&&(Oe.stats.size=cc(Oe.internalformat,Oe.type,$e,st,!1,!1)),ht}return ht(ne,we),ht.subimage=Yt,ht.resize=cr,ht._reglType="texture2d",ht._texture=Oe,Nr.profile&&(ht.stats=Oe.stats),ht.destroy=function(){Oe.decRef()},ht}function J(ne,we,Oe,ht,Yt,cr){var Nt=new wa(ya);ss[Nt.id]=Nt,Or.cubeCount++;var Ne=new Array(6);function $e(Bt,Ft,Ut,zt,_t,Dt){var vt,lr=Nt.texInfo;for(zo.call(lr),vt=0;vt<6;++vt)Ne[vt]=Ga();if(typeof Bt=="number"||!Bt){var _r=Bt|0||1;for(vt=0;vt<6;++vt)sa(Ne[vt],_r,_r)}else if(typeof Bt=="object")if(Ft)ba(Ne[0],Bt),ba(Ne[1],Ft),ba(Ne[2],Ut),ba(Ne[3],zt),ba(Ne[4],_t),ba(Ne[5],Dt);else if(Qs(lr,Bt),mn(Nt,Bt),"faces"in Bt){var Br=Bt.faces;for(vt=0;vt<6;++vt)si(Ne[vt],Nt),ba(Ne[vt],Br[vt])}else for(vt=0;vt<6;++vt)ba(Ne[vt],Bt);for(si(Nt,Ne[0]),lr.genMipmaps?Nt.mipmask=(Ne[0].width<<1)-1:Nt.mipmask=Ne[0].mipmask,Nt.internalformat=Ne[0].internalformat,$e.width=Ne[0].width,$e.height=Ne[0].height,ol(Nt),vt=0;vt<6;++vt)is(Ne[vt],ea+vt);for(al(lr,ya),io(),Nr.profile&&(Nt.stats.size=cc(Nt.internalformat,Nt.type,$e.width,$e.height,lr.genMipmaps,!0)),$e.format=yi[Nt.internalformat],$e.type=Ii[Nt.type],$e.mag=ui[lr.magFilter],$e.min=nn[lr.minFilter],$e.wrapS=Xi[lr.wrapS],$e.wrapT=Xi[lr.wrapT],vt=0;vt<6;++vt)Ml(Ne[vt]);return $e}function st(Bt,Ft,Ut,zt,_t){var Dt=Ut|0,vt=zt|0,lr=_t|0,_r=Ki();return si(_r,Nt),_r.width=0,_r.height=0,Bi(_r,Ft),_r.width=_r.width||(Nt.width>>lr)-Dt,_r.height=_r.height||(Nt.height>>lr)-vt,ol(Nt),Nn(_r,ea+Bt,Dt,vt,lr),io(),Cn(_r),$e}function It(Bt){var Ft=Bt|0;if(Ft!==Nt.width){$e.width=Nt.width=Ft,$e.height=Nt.height=Ft,ol(Nt);for(var Ut=0;Ut<6;++Ut)for(var zt=0;Nt.mipmask>>zt;++zt)Me.texImage2D(ea+Ut,zt,Nt.format,Ft>>zt,Ft>>zt,0,Nt.format,Nt.type,null);return io(),Nr.profile&&(Nt.stats.size=cc(Nt.internalformat,Nt.type,$e.width,$e.height,!1,!0)),$e}}return $e(ne,we,Oe,ht,Yt,cr),$e.subimage=st,$e.resize=It,$e._reglType="textureCube",$e._texture=Nt,Nr.profile&&($e.stats=Nt.stats),$e.destroy=function(){Nt.decRef()},$e}function O(){for(var ne=0;ne>ht,Oe.height>>ht,0,Oe.internalformat,Oe.type,null);else for(var Yt=0;Yt<6;++Yt)Me.texImage2D(ea+Yt,ht,Oe.internalformat,Oe.width>>ht,Oe.height>>ht,0,Oe.internalformat,Oe.type,null);al(Oe.texInfo,Oe.target)})}function de(){for(var ne=0;ne=0?Ml=!0:Ni.indexOf(zo)>=0&&(Ml=!1))),("depthTexture"in wa||"depthStencilTexture"in wa)&&(Ys=!!(wa.depthTexture||wa.depthStencilTexture)),"depth"in wa&&(typeof wa.depth=="boolean"?is=wa.depth:(Vl=wa.depth,Zs=!1)),"stencil"in wa&&(typeof wa.stencil=="boolean"?Zs=wa.stencil:(ss=wa.stencil,is=!1)),"depthStencil"in wa&&(typeof wa.depthStencil=="boolean"?is=Zs=wa.depthStencil:(Vs=wa.depthStencil,is=!1,Zs=!1))}var io=null,Y=null,D=null,J=null;if(Array.isArray(Ga))io=Ga.map(oi);else if(Ga)io=[oi(Ga)];else for(io=new Array(al),ia=0;ia0&&(Cn.depth=Bi[0].depth,Cn.stencil=Bi[0].stencil,Cn.depthStencil=Bi[0].depthStencil),Bi[Ki]?Bi[Ki](Cn):Bi[Ki]=si(Cn)}return e(pn,{width:ia,height:ia,color:zo})}function Nn(aa){var Ki,Cn=aa|0;if(Cn===pn.width)return pn;var ia=pn.color;for(Ki=0;Ki=ia.byteLength?sa.subdata(ia):(sa.destroy(),si.buffers[aa]=null)),si.buffers[aa]||(sa=si.buffers[aa]=Vr.create(Ki,If,!1,!0)),Cn.buffer=Vr.getBuffer(sa),Cn.size=Cn.buffer.dimension|0,Cn.normalized=!1,Cn.type=Cn.buffer.dtype,Cn.offset=0,Cn.stride=0,Cn.divisor=0,Cn.state=1,pn[aa]=1}else Vr.getBuffer(Ki)?(Cn.buffer=Vr.getBuffer(Ki),Cn.size=Cn.buffer.dimension|0,Cn.normalized=!1,Cn.type=Cn.buffer.dtype,Cn.offset=0,Cn.stride=0,Cn.divisor=0,Cn.state=1):Vr.getBuffer(Ki.buffer)?(Cn.buffer=Vr.getBuffer(Ki.buffer),Cn.size=(+Ki.size||Cn.buffer.dimension)|0,Cn.normalized=!!Ki.normalized||!1,"type"in Ki?Cn.type=un[Ki.type]:Cn.type=Cn.buffer.dtype,Cn.offset=(Ki.offset||0)|0,Cn.stride=(Ki.stride||0)|0,Cn.divisor=(Ki.divisor||0)|0,Cn.state=1):"x"in Ki&&(Cn.x=+Ki.x||0,Cn.y=+Ki.y||0,Cn.z=+Ki.z||0,Cn.w=+Ki.w||0,Cn.state=2)}for(var ba=0;ba1)for(var Ji=0;JiTr&&(Tr=Zr.stats.uniformsCount)}),Tr},Ot.getMaxAttributesCount=function(){var Tr=0;return Si.forEach(function(Zr){Zr.stats.attributesCount>Tr&&(Tr=Zr.stats.attributesCount)}),Tr});function oi(){Vr={},Or={};for(var Tr=0;Tr16&&(Ot=Yi(Ot,Me.length*8));for(var Lr=Array(16),Vr=Array(16),Or=0;Or<16;Or++)Lr[Or]=Ot[Or]^909522486,Vr[Or]=Ot[Or]^1549556828;var Nr=Yi(Lr.concat(Bc(bt)),512+bt.length*8);return kt(Yi(Vr.concat(Nr),768))}function vu(Me){for(var bt=ah?"0123456789ABCDEF":"0123456789abcdef",Ot="",Lr,Vr=0;Vr>>4&15)+bt.charAt(Lr&15);return Ot}function Oc(Me){for(var bt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ot="",Lr=Me.length,Vr=0;VrMe.length*8?Ot+=Zu:Ot+=bt.charAt(Or>>>6*(3-Nr)&63);return Ot}function ff(Me,bt){var Ot=bt.length,Lr=Array(),Vr,Or,Nr,vi,Ni=Array(Math.ceil(Me.length/2));for(Vr=0;Vr0;){for(vi=Array(),Nr=0,Vr=0;Vr0||Or>0)&&(vi[vi.length]=Or);Lr[Lr.length]=Nr,Ni=vi}var qi="";for(Vr=Lr.length-1;Vr>=0;Vr--)qi+=bt.charAt(Lr[Vr]);var Si=Math.ceil(Me.length*8/(Math.log(bt.length)/Math.log(2)));for(Vr=qi.length;Vr>>6&31,128|Lr&63):Lr<=65535?bt+=String.fromCharCode(224|Lr>>>12&15,128|Lr>>>6&63,128|Lr&63):Lr<=2097151&&(bt+=String.fromCharCode(240|Lr>>>18&7,128|Lr>>>12&63,128|Lr>>>6&63,128|Lr&63));return bt}function Bc(Me){for(var bt=Array(Me.length>>2),Ot=0;Ot>5]|=(Me.charCodeAt(Ot/8)&255)<<24-Ot%32;return bt}function kt(Me){for(var bt="",Ot=0;Ot>5]>>>24-Ot%32&255);return bt}function Zt(Me,bt){return Me>>>bt|Me<<32-bt}function Er(Me,bt){return Me>>>bt}function xr(Me,bt,Ot){return Me&bt^~Me&Ot}function Kr(Me,bt,Ot){return Me&bt^Me&Ot^bt&Ot}function Mi(Me){return Zt(Me,2)^Zt(Me,13)^Zt(Me,22)}function Wi(Me){return Zt(Me,6)^Zt(Me,11)^Zt(Me,25)}function dn(Me){return Zt(Me,7)^Zt(Me,18)^Er(Me,3)}function wn(Me){return Zt(Me,17)^Zt(Me,19)^Er(Me,10)}var On=new Array(1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998);function Yi(Me,bt){var Ot=new Array(1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225),Lr=new Array(64),Vr,Or,Nr,vi,Ni,qi,Si,Vn,Qi,ji,oi,Tr;for(Me[bt>>5]|=128<<24-bt%32,Me[(bt+64>>9<<4)+15]=bt,Qi=0;Qi>16)+(bt>>16)+(Ot>>16);return Lr<<16|Ot&65535}function an(Me){return Array.prototype.slice.call(Me)}function Fi(Me){return an(Me).join("")}function ta(Me){var bt=Me&&Me.cache,Ot=0,Lr=[],Vr=[],Or=[];function Nr(oi,Tr){var Zr=Tr&&Tr.stable;if(!Zr){for(var yi=0;yi0&&(oi.push(Ii,"="),oi.push.apply(oi,an(arguments)),oi.push(";")),Ii}return e(Tr,{def:yi,toString:function(){return Fi([Zr.length>0?"var "+Zr.join(",")+";":"",Fi(oi)])}})}function Ni(){var oi=vi(),Tr=vi(),Zr=oi.toString,yi=Tr.toString;function Ii(ui,nn){Tr(ui,nn,"=",oi.def(ui,nn),";")}return e(function(){oi.apply(oi,an(arguments))},{def:oi.def,entry:oi,exit:Tr,save:Ii,set:function(ui,nn,Xi){Ii(ui,nn),oi(ui,nn,"=",Xi,";")},toString:function(){return Zr()+yi()}})}function qi(){var oi=Fi(arguments),Tr=Ni(),Zr=Ni(),yi=Tr.toString,Ii=Zr.toString;return e(Tr,{then:function(){return Tr.apply(Tr,an(arguments)),this},else:function(){return Zr.apply(Zr,an(arguments)),this},toString:function(){var ui=Ii();return ui&&(ui="else{"+ui+"}"),Fi(["if(",oi,"){",yi(),"}",ui])}})}var Si=vi(),Vn={};function Qi(oi,Tr){var Zr=[];function yi(){var qn="a"+Zr.length;return Zr.push(qn),qn}Tr=Tr||0;for(var Ii=0;Ii":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},ii={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},di={cw:Te,ccw:qe};function Li(Me){return Array.isArray(Me)||qr(Me)||jr(Me)}function Ti(Me){return Me.sort(function(bt,Ot){return bt===ee?-1:Ot===ee?1:bt=1,Lr>=2,bt)}else if(Ot===Zo){var Vr=Me.data;return new Qr(Vr.thisDep,Vr.contextDep,Vr.propDep,bt)}else{if(Ot===Ss)return new Qr(!1,!1,!1,bt);if(Ot===as){for(var Or=!1,Nr=!1,vi=!1,Ni=0;Ni=1&&(Nr=!0),Si>=2&&(vi=!0)}else qi.type===Zo&&(Or=Or||qi.data.thisDep,Nr=Nr||qi.data.contextDep,vi=vi||qi.data.propDep)}return new Qr(Or,Nr,vi,bt)}else return new Qr(Ot===bo,Ot===Ka,Ot===Dn,bt)}}var na=new Qr(!1,!1,!1,function(){});function Ea(Me,bt,Ot,Lr,Vr,Or,Nr,vi,Ni,qi,Si,Vn,Qi,ji,oi,Tr){var Zr=qi.Record,yi={add:32774,subtract:32778,"reverse subtract":32779};Ot.ext_blend_minmax&&(yi.min=Ve,yi.max=Ye);var Ii=Ot.angle_instanced_arrays,ui=Ot.webgl_draw_buffers,nn=Ot.oes_vertex_array_object,Xi={dirty:!0,profile:Tr.profile},qn={},fi=[],si={},mn={};function Ji(Ne){return Ne.replace(".","_")}function Ui(Ne,$e,st){var It=Ji(Ne);fi.push(Ne),qn[It]=Xi[It]=!!st,si[It]=$e}function Bi(Ne,$e,st){var It=Ji(Ne);fi.push(Ne),Array.isArray(st)?(Xi[It]=st.slice(),qn[It]=st.slice()):Xi[It]=qn[It]=st,mn[It]=$e}function pn(Ne){return!!isNaN(Ne)}Ui(ws,Ci),Ui(Ho,ri),Bi(ml,"blendColor",[0,0,0,0]),Bi(Ws,"blendEquationSeparate",[pr,pr]),Bi(Ls,"blendFuncSeparate",[dr,Xt,dr,Xt]),Ui(va,sn,!0),Bi(no,"depthFunc",Ur),Bi(ys,"depthRange",[0,1]),Bi(rs,"depthMask",!0),Bi(Ql,Ql,[!0,!0,!0,!0]),Ui(Cu,Hr),Bi(Yu,"cullFace",se),Bi(Nc,Nc,qe),Bi(pu,pu,1),Ui(Uc,Yn),Bi(xu,"polygonOffset",[0,0]),Ui(Ac,Aa),Ui(Va,fa),Bi(oo,"sampleCoverage",[1,!1]),Ui(Vc,cn),Bi(hc,"stencilMask",-1),Bi(Ku,"stencilFunc",[Pt,0,-1]),Bi(ue,"stencilOpSeparate",[X,ot,ot,ot]),Bi(w,"stencilOpSeparate",[se,ot,ot,ot]),Ui(B,Ln),Bi(Q,"scissor",[0,0,Me.drawingBufferWidth,Me.drawingBufferHeight]),Bi(ee,ee,[0,0,Me.drawingBufferWidth,Me.drawingBufferHeight]);var Nn={gl:Me,context:Qi,strings:bt,next:qn,current:Xi,draw:Vn,elements:Or,buffer:Vr,shader:Si,attributes:qi.state,vao:qi,uniforms:Ni,framebuffer:vi,extensions:Ot,timer:ji,isBufferArgs:Li},aa={primTypes:Mn,compareFuncs:Wr,blendFuncs:xi,blendEquations:yi,stencilOps:ii,glTypes:un,orientationType:di};ui&&(aa.backBuffer=[se],aa.drawBuffer=S(Lr.maxDrawbuffers,function(Ne){return Ne===0?[0]:S(Ne,function($e){return gi+$e})}));var Ki=0;function Cn(){var Ne=ta({cache:oi}),$e=Ne.link,st=Ne.global;Ne.id=Ki++,Ne.batchId="0";var It=$e(Nn),Bt=Ne.shared={props:"a0"};Object.keys(Nn).forEach(function(Dt){Bt[Dt]=st.def(It,".",Dt)});var Ft=Ne.next={},Ut=Ne.current={};Object.keys(mn).forEach(function(Dt){Array.isArray(Xi[Dt])&&(Ft[Dt]=st.def(Bt.next,".",Dt),Ut[Dt]=st.def(Bt.current,".",Dt))});var zt=Ne.constants={};Object.keys(aa).forEach(function(Dt){zt[Dt]=st.def(JSON.stringify(aa[Dt]))}),Ne.invoke=function(Dt,vt){switch(vt.type){case Zn:var lr=["this",Bt.context,Bt.props,Ne.batchId];return Dt.def($e(vt.data),".call(",lr.slice(0,Math.max(vt.data.length+1,4)),")");case Dn:return Dt.def(Bt.props,vt.data);case Ka:return Dt.def(Bt.context,vt.data);case bo:return Dt.def("this",vt.data);case Zo:return vt.data.append(Ne,Dt),vt.data.ref;case Ss:return vt.data.toString();case as:return vt.data.map(function(_r){return Ne.invoke(Dt,_r)})}},Ne.attribCache={};var _t={};return Ne.scopeAttrib=function(Dt){var vt=bt.id(Dt);if(vt in _t)return _t[vt];var lr=qi.scope[vt];lr||(lr=qi.scope[vt]=new Zr);var _r=_t[vt]=$e(lr);return _r},Ne}function ia(Ne){var $e=Ne.static,st=Ne.dynamic,It;if(le in $e){var Bt=!!$e[le];It=kn(function(Ut,zt){return Bt}),It.enable=Bt}else if(le in st){var Ft=st[le];It=Bn(Ft,function(Ut,zt){return Ut.invoke(zt,Ft)})}return It}function sa(Ne,$e){var st=Ne.static,It=Ne.dynamic;if(Fe in st){var Bt=st[Fe];return Bt?(Bt=vi.getFramebuffer(Bt),kn(function(Ut,zt){var _t=Ut.link(Bt),Dt=Ut.shared;zt.set(Dt.framebuffer,".next",_t);var vt=Dt.context;return zt.set(vt,"."+ze,_t+".width"),zt.set(vt,"."+Qe,_t+".height"),_t})):kn(function(Ut,zt){var _t=Ut.shared;zt.set(_t.framebuffer,".next","null");var Dt=_t.context;return zt.set(Dt,"."+ze,Dt+"."+Wt),zt.set(Dt,"."+Qe,Dt+"."+nr),"null"})}else if(Fe in It){var Ft=It[Fe];return Bn(Ft,function(Ut,zt){var _t=Ut.invoke(zt,Ft),Dt=Ut.shared,vt=Dt.framebuffer,lr=zt.def(vt,".getFramebuffer(",_t,")");zt.set(vt,".next",lr);var _r=Dt.context;return zt.set(_r,"."+ze,lr+"?"+lr+".width:"+_r+"."+Wt),zt.set(_r,"."+Qe,lr+"?"+lr+".height:"+_r+"."+nr),lr})}else return null}function ba(Ne,$e,st){var It=Ne.static,Bt=Ne.dynamic;function Ft(_t){if(_t in It){var Dt=It[_t],vt=!0,lr=Dt.x|0,_r=Dt.y|0,Br,Di;return"width"in Dt?Br=Dt.width|0:vt=!1,"height"in Dt?Di=Dt.height|0:vt=!1,new Qr(!vt&&$e&&$e.thisDep,!vt&&$e&&$e.contextDep,!vt&&$e&&$e.propDep,function(gn,tn){var Ei=gn.shared.context,Oi=Br;"width"in Dt||(Oi=tn.def(Ei,".",ze,"-",lr));var Gi=Di;return"height"in Dt||(Gi=tn.def(Ei,".",Qe,"-",_r)),[lr,_r,Oi,Gi]})}else if(_t in Bt){var ci=Bt[_t],bi=Bn(ci,function(gn,tn){var Ei=gn.invoke(tn,ci),Oi=gn.shared.context,Gi=tn.def(Ei,".x|0"),on=tn.def(Ei,".y|0"),zn=tn.def('"width" in ',Ei,"?",Ei,".width|0:","(",Oi,".",ze,"-",Gi,")"),Ja=tn.def('"height" in ',Ei,"?",Ei,".height|0:","(",Oi,".",Qe,"-",on,")");return[Gi,on,zn,Ja]});return $e&&(bi.thisDep=bi.thisDep||$e.thisDep,bi.contextDep=bi.contextDep||$e.contextDep,bi.propDep=bi.propDep||$e.propDep),bi}else return $e?new Qr($e.thisDep,$e.contextDep,$e.propDep,function(gn,tn){var Ei=gn.shared.context;return[0,0,tn.def(Ei,".",ze),tn.def(Ei,".",Qe)]}):null}var Ut=Ft(ee);if(Ut){var zt=Ut;Ut=new Qr(Ut.thisDep,Ut.contextDep,Ut.propDep,function(_t,Dt){var vt=zt.append(_t,Dt),lr=_t.shared.context;return Dt.set(lr,"."+Xe,vt[2]),Dt.set(lr,"."+nt,vt[3]),vt})}return{viewport:Ut,scissor_box:Ft(Q)}}function is(Ne,$e){var st=Ne.static,It=typeof st[ut]=="string"&&typeof st[Ze]=="string";if(It){if(Object.keys($e.dynamic).length>0)return null;var Bt=$e.static,Ft=Object.keys(Bt);if(Ft.length>0&&typeof Bt[Ft[0]]=="number"){for(var Ut=[],zt=0;zt"+Gi+"?"+vt+".constant["+Gi+"]:0;"}).join(""),"}}else{","if(",Br,"(",vt,".buffer)){",gn,"=",Di,".createStream(",br,",",vt,".buffer);","}else{",gn,"=",Di,".getBuffer(",vt,".buffer);","}",tn,'="type" in ',vt,"?",_r.glTypes,"[",vt,".type]:",gn,".dtype;",ci.normalized,"=!!",vt,".normalized;");function Ei(Oi){Dt(ci[Oi],"=",vt,".",Oi,"|0;")}return Ei("size"),Ei("offset"),Ei("stride"),Ei("divisor"),Dt("}}"),Dt.exit("if(",ci.isStream,"){",Di,".destroyStream(",gn,");","}"),ci}Bt[Ft]=Bn(Ut,zt)}),Bt}function al(Ne){var $e=Ne.static,st=Ne.dynamic,It={};return Object.keys($e).forEach(function(Bt){var Ft=$e[Bt];It[Bt]=kn(function(Ut,zt){return typeof Ft=="number"||typeof Ft=="boolean"?""+Ft:Ut.link(Ft)})}),Object.keys(st).forEach(function(Bt){var Ft=st[Bt];It[Bt]=Bn(Ft,function(Ut,zt){return Ut.invoke(zt,Ft)})}),It}function Vl(Ne,$e,st,It,Bt){var Ft=Ne.static,Ut=Ne.dynamic,zt=is(Ne,$e),_t=sa(Ne,Bt),Dt=ba(Ne,_t,Bt),vt=Ga(Ne,Bt),lr=Ml(Ne,Bt),_r=Zs(Ne,Bt,zt);function Br(Ei){var Oi=Dt[Ei];Oi&&(lr[Ei]=Oi)}Br(ee),Br(Ji(Q));var Di=Object.keys(lr).length>0,ci={framebuffer:_t,draw:vt,shader:_r,state:lr,dirty:Di,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(ci.profile=ia(Ne,Bt),ci.uniforms=zo(st,Bt),ci.drawVAO=ci.scopeVAO=vt.vao,!ci.drawVAO&&_r.program&&!zt&&Ot.angle_instanced_arrays&&vt.static.elements){var bi=!0,gn=_r.program.attributes.map(function(Ei){var Oi=$e.static[Ei];return bi=bi&&!!Oi,Oi});if(bi&&gn.length>0){var tn=qi.getVAO(qi.createVAO({attributes:gn,elements:vt.static.elements}));ci.drawVAO=new Qr(null,null,null,function(Ei,Oi){return Ei.link(tn)}),ci.useVAO=!0}}return zt?ci.useVAO=!0:ci.attributes=Qs($e,Bt),ci.context=al(It,Bt),ci}function ss(Ne,$e,st){var It=Ne.shared,Bt=It.context,Ft=Ne.scope();Object.keys(st).forEach(function(Ut){$e.save(Bt,"."+Ut);var zt=st[Ut],_t=zt.append(Ne,$e);Array.isArray(_t)?Ft(Bt,".",Ut,"=[",_t.join(),"];"):Ft(Bt,".",Ut,"=",_t,";")}),$e(Ft)}function Vs(Ne,$e,st,It){var Bt=Ne.shared,Ft=Bt.gl,Ut=Bt.framebuffer,zt;ui&&(zt=$e.def(Bt.extensions,".webgl_draw_buffers"));var _t=Ne.constants,Dt=_t.drawBuffer,vt=_t.backBuffer,lr;st?lr=st.append(Ne,$e):lr=$e.def(Ut,".next"),It||$e("if(",lr,"!==",Ut,".cur){"),$e("if(",lr,"){",Ft,".bindFramebuffer(",zr,",",lr,".framebuffer);"),ui&&$e(zt,".drawBuffersWEBGL(",Dt,"[",lr,".colorAttachments.length]);"),$e("}else{",Ft,".bindFramebuffer(",zr,",null);"),ui&&$e(zt,".drawBuffersWEBGL(",vt,");"),$e("}",Ut,".cur=",lr,";"),It||$e("}")}function Ys(Ne,$e,st){var It=Ne.shared,Bt=It.gl,Ft=Ne.current,Ut=Ne.next,zt=It.current,_t=It.next,Dt=Ne.cond(zt,".dirty");fi.forEach(function(vt){var lr=Ji(vt);if(!(lr in st.state)){var _r,Br;if(lr in Ut){_r=Ut[lr],Br=Ft[lr];var Di=S(Xi[lr].length,function(bi){return Dt.def(_r,"[",bi,"]")});Dt(Ne.cond(Di.map(function(bi,gn){return bi+"!=="+Br+"["+gn+"]"}).join("||")).then(Bt,".",mn[lr],"(",Di,");",Di.map(function(bi,gn){return Br+"["+gn+"]="+bi}).join(";"),";"))}else{_r=Dt.def(_t,".",lr);var ci=Ne.cond(_r,"!==",zt,".",lr);Dt(ci),lr in si?ci(Ne.cond(_r).then(Bt,".enable(",si[lr],");").else(Bt,".disable(",si[lr],");"),zt,".",lr,"=",_r,";"):ci(Bt,".",mn[lr],"(",_r,");",zt,".",lr,"=",_r,";")}}}),Object.keys(st.state).length===0&&Dt(zt,".dirty=false;"),$e(Dt)}function wa(Ne,$e,st,It){var Bt=Ne.shared,Ft=Ne.current,Ut=Bt.current,zt=Bt.gl,_t;Ti(Object.keys(st)).forEach(function(Dt){var vt=st[Dt];if(!(It&&!It(vt))){var lr=vt.append(Ne,$e);if(si[Dt]){var _r=si[Dt];Pn(vt)?(_t=Ne.link(lr,{stable:!0}),$e(Ne.cond(_t).then(zt,".enable(",_r,");").else(zt,".disable(",_r,");")),$e(Ut,".",Dt,"=",_t,";")):($e(Ne.cond(lr).then(zt,".enable(",_r,");").else(zt,".disable(",_r,");")),$e(Ut,".",Dt,"=",lr,";"))}else if(En(lr)){var Br=Ft[Dt];$e(zt,".",mn[Dt],"(",lr,");",lr.map(function(Di,ci){return Br+"["+ci+"]="+Di}).join(";"),";")}else Pn(vt)?(_t=Ne.link(lr,{stable:!0}),$e(zt,".",mn[Dt],"(",_t,");",Ut,".",Dt,"=",_t,";")):$e(zt,".",mn[Dt],"(",lr,");",Ut,".",Dt,"=",lr,";")}})}function ol(Ne,$e){Ii&&(Ne.instancing=$e.def(Ne.shared.extensions,".angle_instanced_arrays"))}function io(Ne,$e,st,It,Bt){var Ft=Ne.shared,Ut=Ne.stats,zt=Ft.current,_t=Ft.timer,Dt=st.profile;function vt(){return typeof performance=="undefined"?"Date.now()":"performance.now()"}var lr,_r;function Br(Ei){lr=$e.def(),Ei(lr,"=",vt(),";"),typeof Bt=="string"?Ei(Ut,".count+=",Bt,";"):Ei(Ut,".count++;"),ji&&(It?(_r=$e.def(),Ei(_r,"=",_t,".getNumPendingQueries();")):Ei(_t,".beginQuery(",Ut,");"))}function Di(Ei){Ei(Ut,".cpuTime+=",vt(),"-",lr,";"),ji&&(It?Ei(_t,".pushScopeStats(",_r,",",_t,".getNumPendingQueries(),",Ut,");"):Ei(_t,".endQuery();"))}function ci(Ei){var Oi=$e.def(zt,".profile");$e(zt,".profile=",Ei,";"),$e.exit(zt,".profile=",Oi,";")}var bi;if(Dt){if(Pn(Dt)){Dt.enable?(Br($e),Di($e.exit),ci("true")):ci("false");return}bi=Dt.append(Ne,$e),ci(bi)}else bi=$e.def(zt,".profile");var gn=Ne.block();Br(gn),$e("if(",bi,"){",gn,"}");var tn=Ne.block();Di(tn),$e.exit("if(",bi,"){",tn,"}")}function Y(Ne,$e,st,It,Bt){var Ft=Ne.shared;function Ut(_t){switch(_t){case Co:case Ps:case hl:return 2;case Qa:case Ts:case Ul:return 3;case mo:case wo:case Lu:return 4;default:return 1}}function zt(_t,Dt,vt){var lr=Ft.gl,_r=$e.def(_t,".location"),Br=$e.def(Ft.attributes,"[",_r,"]"),Di=vt.state,ci=vt.buffer,bi=[vt.x,vt.y,vt.z,vt.w],gn=["buffer","normalized","offset","stride"];function tn(){$e("if(!",Br,".buffer){",lr,".enableVertexAttribArray(",_r,");}");var Oi=vt.type,Gi;if(vt.size?Gi=$e.def(vt.size,"||",Dt):Gi=Dt,$e("if(",Br,".type!==",Oi,"||",Br,".size!==",Gi,"||",gn.map(function(zn){return Br+"."+zn+"!=="+vt[zn]}).join("||"),"){",lr,".bindBuffer(",br,",",ci,".buffer);",lr,".vertexAttribPointer(",[_r,Gi,Oi,vt.normalized,vt.stride,vt.offset],");",Br,".type=",Oi,";",Br,".size=",Gi,";",gn.map(function(zn){return Br+"."+zn+"="+vt[zn]+";"}).join(""),"}"),Ii){var on=vt.divisor;$e("if(",Br,".divisor!==",on,"){",Ne.instancing,".vertexAttribDivisorANGLE(",[_r,on],");",Br,".divisor=",on,";}")}}function Ei(){$e("if(",Br,".buffer){",lr,".disableVertexAttribArray(",_r,");",Br,".buffer=null;","}if(",Ca.map(function(Oi,Gi){return Br+"."+Oi+"!=="+bi[Gi]}).join("||"),"){",lr,".vertexAttrib4f(",_r,",",bi,");",Ca.map(function(Oi,Gi){return Br+"."+Oi+"="+bi[Gi]+";"}).join(""),"}")}Di===La?tn():Di===Ua?Ei():($e("if(",Di,"===",La,"){"),tn(),$e("}else{"),Ei(),$e("}"))}It.forEach(function(_t){var Dt=_t.name,vt=st.attributes[Dt],lr;if(vt){if(!Bt(vt))return;lr=vt.append(Ne,$e)}else{if(!Bt(na))return;var _r=Ne.scopeAttrib(Dt);lr={},Object.keys(new Zr).forEach(function(Br){lr[Br]=$e.def(_r,".",Br)})}zt(Ne.link(_t),Ut(_t.info.type),lr)})}function D(Ne,$e,st,It,Bt,Ft){for(var Ut=Ne.shared,zt=Ut.gl,_t,Dt=0;Dt1){for(var co=[],ts=[],so=0;so>1)",ci],");")}function on(){st(bi,".drawArraysInstancedANGLE(",[_r,Br,Di,ci],");")}vt&&vt!=="null"?tn?Gi():(st("if(",vt,"){"),Gi(),st("}else{"),on(),st("}")):on()}function Oi(){function Gi(){st(Ft+".drawElements("+[_r,Di,gn,Br+"<<(("+gn+"-"+Ra+")>>1)"]+");")}function on(){st(Ft+".drawArrays("+[_r,Br,Di]+");")}vt&&vt!=="null"?tn?Gi():(st("if(",vt,"){"),Gi(),st("}else{"),on(),st("}")):on()}Ii&&(typeof ci!="number"||ci>=0)?typeof ci=="string"?(st("if(",ci,">0){"),Ei(),st("}else if(",ci,"<0){"),Oi(),st("}")):Ei():Oi()}function O(Ne,$e,st,It,Bt){var Ft=Cn(),Ut=Ft.proc("body",Bt);return Ii&&(Ft.instancing=Ut.def(Ft.shared.extensions,".angle_instanced_arrays")),Ne(Ft,Ut,st,It),Ft.compile().body}function K(Ne,$e,st,It){ol(Ne,$e),st.useVAO?st.drawVAO?$e(Ne.shared.vao,".setVAO(",st.drawVAO.append(Ne,$e),");"):$e(Ne.shared.vao,".setVAO(",Ne.shared.vao,".targetVAO);"):($e(Ne.shared.vao,".setVAO(null);"),Y(Ne,$e,st,It.attributes,function(){return!0})),D(Ne,$e,st,It.uniforms,function(){return!0},!1),J(Ne,$e,$e,st)}function de(Ne,$e){var st=Ne.proc("draw",1);ol(Ne,st),ss(Ne,st,$e.context),Vs(Ne,st,$e.framebuffer),Ys(Ne,st,$e),wa(Ne,st,$e.state),io(Ne,st,$e,!1,!0);var It=$e.shader.progVar.append(Ne,st);if(st(Ne.shared.gl,".useProgram(",It,".program);"),$e.shader.program)K(Ne,st,$e,$e.shader.program);else{st(Ne.shared.vao,".setVAO(null);");var Bt=Ne.global.def("{}"),Ft=st.def(It,".id"),Ut=st.def(Bt,"[",Ft,"]");st(Ne.cond(Ut).then(Ut,".call(this,a0);").else(Ut,"=",Bt,"[",Ft,"]=",Ne.link(function(zt){return O(K,Ne,$e,zt,1)}),"(",It,");",Ut,".call(this,a0);"))}Object.keys($e.state).length>0&&st(Ne.shared.current,".dirty=true;"),Ne.shared.vao&&st(Ne.shared.vao,".setVAO(null);")}function ne(Ne,$e,st,It){Ne.batchId="a1",ol(Ne,$e);function Bt(){return!0}Y(Ne,$e,st,It.attributes,Bt),D(Ne,$e,st,It.uniforms,Bt,!1),J(Ne,$e,$e,st)}function we(Ne,$e,st,It){ol(Ne,$e);var Bt=st.contextDep,Ft=$e.def(),Ut="a0",zt="a1",_t=$e.def();Ne.shared.props=_t,Ne.batchId=Ft;var Dt=Ne.scope(),vt=Ne.scope();$e(Dt.entry,"for(",Ft,"=0;",Ft,"<",zt,";++",Ft,"){",_t,"=",Ut,"[",Ft,"];",vt,"}",Dt.exit);function lr(gn){return gn.contextDep&&Bt||gn.propDep}function _r(gn){return!lr(gn)}if(st.needsContext&&ss(Ne,vt,st.context),st.needsFramebuffer&&Vs(Ne,vt,st.framebuffer),wa(Ne,vt,st.state,lr),st.profile&&lr(st.profile)&&io(Ne,vt,st,!1,!0),It)st.useVAO?st.drawVAO?lr(st.drawVAO)?vt(Ne.shared.vao,".setVAO(",st.drawVAO.append(Ne,vt),");"):Dt(Ne.shared.vao,".setVAO(",st.drawVAO.append(Ne,Dt),");"):Dt(Ne.shared.vao,".setVAO(",Ne.shared.vao,".targetVAO);"):(Dt(Ne.shared.vao,".setVAO(null);"),Y(Ne,Dt,st,It.attributes,_r),Y(Ne,vt,st,It.attributes,lr)),D(Ne,Dt,st,It.uniforms,_r,!1),D(Ne,vt,st,It.uniforms,lr,!0),J(Ne,Dt,vt,st);else{var Br=Ne.global.def("{}"),Di=st.shader.progVar.append(Ne,vt),ci=vt.def(Di,".id"),bi=vt.def(Br,"[",ci,"]");vt(Ne.shared.gl,".useProgram(",Di,".program);","if(!",bi,"){",bi,"=",Br,"[",ci,"]=",Ne.link(function(gn){return O(ne,Ne,st,gn,2)}),"(",Di,");}",bi,".call(this,a0[",Ft,"],",Ft,");")}}function Oe(Ne,$e){var st=Ne.proc("batch",2);Ne.batchId="0",ol(Ne,st);var It=!1,Bt=!0;Object.keys($e.context).forEach(function(Br){It=It||$e.context[Br].propDep}),It||(ss(Ne,st,$e.context),Bt=!1);var Ft=$e.framebuffer,Ut=!1;Ft?(Ft.propDep?It=Ut=!0:Ft.contextDep&&It&&(Ut=!0),Ut||Vs(Ne,st,Ft)):Vs(Ne,st,null),$e.state.viewport&&$e.state.viewport.propDep&&(It=!0);function zt(Br){return Br.contextDep&&It||Br.propDep}Ys(Ne,st,$e),wa(Ne,st,$e.state,function(Br){return!zt(Br)}),(!$e.profile||!zt($e.profile))&&io(Ne,st,$e,!1,"a1"),$e.contextDep=It,$e.needsContext=Bt,$e.needsFramebuffer=Ut;var _t=$e.shader.progVar;if(_t.contextDep&&It||_t.propDep)we(Ne,st,$e,null);else{var Dt=_t.append(Ne,st);if(st(Ne.shared.gl,".useProgram(",Dt,".program);"),$e.shader.program)we(Ne,st,$e,$e.shader.program);else{st(Ne.shared.vao,".setVAO(null);");var vt=Ne.global.def("{}"),lr=st.def(Dt,".id"),_r=st.def(vt,"[",lr,"]");st(Ne.cond(_r).then(_r,".call(this,a0,a1);").else(_r,"=",vt,"[",lr,"]=",Ne.link(function(Br){return O(we,Ne,$e,Br,2)}),"(",Dt,");",_r,".call(this,a0,a1);"))}}Object.keys($e.state).length>0&&st(Ne.shared.current,".dirty=true;"),Ne.shared.vao&&st(Ne.shared.vao,".setVAO(null);")}function ht(Ne,$e){var st=Ne.proc("scope",3);Ne.batchId="a2";var It=Ne.shared,Bt=It.current;if(ss(Ne,st,$e.context),$e.framebuffer&&$e.framebuffer.append(Ne,st),Ti(Object.keys($e.state)).forEach(function(zt){var _t=$e.state[zt],Dt=_t.append(Ne,st);En(Dt)?Dt.forEach(function(vt,lr){pn(vt)?st.set(Ne.next[zt],"["+lr+"]",vt):st.set(Ne.next[zt],"["+lr+"]",Ne.link(vt,{stable:!0}))}):Pn(_t)?st.set(It.next,"."+zt,Ne.link(Dt,{stable:!0})):st.set(It.next,"."+zt,Dt)}),io(Ne,st,$e,!0,!0),[Mt,yr,$t,Cr,Jt].forEach(function(zt){var _t=$e.draw[zt];if(_t){var Dt=_t.append(Ne,st);pn(Dt)?st.set(It.draw,"."+zt,Dt):st.set(It.draw,"."+zt,Ne.link(Dt),{stable:!0})}}),Object.keys($e.uniforms).forEach(function(zt){var _t=$e.uniforms[zt].append(Ne,st);Array.isArray(_t)&&(_t="["+_t.map(function(Dt){return pn(Dt)?Dt:Ne.link(Dt,{stable:!0})})+"]"),st.set(It.uniforms,"["+Ne.link(bt.id(zt),{stable:!0})+"]",_t)}),Object.keys($e.attributes).forEach(function(zt){var _t=$e.attributes[zt].append(Ne,st),Dt=Ne.scopeAttrib(zt);Object.keys(new Zr).forEach(function(vt){st.set(Dt,"."+vt,_t[vt])})}),$e.scopeVAO){var Ft=$e.scopeVAO.append(Ne,st);pn(Ft)?st.set(It.vao,".targetVAO",Ft):st.set(It.vao,".targetVAO",Ne.link(Ft,{stable:!0}))}function Ut(zt){var _t=$e.shader[zt];if(_t){var Dt=_t.append(Ne,st);pn(Dt)?st.set(It.shader,"."+zt,Dt):st.set(It.shader,"."+zt,Ne.link(Dt,{stable:!0}))}}Ut(Ze),Ut(ut),Object.keys($e.state).length>0&&(st(Bt,".dirty=true;"),st.exit(Bt,".dirty=true;")),st("a1(",Ne.shared.context,",a0,",Ne.batchId,");")}function Yt(Ne){if(!(typeof Ne!="object"||En(Ne))){for(var $e=Object.keys(Ne),st=0;st<$e.length;++st)if(h.isDynamic(Ne[$e[st]]))return!0;return!1}}function cr(Ne,$e,st){var It=$e.static[st];if(!It||!Yt(It))return;var Bt=Ne.global,Ft=Object.keys(It),Ut=!1,zt=!1,_t=!1,Dt=Ne.global.def("{}");Ft.forEach(function(lr){var _r=It[lr];if(h.isDynamic(_r)){typeof _r=="function"&&(_r=It[lr]=h.unbox(_r));var Br=Bn(_r,null);Ut=Ut||Br.thisDep,_t=_t||Br.propDep,zt=zt||Br.contextDep}else{switch(Bt(Dt,".",lr,"="),typeof _r){case"number":Bt(_r);break;case"string":Bt('"',_r,'"');break;case"object":Array.isArray(_r)&&Bt("[",_r.join(),"]");break;default:Bt(Ne.link(_r));break}Bt(";")}});function vt(lr,_r){Ft.forEach(function(Br){var Di=It[Br];if(h.isDynamic(Di)){var ci=lr.invoke(_r,Di);_r(Dt,".",Br,"=",ci,";")}})}$e.dynamic[st]=new h.DynamicVariable(Zo,{thisDep:Ut,contextDep:zt,propDep:_t,ref:Dt,append:vt}),delete $e.static[st]}function Nt(Ne,$e,st,It,Bt){var Ft=Cn();Ft.stats=Ft.link(Bt),Object.keys($e.static).forEach(function(zt){cr(Ft,$e,zt)}),fr.forEach(function(zt){cr(Ft,Ne,zt)});var Ut=Vl(Ne,$e,st,It,Ft);return Ut.shader.program&&(Ut.shader.program.attributes.sort(function(zt,_t){return zt.name<_t.name?-1:1}),Ut.shader.program.uniforms.sort(function(zt,_t){return zt.name<_t.name?-1:1})),de(Ft,Ut),ht(Ft,Ut),Oe(Ft,Ut),e(Ft.compile(),{destroy:function(){Ut.shader.program.destroy()}})}return{next:qn,current:Xi,procs:function(){var Ne=Cn(),$e=Ne.proc("poll"),st=Ne.proc("refresh"),It=Ne.block();$e(It),st(It);var Bt=Ne.shared,Ft=Bt.gl,Ut=Bt.next,zt=Bt.current;It(zt,".dirty=false;"),Vs(Ne,$e),Vs(Ne,st,null,!0);var _t;Ii&&(_t=Ne.link(Ii)),Ot.oes_vertex_array_object&&st(Ne.link(Ot.oes_vertex_array_object),".bindVertexArrayOES(null);");var Dt=st.def(Bt.attributes),vt=st.def(0),lr=Ne.cond(vt,".buffer");lr.then(Ft,".enableVertexAttribArray(i);",Ft,".bindBuffer(",br,",",vt,".buffer.buffer);",Ft,".vertexAttribPointer(i,",vt,".size,",vt,".type,",vt,".normalized,",vt,".stride,",vt,".offset);").else(Ft,".disableVertexAttribArray(i);",Ft,".vertexAttrib4f(i,",vt,".x,",vt,".y,",vt,".z,",vt,".w);",vt,".buffer=null;");var _r=Ne.link(Lr.maxAttributes,{stable:!0});return st("for(var i=0;i<",_r,";++i){",vt,"=",Dt,"[i];",lr,"}"),Ii&&st("for(var i=0;i<",_r,";++i){",_t,".vertexAttribDivisorANGLE(i,",Dt,"[i].divisor);","}"),st(Ne.shared.vao,".currentVAO=null;",Ne.shared.vao,".setVAO(",Ne.shared.vao,".targetVAO);"),Object.keys(si).forEach(function(Br){var Di=si[Br],ci=It.def(Ut,".",Br),bi=Ne.block();bi("if(",ci,"){",Ft,".enable(",Di,")}else{",Ft,".disable(",Di,")}",zt,".",Br,"=",ci,";"),st(bi),$e("if(",ci,"!==",zt,".",Br,"){",bi,"}")}),Object.keys(mn).forEach(function(Br){var Di=mn[Br],ci=Xi[Br],bi,gn,tn=Ne.block();if(tn(Ft,".",Di,"("),En(ci)){var Ei=ci.length;bi=Ne.global.def(Ut,".",Br),gn=Ne.global.def(zt,".",Br),tn(S(Ei,function(Oi){return bi+"["+Oi+"]"}),");",S(Ei,function(Oi){return gn+"["+Oi+"]="+bi+"["+Oi+"];"}).join("")),$e("if(",S(Ei,function(Oi){return bi+"["+Oi+"]!=="+gn+"["+Oi+"]"}).join("||"),"){",tn,"}")}else bi=It.def(Ut,".",Br),gn=It.def(zt,".",Br),tn(bi,");",zt,".",Br,"=",bi,";"),$e("if(",bi,"!==",gn,"){",tn,"}");st(tn)}),Ne.compile()}(),compile:Nt}}function Ia(){return{vaoCount:0,bufferCount:0,elementsCount:0,framebufferCount:0,shaderCount:0,textureCount:0,cubeCount:0,renderbufferCount:0,maxTextureUnits:0}}var yo=34918,Da=34919,go=35007,Is=function(Me,bt){if(!bt.ext_disjoint_timer_query)return null;var Ot=[];function Lr(){return Ot.pop()||bt.ext_disjoint_timer_query.createQueryEXT()}function Vr(yi){Ot.push(yi)}var Or=[];function Nr(yi){var Ii=Lr();bt.ext_disjoint_timer_query.beginQueryEXT(go,Ii),Or.push(Ii),ji(Or.length-1,Or.length,yi)}function vi(){bt.ext_disjoint_timer_query.endQueryEXT(go)}function Ni(){this.startQueryIndex=-1,this.endQueryIndex=-1,this.sum=0,this.stats=null}var qi=[];function Si(){return qi.pop()||new Ni}function Vn(yi){qi.push(yi)}var Qi=[];function ji(yi,Ii,ui){var nn=Si();nn.startQueryIndex=yi,nn.endQueryIndex=Ii,nn.sum=0,nn.stats=ui,Qi.push(nn)}var oi=[],Tr=[];function Zr(){var yi,Ii,ui=Or.length;if(ui!==0){Tr.length=Math.max(Tr.length,ui+1),oi.length=Math.max(oi.length,ui+1),oi[0]=0,Tr[0]=0;var nn=0;for(yi=0,Ii=0;Ii=0;--O){var K=Nn[O];K&&K(oi,null,0)}Ot.flush(),Si&&Si.update()}function ba(){!ia&&Nn.length>0&&(ia=d.next(sa))}function is(){ia&&(d.cancel(sa),ia=null)}function Zs(O){O.preventDefault(),Vr=!0,is(),aa.forEach(function(K){K()})}function Ga(O){Ot.getError(),Vr=!1,Or.restore(),qn.restore(),Ii.restore(),fi.restore(),si.restore(),mn.restore(),nn.restore(),Si&&Si.restore(),Ji.procs.refresh(),ba(),Ki.forEach(function(K){K()})}pn&&(pn.addEventListener(Fo,Zs,!1),pn.addEventListener(Uo,Ga,!1));function Ml(){Nn.length=0,is(),pn&&(pn.removeEventListener(Fo,Zs),pn.removeEventListener(Uo,Ga)),qn.clear(),mn.clear(),si.clear(),nn.clear(),fi.clear(),ui.clear(),Ii.clear(),Si&&Si.clear(),Cn.forEach(function(O){O()})}function zo(O){function K(Ft){var Ut=e({},Ft);delete Ut.uniforms,delete Ut.attributes,delete Ut.context,delete Ut.vao,"stencil"in Ut&&Ut.stencil.op&&(Ut.stencil.opBack=Ut.stencil.opFront=Ut.stencil.op,delete Ut.stencil.op);function zt(_t){if(_t in Ut){var Dt=Ut[_t];delete Ut[_t],Object.keys(Dt).forEach(function(vt){Ut[_t+"."+vt]=Dt[vt]})}}return zt("blend"),zt("depth"),zt("cull"),zt("stencil"),zt("polygonOffset"),zt("scissor"),zt("sample"),"vao"in Ft&&(Ut.vao=Ft.vao),Ut}function de(Ft,Ut){var zt={},_t={};return Object.keys(Ft).forEach(function(Dt){var vt=Ft[Dt];if(h.isDynamic(vt)){_t[Dt]=h.unbox(vt,Dt);return}else if(Ut&&Array.isArray(vt)){for(var lr=0;lr0)return Ne.call(this,It(Ft|0),Ft|0)}else if(Array.isArray(Ft)){if(Ft.length)return Ne.call(this,Ft,Ft.length)}else return Nt.call(this,Ft)}return e(Bt,{stats:Yt,destroy:function(){cr.destroy()}})}var Qs=mn.setFBO=zo({framebuffer:h.define.call(null,$s,"framebuffer")});function al(O,K){var de=0;Ji.procs.poll();var ne=K.color;ne&&(Ot.clearColor(+ne[0]||0,+ne[1]||0,+ne[2]||0,+ne[3]||0),de|=Ms),"depth"in K&&(Ot.clearDepth(+K.depth),de|=Xs),"stencil"in K&&(Ot.clearStencil(K.stencil|0),de|=Un),Ot.clear(de)}function Vl(O){if("framebuffer"in O)if(O.framebuffer&&O.framebuffer_reglType==="framebufferCube")for(var K=0;K<6;++K)Qs(e({framebuffer:O.framebuffer.faces[K]},O),al);else Qs(O,al);else al(null,O)}function ss(O){Nn.push(O);function K(){var de=dl(Nn,O);function ne(){var we=dl(Nn,ne);Nn[we]=Nn[Nn.length-1],Nn.length-=1,Nn.length<=0&&is()}Nn[de]=ne}return ba(),{cancel:K}}function Vs(){var O=Bi.viewport,K=Bi.scissor_box;O[0]=O[1]=K[0]=K[1]=0,oi.viewportWidth=oi.framebufferWidth=oi.drawingBufferWidth=O[2]=K[2]=Ot.drawingBufferWidth,oi.viewportHeight=oi.framebufferHeight=oi.drawingBufferHeight=O[3]=K[3]=Ot.drawingBufferHeight}function Ys(){oi.tick+=1,oi.time=ol(),Vs(),Ji.procs.poll()}function wa(){fi.refresh(),Vs(),Ji.procs.refresh(),Si&&Si.update()}function ol(){return(v()-Vn)/1e3}wa();function io(O,K){var de;switch(O){case"frame":return ss(K);case"lost":de=aa;break;case"restore":de=Ki;break;case"destroy":de=Cn;break;default:}return de.push(K),{cancel:function(){for(var ne=0;ne=0},read:Ui,destroy:Ml,_gl:Ot,_refresh:wa,poll:function(){Ys(),Si&&Si.update()},now:ol,stats:vi,getCachedCode:Y,preloadCachedCode:D});return bt.onDone(null,J),J}return Sc})});var eBe=ye((S_r,QOe)=>{"use strict";var SUt=ty();QOe.exports=function(t){if(t?typeof t=="string"&&(t={container:t}):t={},JOe(t)?t={container:t}:MUt(t)?t={container:t}:EUt(t)?t={gl:t}:t=SUt(t,{container:"container target element el canvas holder parent parentNode wrapper use ref root node",gl:"gl context webgl glContext",attrs:"attributes attrs contextAttributes",pixelRatio:"pixelRatio pxRatio px ratio pxratio pixelratio",width:"w width",height:"h height"},!0),t.pixelRatio||(t.pixelRatio=window.pixelRatio||1),t.gl)return t.gl;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if(typeof t.container=="string"){var r=document.querySelector(t.container);if(!r)throw Error("Element "+t.container+" is not found");t.container=r}JOe(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=$Oe(),t.container.appendChild(t.canvas),KOe(t))}else if(!t.canvas)if(typeof document!="undefined")t.container=document.body||document.documentElement,t.canvas=$Oe(),t.container.appendChild(t.canvas),KOe(t);else throw Error("Not DOM environment. Use headless-gl.");return t.gl||["webgl","experimental-webgl","webgl-experimental"].some(function(n){try{t.gl=t.canvas.getContext(n,t.attrs)}catch(i){}return t.gl}),t.gl};function KOe(e){if(e.container)if(e.container==document.body)document.body.style.width||(e.canvas.width=e.width||e.pixelRatio*window.innerWidth),document.body.style.height||(e.canvas.height=e.height||e.pixelRatio*window.innerHeight);else{var t=e.container.getBoundingClientRect();e.canvas.width=e.width||t.right-t.left,e.canvas.height=e.height||t.bottom-t.top}}function JOe(e){return typeof e.getContext=="function"&&"width"in e&&"height"in e}function MUt(e){return typeof e.nodeName=="string"&&typeof e.appendChild=="function"&&typeof e.getBoundingClientRect=="function"}function EUt(e){return typeof e.drawArrays=="function"||typeof e.drawElements=="function"}function $Oe(){var e=document.createElement("canvas");return e.style.position="absolute",e.style.top=0,e.style.left=0,e}});var rBe=ye((M_r,tBe)=>{"use strict";var kUt=lK(),CUt=[32,126];tBe.exports=LUt;function LUt(e){e=e||{};var t=e.shape?e.shape:e.canvas?[e.canvas.width,e.canvas.height]:[512,512],r=e.canvas||document.createElement("canvas"),n=e.font,i=typeof e.step=="number"?[e.step,e.step]:e.step||[32,32],a=e.chars||CUt;if(n&&typeof n!="string"&&(n=kUt(n)),!Array.isArray(a))a=String(a).split("");else if(a.length===2&&typeof a[0]=="number"&&typeof a[1]=="number"){for(var o=[],s=a[0],l=0;s<=a[1];s++)o[l++]=String.fromCharCode(s);a=o}t=t.slice(),r.width=t[0],r.height=t[1];var u=r.getContext("2d");u.fillStyle="#000",u.fillRect(0,0,r.width,r.height),u.font=n,u.textAlign="center",u.textBaseline="middle",u.fillStyle="#fff";for(var c=i[0]/2,f=i[1]/2,s=0;st[0]-i[0]/2&&(c=i[0]/2,f+=i[1]);return r}});var hK=ye(Vh=>{"use strict";"use restrict";var fK=32;Vh.INT_BITS=fK;Vh.INT_MAX=2147483647;Vh.INT_MIN=-1<0)-(e<0)};Vh.abs=function(e){var t=e>>fK-1;return(e^t)-t};Vh.min=function(e,t){return t^(e^t)&-(e65535)<<4,e>>>=t,r=(e>255)<<3,e>>>=r,t|=r,r=(e>15)<<2,e>>>=r,t|=r,r=(e>3)<<1,e>>>=r,t|=r,t|e>>1};Vh.log10=function(e){return e>=1e9?9:e>=1e8?8:e>=1e7?7:e>=1e6?6:e>=1e5?5:e>=1e4?4:e>=1e3?3:e>=100?2:e>=10?1:0};Vh.popCount=function(e){return e=e-(e>>>1&1431655765),e=(e&858993459)+(e>>>2&858993459),(e+(e>>>4)&252645135)*16843009>>>24};function iBe(e){var t=32;return e&=-e,e&&t--,e&65535&&(t-=16),e&16711935&&(t-=8),e&252645135&&(t-=4),e&858993459&&(t-=2),e&1431655765&&(t-=1),t}Vh.countTrailingZeros=iBe;Vh.nextPow2=function(e){return e+=e===0,--e,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e+1};Vh.prevPow2=function(e){return e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e-(e>>>1)};Vh.parity=function(e){return e^=e>>>16,e^=e>>>8,e^=e>>>4,e&=15,27030>>>e&1};var Fk=new Array(256);(function(e){for(var t=0;t<256;++t){var r=t,n=t,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=r&1,--i;e[t]=n<>>8&255]<<16|Fk[e>>>16&255]<<8|Fk[e>>>24&255]};Vh.interleave2=function(e,t){return e&=65535,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t&=65535,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1};Vh.deinterleave2=function(e,t){return e=e>>>t&1431655765,e=(e|e>>>1)&858993459,e=(e|e>>>2)&252645135,e=(e|e>>>4)&16711935,e=(e|e>>>16)&65535,e<<16>>16};Vh.interleave3=function(e,t,r){return e&=1023,e=(e|e<<16)&4278190335,e=(e|e<<8)&251719695,e=(e|e<<4)&3272356035,e=(e|e<<2)&1227133513,t&=1023,t=(t|t<<16)&4278190335,t=(t|t<<8)&251719695,t=(t|t<<4)&3272356035,t=(t|t<<2)&1227133513,e|=t<<1,r&=1023,r=(r|r<<16)&4278190335,r=(r|r<<8)&251719695,r=(r|r<<4)&3272356035,r=(r|r<<2)&1227133513,e|r<<2};Vh.deinterleave3=function(e,t){return e=e>>>t&1227133513,e=(e|e>>>2)&3272356035,e=(e|e>>>4)&251719695,e=(e|e>>>8)&4278190335,e=(e|e>>>16)&1023,e<<22>>22};Vh.nextCombination=function(e){var t=e|e-1;return t+1|(~t&-~t)-1>>>iBe(e)+1}});var oBe=ye((k_r,aBe)=>{"use strict";function nBe(e,t,r){var n=e[r]|0;if(n<=0)return[];var i=new Array(n),a;if(r===e.length-1)for(a=0;a0)return PUt(e|0,t);break;case"object":if(typeof e.length=="number")return nBe(e,t,0);break}return[]}aBe.exports=IUt});var bBe=ye(mu=>{"use strict";var bx=hK(),Ev=oBe(),sBe=b2().Buffer;window.__TYPEDARRAY_POOL||(window.__TYPEDARRAY_POOL={UINT8:Ev([32,0]),UINT16:Ev([32,0]),UINT32:Ev([32,0]),BIGUINT64:Ev([32,0]),INT8:Ev([32,0]),INT16:Ev([32,0]),INT32:Ev([32,0]),BIGINT64:Ev([32,0]),FLOAT:Ev([32,0]),DOUBLE:Ev([32,0]),DATA:Ev([32,0]),UINT8C:Ev([32,0]),BUFFER:Ev([32,0])});var RUt=typeof Uint8ClampedArray!="undefined",DUt=typeof BigUint64Array!="undefined",FUt=typeof BigInt64Array!="undefined",ad=window.__TYPEDARRAY_POOL;ad.UINT8C||(ad.UINT8C=Ev([32,0]));ad.BIGUINT64||(ad.BIGUINT64=Ev([32,0]));ad.BIGINT64||(ad.BIGINT64=Ev([32,0]));ad.BUFFER||(ad.BUFFER=Ev([32,0]));var Sz=ad.DATA,Mz=ad.BUFFER;mu.free=function(t){if(sBe.isBuffer(t))Mz[bx.log2(t.length)].push(t);else{if(Object.prototype.toString.call(t)!=="[object ArrayBuffer]"&&(t=t.buffer),!t)return;var r=t.length||t.byteLength,n=bx.log2(r)|0;Sz[n].push(t)}};function lBe(e){if(e){var t=e.length||e.byteLength,r=bx.log2(t);Sz[r].push(e)}}function zUt(e){lBe(e.buffer)}mu.freeUint8=mu.freeUint16=mu.freeUint32=mu.freeBigUint64=mu.freeInt8=mu.freeInt16=mu.freeInt32=mu.freeBigInt64=mu.freeFloat32=mu.freeFloat=mu.freeFloat64=mu.freeDouble=mu.freeUint8Clamped=mu.freeDataView=zUt;mu.freeArrayBuffer=lBe;mu.freeBuffer=function(t){Mz[bx.log2(t.length)].push(t)};mu.malloc=function(t,r){if(r===void 0||r==="arraybuffer")return Bp(t);switch(r){case"uint8":return dK(t);case"uint16":return uBe(t);case"uint32":return cBe(t);case"int8":return fBe(t);case"int16":return hBe(t);case"int32":return dBe(t);case"float":case"float32":return vBe(t);case"double":case"float64":return pBe(t);case"uint8_clamped":return gBe(t);case"bigint64":return yBe(t);case"biguint64":return mBe(t);case"buffer":return xBe(t);case"data":case"dataview":return _Be(t);default:return null}return null};function Bp(t){var t=bx.nextPow2(t),r=bx.log2(t),n=Sz[r];return n.length>0?n.pop():new ArrayBuffer(t)}mu.mallocArrayBuffer=Bp;function dK(e){return new Uint8Array(Bp(e),0,e)}mu.mallocUint8=dK;function uBe(e){return new Uint16Array(Bp(2*e),0,e)}mu.mallocUint16=uBe;function cBe(e){return new Uint32Array(Bp(4*e),0,e)}mu.mallocUint32=cBe;function fBe(e){return new Int8Array(Bp(e),0,e)}mu.mallocInt8=fBe;function hBe(e){return new Int16Array(Bp(2*e),0,e)}mu.mallocInt16=hBe;function dBe(e){return new Int32Array(Bp(4*e),0,e)}mu.mallocInt32=dBe;function vBe(e){return new Float32Array(Bp(4*e),0,e)}mu.mallocFloat32=mu.mallocFloat=vBe;function pBe(e){return new Float64Array(Bp(8*e),0,e)}mu.mallocFloat64=mu.mallocDouble=pBe;function gBe(e){return RUt?new Uint8ClampedArray(Bp(e),0,e):dK(e)}mu.mallocUint8Clamped=gBe;function mBe(e){return DUt?new BigUint64Array(Bp(8*e),0,e):null}mu.mallocBigUint64=mBe;function yBe(e){return FUt?new BigInt64Array(Bp(8*e),0,e):null}mu.mallocBigInt64=yBe;function _Be(e){return new DataView(Bp(e),0,e)}mu.mallocDataView=_Be;function xBe(e){e=bx.nextPow2(e);var t=bx.log2(e),r=Mz[t];return r.length>0?r.pop():new sBe(e)}mu.mallocBuffer=xBe;mu.clearCache=function(){for(var t=0;t<32;++t)ad.UINT8[t].length=0,ad.UINT16[t].length=0,ad.UINT32[t].length=0,ad.INT8[t].length=0,ad.INT16[t].length=0,ad.INT32[t].length=0,ad.FLOAT[t].length=0,ad.DOUBLE[t].length=0,ad.BIGUINT64[t].length=0,ad.BIGINT64[t].length=0,ad.UINT8C[t].length=0,Sz[t].length=0,Mz[t].length=0}});var TBe=ye((L_r,wBe)=>{"use strict";var qUt=Object.prototype.toString;wBe.exports=function(e){var t;return qUt.call(e)==="[object Object]"&&(t=Object.getPrototypeOf(e),t===null||t===Object.getPrototypeOf({}))}});var vK=ye((P_r,ABe)=>{ABe.exports=function(t,r){r||(r=[0,""]),t=String(t);var n=parseFloat(t,10);return r[0]=n,r[1]=t.match(/[\d.\-\+]*\s*(.*)/)[1]||"",r}});var EBe=ye((I_r,MBe)=>{"use strict";var OUt=vK();MBe.exports=SBe;var zk=96;function pK(e,t){var r=OUt(getComputedStyle(e).getPropertyValue(t));return r[0]*SBe(r[1],e)}function BUt(e,t){var r=document.createElement("div");r.style["font-size"]="128"+e,t.appendChild(r);var n=pK(r,"font-size")/128;return t.removeChild(r),n}function SBe(e,t){switch(t=t||document.body,e=(e||"px").trim().toLowerCase(),(t===window||t===document)&&(t=document.body),e){case"%":return t.clientHeight/100;case"ch":case"ex":return BUt(e,t);case"em":return pK(t,"font-size");case"rem":return pK(document.body,"font-size");case"vw":return window.innerWidth/100;case"vh":return window.innerHeight/100;case"vmin":return Math.min(window.innerWidth,window.innerHeight)/100;case"vmax":return Math.max(window.innerWidth,window.innerHeight)/100;case"in":return zk;case"cm":return zk/2.54;case"mm":return zk/25.4;case"pt":return zk/72;case"pc":return zk/6}return 1}});var LBe=ye((R_r,CBe)=>{"use strict";CBe.exports=Cz;var NUt=Cz.canvas=document.createElement("canvas"),Ez=NUt.getContext("2d"),kBe=kz([32,126]);Cz.createPairs=kz;Cz.ascii=kBe;function Cz(e,t){Array.isArray(e)&&(e=e.join(", "));var r={},n,i=16,a=.05;t&&(t.length===2&&typeof t[0]=="number"?n=kz(t):Array.isArray(t)?n=t:(t.o?n=kz(t.o):t.pairs&&(n=t.pairs),t.fontSize&&(i=t.fontSize),t.threshold!=null&&(a=t.threshold))),n||(n=kBe),Ez.font=i+"px "+e;for(var o=0;oi*a){var c=(u-l)/i;r[s]=c*1e3}}return r}function kz(e){for(var t=[],r=e[0];r<=e[1];r++)for(var n=String.fromCharCode(r),i=e[0];i{"use strict";RBe.exports=wx;wx.canvas=document.createElement("canvas");wx.cache={};function wx(o,t){t||(t={}),(typeof o=="string"||Array.isArray(o))&&(t.family=o);var r=Array.isArray(t.family)?t.family.join(", "):t.family;if(!r)throw Error("`family` must be defined");var n=t.size||t.fontSize||t.em||48,i=t.weight||t.fontWeight||"",a=t.style||t.fontStyle||"",o=[a,i,n].join(" ")+"px "+r,s=t.origin||"top";if(wx.cache[r]&&n<=wx.cache[r].em)return PBe(wx.cache[r],s);var l=t.canvas||wx.canvas,u=l.getContext("2d"),c={upper:t.upper!==void 0?t.upper:"H",lower:t.lower!==void 0?t.lower:"x",descent:t.descent!==void 0?t.descent:"p",ascent:t.ascent!==void 0?t.ascent:"h",tittle:t.tittle!==void 0?t.tittle:"i",overshoot:t.overshoot!==void 0?t.overshoot:"O"},f=Math.ceil(n*1.5);l.height=f,l.width=f*.5,u.font=o;var h="H",d={top:0};u.clearRect(0,0,f,f),u.textBaseline="top",u.fillStyle="black",u.fillText(h,0,0);var v=iy(u.getImageData(0,0,f,f));u.clearRect(0,0,f,f),u.textBaseline="bottom",u.fillText(h,0,f);var m=iy(u.getImageData(0,0,f,f));d.lineHeight=d.bottom=f-m+v,u.clearRect(0,0,f,f),u.textBaseline="alphabetic",u.fillText(h,0,f);var b=iy(u.getImageData(0,0,f,f)),p=f-b-1+v;d.baseline=d.alphabetic=p,u.clearRect(0,0,f,f),u.textBaseline="middle",u.fillText(h,0,f*.5);var k=iy(u.getImageData(0,0,f,f));d.median=d.middle=f-k-1+v-f*.5,u.clearRect(0,0,f,f),u.textBaseline="hanging",u.fillText(h,0,f*.5);var M=iy(u.getImageData(0,0,f,f));d.hanging=f-M-1+v-f*.5,u.clearRect(0,0,f,f),u.textBaseline="ideographic",u.fillText(h,0,f);var T=iy(u.getImageData(0,0,f,f));if(d.ideographic=f-T-1+v,c.upper&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.upper,0,0),d.upper=iy(u.getImageData(0,0,f,f)),d.capHeight=d.baseline-d.upper),c.lower&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.lower,0,0),d.lower=iy(u.getImageData(0,0,f,f)),d.xHeight=d.baseline-d.lower),c.tittle&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.tittle,0,0),d.tittle=iy(u.getImageData(0,0,f,f))),c.ascent&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.ascent,0,0),d.ascent=iy(u.getImageData(0,0,f,f))),c.descent&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.descent,0,0),d.descent=IBe(u.getImageData(0,0,f,f))),c.overshoot){u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.overshoot,0,0);var L=IBe(u.getImageData(0,0,f,f));d.overshoot=L-p}for(var x in d)d[x]/=n;return d.em=n,wx.cache[r]=d,PBe(d,s)}function PBe(e,t){var r={};typeof t=="string"&&(t=e[t]);for(var n in e)n!=="em"&&(r[n]=e[n]-t);return r}function iy(e){for(var t=e.height,r=e.data,n=3;n0;n-=4)if(r[n]!==0)return Math.floor((n-3)*.25/t)}});var OBe=ye((F_r,qBe)=>{"use strict";var x5=ZOe(),UUt=ty(),VUt=YOe(),GUt=eBe(),HUt=ZY(),gK=sx(),jUt=rBe(),Tx=bBe(),WUt=l5(),XUt=TBe(),ZUt=vK(),YUt=EBe(),KUt=LBe(),JUt=Nh(),$Ut=DBe(),QUt=aw(),eVt=hK(),FBe=eVt.nextPow2,zBe=new HUt,Pz=!1;document.body&&(Lz=document.body.appendChild(document.createElement("div")),Lz.style.font="italic small-caps bold condensed 16px/2 cursive",getComputedStyle(Lz).fontStretch&&(Pz=!0),document.body.removeChild(Lz));var Lz,xc=function(t){tVt(t)?(t={regl:t},this.gl=t.regl._gl):this.gl=GUt(t),this.shader=zBe.get(this.gl),this.shader?this.regl=this.shader.regl:this.regl=t.regl||VUt({gl:this.gl}),this.charBuffer=this.regl.buffer({type:"uint8",usage:"stream"}),this.sizeBuffer=this.regl.buffer({type:"float",usage:"stream"}),this.shader||(this.shader=this.createShader(),zBe.set(this.gl,this.shader)),this.batch=[],this.fontSize=[],this.font=[],this.fontAtlas=[],this.draw=this.shader.draw.bind(this),this.render=function(){this.regl._refresh(),this.draw(this.batch)},this.canvas=this.gl.canvas,this.update(XUt(t)?t:{})};xc.prototype.createShader=function(){var t=this.regl,r=t({blend:{enable:!0,color:[0,0,0,1],func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},stencil:{enable:!1},depth:{enable:!1},count:t.prop("count"),offset:t.prop("offset"),attributes:{charOffset:{offset:4,stride:8,buffer:t.this("sizeBuffer")},width:{offset:0,stride:8,buffer:t.this("sizeBuffer")},char:t.this("charBuffer"),position:t.this("position")},uniforms:{atlasSize:function(i,a){return[a.atlas.width,a.atlas.height]},atlasDim:function(i,a){return[a.atlas.cols,a.atlas.rows]},atlas:function(i,a){return a.atlas.texture},charStep:function(i,a){return a.atlas.step},em:function(i,a){return a.atlas.em},color:t.prop("color"),opacity:t.prop("opacity"),viewport:t.this("viewportArray"),scale:t.this("scale"),align:t.prop("align"),baseline:t.prop("baseline"),translate:t.this("translate"),positionOffset:t.prop("positionOffset")},primitive:"points",viewport:t.this("viewport"),vert:` + precision highp float; + attribute float width, charOffset, char; + attribute vec2 position; + uniform float fontSize, charStep, em, align, baseline; + uniform vec4 viewport; + uniform vec4 color; + uniform vec2 atlasSize, atlasDim, scale, translate, positionOffset; + varying vec2 charCoord, charId; + varying float charWidth; + varying vec4 fontColor; + void main () { + vec2 offset = floor(em * (vec2(align + charOffset, baseline) + + vec2(positionOffset.x, -positionOffset.y))) + / (viewport.zw * scale.xy); + + vec2 position = (position + translate) * scale; + position += offset * scale; + + charCoord = position * viewport.zw + viewport.xy; + + gl_Position = vec4(position * 2. - 1., 0, 1); + + gl_PointSize = charStep; + + charId.x = mod(char, atlasDim.x); + charId.y = floor(char / atlasDim.x); + + charWidth = width * em; + + fontColor = color / 255.; + }`,frag:` + precision highp float; + uniform float fontSize, charStep, opacity; + uniform vec2 atlasSize; + uniform vec4 viewport; + uniform sampler2D atlas; + varying vec4 fontColor; + varying vec2 charCoord, charId; + varying float charWidth; + + float lightness(vec4 color) { + return color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + } + + void main () { + vec2 uv = gl_FragCoord.xy - charCoord + charStep * .5; + float halfCharStep = floor(charStep * .5 + .5); + + // invert y and shift by 1px (FF expecially needs that) + uv.y = charStep - uv.y; + + // ignore points outside of character bounding box + float halfCharWidth = ceil(charWidth * .5); + if (floor(uv.x) > halfCharStep + halfCharWidth || + floor(uv.x) < halfCharStep - halfCharWidth) return; + + uv += charId * charStep; + uv = uv / atlasSize; + + vec4 color = fontColor; + vec4 mask = texture2D(atlas, uv); + + float maskY = lightness(mask); + // float colorY = lightness(color); + color.a *= maskY; + color.a *= opacity; + + // color.a += .1; + + // antialiasing, see yiq color space y-channel formula + // color.rgb += (1. - color.rgb) * (1. - mask.rgb); + + gl_FragColor = color; + }`}),n={};return{regl:t,draw:r,atlas:n}};xc.prototype.update=function(t){var r=this;if(typeof t=="string")t={text:t};else if(!t)return;t=UUt(t,{position:"position positions coord coords coordinates",font:"font fontFace fontface typeface cssFont css-font family fontFamily",fontSize:"fontSize fontsize size font-size",text:"text texts chars characters value values symbols",align:"align alignment textAlign textbaseline",baseline:"baseline textBaseline textbaseline",direction:"dir direction textDirection",color:"color colour fill fill-color fillColor textColor textcolor",kerning:"kerning kern",range:"range dataBox",viewport:"vp viewport viewBox viewbox viewPort",opacity:"opacity alpha transparency visible visibility opaque",offset:"offset positionOffset padding shift indent indentation"},!0),t.opacity!=null&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map(function(Ce){return parseFloat(Ce)}):this.opacity=parseFloat(t.opacity)),t.viewport!=null&&(this.viewport=WUt(t.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),this.viewport==null&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),t.kerning!=null&&(this.kerning=t.kerning),t.offset!=null&&(typeof t.offset=="number"&&(t.offset=[t.offset,0]),this.positionOffset=QUt(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),!this.font.length&&!t.font&&(t.font=xc.baseFontSize+"px sans-serif");var n=!1,i=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach(function(Ce,ge){if(typeof Ce=="string")try{Ce=x5.parse(Ce)}catch(He){Ce=x5.parse(xc.baseFontSize+"px "+Ce)}else{var re=Ce.style,Se=Ce.weight,ke=Ce.stretch,be=Ce.variant;Ce=x5.parse(x5.stringify(Ce)),re&&(Ce.style=re),Se&&(Ce.weight=Se),ke&&(Ce.stretch=ke),be&&(Ce.variant=be)}var Be=x5.stringify({size:xc.baseFontSize,family:Ce.family,stretch:Pz?Ce.stretch:void 0,variant:Ce.variant,weight:Ce.weight,style:Ce.style}),Le=ZUt(Ce.size),me=Math.round(Le[0]*YUt(Le[1]));if(me!==r.fontSize[ge]&&(i=!0,r.fontSize[ge]=me),(!r.font[ge]||Be!=r.font[ge].baseString)&&(n=!0,r.font[ge]=xc.fonts[Be],!r.font[ge])){var Pe=Ce.family.join(", "),ce=[Ce.style];Ce.style!=Ce.variant&&ce.push(Ce.variant),Ce.variant!=Ce.weight&&ce.push(Ce.weight),Pz&&Ce.weight!=Ce.stretch&&ce.push(Ce.stretch),r.font[ge]={baseString:Be,family:Pe,weight:Ce.weight,stretch:Ce.stretch,style:Ce.style,variant:Ce.variant,width:{},kerning:{},metrics:$Ut(Pe,{origin:"top",fontSize:xc.baseFontSize,fontStyle:ce.join(" ")})},xc.fonts[Be]=r.font[ge]}}),(n||i)&&this.font.forEach(function(Ce,ge){var re=x5.stringify({size:r.fontSize[ge],family:Ce.family,stretch:Pz?Ce.stretch:void 0,variant:Ce.variant,weight:Ce.weight,style:Ce.style});if(r.fontAtlas[ge]=r.shader.atlas[re],!r.fontAtlas[ge]){var Se=Ce.metrics;r.shader.atlas[re]=r.fontAtlas[ge]={fontString:re,step:Math.ceil(r.fontSize[ge]*Se.bottom*.5)*2,em:r.fontSize[ge],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:r.regl.texture()}}t.text==null&&(t.text=r.text)}),typeof t.text=="string"&&t.position&&t.position.length>2){for(var a=Array(t.position.length*.5),o=0;o2){for(var u=!t.position[0].length,c=Tx.mallocFloat(this.count*2),f=0,h=0;f1?r.align[ge]:r.align[0]:r.align;if(typeof re=="number")return re;switch(re){case"right":case"end":return-Ce;case"center":case"centre":case"middle":return-Ce*.5}return 0})),this.baseline==null&&t.baseline==null&&(t.baseline=0),t.baseline!=null&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map(function(Ce,ge){var re=(r.font[ge]||r.font[0]).metrics,Se=0;return Se+=re.bottom*.5,typeof Ce=="number"?Se+=Ce-re.baseline:Se+=-re[Ce],Se*=-1,Se})),t.color!=null)if(t.color||(t.color="transparent"),typeof t.color=="string"||!isNaN(t.color))this.color=gK(t.color,"uint8");else{var G;if(typeof t.color[0]=="number"&&t.color.length>this.counts.length){var Z=t.color.length;G=Tx.mallocUint8(Z);for(var j=(t.color.subarray||t.color.slice).bind(t.color),N=0;N4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2;if(ae){var _e=Math.max(this.position.length*.5||0,this.color.length*.25||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,this.positionOffset.length*.5||0);this.batch=Array(_e);for(var Ee=0;Ee1?this.counts[Ee]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[Ee]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(Ee*4,Ee*4+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[Ee]:this.opacity,baseline:this.baselineOffset[Ee]!=null?this.baselineOffset[Ee]:this.baselineOffset[0],align:this.align?this.alignOffset[Ee]!=null?this.alignOffset[Ee]:this.alignOffset[0]:0,atlas:this.fontAtlas[Ee]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(Ee*2,Ee*2+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]}};xc.prototype.destroy=function(){};xc.prototype.kerning=!0;xc.prototype.position={constant:new Float32Array(2)};xc.prototype.translate=null;xc.prototype.scale=null;xc.prototype.font=null;xc.prototype.text="";xc.prototype.positionOffset=[0,0];xc.prototype.opacity=1;xc.prototype.color=new Uint8Array([0,0,0,255]);xc.prototype.alignOffset=[0,0];xc.maxAtlasSize=1024;xc.atlasCanvas=document.createElement("canvas");xc.atlasContext=xc.atlasCanvas.getContext("2d",{alpha:!1});xc.baseFontSize=64;xc.fonts={};function tVt(e){return typeof e=="function"&&e._gl&&e.prop&&e.texture&&e.buffer}qBe.exports=xc});var BBe=ye((mK,yK)=>{(function(e,t){typeof mK=="object"&&typeof yK!="undefined"?yK.exports=t():e.createREGL=t()})(mK,function(){"use strict";var e=function(Me,bt){for(var Ot=Object.keys(bt),Lr=0;Lr1&&bt===Ot&&(bt==='"'||bt==="'"))return['"'+o(Me.substr(1,Me.length-2))+'"'];var Lr=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(Me);if(Lr)return s(Me.substr(0,Lr.index)).concat(s(Lr[1])).concat(s(Me.substr(Lr.index+Lr[0].length)));var Vr=Me.split(".");if(Vr.length===1)return['"'+o(Me)+'"'];for(var Or=[],Nr=0;Nr65535)<<4,Me>>>=bt,Ot=(Me>255)<<3,Me>>>=Ot,bt|=Ot,Ot=(Me>15)<<2,Me>>>=Ot,bt|=Ot,Ot=(Me>3)<<1,Me>>>=Ot,bt|=Ot,bt|Me>>1}function N(){var Me=S(8,function(){return[]});function bt(Or){var Nr=Z(Or),vi=Me[j(Nr)>>2];return vi.length>0?vi.pop():new ArrayBuffer(Nr)}function Ot(Or){Me[j(Or.byteLength)>>2].push(Or)}function Lr(Or,Nr){var vi=null;switch(Or){case g:vi=new Int8Array(bt(Nr),0,Nr);break;case P:vi=new Uint8Array(bt(Nr),0,Nr);break;case E:vi=new Int16Array(bt(2*Nr),0,Nr);break;case z:vi=new Uint16Array(bt(2*Nr),0,Nr);break;case q:vi=new Int32Array(bt(4*Nr),0,Nr);break;case V:vi=new Uint32Array(bt(4*Nr),0,Nr);break;case G:vi=new Float32Array(bt(4*Nr),0,Nr);break;default:return null}return vi.length!==Nr?vi.subarray(0,Nr):vi}function Vr(Or){Ot(Or.buffer)}return{alloc:bt,free:Ot,allocType:Lr,freeType:Vr}}var H=N();H.zero=N();var ie=3408,ae=3410,_e=3411,Ee=3412,Ce=3413,ge=3414,re=3415,Se=33901,ke=33902,be=3379,Be=3386,Le=34921,me=36347,Pe=36348,ce=35661,He=35660,lt=34930,mt=36349,Ht=34076,at=34024,ct=7936,ar=7937,Vt=7938,rr=35724,tt=34047,je=36063,Ue=34852,Ae=3553,rt=34067,St=34069,Tt=33984,dt=6408,Et=5126,pt=5121,jt=36160,or=36053,mr=36064,Ar=16384,ei=function(Me,bt){var Ot=1;bt.ext_texture_filter_anisotropic&&(Ot=Me.getParameter(tt));var Lr=1,Vr=1;bt.webgl_draw_buffers&&(Lr=Me.getParameter(Ue),Vr=Me.getParameter(je));var Or=!!bt.oes_texture_float;if(Or){var Nr=Me.createTexture();Me.bindTexture(Ae,Nr),Me.texImage2D(Ae,0,dt,1,1,0,dt,Et,null);var vi=Me.createFramebuffer();if(Me.bindFramebuffer(jt,vi),Me.framebufferTexture2D(jt,mr,Ae,Nr,0),Me.bindTexture(Ae,null),Me.checkFramebufferStatus(jt)!==or)Or=!1;else{Me.viewport(0,0,1,1),Me.clearColor(1,0,0,1),Me.clear(Ar);var Ni=H.allocType(Et,4);Me.readPixels(0,0,1,1,dt,Et,Ni),Me.getError()?Or=!1:(Me.deleteFramebuffer(vi),Me.deleteTexture(Nr),Or=Ni[0]===1),H.freeType(Ni)}}var qi=typeof navigator!="undefined"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent)),Si=!0;if(!qi){var Vn=Me.createTexture(),Qi=H.allocType(pt,36);Me.activeTexture(Tt),Me.bindTexture(rt,Vn),Me.texImage2D(St,0,dt,3,3,0,dt,pt,Qi),H.freeType(Qi),Me.bindTexture(rt,null),Me.deleteTexture(Vn),Si=!Me.getError()}return{colorBits:[Me.getParameter(ae),Me.getParameter(_e),Me.getParameter(Ee),Me.getParameter(Ce)],depthBits:Me.getParameter(ge),stencilBits:Me.getParameter(re),subpixelBits:Me.getParameter(ie),extensions:Object.keys(bt).filter(function(ji){return!!bt[ji]}),maxAnisotropic:Ot,maxDrawbuffers:Lr,maxColorAttachments:Vr,pointSizeDims:Me.getParameter(Se),lineWidthDims:Me.getParameter(ke),maxViewportDims:Me.getParameter(Be),maxCombinedTextureUnits:Me.getParameter(ce),maxCubeMapSize:Me.getParameter(Ht),maxRenderbufferSize:Me.getParameter(at),maxTextureUnits:Me.getParameter(lt),maxTextureSize:Me.getParameter(be),maxAttributes:Me.getParameter(Le),maxVertexUniforms:Me.getParameter(me),maxVertexTextureUnits:Me.getParameter(He),maxVaryingVectors:Me.getParameter(Pe),maxFragmentUniforms:Me.getParameter(mt),glsl:Me.getParameter(rr),renderer:Me.getParameter(ar),vendor:Me.getParameter(ct),version:Me.getParameter(Vt),readFloat:Or,npotTextureCube:Si}},qr=function(Me){return Me instanceof Uint8Array||Me instanceof Uint16Array||Me instanceof Uint32Array||Me instanceof Int8Array||Me instanceof Int16Array||Me instanceof Int32Array||Me instanceof Float32Array||Me instanceof Float64Array||Me instanceof Uint8ClampedArray};function jr(Me){return!!Me&&typeof Me=="object"&&Array.isArray(Me.shape)&&Array.isArray(Me.stride)&&typeof Me.offset=="number"&&Me.shape.length===Me.stride.length&&(Array.isArray(Me.data)||qr(Me.data))}var gt=function(Me){return Object.keys(Me).map(function(bt){return Me[bt]})},Ge={shape:Kt,flatten:At};function Je(Me,bt,Ot){for(var Lr=0;Lr0){var qn;if(Array.isArray(Zr[0])){Xi=Vi(Zr);for(var fi=1,si=1;si0){if(typeof fi[0]=="number"){var Ui=H.allocType(ui.dtype,fi.length);wr(Ui,fi),Xi(Ui,mn),H.freeType(Ui)}else if(Array.isArray(fi[0])||qr(fi[0])){Ji=Vi(fi);var Bi=Qn(fi,Ji,ui.dtype);Xi(Bi,mn),H.freeType(Bi)}}}else if(jr(fi)){Ji=fi.shape;var pn=fi.stride,Nn=0,aa=0,Ki=0,Cn=0;Ji.length===1?(Nn=Ji[0],aa=1,Ki=pn[0],Cn=0):Ji.length===2&&(Nn=Ji[0],aa=Ji[1],Ki=pn[0],Cn=pn[1]);var ia=Array.isArray(fi.data)?ui.dtype:ir(fi.data),sa=H.allocType(ia,Nn*aa);Xr(sa,fi.data,Nn,aa,Ki,Cn,fi.offset),Xi(sa,mn),H.freeType(sa)}return nn}return yi||nn(Tr),nn._reglType="buffer",nn._buffer=ui,nn.subdata=qn,Ot.profile&&(nn.stats=ui.stats),nn.destroy=function(){Qi(ui)},nn}function oi(){gt(Or).forEach(function(Tr){Tr.buffer=Me.createBuffer(),Me.bindBuffer(Tr.type,Tr.buffer),Me.bufferData(Tr.type,Tr.persistentData||Tr.byteLength,Tr.usage)})}return Ot.profile&&(bt.getTotalBufferSize=function(){var Tr=0;return Object.keys(Or).forEach(function(Zr){Tr+=Or[Zr].stats.size}),Tr}),{create:ji,createStream:Ni,destroyStream:qi,clear:function(){gt(Or).forEach(Qi),vi.forEach(Qi)},getBuffer:function(Tr){return Tr&&Tr._buffer instanceof Nr?Tr._buffer:null},restore:oi,_initBuffer:Vn}}var $r=0,Ri=0,Zi=1,en=1,fn=4,yn=4,Mn={points:$r,point:Ri,lines:Zi,line:en,triangles:fn,triangle:yn,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},Ba=0,ua=1,ma=4,Wa=5120,Fa=5121,Xo=5122,da=5123,jn=5124,Ha=5125,vo=34963,Gn=35040,Ct=35044;function Sr(Me,bt,Ot,Lr){var Vr={},Or=0,Nr={uint8:Fa,uint16:da};bt.oes_element_index_uint&&(Nr.uint32=Ha);function vi(oi){this.id=Or++,Vr[this.id]=this,this.buffer=oi,this.primType=ma,this.vertCount=0,this.type=0}vi.prototype.bind=function(){this.buffer.bind()};var Ni=[];function qi(oi){var Tr=Ni.pop();return Tr||(Tr=new vi(Ot.create(null,vo,!0,!1)._buffer)),Vn(Tr,oi,Gn,-1,-1,0,0),Tr}function Si(oi){Ni.push(oi)}function Vn(oi,Tr,Zr,yi,Ii,ui,nn){oi.buffer.bind();var Xi;if(Tr){var qn=nn;!nn&&(!qr(Tr)||jr(Tr)&&!qr(Tr.data))&&(qn=bt.oes_element_index_uint?Ha:da),Ot._initBuffer(oi.buffer,Tr,Zr,qn,3)}else Me.bufferData(vo,ui,Zr),oi.buffer.dtype=Xi||Fa,oi.buffer.usage=Zr,oi.buffer.dimension=3,oi.buffer.byteLength=ui;if(Xi=nn,!nn){switch(oi.buffer.dtype){case Fa:case Wa:Xi=Fa;break;case da:case Xo:Xi=da;break;case Ha:case jn:Xi=Ha;break;default:}oi.buffer.dtype=Xi}oi.type=Xi;var fi=Ii;fi<0&&(fi=oi.buffer.byteLength,Xi===da?fi>>=1:Xi===Ha&&(fi>>=2)),oi.vertCount=fi;var si=yi;if(yi<0){si=ma;var mn=oi.buffer.dimension;mn===1&&(si=Ba),mn===2&&(si=ua),mn===3&&(si=ma)}oi.primType=si}function Qi(oi){Lr.elementsCount--,delete Vr[oi.id],oi.buffer.destroy(),oi.buffer=null}function ji(oi,Tr){var Zr=Ot.create(null,vo,!0),yi=new vi(Zr._buffer);Lr.elementsCount++;function Ii(ui){if(!ui)Zr(),yi.primType=ma,yi.vertCount=0,yi.type=Fa;else if(typeof ui=="number")Zr(ui),yi.primType=ma,yi.vertCount=ui|0,yi.type=Fa;else{var nn=null,Xi=Ct,qn=-1,fi=-1,si=0,mn=0;Array.isArray(ui)||qr(ui)||jr(ui)?nn=ui:("data"in ui&&(nn=ui.data),"usage"in ui&&(Xi=Hn[ui.usage]),"primitive"in ui&&(qn=Mn[ui.primitive]),"count"in ui&&(fi=ui.count|0),"type"in ui&&(mn=Nr[ui.type]),"length"in ui?si=ui.length|0:(si=fi,mn===da||mn===Xo?si*=2:(mn===Ha||mn===jn)&&(si*=4))),Vn(yi,nn,Xi,qn,fi,si,mn)}return Ii}return Ii(oi),Ii._reglType="elements",Ii._elements=yi,Ii.subdata=function(ui,nn){return Zr.subdata(ui,nn),Ii},Ii.destroy=function(){Qi(yi)},Ii}return{create:ji,createStream:qi,destroyStream:Si,getElements:function(oi){return typeof oi=="function"&&oi._elements instanceof vi?oi._elements:null},clear:function(){gt(Vr).forEach(Qi)}}}var Jr=new Float32Array(1),hi=new Uint32Array(Jr.buffer),hn=5123;function Sn(Me){for(var bt=H.allocType(hn,Me.length),Ot=0;Ot>>31<<15,Or=(Lr<<1>>>24)-127,Nr=Lr>>13&1023;if(Or<-24)bt[Ot]=Vr;else if(Or<-14){var vi=-14-Or;bt[Ot]=Vr+(Nr+1024>>vi)}else Or>15?bt[Ot]=Vr+31744:bt[Ot]=Vr+(Or+15<<10)+Nr}return bt}function En(Me){return Array.isArray(Me)||qr(Me)}var ki=34467,_n=3553,ya=34067,ea=34069,Ma=6408,_o=6406,No=6407,po=6409,Lo=6410,ko=32854,Ds=32855,Fs=36194,ll=32819,ul=32820,zl=33635,us=34042,il=6402,As=34041,cl=35904,Ks=35906,zs=36193,Io=33776,ls=33777,Yl=33778,Su=33779,nc=35986,bs=35987,Rn=34798,_a=35840,Vu=35841,ql=35842,xo=35843,Kl=36196,Ns=5121,Hl=5123,ac=5125,oa=5126,qo=10242,Oo=10243,Ol=10497,Pc=33071,Do=33648,nf=10240,Vf=10241,pl=9728,Zc=9729,Jl=9984,qs=9985,yu=9986,oc=9987,Cf=33170,sc=4352,jh=4353,Lf=4354,cs=34046,af=3317,Gf=37440,$l=37441,fl=37443,lc=37444,Fu=33984,Es=[Jl,yu,qs,oc],Hs=[0,po,Lo,No,Ma],Go={};Go[po]=Go[_o]=Go[il]=1,Go[As]=Go[Lo]=2,Go[No]=Go[cl]=3,Go[Ma]=Go[Ks]=4;function ps(Me){return"[object "+Me+"]"}var uc=ps("HTMLCanvasElement"),xl=ps("OffscreenCanvas"),Gu=ps("CanvasRenderingContext2D"),Os=ps("ImageBitmap"),od=ps("HTMLImageElement"),Po=ps("HTMLVideoElement"),sd=Object.keys(Qt).concat([uc,xl,Gu,Os,od,Po]),Ko=[];Ko[Ns]=1,Ko[oa]=4,Ko[zs]=2,Ko[Hl]=2,Ko[ac]=4;var Pa=[];Pa[ko]=2,Pa[Ds]=2,Pa[Fs]=2,Pa[As]=4,Pa[Io]=.5,Pa[ls]=.5,Pa[Yl]=1,Pa[Su]=1,Pa[nc]=.5,Pa[bs]=1,Pa[Rn]=1,Pa[_a]=.5,Pa[Vu]=.25,Pa[ql]=.5,Pa[xo]=.25,Pa[Kl]=.5;function of(Me){return Array.isArray(Me)&&(Me.length===0||typeof Me[0]=="number")}function Hu(Me){if(!Array.isArray(Me))return!1;var bt=Me.length;return!(bt===0||!En(Me[0]))}function bl(Me){return Object.prototype.toString.call(Me)}function Hf(Me){return bl(Me)===uc}function Ic(Me){return bl(Me)===xl}function yf(Me){return bl(Me)===Gu}function Bl(Me){return bl(Me)===Os}function Ah(Me){return bl(Me)===od}function Qf(Me){return bl(Me)===Po}function _f(Me){if(!Me)return!1;var bt=bl(Me);return sd.indexOf(bt)>=0?!0:of(Me)||Hu(Me)||jr(Me)}function Yc(Me){return Qt[Object.prototype.toString.call(Me)]|0}function eh(Me,bt){var Ot=bt.length;switch(Me.type){case Ns:case Hl:case ac:case oa:var Lr=H.allocType(Me.type,Ot);Lr.set(bt),Me.data=Lr;break;case zs:Me.data=Sn(bt);break;default:}}function th(Me,bt){return H.allocType(Me.type===zs?oa:Me.type,bt)}function ju(Me,bt){Me.type===zs?(Me.data=Sn(bt),H.freeType(bt)):Me.data=bt}function jf(Me,bt,Ot,Lr,Vr,Or){for(var Nr=Me.width,vi=Me.height,Ni=Me.channels,qi=Nr*vi*Ni,Si=th(Me,qi),Vn=0,Qi=0;Qi=1;)vi+=Nr*Ni*Ni,Ni/=2;return vi}else return Nr*Ot*Lr}function sf(Me,bt,Ot,Lr,Vr,Or,Nr){var vi={"don't care":sc,"dont care":sc,nice:Lf,fast:jh},Ni={repeat:Ol,clamp:Pc,mirror:Do},qi={nearest:pl,linear:Zc},Si=e({mipmap:oc,"nearest mipmap nearest":Jl,"linear mipmap nearest":qs,"nearest mipmap linear":yu,"linear mipmap linear":oc},qi),Vn={none:0,browser:lc},Qi={uint8:Ns,rgba4:ll,rgb565:zl,"rgb5 a1":ul},ji={alpha:_o,luminance:po,"luminance alpha":Lo,rgb:No,rgba:Ma,rgba4:ko,"rgb5 a1":Ds,rgb565:Fs},oi={};bt.ext_srgb&&(ji.srgb=cl,ji.srgba=Ks),bt.oes_texture_float&&(Qi.float32=Qi.float=oa),bt.oes_texture_half_float&&(Qi.float16=Qi["half float"]=zs),bt.webgl_depth_texture&&(e(ji,{depth:il,"depth stencil":As}),e(Qi,{uint16:Hl,uint32:ac,"depth stencil":us})),bt.webgl_compressed_texture_s3tc&&e(oi,{"rgb s3tc dxt1":Io,"rgba s3tc dxt1":ls,"rgba s3tc dxt3":Yl,"rgba s3tc dxt5":Su}),bt.webgl_compressed_texture_atc&&e(oi,{"rgb atc":nc,"rgba atc explicit alpha":bs,"rgba atc interpolated alpha":Rn}),bt.webgl_compressed_texture_pvrtc&&e(oi,{"rgb pvrtc 4bppv1":_a,"rgb pvrtc 2bppv1":Vu,"rgba pvrtc 4bppv1":ql,"rgba pvrtc 2bppv1":xo}),bt.webgl_compressed_texture_etc1&&(oi["rgb etc1"]=Kl);var Tr=Array.prototype.slice.call(Me.getParameter(ki));Object.keys(oi).forEach(function(ne){var we=oi[ne];Tr.indexOf(we)>=0&&(ji[ne]=we)});var Zr=Object.keys(ji);Ot.textureFormats=Zr;var yi=[];Object.keys(ji).forEach(function(ne){var we=ji[ne];yi[we]=ne});var Ii=[];Object.keys(Qi).forEach(function(ne){var we=Qi[ne];Ii[we]=ne});var ui=[];Object.keys(qi).forEach(function(ne){var we=qi[ne];ui[we]=ne});var nn=[];Object.keys(Si).forEach(function(ne){var we=Si[ne];nn[we]=ne});var Xi=[];Object.keys(Ni).forEach(function(ne){var we=Ni[ne];Xi[we]=ne});var qn=Zr.reduce(function(ne,we){var Oe=ji[we];return Oe===po||Oe===_o||Oe===po||Oe===Lo||Oe===il||Oe===As||bt.ext_srgb&&(Oe===cl||Oe===Ks)?ne[Oe]=Oe:Oe===Ds||we.indexOf("rgba")>=0?ne[Oe]=Ma:ne[Oe]=No,ne},{});function fi(){this.internalformat=Ma,this.format=Ma,this.type=Ns,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=lc,this.width=0,this.height=0,this.channels=0}function si(ne,we){ne.internalformat=we.internalformat,ne.format=we.format,ne.type=we.type,ne.compressed=we.compressed,ne.premultiplyAlpha=we.premultiplyAlpha,ne.flipY=we.flipY,ne.unpackAlignment=we.unpackAlignment,ne.colorSpace=we.colorSpace,ne.width=we.width,ne.height=we.height,ne.channels=we.channels}function mn(ne,we){if(!(typeof we!="object"||!we)){if("premultiplyAlpha"in we&&(ne.premultiplyAlpha=we.premultiplyAlpha),"flipY"in we&&(ne.flipY=we.flipY),"alignment"in we&&(ne.unpackAlignment=we.alignment),"colorSpace"in we&&(ne.colorSpace=Vn[we.colorSpace]),"type"in we){var Oe=we.type;ne.type=Qi[Oe]}var ht=ne.width,Yt=ne.height,cr=ne.channels,Nt=!1;"shape"in we?(ht=we.shape[0],Yt=we.shape[1],we.shape.length===3&&(cr=we.shape[2],Nt=!0)):("radius"in we&&(ht=Yt=we.radius),"width"in we&&(ht=we.width),"height"in we&&(Yt=we.height),"channels"in we&&(cr=we.channels,Nt=!0)),ne.width=ht|0,ne.height=Yt|0,ne.channels=cr|0;var Ne=!1;if("format"in we){var $e=we.format,st=ne.internalformat=ji[$e];ne.format=qn[st],$e in Qi&&("type"in we||(ne.type=Qi[$e])),$e in oi&&(ne.compressed=!0),Ne=!0}!Nt&&Ne?ne.channels=Go[ne.format]:Nt&&!Ne&&ne.channels!==Hs[ne.format]&&(ne.format=ne.internalformat=Hs[ne.channels])}}function Ji(ne){Me.pixelStorei(Gf,ne.flipY),Me.pixelStorei($l,ne.premultiplyAlpha),Me.pixelStorei(fl,ne.colorSpace),Me.pixelStorei(af,ne.unpackAlignment)}function Ui(){fi.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function Bi(ne,we){var Oe=null;if(_f(we)?Oe=we:we&&(mn(ne,we),"x"in we&&(ne.xOffset=we.x|0),"y"in we&&(ne.yOffset=we.y|0),_f(we.data)&&(Oe=we.data)),we.copy){var ht=Vr.viewportWidth,Yt=Vr.viewportHeight;ne.width=ne.width||ht-ne.xOffset,ne.height=ne.height||Yt-ne.yOffset,ne.needsCopy=!0}else if(!Oe)ne.width=ne.width||1,ne.height=ne.height||1,ne.channels=ne.channels||4;else if(qr(Oe))ne.channels=ne.channels||4,ne.data=Oe,!("type"in we)&&ne.type===Ns&&(ne.type=Yc(Oe));else if(of(Oe))ne.channels=ne.channels||4,eh(ne,Oe),ne.alignment=1,ne.needsFree=!0;else if(jr(Oe)){var cr=Oe.data;!Array.isArray(cr)&&ne.type===Ns&&(ne.type=Yc(cr));var Nt=Oe.shape,Ne=Oe.stride,$e,st,It,Bt,Ft,Ut;Nt.length===3?(It=Nt[2],Ut=Ne[2]):(It=1,Ut=1),$e=Nt[0],st=Nt[1],Bt=Ne[0],Ft=Ne[1],ne.alignment=1,ne.width=$e,ne.height=st,ne.channels=It,ne.format=ne.internalformat=Hs[It],ne.needsFree=!0,jf(ne,cr,Bt,Ft,Ut,Oe.offset)}else if(Hf(Oe)||Ic(Oe)||yf(Oe))Hf(Oe)||Ic(Oe)?ne.element=Oe:ne.element=Oe.canvas,ne.width=ne.element.width,ne.height=ne.element.height,ne.channels=4;else if(Bl(Oe))ne.element=Oe,ne.width=Oe.width,ne.height=Oe.height,ne.channels=4;else if(Ah(Oe))ne.element=Oe,ne.width=Oe.naturalWidth,ne.height=Oe.naturalHeight,ne.channels=4;else if(Qf(Oe))ne.element=Oe,ne.width=Oe.videoWidth,ne.height=Oe.videoHeight,ne.channels=4;else if(Hu(Oe)){var zt=ne.width||Oe[0].length,_t=ne.height||Oe.length,Dt=ne.channels;En(Oe[0][0])?Dt=Dt||Oe[0][0].length:Dt=Dt||1;for(var vt=Ge.shape(Oe),lr=1,_r=0;_r>=Yt,Oe.height>>=Yt,Bi(Oe,ht[Yt]),ne.mipmask|=1<=0&&!("faces"in we)&&(ne.genMipmaps=!0)}if("mag"in we){var ht=we.mag;ne.magFilter=qi[ht]}var Yt=ne.wrapS,cr=ne.wrapT;if("wrap"in we){var Nt=we.wrap;typeof Nt=="string"?Yt=cr=Ni[Nt]:Array.isArray(Nt)&&(Yt=Ni[Nt[0]],cr=Ni[Nt[1]])}else{if("wrapS"in we){var Ne=we.wrapS;Yt=Ni[Ne]}if("wrapT"in we){var $e=we.wrapT;cr=Ni[$e]}}if(ne.wrapS=Yt,ne.wrapT=cr,"anisotropic"in we){var st=we.anisotropic;ne.anisotropic=we.anisotropic}if("mipmap"in we){var It=!1;switch(typeof we.mipmap){case"string":ne.mipmapHint=vi[we.mipmap],ne.genMipmaps=!0,It=!0;break;case"boolean":It=ne.genMipmaps=we.mipmap;break;case"object":ne.genMipmaps=!1,It=!0;break;default:}It&&!("min"in we)&&(ne.minFilter=Jl)}}function al(ne,we){Me.texParameteri(we,Vf,ne.minFilter),Me.texParameteri(we,nf,ne.magFilter),Me.texParameteri(we,qo,ne.wrapS),Me.texParameteri(we,Oo,ne.wrapT),bt.ext_texture_filter_anisotropic&&Me.texParameteri(we,cs,ne.anisotropic),ne.genMipmaps&&(Me.hint(Cf,ne.mipmapHint),Me.generateMipmap(we))}var Vl=0,ss={},Vs=Ot.maxTextureUnits,Ys=Array(Vs).map(function(){return null});function wa(ne){fi.call(this),this.mipmask=0,this.internalformat=Ma,this.id=Vl++,this.refCount=1,this.target=ne,this.texture=Me.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new zo,Nr.profile&&(this.stats={size:0})}function ol(ne){Me.activeTexture(Fu),Me.bindTexture(ne.target,ne.texture)}function io(){var ne=Ys[0];ne?Me.bindTexture(ne.target,ne.texture):Me.bindTexture(_n,null)}function Y(ne){var we=ne.texture,Oe=ne.unit,ht=ne.target;Oe>=0&&(Me.activeTexture(Fu+Oe),Me.bindTexture(ht,null),Ys[Oe]=null),Me.deleteTexture(we),ne.texture=null,ne.params=null,ne.pixels=null,ne.refCount=0,delete ss[ne.id],Or.textureCount--}e(wa.prototype,{bind:function(){var ne=this;ne.bindCount+=1;var we=ne.unit;if(we<0){for(var Oe=0;Oe0)continue;ht.unit=-1}Ys[Oe]=ne,we=Oe;break}we>=Vs,Nr.profile&&Or.maxTextureUnits>Ft)-It,Ut.height=Ut.height||(Oe.height>>Ft)-Bt,ol(Oe),Nn(Ut,_n,It,Bt,Ft),io(),Cn(Ut),ht}function cr(Nt,Ne){var $e=Nt|0,st=Ne|0||$e;if($e===Oe.width&&st===Oe.height)return ht;ht.width=Oe.width=$e,ht.height=Oe.height=st,ol(Oe);for(var It=0;Oe.mipmask>>It;++It){var Bt=$e>>It,Ft=st>>It;if(!Bt||!Ft)break;Me.texImage2D(_n,It,Oe.format,Bt,Ft,0,Oe.format,Oe.type,null)}return io(),Nr.profile&&(Oe.stats.size=cc(Oe.internalformat,Oe.type,$e,st,!1,!1)),ht}return ht(ne,we),ht.subimage=Yt,ht.resize=cr,ht._reglType="texture2d",ht._texture=Oe,Nr.profile&&(ht.stats=Oe.stats),ht.destroy=function(){Oe.decRef()},ht}function J(ne,we,Oe,ht,Yt,cr){var Nt=new wa(ya);ss[Nt.id]=Nt,Or.cubeCount++;var Ne=new Array(6);function $e(Bt,Ft,Ut,zt,_t,Dt){var vt,lr=Nt.texInfo;for(zo.call(lr),vt=0;vt<6;++vt)Ne[vt]=Ga();if(typeof Bt=="number"||!Bt){var _r=Bt|0||1;for(vt=0;vt<6;++vt)sa(Ne[vt],_r,_r)}else if(typeof Bt=="object")if(Ft)ba(Ne[0],Bt),ba(Ne[1],Ft),ba(Ne[2],Ut),ba(Ne[3],zt),ba(Ne[4],_t),ba(Ne[5],Dt);else if(Qs(lr,Bt),mn(Nt,Bt),"faces"in Bt){var Br=Bt.faces;for(vt=0;vt<6;++vt)si(Ne[vt],Nt),ba(Ne[vt],Br[vt])}else for(vt=0;vt<6;++vt)ba(Ne[vt],Bt);for(si(Nt,Ne[0]),lr.genMipmaps?Nt.mipmask=(Ne[0].width<<1)-1:Nt.mipmask=Ne[0].mipmask,Nt.internalformat=Ne[0].internalformat,$e.width=Ne[0].width,$e.height=Ne[0].height,ol(Nt),vt=0;vt<6;++vt)is(Ne[vt],ea+vt);for(al(lr,ya),io(),Nr.profile&&(Nt.stats.size=cc(Nt.internalformat,Nt.type,$e.width,$e.height,lr.genMipmaps,!0)),$e.format=yi[Nt.internalformat],$e.type=Ii[Nt.type],$e.mag=ui[lr.magFilter],$e.min=nn[lr.minFilter],$e.wrapS=Xi[lr.wrapS],$e.wrapT=Xi[lr.wrapT],vt=0;vt<6;++vt)Ml(Ne[vt]);return $e}function st(Bt,Ft,Ut,zt,_t){var Dt=Ut|0,vt=zt|0,lr=_t|0,_r=Ki();return si(_r,Nt),_r.width=0,_r.height=0,Bi(_r,Ft),_r.width=_r.width||(Nt.width>>lr)-Dt,_r.height=_r.height||(Nt.height>>lr)-vt,ol(Nt),Nn(_r,ea+Bt,Dt,vt,lr),io(),Cn(_r),$e}function It(Bt){var Ft=Bt|0;if(Ft!==Nt.width){$e.width=Nt.width=Ft,$e.height=Nt.height=Ft,ol(Nt);for(var Ut=0;Ut<6;++Ut)for(var zt=0;Nt.mipmask>>zt;++zt)Me.texImage2D(ea+Ut,zt,Nt.format,Ft>>zt,Ft>>zt,0,Nt.format,Nt.type,null);return io(),Nr.profile&&(Nt.stats.size=cc(Nt.internalformat,Nt.type,$e.width,$e.height,!1,!0)),$e}}return $e(ne,we,Oe,ht,Yt,cr),$e.subimage=st,$e.resize=It,$e._reglType="textureCube",$e._texture=Nt,Nr.profile&&($e.stats=Nt.stats),$e.destroy=function(){Nt.decRef()},$e}function O(){for(var ne=0;ne>ht,Oe.height>>ht,0,Oe.internalformat,Oe.type,null);else for(var Yt=0;Yt<6;++Yt)Me.texImage2D(ea+Yt,ht,Oe.internalformat,Oe.width>>ht,Oe.height>>ht,0,Oe.internalformat,Oe.type,null);al(Oe.texInfo,Oe.target)})}function de(){for(var ne=0;ne=0?Ml=!0:Ni.indexOf(zo)>=0&&(Ml=!1))),("depthTexture"in wa||"depthStencilTexture"in wa)&&(Ys=!!(wa.depthTexture||wa.depthStencilTexture)),"depth"in wa&&(typeof wa.depth=="boolean"?is=wa.depth:(Vl=wa.depth,Zs=!1)),"stencil"in wa&&(typeof wa.stencil=="boolean"?Zs=wa.stencil:(ss=wa.stencil,is=!1)),"depthStencil"in wa&&(typeof wa.depthStencil=="boolean"?is=Zs=wa.depthStencil:(Vs=wa.depthStencil,is=!1,Zs=!1))}var io=null,Y=null,D=null,J=null;if(Array.isArray(Ga))io=Ga.map(oi);else if(Ga)io=[oi(Ga)];else for(io=new Array(al),ia=0;ia0&&(Cn.depth=Bi[0].depth,Cn.stencil=Bi[0].stencil,Cn.depthStencil=Bi[0].depthStencil),Bi[Ki]?Bi[Ki](Cn):Bi[Ki]=si(Cn)}return e(pn,{width:ia,height:ia,color:zo})}function Nn(aa){var Ki,Cn=aa|0;if(Cn===pn.width)return pn;var ia=pn.color;for(Ki=0;Ki=ia.byteLength?sa.subdata(ia):(sa.destroy(),si.buffers[aa]=null)),si.buffers[aa]||(sa=si.buffers[aa]=Vr.create(Ki,If,!1,!0)),Cn.buffer=Vr.getBuffer(sa),Cn.size=Cn.buffer.dimension|0,Cn.normalized=!1,Cn.type=Cn.buffer.dtype,Cn.offset=0,Cn.stride=0,Cn.divisor=0,Cn.state=1,pn[aa]=1}else Vr.getBuffer(Ki)?(Cn.buffer=Vr.getBuffer(Ki),Cn.size=Cn.buffer.dimension|0,Cn.normalized=!1,Cn.type=Cn.buffer.dtype,Cn.offset=0,Cn.stride=0,Cn.divisor=0,Cn.state=1):Vr.getBuffer(Ki.buffer)?(Cn.buffer=Vr.getBuffer(Ki.buffer),Cn.size=(+Ki.size||Cn.buffer.dimension)|0,Cn.normalized=!!Ki.normalized||!1,"type"in Ki?Cn.type=un[Ki.type]:Cn.type=Cn.buffer.dtype,Cn.offset=(Ki.offset||0)|0,Cn.stride=(Ki.stride||0)|0,Cn.divisor=(Ki.divisor||0)|0,Cn.state=1):"x"in Ki&&(Cn.x=+Ki.x||0,Cn.y=+Ki.y||0,Cn.z=+Ki.z||0,Cn.w=+Ki.w||0,Cn.state=2)}for(var ba=0;ba1)for(var Ji=0;JiTr&&(Tr=Zr.stats.uniformsCount)}),Tr},Ot.getMaxAttributesCount=function(){var Tr=0;return Si.forEach(function(Zr){Zr.stats.attributesCount>Tr&&(Tr=Zr.stats.attributesCount)}),Tr});function oi(){Vr={},Or={};for(var Tr=0;Tr16&&(Ot=Yi(Ot,Me.length*8));for(var Lr=Array(16),Vr=Array(16),Or=0;Or<16;Or++)Lr[Or]=Ot[Or]^909522486,Vr[Or]=Ot[Or]^1549556828;var Nr=Yi(Lr.concat(Bc(bt)),512+bt.length*8);return kt(Yi(Vr.concat(Nr),768))}function vu(Me){for(var bt=ah?"0123456789ABCDEF":"0123456789abcdef",Ot="",Lr,Vr=0;Vr>>4&15)+bt.charAt(Lr&15);return Ot}function Oc(Me){for(var bt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ot="",Lr=Me.length,Vr=0;VrMe.length*8?Ot+=Zu:Ot+=bt.charAt(Or>>>6*(3-Nr)&63);return Ot}function ff(Me,bt){var Ot=bt.length,Lr=Array(),Vr,Or,Nr,vi,Ni=Array(Math.ceil(Me.length/2));for(Vr=0;Vr0;){for(vi=Array(),Nr=0,Vr=0;Vr0||Or>0)&&(vi[vi.length]=Or);Lr[Lr.length]=Nr,Ni=vi}var qi="";for(Vr=Lr.length-1;Vr>=0;Vr--)qi+=bt.charAt(Lr[Vr]);var Si=Math.ceil(Me.length*8/(Math.log(bt.length)/Math.log(2)));for(Vr=qi.length;Vr>>6&31,128|Lr&63):Lr<=65535?bt+=String.fromCharCode(224|Lr>>>12&15,128|Lr>>>6&63,128|Lr&63):Lr<=2097151&&(bt+=String.fromCharCode(240|Lr>>>18&7,128|Lr>>>12&63,128|Lr>>>6&63,128|Lr&63));return bt}function Bc(Me){for(var bt=Array(Me.length>>2),Ot=0;Ot>5]|=(Me.charCodeAt(Ot/8)&255)<<24-Ot%32;return bt}function kt(Me){for(var bt="",Ot=0;Ot>5]>>>24-Ot%32&255);return bt}function Zt(Me,bt){return Me>>>bt|Me<<32-bt}function Er(Me,bt){return Me>>>bt}function xr(Me,bt,Ot){return Me&bt^~Me&Ot}function Kr(Me,bt,Ot){return Me&bt^Me&Ot^bt&Ot}function Mi(Me){return Zt(Me,2)^Zt(Me,13)^Zt(Me,22)}function Wi(Me){return Zt(Me,6)^Zt(Me,11)^Zt(Me,25)}function dn(Me){return Zt(Me,7)^Zt(Me,18)^Er(Me,3)}function wn(Me){return Zt(Me,17)^Zt(Me,19)^Er(Me,10)}var On=new Array(1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998);function Yi(Me,bt){var Ot=new Array(1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225),Lr=new Array(64),Vr,Or,Nr,vi,Ni,qi,Si,Vn,Qi,ji,oi,Tr;for(Me[bt>>5]|=128<<24-bt%32,Me[(bt+64>>9<<4)+15]=bt,Qi=0;Qi>16)+(bt>>16)+(Ot>>16);return Lr<<16|Ot&65535}function an(Me){return Array.prototype.slice.call(Me)}function Fi(Me){return an(Me).join("")}function ta(Me){var bt=Me&&Me.cache,Ot=0,Lr=[],Vr=[],Or=[];function Nr(oi,Tr){var Zr=Tr&&Tr.stable;if(!Zr){for(var yi=0;yi0&&(oi.push(Ii,"="),oi.push.apply(oi,an(arguments)),oi.push(";")),Ii}return e(Tr,{def:yi,toString:function(){return Fi([Zr.length>0?"var "+Zr.join(",")+";":"",Fi(oi)])}})}function Ni(){var oi=vi(),Tr=vi(),Zr=oi.toString,yi=Tr.toString;function Ii(ui,nn){Tr(ui,nn,"=",oi.def(ui,nn),";")}return e(function(){oi.apply(oi,an(arguments))},{def:oi.def,entry:oi,exit:Tr,save:Ii,set:function(ui,nn,Xi){Ii(ui,nn),oi(ui,nn,"=",Xi,";")},toString:function(){return Zr()+yi()}})}function qi(){var oi=Fi(arguments),Tr=Ni(),Zr=Ni(),yi=Tr.toString,Ii=Zr.toString;return e(Tr,{then:function(){return Tr.apply(Tr,an(arguments)),this},else:function(){return Zr.apply(Zr,an(arguments)),this},toString:function(){var ui=Ii();return ui&&(ui="else{"+ui+"}"),Fi(["if(",oi,"){",yi(),"}",ui])}})}var Si=vi(),Vn={};function Qi(oi,Tr){var Zr=[];function yi(){var qn="a"+Zr.length;return Zr.push(qn),qn}Tr=Tr||0;for(var Ii=0;Ii":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},ii={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},di={cw:Te,ccw:qe};function Li(Me){return Array.isArray(Me)||qr(Me)||jr(Me)}function Ti(Me){return Me.sort(function(bt,Ot){return bt===ee?-1:Ot===ee?1:bt=1,Lr>=2,bt)}else if(Ot===Zo){var Vr=Me.data;return new Qr(Vr.thisDep,Vr.contextDep,Vr.propDep,bt)}else{if(Ot===Ss)return new Qr(!1,!1,!1,bt);if(Ot===as){for(var Or=!1,Nr=!1,vi=!1,Ni=0;Ni=1&&(Nr=!0),Si>=2&&(vi=!0)}else qi.type===Zo&&(Or=Or||qi.data.thisDep,Nr=Nr||qi.data.contextDep,vi=vi||qi.data.propDep)}return new Qr(Or,Nr,vi,bt)}else return new Qr(Ot===bo,Ot===Ka,Ot===Dn,bt)}}var na=new Qr(!1,!1,!1,function(){});function Ea(Me,bt,Ot,Lr,Vr,Or,Nr,vi,Ni,qi,Si,Vn,Qi,ji,oi,Tr){var Zr=qi.Record,yi={add:32774,subtract:32778,"reverse subtract":32779};Ot.ext_blend_minmax&&(yi.min=Ve,yi.max=Ye);var Ii=Ot.angle_instanced_arrays,ui=Ot.webgl_draw_buffers,nn=Ot.oes_vertex_array_object,Xi={dirty:!0,profile:Tr.profile},qn={},fi=[],si={},mn={};function Ji(Ne){return Ne.replace(".","_")}function Ui(Ne,$e,st){var It=Ji(Ne);fi.push(Ne),qn[It]=Xi[It]=!!st,si[It]=$e}function Bi(Ne,$e,st){var It=Ji(Ne);fi.push(Ne),Array.isArray(st)?(Xi[It]=st.slice(),qn[It]=st.slice()):Xi[It]=qn[It]=st,mn[It]=$e}function pn(Ne){return!!isNaN(Ne)}Ui(ws,Ci),Ui(Ho,ri),Bi(ml,"blendColor",[0,0,0,0]),Bi(Ws,"blendEquationSeparate",[pr,pr]),Bi(Ls,"blendFuncSeparate",[dr,Xt,dr,Xt]),Ui(va,sn,!0),Bi(no,"depthFunc",Ur),Bi(ys,"depthRange",[0,1]),Bi(rs,"depthMask",!0),Bi(Ql,Ql,[!0,!0,!0,!0]),Ui(Cu,Hr),Bi(Yu,"cullFace",se),Bi(Nc,Nc,qe),Bi(pu,pu,1),Ui(Uc,Yn),Bi(xu,"polygonOffset",[0,0]),Ui(Ac,Aa),Ui(Va,fa),Bi(oo,"sampleCoverage",[1,!1]),Ui(Vc,cn),Bi(hc,"stencilMask",-1),Bi(Ku,"stencilFunc",[Pt,0,-1]),Bi(ue,"stencilOpSeparate",[X,ot,ot,ot]),Bi(w,"stencilOpSeparate",[se,ot,ot,ot]),Ui(B,Ln),Bi(Q,"scissor",[0,0,Me.drawingBufferWidth,Me.drawingBufferHeight]),Bi(ee,ee,[0,0,Me.drawingBufferWidth,Me.drawingBufferHeight]);var Nn={gl:Me,context:Qi,strings:bt,next:qn,current:Xi,draw:Vn,elements:Or,buffer:Vr,shader:Si,attributes:qi.state,vao:qi,uniforms:Ni,framebuffer:vi,extensions:Ot,timer:ji,isBufferArgs:Li},aa={primTypes:Mn,compareFuncs:Wr,blendFuncs:xi,blendEquations:yi,stencilOps:ii,glTypes:un,orientationType:di};ui&&(aa.backBuffer=[se],aa.drawBuffer=S(Lr.maxDrawbuffers,function(Ne){return Ne===0?[0]:S(Ne,function($e){return gi+$e})}));var Ki=0;function Cn(){var Ne=ta({cache:oi}),$e=Ne.link,st=Ne.global;Ne.id=Ki++,Ne.batchId="0";var It=$e(Nn),Bt=Ne.shared={props:"a0"};Object.keys(Nn).forEach(function(Dt){Bt[Dt]=st.def(It,".",Dt)});var Ft=Ne.next={},Ut=Ne.current={};Object.keys(mn).forEach(function(Dt){Array.isArray(Xi[Dt])&&(Ft[Dt]=st.def(Bt.next,".",Dt),Ut[Dt]=st.def(Bt.current,".",Dt))});var zt=Ne.constants={};Object.keys(aa).forEach(function(Dt){zt[Dt]=st.def(JSON.stringify(aa[Dt]))}),Ne.invoke=function(Dt,vt){switch(vt.type){case Zn:var lr=["this",Bt.context,Bt.props,Ne.batchId];return Dt.def($e(vt.data),".call(",lr.slice(0,Math.max(vt.data.length+1,4)),")");case Dn:return Dt.def(Bt.props,vt.data);case Ka:return Dt.def(Bt.context,vt.data);case bo:return Dt.def("this",vt.data);case Zo:return vt.data.append(Ne,Dt),vt.data.ref;case Ss:return vt.data.toString();case as:return vt.data.map(function(_r){return Ne.invoke(Dt,_r)})}},Ne.attribCache={};var _t={};return Ne.scopeAttrib=function(Dt){var vt=bt.id(Dt);if(vt in _t)return _t[vt];var lr=qi.scope[vt];lr||(lr=qi.scope[vt]=new Zr);var _r=_t[vt]=$e(lr);return _r},Ne}function ia(Ne){var $e=Ne.static,st=Ne.dynamic,It;if(le in $e){var Bt=!!$e[le];It=kn(function(Ut,zt){return Bt}),It.enable=Bt}else if(le in st){var Ft=st[le];It=Bn(Ft,function(Ut,zt){return Ut.invoke(zt,Ft)})}return It}function sa(Ne,$e){var st=Ne.static,It=Ne.dynamic;if(Fe in st){var Bt=st[Fe];return Bt?(Bt=vi.getFramebuffer(Bt),kn(function(Ut,zt){var _t=Ut.link(Bt),Dt=Ut.shared;zt.set(Dt.framebuffer,".next",_t);var vt=Dt.context;return zt.set(vt,"."+ze,_t+".width"),zt.set(vt,"."+Qe,_t+".height"),_t})):kn(function(Ut,zt){var _t=Ut.shared;zt.set(_t.framebuffer,".next","null");var Dt=_t.context;return zt.set(Dt,"."+ze,Dt+"."+Wt),zt.set(Dt,"."+Qe,Dt+"."+nr),"null"})}else if(Fe in It){var Ft=It[Fe];return Bn(Ft,function(Ut,zt){var _t=Ut.invoke(zt,Ft),Dt=Ut.shared,vt=Dt.framebuffer,lr=zt.def(vt,".getFramebuffer(",_t,")");zt.set(vt,".next",lr);var _r=Dt.context;return zt.set(_r,"."+ze,lr+"?"+lr+".width:"+_r+"."+Wt),zt.set(_r,"."+Qe,lr+"?"+lr+".height:"+_r+"."+nr),lr})}else return null}function ba(Ne,$e,st){var It=Ne.static,Bt=Ne.dynamic;function Ft(_t){if(_t in It){var Dt=It[_t],vt=!0,lr=Dt.x|0,_r=Dt.y|0,Br,Di;return"width"in Dt?Br=Dt.width|0:vt=!1,"height"in Dt?Di=Dt.height|0:vt=!1,new Qr(!vt&&$e&&$e.thisDep,!vt&&$e&&$e.contextDep,!vt&&$e&&$e.propDep,function(gn,tn){var Ei=gn.shared.context,Oi=Br;"width"in Dt||(Oi=tn.def(Ei,".",ze,"-",lr));var Gi=Di;return"height"in Dt||(Gi=tn.def(Ei,".",Qe,"-",_r)),[lr,_r,Oi,Gi]})}else if(_t in Bt){var ci=Bt[_t],bi=Bn(ci,function(gn,tn){var Ei=gn.invoke(tn,ci),Oi=gn.shared.context,Gi=tn.def(Ei,".x|0"),on=tn.def(Ei,".y|0"),zn=tn.def('"width" in ',Ei,"?",Ei,".width|0:","(",Oi,".",ze,"-",Gi,")"),Ja=tn.def('"height" in ',Ei,"?",Ei,".height|0:","(",Oi,".",Qe,"-",on,")");return[Gi,on,zn,Ja]});return $e&&(bi.thisDep=bi.thisDep||$e.thisDep,bi.contextDep=bi.contextDep||$e.contextDep,bi.propDep=bi.propDep||$e.propDep),bi}else return $e?new Qr($e.thisDep,$e.contextDep,$e.propDep,function(gn,tn){var Ei=gn.shared.context;return[0,0,tn.def(Ei,".",ze),tn.def(Ei,".",Qe)]}):null}var Ut=Ft(ee);if(Ut){var zt=Ut;Ut=new Qr(Ut.thisDep,Ut.contextDep,Ut.propDep,function(_t,Dt){var vt=zt.append(_t,Dt),lr=_t.shared.context;return Dt.set(lr,"."+Xe,vt[2]),Dt.set(lr,"."+nt,vt[3]),vt})}return{viewport:Ut,scissor_box:Ft(Q)}}function is(Ne,$e){var st=Ne.static,It=typeof st[ut]=="string"&&typeof st[Ze]=="string";if(It){if(Object.keys($e.dynamic).length>0)return null;var Bt=$e.static,Ft=Object.keys(Bt);if(Ft.length>0&&typeof Bt[Ft[0]]=="number"){for(var Ut=[],zt=0;zt"+Gi+"?"+vt+".constant["+Gi+"]:0;"}).join(""),"}}else{","if(",Br,"(",vt,".buffer)){",gn,"=",Di,".createStream(",br,",",vt,".buffer);","}else{",gn,"=",Di,".getBuffer(",vt,".buffer);","}",tn,'="type" in ',vt,"?",_r.glTypes,"[",vt,".type]:",gn,".dtype;",ci.normalized,"=!!",vt,".normalized;");function Ei(Oi){Dt(ci[Oi],"=",vt,".",Oi,"|0;")}return Ei("size"),Ei("offset"),Ei("stride"),Ei("divisor"),Dt("}}"),Dt.exit("if(",ci.isStream,"){",Di,".destroyStream(",gn,");","}"),ci}Bt[Ft]=Bn(Ut,zt)}),Bt}function al(Ne){var $e=Ne.static,st=Ne.dynamic,It={};return Object.keys($e).forEach(function(Bt){var Ft=$e[Bt];It[Bt]=kn(function(Ut,zt){return typeof Ft=="number"||typeof Ft=="boolean"?""+Ft:Ut.link(Ft)})}),Object.keys(st).forEach(function(Bt){var Ft=st[Bt];It[Bt]=Bn(Ft,function(Ut,zt){return Ut.invoke(zt,Ft)})}),It}function Vl(Ne,$e,st,It,Bt){var Ft=Ne.static,Ut=Ne.dynamic,zt=is(Ne,$e),_t=sa(Ne,Bt),Dt=ba(Ne,_t,Bt),vt=Ga(Ne,Bt),lr=Ml(Ne,Bt),_r=Zs(Ne,Bt,zt);function Br(Ei){var Oi=Dt[Ei];Oi&&(lr[Ei]=Oi)}Br(ee),Br(Ji(Q));var Di=Object.keys(lr).length>0,ci={framebuffer:_t,draw:vt,shader:_r,state:lr,dirty:Di,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(ci.profile=ia(Ne,Bt),ci.uniforms=zo(st,Bt),ci.drawVAO=ci.scopeVAO=vt.vao,!ci.drawVAO&&_r.program&&!zt&&Ot.angle_instanced_arrays&&vt.static.elements){var bi=!0,gn=_r.program.attributes.map(function(Ei){var Oi=$e.static[Ei];return bi=bi&&!!Oi,Oi});if(bi&&gn.length>0){var tn=qi.getVAO(qi.createVAO({attributes:gn,elements:vt.static.elements}));ci.drawVAO=new Qr(null,null,null,function(Ei,Oi){return Ei.link(tn)}),ci.useVAO=!0}}return zt?ci.useVAO=!0:ci.attributes=Qs($e,Bt),ci.context=al(It,Bt),ci}function ss(Ne,$e,st){var It=Ne.shared,Bt=It.context,Ft=Ne.scope();Object.keys(st).forEach(function(Ut){$e.save(Bt,"."+Ut);var zt=st[Ut],_t=zt.append(Ne,$e);Array.isArray(_t)?Ft(Bt,".",Ut,"=[",_t.join(),"];"):Ft(Bt,".",Ut,"=",_t,";")}),$e(Ft)}function Vs(Ne,$e,st,It){var Bt=Ne.shared,Ft=Bt.gl,Ut=Bt.framebuffer,zt;ui&&(zt=$e.def(Bt.extensions,".webgl_draw_buffers"));var _t=Ne.constants,Dt=_t.drawBuffer,vt=_t.backBuffer,lr;st?lr=st.append(Ne,$e):lr=$e.def(Ut,".next"),It||$e("if(",lr,"!==",Ut,".cur){"),$e("if(",lr,"){",Ft,".bindFramebuffer(",zr,",",lr,".framebuffer);"),ui&&$e(zt,".drawBuffersWEBGL(",Dt,"[",lr,".colorAttachments.length]);"),$e("}else{",Ft,".bindFramebuffer(",zr,",null);"),ui&&$e(zt,".drawBuffersWEBGL(",vt,");"),$e("}",Ut,".cur=",lr,";"),It||$e("}")}function Ys(Ne,$e,st){var It=Ne.shared,Bt=It.gl,Ft=Ne.current,Ut=Ne.next,zt=It.current,_t=It.next,Dt=Ne.cond(zt,".dirty");fi.forEach(function(vt){var lr=Ji(vt);if(!(lr in st.state)){var _r,Br;if(lr in Ut){_r=Ut[lr],Br=Ft[lr];var Di=S(Xi[lr].length,function(bi){return Dt.def(_r,"[",bi,"]")});Dt(Ne.cond(Di.map(function(bi,gn){return bi+"!=="+Br+"["+gn+"]"}).join("||")).then(Bt,".",mn[lr],"(",Di,");",Di.map(function(bi,gn){return Br+"["+gn+"]="+bi}).join(";"),";"))}else{_r=Dt.def(_t,".",lr);var ci=Ne.cond(_r,"!==",zt,".",lr);Dt(ci),lr in si?ci(Ne.cond(_r).then(Bt,".enable(",si[lr],");").else(Bt,".disable(",si[lr],");"),zt,".",lr,"=",_r,";"):ci(Bt,".",mn[lr],"(",_r,");",zt,".",lr,"=",_r,";")}}}),Object.keys(st.state).length===0&&Dt(zt,".dirty=false;"),$e(Dt)}function wa(Ne,$e,st,It){var Bt=Ne.shared,Ft=Ne.current,Ut=Bt.current,zt=Bt.gl,_t;Ti(Object.keys(st)).forEach(function(Dt){var vt=st[Dt];if(!(It&&!It(vt))){var lr=vt.append(Ne,$e);if(si[Dt]){var _r=si[Dt];Pn(vt)?(_t=Ne.link(lr,{stable:!0}),$e(Ne.cond(_t).then(zt,".enable(",_r,");").else(zt,".disable(",_r,");")),$e(Ut,".",Dt,"=",_t,";")):($e(Ne.cond(lr).then(zt,".enable(",_r,");").else(zt,".disable(",_r,");")),$e(Ut,".",Dt,"=",lr,";"))}else if(En(lr)){var Br=Ft[Dt];$e(zt,".",mn[Dt],"(",lr,");",lr.map(function(Di,ci){return Br+"["+ci+"]="+Di}).join(";"),";")}else Pn(vt)?(_t=Ne.link(lr,{stable:!0}),$e(zt,".",mn[Dt],"(",_t,");",Ut,".",Dt,"=",_t,";")):$e(zt,".",mn[Dt],"(",lr,");",Ut,".",Dt,"=",lr,";")}})}function ol(Ne,$e){Ii&&(Ne.instancing=$e.def(Ne.shared.extensions,".angle_instanced_arrays"))}function io(Ne,$e,st,It,Bt){var Ft=Ne.shared,Ut=Ne.stats,zt=Ft.current,_t=Ft.timer,Dt=st.profile;function vt(){return typeof performance=="undefined"?"Date.now()":"performance.now()"}var lr,_r;function Br(Ei){lr=$e.def(),Ei(lr,"=",vt(),";"),typeof Bt=="string"?Ei(Ut,".count+=",Bt,";"):Ei(Ut,".count++;"),ji&&(It?(_r=$e.def(),Ei(_r,"=",_t,".getNumPendingQueries();")):Ei(_t,".beginQuery(",Ut,");"))}function Di(Ei){Ei(Ut,".cpuTime+=",vt(),"-",lr,";"),ji&&(It?Ei(_t,".pushScopeStats(",_r,",",_t,".getNumPendingQueries(),",Ut,");"):Ei(_t,".endQuery();"))}function ci(Ei){var Oi=$e.def(zt,".profile");$e(zt,".profile=",Ei,";"),$e.exit(zt,".profile=",Oi,";")}var bi;if(Dt){if(Pn(Dt)){Dt.enable?(Br($e),Di($e.exit),ci("true")):ci("false");return}bi=Dt.append(Ne,$e),ci(bi)}else bi=$e.def(zt,".profile");var gn=Ne.block();Br(gn),$e("if(",bi,"){",gn,"}");var tn=Ne.block();Di(tn),$e.exit("if(",bi,"){",tn,"}")}function Y(Ne,$e,st,It,Bt){var Ft=Ne.shared;function Ut(_t){switch(_t){case Co:case Ps:case hl:return 2;case Qa:case Ts:case Ul:return 3;case mo:case wo:case Lu:return 4;default:return 1}}function zt(_t,Dt,vt){var lr=Ft.gl,_r=$e.def(_t,".location"),Br=$e.def(Ft.attributes,"[",_r,"]"),Di=vt.state,ci=vt.buffer,bi=[vt.x,vt.y,vt.z,vt.w],gn=["buffer","normalized","offset","stride"];function tn(){$e("if(!",Br,".buffer){",lr,".enableVertexAttribArray(",_r,");}");var Oi=vt.type,Gi;if(vt.size?Gi=$e.def(vt.size,"||",Dt):Gi=Dt,$e("if(",Br,".type!==",Oi,"||",Br,".size!==",Gi,"||",gn.map(function(zn){return Br+"."+zn+"!=="+vt[zn]}).join("||"),"){",lr,".bindBuffer(",br,",",ci,".buffer);",lr,".vertexAttribPointer(",[_r,Gi,Oi,vt.normalized,vt.stride,vt.offset],");",Br,".type=",Oi,";",Br,".size=",Gi,";",gn.map(function(zn){return Br+"."+zn+"="+vt[zn]+";"}).join(""),"}"),Ii){var on=vt.divisor;$e("if(",Br,".divisor!==",on,"){",Ne.instancing,".vertexAttribDivisorANGLE(",[_r,on],");",Br,".divisor=",on,";}")}}function Ei(){$e("if(",Br,".buffer){",lr,".disableVertexAttribArray(",_r,");",Br,".buffer=null;","}if(",Ca.map(function(Oi,Gi){return Br+"."+Oi+"!=="+bi[Gi]}).join("||"),"){",lr,".vertexAttrib4f(",_r,",",bi,");",Ca.map(function(Oi,Gi){return Br+"."+Oi+"="+bi[Gi]+";"}).join(""),"}")}Di===La?tn():Di===Ua?Ei():($e("if(",Di,"===",La,"){"),tn(),$e("}else{"),Ei(),$e("}"))}It.forEach(function(_t){var Dt=_t.name,vt=st.attributes[Dt],lr;if(vt){if(!Bt(vt))return;lr=vt.append(Ne,$e)}else{if(!Bt(na))return;var _r=Ne.scopeAttrib(Dt);lr={},Object.keys(new Zr).forEach(function(Br){lr[Br]=$e.def(_r,".",Br)})}zt(Ne.link(_t),Ut(_t.info.type),lr)})}function D(Ne,$e,st,It,Bt,Ft){for(var Ut=Ne.shared,zt=Ut.gl,_t,Dt=0;Dt1){for(var co=[],ts=[],so=0;so>1)",ci],");")}function on(){st(bi,".drawArraysInstancedANGLE(",[_r,Br,Di,ci],");")}vt&&vt!=="null"?tn?Gi():(st("if(",vt,"){"),Gi(),st("}else{"),on(),st("}")):on()}function Oi(){function Gi(){st(Ft+".drawElements("+[_r,Di,gn,Br+"<<(("+gn+"-"+Ra+")>>1)"]+");")}function on(){st(Ft+".drawArrays("+[_r,Br,Di]+");")}vt&&vt!=="null"?tn?Gi():(st("if(",vt,"){"),Gi(),st("}else{"),on(),st("}")):on()}Ii&&(typeof ci!="number"||ci>=0)?typeof ci=="string"?(st("if(",ci,">0){"),Ei(),st("}else if(",ci,"<0){"),Oi(),st("}")):Ei():Oi()}function O(Ne,$e,st,It,Bt){var Ft=Cn(),Ut=Ft.proc("body",Bt);return Ii&&(Ft.instancing=Ut.def(Ft.shared.extensions,".angle_instanced_arrays")),Ne(Ft,Ut,st,It),Ft.compile().body}function K(Ne,$e,st,It){ol(Ne,$e),st.useVAO?st.drawVAO?$e(Ne.shared.vao,".setVAO(",st.drawVAO.append(Ne,$e),");"):$e(Ne.shared.vao,".setVAO(",Ne.shared.vao,".targetVAO);"):($e(Ne.shared.vao,".setVAO(null);"),Y(Ne,$e,st,It.attributes,function(){return!0})),D(Ne,$e,st,It.uniforms,function(){return!0},!1),J(Ne,$e,$e,st)}function de(Ne,$e){var st=Ne.proc("draw",1);ol(Ne,st),ss(Ne,st,$e.context),Vs(Ne,st,$e.framebuffer),Ys(Ne,st,$e),wa(Ne,st,$e.state),io(Ne,st,$e,!1,!0);var It=$e.shader.progVar.append(Ne,st);if(st(Ne.shared.gl,".useProgram(",It,".program);"),$e.shader.program)K(Ne,st,$e,$e.shader.program);else{st(Ne.shared.vao,".setVAO(null);");var Bt=Ne.global.def("{}"),Ft=st.def(It,".id"),Ut=st.def(Bt,"[",Ft,"]");st(Ne.cond(Ut).then(Ut,".call(this,a0);").else(Ut,"=",Bt,"[",Ft,"]=",Ne.link(function(zt){return O(K,Ne,$e,zt,1)}),"(",It,");",Ut,".call(this,a0);"))}Object.keys($e.state).length>0&&st(Ne.shared.current,".dirty=true;"),Ne.shared.vao&&st(Ne.shared.vao,".setVAO(null);")}function ne(Ne,$e,st,It){Ne.batchId="a1",ol(Ne,$e);function Bt(){return!0}Y(Ne,$e,st,It.attributes,Bt),D(Ne,$e,st,It.uniforms,Bt,!1),J(Ne,$e,$e,st)}function we(Ne,$e,st,It){ol(Ne,$e);var Bt=st.contextDep,Ft=$e.def(),Ut="a0",zt="a1",_t=$e.def();Ne.shared.props=_t,Ne.batchId=Ft;var Dt=Ne.scope(),vt=Ne.scope();$e(Dt.entry,"for(",Ft,"=0;",Ft,"<",zt,";++",Ft,"){",_t,"=",Ut,"[",Ft,"];",vt,"}",Dt.exit);function lr(gn){return gn.contextDep&&Bt||gn.propDep}function _r(gn){return!lr(gn)}if(st.needsContext&&ss(Ne,vt,st.context),st.needsFramebuffer&&Vs(Ne,vt,st.framebuffer),wa(Ne,vt,st.state,lr),st.profile&&lr(st.profile)&&io(Ne,vt,st,!1,!0),It)st.useVAO?st.drawVAO?lr(st.drawVAO)?vt(Ne.shared.vao,".setVAO(",st.drawVAO.append(Ne,vt),");"):Dt(Ne.shared.vao,".setVAO(",st.drawVAO.append(Ne,Dt),");"):Dt(Ne.shared.vao,".setVAO(",Ne.shared.vao,".targetVAO);"):(Dt(Ne.shared.vao,".setVAO(null);"),Y(Ne,Dt,st,It.attributes,_r),Y(Ne,vt,st,It.attributes,lr)),D(Ne,Dt,st,It.uniforms,_r,!1),D(Ne,vt,st,It.uniforms,lr,!0),J(Ne,Dt,vt,st);else{var Br=Ne.global.def("{}"),Di=st.shader.progVar.append(Ne,vt),ci=vt.def(Di,".id"),bi=vt.def(Br,"[",ci,"]");vt(Ne.shared.gl,".useProgram(",Di,".program);","if(!",bi,"){",bi,"=",Br,"[",ci,"]=",Ne.link(function(gn){return O(ne,Ne,st,gn,2)}),"(",Di,");}",bi,".call(this,a0[",Ft,"],",Ft,");")}}function Oe(Ne,$e){var st=Ne.proc("batch",2);Ne.batchId="0",ol(Ne,st);var It=!1,Bt=!0;Object.keys($e.context).forEach(function(Br){It=It||$e.context[Br].propDep}),It||(ss(Ne,st,$e.context),Bt=!1);var Ft=$e.framebuffer,Ut=!1;Ft?(Ft.propDep?It=Ut=!0:Ft.contextDep&&It&&(Ut=!0),Ut||Vs(Ne,st,Ft)):Vs(Ne,st,null),$e.state.viewport&&$e.state.viewport.propDep&&(It=!0);function zt(Br){return Br.contextDep&&It||Br.propDep}Ys(Ne,st,$e),wa(Ne,st,$e.state,function(Br){return!zt(Br)}),(!$e.profile||!zt($e.profile))&&io(Ne,st,$e,!1,"a1"),$e.contextDep=It,$e.needsContext=Bt,$e.needsFramebuffer=Ut;var _t=$e.shader.progVar;if(_t.contextDep&&It||_t.propDep)we(Ne,st,$e,null);else{var Dt=_t.append(Ne,st);if(st(Ne.shared.gl,".useProgram(",Dt,".program);"),$e.shader.program)we(Ne,st,$e,$e.shader.program);else{st(Ne.shared.vao,".setVAO(null);");var vt=Ne.global.def("{}"),lr=st.def(Dt,".id"),_r=st.def(vt,"[",lr,"]");st(Ne.cond(_r).then(_r,".call(this,a0,a1);").else(_r,"=",vt,"[",lr,"]=",Ne.link(function(Br){return O(we,Ne,$e,Br,2)}),"(",Dt,");",_r,".call(this,a0,a1);"))}}Object.keys($e.state).length>0&&st(Ne.shared.current,".dirty=true;"),Ne.shared.vao&&st(Ne.shared.vao,".setVAO(null);")}function ht(Ne,$e){var st=Ne.proc("scope",3);Ne.batchId="a2";var It=Ne.shared,Bt=It.current;if(ss(Ne,st,$e.context),$e.framebuffer&&$e.framebuffer.append(Ne,st),Ti(Object.keys($e.state)).forEach(function(zt){var _t=$e.state[zt],Dt=_t.append(Ne,st);En(Dt)?Dt.forEach(function(vt,lr){pn(vt)?st.set(Ne.next[zt],"["+lr+"]",vt):st.set(Ne.next[zt],"["+lr+"]",Ne.link(vt,{stable:!0}))}):Pn(_t)?st.set(It.next,"."+zt,Ne.link(Dt,{stable:!0})):st.set(It.next,"."+zt,Dt)}),io(Ne,st,$e,!0,!0),[Mt,yr,$t,Cr,Jt].forEach(function(zt){var _t=$e.draw[zt];if(_t){var Dt=_t.append(Ne,st);pn(Dt)?st.set(It.draw,"."+zt,Dt):st.set(It.draw,"."+zt,Ne.link(Dt),{stable:!0})}}),Object.keys($e.uniforms).forEach(function(zt){var _t=$e.uniforms[zt].append(Ne,st);Array.isArray(_t)&&(_t="["+_t.map(function(Dt){return pn(Dt)?Dt:Ne.link(Dt,{stable:!0})})+"]"),st.set(It.uniforms,"["+Ne.link(bt.id(zt),{stable:!0})+"]",_t)}),Object.keys($e.attributes).forEach(function(zt){var _t=$e.attributes[zt].append(Ne,st),Dt=Ne.scopeAttrib(zt);Object.keys(new Zr).forEach(function(vt){st.set(Dt,"."+vt,_t[vt])})}),$e.scopeVAO){var Ft=$e.scopeVAO.append(Ne,st);pn(Ft)?st.set(It.vao,".targetVAO",Ft):st.set(It.vao,".targetVAO",Ne.link(Ft,{stable:!0}))}function Ut(zt){var _t=$e.shader[zt];if(_t){var Dt=_t.append(Ne,st);pn(Dt)?st.set(It.shader,"."+zt,Dt):st.set(It.shader,"."+zt,Ne.link(Dt,{stable:!0}))}}Ut(Ze),Ut(ut),Object.keys($e.state).length>0&&(st(Bt,".dirty=true;"),st.exit(Bt,".dirty=true;")),st("a1(",Ne.shared.context,",a0,",Ne.batchId,");")}function Yt(Ne){if(!(typeof Ne!="object"||En(Ne))){for(var $e=Object.keys(Ne),st=0;st<$e.length;++st)if(h.isDynamic(Ne[$e[st]]))return!0;return!1}}function cr(Ne,$e,st){var It=$e.static[st];if(!It||!Yt(It))return;var Bt=Ne.global,Ft=Object.keys(It),Ut=!1,zt=!1,_t=!1,Dt=Ne.global.def("{}");Ft.forEach(function(lr){var _r=It[lr];if(h.isDynamic(_r)){typeof _r=="function"&&(_r=It[lr]=h.unbox(_r));var Br=Bn(_r,null);Ut=Ut||Br.thisDep,_t=_t||Br.propDep,zt=zt||Br.contextDep}else{switch(Bt(Dt,".",lr,"="),typeof _r){case"number":Bt(_r);break;case"string":Bt('"',_r,'"');break;case"object":Array.isArray(_r)&&Bt("[",_r.join(),"]");break;default:Bt(Ne.link(_r));break}Bt(";")}});function vt(lr,_r){Ft.forEach(function(Br){var Di=It[Br];if(h.isDynamic(Di)){var ci=lr.invoke(_r,Di);_r(Dt,".",Br,"=",ci,";")}})}$e.dynamic[st]=new h.DynamicVariable(Zo,{thisDep:Ut,contextDep:zt,propDep:_t,ref:Dt,append:vt}),delete $e.static[st]}function Nt(Ne,$e,st,It,Bt){var Ft=Cn();Ft.stats=Ft.link(Bt),Object.keys($e.static).forEach(function(zt){cr(Ft,$e,zt)}),fr.forEach(function(zt){cr(Ft,Ne,zt)});var Ut=Vl(Ne,$e,st,It,Ft);return Ut.shader.program&&(Ut.shader.program.attributes.sort(function(zt,_t){return zt.name<_t.name?-1:1}),Ut.shader.program.uniforms.sort(function(zt,_t){return zt.name<_t.name?-1:1})),de(Ft,Ut),ht(Ft,Ut),Oe(Ft,Ut),e(Ft.compile(),{destroy:function(){Ut.shader.program.destroy()}})}return{next:qn,current:Xi,procs:function(){var Ne=Cn(),$e=Ne.proc("poll"),st=Ne.proc("refresh"),It=Ne.block();$e(It),st(It);var Bt=Ne.shared,Ft=Bt.gl,Ut=Bt.next,zt=Bt.current;It(zt,".dirty=false;"),Vs(Ne,$e),Vs(Ne,st,null,!0);var _t;Ii&&(_t=Ne.link(Ii)),Ot.oes_vertex_array_object&&st(Ne.link(Ot.oes_vertex_array_object),".bindVertexArrayOES(null);");var Dt=st.def(Bt.attributes),vt=st.def(0),lr=Ne.cond(vt,".buffer");lr.then(Ft,".enableVertexAttribArray(i);",Ft,".bindBuffer(",br,",",vt,".buffer.buffer);",Ft,".vertexAttribPointer(i,",vt,".size,",vt,".type,",vt,".normalized,",vt,".stride,",vt,".offset);").else(Ft,".disableVertexAttribArray(i);",Ft,".vertexAttrib4f(i,",vt,".x,",vt,".y,",vt,".z,",vt,".w);",vt,".buffer=null;");var _r=Ne.link(Lr.maxAttributes,{stable:!0});return st("for(var i=0;i<",_r,";++i){",vt,"=",Dt,"[i];",lr,"}"),Ii&&st("for(var i=0;i<",_r,";++i){",_t,".vertexAttribDivisorANGLE(i,",Dt,"[i].divisor);","}"),st(Ne.shared.vao,".currentVAO=null;",Ne.shared.vao,".setVAO(",Ne.shared.vao,".targetVAO);"),Object.keys(si).forEach(function(Br){var Di=si[Br],ci=It.def(Ut,".",Br),bi=Ne.block();bi("if(",ci,"){",Ft,".enable(",Di,")}else{",Ft,".disable(",Di,")}",zt,".",Br,"=",ci,";"),st(bi),$e("if(",ci,"!==",zt,".",Br,"){",bi,"}")}),Object.keys(mn).forEach(function(Br){var Di=mn[Br],ci=Xi[Br],bi,gn,tn=Ne.block();if(tn(Ft,".",Di,"("),En(ci)){var Ei=ci.length;bi=Ne.global.def(Ut,".",Br),gn=Ne.global.def(zt,".",Br),tn(S(Ei,function(Oi){return bi+"["+Oi+"]"}),");",S(Ei,function(Oi){return gn+"["+Oi+"]="+bi+"["+Oi+"];"}).join("")),$e("if(",S(Ei,function(Oi){return bi+"["+Oi+"]!=="+gn+"["+Oi+"]"}).join("||"),"){",tn,"}")}else bi=It.def(Ut,".",Br),gn=It.def(zt,".",Br),tn(bi,");",zt,".",Br,"=",bi,";"),$e("if(",bi,"!==",gn,"){",tn,"}");st(tn)}),Ne.compile()}(),compile:Nt}}function Ia(){return{vaoCount:0,bufferCount:0,elementsCount:0,framebufferCount:0,shaderCount:0,textureCount:0,cubeCount:0,renderbufferCount:0,maxTextureUnits:0}}var yo=34918,Da=34919,go=35007,Is=function(Me,bt){if(!bt.ext_disjoint_timer_query)return null;var Ot=[];function Lr(){return Ot.pop()||bt.ext_disjoint_timer_query.createQueryEXT()}function Vr(yi){Ot.push(yi)}var Or=[];function Nr(yi){var Ii=Lr();bt.ext_disjoint_timer_query.beginQueryEXT(go,Ii),Or.push(Ii),ji(Or.length-1,Or.length,yi)}function vi(){bt.ext_disjoint_timer_query.endQueryEXT(go)}function Ni(){this.startQueryIndex=-1,this.endQueryIndex=-1,this.sum=0,this.stats=null}var qi=[];function Si(){return qi.pop()||new Ni}function Vn(yi){qi.push(yi)}var Qi=[];function ji(yi,Ii,ui){var nn=Si();nn.startQueryIndex=yi,nn.endQueryIndex=Ii,nn.sum=0,nn.stats=ui,Qi.push(nn)}var oi=[],Tr=[];function Zr(){var yi,Ii,ui=Or.length;if(ui!==0){Tr.length=Math.max(Tr.length,ui+1),oi.length=Math.max(oi.length,ui+1),oi[0]=0,Tr[0]=0;var nn=0;for(yi=0,Ii=0;Ii=0;--O){var K=Nn[O];K&&K(oi,null,0)}Ot.flush(),Si&&Si.update()}function ba(){!ia&&Nn.length>0&&(ia=d.next(sa))}function is(){ia&&(d.cancel(sa),ia=null)}function Zs(O){O.preventDefault(),Vr=!0,is(),aa.forEach(function(K){K()})}function Ga(O){Ot.getError(),Vr=!1,Or.restore(),qn.restore(),Ii.restore(),fi.restore(),si.restore(),mn.restore(),nn.restore(),Si&&Si.restore(),Ji.procs.refresh(),ba(),Ki.forEach(function(K){K()})}pn&&(pn.addEventListener(Fo,Zs,!1),pn.addEventListener(Uo,Ga,!1));function Ml(){Nn.length=0,is(),pn&&(pn.removeEventListener(Fo,Zs),pn.removeEventListener(Uo,Ga)),qn.clear(),mn.clear(),si.clear(),nn.clear(),fi.clear(),ui.clear(),Ii.clear(),Si&&Si.clear(),Cn.forEach(function(O){O()})}function zo(O){function K(Ft){var Ut=e({},Ft);delete Ut.uniforms,delete Ut.attributes,delete Ut.context,delete Ut.vao,"stencil"in Ut&&Ut.stencil.op&&(Ut.stencil.opBack=Ut.stencil.opFront=Ut.stencil.op,delete Ut.stencil.op);function zt(_t){if(_t in Ut){var Dt=Ut[_t];delete Ut[_t],Object.keys(Dt).forEach(function(vt){Ut[_t+"."+vt]=Dt[vt]})}}return zt("blend"),zt("depth"),zt("cull"),zt("stencil"),zt("polygonOffset"),zt("scissor"),zt("sample"),"vao"in Ft&&(Ut.vao=Ft.vao),Ut}function de(Ft,Ut){var zt={},_t={};return Object.keys(Ft).forEach(function(Dt){var vt=Ft[Dt];if(h.isDynamic(vt)){_t[Dt]=h.unbox(vt,Dt);return}else if(Ut&&Array.isArray(vt)){for(var lr=0;lr0)return Ne.call(this,It(Ft|0),Ft|0)}else if(Array.isArray(Ft)){if(Ft.length)return Ne.call(this,Ft,Ft.length)}else return Nt.call(this,Ft)}return e(Bt,{stats:Yt,destroy:function(){cr.destroy()}})}var Qs=mn.setFBO=zo({framebuffer:h.define.call(null,$s,"framebuffer")});function al(O,K){var de=0;Ji.procs.poll();var ne=K.color;ne&&(Ot.clearColor(+ne[0]||0,+ne[1]||0,+ne[2]||0,+ne[3]||0),de|=Ms),"depth"in K&&(Ot.clearDepth(+K.depth),de|=Xs),"stencil"in K&&(Ot.clearStencil(K.stencil|0),de|=Un),Ot.clear(de)}function Vl(O){if("framebuffer"in O)if(O.framebuffer&&O.framebuffer_reglType==="framebufferCube")for(var K=0;K<6;++K)Qs(e({framebuffer:O.framebuffer.faces[K]},O),al);else Qs(O,al);else al(null,O)}function ss(O){Nn.push(O);function K(){var de=dl(Nn,O);function ne(){var we=dl(Nn,ne);Nn[we]=Nn[Nn.length-1],Nn.length-=1,Nn.length<=0&&is()}Nn[de]=ne}return ba(),{cancel:K}}function Vs(){var O=Bi.viewport,K=Bi.scissor_box;O[0]=O[1]=K[0]=K[1]=0,oi.viewportWidth=oi.framebufferWidth=oi.drawingBufferWidth=O[2]=K[2]=Ot.drawingBufferWidth,oi.viewportHeight=oi.framebufferHeight=oi.drawingBufferHeight=O[3]=K[3]=Ot.drawingBufferHeight}function Ys(){oi.tick+=1,oi.time=ol(),Vs(),Ji.procs.poll()}function wa(){fi.refresh(),Vs(),Ji.procs.refresh(),Si&&Si.update()}function ol(){return(v()-Vn)/1e3}wa();function io(O,K){var de;switch(O){case"frame":return ss(K);case"lost":de=aa;break;case"restore":de=Ki;break;case"destroy":de=Cn;break;default:}return de.push(K),{cancel:function(){for(var ne=0;ne=0},read:Ui,destroy:Ml,_gl:Ot,_refresh:wa,poll:function(){Ys(),Si&&Si.update()},now:ol,stats:vi,getCachedCode:Y,preloadCachedCode:D});return bt.onDone(null,J),J}return Sc})});var Iz=ye((z_r,NBe)=>{"use strict";var rVt=qX(),iVt=BBe();NBe.exports=function(t,r,n){var i=t._fullLayout,a=!0;return i._glcanvas.each(function(o){if(o.regl){o.regl.preloadCachedCode(n);return}if(!(o.pick&&!i._has("parcoords"))){try{o.regl=iVt({canvas:this,attributes:{antialias:!o.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||window.devicePixelRatio,extensions:r||[],cachedCode:n||{}})}catch(s){a=!1}o.regl||(a=!1),a&&this.addEventListener("webglcontextlost",function(s){t&&t.emit&&t.emit("plotly_webglcontextlost",{event:s,layer:o.key})},!1)}}),a||rVt({container:i._glcontainer.node()}),a}});var bK=ye((xK,jBe)=>{"use strict";var UBe=xY(),VBe=JY(),nVt=COe(),GBe=OBe(),_K=Pr(),aVt=Cg().selectMode,oVt=Iz(),sVt=Ru(),lVt=EU(),uVt=gY().styleTextSelection,HBe={};function cVt(e,t,r,n){var i=e._size,a=e.width*n,o=e.height*n,s=i.l*n,l=i.b*n,u=i.r*n,c=i.t*n,f=i.w*n,h=i.h*n;return[s+t.domain[0]*f,l+r.domain[0]*h,a-u-(1-t.domain[1])*f,o-c-(1-r.domain[1])*h]}var xK=jBe.exports=function(t,r,n){if(n.length){var i=t._fullLayout,a=r._scene,o=r.xaxis,s=r.yaxis,l,u;if(a){var c=oVt(t,["ANGLE_instanced_arrays","OES_element_index_uint"],HBe);if(!c){a.init();return}var f=a.count,h=i._glcanvas.data()[0].regl;if(lVt(t,r,n),a.dirty){if((a.line2d||a.error2d)&&!(a.scatter2d||a.fill2d||a.glText)&&h.clear({color:!0,depth:!0}),a.error2d===!0&&(a.error2d=nVt(h)),a.line2d===!0&&(a.line2d=VBe(h)),a.scatter2d===!0&&(a.scatter2d=UBe(h)),a.fill2d===!0&&(a.fill2d=VBe(h)),a.glText===!0)for(a.glText=new Array(f),l=0;la.glText.length){var d=f-a.glText.length;for(l=0;lie&&(isNaN(H[ae])||isNaN(H[ae+1]));)ae-=2;N.positions=H.slice(ie,ae+2)}return N}),a.line2d.update(a.lineOptions)),a.error2d){var b=(a.errorXOptions||[]).concat(a.errorYOptions||[]);a.error2d.update(b)}a.scatter2d&&a.scatter2d.update(a.markerOptions),a.fillOrder=_K.repeat(null,f),a.fill2d&&(a.fillOptions=a.fillOptions.map(function(N,H){var ie=n[H];if(!(!N||!ie||!ie[0]||!ie[0].trace)){var ae=ie[0],_e=ae.trace,Ee=ae.t,Ce=a.lineOptions[H],ge,re,Se=[];_e._ownfill&&Se.push(H),_e._nexttrace&&Se.push(H+1),Se.length&&(a.fillOrder[H]=Se);var ke=[],be=Ce&&Ce.positions||Ee.positions,Be,Le;if(_e.fill==="tozeroy"){for(Be=0;BeBe&&isNaN(be[Le+1]);)Le-=2;be[Be+1]!==0&&(ke=[be[Be],0]),ke=ke.concat(be.slice(Be,Le+2)),be[Le+1]!==0&&(ke=ke.concat([be[Le],0]))}else if(_e.fill==="tozerox"){for(Be=0;BeBe&&isNaN(be[Le]);)Le-=2;be[Be]!==0&&(ke=[0,be[Be+1]]),ke=ke.concat(be.slice(Be,Le+2)),be[Le]!==0&&(ke=ke.concat([0,be[Le+1]]))}else if(_e.fill==="toself"||_e.fill==="tonext"){for(ke=[],ge=0,N.splitNull=!0,re=0;re-1;for(let[N]of n)if(N){var T=N.trace,L=N.t,x=L.index,C=T._length,S=L.x,g=L.y;if(T.selectedpoints||k||M){if(k||(k=!0),T.selectedpoints){var P=a.selectBatch[x]=_K.selIndices2selPoints(T),E={};for(u=0;u{"use strict";var WBe=c7e();WBe.plot=bK();XBe.exports=WBe});var KBe=ye((O_r,YBe)=>{"use strict";YBe.exports=ZBe()});var wK=ye((B_r,eNe)=>{"use strict";var fVt=pf(),QBe=Tu(),JBe=vf().axisHoverFormat,{hovertemplateAttrs:hVt,templatefallbackAttrs:dVt}=Ll(),qk=mk(),vVt=Rh().idRegex,pVt=vl().templatedArray,b5=Ao().extendFlat,d1=fVt.marker,gVt=d1.line,mVt=b5(QBe("marker.line",{editTypeOverride:"calc"}),{width:b5({},gVt.width,{editType:"calc"}),editType:"calc"}),Rz=b5(QBe("marker"),{symbol:d1.symbol,angle:d1.angle,size:b5({},d1.size,{editType:"markerSize"}),sizeref:d1.sizeref,sizemin:d1.sizemin,sizemode:d1.sizemode,opacity:d1.opacity,colorbar:d1.colorbar,line:mVt,editType:"calc"});Rz.color.editType=Rz.cmin.editType=Rz.cmax.editType="style";function $Be(e){return{valType:"info_array",freeLength:!0,editType:"calc",items:{valType:"subplotid",regex:vVt[e],editType:"plot"}}}eNe.exports={dimensions:pVt("dimension",{visible:{valType:"boolean",dflt:!0,editType:"calc"},label:{valType:"string",editType:"calc"},values:{valType:"data_array",editType:"calc+clearAxisTypes"},axis:{type:{valType:"enumerated",values:["linear","log","date","category"],editType:"calc+clearAxisTypes"},matches:{valType:"boolean",dflt:!1,editType:"calc"},editType:"calc+clearAxisTypes"},editType:"calc+clearAxisTypes"}),text:b5({},qk.text,{}),hovertext:b5({},qk.hovertext,{}),hovertemplate:hVt(),hovertemplatefallback:dVt(),xhoverformat:JBe("x"),yhoverformat:JBe("y"),marker:Rz,xaxes:$Be("x"),yaxes:$Be("y"),diagonal:{visible:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"},showupperhalf:{valType:"boolean",dflt:!0,editType:"calc"},showlowerhalf:{valType:"boolean",dflt:!0,editType:"calc"},selected:{marker:qk.selected.marker,editType:"calc"},unselected:{marker:qk.unselected.marker,editType:"calc"},opacity:qk.opacity}});var Dz=ye((N_r,tNe)=>{"use strict";tNe.exports=function(e,t,r,n){n||(n=1/0);var i,a;for(i=0;i{"use strict";var TK=Pr(),yVt=Kd(),rNe=wK(),_Vt=Ru(),xVt=$p(),bVt=Dz(),wVt=ZF().isOpenSymbol;iNe.exports=function(t,r,n,i){function a(d,v){return TK.coerce(t,r,rNe,d,v)}var o=yVt(t,r,{name:"dimensions",handleItemDefaults:TVt}),s=a("diagonal.visible"),l=a("showupperhalf"),u=a("showlowerhalf"),c=bVt(r,o,"values");if(!c||!s&&!l&&!u){r.visible=!1;return}a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),a("xhoverformat"),a("yhoverformat"),xVt(t,r,n,i,a,{noAngleRef:!0,noLineDash:!0,noStandOff:!0});var f=wVt(r.marker.symbol),h=_Vt.isBubble(r);a("marker.line.width",f||h?1:0),AVt(t,r,i,a),TK.coerceSelectionMarkerOpacity(r,a)};function TVt(e,t){function r(i,a){return TK.coerce(e,t,rNe.dimensions,i,a)}r("label");var n=r("values");n&&n.length?r("visible"):t.visible=!1,r("axis.type"),r("axis.matches")}function AVt(e,t,r,n){var i=t.dimensions,a=i.length,o=t.showupperhalf,s=t.showlowerhalf,l=t.diagonal.visible,u,c,f=new Array(a),h=new Array(a);for(u=0;uc&&o||u{"use strict";var aNe=Pr();oNe.exports=function(t,r){var n=t._fullLayout,i=r.uid,a=n._splomScenes;a||(a=n._splomScenes={});var o={dirty:!0,selectBatch:[],unselectBatch:[]},s={matrix:!1,selectBatch:[],unselectBatch:[]},l=a[r.uid];return l||(l=a[i]=aNe.extendFlat({},o,s),l.draw=function(){l.matrix&&l.matrix.draw&&(l.selectBatch.length||l.unselectBatch.length?l.matrix.draw(l.unselectBatch,l.selectBatch):l.matrix.draw()),l.dirty=!1},l.destroy=function(){l.matrix&&l.matrix.destroy&&l.matrix.destroy(),l.matrixOptions=null,l.selectBatch=null,l.unselectBatch=null,l=null}),l.dirty||aNe.extendFlat(l,o),l}});var cNe=ye((G_r,uNe)=>{"use strict";var AK=Pr(),Fz=df(),SVt=O0().calcMarkerSize,MVt=O0().calcAxisExpansion,EVt=z0(),lNe=lw().markerSelection,kVt=lw().markerStyle,CVt=sNe(),LVt=fs().BADNUM,PVt=gx().TOO_MANY_POINTS;uNe.exports=function(t,r){var n=r.dimensions,i=r._length,a={},o=a.cdata=[],s=a.data=[],l=r._visibleDims=[],u,c,f,h,d;function v(M,T){for(var L=M.makeCalcdata({v:T.values,vcalendar:r.calendar},"v"),x=0;xPVt,p;for(b?p=a.sizeAvg||Math.max(a.size,3):p=SVt(r,i),c=0;c{(function(){var e,t,r,n,i,a;typeof performance!="undefined"&&performance!==null&&performance.now?Ok.exports=function(){return performance.now()}:typeof process!="undefined"&&process!==null&&process.hrtime?(Ok.exports=function(){return(e()-i)/1e6},t=process.hrtime,e=function(){var o;return o=t(),o[0]*1e9+o[1]},n=e(),a=process.uptime()*1e9,i=n-a):Date.now?(Ok.exports=function(){return Date.now()-r},r=Date.now()):(Ok.exports=function(){return new Date().getTime()-r},r=new Date().getTime())}).call(fNe)});var vNe=ye((H_r,Oz)=>{var IVt=hNe(),v1=window,zz=["moz","webkit"],T5="AnimationFrame",A5=v1["request"+T5],Bk=v1["cancel"+T5]||v1["cancelRequest"+T5];for(w5=0;!A5&&w5{pNe.exports=function(t,r){var n=typeof t=="number",i=typeof r=="number";n&&!i?(r=t,t=0):!n&&!i&&(t=0,r=0),t=t|0,r=r|0;var a=r-t;if(a<0)throw new Error("array length must be positive");for(var o=new Array(a),s=0,l=t;s{"use strict";var RVt=xY(),DVt=ty(),FVt=nw(),mNe=vNe(),zVt=gNe(),MK=l5(),qVt=aw();_Ne.exports=Sx;function Sx(e,t){if(!(this instanceof Sx))return new Sx(e,t);this.traces=[],this.passes={},this.regl=e,this.scatter=RVt(e),this.canvas=this.scatter.canvas}Sx.prototype.render=function(...e){return e.length&&this.update(...e),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?this.planned==null&&(this.planned=mNe(()=>{this.draw(),this.dirty=!0,this.planned=null})):(this.draw(),this.dirty=!0,mNe(()=>{this.dirty=!1})),this)};Sx.prototype.update=function(...e){if(!e.length)return;for(let n=0;nb||!i.lower&&m{t[a+s]=n})}this.scatter.draw(...t)}return this};Sx.prototype.destroy=function(){return this.traces.forEach(e=>{e.buffer&&e.buffer.destroy&&e.buffer.destroy()}),this.traces=null,this.passes=null,this.scatter.destroy(),this};function OVt(e,t,r){let n=e.id!=null?e.id:e,i=t,a=r;return n<<16|(i&255)<<8|a&255}function Bz(e,t,r){let n,i,a,o,s,l,u,c,f=e[t],h=e[r];return f.length>2?(n=f[0],a=f[2],i=f[1],o=f[3]):f.length?(n=i=f[0],a=o=f[1]):(n=f.x,i=f.y,a=f.x+f.width,o=f.y+f.height),h.length>2?(s=h[0],u=h[2],l=h[1],c=h[3]):h.length?(s=l=h[0],u=c=h[1]):(s=h.x,l=h.y,u=h.x+h.width,c=h.y+h.height),[s,i,u,o]}function yNe(e){if(typeof e=="number")return[e,e,e,e];if(e.length===2)return[e[0],e[1],e[0],e[1]];{let t=MK(e);return[t.x,t.y,t.x+t.width,t.y+t.height]}}});var wNe=ye((X_r,bNe)=>{"use strict";var BVt=xNe(),EK=Pr(),Nz=df(),NVt=Cg().selectMode;bNe.exports=function(t,r,n){if(n.length)for(var i=0;i-1,E=NVt(c)||!!i.selectedpoints||P,z=!0;if(E){var q=i._length;if(i.selectedpoints){o.selectBatch=i.selectedpoints;var V=i.selectedpoints,G={};for(d=0;d{"use strict";TNe.getDimIndex=function(t,r){for(var n=r._id,i=n.charAt(0),a={x:0,y:1}[i],o=t._visibleDims,s=0;s{"use strict";var ANe=kK(),VVt=XF().calcHover,SNe=ho().getFromId,GVt=Ao().extendFlat;function HVt(e,t,r,n,i){i||(i={});var a=(n||"").charAt(0)==="x",o=(n||"").charAt(0)==="y",s=MNe(e,t,r);if((a||o)&&i.hoversubplots==="axis"&&s[0])for(var l=(a?e.xa:e.ya)._subplotsWith,u=i.gd,c=GVt({},e),f=0;f{"use strict";var INe=Pr(),CNe=INe.pushUnique,LNe=Ru(),PNe=kK();RNe.exports=function(t,r){var n=t.cd,i=n[0].trace,a=n[0].t,o=t.scene,s=o.matrixOptions.cdata,l=t.xaxis,u=t.yaxis,c=[];if(!o)return c;var f=!LNe.hasMarkers(i)&&!LNe.hasText(i);if(i.visible!==!0||f)return c;var h=PNe.getDimIndex(i,l),d=PNe.getDimIndex(i,u);if(h===!1||d===!1)return c;var v=a.xpx[h],m=a.ypx[d],b=s[h],p=s[d],k=(t.scene.selectBatch||[]).slice(),M=[];if(r!==!1&&!r.degenerate)for(var T=0;T{"use strict";var FNe=Pr(),jVt=z0(),WVt=lw().markerStyle;zNe.exports=function(t,r){var n=r.trace,i=t._fullLayout._splomScenes[n.uid];if(i){jVt(t,n),FNe.extendFlat(i.matrixOptions,WVt(t,n));var a=FNe.extendFlat({},i.matrixOptions,i.viewOpts);i.matrix.update(a,null)}}});var BNe=ye(($_r,ONe)=>{"use strict";var XVt=Oa(),ZVt=xV();ONe.exports={moduleType:"trace",name:"splom",categories:["gl","regl","cartesian","symbols","showLegend","scatter-like"],attributes:wK(),supplyDefaults:nNe(),colorbar:Qd(),calc:cNe(),plot:wNe(),hoverPoints:kNe().hoverPoints,selectPoints:DNe(),editStyle:qNe(),meta:{}};XVt.register(ZVt)});var jNe=ye((Q_r,HNe)=>{"use strict";var YVt=JY(),KVt=Oa(),JVt=Iz(),$Vt=Id().getModuleCalcData,Mx=mh(),NNe=df().getFromId,UNe=ho().shouldShowZeroLine,VNe="splom",GNe={};function QVt(e){var t=e._fullLayout,r=KVt.getModule(VNe),n=$Vt(e.calcdata,r)[0],i=JVt(e,["ANGLE_instanced_arrays","OES_element_index_uint"],GNe);i&&(t._hasOnlyLargeSploms&&CK(e),r.plot(e,{},n))}function eGt(e){var t=e.calcdata,r=e._fullLayout;r._hasOnlyLargeSploms&&CK(e);for(var n=0;n{"use strict";var WNe=BNe();WNe.basePlotModule=jNe(),XNe.exports=WNe});var KNe=ye((txr,YNe)=>{"use strict";YNe.exports=ZNe()});var IK=ye((rxr,JNe)=>{"use strict";var nGt=Tu(),LK=Rd(),PK=ec(),aGt=Cc().attributes,Uz=Ao().extendFlat,oGt=vl().templatedArray;JNe.exports={domain:aGt({name:"parcoords",trace:!0,editType:"plot"}),labelangle:{valType:"angle",dflt:0,editType:"plot"},labelside:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},labelfont:PK({editType:"plot"}),tickfont:PK({autoShadowDflt:!0,editType:"plot"}),rangefont:PK({editType:"plot"}),dimensions:oGt("dimension",{label:{valType:"string",editType:"plot"},tickvals:Uz({},LK.tickvals,{editType:"plot"}),ticktext:Uz({},LK.ticktext,{editType:"plot"}),tickformat:Uz({},LK.tickformat,{editType:"plot"}),visible:{valType:"boolean",dflt:!0,editType:"plot"},range:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},constraintrange:{valType:"info_array",freeLength:!0,dimensions:"1-2",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},multiselect:{valType:"boolean",dflt:!0,editType:"plot"},values:{valType:"data_array",editType:"calc"},editType:"calc"}),line:Uz({editType:"calc"},nGt("line",{colorscaleDflt:"Viridis",autoColorDflt:!1,editTypeOverride:"calc"})),unselected:{line:{color:{valType:"color",dflt:"#7f7f7f",editType:"plot"},opacity:{valType:"number",min:0,max:1,dflt:"auto",editType:"plot"},editType:"plot"},editType:"plot"}}});var Nk=ye((ixr,$Ne)=>{"use strict";$Ne.exports={maxDimensionCount:60,overdrag:45,verticalPadding:2,tickDistance:50,canvasPixelRatio:1,blockLineCount:5e3,layers:["contextLineLayer","focusLineLayer","pickLineLayer"],axisTitleOffset:28,axisExtentOffset:10,bar:{width:4,captureWidth:10,fillColor:"magenta",fillOpacity:1,snapDuration:150,snapRatio:.25,snapClose:.01,strokeOpacity:1,strokeWidth:1,handleHeight:8,handleOpacity:1,handleOverlap:0},cn:{axisExtentText:"axis-extent-text",parcoordsLineLayers:"parcoords-line-layers",parcoordsLineLayer:"parcoords-lines",parcoords:"parcoords",parcoordsControlView:"parcoords-control-view",yAxis:"y-axis",axisOverlays:"axis-overlays",axis:"axis",axisHeading:"axis-heading",axisTitle:"axis-title",axisExtent:"axis-extent",axisExtentTop:"axis-extent-top",axisExtentTopText:"axis-extent-top-text",axisExtentBottom:"axis-extent-bottom",axisExtentBottomText:"axis-extent-bottom-text",axisBrush:"axis-brush"},id:{filterBarPattern:"filter-bar-pattern"}}});var ny=ye((nxr,eUe)=>{"use strict";var sGt=YS();function QNe(e){return[e]}eUe.exports={keyFun:function(e){return e.key},repeat:QNe,descend:sGt,wrap:QNe,unwrap:function(e){return e[0]}}});var FK=ye((axr,fUe)=>{"use strict";var Th=Nk(),im=qa(),lGt=ny().keyFun,Vz=ny().repeat,S5=Pr().sorterAsc,uGt=Pr().strTranslate,tUe=Th.bar.snapRatio;function rUe(e,t){return e*(1-tUe)+t*tUe}var iUe=Th.bar.snapClose;function cGt(e,t){return e*(1-iUe)+t*iUe}function Hz(e,t,r,n){if(fGt(r,n))return r;var i=e?-1:1,a=0,o=t.length-1;if(i<0){var s=a;a=o,o=s}for(var l=t[a],u=l,c=a;i*c=t[r][0]&&e<=t[r][1])return!0;return!1}function hGt(e){e.attr("x",-Th.bar.captureWidth/2).attr("width",Th.bar.captureWidth)}function dGt(e){e.attr("visibility","visible").style("visibility","visible").attr("fill","yellow").attr("opacity",0)}function vGt(e){if(!e.brush.filterSpecified)return"0,"+e.height;for(var t=nUe(e.brush.filter.getConsolidated(),e.height),r=[0],n,i,a,o=t.length?t[0][0]:null,s=0;se[1]+r||t=.9*e[1]+.1*e[0]?"n":t<=.9*e[0]+.1*e[1]?"s":"ns"}function aUe(){im.select(document.body).style("cursor",null)}function DK(e){e.attr("stroke-dasharray",vGt)}function Gz(e,t){var r=im.select(e).selectAll(".highlight, .highlight-shadow"),n=t?r.transition().duration(Th.bar.snapDuration).each("end",t):r;DK(n)}function oUe(e,t){var r=e.brush,n=r.filterSpecified,i=NaN,a={},o;if(n){var s=e.height,l=r.filter.getConsolidated(),u=nUe(l,s),c=NaN,f=NaN,h=NaN;for(o=0;o<=u.length;o++){var d=u[o];if(d&&d[0]<=t&&t<=d[1]){c=o;break}else if(f=o?o-1:NaN,d&&d[0]>t){h=o;break}}if(i=c,isNaN(i)&&(isNaN(f)||isNaN(h)?i=isNaN(f)?h:f:i=t-u[f][1]=k[0]&&p<=k[1]){a.clickableOrdinalRange=k;break}}}return a}function gGt(e,t){im.event.sourceEvent.stopPropagation();var r=t.height-im.mouse(e)[1]-2*Th.verticalPadding,n=t.unitToPaddedPx.invert(r),i=t.brush,a=oUe(t,r),o=a.interval,s=i.svgBrush;if(s.wasDragged=!1,s.grabbingBar=a.region==="ns",s.grabbingBar){var l=o.map(t.unitToPaddedPx);s.grabPoint=r-l[0]-Th.verticalPadding,s.barLength=l[1]-l[0]}s.clickableOrdinalRange=a.clickableOrdinalRange,s.stayingIntervals=t.multiselect&&i.filterSpecified?i.filter.getConsolidated():[],o&&(s.stayingIntervals=s.stayingIntervals.filter(function(u){return u[0]!==o[0]&&u[1]!==o[1]})),s.startExtent=a.region?o[a.region==="s"?1:0]:n,t.parent.inBrushDrag=!0,s.brushStartCallback()}function sUe(e,t){im.event.sourceEvent.stopPropagation();var r=t.height-im.mouse(e)[1]-2*Th.verticalPadding,n=t.brush.svgBrush;n.wasDragged=!0,n._dragging=!0,n.grabbingBar?n.newExtent=[r-n.grabPoint,r+n.barLength-n.grabPoint].map(t.unitToPaddedPx.invert):n.newExtent=[n.startExtent,t.unitToPaddedPx.invert(r)].sort(S5),t.brush.filterSpecified=!0,n.extent=n.stayingIntervals.concat([n.newExtent]),n.brushCallback(t),Gz(e.parentNode)}function mGt(e,t){var r=t.brush,n=r.filter,i=r.svgBrush;i._dragging||(lUe(e,t),sUe(e,t),t.brush.svgBrush.wasDragged=!1),i._dragging=!1;var a=im.event;a.sourceEvent.stopPropagation();var o=i.grabbingBar;if(i.grabbingBar=!1,i.grabLocation=void 0,t.parent.inBrushDrag=!1,aUe(),!i.wasDragged){i.wasDragged=void 0,i.clickableOrdinalRange?r.filterSpecified&&t.multiselect?i.extent.push(i.clickableOrdinalRange):(i.extent=[i.clickableOrdinalRange],r.filterSpecified=!0):o?(i.extent=i.stayingIntervals,i.extent.length===0&&RK(r)):RK(r),i.brushCallback(t),Gz(e.parentNode),i.brushEndCallback(r.filterSpecified?n.getConsolidated():[]);return}var s=function(){n.set(n.getConsolidated())};if(t.ordinal){var l=t.unitTickvals;l[l.length-1]i.newExtent[0];i.extent=i.stayingIntervals.concat(u?[i.newExtent]:[]),i.extent.length||RK(r),i.brushCallback(t),u?Gz(e.parentNode,s):(s(),Gz(e.parentNode))}else s();i.brushEndCallback(r.filterSpecified?n.getConsolidated():[])}function lUe(e,t){var r=t.height-im.mouse(e)[1]-2*Th.verticalPadding,n=oUe(t,r),i="crosshair";n.clickableOrdinalRange?i="pointer":n.region&&(i=n.region+"-resize"),im.select(document.body).style("cursor",i)}function yGt(e){e.on("mousemove",function(t){im.event.preventDefault(),t.parent.inBrushDrag||lUe(this,t)}).on("mouseleave",function(t){t.parent.inBrushDrag||aUe()}).call(im.behavior.drag().on("dragstart",function(t){gGt(this,t)}).on("drag",function(t){sUe(this,t)}).on("dragend",function(t){mGt(this,t)}))}function uUe(e,t){return e[0]-t[0]}function _Gt(e,t,r){var n=r._context.staticPlot,i=e.selectAll(".background").data(Vz);i.enter().append("rect").classed("background",!0).call(hGt).call(dGt).style("pointer-events",n?"none":"auto").attr("transform",uGt(0,Th.verticalPadding)),i.call(yGt).attr("height",function(s){return s.height-Th.verticalPadding});var a=e.selectAll(".highlight-shadow").data(Vz);a.enter().append("line").classed("highlight-shadow",!0).attr("x",-Th.bar.width/2).attr("stroke-width",Th.bar.width+Th.bar.strokeWidth).attr("stroke",t).attr("opacity",Th.bar.strokeOpacity).attr("stroke-linecap","butt"),a.attr("y1",function(s){return s.height}).call(DK);var o=e.selectAll(".highlight").data(Vz);o.enter().append("line").classed("highlight",!0).attr("x",-Th.bar.width/2).attr("stroke-width",Th.bar.width-Th.bar.strokeWidth).attr("stroke",Th.bar.fillColor).attr("opacity",Th.bar.fillOpacity).attr("stroke-linecap","butt"),o.attr("y1",function(s){return s.height}).call(DK)}function xGt(e,t,r){var n=e.selectAll("."+Th.cn.axisBrush).data(Vz,lGt);n.enter().append("g").classed(Th.cn.axisBrush,!0),_Gt(n,t,r)}function bGt(e){return e.svgBrush.extent.map(function(t){return t.slice()})}function RK(e){e.filterSpecified=!1,e.svgBrush.extent=[[-1/0,1/0]]}function wGt(e){return function(r){var n=r.brush,i=bGt(n),a=i.slice();n.filter.set(a),e()}}function cUe(e){for(var t=e.slice(),r=[],n,i=t.shift();i;){for(n=i.slice();(i=t.shift())&&i[0]<=n[1];)n[1]=Math.max(n[1],i[1]);r.push(n)}return r.length===1&&r[0][0]>r[0][1]&&(r=[]),r}function TGt(){var e=[],t,r;return{set:function(n){e=n.map(function(i){return i.slice().sort(S5)}).sort(uUe),e.length===1&&e[0][0]===-1/0&&e[0][1]===1/0&&(e=[[0,-1]]),t=cUe(e),r=e.reduce(function(i,a){return[Math.min(i[0],a[0]),Math.max(i[1],a[1])]},[1/0,-1/0])},get:function(){return e.slice()},getConsolidated:function(){return t},getBounds:function(){return r}}}function AGt(e,t,r,n,i,a){var o=TGt();return o.set(r),{filter:o,filterSpecified:t,svgBrush:{extent:[],brushStartCallback:n,brushCallback:wGt(i),brushEndCallback:a}}}function SGt(e,t){if(Array.isArray(e[0])?(e=e.map(function(n){return n.sort(S5)}),t.multiselect?e=cUe(e.sort(uUe)):e=[e[0]]):e=[e.sort(S5)],t.tickvals){var r=t.tickvals.slice().sort(S5);if(e=e.map(function(n){var i=[Hz(0,r,n[0],[]),Hz(1,r,n[1],[])];if(i[1]>i[0])return i}).filter(function(n){return n}),!e.length)return}return e.length>1?e:e[0]}fUe.exports={makeBrush:AGt,ensureAxisBrush:xGt,cleanRanges:SGt}});var vUe=ye((oxr,dUe)=>{"use strict";var Ex=Pr(),MGt=pv().hasColorscale,EGt=td(),kGt=Cc().defaults,CGt=Kd(),LGt=ho(),hUe=IK(),PGt=FK(),zK=Nk().maxDimensionCount,IGt=Dz();function RGt(e,t,r,n,i){var a=i("line.color",r);if(MGt(e,"line")&&Ex.isArrayOrTypedArray(a)){if(a.length)return i("line.colorscale"),EGt(e,t,n,i,{prefix:"line.",cLetter:"c"}),a.length;t.line.color=r}return 1/0}function DGt(e,t,r,n){function i(u,c){return Ex.coerce(e,t,hUe.dimensions,u,c)}var a=i("values"),o=i("visible");if(a&&a.length||(o=t.visible=!1),o){i("label"),i("tickvals"),i("ticktext"),i("tickformat");var s=i("range");t._ax={_id:"y",type:"linear",showexponent:"all",exponentformat:"B",range:s},LGt.setConvert(t._ax,n.layout),i("multiselect");var l=i("constraintrange");l&&(t.constraintrange=PGt.cleanRanges(l,t))}}dUe.exports=function(t,r,n,i){function a(c,f){return Ex.coerce(t,r,hUe,c,f)}var o=t.dimensions;Array.isArray(o)&&o.length>zK&&(Ex.log("parcoords traces support up to "+zK+" dimensions at the moment"),o.splice(zK));var s=CGt(t,r,{name:"dimensions",layout:i,handleItemDefaults:DGt}),l=RGt(t,r,n,i,a);kGt(r,i,a),(!Array.isArray(s)||!s.length)&&(r.visible=!1),IGt(r,s,"values",l);var u=Ex.extendFlat({},i.font,{size:Math.round(i.font.size/1.2)});Ex.coerceFont(a,"labelfont",u),Ex.coerceFont(a,"tickfont",u,{autoShadowDflt:!0}),Ex.coerceFont(a,"rangefont",u),a("labelangle"),a("labelside"),a("unselected.line.color"),a("unselected.line.opacity")}});var gUe=ye((sxr,pUe)=>{"use strict";var FGt=Pr().isArrayOrTypedArray,qK=tc(),zGt=ny().wrap;pUe.exports=function(t,r){var n,i;return qK.hasColorscale(r,"line")&&FGt(r.line.color)?(n=r.line.color,i=qK.extractOpts(r.line).colorscale,qK.calc(t,r,{vals:n,containerStr:"line",cLetter:"c"})):(n=qGt(r._length),i=[[0,r.line.color],[1,r.line.color]]),zGt({lineColor:n,cscale:i})};function qGt(e){for(var t=new Array(e),r=0;r>>16,(e&65280)>>>8,e&255],alpha:1};if(typeof e=="number")return{space:"rgb",values:[e>>>16,(e&65280)>>>8,e&255],alpha:1};if(e=String(e).toLowerCase(),OK.default[e])r=OK.default[e].slice(),i="rgb";else if(e==="transparent")n=0,i="rgb",r=[0,0,0];else if(e[0]==="#"){var a=e.slice(1),o=a.length,s=o<=4;n=1,s?(r=[parseInt(a[0]+a[0],16),parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16)],o===4&&(n=parseInt(a[3]+a[3],16)/255)):(r=[parseInt(a[0]+a[1],16),parseInt(a[2]+a[3],16),parseInt(a[4]+a[5],16)],o===8&&(n=parseInt(a[6]+a[7],16)/255)),r[0]||(r[0]=0),r[1]||(r[1]=0),r[2]||(r[2]=0),i="rgb"}else if(t=/^((?:rgba?|hs[lvb]a?|hwba?|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms|oklch|oklab|color))\s*\(([^\)]*)\)/.exec(e)){var l=t[1];i=l.replace(/a$/,"");var u=i==="cmyk"?4:i==="gray"?1:3;r=t[2].trim().split(/\s*[,\/]\s*|\s+/),i==="color"&&(i=r.shift()),r=r.map(function(h,d){if(h[h.length-1]==="%")return h=parseFloat(h)/100,d===3?h:i==="rgb"?h*255:i[0]==="h"||i[0]==="l"&&!d?h*100:i==="lab"?h*125:i==="lch"?d<2?h*150:h*360:i[0]==="o"&&!d?h:i==="oklab"?h*.4:i==="oklch"?d<2?h*.4:h*360:h;if(i[d]==="h"||d===2&&i[i.length-1]==="h"){if(mUe[h]!==void 0)return mUe[h];if(h.endsWith("deg"))return parseFloat(h);if(h.endsWith("turn"))return parseFloat(h)*360;if(h.endsWith("grad"))return parseFloat(h)*360/400;if(h.endsWith("rad"))return parseFloat(h)*180/Math.PI}return h==="none"?0:parseFloat(h)}),n=r.length>u?r.pop():1}else/[0-9](?:\s|\/|,)/.test(e)&&(r=e.match(/([0-9]+)/g).map(function(h){return parseFloat(h)}),i=((f=(c=e.match(/([a-z])/ig))==null?void 0:c.join(""))==null?void 0:f.toLowerCase())||"rgb");return{space:i,values:r,alpha:n}}var OK,yUe,mUe,_Ue=gu(()=>{OK=ktt(AX(),1),yUe=OGt,mUe={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}});var Uk,BK=gu(()=>{Uk={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]}});var jz,xUe=gu(()=>{BK();jz={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100,i,a,o,s,l,u=0;if(r===0)return l=n*255,[l,l,l];for(a=n<.5?n*(1+r):n+r-n*r,i=2*n-a,s=[0,0,0];u<3;)o=t+1/3*-(u-1),o<0?o++:o>1&&o--,l=6*o<1?i+(a-i)*6*o:2*o<1?a:3*o<2?i+(a-i)*(2/3-o)*6:i,s[u++]=l*255;return s}};Uk.hsl=function(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=a-i,s,l,u;return a===i?s=0:t===a?s=(r-n)/o:r===a?s=2+(n-t)/o:n===a&&(s=4+(t-r)/o),s=Math.min(s*60,360),s<0&&(s+=360),u=(i+a)/2,a===i?l=0:u<=.5?l=o/(a+i):l=o/(2-a-i),[s,l*100,u*100]}});var wUe={};yee(wUe,{default:()=>bUe});function bUe(e){Array.isArray(e)&&e.raw&&(e=String.raw(...arguments)),e instanceof Number&&(e=+e);var t,r,n,i=yUe(e);if(!i.space)return[];let a=i.space[0]==="h"?jz.min:Uk.min,o=i.space[0]==="h"?jz.max:Uk.max;return t=Array(3),t[0]=Math.min(Math.max(i.values[0],a[0]),o[0]),t[1]=Math.min(Math.max(i.values[1],a[1]),o[1]),t[2]=Math.min(Math.max(i.values[2],a[2]),o[2]),i.space[0]==="h"&&(t=jz.rgb(t)),t.push(Math.min(Math.max(i.alpha,0),1)),t}var TUe=gu(()=>{_Ue();BK();xUe()});var NK=ye(Wz=>{"use strict";var BGt=Pr().isTypedArray;Wz.convertTypedArray=function(e){return BGt(e)?Array.prototype.slice.call(e):e};Wz.isOrdinal=function(e){return!!e.tickvals};Wz.isVisible=function(e){return e.visible||!("visible"in e)}});var RUe=ye((gxr,IUe)=>{"use strict";var NGt=["precision highp float;","","varying vec4 fragColor;","","attribute vec4 p01_04, p05_08, p09_12, p13_16,"," p17_20, p21_24, p25_28, p29_32,"," p33_36, p37_40, p41_44, p45_48,"," p49_52, p53_56, p57_60, colors;","","uniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,"," loA, hiA, loB, hiB, loC, hiC, loD, hiD;","","uniform vec2 resolution, viewBoxPos, viewBoxSize;","uniform float maskHeight;","uniform float drwLayer; // 0: context, 1: focus, 2: pick","uniform vec4 contextColor;","uniform sampler2D maskTexture, palette;","","bool isPick = (drwLayer > 1.5);","bool isContext = (drwLayer < 0.5);","","const vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);","const vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);","","float val(mat4 p, mat4 v) {"," return dot(matrixCompMult(p, v) * UNITS, UNITS);","}","","float axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {"," float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);"," float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);"," return y1 * (1.0 - ratio) + y2 * ratio;","}","","int iMod(int a, int b) {"," return a - b * (a / b);","}","","bool fOutside(float p, float lo, float hi) {"," return (lo < hi) && (lo > p || p > hi);","}","","bool vOutside(vec4 p, vec4 lo, vec4 hi) {"," return ("," fOutside(p[0], lo[0], hi[0]) ||"," fOutside(p[1], lo[1], hi[1]) ||"," fOutside(p[2], lo[2], hi[2]) ||"," fOutside(p[3], lo[3], hi[3])"," );","}","","bool mOutside(mat4 p, mat4 lo, mat4 hi) {"," return ("," vOutside(p[0], lo[0], hi[0]) ||"," vOutside(p[1], lo[1], hi[1]) ||"," vOutside(p[2], lo[2], hi[2]) ||"," vOutside(p[3], lo[3], hi[3])"," );","}","","bool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {"," return mOutside(A, loA, hiA) ||"," mOutside(B, loB, hiB) ||"," mOutside(C, loC, hiC) ||"," mOutside(D, loD, hiD);","}","","bool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {"," mat4 pnts[4];"," pnts[0] = A;"," pnts[1] = B;"," pnts[2] = C;"," pnts[3] = D;",""," for(int i = 0; i < 4; ++i) {"," for(int j = 0; j < 4; ++j) {"," for(int k = 0; k < 4; ++k) {"," if(0 == iMod("," int(255.0 * texture2D(maskTexture,"," vec2("," (float(i * 2 + j / 2) + 0.5) / 8.0,"," (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight"," ))[3]"," ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),"," 2"," )) return true;"," }"," }"," }"," return false;","}","","vec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {"," float x = 0.5 * sign(v) + 0.5;"," float y = axisY(x, A, B, C, D);"," float z = 1.0 - abs(v);",""," z += isContext ? 0.0 : 2.0 * float("," outsideBoundingBox(A, B, C, D) ||"," outsideRasterMask(A, B, C, D)"," );",""," return vec4("," 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,"," z,"," 1.0"," );","}","","void main() {"," mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);"," mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);"," mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);"," mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);",""," float v = colors[3];",""," gl_Position = position(isContext, v, A, B, C, D);",""," fragColor ="," isContext ? vec4(contextColor) :"," isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));","}"].join(` +`),UGt=["precision highp float;","","varying vec4 fragColor;","","void main() {"," gl_FragColor = fragColor;","}"].join(` +`),Vk=Nk().maxDimensionCount,CUe=Pr(),AUe=1e-6,Xz=2048,VGt=new Uint8Array(4),SUe=new Uint8Array(4),MUe={shape:[256,1],format:"rgba",type:"uint8",mag:"nearest",min:"nearest"};function GGt(e){e.read({x:0,y:0,width:1,height:1,data:VGt})}function LUe(e,t,r,n,i){var a=e._gl;a.enable(a.SCISSOR_TEST),a.scissor(t,r,n,i),e.clear({color:[0,0,0,0],depth:1})}function HGt(e,t,r,n,i,a){var o=a.key;function s(l){var u=Math.min(n,i-l*n);l===0&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],LUe(e,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),!r.clearOnly&&(a.count=2*u,a.offset=2*l*n,t(a),l*n+u>>8*t)%256/255}function XGt(e,t,r){for(var n=new Array(e*(Vk+4)),i=0,a=0;aZ&&(Z=S[z].dim1.canvasX,V=z);E===0&&LUe(i,0,0,u.canvasWidth,u.canvasHeight);var j=M(r);for(z=0;z{"use strict";var Bd=qa(),p1=Pr(),VK=p1.isArrayOrTypedArray,BUe=p1.numberFormat,NUe=(TUe(),gb(wUe)).default,UUe=ho(),$Gt=p1.strRotate,ay=p1.strTranslate,QGt=Zl(),Zz=So(),DUe=tc(),jK=ny(),ig=jK.keyFun,oy=jK.repeat,VUe=jK.unwrap,M5=NK(),Dl=Nk(),GUe=FK(),eHt=RUe();function FUe(e,t,r){return p1.aggNums(e,null,t,r)}function HUe(e,t){return WK(FUe(Math.min,e,t),FUe(Math.max,e,t))}function Yz(e){var t=e.range;return t?WK(t[0],t[1]):HUe(e.values,e._length)}function WK(e,t){return(isNaN(e)||!isFinite(e))&&(e=0),(isNaN(t)||!isFinite(t))&&(t=0),e===t&&(e===0?(e-=1,t+=1):(e*=.9,t*=1.1)),[e,t]}function tHt(e,t){return t?function(r,n){var i=t[n];return i==null?e(r):i}:e}function rHt(e,t,r,n,i){var a=Yz(r);return n?Bd.scale.ordinal().domain(n.map(tHt(BUe(r.tickformat),i))).range(n.map(function(o){var s=(o-a[0])/(a[1]-a[0]);return e-t+s*(2*t-e)})):Bd.scale.linear().domain(a).range([e-t,t])}function iHt(e,t){return Bd.scale.linear().range([t,e-t])}function nHt(e,t){return Bd.scale.linear().domain(Yz(e)).range([t,1-t])}function aHt(e){if(e.tickvals){var t=Yz(e);return Bd.scale.ordinal().domain(e.tickvals).range(e.tickvals.map(function(r){return(r-t[0])/(t[1]-t[0])}))}}function oHt(e){var t=e.map(function(a){return a[0]}),r=e.map(function(a){var o=NUe(a[1]);return Bd.rgb("rgb("+o[0]+","+o[1]+","+o[2]+")")}),n=function(a){return function(o){return o[a]}},i="rgb".split("").map(function(a){return Bd.scale.linear().clamp(!0).domain(t).range(r.map(n(a)))});return function(a){return i.map(function(o){return o(a)})}}function HK(e){return e.dimensions.some(function(t){return t.brush.filterSpecified})}function sHt(e,t,r){var n=VUe(t),i=n.trace,a=M5.convertTypedArray(n.lineColor),o=i.line,s={color:NUe(i.unselected.line.color),opacity:i.unselected.line.opacity},l=DUe.extractOpts(o),u=l.reversescale?DUe.flipScale(n.cscale):n.cscale,c=i.domain,f=i.dimensions,h=e.width,d=i.labelangle,v=i.labelside,m=i.labelfont,b=i.tickfont,p=i.rangefont,k=p1.extendDeepNoArrays({},o,{color:a.map(Bd.scale.linear().domain(Yz({values:a,range:[l.min,l.max],_length:i._length}))),blockLineCount:Dl.blockLineCount,canvasOverdrag:Dl.overdrag*Dl.canvasPixelRatio}),M=Math.floor(h*(c.x[1]-c.x[0])),T=Math.floor(e.height*(c.y[1]-c.y[0])),L=e.margin||{l:80,r:80,t:100,b:80},x=M,C=T;return{key:r,colCount:f.filter(M5.isVisible).length,dimensions:f,tickDistance:Dl.tickDistance,unitToColor:oHt(u),lines:k,deselectedLines:s,labelAngle:d,labelSide:v,labelFont:m,tickFont:b,rangeFont:p,layoutWidth:h,layoutHeight:e.height,domain:c,translateX:c.x[0]*h,translateY:e.height-c.y[1]*e.height,pad:L,canvasWidth:x*Dl.canvasPixelRatio+2*k.canvasOverdrag,canvasHeight:C*Dl.canvasPixelRatio,width:x,height:C,canvasPixelRatio:Dl.canvasPixelRatio}}function lHt(e,t,r){var n=r.width,i=r.height,a=r.dimensions,o=r.canvasPixelRatio,s=function(h){return n*h/Math.max(1,r.colCount-1)},l=Dl.verticalPadding/i,u=iHt(i,Dl.verticalPadding),c={key:r.key,xScale:s,model:r,inBrushDrag:!1},f={};return c.dimensions=a.filter(M5.isVisible).map(function(h,d){var v=nHt(h,l),m=f[h.label];f[h.label]=(m||0)+1;var b=h.label+(m?"__"+m:""),p=h.constraintrange,k=p&&p.length;k&&!VK(p[0])&&(p=[p]);var M=k?p.map(function(q){return q.map(v)}):[[-1/0,1/0]],T=function(){var q=c;q.focusLayer&&q.focusLayer.render(q.panels,!0);var V=HK(q);!e.contextShown()&&V?(q.contextLayer&&q.contextLayer.render(q.panels,!0),e.contextShown(!0)):e.contextShown()&&!V&&(q.contextLayer&&q.contextLayer.render(q.panels,!0,!0),e.contextShown(!1))},L=h.values;L.length>h._length&&(L=L.slice(0,h._length));var x=h.tickvals,C;function S(q,V){return{val:q,text:C[V]}}function g(q,V){return q.val-V.val}if(VK(x)&&x.length){p1.isTypedArray(x)&&(x=Array.from(x)),C=h.ticktext,!VK(C)||!C.length?C=x.map(BUe(h.tickformat)):C.length>x.length?C=C.slice(0,x.length):x.length>C.length&&(x=x.slice(0,C.length));for(var P=1;P=V||N>=G)return;var H=z.lineLayer.readPixel(j,G-1-N),ie=H[3]!==0,ae=ie?H[2]+256*(H[1]+256*H[0]):null,_e={x:j,y:N,clientX:q.clientX,clientY:q.clientY,dataIndex:z.model.key,curveNumber:ae};ae!==v&&(ie?i.hover(_e):i.unhover&&i.unhover(_e),v=ae)}}),d.style("opacity",function(z){return z.pick?0:1}),s.style("background","rgba(255, 255, 255, 0)");var b=s.selectAll("."+Dl.cn.parcoords).data(h,ig);b.exit().remove(),b.enter().append("g").classed(Dl.cn.parcoords,!0).style("shape-rendering","crispEdges").style("pointer-events","none"),b.attr("transform",function(z){return ay(z.model.translateX,z.model.translateY)});var p=b.selectAll("."+Dl.cn.parcoordsControlView).data(oy,ig);p.enter().append("g").classed(Dl.cn.parcoordsControlView,!0),p.attr("transform",function(z){return ay(z.model.pad.l,z.model.pad.t)});var k=p.selectAll("."+Dl.cn.yAxis).data(function(z){return z.dimensions},ig);k.enter().append("g").classed(Dl.cn.yAxis,!0),p.each(function(z){GK(k,z,u)}),d.each(function(z){if(z.viewModel){!z.lineLayer||i?z.lineLayer=eHt(this,z):z.lineLayer.update(z),(z.key||z.key===0)&&(z.viewModel[z.key]=z.lineLayer);var q=!z.context||i;z.lineLayer.render(z.viewModel.panels,q)}}),k.attr("transform",function(z){return ay(z.xScale(z.xIndex),0)}),k.call(Bd.behavior.drag().origin(function(z){return z}).on("drag",function(z){var q=z.parent;f.linePickActive(!1),z.x=Math.max(-Dl.overdrag,Math.min(z.model.width+Dl.overdrag,Bd.event.x)),z.canvasX=z.x*z.model.canvasPixelRatio,k.sort(function(V,G){return V.x-G.x}).each(function(V,G){V.xIndex=G,V.x=z===V?V.x:V.xScale(V.xIndex),V.canvasX=V.x*V.model.canvasPixelRatio}),GK(k,q,u),k.filter(function(V){return Math.abs(z.xIndex-V.xIndex)!==0}).attr("transform",function(V){return ay(V.xScale(V.xIndex),0)}),Bd.select(this).attr("transform",ay(z.x,0)),k.each(function(V,G,Z){Z===z.parent.key&&(q.dimensions[G]=V)}),q.contextLayer&&q.contextLayer.render(q.panels,!1,!HK(q)),q.focusLayer.render&&q.focusLayer.render(q.panels)}).on("dragend",function(z){var q=z.parent;z.x=z.xScale(z.xIndex),z.canvasX=z.x*z.model.canvasPixelRatio,GK(k,q,u),Bd.select(this).attr("transform",function(V){return ay(V.x,0)}),q.contextLayer&&q.contextLayer.render(q.panels,!1,!HK(q)),q.focusLayer&&q.focusLayer.render(q.panels),q.pickLayer&&q.pickLayer.render(q.panels,!0),f.linePickActive(!0),i&&i.axesMoved&&i.axesMoved(q.key,q.dimensions.map(function(V){return V.crossfilterDimensionIndex}))})),k.exit().remove();var M=k.selectAll("."+Dl.cn.axisOverlays).data(oy,ig);M.enter().append("g").classed(Dl.cn.axisOverlays,!0),M.selectAll("."+Dl.cn.axis).remove();var T=M.selectAll("."+Dl.cn.axis).data(oy,ig);T.enter().append("g").classed(Dl.cn.axis,!0),T.each(function(z){var q=z.model.height/z.model.tickDistance,V=z.domainScale,G=V.domain();Bd.select(this).call(Bd.svg.axis().orient("left").tickSize(4).outerTickSize(2).ticks(q,z.tickFormat).tickValues(z.ordinal?G:null).tickFormat(function(Z){return M5.isOrdinal(z)?Z:jUe(z.model.dimensions[z.visibleIndex],Z)}).scale(V)),Zz.font(T.selectAll("text"),z.model.tickFont)}),T.selectAll(".domain, .tick>line").attr("fill","none").attr("stroke","black").attr("stroke-opacity",.25).attr("stroke-width","1px"),T.selectAll("text").style("cursor","default");var L=M.selectAll("."+Dl.cn.axisHeading).data(oy,ig);L.enter().append("g").classed(Dl.cn.axisHeading,!0);var x=L.selectAll("."+Dl.cn.axisTitle).data(oy,ig);x.enter().append("text").classed(Dl.cn.axisTitle,!0).attr("text-anchor","middle").style("cursor","ew-resize").style("pointer-events",a?"none":"auto"),x.text(function(z){return z.label}).each(function(z){var q=Bd.select(this);Zz.font(q,z.model.labelFont),QGt.convertToTspans(q,t)}).attr("transform",function(z){var q=qUe(z.model.labelAngle,z.model.labelSide),V=Dl.axisTitleOffset;return(q.dir>0?"":ay(0,2*V+z.model.height))+$Gt(q.degrees)+ay(-V*q.dx,-V*q.dy)}).attr("text-anchor",function(z){var q=qUe(z.model.labelAngle,z.model.labelSide),V=Math.abs(q.dx),G=Math.abs(q.dy);return 2*V>G?q.dir*q.dx<0?"start":"end":"middle"});var C=M.selectAll("."+Dl.cn.axisExtent).data(oy,ig);C.enter().append("g").classed(Dl.cn.axisExtent,!0);var S=C.selectAll("."+Dl.cn.axisExtentTop).data(oy,ig);S.enter().append("g").classed(Dl.cn.axisExtentTop,!0),S.attr("transform",ay(0,-Dl.axisExtentOffset));var g=S.selectAll("."+Dl.cn.axisExtentTopText).data(oy,ig);g.enter().append("text").classed(Dl.cn.axisExtentTopText,!0).call(zUe),g.text(function(z){return OUe(z,!0)}).each(function(z){Zz.font(Bd.select(this),z.model.rangeFont)});var P=C.selectAll("."+Dl.cn.axisExtentBottom).data(oy,ig);P.enter().append("g").classed(Dl.cn.axisExtentBottom,!0),P.attr("transform",function(z){return ay(0,z.model.height+Dl.axisExtentOffset)});var E=P.selectAll("."+Dl.cn.axisExtentBottomText).data(oy,ig);E.enter().append("text").classed(Dl.cn.axisExtentBottomText,!0).attr("dy","0.75em").call(zUe),E.text(function(z){return OUe(z,!1)}).each(function(z){Zz.font(Bd.select(this),z.model.rangeFont)}),GUe.ensureAxisBrush(M,c,t)}});var ZK=ye((XK,JUe)=>{"use strict";var fHt=XUe(),hHt=Iz(),ZUe=NK().isVisible,KUe={};function YUe(e,t,r){var n=t.indexOf(r),i=e.indexOf(n);return i===-1&&(i+=t.length),i}function dHt(e,t){return function(n,i){return YUe(e,t,n)-YUe(e,t,i)}}var XK=JUe.exports=function(t,r){var n=t._fullLayout,i=hHt(t,[],KUe);if(i){var a={},o={},s={},l={},u=n._size;r.forEach(function(v,m){var b=v[0].trace;s[m]=b.index;var p=l[m]=b.index;a[m]=t.data[p].dimensions,o[m]=t.data[p].dimensions.slice()});var c=function(v,m,b){var p=o[v][m],k=b.map(function(S){return S.slice()}),M="dimensions["+m+"].constraintrange",T=n._tracePreGUI[t._fullData[s[v]]._fullInput.uid];if(T[M]===void 0){var L=p.constraintrange;T[M]=L||null}var x=t._fullData[s[v]].dimensions[m];k.length?(k.length===1&&(k=k[0]),p.constraintrange=k,x.constraintrange=k.slice(),k=[k]):(delete p.constraintrange,delete x.constraintrange,k=null);var C={};C[M]=k,t.emit("plotly_restyle",[C,[l[v]]])},f=function(v){t.emit("plotly_hover",v)},h=function(v){t.emit("plotly_unhover",v)},d=function(v,m){var b=dHt(m,o[v].filter(ZUe));a[v].sort(b),o[v].filter(function(p){return!ZUe(p)}).sort(function(p){return o[v].indexOf(p)}).forEach(function(p){a[v].splice(a[v].indexOf(p),1),a[v].splice(o[v].indexOf(p),0,p)}),t.emit("plotly_restyle",[{dimensions:[a[v]]},[l[v]]])};fHt(t,r,{width:u.w,height:u.h,margin:{t:u.t,r:u.r,b:u.b,l:u.l}},{filterChanged:c,hover:f,unhover:h,axesMoved:d})}};XK.reglPrecompiled=KUe});var QUe=ye(Gk=>{"use strict";var $Ue=qa(),vHt=Id().getModuleCalcData,pHt=ZK(),gHt=Wp();Gk.name="parcoords";Gk.plot=function(e){var t=vHt(e.calcdata,"parcoords")[0];t.length&&pHt(e,t)};Gk.clean=function(e,t,r,n){var i=n._has&&n._has("parcoords"),a=t._has&&t._has("parcoords");i&&!a&&(n._paperdiv.selectAll(".parcoords").remove(),n._glimages.selectAll("*").remove())};Gk.toSVG=function(e){var t=e._fullLayout._glimages,r=$Ue.select(e).selectAll(".svg-container"),n=r.filter(function(a,o){return o===r.size()-1}).selectAll(".gl-canvas-context, .gl-canvas-focus");function i(){var a=this,o=a.toDataURL("image/png"),s=t.append("svg:image");s.attr({xmlns:gHt.svg,"xlink:href":o,preserveAspectRatio:"none",x:0,y:0,width:a.style.width,height:a.style.height})}n.each(i),window.setTimeout(function(){$Ue.selectAll("#filterBarPattern").attr("id","filterBarPattern")},60)}});var tVe=ye((_xr,eVe)=>{"use strict";eVe.exports={attributes:IK(),supplyDefaults:vUe(),calc:gUe(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcoords",basePlotModule:QUe(),categories:["gl","regl","noOpacity","noHover"],meta:{}}});var nVe=ye((xxr,iVe)=>{"use strict";var rVe=tVe();rVe.plot=ZK();iVe.exports=rVe});var oVe=ye((bxr,aVe)=>{"use strict";aVe.exports=nVe()});var YK=ye((wxr,fVe)=>{"use strict";var lVe=Ao().extendFlat,mHt=Gl(),sVe=ec(),yHt=Tu(),{hovertemplateAttrs:uVe,templatefallbackAttrs:cVe}=Ll(),_Ht=Cc().attributes,xHt=lVe({editType:"calc"},yHt("line",{editTypeOverride:"calc"}),{shape:{valType:"enumerated",values:["linear","hspline"],dflt:"linear",editType:"plot"},hovertemplate:uVe({editType:"plot",arrayOk:!1},{keys:["count","probability"]}),hovertemplatefallback:cVe({editType:"plot"})});fVe.exports={domain:_Ht({name:"parcats",trace:!0,editType:"calc"}),hoverinfo:lVe({},mHt.hoverinfo,{flags:["count","probability"],editType:"plot",arrayOk:!1}),hoveron:{valType:"enumerated",values:["category","color","dimension"],dflt:"category",editType:"plot"},hovertemplate:uVe({editType:"plot",arrayOk:!1},{keys:["count","probability","category","categorycount","colorcount","bandcolorcount"]}),hovertemplatefallback:cVe({editType:"plot"}),arrangement:{valType:"enumerated",values:["perpendicular","freeform","fixed"],dflt:"perpendicular",editType:"plot"},bundlecolors:{valType:"boolean",dflt:!0,editType:"plot"},sortpaths:{valType:"enumerated",values:["forward","backward"],dflt:"forward",editType:"plot"},labelfont:sVe({editType:"calc"}),tickfont:sVe({autoShadowDflt:!0,editType:"calc"}),dimensions:{_isLinkedToArray:"dimension",label:{valType:"string",editType:"calc"},categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},ticktext:{valType:"data_array",editType:"calc"},values:{valType:"data_array",dflt:[],editType:"calc"},displayindex:{valType:"integer",editType:"calc"},editType:"calc",visible:{valType:"boolean",dflt:!0,editType:"calc"}},line:xHt,counts:{valType:"number",min:0,dflt:1,arrayOk:!0,editType:"calc"},customdata:void 0,hoverlabel:void 0,ids:void 0,legend:void 0,legendgroup:void 0,legendrank:void 0,opacity:void 0,selectedpoints:void 0,showlegend:void 0}});var vVe=ye((Txr,dVe)=>{"use strict";var E5=Pr(),bHt=pv().hasColorscale,wHt=td(),THt=Cc().defaults,AHt=Kd(),hVe=YK(),SHt=Dz(),MHt=Yd().isTypedArraySpec;function EHt(e,t,r,n,i){i("line.shape"),i("line.hovertemplate"),i("line.hovertemplatefallback");var a=i("line.color",n.colorway[0]);if(bHt(e,"line")&&E5.isArrayOrTypedArray(a)){if(a.length)return i("line.colorscale"),wHt(e,t,n,i,{prefix:"line.",cLetter:"c"}),a.length;t.line.color=r}return 1/0}function kHt(e,t){function r(u,c){return E5.coerce(e,t,hVe.dimensions,u,c)}var n=r("values"),i=r("visible");if(n&&n.length||(i=t.visible=!1),i){r("label"),r("displayindex",t._index);var a=e.categoryarray,o=E5.isArrayOrTypedArray(a)&&a.length>0||MHt(a),s;o&&(s="array");var l=r("categoryorder",s);l==="array"?(r("categoryarray"),r("ticktext")):(delete e.categoryarray,delete e.ticktext),!o&&l==="array"&&(t.categoryorder="trace")}}dVe.exports=function(t,r,n,i){function a(u,c){return E5.coerce(t,r,hVe,u,c)}var o=AHt(t,r,{name:"dimensions",handleItemDefaults:kHt}),s=EHt(t,r,n,i,a);THt(r,i,a),(!Array.isArray(o)||!o.length)&&(r.visible=!1),SHt(r,o,"values",s),a("hoveron"),a("hovertemplate"),a("hovertemplatefallback"),a("arrangement"),a("bundlecolors"),a("sortpaths"),a("counts");var l=i.font;E5.coerceFont(a,"labelfont",l,{overrideDflt:{size:Math.round(l.size)}}),E5.coerceFont(a,"tickfont",l,{autoShadowDflt:!0,overrideDflt:{size:Math.round(l.size/1.2)}})}});var gVe=ye((Axr,pVe)=>{"use strict";var CHt=ny().wrap,LHt=pv().hasColorscale,PHt=gv(),IHt=iO(),RHt=So(),Hk=Pr(),DHt=Eo();pVe.exports=function(t,r){var n=Hk.filterVisible(r.dimensions);if(n.length===0)return[];var i=n.map(function(g){var P;if(g.categoryorder==="trace")P=null;else if(g.categoryorder==="array")P=g.categoryarray;else{P=IHt(g.values);for(var E=!0,z=0;z=e.length||t[e[r]]!==void 0)return!1;t[e[r]]=!0}return!0}});var SVe=ye((Sxr,AVe)=>{"use strict";var Fl=qa(),jHt=(j2(),gb(H2)).interpolateNumber,WHt=YP(),Xk=ef(),kx=Pr(),jk=kx.strTranslate,mVe=So(),KK=fd(),XHt=Zl();function ZHt(e,t,r,n){var i=t._context.staticPlot,a=e.map(ujt.bind(0,t,r)),o=n.selectAll("g.parcatslayer").data([null]);o.enter().append("g").attr("class","parcatslayer").style("pointer-events",i?"none":"all");var s=o.selectAll("g.trace.parcats").data(a,g1),l=s.enter().append("g").attr("class","trace parcats");s.attr("transform",function(k){return jk(k.x,k.y)}),l.append("g").attr("class","paths");var u=s.select("g.paths"),c=u.selectAll("path.path").data(function(k){return k.paths},g1);c.attr("fill",function(k){return k.model.color});var f=c.enter().append("path").attr("class","path").attr("stroke-opacity",0).attr("fill",function(k){return k.model.color}).attr("fill-opacity",0);QK(f),c.attr("d",function(k){return k.svgD}),f.empty()||c.sort(JK),c.exit().remove(),c.on("mouseover",YHt).on("mouseout",KHt).on("click",JHt),l.append("g").attr("class","dimensions");var h=s.select("g.dimensions"),d=h.selectAll("g.dimension").data(function(k){return k.dimensions},g1);d.enter().append("g").attr("class","dimension"),d.attr("transform",function(k){return jk(k.x,0)}),d.exit().remove();var v=d.selectAll("g.category").data(function(k){return k.categories},g1),m=v.enter().append("g").attr("class","category");v.attr("transform",function(k){return jk(0,k.y)}),m.append("rect").attr("class","catrect").attr("pointer-events","none"),v.select("rect.catrect").attr("fill","none").attr("width",function(k){return k.width}).attr("height",function(k){return k.height}),_Ve(m);var b=v.selectAll("rect.bandrect").data(function(k){return k.bands},g1);b.each(function(){kx.raiseToTop(this)}),b.attr("fill",function(k){return k.color});var p=b.enter().append("rect").attr("class","bandrect").attr("stroke-opacity",0).attr("fill",function(k){return k.color}).attr("fill-opacity",0);b.attr("fill",function(k){return k.color}).attr("width",function(k){return k.width}).attr("height",function(k){return k.height}).attr("y",function(k){return k.y}).attr("cursor",function(k){return k.parcatsViewModel.arrangement==="fixed"?"default":k.parcatsViewModel.arrangement==="perpendicular"?"ns-resize":"move"}),tJ(p),b.exit().remove(),m.append("text").attr("class","catlabel").attr("pointer-events","none"),v.select("text.catlabel").attr("text-anchor",function(k){return Wk(k)?"start":"end"}).attr("alignment-baseline","middle").style("fill","rgb(0, 0, 0)").attr("x",function(k){return Wk(k)?k.width+5:-5}).attr("y",function(k){return k.height/2}).text(function(k){return k.model.categoryLabel}).each(function(k){mVe.font(Fl.select(this),k.parcatsViewModel.categorylabelfont),XHt.convertToTspans(Fl.select(this),t)}),m.append("text").attr("class","dimlabel"),v.select("text.dimlabel").attr("text-anchor","middle").attr("alignment-baseline","baseline").attr("cursor",function(k){return k.parcatsViewModel.arrangement==="fixed"?"default":"ew-resize"}).attr("x",function(k){return k.width/2}).attr("y",-5).text(function(k,M){return M===0?k.parcatsViewModel.model.dimensions[k.model.dimensionInd].dimensionLabel:null}).each(function(k){mVe.font(Fl.select(this),k.parcatsViewModel.labelfont)}),v.selectAll("rect.bandrect").on("mouseover",njt).on("mouseout",ajt),v.exit().remove(),d.call(Fl.behavior.drag().origin(function(k){return{x:k.x,y:0}}).on("dragstart",ojt).on("drag",sjt).on("dragend",ljt)),s.each(function(k){k.traceSelection=Fl.select(this),k.pathSelection=Fl.select(this).selectAll("g.paths").selectAll("path.path"),k.dimensionSelection=Fl.select(this).selectAll("g.dimensions").selectAll("g.dimension")}),s.exit().remove()}AVe.exports=function(e,t,r,n){ZHt(r,e,n,t)};function g1(e){return e.key}function Wk(e){var t=e.parcatsViewModel.dimensions.length,r=e.parcatsViewModel.dimensions[t-1].model.dimensionInd;return e.model.dimensionInd===r}function JK(e,t){return e.model.rawColor>t.model.rawColor?1:e.model.rawColor"),x=Fl.mouse(i)[0];Xk.loneHover({trace:a,x:v-s.left+l.left,y:m-s.top+l.top,text:L,color:e.model.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:10,fontColor:b,idealAlign:x1&&u.displayInd===l.dimensions.length-1?(h=o.left,d="left"):(h=o.left+o.width,d="right");var v=s.model.count,m=s.model.categoryLabel,b=v/s.parcatsViewModel.model.count,p={countLabel:v,categoryLabel:m,probabilityLabel:b.toFixed(3)},k=[];s.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&k.push(["Count:",p.countLabel].join(" ")),s.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&k.push(["P("+p.categoryLabel+"):",p.probabilityLabel].join(" "));var M=k.join("
");return{trace:c,x:n*(h-t.left),y:i*(f-t.top),text:M,color:"lightgray",borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:12,fontColor:"black",idealAlign:d,hovertemplate:c.hovertemplate,hovertemplateLabels:p,eventData:[{data:c._input,fullData:c,count:v,category:m,probability:b}]}}function rjt(e,t,r){var n=[];return Fl.select(r.parentNode.parentNode).selectAll("g.category").select("rect.catrect").each(function(){var i=this;n.push(xVe(e,t,i))}),n}function ijt(e,t,r){e._fullLayout._calcInverseTransform(e);var n=e._fullLayout._invScaleX,i=e._fullLayout._invScaleY,a=r.getBoundingClientRect(),o=Fl.select(r).datum(),s=o.categoryViewModel,l=s.parcatsViewModel,u=l.model.dimensions[s.model.dimensionInd],c=l.trace,f=a.y+a.height/2,h,d;l.dimensions.length>1&&u.displayInd===l.dimensions.length-1?(h=a.left,d="left"):(h=a.left+a.width,d="right");var v=s.model.categoryLabel,m=o.parcatsViewModel.model.count,b=0;o.categoryViewModel.bands.forEach(function(P){P.color===o.color&&(b+=P.count)});var p=s.model.count,k=0;l.pathSelection.each(function(P){P.model.color===o.color&&(k+=P.model.count)});var M=b/m,T=b/k,L=b/p,x={countLabel:b,categoryLabel:v,probabilityLabel:M.toFixed(3)},C=[];s.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&C.push(["Count:",x.countLabel].join(" ")),s.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&(C.push("P(color \u2229 "+v+"): "+x.probabilityLabel),C.push("P("+v+" | color): "+T.toFixed(3)),C.push("P(color | "+v+"): "+L.toFixed(3)));var S=C.join("
"),g=KK.mostReadable(o.color,["black","white"]);return{trace:c,x:n*(h-t.left),y:i*(f-t.top),text:S,color:o.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontColor:g,fontSize:10,idealAlign:d,hovertemplate:c.hovertemplate,hovertemplateLabels:x,eventData:[{data:c._input,fullData:c,category:v,count:m,probability:M,categorycount:p,colorcount:k,bandcolorcount:b}]}}function njt(e){if(!e.parcatsViewModel.dragDimension&&e.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1){var t=Fl.mouse(this)[1];if(t<-1)return;var r=e.parcatsViewModel.graphDiv,n=r._fullLayout,i=n._paperdiv.node().getBoundingClientRect(),a=e.parcatsViewModel.hoveron,o=this;if(a==="color"?(tjt(o),iJ(o,"plotly_hover",Fl.event)):(ejt(o),rJ(o,"plotly_hover",Fl.event)),e.parcatsViewModel.hoverinfoItems.indexOf("none")===-1){var s;a==="category"?s=xVe(r,i,o):a==="color"?s=ijt(r,i,o):a==="dimension"&&(s=rjt(r,i,o)),s&&Xk.loneHover(s,{container:n._hoverlayer.node(),outerContainer:n._paper.node(),gd:r})}}}function ajt(e){var t=e.parcatsViewModel;if(!t.dragDimension&&(QK(t.pathSelection),_Ve(t.dimensionSelection.selectAll("g.category")),tJ(t.dimensionSelection.selectAll("g.category").selectAll("rect.bandrect")),Xk.loneUnhover(t.graphDiv._fullLayout._hoverlayer.node()),t.pathSelection.sort(JK),t.hoverinfoItems.indexOf("skip")===-1)){var r=e.parcatsViewModel.hoveron,n=this;r==="color"?iJ(n,"plotly_unhover",Fl.event):rJ(n,"plotly_unhover",Fl.event)}}function ojt(e){e.parcatsViewModel.arrangement!=="fixed"&&(e.dragDimensionDisplayInd=e.model.displayInd,e.initialDragDimensionDisplayInds=e.parcatsViewModel.model.dimensions.map(function(t){return t.displayInd}),e.dragHasMoved=!1,e.dragCategoryDisplayInd=null,Fl.select(this).selectAll("g.category").select("rect.catrect").each(function(t){var r=Fl.mouse(this)[0],n=Fl.mouse(this)[1];-2<=r&&r<=t.width+2&&-2<=n&&n<=t.height+2&&(e.dragCategoryDisplayInd=t.model.displayInd,e.initialDragCategoryDisplayInds=e.model.categories.map(function(i){return i.displayInd}),t.model.dragY=t.y,kx.raiseToTop(this.parentNode),Fl.select(this.parentNode).selectAll("rect.bandrect").each(function(i){i.yc.y+c.height/2&&(a.model.displayInd=c.model.displayInd,c.model.displayInd=s),e.dragCategoryDisplayInd=a.model.displayInd}if(e.dragCategoryDisplayInd===null||e.parcatsViewModel.arrangement==="freeform"){i.model.dragX=Fl.event.x;var f=e.parcatsViewModel.dimensions[r],h=e.parcatsViewModel.dimensions[n];f!==void 0&&i.model.dragXh.x&&(i.model.displayInd=h.model.displayInd,h.model.displayInd=e.dragDimensionDisplayInd),e.dragDimensionDisplayInd=i.model.displayInd}aJ(e.parcatsViewModel),nJ(e.parcatsViewModel),TVe(e.parcatsViewModel),wVe(e.parcatsViewModel)}}function ljt(e){if(e.parcatsViewModel.arrangement!=="fixed"&&e.dragDimensionDisplayInd!==null){Fl.select(this).selectAll("text").attr("font-weight","normal");var t={},r=bVe(e.parcatsViewModel),n=e.parcatsViewModel.model.dimensions.map(function(h){return h.displayInd}),i=e.initialDragDimensionDisplayInds.some(function(h,d){return h!==n[d]});i&&n.forEach(function(h,d){var v=e.parcatsViewModel.model.dimensions[d].containerInd;t["dimensions["+v+"].displayindex"]=h});var a=!1;if(e.dragCategoryDisplayInd!==null){var o=e.model.categories.map(function(h){return h.displayInd});if(a=e.initialDragCategoryDisplayInds.some(function(h,d){return h!==o[d]}),a){var s=e.model.categories.slice().sort(function(h,d){return h.displayInd-d.displayInd}),l=s.map(function(h){return h.categoryValue}),u=s.map(function(h){return h.categoryLabel});t["dimensions["+e.model.containerInd+"].categoryarray"]=[l],t["dimensions["+e.model.containerInd+"].ticktext"]=[u],t["dimensions["+e.model.containerInd+"].categoryorder"]="array"}}if(e.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1&&!e.dragHasMoved&&e.potentialClickBand&&(e.parcatsViewModel.hoveron==="color"?iJ(e.potentialClickBand,"plotly_click",Fl.event.sourceEvent):rJ(e.potentialClickBand,"plotly_click",Fl.event.sourceEvent)),e.model.dragX=null,e.dragCategoryDisplayInd!==null){var c=e.parcatsViewModel.dimensions[e.dragDimensionDisplayInd].categories[e.dragCategoryDisplayInd];c.model.dragY=null,e.dragCategoryDisplayInd=null}e.dragDimensionDisplayInd=null,e.parcatsViewModel.dragDimension=null,e.dragHasMoved=null,e.potentialClickBand=null,aJ(e.parcatsViewModel),nJ(e.parcatsViewModel);var f=Fl.transition().duration(300).ease("cubic-in-out");f.each(function(){TVe(e.parcatsViewModel,!0),wVe(e.parcatsViewModel,!0)}).each("end",function(){(i||a)&&WHt.restyle(e.parcatsViewModel.graphDiv,t,[r])})}}function bVe(e){for(var t,r=e.graphDiv._fullData,n=0;n=0;l--)u+="C"+o[l]+","+(t[l+1]+n)+" "+a[l]+","+(t[l]+n)+" "+(e[l]+r[l])+","+(t[l]+n),u+="l-"+r[l]+",0 ";return u+="Z",u}function nJ(e){var t=e.dimensions,r=e.model,n=t.map(function(q){return q.categories.map(function(V){return V.y})}),i=e.model.dimensions.map(function(q){return q.categories.map(function(V){return V.displayInd})}),a=e.model.dimensions.map(function(q){return q.displayInd}),o=e.dimensions.map(function(q){return q.model.dimensionInd}),s=t.map(function(q){return q.x}),l=t.map(function(q){return q.width}),u=[];for(var c in r.paths)r.paths.hasOwnProperty(c)&&u.push(r.paths[c]);function f(q){var V=q.categoryInds.map(function(Z,j){return i[j][Z]}),G=o.map(function(Z){return V[Z]});return G}u.sort(function(q,V){var G=f(q),Z=f(V);return e.sortpaths==="backward"&&(G.reverse(),Z.reverse()),G.push(q.valueInds[0]),Z.push(V.valueInds[0]),e.bundlecolors&&(G.unshift(q.rawColor),Z.unshift(V.rawColor)),GZ?1:0});for(var h=new Array(u.length),d=t[0].model.count,v=t[0].categories.map(function(q){return q.height}).reduce(function(q,V){return q+V}),m=0;m0?p=v*(b.count/d):p=0;for(var k=new Array(n.length),M=0;M1?o=(e.width-2*r-n)/(i-1):o=0,s=r,l=s+o*a;var u=[],c=e.model.maxCats,f=t.categories.length,h=8,d=t.count,v=e.height-h*(c-1),m,b,p,k,M,T=(c-f)*h/2,L=t.categories.map(function(x){return{displayInd:x.displayInd,categoryInd:x.categoryInd}});for(L.sort(function(x,C){return x.displayInd-C.displayInd}),M=0;M0?m=b.count/d*v:m=0,p={key:b.valueInds[0],model:b,width:n,height:m,y:b.dragY!==null?b.dragY:T,bands:[],parcatsViewModel:e},T=T+m+h,u.push(p);return{key:t.dimensionInd,x:t.dragX!==null?t.dragX:l,y:0,width:n,model:t,categories:u,parcatsViewModel:e,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}});var oJ=ye((Mxr,MVe)=>{"use strict";var fjt=SVe();MVe.exports=function(t,r,n,i){var a=t._fullLayout,o=a._paper,s=a._size;fjt(t,o,r,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},n,i)}});var kVe=ye(Jz=>{"use strict";var hjt=Id().getModuleCalcData,djt=oJ(),EVe="parcats";Jz.name=EVe;Jz.plot=function(e,t,r,n){var i=hjt(e.calcdata,EVe);if(i.length){var a=i[0];djt(e,a,r,n)}};Jz.clean=function(e,t,r,n){var i=n._has&&n._has("parcats"),a=t._has&&t._has("parcats");i&&!a&&n._paperdiv.selectAll(".parcats").remove()}});var LVe=ye((kxr,CVe)=>{"use strict";CVe.exports={attributes:YK(),supplyDefaults:vVe(),calc:gVe(),plot:oJ(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcats",basePlotModule:kVe(),categories:["noOpacity"],meta:{}}});var IVe=ye((Cxr,PVe)=>{"use strict";PVe.exports=LVe()});var m1=ye((Lxr,BVe)=>{"use strict";var vjt=t_(),RVe="1.13.4",qVe='\xA9 OpenStreetMap contributors',DVe=['\xA9 Carto',qVe].join(" "),FVe=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under ODbL'].join(" "),pjt=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under CC BY SA'].join(" "),OVe={"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:qVe,tiles:["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png","https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-osm-tiles",type:"raster",source:"plotly-osm-tiles",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"white-bg":{id:"white-bg",version:8,sources:{},layers:[{id:"white-bg",type:"background",paint:{"background-color":"#FFFFFF"},minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":{id:"carto-positron",version:8,sources:{"plotly-carto-positron":{type:"raster",attribution:DVe,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-positron",type:"raster",source:"plotly-carto-positron",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-darkmatter":{id:"carto-darkmatter",version:8,sources:{"plotly-carto-darkmatter":{type:"raster",attribution:DVe,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-darkmatter",type:"raster",source:"plotly-carto-darkmatter",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-terrain":{id:"stamen-terrain",version:8,sources:{"plotly-stamen-terrain":{type:"raster",attribution:FVe,tiles:["https://tiles.stadiamaps.com/tiles/stamen_terrain/{z}/{x}/{y}.png?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-terrain",type:"raster",source:"plotly-stamen-terrain",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-toner":{id:"stamen-toner",version:8,sources:{"plotly-stamen-toner":{type:"raster",attribution:FVe,tiles:["https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}.png?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-toner",type:"raster",source:"plotly-stamen-toner",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-watercolor":{id:"stamen-watercolor",version:8,sources:{"plotly-stamen-watercolor":{type:"raster",attribution:pjt,tiles:["https://tiles.stadiamaps.com/tiles/stamen_watercolor/{z}/{x}/{y}.jpg?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-watercolor",type:"raster",source:"plotly-stamen-watercolor",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"}},zVe=vjt(OVe);BVe.exports={requiredVersion:RVe,styleUrlPrefix:"mapbox://styles/mapbox/",styleUrlSuffix:"v9",styleValuesMapbox:["basic","streets","outdoors","light","dark","satellite","satellite-streets"],styleValueDflt:"basic",stylesNonMapbox:OVe,styleValuesNonMapbox:zVe,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",wrongVersionErrorMsg:["Your custom plotly.js bundle is not using the correct mapbox-gl version","Please install @plotly/mapbox-gl@"+RVe+"."].join(` +`),noAccessTokenErrorMsg:["Missing Mapbox access token.","Mapbox trace type require a Mapbox access token to be registered.","For example:"," Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });","More info here: https://www.mapbox.com/help/define-access-token/"].join(` +`),missingStyleErrorMsg:["No valid mapbox style found, please set `mapbox.style` to one of:",zVe.join(", "),"or register a Mapbox access token to use a Mapbox-served style."].join(` +`),multipleTokensErrorMsg:["Set multiple mapbox access token across different mapbox subplot,","using first token found as mapbox-gl does not allow multipleaccess tokens on the same page."].join(` +`),mapOnErrorMsg:"Mapbox error.",mapboxLogo:{path0:"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z",path1:"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z",path2:"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z",polygon:"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34"},styleRules:{map:"overflow:hidden;position:relative;","missing-css":"display:none;",canary:"background-color:salmon;","ctrl-bottom-left":"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;","ctrl-bottom-right":"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;",ctrl:"clear: both; pointer-events: auto; transform: translate(0, 0);","ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner":"display: none;","ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner":"display: block; margin-top:2px","ctrl-attrib.mapboxgl-compact:hover":"padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;","ctrl-attrib.mapboxgl-compact::after":`content: ""; cursor: pointer; position: absolute; background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"%3E %3Cpath fill="%23333333" fill-rule="evenodd" d="M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0"/%3E %3C/svg%3E'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;`,"ctrl-attrib.mapboxgl-compact":"min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;","ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; right: 0","ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; left: 0","ctrl-bottom-left .mapboxgl-ctrl":"margin: 0 0 10px 10px; float: left;","ctrl-bottom-right .mapboxgl-ctrl":"margin: 0 10px 10px 0; float: right;","ctrl-attrib":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a:hover":"color: inherit; text-decoration: underline;","ctrl-attrib .mapbox-improve-map":"font-weight: bold; margin-left: 2px;","attrib-empty":"display: none;","ctrl-logo":`display:block; width: 21px; height: 21px; background-image: url('data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E %3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 21 21" style="enable-background:new 0 0 21 21;" xml:space="preserve"%3E%3Cg transform="translate(0,0.01)"%3E%3Cpath d="m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z" style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3Cpath d="M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpath d="M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpolygon points="11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 " style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3C/g%3E%3C/svg%3E')`}}});var Yk=ye((Pxr,GVe)=>{"use strict";var NVe=Pr(),UVe=ka().defaultLine,gjt=Cc().attributes,mjt=ec(),yjt=pf().textposition,_jt=mc().overrideAll,xjt=vl().templatedArray,sJ=m1(),VVe=mjt({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});VVe.family.dflt="Open Sans Regular, Arial Unicode MS Regular";var bjt=GVe.exports=_jt({_arrayAttrRegexps:[NVe.counterRegex("mapbox",".layers",!0)],domain:gjt({name:"mapbox"}),accesstoken:{valType:"string",noBlank:!0,strict:!0},style:{valType:"any",values:sJ.styleValuesMapbox.concat(sJ.styleValuesNonMapbox),dflt:sJ.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:xjt("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:UVe},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:UVe}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:VVe,textposition:NVe.extendFlat({},yjt,{arrayOk:!1})}})},"plot","from-root");bjt.uirevision={valType:"any",editType:"none"}});var $z=ye((Ixr,XVe)=>{"use strict";var{hovertemplateAttrs:wjt,texttemplateAttrs:Tjt,templatefallbackAttrs:HVe}=Ll(),Ajt=Pg(),Kk=tw(),k5=pf(),jVe=Yk(),Sjt=Gl(),Mjt=Tu(),dw=Ao().extendFlat,Ejt=mc().overrideAll,kjt=Yk(),WVe=Kk.line,C5=Kk.marker;XVe.exports=Ejt({lon:Kk.lon,lat:Kk.lat,cluster:{enabled:{valType:"boolean"},maxzoom:dw({},kjt.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:dw({},C5.opacity,{dflt:1})},mode:dw({},k5.mode,{dflt:"markers"}),text:dw({},k5.text,{}),texttemplate:Tjt({editType:"plot"},{keys:["lat","lon","text"]}),texttemplatefallback:HVe({editType:"plot"}),hovertext:dw({},k5.hovertext,{}),line:{color:WVe.color,width:WVe.width},connectgaps:k5.connectgaps,marker:dw({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:C5.opacity,size:C5.size,sizeref:C5.sizeref,sizemin:C5.sizemin,sizemode:C5.sizemode},Mjt("marker")),fill:Kk.fill,fillcolor:Ajt(),textfont:jVe.layers.symbol.textfont,textposition:jVe.layers.symbol.textposition,below:{valType:"string"},selected:{marker:k5.selected.marker},unselected:{marker:k5.unselected.marker},hoverinfo:dw({},Sjt.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:wjt(),hovertemplatefallback:HVe()},"calc","nested")});var lJ=ye((Rxr,ZVe)=>{"use strict";var Cjt=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];ZVe.exports={isSupportedFont:function(e){return Cjt.indexOf(e)!==-1}}});var JVe=ye((Dxr,KVe)=>{"use strict";var Jk=Pr(),uJ=Ru(),Ljt=$p(),Pjt=D0(),Ijt=F0(),Rjt=Fg(),YVe=$z(),Djt=lJ().isSupportedFont;KVe.exports=function(t,r,n,i){function a(p,k){return Jk.coerce(t,r,YVe,p,k)}function o(p,k){return Jk.coerce2(t,r,YVe,p,k)}var s=Fjt(t,r,a);if(!s){r.visible=!1;return}if(a("text"),a("texttemplate"),a("texttemplatefallback"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),a("mode"),a("below"),uJ.hasMarkers(r)){Ljt(t,r,n,i,a,{noLine:!0,noAngle:!0}),a("marker.allowoverlap"),a("marker.angle");var l=r.marker;l.symbol!=="circle"&&(Jk.isArrayOrTypedArray(l.size)&&(l.size=l.size[0]),Jk.isArrayOrTypedArray(l.color)&&(l.color=l.color[0]))}uJ.hasLines(r)&&(Pjt(t,r,n,i,a,{noDash:!0}),a("connectgaps"));var u=o("cluster.maxzoom"),c=o("cluster.step"),f=o("cluster.color",r.marker&&r.marker.color||n),h=o("cluster.size"),d=o("cluster.opacity"),v=u!==!1||c!==!1||f!==!1||h!==!1||d!==!1,m=a("cluster.enabled",v);if(m||uJ.hasText(r)){var b=i.font.family;Ijt(t,r,i,a,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:Djt(b)?b:"Open Sans Regular",weight:i.font.weight,style:i.font.style,size:i.font.size,color:i.font.color}})}a("fill"),r.fill!=="none"&&Rjt(t,r,n,a),Jk.coerceSelectionMarkerOpacity(r,a)};function Fjt(e,t,r){var n=r("lon")||[],i=r("lat")||[],a=Math.min(n.length,i.length);return t._length=a,a}});var cJ=ye((Fxr,QVe)=>{"use strict";var $Ve=ho();QVe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=$Ve.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=$Ve.tickText(o,o.c2l(s[1]),!0).text,i}});var fJ=ye((zxr,tGe)=>{"use strict";var eGe=Pr();tGe.exports=function(t,r){var n=t.split(" "),i=n[0],a=n[1],o=eGe.isArrayOrTypedArray(r)?eGe.mean(r):r,s=.5+o/100,l=1.5+o/100,u=["",""],c=[0,0];switch(i){case"top":u[0]="top",c[1]=-l;break;case"bottom":u[0]="bottom",c[1]=l;break}switch(a){case"left":u[1]="right",c[0]=-s;break;case"right":u[1]="left",c[0]=s;break}var f;return u[0]&&u[1]?f=u.join("-"):u[0]?f=u[0]:u[1]?f=u[1]:f="center",{anchor:f,offset:c}}});var sGe=ye((qxr,oGe)=>{"use strict";var nGe=Eo(),ov=Pr(),zjt=fs().BADNUM,e7=fx(),rGe=tc(),qjt=So(),Ojt=B3(),t7=Ru(),Bjt=lJ().isSupportedFont,Njt=fJ(),Ujt=ip().appendArrayPointValue,Vjt=Zl().NEWLINES,Gjt=Zl().BR_TAG_ALL;oGe.exports=function(t,r){var n=r[0].trace,i=n.visible===!0&&n._length!==0,a=n.fill!=="none",o=t7.hasLines(n),s=t7.hasMarkers(n),l=t7.hasText(n),u=s&&n.marker.symbol==="circle",c=s&&n.marker.symbol!=="circle",f=n.cluster&&n.cluster.enabled,h=Qz("fill"),d=Qz("line"),v=Qz("circle"),m=Qz("symbol"),b={fill:h,line:d,circle:v,symbol:m};if(!i)return b;var p;if((a||o)&&(p=e7.calcTraceToLineCoords(r)),a&&(h.geojson=e7.makePolygon(p),h.layout.visibility="visible",ov.extendFlat(h.paint,{"fill-color":n.fillcolor})),o&&(d.geojson=e7.makeLine(p),d.layout.visibility="visible",ov.extendFlat(d.paint,{"line-width":n.line.width,"line-color":n.line.color,"line-opacity":n.opacity})),u){var k=Hjt(r);v.geojson=k.geojson,v.layout.visibility="visible",f&&(v.filter=["!",["has","point_count"]],b.cluster={type:"circle",filter:["has","point_count"],layout:{visibility:"visible"},paint:{"circle-color":dJ(n.cluster.color,n.cluster.step),"circle-radius":dJ(n.cluster.size,n.cluster.step),"circle-opacity":dJ(n.cluster.opacity,n.cluster.step)}},b.clusterCount={type:"symbol",filter:["has","point_count"],paint:{},layout:{"text-field":"{point_count_abbreviated}","text-font":iGe(n),"text-size":12}}),ov.extendFlat(v.paint,{"circle-color":k.mcc,"circle-radius":k.mrc,"circle-opacity":k.mo})}if(u&&f&&(v.filter=["!",["has","point_count"]]),(c||l)&&(m.geojson=jjt(r,t),ov.extendFlat(m.layout,{visibility:"visible","icon-image":"{symbol}-15","text-field":"{text}"}),c&&(ov.extendFlat(m.layout,{"icon-size":n.marker.size/10}),"angle"in n.marker&&n.marker.angle!=="auto"&&ov.extendFlat(m.layout,{"icon-rotate":{type:"identity",property:"angle"},"icon-rotation-alignment":"map"}),m.layout["icon-allow-overlap"]=n.marker.allowoverlap,ov.extendFlat(m.paint,{"icon-opacity":n.opacity*n.marker.opacity,"icon-color":n.marker.color})),l)){var M=(n.marker||{}).size,T=Njt(n.textposition,M);ov.extendFlat(m.layout,{"text-size":n.textfont.size,"text-anchor":T.anchor,"text-offset":T.offset,"text-font":iGe(n)}),ov.extendFlat(m.paint,{"text-color":n.textfont.color,"text-opacity":n.opacity})}return b};function Qz(e){return{type:e,geojson:e7.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function Hjt(e){var t=e[0].trace,r=t.marker,n=t.selectedpoints,i=ov.isArrayOrTypedArray(r.color),a=ov.isArrayOrTypedArray(r.size),o=ov.isArrayOrTypedArray(r.opacity),s;function l(M){return t.opacity*M}function u(M){return M/2}var c;i&&(rGe.hasColorscale(t,"marker")?c=rGe.makeColorScaleFuncFromTrace(r):c=ov.identity);var f;a&&(f=Ojt(t));var h;o&&(h=function(M){var T=nGe(M)?+ov.constrain(M,0,1):0;return l(T)});var d=[];for(s=0;s850?s+=" Black":i>750?s+=" Extra Bold":i>650?s+=" Bold":i>550?s+=" Semi Bold":i>450?s+=" Medium":i>350?s+=" Regular":i>250?s+=" Light":i>150?s+=" Extra Light":s+=" Thin"):a.slice(0,2).join(" ")==="Open Sans"?(s="Open Sans",i>750?s+=" Extrabold":i>650?s+=" Bold":i>550?s+=" Semibold":i>350?s+=" Regular":s+=" Light"):a.slice(0,3).join(" ")==="Klokantech Noto Sans"&&(s="Klokantech Noto Sans",a[3]==="CJK"&&(s+=" CJK"),s+=i>500?" Bold":" Regular")),o&&(s+=" Italic"),s==="Open Sans Regular Italic"?s="Open Sans Italic":s==="Open Sans Regular Bold"?s="Open Sans Bold":s==="Open Sans Regular Bold Italic"?s="Open Sans Bold Italic":s==="Klokantech Noto Sans Regular Italic"&&(s="Klokantech Noto Sans Italic"),Bjt(s)||(s=r);var l=s.split(", ");return l}});var fGe=ye((Oxr,cGe)=>{"use strict";var Wjt=Pr(),lGe=sGe(),L5=m1().traceLayerPrefix,ng={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function uGe(e,t,r,n){this.type="scattermapbox",this.subplot=e,this.uid=t,this.clusterEnabled=r,this.isHidden=n,this.sourceIds={fill:"source-"+t+"-fill",line:"source-"+t+"-line",circle:"source-"+t+"-circle",symbol:"source-"+t+"-symbol",cluster:"source-"+t+"-circle",clusterCount:"source-"+t+"-circle"},this.layerIds={fill:L5+t+"-fill",line:L5+t+"-line",circle:L5+t+"-circle",symbol:L5+t+"-symbol",cluster:L5+t+"-cluster",clusterCount:L5+t+"-cluster-count"},this.below=null}var $k=uGe.prototype;$k.addSource=function(e,t,r){var n={type:"geojson",data:t.geojson};r&&r.enabled&&Wjt.extendFlat(n,{cluster:!0,clusterMaxZoom:r.maxzoom});var i=this.subplot.map.getSource(this.sourceIds[e]);i?i.setData(t.geojson):this.subplot.map.addSource(this.sourceIds[e],n)};$k.setSourceData=function(e,t){this.subplot.map.getSource(this.sourceIds[e]).setData(t.geojson)};$k.addLayer=function(e,t,r){var n={type:t.type,id:this.layerIds[e],source:this.sourceIds[e],layout:t.layout,paint:t.paint};t.filter&&(n.filter=t.filter);for(var i=this.layerIds[e],a,o=this.subplot.getMapLayers(),s=0;s=0;L--){var x=T[L];i.removeLayer(u.layerIds[x])}M||i.removeSource(u.sourceIds.circle)}function h(M){for(var T=ng.nonCluster,L=0;L=0;L--){var x=T[L];i.removeLayer(u.layerIds[x]),M||i.removeSource(u.sourceIds[x])}}function v(M){l?f(M):d(M)}function m(M){s?c(M):h(M)}function b(){for(var M=s?ng.cluster:ng.nonCluster,T=0;T=0;n--){var i=r[n];t.removeLayer(this.layerIds[i]),t.removeSource(this.sourceIds[i])}};cGe.exports=function(t,r){var n=r[0].trace,i=n.cluster&&n.cluster.enabled,a=n.visible!==!0,o=new uGe(t,n.uid,i,a),s=lGe(t.gd,r),l=o.below=t.belowLookup["trace-"+n.uid],u,c,f;if(i)for(o.addSource("circle",s.circle,n.cluster),u=0;u{"use strict";var Xjt=ef(),vJ=Pr(),Zjt=yT(),Yjt=vJ.fillText,Kjt=fs().BADNUM,Jjt=m1().traceLayerPrefix;function $jt(e,t,r){var n=e.cd,i=n[0].trace,a=e.xa,o=e.ya,s=e.subplot,l=[],u=Jjt+i.uid+"-circle",c=i.cluster&&i.cluster.enabled;if(c){var f=s.map.queryRenderedFeatures(null,{layers:[u]});l=f.map(function(S){return S.id})}var h=t>=0?Math.floor((t+180)/360):Math.ceil((t-180)/360),d=h*360,v=t-d;function m(S){var g=S.lonlat;if(g[0]===Kjt||c&&l.indexOf(S.i+1)===-1)return 1/0;var P=vJ.modHalf(g[0],360),E=g[1],z=s.project([P,E]),q=z.x-a.c2p([v,E]),V=z.y-o.c2p([P,r]),G=Math.max(3,S.mrc||0);return Math.max(Math.sqrt(q*q+V*V)-G,1-3/G)}if(Xjt.getClosest(n,m,e),e.index!==!1){var b=n[e.index],p=b.lonlat,k=[vJ.modHalf(p[0],360)+d,p[1]],M=a.c2p(k),T=o.c2p(k),L=b.mrc||1;e.x0=M-L,e.x1=M+L,e.y0=T-L,e.y1=T+L;var x={};x[i.subplot]={_subplot:s};var C=i._module.formatLabels(b,i,x);return e.lonLabel=C.lonLabel,e.latLabel=C.latLabel,e.color=Zjt(i,b),e.extraText=hGe(i,b,n[0].t.labels),e.hovertemplate=i.hovertemplate,[e]}}function hGe(e,t,r){if(e.hovertemplate)return;var n=t.hi||e.hoverinfo,i=n.split("+"),a=i.indexOf("all")!==-1,o=i.indexOf("lon")!==-1,s=i.indexOf("lat")!==-1,l=t.lonlat,u=[];function c(f){return f+"\xB0"}return a||o&&s?u.push("("+c(l[1])+", "+c(l[0])+")"):o?u.push(r.lon+c(l[0])):s&&u.push(r.lat+c(l[1])),(a||i.indexOf("text")!==-1)&&Yjt(t,e,u),u.join("
")}dGe.exports={hoverPoints:$jt,getExtraText:hGe}});var pGe=ye((Nxr,vGe)=>{"use strict";vGe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t}});var mGe=ye((Uxr,gGe)=>{"use strict";var Qjt=Pr(),eWt=Ru(),tWt=fs().BADNUM;gGe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l;if(!eWt.hasMarkers(s))return[];if(r===!1)for(l=0;l{(function(e,t){typeof pJ=="object"&&typeof gJ!="undefined"?gJ.exports=t():(e=e||self,e.mapboxgl=t())})(pJ,function(){"use strict";var e,t,r;function n(i,a){if(!e)e=a;else if(!t)t=a;else{var o="var sharedChunk = {}; ("+e+")(sharedChunk); ("+t+")(sharedChunk);",s={};e(s),r=a(s),typeof window!="undefined"&&(r.workerUrl=window.URL.createObjectURL(new Blob([o],{type:"text/javascript"})))}}return n(["exports"],function(i){"use strict";function a(y,_){return _={exports:{}},y(_,_.exports),_.exports}var o="1.13.4",s=l;function l(y,_,I,U){this.cx=3*y,this.bx=3*(I-y)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*_,this.by=3*(U-_)-this.cy,this.ay=1-this.cy-this.by,this.p1x=y,this.p1y=U,this.p2x=I,this.p2y=U}l.prototype.sampleCurveX=function(y){return((this.ax*y+this.bx)*y+this.cx)*y},l.prototype.sampleCurveY=function(y){return((this.ay*y+this.by)*y+this.cy)*y},l.prototype.sampleCurveDerivativeX=function(y){return(3*this.ax*y+2*this.bx)*y+this.cx},l.prototype.solveCurveX=function(y,_){typeof _=="undefined"&&(_=1e-6);var I,U,$,oe,he;for($=y,he=0;he<8;he++){if(oe=this.sampleCurveX($)-y,Math.abs(oe)<_)return $;var De=this.sampleCurveDerivativeX($);if(Math.abs(De)<1e-6)break;$=$-oe/De}if(I=0,U=1,$=y,$U)return U;for(;Ioe?I=$:U=$,$=(U-I)*.5+I}return $},l.prototype.solve=function(y,_){return this.sampleCurveY(this.solveCurveX(y,_))};var u=c;function c(y,_){this.x=y,this.y=_}c.prototype={clone:function(){return new c(this.x,this.y)},add:function(y){return this.clone()._add(y)},sub:function(y){return this.clone()._sub(y)},multByPoint:function(y){return this.clone()._multByPoint(y)},divByPoint:function(y){return this.clone()._divByPoint(y)},mult:function(y){return this.clone()._mult(y)},div:function(y){return this.clone()._div(y)},rotate:function(y){return this.clone()._rotate(y)},rotateAround:function(y,_){return this.clone()._rotateAround(y,_)},matMult:function(y){return this.clone()._matMult(y)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(y){return this.x===y.x&&this.y===y.y},dist:function(y){return Math.sqrt(this.distSqr(y))},distSqr:function(y){var _=y.x-this.x,I=y.y-this.y;return _*_+I*I},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(y){return Math.atan2(this.y-y.y,this.x-y.x)},angleWith:function(y){return this.angleWithSep(y.x,y.y)},angleWithSep:function(y,_){return Math.atan2(this.x*_-this.y*y,this.x*y+this.y*_)},_matMult:function(y){var _=y[0]*this.x+y[1]*this.y,I=y[2]*this.x+y[3]*this.y;return this.x=_,this.y=I,this},_add:function(y){return this.x+=y.x,this.y+=y.y,this},_sub:function(y){return this.x-=y.x,this.y-=y.y,this},_mult:function(y){return this.x*=y,this.y*=y,this},_div:function(y){return this.x/=y,this.y/=y,this},_multByPoint:function(y){return this.x*=y.x,this.y*=y.y,this},_divByPoint:function(y){return this.x/=y.x,this.y/=y.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var y=this.y;return this.y=this.x,this.x=-y,this},_rotate:function(y){var _=Math.cos(y),I=Math.sin(y),U=_*this.x-I*this.y,$=I*this.x+_*this.y;return this.x=U,this.y=$,this},_rotateAround:function(y,_){var I=Math.cos(y),U=Math.sin(y),$=_.x+I*(this.x-_.x)-U*(this.y-_.y),oe=_.y+U*(this.x-_.x)+I*(this.y-_.y);return this.x=$,this.y=oe,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},c.convert=function(y){return y instanceof c?y:Array.isArray(y)?new c(y[0],y[1]):y};var f=typeof self!="undefined"?self:{};function h(y,_){if(Array.isArray(y)){if(!Array.isArray(_)||y.length!==_.length)return!1;for(var I=0;I=1)return 1;var _=y*y,I=_*y;return 4*(y<.5?I:3*(y-_)+I-.75)}function m(y,_,I,U){var $=new s(y,_,I,U);return function(oe){return $.solve(oe)}}var b=m(.25,.1,.25,1);function p(y,_,I){return Math.min(I,Math.max(_,y))}function k(y,_,I){var U=I-_,$=((y-_)%U+U)%U+_;return $===_?I:$}function M(y,_,I){if(!y.length)return I(null,[]);var U=y.length,$=new Array(y.length),oe=null;y.forEach(function(he,De){_(he,function(it,yt){it&&(oe=it),$[De]=yt,--U===0&&I(oe,$)})})}function T(y){var _=[];for(var I in y)_.push(y[I]);return _}function L(y,_){var I=[];for(var U in y)U in _||I.push(U);return I}function x(y){for(var _=[],I=arguments.length-1;I-- >0;)_[I]=arguments[I+1];for(var U=0,$=_;U<$.length;U+=1){var oe=$[U];for(var he in oe)y[he]=oe[he]}return y}function C(y,_){for(var I={},U=0;U<_.length;U++){var $=_[U];$ in y&&(I[$]=y[$])}return I}var S=1;function g(){return S++}function P(){function y(_){return _?(_^Math.random()*16>>_/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,y)}return y()}function E(y){return y<=1?1:Math.pow(2,Math.ceil(Math.log(y)/Math.LN2))}function z(y){return y?/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(y):!1}function q(y,_){y.forEach(function(I){_[I]&&(_[I]=_[I].bind(_))})}function V(y,_){return y.indexOf(_,y.length-_.length)!==-1}function G(y,_,I){var U={};for(var $ in y)U[$]=_.call(I||this,y[$],$,y);return U}function Z(y,_,I){var U={};for(var $ in y)_.call(I||this,y[$],$,y)&&(U[$]=y[$]);return U}function j(y){return Array.isArray(y)?y.map(j):typeof y=="object"&&y?G(y,j):y}function N(y,_){for(var I=0;I=0)return!0;return!1}var H={};function ie(y){H[y]||(typeof console!="undefined"&&console.warn(y),H[y]=!0)}function ae(y,_,I){return(I.y-y.y)*(_.x-y.x)>(_.y-y.y)*(I.x-y.x)}function _e(y){for(var _=0,I=0,U=y.length,$=U-1,oe=void 0,he=void 0;I@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,I={};if(y.replace(_,function($,oe,he,De){var it=he||De;return I[oe]=it?it.toLowerCase():!0,""}),I["max-age"]){var U=parseInt(I["max-age"],10);isNaN(U)?delete I["max-age"]:I["max-age"]=U}return I}var re=null;function Se(y){if(re==null){var _=y.navigator?y.navigator.userAgent:null;re=!!y.safari||!!(_&&(/\b(iPad|iPhone|iPod)\b/.test(_)||_.match("Safari")&&!_.match("Chrome")))}return re}function ke(y){try{var _=f[y];return _.setItem("_mapbox_test_",1),_.removeItem("_mapbox_test_"),!0}catch(I){return!1}}function be(y){return f.btoa(encodeURIComponent(y).replace(/%([0-9A-F]{2})/g,function(_,I){return String.fromCharCode(+("0x"+I))}))}function Be(y){return decodeURIComponent(f.atob(y).split("").map(function(_){return"%"+("00"+_.charCodeAt(0).toString(16)).slice(-2)}).join(""))}var Le=f.performance&&f.performance.now?f.performance.now.bind(f.performance):Date.now.bind(Date),me=f.requestAnimationFrame||f.mozRequestAnimationFrame||f.webkitRequestAnimationFrame||f.msRequestAnimationFrame,Pe=f.cancelAnimationFrame||f.mozCancelAnimationFrame||f.webkitCancelAnimationFrame||f.msCancelAnimationFrame,ce,He,lt={now:Le,frame:function(_){var I=me(_);return{cancel:function(){return Pe(I)}}},getImageData:function(_,I){I===void 0&&(I=0);var U=f.document.createElement("canvas"),$=U.getContext("2d");if(!$)throw new Error("failed to create canvas 2d context");return U.width=_.width,U.height=_.height,$.drawImage(_,0,0,_.width,_.height),$.getImageData(-I,-I,_.width+2*I,_.height+2*I)},resolveURL:function(_){return ce||(ce=f.document.createElement("a")),ce.href=_,ce.href},hardwareConcurrency:f.navigator&&f.navigator.hardwareConcurrency||4,get devicePixelRatio(){return f.devicePixelRatio},get prefersReducedMotion(){return f.matchMedia?(He==null&&(He=f.matchMedia("(prefers-reduced-motion: reduce)")),He.matches):!1}},mt={API_URL:"https://api.mapbox.com",get EVENTS_URL(){return this.API_URL?this.API_URL.indexOf("https://api.mapbox.cn")===0?"https://events.mapbox.cn/events/v2":this.API_URL.indexOf("https://api.mapbox.com")===0?"https://events.mapbox.com/events/v2":null:null},FEEDBACK_URL:"https://apps.mapbox.com/feedback",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},Ht={supported:!1,testSupport:rr},at,ct=!1,ar,Vt=!1;f.document&&(ar=f.document.createElement("img"),ar.onload=function(){at&&tt(at),at=null,Vt=!0},ar.onerror=function(){ct=!0,at=null},ar.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");function rr(y){ct||!ar||(Vt?tt(y):at=y)}function tt(y){var _=y.createTexture();y.bindTexture(y.TEXTURE_2D,_);try{if(y.texImage2D(y.TEXTURE_2D,0,y.RGBA,y.RGBA,y.UNSIGNED_BYTE,ar),y.isContextLost())return;Ht.supported=!0}catch(I){}y.deleteTexture(_),ct=!0}var je="01";function Ue(){for(var y="1",_="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",I="",U=0;U<10;U++)I+=_[Math.floor(Math.random()*62)];var $=12*60*60*1e3,oe=[y,je,I].join(""),he=Date.now()+$;return{token:oe,tokenExpiresAt:he}}var Ae=function(_,I){this._transformRequestFn=_,this._customAccessToken=I,this._createSkuToken()};Ae.prototype._createSkuToken=function(){var _=Ue();this._skuToken=_.token,this._skuTokenExpiresAt=_.tokenExpiresAt},Ae.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},Ae.prototype.transformRequest=function(_,I){return this._transformRequestFn?this._transformRequestFn(_,I)||{url:_}:{url:_}},Ae.prototype.normalizeStyleURL=function(_,I){if(!rt(_))return _;var U=jt(_);return U.path="/styles/v1"+U.path,this._makeAPIURL(U,this._customAccessToken||I)},Ae.prototype.normalizeGlyphsURL=function(_,I){if(!rt(_))return _;var U=jt(_);return U.path="/fonts/v1"+U.path,this._makeAPIURL(U,this._customAccessToken||I)},Ae.prototype.normalizeSourceURL=function(_,I){if(!rt(_))return _;var U=jt(_);return U.path="/v4/"+U.authority+".json",U.params.push("secure"),this._makeAPIURL(U,this._customAccessToken||I)},Ae.prototype.normalizeSpriteURL=function(_,I,U,$){var oe=jt(_);return rt(_)?(oe.path="/styles/v1"+oe.path+"/sprite"+I+U,this._makeAPIURL(oe,this._customAccessToken||$)):(oe.path+=""+I+U,or(oe))},Ae.prototype.normalizeTileURL=function(_,I){if(this._isSkuTokenExpired()&&this._createSkuToken(),_&&!rt(_))return _;var U=jt(_),$=/(\.(png|jpg)\d*)(?=$)/,oe=/^.+\/v4\//,he=lt.devicePixelRatio>=2||I===512?"@2x":"",De=Ht.supported?".webp":"$1";U.path=U.path.replace($,""+he+De),U.path=U.path.replace(oe,"/"),U.path="/v4"+U.path;var it=this._customAccessToken||Et(U.params)||mt.ACCESS_TOKEN;return mt.REQUIRE_ACCESS_TOKEN&&it&&this._skuToken&&U.params.push("sku="+this._skuToken),this._makeAPIURL(U,it)},Ae.prototype.canonicalizeTileURL=function(_,I){var U="/v4/",$=/\.[\w]+$/,oe=jt(_);if(!oe.path.match(/(^\/v4\/)/)||!oe.path.match($))return _;var he="mapbox://tiles/";he+=oe.path.replace(U,"");var De=oe.params;return I&&(De=De.filter(function(it){return!it.match(/^access_token=/)})),De.length&&(he+="?"+De.join("&")),he},Ae.prototype.canonicalizeTileset=function(_,I){for(var U=I?rt(I):!1,$=[],oe=0,he=_.tiles||[];oe=0&&_.params.splice(oe,1)}if($.path!=="/"&&(_.path=""+$.path+_.path),!mt.REQUIRE_ACCESS_TOKEN)return or(_);if(I=I||mt.ACCESS_TOKEN,!I)throw new Error("An API access token is required to use Mapbox GL. "+U);if(I[0]==="s")throw new Error("Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). "+U);return _.params=_.params.filter(function(he){return he.indexOf("access_token")===-1}),_.params.push("access_token="+I),or(_)};function rt(y){return y.indexOf("mapbox:")===0}var St=/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i;function Tt(y){return St.test(y)}function dt(y){return y.indexOf("sku=")>0&&Tt(y)}function Et(y){for(var _=0,I=y;_=1&&f.localStorage.setItem(I,JSON.stringify(this.eventData))}catch($){ie("Unable to write to LocalStorage")}},ei.prototype.processRequests=function(_){},ei.prototype.postEvent=function(_,I,U,$){var oe=this;if(mt.EVENTS_URL){var he=jt(mt.EVENTS_URL);he.params.push("access_token="+($||mt.ACCESS_TOKEN||""));var De={event:this.type,created:new Date(_).toISOString(),sdkIdentifier:"mapbox-gl-js",sdkVersion:o,skuId:je,userId:this.anonId},it=I?x(De,I):De,yt={url:or(he),headers:{"Content-Type":"text/plain"},body:JSON.stringify([it])};this.pendingRequest=$r(yt,function(Lt){oe.pendingRequest=null,U(Lt),oe.saveEventData(),oe.processRequests($)})}},ei.prototype.queueRequest=function(_,I){this.queue.push(_),this.processRequests(I)};var qr=function(y){function _(){y.call(this,"map.load"),this.success={},this.skuToken=""}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype.postMapLoadEvent=function(U,$,oe,he){this.skuToken=oe,(mt.EVENTS_URL&&he||mt.ACCESS_TOKEN&&Array.isArray(U)&&U.some(function(De){return rt(De)||Tt(De)}))&&this.queueRequest({id:$,timestamp:Date.now()},he)},_.prototype.processRequests=function(U){var $=this;if(!(this.pendingRequest||this.queue.length===0)){var oe=this.queue.shift(),he=oe.id,De=oe.timestamp;he&&this.success[he]||(this.anonId||this.fetchEventData(),z(this.anonId)||(this.anonId=P()),this.postEvent(De,{skuToken:this.skuToken},function(it){it||he&&($.success[he]=!0)},U))}},_}(ei),jr=function(y){function _(I){y.call(this,"appUserTurnstile"),this._customAccessToken=I}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype.postTurnstileEvent=function(U,$){mt.EVENTS_URL&&mt.ACCESS_TOKEN&&Array.isArray(U)&&U.some(function(oe){return rt(oe)||Tt(oe)})&&this.queueRequest(Date.now(),$)},_.prototype.processRequests=function(U){var $=this;if(!(this.pendingRequest||this.queue.length===0)){(!this.anonId||!this.eventData.lastSuccess||!this.eventData.tokenU)&&this.fetchEventData();var oe=Ar(mt.ACCESS_TOKEN),he=oe?oe.u:mt.ACCESS_TOKEN,De=he!==this.eventData.tokenU;z(this.anonId)||(this.anonId=P(),De=!0);var it=this.queue.shift();if(this.eventData.lastSuccess){var yt=new Date(this.eventData.lastSuccess),Lt=new Date(it),sr=(it-this.eventData.lastSuccess)/(24*60*60*1e3);De=De||sr>=1||sr<-1||yt.getDate()!==Lt.getDate()}else De=!0;if(!De)return this.processRequests();this.postEvent(it,{"enabled.telemetry":!1},function(gr){gr||($.eventData.lastSuccess=it,$.eventData.tokenU=he)},U)}},_}(ei),gt=new jr,Ge=gt.postTurnstileEvent.bind(gt),Je=new qr,We=Je.postMapLoadEvent.bind(Je),et="mapbox-tiles",xt=500,At=50,Kt=1e3*60*7,Qt;function Mr(){f.caches&&!Qt&&(Qt=f.caches.open(et))}var Gr;function Ir(y,_){if(Gr===void 0)try{new Response(new ReadableStream),Gr=!0}catch(I){Gr=!1}Gr?_(y.body):y.blob().then(_)}function Yr(y,_,I){if(Mr(),!!Qt){var U={status:_.status,statusText:_.statusText,headers:new f.Headers};_.headers.forEach(function(he,De){return U.headers.set(De,he)});var $=ge(_.headers.get("Cache-Control")||"");if(!$["no-store"]){$["max-age"]&&U.headers.set("Expires",new Date(I+$["max-age"]*1e3).toUTCString());var oe=new Date(U.headers.get("Expires")).getTime()-I;oeDate.now()&&!I["no-cache"]}var mi=1/0;function un(y){mi++,mi>At&&(y.getActor().send("enforceCacheSizeLimit",xt),mi=0)}function Fn(y){Mr(),Qt&&Qt.then(function(_){_.keys().then(function(I){for(var U=0;U=200&&I.status<300||I.status===0)&&I.response!==null){var $=I.response;if(y.type==="json")try{$=JSON.parse(I.response)}catch(oe){return _(oe)}_(null,$,I.getResponseHeader("Cache-Control"),I.getResponseHeader("Expires"))}else _(new Jn(I.statusText,I.status,y.url))},I.send(y.body),{cancel:function(){return I.abort()}}}var wr=function(y,_){if(!wt(y.url)){if(f.fetch&&f.Request&&f.AbortController&&f.Request.prototype.hasOwnProperty("signal"))return tr(y,_);if(Ce()&&self.worker&&self.worker.actor){var I=!0;return self.worker.actor.send("getResource",y,_,void 0,I)}}return ir(y,_)},Xr=function(y,_){return wr(x(y,{type:"json"}),_)},ti=function(y,_){return wr(x(y,{type:"arrayBuffer"}),_)},$r=function(y,_){return wr(x(y,{method:"POST"}),_)};function Ri(y){var _=f.document.createElement("a");return _.href=y,_.protocol===f.document.location.protocol&&_.host===f.document.location.host}var Zi="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function en(y,_,I,U){var $=new f.Image,oe=f.URL;$.onload=function(){_(null,$),oe.revokeObjectURL($.src),$.onload=null,f.requestAnimationFrame(function(){$.src=Zi})},$.onerror=function(){return _(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))};var he=new f.Blob([new Uint8Array(y)],{type:"image/png"});$.cacheControl=I,$.expires=U,$.src=y.byteLength?oe.createObjectURL(he):Zi}function fn(y,_){var I=new f.Blob([new Uint8Array(y)],{type:"image/png"});f.createImageBitmap(I).then(function(U){_(null,U)}).catch(function(U){_(new Error("Could not load image because of "+U.message+". Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))})}var yn,Mn,Ba=function(){yn=[],Mn=0};Ba();var ua=function(y,_){if(Ht.supported&&(y.headers||(y.headers={}),y.headers.accept="image/webp,*/*"),Mn>=mt.MAX_PARALLEL_IMAGE_REQUESTS){var I={requestParameters:y,callback:_,cancelled:!1,cancel:function(){this.cancelled=!0}};return yn.push(I),I}Mn++;var U=!1,$=function(){if(!U)for(U=!0,Mn--;yn.length&&Mn0||this._oneTimeListeners&&this._oneTimeListeners[_]&&this._oneTimeListeners[_].length>0||this._eventedParent&&this._eventedParent.listens(_)},jn.prototype.setEventedParent=function(_,I){return this._eventedParent=_,this._eventedParentData=I,this};var Ha=8,vo={version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sources:{required:!0,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},Gn={"*":{type:"source"}},Ct=["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],Sr={type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},Jr={type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},hi={type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{}},default:"mapbox"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},hn={type:{required:!0,type:"enum",values:{geojson:{}}},data:{type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},Sn={type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},En={type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},ki={id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},_n=["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],ya={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},ea={"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Ma={"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},_o={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},No={"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},po={"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Lo={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},ko={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Ds={type:"array",value:"*"},Fs={type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},ll={type:"enum",values:{Point:{},LineString:{},Polygon:{}}},ul={type:"array",minimum:0,maximum:24,value:["number","color"],length:2},zl={type:"array",value:"*",minimum:1},us={anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},il=["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],As={"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},cl={"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},Ks={"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},zs={"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Io={"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},ls={"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Yl={"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Su={"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},nc={duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},bs={"*":{type:"string"}},Rn={$version:Ha,$root:vo,sources:Gn,source:Ct,source_vector:Sr,source_raster:Jr,source_raster_dem:hi,source_geojson:hn,source_video:Sn,source_image:En,layer:ki,layout:_n,layout_background:ya,layout_fill:ea,layout_circle:Ma,layout_heatmap:_o,"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:No,layout_symbol:po,layout_raster:Lo,layout_hillshade:ko,filter:Ds,filter_operator:Fs,geometry_type:ll,function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:ul,expression:zl,light:us,paint:il,paint_fill:As,"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:cl,paint_circle:Ks,paint_heatmap:zs,paint_symbol:Io,paint_raster:ls,paint_hillshade:Yl,paint_background:Su,transition:nc,"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:bs},_a=function(_,I,U,$){this.message=(_?_+": ":"")+U,$&&(this.identifier=$),I!=null&&I.__line__&&(this.line=I.__line__)};function Vu(y){var _=y.key,I=y.value;return I?[new _a(_,I,"constants have been deprecated as of v8")]:[]}function ql(y){for(var _=[],I=arguments.length-1;I-- >0;)_[I]=arguments[I+1];for(var U=0,$=_;U<$.length;U+=1){var oe=$[U];for(var he in oe)y[he]=oe[he]}return y}function xo(y){return y instanceof Number||y instanceof String||y instanceof Boolean?y.valueOf():y}function Kl(y){if(Array.isArray(y))return y.map(Kl);if(y instanceof Object&&!(y instanceof Number||y instanceof String||y instanceof Boolean)){var _={};for(var I in y)_[I]=Kl(y[I]);return _}return xo(y)}var Ns=function(y){function _(I,U){y.call(this,U),this.message=U,this.key=I}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_}(Error),Hl=function(_,I){I===void 0&&(I=[]),this.parent=_,this.bindings={};for(var U=0,$=I;U<$.length;U+=1){var oe=$[U],he=oe[0],De=oe[1];this.bindings[he]=De}};Hl.prototype.concat=function(_){return new Hl(this,_)},Hl.prototype.get=function(_){if(this.bindings[_])return this.bindings[_];if(this.parent)return this.parent.get(_);throw new Error(_+" not found in scope.")},Hl.prototype.has=function(_){return this.bindings[_]?!0:this.parent?this.parent.has(_):!1};var ac={kind:"null"},oa={kind:"number"},qo={kind:"string"},Oo={kind:"boolean"},Ol={kind:"color"},Pc={kind:"object"},Do={kind:"value"},nf={kind:"error"},Vf={kind:"collator"},pl={kind:"formatted"},Zc={kind:"resolvedImage"};function Jl(y,_){return{kind:"array",itemType:y,N:_}}function qs(y){if(y.kind==="array"){var _=qs(y.itemType);return typeof y.N=="number"?"array<"+_+", "+y.N+">":y.itemType.kind==="value"?"array":"array<"+_+">"}else return y.kind}var yu=[ac,oa,qo,Oo,Ol,pl,Pc,Jl(Do),Zc];function oc(y,_){if(_.kind==="error")return null;if(y.kind==="array"){if(_.kind==="array"&&(_.N===0&&_.itemType.kind==="value"||!oc(y.itemType,_.itemType))&&(typeof y.N!="number"||y.N===_.N))return null}else{if(y.kind===_.kind)return null;if(y.kind==="value")for(var I=0,U=yu;I255?255:yt}function $(yt){return yt<0?0:yt>1?1:yt}function oe(yt){return yt[yt.length-1]==="%"?U(parseFloat(yt)/100*255):U(parseInt(yt))}function he(yt){return yt[yt.length-1]==="%"?$(parseFloat(yt)/100):$(parseFloat(yt))}function De(yt,Lt,sr){return sr<0?sr+=1:sr>1&&(sr-=1),sr*6<1?yt+(Lt-yt)*sr*6:sr*2<1?Lt:sr*3<2?yt+(Lt-yt)*(2/3-sr)*6:yt}function it(yt){var Lt=yt.replace(/ /g,"").toLowerCase();if(Lt in I)return I[Lt].slice();if(Lt[0]==="#"){if(Lt.length===4){var sr=parseInt(Lt.substr(1),16);return sr>=0&&sr<=4095?[(sr&3840)>>4|(sr&3840)>>8,sr&240|(sr&240)>>4,sr&15|(sr&15)<<4,1]:null}else if(Lt.length===7){var sr=parseInt(Lt.substr(1),16);return sr>=0&&sr<=16777215?[(sr&16711680)>>16,(sr&65280)>>8,sr&255,1]:null}return null}var gr=Lt.indexOf("("),hr=Lt.indexOf(")");if(gr!==-1&&hr+1===Lt.length){var Rr=Lt.substr(0,gr),ni=Lt.substr(gr+1,hr-(gr+1)).split(","),Hi=1;switch(Rr){case"rgba":if(ni.length!==4)return null;Hi=he(ni.pop());case"rgb":return ni.length!==3?null:[oe(ni[0]),oe(ni[1]),oe(ni[2]),Hi];case"hsla":if(ni.length!==4)return null;Hi=he(ni.pop());case"hsl":if(ni.length!==3)return null;var wi=(parseFloat(ni[0])%360+360)%360/360,bn=he(ni[1]),rn=he(ni[2]),xn=rn<=.5?rn*(bn+1):rn+bn-rn*bn,In=rn*2-xn;return[U(De(In,xn,wi+1/3)*255),U(De(In,xn,wi)*255),U(De(In,xn,wi-1/3)*255),Hi];default:return null}}return null}try{_.parseCSSColor=it}catch(yt){}}),Lf=jh.parseCSSColor,cs=function(_,I,U,$){$===void 0&&($=1),this.r=_,this.g=I,this.b=U,this.a=$};cs.parse=function(_){if(_){if(_ instanceof cs)return _;if(typeof _=="string"){var I=Lf(_);if(I)return new cs(I[0]/255*I[3],I[1]/255*I[3],I[2]/255*I[3],I[3])}}},cs.prototype.toString=function(){var _=this.toArray(),I=_[0],U=_[1],$=_[2],oe=_[3];return"rgba("+Math.round(I)+","+Math.round(U)+","+Math.round($)+","+oe+")"},cs.prototype.toArray=function(){var _=this,I=_.r,U=_.g,$=_.b,oe=_.a;return oe===0?[0,0,0,0]:[I*255/oe,U*255/oe,$*255/oe,oe]},cs.black=new cs(0,0,0,1),cs.white=new cs(1,1,1,1),cs.transparent=new cs(0,0,0,0),cs.red=new cs(1,0,0,1);var af=function(_,I,U){_?this.sensitivity=I?"variant":"case":this.sensitivity=I?"accent":"base",this.locale=U,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})};af.prototype.compare=function(_,I){return this.collator.compare(_,I)},af.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var Gf=function(_,I,U,$,oe){this.text=_,this.image=I,this.scale=U,this.fontStack=$,this.textColor=oe},$l=function(_){this.sections=_};$l.fromString=function(_){return new $l([new Gf(_,null,null,null,null)])},$l.prototype.isEmpty=function(){return this.sections.length===0?!0:!this.sections.some(function(_){return _.text.length!==0||_.image&&_.image.name.length!==0})},$l.factory=function(_){return _ instanceof $l?_:$l.fromString(_)},$l.prototype.toString=function(){return this.sections.length===0?"":this.sections.map(function(_){return _.text}).join("")},$l.prototype.serialize=function(){for(var _=["format"],I=0,U=this.sections;I=0&&y<=255&&typeof _=="number"&&_>=0&&_<=255&&typeof I=="number"&&I>=0&&I<=255)){var $=typeof U=="number"?[y,_,I,U]:[y,_,I];return"Invalid rgba value ["+$.join(", ")+"]: 'r', 'g', and 'b' must be between 0 and 255."}return typeof U=="undefined"||typeof U=="number"&&U>=0&&U<=1?null:"Invalid rgba value ["+[y,_,I,U].join(", ")+"]: 'a' must be between 0 and 1."}function Fu(y){if(y===null)return!0;if(typeof y=="string")return!0;if(typeof y=="boolean")return!0;if(typeof y=="number")return!0;if(y instanceof cs)return!0;if(y instanceof af)return!0;if(y instanceof $l)return!0;if(y instanceof fl)return!0;if(Array.isArray(y)){for(var _=0,I=y;_2){var De=_[1];if(typeof De!="string"||!(De in uc)||De==="object")return I.error('The item type argument of "array" must be one of string, number, boolean',1);he=uc[De],U++}else he=Do;var it;if(_.length>3){if(_[2]!==null&&(typeof _[2]!="number"||_[2]<0||_[2]!==Math.floor(_[2])))return I.error('The length argument to "array" must be a positive integer literal',2);it=_[2],U++}$=Jl(he,it)}else $=uc[oe];for(var yt=[];U<_.length;U++){var Lt=I.parse(_[U],U,Do);if(!Lt)return null;yt.push(Lt)}return new xl($,yt)},xl.prototype.evaluate=function(_){for(var I=0;I1)&&I.push($)}}return I.concat(this.args.map(function(oe){return oe.serialize()}))};var Gu=function(_){this.type=pl,this.sections=_};Gu.parse=function(_,I){if(_.length<2)return I.error("Expected at least one argument.");var U=_[1];if(!Array.isArray(U)&&typeof U=="object")return I.error("First argument must be an image or text section.");for(var $=[],oe=!1,he=1;he<=_.length-1;++he){var De=_[he];if(oe&&typeof De=="object"&&!Array.isArray(De)){oe=!1;var it=null;if(De["font-scale"]&&(it=I.parse(De["font-scale"],1,oa),!it))return null;var yt=null;if(De["text-font"]&&(yt=I.parse(De["text-font"],1,Jl(qo)),!yt))return null;var Lt=null;if(De["text-color"]&&(Lt=I.parse(De["text-color"],1,Ol),!Lt))return null;var sr=$[$.length-1];sr.scale=it,sr.font=yt,sr.textColor=Lt}else{var gr=I.parse(_[he],1,Do);if(!gr)return null;var hr=gr.type.kind;if(hr!=="string"&&hr!=="value"&&hr!=="null"&&hr!=="resolvedImage")return I.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");oe=!0,$.push({content:gr,scale:null,font:null,textColor:null})}}return new Gu($)},Gu.prototype.evaluate=function(_){var I=function(U){var $=U.content.evaluate(_);return Es($)===Zc?new Gf("",$,null,null,null):new Gf(Hs($),null,U.scale?U.scale.evaluate(_):null,U.font?U.font.evaluate(_).join(","):null,U.textColor?U.textColor.evaluate(_):null)};return new $l(this.sections.map(I))},Gu.prototype.eachChild=function(_){for(var I=0,U=this.sections;I-1),U},Os.prototype.eachChild=function(_){_(this.input)},Os.prototype.outputDefined=function(){return!1},Os.prototype.serialize=function(){return["image",this.input.serialize()]};var od={"to-boolean":Oo,"to-color":Ol,"to-number":oa,"to-string":qo},Po=function(_,I){this.type=_,this.args=I};Po.parse=function(_,I){if(_.length<2)return I.error("Expected at least one argument.");var U=_[0];if((U==="to-boolean"||U==="to-string")&&_.length!==2)return I.error("Expected one argument.");for(var $=od[U],oe=[],he=1;he<_.length;he++){var De=I.parse(_[he],he,Do);if(!De)return null;oe.push(De)}return new Po($,oe)},Po.prototype.evaluate=function(_){if(this.type.kind==="boolean")return!!this.args[0].evaluate(_);if(this.type.kind==="color"){for(var I,U,$=0,oe=this.args;$4?U="Invalid rbga value "+JSON.stringify(I)+": expected an array containing either three or four numeric values.":U=lc(I[0],I[1],I[2],I[3]),!U))return new cs(I[0]/255,I[1]/255,I[2]/255,I[3])}throw new ps(U||"Could not parse color from value '"+(typeof I=="string"?I:String(JSON.stringify(I)))+"'")}else if(this.type.kind==="number"){for(var it=null,yt=0,Lt=this.args;yt=_[2]||y[1]<=_[1]||y[3]>=_[3])}function Ah(y,_){var I=Ic(y[0]),U=yf(y[1]),$=Math.pow(2,_.z);return[Math.round(I*$*bl),Math.round(U*$*bl)]}function Qf(y,_,I){var U=y[0]-_[0],$=y[1]-_[1],oe=y[0]-I[0],he=y[1]-I[1];return U*he-oe*$===0&&U*oe<=0&&$*he<=0}function _f(y,_,I){return _[1]>y[1]!=I[1]>y[1]&&y[0]<(I[0]-_[0])*(y[1]-_[1])/(I[1]-_[1])+_[0]}function Yc(y,_){for(var I=!1,U=0,$=_.length;U<$;U++)for(var oe=_[U],he=0,De=oe.length;he0&&sr<0||Lt<0&&sr>0}function jf(y,_,I,U){var $=[_[0]-y[0],_[1]-y[1]],oe=[U[0]-I[0],U[1]-I[1]];return th(oe,$)===0?!1:!!(ju(y,_,I,U)&&ju(I,U,y,_))}function cc(y,_,I){for(var U=0,$=I;U<$.length;U+=1)for(var oe=$[U],he=0;heI[2]){var $=U*.5,oe=y[0]-I[0]>$?-U:I[0]-y[0]>$?U:0;oe===0&&(oe=y[0]-I[2]>$?-U:I[2]-y[0]>$?U:0),y[0]+=oe}Hf(_,y)}function Wf(y){y[0]=y[1]=1/0,y[2]=y[3]=-1/0}function Wh(y,_,I,U){for(var $=Math.pow(2,U.z)*bl,oe=[U.x*bl,U.y*bl],he=[],De=0,it=y;De=0)return!1;var I=!0;return y.eachChild(function(U){I&&!Eu(U,_)&&(I=!1)}),I}var Dc=function(_,I){this.type=I.type,this.name=_,this.boundExpression=I};Dc.parse=function(_,I){if(_.length!==2||typeof _[1]!="string")return I.error("'var' expression requires exactly one string literal argument.");var U=_[1];return I.scope.has(U)?new Dc(U,I.scope.get(U)):I.error('Unknown variable "'+U+'". Make sure "'+U+'" has been bound in an enclosing "let" expression before using it.',1)},Dc.prototype.evaluate=function(_){return this.boundExpression.evaluate(_)},Dc.prototype.eachChild=function(){},Dc.prototype.outputDefined=function(){return!1},Dc.prototype.serialize=function(){return["var",this.name]};var ks=function(_,I,U,$,oe){I===void 0&&(I=[]),$===void 0&&($=new Hl),oe===void 0&&(oe=[]),this.registry=_,this.path=I,this.key=I.map(function(he){return"["+he+"]"}).join(""),this.scope=$,this.errors=oe,this.expectedType=U};ks.prototype.parse=function(_,I,U,$,oe){return oe===void 0&&(oe={}),I?this.concat(I,U,$)._parse(_,oe):this._parse(_,oe)},ks.prototype._parse=function(_,I){(_===null||typeof _=="string"||typeof _=="boolean"||typeof _=="number")&&(_=["literal",_]);function U(Lt,sr,gr){return gr==="assert"?new xl(sr,[Lt]):gr==="coerce"?new Po(sr,[Lt]):Lt}if(Array.isArray(_)){if(_.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var $=_[0];if(typeof $!="string")return this.error("Expression name must be a string, but found "+typeof $+' instead. If you wanted a literal array, use ["literal", [...]].',0),null;var oe=this.registry[$];if(oe){var he=oe.parse(_,this);if(!he)return null;if(this.expectedType){var De=this.expectedType,it=he.type;if((De.kind==="string"||De.kind==="number"||De.kind==="boolean"||De.kind==="object"||De.kind==="array")&&it.kind==="value")he=U(he,De,I.typeAnnotation||"assert");else if((De.kind==="color"||De.kind==="formatted"||De.kind==="resolvedImage")&&(it.kind==="value"||it.kind==="string"))he=U(he,De,I.typeAnnotation||"coerce");else if(this.checkSubtype(De,it))return null}if(!(he instanceof Go)&&he.type.kind!=="resolvedImage"&&bc(he)){var yt=new Ko;try{he=new Go(he.type,he.evaluate(yt))}catch(Lt){return this.error(Lt.message),null}}return he}return this.error('Unknown expression "'+$+'". If you wanted a literal array, use ["literal", [...]].',0)}else return typeof _=="undefined"?this.error("'undefined' value invalid. Use null instead."):typeof _=="object"?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error("Expected an array, but found "+typeof _+" instead.")},ks.prototype.concat=function(_,I,U){var $=typeof _=="number"?this.path.concat(_):this.path,oe=U?this.scope.concat(U):this.scope;return new ks(this.registry,$,I||null,oe,this.errors)},ks.prototype.error=function(_){for(var I=[],U=arguments.length-1;U-- >0;)I[U]=arguments[U+1];var $=""+this.key+I.map(function(oe){return"["+oe+"]"}).join("");this.errors.push(new Ns($,_))},ks.prototype.checkSubtype=function(_,I){var U=oc(_,I);return U&&this.error(U),U};function bc(y){if(y instanceof Dc)return bc(y.boundExpression);if(y instanceof Pa&&y.name==="error")return!1;if(y instanceof Hu)return!1;if(y instanceof Mu)return!1;var _=y instanceof Po||y instanceof xl,I=!0;return y.eachChild(function(U){_?I=I&&bc(U):I=I&&U instanceof Go}),I?ih(y)&&Eu(y,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"]):!1}function hu(y,_){for(var I=y.length-1,U=0,$=I,oe=0,he,De;U<=$;)if(oe=Math.floor((U+$)/2),he=y[oe],De=y[oe+1],he<=_){if(oe===I||__)$=oe-1;else throw new ps("Input is not a number.");return 0}var _u=function(_,I,U){this.type=_,this.input=I,this.labels=[],this.outputs=[];for(var $=0,oe=U;$=De)return I.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',yt);var sr=I.parse(it,Lt,oe);if(!sr)return null;oe=oe||sr.type,$.push([De,sr])}return new _u(oe,U,$)},_u.prototype.evaluate=function(_){var I=this.labels,U=this.outputs;if(I.length===1)return U[0].evaluate(_);var $=this.input.evaluate(_);if($<=I[0])return U[0].evaluate(_);var oe=I.length;if($>=I[oe-1])return U[oe-1].evaluate(_);var he=hu(I,$);return U[he].evaluate(_)},_u.prototype.eachChild=function(_){_(this.input);for(var I=0,U=this.outputs;I0&&_.push(this.labels[I]),_.push(this.outputs[I].serialize());return _};function nl(y,_,I){return y*(1-I)+_*I}function nh(y,_,I){return new cs(nl(y.r,_.r,I),nl(y.g,_.g,I),nl(y.b,_.b,I),nl(y.a,_.a,I))}function Mh(y,_,I){return y.map(function(U,$){return nl(U,_[$],I)})}var zu=Object.freeze({__proto__:null,number:nl,color:nh,array:Mh}),Fc=.95047,wc=1,bd=1.08883,xf=4/29,Pf=6/29,qu=3*Pf*Pf,bf=Pf*Pf*Pf,jl=Math.PI/180,uf=180/Math.PI;function Xh(y){return y>bf?Math.pow(y,1/3):y/qu+xf}function If(y){return y>Pf?y*y*y:qu*(y-xf)}function Cs(y){return 255*(y<=.0031308?12.92*y:1.055*Math.pow(y,1/2.4)-.055)}function du(y){return y/=255,y<=.04045?y/12.92:Math.pow((y+.055)/1.055,2.4)}function ku(y){var _=du(y.r),I=du(y.g),U=du(y.b),$=Xh((.4124564*_+.3575761*I+.1804375*U)/Fc),oe=Xh((.2126729*_+.7151522*I+.072175*U)/wc),he=Xh((.0193339*_+.119192*I+.9503041*U)/bd);return{l:116*oe-16,a:500*($-oe),b:200*(oe-he),alpha:y.a}}function Xf(y){var _=(y.l+16)/116,I=isNaN(y.a)?_:_+y.a/500,U=isNaN(y.b)?_:_-y.b/200;return _=wc*If(_),I=Fc*If(I),U=bd*If(U),new cs(Cs(3.2404542*I-1.5371385*_-.4985314*U),Cs(-.969266*I+1.8760108*_+.041556*U),Cs(.0556434*I-.2040259*_+1.0572252*U),y.alpha)}function Us(y,_,I){return{l:nl(y.l,_.l,I),a:nl(y.a,_.a,I),b:nl(y.b,_.b,I),alpha:nl(y.alpha,_.alpha,I)}}function wf(y){var _=ku(y),I=_.l,U=_.a,$=_.b,oe=Math.atan2($,U)*uf;return{h:oe<0?oe+360:oe,c:Math.sqrt(U*U+$*$),l:I,alpha:y.a}}function zc(y){var _=y.h*jl,I=y.c,U=y.l;return Xf({l:U,a:Math.cos(_)*I,b:Math.sin(_)*I,alpha:y.alpha})}function Wu(y,_,I){var U=_-y;return y+I*(U>180||U<-180?U-360*Math.round(U/360):U)}function Rf(y,_,I){return{h:Wu(y.h,_.h,I),c:nl(y.c,_.c,I),l:nl(y.l,_.l,I),alpha:nl(y.alpha,_.alpha,I)}}var Xu={forward:ku,reverse:Xf,interpolate:Us},cf={forward:wf,reverse:zc,interpolate:Rf},Zf=Object.freeze({__proto__:null,lab:Xu,hcl:cf}),Wl=function(_,I,U,$,oe){this.type=_,this.operator=I,this.interpolation=U,this.input=$,this.labels=[],this.outputs=[];for(var he=0,De=oe;he1}))return I.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);$={name:"cubic-bezier",controlPoints:it}}else return I.error("Unknown interpolation type "+String($[0]),1,0);if(_.length-1<4)return I.error("Expected at least 4 arguments, but found only "+(_.length-1)+".");if((_.length-1)%2!==0)return I.error("Expected an even number of arguments.");if(oe=I.parse(oe,2,oa),!oe)return null;var yt=[],Lt=null;U==="interpolate-hcl"||U==="interpolate-lab"?Lt=Ol:I.expectedType&&I.expectedType.kind!=="value"&&(Lt=I.expectedType);for(var sr=0;sr=gr)return I.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',Rr);var Hi=I.parse(hr,ni,Lt);if(!Hi)return null;Lt=Lt||Hi.type,yt.push([gr,Hi])}return Lt.kind!=="number"&&Lt.kind!=="color"&&!(Lt.kind==="array"&&Lt.itemType.kind==="number"&&typeof Lt.N=="number")?I.error("Type "+qs(Lt)+" is not interpolatable."):new Wl(Lt,U,$,oe,yt)},Wl.prototype.evaluate=function(_){var I=this.labels,U=this.outputs;if(I.length===1)return U[0].evaluate(_);var $=this.input.evaluate(_);if($<=I[0])return U[0].evaluate(_);var oe=I.length;if($>=I[oe-1])return U[oe-1].evaluate(_);var he=hu(I,$),De=I[he],it=I[he+1],yt=Wl.interpolationFactor(this.interpolation,$,De,it),Lt=U[he].evaluate(_),sr=U[he+1].evaluate(_);return this.operator==="interpolate"?zu[this.type.kind.toLowerCase()](Lt,sr,yt):this.operator==="interpolate-hcl"?cf.reverse(cf.interpolate(cf.forward(Lt),cf.forward(sr),yt)):Xu.reverse(Xu.interpolate(Xu.forward(Lt),Xu.forward(sr),yt))},Wl.prototype.eachChild=function(_){_(this.input);for(var I=0,U=this.outputs;I=U.length)throw new ps("Array index out of bounds: "+I+" > "+(U.length-1)+".");if(I!==Math.floor(I))throw new ps("Array index must be an integer, but found "+I+" instead.");return U[I]},Tc.prototype.eachChild=function(_){_(this.index),_(this.input)},Tc.prototype.outputDefined=function(){return!1},Tc.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var wl=function(_,I){this.type=Oo,this.needle=_,this.haystack=I};wl.parse=function(_,I){if(_.length!==3)return I.error("Expected 2 arguments, but found "+(_.length-1)+" instead.");var U=I.parse(_[1],1,Do),$=I.parse(_[2],2,Do);return!U||!$?null:Cf(U.type,[Oo,qo,oa,ac,Do])?new wl(U,$):I.error("Expected first argument to be of type boolean, string, number or null, but found "+qs(U.type)+" instead")},wl.prototype.evaluate=function(_){var I=this.needle.evaluate(_),U=this.haystack.evaluate(_);if(!U)return!1;if(!sc(I,["boolean","string","number","null"]))throw new ps("Expected first argument to be of type boolean, string, number or null, but found "+qs(Es(I))+" instead.");if(!sc(U,["string","array"]))throw new ps("Expected second argument to be of type array or string, but found "+qs(Es(U))+" instead.");return U.indexOf(I)>=0},wl.prototype.eachChild=function(_){_(this.needle),_(this.haystack)},wl.prototype.outputDefined=function(){return!0},wl.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var vu=function(_,I,U){this.type=oa,this.needle=_,this.haystack=I,this.fromIndex=U};vu.parse=function(_,I){if(_.length<=2||_.length>=5)return I.error("Expected 3 or 4 arguments, but found "+(_.length-1)+" instead.");var U=I.parse(_[1],1,Do),$=I.parse(_[2],2,Do);if(!U||!$)return null;if(!Cf(U.type,[Oo,qo,oa,ac,Do]))return I.error("Expected first argument to be of type boolean, string, number or null, but found "+qs(U.type)+" instead");if(_.length===4){var oe=I.parse(_[3],3,oa);return oe?new vu(U,$,oe):null}else return new vu(U,$)},vu.prototype.evaluate=function(_){var I=this.needle.evaluate(_),U=this.haystack.evaluate(_);if(!sc(I,["boolean","string","number","null"]))throw new ps("Expected first argument to be of type boolean, string, number or null, but found "+qs(Es(I))+" instead.");if(!sc(U,["string","array"]))throw new ps("Expected second argument to be of type array or string, but found "+qs(Es(U))+" instead.");if(this.fromIndex){var $=this.fromIndex.evaluate(_);return U.indexOf(I,$)}return U.indexOf(I)},vu.prototype.eachChild=function(_){_(this.needle),_(this.haystack),this.fromIndex&&_(this.fromIndex)},vu.prototype.outputDefined=function(){return!1},vu.prototype.serialize=function(){if(this.fromIndex!=null&&this.fromIndex!==void 0){var _=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),_]}return["index-of",this.needle.serialize(),this.haystack.serialize()]};var Oc=function(_,I,U,$,oe,he){this.inputType=_,this.type=I,this.input=U,this.cases=$,this.outputs=oe,this.otherwise=he};Oc.parse=function(_,I){if(_.length<5)return I.error("Expected at least 4 arguments, but found only "+(_.length-1)+".");if(_.length%2!==1)return I.error("Expected an even number of arguments.");var U,$;I.expectedType&&I.expectedType.kind!=="value"&&($=I.expectedType);for(var oe={},he=[],De=2;De<_.length-1;De+=2){var it=_[De],yt=_[De+1];Array.isArray(it)||(it=[it]);var Lt=I.concat(De);if(it.length===0)return Lt.error("Expected at least one branch label.");for(var sr=0,gr=it;srNumber.MAX_SAFE_INTEGER)return Lt.error("Branch labels must be integers no larger than "+Number.MAX_SAFE_INTEGER+".");if(typeof hr=="number"&&Math.floor(hr)!==hr)return Lt.error("Numeric branch labels must be integer values.");if(!U)U=Es(hr);else if(Lt.checkSubtype(U,Es(hr)))return null;if(typeof oe[String(hr)]!="undefined")return Lt.error("Branch labels must be unique.");oe[String(hr)]=he.length}var Rr=I.parse(yt,De,$);if(!Rr)return null;$=$||Rr.type,he.push(Rr)}var ni=I.parse(_[1],1,Do);if(!ni)return null;var Hi=I.parse(_[_.length-1],_.length-1,$);return!Hi||ni.type.kind!=="value"&&I.concat(1).checkSubtype(U,ni.type)?null:new Oc(U,$,ni,oe,he,Hi)},Oc.prototype.evaluate=function(_){var I=this.input.evaluate(_),U=Es(I)===this.inputType&&this.outputs[this.cases[I]]||this.otherwise;return U.evaluate(_)},Oc.prototype.eachChild=function(_){_(this.input),this.outputs.forEach(_),_(this.otherwise)},Oc.prototype.outputDefined=function(){return this.outputs.every(function(_){return _.outputDefined()})&&this.otherwise.outputDefined()},Oc.prototype.serialize=function(){for(var _=this,I=["match",this.input.serialize()],U=Object.keys(this.cases).sort(),$=[],oe={},he=0,De=U;he=5)return I.error("Expected 3 or 4 arguments, but found "+(_.length-1)+" instead.");var U=I.parse(_[1],1,Do),$=I.parse(_[2],2,oa);if(!U||!$)return null;if(!Cf(U.type,[Jl(Do),qo,Do]))return I.error("Expected first argument to be of type array or string, but found "+qs(U.type)+" instead");if(_.length===4){var oe=I.parse(_[3],3,oa);return oe?new fc(U.type,U,$,oe):null}else return new fc(U.type,U,$)},fc.prototype.evaluate=function(_){var I=this.input.evaluate(_),U=this.beginIndex.evaluate(_);if(!sc(I,["string","array"]))throw new ps("Expected first argument to be of type array or string, but found "+qs(Es(I))+" instead.");if(this.endIndex){var $=this.endIndex.evaluate(_);return I.slice(U,$)}return I.slice(U)},fc.prototype.eachChild=function(_){_(this.input),_(this.beginIndex),this.endIndex&&_(this.endIndex)},fc.prototype.outputDefined=function(){return!1},fc.prototype.serialize=function(){if(this.endIndex!=null&&this.endIndex!==void 0){var _=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),_]}return["slice",this.input.serialize(),this.beginIndex.serialize()]};function Bc(y,_){return y==="=="||y==="!="?_.kind==="boolean"||_.kind==="string"||_.kind==="number"||_.kind==="null"||_.kind==="value":_.kind==="string"||_.kind==="number"||_.kind==="value"}function kt(y,_,I){return _===I}function Zt(y,_,I){return _!==I}function Er(y,_,I){return _I}function Kr(y,_,I){return _<=I}function Mi(y,_,I){return _>=I}function Wi(y,_,I,U){return U.compare(_,I)===0}function dn(y,_,I,U){return!Wi(y,_,I,U)}function wn(y,_,I,U){return U.compare(_,I)<0}function On(y,_,I,U){return U.compare(_,I)>0}function Yi(y,_,I,U){return U.compare(_,I)<=0}function $i(y,_,I,U){return U.compare(_,I)>=0}function an(y,_,I){var U=y!=="=="&&y!=="!=";return function(){function $(oe,he,De){this.type=Oo,this.lhs=oe,this.rhs=he,this.collator=De,this.hasUntypedArgument=oe.type.kind==="value"||he.type.kind==="value"}return $.parse=function(he,De){if(he.length!==3&&he.length!==4)return De.error("Expected two or three arguments.");var it=he[0],yt=De.parse(he[1],1,Do);if(!yt)return null;if(!Bc(it,yt.type))return De.concat(1).error('"'+it+`" comparisons are not supported for type '`+qs(yt.type)+"'.");var Lt=De.parse(he[2],2,Do);if(!Lt)return null;if(!Bc(it,Lt.type))return De.concat(2).error('"'+it+`" comparisons are not supported for type '`+qs(Lt.type)+"'.");if(yt.type.kind!==Lt.type.kind&&yt.type.kind!=="value"&&Lt.type.kind!=="value")return De.error("Cannot compare types '"+qs(yt.type)+"' and '"+qs(Lt.type)+"'.");U&&(yt.type.kind==="value"&&Lt.type.kind!=="value"?yt=new xl(Lt.type,[yt]):yt.type.kind!=="value"&&Lt.type.kind==="value"&&(Lt=new xl(yt.type,[Lt])));var sr=null;if(he.length===4){if(yt.type.kind!=="string"&&Lt.type.kind!=="string"&&yt.type.kind!=="value"&&Lt.type.kind!=="value")return De.error("Cannot use collator to compare non-string types.");if(sr=De.parse(he[3],3,Vf),!sr)return null}return new $(yt,Lt,sr)},$.prototype.evaluate=function(he){var De=this.lhs.evaluate(he),it=this.rhs.evaluate(he);if(U&&this.hasUntypedArgument){var yt=Es(De),Lt=Es(it);if(yt.kind!==Lt.kind||!(yt.kind==="string"||yt.kind==="number"))throw new ps('Expected arguments for "'+y+'" to be (string, string) or (number, number), but found ('+yt.kind+", "+Lt.kind+") instead.")}if(this.collator&&!U&&this.hasUntypedArgument){var sr=Es(De),gr=Es(it);if(sr.kind!=="string"||gr.kind!=="string")return _(he,De,it)}return this.collator?I(he,De,it,this.collator.evaluate(he)):_(he,De,it)},$.prototype.eachChild=function(he){he(this.lhs),he(this.rhs),this.collator&&he(this.collator)},$.prototype.outputDefined=function(){return!0},$.prototype.serialize=function(){var he=[y];return this.eachChild(function(De){he.push(De.serialize())}),he},$}()}var Fi=an("==",kt,Wi),ta=an("!=",Zt,dn),Ca=an("<",Er,wn),Ra=an(">",xr,On),La=an("<=",Kr,Yi),Ua=an(">=",Mi,$i),Zn=function(_,I,U,$,oe){this.type=qo,this.number=_,this.locale=I,this.currency=U,this.minFractionDigits=$,this.maxFractionDigits=oe};Zn.parse=function(_,I){if(_.length!==3)return I.error("Expected two arguments.");var U=I.parse(_[1],1,oa);if(!U)return null;var $=_[2];if(typeof $!="object"||Array.isArray($))return I.error("NumberFormat options argument must be an object.");var oe=null;if($.locale&&(oe=I.parse($.locale,1,qo),!oe))return null;var he=null;if($.currency&&(he=I.parse($.currency,1,qo),!he))return null;var De=null;if($["min-fraction-digits"]&&(De=I.parse($["min-fraction-digits"],1,oa),!De))return null;var it=null;return $["max-fraction-digits"]&&(it=I.parse($["max-fraction-digits"],1,oa),!it)?null:new Zn(U,oe,he,De,it)},Zn.prototype.evaluate=function(_){return new Intl.NumberFormat(this.locale?this.locale.evaluate(_):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(_):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(_):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(_):void 0}).format(this.number.evaluate(_))},Zn.prototype.eachChild=function(_){_(this.number),this.locale&&_(this.locale),this.currency&&_(this.currency),this.minFractionDigits&&_(this.minFractionDigits),this.maxFractionDigits&&_(this.maxFractionDigits)},Zn.prototype.outputDefined=function(){return!1},Zn.prototype.serialize=function(){var _={};return this.locale&&(_.locale=this.locale.serialize()),this.currency&&(_.currency=this.currency.serialize()),this.minFractionDigits&&(_["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(_["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),_]};var Dn=function(_){this.type=oa,this.input=_};Dn.parse=function(_,I){if(_.length!==2)return I.error("Expected 1 argument, but found "+(_.length-1)+" instead.");var U=I.parse(_[1],1);return U?U.type.kind!=="array"&&U.type.kind!=="string"&&U.type.kind!=="value"?I.error("Expected argument of type string or array, but found "+qs(U.type)+" instead."):new Dn(U):null},Dn.prototype.evaluate=function(_){var I=this.input.evaluate(_);if(typeof I=="string")return I.length;if(Array.isArray(I))return I.length;throw new ps("Expected value to be of type string or array, but found "+qs(Es(I))+" instead.")},Dn.prototype.eachChild=function(_){_(this.input)},Dn.prototype.outputDefined=function(){return!1},Dn.prototype.serialize=function(){var _=["length"];return this.eachChild(function(I){_.push(I.serialize())}),_};var Ka={"==":Fi,"!=":ta,">":Ra,"<":Ca,">=":Ua,"<=":La,array:xl,at:Tc,boolean:xl,case:ff,coalesce:Zu,collator:Hu,format:Gu,image:Os,in:wl,"index-of":vu,interpolate:Wl,"interpolate-hcl":Wl,"interpolate-lab":Wl,length:Dn,let:qc,literal:Go,match:Oc,number:xl,"number-format":Zn,object:xl,slice:fc,step:_u,string:xl,"to-boolean":Po,"to-color":Po,"to-number":Po,"to-string":Po,var:Dc,within:Mu};function bo(y,_){var I=_[0],U=_[1],$=_[2],oe=_[3];I=I.evaluate(y),U=U.evaluate(y),$=$.evaluate(y);var he=oe?oe.evaluate(y):1,De=lc(I,U,$,he);if(De)throw new ps(De);return new cs(I/255*he,U/255*he,$/255*he,he)}function Zo(y,_){return y in _}function Ss(y,_){var I=_[y];return typeof I=="undefined"?null:I}function as(y,_,I,U){for(;I<=U;){var $=I+U>>1;if(_[$]===y)return!0;_[$]>y?U=$-1:I=$+1}return!1}function ws(y){return{type:y}}Pa.register(Ka,{error:[nf,[qo],function(y,_){var I=_[0];throw new ps(I.evaluate(y))}],typeof:[qo,[Do],function(y,_){var I=_[0];return qs(Es(I.evaluate(y)))}],"to-rgba":[Jl(oa,4),[Ol],function(y,_){var I=_[0];return I.evaluate(y).toArray()}],rgb:[Ol,[oa,oa,oa],bo],rgba:[Ol,[oa,oa,oa,oa],bo],has:{type:Oo,overloads:[[[qo],function(y,_){var I=_[0];return Zo(I.evaluate(y),y.properties())}],[[qo,Pc],function(y,_){var I=_[0],U=_[1];return Zo(I.evaluate(y),U.evaluate(y))}]]},get:{type:Do,overloads:[[[qo],function(y,_){var I=_[0];return Ss(I.evaluate(y),y.properties())}],[[qo,Pc],function(y,_){var I=_[0],U=_[1];return Ss(I.evaluate(y),U.evaluate(y))}]]},"feature-state":[Do,[qo],function(y,_){var I=_[0];return Ss(I.evaluate(y),y.featureState||{})}],properties:[Pc,[],function(y){return y.properties()}],"geometry-type":[qo,[],function(y){return y.geometryType()}],id:[Do,[],function(y){return y.id()}],zoom:[oa,[],function(y){return y.globals.zoom}],"heatmap-density":[oa,[],function(y){return y.globals.heatmapDensity||0}],"line-progress":[oa,[],function(y){return y.globals.lineProgress||0}],accumulated:[Do,[],function(y){return y.globals.accumulated===void 0?null:y.globals.accumulated}],"+":[oa,ws(oa),function(y,_){for(var I=0,U=0,$=_;U<$.length;U+=1){var oe=$[U];I+=oe.evaluate(y)}return I}],"*":[oa,ws(oa),function(y,_){for(var I=1,U=0,$=_;U<$.length;U+=1){var oe=$[U];I*=oe.evaluate(y)}return I}],"-":{type:oa,overloads:[[[oa,oa],function(y,_){var I=_[0],U=_[1];return I.evaluate(y)-U.evaluate(y)}],[[oa],function(y,_){var I=_[0];return-I.evaluate(y)}]]},"/":[oa,[oa,oa],function(y,_){var I=_[0],U=_[1];return I.evaluate(y)/U.evaluate(y)}],"%":[oa,[oa,oa],function(y,_){var I=_[0],U=_[1];return I.evaluate(y)%U.evaluate(y)}],ln2:[oa,[],function(){return Math.LN2}],pi:[oa,[],function(){return Math.PI}],e:[oa,[],function(){return Math.E}],"^":[oa,[oa,oa],function(y,_){var I=_[0],U=_[1];return Math.pow(I.evaluate(y),U.evaluate(y))}],sqrt:[oa,[oa],function(y,_){var I=_[0];return Math.sqrt(I.evaluate(y))}],log10:[oa,[oa],function(y,_){var I=_[0];return Math.log(I.evaluate(y))/Math.LN10}],ln:[oa,[oa],function(y,_){var I=_[0];return Math.log(I.evaluate(y))}],log2:[oa,[oa],function(y,_){var I=_[0];return Math.log(I.evaluate(y))/Math.LN2}],sin:[oa,[oa],function(y,_){var I=_[0];return Math.sin(I.evaluate(y))}],cos:[oa,[oa],function(y,_){var I=_[0];return Math.cos(I.evaluate(y))}],tan:[oa,[oa],function(y,_){var I=_[0];return Math.tan(I.evaluate(y))}],asin:[oa,[oa],function(y,_){var I=_[0];return Math.asin(I.evaluate(y))}],acos:[oa,[oa],function(y,_){var I=_[0];return Math.acos(I.evaluate(y))}],atan:[oa,[oa],function(y,_){var I=_[0];return Math.atan(I.evaluate(y))}],min:[oa,ws(oa),function(y,_){return Math.min.apply(Math,_.map(function(I){return I.evaluate(y)}))}],max:[oa,ws(oa),function(y,_){return Math.max.apply(Math,_.map(function(I){return I.evaluate(y)}))}],abs:[oa,[oa],function(y,_){var I=_[0];return Math.abs(I.evaluate(y))}],round:[oa,[oa],function(y,_){var I=_[0],U=I.evaluate(y);return U<0?-Math.round(-U):Math.round(U)}],floor:[oa,[oa],function(y,_){var I=_[0];return Math.floor(I.evaluate(y))}],ceil:[oa,[oa],function(y,_){var I=_[0];return Math.ceil(I.evaluate(y))}],"filter-==":[Oo,[qo,Do],function(y,_){var I=_[0],U=_[1];return y.properties()[I.value]===U.value}],"filter-id-==":[Oo,[Do],function(y,_){var I=_[0];return y.id()===I.value}],"filter-type-==":[Oo,[qo],function(y,_){var I=_[0];return y.geometryType()===I.value}],"filter-<":[Oo,[qo,Do],function(y,_){var I=_[0],U=_[1],$=y.properties()[I.value],oe=U.value;return typeof $==typeof oe&&$":[Oo,[qo,Do],function(y,_){var I=_[0],U=_[1],$=y.properties()[I.value],oe=U.value;return typeof $==typeof oe&&$>oe}],"filter-id->":[Oo,[Do],function(y,_){var I=_[0],U=y.id(),$=I.value;return typeof U==typeof $&&U>$}],"filter-<=":[Oo,[qo,Do],function(y,_){var I=_[0],U=_[1],$=y.properties()[I.value],oe=U.value;return typeof $==typeof oe&&$<=oe}],"filter-id-<=":[Oo,[Do],function(y,_){var I=_[0],U=y.id(),$=I.value;return typeof U==typeof $&&U<=$}],"filter->=":[Oo,[qo,Do],function(y,_){var I=_[0],U=_[1],$=y.properties()[I.value],oe=U.value;return typeof $==typeof oe&&$>=oe}],"filter-id->=":[Oo,[Do],function(y,_){var I=_[0],U=y.id(),$=I.value;return typeof U==typeof $&&U>=$}],"filter-has":[Oo,[Do],function(y,_){var I=_[0];return I.value in y.properties()}],"filter-has-id":[Oo,[],function(y){return y.id()!==null&&y.id()!==void 0}],"filter-type-in":[Oo,[Jl(qo)],function(y,_){var I=_[0];return I.value.indexOf(y.geometryType())>=0}],"filter-id-in":[Oo,[Jl(Do)],function(y,_){var I=_[0];return I.value.indexOf(y.id())>=0}],"filter-in-small":[Oo,[qo,Jl(Do)],function(y,_){var I=_[0],U=_[1];return U.value.indexOf(y.properties()[I.value])>=0}],"filter-in-large":[Oo,[qo,Jl(Do)],function(y,_){var I=_[0],U=_[1];return as(y.properties()[I.value],U.value,0,U.value.length-1)}],all:{type:Oo,overloads:[[[Oo,Oo],function(y,_){var I=_[0],U=_[1];return I.evaluate(y)&&U.evaluate(y)}],[ws(Oo),function(y,_){for(var I=0,U=_;I-1}function va(y){return!!y.expression&&y.expression.interpolated}function no(y){return y instanceof Number?"number":y instanceof String?"string":y instanceof Boolean?"boolean":Array.isArray(y)?"array":y===null?"null":typeof y}function ys(y){return typeof y=="object"&&y!==null&&!Array.isArray(y)}function rs(y){return y}function Ql(y,_){var I=_.type==="color",U=y.stops&&typeof y.stops[0][0]=="object",$=U||y.property!==void 0,oe=U||!$,he=y.type||(va(_)?"exponential":"interval");if(I&&(y=ql({},y),y.stops&&(y.stops=y.stops.map(function(ha){return[ha[0],cs.parse(ha[1])]})),y.default?y.default=cs.parse(y.default):y.default=cs.parse(_.default)),y.colorSpace&&y.colorSpace!=="rgb"&&!Zf[y.colorSpace])throw new Error("Unknown color space: "+y.colorSpace);var De,it,yt;if(he==="exponential")De=pu;else if(he==="interval")De=Nc;else if(he==="categorical"){De=Yu,it=Object.create(null);for(var Lt=0,sr=y.stops;Lt=y.stops[U-1][0])return y.stops[U-1][1];var $=hu(y.stops.map(function(oe){return oe[0]}),I);return y.stops[$][1]}function pu(y,_,I){var U=y.base!==void 0?y.base:1;if(no(I)!=="number")return Cu(y.default,_.default);var $=y.stops.length;if($===1||I<=y.stops[0][0])return y.stops[0][1];if(I>=y.stops[$-1][0])return y.stops[$-1][1];var oe=hu(y.stops.map(function(sr){return sr[0]}),I),he=xu(I,U,y.stops[oe][0],y.stops[oe+1][0]),De=y.stops[oe][1],it=y.stops[oe+1][1],yt=zu[_.type]||rs;if(y.colorSpace&&y.colorSpace!=="rgb"){var Lt=Zf[y.colorSpace];yt=function(sr,gr){return Lt.reverse(Lt.interpolate(Lt.forward(sr),Lt.forward(gr),he))}}return typeof De.evaluate=="function"?{evaluate:function(){for(var gr=[],hr=arguments.length;hr--;)gr[hr]=arguments[hr];var Rr=De.evaluate.apply(void 0,gr),ni=it.evaluate.apply(void 0,gr);if(!(Rr===void 0||ni===void 0))return yt(Rr,ni,he)}}:yt(De,it,he)}function Uc(y,_,I){return _.type==="color"?I=cs.parse(I):_.type==="formatted"?I=$l.fromString(I.toString()):_.type==="resolvedImage"?I=fl.fromString(I.toString()):no(I)!==_.type&&(_.type!=="enum"||!_.values[I])&&(I=void 0),Cu(I,y.default,_.default)}function xu(y,_,I,U){var $=U-I,oe=y-I;return $===0?0:_===1?oe/$:(Math.pow(_,oe)-1)/(Math.pow(_,$)-1)}var Ac=function(_,I){this.expression=_,this._warningHistory={},this._evaluator=new Ko,this._defaultValue=I?ee(I):null,this._enumValues=I&&I.type==="enum"?I.values:null};Ac.prototype.evaluateWithoutErrorHandling=function(_,I,U,$,oe,he){return this._evaluator.globals=_,this._evaluator.feature=I,this._evaluator.featureState=U,this._evaluator.canonical=$,this._evaluator.availableImages=oe||null,this._evaluator.formattedSection=he,this.expression.evaluate(this._evaluator)},Ac.prototype.evaluate=function(_,I,U,$,oe,he){this._evaluator.globals=_,this._evaluator.feature=I||null,this._evaluator.featureState=U||null,this._evaluator.canonical=$,this._evaluator.availableImages=oe||null,this._evaluator.formattedSection=he||null;try{var De=this.expression.evaluate(this._evaluator);if(De==null||typeof De=="number"&&De!==De)return this._defaultValue;if(this._enumValues&&!(De in this._enumValues))throw new ps("Expected value to be one of "+Object.keys(this._enumValues).map(function(it){return JSON.stringify(it)}).join(", ")+", but found "+JSON.stringify(De)+" instead.");return De}catch(it){return this._warningHistory[it.message]||(this._warningHistory[it.message]=!0,typeof console!="undefined"&&console.warn(it.message)),this._defaultValue}};function Va(y){return Array.isArray(y)&&y.length>0&&typeof y[0]=="string"&&y[0]in Ka}function oo(y,_){var I=new ks(Ka,[],_?Q(_):void 0),U=I.parse(y,void 0,void 0,void 0,_&&_.type==="string"?{typeAnnotation:"coerce"}:void 0);return U?Ho(new Ac(U,_)):ml(I.errors)}var Vc=function(_,I){this.kind=_,this._styleExpression=I,this.isStateDependent=_!=="constant"&&!js(I.expression)};Vc.prototype.evaluateWithoutErrorHandling=function(_,I,U,$,oe,he){return this._styleExpression.evaluateWithoutErrorHandling(_,I,U,$,oe,he)},Vc.prototype.evaluate=function(_,I,U,$,oe,he){return this._styleExpression.evaluate(_,I,U,$,oe,he)};var hc=function(_,I,U,$){this.kind=_,this.zoomStops=U,this._styleExpression=I,this.isStateDependent=_!=="camera"&&!js(I.expression),this.interpolationType=$};hc.prototype.evaluateWithoutErrorHandling=function(_,I,U,$,oe,he){return this._styleExpression.evaluateWithoutErrorHandling(_,I,U,$,oe,he)},hc.prototype.evaluate=function(_,I,U,$,oe,he){return this._styleExpression.evaluate(_,I,U,$,oe,he)},hc.prototype.interpolationFactor=function(_,I,U){return this.interpolationType?Wl.interpolationFactor(this.interpolationType,_,I,U):0};function Ku(y,_){if(y=oo(y,_),y.result==="error")return y;var I=y.value.expression,U=ih(I);if(!U&&!Ws(_))return ml([new Ns("","data expressions not supported")]);var $=Eu(I,["zoom"]);if(!$&&!Ls(_))return ml([new Ns("","zoom expressions not supported")]);var oe=B(I);if(!oe&&!$)return ml([new Ns("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(oe instanceof Ns)return ml([oe]);if(oe instanceof Wl&&!va(_))return ml([new Ns("",'"interpolate" expressions cannot be used with this property')]);if(!oe)return Ho(U?new Vc("constant",y.value):new Vc("source",y.value));var he=oe instanceof Wl?oe.interpolation:void 0;return Ho(U?new hc("camera",y.value,oe.labels,he):new hc("composite",y.value,oe.labels,he))}var ue=function(_,I){this._parameters=_,this._specification=I,ql(this,Ql(this._parameters,this._specification))};ue.deserialize=function(_){return new ue(_._parameters,_._specification)},ue.serialize=function(_){return{_parameters:_._parameters,_specification:_._specification}};function w(y,_){if(ys(y))return new ue(y,_);if(Va(y)){var I=Ku(y,_);if(I.result==="error")throw new Error(I.value.map(function($){return $.key+": "+$.message}).join(", "));return I.value}else{var U=y;return typeof y=="string"&&_.type==="color"&&(U=cs.parse(y)),{kind:"constant",evaluate:function(){return U}}}}function B(y){var _=null;if(y instanceof qc)_=B(y.result);else if(y instanceof Zu)for(var I=0,U=y.args;IU.maximum?[new _a(_,I,I+" is greater than the maximum value "+U.maximum)]:[]}function ut(y){var _=y.valueSpec,I=xo(y.value.type),U,$={},oe,he,De=I!=="categorical"&&y.value.property===void 0,it=!De,yt=no(y.value.stops)==="array"&&no(y.value.stops[0])==="array"&&no(y.value.stops[0][0])==="object",Lt=le({key:y.key,value:y.value,valueSpec:y.styleSpec.function,style:y.style,styleSpec:y.styleSpec,objectElementValidators:{stops:sr,default:Rr}});return I==="identity"&&De&&Lt.push(new _a(y.key,y.value,'missing required property "property"')),I!=="identity"&&!y.value.stops&&Lt.push(new _a(y.key,y.value,'missing required property "stops"')),I==="exponential"&&y.valueSpec.expression&&!va(y.valueSpec)&&Lt.push(new _a(y.key,y.value,"exponential functions not supported")),y.styleSpec.$version>=8&&(it&&!Ws(y.valueSpec)?Lt.push(new _a(y.key,y.value,"property functions not supported")):De&&!Ls(y.valueSpec)&&Lt.push(new _a(y.key,y.value,"zoom functions not supported"))),(I==="categorical"||yt)&&y.value.property===void 0&&Lt.push(new _a(y.key,y.value,'"property" property is required')),Lt;function sr(ni){if(I==="identity")return[new _a(ni.key,ni.value,'identity function may not have a "stops" property')];var Hi=[],wi=ni.value;return Hi=Hi.concat(Fe({key:ni.key,value:wi,valueSpec:ni.valueSpec,style:ni.style,styleSpec:ni.styleSpec,arrayElementValidator:gr})),no(wi)==="array"&&wi.length===0&&Hi.push(new _a(ni.key,wi,"array must have at least one stop")),Hi}function gr(ni){var Hi=[],wi=ni.value,bn=ni.key;if(no(wi)!=="array")return[new _a(bn,wi,"array expected, "+no(wi)+" found")];if(wi.length!==2)return[new _a(bn,wi,"array length 2 expected, length "+wi.length+" found")];if(yt){if(no(wi[0])!=="object")return[new _a(bn,wi,"object expected, "+no(wi[0])+" found")];if(wi[0].zoom===void 0)return[new _a(bn,wi,"object stop key must have zoom")];if(wi[0].value===void 0)return[new _a(bn,wi,"object stop key must have value")];if(he&&he>xo(wi[0].zoom))return[new _a(bn,wi[0].zoom,"stop zoom values must appear in ascending order")];xo(wi[0].zoom)!==he&&(he=xo(wi[0].zoom),oe=void 0,$={}),Hi=Hi.concat(le({key:bn+"[0]",value:wi[0],valueSpec:{zoom:{}},style:ni.style,styleSpec:ni.styleSpec,objectElementValidators:{zoom:Ze,value:hr}}))}else Hi=Hi.concat(hr({key:bn+"[0]",value:wi[0],valueSpec:{},style:ni.style,styleSpec:ni.styleSpec},wi));return Va(Kl(wi[1]))?Hi.concat([new _a(bn+"[1]",wi[1],"expressions are not allowed in function stops.")]):Hi.concat(Qa({key:bn+"[1]",value:wi[1],valueSpec:_,style:ni.style,styleSpec:ni.styleSpec}))}function hr(ni,Hi){var wi=no(ni.value),bn=xo(ni.value),rn=ni.value!==null?ni.value:Hi;if(!U)U=wi;else if(wi!==U)return[new _a(ni.key,rn,wi+" stop domain type must match previous stop domain type "+U)];if(wi!=="number"&&wi!=="string"&&wi!=="boolean")return[new _a(ni.key,rn,"stop domain value must be a number, string, or boolean")];if(wi!=="number"&&I!=="categorical"){var xn="number expected, "+wi+" found";return Ws(_)&&I===void 0&&(xn+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new _a(ni.key,rn,xn)]}return I==="categorical"&&wi==="number"&&(!isFinite(bn)||Math.floor(bn)!==bn)?[new _a(ni.key,rn,"integer expected, found "+bn)]:I!=="categorical"&&wi==="number"&&oe!==void 0&&bn=2&&y[1]!=="$id"&&y[1]!=="$type";case"in":return y.length>=3&&(typeof y[1]!="string"||Array.isArray(y[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return y.length!==3||Array.isArray(y[1])||Array.isArray(y[2]);case"any":case"all":for(var _=0,I=y.slice(1);__?1:0}function ze(y){if(!Array.isArray(y))return!1;if(y[0]==="within")return!0;for(var _=1;_"||_==="<="||_===">="?Xe(y[1],y[2],_):_==="any"?nt(y.slice(1)):_==="all"?["all"].concat(y.slice(1).map(Qe)):_==="none"?["all"].concat(y.slice(1).map(Qe).map(nr)):_==="in"?qt(y[1],y.slice(2)):_==="!in"?nr(qt(y[1],y.slice(2))):_==="has"?Wt(y[1]):_==="!has"?nr(Wt(y[1])):_==="within"?y:!0;return I}function Xe(y,_,I){switch(y){case"$type":return["filter-type-"+I,_];case"$id":return["filter-id-"+I,_];default:return["filter-"+I,y,_]}}function nt(y){return["any"].concat(y.map(Qe))}function qt(y,_){if(_.length===0)return!1;switch(y){case"$type":return["filter-type-in",["literal",_]];case"$id":return["filter-id-in",["literal",_]];default:return _.length>200&&!_.some(function(I){return typeof I!=typeof _[0]})?["filter-in-large",y,["literal",_.sort(Ie)]]:["filter-in-small",y,["literal",_]]}}function Wt(y){switch(y){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",y]}}function nr(y){return["!",y]}function fr(y){return Cr(Kl(y.value))?Mt(ql({},y,{expressionContext:"filter",valueSpec:{value:"boolean"}})):br(y)}function br(y){var _=y.value,I=y.key;if(no(_)!=="array")return[new _a(I,_,"array expected, "+no(_)+" found")];var U=y.styleSpec,$,oe=[];if(_.length<1)return[new _a(I,_,"filter array must have at least 1 element")];switch(oe=oe.concat(yr({key:I+"[0]",value:_[0],valueSpec:U.filter_operator,style:y.style,styleSpec:y.styleSpec})),xo(_[0])){case"<":case"<=":case">":case">=":_.length>=2&&xo(_[1])==="$type"&&oe.push(new _a(I,_,'"$type" cannot be use with operator "'+_[0]+'"'));case"==":case"!=":_.length!==3&&oe.push(new _a(I,_,'filter array for operator "'+_[0]+'" must have 3 elements'));case"in":case"!in":_.length>=2&&($=no(_[1]),$!=="string"&&oe.push(new _a(I+"[1]",_[1],"string expected, "+$+" found")));for(var he=2;he<_.length;he++)$=no(_[he]),xo(_[1])==="$type"?oe=oe.concat(yr({key:I+"["+he+"]",value:_[he],valueSpec:U.geometry_type,style:y.style,styleSpec:y.styleSpec})):$!=="string"&&$!=="number"&&$!=="boolean"&&oe.push(new _a(I+"["+he+"]",_[he],"string, number, or boolean expected, "+$+" found"));break;case"any":case"all":case"none":for(var De=1;De<_.length;De++)oe=oe.concat(br({key:I+"["+De+"]",value:_[De],style:y.style,styleSpec:y.styleSpec}));break;case"has":case"!has":$=no(_[1]),_.length!==2?oe.push(new _a(I,_,'filter array for "'+_[0]+'" operator must have 2 elements')):$!=="string"&&oe.push(new _a(I+"[1]",_[1],"string expected, "+$+" found"));break;case"within":$=no(_[1]),_.length!==2?oe.push(new _a(I,_,'filter array for "'+_[0]+'" operator must have 2 elements')):$!=="object"&&oe.push(new _a(I+"[1]",_[1],"object expected, "+$+" found"));break}return oe}function Fr(y,_){var I=y.key,U=y.style,$=y.styleSpec,oe=y.value,he=y.objectKey,De=$[_+"_"+y.layerType];if(!De)return[];var it=he.match(/^(.*)-transition$/);if(_==="paint"&&it&&De[it[1]]&&De[it[1]].transition)return Qa({key:I,value:oe,valueSpec:$.transition,style:U,styleSpec:$});var yt=y.valueSpec||De[he];if(!yt)return[new _a(I,oe,'unknown property "'+he+'"')];var Lt;if(no(oe)==="string"&&Ws(yt)&&!yt.tokens&&(Lt=/^{([^}]+)}$/.exec(oe)))return[new _a(I,oe,'"'+he+'" does not support interpolation syntax\nUse an identity property function instead: `{ "type": "identity", "property": '+JSON.stringify(Lt[1])+" }`.")];var sr=[];return y.layerType==="symbol"&&(he==="text-field"&&U&&!U.glyphs&&sr.push(new _a(I,oe,'use of "text-field" requires a style "glyphs" property')),he==="text-font"&&ys(Kl(oe))&&xo(oe.type)==="identity"&&sr.push(new _a(I,oe,'"text-font" does not support identity functions'))),sr.concat(Qa({key:y.key,value:oe,valueSpec:yt,style:U,styleSpec:$,expressionContext:"property",propertyType:_,propertyKey:he}))}function Hr(y){return Fr(y,"paint")}function ri(y){return Fr(y,"layout")}function Ci(y){var _=[],I=y.value,U=y.key,$=y.style,oe=y.styleSpec;!I.type&&!I.ref&&_.push(new _a(U,I,'either "type" or "ref" is required'));var he=xo(I.type),De=xo(I.ref);if(I.id)for(var it=xo(I.id),yt=0;yt=Lt[hr+0]&&U>=Lt[hr+1])?(he[gr]=!0,oe.push(yt[gr])):he[gr]=!1}}},eu.prototype._forEachCell=function(y,_,I,U,$,oe,he,De){for(var it=this._convertToCellCoord(y),yt=this._convertToCellCoord(_),Lt=this._convertToCellCoord(I),sr=this._convertToCellCoord(U),gr=it;gr<=Lt;gr++)for(var hr=yt;hr<=sr;hr++){var Rr=this.d*hr+gr;if(!(De&&!De(this._convertFromCellCoord(gr),this._convertFromCellCoord(hr),this._convertFromCellCoord(gr+1),this._convertFromCellCoord(hr+1)))&&$.call(this,y,_,I,U,Rr,oe,he,De))return}},eu.prototype._convertFromCellCoord=function(y){return(y-this.padding)/this.scale},eu.prototype._convertToCellCoord=function(y){return Math.max(0,Math.min(this.d-1,Math.floor(y*this.scale)+this.padding))},eu.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var y=this.cells,_=Js+this.cells.length+1+1,I=0,U=0;U=0)){var sr=y[Lt];yt[Lt]=Al[it].shallow.indexOf(Lt)>=0?sr:Ve(sr,_)}y instanceof Error&&(yt.message=y.message)}if(yt.$name)throw new Error("$name property is reserved for worker serialization logic.");return it!=="Object"&&(yt.$name=it),yt}throw new Error("can't serialize object of type "+typeof y)}function Ye(y){if(y==null||typeof y=="boolean"||typeof y=="number"||typeof y=="string"||y instanceof Boolean||y instanceof Number||y instanceof String||y instanceof Date||y instanceof RegExp||Te(y)||qe(y)||ArrayBuffer.isView(y)||y instanceof dc)return y;if(Array.isArray(y))return y.map(Ye);if(typeof y=="object"){var _=y.$name||"Object",I=Al[_],U=I.klass;if(!U)throw new Error("can't deserialize unregistered class "+_);if(U.deserialize)return U.deserialize(y);for(var $=Object.create(U.prototype),oe=0,he=Object.keys(y);oe=0?it:Ye(it)}}return $}throw new Error("can't deserialize object of type "+typeof y)}var Pt=function(){this.first=!0};Pt.prototype.update=function(_,I){var U=Math.floor(_);return this.first?(this.first=!1,this.lastIntegerZoom=U,this.lastIntegerZoomTime=0,this.lastZoom=_,this.lastFloorZoom=U,!0):(this.lastFloorZoom>U?(this.lastIntegerZoom=U+1,this.lastIntegerZoomTime=I):this.lastFloorZoom=128&&y<=255},Arabic:function(y){return y>=1536&&y<=1791},"Arabic Supplement":function(y){return y>=1872&&y<=1919},"Arabic Extended-A":function(y){return y>=2208&&y<=2303},"Hangul Jamo":function(y){return y>=4352&&y<=4607},"Unified Canadian Aboriginal Syllabics":function(y){return y>=5120&&y<=5759},Khmer:function(y){return y>=6016&&y<=6143},"Unified Canadian Aboriginal Syllabics Extended":function(y){return y>=6320&&y<=6399},"General Punctuation":function(y){return y>=8192&&y<=8303},"Letterlike Symbols":function(y){return y>=8448&&y<=8527},"Number Forms":function(y){return y>=8528&&y<=8591},"Miscellaneous Technical":function(y){return y>=8960&&y<=9215},"Control Pictures":function(y){return y>=9216&&y<=9279},"Optical Character Recognition":function(y){return y>=9280&&y<=9311},"Enclosed Alphanumerics":function(y){return y>=9312&&y<=9471},"Geometric Shapes":function(y){return y>=9632&&y<=9727},"Miscellaneous Symbols":function(y){return y>=9728&&y<=9983},"Miscellaneous Symbols and Arrows":function(y){return y>=11008&&y<=11263},"CJK Radicals Supplement":function(y){return y>=11904&&y<=12031},"Kangxi Radicals":function(y){return y>=12032&&y<=12255},"Ideographic Description Characters":function(y){return y>=12272&&y<=12287},"CJK Symbols and Punctuation":function(y){return y>=12288&&y<=12351},Hiragana:function(y){return y>=12352&&y<=12447},Katakana:function(y){return y>=12448&&y<=12543},Bopomofo:function(y){return y>=12544&&y<=12591},"Hangul Compatibility Jamo":function(y){return y>=12592&&y<=12687},Kanbun:function(y){return y>=12688&&y<=12703},"Bopomofo Extended":function(y){return y>=12704&&y<=12735},"CJK Strokes":function(y){return y>=12736&&y<=12783},"Katakana Phonetic Extensions":function(y){return y>=12784&&y<=12799},"Enclosed CJK Letters and Months":function(y){return y>=12800&&y<=13055},"CJK Compatibility":function(y){return y>=13056&&y<=13311},"CJK Unified Ideographs Extension A":function(y){return y>=13312&&y<=19903},"Yijing Hexagram Symbols":function(y){return y>=19904&&y<=19967},"CJK Unified Ideographs":function(y){return y>=19968&&y<=40959},"Yi Syllables":function(y){return y>=40960&&y<=42127},"Yi Radicals":function(y){return y>=42128&&y<=42191},"Hangul Jamo Extended-A":function(y){return y>=43360&&y<=43391},"Hangul Syllables":function(y){return y>=44032&&y<=55215},"Hangul Jamo Extended-B":function(y){return y>=55216&&y<=55295},"Private Use Area":function(y){return y>=57344&&y<=63743},"CJK Compatibility Ideographs":function(y){return y>=63744&&y<=64255},"Arabic Presentation Forms-A":function(y){return y>=64336&&y<=65023},"Vertical Forms":function(y){return y>=65040&&y<=65055},"CJK Compatibility Forms":function(y){return y>=65072&&y<=65103},"Small Form Variants":function(y){return y>=65104&&y<=65135},"Arabic Presentation Forms-B":function(y){return y>=65136&&y<=65279},"Halfwidth and Fullwidth Forms":function(y){return y>=65280&&y<=65519}};function Xt(y){for(var _=0,I=y;_=65097&&y<=65103)||ot["CJK Compatibility Ideographs"](y)||ot["CJK Compatibility"](y)||ot["CJK Radicals Supplement"](y)||ot["CJK Strokes"](y)||ot["CJK Symbols and Punctuation"](y)&&!(y>=12296&&y<=12305)&&!(y>=12308&&y<=12319)&&y!==12336||ot["CJK Unified Ideographs Extension A"](y)||ot["CJK Unified Ideographs"](y)||ot["Enclosed CJK Letters and Months"](y)||ot["Hangul Compatibility Jamo"](y)||ot["Hangul Jamo Extended-A"](y)||ot["Hangul Jamo Extended-B"](y)||ot["Hangul Jamo"](y)||ot["Hangul Syllables"](y)||ot.Hiragana(y)||ot["Ideographic Description Characters"](y)||ot.Kanbun(y)||ot["Kangxi Radicals"](y)||ot["Katakana Phonetic Extensions"](y)||ot.Katakana(y)&&y!==12540||ot["Halfwidth and Fullwidth Forms"](y)&&y!==65288&&y!==65289&&y!==65293&&!(y>=65306&&y<=65310)&&y!==65339&&y!==65341&&y!==65343&&!(y>=65371&&y<=65503)&&y!==65507&&!(y>=65512&&y<=65519)||ot["Small Form Variants"](y)&&!(y>=65112&&y<=65118)&&!(y>=65123&&y<=65126)||ot["Unified Canadian Aboriginal Syllabics"](y)||ot["Unified Canadian Aboriginal Syllabics Extended"](y)||ot["Vertical Forms"](y)||ot["Yijing Hexagram Symbols"](y)||ot["Yi Syllables"](y)||ot["Yi Radicals"](y))}function gi(y){return!!(ot["Latin-1 Supplement"](y)&&(y===167||y===169||y===174||y===177||y===188||y===189||y===190||y===215||y===247)||ot["General Punctuation"](y)&&(y===8214||y===8224||y===8225||y===8240||y===8241||y===8251||y===8252||y===8258||y===8263||y===8264||y===8265||y===8273)||ot["Letterlike Symbols"](y)||ot["Number Forms"](y)||ot["Miscellaneous Technical"](y)&&(y>=8960&&y<=8967||y>=8972&&y<=8991||y>=8996&&y<=9e3||y===9003||y>=9085&&y<=9114||y>=9150&&y<=9165||y===9167||y>=9169&&y<=9179||y>=9186&&y<=9215)||ot["Control Pictures"](y)&&y!==9251||ot["Optical Character Recognition"](y)||ot["Enclosed Alphanumerics"](y)||ot["Geometric Shapes"](y)||ot["Miscellaneous Symbols"](y)&&!(y>=9754&&y<=9759)||ot["Miscellaneous Symbols and Arrows"](y)&&(y>=11026&&y<=11055||y>=11088&&y<=11097||y>=11192&&y<=11243)||ot["CJK Symbols and Punctuation"](y)||ot.Katakana(y)||ot["Private Use Area"](y)||ot["CJK Compatibility Forms"](y)||ot["Small Form Variants"](y)||ot["Halfwidth and Fullwidth Forms"](y)||y===8734||y===8756||y===8757||y>=9984&&y<=10087||y>=10102&&y<=10131||y===65532||y===65533)}function xi(y){return!(zr(y)||gi(y))}function Wr(y){return ot.Arabic(y)||ot["Arabic Supplement"](y)||ot["Arabic Extended-A"](y)||ot["Arabic Presentation Forms-A"](y)||ot["Arabic Presentation Forms-B"](y)}function ii(y){return y>=1424&&y<=2303||ot["Arabic Presentation Forms-A"](y)||ot["Arabic Presentation Forms-B"](y)}function di(y,_){return!(!_&&ii(y)||y>=2304&&y<=3583||y>=3840&&y<=4255||ot.Khmer(y))}function Li(y){for(var _=0,I=y;_-1&&(kn=Qr.error),Pn&&Pn(y)};function Ea(){Ia.fire(new Xo("pluginStateChange",{pluginStatus:kn,pluginURL:Bn}))}var Ia=new jn,yo=function(){return kn},Da=function(y){return y({pluginStatus:kn,pluginURL:Bn}),Ia.on("pluginStateChange",y),y},go=function(y,_,I){if(I===void 0&&(I=!1),kn===Qr.deferred||kn===Qr.loading||kn===Qr.loaded)throw new Error("setRTLTextPlugin cannot be called multiple times.");Bn=lt.resolveURL(y),kn=Qr.deferred,Pn=_,Ea(),I||Is()},Is=function(){if(kn!==Qr.deferred||!Bn)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");kn=Qr.loading,Ea(),Bn&&ti({url:Bn},function(y){y?na(y):(kn=Qr.loaded,Ea())})},Ms={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return kn===Qr.loaded||Ms.applyArabicShaping!=null},isLoading:function(){return kn===Qr.loading},setState:function(_){kn=_.pluginStatus,Bn=_.pluginURL},isParsed:function(){return Ms.applyArabicShaping!=null&&Ms.processBidirectionalText!=null&&Ms.processStyledBidirectionalText!=null},getPluginURL:function(){return Bn}},Xs=function(){!Ms.isLoading()&&!Ms.isLoaded()&&yo()==="deferred"&&Is()},Un=function(_,I){this.zoom=_,I?(this.now=I.now,this.fadeDuration=I.fadeDuration,this.zoomHistory=I.zoomHistory,this.transition=I.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Pt,this.transition={})};Un.prototype.isSupportedScript=function(_){return Ti(_,Ms.isLoaded())},Un.prototype.crossFadingFactor=function(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)},Un.prototype.getCrossfadeParameters=function(){var _=this.zoom,I=_-Math.floor(_),U=this.crossFadingFactor();return _>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:I+(1-I)*U}:{fromScale:.5,toScale:1,t:1-(1-U)*I}};var ja=function(_,I){this.property=_,this.value=I,this.expression=w(I===void 0?_.specification.default:I,_.specification)};ja.prototype.isDataDriven=function(){return this.expression.kind==="source"||this.expression.kind==="composite"},ja.prototype.possiblyEvaluate=function(_,I,U){return this.property.possiblyEvaluate(this,_,I,U)};var Fo=function(_){this.property=_,this.value=new ja(_,void 0)};Fo.prototype.transitioned=function(_,I){return new $s(this.property,this.value,I,x({},_.transition,this.transition),_.now)},Fo.prototype.untransitioned=function(){return new $s(this.property,this.value,null,{},0)};var Uo=function(_){this._properties=_,this._values=Object.create(_.defaultTransitionablePropertyValues)};Uo.prototype.getValue=function(_){return j(this._values[_].value.value)},Uo.prototype.setValue=function(_,I){this._values.hasOwnProperty(_)||(this._values[_]=new Fo(this._values[_].property)),this._values[_].value=new ja(this._values[_].property,I===null?void 0:j(I))},Uo.prototype.getTransition=function(_){return j(this._values[_].transition)},Uo.prototype.setTransition=function(_,I){this._values.hasOwnProperty(_)||(this._values[_]=new Fo(this._values[_].property)),this._values[_].transition=j(I)||void 0},Uo.prototype.serialize=function(){for(var _={},I=0,U=Object.keys(this._values);Ithis.end)return this.prior=null,oe;if(this.value.isDataDriven())return this.prior=null,oe;if($he.zoomHistory.lastIntegerZoom?{from:U,to:$}:{from:oe,to:$}},_.prototype.interpolate=function(U){return U},_}(bt),Lr=function(_){this.specification=_};Lr.prototype.possiblyEvaluate=function(_,I,U,$){if(_.value!==void 0)if(_.expression.kind==="constant"){var oe=_.expression.evaluate(I,null,{},U,$);return this._calculate(oe,oe,oe,I)}else return this._calculate(_.expression.evaluate(new Un(Math.floor(I.zoom-1),I)),_.expression.evaluate(new Un(Math.floor(I.zoom),I)),_.expression.evaluate(new Un(Math.floor(I.zoom+1),I)),I)},Lr.prototype._calculate=function(_,I,U,$){var oe=$.zoom;return oe>$.zoomHistory.lastIntegerZoom?{from:_,to:I}:{from:U,to:I}},Lr.prototype.interpolate=function(_){return _};var Vr=function(_){this.specification=_};Vr.prototype.possiblyEvaluate=function(_,I,U,$){return!!_.expression.evaluate(I,null,{},U,$)},Vr.prototype.interpolate=function(){return!1};var Or=function(_){this.properties=_,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(var I in _){var U=_[I];U.specification.overridable&&this.overridableProperties.push(I);var $=this.defaultPropertyValues[I]=new ja(U,void 0),oe=this.defaultTransitionablePropertyValues[I]=new Fo(U);this.defaultTransitioningPropertyValues[I]=oe.untransitioned(),this.defaultPossiblyEvaluatedValues[I]=$.possiblyEvaluate({})}};X("DataDrivenProperty",bt),X("DataConstantProperty",Me),X("CrossFadedDataDrivenProperty",Ot),X("CrossFadedProperty",Lr),X("ColorRampProperty",Vr);var Nr="-transition",vi=function(y){function _(I,U){if(y.call(this),this.id=I.id,this.type=I.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},I.type!=="custom"&&(I=I,this.metadata=I.metadata,this.minzoom=I.minzoom,this.maxzoom=I.maxzoom,I.type!=="background"&&(this.source=I.source,this.sourceLayer=I["source-layer"],this.filter=I.filter),U.layout&&(this._unevaluatedLayout=new bu(U.layout)),U.paint)){this._transitionablePaint=new Uo(U.paint);for(var $ in I.paint)this.setPaintProperty($,I.paint[$],{validate:!1});for(var oe in I.layout)this.setLayoutProperty(oe,I.layout[oe],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Sc(U.paint)}}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},_.prototype.getLayoutProperty=function(U){return U==="visibility"?this.visibility:this._unevaluatedLayout.getValue(U)},_.prototype.setLayoutProperty=function(U,$,oe){if(oe===void 0&&(oe={}),$!=null){var he="layers."+this.id+".layout."+U;if(this._validate(Ul,he,U,$,oe))return}if(U==="visibility"){this.visibility=$;return}this._unevaluatedLayout.setValue(U,$)},_.prototype.getPaintProperty=function(U){return V(U,Nr)?this._transitionablePaint.getTransition(U.slice(0,-Nr.length)):this._transitionablePaint.getValue(U)},_.prototype.setPaintProperty=function(U,$,oe){if(oe===void 0&&(oe={}),$!=null){var he="layers."+this.id+".paint."+U;if(this._validate(hl,he,U,$,oe))return!1}if(V(U,Nr))return this._transitionablePaint.setTransition(U.slice(0,-Nr.length),$||void 0),!1;var De=this._transitionablePaint._values[U],it=De.property.specification["property-type"]==="cross-faded-data-driven",yt=De.value.isDataDriven(),Lt=De.value;this._transitionablePaint.setValue(U,$),this._handleSpecialPaintPropertyUpdate(U);var sr=this._transitionablePaint._values[U].value,gr=sr.isDataDriven();return gr||yt||it||this._handleOverridablePaintPropertyUpdate(U,Lt,sr)},_.prototype._handleSpecialPaintPropertyUpdate=function(U){},_.prototype._handleOverridablePaintPropertyUpdate=function(U,$,oe){return!1},_.prototype.isHidden=function(U){return this.minzoom&&U=this.maxzoom?!0:this.visibility==="none"},_.prototype.updateTransitions=function(U){this._transitioningPaint=this._transitionablePaint.transitioned(U,this._transitioningPaint)},_.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},_.prototype.recalculate=function(U,$){U.getCrossfadeParameters&&(this._crossfadeParameters=U.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(U,void 0,$)),this.paint=this._transitioningPaint.possiblyEvaluate(U,void 0,$)},_.prototype.serialize=function(){var U={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(U.layout=U.layout||{},U.layout.visibility=this.visibility),Z(U,function($,oe){return $!==void 0&&!(oe==="layout"&&!Object.keys($).length)&&!(oe==="paint"&&!Object.keys($).length)})},_.prototype._validate=function(U,$,oe,he,De){return De===void 0&&(De={}),De&&De.validate===!1?!1:Lu(this,U.call(wo,{key:$,layerType:this.type,objectKey:oe,value:he,styleSpec:Rn,style:{glyphs:!0,sprite:!0}}))},_.prototype.is3D=function(){return!1},_.prototype.isTileClipped=function(){return!1},_.prototype.hasOffscreenPass=function(){return!1},_.prototype.resize=function(){},_.prototype.isStateDependent=function(){for(var U in this.paint._values){var $=this.paint.get(U);if(!(!($ instanceof dl)||!Ws($.property.specification))&&($.value.kind==="source"||$.value.kind==="composite")&&$.value.isStateDependent)return!0}return!1},_}(jn),Ni={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},qi=function(_,I){this._structArray=_,this._pos1=I*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},Si=128,Vn=5,Qi=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};Qi.serialize=function(_,I){return _._trim(),I&&(_.isTransferred=!0,I.push(_.arrayBuffer)),{length:_.length,arrayBuffer:_.arrayBuffer}},Qi.deserialize=function(_){var I=Object.create(this.prototype);return I.arrayBuffer=_.arrayBuffer,I.length=_.length,I.capacity=_.arrayBuffer.byteLength/I.bytesPerElement,I._refreshViews(),I},Qi.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Qi.prototype.clear=function(){this.length=0},Qi.prototype.resize=function(_){this.reserve(_),this.length=_},Qi.prototype.reserve=function(_){if(_>this.capacity){this.capacity=Math.max(_,Math.floor(this.capacity*Vn),Si),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var I=this.uint8;this._refreshViews(),I&&this.uint8.set(I)}},Qi.prototype._refreshViews=function(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")};function ji(y,_){_===void 0&&(_=1);var I=0,U=0,$=y.map(function(he){var De=oi(he.type),it=I=Tr(I,Math.max(_,De)),yt=he.components||1;return U=Math.max(U,De),I+=De*yt,{name:he.name,type:he.type,components:yt,offset:it}}),oe=Tr(I,Math.max(U,_));return{members:$,size:oe,alignment:_}}function oi(y){return Ni[y].BYTES_PER_ELEMENT}function Tr(y,_){return Math.ceil(y/_)*_}var Zr=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$){var oe=this.length;return this.resize(oe+1),this.emplace(oe,U,$)},_.prototype.emplace=function(U,$,oe){var he=U*2;return this.int16[he+0]=$,this.int16[he+1]=oe,U},_}(Qi);Zr.prototype.bytesPerElement=4,X("StructArrayLayout2i4",Zr);var yi=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe,he){var De=this.length;return this.resize(De+1),this.emplace(De,U,$,oe,he)},_.prototype.emplace=function(U,$,oe,he,De){var it=U*4;return this.int16[it+0]=$,this.int16[it+1]=oe,this.int16[it+2]=he,this.int16[it+3]=De,U},_}(Qi);yi.prototype.bytesPerElement=8,X("StructArrayLayout4i8",yi);var Ii=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe,he,De,it){var yt=this.length;return this.resize(yt+1),this.emplace(yt,U,$,oe,he,De,it)},_.prototype.emplace=function(U,$,oe,he,De,it,yt){var Lt=U*6;return this.int16[Lt+0]=$,this.int16[Lt+1]=oe,this.int16[Lt+2]=he,this.int16[Lt+3]=De,this.int16[Lt+4]=it,this.int16[Lt+5]=yt,U},_}(Qi);Ii.prototype.bytesPerElement=12,X("StructArrayLayout2i4i12",Ii);var ui=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe,he,De,it){var yt=this.length;return this.resize(yt+1),this.emplace(yt,U,$,oe,he,De,it)},_.prototype.emplace=function(U,$,oe,he,De,it,yt){var Lt=U*4,sr=U*8;return this.int16[Lt+0]=$,this.int16[Lt+1]=oe,this.uint8[sr+4]=he,this.uint8[sr+5]=De,this.uint8[sr+6]=it,this.uint8[sr+7]=yt,U},_}(Qi);ui.prototype.bytesPerElement=8,X("StructArrayLayout2i4ub8",ui);var nn=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$){var oe=this.length;return this.resize(oe+1),this.emplace(oe,U,$)},_.prototype.emplace=function(U,$,oe){var he=U*2;return this.float32[he+0]=$,this.float32[he+1]=oe,U},_}(Qi);nn.prototype.bytesPerElement=8,X("StructArrayLayout2f8",nn);var Xi=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe,he,De,it,yt,Lt,sr,gr){var hr=this.length;return this.resize(hr+1),this.emplace(hr,U,$,oe,he,De,it,yt,Lt,sr,gr)},_.prototype.emplace=function(U,$,oe,he,De,it,yt,Lt,sr,gr,hr){var Rr=U*10;return this.uint16[Rr+0]=$,this.uint16[Rr+1]=oe,this.uint16[Rr+2]=he,this.uint16[Rr+3]=De,this.uint16[Rr+4]=it,this.uint16[Rr+5]=yt,this.uint16[Rr+6]=Lt,this.uint16[Rr+7]=sr,this.uint16[Rr+8]=gr,this.uint16[Rr+9]=hr,U},_}(Qi);Xi.prototype.bytesPerElement=20,X("StructArrayLayout10ui20",Xi);var qn=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe,he,De,it,yt,Lt,sr,gr,hr,Rr){var ni=this.length;return this.resize(ni+1),this.emplace(ni,U,$,oe,he,De,it,yt,Lt,sr,gr,hr,Rr)},_.prototype.emplace=function(U,$,oe,he,De,it,yt,Lt,sr,gr,hr,Rr,ni){var Hi=U*12;return this.int16[Hi+0]=$,this.int16[Hi+1]=oe,this.int16[Hi+2]=he,this.int16[Hi+3]=De,this.uint16[Hi+4]=it,this.uint16[Hi+5]=yt,this.uint16[Hi+6]=Lt,this.uint16[Hi+7]=sr,this.int16[Hi+8]=gr,this.int16[Hi+9]=hr,this.int16[Hi+10]=Rr,this.int16[Hi+11]=ni,U},_}(Qi);qn.prototype.bytesPerElement=24,X("StructArrayLayout4i4ui4i24",qn);var fi=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe){var he=this.length;return this.resize(he+1),this.emplace(he,U,$,oe)},_.prototype.emplace=function(U,$,oe,he){var De=U*3;return this.float32[De+0]=$,this.float32[De+1]=oe,this.float32[De+2]=he,U},_}(Qi);fi.prototype.bytesPerElement=12,X("StructArrayLayout3f12",fi);var si=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U){var $=this.length;return this.resize($+1),this.emplace($,U)},_.prototype.emplace=function(U,$){var oe=U*1;return this.uint32[oe+0]=$,U},_}(Qi);si.prototype.bytesPerElement=4,X("StructArrayLayout1ul4",si);var mn=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe,he,De,it,yt,Lt,sr){var gr=this.length;return this.resize(gr+1),this.emplace(gr,U,$,oe,he,De,it,yt,Lt,sr)},_.prototype.emplace=function(U,$,oe,he,De,it,yt,Lt,sr,gr){var hr=U*10,Rr=U*5;return this.int16[hr+0]=$,this.int16[hr+1]=oe,this.int16[hr+2]=he,this.int16[hr+3]=De,this.int16[hr+4]=it,this.int16[hr+5]=yt,this.uint32[Rr+3]=Lt,this.uint16[hr+8]=sr,this.uint16[hr+9]=gr,U},_}(Qi);mn.prototype.bytesPerElement=20,X("StructArrayLayout6i1ul2ui20",mn);var Ji=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe,he,De,it){var yt=this.length;return this.resize(yt+1),this.emplace(yt,U,$,oe,he,De,it)},_.prototype.emplace=function(U,$,oe,he,De,it,yt){var Lt=U*6;return this.int16[Lt+0]=$,this.int16[Lt+1]=oe,this.int16[Lt+2]=he,this.int16[Lt+3]=De,this.int16[Lt+4]=it,this.int16[Lt+5]=yt,U},_}(Qi);Ji.prototype.bytesPerElement=12,X("StructArrayLayout2i2i2i12",Ji);var Ui=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe,he,De){var it=this.length;return this.resize(it+1),this.emplace(it,U,$,oe,he,De)},_.prototype.emplace=function(U,$,oe,he,De,it){var yt=U*4,Lt=U*8;return this.float32[yt+0]=$,this.float32[yt+1]=oe,this.float32[yt+2]=he,this.int16[Lt+6]=De,this.int16[Lt+7]=it,U},_}(Qi);Ui.prototype.bytesPerElement=16,X("StructArrayLayout2f1f2i16",Ui);var Bi=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe,he){var De=this.length;return this.resize(De+1),this.emplace(De,U,$,oe,he)},_.prototype.emplace=function(U,$,oe,he,De){var it=U*12,yt=U*3;return this.uint8[it+0]=$,this.uint8[it+1]=oe,this.float32[yt+1]=he,this.float32[yt+2]=De,U},_}(Qi);Bi.prototype.bytesPerElement=12,X("StructArrayLayout2ub2f12",Bi);var pn=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe){var he=this.length;return this.resize(he+1),this.emplace(he,U,$,oe)},_.prototype.emplace=function(U,$,oe,he){var De=U*3;return this.uint16[De+0]=$,this.uint16[De+1]=oe,this.uint16[De+2]=he,U},_}(Qi);pn.prototype.bytesPerElement=6,X("StructArrayLayout3ui6",pn);var Nn=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe,he,De,it,yt,Lt,sr,gr,hr,Rr,ni,Hi,wi,bn,rn){var xn=this.length;return this.resize(xn+1),this.emplace(xn,U,$,oe,he,De,it,yt,Lt,sr,gr,hr,Rr,ni,Hi,wi,bn,rn)},_.prototype.emplace=function(U,$,oe,he,De,it,yt,Lt,sr,gr,hr,Rr,ni,Hi,wi,bn,rn,xn){var In=U*24,Xn=U*12,ga=U*48;return this.int16[In+0]=$,this.int16[In+1]=oe,this.uint16[In+2]=he,this.uint16[In+3]=De,this.uint32[Xn+2]=it,this.uint32[Xn+3]=yt,this.uint32[Xn+4]=Lt,this.uint16[In+10]=sr,this.uint16[In+11]=gr,this.uint16[In+12]=hr,this.float32[Xn+7]=Rr,this.float32[Xn+8]=ni,this.uint8[ga+36]=Hi,this.uint8[ga+37]=wi,this.uint8[ga+38]=bn,this.uint32[Xn+10]=rn,this.int16[In+22]=xn,U},_}(Qi);Nn.prototype.bytesPerElement=48,X("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",Nn);var aa=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe,he,De,it,yt,Lt,sr,gr,hr,Rr,ni,Hi,wi,bn,rn,xn,In,Xn,ga,ha,eo,za,Za,Jo,to,ao){var _s=this.length;return this.resize(_s+1),this.emplace(_s,U,$,oe,he,De,it,yt,Lt,sr,gr,hr,Rr,ni,Hi,wi,bn,rn,xn,In,Xn,ga,ha,eo,za,Za,Jo,to,ao)},_.prototype.emplace=function(U,$,oe,he,De,it,yt,Lt,sr,gr,hr,Rr,ni,Hi,wi,bn,rn,xn,In,Xn,ga,ha,eo,za,Za,Jo,to,ao,_s){var jo=U*34,El=U*17;return this.int16[jo+0]=$,this.int16[jo+1]=oe,this.int16[jo+2]=he,this.int16[jo+3]=De,this.int16[jo+4]=it,this.int16[jo+5]=yt,this.int16[jo+6]=Lt,this.int16[jo+7]=sr,this.uint16[jo+8]=gr,this.uint16[jo+9]=hr,this.uint16[jo+10]=Rr,this.uint16[jo+11]=ni,this.uint16[jo+12]=Hi,this.uint16[jo+13]=wi,this.uint16[jo+14]=bn,this.uint16[jo+15]=rn,this.uint16[jo+16]=xn,this.uint16[jo+17]=In,this.uint16[jo+18]=Xn,this.uint16[jo+19]=ga,this.uint16[jo+20]=ha,this.uint16[jo+21]=eo,this.uint16[jo+22]=za,this.uint32[El+12]=Za,this.float32[El+13]=Jo,this.float32[El+14]=to,this.float32[El+15]=ao,this.float32[El+16]=_s,U},_}(Qi);aa.prototype.bytesPerElement=68,X("StructArrayLayout8i15ui1ul4f68",aa);var Ki=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U){var $=this.length;return this.resize($+1),this.emplace($,U)},_.prototype.emplace=function(U,$){var oe=U*1;return this.float32[oe+0]=$,U},_}(Qi);Ki.prototype.bytesPerElement=4,X("StructArrayLayout1f4",Ki);var Cn=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe){var he=this.length;return this.resize(he+1),this.emplace(he,U,$,oe)},_.prototype.emplace=function(U,$,oe,he){var De=U*3;return this.int16[De+0]=$,this.int16[De+1]=oe,this.int16[De+2]=he,U},_}(Qi);Cn.prototype.bytesPerElement=6,X("StructArrayLayout3i6",Cn);var ia=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe){var he=this.length;return this.resize(he+1),this.emplace(he,U,$,oe)},_.prototype.emplace=function(U,$,oe,he){var De=U*2,it=U*4;return this.uint32[De+0]=$,this.uint16[it+2]=oe,this.uint16[it+3]=he,U},_}(Qi);ia.prototype.bytesPerElement=8,X("StructArrayLayout1ul2ui8",ia);var sa=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$){var oe=this.length;return this.resize(oe+1),this.emplace(oe,U,$)},_.prototype.emplace=function(U,$,oe){var he=U*2;return this.uint16[he+0]=$,this.uint16[he+1]=oe,U},_}(Qi);sa.prototype.bytesPerElement=4,X("StructArrayLayout2ui4",sa);var ba=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U){var $=this.length;return this.resize($+1),this.emplace($,U)},_.prototype.emplace=function(U,$){var oe=U*1;return this.uint16[oe+0]=$,U},_}(Qi);ba.prototype.bytesPerElement=2,X("StructArrayLayout1ui2",ba);var is=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},_.prototype.emplaceBack=function(U,$,oe,he){var De=this.length;return this.resize(De+1),this.emplace(De,U,$,oe,he)},_.prototype.emplace=function(U,$,oe,he,De){var it=U*4;return this.float32[it+0]=$,this.float32[it+1]=oe,this.float32[it+2]=he,this.float32[it+3]=De,U},_}(Qi);is.prototype.bytesPerElement=16,X("StructArrayLayout4f16",is);var Zs=function(y){function _(){y.apply(this,arguments)}y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_;var I={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return I.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},I.x1.get=function(){return this._structArray.int16[this._pos2+2]},I.y1.get=function(){return this._structArray.int16[this._pos2+3]},I.x2.get=function(){return this._structArray.int16[this._pos2+4]},I.y2.get=function(){return this._structArray.int16[this._pos2+5]},I.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},I.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},I.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},I.anchorPoint.get=function(){return new u(this.anchorPointX,this.anchorPointY)},Object.defineProperties(_.prototype,I),_}(qi);Zs.prototype.size=20;var Ga=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype.get=function(U){return new Zs(this,U)},_}(mn);X("CollisionBoxArray",Ga);var Ml=function(y){function _(){y.apply(this,arguments)}y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_;var I={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return I.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},I.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},I.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},I.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},I.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},I.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},I.segment.get=function(){return this._structArray.uint16[this._pos2+10]},I.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},I.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},I.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},I.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},I.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},I.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},I.placedOrientation.set=function(U){this._structArray.uint8[this._pos1+37]=U},I.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},I.hidden.set=function(U){this._structArray.uint8[this._pos1+38]=U},I.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},I.crossTileID.set=function(U){this._structArray.uint32[this._pos4+10]=U},I.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(_.prototype,I),_}(qi);Ml.prototype.size=48;var zo=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype.get=function(U){return new Ml(this,U)},_}(Nn);X("PlacedSymbolArray",zo);var Qs=function(y){function _(){y.apply(this,arguments)}y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_;var I={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return I.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},I.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},I.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},I.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},I.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},I.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},I.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},I.key.get=function(){return this._structArray.uint16[this._pos2+8]},I.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},I.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},I.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},I.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},I.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},I.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},I.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},I.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},I.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},I.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},I.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},I.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},I.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},I.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},I.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},I.crossTileID.set=function(U){this._structArray.uint32[this._pos4+12]=U},I.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},I.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},I.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},I.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(_.prototype,I),_}(qi);Qs.prototype.size=68;var al=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype.get=function(U){return new Qs(this,U)},_}(aa);X("SymbolInstanceArray",al);var Vl=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype.getoffsetX=function(U){return this.float32[U*1+0]},_}(Ki);X("GlyphOffsetArray",Vl);var ss=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype.getx=function(U){return this.int16[U*3+0]},_.prototype.gety=function(U){return this.int16[U*3+1]},_.prototype.gettileUnitDistanceFromAnchor=function(U){return this.int16[U*3+2]},_}(Cn);X("SymbolLineVertexArray",ss);var Vs=function(y){function _(){y.apply(this,arguments)}y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_;var I={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return I.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},I.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},I.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(_.prototype,I),_}(qi);Vs.prototype.size=8;var Ys=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype.get=function(U){return new Vs(this,U)},_}(ia);X("FeatureIndexArray",Ys);var wa=ji([{name:"a_pos",components:2,type:"Int16"}],4),ol=wa.members,io=function(_){_===void 0&&(_=[]),this.segments=_};io.prototype.prepareSegment=function(_,I,U,$){var oe=this.segments[this.segments.length-1];return _>io.MAX_VERTEX_ARRAY_LENGTH&&ie("Max vertices per segment is "+io.MAX_VERTEX_ARRAY_LENGTH+": bucket requested "+_),(!oe||oe.vertexLength+_>io.MAX_VERTEX_ARRAY_LENGTH||oe.sortKey!==$)&&(oe={vertexOffset:I.length,primitiveOffset:U.length,vertexLength:0,primitiveLength:0},$!==void 0&&(oe.sortKey=$),this.segments.push(oe)),oe},io.prototype.get=function(){return this.segments},io.prototype.destroy=function(){for(var _=0,I=this.segments;_>>16)*it&65535)<<16)&4294967295,Lt=Lt<<15|Lt>>>17,Lt=(Lt&65535)*yt+(((Lt>>>16)*yt&65535)<<16)&4294967295,he^=Lt,he=he<<13|he>>>19,De=(he&65535)*5+(((he>>>16)*5&65535)<<16)&4294967295,he=(De&65535)+27492+(((De>>>16)+58964&65535)<<16);switch(Lt=0,$){case 3:Lt^=(I.charCodeAt(sr+2)&255)<<16;case 2:Lt^=(I.charCodeAt(sr+1)&255)<<8;case 1:Lt^=I.charCodeAt(sr)&255,Lt=(Lt&65535)*it+(((Lt>>>16)*it&65535)<<16)&4294967295,Lt=Lt<<15|Lt>>>17,Lt=(Lt&65535)*yt+(((Lt>>>16)*yt&65535)<<16)&4294967295,he^=Lt}return he^=I.length,he^=he>>>16,he=(he&65535)*2246822507+(((he>>>16)*2246822507&65535)<<16)&4294967295,he^=he>>>13,he=(he&65535)*3266489909+(((he>>>16)*3266489909&65535)<<16)&4294967295,he^=he>>>16,he>>>0}y.exports=_}),O=a(function(y){function _(I,U){for(var $=I.length,oe=U^$,he=0,De;$>=4;)De=I.charCodeAt(he)&255|(I.charCodeAt(++he)&255)<<8|(I.charCodeAt(++he)&255)<<16|(I.charCodeAt(++he)&255)<<24,De=(De&65535)*1540483477+(((De>>>16)*1540483477&65535)<<16),De^=De>>>24,De=(De&65535)*1540483477+(((De>>>16)*1540483477&65535)<<16),oe=(oe&65535)*1540483477+(((oe>>>16)*1540483477&65535)<<16)^De,$-=4,++he;switch($){case 3:oe^=(I.charCodeAt(he+2)&255)<<16;case 2:oe^=(I.charCodeAt(he+1)&255)<<8;case 1:oe^=I.charCodeAt(he)&255,oe=(oe&65535)*1540483477+(((oe>>>16)*1540483477&65535)<<16)}return oe^=oe>>>13,oe=(oe&65535)*1540483477+(((oe>>>16)*1540483477&65535)<<16),oe^=oe>>>15,oe>>>0}y.exports=_}),K=J,de=J,ne=O;K.murmur3=de,K.murmur2=ne;var we=function(){this.ids=[],this.positions=[],this.indexed=!1};we.prototype.add=function(_,I,U,$){this.ids.push(ht(_)),this.positions.push(I,U,$)},we.prototype.getPositions=function(_){for(var I=ht(_),U=0,$=this.ids.length-1;U<$;){var oe=U+$>>1;this.ids[oe]>=I?$=oe:U=oe+1}for(var he=[];this.ids[U]===I;){var De=this.positions[3*U],it=this.positions[3*U+1],yt=this.positions[3*U+2];he.push({index:De,start:it,end:yt}),U++}return he},we.serialize=function(_,I){var U=new Float64Array(_.ids),$=new Uint32Array(_.positions);return Yt(U,$,0,U.length-1),I&&I.push(U.buffer,$.buffer),{ids:U,positions:$}},we.deserialize=function(_){var I=new we;return I.ids=_.ids,I.positions=_.positions,I.indexed=!0,I};var Oe=Math.pow(2,53)-1;function ht(y){var _=+y;return!isNaN(_)&&_<=Oe?_:K(String(y))}function Yt(y,_,I,U){for(;I>1],oe=I-1,he=U+1;;){do oe++;while(y[oe]<$);do he--;while(y[he]>$);if(oe>=he)break;cr(y,oe,he),cr(_,3*oe,3*he),cr(_,3*oe+1,3*he+1),cr(_,3*oe+2,3*he+2)}he-Ihe.x+1||ithe.y+1)&&ie("Geometry exceeds allowed extent, reduce your vector tile buffer size")}return I}function Ja(y,_){return{type:y.type,id:y.id,properties:y.properties,geometry:_?zn(y):[]}}function co(y,_,I,U,$){y.emplaceBack(_*2+(U+1)/2,I*2+($+1)/2)}var ts=function(_){this.zoom=_.zoom,this.overscaling=_.overscaling,this.layers=_.layers,this.layerIds=this.layers.map(function(I){return I.id}),this.index=_.index,this.hasPattern=!1,this.layoutVertexArray=new Zr,this.indexArray=new pn,this.segments=new io,this.programConfigurations=new ci(_.layers,_.zoom),this.stateDependentLayerIds=this.layers.filter(function(I){return I.isStateDependent()}).map(function(I){return I.id})};ts.prototype.populate=function(_,I,U){var $=this.layers[0],oe=[],he=null;$.type==="circle"&&(he=$.layout.get("circle-sort-key"));for(var De=0,it=_;De=Ei||gr<0||gr>=Ei)){var hr=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,_.sortKey),Rr=hr.vertexLength;co(this.layoutVertexArray,sr,gr,-1,-1),co(this.layoutVertexArray,sr,gr,1,-1),co(this.layoutVertexArray,sr,gr,1,1),co(this.layoutVertexArray,sr,gr,-1,1),this.indexArray.emplaceBack(Rr,Rr+1,Rr+2),this.indexArray.emplaceBack(Rr,Rr+3,Rr+2),hr.vertexLength+=4,hr.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,_,U,{},$)},X("CircleBucket",ts,{omit:["layers"]});function so(y,_){for(var I=0;I=3){for(var oe=0;oe<$.length;oe++)if(Td(y,$[oe]))return!0}if(Cv(y,$,I))return!0}return!1}function Cv(y,_,I){if(y.length>1){if(Lv(y,_))return!0;for(var U=0;U<_.length;U++)if(Kv(_[U],y,I))return!0}for(var $=0;$1?y.distSqr(I):y.distSqr(I.sub(_)._mult($)._add(_))}function gp(y,_){for(var I=!1,U,$,oe,he=0;he_.y!=oe.y>_.y&&_.x<(oe.x-$.x)*(_.y-$.y)/(oe.y-$.y)+$.x&&(I=!I)}return I}function Td(y,_){for(var I=!1,U=0,$=y.length-1;U_.y!=he.y>_.y&&_.x<(he.x-oe.x)*(_.y-oe.y)/(he.y-oe.y)+oe.x&&(I=!I)}return I}function mp(y,_,I,U,$){for(var oe=0,he=y;oe=De.x&&$>=De.y)return!0}var it=[new u(_,I),new u(_,$),new u(U,$),new u(U,I)];if(y.length>2)for(var yt=0,Lt=it;yt$.x&&_.x>$.x||y.y$.y&&_.y>$.y)return!1;var oe=ae(y,_,I[0]);return oe!==ae(y,_,I[1])||oe!==ae(y,_,I[2])||oe!==ae(y,_,I[3])}function Ad(y,_,I){var U=_.paint.get(y).value;return U.kind==="constant"?U.value:I.programConfigurations.get(_.id).getMaxValue(y)}function Pv(y){return Math.sqrt(y[0]*y[0]+y[1]*y[1])}function Jv(y,_,I,U,$){if(!_[0]&&!_[1])return y;var oe=u.convert(_)._mult($);I==="viewport"&&oe._rotate(-U);for(var he=[],De=0;De0&&(oe=1/Math.sqrt(oe)),y[0]=_[0]*oe,y[1]=_[1]*oe,y[2]=_[2]*oe,y}function H9(y,_){return y[0]*_[0]+y[1]*_[1]+y[2]*_[2]}function j9(y,_,I){var U=_[0],$=_[1],oe=_[2],he=I[0],De=I[1],it=I[2];return y[0]=$*it-oe*De,y[1]=oe*he-U*it,y[2]=U*De-$*he,y}function W9(y,_,I){var U=_[0],$=_[1],oe=_[2];return y[0]=U*I[0]+$*I[3]+oe*I[6],y[1]=U*I[1]+$*I[4]+oe*I[7],y[2]=U*I[2]+$*I[5]+oe*I[8],y}var X9=um,OQ=function(){var y=lm();return function(_,I,U,$,oe,he){var De,it;for(I||(I=3),U||(U=0),$?it=Math.min($*I+U,_.length):it=_.length,De=U;Dey.width||$.height>y.height||I.x>y.width-$.width||I.y>y.height-$.height)throw new RangeError("out of range source coordinates for image copy");if($.width>_.width||$.height>_.height||U.x>_.width-$.width||U.y>_.height-$.height)throw new RangeError("out of range destination coordinates for image copy");for(var he=y.data,De=_.data,it=0;it<$.height;it++)for(var yt=((I.y+it)*y.width+I.x)*oe,Lt=((U.y+it)*_.width+U.x)*oe,sr=0;sr<$.width*oe;sr++)De[Lt+sr]=he[yt+sr];return _}var Dv=function(_,I){Md(this,_,1,I)};Dv.prototype.resize=function(_){Uw(this,_,1)},Dv.prototype.clone=function(){return new Dv({width:this.width,height:this.height},new Uint8Array(this.data))},Dv.copy=function(_,I,U,$,oe){Vw(_,I,U,$,oe,1)};var Eh=function(_,I){Md(this,_,4,I)};Eh.prototype.resize=function(_){Uw(this,_,4)},Eh.prototype.replace=function(_,I){I?this.data.set(_):_ instanceof Uint8ClampedArray?this.data=new Uint8Array(_.buffer):this.data=_},Eh.prototype.clone=function(){return new Eh({width:this.width,height:this.height},new Uint8Array(this.data))},Eh.copy=function(_,I,U,$,oe){Vw(_,I,U,$,oe,4)},X("AlphaImage",Dv),X("RGBAImage",Eh);var Qx=new Or({"heatmap-radius":new bt(Rn.paint_heatmap["heatmap-radius"]),"heatmap-weight":new bt(Rn.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new Me(Rn.paint_heatmap["heatmap-intensity"]),"heatmap-color":new Vr(Rn.paint_heatmap["heatmap-color"]),"heatmap-opacity":new Me(Rn.paint_heatmap["heatmap-opacity"])}),P1={paint:Qx};function eb(y){var _={},I=y.resolution||256,U=y.clips?y.clips.length:1,$=y.image||new Eh({width:I,height:U}),oe=function(bn,rn,xn){_[y.evaluationKey]=xn;var In=y.expression.evaluate(_);$.data[bn+rn+0]=Math.floor(In.r*255/In.a),$.data[bn+rn+1]=Math.floor(In.g*255/In.a),$.data[bn+rn+2]=Math.floor(In.b*255/In.a),$.data[bn+rn+3]=Math.floor(In.a*255)};if(y.clips)for(var yt=0,Lt=0;yt80*I){De=yt=y[0],it=Lt=y[1];for(var Rr=I;Rr<$;Rr+=I)sr=y[Rr],gr=y[Rr+1],sryt&&(yt=sr),gr>Lt&&(Lt=gr);hr=Math.max(yt-De,Lt-it),hr=hr!==0?1/hr:0}return tb(oe,he,I,De,it,hr),he}function jw(y,_,I,U,$){var oe,he;if($===yS(y,_,I,U)>0)for(oe=_;oe=_;oe-=U)he=zC(oe,y[oe],y[oe+1],he);return he&&ib(he,he.next)&&(ob(he),he=he.next),he}function cm(y,_){if(!y)return y;_||(_=y);var I=y,U;do if(U=!1,!I.steiner&&(ib(I,I.next)||Tf(I.prev,I,I.next)===0)){if(ob(I),I=_=I.prev,I===I.next)break;U=!0}else I=I.next;while(U||I!==_);return _}function tb(y,_,I,U,$,oe,he){if(y){!he&&oe&&Ww(y,U,$,oe);for(var De=y,it,yt;y.prev!==y.next;){if(it=y.prev,yt=y.next,oe?RC(y,U,$,oe):IC(y)){_.push(it.i/I),_.push(y.i/I),_.push(yt.i/I),ob(y),y=yt.next,De=yt.next;continue}if(y=yt,y===De){he?he===1?(y=rb(cm(y),_,I),tb(y,_,I,U,$,oe,2)):he===2&&v0(y,_,I,U,$,oe):tb(cm(y),_,I,U,$,oe,1);break}}}}function IC(y){var _=y.prev,I=y,U=y.next;if(Tf(_,I,U)>=0)return!1;for(var $=y.next.next;$!==y.prev;){if(hm(_.x,_.y,I.x,I.y,U.x,U.y,$.x,$.y)&&Tf($.prev,$,$.next)>=0)return!1;$=$.next}return!0}function RC(y,_,I,U){var $=y.prev,oe=y,he=y.next;if(Tf($,oe,he)>=0)return!1;for(var De=$.xoe.x?$.x>he.x?$.x:he.x:oe.x>he.x?oe.x:he.x,Lt=$.y>oe.y?$.y>he.y?$.y:he.y:oe.y>he.y?oe.y:he.y,sr=vS(De,it,_,I,U),gr=vS(yt,Lt,_,I,U),hr=y.prevZ,Rr=y.nextZ;hr&&hr.z>=sr&&Rr&&Rr.z<=gr;){if(hr!==y.prev&&hr!==y.next&&hm($.x,$.y,oe.x,oe.y,he.x,he.y,hr.x,hr.y)&&Tf(hr.prev,hr,hr.next)>=0||(hr=hr.prevZ,Rr!==y.prev&&Rr!==y.next&&hm($.x,$.y,oe.x,oe.y,he.x,he.y,Rr.x,Rr.y)&&Tf(Rr.prev,Rr,Rr.next)>=0))return!1;Rr=Rr.nextZ}for(;hr&&hr.z>=sr;){if(hr!==y.prev&&hr!==y.next&&hm($.x,$.y,oe.x,oe.y,he.x,he.y,hr.x,hr.y)&&Tf(hr.prev,hr,hr.next)>=0)return!1;hr=hr.prevZ}for(;Rr&&Rr.z<=gr;){if(Rr!==y.prev&&Rr!==y.next&&hm($.x,$.y,oe.x,oe.y,he.x,he.y,Rr.x,Rr.y)&&Tf(Rr.prev,Rr,Rr.next)>=0)return!1;Rr=Rr.nextZ}return!0}function rb(y,_,I){var U=y;do{var $=U.prev,oe=U.next.next;!ib($,oe)&&Xw($,U,U.next,oe)&&ab($,oe)&&ab(oe,$)&&(_.push($.i/I),_.push(U.i/I),_.push(oe.i/I),ob(U),ob(U.next),U=y=oe),U=U.next}while(U!==y);return cm(U)}function v0(y,_,I,U,$,oe){var he=y;do{for(var De=he.next.next;De!==he.prev;){if(he.i!==De.i&&R1(he,De)){var it=gS(he,De);he=cm(he,he.next),it=cm(it,it.next),tb(he,_,I,U,$,oe),tb(it,_,I,U,$,oe);return}De=De.next}he=he.next}while(he!==y)}function fm(y,_,I,U){var $=[],oe,he,De,it,yt;for(oe=0,he=_.length;oe=I.next.y&&I.next.y!==I.y){var De=I.x+($-I.y)*(I.next.x-I.x)/(I.next.y-I.y);if(De<=U&&De>oe){if(oe=De,De===U){if($===I.y)return I;if($===I.next.y)return I.next}he=I.x=I.x&&I.x>=yt&&U!==I.x&&hm($he.x||I.x===he.x&&rq(he,I)))&&(he=I,sr=gr)),I=I.next;while(I!==it);return he}function rq(y,_){return Tf(y.prev,y,_.prev)<0&&Tf(_.next,y,y.next)<0}function Ww(y,_,I,U){var $=y;do $.z===null&&($.z=vS($.x,$.y,_,I,U)),$.prevZ=$.prev,$.nextZ=$.next,$=$.next;while($!==y);$.prevZ.nextZ=null,$.prevZ=null,dS($)}function dS(y){var _,I,U,$,oe,he,De,it,yt=1;do{for(I=y,y=null,oe=null,he=0;I;){for(he++,U=I,De=0,_=0;_0||it>0&&U;)De!==0&&(it===0||!U||I.z<=U.z)?($=I,I=I.nextZ,De--):($=U,U=U.nextZ,it--),oe?oe.nextZ=$:y=$,$.prevZ=oe,oe=$;I=U}oe.nextZ=null,yt*=2}while(he>1);return y}function vS(y,_,I,U,$){return y=32767*(y-I)*$,_=32767*(_-U)*$,y=(y|y<<8)&16711935,y=(y|y<<4)&252645135,y=(y|y<<2)&858993459,y=(y|y<<1)&1431655765,_=(_|_<<8)&16711935,_=(_|_<<4)&252645135,_=(_|_<<2)&858993459,_=(_|_<<1)&1431655765,y|_<<1}function pS(y){var _=y,I=y;do(_.x=0&&(y-he)*(U-De)-(I-he)*(_-De)>=0&&(I-he)*(oe-De)-($-he)*(U-De)>=0}function R1(y,_){return y.next.i!==_.i&&y.prev.i!==_.i&&!FC(y,_)&&(ab(y,_)&&ab(_,y)&&iq(y,_)&&(Tf(y.prev,y,_.prev)||Tf(y,_.prev,_))||ib(y,_)&&Tf(y.prev,y,y.next)>0&&Tf(_.prev,_,_.next)>0)}function Tf(y,_,I){return(_.y-y.y)*(I.x-_.x)-(_.x-y.x)*(I.y-_.y)}function ib(y,_){return y.x===_.x&&y.y===_.y}function Xw(y,_,I,U){var $=my(Tf(y,_,I)),oe=my(Tf(y,_,U)),he=my(Tf(I,U,y)),De=my(Tf(I,U,_));return!!($!==oe&&he!==De||$===0&&nb(y,I,_)||oe===0&&nb(y,U,_)||he===0&&nb(I,y,U)||De===0&&nb(I,_,U))}function nb(y,_,I){return _.x<=Math.max(y.x,I.x)&&_.x>=Math.min(y.x,I.x)&&_.y<=Math.max(y.y,I.y)&&_.y>=Math.min(y.y,I.y)}function my(y){return y>0?1:y<0?-1:0}function FC(y,_){var I=y;do{if(I.i!==y.i&&I.next.i!==y.i&&I.i!==_.i&&I.next.i!==_.i&&Xw(I,I.next,y,_))return!0;I=I.next}while(I!==y);return!1}function ab(y,_){return Tf(y.prev,y,y.next)<0?Tf(y,_,y.next)>=0&&Tf(y,y.prev,_)>=0:Tf(y,_,y.prev)<0||Tf(y,y.next,_)<0}function iq(y,_){var I=y,U=!1,$=(y.x+_.x)/2,oe=(y.y+_.y)/2;do I.y>oe!=I.next.y>oe&&I.next.y!==I.y&&$<(I.next.x-I.x)*(oe-I.y)/(I.next.y-I.y)+I.x&&(U=!U),I=I.next;while(I!==y);return U}function gS(y,_){var I=new mS(y.i,y.x,y.y),U=new mS(_.i,_.x,_.y),$=y.next,oe=_.prev;return y.next=_,_.prev=y,I.next=$,$.prev=I,U.next=I,I.prev=U,oe.next=U,U.prev=oe,U}function zC(y,_,I,U){var $=new mS(y,_,I);return U?($.next=U.next,$.prev=U,U.next.prev=$,U.next=$):($.prev=$,$.next=$),$}function ob(y){y.next.prev=y.prev,y.prev.next=y.next,y.prevZ&&(y.prevZ.nextZ=y.nextZ),y.nextZ&&(y.nextZ.prevZ=y.prevZ)}function mS(y,_,I){this.i=y,this.x=_,this.y=I,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}I1.deviation=function(y,_,I,U){var $=_&&_.length,oe=$?_[0]*I:y.length,he=Math.abs(yS(y,0,oe,I));if($)for(var De=0,it=_.length;De0&&(U+=y[$-1].length,I.holes.push(U))}return I},Hw.default=PC;function _S(y,_,I,U,$){pg(y,_,I||0,U||y.length-1,$||qC)}function pg(y,_,I,U,$){for(;U>I;){if(U-I>600){var oe=U-I+1,he=_-I+1,De=Math.log(oe),it=.5*Math.exp(2*De/3),yt=.5*Math.sqrt(De*it*(oe-it)/oe)*(he-oe/2<0?-1:1),Lt=Math.max(I,Math.floor(_-he*it/oe+yt)),sr=Math.min(U,Math.floor(_+(oe-he)*it/oe+yt));pg(y,_,Lt,sr,$)}var gr=y[_],hr=I,Rr=U;for(D1(y,I,_),$(y[U],gr)>0&&D1(y,I,U);hr0;)Rr--}$(y[I],gr)===0?D1(y,I,Rr):(Rr++,D1(y,Rr,U)),Rr<=_&&(I=Rr+1),_<=Rr&&(U=Rr-1)}}function D1(y,_,I){var U=y[_];y[_]=y[I],y[I]=U}function qC(y,_){return y<_?-1:y>_?1:0}function Zw(y,_){var I=y.length;if(I<=1)return[y];for(var U=[],$,oe,he=0;he1)for(var it=0;it>3}if(U--,I===1||I===2)$+=y.readSVarint(),oe+=y.readSVarint(),I===1&&(De&&he.push(De),De=[]),De.push(new u($,oe));else if(I===7)De&&De.push(De[0].clone());else throw new Error("unknown command "+I)}return De&&he.push(De),he},yy.prototype.bbox=function(){var y=this._pbf;y.pos=this._geometry;for(var _=y.readVarint()+y.pos,I=1,U=0,$=0,oe=0,he=1/0,De=-1/0,it=1/0,yt=-1/0;y.pos<_;){if(U<=0){var Lt=y.readVarint();I=Lt&7,U=Lt>>3}if(U--,I===1||I===2)$+=y.readSVarint(),oe+=y.readSVarint(),$De&&(De=$),oeyt&&(yt=oe);else if(I!==7)throw new Error("unknown command "+I)}return[he,it,De,yt]},yy.prototype.toGeoJSON=function(y,_,I){var U=this.extent*Math.pow(2,I),$=this.extent*y,oe=this.extent*_,he=this.loadGeometry(),De=yy.types[this.type],it,yt;function Lt(hr){for(var Rr=0;Rr>3;_=U===1?y.readString():U===2?y.readFloat():U===3?y.readDouble():U===4?y.readVarint64():U===5?y.readVarint():U===6?y.readSVarint():U===7?y.readBoolean():null}return _}wS.prototype.feature=function(y){if(y<0||y>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[y];var _=this._pbf.readVarint()+this._pbf.pos;return new bS(this._pbf,_,this.extent,this._keys,this._values)};var XC=aq;function aq(y,_){this.layers=y.readFields(oq,{},_)}function oq(y,_,I){if(y===3){var U=new gg(I,I.readVarint()+I.pos);U.length&&(_[U.name]=U)}}var ZC=XC,F1=bS,YC=gg,mg={VectorTile:ZC,VectorTileFeature:F1,VectorTileLayer:YC},KC=mg.VectorTileFeature.types,Kw=500,z1=Math.pow(2,13);function dm(y,_,I,U,$,oe,he,De){y.emplaceBack(_,I,Math.floor(U*z1)*2+he,$*z1*2,oe*z1*2,Math.round(De))}var Vp=function(_){this.zoom=_.zoom,this.overscaling=_.overscaling,this.layers=_.layers,this.layerIds=this.layers.map(function(I){return I.id}),this.index=_.index,this.hasPattern=!1,this.layoutVertexArray=new Ii,this.indexArray=new pn,this.programConfigurations=new ci(_.layers,_.zoom),this.segments=new io,this.stateDependentLayerIds=this.layers.filter(function(I){return I.isStateDependent()}).map(function(I){return I.id})};Vp.prototype.populate=function(_,I,U){this.features=[],this.hasPattern=Yw("fill-extrusion",this.layers,I);for(var $=0,oe=_;$=1){var xn=Hi[bn-1];if(!sq(rn,xn)){hr.vertexLength+4>io.MAX_VERTEX_ARRAY_LENGTH&&(hr=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var In=rn.sub(xn)._perp()._unit(),Xn=xn.dist(rn);wi+Xn>32768&&(wi=0),dm(this.layoutVertexArray,rn.x,rn.y,In.x,In.y,0,0,wi),dm(this.layoutVertexArray,rn.x,rn.y,In.x,In.y,0,1,wi),wi+=Xn,dm(this.layoutVertexArray,xn.x,xn.y,In.x,In.y,0,0,wi),dm(this.layoutVertexArray,xn.x,xn.y,In.x,In.y,0,1,wi);var ga=hr.vertexLength;this.indexArray.emplaceBack(ga,ga+2,ga+1),this.indexArray.emplaceBack(ga+1,ga+2,ga+3),hr.vertexLength+=4,hr.primitiveLength+=2}}}}if(hr.vertexLength+yt>io.MAX_VERTEX_ARRAY_LENGTH&&(hr=this.segments.prepareSegment(yt,this.layoutVertexArray,this.indexArray)),KC[_.type]==="Polygon"){for(var ha=[],eo=[],za=hr.vertexLength,Za=0,Jo=it;ZaEi)||y.y===_.y&&(y.y<0||y.y>Ei)}function lq(y){return y.every(function(_){return _.x<0})||y.every(function(_){return _.x>Ei})||y.every(function(_){return _.y<0})||y.every(function(_){return _.y>Ei})}var q1=new Or({"fill-extrusion-opacity":new Me(Rn["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new bt(Rn["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new Me(Rn["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new Me(Rn["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Ot(Rn["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new bt(Rn["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new bt(Rn["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new Me(Rn["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])}),ld={paint:q1},vm=function(y){function _(I){y.call(this,I,ld)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype.createBucket=function(U){return new Vp(U)},_.prototype.queryRadius=function(){return Pv(this.paint.get("fill-extrusion-translate"))},_.prototype.is3D=function(){return!0},_.prototype.queryIntersectsFeature=function(U,$,oe,he,De,it,yt,Lt){var sr=Jv(U,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),it.angle,yt),gr=this.paint.get("fill-extrusion-height").evaluate($,oe),hr=this.paint.get("fill-extrusion-base").evaluate($,oe),Rr=uq(sr,Lt,it,0),ni=AS(he,hr,gr,Lt),Hi=ni[0],wi=ni[1];return JC(Hi,wi,Rr)},_}(vi);function _y(y,_){return y.x*_.x+y.y*_.y}function TS(y,_){if(y.length===1){for(var I=0,U=_[I++],$;!$||U.equals($);)if($=_[I++],!$)return 1/0;for(;I<_.length;I++){var oe=_[I],he=y[0],De=$.sub(U),it=oe.sub(U),yt=he.sub(U),Lt=_y(De,De),sr=_y(De,it),gr=_y(it,it),hr=_y(yt,De),Rr=_y(yt,it),ni=Lt*gr-sr*sr,Hi=(gr*hr-sr*Rr)/ni,wi=(Lt*Rr-sr*hr)/ni,bn=1-Hi-wi,rn=U.z*bn+$.z*Hi+oe.z*wi;if(isFinite(rn))return rn}return 1/0}else{for(var xn=1/0,In=0,Xn=_;In=2&&_[yt-1].equals(_[yt-2]);)yt--;for(var Lt=0;Lt0;if(ha&&bn>Lt){var za=hr.dist(Rr);if(za>2*sr){var Za=hr.sub(hr.sub(Rr)._mult(sr/za)._round());this.updateDistance(Rr,Za),this.addCurrentVertex(Za,Hi,0,0,gr),Rr=Za}}var Jo=Rr&&ni,to=Jo?U:it?"butt":$;if(Jo&&to==="round"&&(Xnoe&&(to="bevel"),to==="bevel"&&(Xn>2&&(to="flipbevel"),Xn100)rn=wi.mult(-1);else{var ao=Xn*Hi.add(wi).mag()/Hi.sub(wi).mag();rn._perp()._mult(ao*(eo?-1:1))}this.addCurrentVertex(hr,rn,0,0,gr),this.addCurrentVertex(hr,rn.mult(-1),0,0,gr)}else if(to==="bevel"||to==="fakeround"){var _s=-Math.sqrt(Xn*Xn-1),jo=eo?_s:0,El=eo?0:_s;if(Rr&&this.addCurrentVertex(hr,Hi,jo,El,gr),to==="fakeround")for(var Iu=Math.round(ga*180/Math.PI/MS),kl=1;kl2*sr){var ch=hr.add(ni.sub(hr)._mult(sr/$h)._round());this.updateDistance(hr,ch),this.addCurrentVertex(ch,wi,0,0,gr),hr=ch}}}}},sh.prototype.addCurrentVertex=function(_,I,U,$,oe,he){he===void 0&&(he=!1);var De=I.x+I.y*U,it=I.y-I.x*U,yt=-I.x+I.y*$,Lt=-I.y-I.x*$;this.addHalfVertex(_,De,it,he,!1,U,oe),this.addHalfVertex(_,yt,Lt,he,!0,-$,oe),this.distance>fb/2&&this.totalDistance===0&&(this.distance=0,this.addCurrentVertex(_,I,U,$,oe,he))},sh.prototype.addHalfVertex=function(_,I,U,$,oe,he,De){var it=_.x,yt=_.y,Lt=this.lineClips?this.scaledDistance*(fb-1):this.scaledDistance,sr=Lt*$w;if(this.layoutVertexArray.emplaceBack((it<<1)+($?1:0),(yt<<1)+(oe?1:0),Math.round(Jw*I)+128,Math.round(Jw*U)+128,(he===0?0:he<0?-1:1)+1|(sr&63)<<2,sr>>6),this.lineClips){var gr=this.scaledDistance-this.lineClips.start,hr=this.lineClips.end-this.lineClips.start,Rr=gr/hr;this.layoutVertexArray2.emplaceBack(Rr,this.lineClipsArray.length)}var ni=De.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,ni),De.primitiveLength++),oe?this.e2=ni:this.e1=ni},sh.prototype.updateScaledDistance=function(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance},sh.prototype.updateDistance=function(_,I){this.distance+=_.dist(I),this.updateScaledDistance()},X("LineBucket",sh,{omit:["layers","patternFeatures"]});var ES=new Or({"line-cap":new Me(Rn.layout_line["line-cap"]),"line-join":new bt(Rn.layout_line["line-join"]),"line-miter-limit":new Me(Rn.layout_line["line-miter-limit"]),"line-round-limit":new Me(Rn.layout_line["line-round-limit"]),"line-sort-key":new bt(Rn.layout_line["line-sort-key"])}),kS=new Or({"line-opacity":new bt(Rn.paint_line["line-opacity"]),"line-color":new bt(Rn.paint_line["line-color"]),"line-translate":new Me(Rn.paint_line["line-translate"]),"line-translate-anchor":new Me(Rn.paint_line["line-translate-anchor"]),"line-width":new bt(Rn.paint_line["line-width"]),"line-gap-width":new bt(Rn.paint_line["line-gap-width"]),"line-offset":new bt(Rn.paint_line["line-offset"]),"line-blur":new bt(Rn.paint_line["line-blur"]),"line-dasharray":new Lr(Rn.paint_line["line-dasharray"]),"line-pattern":new Ot(Rn.paint_line["line-pattern"]),"line-gradient":new Vr(Rn.paint_line["line-gradient"])}),Qw={paint:kS,layout:ES},fq=function(y){function _(){y.apply(this,arguments)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype.possiblyEvaluate=function(U,$){return $=new Un(Math.floor($.zoom),{now:$.now,fadeDuration:$.fadeDuration,zoomHistory:$.zoomHistory,transition:$.transition}),y.prototype.possiblyEvaluate.call(this,U,$)},_.prototype.evaluate=function(U,$,oe,he){return $=x({},$,{zoom:Math.floor($.zoom)}),y.prototype.evaluate.call(this,U,$,oe,he)},_}(bt),R=new fq(Qw.paint.properties["line-width"].specification);R.useIntegerZoom=!0;var A=function(y){function _(I){y.call(this,I,Qw),this.gradientVersion=0}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype._handleSpecialPaintPropertyUpdate=function(U){if(U==="line-gradient"){var $=this._transitionablePaint._values["line-gradient"].value.expression;this.stepInterpolant=$._styleExpression.expression instanceof _u,this.gradientVersion=(this.gradientVersion+1)%d}},_.prototype.gradientExpression=function(){return this._transitionablePaint._values["line-gradient"].value.expression},_.prototype.recalculate=function(U,$){y.prototype.recalculate.call(this,U,$),this.paint._values["line-floorwidth"]=R.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,U)},_.prototype.createBucket=function(U){return new sh(U)},_.prototype.queryRadius=function(U){var $=U,oe=F(Ad("line-width",this,$),Ad("line-gap-width",this,$)),he=Ad("line-offset",this,$);return oe/2+Math.abs(he)+Pv(this.paint.get("line-translate"))},_.prototype.queryIntersectsFeature=function(U,$,oe,he,De,it,yt){var Lt=Jv(U,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),it.angle,yt),sr=yt/2*F(this.paint.get("line-width").evaluate($,oe),this.paint.get("line-gap-width").evaluate($,oe)),gr=this.paint.get("line-offset").evaluate($,oe);return gr&&(he=W(he,gr*yt)),ou(Lt,he,sr)},_.prototype.isTileClipped=function(){return!0},_}(vi);function F(y,_){return _>0?_+2*y:y}function W(y,_){for(var I=[],U=new u(0,0),$=0;$":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};function ln(y){for(var _="",I=0;I>1,Lt=-7,sr=I?$-1:0,gr=I?-1:1,hr=y[_+sr];for(sr+=gr,oe=hr&(1<<-Lt)-1,hr>>=-Lt,Lt+=De;Lt>0;oe=oe*256+y[_+sr],sr+=gr,Lt-=8);for(he=oe&(1<<-Lt)-1,oe>>=-Lt,Lt+=U;Lt>0;he=he*256+y[_+sr],sr+=gr,Lt-=8);if(oe===0)oe=1-yt;else{if(oe===it)return he?NaN:(hr?-1:1)*(1/0);he=he+Math.pow(2,U),oe=oe-yt}return(hr?-1:1)*he*Math.pow(2,oe-U)},ro=function(y,_,I,U,$,oe){var he,De,it,yt=oe*8-$-1,Lt=(1<>1,gr=$===23?Math.pow(2,-24)-Math.pow(2,-77):0,hr=U?0:oe-1,Rr=U?1:-1,ni=_<0||_===0&&1/_<0?1:0;for(_=Math.abs(_),isNaN(_)||_===1/0?(De=isNaN(_)?1:0,he=Lt):(he=Math.floor(Math.log(_)/Math.LN2),_*(it=Math.pow(2,-he))<1&&(he--,it*=2),he+sr>=1?_+=gr/it:_+=gr*Math.pow(2,1-sr),_*it>=2&&(he++,it/=2),he+sr>=Lt?(De=0,he=Lt):he+sr>=1?(De=(_*it-1)*Math.pow(2,$),he=he+sr):(De=_*Math.pow(2,sr-1)*Math.pow(2,$),he=0));$>=8;y[I+hr]=De&255,hr+=Rr,De/=256,$-=8);for(he=he<<$|De,yt+=$;yt>0;y[I+hr]=he&255,hr+=Rr,he/=256,yt-=8);y[I+hr-Rr]|=ni*128},Vo={read:pa,write:ro},Xa=la;function la(y){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(y)?y:new Uint8Array(y||0),this.pos=0,this.type=0,this.length=this.buf.length}la.Varint=0,la.Fixed64=1,la.Bytes=2,la.Fixed32=5;var Mo=65536*65536,fo=1/Mo,lo=12,Wn=typeof TextDecoder=="undefined"?null:new TextDecoder("utf8");la.prototype={destroy:function(){this.buf=null},readFields:function(y,_,I){for(I=I||this.length;this.pos>3,oe=this.pos;this.type=U&7,y($,_,this),this.pos===oe&&this.skip(U)}return _},readMessage:function(y,_){return this.readFields(y,_,this.readVarint()+this.pos)},readFixed32:function(){var y=Yh(this.buf,this.pos);return this.pos+=4,y},readSFixed32:function(){var y=Fv(this.buf,this.pos);return this.pos+=4,y},readFixed64:function(){var y=Yh(this.buf,this.pos)+Yh(this.buf,this.pos+4)*Mo;return this.pos+=8,y},readSFixed64:function(){var y=Yh(this.buf,this.pos)+Fv(this.buf,this.pos+4)*Mo;return this.pos+=8,y},readFloat:function(){var y=Vo.read(this.buf,this.pos,!0,23,4);return this.pos+=4,y},readDouble:function(){var y=Vo.read(this.buf,this.pos,!0,52,8);return this.pos+=8,y},readVarint:function(y){var _=this.buf,I,U;return U=_[this.pos++],I=U&127,U<128||(U=_[this.pos++],I|=(U&127)<<7,U<128)||(U=_[this.pos++],I|=(U&127)<<14,U<128)||(U=_[this.pos++],I|=(U&127)<<21,U<128)?I:(U=_[this.pos],I|=(U&15)<<28,Ro(I,y,this))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var y=this.readVarint();return y%2===1?(y+1)/-2:y/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var y=this.readVarint()+this.pos,_=this.pos;return this.pos=y,y-_>=lo&&Wn?ru(this.buf,_,y):uv(this.buf,_,y)},readBytes:function(){var y=this.readVarint()+this.pos,_=this.buf.subarray(this.pos,y);return this.pos=y,_},readPackedVarint:function(y,_){if(this.type!==la.Bytes)return y.push(this.readVarint(_));var I=uo(this);for(y=y||[];this.pos127;);else if(_===la.Bytes)this.pos=this.readVarint()+this.pos;else if(_===la.Fixed32)this.pos+=4;else if(_===la.Fixed64)this.pos+=8;else throw new Error("Unimplemented type: "+_)},writeTag:function(y,_){this.writeVarint(y<<3|_)},realloc:function(y){for(var _=this.length||16;_268435455||y<0){Ju(y,this);return}this.realloc(4),this.buf[this.pos++]=y&127|(y>127?128:0),!(y<=127)&&(this.buf[this.pos++]=(y>>>=7)&127|(y>127?128:0),!(y<=127)&&(this.buf[this.pos++]=(y>>>=7)&127|(y>127?128:0),!(y<=127)&&(this.buf[this.pos++]=y>>>7&127)))},writeSVarint:function(y){this.writeVarint(y<0?-y*2-1:y*2)},writeBoolean:function(y){this.writeVarint(!!y)},writeString:function(y){y=String(y),this.realloc(y.length*4),this.pos++;var _=this.pos;this.pos=pc(this.buf,y,this.pos);var I=this.pos-_;I>=128&&Qv(_,I,this),this.pos=_-1,this.writeVarint(I),this.pos+=I},writeFloat:function(y){this.realloc(4),Vo.write(this.buf,y,this.pos,!0,23,4),this.pos+=4},writeDouble:function(y){this.realloc(8),Vo.write(this.buf,y,this.pos,!0,52,8),this.pos+=8},writeBytes:function(y){var _=y.length;this.writeVarint(_),this.realloc(_);for(var I=0;I<_;I++)this.buf[this.pos++]=y[I]},writeRawMessage:function(y,_){this.pos++;var I=this.pos;y(_,this);var U=this.pos-I;U>=128&&Qv(I,U,this),this.pos=I-1,this.writeVarint(U),this.pos+=U},writeMessage:function(y,_,I){this.writeTag(y,la.Bytes),this.writeRawMessage(_,I)},writePackedVarint:function(y,_){_.length&&this.writeMessage(y,ud,_)},writePackedSVarint:function(y,_){_.length&&this.writeMessage(y,Ch,_)},writePackedBoolean:function(y,_){_.length&&this.writeMessage(y,jd,_)},writePackedFloat:function(y,_){_.length&&this.writeMessage(y,Gd,_)},writePackedDouble:function(y,_){_.length&&this.writeMessage(y,Hd,_)},writePackedFixed32:function(y,_){_.length&&this.writeMessage(y,Af,_)},writePackedSFixed32:function(y,_){_.length&&this.writeMessage(y,Lh,_)},writePackedFixed64:function(y,_){_.length&&this.writeMessage(y,Ed,_)},writePackedSFixed64:function(y,_){_.length&&this.writeMessage(y,cd,_)},writeBytesField:function(y,_){this.writeTag(y,la.Bytes),this.writeBytes(_)},writeFixed32Field:function(y,_){this.writeTag(y,la.Fixed32),this.writeFixed32(_)},writeSFixed32Field:function(y,_){this.writeTag(y,la.Fixed32),this.writeSFixed32(_)},writeFixed64Field:function(y,_){this.writeTag(y,la.Fixed64),this.writeFixed64(_)},writeSFixed64Field:function(y,_){this.writeTag(y,la.Fixed64),this.writeSFixed64(_)},writeVarintField:function(y,_){this.writeTag(y,la.Varint),this.writeVarint(_)},writeSVarintField:function(y,_){this.writeTag(y,la.Varint),this.writeSVarint(_)},writeStringField:function(y,_){this.writeTag(y,la.Bytes),this.writeString(_)},writeFloatField:function(y,_){this.writeTag(y,la.Fixed32),this.writeFloat(_)},writeDoubleField:function(y,_){this.writeTag(y,la.Fixed64),this.writeDouble(_)},writeBooleanField:function(y,_){this.writeVarintField(y,!!_)}};function Ro(y,_,I){var U=I.buf,$,oe;if(oe=U[I.pos++],$=(oe&112)>>4,oe<128||(oe=U[I.pos++],$|=(oe&127)<<3,oe<128)||(oe=U[I.pos++],$|=(oe&127)<<10,oe<128)||(oe=U[I.pos++],$|=(oe&127)<<17,oe<128)||(oe=U[I.pos++],$|=(oe&127)<<24,oe<128)||(oe=U[I.pos++],$|=(oe&1)<<31,oe<128))return $o(y,$,_);throw new Error("Expected varint not more than 10 bytes")}function uo(y){return y.type===la.Bytes?y.readVarint()+y.pos:y.pos+1}function $o(y,_,I){return I?_*4294967296+(y>>>0):(_>>>0)*4294967296+(y>>>0)}function Ju(y,_){var I,U;if(y>=0?(I=y%4294967296|0,U=y/4294967296|0):(I=~(-y%4294967296),U=~(-y/4294967296),I^4294967295?I=I+1|0:(I=0,U=U+1|0)),y>=18446744073709552e3||y<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");_.realloc(10),Ou(I,U,_),kh(U,_)}function Ou(y,_,I){I.buf[I.pos++]=y&127|128,y>>>=7,I.buf[I.pos++]=y&127|128,y>>>=7,I.buf[I.pos++]=y&127|128,y>>>=7,I.buf[I.pos++]=y&127|128,y>>>=7,I.buf[I.pos]=y&127}function kh(y,_){var I=(y&7)<<4;_.buf[_.pos++]|=I|((y>>>=3)?128:0),y&&(_.buf[_.pos++]=y&127|((y>>>=7)?128:0),y&&(_.buf[_.pos++]=y&127|((y>>>=7)?128:0),y&&(_.buf[_.pos++]=y&127|((y>>>=7)?128:0),y&&(_.buf[_.pos++]=y&127|((y>>>=7)?128:0),y&&(_.buf[_.pos++]=y&127)))))}function Qv(y,_,I){var U=_<=16383?1:_<=2097151?2:_<=268435455?3:Math.floor(Math.log(_)/(Math.LN2*7));I.realloc(U);for(var $=I.pos-1;$>=y;$--)I.buf[$+U]=I.buf[$]}function ud(y,_){for(var I=0;I>>8,y[I+2]=_>>>16,y[I+3]=_>>>24}function Fv(y,_){return(y[_]|y[_+1]<<8|y[_+2]<<16)+(y[_+3]<<24)}function uv(y,_,I){for(var U="",$=_;$239?4:oe>223?3:oe>191?2:1;if($+De>I)break;var it,yt,Lt;De===1?oe<128&&(he=oe):De===2?(it=y[$+1],(it&192)===128&&(he=(oe&31)<<6|it&63,he<=127&&(he=null))):De===3?(it=y[$+1],yt=y[$+2],(it&192)===128&&(yt&192)===128&&(he=(oe&15)<<12|(it&63)<<6|yt&63,(he<=2047||he>=55296&&he<=57343)&&(he=null))):De===4&&(it=y[$+1],yt=y[$+2],Lt=y[$+3],(it&192)===128&&(yt&192)===128&&(Lt&192)===128&&(he=(oe&15)<<18|(it&63)<<12|(yt&63)<<6|Lt&63,(he<=65535||he>=1114112)&&(he=null))),he===null?(he=65533,De=1):he>65535&&(he-=65536,U+=String.fromCharCode(he>>>10&1023|55296),he=56320|he&1023),U+=String.fromCharCode(he),$+=De}return U}function ru(y,_,I){return Wn.decode(y.subarray(_,I))}function pc(y,_,I){for(var U=0,$,oe;U<_.length;U++){if($=_.charCodeAt(U),$>55295&&$<57344)if(oe)if($<56320){y[I++]=239,y[I++]=191,y[I++]=189,oe=$;continue}else $=oe-55296<<10|$-56320|65536,oe=null;else{$>56319||U+1===_.length?(y[I++]=239,y[I++]=191,y[I++]=189):oe=$;continue}else oe&&(y[I++]=239,y[I++]=191,y[I++]=189,oe=null);$<128?y[I++]=$:($<2048?y[I++]=$>>6|192:($<65536?y[I++]=$>>12|224:(y[I++]=$>>18|240,y[I++]=$>>12&63|128),y[I++]=$>>6&63|128),y[I++]=$&63|128)}return I}var $u=3;function zv(y,_,I){y===1&&I.readMessage(hf,_)}function hf(y,_,I){if(y===3){var U=I.readMessage(O1,{}),$=U.id,oe=U.bitmap,he=U.width,De=U.height,it=U.left,yt=U.top,Lt=U.advance;_.push({id:$,bitmap:new Dv({width:he+2*$u,height:De+2*$u},oe),metrics:{width:he,height:De,left:it,top:yt,advance:Lt}})}}function O1(y,_,I){y===1?_.id=I.readVarint():y===2?_.bitmap=I.readBytes():y===3?_.width=I.readVarint():y===4?_.height=I.readVarint():y===5?_.left=I.readSVarint():y===6?_.top=I.readSVarint():y===7&&(_.advance=I.readVarint())}function p0(y){return new Xa(y).readFields(zv,[])}var Gp=$u;function ep(y){for(var _=0,I=0,U=0,$=y;U<$.length;U+=1){var oe=$[U];_+=oe.w*oe.h,I=Math.max(I,oe.w)}y.sort(function(Hi,wi){return wi.h-Hi.h});for(var he=Math.max(Math.ceil(Math.sqrt(_/.95)),I),De=[{x:0,y:0,w:he,h:1/0}],it=0,yt=0,Lt=0,sr=y;Lt=0;hr--){var Rr=De[hr];if(!(gr.w>Rr.w||gr.h>Rr.h)){if(gr.x=Rr.x,gr.y=Rr.y,yt=Math.max(yt,gr.y+gr.h),it=Math.max(it,gr.x+gr.w),gr.w===Rr.w&&gr.h===Rr.h){var ni=De.pop();hr=0&&$>=_&&m0[this.text.charCodeAt($)];$--)U--;this.text=this.text.substring(_,U),this.sectionIndex=this.sectionIndex.slice(_,U)},Kh.prototype.substring=function(_,I){var U=new Kh;return U.text=this.text.substring(_,I),U.sectionIndex=this.sectionIndex.slice(_,I),U.sections=this.sections,U},Kh.prototype.toString=function(){return this.text},Kh.prototype.getMaxScale=function(){var _=this;return this.sectionIndex.reduce(function(I,U){return Math.max(I,_.sections[U].scale)},0)},Kh.prototype.addTextSection=function(_,I){this.text+=_.text,this.sections.push(xy.forText(_.scale,_.fontStack||I));for(var U=this.sections.length-1,$=0;$<_.text.length;++$)this.sectionIndex.push(U)},Kh.prototype.addImageSection=function(_){var I=_.image?_.image.name:"";if(I.length===0){ie("Can't add FormattedSection with an empty image.");return}var U=this.getNextImageSectionCharCode();if(!U){ie("Reached maximum number of images "+(g0-e3+2));return}this.text+=String.fromCharCode(U),this.sections.push(xy.forImage(I)),this.sectionIndex.push(this.sections.length-1)},Kh.prototype.getNextImageSectionCharCode=function(){return this.imageSectionID?this.imageSectionID>=g0?null:++this.imageSectionID:(this.imageSectionID=e3,this.imageSectionID)};function hq(y,_){for(var I=[],U=y.text,$=0,oe=0,he=_;oe=0,Lt=0,sr=0;sr0&&ch>eo&&(eo=ch)}else{var Cl=I[Za.fontStack],yl=Cl&&Cl[to];if(yl&&yl.rect)jo=yl.rect,_s=yl.metrics;else{var Qu=_[Za.fontStack],gc=Qu&&Qu[to];if(!gc)continue;_s=gc.metrics}ao=(In-Za.scale)*Tn}kl?(y.verticalizable=!0,ha.push({glyph:to,imageName:El,x:gr,y:hr+ao,vertical:kl,scale:Za.scale,fontStack:Za.fontStack,sectionIndex:Jo,metrics:_s,rect:jo}),gr+=Iu*Za.scale+yt):(ha.push({glyph:to,imageName:El,x:gr,y:hr+ao,vertical:kl,scale:Za.scale,fontStack:Za.fontStack,sectionIndex:Jo,metrics:_s,rect:jo}),gr+=_s.advance*Za.scale+yt)}if(ha.length!==0){var Xd=gr-yt;Rr=Math.max(Xd,Rr),gq(ha,0,ha.length-1,Hi,eo)}gr=0;var Zd=oe*In+eo;ga.lineOffset=Math.max(eo,Xn),hr+=Zd,ni=Math.max(Zd,ni),++wi}var Qh=hr-B1,hv=LS(he),dv=hv.horizontalAlign,Ph=hv.verticalAlign;kd(y.positionedLines,Hi,dv,Ph,Rr,ni,oe,Qh,$.length),y.top+=-Ph*Qh,y.bottom=y.top+Qh,y.left+=-dv*Rr,y.right=y.left+Rr}function gq(y,_,I,U,$){if(!(!U&&!$))for(var oe=y[I],he=oe.metrics.advance*oe.scale,De=(y[I].x+he)*U,it=_;it<=I;it++)y[it].x-=De,y[it].y+=$}function kd(y,_,I,U,$,oe,he,De,it){var yt=(_-I)*$,Lt=0;oe!==he?Lt=-De*U-B1:Lt=(-U*it+.5)*he;for(var sr=0,gr=y;sr-I/2;){if(he--,he<0)return!1;De-=y[he].dist(oe),oe=y[he]}De+=y[he].dist(y[he+1]),he++;for(var it=[],yt=0;DeU;)yt-=it.shift().angleDelta;if(yt>$)return!1;he++,De+=sr.dist(gr)}return!0}function GQ(y){for(var _=0,I=0;Iyt){var Rr=(yt-it)/hr,ni=nl(sr.x,gr.x,Rr),Hi=nl(sr.y,gr.y,Rr),wi=new Wd(ni,Hi,gr.angleTo(sr),Lt);return wi._round(),!he||VQ(y,wi,De,he,_)?wi:void 0}it+=hr}}function Bet(y,_,I,U,$,oe,he,De,it){var yt=HQ(U,oe,he),Lt=jQ(U,$),sr=Lt*he,gr=y[0].x===0||y[0].x===it||y[0].y===0||y[0].y===it;_-sr<_/4&&(_=sr+_/4);var hr=oe*2,Rr=gr?_/2*De%_:(Lt/2+hr)*he*De%_;return WQ(y,Rr,_,yt,I,sr,gr,!1,it)}function WQ(y,_,I,U,$,oe,he,De,it){for(var yt=oe/2,Lt=GQ(y),sr=0,gr=_-I,hr=[],Rr=0;Rr=0&&xn=0&&In=0&&gr+yt<=Lt){var Xn=new Wd(xn,In,bn,Rr);Xn._round(),(!U||VQ(y,Xn,oe,U,$))&&hr.push(Xn)}}sr+=wi}return!De&&!hr.length&&!he&&(hr=WQ(y,sr/2,I,U,$,oe,he,!0,it)),hr}function XQ(y,_,I,U,$){for(var oe=[],he=0;he=U&&sr.x>=U)&&(Lt.x>=U?Lt=new u(U,Lt.y+(sr.y-Lt.y)*((U-Lt.x)/(sr.x-Lt.x)))._round():sr.x>=U&&(sr=new u(U,Lt.y+(sr.y-Lt.y)*((U-Lt.x)/(sr.x-Lt.x)))._round()),!(Lt.y>=$&&sr.y>=$)&&(Lt.y>=$?Lt=new u(Lt.x+(sr.x-Lt.x)*(($-Lt.y)/(sr.y-Lt.y)),$)._round():sr.y>=$&&(sr=new u(Lt.x+(sr.x-Lt.x)*(($-Lt.y)/(sr.y-Lt.y)),$)._round()),(!it||!Lt.equals(it[it.length-1]))&&(it=[Lt],oe.push(it)),it.push(sr)))))}return oe}var i3=Gc;function ZQ(y,_,I,U){var $=[],oe=y.image,he=oe.pixelRatio,De=oe.paddedRect.w-2*i3,it=oe.paddedRect.h-2*i3,yt=y.right-y.left,Lt=y.bottom-y.top,sr=oe.stretchX||[[0,De]],gr=oe.stretchY||[[0,it]],hr=function(Cl,yl){return Cl+yl[1]-yl[0]},Rr=sr.reduce(hr,0),ni=gr.reduce(hr,0),Hi=De-Rr,wi=it-ni,bn=0,rn=Rr,xn=0,In=ni,Xn=0,ga=Hi,ha=0,eo=wi;if(oe.content&&U){var za=oe.content;bn=a6(sr,0,za[0]),xn=a6(gr,0,za[1]),rn=a6(sr,za[0],za[2]),In=a6(gr,za[1],za[3]),Xn=za[0]-bn,ha=za[1]-xn,ga=za[2]-za[0]-rn,eo=za[3]-za[1]-In}var Za=function(Cl,yl,Qu,gc){var Sf=o6(Cl.stretch-bn,rn,yt,y.left),Ff=s6(Cl.fixed-Xn,ga,Cl.stretch,Rr),$h=o6(yl.stretch-xn,In,Lt,y.top),ch=s6(yl.fixed-ha,eo,yl.stretch,ni),Xd=o6(Qu.stretch-bn,rn,yt,y.left),Zd=s6(Qu.fixed-Xn,ga,Qu.stretch,Rr),Qh=o6(gc.stretch-xn,In,Lt,y.top),hv=s6(gc.fixed-ha,eo,gc.stretch,ni),dv=new u(Sf,$h),Ph=new u(Xd,$h),vv=new u(Xd,Qh),bp=new u(Sf,Qh),Ty=new u(Ff/he,ch/he),V1=new u(Zd/he,hv/he),G1=_*Math.PI/180;if(G1){var H1=Math.sin(G1),f3=Math.cos(G1),y0=[f3,-H1,H1,f3];dv._matMult(y0),Ph._matMult(y0),bp._matMult(y0),vv._matMult(y0)}var d6=Cl.stretch+Cl.fixed,Aq=Qu.stretch+Qu.fixed,v6=yl.stretch+yl.fixed,Sq=gc.stretch+gc.fixed,Hp={x:oe.paddedRect.x+i3+d6,y:oe.paddedRect.y+i3+v6,w:Aq-d6,h:Sq-v6},h3=ga/he/yt,p6=eo/he/Lt;return{tl:dv,tr:Ph,bl:bp,br:vv,tex:Hp,writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:Ty,pixelOffsetBR:V1,minFontScaleX:h3,minFontScaleY:p6,isSDF:I}};if(!U||!oe.stretchX&&!oe.stretchY)$.push(Za({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:De+1},{fixed:0,stretch:it+1}));else for(var Jo=YQ(sr,Hi,Rr),to=YQ(gr,wi,ni),ao=0;ao0&&(Rr=Math.max(10,Rr),this.circleDiameter=Rr)}else{var ni=he.top*De-it,Hi=he.bottom*De+it,wi=he.left*De-it,bn=he.right*De+it,rn=he.collisionPadding;if(rn&&(wi-=rn[0]*De,ni-=rn[1]*De,bn+=rn[2]*De,Hi+=rn[3]*De),Lt){var xn=new u(wi,ni),In=new u(bn,ni),Xn=new u(wi,Hi),ga=new u(bn,Hi),ha=Lt*Math.PI/180;xn._rotate(ha),In._rotate(ha),Xn._rotate(ha),ga._rotate(ha),wi=Math.min(xn.x,In.x,Xn.x,ga.x),bn=Math.max(xn.x,In.x,Xn.x,ga.x),ni=Math.min(xn.y,In.y,Xn.y,ga.y),Hi=Math.max(xn.y,In.y,Xn.y,ga.y)}_.emplaceBack(I.x,I.y,wi,ni,bn,Hi,U,$,oe)}this.boxEndIndex=_.length},n3=function(_,I){if(_===void 0&&(_=[]),I===void 0&&(I=Uet),this.data=_,this.length=this.data.length,this.compare=I,this.length>0)for(var U=(this.length>>1)-1;U>=0;U--)this._down(U)};n3.prototype.push=function(_){this.data.push(_),this.length++,this._up(this.length-1)},n3.prototype.pop=function(){if(this.length!==0){var _=this.data[0],I=this.data.pop();return this.length--,this.length>0&&(this.data[0]=I,this._down(0)),_}},n3.prototype.peek=function(){return this.data[0]},n3.prototype._up=function(_){for(var I=this,U=I.data,$=I.compare,oe=U[_];_>0;){var he=_-1>>1,De=U[he];if($(oe,De)>=0)break;U[_]=De,_=he}U[_]=oe},n3.prototype._down=function(_){for(var I=this,U=I.data,$=I.compare,oe=this.length>>1,he=U[_];_=0)break;U[_]=it,_=De}U[_]=he};function Uet(y,_){return y<_?-1:y>_?1:0}function Vet(y,_,I){_===void 0&&(_=1),I===void 0&&(I=!1);for(var U=1/0,$=1/0,oe=-1/0,he=-1/0,De=y[0],it=0;itoe)&&(oe=yt.x),(!it||yt.y>he)&&(he=yt.y)}var Lt=oe-U,sr=he-$,gr=Math.min(Lt,sr),hr=gr/2,Rr=new n3([],Get);if(gr===0)return new u(U,$);for(var ni=U;niwi.d||!wi.d)&&(wi=rn,I&&console.log("found best %d after %d probes",Math.round(1e4*rn.d)/1e4,bn)),!(rn.max-wi.d<=_)&&(hr=rn.h/2,Rr.push(new a3(rn.p.x-hr,rn.p.y-hr,hr,y)),Rr.push(new a3(rn.p.x+hr,rn.p.y-hr,hr,y)),Rr.push(new a3(rn.p.x-hr,rn.p.y+hr,hr,y)),Rr.push(new a3(rn.p.x+hr,rn.p.y+hr,hr,y)),bn+=4)}return I&&(console.log("num probes: "+bn),console.log("best distance: "+wi.d)),wi.p}function Get(y,_){return _.max-y.max}function a3(y,_,I,U){this.p=new u(y,_),this.h=I,this.d=Het(this.p,U),this.max=this.d+this.h*Math.SQRT2}function Het(y,_){for(var I=!1,U=1/0,$=0;$<_.length;$++)for(var oe=_[$],he=0,De=oe.length,it=De-1;hey.y!=Lt.y>y.y&&y.x<(Lt.x-yt.x)*(y.y-yt.y)/(Lt.y-yt.y)+yt.x&&(I=!I),U=Math.min(U,hg(y,yt,Lt))}return(I?1:-1)*Math.sqrt(U)}function jet(y){for(var _=0,I=0,U=0,$=y[0],oe=0,he=$.length,De=he-1;oe=Ei||y0.y<0||y0.y>=Ei||Zet(y,y0,f3,I,U,$,to,y.layers[0],y.collisionBoxArray,_.index,_.sourceLayerIndex,y.index,wi,In,ha,it,rn,Xn,eo,hr,_,oe,yt,Lt,he)};if(za==="line")for(var _s=0,jo=XQ(_.geometry,0,0,Ei,Ei);_s1){var $h=Oet(Ff,ga,I.vertical||Rr,U,ni,bn);$h&&ao(Ff,$h)}}else if(_.type==="Polygon")for(var ch=0,Xd=Zw(_.geometry,0);chN1&&ie(y.layerIds[0]+': Value for "text-size" is >= '+PS+'. Reduce your "text-size".')):Hi.kind==="composite"&&(wi=[Cd*hr.compositeTextSizes[0].evaluate(he,{},Rr),Cd*hr.compositeTextSizes[1].evaluate(he,{},Rr)],(wi[0]>N1||wi[1]>N1)&&ie(y.layerIds[0]+': Value for "text-size" is >= '+PS+'. Reduce your "text-size".')),y.addSymbols(y.text,ni,wi,De,oe,he,yt,_,it.lineStartIndex,it.lineLength,gr,Rr);for(var bn=0,rn=Lt;bnN1&&ie(y.layerIds[0]+': Value for "icon-size" is >= '+PS+'. Reduce your "icon-size".')):dv.kind==="composite"&&(Ph=[Cd*In.compositeIconSizes[0].evaluate(xn,{},ga),Cd*In.compositeIconSizes[1].evaluate(xn,{},ga)],(Ph[0]>N1||Ph[1]>N1)&&ie(y.layerIds[0]+': Value for "icon-size" is >= '+PS+'. Reduce your "icon-size".')),y.addSymbols(y.icon,Qh,Ph,rn,bn,xn,!1,_,za.lineStartIndex,za.lineLength,-1,ga),kl=y.icon.placedSymbolArray.length-1,hv&&(jo=hv.length*4,y.addSymbols(y.icon,hv,Ph,rn,bn,xn,cv.vertical,_,za.lineStartIndex,za.lineLength,-1,ga),Cl=y.icon.placedSymbolArray.length-1)}for(var vv in U.horizontal){var bp=U.horizontal[vv];if(!Za){Qu=K(bp.text);var Ty=De.layout.get("text-rotate").evaluate(xn,{},ga);Za=new l6(it,_,yt,Lt,sr,bp,gr,hr,Rr,Ty)}var V1=bp.positionedLines.length===1;if(El+=JQ(y,_,bp,oe,De,Rr,xn,ni,za,U.vertical?cv.horizontal:cv.horizontalOnly,V1?Object.keys(U.horizontal):[vv],yl,kl,In,ga),V1)break}U.vertical&&(Iu+=JQ(y,_,U.vertical,oe,De,Rr,xn,ni,za,cv.vertical,["vertical"],yl,Cl,In,ga));var G1=Za?Za.boxStartIndex:y.collisionBoxArray.length,H1=Za?Za.boxEndIndex:y.collisionBoxArray.length,f3=to?to.boxStartIndex:y.collisionBoxArray.length,y0=to?to.boxEndIndex:y.collisionBoxArray.length,d6=Jo?Jo.boxStartIndex:y.collisionBoxArray.length,Aq=Jo?Jo.boxEndIndex:y.collisionBoxArray.length,v6=ao?ao.boxStartIndex:y.collisionBoxArray.length,Sq=ao?ao.boxEndIndex:y.collisionBoxArray.length,Hp=-1,h3=function(DS,vee){return DS&&DS.circleDiameter?Math.max(DS.circleDiameter,vee):vee};Hp=h3(Za,Hp),Hp=h3(to,Hp),Hp=h3(Jo,Hp),Hp=h3(ao,Hp);var p6=Hp>-1?1:0;p6&&(Hp*=ha/Tn),y.glyphOffsetArray.length>=Pu.MAX_GLYPHS&&ie("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),xn.sortKey!==void 0&&y.addToSortKeyRanges(y.symbolInstances.length,xn.sortKey),y.symbolInstances.emplaceBack(_.x,_.y,yl.right>=0?yl.right:-1,yl.center>=0?yl.center:-1,yl.left>=0?yl.left:-1,yl.vertical||-1,kl,Cl,Qu,G1,H1,f3,y0,d6,Aq,v6,Sq,yt,El,Iu,_s,jo,p6,0,gr,gc,Sf,Hp)}function Yet(y,_,I,U){var $=y.compareText;if(!(_ in $))$[_]=[];else for(var oe=$[_],he=oe.length-1;he>=0;he--)if(U.dist(oe[he])0)&&(he.value.kind!=="constant"||he.value.value.length>0),Lt=it.value.kind!=="constant"||!!it.value.value||Object.keys(it.parameters).length>0,sr=oe.get("symbol-sort-key");if(this.features=[],!(!yt&&!Lt)){for(var gr=I.iconDependencies,hr=I.glyphDependencies,Rr=I.availableImages,ni=new Un(this.zoom),Hi=0,wi=_;Hi=0;for(var Iu=0,kl=eo.sections;Iu=0;it--)he[it]={x:I[it].x,y:I[it].y,tileUnitDistanceFromAnchor:oe},it>0&&(oe+=I[it-1].dist(I[it]));for(var yt=0;yt0},Pu.prototype.hasIconData=function(){return this.icon.segments.get().length>0},Pu.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},Pu.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},Pu.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},Pu.prototype.addIndicesForPlacedSymbol=function(_,I){for(var U=_.placedSymbolArray.get(I),$=U.vertexStartIndex+U.numGlyphs*4,oe=U.vertexStartIndex;oe<$;oe+=4)_.indexArray.emplaceBack(oe,oe+1,oe+2),_.indexArray.emplaceBack(oe+1,oe+2,oe+3)},Pu.prototype.getSortedSymbolIndexes=function(_){if(this.sortedAngle===_&&this.symbolInstanceIndexes!==void 0)return this.symbolInstanceIndexes;for(var I=Math.sin(_),U=Math.cos(_),$=[],oe=[],he=[],De=0;De1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(_),this.sortedAngle=_,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var U=0,$=this.symbolInstanceIndexes;U<$.length;U+=1){var oe=$[U],he=this.symbolInstances.get(oe);this.featureSortOrder.push(he.featureIndex),[he.rightJustifiedTextSymbolIndex,he.centerJustifiedTextSymbolIndex,he.leftJustifiedTextSymbolIndex].forEach(function(De,it,yt){De>=0&&yt.indexOf(De)===it&&I.addIndicesForPlacedSymbol(I.text,De)}),he.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,he.verticalPlacedTextSymbolIndex),he.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,he.placedIconSymbolIndex),he.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,he.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},X("SymbolBucket",Pu,{omit:["layers","collisionBoxArray","features","compareText"]}),Pu.MAX_GLYPHS=65535,Pu.addDynamicAttributes=_q;function Qet(y,_){return _.replace(/{([^{}]+)}/g,function(I,U){return U in y?String(y[U]):""})}var ett=new Or({"symbol-placement":new Me(Rn.layout_symbol["symbol-placement"]),"symbol-spacing":new Me(Rn.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Me(Rn.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new bt(Rn.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Me(Rn.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Me(Rn.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new Me(Rn.layout_symbol["icon-ignore-placement"]),"icon-optional":new Me(Rn.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Me(Rn.layout_symbol["icon-rotation-alignment"]),"icon-size":new bt(Rn.layout_symbol["icon-size"]),"icon-text-fit":new Me(Rn.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Me(Rn.layout_symbol["icon-text-fit-padding"]),"icon-image":new bt(Rn.layout_symbol["icon-image"]),"icon-rotate":new bt(Rn.layout_symbol["icon-rotate"]),"icon-padding":new Me(Rn.layout_symbol["icon-padding"]),"icon-keep-upright":new Me(Rn.layout_symbol["icon-keep-upright"]),"icon-offset":new bt(Rn.layout_symbol["icon-offset"]),"icon-anchor":new bt(Rn.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Me(Rn.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Me(Rn.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Me(Rn.layout_symbol["text-rotation-alignment"]),"text-field":new bt(Rn.layout_symbol["text-field"]),"text-font":new bt(Rn.layout_symbol["text-font"]),"text-size":new bt(Rn.layout_symbol["text-size"]),"text-max-width":new bt(Rn.layout_symbol["text-max-width"]),"text-line-height":new Me(Rn.layout_symbol["text-line-height"]),"text-letter-spacing":new bt(Rn.layout_symbol["text-letter-spacing"]),"text-justify":new bt(Rn.layout_symbol["text-justify"]),"text-radial-offset":new bt(Rn.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Me(Rn.layout_symbol["text-variable-anchor"]),"text-anchor":new bt(Rn.layout_symbol["text-anchor"]),"text-max-angle":new Me(Rn.layout_symbol["text-max-angle"]),"text-writing-mode":new Me(Rn.layout_symbol["text-writing-mode"]),"text-rotate":new bt(Rn.layout_symbol["text-rotate"]),"text-padding":new Me(Rn.layout_symbol["text-padding"]),"text-keep-upright":new Me(Rn.layout_symbol["text-keep-upright"]),"text-transform":new bt(Rn.layout_symbol["text-transform"]),"text-offset":new bt(Rn.layout_symbol["text-offset"]),"text-allow-overlap":new Me(Rn.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new Me(Rn.layout_symbol["text-ignore-placement"]),"text-optional":new Me(Rn.layout_symbol["text-optional"])}),ttt=new Or({"icon-opacity":new bt(Rn.paint_symbol["icon-opacity"]),"icon-color":new bt(Rn.paint_symbol["icon-color"]),"icon-halo-color":new bt(Rn.paint_symbol["icon-halo-color"]),"icon-halo-width":new bt(Rn.paint_symbol["icon-halo-width"]),"icon-halo-blur":new bt(Rn.paint_symbol["icon-halo-blur"]),"icon-translate":new Me(Rn.paint_symbol["icon-translate"]),"icon-translate-anchor":new Me(Rn.paint_symbol["icon-translate-anchor"]),"text-opacity":new bt(Rn.paint_symbol["text-opacity"]),"text-color":new bt(Rn.paint_symbol["text-color"],{runtimeType:Ol,getOverride:function(y){return y.textColor},hasOverride:function(y){return!!y.textColor}}),"text-halo-color":new bt(Rn.paint_symbol["text-halo-color"]),"text-halo-width":new bt(Rn.paint_symbol["text-halo-width"]),"text-halo-blur":new bt(Rn.paint_symbol["text-halo-blur"]),"text-translate":new Me(Rn.paint_symbol["text-translate"]),"text-translate-anchor":new Me(Rn.paint_symbol["text-translate-anchor"])}),xq={paint:ttt,layout:ett},l3=function(_){this.type=_.property.overrides?_.property.overrides.runtimeType:ac,this.defaultValue=_};l3.prototype.evaluate=function(_){if(_.formattedSection){var I=this.defaultValue.property.overrides;if(I&&I.hasOverride(_.formattedSection))return I.getOverride(_.formattedSection)}return _.feature&&_.featureState?this.defaultValue.evaluate(_.feature,_.featureState):this.defaultValue.property.specification.default},l3.prototype.eachChild=function(_){if(!this.defaultValue.isConstant()){var I=this.defaultValue.value;_(I._styleExpression.expression)}},l3.prototype.outputDefined=function(){return!1},l3.prototype.serialize=function(){return null},X("FormatSectionOverride",l3,{omit:["defaultValue"]});var rtt=function(y){function _(I){y.call(this,I,xq)}return y&&(_.__proto__=y),_.prototype=Object.create(y&&y.prototype),_.prototype.constructor=_,_.prototype.recalculate=function(U,$){if(y.prototype.recalculate.call(this,U,$),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["icon-rotation-alignment"]="map":this.layout._values["icon-rotation-alignment"]="viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["text-rotation-alignment"]="map":this.layout._values["text-rotation-alignment"]="viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){var oe=this.layout.get("text-writing-mode");if(oe){for(var he=[],De=0,it=oe;De",targetMapId:$,sourceMapId:he.mapId})}}},u3.prototype.receive=function(_){var I=_.data,U=I.id;if(U&&!(I.targetMapId&&this.mapId!==I.targetMapId))if(I.type===""){delete this.tasks[U];var $=this.cancelCallbacks[U];delete this.cancelCallbacks[U],$&&$()}else Ce()||I.mustQueue?(this.tasks[U]=I,this.taskQueue.push(U),this.invoker.trigger()):this.processTask(U,I)},u3.prototype.process=function(){if(this.taskQueue.length){var _=this.taskQueue.shift(),I=this.tasks[_];delete this.tasks[_],this.taskQueue.length&&this.invoker.trigger(),I&&this.processTask(_,I)}},u3.prototype.processTask=function(_,I){var U=this;if(I.type===""){var $=this.callbacks[_];delete this.callbacks[_],$&&(I.error?$(Ye(I.error)):$(null,Ye(I.data)))}else{var oe=!1,he=Se(this.globalScope)?void 0:[],De=I.hasCallback?function(gr,hr){oe=!0,delete U.cancelCallbacks[_],U.target.postMessage({id:_,type:"",sourceMapId:U.mapId,error:gr?Ve(gr):null,data:Ve(hr,he)},he)}:function(gr){oe=!0},it=null,yt=Ye(I.data);if(this.parent[I.type])it=this.parent[I.type](I.sourceMapId,yt,De);else if(this.parent.getWorkerSource){var Lt=I.type.split("."),sr=this.parent.getWorkerSource(I.sourceMapId,Lt[0],yt.source);it=sr[Lt[1]](yt,De)}else De(new Error("Could not find function "+I.type));!oe&&it&&it.cancel&&(this.cancelCallbacks[_]=it.cancel)}},u3.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)};function dtt(y,_,I){_=Math.pow(2,I)-_-1;var U=iee(y*256,_*256,I),$=iee((y+1)*256,(_+1)*256,I);return U[0]+","+U[1]+","+$[0]+","+$[1]}function iee(y,_,I){var U=2*Math.PI*6378137/256/Math.pow(2,I),$=y*U-2*Math.PI*6378137/2,oe=_*U-2*Math.PI*6378137/2;return[$,oe]}var lh=function(_,I){_&&(I?this.setSouthWest(_).setNorthEast(I):_.length===4?this.setSouthWest([_[0],_[1]]).setNorthEast([_[2],_[3]]):this.setSouthWest(_[0]).setNorthEast(_[1]))};lh.prototype.setNorthEast=function(_){return this._ne=_ instanceof Hc?new Hc(_.lng,_.lat):Hc.convert(_),this},lh.prototype.setSouthWest=function(_){return this._sw=_ instanceof Hc?new Hc(_.lng,_.lat):Hc.convert(_),this},lh.prototype.extend=function(_){var I=this._sw,U=this._ne,$,oe;if(_ instanceof Hc)$=_,oe=_;else if(_ instanceof lh){if($=_._sw,oe=_._ne,!$||!oe)return this}else{if(Array.isArray(_))if(_.length===4||_.every(Array.isArray)){var he=_;return this.extend(lh.convert(he))}else{var De=_;return this.extend(Hc.convert(De))}return this}return!I&&!U?(this._sw=new Hc($.lng,$.lat),this._ne=new Hc(oe.lng,oe.lat)):(I.lng=Math.min($.lng,I.lng),I.lat=Math.min($.lat,I.lat),U.lng=Math.max(oe.lng,U.lng),U.lat=Math.max(oe.lat,U.lat)),this},lh.prototype.getCenter=function(){return new Hc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},lh.prototype.getSouthWest=function(){return this._sw},lh.prototype.getNorthEast=function(){return this._ne},lh.prototype.getNorthWest=function(){return new Hc(this.getWest(),this.getNorth())},lh.prototype.getSouthEast=function(){return new Hc(this.getEast(),this.getSouth())},lh.prototype.getWest=function(){return this._sw.lng},lh.prototype.getSouth=function(){return this._sw.lat},lh.prototype.getEast=function(){return this._ne.lng},lh.prototype.getNorth=function(){return this._ne.lat},lh.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},lh.prototype.toString=function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"},lh.prototype.isEmpty=function(){return!(this._sw&&this._ne)},lh.prototype.contains=function(_){var I=Hc.convert(_),U=I.lng,$=I.lat,oe=this._sw.lat<=$&&$<=this._ne.lat,he=this._sw.lng<=U&&U<=this._ne.lng;return this._sw.lng>this._ne.lng&&(he=this._sw.lng>=U&&U>=this._ne.lng),oe&&he},lh.convert=function(_){return!_||_ instanceof lh?_:new lh(_)};var nee=63710088e-1,Hc=function(_,I){if(isNaN(_)||isNaN(I))throw new Error("Invalid LngLat object: ("+_+", "+I+")");if(this.lng=+_,this.lat=+I,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")};Hc.prototype.wrap=function(){return new Hc(k(this.lng,-180,180),this.lat)},Hc.prototype.toArray=function(){return[this.lng,this.lat]},Hc.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},Hc.prototype.distanceTo=function(_){var I=Math.PI/180,U=this.lat*I,$=_.lat*I,oe=Math.sin(U)*Math.sin($)+Math.cos(U)*Math.cos($)*Math.cos((_.lng-this.lng)*I),he=nee*Math.acos(Math.min(oe,1));return he},Hc.prototype.toBounds=function(_){_===void 0&&(_=0);var I=40075017,U=360*_/I,$=U/Math.cos(Math.PI/180*this.lat);return new lh(new Hc(this.lng-$,this.lat-U),new Hc(this.lng+$,this.lat+U))},Hc.convert=function(_){if(_ instanceof Hc)return _;if(Array.isArray(_)&&(_.length===2||_.length===3))return new Hc(Number(_[0]),Number(_[1]));if(!Array.isArray(_)&&typeof _=="object"&&_!==null)return new Hc(Number("lng"in _?_.lng:_.lon),Number(_.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")};var aee=2*Math.PI*nee;function oee(y){return aee*Math.cos(y*Math.PI/180)}function see(y){return(180+y)/360}function lee(y){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+y*Math.PI/360)))/360}function uee(y,_){return y/oee(_)}function vtt(y){return y*360-180}function wq(y){var _=180-y*360;return 360/Math.PI*Math.atan(Math.exp(_*Math.PI/180))-90}function ptt(y,_){return y*oee(wq(_))}function gtt(y){return 1/Math.cos(y*Math.PI/180)}var vb=function(_,I,U){U===void 0&&(U=0),this.x=+_,this.y=+I,this.z=+U};vb.fromLngLat=function(_,I){I===void 0&&(I=0);var U=Hc.convert(_);return new vb(see(U.lng),lee(U.lat),uee(I,U.lat))},vb.prototype.toLngLat=function(){return new Hc(vtt(this.x),wq(this.y))},vb.prototype.toAltitude=function(){return ptt(this.z,this.y)},vb.prototype.meterInMercatorCoordinateUnits=function(){return 1/aee*gtt(wq(this.y))};var pb=function(_,I,U){this.z=_,this.x=I,this.y=U,this.key=RS(0,_,_,I,U)};pb.prototype.equals=function(_){return this.z===_.z&&this.x===_.x&&this.y===_.y},pb.prototype.url=function(_,I){var U=dtt(this.x,this.y,this.z),$=mtt(this.z,this.x,this.y);return _[(this.x+this.y)%_.length].replace("{prefix}",(this.x%16).toString(16)+(this.y%16).toString(16)).replace("{z}",String(this.z)).replace("{x}",String(this.x)).replace("{y}",String(I==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace("{quadkey}",$).replace("{bbox-epsg-3857}",U)},pb.prototype.getTilePoint=function(_){var I=Math.pow(2,this.z);return new u((_.x*I-this.x)*Ei,(_.y*I-this.y)*Ei)},pb.prototype.toString=function(){return this.z+"/"+this.x+"/"+this.y};var cee=function(_,I){this.wrap=_,this.canonical=I,this.key=RS(_,I.z,I.z,I.x,I.y)},uh=function(_,I,U,$,oe){this.overscaledZ=_,this.wrap=I,this.canonical=new pb(U,+$,+oe),this.key=RS(I,_,U,$,oe)};uh.prototype.equals=function(_){return this.overscaledZ===_.overscaledZ&&this.wrap===_.wrap&&this.canonical.equals(_.canonical)},uh.prototype.scaledTo=function(_){var I=this.canonical.z-_;return _>this.canonical.z?new uh(_,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new uh(_,this.wrap,_,this.canonical.x>>I,this.canonical.y>>I)},uh.prototype.calculateScaledKey=function(_,I){var U=this.canonical.z-_;return _>this.canonical.z?RS(this.wrap*+I,_,this.canonical.z,this.canonical.x,this.canonical.y):RS(this.wrap*+I,_,_,this.canonical.x>>U,this.canonical.y>>U)},uh.prototype.isChildOf=function(_){if(_.wrap!==this.wrap)return!1;var I=this.canonical.z-_.canonical.z;return _.overscaledZ===0||_.overscaledZ>I&&_.canonical.y===this.canonical.y>>I},uh.prototype.children=function(_){if(this.overscaledZ>=_)return[new uh(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var I=this.canonical.z+1,U=this.canonical.x*2,$=this.canonical.y*2;return[new uh(I,this.wrap,I,U,$),new uh(I,this.wrap,I,U+1,$),new uh(I,this.wrap,I,U,$+1),new uh(I,this.wrap,I,U+1,$+1)]},uh.prototype.isLessThan=function(_){return this.wrap<_.wrap?!0:this.wrap>_.wrap?!1:this.overscaledZ<_.overscaledZ?!0:this.overscaledZ>_.overscaledZ?!1:this.canonical.x<_.canonical.x?!0:this.canonical.x>_.canonical.x?!1:this.canonical.y<_.canonical.y},uh.prototype.wrapped=function(){return new uh(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)},uh.prototype.unwrapTo=function(_){return new uh(this.overscaledZ,_,this.canonical.z,this.canonical.x,this.canonical.y)},uh.prototype.overscaleFactor=function(){return Math.pow(2,this.overscaledZ-this.canonical.z)},uh.prototype.toUnwrapped=function(){return new cee(this.wrap,this.canonical)},uh.prototype.toString=function(){return this.overscaledZ+"/"+this.canonical.x+"/"+this.canonical.y},uh.prototype.getTilePoint=function(_){return this.canonical.getTilePoint(new vb(_.x-this.wrap,_.y))};function RS(y,_,I,U,$){y*=2,y<0&&(y=y*-1-1);var oe=1<0;oe--)$=1<=this.dim+1||I<-1||I>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(I+1)*this.stride+(_+1)},by.prototype._unpackMapbox=function(_,I,U){return(_*256*256+I*256+U)/10-1e4},by.prototype._unpackTerrarium=function(_,I,U){return _*256+I+U/256-32768},by.prototype.getPixels=function(){return new Eh({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},by.prototype.backfillBorder=function(_,I,U){if(this.dim!==_.dim)throw new Error("dem dimension mismatch");var $=I*this.dim,oe=I*this.dim+this.dim,he=U*this.dim,De=U*this.dim+this.dim;switch(I){case-1:$=oe-1;break;case 1:oe=$+1;break}switch(U){case-1:he=De-1;break;case 1:De=he+1;break}for(var it=-I*this.dim,yt=-U*this.dim,Lt=he;Lt=0&&sr[3]>=0&&it.insert(De,sr[0],sr[1],sr[2],sr[3])}},wy.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new mg.VectorTile(new Xa(this.rawTileData)).layers,this.sourceLayerCoder=new f6(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers},wy.prototype.query=function(_,I,U,$){var oe=this;this.loadVTLayers();for(var he=_.params||{},De=Ei/_.tileSize/_.scale,it=xe(he.filter),yt=_.queryGeometry,Lt=_.queryPadding*De,sr=hee(yt),gr=this.grid.query(sr.minX-Lt,sr.minY-Lt,sr.maxX+Lt,sr.maxY+Lt),hr=hee(_.cameraQueryGeometry),Rr=this.grid3D.query(hr.minX-Lt,hr.minY-Lt,hr.maxX+Lt,hr.maxY+Lt,function(Xn,ga,ha,eo){return mp(_.cameraQueryGeometry,Xn-Lt,ga-Lt,ha+Lt,eo+Lt)}),ni=0,Hi=Rr;ni$)oe=!1;else if(!I)oe=!0;else if(this.expirationTime=Ha.maxzoom)&&Ha.visibility!=="none"){h(jn,this.zoom,ir);var vo=Zi[Ha.id]=Ha.createBucket({index:Ri.bucketLayerIDs.length,layers:jn,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:Ba,sourceID:this.source});vo.populate(ua,en,this.tileID.canonical),Ri.bucketLayerIDs.push(jn.map(function(ki){return ki.id}))}}}}var Gn,Ct,Sr,Jr,hi=i.mapObject(en.glyphDependencies,function(ki){return Object.keys(ki).map(Number)});Object.keys(hi).length?wr.send("getGlyphs",{uid:this.uid,stacks:hi},function(ki,_n){Gn||(Gn=ki,Ct=_n,En.call(ti))}):Ct={};var hn=Object.keys(en.iconDependencies);hn.length?wr.send("getImages",{icons:hn,source:this.source,tileID:this.tileID,type:"icons"},function(ki,_n){Gn||(Gn=ki,Sr=_n,En.call(ti))}):Sr={};var Sn=Object.keys(en.patternDependencies);Sn.length?wr.send("getImages",{icons:Sn,source:this.source,tileID:this.tileID,type:"patterns"},function(ki,_n){Gn||(Gn=ki,Jr=_n,En.call(ti))}):Jr={},En.call(this);function En(){if(Gn)return Xr(Gn);if(Ct&&Sr&&Jr){var ki=new c(Ct),_n=new i.ImageAtlas(Sr,Jr);for(var ya in Zi){var ea=Zi[ya];ea instanceof i.SymbolBucket?(h(ea.layers,this.zoom,ir),i.performSymbolLayout(ea,Ct,ki.positions,Sr,_n.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):ea.hasPattern&&(ea instanceof i.LineBucket||ea instanceof i.FillBucket||ea instanceof i.FillExtrusionBucket)&&(h(ea.layers,this.zoom,ir),ea.addFeatures(en,this.tileID.canonical,_n.patternPositions))}this.status="done",Xr(null,{buckets:i.values(Zi).filter(function(Ma){return!Ma.isEmpty()}),featureIndex:Ri,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:ki.image,imageAtlas:_n,glyphMap:this.returnDependencies?Ct:null,iconMap:this.returnDependencies?Sr:null,glyphPositions:this.returnDependencies?ki.positions:null})}}};function h(Gt,wt,tr){for(var ir=new i.EvaluationParameters(wt),wr=0,Xr=Gt;wr=0!=!!wt&&Gt.reverse()}var L=i.vectorTile.VectorTileFeature.prototype.toGeoJSON,x=function(wt){this._feature=wt,this.extent=i.EXTENT,this.type=wt.type,this.properties=wt.tags,"id"in wt&&!isNaN(wt.id)&&(this.id=parseInt(wt.id,10))};x.prototype.loadGeometry=function(){if(this._feature.type===1){for(var wt=[],tr=0,ir=this._feature.geometry;tr>31}function Ce(Gt,wt){for(var tr=Gt.loadGeometry(),ir=Gt.type,wr=0,Xr=0,ti=tr.length,$r=0;$r>1;Se(Gt,wt,ti,ir,wr,Xr%2),re(Gt,wt,tr,ir,ti-1,Xr+1),re(Gt,wt,tr,ti+1,wr,Xr+1)}}function Se(Gt,wt,tr,ir,wr,Xr){for(;wr>ir;){if(wr-ir>600){var ti=wr-ir+1,$r=tr-ir+1,Ri=Math.log(ti),Zi=.5*Math.exp(2*Ri/3),en=.5*Math.sqrt(Ri*Zi*(ti-Zi)/ti)*($r-ti/2<0?-1:1),fn=Math.max(ir,Math.floor(tr-$r*Zi/ti+en)),yn=Math.min(wr,Math.floor(tr+(ti-$r)*Zi/ti+en));Se(Gt,wt,tr,fn,yn,Xr)}var Mn=wt[2*tr+Xr],Ba=ir,ua=wr;for(ke(Gt,wt,ir,tr),wt[2*wr+Xr]>Mn&&ke(Gt,wt,ir,wr);BaMn;)ua--}wt[2*ir+Xr]===Mn?ke(Gt,wt,ir,ua):(ua++,ke(Gt,wt,ua,wr)),ua<=tr&&(ir=ua+1),tr<=ua&&(wr=ua-1)}}function ke(Gt,wt,tr,ir){be(Gt,tr,ir),be(wt,2*tr,2*ir),be(wt,2*tr+1,2*ir+1)}function be(Gt,wt,tr){var ir=Gt[wt];Gt[wt]=Gt[tr],Gt[tr]=ir}function Be(Gt,wt,tr,ir,wr,Xr,ti){for(var $r=[0,Gt.length-1,0],Ri=[],Zi,en;$r.length;){var fn=$r.pop(),yn=$r.pop(),Mn=$r.pop();if(yn-Mn<=ti){for(var Ba=Mn;Ba<=yn;Ba++)Zi=wt[2*Ba],en=wt[2*Ba+1],Zi>=tr&&Zi<=wr&&en>=ir&&en<=Xr&&Ri.push(Gt[Ba]);continue}var ua=Math.floor((Mn+yn)/2);Zi=wt[2*ua],en=wt[2*ua+1],Zi>=tr&&Zi<=wr&&en>=ir&&en<=Xr&&Ri.push(Gt[ua]);var ma=(fn+1)%2;(fn===0?tr<=Zi:ir<=en)&&($r.push(Mn),$r.push(ua-1),$r.push(ma)),(fn===0?wr>=Zi:Xr>=en)&&($r.push(ua+1),$r.push(yn),$r.push(ma))}return Ri}function Le(Gt,wt,tr,ir,wr,Xr){for(var ti=[0,Gt.length-1,0],$r=[],Ri=wr*wr;ti.length;){var Zi=ti.pop(),en=ti.pop(),fn=ti.pop();if(en-fn<=Xr){for(var yn=fn;yn<=en;yn++)me(wt[2*yn],wt[2*yn+1],tr,ir)<=Ri&&$r.push(Gt[yn]);continue}var Mn=Math.floor((fn+en)/2),Ba=wt[2*Mn],ua=wt[2*Mn+1];me(Ba,ua,tr,ir)<=Ri&&$r.push(Gt[Mn]);var ma=(Zi+1)%2;(Zi===0?tr-wr<=Ba:ir-wr<=ua)&&(ti.push(fn),ti.push(Mn-1),ti.push(ma)),(Zi===0?tr+wr>=Ba:ir+wr>=ua)&&(ti.push(Mn+1),ti.push(en),ti.push(ma))}return $r}function me(Gt,wt,tr,ir){var wr=Gt-tr,Xr=wt-ir;return wr*wr+Xr*Xr}var Pe=function(Gt){return Gt[0]},ce=function(Gt){return Gt[1]},He=function(wt,tr,ir,wr,Xr){tr===void 0&&(tr=Pe),ir===void 0&&(ir=ce),wr===void 0&&(wr=64),Xr===void 0&&(Xr=Float64Array),this.nodeSize=wr,this.points=wt;for(var ti=wt.length<65536?Uint16Array:Uint32Array,$r=this.ids=new ti(wt.length),Ri=this.coords=new Xr(wt.length*2),Zi=0;Zi=wr;en--){var fn=+Date.now();Ri=this._cluster(Ri,en),this.trees[en]=new He(Ri,Ae,rt,ti,Float32Array),ir&&console.log("z%d: %d clusters in %dms",en,Ri.length,+Date.now()-fn)}return ir&&console.timeEnd("total time"),this},mt.prototype.getClusters=function(wt,tr){var ir=((wt[0]+180)%360+360)%360-180,wr=Math.max(-90,Math.min(90,wt[1])),Xr=wt[2]===180?180:((wt[2]+180)%360+360)%360-180,ti=Math.max(-90,Math.min(90,wt[3]));if(wt[2]-wt[0]>=360)ir=-180,Xr=180;else if(ir>Xr){var $r=this.getClusters([ir,wr,180,ti],tr),Ri=this.getClusters([-180,wr,Xr,ti],tr);return $r.concat(Ri)}for(var Zi=this.trees[this._limitZoom(tr)],en=Zi.range(Vt(ir),rr(ti),Vt(Xr),rr(wr)),fn=[],yn=0,Mn=en;yntr&&(ua+=Xo.numPoints||1)}if(ua>=Ri){for(var da=fn.x*Ba,jn=fn.y*Ba,Ha=$r&&Ba>1?this._map(fn,!0):null,vo=(en<<5)+(tr+1)+this.points.length,Gn=0,Ct=Mn;Gn1)for(var hn=0,Sn=Mn;hn>5},mt.prototype._getOriginZoom=function(wt){return(wt-this.points.length)%32},mt.prototype._map=function(wt,tr){if(wt.numPoints)return tr?Ue({},wt.properties):wt.properties;var ir=this.points[wt.index].properties,wr=this.options.map(ir);return tr&&wr===ir?Ue({},wr):wr};function Ht(Gt,wt,tr,ir,wr){return{x:Gt,y:wt,zoom:1/0,id:tr,parentId:-1,numPoints:ir,properties:wr}}function at(Gt,wt){var tr=Gt.geometry.coordinates,ir=tr[0],wr=tr[1];return{x:Vt(ir),y:rr(wr),zoom:1/0,index:wt,parentId:-1}}function ct(Gt){return{type:"Feature",id:Gt.id,properties:ar(Gt),geometry:{type:"Point",coordinates:[tt(Gt.x),je(Gt.y)]}}}function ar(Gt){var wt=Gt.numPoints,tr=wt>=1e4?Math.round(wt/1e3)+"k":wt>=1e3?Math.round(wt/100)/10+"k":wt;return Ue(Ue({},Gt.properties),{cluster:!0,cluster_id:Gt.id,point_count:wt,point_count_abbreviated:tr})}function Vt(Gt){return Gt/360+.5}function rr(Gt){var wt=Math.sin(Gt*Math.PI/180),tr=.5-.25*Math.log((1+wt)/(1-wt))/Math.PI;return tr<0?0:tr>1?1:tr}function tt(Gt){return(Gt-.5)*360}function je(Gt){var wt=(180-Gt*360)*Math.PI/180;return 360*Math.atan(Math.exp(wt))/Math.PI-90}function Ue(Gt,wt){for(var tr in wt)Gt[tr]=wt[tr];return Gt}function Ae(Gt){return Gt.x}function rt(Gt){return Gt.y}function St(Gt,wt,tr,ir){for(var wr=ir,Xr=tr-wt>>1,ti=tr-wt,$r,Ri=Gt[wt],Zi=Gt[wt+1],en=Gt[tr],fn=Gt[tr+1],yn=wt+3;ynwr)$r=yn,wr=Mn;else if(Mn===wr){var Ba=Math.abs(yn-Xr);Bair&&($r-wt>3&&St(Gt,wt,$r,ir),Gt[$r+2]=wr,tr-$r>3&&St(Gt,$r,tr,ir))}function Tt(Gt,wt,tr,ir,wr,Xr){var ti=wr-tr,$r=Xr-ir;if(ti!==0||$r!==0){var Ri=((Gt-tr)*ti+(wt-ir)*$r)/(ti*ti+$r*$r);Ri>1?(tr=wr,ir=Xr):Ri>0&&(tr+=ti*Ri,ir+=$r*Ri)}return ti=Gt-tr,$r=wt-ir,ti*ti+$r*$r}function dt(Gt,wt,tr,ir){var wr={id:typeof Gt=="undefined"?null:Gt,type:wt,geometry:tr,tags:ir,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return Et(wr),wr}function Et(Gt){var wt=Gt.geometry,tr=Gt.type;if(tr==="Point"||tr==="MultiPoint"||tr==="LineString")pt(Gt,wt);else if(tr==="Polygon"||tr==="MultiLineString")for(var ir=0;ir0&&(ir?ti+=(wr*Zi-Ri*Xr)/2:ti+=Math.sqrt(Math.pow(Ri-wr,2)+Math.pow(Zi-Xr,2))),wr=Ri,Xr=Zi}var en=wt.length-3;wt[2]=1,St(wt,0,en,tr),wt[en+2]=1,wt.size=Math.abs(ti),wt.start=0,wt.end=wt.size}function ei(Gt,wt,tr,ir){for(var wr=0;wr1?1:tr}function gt(Gt,wt,tr,ir,wr,Xr,ti,$r){if(tr/=wt,ir/=wt,Xr>=tr&&ti=ir)return null;for(var Ri=[],Zi=0;Zi=tr&&Ba=ir)continue;var ua=[];if(yn==="Point"||yn==="MultiPoint")Ge(fn,ua,tr,ir,wr);else if(yn==="LineString")Je(fn,ua,tr,ir,wr,!1,$r.lineMetrics);else if(yn==="MultiLineString")et(fn,ua,tr,ir,wr,!1);else if(yn==="Polygon")et(fn,ua,tr,ir,wr,!0);else if(yn==="MultiPolygon")for(var ma=0;ma=tr&&ti<=ir&&(wt.push(Gt[Xr]),wt.push(Gt[Xr+1]),wt.push(Gt[Xr+2]))}}function Je(Gt,wt,tr,ir,wr,Xr,ti){for(var $r=We(Gt),Ri=wr===0?At:Kt,Zi=Gt.start,en,fn,yn=0;yntr&&(fn=Ri($r,Mn,Ba,ma,Wa,tr),ti&&($r.start=Zi+en*fn)):Fa>ir?Xo=tr&&(fn=Ri($r,Mn,Ba,ma,Wa,tr),da=!0),Xo>ir&&Fa<=ir&&(fn=Ri($r,Mn,Ba,ma,Wa,ir),da=!0),!Xr&&da&&(ti&&($r.end=Zi+en*fn),wt.push($r),$r=We(Gt)),ti&&(Zi+=en)}var jn=Gt.length-3;Mn=Gt[jn],Ba=Gt[jn+1],ua=Gt[jn+2],Fa=wr===0?Mn:Ba,Fa>=tr&&Fa<=ir&&xt($r,Mn,Ba,ua),jn=$r.length-3,Xr&&jn>=3&&($r[jn]!==$r[0]||$r[jn+1]!==$r[1])&&xt($r,$r[0],$r[1],$r[2]),$r.length&&wt.push($r)}function We(Gt){var wt=[];return wt.size=Gt.size,wt.start=Gt.start,wt.end=Gt.end,wt}function et(Gt,wt,tr,ir,wr,Xr){for(var ti=0;titi.maxX&&(ti.maxX=en),fn>ti.maxY&&(ti.maxY=fn)}return ti}function Pi(Gt,wt,tr,ir){var wr=wt.geometry,Xr=wt.type,ti=[];if(Xr==="Point"||Xr==="MultiPoint")for(var $r=0;$r0&&wt.size<(wr?ti:ir)){tr.numPoints+=wt.length/3;return}for(var $r=[],Ri=0;Riti)&&(tr.numSimplified++,$r.push(wt[Ri]),$r.push(wt[Ri+1])),tr.numPoints++;wr&&mi($r,Xr),Gt.push($r)}function mi(Gt,wt){for(var tr=0,ir=0,wr=Gt.length,Xr=wr-2;ir0===wt)for(ir=0,wr=Gt.length;ir24)throw new Error("maxZoom should be in the 0-24 range");if(wt.promoteId&&wt.generateId)throw new Error("promoteId and generateId cannot be used together.");var ir=jt(Gt,wt);this.tiles={},this.tileCoords=[],tr&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",wt.indexMaxZoom,wt.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),ir=Qt(ir,wt),ir.length&&this.splitTile(ir,0,0,0),tr&&(ir.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)))}Fn.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},Fn.prototype.splitTile=function(Gt,wt,tr,ir,wr,Xr,ti){for(var $r=[Gt,wt,tr,ir],Ri=this.options,Zi=Ri.debug;$r.length;){ir=$r.pop(),tr=$r.pop(),wt=$r.pop(),Gt=$r.pop();var en=1<1&&console.time("creation"),yn=this.tiles[fn]=_i(Gt,wt,tr,ir,Ri),this.tileCoords.push({z:wt,x:tr,y:ir}),Zi)){Zi>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",wt,tr,ir,yn.numFeatures,yn.numPoints,yn.numSimplified),console.timeEnd("creation"));var Mn="z"+wt;this.stats[Mn]=(this.stats[Mn]||0)+1,this.total++}if(yn.source=Gt,wr){if(wt===Ri.maxZoom||wt===wr)continue;var Ba=1<1&&console.time("clipping");var ua=.5*Ri.buffer/Ri.extent,ma=.5-ua,Wa=.5+ua,Fa=1+ua,Xo,da,jn,Ha,vo,Gn;Xo=da=jn=Ha=null,vo=gt(Gt,en,tr-ua,tr+Wa,0,yn.minX,yn.maxX,Ri),Gn=gt(Gt,en,tr+ma,tr+Fa,0,yn.minX,yn.maxX,Ri),Gt=null,vo&&(Xo=gt(vo,en,ir-ua,ir+Wa,1,yn.minY,yn.maxY,Ri),da=gt(vo,en,ir+ma,ir+Fa,1,yn.minY,yn.maxY,Ri),vo=null),Gn&&(jn=gt(Gn,en,ir-ua,ir+Wa,1,yn.minY,yn.maxY,Ri),Ha=gt(Gn,en,ir+ma,ir+Fa,1,yn.minY,yn.maxY,Ri),Gn=null),Zi>1&&console.timeEnd("clipping"),$r.push(Xo||[],wt+1,tr*2,ir*2),$r.push(da||[],wt+1,tr*2,ir*2+1),$r.push(jn||[],wt+1,tr*2+1,ir*2),$r.push(Ha||[],wt+1,tr*2+1,ir*2+1)}}},Fn.prototype.getTile=function(Gt,wt,tr){var ir=this.options,wr=ir.extent,Xr=ir.debug;if(Gt<0||Gt>24)return null;var ti=1<1&&console.log("drilling down to z%d-%d-%d",Gt,wt,tr);for(var Ri=Gt,Zi=wt,en=tr,fn;!fn&&Ri>0;)Ri--,Zi=Math.floor(Zi/2),en=Math.floor(en/2),fn=this.tiles[An(Ri,Zi,en)];return!fn||!fn.source?null:(Xr>1&&console.log("found parent tile z%d-%d-%d",Ri,Zi,en),Xr>1&&console.time("drilling down"),this.splitTile(fn.source,Ri,Zi,en,Gt,wt,tr),Xr>1&&console.timeEnd("drilling down"),this.tiles[$r]?Ir(this.tiles[$r],wr):null)};function An(Gt,wt,tr){return((1<=0?0:Y.button},o.remove=function(Y){Y.parentNode&&Y.parentNode.removeChild(Y)};function m(Y,D,J){var O,K,de,ne=i.browser.devicePixelRatio>1?"@2x":"",we=i.getJSON(D.transformRequest(D.normalizeSpriteURL(Y,ne,".json"),i.ResourceType.SpriteJSON),function(Yt,cr){we=null,de||(de=Yt,O=cr,ht())}),Oe=i.getImage(D.transformRequest(D.normalizeSpriteURL(Y,ne,".png"),i.ResourceType.SpriteImage),function(Yt,cr){Oe=null,de||(de=Yt,K=cr,ht())});function ht(){if(de)J(de);else if(O&&K){var Yt=i.browser.getImageData(K),cr={};for(var Nt in O){var Ne=O[Nt],$e=Ne.width,st=Ne.height,It=Ne.x,Bt=Ne.y,Ft=Ne.sdf,Ut=Ne.pixelRatio,zt=Ne.stretchX,_t=Ne.stretchY,Dt=Ne.content,vt=new i.RGBAImage({width:$e,height:st});i.RGBAImage.copy(Yt,vt,{x:It,y:Bt},{x:0,y:0},{width:$e,height:st}),cr[Nt]={data:vt,pixelRatio:Ut,sdf:Ft,stretchX:zt,stretchY:_t,content:Dt}}J(null,cr)}}return{cancel:function(){we&&(we.cancel(),we=null),Oe&&(Oe.cancel(),Oe=null)}}}function b(Y){var D=Y.userImage;if(D&&D.render){var J=D.render();if(J)return Y.data.replace(new Uint8Array(D.data.buffer)),!0}return!1}var p=1,k=function(Y){function D(){Y.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new i.RGBAImage({width:1,height:1}),this.dirty=!0}return Y&&(D.__proto__=Y),D.prototype=Object.create(Y&&Y.prototype),D.prototype.constructor=D,D.prototype.isLoaded=function(){return this.loaded},D.prototype.setLoaded=function(O){if(this.loaded!==O&&(this.loaded=O,O)){for(var K=0,de=this.requestors;K=0?1.2:1))}C.prototype.draw=function(Y){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(Y,this.buffer,this.middle);for(var D=this.ctx.getImageData(0,0,this.size,this.size),J=new Uint8ClampedArray(this.size*this.size),O=0;O65535){Yt(new Error("glyphs > 65535 not supported"));return}if(Ne.ranges[st]){Yt(null,{stack:cr,id:Nt,glyph:$e});return}var It=Ne.requests[st];It||(It=Ne.requests[st]=[],P.loadGlyphRange(cr,st,O.url,O.requestManager,function(Bt,Ft){if(Ft){for(var Ut in Ft)O._doesCharSupportLocalGlyph(+Ut)||(Ne.glyphs[+Ut]=Ft[+Ut]);Ne.ranges[st]=!0}for(var zt=0,_t=It;zt<_t.length;zt+=1){var Dt=_t[zt];Dt(Bt,Ft)}delete Ne.requests[st]})),It.push(function(Bt,Ft){Bt?Yt(Bt):Ft&&Yt(null,{stack:cr,id:Nt,glyph:Ft[Nt]||null})})},function(ht,Yt){if(ht)J(ht);else if(Yt){for(var cr={},Nt=0,Ne=Yt;Nt1&&(ht=D[++Oe]);var cr=Math.abs(Yt-ht.left),Nt=Math.abs(Yt-ht.right),Ne=Math.min(cr,Nt),$e=void 0,st=de/O*(K+1);if(ht.isDash){var It=K-Math.abs(st);$e=Math.sqrt(Ne*Ne+It*It)}else $e=K-Math.sqrt(Ne*Ne+st*st);this.data[we+Yt]=Math.max(0,Math.min(255,$e+128))}},G.prototype.addRegularDash=function(D){for(var J=D.length-1;J>=0;--J){var O=D[J],K=D[J+1];O.zeroLength?D.splice(J,1):K&&K.isDash===O.isDash&&(K.left=O.left,D.splice(J,1))}var de=D[0],ne=D[D.length-1];de.isDash===ne.isDash&&(de.left=ne.left-this.width,ne.right=de.right+this.width);for(var we=this.width*this.nextRow,Oe=0,ht=D[Oe],Yt=0;Yt1&&(ht=D[++Oe]);var cr=Math.abs(Yt-ht.left),Nt=Math.abs(Yt-ht.right),Ne=Math.min(cr,Nt),$e=ht.isDash?Ne:-Ne;this.data[we+Yt]=Math.max(0,Math.min(255,$e+128))}},G.prototype.addDash=function(D,J){var O=J?7:0,K=2*O+1;if(this.nextRow+K>this.height)return i.warnOnce("LineAtlas out of space"),null;for(var de=0,ne=0;ne=O.minX&&D.x=O.minY&&D.y0&&(Yt[new i.OverscaledTileID(O.overscaledZ,we,K.z,ne,K.y-1).key]={backfilled:!1},Yt[new i.OverscaledTileID(O.overscaledZ,O.wrap,K.z,K.x,K.y-1).key]={backfilled:!1},Yt[new i.OverscaledTileID(O.overscaledZ,ht,K.z,Oe,K.y-1).key]={backfilled:!1}),K.y+10&&(de.resourceTiming=O._resourceTiming,O._resourceTiming=[]),O.fire(new i.Event("data",de))})},D.prototype.onAdd=function(O){this.map=O,this.load()},D.prototype.setData=function(O){var K=this;return this._data=O,this.fire(new i.Event("dataloading",{dataType:"source"})),this._updateWorkerData(function(de){if(de){K.fire(new i.ErrorEvent(de));return}var ne={dataType:"source",sourceDataType:"content"};K._collectResourceTiming&&K._resourceTiming&&K._resourceTiming.length>0&&(ne.resourceTiming=K._resourceTiming,K._resourceTiming=[]),K.fire(new i.Event("data",ne))}),this},D.prototype.getClusterExpansionZoom=function(O,K){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:O,source:this.id},K),this},D.prototype.getClusterChildren=function(O,K){return this.actor.send("geojson.getClusterChildren",{clusterId:O,source:this.id},K),this},D.prototype.getClusterLeaves=function(O,K,de,ne){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:O,limit:K,offset:de},ne),this},D.prototype._updateWorkerData=function(O){var K=this;this._loaded=!1;var de=i.extend({},this.workerOptions),ne=this._data;typeof ne=="string"?(de.request=this.map._requestManager.transformRequest(i.browser.resolveURL(ne),i.ResourceType.Source),de.request.collectResourceTiming=this._collectResourceTiming):de.data=JSON.stringify(ne),this.actor.send(this.type+".loadData",de,function(we,Oe){K._removed||Oe&&Oe.abandoned||(K._loaded=!0,Oe&&Oe.resourceTiming&&Oe.resourceTiming[K.id]&&(K._resourceTiming=Oe.resourceTiming[K.id].slice(0)),K.actor.send(K.type+".coalesce",{source:de.source},null),O(we))})},D.prototype.loaded=function(){return this._loaded},D.prototype.loadTile=function(O,K){var de=this,ne=O.actor?"reloadTile":"loadTile";O.actor=this.actor;var we={type:this.type,uid:O.uid,tileID:O.tileID,zoom:O.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:i.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};O.request=this.actor.send(ne,we,function(Oe,ht){return delete O.request,O.unloadVectorData(),O.aborted?K(null):Oe?K(Oe):(O.loadVectorData(ht,de.map.painter,ne==="reloadTile"),K(null))})},D.prototype.abortTile=function(O){O.request&&(O.request.cancel(),delete O.request),O.aborted=!0},D.prototype.unloadTile=function(O){O.unloadVectorData(),this.actor.send("removeTile",{uid:O.uid,type:this.type,source:this.id})},D.prototype.onRemove=function(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})},D.prototype.serialize=function(){return i.extend({},this._options,{type:this.type,data:this._data})},D.prototype.hasTransition=function(){return!1},D}(i.Evented),Ee=i.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]),Ce=function(Y){function D(J,O,K,de){Y.call(this),this.id=J,this.dispatcher=K,this.coordinates=O.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(de),this.options=O}return Y&&(D.__proto__=Y),D.prototype=Object.create(Y&&Y.prototype),D.prototype.constructor=D,D.prototype.load=function(O,K){var de=this;this._loaded=!1,this.fire(new i.Event("dataloading",{dataType:"source"})),this.url=this.options.url,i.getImage(this.map._requestManager.transformRequest(this.url,i.ResourceType.Image),function(ne,we){de._loaded=!0,ne?de.fire(new i.ErrorEvent(ne)):we&&(de.image=we,O&&(de.coordinates=O),K&&K(),de._finishLoading())})},D.prototype.loaded=function(){return this._loaded},D.prototype.updateImage=function(O){var K=this;return!this.image||!O.url?this:(this.options.url=O.url,this.load(O.coordinates,function(){K.texture=null}),this)},D.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new i.Event("data",{dataType:"source",sourceDataType:"metadata"})))},D.prototype.onAdd=function(O){this.map=O,this.load()},D.prototype.setCoordinates=function(O){var K=this;this.coordinates=O;var de=O.map(i.MercatorCoordinate.fromLngLat);this.tileID=ge(de),this.minzoom=this.maxzoom=this.tileID.z;var ne=de.map(function(we){return K.tileID.getTilePoint(we)._round()});return this._boundsArray=new i.StructArrayLayout4i8,this._boundsArray.emplaceBack(ne[0].x,ne[0].y,0,0),this._boundsArray.emplaceBack(ne[1].x,ne[1].y,i.EXTENT,0),this._boundsArray.emplaceBack(ne[3].x,ne[3].y,0,i.EXTENT),this._boundsArray.emplaceBack(ne[2].x,ne[2].y,i.EXTENT,i.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new i.Event("data",{dataType:"source",sourceDataType:"content"})),this},D.prototype.prepare=function(){if(!(Object.keys(this.tiles).length===0||!this.image)){var O=this.map.painter.context,K=O.gl;this.boundsBuffer||(this.boundsBuffer=O.createVertexBuffer(this._boundsArray,Ee.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new i.Texture(O,this.image,K.RGBA),this.texture.bind(K.LINEAR,K.CLAMP_TO_EDGE));for(var de in this.tiles){var ne=this.tiles[de];ne.state!=="loaded"&&(ne.state="loaded",ne.texture=this.texture)}}},D.prototype.loadTile=function(O,K){this.tileID&&this.tileID.equals(O.tileID.canonical)?(this.tiles[String(O.tileID.wrap)]=O,O.buckets={},K(null)):(O.state="errored",K(null))},D.prototype.serialize=function(){return{type:"image",url:this.options.url,coordinates:this.coordinates}},D.prototype.hasTransition=function(){return!1},D}(i.Evented);function ge(Y){for(var D=1/0,J=1/0,O=-1/0,K=-1/0,de=0,ne=Y;deK.end(0)?this.fire(new i.ErrorEvent(new i.ValidationError("sources."+this.id,null,"Playback for this video can be set only between the "+K.start(0)+" and "+K.end(0)+"-second mark."))):this.video.currentTime=O}},D.prototype.getVideo=function(){return this.video},D.prototype.onAdd=function(O){this.map||(this.map=O,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},D.prototype.prepare=function(){if(!(Object.keys(this.tiles).length===0||this.video.readyState<2)){var O=this.map.painter.context,K=O.gl;this.boundsBuffer||(this.boundsBuffer=O.createVertexBuffer(this._boundsArray,Ee.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(K.LINEAR,K.CLAMP_TO_EDGE),K.texSubImage2D(K.TEXTURE_2D,0,0,0,K.RGBA,K.UNSIGNED_BYTE,this.video)):(this.texture=new i.Texture(O,this.video,K.RGBA),this.texture.bind(K.LINEAR,K.CLAMP_TO_EDGE));for(var de in this.tiles){var ne=this.tiles[de];ne.state!=="loaded"&&(ne.state="loaded",ne.texture=this.texture)}}},D.prototype.serialize=function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}},D.prototype.hasTransition=function(){return this.video&&!this.video.paused},D}(Ce),Se=function(Y){function D(J,O,K,de){Y.call(this,J,O,K,de),O.coordinates?(!Array.isArray(O.coordinates)||O.coordinates.length!==4||O.coordinates.some(function(ne){return!Array.isArray(ne)||ne.length!==2||ne.some(function(we){return typeof we!="number"})}))&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+J,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new i.ErrorEvent(new i.ValidationError("sources."+J,null,'missing required property "coordinates"'))),O.animate&&typeof O.animate!="boolean"&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+J,null,'optional "animate" property must be a boolean value'))),O.canvas?typeof O.canvas!="string"&&!(O.canvas instanceof i.window.HTMLCanvasElement)&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+J,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new i.ErrorEvent(new i.ValidationError("sources."+J,null,'missing required property "canvas"'))),this.options=O,this.animate=O.animate!==void 0?O.animate:!0}return Y&&(D.__proto__=Y),D.prototype=Object.create(Y&&Y.prototype),D.prototype.constructor=D,D.prototype.load=function(){if(this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof i.window.HTMLCanvasElement?this.options.canvas:i.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()){this.fire(new i.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero.")));return}this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading()},D.prototype.getCanvas=function(){return this.canvas},D.prototype.onAdd=function(O){this.map=O,this.load(),this.canvas&&this.animate&&this.play()},D.prototype.onRemove=function(){this.pause()},D.prototype.prepare=function(){var O=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,O=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,O=!0),!this._hasInvalidDimensions()&&Object.keys(this.tiles).length!==0){var K=this.map.painter.context,de=K.gl;this.boundsBuffer||(this.boundsBuffer=K.createVertexBuffer(this._boundsArray,Ee.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(O||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new i.Texture(K,this.canvas,de.RGBA,{premultiply:!0});for(var ne in this.tiles){var we=this.tiles[ne];we.state!=="loaded"&&(we.state="loaded",we.texture=this.texture)}}},D.prototype.serialize=function(){return{type:"canvas",coordinates:this.coordinates}},D.prototype.hasTransition=function(){return this._playing},D.prototype._hasInvalidDimensions=function(){for(var O=0,K=[this.canvas.width,this.canvas.height];Othis.max){var we=this._getAndRemoveByKey(this.order[0]);we&&this.onRemove(we)}return this},at.prototype.has=function(D){return D.wrapped().key in this.data},at.prototype.getAndRemove=function(D){return this.has(D)?this._getAndRemoveByKey(D.wrapped().key):null},at.prototype._getAndRemoveByKey=function(D){var J=this.data[D].shift();return J.timeout&&clearTimeout(J.timeout),this.data[D].length===0&&delete this.data[D],this.order.splice(this.order.indexOf(D),1),J.value},at.prototype.getByKey=function(D){var J=this.data[D];return J?J[0].value:null},at.prototype.get=function(D){if(!this.has(D))return null;var J=this.data[D.wrapped().key][0];return J.value},at.prototype.remove=function(D,J){if(!this.has(D))return this;var O=D.wrapped().key,K=J===void 0?0:this.data[O].indexOf(J),de=this.data[O][K];return this.data[O].splice(K,1),de.timeout&&clearTimeout(de.timeout),this.data[O].length===0&&delete this.data[O],this.onRemove(de.value),this.order.splice(this.order.indexOf(O),1),this},at.prototype.setMaxSize=function(D){for(this.max=D;this.order.length>this.max;){var J=this._getAndRemoveByKey(this.order[0]);J&&this.onRemove(J)}return this},at.prototype.filter=function(D){var J=[];for(var O in this.data)for(var K=0,de=this.data[O];K1||(Math.abs(cr)>1&&(Math.abs(cr+Ne)===1?cr+=Ne:Math.abs(cr-Ne)===1&&(cr-=Ne)),!(!Yt.dem||!ht.dem)&&(ht.dem.backfillBorder(Yt.dem,cr,Nt),ht.neighboringTiles&&ht.neighboringTiles[$e]&&(ht.neighboringTiles[$e].backfilled=!0)))}},D.prototype.getTile=function(O){return this.getTileByID(O.key)},D.prototype.getTileByID=function(O){return this._tiles[O]},D.prototype._retainLoadedChildren=function(O,K,de,ne){for(var we in this._tiles){var Oe=this._tiles[we];if(!(ne[we]||!Oe.hasData()||Oe.tileID.overscaledZ<=K||Oe.tileID.overscaledZ>de)){for(var ht=Oe.tileID;Oe&&Oe.tileID.overscaledZ>K+1;){var Yt=Oe.tileID.scaledTo(Oe.tileID.overscaledZ-1);Oe=this._tiles[Yt.key],Oe&&Oe.hasData()&&(ht=Yt)}for(var cr=ht;cr.overscaledZ>K;)if(cr=cr.scaledTo(cr.overscaledZ-1),O[cr.key]){ne[ht.key]=ht;break}}}},D.prototype.findLoadedParent=function(O,K){if(O.key in this._loadedParentTiles){var de=this._loadedParentTiles[O.key];return de&&de.tileID.overscaledZ>=K?de:null}for(var ne=O.overscaledZ-1;ne>=K;ne--){var we=O.scaledTo(ne),Oe=this._getLoadedTile(we);if(Oe)return Oe}},D.prototype._getLoadedTile=function(O){var K=this._tiles[O.key];if(K&&K.hasData())return K;var de=this._cache.getByKey(O.wrapped().key);return de},D.prototype.updateCacheSize=function(O){var K=Math.ceil(O.width/this._source.tileSize)+1,de=Math.ceil(O.height/this._source.tileSize)+1,ne=K*de,we=5,Oe=Math.floor(ne*we),ht=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,Oe):Oe;this._cache.setMaxSize(ht)},D.prototype.handleWrapJump=function(O){var K=this._prevLng===void 0?O:this._prevLng,de=O-K,ne=de/360,we=Math.round(ne);if(this._prevLng=O,we){var Oe={};for(var ht in this._tiles){var Yt=this._tiles[ht];Yt.tileID=Yt.tileID.unwrapTo(Yt.tileID.wrap+we),Oe[Yt.tileID.key]=Yt}this._tiles=Oe;for(var cr in this._timers)clearTimeout(this._timers[cr]),delete this._timers[cr];for(var Nt in this._tiles){var Ne=this._tiles[Nt];this._setTileReloadTimer(Nt,Ne)}}},D.prototype.update=function(O){var K=this;if(this.transform=O,!(!this._sourceLoaded||this._paused)){this.updateCacheSize(O),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={};var de;this.used?this._source.tileID?de=O.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(Br){return new i.OverscaledTileID(Br.canonical.z,Br.wrap,Br.canonical.z,Br.canonical.x,Br.canonical.y)}):(de=O.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(de=de.filter(function(Br){return K._source.hasTile(Br)}))):de=[];var ne=O.coveringZoomLevel(this._source),we=Math.max(ne-D.maxOverzooming,this._source.minzoom),Oe=Math.max(ne+D.maxUnderzooming,this._source.minzoom),ht=this._updateRetainedTiles(de,ne);if(Ri(this._source.type)){for(var Yt={},cr={},Nt=Object.keys(ht),Ne=0,$e=Nt;Ne<$e.length;Ne+=1){var st=$e[Ne],It=ht[st],Bt=this._tiles[st];if(!(!Bt||Bt.fadeEndTime&&Bt.fadeEndTime<=i.browser.now())){var Ft=this.findLoadedParent(It,we);Ft&&(this._addTile(Ft.tileID),Yt[Ft.tileID.key]=Ft.tileID),cr[st]=It}}this._retainLoadedChildren(cr,ne,Oe,ht);for(var Ut in Yt)ht[Ut]||(this._coveredTiles[Ut]=!0,ht[Ut]=Yt[Ut])}for(var zt in ht)this._tiles[zt].clearFadeHold();for(var _t=i.keysDifference(this._tiles,ht),Dt=0,vt=_t;Dtthis._source.maxzoom){var Ft=It.children(this._source.maxzoom)[0],Ut=this.getTile(Ft);if(Ut&&Ut.hasData()){de[Ft.key]=Ft;continue}}else{var zt=It.children(this._source.maxzoom);if(de[zt[0].key]&&de[zt[1].key]&&de[zt[2].key]&&de[zt[3].key])continue}for(var _t=Bt.wasRequested(),Dt=It.overscaledZ-1;Dt>=we;--Dt){var vt=It.scaledTo(Dt);if(ne[vt.key]||(ne[vt.key]=!0,Bt=this.getTile(vt),!Bt&&_t&&(Bt=this._addTile(vt)),Bt&&(de[vt.key]=vt,_t=Bt.wasRequested(),Bt.hasData())))break}}}return de},D.prototype._updateLoadedParentTileCache=function(){this._loadedParentTiles={};for(var O in this._tiles){for(var K=[],de=void 0,ne=this._tiles[O].tileID;ne.overscaledZ>0;){if(ne.key in this._loadedParentTiles){de=this._loadedParentTiles[ne.key];break}K.push(ne.key);var we=ne.scaledTo(ne.overscaledZ-1);if(de=this._getLoadedTile(we),de)break;ne=we}for(var Oe=0,ht=K;Oe0)&&(K.hasData()&&K.state!=="reloading"?this._cache.add(K.tileID,K,K.getExpiryTimeout()):(K.aborted=!0,this._abortTile(K),this._unloadTile(K))))},D.prototype.clearTiles=function(){this._shouldReloadOnResume=!1,this._paused=!1;for(var O in this._tiles)this._removeTile(O);this._cache.reset()},D.prototype.tilesIn=function(O,K,de){var ne=this,we=[],Oe=this.transform;if(!Oe)return we;for(var ht=de?Oe.getCameraQueryGeometry(O):O,Yt=O.map(function(Dt){return Oe.pointCoordinate(Dt)}),cr=ht.map(function(Dt){return Oe.pointCoordinate(Dt)}),Nt=this.getIds(),Ne=1/0,$e=1/0,st=-1/0,It=-1/0,Bt=0,Ft=cr;Bt=0&&Di[1].y+Br>=0){var ci=Yt.map(function(gn){return lr.getTilePoint(gn)}),bi=cr.map(function(gn){return lr.getTilePoint(gn)});we.push({tile:vt,tileID:lr,queryGeometry:ci,cameraQueryGeometry:bi,scale:_r})}}},_t=0;_t=i.browser.now())return!0}return!1},D.prototype.setFeatureState=function(O,K,de){O=O||"_geojsonTileLayer",this._state.updateState(O,K,de)},D.prototype.removeFeatureState=function(O,K,de){O=O||"_geojsonTileLayer",this._state.removeFeatureState(O,K,de)},D.prototype.getFeatureState=function(O,K){return O=O||"_geojsonTileLayer",this._state.getState(O,K)},D.prototype.setDependencies=function(O,K,de){var ne=this._tiles[O];ne&&ne.setDependencies(K,de)},D.prototype.reloadTilesForDependencies=function(O,K){for(var de in this._tiles){var ne=this._tiles[de];ne.hasDependency(O,K)&&this._reloadTile(de,"reloading")}this._cache.filter(function(we){return!we.hasDependency(O,K)})},D}(i.Evented);ti.maxOverzooming=10,ti.maxUnderzooming=3;function $r(Y,D){var J=Math.abs(Y.wrap*2)-+(Y.wrap<0),O=Math.abs(D.wrap*2)-+(D.wrap<0);return Y.overscaledZ-D.overscaledZ||O-J||D.canonical.y-Y.canonical.y||D.canonical.x-Y.canonical.x}function Ri(Y){return Y==="raster"||Y==="image"||Y==="video"}function Zi(){return new i.window.Worker(io.workerUrl)}var en="mapboxgl_preloaded_worker_pool",fn=function(){this.active={}};fn.prototype.acquire=function(D){if(!this.workers)for(this.workers=[];this.workers.length0?(K-ne)/we:0;return this.points[de].mult(1-Oe).add(this.points[J].mult(Oe))};var ki=function(D,J,O){var K=this.boxCells=[],de=this.circleCells=[];this.xCellCount=Math.ceil(D/O),this.yCellCount=Math.ceil(J/O);for(var ne=0;nethis.width||K<0||J>this.height)return de?!1:[];var we=[];if(D<=0&&J<=0&&this.width<=O&&this.height<=K){if(de)return!0;for(var Oe=0;Oe0:we}},ki.prototype._queryCircle=function(D,J,O,K,de){var ne=D-O,we=D+O,Oe=J-O,ht=J+O;if(we<0||ne>this.width||ht<0||Oe>this.height)return K?!1:[];var Yt=[],cr={hitTest:K,circle:{x:D,y:J,radius:O},seenUids:{box:{},circle:{}}};return this._forEachCell(ne,Oe,we,ht,this._queryCellCircle,Yt,cr,de),K?Yt.length>0:Yt},ki.prototype.query=function(D,J,O,K,de){return this._query(D,J,O,K,!1,de)},ki.prototype.hitTest=function(D,J,O,K,de){return this._query(D,J,O,K,!0,de)},ki.prototype.hitTestCircle=function(D,J,O,K){return this._queryCircle(D,J,O,!0,K)},ki.prototype._queryCell=function(D,J,O,K,de,ne,we,Oe){var ht=we.seenUids,Yt=this.boxCells[de];if(Yt!==null)for(var cr=this.bboxes,Nt=0,Ne=Yt;Nt=cr[st+0]&&K>=cr[st+1]&&(!Oe||Oe(this.boxKeys[$e]))){if(we.hitTest)return ne.push(!0),!0;ne.push({key:this.boxKeys[$e],x1:cr[st],y1:cr[st+1],x2:cr[st+2],y2:cr[st+3]})}}}var It=this.circleCells[de];if(It!==null)for(var Bt=this.circles,Ft=0,Ut=It;Ftwe*we+Oe*Oe},ki.prototype._circleAndRectCollide=function(D,J,O,K,de,ne,we){var Oe=(ne-K)/2,ht=Math.abs(D-(K+Oe));if(ht>Oe+O)return!1;var Yt=(we-de)/2,cr=Math.abs(J-(de+Yt));if(cr>Yt+O)return!1;if(ht<=Oe||cr<=Yt)return!0;var Nt=ht-Oe,Ne=cr-Yt;return Nt*Nt+Ne*Ne<=O*O};function _n(Y,D,J,O,K){var de=i.create();return D?(i.scale(de,de,[1/K,1/K,1]),J||i.rotateZ(de,de,O.angle)):i.multiply(de,O.labelPlaneMatrix,Y),de}function ya(Y,D,J,O,K){if(D){var de=i.clone(Y);return i.scale(de,de,[K,K,1]),J||i.rotateZ(de,de,-O.angle),de}else return O.glCoordMatrix}function ea(Y,D){var J=[Y.x,Y.y,0,1];zl(J,J,D);var O=J[3];return{point:new i.Point(J[0]/O,J[1]/O),signedDistanceFromCamera:O}}function Ma(Y,D){return .5+.5*(Y/D)}function _o(Y,D){var J=Y[0]/Y[3],O=Y[1]/Y[3],K=J>=-D[0]&&J<=D[0]&&O>=-D[1]&&O<=D[1];return K}function No(Y,D,J,O,K,de,ne,we){var Oe=O?Y.textSizeData:Y.iconSizeData,ht=i.evaluateSizeForZoom(Oe,J.transform.zoom),Yt=[256/J.width*2+1,256/J.height*2+1],cr=O?Y.text.dynamicLayoutVertexArray:Y.icon.dynamicLayoutVertexArray;cr.clear();for(var Nt=Y.lineVertexArray,Ne=O?Y.text.placedSymbolArray:Y.icon.placedSymbolArray,$e=J.transform.width/J.transform.height,st=!1,It=0;Itde)return{useVertical:!0}}return(Y===i.WritingMode.vertical?D.yJ.x)?{needsFlipping:!0}:null}function ko(Y,D,J,O,K,de,ne,we,Oe,ht,Yt,cr,Nt,Ne){var $e=D/24,st=Y.lineOffsetX*$e,It=Y.lineOffsetY*$e,Bt;if(Y.numGlyphs>1){var Ft=Y.glyphStartIndex+Y.numGlyphs,Ut=Y.lineStartIndex,zt=Y.lineStartIndex+Y.lineLength,_t=po($e,we,st,It,J,Yt,cr,Y,Oe,de,Nt);if(!_t)return{notEnoughRoom:!0};var Dt=ea(_t.first.point,ne).point,vt=ea(_t.last.point,ne).point;if(O&&!J){var lr=Lo(Y.writingMode,Dt,vt,Ne);if(lr)return lr}Bt=[_t.first];for(var _r=Y.glyphStartIndex+1;_r0?bi.point:Ds(cr,ci,Br,1,K),tn=Lo(Y.writingMode,Br,gn,Ne);if(tn)return tn}var Ei=Fs($e*we.getoffsetX(Y.glyphStartIndex),st,It,J,Yt,cr,Y.segment,Y.lineStartIndex,Y.lineStartIndex+Y.lineLength,Oe,de,Nt);if(!Ei)return{notEnoughRoom:!0};Bt=[Ei]}for(var Oi=0,Gi=Bt;Oi0?1:-1,$e=0;O&&(Ne*=-1,$e=Math.PI),Ne<0&&($e+=Math.PI);for(var st=Ne>0?we+ne:we+ne+1,It=K,Bt=K,Ft=0,Ut=0,zt=Math.abs(Nt),_t=[];Ft+Ut<=zt;){if(st+=Ne,st=Oe)return null;if(Bt=It,_t.push(It),It=cr[st],It===void 0){var Dt=new i.Point(ht.getx(st),ht.gety(st)),vt=ea(Dt,Yt);if(vt.signedDistanceFromCamera>0)It=cr[st]=vt.point;else{var lr=st-Ne,_r=Ft===0?de:new i.Point(ht.getx(lr),ht.gety(lr));It=Ds(_r,Dt,Bt,zt-Ft+1,Yt)}}Ft+=Ut,Ut=Bt.dist(It)}var Br=(zt-Ft)/Ut,Di=It.sub(Bt),ci=Di.mult(Br)._add(Bt);ci._add(Di._unit()._perp()._mult(J*Ne));var bi=$e+Math.atan2(It.y-Bt.y,It.x-Bt.x);return _t.push(ci),{point:ci,angle:bi,path:_t}}var ll=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ul(Y,D){for(var J=0;J=1;on--)Gi.push(Ei.path[on]);for(var zn=1;zn0){for(var so=Gi[0].clone(),Yo=Gi[0].clone(),ms=1;ms=bi.x&&Yo.x<=gn.x&&so.y>=bi.y&&Yo.y<=gn.y?ts=[Gi]:Yo.xgn.x||Yo.ygn.y?ts=[]:ts=i.clipLine([Gi],bi.x,bi.y,gn.x,gn.y)}for(var ou=0,Cv=ts;ou=this.screenRightBoundary||Kthis.screenBottomBoundary},il.prototype.isInsideGrid=function(D,J,O,K){return O>=0&&D=0&&J0){var zt;return this.prevPlacement&&this.prevPlacement.variableOffsets[Nt.crossTileID]&&this.prevPlacement.placements[Nt.crossTileID]&&this.prevPlacement.placements[Nt.crossTileID].text&&(zt=this.prevPlacement.variableOffsets[Nt.crossTileID].anchor),this.variableOffsets[Nt.crossTileID]={textOffset:It,width:O,height:K,anchor:D,textBoxScale:de,prevAnchor:zt},this.markUsedJustification(Ne,D,Nt,$e),Ne.allowVerticalPlacement&&(this.markUsedOrientation(Ne,$e,Nt),this.placedOrientations[Nt.crossTileID]=$e),{shift:Bt,placedGlyphBoxes:Ft}}},bs.prototype.placeLayerBucketPart=function(D,J,O){var K=this,de=D.parameters,ne=de.bucket,we=de.layout,Oe=de.posMatrix,ht=de.textLabelPlaneMatrix,Yt=de.labelToScreenMatrix,cr=de.textPixelRatio,Nt=de.holdingForFade,Ne=de.collisionBoxArray,$e=de.partiallyEvaluatedTextSize,st=de.collisionGroup,It=we.get("text-optional"),Bt=we.get("icon-optional"),Ft=we.get("text-allow-overlap"),Ut=we.get("icon-allow-overlap"),zt=we.get("text-rotation-alignment")==="map",_t=we.get("text-pitch-alignment")==="map",Dt=we.get("icon-text-fit")!=="none",vt=we.get("symbol-z-order")==="viewport-y",lr=Ft&&(Ut||!ne.hasIconData()||Bt),_r=Ut&&(Ft||!ne.hasTextData()||It);!ne.collisionArrays&&Ne&&ne.deserializeCollisionBoxes(Ne);var Br=function(Ei,Oi){if(!J[Ei.crossTileID]){if(Nt){K.placements[Ei.crossTileID]=new zs(!1,!1,!1);return}var Gi=!1,on=!1,zn=!0,Ja=null,co={box:null,offscreen:null},ts={box:null,offscreen:null},so=null,Yo=null,ms=null,ou=0,Cv=0,Lv=0;Oi.textFeatureIndex?ou=Oi.textFeatureIndex:Ei.useRuntimeCollisionCircles&&(ou=Ei.featureIndex),Oi.verticalTextFeatureIndex&&(Cv=Oi.verticalTextFeatureIndex);var wd=Oi.textBox;if(wd){var Kv=function(vc){var tu=i.WritingMode.horizontal;if(ne.allowVerticalPlacement&&!vc&&K.prevPlacement){var Sd=K.prevPlacement.placedOrientations[Ei.crossTileID];Sd&&(K.placedOrientations[Ei.crossTileID]=Sd,tu=Sd,K.markUsedOrientation(ne,tu,Ei))}return tu},hg=function(vc,tu){if(ne.allowVerticalPlacement&&Ei.numVerticalGlyphVertices>0&&Oi.verticalTextBox)for(var Sd=0,py=ne.writingModes;Sd0&&(Vd=Vd.filter(function(vc){return vc!==Ad.anchor}),Vd.unshift(Ad.anchor))}var Pv=function(vc,tu,Sd){for(var py=vc.x2-vc.x1,L1=vc.y2-vc.y1,wu=Ei.textBoxScale,Kx=Dt&&!Ut?tu:null,lm={box:[],offscreen:!1},Bw=Ft?Vd.length*2:Vd.length,Rv=0;Rv=Vd.length,Jx=K.attemptAnchorPlacement(um,vc,py,L1,wu,zt,_t,cr,Oe,st,Nw,Ei,ne,Sd,Kx);if(Jx&&(lm=Jx.placedGlyphBoxes,lm&&lm.box&&lm.box.length)){Gi=!0,Ja=Jx.shift;break}}return lm},Jv=function(){return Pv(wd,Oi.iconBox,i.WritingMode.horizontal)},Iv=function(){var vc=Oi.verticalTextBox,tu=co&&co.box&&co.box.length;return ne.allowVerticalPlacement&&!tu&&Ei.numVerticalGlyphVertices>0&&vc?Pv(vc,Oi.verticalIconBox,i.WritingMode.vertical):{box:null,offscreen:null}};hg(Jv,Iv),co&&(Gi=co.box,zn=co.offscreen);var hy=Kv(co&&co.box);if(!Gi&&K.prevPlacement){var dg=K.prevPlacement.variableOffsets[Ei.crossTileID];dg&&(K.variableOffsets[Ei.crossTileID]=dg,K.markUsedJustification(ne,dg.anchor,Ei,hy))}}else{var gp=function(vc,tu){var Sd=K.collisionIndex.placeCollisionBox(vc,Ft,cr,Oe,st.predicate);return Sd&&Sd.box&&Sd.box.length&&(K.markUsedOrientation(ne,tu,Ei),K.placedOrientations[Ei.crossTileID]=tu),Sd},Td=function(){return gp(wd,i.WritingMode.horizontal)},mp=function(){var vc=Oi.verticalTextBox;return ne.allowVerticalPlacement&&Ei.numVerticalGlyphVertices>0&&vc?gp(vc,i.WritingMode.vertical):{box:null,offscreen:null}};hg(Td,mp),Kv(co&&co.box&&co.box.length)}}if(so=co,Gi=so&&so.box&&so.box.length>0,zn=so&&so.offscreen,Ei.useRuntimeCollisionCircles){var oh=ne.text.placedSymbolArray.get(Ei.centerJustifiedTextSymbolIndex),vg=i.evaluateSizeForFeature(ne.textSizeData,$e,oh),dy=we.get("text-padding"),Zh=Ei.collisionCircleDiameter;Yo=K.collisionIndex.placeCollisionCircles(Ft,oh,ne.lineVertexArray,ne.glyphOffsetArray,vg,Oe,ht,Yt,O,_t,st.predicate,Zh,dy),Gi=Ft||Yo.circles.length>0&&!Yo.collisionDetected,zn=zn&&Yo.offscreen}if(Oi.iconFeatureIndex&&(Lv=Oi.iconFeatureIndex),Oi.iconBox){var am=function(vc){var tu=Dt&&Ja?nc(vc,Ja.x,Ja.y,zt,_t,K.transform.angle):vc;return K.collisionIndex.placeCollisionBox(tu,Ut,cr,Oe,st.predicate)};ts&&ts.box&&ts.box.length&&Oi.verticalIconBox?(ms=am(Oi.verticalIconBox),on=ms.box.length>0):(ms=am(Oi.iconBox),on=ms.box.length>0),zn=zn&&ms.offscreen}var k1=It||Ei.numHorizontalGlyphVertices===0&&Ei.numVerticalGlyphVertices===0,C1=Bt||Ei.numIconVertices===0;if(!k1&&!C1?on=Gi=on&&Gi:C1?k1||(on=on&&Gi):Gi=on&&Gi,Gi&&so&&so.box&&(ts&&ts.box&&Cv?K.collisionIndex.insertCollisionBox(so.box,we.get("text-ignore-placement"),ne.bucketInstanceId,Cv,st.ID):K.collisionIndex.insertCollisionBox(so.box,we.get("text-ignore-placement"),ne.bucketInstanceId,ou,st.ID)),on&&ms&&K.collisionIndex.insertCollisionBox(ms.box,we.get("icon-ignore-placement"),ne.bucketInstanceId,Lv,st.ID),Yo&&(Gi&&K.collisionIndex.insertCollisionCircles(Yo.circles,we.get("text-ignore-placement"),ne.bucketInstanceId,ou,st.ID),O)){var vy=ne.bucketInstanceId,om=K.collisionCircleArrays[vy];om===void 0&&(om=K.collisionCircleArrays[vy]=new Io);for(var sm=0;sm=0;--ci){var bi=Di[ci];Br(ne.symbolInstances.get(bi),ne.collisionArrays[bi])}else for(var gn=D.symbolInstanceStart;gn=0&&(ne>=0&&Yt!==ne?D.text.placedSymbolArray.get(Yt).crossTileID=0:D.text.placedSymbolArray.get(Yt).crossTileID=O.crossTileID)}},bs.prototype.markUsedOrientation=function(D,J,O){for(var K=J===i.WritingMode.horizontal||J===i.WritingMode.horizontalOnly?J:0,de=J===i.WritingMode.vertical?J:0,ne=[O.leftJustifiedTextSymbolIndex,O.centerJustifiedTextSymbolIndex,O.rightJustifiedTextSymbolIndex],we=0,Oe=ne;we0||_t>0,Br=Ut.numIconVertices>0,Di=K.placedOrientations[Ut.crossTileID],ci=Di===i.WritingMode.vertical,bi=Di===i.WritingMode.horizontal||Di===i.WritingMode.horizontalOnly;if(_r){var gn=ac(lr.text),tn=ci?oa:gn;$e(D.text,zt,tn);var Ei=bi?oa:gn;$e(D.text,_t,Ei);var Oi=lr.text.isHidden();[Ut.rightJustifiedTextSymbolIndex,Ut.centerJustifiedTextSymbolIndex,Ut.leftJustifiedTextSymbolIndex].forEach(function(Lv){Lv>=0&&(D.text.placedSymbolArray.get(Lv).hidden=Oi||ci?1:0)}),Ut.verticalPlacedTextSymbolIndex>=0&&(D.text.placedSymbolArray.get(Ut.verticalPlacedTextSymbolIndex).hidden=Oi||bi?1:0);var Gi=K.variableOffsets[Ut.crossTileID];Gi&&K.markUsedJustification(D,Gi.anchor,Ut,Di);var on=K.placedOrientations[Ut.crossTileID];on&&(K.markUsedJustification(D,"left",Ut,on),K.markUsedOrientation(D,on,Ut))}if(Br){var zn=ac(lr.icon),Ja=!(Nt&&Ut.verticalPlacedIconSymbolIndex&&ci);if(Ut.placedIconSymbolIndex>=0){var co=Ja?zn:oa;$e(D.icon,Ut.numIconVertices,co),D.icon.placedSymbolArray.get(Ut.placedIconSymbolIndex).hidden=lr.icon.isHidden()}if(Ut.verticalPlacedIconSymbolIndex>=0){var ts=Ja?oa:zn;$e(D.icon,Ut.numVerticalIconVertices,ts),D.icon.placedSymbolArray.get(Ut.verticalPlacedIconSymbolIndex).hidden=lr.icon.isHidden()}}if(D.hasIconCollisionBoxData()||D.hasTextCollisionBoxData()){var so=D.collisionArrays[Ft];if(so){var Yo=new i.Point(0,0);if(so.textBox||so.verticalTextBox){var ms=!0;if(ht){var ou=K.variableOffsets[Dt];ou?(Yo=Su(ou.anchor,ou.width,ou.height,ou.textOffset,ou.textBoxScale),Yt&&Yo._rotate(cr?K.transform.angle:-K.transform.angle)):ms=!1}so.textBox&&Rn(D.textCollisionBox.collisionVertexArray,lr.text.placed,!ms||ci,Yo.x,Yo.y),so.verticalTextBox&&Rn(D.textCollisionBox.collisionVertexArray,lr.text.placed,!ms||bi,Yo.x,Yo.y)}var Cv=!!(!bi&&so.verticalIconBox);so.iconBox&&Rn(D.iconCollisionBox.collisionVertexArray,lr.icon.placed,Cv,Nt?Yo.x:0,Nt?Yo.y:0),so.verticalIconBox&&Rn(D.iconCollisionBox.collisionVertexArray,lr.icon.placed,!Cv,Nt?Yo.x:0,Nt?Yo.y:0)}}},It=0;ItD},bs.prototype.setStale=function(){this.stale=!0};function Rn(Y,D,J,O,K){Y.emplaceBack(D?1:0,J?1:0,O||0,K||0),Y.emplaceBack(D?1:0,J?1:0,O||0,K||0),Y.emplaceBack(D?1:0,J?1:0,O||0,K||0),Y.emplaceBack(D?1:0,J?1:0,O||0,K||0)}var _a=Math.pow(2,25),Vu=Math.pow(2,24),ql=Math.pow(2,17),xo=Math.pow(2,16),Kl=Math.pow(2,9),Ns=Math.pow(2,8),Hl=Math.pow(2,1);function ac(Y){if(Y.opacity===0&&!Y.placed)return 0;if(Y.opacity===1&&Y.placed)return 4294967295;var D=Y.placed?1:0,J=Math.floor(Y.opacity*127);return J*_a+D*Vu+J*ql+D*xo+J*Kl+D*Ns+J*Hl+D}var oa=0,qo=function(D){this._sortAcrossTiles=D.layout.get("symbol-z-order")!=="viewport-y"&&D.layout.get("symbol-sort-key").constantOr(1)!==void 0,this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};qo.prototype.continuePlacement=function(D,J,O,K,de){for(var ne=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var we=D[this._currentPlacementIndex],Oe=J[we],ht=this.placement.collisionIndex.transform.zoom;if(Oe.type==="symbol"&&(!Oe.minzoom||Oe.minzoom<=ht)&&(!Oe.maxzoom||Oe.maxzoom>ht)){this._inProgressLayer||(this._inProgressLayer=new qo(Oe));var Yt=this._inProgressLayer.continuePlacement(O[Oe.source],this.placement,this._showCollisionBoxes,Oe,ne);if(Yt)return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},Oo.prototype.commit=function(D){return this.placement.commit(D),this.placement};var Ol=512/i.EXTENT/2,Pc=function(D,J,O){this.tileID=D,this.indexedSymbolInstances={},this.bucketInstanceId=O;for(var K=0;KD.overscaledZ)for(var ht in Oe){var Yt=Oe[ht];Yt.tileID.isChildOf(D)&&Yt.findMatches(J.symbolInstances,D,ne)}else{var cr=D.scaledTo(Number(we)),Nt=Oe[cr.key];Nt&&Nt.findMatches(J.symbolInstances,D,ne)}}for(var Ne=0;Ne0)throw new Error("Unimplemented: "+ne.map(function(we){return we.command}).join(", ")+".");return de.forEach(function(we){we.command!=="setTransition"&&K[we.command].apply(K,we.args)}),this.stylesheet=O,!0},D.prototype.addImage=function(O,K){if(this.getImage(O))return this.fire(new i.ErrorEvent(new Error("An image with this name already exists.")));this.imageManager.addImage(O,K),this._afterImageUpdated(O)},D.prototype.updateImage=function(O,K){this.imageManager.updateImage(O,K)},D.prototype.getImage=function(O){return this.imageManager.getImage(O)},D.prototype.removeImage=function(O){if(!this.getImage(O))return this.fire(new i.ErrorEvent(new Error("No image with this name exists.")));this.imageManager.removeImage(O),this._afterImageUpdated(O)},D.prototype._afterImageUpdated=function(O){this._availableImages=this.imageManager.listImages(),this._changedImages[O]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new i.Event("data",{dataType:"style"}))},D.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},D.prototype.addSource=function(O,K,de){var ne=this;if(de===void 0&&(de={}),this._checkLoaded(),this.sourceCaches[O]!==void 0)throw new Error("There is already a source with this ID");if(!K.type)throw new Error("The type property must be defined, but only the following properties were given: "+Object.keys(K).join(", ")+".");var we=["vector","raster","geojson","video","image"],Oe=we.indexOf(K.type)>=0;if(!(Oe&&this._validate(i.validateStyle.source,"sources."+O,K,null,de))){this.map&&this.map._collectResourceTiming&&(K.collectResourceTiming=!0);var ht=this.sourceCaches[O]=new ti(O,K,this.dispatcher);ht.style=this,ht.setEventedParent(this,function(){return{isSourceLoaded:ne.loaded(),source:ht.serialize(),sourceId:O}}),ht.onAdd(this.map),this._changed=!0}},D.prototype.removeSource=function(O){if(this._checkLoaded(),this.sourceCaches[O]===void 0)throw new Error("There is no source with this ID");for(var K in this._layers)if(this._layers[K].source===O)return this.fire(new i.ErrorEvent(new Error('Source "'+O+'" cannot be removed while layer "'+K+'" is using it.')));var de=this.sourceCaches[O];delete this.sourceCaches[O],delete this._updatedSources[O],de.fire(new i.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:O})),de.setEventedParent(null),de.clearTiles(),de.onRemove&&de.onRemove(this.map),this._changed=!0},D.prototype.setGeoJSONSourceData=function(O,K){this._checkLoaded();var de=this.sourceCaches[O].getSource();de.setData(K),this._changed=!0},D.prototype.getSource=function(O){return this.sourceCaches[O]&&this.sourceCaches[O].getSource()},D.prototype.addLayer=function(O,K,de){de===void 0&&(de={}),this._checkLoaded();var ne=O.id;if(this.getLayer(ne)){this.fire(new i.ErrorEvent(new Error('Layer with id "'+ne+'" already exists on this map')));return}var we;if(O.type==="custom"){if(pl(this,i.validateCustomStyleLayer(O)))return;we=i.createStyleLayer(O)}else{if(typeof O.source=="object"&&(this.addSource(ne,O.source),O=i.clone$1(O),O=i.extend(O,{source:ne})),this._validate(i.validateStyle.layer,"layers."+ne,O,{arrayIndex:-1},de))return;we=i.createStyleLayer(O),this._validateLayer(we),we.setEventedParent(this,{layer:{id:ne}}),this._serializedLayers[we.id]=we.serialize()}var Oe=K?this._order.indexOf(K):this._order.length;if(K&&Oe===-1){this.fire(new i.ErrorEvent(new Error('Layer with id "'+K+'" does not exist on this map.')));return}if(this._order.splice(Oe,0,ne),this._layerOrderChanged=!0,this._layers[ne]=we,this._removedLayers[ne]&&we.source&&we.type!=="custom"){var ht=this._removedLayers[ne];delete this._removedLayers[ne],ht.type!==we.type?this._updatedSources[we.source]="clear":(this._updatedSources[we.source]="reload",this.sourceCaches[we.source].pause())}this._updateLayer(we),we.onAdd&&we.onAdd(this.map)},D.prototype.moveLayer=function(O,K){this._checkLoaded(),this._changed=!0;var de=this._layers[O];if(!de){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be moved.")));return}if(O!==K){var ne=this._order.indexOf(O);this._order.splice(ne,1);var we=K?this._order.indexOf(K):this._order.length;if(K&&we===-1){this.fire(new i.ErrorEvent(new Error('Layer with id "'+K+'" does not exist on this map.')));return}this._order.splice(we,0,O),this._layerOrderChanged=!0}},D.prototype.removeLayer=function(O){this._checkLoaded();var K=this._layers[O];if(!K){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be removed.")));return}K.setEventedParent(null);var de=this._order.indexOf(O);this._order.splice(de,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[O]=K,delete this._layers[O],delete this._serializedLayers[O],delete this._updatedLayers[O],delete this._updatedPaintProps[O],K.onRemove&&K.onRemove(this.map)},D.prototype.getLayer=function(O){return this._layers[O]},D.prototype.hasLayer=function(O){return O in this._layers},D.prototype.setLayerZoomRange=function(O,K,de){this._checkLoaded();var ne=this.getLayer(O);if(!ne){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot have zoom extent.")));return}ne.minzoom===K&&ne.maxzoom===de||(K!=null&&(ne.minzoom=K),de!=null&&(ne.maxzoom=de),this._updateLayer(ne))},D.prototype.setFilter=function(O,K,de){de===void 0&&(de={}),this._checkLoaded();var ne=this.getLayer(O);if(!ne){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be filtered.")));return}if(!i.deepEqual(ne.filter,K)){if(K==null){ne.filter=void 0,this._updateLayer(ne);return}this._validate(i.validateStyle.filter,"layers."+ne.id+".filter",K,null,de)||(ne.filter=i.clone$1(K),this._updateLayer(ne))}},D.prototype.getFilter=function(O){return i.clone$1(this.getLayer(O).filter)},D.prototype.setLayoutProperty=function(O,K,de,ne){ne===void 0&&(ne={}),this._checkLoaded();var we=this.getLayer(O);if(!we){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be styled.")));return}i.deepEqual(we.getLayoutProperty(K),de)||(we.setLayoutProperty(K,de,ne),this._updateLayer(we))},D.prototype.getLayoutProperty=function(O,K){var de=this.getLayer(O);if(!de){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style.")));return}return de.getLayoutProperty(K)},D.prototype.setPaintProperty=function(O,K,de,ne){ne===void 0&&(ne={}),this._checkLoaded();var we=this.getLayer(O);if(!we){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be styled.")));return}if(!i.deepEqual(we.getPaintProperty(K),de)){var Oe=we.setPaintProperty(K,de,ne);Oe&&this._updateLayer(we),this._changed=!0,this._updatedPaintProps[O]=!0}},D.prototype.getPaintProperty=function(O,K){return this.getLayer(O).getPaintProperty(K)},D.prototype.setFeatureState=function(O,K){this._checkLoaded();var de=O.source,ne=O.sourceLayer,we=this.sourceCaches[de];if(we===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+de+"' does not exist in the map's style.")));return}var Oe=we.getSource().type;if(Oe==="geojson"&&ne){this.fire(new i.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter.")));return}if(Oe==="vector"&&!ne){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}O.id===void 0&&this.fire(new i.ErrorEvent(new Error("The feature id parameter must be provided."))),we.setFeatureState(ne,O.id,K)},D.prototype.removeFeatureState=function(O,K){this._checkLoaded();var de=O.source,ne=this.sourceCaches[de];if(ne===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+de+"' does not exist in the map's style.")));return}var we=ne.getSource().type,Oe=we==="vector"?O.sourceLayer:void 0;if(we==="vector"&&!Oe){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}if(K&&typeof O.id!="string"&&typeof O.id!="number"){this.fire(new i.ErrorEvent(new Error("A feature id is required to remove its specific state property.")));return}ne.removeFeatureState(Oe,O.id,K)},D.prototype.getFeatureState=function(O){this._checkLoaded();var K=O.source,de=O.sourceLayer,ne=this.sourceCaches[K];if(ne===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+K+"' does not exist in the map's style.")));return}var we=ne.getSource().type;if(we==="vector"&&!de){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}return O.id===void 0&&this.fire(new i.ErrorEvent(new Error("The feature id parameter must be provided."))),ne.getFeatureState(de,O.id)},D.prototype.getTransition=function(){return i.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},D.prototype.serialize=function(){return i.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:i.mapObject(this.sourceCaches,function(O){return O.serialize()}),layers:this._serializeLayers(this._order)},function(O){return O!==void 0})},D.prototype._updateLayer=function(O){this._updatedLayers[O.id]=!0,O.source&&!this._updatedSources[O.source]&&this.sourceCaches[O.source].getSource().type!=="raster"&&(this._updatedSources[O.source]="reload",this.sourceCaches[O.source].pause()),this._changed=!0},D.prototype._flattenAndSortRenderedFeatures=function(O){for(var K=this,de=function(bi){return K._layers[bi].type==="fill-extrusion"},ne={},we=[],Oe=this._order.length-1;Oe>=0;Oe--){var ht=this._order[Oe];if(de(ht)){ne[ht]=Oe;for(var Yt=0,cr=O;Yt=0;Ft--){var Ut=this._order[Ft];if(de(Ut))for(var zt=we.length-1;zt>=0;zt--){var _t=we[zt].feature;if(ne[_t.layer.id] 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`,Bl=`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Ah=`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0 +? a_pos +: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`,Qf=`#ifdef GL_ES +precision highp float; +#endif +uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,_f="uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}",Yc=`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent; +#define PI 3.141592653589793 +void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,eh="uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}",th=`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,ju=` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}`,jf=`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,cc=` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}`,sf=`uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Nl=` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`,Kc=`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Rc=` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`,gs=`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Wf="uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}",Wh=`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,rh=`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}`,lf=`#define SDF_PX 8.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Sh=`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`,Mu=`#define SDF_PX 8.0 +#define SDF 1.0 +#define ICON 0.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,ih=`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`,js=Us(Cf,sc),Eu=Us(jh,Lf),Dc=Us(cs,af),ks=Us(Gf,$l),bc=Us(fl,lc),hu=Us(Fu,Es),_u=Us(Hs,Go),nl=Us(ps,uc),nh=Us(xl,Gu),Mh=Us(Os,od),zu=Us(Po,sd),Fc=Us(Ko,Pa),wc=Us(of,Hu),bd=Us(bl,Hf),xf=Us(Ic,yf),Pf=Us(Bl,Ah),qu=Us(Qf,_f),bf=Us(Yc,eh),jl=Us(th,ju),uf=Us(jf,cc),Xh=Us(sf,Nl),If=Us(Kc,Rc),Cs=Us(gs,Wf),du=Us(Wh,rh),ku=Us(lf,Sh),Xf=Us(Mu,ih);function Us(Y,D){var J=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,O=D.match(/attribute ([\w]+) ([\w]+)/g),K=Y.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),de=D.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),ne=de?de.concat(K):K,we={};return Y=Y.replace(J,function(Oe,ht,Yt,cr,Nt){return we[Nt]=!0,ht==="define"?` +#ifndef HAS_UNIFORM_u_`+Nt+` +varying `+Yt+" "+cr+" "+Nt+`; +#else +uniform `+Yt+" "+cr+" u_"+Nt+`; +#endif +`:` +#ifdef HAS_UNIFORM_u_`+Nt+` + `+Yt+" "+cr+" "+Nt+" = u_"+Nt+`; +#endif +`}),D=D.replace(J,function(Oe,ht,Yt,cr,Nt){var Ne=cr==="float"?"vec2":"vec4",$e=Nt.match(/color/)?"color":Ne;return we[Nt]?ht==="define"?` +#ifndef HAS_UNIFORM_u_`+Nt+` +uniform lowp float u_`+Nt+`_t; +attribute `+Yt+" "+Ne+" a_"+Nt+`; +varying `+Yt+" "+cr+" "+Nt+`; +#else +uniform `+Yt+" "+cr+" u_"+Nt+`; +#endif +`:$e==="vec4"?` +#ifndef HAS_UNIFORM_u_`+Nt+` + `+Nt+" = a_"+Nt+`; +#else + `+Yt+" "+cr+" "+Nt+" = u_"+Nt+`; +#endif +`:` +#ifndef HAS_UNIFORM_u_`+Nt+` + `+Nt+" = unpack_mix_"+$e+"(a_"+Nt+", u_"+Nt+`_t); +#else + `+Yt+" "+cr+" "+Nt+" = u_"+Nt+`; +#endif +`:ht==="define"?` +#ifndef HAS_UNIFORM_u_`+Nt+` +uniform lowp float u_`+Nt+`_t; +attribute `+Yt+" "+Ne+" a_"+Nt+`; +#else +uniform `+Yt+" "+cr+" u_"+Nt+`; +#endif +`:$e==="vec4"?` +#ifndef HAS_UNIFORM_u_`+Nt+` + `+Yt+" "+cr+" "+Nt+" = a_"+Nt+`; +#else + `+Yt+" "+cr+" "+Nt+" = u_"+Nt+`; +#endif +`:` +#ifndef HAS_UNIFORM_u_`+Nt+` + `+Yt+" "+cr+" "+Nt+" = unpack_mix_"+$e+"(a_"+Nt+", u_"+Nt+`_t); +#else + `+Yt+" "+cr+" "+Nt+" = u_"+Nt+`; +#endif +`}),{fragmentSource:Y,vertexSource:D,staticAttributes:O,staticUniforms:ne}}var wf=Object.freeze({__proto__:null,prelude:js,background:Eu,backgroundPattern:Dc,circle:ks,clippingMask:bc,heatmap:hu,heatmapTexture:_u,collisionBox:nl,collisionCircle:nh,debug:Mh,fill:zu,fillOutline:Fc,fillOutlinePattern:wc,fillPattern:bd,fillExtrusion:xf,fillExtrusionPattern:Pf,hillshadePrepare:qu,hillshade:bf,line:jl,lineGradient:uf,linePattern:Xh,lineSDF:If,raster:Cs,symbolIcon:du,symbolSDF:ku,symbolTextAndIcon:Xf}),zc=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};zc.prototype.bind=function(D,J,O,K,de,ne,we,Oe){this.context=D;for(var ht=this.boundPaintVertexBuffers.length!==K.length,Yt=0;!ht&&Yt>16,we>>16],u_pixel_coord_lower:[ne&65535,we&65535]}}function cf(Y,D,J,O){var K=J.imageManager.getPattern(Y.from.toString()),de=J.imageManager.getPattern(Y.to.toString()),ne=J.imageManager.getPixelSize(),we=ne.width,Oe=ne.height,ht=Math.pow(2,O.tileID.overscaledZ),Yt=O.tileSize*Math.pow(2,J.transform.tileZoom)/ht,cr=Yt*(O.tileID.canonical.x+O.tileID.wrap*ht),Nt=Yt*O.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:K.tl,u_pattern_br_a:K.br,u_pattern_tl_b:de.tl,u_pattern_br_b:de.br,u_texsize:[we,Oe],u_mix:D.t,u_pattern_size_a:K.displaySize,u_pattern_size_b:de.displaySize,u_scale_a:D.fromScale,u_scale_b:D.toScale,u_tile_units_to_pixels:1/As(O,1,J.transform.tileZoom),u_pixel_coord_upper:[cr>>16,Nt>>16],u_pixel_coord_lower:[cr&65535,Nt&65535]}}var Zf=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_lightpos:new i.Uniform3f(Y,D.u_lightpos),u_lightintensity:new i.Uniform1f(Y,D.u_lightintensity),u_lightcolor:new i.Uniform3f(Y,D.u_lightcolor),u_vertical_gradient:new i.Uniform1f(Y,D.u_vertical_gradient),u_opacity:new i.Uniform1f(Y,D.u_opacity)}},Wl=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_lightpos:new i.Uniform3f(Y,D.u_lightpos),u_lightintensity:new i.Uniform1f(Y,D.u_lightintensity),u_lightcolor:new i.Uniform3f(Y,D.u_lightcolor),u_vertical_gradient:new i.Uniform1f(Y,D.u_vertical_gradient),u_height_factor:new i.Uniform1f(Y,D.u_height_factor),u_image:new i.Uniform1i(Y,D.u_image),u_texsize:new i.Uniform2f(Y,D.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,D.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,D.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,D.u_scale),u_fade:new i.Uniform1f(Y,D.u_fade),u_opacity:new i.Uniform1f(Y,D.u_opacity)}},ah=function(Y,D,J,O){var K=D.style.light,de=K.properties.get("position"),ne=[de.x,de.y,de.z],we=i.create$1();K.properties.get("anchor")==="viewport"&&i.fromRotation(we,-D.transform.angle),i.transformMat3(ne,ne,we);var Oe=K.properties.get("color");return{u_matrix:Y,u_lightpos:ne,u_lightintensity:K.properties.get("intensity"),u_lightcolor:[Oe.r,Oe.g,Oe.b],u_vertical_gradient:+J,u_opacity:O}},Zu=function(Y,D,J,O,K,de,ne){return i.extend(ah(Y,D,J,O),Xu(de,D,ne),{u_height_factor:-Math.pow(2,K.overscaledZ)/ne.tileSize/8})},qc=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix)}},Tc=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_image:new i.Uniform1i(Y,D.u_image),u_texsize:new i.Uniform2f(Y,D.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,D.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,D.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,D.u_scale),u_fade:new i.Uniform1f(Y,D.u_fade)}},wl=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_world:new i.Uniform2f(Y,D.u_world)}},vu=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_world:new i.Uniform2f(Y,D.u_world),u_image:new i.Uniform1i(Y,D.u_image),u_texsize:new i.Uniform2f(Y,D.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,D.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,D.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,D.u_scale),u_fade:new i.Uniform1f(Y,D.u_fade)}},Oc=function(Y){return{u_matrix:Y}},ff=function(Y,D,J,O){return i.extend(Oc(Y),Xu(J,D,O))},fc=function(Y,D){return{u_matrix:Y,u_world:D}},Bc=function(Y,D,J,O,K){return i.extend(ff(Y,D,J,O),{u_world:K})},kt=function(Y,D){return{u_camera_to_center_distance:new i.Uniform1f(Y,D.u_camera_to_center_distance),u_scale_with_map:new i.Uniform1i(Y,D.u_scale_with_map),u_pitch_with_map:new i.Uniform1i(Y,D.u_pitch_with_map),u_extrude_scale:new i.Uniform2f(Y,D.u_extrude_scale),u_device_pixel_ratio:new i.Uniform1f(Y,D.u_device_pixel_ratio),u_matrix:new i.UniformMatrix4f(Y,D.u_matrix)}},Zt=function(Y,D,J,O){var K=Y.transform,de,ne;if(O.paint.get("circle-pitch-alignment")==="map"){var we=As(J,1,K.zoom);de=!0,ne=[we,we]}else de=!1,ne=K.pixelsToGLUnits;return{u_camera_to_center_distance:K.cameraToCenterDistance,u_scale_with_map:+(O.paint.get("circle-pitch-scale")==="map"),u_matrix:Y.translatePosMatrix(D.posMatrix,J,O.paint.get("circle-translate"),O.paint.get("circle-translate-anchor")),u_pitch_with_map:+de,u_device_pixel_ratio:i.browser.devicePixelRatio,u_extrude_scale:ne}},Er=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_camera_to_center_distance:new i.Uniform1f(Y,D.u_camera_to_center_distance),u_pixels_to_tile_units:new i.Uniform1f(Y,D.u_pixels_to_tile_units),u_extrude_scale:new i.Uniform2f(Y,D.u_extrude_scale),u_overscale_factor:new i.Uniform1f(Y,D.u_overscale_factor)}},xr=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_inv_matrix:new i.UniformMatrix4f(Y,D.u_inv_matrix),u_camera_to_center_distance:new i.Uniform1f(Y,D.u_camera_to_center_distance),u_viewport_size:new i.Uniform2f(Y,D.u_viewport_size)}},Kr=function(Y,D,J){var O=As(J,1,D.zoom),K=Math.pow(2,D.zoom-J.tileID.overscaledZ),de=J.tileID.overscaleFactor();return{u_matrix:Y,u_camera_to_center_distance:D.cameraToCenterDistance,u_pixels_to_tile_units:O,u_extrude_scale:[D.pixelsToGLUnits[0]/(O*K),D.pixelsToGLUnits[1]/(O*K)],u_overscale_factor:de}},Mi=function(Y,D,J){return{u_matrix:Y,u_inv_matrix:D,u_camera_to_center_distance:J.cameraToCenterDistance,u_viewport_size:[J.width,J.height]}},Wi=function(Y,D){return{u_color:new i.UniformColor(Y,D.u_color),u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_overlay:new i.Uniform1i(Y,D.u_overlay),u_overlay_scale:new i.Uniform1f(Y,D.u_overlay_scale)}},dn=function(Y,D,J){return J===void 0&&(J=1),{u_matrix:Y,u_color:D,u_overlay:0,u_overlay_scale:J}},wn=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix)}},On=function(Y){return{u_matrix:Y}},Yi=function(Y,D){return{u_extrude_scale:new i.Uniform1f(Y,D.u_extrude_scale),u_intensity:new i.Uniform1f(Y,D.u_intensity),u_matrix:new i.UniformMatrix4f(Y,D.u_matrix)}},$i=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_world:new i.Uniform2f(Y,D.u_world),u_image:new i.Uniform1i(Y,D.u_image),u_color_ramp:new i.Uniform1i(Y,D.u_color_ramp),u_opacity:new i.Uniform1f(Y,D.u_opacity)}},an=function(Y,D,J,O){return{u_matrix:Y,u_extrude_scale:As(D,1,J),u_intensity:O}},Fi=function(Y,D,J,O){var K=i.create();i.ortho(K,0,Y.width,Y.height,0,0,1);var de=Y.context.gl;return{u_matrix:K,u_world:[de.drawingBufferWidth,de.drawingBufferHeight],u_image:J,u_color_ramp:O,u_opacity:D.paint.get("heatmap-opacity")}},ta=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_image:new i.Uniform1i(Y,D.u_image),u_latrange:new i.Uniform2f(Y,D.u_latrange),u_light:new i.Uniform2f(Y,D.u_light),u_shadow:new i.UniformColor(Y,D.u_shadow),u_highlight:new i.UniformColor(Y,D.u_highlight),u_accent:new i.UniformColor(Y,D.u_accent)}},Ca=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_image:new i.Uniform1i(Y,D.u_image),u_dimension:new i.Uniform2f(Y,D.u_dimension),u_zoom:new i.Uniform1f(Y,D.u_zoom),u_unpack:new i.Uniform4f(Y,D.u_unpack)}},Ra=function(Y,D,J){var O=J.paint.get("hillshade-shadow-color"),K=J.paint.get("hillshade-highlight-color"),de=J.paint.get("hillshade-accent-color"),ne=J.paint.get("hillshade-illumination-direction")*(Math.PI/180);J.paint.get("hillshade-illumination-anchor")==="viewport"&&(ne-=Y.transform.angle);var we=!Y.options.moving;return{u_matrix:Y.transform.calculatePosMatrix(D.tileID.toUnwrapped(),we),u_image:0,u_latrange:Ua(Y,D.tileID),u_light:[J.paint.get("hillshade-exaggeration"),ne],u_shadow:O,u_highlight:K,u_accent:de}},La=function(Y,D){var J=D.stride,O=i.create();return i.ortho(O,0,i.EXTENT,-i.EXTENT,0,0,1),i.translate(O,O,[0,-i.EXTENT,0]),{u_matrix:O,u_image:1,u_dimension:[J,J],u_zoom:Y.overscaledZ,u_unpack:D.getUnpackVector()}};function Ua(Y,D){var J=Math.pow(2,D.canonical.z),O=D.canonical.y;return[new i.MercatorCoordinate(0,O/J).toLngLat().lat,new i.MercatorCoordinate(0,(O+1)/J).toLngLat().lat]}var Zn=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_ratio:new i.Uniform1f(Y,D.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,D.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,D.u_units_to_pixels)}},Dn=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_ratio:new i.Uniform1f(Y,D.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,D.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,D.u_units_to_pixels),u_image:new i.Uniform1i(Y,D.u_image),u_image_height:new i.Uniform1f(Y,D.u_image_height)}},Ka=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_texsize:new i.Uniform2f(Y,D.u_texsize),u_ratio:new i.Uniform1f(Y,D.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,D.u_device_pixel_ratio),u_image:new i.Uniform1i(Y,D.u_image),u_units_to_pixels:new i.Uniform2f(Y,D.u_units_to_pixels),u_scale:new i.Uniform3f(Y,D.u_scale),u_fade:new i.Uniform1f(Y,D.u_fade)}},bo=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_ratio:new i.Uniform1f(Y,D.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,D.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,D.u_units_to_pixels),u_patternscale_a:new i.Uniform2f(Y,D.u_patternscale_a),u_patternscale_b:new i.Uniform2f(Y,D.u_patternscale_b),u_sdfgamma:new i.Uniform1f(Y,D.u_sdfgamma),u_image:new i.Uniform1i(Y,D.u_image),u_tex_y_a:new i.Uniform1f(Y,D.u_tex_y_a),u_tex_y_b:new i.Uniform1f(Y,D.u_tex_y_b),u_mix:new i.Uniform1f(Y,D.u_mix)}},Zo=function(Y,D,J){var O=Y.transform;return{u_matrix:ml(Y,D,J),u_ratio:1/As(D,1,O.zoom),u_device_pixel_ratio:i.browser.devicePixelRatio,u_units_to_pixels:[1/O.pixelsToGLUnits[0],1/O.pixelsToGLUnits[1]]}},Ss=function(Y,D,J,O){return i.extend(Zo(Y,D,J),{u_image:0,u_image_height:O})},as=function(Y,D,J,O){var K=Y.transform,de=Ho(D,K);return{u_matrix:ml(Y,D,J),u_texsize:D.imageAtlasTexture.size,u_ratio:1/As(D,1,K.zoom),u_device_pixel_ratio:i.browser.devicePixelRatio,u_image:0,u_scale:[de,O.fromScale,O.toScale],u_fade:O.t,u_units_to_pixels:[1/K.pixelsToGLUnits[0],1/K.pixelsToGLUnits[1]]}},ws=function(Y,D,J,O,K){var de=Y.transform,ne=Y.lineAtlas,we=Ho(D,de),Oe=J.layout.get("line-cap")==="round",ht=ne.getDash(O.from,Oe),Yt=ne.getDash(O.to,Oe),cr=ht.width*K.fromScale,Nt=Yt.width*K.toScale;return i.extend(Zo(Y,D,J),{u_patternscale_a:[we/cr,-ht.height/2],u_patternscale_b:[we/Nt,-Yt.height/2],u_sdfgamma:ne.width/(Math.min(cr,Nt)*256*i.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:ht.y,u_tex_y_b:Yt.y,u_mix:K.t})};function Ho(Y,D){return 1/As(Y,1,D.tileZoom)}function ml(Y,D,J){return Y.translatePosMatrix(D.tileID.posMatrix,D,J.paint.get("line-translate"),J.paint.get("line-translate-anchor"))}var Ws=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_tl_parent:new i.Uniform2f(Y,D.u_tl_parent),u_scale_parent:new i.Uniform1f(Y,D.u_scale_parent),u_buffer_scale:new i.Uniform1f(Y,D.u_buffer_scale),u_fade_t:new i.Uniform1f(Y,D.u_fade_t),u_opacity:new i.Uniform1f(Y,D.u_opacity),u_image0:new i.Uniform1i(Y,D.u_image0),u_image1:new i.Uniform1i(Y,D.u_image1),u_brightness_low:new i.Uniform1f(Y,D.u_brightness_low),u_brightness_high:new i.Uniform1f(Y,D.u_brightness_high),u_saturation_factor:new i.Uniform1f(Y,D.u_saturation_factor),u_contrast_factor:new i.Uniform1f(Y,D.u_contrast_factor),u_spin_weights:new i.Uniform3f(Y,D.u_spin_weights)}},Ls=function(Y,D,J,O,K){return{u_matrix:Y,u_tl_parent:D,u_scale_parent:J,u_buffer_scale:1,u_fade_t:O.mix,u_opacity:O.opacity*K.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:K.paint.get("raster-brightness-min"),u_brightness_high:K.paint.get("raster-brightness-max"),u_saturation_factor:ys(K.paint.get("raster-saturation")),u_contrast_factor:no(K.paint.get("raster-contrast")),u_spin_weights:va(K.paint.get("raster-hue-rotate"))}};function va(Y){Y*=Math.PI/180;var D=Math.sin(Y),J=Math.cos(Y);return[(2*J+1)/3,(-Math.sqrt(3)*D-J+1)/3,(Math.sqrt(3)*D-J+1)/3]}function no(Y){return Y>0?1/(1-Y):1+Y}function ys(Y){return Y>0?1-1/(1.001-Y):-Y}var rs=function(Y,D){return{u_is_size_zoom_constant:new i.Uniform1i(Y,D.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,D.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,D.u_size_t),u_size:new i.Uniform1f(Y,D.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,D.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,D.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,D.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,D.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,D.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,D.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,D.u_coord_matrix),u_is_text:new i.Uniform1i(Y,D.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,D.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,D.u_texsize),u_texture:new i.Uniform1i(Y,D.u_texture)}},Ql=function(Y,D){return{u_is_size_zoom_constant:new i.Uniform1i(Y,D.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,D.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,D.u_size_t),u_size:new i.Uniform1f(Y,D.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,D.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,D.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,D.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,D.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,D.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,D.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,D.u_coord_matrix),u_is_text:new i.Uniform1i(Y,D.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,D.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,D.u_texsize),u_texture:new i.Uniform1i(Y,D.u_texture),u_gamma_scale:new i.Uniform1f(Y,D.u_gamma_scale),u_device_pixel_ratio:new i.Uniform1f(Y,D.u_device_pixel_ratio),u_is_halo:new i.Uniform1i(Y,D.u_is_halo)}},Cu=function(Y,D){return{u_is_size_zoom_constant:new i.Uniform1i(Y,D.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,D.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,D.u_size_t),u_size:new i.Uniform1f(Y,D.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,D.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,D.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,D.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,D.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,D.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,D.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,D.u_coord_matrix),u_is_text:new i.Uniform1i(Y,D.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,D.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,D.u_texsize),u_texsize_icon:new i.Uniform2f(Y,D.u_texsize_icon),u_texture:new i.Uniform1i(Y,D.u_texture),u_texture_icon:new i.Uniform1i(Y,D.u_texture_icon),u_gamma_scale:new i.Uniform1f(Y,D.u_gamma_scale),u_device_pixel_ratio:new i.Uniform1f(Y,D.u_device_pixel_ratio),u_is_halo:new i.Uniform1i(Y,D.u_is_halo)}},Yu=function(Y,D,J,O,K,de,ne,we,Oe,ht){var Yt=K.transform;return{u_is_size_zoom_constant:+(Y==="constant"||Y==="source"),u_is_size_feature_constant:+(Y==="constant"||Y==="camera"),u_size_t:D?D.uSizeT:0,u_size:D?D.uSize:0,u_camera_to_center_distance:Yt.cameraToCenterDistance,u_pitch:Yt.pitch/360*2*Math.PI,u_rotate_symbol:+J,u_aspect_ratio:Yt.width/Yt.height,u_fade_change:K.options.fadeDuration?K.symbolFadeChange:1,u_matrix:de,u_label_plane_matrix:ne,u_coord_matrix:we,u_is_text:+Oe,u_pitch_with_map:+O,u_texsize:ht,u_texture:0}},Nc=function(Y,D,J,O,K,de,ne,we,Oe,ht,Yt){var cr=K.transform;return i.extend(Yu(Y,D,J,O,K,de,ne,we,Oe,ht),{u_gamma_scale:O?Math.cos(cr._pitch)*cr.cameraToCenterDistance:1,u_device_pixel_ratio:i.browser.devicePixelRatio,u_is_halo:+Yt})},pu=function(Y,D,J,O,K,de,ne,we,Oe,ht){return i.extend(Nc(Y,D,J,O,K,de,ne,we,!0,Oe,!0),{u_texsize_icon:ht,u_texture_icon:1})},Uc=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_opacity:new i.Uniform1f(Y,D.u_opacity),u_color:new i.UniformColor(Y,D.u_color)}},xu=function(Y,D){return{u_matrix:new i.UniformMatrix4f(Y,D.u_matrix),u_opacity:new i.Uniform1f(Y,D.u_opacity),u_image:new i.Uniform1i(Y,D.u_image),u_pattern_tl_a:new i.Uniform2f(Y,D.u_pattern_tl_a),u_pattern_br_a:new i.Uniform2f(Y,D.u_pattern_br_a),u_pattern_tl_b:new i.Uniform2f(Y,D.u_pattern_tl_b),u_pattern_br_b:new i.Uniform2f(Y,D.u_pattern_br_b),u_texsize:new i.Uniform2f(Y,D.u_texsize),u_mix:new i.Uniform1f(Y,D.u_mix),u_pattern_size_a:new i.Uniform2f(Y,D.u_pattern_size_a),u_pattern_size_b:new i.Uniform2f(Y,D.u_pattern_size_b),u_scale_a:new i.Uniform1f(Y,D.u_scale_a),u_scale_b:new i.Uniform1f(Y,D.u_scale_b),u_pixel_coord_upper:new i.Uniform2f(Y,D.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,D.u_pixel_coord_lower),u_tile_units_to_pixels:new i.Uniform1f(Y,D.u_tile_units_to_pixels)}},Ac=function(Y,D,J){return{u_matrix:Y,u_opacity:D,u_color:J}},Va=function(Y,D,J,O,K,de){return i.extend(cf(O,de,J,K),{u_matrix:Y,u_opacity:D})},oo={fillExtrusion:Zf,fillExtrusionPattern:Wl,fill:qc,fillPattern:Tc,fillOutline:wl,fillOutlinePattern:vu,circle:kt,collisionBox:Er,collisionCircle:xr,debug:Wi,clippingMask:wn,heatmap:Yi,heatmapTexture:$i,hillshade:ta,hillshadePrepare:Ca,line:Zn,lineGradient:Dn,linePattern:Ka,lineSDF:bo,raster:Ws,symbolIcon:rs,symbolSDF:Ql,symbolTextAndIcon:Cu,background:Uc,backgroundPattern:xu},Vc;function hc(Y,D,J,O,K,de,ne){for(var we=Y.context,Oe=we.gl,ht=Y.useProgram("collisionBox"),Yt=[],cr=0,Nt=0,Ne=0;Ne0){var zt=i.create(),_t=Bt;i.mul(zt,It.placementInvProjMatrix,Y.transform.glCoordMatrix),i.mul(zt,zt,It.placementViewportMatrix),Yt.push({circleArray:Ut,circleOffset:Nt,transform:_t,invTransform:zt}),cr+=Ut.length/4,Nt=cr}Ft&&ht.draw(we,Oe.LINES,An.disabled,Vi.disabled,Y.colorModeForRenderPass(),wr.disabled,Kr(Bt,Y.transform,st),J.id,Ft.layoutVertexBuffer,Ft.indexBuffer,Ft.segments,null,Y.transform.zoom,null,null,Ft.collisionVertexBuffer)}}if(!(!ne||!Yt.length)){var Dt=Y.useProgram("collisionCircle"),vt=new i.StructArrayLayout2f1f2i16;vt.resize(cr*4),vt._trim();for(var lr=0,_r=0,Br=Yt;_r=0&&($e[It.associatedIconIndex]={shiftedAnchor:bi,angle:gn})}}if(Yt){Ne.clear();for(var Ei=Y.icon.placedSymbolArray,Oi=0;Oi0){var ne=i.browser.now(),we=(ne-Y.timeAdded)/de,Oe=D?(ne-D.timeAdded)/de:-1,ht=J.getSource(),Yt=K.coveringZoomLevel({tileSize:ht.tileSize,roundZoom:ht.roundZoom}),cr=!D||Math.abs(D.tileID.overscaledZ-Yt)>Math.abs(Y.tileID.overscaledZ-Yt),Nt=cr&&Y.refreshedUponExpiration?1:i.clamp(cr?we:1-Oe,0,1);return Y.refreshedUponExpiration&&we>=1&&(Y.refreshedUponExpiration=!1),D?{opacity:1,mix:1-Nt}:{opacity:Nt,mix:0}}else return{opacity:1,mix:0}}function nr(Y,D,J){var O=J.paint.get("background-color"),K=J.paint.get("background-opacity");if(K!==0){var de=Y.context,ne=de.gl,we=Y.transform,Oe=we.tileSize,ht=J.paint.get("background-pattern");if(!Y.isPatternMissing(ht)){var Yt=!ht&&O.a===1&&K===1&&Y.opaquePassEnabledForLayer()?"opaque":"translucent";if(Y.renderPass===Yt){var cr=Vi.disabled,Nt=Y.depthModeForSublayer(0,Yt==="opaque"?An.ReadWrite:An.ReadOnly),Ne=Y.colorModeForRenderPass(),$e=Y.useProgram(ht?"backgroundPattern":"background"),st=we.coveringTiles({tileSize:Oe});ht&&(de.activeTexture.set(ne.TEXTURE0),Y.imageManager.bind(Y.context));for(var It=J.getCrossfadeParameters(),Bt=0,Ft=st;Bt "+J.overscaledZ);var Bt=It+" "+Ne+"kb";$a(Y,Bt),ne.draw(O,K.TRIANGLES,we,Oe,wt.alphaBlended,wr.disabled,dn(de,i.Color.transparent,st),Yt,Y.debugBuffer,Y.quadTriangleIndexBuffer,Y.debugSegments)}function $a(Y,D){Y.initDebugOverlayCanvas();var J=Y.debugOverlayCanvas,O=Y.context.gl,K=Y.debugOverlayCanvas.getContext("2d");K.clearRect(0,0,J.width,J.height),K.shadowColor="white",K.shadowBlur=2,K.lineWidth=1.5,K.strokeStyle="white",K.textBaseline="top",K.font="bold 36px Open Sans, sans-serif",K.fillText(D,5,5),K.strokeText(D,5,5),Y.debugOverlayTexture.update(J),Y.debugOverlayTexture.bind(O.LINEAR,O.CLAMP_TO_EDGE)}function Co(Y,D,J){var O=Y.context,K=J.implementation;if(Y.renderPass==="offscreen"){var de=K.prerender;de&&(Y.setCustomLayerDefaults(),O.setColorMode(Y.colorModeForRenderPass()),de.call(K,O.gl,Y.transform.customLayerMatrix()),O.setDirty(),Y.setBaseState())}else if(Y.renderPass==="translucent"){Y.setCustomLayerDefaults(),O.setColorMode(Y.colorModeForRenderPass()),O.setStencilMode(Vi.disabled);var ne=K.renderingMode==="3d"?new An(Y.context.gl.LEQUAL,An.ReadWrite,Y.depthRangeFor3D):Y.depthModeForSublayer(0,An.ReadOnly);O.setDepthMode(ne),K.render(O.gl,Y.transform.customLayerMatrix()),O.setDirty(),Y.setBaseState(),O.bindFramebuffer.set(null)}}var Qa={symbol:w,circle:ut,heatmap:Mt,line:Cr,fill:ve,"fill-extrusion":Ie,hillshade:Qe,raster:qt,background:nr,debug:Aa,custom:Co},mo=function(D,J){this.context=new Xr(D),this.transform=J,this._tileTextures={},this.setup(),this.numSublayers=ti.maxUnderzooming+ti.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Vf,this.gpuTimers={}};mo.prototype.resize=function(D,J){if(this.width=D*i.browser.devicePixelRatio,this.height=J*i.browser.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(var O=0,K=this.style._order;O256&&this.clearStencil(),O.setColorMode(wt.disabled),O.setDepthMode(An.disabled);var de=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(var ne=0,we=J;ne256&&this.clearStencil();var D=this.nextStencilID++,J=this.context.gl;return new Vi({func:J.NOTEQUAL,mask:255},D,255,J.KEEP,J.KEEP,J.REPLACE)},mo.prototype.stencilModeForClipping=function(D){var J=this.context.gl;return new Vi({func:J.EQUAL,mask:255},this._tileClippingMaskIDs[D.key],0,J.KEEP,J.KEEP,J.REPLACE)},mo.prototype.stencilConfigForOverlap=function(D){var J,O=this.context.gl,K=D.sort(function(ht,Yt){return Yt.overscaledZ-ht.overscaledZ}),de=K[K.length-1].overscaledZ,ne=K[0].overscaledZ-de+1;if(ne>1){this.currentStencilSource=void 0,this.nextStencilID+ne>256&&this.clearStencil();for(var we={},Oe=0;Oe=0;this.currentLayer--){var zt=this.style._layers[K[this.currentLayer]],_t=de[zt.source],Dt=Oe[zt.source];this._renderTileClippingMasks(zt,Dt),this.renderLayer(this,_t,zt,Dt)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer0?J.pop():null},mo.prototype.isPatternMissing=function(D){if(!D)return!1;if(!D.from||!D.to)return!0;var J=this.imageManager.getPattern(D.from.toString()),O=this.imageManager.getPattern(D.to.toString());return!J||!O},mo.prototype.useProgram=function(D,J){this.cache=this.cache||{};var O=""+D+(J?J.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"");return this.cache[O]||(this.cache[O]=new Rf(this.context,D,wf[D],J,oo[D],this._showOverdrawInspector)),this.cache[O]},mo.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},mo.prototype.setBaseState=function(){var D=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(D.FUNC_ADD)},mo.prototype.initDebugOverlayCanvas=function(){if(this.debugOverlayCanvas==null){this.debugOverlayCanvas=i.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var D=this.context.gl;this.debugOverlayTexture=new i.Texture(this.context,this.debugOverlayCanvas,D.RGBA)}},mo.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var Bo=function(D,J){this.points=D,this.planes=J};Bo.fromInvProjectionMatrix=function(D,J,O){var K=[[-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,1],[-1,-1,1,1]],de=Math.pow(2,O),ne=K.map(function(ht){return i.transformMat4([],ht,D)}).map(function(ht){return i.scale$1([],ht,1/ht[3]/J*de)}),we=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],Oe=we.map(function(ht){var Yt=i.sub([],ne[ht[0]],ne[ht[1]]),cr=i.sub([],ne[ht[2]],ne[ht[1]]),Nt=i.normalize([],i.cross([],Yt,cr)),Ne=-i.dot(Nt,ne[ht[1]]);return Nt.concat(Ne)});return new Bo(ne,Oe)};var Ps=function(D,J){this.min=D,this.max=J,this.center=i.scale$2([],i.add([],this.min,this.max),.5)};Ps.prototype.quadrant=function(D){for(var J=[D%2===0,D<2],O=i.clone$2(this.min),K=i.clone$2(this.max),de=0;de=0;if(ne===0)return 0;ne!==J.length&&(O=!1)}if(O)return 2;for(var Oe=0;Oe<3;Oe++){for(var ht=Number.MAX_VALUE,Yt=-Number.MAX_VALUE,cr=0;crthis.max[Oe]-this.min[Oe])return 0}return 1};var Ts=function(D,J,O,K){if(D===void 0&&(D=0),J===void 0&&(J=0),O===void 0&&(O=0),K===void 0&&(K=0),isNaN(D)||D<0||isNaN(J)||J<0||isNaN(O)||O<0||isNaN(K)||K<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=D,this.bottom=J,this.left=O,this.right=K};Ts.prototype.interpolate=function(D,J,O){return J.top!=null&&D.top!=null&&(this.top=i.number(D.top,J.top,O)),J.bottom!=null&&D.bottom!=null&&(this.bottom=i.number(D.bottom,J.bottom,O)),J.left!=null&&D.left!=null&&(this.left=i.number(D.left,J.left,O)),J.right!=null&&D.right!=null&&(this.right=i.number(D.right,J.right,O)),this},Ts.prototype.getCenter=function(D,J){var O=i.clamp((this.left+D-this.right)/2,0,D),K=i.clamp((this.top+J-this.bottom)/2,0,J);return new i.Point(O,K)},Ts.prototype.equals=function(D){return this.top===D.top&&this.bottom===D.bottom&&this.left===D.left&&this.right===D.right},Ts.prototype.clone=function(){return new Ts(this.top,this.bottom,this.left,this.right)},Ts.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var wo=function(D,J,O,K,de){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=de===void 0?!0:de,this._minZoom=D||0,this._maxZoom=J||22,this._minPitch=O==null?0:O,this._maxPitch=K==null?60:K,this.setMaxBounds(),this.width=0,this.height=0,this._center=new i.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new Ts,this._posMatrixCache={},this._alignedPosMatrixCache={}},To={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};wo.prototype.clone=function(){var D=new wo(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return D.tileSize=this.tileSize,D.latRange=this.latRange,D.width=this.width,D.height=this.height,D._center=this._center,D.zoom=this.zoom,D.angle=this.angle,D._fov=this._fov,D._pitch=this._pitch,D._unmodified=this._unmodified,D._edgeInsets=this._edgeInsets.clone(),D._calcMatrices(),D},To.minZoom.get=function(){return this._minZoom},To.minZoom.set=function(Y){this._minZoom!==Y&&(this._minZoom=Y,this.zoom=Math.max(this.zoom,Y))},To.maxZoom.get=function(){return this._maxZoom},To.maxZoom.set=function(Y){this._maxZoom!==Y&&(this._maxZoom=Y,this.zoom=Math.min(this.zoom,Y))},To.minPitch.get=function(){return this._minPitch},To.minPitch.set=function(Y){this._minPitch!==Y&&(this._minPitch=Y,this.pitch=Math.max(this.pitch,Y))},To.maxPitch.get=function(){return this._maxPitch},To.maxPitch.set=function(Y){this._maxPitch!==Y&&(this._maxPitch=Y,this.pitch=Math.min(this.pitch,Y))},To.renderWorldCopies.get=function(){return this._renderWorldCopies},To.renderWorldCopies.set=function(Y){Y===void 0?Y=!0:Y===null&&(Y=!1),this._renderWorldCopies=Y},To.worldSize.get=function(){return this.tileSize*this.scale},To.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},To.size.get=function(){return new i.Point(this.width,this.height)},To.bearing.get=function(){return-this.angle/Math.PI*180},To.bearing.set=function(Y){var D=-i.wrap(Y,-180,180)*Math.PI/180;this.angle!==D&&(this._unmodified=!1,this.angle=D,this._calcMatrices(),this.rotationMatrix=i.create$2(),i.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},To.pitch.get=function(){return this._pitch/Math.PI*180},To.pitch.set=function(Y){var D=i.clamp(Y,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==D&&(this._unmodified=!1,this._pitch=D,this._calcMatrices())},To.fov.get=function(){return this._fov/Math.PI*180},To.fov.set=function(Y){Y=Math.max(.01,Math.min(60,Y)),this._fov!==Y&&(this._unmodified=!1,this._fov=Y/180*Math.PI,this._calcMatrices())},To.zoom.get=function(){return this._zoom},To.zoom.set=function(Y){var D=Math.min(Math.max(Y,this.minZoom),this.maxZoom);this._zoom!==D&&(this._unmodified=!1,this._zoom=D,this.scale=this.zoomScale(D),this.tileZoom=Math.floor(D),this.zoomFraction=D-this.tileZoom,this._constrain(),this._calcMatrices())},To.center.get=function(){return this._center},To.center.set=function(Y){Y.lat===this._center.lat&&Y.lng===this._center.lng||(this._unmodified=!1,this._center=Y,this._constrain(),this._calcMatrices())},To.padding.get=function(){return this._edgeInsets.toJSON()},To.padding.set=function(Y){this._edgeInsets.equals(Y)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,Y,1),this._calcMatrices())},To.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},wo.prototype.isPaddingEqual=function(D){return this._edgeInsets.equals(D)},wo.prototype.interpolatePadding=function(D,J,O){this._unmodified=!1,this._edgeInsets.interpolate(D,J,O),this._constrain(),this._calcMatrices()},wo.prototype.coveringZoomLevel=function(D){var J=(D.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/D.tileSize));return Math.max(0,J)},wo.prototype.getVisibleUnwrappedCoordinates=function(D){var J=[new i.UnwrappedTileID(0,D)];if(this._renderWorldCopies)for(var O=this.pointCoordinate(new i.Point(0,0)),K=this.pointCoordinate(new i.Point(this.width,0)),de=this.pointCoordinate(new i.Point(this.width,this.height)),ne=this.pointCoordinate(new i.Point(0,this.height)),we=Math.floor(Math.min(O.x,K.x,de.x,ne.x)),Oe=Math.floor(Math.max(O.x,K.x,de.x,ne.x)),ht=1,Yt=we-ht;Yt<=Oe+ht;Yt++)Yt!==0&&J.push(new i.UnwrappedTileID(Yt,D));return J},wo.prototype.coveringTiles=function(D){var J=this.coveringZoomLevel(D),O=J;if(D.minzoom!==void 0&&JD.maxzoom&&(J=D.maxzoom);var K=i.MercatorCoordinate.fromLngLat(this.center),de=Math.pow(2,J),ne=[de*K.x,de*K.y,0],we=Bo.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,J),Oe=D.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(Oe=J);var ht=3,Yt=function(ci){return{aabb:new Ps([ci*de,0,0],[(ci+1)*de,de,0]),zoom:0,x:0,y:0,wrap:ci,fullyVisible:!1}},cr=[],Nt=[],Ne=J,$e=D.reparseOverscaled?O:J;if(this._renderWorldCopies)for(var st=1;st<=3;st++)cr.push(Yt(-st)),cr.push(Yt(st));for(cr.push(Yt(0));cr.length>0;){var It=cr.pop(),Bt=It.x,Ft=It.y,Ut=It.fullyVisible;if(!Ut){var zt=It.aabb.intersects(we);if(zt===0)continue;Ut=zt===2}var _t=It.aabb.distanceX(ne),Dt=It.aabb.distanceY(ne),vt=Math.max(Math.abs(_t),Math.abs(Dt)),lr=ht+(1<lr&&It.zoom>=Oe){Nt.push({tileID:new i.OverscaledTileID(It.zoom===Ne?$e:It.zoom,It.wrap,It.zoom,Bt,Ft),distanceSq:i.sqrLen([ne[0]-.5-Bt,ne[1]-.5-Ft])});continue}for(var _r=0;_r<4;_r++){var Br=(Bt<<1)+_r%2,Di=(Ft<<1)+(_r>>1);cr.push({aabb:It.aabb.quadrant(_r),zoom:It.zoom+1,x:Br,y:Di,wrap:It.wrap,fullyVisible:Ut})}}return Nt.sort(function(ci,bi){return ci.distanceSq-bi.distanceSq}).map(function(ci){return ci.tileID})},wo.prototype.resize=function(D,J){this.width=D,this.height=J,this.pixelsToGLUnits=[2/D,-2/J],this._constrain(),this._calcMatrices()},To.unmodified.get=function(){return this._unmodified},wo.prototype.zoomScale=function(D){return Math.pow(2,D)},wo.prototype.scaleZoom=function(D){return Math.log(D)/Math.LN2},wo.prototype.project=function(D){var J=i.clamp(D.lat,-this.maxValidLatitude,this.maxValidLatitude);return new i.Point(i.mercatorXfromLng(D.lng)*this.worldSize,i.mercatorYfromLat(J)*this.worldSize)},wo.prototype.unproject=function(D){return new i.MercatorCoordinate(D.x/this.worldSize,D.y/this.worldSize).toLngLat()},To.point.get=function(){return this.project(this.center)},wo.prototype.setLocationAtPoint=function(D,J){var O=this.pointCoordinate(J),K=this.pointCoordinate(this.centerPoint),de=this.locationCoordinate(D),ne=new i.MercatorCoordinate(de.x-(O.x-K.x),de.y-(O.y-K.y));this.center=this.coordinateLocation(ne),this._renderWorldCopies&&(this.center=this.center.wrap())},wo.prototype.locationPoint=function(D){return this.coordinatePoint(this.locationCoordinate(D))},wo.prototype.pointLocation=function(D){return this.coordinateLocation(this.pointCoordinate(D))},wo.prototype.locationCoordinate=function(D){return i.MercatorCoordinate.fromLngLat(D)},wo.prototype.coordinateLocation=function(D){return D.toLngLat()},wo.prototype.pointCoordinate=function(D){var J=0,O=[D.x,D.y,0,1],K=[D.x,D.y,1,1];i.transformMat4(O,O,this.pixelMatrixInverse),i.transformMat4(K,K,this.pixelMatrixInverse);var de=O[3],ne=K[3],we=O[0]/de,Oe=K[0]/ne,ht=O[1]/de,Yt=K[1]/ne,cr=O[2]/de,Nt=K[2]/ne,Ne=cr===Nt?0:(J-cr)/(Nt-cr);return new i.MercatorCoordinate(i.number(we,Oe,Ne)/this.worldSize,i.number(ht,Yt,Ne)/this.worldSize)},wo.prototype.coordinatePoint=function(D){var J=[D.x*this.worldSize,D.y*this.worldSize,0,1];return i.transformMat4(J,J,this.pixelMatrix),new i.Point(J[0]/J[3],J[1]/J[3])},wo.prototype.getBounds=function(){return new i.LngLatBounds().extend(this.pointLocation(new i.Point(0,0))).extend(this.pointLocation(new i.Point(this.width,0))).extend(this.pointLocation(new i.Point(this.width,this.height))).extend(this.pointLocation(new i.Point(0,this.height)))},wo.prototype.getMaxBounds=function(){return!this.latRange||this.latRange.length!==2||!this.lngRange||this.lngRange.length!==2?null:new i.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]])},wo.prototype.setMaxBounds=function(D){D?(this.lngRange=[D.getWest(),D.getEast()],this.latRange=[D.getSouth(),D.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},wo.prototype.calculatePosMatrix=function(D,J){J===void 0&&(J=!1);var O=D.key,K=J?this._alignedPosMatrixCache:this._posMatrixCache;if(K[O])return K[O];var de=D.canonical,ne=this.worldSize/this.zoomScale(de.z),we=de.x+Math.pow(2,de.z)*D.wrap,Oe=i.identity(new Float64Array(16));return i.translate(Oe,Oe,[we*ne,de.y*ne,0]),i.scale(Oe,Oe,[ne/i.EXTENT,ne/i.EXTENT,1]),i.multiply(Oe,J?this.alignedProjMatrix:this.projMatrix,Oe),K[O]=new Float32Array(Oe),K[O]},wo.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},wo.prototype._constrain=function(){if(!(!this.center||!this.width||!this.height||this._constraining)){this._constraining=!0;var D=-90,J=90,O=-180,K=180,de,ne,we,Oe,ht=this.size,Yt=this._unmodified;if(this.latRange){var cr=this.latRange;D=i.mercatorYfromLat(cr[1])*this.worldSize,J=i.mercatorYfromLat(cr[0])*this.worldSize,de=J-DJ&&(Oe=J-It)}if(this.lngRange){var Bt=Ne.x,Ft=ht.x/2;Bt-FtK&&(we=K-Ft)}(we!==void 0||Oe!==void 0)&&(this.center=this.unproject(new i.Point(we!==void 0?we:Ne.x,Oe!==void 0?Oe:Ne.y))),this._unmodified=Yt,this._constraining=!1}},wo.prototype._calcMatrices=function(){if(this.height){var D=this._fov/2,J=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(D)*this.height;var O=Math.PI/2+this._pitch,K=this._fov*(.5+J.y/this.height),de=Math.sin(K)*this.cameraToCenterDistance/Math.sin(i.clamp(Math.PI-O-K,.01,Math.PI-.01)),ne=this.point,we=ne.x,Oe=ne.y,ht=Math.cos(Math.PI/2-this._pitch)*de+this.cameraToCenterDistance,Yt=ht*1.01,cr=this.height/50,Nt=new Float64Array(16);i.perspective(Nt,this._fov,this.width/this.height,cr,Yt),Nt[8]=-J.x*2/this.width,Nt[9]=J.y*2/this.height,i.scale(Nt,Nt,[1,-1,1]),i.translate(Nt,Nt,[0,0,-this.cameraToCenterDistance]),i.rotateX(Nt,Nt,this._pitch),i.rotateZ(Nt,Nt,this.angle),i.translate(Nt,Nt,[-we,-Oe,0]),this.mercatorMatrix=i.scale([],Nt,[this.worldSize,this.worldSize,this.worldSize]),i.scale(Nt,Nt,[1,1,i.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=Nt,this.invProjMatrix=i.invert([],this.projMatrix);var Ne=this.width%2/2,$e=this.height%2/2,st=Math.cos(this.angle),It=Math.sin(this.angle),Bt=we-Math.round(we)+st*Ne+It*$e,Ft=Oe-Math.round(Oe)+st*$e+It*Ne,Ut=new Float64Array(Nt);if(i.translate(Ut,Ut,[Bt>.5?Bt-1:Bt,Ft>.5?Ft-1:Ft,0]),this.alignedProjMatrix=Ut,Nt=i.create(),i.scale(Nt,Nt,[this.width/2,-this.height/2,1]),i.translate(Nt,Nt,[1,-1,0]),this.labelPlaneMatrix=Nt,Nt=i.create(),i.scale(Nt,Nt,[1,-1,1]),i.translate(Nt,Nt,[-1,-1,0]),i.scale(Nt,Nt,[2/this.width,2/this.height,1]),this.glCoordMatrix=Nt,this.pixelMatrix=i.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),Nt=i.invert(new Float64Array(16),this.pixelMatrix),!Nt)throw new Error("failed to invert matrix");this.pixelMatrixInverse=Nt,this._posMatrixCache={},this._alignedPosMatrixCache={}}},wo.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var D=this.pointCoordinate(new i.Point(0,0)),J=[D.x*this.worldSize,D.y*this.worldSize,0,1],O=i.transformMat4(J,J,this.pixelMatrix);return O[3]/this.cameraToCenterDistance},wo.prototype.getCameraPoint=function(){var D=this._pitch,J=Math.tan(D)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new i.Point(0,J))},wo.prototype.getCameraQueryGeometry=function(D){var J=this.getCameraPoint();if(D.length===1)return[D[0],J];for(var O=J.x,K=J.y,de=J.x,ne=J.y,we=0,Oe=D;we=3&&!D.some(function(O){return isNaN(O)})){var J=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(D[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+D[2],+D[1]],zoom:+D[0],bearing:J,pitch:+(D[4]||0)}),!0}return!1},Ul.prototype._updateHashUnthrottled=function(){var D=i.window.location.href.replace(/(#.+)?$/,this.getHashString());try{i.window.history.replaceState(i.window.history.state,null,D)}catch(J){}};var Lu={linearity:.3,easing:i.bezier(0,0,.3,1)},au=i.extend({deceleration:2500,maxSpeed:1400},Lu),Js=i.extend({deceleration:20,maxSpeed:1400},Lu),eu=i.extend({deceleration:1e3,maxSpeed:360},Lu),dc=i.extend({deceleration:1e3,maxSpeed:90},Lu),Tl=function(D){this._map=D,this.clear()};Tl.prototype.clear=function(){this._inertiaBuffer=[]},Tl.prototype.record=function(D){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:i.browser.now(),settings:D})},Tl.prototype._drainInertiaBuffer=function(){for(var D=this._inertiaBuffer,J=i.browser.now(),O=160;D.length>0&&J-D[0].time>O;)D.shift()},Tl.prototype._onMoveEnd=function(D){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var J={zoom:0,bearing:0,pitch:0,pan:new i.Point(0,0),pinchAround:void 0,around:void 0},O=0,K=this._inertiaBuffer;O=this._clickTolerance||this._map.fire(new se(D.type,this._map,D))},Ve.prototype.dblclick=function(D){return this._firePreventable(new se(D.type,this._map,D))},Ve.prototype.mouseover=function(D){this._map.fire(new se(D.type,this._map,D))},Ve.prototype.mouseout=function(D){this._map.fire(new se(D.type,this._map,D))},Ve.prototype.touchstart=function(D){return this._firePreventable(new Te(D.type,this._map,D))},Ve.prototype.touchmove=function(D){this._map.fire(new Te(D.type,this._map,D))},Ve.prototype.touchend=function(D){this._map.fire(new Te(D.type,this._map,D))},Ve.prototype.touchcancel=function(D){this._map.fire(new Te(D.type,this._map,D))},Ve.prototype._firePreventable=function(D){if(this._map.fire(D),D.defaultPrevented)return{}},Ve.prototype.isEnabled=function(){return!0},Ve.prototype.isActive=function(){return!1},Ve.prototype.enable=function(){},Ve.prototype.disable=function(){};var Ye=function(D){this._map=D};Ye.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},Ye.prototype.mousemove=function(D){this._map.fire(new se(D.type,this._map,D))},Ye.prototype.mousedown=function(){this._delayContextMenu=!0},Ye.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new se("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},Ye.prototype.contextmenu=function(D){this._delayContextMenu?this._contextMenuEvent=D:this._map.fire(new se(D.type,this._map,D)),this._map.listens("contextmenu")&&D.preventDefault()},Ye.prototype.isEnabled=function(){return!0},Ye.prototype.isActive=function(){return!1},Ye.prototype.enable=function(){},Ye.prototype.disable=function(){};var Pt=function(D,J){this._map=D,this._el=D.getCanvasContainer(),this._container=D.getContainer(),this._clickTolerance=J.clickTolerance||1};Pt.prototype.isEnabled=function(){return!!this._enabled},Pt.prototype.isActive=function(){return!!this._active},Pt.prototype.enable=function(){this.isEnabled()||(this._enabled=!0)},Pt.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},Pt.prototype.mousedown=function(D,J){this.isEnabled()&&D.shiftKey&&D.button===0&&(o.disableDrag(),this._startPos=this._lastPos=J,this._active=!0)},Pt.prototype.mousemoveWindow=function(D,J){if(this._active){var O=J;if(!(this._lastPos.equals(O)||!this._box&&O.dist(this._startPos)this.numTouches)&&(this.aborted=!0),!this.aborted&&(this.startTime===void 0&&(this.startTime=D.timeStamp),O.length===this.numTouches&&(this.centroid=Xt(J),this.touches=ot(O,J)))},zr.prototype.touchmove=function(D,J,O){if(!(this.aborted||!this.centroid)){var K=ot(O,J);for(var de in this.touches){var ne=this.touches[de],we=K[de];(!we||we.dist(ne)>Ur)&&(this.aborted=!0)}}},zr.prototype.touchend=function(D,J,O){if((!this.centroid||D.timeStamp-this.startTime>pr)&&(this.aborted=!0),O.length===0){var K=!this.aborted&&this.centroid;if(this.reset(),K)return K}};var gi=function(D){this.singleTap=new zr(D),this.numTaps=D.numTaps,this.reset()};gi.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},gi.prototype.touchstart=function(D,J,O){this.singleTap.touchstart(D,J,O)},gi.prototype.touchmove=function(D,J,O){this.singleTap.touchmove(D,J,O)},gi.prototype.touchend=function(D,J,O){var K=this.singleTap.touchend(D,J,O);if(K){var de=D.timeStamp-this.lastTime0&&(this._active=!0);var K=ot(O,J),de=new i.Point(0,0),ne=new i.Point(0,0),we=0;for(var Oe in K){var ht=K[Oe],Yt=this._touches[Oe];Yt&&(de._add(ht),ne._add(ht.sub(Yt)),we++,K[Oe]=ht)}if(this._touches=K,!(weMath.abs(Y.x)}var Un=100,ja=function(Y){function D(){Y.apply(this,arguments)}return Y&&(D.__proto__=Y),D.prototype=Object.create(Y&&Y.prototype),D.prototype.constructor=D,D.prototype.reset=function(){Y.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},D.prototype._start=function(O){this._lastPoints=O,Xs(O[0].sub(O[1]))&&(this._valid=!1)},D.prototype._move=function(O,K,de){var ne=O[0].sub(this._lastPoints[0]),we=O[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(ne,we,de.timeStamp),!!this._valid){this._lastPoints=O,this._active=!0;var Oe=(ne.y+we.y)/2,ht=-.5;return{pitchDelta:Oe*ht}}},D.prototype.gestureBeginsVertically=function(O,K,de){if(this._valid!==void 0)return this._valid;var ne=2,we=O.mag()>=ne,Oe=K.mag()>=ne;if(!(!we&&!Oe)){if(!we||!Oe)return this._firstMove===void 0&&(this._firstMove=de),de-this._firstMove0==K.y>0;return Xs(O)&&Xs(K)&&ht}},D}(na),Fo={panStep:100,bearingStep:15,pitchStep:10},Uo=function(){var D=Fo;this._panStep=D.panStep,this._bearingStep=D.bearingStep,this._pitchStep=D.pitchStep,this._rotationDisabled=!1};Uo.prototype.reset=function(){this._active=!1},Uo.prototype.keydown=function(D){var J=this;if(!(D.altKey||D.ctrlKey||D.metaKey)){var O=0,K=0,de=0,ne=0,we=0;switch(D.keyCode){case 61:case 107:case 171:case 187:O=1;break;case 189:case 109:case 173:O=-1;break;case 37:D.shiftKey?K=-1:(D.preventDefault(),ne=-1);break;case 39:D.shiftKey?K=1:(D.preventDefault(),ne=1);break;case 38:D.shiftKey?de=1:(D.preventDefault(),we=-1);break;case 40:D.shiftKey?de=-1:(D.preventDefault(),we=1);break;default:return}return this._rotationDisabled&&(K=0,de=0),{cameraAnimation:function(Oe){var ht=Oe.getZoom();Oe.easeTo({duration:300,easeId:"keyboardHandler",easing:$s,zoom:O?Math.round(ht)+O*(D.shiftKey?2:1):ht,bearing:Oe.getBearing()+K*J._bearingStep,pitch:Oe.getPitch()+de*J._pitchStep,offset:[-ne*J._panStep,-we*J._panStep],center:Oe.getCenter()},{originalEvent:D})}}}},Uo.prototype.enable=function(){this._enabled=!0},Uo.prototype.disable=function(){this._enabled=!1,this.reset()},Uo.prototype.isEnabled=function(){return this._enabled},Uo.prototype.isActive=function(){return this._active},Uo.prototype.disableRotation=function(){this._rotationDisabled=!0},Uo.prototype.enableRotation=function(){this._rotationDisabled=!1};function $s(Y){return Y*(2-Y)}var Sl=4.000244140625,bu=1/100,dl=1/450,Sc=2,Me=function(D,J){this._map=D,this._el=D.getCanvasContainer(),this._handler=J,this._delta=0,this._defaultZoomRate=bu,this._wheelZoomRate=dl,i.bindAll(["_onTimeout"],this)};Me.prototype.setZoomRate=function(D){this._defaultZoomRate=D},Me.prototype.setWheelZoomRate=function(D){this._wheelZoomRate=D},Me.prototype.isEnabled=function(){return!!this._enabled},Me.prototype.isActive=function(){return!!this._active||this._finishTimeout!==void 0},Me.prototype.isZooming=function(){return!!this._zooming},Me.prototype.enable=function(D){this.isEnabled()||(this._enabled=!0,this._aroundCenter=D&&D.around==="center")},Me.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},Me.prototype.wheel=function(D){if(this.isEnabled()){var J=D.deltaMode===i.window.WheelEvent.DOM_DELTA_LINE?D.deltaY*40:D.deltaY,O=i.browser.now(),K=O-(this._lastWheelEventTime||0);this._lastWheelEventTime=O,J!==0&&J%Sl===0?this._type="wheel":J!==0&&Math.abs(J)<4?this._type="trackpad":K>400?(this._type=null,this._lastValue=J,this._timeout=setTimeout(this._onTimeout,40,D)):this._type||(this._type=Math.abs(K*J)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,J+=this._lastValue)),D.shiftKey&&J&&(J=J/4),this._type&&(this._lastWheelEvent=D,this._delta-=J,this._active||this._start(D)),D.preventDefault()}},Me.prototype._onTimeout=function(D){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(D)},Me.prototype._start=function(D){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var J=o.mousePos(this._el,D);this._around=i.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(J)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},Me.prototype.renderFrame=function(){var D=this;if(this._frameId&&(this._frameId=null,!!this.isActive())){var J=this._map.transform;if(this._delta!==0){var O=this._type==="wheel"&&Math.abs(this._delta)>Sl?this._wheelZoomRate:this._defaultZoomRate,K=Sc/(1+Math.exp(-Math.abs(this._delta*O)));this._delta<0&&K!==0&&(K=1/K);var de=typeof this._targetZoom=="number"?J.zoomScale(this._targetZoom):J.scale;this._targetZoom=Math.min(J.maxZoom,Math.max(J.minZoom,J.scaleZoom(de*K))),this._type==="wheel"&&(this._startZoom=J.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var ne=typeof this._targetZoom=="number"?this._targetZoom:J.zoom,we=this._startZoom,Oe=this._easing,ht=!1,Yt;if(this._type==="wheel"&&we&&Oe){var cr=Math.min((i.browser.now()-this._lastWheelEventTime)/200,1),Nt=Oe(cr);Yt=i.number(we,ne,Nt),cr<1?this._frameId||(this._frameId=!0):ht=!0}else Yt=ne,ht=!0;return this._active=!0,ht&&(this._active=!1,this._finishTimeout=setTimeout(function(){D._zooming=!1,D._handler._triggerRenderFrame(),delete D._targetZoom,delete D._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!ht,zoomDelta:Yt-J.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},Me.prototype._smoothOutEasing=function(D){var J=i.ease;if(this._prevEase){var O=this._prevEase,K=(i.browser.now()-O.start)/O.duration,de=O.easing(K+.01)-O.easing(K),ne=.27/Math.sqrt(de*de+1e-4)*.01,we=Math.sqrt(.27*.27-ne*ne);J=i.bezier(ne,we,.25,1)}return this._prevEase={start:i.browser.now(),duration:D,easing:J},J},Me.prototype.reset=function(){this._active=!1};var bt=function(D,J){this._clickZoom=D,this._tapZoom=J};bt.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},bt.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},bt.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},bt.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var Ot=function(){this.reset()};Ot.prototype.reset=function(){this._active=!1},Ot.prototype.dblclick=function(D,J){return D.preventDefault(),{cameraAnimation:function(O){O.easeTo({duration:300,zoom:O.getZoom()+(D.shiftKey?-1:1),around:O.unproject(J)},{originalEvent:D})}}},Ot.prototype.enable=function(){this._enabled=!0},Ot.prototype.disable=function(){this._enabled=!1,this.reset()},Ot.prototype.isEnabled=function(){return this._enabled},Ot.prototype.isActive=function(){return this._active};var Lr=function(){this._tap=new gi({numTouches:1,numTaps:1}),this.reset()};Lr.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},Lr.prototype.touchstart=function(D,J,O){this._swipePoint||(this._tapTime&&D.timeStamp-this._tapTime>dr&&this.reset(),this._tapTime?O.length>0&&(this._swipePoint=J[0],this._swipeTouch=O[0].identifier):this._tap.touchstart(D,J,O))},Lr.prototype.touchmove=function(D,J,O){if(!this._tapTime)this._tap.touchmove(D,J,O);else if(this._swipePoint){if(O[0].identifier!==this._swipeTouch)return;var K=J[0],de=K.y-this._swipePoint.y;return this._swipePoint=K,D.preventDefault(),this._active=!0,{zoomDelta:de/128}}},Lr.prototype.touchend=function(D,J,O){if(this._tapTime)this._swipePoint&&O.length===0&&this.reset();else{var K=this._tap.touchend(D,J,O);K&&(this._tapTime=D.timeStamp)}},Lr.prototype.touchcancel=function(){this.reset()},Lr.prototype.enable=function(){this._enabled=!0},Lr.prototype.disable=function(){this._enabled=!1,this.reset()},Lr.prototype.isEnabled=function(){return this._enabled},Lr.prototype.isActive=function(){return this._active};var Vr=function(D,J,O){this._el=D,this._mousePan=J,this._touchPan=O};Vr.prototype.enable=function(D){this._inertiaOptions=D||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")},Vr.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")},Vr.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},Vr.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var Or=function(D,J,O){this._pitchWithRotate=D.pitchWithRotate,this._mouseRotate=J,this._mousePitch=O};Or.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},Or.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},Or.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},Or.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var Nr=function(D,J,O,K){this._el=D,this._touchZoom=J,this._touchRotate=O,this._tapDragZoom=K,this._rotationDisabled=!1,this._enabled=!0};Nr.prototype.enable=function(D){this._touchZoom.enable(D),this._rotationDisabled||this._touchRotate.enable(D),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")},Nr.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")},Nr.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},Nr.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},Nr.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},Nr.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var vi=function(Y){return Y.zoom||Y.drag||Y.pitch||Y.rotate},Ni=function(Y){function D(){Y.apply(this,arguments)}return Y&&(D.__proto__=Y),D.prototype=Object.create(Y&&Y.prototype),D.prototype.constructor=D,D}(i.Event);function qi(Y){return Y.panDelta&&Y.panDelta.mag()||Y.zoomDelta||Y.bearingDelta||Y.pitchDelta}var Si=function(D,J){this._map=D,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Tl(D),this._bearingSnap=J.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(J),i.bindAll(["handleEvent","handleWindowEvent"],this);var O=this._el;this._listeners=[[O,"touchstart",{passive:!0}],[O,"touchmove",{passive:!1}],[O,"touchend",void 0],[O,"touchcancel",void 0],[O,"mousedown",void 0],[O,"mousemove",void 0],[O,"mouseup",void 0],[i.window.document,"mousemove",{capture:!0}],[i.window.document,"mouseup",void 0],[O,"mouseover",void 0],[O,"mouseout",void 0],[O,"dblclick",void 0],[O,"click",void 0],[O,"keydown",{capture:!1}],[O,"keyup",void 0],[O,"wheel",{passive:!1}],[O,"contextmenu",void 0],[i.window,"blur",void 0]];for(var K=0,de=this._listeners;Kwe?Math.min(2,_t):Math.max(.5,_t),ci=Math.pow(Di,1-_r),bi=ne.unproject(Ut.add(zt.mult(_r*ci)).mult(Br));ne.setLocationAtPoint(ne.renderWorldCopies?bi.wrap():bi,It)}de._fireMoveEvents(K)},function(_r){de._afterEase(K,_r)},O),this},D.prototype._prepareEase=function(O,K,de){de===void 0&&(de={}),this._moving=!0,!K&&!de.moving&&this.fire(new i.Event("movestart",O)),this._zooming&&!de.zooming&&this.fire(new i.Event("zoomstart",O)),this._rotating&&!de.rotating&&this.fire(new i.Event("rotatestart",O)),this._pitching&&!de.pitching&&this.fire(new i.Event("pitchstart",O))},D.prototype._fireMoveEvents=function(O){this.fire(new i.Event("move",O)),this._zooming&&this.fire(new i.Event("zoom",O)),this._rotating&&this.fire(new i.Event("rotate",O)),this._pitching&&this.fire(new i.Event("pitch",O))},D.prototype._afterEase=function(O,K){if(!(this._easeId&&K&&this._easeId===K)){delete this._easeId;var de=this._zooming,ne=this._rotating,we=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,de&&this.fire(new i.Event("zoomend",O)),ne&&this.fire(new i.Event("rotateend",O)),we&&this.fire(new i.Event("pitchend",O)),this.fire(new i.Event("moveend",O))}},D.prototype.flyTo=function(O,K){var de=this;if(!O.essential&&i.browser.prefersReducedMotion){var ne=i.pick(O,["center","zoom","bearing","pitch","around"]);return this.jumpTo(ne,K)}this.stop(),O=i.extend({offset:[0,0],speed:1.2,curve:1.42,easing:i.ease},O);var we=this.transform,Oe=this.getZoom(),ht=this.getBearing(),Yt=this.getPitch(),cr=this.getPadding(),Nt="zoom"in O?i.clamp(+O.zoom,we.minZoom,we.maxZoom):Oe,Ne="bearing"in O?this._normalizeBearing(O.bearing,ht):ht,$e="pitch"in O?+O.pitch:Yt,st="padding"in O?O.padding:we.padding,It=we.zoomScale(Nt-Oe),Bt=i.Point.convert(O.offset),Ft=we.centerPoint.add(Bt),Ut=we.pointLocation(Ft),zt=i.LngLat.convert(O.center||Ut);this._normalizeCenter(zt);var _t=we.project(Ut),Dt=we.project(zt).sub(_t),vt=O.curve,lr=Math.max(we.width,we.height),_r=lr/It,Br=Dt.mag();if("minZoom"in O){var Di=i.clamp(Math.min(O.minZoom,Oe,Nt),we.minZoom,we.maxZoom),ci=lr/we.zoomScale(Di-Oe);vt=Math.sqrt(ci/Br*2)}var bi=vt*vt;function gn(so){var Yo=(_r*_r-lr*lr+(so?-1:1)*bi*bi*Br*Br)/(2*(so?_r:lr)*bi*Br);return Math.log(Math.sqrt(Yo*Yo+1)-Yo)}function tn(so){return(Math.exp(so)-Math.exp(-so))/2}function Ei(so){return(Math.exp(so)+Math.exp(-so))/2}function Oi(so){return tn(so)/Ei(so)}var Gi=gn(0),on=function(so){return Ei(Gi)/Ei(Gi+vt*so)},zn=function(so){return lr*((Ei(Gi)*Oi(Gi+vt*so)-tn(Gi))/bi)/Br},Ja=(gn(1)-Gi)/vt;if(Math.abs(Br)<1e-6||!isFinite(Ja)){if(Math.abs(lr-_r)<1e-6)return this.easeTo(O,K);var co=_rO.maxDuration&&(O.duration=0),this._zooming=!0,this._rotating=ht!==Ne,this._pitching=$e!==Yt,this._padding=!we.isPaddingEqual(st),this._prepareEase(K,!1),this._ease(function(so){var Yo=so*Ja,ms=1/on(Yo);we.zoom=so===1?Nt:Oe+we.scaleZoom(ms),de._rotating&&(we.bearing=i.number(ht,Ne,so)),de._pitching&&(we.pitch=i.number(Yt,$e,so)),de._padding&&(we.interpolatePadding(cr,st,so),Ft=we.centerPoint.add(Bt));var ou=so===1?zt:we.unproject(_t.add(Dt.mult(zn(Yo))).mult(ms));we.setLocationAtPoint(we.renderWorldCopies?ou.wrap():ou,Ft),de._fireMoveEvents(K)},function(){return de._afterEase(K)},O),this},D.prototype.isEasing=function(){return!!this._easeFrameId},D.prototype.stop=function(){return this._stop()},D.prototype._stop=function(O,K){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var de=this._onEaseEnd;delete this._onEaseEnd,de.call(this,K)}if(!O){var ne=this.handlers;ne&&ne.stop(!1)}return this},D.prototype._ease=function(O,K,de){de.animate===!1||de.duration===0?(O(1),K()):(this._easeStart=i.browser.now(),this._easeOptions=de,this._onEaseFrame=O,this._onEaseEnd=K,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},D.prototype._renderFrameCallback=function(){var O=Math.min((i.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(O)),O<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},D.prototype._normalizeBearing=function(O,K){O=i.wrap(O,-180,180);var de=Math.abs(O-K);return Math.abs(O-360-K)180?-360:de<-180?360:0}},D}(i.Evented),Qi=function(D){D===void 0&&(D={}),this.options=D,i.bindAll(["_toggleAttribution","_updateEditLink","_updateData","_updateCompact"],this)};Qi.prototype.getDefaultPosition=function(){return"bottom-right"},Qi.prototype.onAdd=function(D){var J=this.options&&this.options.compact;return this._map=D,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._compactButton=o.create("button","mapboxgl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=o.create("div","mapboxgl-ctrl-attrib-inner",this._container),this._innerContainer.setAttribute("role","list"),J&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),J===void 0&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container},Qi.prototype.onRemove=function(){o.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0},Qi.prototype._setElementTitle=function(D,J){var O=this._map._getUIString("AttributionControl."+J);D.title=O,D.setAttribute("aria-label",O)},Qi.prototype._toggleAttribution=function(){this._container.classList.contains("mapboxgl-compact-show")?(this._container.classList.remove("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","false")):(this._container.classList.add("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","true"))},Qi.prototype._updateEditLink=function(){var D=this._editLink;D||(D=this._editLink=this._container.querySelector(".mapbox-improve-map"));var J=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||i.config.ACCESS_TOKEN}];if(D){var O=J.reduce(function(K,de,ne){return de.value&&(K+=de.key+"="+de.value+(ne=0)return!1;return!0});var we=D.join(" | ");we!==this._attribHTML&&(this._attribHTML=we,D.length?(this._innerContainer.innerHTML=we,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}},Qi.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact","mapboxgl-compact-show")};var ji=function(){i.bindAll(["_updateLogo"],this),i.bindAll(["_updateCompact"],this)};ji.prototype.onAdd=function(D){this._map=D,this._container=o.create("div","mapboxgl-ctrl");var J=o.create("a","mapboxgl-ctrl-logo");return J.target="_blank",J.rel="noopener nofollow",J.href="https://www.mapbox.com/",J.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),J.setAttribute("rel","noopener nofollow"),this._container.appendChild(J),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container},ji.prototype.onRemove=function(){o.remove(this._container),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)},ji.prototype.getDefaultPosition=function(){return"bottom-left"},ji.prototype._updateLogo=function(D){(!D||D.sourceDataType==="metadata")&&(this._container.style.display=this._logoRequired()?"block":"none")},ji.prototype._logoRequired=function(){if(this._map.style){var D=this._map.style.sourceCaches;for(var J in D){var O=D[J].getSource();if(O.mapbox_logo)return!0}return!1}},ji.prototype._updateCompact=function(){var D=this._container.children;if(D.length){var J=D[0];this._map.getCanvasContainer().offsetWidth<250?J.classList.add("mapboxgl-compact"):J.classList.remove("mapboxgl-compact")}};var oi=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};oi.prototype.add=function(D){var J=++this._id,O=this._queue;return O.push({callback:D,id:J,cancelled:!1}),J},oi.prototype.remove=function(D){for(var J=this._currentlyRunning,O=J?this._queue.concat(J):this._queue,K=0,de=O;KO.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(O.minPitch!=null&&O.maxPitch!=null&&O.minPitch>O.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(O.minPitch!=null&&O.minPitchqn)throw new Error("maxPitch must be less than or equal to "+qn);var de=new wo(O.minZoom,O.maxZoom,O.minPitch,O.maxPitch,O.renderWorldCopies);if(Y.call(this,de,O),this._interactive=O.interactive,this._maxTileCacheSize=O.maxTileCacheSize,this._failIfMajorPerformanceCaveat=O.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=O.preserveDrawingBuffer,this._antialias=O.antialias,this._trackResize=O.trackResize,this._bearingSnap=O.bearingSnap,this._refreshExpiredTiles=O.refreshExpiredTiles,this._fadeDuration=O.fadeDuration,this._crossSourceCollisions=O.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=O.collectResourceTiming,this._renderTaskQueue=new oi,this._controls=[],this._mapId=i.uniqueId(),this._locale=i.extend({},Tr,O.locale),this._clickTolerance=O.clickTolerance,this._requestManager=new i.RequestManager(O.transformRequest,O.accessToken),typeof O.container=="string"){if(this._container=i.window.document.getElementById(O.container),!this._container)throw new Error("Container '"+O.container+"' not found.")}else if(O.container instanceof yi)this._container=O.container;else throw new Error("Invalid type: 'container' must be a String or HTMLElement.");if(O.maxBounds&&this.setMaxBounds(O.maxBounds),i.bindAll(["_onWindowOnline","_onWindowResize","_onMapScroll","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),this.painter===void 0)throw new Error("Failed to initialize WebGL.");this.on("move",function(){return K._update(!1)}),this.on("moveend",function(){return K._update(!1)}),this.on("zoom",function(){return K._update(!0)}),typeof i.window!="undefined"&&(i.window.addEventListener("online",this._onWindowOnline,!1),i.window.addEventListener("resize",this._onWindowResize,!1),i.window.addEventListener("orientationchange",this._onWindowResize,!1)),this.handlers=new Si(this,O);var ne=typeof O.hash=="string"&&O.hash||void 0;this._hash=O.hash&&new Ul(ne).addTo(this),(!this._hash||!this._hash._onHashChange())&&(this.jumpTo({center:O.center,zoom:O.zoom,bearing:O.bearing,pitch:O.pitch}),O.bounds&&(this.resize(),this.fitBounds(O.bounds,i.extend({},O.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=O.localIdeographFontFamily,O.style&&this.setStyle(O.style,{localIdeographFontFamily:O.localIdeographFontFamily}),O.attributionControl&&this.addControl(new Qi({customAttribution:O.customAttribution})),this.addControl(new ji,O.logoPosition),this.on("style.load",function(){K.transform.unmodified&&K.jumpTo(K.style.stylesheet)}),this.on("data",function(we){K._update(we.dataType==="style"),K.fire(new i.Event(we.dataType+"data",we))}),this.on("dataloading",function(we){K.fire(new i.Event(we.dataType+"dataloading",we))})}Y&&(D.__proto__=Y),D.prototype=Object.create(Y&&Y.prototype),D.prototype.constructor=D;var J={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return D.prototype._getMapId=function(){return this._mapId},D.prototype.addControl=function(K,de){if(de===void 0&&(K.getDefaultPosition?de=K.getDefaultPosition():de="top-right"),!K||!K.onAdd)return this.fire(new i.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));var ne=K.onAdd(this);this._controls.push(K);var we=this._controlPositions[de];return de.indexOf("bottom")!==-1?we.insertBefore(ne,we.firstChild):we.appendChild(ne),this},D.prototype.removeControl=function(K){if(!K||!K.onRemove)return this.fire(new i.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));var de=this._controls.indexOf(K);return de>-1&&this._controls.splice(de,1),K.onRemove(this),this},D.prototype.hasControl=function(K){return this._controls.indexOf(K)>-1},D.prototype.resize=function(K){var de=this._containerDimensions(),ne=de[0],we=de[1];this._resizeCanvas(ne,we),this.transform.resize(ne,we),this.painter.resize(ne,we);var Oe=!this._moving;return Oe&&(this.stop(),this.fire(new i.Event("movestart",K)).fire(new i.Event("move",K))),this.fire(new i.Event("resize",K)),Oe&&this.fire(new i.Event("moveend",K)),this},D.prototype.getBounds=function(){return this.transform.getBounds()},D.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},D.prototype.setMaxBounds=function(K){return this.transform.setMaxBounds(i.LngLatBounds.convert(K)),this._update()},D.prototype.setMinZoom=function(K){if(K=K==null?ui:K,K>=ui&&K<=this.transform.maxZoom)return this.transform.minZoom=K,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=K,this._update(),this.getZoom()>K&&this.setZoom(K),this;throw new Error("maxZoom must be greater than the current minZoom")},D.prototype.getMaxZoom=function(){return this.transform.maxZoom},D.prototype.setMinPitch=function(K){if(K=K==null?Xi:K,K=Xi&&K<=this.transform.maxPitch)return this.transform.minPitch=K,this._update(),this.getPitch()qn)throw new Error("maxPitch must be less than or equal to "+qn);if(K>=this.transform.minPitch)return this.transform.maxPitch=K,this._update(),this.getPitch()>K&&this.setPitch(K),this;throw new Error("maxPitch must be greater than the current minPitch")},D.prototype.getMaxPitch=function(){return this.transform.maxPitch},D.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},D.prototype.setRenderWorldCopies=function(K){return this.transform.renderWorldCopies=K,this._update()},D.prototype.project=function(K){return this.transform.locationPoint(i.LngLat.convert(K))},D.prototype.unproject=function(K){return this.transform.pointLocation(i.Point.convert(K))},D.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},D.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},D.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},D.prototype._createDelegatedListener=function(K,de,ne){var we=this,Oe;if(K==="mouseenter"||K==="mouseover"){var ht=!1,Yt=function(It){var Bt=we.getLayer(de)?we.queryRenderedFeatures(It.point,{layers:[de]}):[];Bt.length?ht||(ht=!0,ne.call(we,new se(K,we,It.originalEvent,{features:Bt}))):ht=!1},cr=function(){ht=!1};return{layer:de,listener:ne,delegates:{mousemove:Yt,mouseout:cr}}}else if(K==="mouseleave"||K==="mouseout"){var Nt=!1,Ne=function(It){var Bt=we.getLayer(de)?we.queryRenderedFeatures(It.point,{layers:[de]}):[];Bt.length?Nt=!0:Nt&&(Nt=!1,ne.call(we,new se(K,we,It.originalEvent)))},$e=function(It){Nt&&(Nt=!1,ne.call(we,new se(K,we,It.originalEvent)))};return{layer:de,listener:ne,delegates:{mousemove:Ne,mouseout:$e}}}else{var st=function(It){var Bt=we.getLayer(de)?we.queryRenderedFeatures(It.point,{layers:[de]}):[];Bt.length&&(It.features=Bt,ne.call(we,It),delete It.features)};return{layer:de,listener:ne,delegates:(Oe={},Oe[K]=st,Oe)}}},D.prototype.on=function(K,de,ne){if(ne===void 0)return Y.prototype.on.call(this,K,de);var we=this._createDelegatedListener(K,de,ne);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[K]=this._delegatedListeners[K]||[],this._delegatedListeners[K].push(we);for(var Oe in we.delegates)this.on(Oe,we.delegates[Oe]);return this},D.prototype.once=function(K,de,ne){if(ne===void 0)return Y.prototype.once.call(this,K,de);var we=this._createDelegatedListener(K,de,ne);for(var Oe in we.delegates)this.once(Oe,we.delegates[Oe]);return this},D.prototype.off=function(K,de,ne){var we=this;if(ne===void 0)return Y.prototype.off.call(this,K,de);var Oe=function(ht){for(var Yt=ht[K],cr=0;cr180;){var ne=J.locationPoint(Y);if(ne.x>=0&&ne.y>=0&&ne.x<=J.width&&ne.y<=J.height)break;Y.lng>J.center.lng?Y.lng-=360:Y.lng+=360}return Y}var Nn={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function aa(Y,D,J){var O=Y.classList;for(var K in Nn)O.remove("mapboxgl-"+J+"-anchor-"+K);O.add("mapboxgl-"+J+"-anchor-"+D)}var Ki=function(Y){function D(J,O){if(Y.call(this),(J instanceof i.window.HTMLElement||O)&&(J=i.extend({element:J},O)),i.bindAll(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress"],this),this._anchor=J&&J.anchor||"center",this._color=J&&J.color||"#3FB1CE",this._scale=J&&J.scale||1,this._draggable=J&&J.draggable||!1,this._clickTolerance=J&&J.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=J&&J.rotation||0,this._rotationAlignment=J&&J.rotationAlignment||"auto",this._pitchAlignment=J&&J.pitchAlignment&&J.pitchAlignment!=="auto"?J.pitchAlignment:this._rotationAlignment,!J||!J.element){this._defaultMarker=!0,this._element=o.create("div"),this._element.setAttribute("aria-label","Map marker");var K=o.createNS("http://www.w3.org/2000/svg","svg"),de=41,ne=27;K.setAttributeNS(null,"display","block"),K.setAttributeNS(null,"height",de+"px"),K.setAttributeNS(null,"width",ne+"px"),K.setAttributeNS(null,"viewBox","0 0 "+ne+" "+de);var we=o.createNS("http://www.w3.org/2000/svg","g");we.setAttributeNS(null,"stroke","none"),we.setAttributeNS(null,"stroke-width","1"),we.setAttributeNS(null,"fill","none"),we.setAttributeNS(null,"fill-rule","evenodd");var Oe=o.createNS("http://www.w3.org/2000/svg","g");Oe.setAttributeNS(null,"fill-rule","nonzero");var ht=o.createNS("http://www.w3.org/2000/svg","g");ht.setAttributeNS(null,"transform","translate(3.0, 29.0)"),ht.setAttributeNS(null,"fill","#000000");for(var Yt=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}],cr=0,Nt=Yt;cr=K}this._isDragging&&(this._pos=O.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new i.Event("dragstart"))),this.fire(new i.Event("drag")))},D.prototype._onUp=function(){this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new i.Event("dragend")),this._state="inactive"},D.prototype._addDragHandler=function(O){this._element.contains(O.originalEvent.target)&&(O.preventDefault(),this._positionDelta=O.point.sub(this._pos).add(this._offset),this._pointerdownPos=O.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},D.prototype.setDraggable=function(O){return this._draggable=!!O,this._map&&(O?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this},D.prototype.isDraggable=function(){return this._draggable},D.prototype.setRotation=function(O){return this._rotation=O||0,this._update(),this},D.prototype.getRotation=function(){return this._rotation},D.prototype.setRotationAlignment=function(O){return this._rotationAlignment=O||"auto",this._update(),this},D.prototype.getRotationAlignment=function(){return this._rotationAlignment},D.prototype.setPitchAlignment=function(O){return this._pitchAlignment=O&&O!=="auto"?O:this._rotationAlignment,this._update(),this},D.prototype.getPitchAlignment=function(){return this._pitchAlignment},D}(i.Evented),Cn={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},ia;function sa(Y){ia!==void 0?Y(ia):i.window.navigator.permissions!==void 0?i.window.navigator.permissions.query({name:"geolocation"}).then(function(D){ia=D.state!=="denied",Y(ia)}):(ia=!!i.window.navigator.geolocation,Y(ia))}var ba=0,is=!1,Zs=function(Y){function D(J){Y.call(this),this.options=i.extend({},Cn,J),i.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker"],this)}return Y&&(D.__proto__=Y),D.prototype=Object.create(Y&&Y.prototype),D.prototype.constructor=D,D.prototype.onAdd=function(O){return this._map=O,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),sa(this._setupUI),this._container},D.prototype.onRemove=function(){this._geolocationWatchID!==void 0&&(i.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),o.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,ba=0,is=!1},D.prototype._isOutOfMapMaxBounds=function(O){var K=this._map.getMaxBounds(),de=O.coords;return K&&(de.longitudeK.getEast()||de.latitudeK.getNorth())},D.prototype._setErrorState=function(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break}},D.prototype._onSuccess=function(O){if(this._map){if(this._isOutOfMapMaxBounds(O)){this._setErrorState(),this.fire(new i.Event("outofmaxbounds",O)),this._updateMarker(),this._finish();return}if(this.options.trackUserLocation)switch(this._lastKnownPosition=O,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(O),(!this.options.trackUserLocation||this._watchState==="ACTIVE_LOCK")&&this._updateCamera(O),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new i.Event("geolocate",O)),this._finish()}},D.prototype._updateCamera=function(O){var K=new i.LngLat(O.coords.longitude,O.coords.latitude),de=O.coords.accuracy,ne=this._map.getBearing(),we=i.extend({bearing:ne},this.options.fitBoundsOptions);this._map.fitBounds(K.toBounds(de),we,{geolocateSource:!0})},D.prototype._updateMarker=function(O){if(O){var K=new i.LngLat(O.coords.longitude,O.coords.latitude);this._accuracyCircleMarker.setLngLat(K).addTo(this._map),this._userLocationDotMarker.setLngLat(K).addTo(this._map),this._accuracy=O.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},D.prototype._updateCircleRadius=function(){var O=this._map._container.clientHeight/2,K=this._map.unproject([0,O]),de=this._map.unproject([1,O]),ne=K.distanceTo(de),we=Math.ceil(2*this._accuracy/ne);this._circleElement.style.width=we+"px",this._circleElement.style.height=we+"px"},D.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},D.prototype._onError=function(O){if(this._map){if(this.options.trackUserLocation)if(O.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;var K=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=K,this._geolocateButton.setAttribute("aria-label",K),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(O.code===3&&is)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new i.Event("error",O)),this._finish()}},D.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},D.prototype._setupUI=function(O){var K=this;if(this._container.addEventListener("contextmenu",function(we){return we.preventDefault()}),this._geolocateButton=o.create("button","mapboxgl-ctrl-geolocate",this._container),o.create("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden",!0),this._geolocateButton.type="button",O===!1){i.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");var de=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=de,this._geolocateButton.setAttribute("aria-label",de)}else{var ne=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=ne,this._geolocateButton.setAttribute("aria-label",ne)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=o.create("div","mapboxgl-user-location-dot"),this._userLocationDotMarker=new Ki(this._dotElement),this._circleElement=o.create("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Ki({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",function(we){var Oe=we.originalEvent&&we.originalEvent.type==="resize";!we.geolocateSource&&K._watchState==="ACTIVE_LOCK"&&!Oe&&(K._watchState="BACKGROUND",K._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),K._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),K.fire(new i.Event("trackuserlocationend")))})},D.prototype.trigger=function(){if(!this._setup)return i.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new i.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":ba--,is=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new i.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new i.Event("trackuserlocationstart"));break}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error");break}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),ba++;var O;ba>1?(O={maximumAge:6e5,timeout:0},is=!0):(O=this.options.positionOptions,is=!1),this._geolocationWatchID=i.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,O)}}else i.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},D.prototype._clearWatch=function(){i.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)},D}(i.Evented),Ga={maxWidth:100,unit:"metric"},Ml=function(D){this.options=i.extend({},Ga,D),i.bindAll(["_onMove","setUnit"],this)};Ml.prototype.getDefaultPosition=function(){return"bottom-left"},Ml.prototype._onMove=function(){zo(this._map,this._container,this.options)},Ml.prototype.onAdd=function(D){return this._map=D,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-scale",D.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container},Ml.prototype.onRemove=function(){o.remove(this._container),this._map.off("move",this._onMove),this._map=void 0},Ml.prototype.setUnit=function(D){this.options.unit=D,zo(this._map,this._container,this.options)};function zo(Y,D,J){var O=J&&J.maxWidth||100,K=Y._container.clientHeight/2,de=Y.unproject([0,K]),ne=Y.unproject([O,K]),we=de.distanceTo(ne);if(J&&J.unit==="imperial"){var Oe=3.2808*we;if(Oe>5280){var ht=Oe/5280;Qs(D,O,ht,Y._getUIString("ScaleControl.Miles"))}else Qs(D,O,Oe,Y._getUIString("ScaleControl.Feet"))}else if(J&&J.unit==="nautical"){var Yt=we/1852;Qs(D,O,Yt,Y._getUIString("ScaleControl.NauticalMiles"))}else we>=1e3?Qs(D,O,we/1e3,Y._getUIString("ScaleControl.Kilometers")):Qs(D,O,we,Y._getUIString("ScaleControl.Meters"))}function Qs(Y,D,J,O){var K=Vl(J),de=K/J;Y.style.width=D*de+"px",Y.innerHTML=K+" "+O}function al(Y){var D=Math.pow(10,Math.ceil(-Math.log(Y)/Math.LN10));return Math.round(Y*D)/D}function Vl(Y){var D=Math.pow(10,(""+Math.floor(Y)).length-1),J=Y/D;return J=J>=10?10:J>=5?5:J>=3?3:J>=2?2:J>=1?1:al(J),D*J}var ss=function(D){this._fullscreen=!1,D&&D.container&&(D.container instanceof i.window.HTMLElement?this._container=D.container:i.warnOnce("Full screen control 'container' must be a DOM element.")),i.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in i.window.document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in i.window.document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in i.window.document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in i.window.document&&(this._fullscreenchange="MSFullscreenChange")};ss.prototype.onAdd=function(D){return this._map=D,this._container||(this._container=this._map.getContainer()),this._controlContainer=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",i.warnOnce("This device does not support fullscreen mode.")),this._controlContainer},ss.prototype.onRemove=function(){o.remove(this._controlContainer),this._map=null,i.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},ss.prototype._checkFullscreenSupport=function(){return!!(i.window.document.fullscreenEnabled||i.window.document.mozFullScreenEnabled||i.window.document.msFullscreenEnabled||i.window.document.webkitFullscreenEnabled)},ss.prototype._setupUI=function(){var D=this._fullscreenButton=o.create("button","mapboxgl-ctrl-fullscreen",this._controlContainer);o.create("span","mapboxgl-ctrl-icon",D).setAttribute("aria-hidden",!0),D.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),i.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},ss.prototype._updateTitle=function(){var D=this._getTitle();this._fullscreenButton.setAttribute("aria-label",D),this._fullscreenButton.title=D},ss.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")},ss.prototype._isFullscreen=function(){return this._fullscreen},ss.prototype._changeIcon=function(){var D=i.window.document.fullscreenElement||i.window.document.mozFullScreenElement||i.window.document.webkitFullscreenElement||i.window.document.msFullscreenElement;D===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())},ss.prototype._onClickFullscreen=function(){this._isFullscreen()?i.window.document.exitFullscreen?i.window.document.exitFullscreen():i.window.document.mozCancelFullScreen?i.window.document.mozCancelFullScreen():i.window.document.msExitFullscreen?i.window.document.msExitFullscreen():i.window.document.webkitCancelFullScreen&&i.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Vs={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},Ys=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", "),wa=function(Y){function D(J){Y.call(this),this.options=i.extend(Object.create(Vs),J),i.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}return Y&&(D.__proto__=Y),D.prototype=Object.create(Y&&Y.prototype),D.prototype.constructor=D,D.prototype.addTo=function(O){return this._map&&this.remove(),this._map=O,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")):this._map.on("move",this._update),this.fire(new i.Event("open")),this},D.prototype.isOpen=function(){return!!this._map},D.prototype.remove=function(){return this._content&&o.remove(this._content),this._container&&(o.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new i.Event("close")),this},D.prototype.getLngLat=function(){return this._lngLat},D.prototype.setLngLat=function(O){return this._lngLat=i.LngLat.convert(O),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.remove("mapboxgl-track-pointer")),this},D.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")),this},D.prototype.getElement=function(){return this._container},D.prototype.setText=function(O){return this.setDOMContent(i.window.document.createTextNode(O))},D.prototype.setHTML=function(O){var K=i.window.document.createDocumentFragment(),de=i.window.document.createElement("body"),ne;for(de.innerHTML=O;ne=de.firstChild,!!ne;)K.appendChild(ne);return this.setDOMContent(K)},D.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},D.prototype.setMaxWidth=function(O){return this.options.maxWidth=O,this._update(),this},D.prototype.setDOMContent=function(O){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=o.create("div","mapboxgl-popup-content",this._container);return this._content.appendChild(O),this._createCloseButton(),this._update(),this._focusFirstElement(),this},D.prototype.addClassName=function(O){this._container&&this._container.classList.add(O)},D.prototype.removeClassName=function(O){this._container&&this._container.classList.remove(O)},D.prototype.setOffset=function(O){return this.options.offset=O,this._update(),this},D.prototype.toggleClassName=function(O){if(this._container)return this._container.classList.toggle(O)},D.prototype._createCloseButton=function(){this.options.closeButton&&(this._closeButton=o.create("button","mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))},D.prototype._onMouseUp=function(O){this._update(O.point)},D.prototype._onMouseMove=function(O){this._update(O.point)},D.prototype._onDrag=function(O){this._update(O.point)},D.prototype._update=function(O){var K=this,de=this._lngLat||this._trackPointer;if(!(!this._map||!de||!this._content)&&(this._container||(this._container=o.create("div","mapboxgl-popup",this._map.getContainer()),this._tip=o.create("div","mapboxgl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(function(Ne){return K._container.classList.add(Ne)}),this._trackPointer&&this._container.classList.add("mapboxgl-popup-track-pointer")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=pn(this._lngLat,this._pos,this._map.transform)),!(this._trackPointer&&!O))){var ne=this._pos=this._trackPointer&&O?O:this._map.project(this._lngLat),we=this.options.anchor,Oe=ol(this.options.offset);if(!we){var ht=this._container.offsetWidth,Yt=this._container.offsetHeight,cr;ne.y+Oe.bottom.ythis._map.transform.height-Yt?cr=["bottom"]:cr=[],ne.xthis._map.transform.width-ht/2&&cr.push("right"),cr.length===0?we="bottom":we=cr.join("-")}var Nt=ne.add(Oe[we]).round();o.setTransform(this._container,Nn[we]+" translate("+Nt.x+"px,"+Nt.y+"px)"),aa(this._container,we,"popup")}},D.prototype._focusFirstElement=function(){if(!(!this.options.focusAfterOpen||!this._container)){var O=this._container.querySelector(Ys);O&&O.focus()}},D.prototype._onClose=function(){this.remove()},D}(i.Evented);function ol(Y){if(Y)if(typeof Y=="number"){var D=Math.round(Math.sqrt(.5*Math.pow(Y,2)));return{center:new i.Point(0,0),top:new i.Point(0,Y),"top-left":new i.Point(D,D),"top-right":new i.Point(-D,D),bottom:new i.Point(0,-Y),"bottom-left":new i.Point(D,-D),"bottom-right":new i.Point(-D,-D),left:new i.Point(Y,0),right:new i.Point(-Y,0)}}else if(Y instanceof i.Point||Array.isArray(Y)){var J=i.Point.convert(Y);return{center:J,top:J,"top-left":J,"top-right":J,bottom:J,"bottom-left":J,"bottom-right":J,left:J,right:J}}else return{center:i.Point.convert(Y.center||[0,0]),top:i.Point.convert(Y.top||[0,0]),"top-left":i.Point.convert(Y["top-left"]||[0,0]),"top-right":i.Point.convert(Y["top-right"]||[0,0]),bottom:i.Point.convert(Y.bottom||[0,0]),"bottom-left":i.Point.convert(Y["bottom-left"]||[0,0]),"bottom-right":i.Point.convert(Y["bottom-right"]||[0,0]),left:i.Point.convert(Y.left||[0,0]),right:i.Point.convert(Y.right||[0,0])};else return ol(new i.Point(0,0))}var io={version:i.version,supported:a,setRTLTextPlugin:i.setRTLTextPlugin,getRTLTextPluginStatus:i.getRTLTextPluginStatus,Map:si,NavigationControl:Ui,GeolocateControl:Zs,AttributionControl:Qi,ScaleControl:Ml,FullscreenControl:ss,Popup:wa,Marker:Ki,Style:yu,LngLat:i.LngLat,LngLatBounds:i.LngLatBounds,Point:i.Point,MercatorCoordinate:i.MercatorCoordinate,Evented:i.Evented,config:i.config,prewarm:ua,clearPrewarmedResources:ma,get accessToken(){return i.config.ACCESS_TOKEN},set accessToken(Y){i.config.ACCESS_TOKEN=Y},get baseApiUrl(){return i.config.API_URL},set baseApiUrl(Y){i.config.API_URL=Y},get workerCount(){return fn.workerCount},set workerCount(Y){fn.workerCount=Y},get maxParallelImageRequests(){return i.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(Y){i.config.MAX_PARALLEL_IMAGE_REQUESTS=Y},clearStorage:function(D){i.clearTileCache(D)},workerUrl:""};return io}),r})});var wGe=ye((Vxr,bGe)=>{"use strict";var vw=Pr(),rWt=Zl().sanitizeHTML,iWt=fJ(),yGe=m1();function _Ge(e,t){this.subplot=e,this.uid=e.uid+"-"+t,this.index=t,this.idSource="source-"+this.uid,this.idLayer=yGe.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var ag=_Ge.prototype;ag.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=n7(t)};ag.needsNewImage=function(e){var t=this.subplot.map;return t.getSource(this.idSource)&&this.sourceType==="image"&&e.sourcetype==="image"&&(this.source!==e.source||JSON.stringify(this.coordinates)!==JSON.stringify(e.coordinates))};ag.needsNewSource=function(e){return this.sourceType!==e.sourcetype||JSON.stringify(this.source)!==JSON.stringify(e.source)||this.layerType!==e.type};ag.needsNewLayer=function(e){return this.layerType!==e.type||this.below!==this.subplot.belowLookup["layout-"+this.index]};ag.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]};ag.updateImage=function(e){var t=this.subplot.map;t.getSource(this.idSource).updateImage({url:e.source,coordinates:e.coordinates});var r=this.findFollowingMapboxLayerId(this.lookupBelow());r!==null&&this.subplot.map.moveLayer(this.idLayer,r)};ag.updateSource=function(e){var t=this.subplot.map;if(t.getSource(this.idSource)&&t.removeSource(this.idSource),this.sourceType=e.sourcetype,this.source=e.source,!!n7(e)){var r=nWt(e);t.addSource(this.idSource,r)}};ag.findFollowingMapboxLayerId=function(e){if(e==="traces")for(var t=this.subplot.getMapLayers(),r=0;r0){for(var r=0;r0}function xGe(e){var t={},r={};switch(e.type){case"circle":vw.extendFlat(r,{"circle-radius":e.circle.radius,"circle-color":e.color,"circle-opacity":e.opacity});break;case"line":vw.extendFlat(r,{"line-width":e.line.width,"line-color":e.color,"line-opacity":e.opacity,"line-dasharray":e.line.dash});break;case"fill":vw.extendFlat(r,{"fill-color":e.color,"fill-outline-color":e.fill.outlinecolor,"fill-opacity":e.opacity});break;case"symbol":var n=e.symbol,i=iWt(n.textposition,n.iconsize);vw.extendFlat(t,{"icon-image":n.icon+"-15","icon-size":n.iconsize/10,"text-field":n.text,"text-size":n.textfont.size,"text-anchor":i.anchor,"text-offset":i.offset,"symbol-placement":n.placement}),vw.extendFlat(r,{"icon-color":e.color,"text-color":n.textfont.color,"text-opacity":e.opacity});break;case"raster":vw.extendFlat(r,{"raster-fade-duration":0,"raster-opacity":e.opacity});break}return{layout:t,paint:r}}function nWt(e){var t=e.sourcetype,r=e.source,n={type:t},i;return t==="geojson"?i="data":t==="vector"?i=typeof r=="string"?"url":"tiles":t==="raster"?(i="tiles",n.tileSize=256):t==="image"&&(i="url",n.coordinates=e.coordinates),n[i]=r,e.sourceattribution&&(n.attribution=rWt(e.sourceattribution)),n}bGe.exports=function(t,r,n){var i=new _Ge(t,r);return i.update(n),i}});var PGe=ye((Gxr,LGe)=>{"use strict";var yJ=mJ(),_J=Pr(),MGe=dx(),TGe=Oa(),aWt=ho(),oWt=yv(),a7=ef(),EGe=Cg(),sWt=EGe.drawMode,lWt=EGe.selectMode,uWt=qf().prepSelect,cWt=qf().clearOutline,fWt=qf().clearSelectionsCache,hWt=qf().selectOnClick,Cx=m1(),dWt=wGe();function kGe(e,t){this.id=t,this.gd=e;var r=e._fullLayout,n=e._context;this.container=r._glcontainer.node(),this.isStatic=n.staticPlot,this.uid=r._uid+"-"+this.id,this.div=null,this.xaxis=null,this.yaxis=null,this.createFramework(r),this.map=null,this.accessToken=null,this.styleObj=null,this.traceHash={},this.layerList=[],this.belowLookup={},this.dragging=!1,this.wheeling=!1}var Gh=kGe.prototype;Gh.plot=function(e,t,r){var n=this,i=t[n.id];n.map&&i.accesstoken!==n.accessToken&&(n.map.remove(),n.map=null,n.styleObj=null,n.traceHash={},n.layerList=[]);var a;n.map?a=new Promise(function(o,s){n.updateMap(e,t,o,s)}):a=new Promise(function(o,s){n.createMap(e,t,o,s)}),r.push(a)};Gh.createMap=function(e,t,r,n){var i=this,a=t[i.id],o=i.styleObj=CGe(a.style,t);i.accessToken=a.accesstoken;var s=a.bounds,l=s?[[s.west,s.south],[s.east,s.north]]:null,u=i.map=new yJ.Map({container:i.div,style:o.style,center:xJ(a.center),zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,maxBounds:l,interactive:!i.isStatic,preserveDrawingBuffer:i.isStatic,doubleClickZoom:!1,boxZoom:!1,attributionControl:!1}).addControl(new yJ.AttributionControl({compact:!0}));u._canvas.style.left="0px",u._canvas.style.top="0px",i.rejectOnError(n),i.isStatic||i.initFx(e,t);var c=[];c.push(new Promise(function(f){u.once("load",f)})),c=c.concat(MGe.fetchTraceGeoData(e)),Promise.all(c).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Gh.updateMap=function(e,t,r,n){var i=this,a=i.map,o=t[this.id];i.rejectOnError(n);var s=[],l=CGe(o.style,t);JSON.stringify(i.styleObj)!==JSON.stringify(l)&&(i.styleObj=l,a.setStyle(l.style),i.traceHash={},s.push(new Promise(function(u){a.once("styledata",u)}))),s=s.concat(MGe.fetchTraceGeoData(e)),Promise.all(s).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Gh.fillBelowLookup=function(e,t){var r=t[this.id],n=r.layers,i,a,o=this.belowLookup={},s=!1;for(i=0;i1)for(i=0;i-1&&hWt(l.originalEvent,n,[r.xaxis],[r.yaxis],r.id,s),u.indexOf("event")>-1&&a7.click(n,l.originalEvent)}}};Gh.updateFx=function(e){var t=this,r=t.map,n=t.gd;if(t.isStatic)return;function i(l){var u=t.map.unproject(l);return[u.lng,u.lat]}var a=e.dragmode,o;o=function(l,u){if(u.isRect){var c=l.range={};c[t.id]=[i([u.xmin,u.ymin]),i([u.xmax,u.ymax])]}else{var f=l.lassoPoints={};f[t.id]=u.map(i)}};var s=t.dragOptions;t.dragOptions=_J.extendDeep(s||{},{dragmode:e.dragmode,element:t.div,gd:n,plotinfo:{id:t.id,domain:e[t.id].domain,xaxis:t.xaxis,yaxis:t.yaxis,fillRangeItems:o},xaxes:[t.xaxis],yaxes:[t.yaxis],subplot:t.id}),r.off("click",t.onClickInPanHandler),lWt(a)||sWt(a)?(r.dragPan.disable(),r.on("zoomstart",t.clearOutline),t.dragOptions.prepFn=function(l,u,c){uWt(l,u,c,t.dragOptions,a)},oWt.init(t.dragOptions)):(r.dragPan.enable(),r.off("zoomstart",t.clearOutline),t.div.onmousedown=null,t.div.ontouchstart=null,t.div.removeEventListener("touchstart",t.div._ontouchstart),t.onClickInPanHandler=t.onClickInPanFn(t.dragOptions),r.on("click",t.onClickInPanHandler))};Gh.updateFramework=function(e){var t=e[this.id].domain,r=e._size,n=this.div.style;n.width=r.w*(t.x[1]-t.x[0])+"px",n.height=r.h*(t.y[1]-t.y[0])+"px",n.left=r.l+t.x[0]*r.w+"px",n.top=r.t+(1-t.y[1])*r.h+"px",this.xaxis._offset=r.l+t.x[0]*r.w,this.xaxis._length=r.w*(t.x[1]-t.x[0]),this.yaxis._offset=r.t+(1-t.y[1])*r.h,this.yaxis._length=r.h*(t.y[1]-t.y[0])};Gh.updateLayers=function(e){var t=e[this.id],r=t.layers,n=this.layerList,i;if(r.length!==n.length){for(i=0;i{"use strict";var bJ=Pr(),vWt=q_(),pWt=Kd(),IGe=Yk();RGe.exports=function(t,r,n){vWt(t,r,n,{type:"mapbox",attributes:IGe,handleDefaults:gWt,partition:"y",accessToken:r._mapboxAccessToken})};function gWt(e,t,r,n){r("accesstoken",n.accessToken),r("style"),r("center.lon"),r("center.lat"),r("zoom"),r("bearing"),r("pitch");var i=r("bounds.west"),a=r("bounds.east"),o=r("bounds.south"),s=r("bounds.north");(i===void 0||a===void 0||o===void 0||s===void 0)&&delete t.bounds,pWt(e,t,{name:"layers",handleItemDefaults:mWt}),t._input=e}function mWt(e,t){function r(l,u){return bJ.coerce(e,t,IGe.layers,l,u)}var n=r("visible");if(n){var i=r("sourcetype"),a=i==="raster"||i==="image";r("source"),r("sourceattribution"),i==="vector"&&r("sourcelayer"),i==="image"&&r("coordinates");var o;a&&(o="raster");var s=r("type",o);a&&s!=="raster"&&(s=t.type="raster",bJ.log("Source types *raster* and *image* must drawn *raster* layer type.")),r("below"),r("color"),r("opacity"),r("minzoom"),r("maxzoom"),s==="circle"&&r("circle.radius"),s==="line"&&(r("line.width"),r("line.dash")),s==="fill"&&r("fill.outlinecolor"),s==="symbol"&&(r("symbol.icon"),r("symbol.iconsize"),r("symbol.text"),bJ.coerceFont(r,"symbol.textfont",void 0,{noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}),r("symbol.textposition"),r("symbol.placement"))}}});var o7=ye(Np=>{"use strict";var FGe=mJ(),nm=Pr(),wJ=nm.strTranslate,yWt=nm.strScale,_Wt=Id().getSubplotCalcData,xWt=Wp(),bWt=qa(),zGe=So(),wWt=Zl(),TWt=PGe(),Lx="mapbox",sy=Np.constants=m1();Np.name=Lx;Np.attr="subplot";Np.idRoot=Lx;Np.idRegex=Np.attrRegex=nm.counterRegex(Lx);var AWt=["mapbox subplots and traces are deprecated!","Please consider switching to `map` subplots and traces.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");Np.attributes={subplot:{valType:"subplotid",dflt:"mapbox",editType:"calc"}};Np.layoutAttributes=Yk();Np.supplyLayoutDefaults=DGe();var qGe=!0;Np.plot=function(t){qGe&&(qGe=!1,nm.warn(AWt));var r=t._fullLayout,n=t.calcdata,i=r._subplots[Lx];if(FGe.version!==sy.requiredVersion)throw new Error(sy.wrongVersionErrorMsg);var a=SWt(t,i);FGe.accessToken=a;for(var o=0;op/2){var k=d.split("|").join("
");m.text(k).attr("data-unformatted",k).call(wWt.convertToTspans,e),b=zGe.bBox(m.node())}m.attr("transform",wJ(-3,-b.height+8)),v.insert("rect",".static-attribution").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:"rgba(255, 255, 255, 0.75)"});var M=1;b.width+6>p&&(M=p/(b.width+6));var T=[n.l+n.w*o.x[1],n.t+n.h*(1-o.y[0])];v.attr("transform",wJ(T[0],T[1])+yWt(M))}};function SWt(e,t){var r=e._fullLayout,n=e._context;if(n.mapboxAccessToken==="")return"";for(var i=[],a=[],o=!1,s=!1,l=0;l1&&nm.warn(sy.multipleTokensErrorMsg),i[0]):(a.length&&nm.log(["Listed mapbox access token(s)",a.join(","),"but did not use a Mapbox map style, ignoring token(s)."].join(" ")),"")}function OGe(e){return typeof e=="string"&&(sy.styleValuesMapbox.indexOf(e)!==-1||e.indexOf("mapbox://")===0||e.indexOf("stamen")===0)}Np.updateFx=function(e){for(var t=e._fullLayout,r=t._subplots[Lx],n=0;n{"use strict";var Wxr=["*scattermapbox* trace is deprecated!","Please consider switching to the *scattermap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");BGe.exports={attributes:$z(),supplyDefaults:JVe(),colorbar:Qd(),formatLabels:cJ(),calc:bF(),plot:fGe(),hoverPoints:i7().hoverPoints,eventData:pGe(),selectPoints:mGe(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.update(t)}},moduleType:"trace",name:"scattermapbox",basePlotModule:o7(),categories:["mapbox","gl","symbols","showLegend","scatter-like"],meta:{}}});var VGe=ye((Zxr,UGe)=>{"use strict";UGe.exports=NGe()});var TJ=ye((Yxr,GGe)=>{"use strict";var y1=o5(),MWt=Tu(),{hovertemplateAttrs:EWt,templatefallbackAttrs:kWt}=Ll(),CWt=Gl(),Px=Ao().extendFlat;GGe.exports=Px({locations:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},geojson:{valType:"any",editType:"calc"},featureidkey:Px({},y1.featureidkey,{}),below:{valType:"string",editType:"plot"},text:y1.text,hovertext:y1.hovertext,marker:{line:{color:Px({},y1.marker.line.color,{editType:"plot"}),width:Px({},y1.marker.line.width,{editType:"plot"}),editType:"calc"},opacity:Px({},y1.marker.opacity,{editType:"plot"}),editType:"calc"},selected:{marker:{opacity:Px({},y1.selected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},unselected:{marker:{opacity:Px({},y1.unselected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},hoverinfo:y1.hoverinfo,hovertemplate:EWt({},{keys:["properties"]}),hovertemplatefallback:kWt(),showlegend:Px({},CWt.showlegend,{dflt:!1})},MWt("",{cLetter:"z",editTypeOverride:"calc"}))});var jGe=ye((Kxr,HGe)=>{"use strict";var Qk=Pr(),LWt=td(),PWt=TJ();HGe.exports=function(t,r,n,i){function a(c,f){return Qk.coerce(t,r,PWt,c,f)}var o=a("locations"),s=a("z"),l=a("geojson");if(!Qk.isArrayOrTypedArray(o)||!o.length||!Qk.isArrayOrTypedArray(s)||!s.length||!(typeof l=="string"&&l!==""||Qk.isPlainObject(l))){r.visible=!1;return}a("featureidkey"),r._length=Math.min(o.length,s.length),a("below"),a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback");var u=a("marker.line.width");u&&a("marker.line.color"),a("marker.opacity"),LWt(t,r,i,a,{prefix:"",cLetter:"z"}),Qk.coerceSelectionMarkerOpacity(r,a)}});var AJ=ye((Jxr,ZGe)=>{"use strict";var IWt=Eo(),_1=Pr(),RWt=tc(),DWt=So(),FWt=fx().makeBlank,WGe=dx();function zWt(e){var t=e[0].trace,r=t.visible===!0&&t._length!==0,n={layout:{visibility:"none"},paint:{}},i={layout:{visibility:"none"},paint:{}},a=t._opts={fill:n,line:i,geojson:FWt()};if(!r)return a;var o=WGe.extractTraceFeature(e);if(!o)return a;var s=RWt.makeColorScaleFuncFromTrace(t),l=t.marker,u=l.line||{},c;_1.isArrayOrTypedArray(l.opacity)&&(c=function(k){var M=k.mo;return IWt(M)?+_1.constrain(M,0,1):0});var f;_1.isArrayOrTypedArray(u.color)&&(f=function(k){return k.mlc});var h;_1.isArrayOrTypedArray(u.width)&&(h=function(k){return k.mlw});for(var d=0;d{"use strict";var KGe=AJ().convert,qWt=AJ().convertOnSelect,YGe=m1().traceLayerPrefix;function JGe(e,t){this.type="choroplethmapbox",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["fill",YGe+t+"-fill"],["line",YGe+t+"-line"]],this.below=null}var P5=JGe.prototype;P5.update=function(e){this._update(KGe(e)),e[0].trace._glTrace=this};P5.updateOnSelect=function(e){this._update(qWt(e))};P5._update=function(e){var t=this.subplot,r=this.layerList,n=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(e.geojson),n!==this.below&&(this._removeLayers(),this._addLayers(e,n),this.below=n);for(var i=0;i=0;r--)e.removeLayer(t[r][1])};P5.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};$Ge.exports=function(t,r){var n=r[0].trace,i=new JGe(t,n.uid),a=i.sourceId,o=KGe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),r[0].trace._glTrace=i,i}});var tHe=ye((ebr,eHe)=>{"use strict";var Qxr=["*choroplethmapbox* trace is deprecated!","Please consider switching to the *choroplethmap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");eHe.exports={attributes:TJ(),supplyDefaults:jGe(),colorbar:D_(),calc:VF(),plot:QGe(),hoverPoints:HF(),eventData:jF(),selectPoints:WF(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.updateOnSelect(t)}},getBelow:function(e,t){for(var r=t.getMapLayers(),n=r.length-2;n>=0;n--){var i=r[n].id;if(typeof i=="string"&&i.indexOf("water")===0){for(var a=n+1;a{"use strict";rHe.exports=tHe()});var MJ=ye((rbr,aHe)=>{"use strict";var OWt=Tu(),{hovertemplateAttrs:BWt,templatefallbackAttrs:NWt}=Ll(),nHe=Gl(),s7=$z(),SJ=Ao().extendFlat;aHe.exports=SJ({lon:s7.lon,lat:s7.lat,z:{valType:"data_array",editType:"calc"},radius:{valType:"number",editType:"plot",arrayOk:!0,min:1,dflt:30},below:{valType:"string",editType:"plot"},text:s7.text,hovertext:s7.hovertext,hoverinfo:SJ({},nHe.hoverinfo,{flags:["lon","lat","z","text","name"]}),hovertemplate:BWt(),hovertemplatefallback:NWt(),showlegend:SJ({},nHe.showlegend,{dflt:!1})},OWt("",{cLetter:"z",editTypeOverride:"calc"}))});var sHe=ye((ibr,oHe)=>{"use strict";var UWt=Pr(),VWt=td(),GWt=MJ();oHe.exports=function(t,r,n,i){function a(u,c){return UWt.coerce(t,r,GWt,u,c)}var o=a("lon")||[],s=a("lat")||[],l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("z"),a("radius"),a("below"),a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),VWt(t,r,i,a,{prefix:"",cLetter:"z"})}});var cHe=ye((nbr,uHe)=>{"use strict";var EJ=Eo(),HWt=Pr().isArrayOrTypedArray,kJ=fs().BADNUM,jWt=gv(),lHe=Pr()._;uHe.exports=function(t,r){for(var n=r._length,i=new Array(n),a=r.z,o=HWt(a)&&a.length,s=0;s{"use strict";var WWt=Eo(),CJ=Pr(),fHe=ka(),hHe=tc(),dHe=fs().BADNUM,XWt=fx().makeBlank;vHe.exports=function(t){var r=t[0].trace,n=r.visible===!0&&r._length!==0,i={layout:{visibility:"none"},paint:{}},a=r._opts={heatmap:i,geojson:XWt()};if(!n)return a;var o=[],s,l=r.z,u=r.radius,c=CJ.isArrayOrTypedArray(l)&&l.length,f=CJ.isArrayOrTypedArray(u);for(s=0;s0?+u[s]:0),o.push({type:"Feature",geometry:{type:"Point",coordinates:d},properties:v})}}var b=hHe.extractOpts(r),p=b.reversescale?hHe.flipScale(b.colorscale):b.colorscale,k=p[0][1],M=fHe.opacity(k)<1?k:fHe.addOpacity(k,0),T=["interpolate",["linear"],["heatmap-density"],0,M];for(s=1;s{"use strict";var gHe=pHe(),ZWt=m1().traceLayerPrefix;function mHe(e,t){this.type="densitymapbox",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["heatmap",ZWt+t+"-heatmap"]],this.below=null}var l7=mHe.prototype;l7.update=function(e){var t=this.subplot,r=this.layerList,n=gHe(e),i=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(n.geojson),i!==this.below&&(this._removeLayers(),this._addLayers(n,i),this.below=i);for(var a=0;a=0;r--)e.removeLayer(t[r][1])};l7.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};yHe.exports=function(t,r){var n=r[0].trace,i=new mHe(t,n.uid),a=i.sourceId,o=gHe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),i}});var bHe=ye((sbr,xHe)=>{"use strict";var YWt=ho(),KWt=i7().hoverPoints,JWt=i7().getExtraText;xHe.exports=function(t,r,n){var i=KWt(t,r,n);if(i){var a=i[0],o=a.cd,s=o[0].trace,l=o[a.index];if(delete a.color,"z"in l){var u=a.subplot.mockAxis;a.z=l.z,a.zLabel=YWt.tickText(u,u.c2l(l.z),"hover").text}return a.extraText=JWt(s,l,o[0].t.labels),[a]}}});var THe=ye((lbr,wHe)=>{"use strict";wHe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t.z=r.z,t}});var SHe=ye((cbr,AHe)=>{"use strict";var ubr=["*densitymapbox* trace is deprecated!","Please consider switching to the *densitymap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");AHe.exports={attributes:MJ(),supplyDefaults:sHe(),colorbar:D_(),formatLabels:cJ(),calc:cHe(),plot:_He(),hoverPoints:bHe(),eventData:THe(),getBelow:function(e,t){for(var r=t.getMapLayers(),n=0;n{"use strict";MHe.exports=SHe()});var CHe=ye((hbr,kHe)=>{kHe.exports={version:8,name:"orto",metadata:{"maputnik:renderer":"mlgljs"},center:[1.537786,41.837539],zoom:12,bearing:0,pitch:0,light:{anchor:"viewport",color:"white",intensity:.4,position:[1.15,45,30]},sources:{ortoEsri:{type:"raster",tiles:["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],tileSize:256,maxzoom:18,attribution:"ESRI © ESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}},{id:"waterway_tunnel",type:"line",source:"openmaptiles","source-layer":"waterway",minzoom:14,filter:["all",["in","class","river","stream","canal"],["==","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]},"line-dasharray":[2,4]}},{id:"waterway-other",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["!in","class","canal","river","stream"],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,2]]}}},{id:"waterway-stream-canal",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["in","class","canal","stream"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]}}},{id:"waterway-river",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["==","class","river"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.2,stops:[[10,.8],[20,4]]},"line-opacity":.5}},{id:"water-offset",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",maxzoom:8,filter:["==","$type","Polygon"],layout:{visibility:"visible"},paint:{"fill-opacity":0,"fill-color":"#a0c8f0","fill-translate":{base:1,stops:[[6,[2,0]],[8,[0,0]]]}}},{id:"water",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-color":"hsl(210, 67%, 85%)","fill-opacity":0}},{id:"water-pattern",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-translate":[0,2.5],"fill-pattern":"wave","fill-opacity":1}},{id:"landcover-ice-shelf",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"landcover",filter:["==","subclass","ice_shelf"],layout:{visibility:"visible"},paint:{"fill-color":"#fff","fill-opacity":{base:1,stops:[[0,.9],[10,.3]]}}},{id:"tunnel-service-track-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[15,1],[16,4],[20,11]]}}},{id:"tunnel-minor-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,1]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"tunnel-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"tunnel-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.7}},{id:"tunnel-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"tunnel-path",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"tunnel-service-track",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-width":{base:1.2,stops:[[15.5,0],[16,2],[20,7.5]]}}},{id:"tunnel-minor",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor_road"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-opacity":1,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"tunnel-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,10]]}}},{id:"tunnel-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-motorway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#ffdaa6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-railway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]},"line-dasharray":[2,2]}},{id:"ferry",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["in","class","ferry"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(108, 159, 182, 1)","line-width":1.1,"line-dasharray":[2,2]}},{id:"aeroway-taxiway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","taxiway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,2],[17,12]]},"line-opacity":1}},{id:"aeroway-runway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","runway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,5],[17,55]]},"line-opacity":1}},{id:"aeroway-taxiway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:4,filter:["all",["in","class","taxiway"],["==","$type","LineString"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(255, 255, 255, 1)","line-width":{base:1.5,stops:[[11,1],[17,10]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{id:"aeroway-runway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:4,filter:["all",["in","class","runway"],["==","$type","LineString"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(255, 255, 255, 1)","line-width":{base:1.5,stops:[[11,4],[17,50]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{id:"highway-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-minor-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,0]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"highway-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":.5,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"highway-primary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[7,0],[8,.6]]},"line-width":{base:1.2,stops:[[7,0],[8,.6],[9,1.5],[20,22]]}}},{id:"highway-trunk-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[5,0],[6,.5]]},"line-width":{base:1.2,stops:[[5,0],[6,.6],[7,1.5],[20,22]]}}},{id:"highway-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:4,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[4,0],[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":{stops:[[4,0],[5,.5]]}}},{id:"highway-path",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"highway-motorway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-minor",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fff","line-opacity":.5,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"highway-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[8,.5],[20,13]]},"line-opacity":.5}},{id:"highway-primary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[8.5,0],[9,.5],[20,18]]},"line-opacity":0}},{id:"highway-trunk",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"highway-motorway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"railway-transit",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-transit-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway-service",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-service-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"railway-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"bridge-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,28]]}}},{id:"bridge-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(28, 76%, 67%)","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,26]]}}},{id:"bridge-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"bridge-path-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#f8f4f0","line-width":{base:1.2,stops:[[15,1.2],[20,18]]}}},{id:"bridge-path",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#cba","line-width":{base:1.2,stops:[[15,1.2],[20,4]]},"line-dasharray":[1.5,.75]}},{id:"bridge-motorway-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,20]]}}},{id:"bridge-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]}}},{id:"bridge-motorway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"bridge-railway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"bridge-railway-hatching",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"cablecar",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,1],[19,2.5]]}}},{id:"cablecar-dash",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,3],[19,5.5]]},"line-dasharray":[2,3]}},{id:"boundary-land-level-4",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",[">=","admin_level",4],["<=","admin_level",8],["!=","maritime",1]],layout:{"line-join":"round"},paint:{"line-color":"#9e9cab","line-dasharray":[3,1,1,1],"line-width":{base:1.4,stops:[[4,.4],[5,1],[12,3]]},"line-opacity":.6}},{id:"boundary-land-level-2",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["==","admin_level",2],["!=","maritime",1],["!=","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 66%)","line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,2]]}}},{id:"boundary-land-disputed",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["!=","maritime",1],["==","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 70%)","line-dasharray":[1,3],"line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,8]]}}},{id:"boundary-water",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["in","admin_level",2,4],["==","maritime",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"rgba(154, 189, 214, 1)","line-width":{base:1,stops:[[0,.6],[4,1],[5,1],[12,1]]},"line-opacity":{stops:[[6,0],[10,0]]}}},{id:"waterway-name",type:"symbol",source:"openmaptiles","source-layer":"waterway",minzoom:13,filter:["all",["==","$type","LineString"],["has","name"]],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin} {name:nonlatin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","text-letter-spacing":.2,"symbol-spacing":350},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-lakeline",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["==","$type","LineString"],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","symbol-spacing":350,"text-letter-spacing":.2},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-ocean",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["all",["==","$type","Point"],["==","class","ocean"]],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":.2},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-other",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["all",["==","$type","Point"],["!in","class","ocean"]],layout:{"text-font":["Noto Sans Italic"],"text-size":{stops:[[0,10],[6,14]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":.2,visibility:"visible"},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"poi-level-3",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:16,filter:["all",["==","$type","Point"],[">=","rank",25]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":12,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"poi-level-2",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:15,filter:["all",["==","$type","Point"],["<=","rank",24],[">=","rank",15]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":12,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"poi-level-1",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:14,filter:["all",["==","$type","Point"],["<=","rank",14],["has","name"]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":11,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"rgba(191, 228, 172, 1)","text-halo-width":1,"text-halo-color":"rgba(30, 29, 29, 1)"}},{id:"poi-railway",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:13,filter:["all",["==","$type","Point"],["has","name"],["==","class","railway"],["==","subclass","station"]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":12,"text-max-width":9,"icon-optional":!1,"icon-ignore-placement":!1,"icon-allow-overlap":!1,"text-ignore-placement":!1,"text-allow-overlap":!1,"text-optional":!0},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"road_oneway",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:15,filter:["all",["==","oneway",1],["in","class","motorway","trunk","primary","secondary","tertiary","minor","service"]],layout:{"symbol-placement":"line","icon-image":"oneway","symbol-spacing":75,"icon-padding":2,"icon-rotation-alignment":"map","icon-rotate":90,"icon-size":{stops:[[15,.5],[19,1]]}},paint:{"icon-opacity":.5}},{id:"road_oneway_opposite",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:15,filter:["all",["==","oneway",-1],["in","class","motorway","trunk","primary","secondary","tertiary","minor","service"]],layout:{"symbol-placement":"line","icon-image":"oneway","symbol-spacing":75,"icon-padding":2,"icon-rotation-alignment":"map","icon-rotate":-90,"icon-size":{stops:[[15,.5],[19,1]]}},paint:{"icon-opacity":.5}},{id:"highway-name-path",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15.5,filter:["==","class","path"],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-color":"#f8f4f0","text-color":"hsl(30, 23%, 62%)","text-halo-width":.5}},{id:"highway-name-minor",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15,filter:["all",["==","$type","LineString"],["in","class","minor","service","track"]],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-blur":.5,"text-color":"#765","text-halo-width":1}},{id:"highway-name-major",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:12.2,filter:["in","class","primary","secondary","tertiary","trunk"],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-blur":.5,"text-color":"#765","text-halo-width":1}},{id:"highway-shield",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:8,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["!in","network","us-interstate","us-highway","us-state"]],layout:{"text-size":10,"icon-image":"road_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[10,"point"],[11,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-opacity":1,"text-color":"rgba(20, 19, 19, 1)","text-halo-color":"rgba(230, 221, 221, 0)","text-halo-width":2,"icon-color":"rgba(183, 18, 18, 1)","icon-opacity":.3,"icon-halo-color":"rgba(183, 55, 55, 0)"}},{id:"highway-shield-us-interstate",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:7,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["in","network","us-interstate"]],layout:{"text-size":10,"icon-image":"{network}_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[7,"point"],[7,"line"],[8,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-color":"rgba(0, 0, 0, 1)"}},{id:"highway-shield-us-other",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:9,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["in","network","us-highway","us-state"]],layout:{"text-size":10,"icon-image":"{network}_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[10,"point"],[11,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-color":"rgba(0, 0, 0, 1)"}},{id:"place-other",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",minzoom:12,filter:["!in","class","city","town","village","country","continent"],layout:{"text-letter-spacing":.1,"text-size":{base:1.2,stops:[[12,10],[15,14]]},"text-font":["Noto Sans Bold"],"text-field":`{name:latin} +{name:nonlatin}`,"text-transform":"uppercase","text-max-width":9,visibility:"visible"},paint:{"text-color":"rgba(255,255,255,1)","text-halo-width":1.2,"text-halo-color":"rgba(57, 28, 28, 1)"}},{id:"place-village",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",minzoom:10,filter:["==","class","village"],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[10,12],[15,16]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(10, 9, 9, 0.8)"}},{id:"place-town",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["==","class","town"],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[10,14],[15,24]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(22, 22, 22, 0.8)"}},{id:"place-city",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["!=","capital",2],["==","class","city"]],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[7,14],[11,24]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(0, 0, 0, 1)","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-city-capital",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","capital",2],["==","class","city"]],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[7,14],[11,24]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,"icon-image":"star_11","text-offset":[.4,0],"icon-size":.8,"text-anchor":"left",visibility:"visible"},paint:{"text-color":"#333","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-other",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["!has","iso_a2"]],layout:{"text-font":["Noto Sans Italic"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-3",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-2",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",2],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[2,11],[5,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-1",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",1],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[1,11],[4,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-continent",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",maxzoom:1,filter:["==","class","continent"],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":14,"text-max-width":6.25,"text-transform":"uppercase",visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}}],id:"qebnlkra6"}});var PHe=ye((dbr,LHe)=>{LHe.exports={version:8,name:"orto",metadata:{},center:[1.537786,41.837539],zoom:12,bearing:0,pitch:0,light:{anchor:"viewport",color:"white",intensity:.4,position:[1.15,45,30]},sources:{ortoEsri:{type:"raster",tiles:["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],tileSize:256,maxzoom:18,attribution:"ESRI © ESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}}]}});var Ix=ye((vbr,zHe)=>{"use strict";var $Wt=t_(),QWt=CHe(),eXt=PHe(),tXt='\xA9 OpenStreetMap contributors',IHe="https://basemaps.cartocdn.com/gl/positron-gl-style/style.json",RHe="https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",u7="https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json",rXt="https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json",iXt="https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json",nXt="https://basemaps.cartocdn.com/gl/voyager-nolabels-gl-style/style.json",FHe={basic:u7,streets:u7,outdoors:u7,light:IHe,dark:RHe,satellite:eXt,"satellite-streets":QWt,"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:tXt,tiles:["https://tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-osm-tiles",type:"raster",source:"plotly-osm-tiles",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"white-bg":{id:"white-bg",version:8,sources:{},layers:[{id:"white-bg",type:"background",paint:{"background-color":"#FFFFFF"},minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":IHe,"carto-darkmatter":RHe,"carto-voyager":u7,"carto-positron-nolabels":rXt,"carto-darkmatter-nolabels":iXt,"carto-voyager-nolabels":nXt},DHe=$Wt(FHe);zHe.exports={styleValueDflt:"basic",stylesMap:FHe,styleValuesMap:DHe,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",missingStyleErrorMsg:["No valid maplibre style found, please set `map.style` to one of:",DHe.join(", "),"or use a tile service."].join(` +`),mapOnErrorMsg:"Map error."}});var eC=ye((pbr,UHe)=>{"use strict";var qHe=Pr(),OHe=ka().defaultLine,aXt=Cc().attributes,oXt=ec(),sXt=pf().textposition,lXt=mc().overrideAll,uXt=vl().templatedArray,BHe=Ix(),NHe=oXt({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});NHe.family.dflt="Open Sans Regular, Arial Unicode MS Regular";var cXt=UHe.exports=lXt({_arrayAttrRegexps:[qHe.counterRegex("map",".layers",!0)],domain:aXt({name:"map"}),style:{valType:"any",values:BHe.styleValuesMap,dflt:BHe.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:uXt("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:OHe},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:OHe}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:NHe,textposition:qHe.extendFlat({},sXt,{arrayOk:!1})}})},"plot","from-root");cXt.uirevision={valType:"any",editType:"none"}});var c7=ye((gbr,jHe)=>{"use strict";var{hovertemplateAttrs:fXt,texttemplateAttrs:hXt,templatefallbackAttrs:VHe}=Ll(),dXt=Pg(),tC=tw(),I5=pf(),GHe=eC(),vXt=Gl(),pXt=Tu(),pw=Ao().extendFlat,gXt=mc().overrideAll,mXt=eC(),HHe=tC.line,R5=tC.marker;jHe.exports=gXt({lon:tC.lon,lat:tC.lat,cluster:{enabled:{valType:"boolean"},maxzoom:pw({},mXt.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:pw({},R5.opacity,{dflt:1})},mode:pw({},I5.mode,{dflt:"markers"}),text:pw({},I5.text,{}),texttemplate:hXt({editType:"plot"},{keys:["lat","lon","text"]}),texttemplatefallback:VHe({editType:"plot"}),hovertext:pw({},I5.hovertext,{}),line:{color:HHe.color,width:HHe.width},connectgaps:I5.connectgaps,marker:pw({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:R5.opacity,size:R5.size,sizeref:R5.sizeref,sizemin:R5.sizemin,sizemode:R5.sizemode},pXt("marker")),fill:tC.fill,fillcolor:dXt(),textfont:GHe.layers.symbol.textfont,textposition:GHe.layers.symbol.textposition,below:{valType:"string"},selected:{marker:I5.selected.marker},unselected:{marker:I5.unselected.marker},hoverinfo:pw({},vXt.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:fXt(),hovertemplatefallback:VHe()},"calc","nested")});var LJ=ye((mbr,WHe)=>{"use strict";var yXt=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];WHe.exports={isSupportedFont:function(e){return yXt.indexOf(e)!==-1}}});var YHe=ye((ybr,ZHe)=>{"use strict";var rC=Pr(),PJ=Ru(),_Xt=$p(),xXt=D0(),bXt=F0(),wXt=Fg(),XHe=c7(),TXt=LJ().isSupportedFont;ZHe.exports=function(t,r,n,i){function a(p,k){return rC.coerce(t,r,XHe,p,k)}function o(p,k){return rC.coerce2(t,r,XHe,p,k)}var s=AXt(t,r,a);if(!s){r.visible=!1;return}if(a("text"),a("texttemplate"),a("texttemplatefallback"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),a("mode"),a("below"),PJ.hasMarkers(r)){_Xt(t,r,n,i,a,{noLine:!0,noAngle:!0}),a("marker.allowoverlap"),a("marker.angle");var l=r.marker;l.symbol!=="circle"&&(rC.isArrayOrTypedArray(l.size)&&(l.size=l.size[0]),rC.isArrayOrTypedArray(l.color)&&(l.color=l.color[0]))}PJ.hasLines(r)&&(xXt(t,r,n,i,a,{noDash:!0}),a("connectgaps"));var u=o("cluster.maxzoom"),c=o("cluster.step"),f=o("cluster.color",r.marker&&r.marker.color||n),h=o("cluster.size"),d=o("cluster.opacity"),v=u!==!1||c!==!1||f!==!1||h!==!1||d!==!1,m=a("cluster.enabled",v);if(m||PJ.hasText(r)){var b=i.font.family;bXt(t,r,i,a,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:TXt(b)?b:"Open Sans Regular",weight:i.font.weight,style:i.font.style,size:i.font.size,color:i.font.color}})}a("fill"),r.fill!=="none"&&wXt(t,r,n,a),rC.coerceSelectionMarkerOpacity(r,a)};function AXt(e,t,r){var n=r("lon")||[],i=r("lat")||[],a=Math.min(n.length,i.length);return t._length=a,a}});var IJ=ye((_br,JHe)=>{"use strict";var KHe=ho();JHe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=KHe.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=KHe.tickText(o,o.c2l(s[1]),!0).text,i}});var RJ=ye((xbr,QHe)=>{"use strict";var $He=Pr();QHe.exports=function(t,r){var n=t.split(" "),i=n[0],a=n[1],o=$He.isArrayOrTypedArray(r)?$He.mean(r):r,s=.5+o/100,l=1.5+o/100,u=["",""],c=[0,0];switch(i){case"top":u[0]="top",c[1]=-l;break;case"bottom":u[0]="bottom",c[1]=l;break}switch(a){case"left":u[1]="right",c[0]=-s;break;case"right":u[1]="left",c[0]=s;break}var f;return u[0]&&u[1]?f=u.join("-"):u[0]?f=u[0]:u[1]?f=u[1]:f="center",{anchor:f,offset:c}}});var aje=ye((bbr,nje)=>{"use strict";var rje=Eo(),sv=Pr(),SXt=fs().BADNUM,h7=fx(),eje=tc(),MXt=So(),EXt=B3(),d7=Ru(),kXt=LJ().isSupportedFont,CXt=RJ(),LXt=ip().appendArrayPointValue,PXt=Zl().NEWLINES,IXt=Zl().BR_TAG_ALL;nje.exports=function(t,r){var n=r[0].trace,i=n.visible===!0&&n._length!==0,a=n.fill!=="none",o=d7.hasLines(n),s=d7.hasMarkers(n),l=d7.hasText(n),u=s&&n.marker.symbol==="circle",c=s&&n.marker.symbol!=="circle",f=n.cluster&&n.cluster.enabled,h=f7("fill"),d=f7("line"),v=f7("circle"),m=f7("symbol"),b={fill:h,line:d,circle:v,symbol:m};if(!i)return b;var p;if((a||o)&&(p=h7.calcTraceToLineCoords(r)),a&&(h.geojson=h7.makePolygon(p),h.layout.visibility="visible",sv.extendFlat(h.paint,{"fill-color":n.fillcolor})),o&&(d.geojson=h7.makeLine(p),d.layout.visibility="visible",sv.extendFlat(d.paint,{"line-width":n.line.width,"line-color":n.line.color,"line-opacity":n.opacity})),u){var k=RXt(r);v.geojson=k.geojson,v.layout.visibility="visible",f&&(v.filter=["!",["has","point_count"]],b.cluster={type:"circle",filter:["has","point_count"],layout:{visibility:"visible"},paint:{"circle-color":FJ(n.cluster.color,n.cluster.step),"circle-radius":FJ(n.cluster.size,n.cluster.step),"circle-opacity":FJ(n.cluster.opacity,n.cluster.step)}},b.clusterCount={type:"symbol",filter:["has","point_count"],paint:{},layout:{"text-field":"{point_count_abbreviated}","text-font":tje(n),"text-size":12}}),sv.extendFlat(v.paint,{"circle-color":k.mcc,"circle-radius":k.mrc,"circle-opacity":k.mo})}if(u&&f&&(v.filter=["!",["has","point_count"]]),(c||l)&&(m.geojson=DXt(r,t),sv.extendFlat(m.layout,{visibility:"visible","icon-image":"{symbol}-15","text-field":"{text}"}),c&&(sv.extendFlat(m.layout,{"icon-size":n.marker.size/10}),"angle"in n.marker&&n.marker.angle!=="auto"&&sv.extendFlat(m.layout,{"icon-rotate":{type:"identity",property:"angle"},"icon-rotation-alignment":"map"}),m.layout["icon-allow-overlap"]=n.marker.allowoverlap,sv.extendFlat(m.paint,{"icon-opacity":n.opacity*n.marker.opacity,"icon-color":n.marker.color})),l)){var M=(n.marker||{}).size,T=CXt(n.textposition,M);sv.extendFlat(m.layout,{"text-size":n.textfont.size,"text-anchor":T.anchor,"text-offset":T.offset,"text-font":tje(n)}),sv.extendFlat(m.paint,{"text-color":n.textfont.color,"text-opacity":n.opacity})}return b};function f7(e){return{type:e,geojson:h7.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function RXt(e){var t=e[0].trace,r=t.marker,n=t.selectedpoints,i=sv.isArrayOrTypedArray(r.color),a=sv.isArrayOrTypedArray(r.size),o=sv.isArrayOrTypedArray(r.opacity),s;function l(M){return t.opacity*M}function u(M){return M/2}var c;i&&(eje.hasColorscale(t,"marker")?c=eje.makeColorScaleFuncFromTrace(r):c=sv.identity);var f;a&&(f=EXt(t));var h;o&&(h=function(M){var T=rje(M)?+sv.constrain(M,0,1):0;return l(T)});var d=[];for(s=0;s850?s+=" Black":i>750?s+=" Extra Bold":i>650?s+=" Bold":i>550?s+=" Semi Bold":i>450?s+=" Medium":i>350?s+=" Regular":i>250?s+=" Light":i>150?s+=" Extra Light":s+=" Thin"):a.slice(0,2).join(" ")==="Open Sans"?(s="Open Sans",i>750?s+=" Extrabold":i>650?s+=" Bold":i>550?s+=" Semibold":i>350?s+=" Regular":s+=" Light"):a.slice(0,3).join(" ")==="Klokantech Noto Sans"&&(s="Klokantech Noto Sans",a[3]==="CJK"&&(s+=" CJK"),s+=i>500?" Bold":" Regular")),o&&(s+=" Italic"),s==="Open Sans Regular Italic"?s="Open Sans Italic":s==="Open Sans Regular Bold"?s="Open Sans Bold":s==="Open Sans Regular Bold Italic"?s="Open Sans Bold Italic":s==="Klokantech Noto Sans Regular Italic"&&(s="Klokantech Noto Sans Italic"),kXt(s)||(s=r);var l=s.split(", ");return l}});var uje=ye((wbr,lje)=>{"use strict";var FXt=Pr(),oje=aje(),D5=Ix().traceLayerPrefix,og={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function sje(e,t,r,n){this.type="scattermap",this.subplot=e,this.uid=t,this.clusterEnabled=r,this.isHidden=n,this.sourceIds={fill:"source-"+t+"-fill",line:"source-"+t+"-line",circle:"source-"+t+"-circle",symbol:"source-"+t+"-symbol",cluster:"source-"+t+"-circle",clusterCount:"source-"+t+"-circle"},this.layerIds={fill:D5+t+"-fill",line:D5+t+"-line",circle:D5+t+"-circle",symbol:D5+t+"-symbol",cluster:D5+t+"-cluster",clusterCount:D5+t+"-cluster-count"},this.below=null}var iC=sje.prototype;iC.addSource=function(e,t,r){var n={type:"geojson",data:t.geojson};r&&r.enabled&&FXt.extendFlat(n,{cluster:!0,clusterMaxZoom:r.maxzoom});var i=this.subplot.map.getSource(this.sourceIds[e]);i?i.setData(t.geojson):this.subplot.map.addSource(this.sourceIds[e],n)};iC.setSourceData=function(e,t){this.subplot.map.getSource(this.sourceIds[e]).setData(t.geojson)};iC.addLayer=function(e,t,r){var n={type:t.type,id:this.layerIds[e],source:this.sourceIds[e],layout:t.layout,paint:t.paint};t.filter&&(n.filter=t.filter);for(var i=this.layerIds[e],a,o=this.subplot.getMapLayers(),s=0;s=0;L--){var x=T[L];i.removeLayer(u.layerIds[x])}M||i.removeSource(u.sourceIds.circle)}function h(M){for(var T=og.nonCluster,L=0;L=0;L--){var x=T[L];i.removeLayer(u.layerIds[x]),M||i.removeSource(u.sourceIds[x])}}function v(M){l?f(M):d(M)}function m(M){s?c(M):h(M)}function b(){for(var M=s?og.cluster:og.nonCluster,T=0;T=0;n--){var i=r[n];t.removeLayer(this.layerIds[i]),t.removeSource(this.sourceIds[i])}};lje.exports=function(t,r){var n=r[0].trace,i=n.cluster&&n.cluster.enabled,a=n.visible!==!0,o=new sje(t,n.uid,i,a),s=oje(t.gd,r),l=o.below=t.belowLookup["trace-"+n.uid],u,c,f;if(i)for(o.addSource("circle",s.circle,n.cluster),u=0;u{"use strict";var zXt=ef(),zJ=Pr(),qXt=yT(),OXt=zJ.fillText,BXt=fs().BADNUM,NXt=Ix().traceLayerPrefix;function UXt(e,t,r){var n=e.cd,i=n[0].trace,a=e.xa,o=e.ya,s=e.subplot,l=[],u=NXt+i.uid+"-circle",c=i.cluster&&i.cluster.enabled;if(c){var f=s.map.queryRenderedFeatures(null,{layers:[u]});l=f.map(function(S){return S.id})}var h=t>=0?Math.floor((t+180)/360):Math.ceil((t-180)/360),d=h*360,v=t-d;function m(S){var g=S.lonlat;if(g[0]===BXt||c&&l.indexOf(S.i+1)===-1)return 1/0;var P=zJ.modHalf(g[0],360),E=g[1],z=s.project([P,E]),q=z.x-a.c2p([v,E]),V=z.y-o.c2p([P,r]),G=Math.max(3,S.mrc||0);return Math.max(Math.sqrt(q*q+V*V)-G,1-3/G)}if(zXt.getClosest(n,m,e),e.index!==!1){var b=n[e.index],p=b.lonlat,k=[zJ.modHalf(p[0],360)+d,p[1]],M=a.c2p(k),T=o.c2p(k),L=b.mrc||1;e.x0=M-L,e.x1=M+L,e.y0=T-L,e.y1=T+L;var x={};x[i.subplot]={_subplot:s};var C=i._module.formatLabels(b,i,x);return e.lonLabel=C.lonLabel,e.latLabel=C.latLabel,e.color=qXt(i,b),e.extraText=cje(i,b,n[0].t.labels),e.hovertemplate=i.hovertemplate,[e]}}function cje(e,t,r){if(e.hovertemplate)return;var n=t.hi||e.hoverinfo,i=n.split("+"),a=i.indexOf("all")!==-1,o=i.indexOf("lon")!==-1,s=i.indexOf("lat")!==-1,l=t.lonlat,u=[];function c(f){return f+"\xB0"}return a||o&&s?u.push("("+c(l[1])+", "+c(l[0])+")"):o?u.push(r.lon+c(l[0])):s&&u.push(r.lat+c(l[1])),(a||i.indexOf("text")!==-1)&&OXt(t,e,u),u.join("
")}fje.exports={hoverPoints:UXt,getExtraText:cje}});var dje=ye((Abr,hje)=>{"use strict";hje.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t}});var pje=ye((Sbr,vje)=>{"use strict";var VXt=Pr(),GXt=Ru(),HXt=fs().BADNUM;vje.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l;if(!GXt.hasMarkers(s))return[];if(r===!1)for(l=0;l{(function(e,t){typeof qJ=="object"&&typeof OJ!="undefined"?OJ.exports=t():(e=typeof globalThis!="undefined"?globalThis:e||self,e.maplibregl=t())})(qJ,function(){"use strict";var e={},t={};function r(i,a,o){if(t[i]=o,i==="index"){var s="var sharedModule = {}; ("+t.shared+")(sharedModule); ("+t.worker+")(sharedModule);",l={};return t.shared(l),t.index(e,l),typeof window!="undefined"&&e.setWorkerUrl(window.URL.createObjectURL(new Blob([s],{type:"text/javascript"}))),e}}r("shared",["exports"],function(i){"use strict";function a(R,A,F,W){return new(F||(F=Promise))(function(te,fe){function pe(ft){try{Ke(W.next(ft))}catch(Rt){fe(Rt)}}function Re(ft){try{Ke(W.throw(ft))}catch(Rt){fe(Rt)}}function Ke(ft){var Rt;ft.done?te(ft.value):(Rt=ft.value,Rt instanceof F?Rt:new F(function(er){er(Rt)})).then(pe,Re)}Ke((W=W.apply(R,A||[])).next())})}function o(R){return R&&R.__esModule&&Object.prototype.hasOwnProperty.call(R,"default")?R.default:R}typeof SuppressedError=="function"&&SuppressedError;var s=l;function l(R,A){this.x=R,this.y=A}l.prototype={clone:function(){return new l(this.x,this.y)},add:function(R){return this.clone()._add(R)},sub:function(R){return this.clone()._sub(R)},multByPoint:function(R){return this.clone()._multByPoint(R)},divByPoint:function(R){return this.clone()._divByPoint(R)},mult:function(R){return this.clone()._mult(R)},div:function(R){return this.clone()._div(R)},rotate:function(R){return this.clone()._rotate(R)},rotateAround:function(R,A){return this.clone()._rotateAround(R,A)},matMult:function(R){return this.clone()._matMult(R)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(R){return this.x===R.x&&this.y===R.y},dist:function(R){return Math.sqrt(this.distSqr(R))},distSqr:function(R){var A=R.x-this.x,F=R.y-this.y;return A*A+F*F},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(R){return Math.atan2(this.y-R.y,this.x-R.x)},angleWith:function(R){return this.angleWithSep(R.x,R.y)},angleWithSep:function(R,A){return Math.atan2(this.x*A-this.y*R,this.x*R+this.y*A)},_matMult:function(R){var A=R[2]*this.x+R[3]*this.y;return this.x=R[0]*this.x+R[1]*this.y,this.y=A,this},_add:function(R){return this.x+=R.x,this.y+=R.y,this},_sub:function(R){return this.x-=R.x,this.y-=R.y,this},_mult:function(R){return this.x*=R,this.y*=R,this},_div:function(R){return this.x/=R,this.y/=R,this},_multByPoint:function(R){return this.x*=R.x,this.y*=R.y,this},_divByPoint:function(R){return this.x/=R.x,this.y/=R.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var R=this.y;return this.y=this.x,this.x=-R,this},_rotate:function(R){var A=Math.cos(R),F=Math.sin(R),W=F*this.x+A*this.y;return this.x=A*this.x-F*this.y,this.y=W,this},_rotateAround:function(R,A){var F=Math.cos(R),W=Math.sin(R),te=A.y+W*(this.x-A.x)+F*(this.y-A.y);return this.x=A.x+F*(this.x-A.x)-W*(this.y-A.y),this.y=te,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},l.convert=function(R){return R instanceof l?R:Array.isArray(R)?new l(R[0],R[1]):R};var u=o(s),c=f;function f(R,A,F,W){this.cx=3*R,this.bx=3*(F-R)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*A,this.by=3*(W-A)-this.cy,this.ay=1-this.cy-this.by,this.p1x=R,this.p1y=A,this.p2x=F,this.p2y=W}f.prototype={sampleCurveX:function(R){return((this.ax*R+this.bx)*R+this.cx)*R},sampleCurveY:function(R){return((this.ay*R+this.by)*R+this.cy)*R},sampleCurveDerivativeX:function(R){return(3*this.ax*R+2*this.bx)*R+this.cx},solveCurveX:function(R,A){if(A===void 0&&(A=1e-6),R<0)return 0;if(R>1)return 1;for(var F=R,W=0;W<8;W++){var te=this.sampleCurveX(F)-R;if(Math.abs(te)te?pe=F:Re=F,F=.5*(Re-pe)+pe;return F},solve:function(R,A){return this.sampleCurveY(this.solveCurveX(R,A))}};var h=o(c);let d,v;function m(){return d==null&&(d=typeof OffscreenCanvas!="undefined"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),d}function b(){if(v==null&&(v=!1,m())){let A=new OffscreenCanvas(5,5).getContext("2d",{willReadFrequently:!0});if(A){for(let W=0;W<5*5;W++){let te=4*W;A.fillStyle=`rgb(${te},${te+1},${te+2})`,A.fillRect(W%5,Math.floor(W/5),1,1)}let F=A.getImageData(0,0,5,5).data;for(let W=0;W<5*5*4;W++)if(W%4!=3&&F[W]!==W){v=!0;break}}}return v||!1}function p(R,A,F,W){let te=new h(R,A,F,W);return fe=>te.solve(fe)}let k=p(.25,.1,.25,1);function M(R,A,F){return Math.min(F,Math.max(A,R))}function T(R,A,F){let W=F-A,te=((R-A)%W+W)%W+A;return te===A?F:te}function L(R,...A){for(let F of A)for(let W in F)R[W]=F[W];return R}let x=1;function C(R,A,F){let W={};for(let te in R)W[te]=A.call(this,R[te],te,R);return W}function S(R,A,F){let W={};for(let te in R)A.call(this,R[te],te,R)&&(W[te]=R[te]);return W}function g(R){return Array.isArray(R)?R.map(g):typeof R=="object"&&R?C(R,g):R}let P={};function E(R){P[R]||(typeof console!="undefined"&&console.warn(R),P[R]=!0)}function z(R,A,F){return(F.y-R.y)*(A.x-R.x)>(A.y-R.y)*(F.x-R.x)}function q(R){return typeof WorkerGlobalScope!="undefined"&&R!==void 0&&R instanceof WorkerGlobalScope}let V=null;function G(R){return typeof ImageBitmap!="undefined"&&R instanceof ImageBitmap}let Z="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function j(R,A,F,W,te){return a(this,void 0,void 0,function*(){if(typeof VideoFrame=="undefined")throw new Error("VideoFrame not supported");let fe=new VideoFrame(R,{timestamp:0});try{let pe=fe==null?void 0:fe.format;if(!pe||!pe.startsWith("BGR")&&!pe.startsWith("RGB"))throw new Error(`Unrecognized format ${pe}`);let Re=pe.startsWith("BGR"),Ke=new Uint8ClampedArray(W*te*4);if(yield fe.copyTo(Ke,function(ft,Rt,er,ur,vr){let kr=4*Math.max(-Rt,0),Dr=(Math.max(0,er)-er)*ur*4+kr,li=4*ur,pi=Math.max(0,Rt),vn=Math.max(0,er);return{rect:{x:pi,y:vn,width:Math.min(ft.width,Rt+ur)-pi,height:Math.min(ft.height,er+vr)-vn},layout:[{offset:Dr,stride:li}]}}(R,A,F,W,te)),Re)for(let ft=0;ftq(self)?self.worker&&self.worker.referrer:(window.location.protocol==="blob:"?window.parent:window).location.href,Se=function(R,A){if(/:\/\//.test(R.url)&&!/^https?:|^file:/.test(R.url)){let W=Ee(R.url);if(W)return W(R,A);if(q(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:R,targetMapId:Ce},A)}if(!(/^file:/.test(F=R.url)||/^file:/.test(re())&&!/^\w+:/.test(F))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return function(W,te){return a(this,void 0,void 0,function*(){let fe=new Request(W.url,{method:W.method||"GET",body:W.body,credentials:W.credentials,headers:W.headers,cache:W.cache,referrer:re(),signal:te.signal});W.type!=="json"||fe.headers.has("Accept")||fe.headers.set("Accept","application/json");let pe=yield fetch(fe);if(!pe.ok){let ft=yield pe.blob();throw new ge(pe.status,pe.statusText,W.url,ft)}let Re;Re=W.type==="arrayBuffer"||W.type==="image"?pe.arrayBuffer():W.type==="json"?pe.json():pe.text();let Ke=yield Re;if(te.signal.aborted)throw ae();return{data:Ke,cacheControl:pe.headers.get("Cache-Control"),expires:pe.headers.get("Expires")}})}(R,A);if(q(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:R,mustQueue:!0,targetMapId:Ce},A)}var F;return function(W,te){return new Promise((fe,pe)=>{var Re;let Ke=new XMLHttpRequest;Ke.open(W.method||"GET",W.url,!0),W.type!=="arrayBuffer"&&W.type!=="image"||(Ke.responseType="arraybuffer");for(let ft in W.headers)Ke.setRequestHeader(ft,W.headers[ft]);W.type==="json"&&(Ke.responseType="text",!((Re=W.headers)===null||Re===void 0)&&Re.Accept||Ke.setRequestHeader("Accept","application/json")),Ke.withCredentials=W.credentials==="include",Ke.onerror=()=>{pe(new Error(Ke.statusText))},Ke.onload=()=>{if(!te.signal.aborted)if((Ke.status>=200&&Ke.status<300||Ke.status===0)&&Ke.response!==null){let ft=Ke.response;if(W.type==="json")try{ft=JSON.parse(Ke.response)}catch(Rt){return void pe(Rt)}fe({data:ft,cacheControl:Ke.getResponseHeader("Cache-Control"),expires:Ke.getResponseHeader("Expires")})}else{let ft=new Blob([Ke.response],{type:Ke.getResponseHeader("Content-Type")});pe(new ge(Ke.status,Ke.statusText,W.url,ft))}},te.signal.addEventListener("abort",()=>{Ke.abort(),pe(ae())}),Ke.send(W.body)})}(R,A)};function ke(R){if(!R||R.indexOf("://")<=0||R.indexOf("data:image/")===0||R.indexOf("blob:")===0)return!0;let A=new URL(R),F=window.location;return A.protocol===F.protocol&&A.host===F.host}function be(R,A,F){F[R]&&F[R].indexOf(A)!==-1||(F[R]=F[R]||[],F[R].push(A))}function Be(R,A,F){if(F&&F[R]){let W=F[R].indexOf(A);W!==-1&&F[R].splice(W,1)}}class Le{constructor(A,F={}){L(this,F),this.type=A}}class me extends Le{constructor(A,F={}){super("error",L({error:A},F))}}class Pe{on(A,F){return this._listeners=this._listeners||{},be(A,F,this._listeners),this}off(A,F){return Be(A,F,this._listeners),Be(A,F,this._oneTimeListeners),this}once(A,F){return F?(this._oneTimeListeners=this._oneTimeListeners||{},be(A,F,this._oneTimeListeners),this):new Promise(W=>this.once(A,W))}fire(A,F){typeof A=="string"&&(A=new Le(A,F||{}));let W=A.type;if(this.listens(W)){A.target=this;let te=this._listeners&&this._listeners[W]?this._listeners[W].slice():[];for(let Re of te)Re.call(this,A);let fe=this._oneTimeListeners&&this._oneTimeListeners[W]?this._oneTimeListeners[W].slice():[];for(let Re of fe)Be(W,Re,this._oneTimeListeners),Re.call(this,A);let pe=this._eventedParent;pe&&(L(A,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),pe.fire(A))}else A instanceof me&&console.error(A.error);return this}listens(A){return this._listeners&&this._listeners[A]&&this._listeners[A].length>0||this._oneTimeListeners&&this._oneTimeListeners[A]&&this._oneTimeListeners[A].length>0||this._eventedParent&&this._eventedParent.listens(A)}setEventedParent(A,F){return this._eventedParent=A,this._eventedParentData=F,this}}var ce={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},sky:{"sky-color":{type:"color","property-type":"data-constant",default:"#88C6FC",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-ground-blend":{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-fog-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"sky-horizon-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"atmosphere-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},projection:{type:{type:"enum",default:"mercator",values:{mercator:{},globe:{}}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};let He=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function lt(R,A){let F={};for(let W in R)W!=="ref"&&(F[W]=R[W]);return He.forEach(W=>{W in A&&(F[W]=A[W])}),F}function mt(R,A){if(Array.isArray(R)){if(!Array.isArray(A)||R.length!==A.length)return!1;for(let F=0;F`:R.itemType.kind==="value"?"array":`array<${A}>`}return R.kind}let We=[Tt,dt,Et,pt,jt,ei,or,Ge(mr),qr,jr,gt];function et(R,A){if(A.kind==="error")return null;if(R.kind==="array"){if(A.kind==="array"&&(A.N===0&&A.itemType.kind==="value"||!et(R.itemType,A.itemType))&&(typeof R.N!="number"||R.N===A.N))return null}else{if(R.kind===A.kind)return null;if(R.kind==="value"){for(let F of We)if(!et(F,A))return null}}return`Expected ${Je(R)} but found ${Je(A)} instead.`}function xt(R,A){return A.some(F=>F.kind===R.kind)}function At(R,A){return A.some(F=>F==="null"?R===null:F==="array"?Array.isArray(R):F==="object"?R&&!Array.isArray(R)&&typeof R=="object":F===typeof R)}function Kt(R,A){return R.kind==="array"&&A.kind==="array"?R.itemType.kind===A.itemType.kind&&typeof R.N=="number":R.kind===A.kind}let Qt=.96422,Mr=.82521,Gr=4/29,Ir=6/29,Yr=3*Ir*Ir,_i=Ir*Ir*Ir,Pi=Math.PI/180,ai=180/Math.PI;function mi(R){return(R%=360)<0&&(R+=360),R}function un([R,A,F,W]){let te,fe,pe=An((.2225045*(R=Fn(R))+.7168786*(A=Fn(A))+.0606169*(F=Fn(F)))/1);R===A&&A===F?te=fe=pe:(te=An((.4360747*R+.3850649*A+.1430804*F)/Qt),fe=An((.0139322*R+.0971045*A+.7141733*F)/Mr));let Re=116*pe-16;return[Re<0?0:Re,500*(te-pe),200*(pe-fe),W]}function Fn(R){return R<=.04045?R/12.92:Math.pow((R+.055)/1.055,2.4)}function An(R){return R>_i?Math.pow(R,1/3):R/Yr+Gr}function Hn([R,A,F,W]){let te=(R+16)/116,fe=isNaN(A)?te:te+A/500,pe=isNaN(F)?te:te-F/200;return te=1*Vi(te),fe=Qt*Vi(fe),pe=Mr*Vi(pe),[Qn(3.1338561*fe-1.6168667*te-.4906146*pe),Qn(-.9787684*fe+1.9161415*te+.033454*pe),Qn(.0719453*fe-.2289914*te+1.4052427*pe),W]}function Qn(R){return(R=R<=.00304?12.92*R:1.055*Math.pow(R,1/2.4)-.055)<0?0:R>1?1:R}function Vi(R){return R>Ir?R*R*R:Yr*(R-Gr)}function Kn(R){return parseInt(R.padEnd(2,R),16)/255}function Jn(R,A){return Gt(A?R/100:R,0,1)}function Gt(R,A,F){return Math.min(Math.max(A,R),F)}function wt(R){return!R.some(Number.isNaN)}let tr={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class ir{constructor(A,F,W,te=1,fe=!0){this.r=A,this.g=F,this.b=W,this.a=te,fe||(this.r*=te,this.g*=te,this.b*=te,te||this.overwriteGetter("rgb",[A,F,W,te]))}static parse(A){if(A instanceof ir)return A;if(typeof A!="string")return;let F=function(W){if((W=W.toLowerCase().trim())==="transparent")return[0,0,0,0];let te=tr[W];if(te){let[pe,Re,Ke]=te;return[pe/255,Re/255,Ke/255,1]}if(W.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(W)){let pe=W.length<6?1:2,Re=1;return[Kn(W.slice(Re,Re+=pe)),Kn(W.slice(Re,Re+=pe)),Kn(W.slice(Re,Re+=pe)),Kn(W.slice(Re,Re+pe)||"ff")]}if(W.startsWith("rgb")){let pe=W.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(pe){let[Re,Ke,ft,Rt,er,ur,vr,kr,Dr,li,pi,vn]=pe,zi=[Rt||" ",vr||" ",li].join("");if(zi===" "||zi===" /"||zi===",,"||zi===",,,"){let ln=[ft,ur,Dr].join(""),Tn=ln==="%%%"?100:ln===""?255:0;if(Tn){let pa=[Gt(+Ke/Tn,0,1),Gt(+er/Tn,0,1),Gt(+kr/Tn,0,1),pi?Jn(+pi,vn):1];if(wt(pa))return pa}}return}}let fe=W.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(fe){let[pe,Re,Ke,ft,Rt,er,ur,vr,kr]=fe,Dr=[Ke||" ",Rt||" ",ur].join("");if(Dr===" "||Dr===" /"||Dr===",,"||Dr===",,,"){let li=[+Re,Gt(+ft,0,100),Gt(+er,0,100),vr?Jn(+vr,kr):1];if(wt(li))return function([pi,vn,zi,ln]){function Tn(pa){let ro=(pa+pi/30)%12,Vo=vn*Math.min(zi,1-zi);return zi-Vo*Math.max(-1,Math.min(ro-3,9-ro,1))}return pi=mi(pi),vn/=100,zi/=100,[Tn(0),Tn(8),Tn(4),ln]}(li)}}}(A);return F?new ir(...F,!1):void 0}get rgb(){let{r:A,g:F,b:W,a:te}=this,fe=te||1/0;return this.overwriteGetter("rgb",[A/fe,F/fe,W/fe,te])}get hcl(){return this.overwriteGetter("hcl",function(A){let[F,W,te,fe]=un(A),pe=Math.sqrt(W*W+te*te);return[Math.round(1e4*pe)?mi(Math.atan2(te,W)*ai):NaN,pe,F,fe]}(this.rgb))}get lab(){return this.overwriteGetter("lab",un(this.rgb))}overwriteGetter(A,F){return Object.defineProperty(this,A,{value:F}),F}toString(){let[A,F,W,te]=this.rgb;return`rgba(${[A,F,W].map(fe=>Math.round(255*fe)).join(",")},${te})`}}ir.black=new ir(0,0,0,1),ir.white=new ir(1,1,1,1),ir.transparent=new ir(0,0,0,0),ir.red=new ir(1,0,0,1);class wr{constructor(A,F,W){this.sensitivity=A?F?"variant":"case":F?"accent":"base",this.locale=W,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(A,F){return this.collator.compare(A,F)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Xr{constructor(A,F,W,te,fe){this.text=A,this.image=F,this.scale=W,this.fontStack=te,this.textColor=fe}}class ti{constructor(A){this.sections=A}static fromString(A){return new ti([new Xr(A,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(A=>A.text.length!==0||A.image&&A.image.name.length!==0)}static factory(A){return A instanceof ti?A:ti.fromString(A)}toString(){return this.sections.length===0?"":this.sections.map(A=>A.text).join("")}}class $r{constructor(A){this.values=A.slice()}static parse(A){if(A instanceof $r)return A;if(typeof A=="number")return new $r([A,A,A,A]);if(Array.isArray(A)&&!(A.length<1||A.length>4)){for(let F of A)if(typeof F!="number")return;switch(A.length){case 1:A=[A[0],A[0],A[0],A[0]];break;case 2:A=[A[0],A[1],A[0],A[1]];break;case 3:A=[A[0],A[1],A[2],A[1]]}return new $r(A)}}toString(){return JSON.stringify(this.values)}}let Ri=new Set(["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"]);class Zi{constructor(A){this.values=A.slice()}static parse(A){if(A instanceof Zi)return A;if(Array.isArray(A)&&!(A.length<1)&&A.length%2==0){for(let F=0;F=0&&R<=255&&typeof A=="number"&&A>=0&&A<=255&&typeof F=="number"&&F>=0&&F<=255?W===void 0||typeof W=="number"&&W>=0&&W<=1?null:`Invalid rgba value [${[R,A,F,W].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof W=="number"?[R,A,F,W]:[R,A,F]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function yn(R){if(R===null||typeof R=="string"||typeof R=="boolean"||typeof R=="number"||R instanceof ir||R instanceof wr||R instanceof ti||R instanceof $r||R instanceof Zi||R instanceof en)return!0;if(Array.isArray(R)){for(let A of R)if(!yn(A))return!1;return!0}if(typeof R=="object"){for(let A in R)if(!yn(R[A]))return!1;return!0}return!1}function Mn(R){if(R===null)return Tt;if(typeof R=="string")return Et;if(typeof R=="boolean")return pt;if(typeof R=="number")return dt;if(R instanceof ir)return jt;if(R instanceof wr)return Ar;if(R instanceof ti)return ei;if(R instanceof $r)return qr;if(R instanceof Zi)return gt;if(R instanceof en)return jr;if(Array.isArray(R)){let A=R.length,F;for(let W of R){let te=Mn(W);if(F){if(F===te)continue;F=mr;break}F=te}return Ge(F||mr,A)}return or}function Ba(R){let A=typeof R;return R===null?"":A==="string"||A==="number"||A==="boolean"?String(R):R instanceof ir||R instanceof ti||R instanceof $r||R instanceof Zi||R instanceof en?R.toString():JSON.stringify(R)}class ua{constructor(A,F){this.type=A,this.value=F}static parse(A,F){if(A.length!==2)return F.error(`'literal' expression requires exactly one argument, but found ${A.length-1} instead.`);if(!yn(A[1]))return F.error("invalid value");let W=A[1],te=Mn(W),fe=F.expectedType;return te.kind!=="array"||te.N!==0||!fe||fe.kind!=="array"||typeof fe.N=="number"&&fe.N!==0||(te=fe),new ua(te,W)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class ma{constructor(A){this.name="ExpressionEvaluationError",this.message=A}toJSON(){return this.message}}let Wa={string:Et,number:dt,boolean:pt,object:or};class Fa{constructor(A,F){this.type=A,this.args=F}static parse(A,F){if(A.length<2)return F.error("Expected at least one argument.");let W,te=1,fe=A[0];if(fe==="array"){let Re,Ke;if(A.length>2){let ft=A[1];if(typeof ft!="string"||!(ft in Wa)||ft==="object")return F.error('The item type argument of "array" must be one of string, number, boolean',1);Re=Wa[ft],te++}else Re=mr;if(A.length>3){if(A[2]!==null&&(typeof A[2]!="number"||A[2]<0||A[2]!==Math.floor(A[2])))return F.error('The length argument to "array" must be a positive integer literal',2);Ke=A[2],te++}W=Ge(Re,Ke)}else{if(!Wa[fe])throw new Error(`Types doesn't contain name = ${fe}`);W=Wa[fe]}let pe=[];for(;teA.outputDefined())}}let Xo={"to-boolean":pt,"to-color":jt,"to-number":dt,"to-string":Et};class da{constructor(A,F){this.type=A,this.args=F}static parse(A,F){if(A.length<2)return F.error("Expected at least one argument.");let W=A[0];if(!Xo[W])throw new Error(`Can't parse ${W} as it is not part of the known types`);if((W==="to-boolean"||W==="to-string")&&A.length!==2)return F.error("Expected one argument.");let te=Xo[W],fe=[];for(let pe=1;pe4?`Invalid rbga value ${JSON.stringify(F)}: expected an array containing either three or four numeric values.`:fn(F[0],F[1],F[2],F[3]),!W))return new ir(F[0]/255,F[1]/255,F[2]/255,F[3])}throw new ma(W||`Could not parse color from value '${typeof F=="string"?F:JSON.stringify(F)}'`)}case"padding":{let F;for(let W of this.args){F=W.evaluate(A);let te=$r.parse(F);if(te)return te}throw new ma(`Could not parse padding from value '${typeof F=="string"?F:JSON.stringify(F)}'`)}case"variableAnchorOffsetCollection":{let F;for(let W of this.args){F=W.evaluate(A);let te=Zi.parse(F);if(te)return te}throw new ma(`Could not parse variableAnchorOffsetCollection from value '${typeof F=="string"?F:JSON.stringify(F)}'`)}case"number":{let F=null;for(let W of this.args){if(F=W.evaluate(A),F===null)return 0;let te=Number(F);if(!isNaN(te))return te}throw new ma(`Could not convert ${JSON.stringify(F)} to number.`)}case"formatted":return ti.fromString(Ba(this.args[0].evaluate(A)));case"resolvedImage":return en.fromString(Ba(this.args[0].evaluate(A)));default:return Ba(this.args[0].evaluate(A))}}eachChild(A){this.args.forEach(A)}outputDefined(){return this.args.every(A=>A.outputDefined())}}let jn=["Unknown","Point","LineString","Polygon"];class Ha{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type=="number"?jn[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(A){let F=this._parseColorCache[A];return F||(F=this._parseColorCache[A]=ir.parse(A)),F}}class vo{constructor(A,F,W=[],te,fe=new St,pe=[]){this.registry=A,this.path=W,this.key=W.map(Re=>`[${Re}]`).join(""),this.scope=fe,this.errors=pe,this.expectedType=te,this._isConstant=F}parse(A,F,W,te,fe={}){return F?this.concat(F,W,te)._parse(A,fe):this._parse(A,fe)}_parse(A,F){function W(te,fe,pe){return pe==="assert"?new Fa(fe,[te]):pe==="coerce"?new da(fe,[te]):te}if(A!==null&&typeof A!="string"&&typeof A!="boolean"&&typeof A!="number"||(A=["literal",A]),Array.isArray(A)){if(A.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');let te=A[0];if(typeof te!="string")return this.error(`Expression name must be a string, but found ${typeof te} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;let fe=this.registry[te];if(fe){let pe=fe.parse(A,this);if(!pe)return null;if(this.expectedType){let Re=this.expectedType,Ke=pe.type;if(Re.kind!=="string"&&Re.kind!=="number"&&Re.kind!=="boolean"&&Re.kind!=="object"&&Re.kind!=="array"||Ke.kind!=="value")if(Re.kind!=="color"&&Re.kind!=="formatted"&&Re.kind!=="resolvedImage"||Ke.kind!=="value"&&Ke.kind!=="string")if(Re.kind!=="padding"||Ke.kind!=="value"&&Ke.kind!=="number"&&Ke.kind!=="array")if(Re.kind!=="variableAnchorOffsetCollection"||Ke.kind!=="value"&&Ke.kind!=="array"){if(this.checkSubtype(Re,Ke))return null}else pe=W(pe,Re,F.typeAnnotation||"coerce");else pe=W(pe,Re,F.typeAnnotation||"coerce");else pe=W(pe,Re,F.typeAnnotation||"coerce");else pe=W(pe,Re,F.typeAnnotation||"assert")}if(!(pe instanceof ua)&&pe.type.kind!=="resolvedImage"&&this._isConstant(pe)){let Re=new Ha;try{pe=new ua(pe.type,pe.evaluate(Re))}catch(Ke){return this.error(Ke.message),null}}return pe}return this.error(`Unknown expression "${te}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(A===void 0?"'undefined' value invalid. Use null instead.":typeof A=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof A} instead.`)}concat(A,F,W){let te=typeof A=="number"?this.path.concat(A):this.path,fe=W?this.scope.concat(W):this.scope;return new vo(this.registry,this._isConstant,te,F||null,fe,this.errors)}error(A,...F){let W=`${this.key}${F.map(te=>`[${te}]`).join("")}`;this.errors.push(new rt(W,A))}checkSubtype(A,F){let W=et(A,F);return W&&this.error(W),W}}class Gn{constructor(A,F){this.type=F.type,this.bindings=[].concat(A),this.result=F}evaluate(A){return this.result.evaluate(A)}eachChild(A){for(let F of this.bindings)A(F[1]);A(this.result)}static parse(A,F){if(A.length<4)return F.error(`Expected at least 3 arguments, but found ${A.length-1} instead.`);let W=[];for(let fe=1;fe=W.length)throw new ma(`Array index out of bounds: ${F} > ${W.length-1}.`);if(F!==Math.floor(F))throw new ma(`Array index must be an integer, but found ${F} instead.`);return W[F]}eachChild(A){A(this.index),A(this.input)}outputDefined(){return!1}}class Jr{constructor(A,F){this.type=pt,this.needle=A,this.haystack=F}static parse(A,F){if(A.length!==3)return F.error(`Expected 2 arguments, but found ${A.length-1} instead.`);let W=F.parse(A[1],1,mr),te=F.parse(A[2],2,mr);return W&&te?xt(W.type,[pt,Et,dt,Tt,mr])?new Jr(W,te):F.error(`Expected first argument to be of type boolean, string, number or null, but found ${Je(W.type)} instead`):null}evaluate(A){let F=this.needle.evaluate(A),W=this.haystack.evaluate(A);if(!W)return!1;if(!At(F,["boolean","string","number","null"]))throw new ma(`Expected first argument to be of type boolean, string, number or null, but found ${Je(Mn(F))} instead.`);if(!At(W,["string","array"]))throw new ma(`Expected second argument to be of type array or string, but found ${Je(Mn(W))} instead.`);return W.indexOf(F)>=0}eachChild(A){A(this.needle),A(this.haystack)}outputDefined(){return!0}}class hi{constructor(A,F,W){this.type=dt,this.needle=A,this.haystack=F,this.fromIndex=W}static parse(A,F){if(A.length<=2||A.length>=5)return F.error(`Expected 3 or 4 arguments, but found ${A.length-1} instead.`);let W=F.parse(A[1],1,mr),te=F.parse(A[2],2,mr);if(!W||!te)return null;if(!xt(W.type,[pt,Et,dt,Tt,mr]))return F.error(`Expected first argument to be of type boolean, string, number or null, but found ${Je(W.type)} instead`);if(A.length===4){let fe=F.parse(A[3],3,dt);return fe?new hi(W,te,fe):null}return new hi(W,te)}evaluate(A){let F=this.needle.evaluate(A),W=this.haystack.evaluate(A);if(!At(F,["boolean","string","number","null"]))throw new ma(`Expected first argument to be of type boolean, string, number or null, but found ${Je(Mn(F))} instead.`);let te;if(this.fromIndex&&(te=this.fromIndex.evaluate(A)),At(W,["string"])){let fe=W.indexOf(F,te);return fe===-1?-1:[...W.slice(0,fe)].length}if(At(W,["array"]))return W.indexOf(F,te);throw new ma(`Expected second argument to be of type array or string, but found ${Je(Mn(W))} instead.`)}eachChild(A){A(this.needle),A(this.haystack),this.fromIndex&&A(this.fromIndex)}outputDefined(){return!1}}class hn{constructor(A,F,W,te,fe,pe){this.inputType=A,this.type=F,this.input=W,this.cases=te,this.outputs=fe,this.otherwise=pe}static parse(A,F){if(A.length<5)return F.error(`Expected at least 4 arguments, but found only ${A.length-1}.`);if(A.length%2!=1)return F.error("Expected an even number of arguments.");let W,te;F.expectedType&&F.expectedType.kind!=="value"&&(te=F.expectedType);let fe={},pe=[];for(let ft=2;ftNumber.MAX_SAFE_INTEGER)return ur.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof kr=="number"&&Math.floor(kr)!==kr)return ur.error("Numeric branch labels must be integer values.");if(W){if(ur.checkSubtype(W,Mn(kr)))return null}else W=Mn(kr);if(fe[String(kr)]!==void 0)return ur.error("Branch labels must be unique.");fe[String(kr)]=pe.length}let vr=F.parse(er,ft,te);if(!vr)return null;te=te||vr.type,pe.push(vr)}let Re=F.parse(A[1],1,mr);if(!Re)return null;let Ke=F.parse(A[A.length-1],A.length-1,te);return Ke?Re.type.kind!=="value"&&F.concat(1).checkSubtype(W,Re.type)?null:new hn(W,te,Re,fe,pe,Ke):null}evaluate(A){let F=this.input.evaluate(A);return(Mn(F)===this.inputType&&this.outputs[this.cases[F]]||this.otherwise).evaluate(A)}eachChild(A){A(this.input),this.outputs.forEach(A),A(this.otherwise)}outputDefined(){return this.outputs.every(A=>A.outputDefined())&&this.otherwise.outputDefined()}}class Sn{constructor(A,F,W){this.type=A,this.branches=F,this.otherwise=W}static parse(A,F){if(A.length<4)return F.error(`Expected at least 3 arguments, but found only ${A.length-1}.`);if(A.length%2!=0)return F.error("Expected an odd number of arguments.");let W;F.expectedType&&F.expectedType.kind!=="value"&&(W=F.expectedType);let te=[];for(let pe=1;peF.outputDefined())&&this.otherwise.outputDefined()}}class En{constructor(A,F,W,te){this.type=A,this.input=F,this.beginIndex=W,this.endIndex=te}static parse(A,F){if(A.length<=2||A.length>=5)return F.error(`Expected 3 or 4 arguments, but found ${A.length-1} instead.`);let W=F.parse(A[1],1,mr),te=F.parse(A[2],2,dt);if(!W||!te)return null;if(!xt(W.type,[Ge(mr),Et,mr]))return F.error(`Expected first argument to be of type array or string, but found ${Je(W.type)} instead`);if(A.length===4){let fe=F.parse(A[3],3,dt);return fe?new En(W.type,W,te,fe):null}return new En(W.type,W,te)}evaluate(A){let F=this.input.evaluate(A),W=this.beginIndex.evaluate(A),te;if(this.endIndex&&(te=this.endIndex.evaluate(A)),At(F,["string"]))return[...F].slice(W,te).join("");if(At(F,["array"]))return F.slice(W,te);throw new ma(`Expected first argument to be of type array or string, but found ${Je(Mn(F))} instead.`)}eachChild(A){A(this.input),A(this.beginIndex),this.endIndex&&A(this.endIndex)}outputDefined(){return!1}}function ki(R,A){let F=R.length-1,W,te,fe=0,pe=F,Re=0;for(;fe<=pe;)if(Re=Math.floor((fe+pe)/2),W=R[Re],te=R[Re+1],W<=A){if(Re===F||AA))throw new ma("Input is not a number.");pe=Re-1}return 0}class _n{constructor(A,F,W){this.type=A,this.input=F,this.labels=[],this.outputs=[];for(let[te,fe]of W)this.labels.push(te),this.outputs.push(fe)}static parse(A,F){if(A.length-1<4)return F.error(`Expected at least 4 arguments, but found only ${A.length-1}.`);if((A.length-1)%2!=0)return F.error("Expected an even number of arguments.");let W=F.parse(A[1],1,dt);if(!W)return null;let te=[],fe=null;F.expectedType&&F.expectedType.kind!=="value"&&(fe=F.expectedType);for(let pe=1;pe=Re)return F.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',ft);let er=F.parse(Ke,Rt,fe);if(!er)return null;fe=fe||er.type,te.push([Re,er])}return new _n(fe,W,te)}evaluate(A){let F=this.labels,W=this.outputs;if(F.length===1)return W[0].evaluate(A);let te=this.input.evaluate(A);if(te<=F[0])return W[0].evaluate(A);let fe=F.length;return te>=F[fe-1]?W[fe-1].evaluate(A):W[ki(F,te)].evaluate(A)}eachChild(A){A(this.input);for(let F of this.outputs)A(F)}outputDefined(){return this.outputs.every(A=>A.outputDefined())}}function ya(R){return R&&R.__esModule&&Object.prototype.hasOwnProperty.call(R,"default")?R.default:R}var ea=Ma;function Ma(R,A,F,W){this.cx=3*R,this.bx=3*(F-R)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*A,this.by=3*(W-A)-this.cy,this.ay=1-this.cy-this.by,this.p1x=R,this.p1y=A,this.p2x=F,this.p2y=W}Ma.prototype={sampleCurveX:function(R){return((this.ax*R+this.bx)*R+this.cx)*R},sampleCurveY:function(R){return((this.ay*R+this.by)*R+this.cy)*R},sampleCurveDerivativeX:function(R){return(3*this.ax*R+2*this.bx)*R+this.cx},solveCurveX:function(R,A){if(A===void 0&&(A=1e-6),R<0)return 0;if(R>1)return 1;for(var F=R,W=0;W<8;W++){var te=this.sampleCurveX(F)-R;if(Math.abs(te)te?pe=F:Re=F,F=.5*(Re-pe)+pe;return F},solve:function(R,A){return this.sampleCurveY(this.solveCurveX(R,A))}};var _o=ya(ea);function No(R,A,F){return R+F*(A-R)}function po(R,A,F){return R.map((W,te)=>No(W,A[te],F))}let Lo={number:No,color:function(R,A,F,W="rgb"){switch(W){case"rgb":{let[te,fe,pe,Re]=po(R.rgb,A.rgb,F);return new ir(te,fe,pe,Re,!1)}case"hcl":{let[te,fe,pe,Re]=R.hcl,[Ke,ft,Rt,er]=A.hcl,ur,vr;if(isNaN(te)||isNaN(Ke))isNaN(te)?isNaN(Ke)?ur=NaN:(ur=Ke,pe!==1&&pe!==0||(vr=ft)):(ur=te,Rt!==1&&Rt!==0||(vr=fe));else{let vn=Ke-te;Ke>te&&vn>180?vn-=360:Ke180&&(vn+=360),ur=te+F*vn}let[kr,Dr,li,pi]=function([vn,zi,ln,Tn]){return vn=isNaN(vn)?0:vn*Pi,Hn([ln,Math.cos(vn)*zi,Math.sin(vn)*zi,Tn])}([ur,vr!=null?vr:No(fe,ft,F),No(pe,Rt,F),No(Re,er,F)]);return new ir(kr,Dr,li,pi,!1)}case"lab":{let[te,fe,pe,Re]=Hn(po(R.lab,A.lab,F));return new ir(te,fe,pe,Re,!1)}}},array:po,padding:function(R,A,F){return new $r(po(R.values,A.values,F))},variableAnchorOffsetCollection:function(R,A,F){let W=R.values,te=A.values;if(W.length!==te.length)throw new ma(`Cannot interpolate values of different length. from: ${R.toString()}, to: ${A.toString()}`);let fe=[];for(let pe=0;petypeof Rt!="number"||Rt<0||Rt>1))return F.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);te={name:"cubic-bezier",controlPoints:ft}}}if(A.length-1<4)return F.error(`Expected at least 4 arguments, but found only ${A.length-1}.`);if((A.length-1)%2!=0)return F.error("Expected an even number of arguments.");if(fe=F.parse(fe,2,dt),!fe)return null;let Re=[],Ke=null;W==="interpolate-hcl"||W==="interpolate-lab"?Ke=jt:F.expectedType&&F.expectedType.kind!=="value"&&(Ke=F.expectedType);for(let ft=0;ft=Rt)return F.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',ur);let kr=F.parse(er,vr,Ke);if(!kr)return null;Ke=Ke||kr.type,Re.push([Rt,kr])}return Kt(Ke,dt)||Kt(Ke,jt)||Kt(Ke,qr)||Kt(Ke,gt)||Kt(Ke,Ge(dt))?new ko(Ke,W,te,fe,Re):F.error(`Type ${Je(Ke)} is not interpolatable.`)}evaluate(A){let F=this.labels,W=this.outputs;if(F.length===1)return W[0].evaluate(A);let te=this.input.evaluate(A);if(te<=F[0])return W[0].evaluate(A);let fe=F.length;if(te>=F[fe-1])return W[fe-1].evaluate(A);let pe=ki(F,te),Re=ko.interpolationFactor(this.interpolation,te,F[pe],F[pe+1]),Ke=W[pe].evaluate(A),ft=W[pe+1].evaluate(A);switch(this.operator){case"interpolate":return Lo[this.type.kind](Ke,ft,Re);case"interpolate-hcl":return Lo.color(Ke,ft,Re,"hcl");case"interpolate-lab":return Lo.color(Ke,ft,Re,"lab")}}eachChild(A){A(this.input);for(let F of this.outputs)A(F)}outputDefined(){return this.outputs.every(A=>A.outputDefined())}}function Ds(R,A,F,W){let te=W-F,fe=R-F;return te===0?0:A===1?fe/te:(Math.pow(A,fe)-1)/(Math.pow(A,te)-1)}class Fs{constructor(A,F){this.type=A,this.args=F}static parse(A,F){if(A.length<2)return F.error("Expectected at least one argument.");let W=null,te=F.expectedType;te&&te.kind!=="value"&&(W=te);let fe=[];for(let Re of A.slice(1)){let Ke=F.parse(Re,1+fe.length,W,void 0,{typeAnnotation:"omit"});if(!Ke)return null;W=W||Ke.type,fe.push(Ke)}if(!W)throw new Error("No output type");let pe=te&&fe.some(Re=>et(te,Re.type));return new Fs(pe?mr:W,fe)}evaluate(A){let F,W=null,te=0;for(let fe of this.args)if(te++,W=fe.evaluate(A),W&&W instanceof en&&!W.available&&(F||(F=W.name),W=null,te===this.args.length&&(W=F)),W!==null)break;return W}eachChild(A){this.args.forEach(A)}outputDefined(){return this.args.every(A=>A.outputDefined())}}function ll(R,A){return R==="=="||R==="!="?A.kind==="boolean"||A.kind==="string"||A.kind==="number"||A.kind==="null"||A.kind==="value":A.kind==="string"||A.kind==="number"||A.kind==="value"}function ul(R,A,F,W){return W.compare(A,F)===0}function zl(R,A,F){let W=R!=="=="&&R!=="!=";return class gje{constructor(fe,pe,Re){this.type=pt,this.lhs=fe,this.rhs=pe,this.collator=Re,this.hasUntypedArgument=fe.type.kind==="value"||pe.type.kind==="value"}static parse(fe,pe){if(fe.length!==3&&fe.length!==4)return pe.error("Expected two or three arguments.");let Re=fe[0],Ke=pe.parse(fe[1],1,mr);if(!Ke)return null;if(!ll(Re,Ke.type))return pe.concat(1).error(`"${Re}" comparisons are not supported for type '${Je(Ke.type)}'.`);let ft=pe.parse(fe[2],2,mr);if(!ft)return null;if(!ll(Re,ft.type))return pe.concat(2).error(`"${Re}" comparisons are not supported for type '${Je(ft.type)}'.`);if(Ke.type.kind!==ft.type.kind&&Ke.type.kind!=="value"&&ft.type.kind!=="value")return pe.error(`Cannot compare types '${Je(Ke.type)}' and '${Je(ft.type)}'.`);W&&(Ke.type.kind==="value"&&ft.type.kind!=="value"?Ke=new Fa(ft.type,[Ke]):Ke.type.kind!=="value"&&ft.type.kind==="value"&&(ft=new Fa(Ke.type,[ft])));let Rt=null;if(fe.length===4){if(Ke.type.kind!=="string"&&ft.type.kind!=="string"&&Ke.type.kind!=="value"&&ft.type.kind!=="value")return pe.error("Cannot use collator to compare non-string types.");if(Rt=pe.parse(fe[3],3,Ar),!Rt)return null}return new gje(Ke,ft,Rt)}evaluate(fe){let pe=this.lhs.evaluate(fe),Re=this.rhs.evaluate(fe);if(W&&this.hasUntypedArgument){let Ke=Mn(pe),ft=Mn(Re);if(Ke.kind!==ft.kind||Ke.kind!=="string"&&Ke.kind!=="number")throw new ma(`Expected arguments for "${R}" to be (string, string) or (number, number), but found (${Ke.kind}, ${ft.kind}) instead.`)}if(this.collator&&!W&&this.hasUntypedArgument){let Ke=Mn(pe),ft=Mn(Re);if(Ke.kind!=="string"||ft.kind!=="string")return A(fe,pe,Re)}return this.collator?F(fe,pe,Re,this.collator.evaluate(fe)):A(fe,pe,Re)}eachChild(fe){fe(this.lhs),fe(this.rhs),this.collator&&fe(this.collator)}outputDefined(){return!0}}}let us=zl("==",function(R,A,F){return A===F},ul),il=zl("!=",function(R,A,F){return A!==F},function(R,A,F,W){return!ul(0,A,F,W)}),As=zl("<",function(R,A,F){return A",function(R,A,F){return A>F},function(R,A,F,W){return W.compare(A,F)>0}),Ks=zl("<=",function(R,A,F){return A<=F},function(R,A,F,W){return W.compare(A,F)<=0}),zs=zl(">=",function(R,A,F){return A>=F},function(R,A,F,W){return W.compare(A,F)>=0});class Io{constructor(A,F,W){this.type=Ar,this.locale=W,this.caseSensitive=A,this.diacriticSensitive=F}static parse(A,F){if(A.length!==2)return F.error("Expected one argument.");let W=A[1];if(typeof W!="object"||Array.isArray(W))return F.error("Collator options argument must be an object.");let te=F.parse(W["case-sensitive"]!==void 0&&W["case-sensitive"],1,pt);if(!te)return null;let fe=F.parse(W["diacritic-sensitive"]!==void 0&&W["diacritic-sensitive"],1,pt);if(!fe)return null;let pe=null;return W.locale&&(pe=F.parse(W.locale,1,Et),!pe)?null:new Io(te,fe,pe)}evaluate(A){return new wr(this.caseSensitive.evaluate(A),this.diacriticSensitive.evaluate(A),this.locale?this.locale.evaluate(A):null)}eachChild(A){A(this.caseSensitive),A(this.diacriticSensitive),this.locale&&A(this.locale)}outputDefined(){return!1}}class ls{constructor(A,F,W,te,fe){this.type=Et,this.number=A,this.locale=F,this.currency=W,this.minFractionDigits=te,this.maxFractionDigits=fe}static parse(A,F){if(A.length!==3)return F.error("Expected two arguments.");let W=F.parse(A[1],1,dt);if(!W)return null;let te=A[2];if(typeof te!="object"||Array.isArray(te))return F.error("NumberFormat options argument must be an object.");let fe=null;if(te.locale&&(fe=F.parse(te.locale,1,Et),!fe))return null;let pe=null;if(te.currency&&(pe=F.parse(te.currency,1,Et),!pe))return null;let Re=null;if(te["min-fraction-digits"]&&(Re=F.parse(te["min-fraction-digits"],1,dt),!Re))return null;let Ke=null;return te["max-fraction-digits"]&&(Ke=F.parse(te["max-fraction-digits"],1,dt),!Ke)?null:new ls(W,fe,pe,Re,Ke)}evaluate(A){return new Intl.NumberFormat(this.locale?this.locale.evaluate(A):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(A):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(A):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(A):void 0}).format(this.number.evaluate(A))}eachChild(A){A(this.number),this.locale&&A(this.locale),this.currency&&A(this.currency),this.minFractionDigits&&A(this.minFractionDigits),this.maxFractionDigits&&A(this.maxFractionDigits)}outputDefined(){return!1}}class Yl{constructor(A){this.type=ei,this.sections=A}static parse(A,F){if(A.length<2)return F.error("Expected at least one argument.");let W=A[1];if(!Array.isArray(W)&&typeof W=="object")return F.error("First argument must be an image or text section.");let te=[],fe=!1;for(let pe=1;pe<=A.length-1;++pe){let Re=A[pe];if(fe&&typeof Re=="object"&&!Array.isArray(Re)){fe=!1;let Ke=null;if(Re["font-scale"]&&(Ke=F.parse(Re["font-scale"],1,dt),!Ke))return null;let ft=null;if(Re["text-font"]&&(ft=F.parse(Re["text-font"],1,Ge(Et)),!ft))return null;let Rt=null;if(Re["text-color"]&&(Rt=F.parse(Re["text-color"],1,jt),!Rt))return null;let er=te[te.length-1];er.scale=Ke,er.font=ft,er.textColor=Rt}else{let Ke=F.parse(A[pe],1,mr);if(!Ke)return null;let ft=Ke.type.kind;if(ft!=="string"&&ft!=="value"&&ft!=="null"&&ft!=="resolvedImage")return F.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");fe=!0,te.push({content:Ke,scale:null,font:null,textColor:null})}}return new Yl(te)}evaluate(A){return new ti(this.sections.map(F=>{let W=F.content.evaluate(A);return Mn(W)===jr?new Xr("",W,null,null,null):new Xr(Ba(W),null,F.scale?F.scale.evaluate(A):null,F.font?F.font.evaluate(A).join(","):null,F.textColor?F.textColor.evaluate(A):null)}))}eachChild(A){for(let F of this.sections)A(F.content),F.scale&&A(F.scale),F.font&&A(F.font),F.textColor&&A(F.textColor)}outputDefined(){return!1}}class Su{constructor(A){this.type=jr,this.input=A}static parse(A,F){if(A.length!==2)return F.error("Expected two arguments.");let W=F.parse(A[1],1,Et);return W?new Su(W):F.error("No image name provided.")}evaluate(A){let F=this.input.evaluate(A),W=en.fromString(F);return W&&A.availableImages&&(W.available=A.availableImages.indexOf(F)>-1),W}eachChild(A){A(this.input)}outputDefined(){return!1}}class nc{constructor(A){this.type=dt,this.input=A}static parse(A,F){if(A.length!==2)return F.error(`Expected 1 argument, but found ${A.length-1} instead.`);let W=F.parse(A[1],1);return W?W.type.kind!=="array"&&W.type.kind!=="string"&&W.type.kind!=="value"?F.error(`Expected argument of type string or array, but found ${Je(W.type)} instead.`):new nc(W):null}evaluate(A){let F=this.input.evaluate(A);if(typeof F=="string")return[...F].length;if(Array.isArray(F))return F.length;throw new ma(`Expected value to be of type string or array, but found ${Je(Mn(F))} instead.`)}eachChild(A){A(this.input)}outputDefined(){return!1}}let bs=8192;function Rn(R,A){let F=(180+R[0])/360,W=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+R[1]*Math.PI/360)))/360,te=Math.pow(2,A.z);return[Math.round(F*te*bs),Math.round(W*te*bs)]}function _a(R,A){let F=Math.pow(2,A.z);return[(te=(R[0]/bs+A.x)/F,360*te-180),(W=(R[1]/bs+A.y)/F,360/Math.PI*Math.atan(Math.exp((180-360*W)*Math.PI/180))-90)];var W,te}function Vu(R,A){R[0]=Math.min(R[0],A[0]),R[1]=Math.min(R[1],A[1]),R[2]=Math.max(R[2],A[0]),R[3]=Math.max(R[3],A[1])}function ql(R,A){return!(R[0]<=A[0]||R[2]>=A[2]||R[1]<=A[1]||R[3]>=A[3])}function xo(R,A,F){let W=R[0]-A[0],te=R[1]-A[1],fe=R[0]-F[0],pe=R[1]-F[1];return W*pe-fe*te==0&&W*fe<=0&&te*pe<=0}function Kl(R,A,F,W){return(te=[W[0]-F[0],W[1]-F[1]])[0]*(fe=[A[0]-R[0],A[1]-R[1]])[1]-te[1]*fe[0]!=0&&!(!Oo(R,A,F,W)||!Oo(F,W,R,A));var te,fe}function Ns(R,A,F){for(let W of F)for(let te=0;te(te=R)[1]!=(pe=Re[Ke+1])[1]>te[1]&&te[0]<(pe[0]-fe[0])*(te[1]-fe[1])/(pe[1]-fe[1])+fe[0]&&(W=!W)}var te,fe,pe;return W}function ac(R,A){for(let F of A)if(Hl(R,F))return!0;return!1}function oa(R,A){for(let F of R)if(!Hl(F,A))return!1;for(let F=0;F0&&Re<0||pe<0&&Re>0}function Ol(R,A,F){let W=[];for(let te=0;teF[2]){let te=.5*W,fe=R[0]-F[0]>te?-W:F[0]-R[0]>te?W:0;fe===0&&(fe=R[0]-F[2]>te?-W:F[2]-R[0]>te?W:0),R[0]+=fe}Vu(A,R)}function nf(R,A,F,W){let te=Math.pow(2,W.z)*bs,fe=[W.x*bs,W.y*bs],pe=[];for(let Re of R)for(let Ke of Re){let ft=[Ke.x+fe[0],Ke.y+fe[1]];Do(ft,A,F,te),pe.push(ft)}return pe}function Vf(R,A,F,W){let te=Math.pow(2,W.z)*bs,fe=[W.x*bs,W.y*bs],pe=[];for(let Ke of R){let ft=[];for(let Rt of Ke){let er=[Rt.x+fe[0],Rt.y+fe[1]];Vu(A,er),ft.push(er)}pe.push(ft)}if(A[2]-A[0]<=te/2){(Re=A)[0]=Re[1]=1/0,Re[2]=Re[3]=-1/0;for(let Ke of pe)for(let ft of Ke)Do(ft,A,F,te)}var Re;return pe}class pl{constructor(A,F){this.type=pt,this.geojson=A,this.geometries=F}static parse(A,F){if(A.length!==2)return F.error(`'within' expression requires exactly one argument, but found ${A.length-1} instead.`);if(yn(A[1])){let W=A[1];if(W.type==="FeatureCollection"){let te=[];for(let fe of W.features){let{type:pe,coordinates:Re}=fe.geometry;pe==="Polygon"&&te.push(Re),pe==="MultiPolygon"&&te.push(...Re)}if(te.length)return new pl(W,{type:"MultiPolygon",coordinates:te})}else if(W.type==="Feature"){let te=W.geometry.type;if(te==="Polygon"||te==="MultiPolygon")return new pl(W,W.geometry)}else if(W.type==="Polygon"||W.type==="MultiPolygon")return new pl(W,W)}return F.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(A){if(A.geometry()!=null&&A.canonicalID()!=null){if(A.geometryType()==="Point")return function(F,W){let te=[1/0,1/0,-1/0,-1/0],fe=[1/0,1/0,-1/0,-1/0],pe=F.canonicalID();if(W.type==="Polygon"){let Re=Ol(W.coordinates,fe,pe),Ke=nf(F.geometry(),te,fe,pe);if(!ql(te,fe))return!1;for(let ft of Ke)if(!Hl(ft,Re))return!1}if(W.type==="MultiPolygon"){let Re=Pc(W.coordinates,fe,pe),Ke=nf(F.geometry(),te,fe,pe);if(!ql(te,fe))return!1;for(let ft of Ke)if(!ac(ft,Re))return!1}return!0}(A,this.geometries);if(A.geometryType()==="LineString")return function(F,W){let te=[1/0,1/0,-1/0,-1/0],fe=[1/0,1/0,-1/0,-1/0],pe=F.canonicalID();if(W.type==="Polygon"){let Re=Ol(W.coordinates,fe,pe),Ke=Vf(F.geometry(),te,fe,pe);if(!ql(te,fe))return!1;for(let ft of Ke)if(!oa(ft,Re))return!1}if(W.type==="MultiPolygon"){let Re=Pc(W.coordinates,fe,pe),Ke=Vf(F.geometry(),te,fe,pe);if(!ql(te,fe))return!1;for(let ft of Ke)if(!qo(ft,Re))return!1}return!0}(A,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}let Zc=class{constructor(R=[],A=(F,W)=>FW?1:0){if(this.data=R,this.length=this.data.length,this.compare=A,this.length>0)for(let F=(this.length>>1)-1;F>=0;F--)this._down(F)}push(R){this.data.push(R),this._up(this.length++)}pop(){if(this.length===0)return;let R=this.data[0],A=this.data.pop();return--this.length>0&&(this.data[0]=A,this._down(0)),R}peek(){return this.data[0]}_up(R){let{data:A,compare:F}=this,W=A[R];for(;R>0;){let te=R-1>>1,fe=A[te];if(F(W,fe)>=0)break;A[R]=fe,R=te}A[R]=W}_down(R){let{data:A,compare:F}=this,W=this.length>>1,te=A[R];for(;R=0)break;A[R]=A[fe],R=fe}A[R]=te}};function Jl(R,A,F,W,te){qs(R,A,F,W||R.length-1,te||oc)}function qs(R,A,F,W,te){for(;W>F;){if(W-F>600){var fe=W-F+1,pe=A-F+1,Re=Math.log(fe),Ke=.5*Math.exp(2*Re/3),ft=.5*Math.sqrt(Re*Ke*(fe-Ke)/fe)*(pe-fe/2<0?-1:1);qs(R,A,Math.max(F,Math.floor(A-pe*Ke/fe+ft)),Math.min(W,Math.floor(A+(fe-pe)*Ke/fe+ft)),te)}var Rt=R[A],er=F,ur=W;for(yu(R,F,A),te(R[W],Rt)>0&&yu(R,F,W);er0;)ur--}te(R[F],Rt)===0?yu(R,F,ur):yu(R,++ur,W),ur<=A&&(F=ur+1),A<=ur&&(W=ur-1)}}function yu(R,A,F){var W=R[A];R[A]=R[F],R[F]=W}function oc(R,A){return RA?1:0}function Cf(R,A){if(R.length<=1)return[R];let F=[],W,te;for(let fe of R){let pe=jh(fe);pe!==0&&(fe.area=Math.abs(pe),te===void 0&&(te=pe<0),te===pe<0?(W&&F.push(W),W=[fe]):W.push(fe))}if(W&&F.push(W),A>1)for(let fe=0;fe1?(ft=A[Ke+1][0],Rt=A[Ke+1][1]):vr>0&&(ft+=er/this.kx*vr,Rt+=ur/this.ky*vr)),er=this.wrap(F[0]-ft)*this.kx,ur=(F[1]-Rt)*this.ky;let kr=er*er+ur*ur;kr180;)A-=360;return A}}function $l(R,A){return A[0]-R[0]}function fl(R){return R[1]-R[0]+1}function lc(R,A){return R[1]>=R[0]&&R[1]R[1])return[null,null];let F=fl(R);if(A){if(F===2)return[R,null];let te=Math.floor(F/2);return[[R[0],R[0]+te],[R[0]+te,R[1]]]}if(F===1)return[R,null];let W=Math.floor(F/2)-1;return[[R[0],R[0]+W],[R[0]+W+1,R[1]]]}function Es(R,A){if(!lc(A,R.length))return[1/0,1/0,-1/0,-1/0];let F=[1/0,1/0,-1/0,-1/0];for(let W=A[0];W<=A[1];++W)Vu(F,R[W]);return F}function Hs(R){let A=[1/0,1/0,-1/0,-1/0];for(let F of R)for(let W of F)Vu(A,W);return A}function Go(R){return R[0]!==-1/0&&R[1]!==-1/0&&R[2]!==1/0&&R[3]!==1/0}function ps(R,A,F){if(!Go(R)||!Go(A))return NaN;let W=0,te=0;return R[2]A[2]&&(W=R[0]-A[2]),R[1]>A[3]&&(te=R[1]-A[3]),R[3]=W)return W;if(ql(te,fe)){if(sd(R,A))return 0}else if(sd(A,R))return 0;let pe=1/0;for(let Re of R)for(let Ke=0,ft=Re.length,Rt=ft-1;Ke0;){let Ke=pe.pop();if(Ke[0]>=fe)continue;let ft=Ke[1],Rt=A?50:100;if(fl(ft)<=Rt){if(!lc(ft,R.length))return NaN;if(A){let er=Po(R,ft,F,W);if(isNaN(er)||er===0)return er;fe=Math.min(fe,er)}else for(let er=ft[0];er<=ft[1];++er){let ur=od(R[er],F,W);if(fe=Math.min(fe,ur),fe===0)return 0}}else{let er=Fu(ft,A);Pa(pe,fe,W,R,Re,er[0]),Pa(pe,fe,W,R,Re,er[1])}}return fe}function bl(R,A,F,W,te,fe=1/0){let pe=Math.min(fe,te.distance(R[0],F[0]));if(pe===0)return pe;let Re=new Zc([[0,[0,R.length-1],[0,F.length-1]]],$l);for(;Re.length>0;){let Ke=Re.pop();if(Ke[0]>=pe)continue;let ft=Ke[1],Rt=Ke[2],er=A?50:100,ur=W?50:100;if(fl(ft)<=er&&fl(Rt)<=ur){if(!lc(ft,R.length)&&lc(Rt,F.length))return NaN;let vr;if(A&&W)vr=Gu(R,ft,F,Rt,te),pe=Math.min(pe,vr);else if(A&&!W){let kr=R.slice(ft[0],ft[1]+1);for(let Dr=Rt[0];Dr<=Rt[1];++Dr)if(vr=uc(F[Dr],kr,te),pe=Math.min(pe,vr),pe===0)return pe}else if(!A&&W){let kr=F.slice(Rt[0],Rt[1]+1);for(let Dr=ft[0];Dr<=ft[1];++Dr)if(vr=uc(R[Dr],kr,te),pe=Math.min(pe,vr),pe===0)return pe}else vr=Os(R,ft,F,Rt,te),pe=Math.min(pe,vr)}else{let vr=Fu(ft,A),kr=Fu(Rt,W);of(Re,pe,te,R,F,vr[0],kr[0]),of(Re,pe,te,R,F,vr[0],kr[1]),of(Re,pe,te,R,F,vr[1],kr[0]),of(Re,pe,te,R,F,vr[1],kr[1])}}return pe}function Hf(R){return R.type==="MultiPolygon"?R.coordinates.map(A=>({type:"Polygon",coordinates:A})):R.type==="MultiLineString"?R.coordinates.map(A=>({type:"LineString",coordinates:A})):R.type==="MultiPoint"?R.coordinates.map(A=>({type:"Point",coordinates:A})):[R]}class Ic{constructor(A,F){this.type=dt,this.geojson=A,this.geometries=F}static parse(A,F){if(A.length!==2)return F.error(`'distance' expression requires exactly one argument, but found ${A.length-1} instead.`);if(yn(A[1])){let W=A[1];if(W.type==="FeatureCollection")return new Ic(W,W.features.map(te=>Hf(te.geometry)).flat());if(W.type==="Feature")return new Ic(W,Hf(W.geometry));if("type"in W&&"coordinates"in W)return new Ic(W,Hf(W))}return F.error("'distance' expression requires valid geojson object that contains polygon geometry type.")}evaluate(A){if(A.geometry()!=null&&A.canonicalID()!=null){if(A.geometryType()==="Point")return function(F,W){let te=F.geometry(),fe=te.flat().map(Ke=>_a([Ke.x,Ke.y],F.canonical));if(te.length===0)return NaN;let pe=new Gf(fe[0][1]),Re=1/0;for(let Ke of W){switch(Ke.type){case"Point":Re=Math.min(Re,bl(fe,!1,[Ke.coordinates],!1,pe,Re));break;case"LineString":Re=Math.min(Re,bl(fe,!1,Ke.coordinates,!0,pe,Re));break;case"Polygon":Re=Math.min(Re,Hu(fe,!1,Ke.coordinates,pe,Re))}if(Re===0)return Re}return Re}(A,this.geometries);if(A.geometryType()==="LineString")return function(F,W){let te=F.geometry(),fe=te.flat().map(Ke=>_a([Ke.x,Ke.y],F.canonical));if(te.length===0)return NaN;let pe=new Gf(fe[0][1]),Re=1/0;for(let Ke of W){switch(Ke.type){case"Point":Re=Math.min(Re,bl(fe,!0,[Ke.coordinates],!1,pe,Re));break;case"LineString":Re=Math.min(Re,bl(fe,!0,Ke.coordinates,!0,pe,Re));break;case"Polygon":Re=Math.min(Re,Hu(fe,!0,Ke.coordinates,pe,Re))}if(Re===0)return Re}return Re}(A,this.geometries);if(A.geometryType()==="Polygon")return function(F,W){let te=F.geometry();if(te.length===0||te[0].length===0)return NaN;let fe=Cf(te,0).map(Ke=>Ke.map(ft=>ft.map(Rt=>_a([Rt.x,Rt.y],F.canonical)))),pe=new Gf(fe[0][0][0][1]),Re=1/0;for(let Ke of W)for(let ft of fe){switch(Ke.type){case"Point":Re=Math.min(Re,Hu([Ke.coordinates],!1,ft,pe,Re));break;case"LineString":Re=Math.min(Re,Hu(Ke.coordinates,!0,ft,pe,Re));break;case"Polygon":Re=Math.min(Re,Ko(ft,Ke.coordinates,pe,Re))}if(Re===0)return Re}return Re}(A,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}}let yf={"==":us,"!=":il,">":cl,"<":As,">=":zs,"<=":Ks,array:Fa,at:Sr,boolean:Fa,case:Sn,coalesce:Fs,collator:Io,format:Yl,image:Su,in:Jr,"index-of":hi,interpolate:ko,"interpolate-hcl":ko,"interpolate-lab":ko,length:nc,let:Gn,literal:ua,match:hn,number:Fa,"number-format":ls,object:Fa,slice:En,step:_n,string:Fa,"to-boolean":da,"to-color":da,"to-number":da,"to-string":da,var:Ct,within:pl,distance:Ic};class Bl{constructor(A,F,W,te){this.name=A,this.type=F,this._evaluate=W,this.args=te}evaluate(A){return this._evaluate(A,this.args)}eachChild(A){this.args.forEach(A)}outputDefined(){return!1}static parse(A,F){let W=A[0],te=Bl.definitions[W];if(!te)return F.error(`Unknown expression "${W}". If you wanted a literal array, use ["literal", [...]].`,0);let fe=Array.isArray(te)?te[0]:te.type,pe=Array.isArray(te)?[[te[1],te[2]]]:te.overloads,Re=pe.filter(([ft])=>!Array.isArray(ft)||ft.length===A.length-1),Ke=null;for(let[ft,Rt]of Re){Ke=new vo(F.registry,eh,F.path,null,F.scope);let er=[],ur=!1;for(let vr=1;vr{return ur=er,Array.isArray(ur)?`(${ur.map(Je).join(", ")})`:`(${Je(ur.type)}...)`;var ur}).join(" | "),Rt=[];for(let er=1;er{F=A?F&&eh(W):F&&W instanceof ua}),!!F&&th(R)&&jf(R,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function th(R){if(R instanceof Bl&&(R.name==="get"&&R.args.length===1||R.name==="feature-state"||R.name==="has"&&R.args.length===1||R.name==="properties"||R.name==="geometry-type"||R.name==="id"||/^filter-/.test(R.name))||R instanceof pl||R instanceof Ic)return!1;let A=!0;return R.eachChild(F=>{A&&!th(F)&&(A=!1)}),A}function ju(R){if(R instanceof Bl&&R.name==="feature-state")return!1;let A=!0;return R.eachChild(F=>{A&&!ju(F)&&(A=!1)}),A}function jf(R,A){if(R instanceof Bl&&A.indexOf(R.name)>=0)return!1;let F=!0;return R.eachChild(W=>{F&&!jf(W,A)&&(F=!1)}),F}function cc(R){return{result:"success",value:R}}function sf(R){return{result:"error",value:R}}function Nl(R){return R["property-type"]==="data-driven"||R["property-type"]==="cross-faded-data-driven"}function Kc(R){return!!R.expression&&R.expression.parameters.indexOf("zoom")>-1}function Rc(R){return!!R.expression&&R.expression.interpolated}function gs(R){return R instanceof Number?"number":R instanceof String?"string":R instanceof Boolean?"boolean":Array.isArray(R)?"array":R===null?"null":typeof R}function Wf(R){return typeof R=="object"&&R!==null&&!Array.isArray(R)}function Wh(R){return R}function rh(R,A){let F=A.type==="color",W=R.stops&&typeof R.stops[0][0]=="object",te=W||!(W||R.property!==void 0),fe=R.type||(Rc(A)?"exponential":"interval");if(F||A.type==="padding"){let Rt=F?ir.parse:$r.parse;(R=Ae({},R)).stops&&(R.stops=R.stops.map(er=>[er[0],Rt(er[1])])),R.default=Rt(R.default?R.default:A.default)}if(R.colorSpace&&(pe=R.colorSpace)!=="rgb"&&pe!=="hcl"&&pe!=="lab")throw new Error(`Unknown color space: "${R.colorSpace}"`);var pe;let Re,Ke,ft;if(fe==="exponential")Re=ih;else if(fe==="interval")Re=Mu;else if(fe==="categorical"){Re=Sh,Ke=Object.create(null);for(let Rt of R.stops)Ke[Rt[0]]=Rt[1];ft=typeof R.stops[0][0]}else{if(fe!=="identity")throw new Error(`Unknown function type "${fe}"`);Re=js}if(W){let Rt={},er=[];for(let kr=0;krkr[0]),evaluate:({zoom:kr},Dr)=>ih({stops:ur,base:R.base},A,kr).evaluate(kr,Dr)}}if(te){let Rt=fe==="exponential"?{name:"exponential",base:R.base!==void 0?R.base:1}:null;return{kind:"camera",interpolationType:Rt,interpolationFactor:ko.interpolationFactor.bind(void 0,Rt),zoomStops:R.stops.map(er=>er[0]),evaluate:({zoom:er})=>Re(R,A,er,Ke,ft)}}return{kind:"source",evaluate(Rt,er){let ur=er&&er.properties?er.properties[R.property]:void 0;return ur===void 0?lf(R.default,A.default):Re(R,A,ur,Ke,ft)}}}function lf(R,A,F){return R!==void 0?R:A!==void 0?A:F!==void 0?F:void 0}function Sh(R,A,F,W,te){return lf(typeof F===te?W[F]:void 0,R.default,A.default)}function Mu(R,A,F){if(gs(F)!=="number")return lf(R.default,A.default);let W=R.stops.length;if(W===1||F<=R.stops[0][0])return R.stops[0][1];if(F>=R.stops[W-1][0])return R.stops[W-1][1];let te=ki(R.stops.map(fe=>fe[0]),F);return R.stops[te][1]}function ih(R,A,F){let W=R.base!==void 0?R.base:1;if(gs(F)!=="number")return lf(R.default,A.default);let te=R.stops.length;if(te===1||F<=R.stops[0][0])return R.stops[0][1];if(F>=R.stops[te-1][0])return R.stops[te-1][1];let fe=ki(R.stops.map(Rt=>Rt[0]),F),pe=function(Rt,er,ur,vr){let kr=vr-ur,Dr=Rt-ur;return kr===0?0:er===1?Dr/kr:(Math.pow(er,Dr)-1)/(Math.pow(er,kr)-1)}(F,W,R.stops[fe][0],R.stops[fe+1][0]),Re=R.stops[fe][1],Ke=R.stops[fe+1][1],ft=Lo[A.type]||Wh;return typeof Re.evaluate=="function"?{evaluate(...Rt){let er=Re.evaluate.apply(void 0,Rt),ur=Ke.evaluate.apply(void 0,Rt);if(er!==void 0&&ur!==void 0)return ft(er,ur,pe,R.colorSpace)}}:ft(Re,Ke,pe,R.colorSpace)}function js(R,A,F){switch(A.type){case"color":F=ir.parse(F);break;case"formatted":F=ti.fromString(F.toString());break;case"resolvedImage":F=en.fromString(F.toString());break;case"padding":F=$r.parse(F);break;default:gs(F)===A.type||A.type==="enum"&&A.values[F]||(F=void 0)}return lf(F,R.default,A.default)}Bl.register(yf,{error:[{kind:"error"},[Et],(R,[A])=>{throw new ma(A.evaluate(R))}],typeof:[Et,[mr],(R,[A])=>Je(Mn(A.evaluate(R)))],"to-rgba":[Ge(dt,4),[jt],(R,[A])=>{let[F,W,te,fe]=A.evaluate(R).rgb;return[255*F,255*W,255*te,fe]}],rgb:[jt,[dt,dt,dt],Ah],rgba:[jt,[dt,dt,dt,dt],Ah],has:{type:pt,overloads:[[[Et],(R,[A])=>Qf(A.evaluate(R),R.properties())],[[Et,or],(R,[A,F])=>Qf(A.evaluate(R),F.evaluate(R))]]},get:{type:mr,overloads:[[[Et],(R,[A])=>_f(A.evaluate(R),R.properties())],[[Et,or],(R,[A,F])=>_f(A.evaluate(R),F.evaluate(R))]]},"feature-state":[mr,[Et],(R,[A])=>_f(A.evaluate(R),R.featureState||{})],properties:[or,[],R=>R.properties()],"geometry-type":[Et,[],R=>R.geometryType()],id:[mr,[],R=>R.id()],zoom:[dt,[],R=>R.globals.zoom],"heatmap-density":[dt,[],R=>R.globals.heatmapDensity||0],"line-progress":[dt,[],R=>R.globals.lineProgress||0],accumulated:[mr,[],R=>R.globals.accumulated===void 0?null:R.globals.accumulated],"+":[dt,Yc(dt),(R,A)=>{let F=0;for(let W of A)F+=W.evaluate(R);return F}],"*":[dt,Yc(dt),(R,A)=>{let F=1;for(let W of A)F*=W.evaluate(R);return F}],"-":{type:dt,overloads:[[[dt,dt],(R,[A,F])=>A.evaluate(R)-F.evaluate(R)],[[dt],(R,[A])=>-A.evaluate(R)]]},"/":[dt,[dt,dt],(R,[A,F])=>A.evaluate(R)/F.evaluate(R)],"%":[dt,[dt,dt],(R,[A,F])=>A.evaluate(R)%F.evaluate(R)],ln2:[dt,[],()=>Math.LN2],pi:[dt,[],()=>Math.PI],e:[dt,[],()=>Math.E],"^":[dt,[dt,dt],(R,[A,F])=>Math.pow(A.evaluate(R),F.evaluate(R))],sqrt:[dt,[dt],(R,[A])=>Math.sqrt(A.evaluate(R))],log10:[dt,[dt],(R,[A])=>Math.log(A.evaluate(R))/Math.LN10],ln:[dt,[dt],(R,[A])=>Math.log(A.evaluate(R))],log2:[dt,[dt],(R,[A])=>Math.log(A.evaluate(R))/Math.LN2],sin:[dt,[dt],(R,[A])=>Math.sin(A.evaluate(R))],cos:[dt,[dt],(R,[A])=>Math.cos(A.evaluate(R))],tan:[dt,[dt],(R,[A])=>Math.tan(A.evaluate(R))],asin:[dt,[dt],(R,[A])=>Math.asin(A.evaluate(R))],acos:[dt,[dt],(R,[A])=>Math.acos(A.evaluate(R))],atan:[dt,[dt],(R,[A])=>Math.atan(A.evaluate(R))],min:[dt,Yc(dt),(R,A)=>Math.min(...A.map(F=>F.evaluate(R)))],max:[dt,Yc(dt),(R,A)=>Math.max(...A.map(F=>F.evaluate(R)))],abs:[dt,[dt],(R,[A])=>Math.abs(A.evaluate(R))],round:[dt,[dt],(R,[A])=>{let F=A.evaluate(R);return F<0?-Math.round(-F):Math.round(F)}],floor:[dt,[dt],(R,[A])=>Math.floor(A.evaluate(R))],ceil:[dt,[dt],(R,[A])=>Math.ceil(A.evaluate(R))],"filter-==":[pt,[Et,mr],(R,[A,F])=>R.properties()[A.value]===F.value],"filter-id-==":[pt,[mr],(R,[A])=>R.id()===A.value],"filter-type-==":[pt,[Et],(R,[A])=>R.geometryType()===A.value],"filter-<":[pt,[Et,mr],(R,[A,F])=>{let W=R.properties()[A.value],te=F.value;return typeof W==typeof te&&W{let F=R.id(),W=A.value;return typeof F==typeof W&&F":[pt,[Et,mr],(R,[A,F])=>{let W=R.properties()[A.value],te=F.value;return typeof W==typeof te&&W>te}],"filter-id->":[pt,[mr],(R,[A])=>{let F=R.id(),W=A.value;return typeof F==typeof W&&F>W}],"filter-<=":[pt,[Et,mr],(R,[A,F])=>{let W=R.properties()[A.value],te=F.value;return typeof W==typeof te&&W<=te}],"filter-id-<=":[pt,[mr],(R,[A])=>{let F=R.id(),W=A.value;return typeof F==typeof W&&F<=W}],"filter->=":[pt,[Et,mr],(R,[A,F])=>{let W=R.properties()[A.value],te=F.value;return typeof W==typeof te&&W>=te}],"filter-id->=":[pt,[mr],(R,[A])=>{let F=R.id(),W=A.value;return typeof F==typeof W&&F>=W}],"filter-has":[pt,[mr],(R,[A])=>A.value in R.properties()],"filter-has-id":[pt,[],R=>R.id()!==null&&R.id()!==void 0],"filter-type-in":[pt,[Ge(Et)],(R,[A])=>A.value.indexOf(R.geometryType())>=0],"filter-id-in":[pt,[Ge(mr)],(R,[A])=>A.value.indexOf(R.id())>=0],"filter-in-small":[pt,[Et,Ge(mr)],(R,[A,F])=>F.value.indexOf(R.properties()[A.value])>=0],"filter-in-large":[pt,[Et,Ge(mr)],(R,[A,F])=>function(W,te,fe,pe){for(;fe<=pe;){let Re=fe+pe>>1;if(te[Re]===W)return!0;te[Re]>W?pe=Re-1:fe=Re+1}return!1}(R.properties()[A.value],F.value,0,F.value.length-1)],all:{type:pt,overloads:[[[pt,pt],(R,[A,F])=>A.evaluate(R)&&F.evaluate(R)],[Yc(pt),(R,A)=>{for(let F of A)if(!F.evaluate(R))return!1;return!0}]]},any:{type:pt,overloads:[[[pt,pt],(R,[A,F])=>A.evaluate(R)||F.evaluate(R)],[Yc(pt),(R,A)=>{for(let F of A)if(F.evaluate(R))return!0;return!1}]]},"!":[pt,[pt],(R,[A])=>!A.evaluate(R)],"is-supported-script":[pt,[Et],(R,[A])=>{let F=R.globals&&R.globals.isSupportedScript;return!F||F(A.evaluate(R))}],upcase:[Et,[Et],(R,[A])=>A.evaluate(R).toUpperCase()],downcase:[Et,[Et],(R,[A])=>A.evaluate(R).toLowerCase()],concat:[Et,Yc(mr),(R,A)=>A.map(F=>Ba(F.evaluate(R))).join("")],"resolved-locale":[Et,[Ar],(R,[A])=>A.evaluate(R).resolvedLocale()]});class Eu{constructor(A,F){var W;this.expression=A,this._warningHistory={},this._evaluator=new Ha,this._defaultValue=F?(W=F).type==="color"&&Wf(W.default)?new ir(0,0,0,0):W.type==="color"?ir.parse(W.default)||null:W.type==="padding"?$r.parse(W.default)||null:W.type==="variableAnchorOffsetCollection"?Zi.parse(W.default)||null:W.default===void 0?null:W.default:null,this._enumValues=F&&F.type==="enum"?F.values:null}evaluateWithoutErrorHandling(A,F,W,te,fe,pe){return this._evaluator.globals=A,this._evaluator.feature=F,this._evaluator.featureState=W,this._evaluator.canonical=te,this._evaluator.availableImages=fe||null,this._evaluator.formattedSection=pe,this.expression.evaluate(this._evaluator)}evaluate(A,F,W,te,fe,pe){this._evaluator.globals=A,this._evaluator.feature=F||null,this._evaluator.featureState=W||null,this._evaluator.canonical=te,this._evaluator.availableImages=fe||null,this._evaluator.formattedSection=pe||null;try{let Re=this.expression.evaluate(this._evaluator);if(Re==null||typeof Re=="number"&&Re!=Re)return this._defaultValue;if(this._enumValues&&!(Re in this._enumValues))throw new ma(`Expected value to be one of ${Object.keys(this._enumValues).map(Ke=>JSON.stringify(Ke)).join(", ")}, but found ${JSON.stringify(Re)} instead.`);return Re}catch(Re){return this._warningHistory[Re.message]||(this._warningHistory[Re.message]=!0,typeof console!="undefined"&&console.warn(Re.message)),this._defaultValue}}}function Dc(R){return Array.isArray(R)&&R.length>0&&typeof R[0]=="string"&&R[0]in yf}function ks(R,A){let F=new vo(yf,eh,[],A?function(te){let fe={color:jt,string:Et,number:dt,enum:Et,boolean:pt,formatted:ei,padding:qr,resolvedImage:jr,variableAnchorOffsetCollection:gt};return te.type==="array"?Ge(fe[te.value]||mr,te.length):fe[te.type]}(A):void 0),W=F.parse(R,void 0,void 0,void 0,A&&A.type==="string"?{typeAnnotation:"coerce"}:void 0);return W?cc(new Eu(W,A)):sf(F.errors)}class bc{constructor(A,F){this.kind=A,this._styleExpression=F,this.isStateDependent=A!=="constant"&&!ju(F.expression)}evaluateWithoutErrorHandling(A,F,W,te,fe,pe){return this._styleExpression.evaluateWithoutErrorHandling(A,F,W,te,fe,pe)}evaluate(A,F,W,te,fe,pe){return this._styleExpression.evaluate(A,F,W,te,fe,pe)}}class hu{constructor(A,F,W,te){this.kind=A,this.zoomStops=W,this._styleExpression=F,this.isStateDependent=A!=="camera"&&!ju(F.expression),this.interpolationType=te}evaluateWithoutErrorHandling(A,F,W,te,fe,pe){return this._styleExpression.evaluateWithoutErrorHandling(A,F,W,te,fe,pe)}evaluate(A,F,W,te,fe,pe){return this._styleExpression.evaluate(A,F,W,te,fe,pe)}interpolationFactor(A,F,W){return this.interpolationType?ko.interpolationFactor(this.interpolationType,A,F,W):0}}function _u(R,A){let F=ks(R,A);if(F.result==="error")return F;let W=F.value.expression,te=th(W);if(!te&&!Nl(A))return sf([new rt("","data expressions not supported")]);let fe=jf(W,["zoom"]);if(!fe&&!Kc(A))return sf([new rt("","zoom expressions not supported")]);let pe=nh(W);return pe||fe?pe instanceof rt?sf([pe]):pe instanceof ko&&!Rc(A)?sf([new rt("",'"interpolate" expressions cannot be used with this property')]):cc(pe?new hu(te?"camera":"composite",F.value,pe.labels,pe instanceof ko?pe.interpolation:void 0):new bc(te?"constant":"source",F.value)):sf([new rt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class nl{constructor(A,F){this._parameters=A,this._specification=F,Ae(this,rh(this._parameters,this._specification))}static deserialize(A){return new nl(A._parameters,A._specification)}static serialize(A){return{_parameters:A._parameters,_specification:A._specification}}}function nh(R){let A=null;if(R instanceof Gn)A=nh(R.result);else if(R instanceof Fs){for(let F of R.args)if(A=nh(F),A)break}else(R instanceof _n||R instanceof ko)&&R.input instanceof Bl&&R.input.name==="zoom"&&(A=R);return A instanceof rt||R.eachChild(F=>{let W=nh(F);W instanceof rt?A=W:!A&&W?A=new rt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):A&&W&&A!==W&&(A=new rt("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),A}function Mh(R){if(R===!0||R===!1)return!0;if(!Array.isArray(R)||R.length===0)return!1;switch(R[0]){case"has":return R.length>=2&&R[1]!=="$id"&&R[1]!=="$type";case"in":return R.length>=3&&(typeof R[1]!="string"||Array.isArray(R[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return R.length!==3||Array.isArray(R[1])||Array.isArray(R[2]);case"any":case"all":for(let A of R.slice(1))if(!Mh(A)&&typeof A!="boolean")return!1;return!0;default:return!0}}let zu={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Fc(R){if(R==null)return{filter:()=>!0,needGeometry:!1};Mh(R)||(R=xf(R));let A=ks(R,zu);if(A.result==="error")throw new Error(A.value.map(F=>`${F.key}: ${F.message}`).join(", "));return{filter:(F,W,te)=>A.value.evaluate(F,W,{},te),needGeometry:bd(R)}}function wc(R,A){return RA?1:0}function bd(R){if(!Array.isArray(R))return!1;if(R[0]==="within"||R[0]==="distance")return!0;for(let A=1;A"||A==="<="||A===">="?Pf(R[1],R[2],A):A==="any"?(F=R.slice(1),["any"].concat(F.map(xf))):A==="all"?["all"].concat(R.slice(1).map(xf)):A==="none"?["all"].concat(R.slice(1).map(xf).map(jl)):A==="in"?qu(R[1],R.slice(2)):A==="!in"?jl(qu(R[1],R.slice(2))):A==="has"?bf(R[1]):A!=="!has"||jl(bf(R[1]));var F}function Pf(R,A,F){switch(R){case"$type":return[`filter-type-${F}`,A];case"$id":return[`filter-id-${F}`,A];default:return[`filter-${F}`,R,A]}}function qu(R,A){if(A.length===0)return!1;switch(R){case"$type":return["filter-type-in",["literal",A]];case"$id":return["filter-id-in",["literal",A]];default:return A.length>200&&!A.some(F=>typeof F!=typeof A[0])?["filter-in-large",R,["literal",A.sort(wc)]]:["filter-in-small",R,["literal",A]]}}function bf(R){switch(R){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",R]}}function jl(R){return["!",R]}function uf(R){let A=typeof R;if(A==="number"||A==="boolean"||A==="string"||R==null)return JSON.stringify(R);if(Array.isArray(R)){let te="[";for(let fe of R)te+=`${uf(fe)},`;return`${te}]`}let F=Object.keys(R).sort(),W="{";for(let te=0;teW.maximum?[new Ue(A,F,`${F} is greater than the maximum value ${W.maximum}`)]:[]}function wf(R){let A=R.valueSpec,F=Cs(R.value.type),W,te,fe,pe={},Re=F!=="categorical"&&R.value.property===void 0,Ke=!Re,ft=gs(R.value.stops)==="array"&&gs(R.value.stops[0])==="array"&&gs(R.value.stops[0][0])==="object",Rt=ku({key:R.key,value:R.value,valueSpec:R.styleSpec.function,validateSpec:R.validateSpec,style:R.style,styleSpec:R.styleSpec,objectElementValidators:{stops:function(vr){if(F==="identity")return[new Ue(vr.key,vr.value,'identity function may not have a "stops" property')];let kr=[],Dr=vr.value;return kr=kr.concat(Xf({key:vr.key,value:Dr,valueSpec:vr.valueSpec,validateSpec:vr.validateSpec,style:vr.style,styleSpec:vr.styleSpec,arrayElementValidator:er})),gs(Dr)==="array"&&Dr.length===0&&kr.push(new Ue(vr.key,Dr,"array must have at least one stop")),kr},default:function(vr){return vr.validateSpec({key:vr.key,value:vr.value,valueSpec:A,validateSpec:vr.validateSpec,style:vr.style,styleSpec:vr.styleSpec})}}});return F==="identity"&&Re&&Rt.push(new Ue(R.key,R.value,'missing required property "property"')),F==="identity"||R.value.stops||Rt.push(new Ue(R.key,R.value,'missing required property "stops"')),F==="exponential"&&R.valueSpec.expression&&!Rc(R.valueSpec)&&Rt.push(new Ue(R.key,R.value,"exponential functions not supported")),R.styleSpec.$version>=8&&(Ke&&!Nl(R.valueSpec)?Rt.push(new Ue(R.key,R.value,"property functions not supported")):Re&&!Kc(R.valueSpec)&&Rt.push(new Ue(R.key,R.value,"zoom functions not supported"))),F!=="categorical"&&!ft||R.value.property!==void 0||Rt.push(new Ue(R.key,R.value,'"property" property is required')),Rt;function er(vr){let kr=[],Dr=vr.value,li=vr.key;if(gs(Dr)!=="array")return[new Ue(li,Dr,`array expected, ${gs(Dr)} found`)];if(Dr.length!==2)return[new Ue(li,Dr,`array length 2 expected, length ${Dr.length} found`)];if(ft){if(gs(Dr[0])!=="object")return[new Ue(li,Dr,`object expected, ${gs(Dr[0])} found`)];if(Dr[0].zoom===void 0)return[new Ue(li,Dr,"object stop key must have zoom")];if(Dr[0].value===void 0)return[new Ue(li,Dr,"object stop key must have value")];if(fe&&fe>Cs(Dr[0].zoom))return[new Ue(li,Dr[0].zoom,"stop zoom values must appear in ascending order")];Cs(Dr[0].zoom)!==fe&&(fe=Cs(Dr[0].zoom),te=void 0,pe={}),kr=kr.concat(ku({key:`${li}[0]`,value:Dr[0],valueSpec:{zoom:{}},validateSpec:vr.validateSpec,style:vr.style,styleSpec:vr.styleSpec,objectElementValidators:{zoom:Us,value:ur}}))}else kr=kr.concat(ur({key:`${li}[0]`,value:Dr[0],valueSpec:{},validateSpec:vr.validateSpec,style:vr.style,styleSpec:vr.styleSpec},Dr));return Dc(du(Dr[1]))?kr.concat([new Ue(`${li}[1]`,Dr[1],"expressions are not allowed in function stops.")]):kr.concat(vr.validateSpec({key:`${li}[1]`,value:Dr[1],valueSpec:A,validateSpec:vr.validateSpec,style:vr.style,styleSpec:vr.styleSpec}))}function ur(vr,kr){let Dr=gs(vr.value),li=Cs(vr.value),pi=vr.value!==null?vr.value:kr;if(W){if(Dr!==W)return[new Ue(vr.key,pi,`${Dr} stop domain type must match previous stop domain type ${W}`)]}else W=Dr;if(Dr!=="number"&&Dr!=="string"&&Dr!=="boolean")return[new Ue(vr.key,pi,"stop domain value must be a number, string, or boolean")];if(Dr!=="number"&&F!=="categorical"){let vn=`number expected, ${Dr} found`;return Nl(A)&&F===void 0&&(vn+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new Ue(vr.key,pi,vn)]}return F!=="categorical"||Dr!=="number"||isFinite(li)&&Math.floor(li)===li?F!=="categorical"&&Dr==="number"&&te!==void 0&&linew Ue(`${R.key}${W.key}`,R.value,W.message));let F=A.value.expression||A.value._styleExpression.expression;if(R.expressionContext==="property"&&R.propertyKey==="text-font"&&!F.outputDefined())return[new Ue(R.key,R.value,`Invalid data expression for "${R.propertyKey}". Output values must be contained as literals within the expression.`)];if(R.expressionContext==="property"&&R.propertyType==="layout"&&!ju(F))return[new Ue(R.key,R.value,'"feature-state" data expressions are not supported with layout properties.')];if(R.expressionContext==="filter"&&!ju(F))return[new Ue(R.key,R.value,'"feature-state" data expressions are not supported with filters.')];if(R.expressionContext&&R.expressionContext.indexOf("cluster")===0){if(!jf(F,["zoom","feature-state"]))return[new Ue(R.key,R.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(R.expressionContext==="cluster-initial"&&!th(F))return[new Ue(R.key,R.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function Wu(R){let A=R.key,F=R.value,W=R.valueSpec,te=[];return Array.isArray(W.values)?W.values.indexOf(Cs(F))===-1&&te.push(new Ue(A,F,`expected one of [${W.values.join(", ")}], ${JSON.stringify(F)} found`)):Object.keys(W.values).indexOf(Cs(F))===-1&&te.push(new Ue(A,F,`expected one of [${Object.keys(W.values).join(", ")}], ${JSON.stringify(F)} found`)),te}function Rf(R){return Mh(du(R.value))?zc(Ae({},R,{expressionContext:"filter",valueSpec:{value:"boolean"}})):Xu(R)}function Xu(R){let A=R.value,F=R.key;if(gs(A)!=="array")return[new Ue(F,A,`array expected, ${gs(A)} found`)];let W=R.styleSpec,te,fe=[];if(A.length<1)return[new Ue(F,A,"filter array must have at least 1 element")];switch(fe=fe.concat(Wu({key:`${F}[0]`,value:A[0],valueSpec:W.filter_operator,style:R.style,styleSpec:R.styleSpec})),Cs(A[0])){case"<":case"<=":case">":case">=":A.length>=2&&Cs(A[1])==="$type"&&fe.push(new Ue(F,A,`"$type" cannot be use with operator "${A[0]}"`));case"==":case"!=":A.length!==3&&fe.push(new Ue(F,A,`filter array for operator "${A[0]}" must have 3 elements`));case"in":case"!in":A.length>=2&&(te=gs(A[1]),te!=="string"&&fe.push(new Ue(`${F}[1]`,A[1],`string expected, ${te} found`)));for(let pe=2;pe{ft in F&&A.push(new Ue(W,F[ft],`"${ft}" is prohibited for ref layers`))}),te.layers.forEach(ft=>{Cs(ft.id)===Re&&(Ke=ft)}),Ke?Ke.ref?A.push(new Ue(W,F.ref,"ref cannot reference another ref layer")):pe=Cs(Ke.type):A.push(new Ue(W,F.ref,`ref layer "${Re}" not found`))}else if(pe!=="background")if(F.source){let Ke=te.sources&&te.sources[F.source],ft=Ke&&Cs(Ke.type);Ke?ft==="vector"&&pe==="raster"?A.push(new Ue(W,F.source,`layer "${F.id}" requires a raster source`)):ft!=="raster-dem"&&pe==="hillshade"?A.push(new Ue(W,F.source,`layer "${F.id}" requires a raster-dem source`)):ft==="raster"&&pe!=="raster"?A.push(new Ue(W,F.source,`layer "${F.id}" requires a vector source`)):ft!=="vector"||F["source-layer"]?ft==="raster-dem"&&pe!=="hillshade"?A.push(new Ue(W,F.source,"raster-dem source can only be used with layer type 'hillshade'.")):pe!=="line"||!F.paint||!F.paint["line-gradient"]||ft==="geojson"&&Ke.lineMetrics||A.push(new Ue(W,F,`layer "${F.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):A.push(new Ue(W,F,`layer "${F.id}" must specify a "source-layer"`)):A.push(new Ue(W,F.source,`source "${F.source}" not found`))}else A.push(new Ue(W,F,'missing required property "source"'));return A=A.concat(ku({key:W,value:F,valueSpec:fe.layer,style:R.style,styleSpec:R.styleSpec,validateSpec:R.validateSpec,objectElementValidators:{"*":()=>[],type:()=>R.validateSpec({key:`${W}.type`,value:F.type,valueSpec:fe.layer.type,style:R.style,styleSpec:R.styleSpec,validateSpec:R.validateSpec,object:F,objectKey:"type"}),filter:Rf,layout:Ke=>ku({layer:F,key:Ke.key,value:Ke.value,style:Ke.style,styleSpec:Ke.styleSpec,validateSpec:Ke.validateSpec,objectElementValidators:{"*":ft=>Wl(Ae({layerType:pe},ft))}}),paint:Ke=>ku({layer:F,key:Ke.key,value:Ke.value,style:Ke.style,styleSpec:Ke.styleSpec,validateSpec:Ke.validateSpec,objectElementValidators:{"*":ft=>Zf(Ae({layerType:pe},ft))}})}})),A}function Zu(R){let A=R.value,F=R.key,W=gs(A);return W!=="string"?[new Ue(F,A,`string expected, ${W} found`)]:[]}let qc={promoteId:function({key:R,value:A}){if(gs(A)==="string")return Zu({key:R,value:A});{let F=[];for(let W in A)F.push(...Zu({key:`${R}.${W}`,value:A[W]}));return F}}};function Tc(R){let A=R.value,F=R.key,W=R.styleSpec,te=R.style,fe=R.validateSpec;if(!A.type)return[new Ue(F,A,'"type" is required')];let pe=Cs(A.type),Re;switch(pe){case"vector":case"raster":return Re=ku({key:F,value:A,valueSpec:W[`source_${pe.replace("-","_")}`],style:R.style,styleSpec:W,objectElementValidators:qc,validateSpec:fe}),Re;case"raster-dem":return Re=function(Ke){var ft;let Rt=(ft=Ke.sourceName)!==null&&ft!==void 0?ft:"",er=Ke.value,ur=Ke.styleSpec,vr=ur.source_raster_dem,kr=Ke.style,Dr=[],li=gs(er);if(er===void 0)return Dr;if(li!=="object")return Dr.push(new Ue("source_raster_dem",er,`object expected, ${li} found`)),Dr;let pi=Cs(er.encoding)==="custom",vn=["redFactor","greenFactor","blueFactor","baseShift"],zi=Ke.value.encoding?`"${Ke.value.encoding}"`:"Default";for(let ln in er)!pi&&vn.includes(ln)?Dr.push(new Ue(ln,er[ln],`In "${Rt}": "${ln}" is only valid when "encoding" is set to "custom". ${zi} encoding found`)):vr[ln]?Dr=Dr.concat(Ke.validateSpec({key:ln,value:er[ln],valueSpec:vr[ln],validateSpec:Ke.validateSpec,style:kr,styleSpec:ur})):Dr.push(new Ue(ln,er[ln],`unknown property "${ln}"`));return Dr}({sourceName:F,value:A,style:R.style,styleSpec:W,validateSpec:fe}),Re;case"geojson":if(Re=ku({key:F,value:A,valueSpec:W.source_geojson,style:te,styleSpec:W,validateSpec:fe,objectElementValidators:qc}),A.cluster)for(let Ke in A.clusterProperties){let[ft,Rt]=A.clusterProperties[Ke],er=typeof ft=="string"?[ft,["accumulated"],["get",Ke]]:ft;Re.push(...zc({key:`${F}.${Ke}.map`,value:Rt,validateSpec:fe,expressionContext:"cluster-map"})),Re.push(...zc({key:`${F}.${Ke}.reduce`,value:er,validateSpec:fe,expressionContext:"cluster-reduce"}))}return Re;case"video":return ku({key:F,value:A,valueSpec:W.source_video,style:te,validateSpec:fe,styleSpec:W});case"image":return ku({key:F,value:A,valueSpec:W.source_image,style:te,validateSpec:fe,styleSpec:W});case"canvas":return[new Ue(F,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return Wu({key:`${F}.type`,value:A.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:te,validateSpec:fe,styleSpec:W})}}function wl(R){let A=R.value,F=R.styleSpec,W=F.light,te=R.style,fe=[],pe=gs(A);if(A===void 0)return fe;if(pe!=="object")return fe=fe.concat([new Ue("light",A,`object expected, ${pe} found`)]),fe;for(let Re in A){let Ke=Re.match(/^(.*)-transition$/);fe=fe.concat(Ke&&W[Ke[1]]&&W[Ke[1]].transition?R.validateSpec({key:Re,value:A[Re],valueSpec:F.transition,validateSpec:R.validateSpec,style:te,styleSpec:F}):W[Re]?R.validateSpec({key:Re,value:A[Re],valueSpec:W[Re],validateSpec:R.validateSpec,style:te,styleSpec:F}):[new Ue(Re,A[Re],`unknown property "${Re}"`)])}return fe}function vu(R){let A=R.value,F=R.styleSpec,W=F.sky,te=R.style,fe=gs(A);if(A===void 0)return[];if(fe!=="object")return[new Ue("sky",A,`object expected, ${fe} found`)];let pe=[];for(let Re in A)pe=pe.concat(W[Re]?R.validateSpec({key:Re,value:A[Re],valueSpec:W[Re],style:te,styleSpec:F}):[new Ue(Re,A[Re],`unknown property "${Re}"`)]);return pe}function Oc(R){let A=R.value,F=R.styleSpec,W=F.terrain,te=R.style,fe=[],pe=gs(A);if(A===void 0)return fe;if(pe!=="object")return fe=fe.concat([new Ue("terrain",A,`object expected, ${pe} found`)]),fe;for(let Re in A)fe=fe.concat(W[Re]?R.validateSpec({key:Re,value:A[Re],valueSpec:W[Re],validateSpec:R.validateSpec,style:te,styleSpec:F}):[new Ue(Re,A[Re],`unknown property "${Re}"`)]);return fe}function ff(R){let A=[],F=R.value,W=R.key;if(Array.isArray(F)){let te=[],fe=[];for(let pe in F)F[pe].id&&te.includes(F[pe].id)&&A.push(new Ue(W,F,`all the sprites' ids must be unique, but ${F[pe].id} is duplicated`)),te.push(F[pe].id),F[pe].url&&fe.includes(F[pe].url)&&A.push(new Ue(W,F,`all the sprites' URLs must be unique, but ${F[pe].url} is duplicated`)),fe.push(F[pe].url),A=A.concat(ku({key:`${W}[${pe}]`,value:F[pe],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:R.validateSpec}));return A}return Zu({key:W,value:F})}let fc={"*":()=>[],array:Xf,boolean:function(R){let A=R.value,F=R.key,W=gs(A);return W!=="boolean"?[new Ue(F,A,`boolean expected, ${W} found`)]:[]},number:Us,color:function(R){let A=R.key,F=R.value,W=gs(F);return W!=="string"?[new Ue(A,F,`color expected, ${W} found`)]:ir.parse(String(F))?[]:[new Ue(A,F,`color expected, "${F}" found`)]},constants:If,enum:Wu,filter:Rf,function:wf,layer:ah,object:ku,source:Tc,light:wl,sky:vu,terrain:Oc,projection:function(R){let A=R.value,F=R.styleSpec,W=F.projection,te=R.style,fe=gs(A);if(A===void 0)return[];if(fe!=="object")return[new Ue("projection",A,`object expected, ${fe} found`)];let pe=[];for(let Re in A)pe=pe.concat(W[Re]?R.validateSpec({key:Re,value:A[Re],valueSpec:W[Re],style:te,styleSpec:F}):[new Ue(Re,A[Re],`unknown property "${Re}"`)]);return pe},string:Zu,formatted:function(R){return Zu(R).length===0?[]:zc(R)},resolvedImage:function(R){return Zu(R).length===0?[]:zc(R)},padding:function(R){let A=R.key,F=R.value;if(gs(F)==="array"){if(F.length<1||F.length>4)return[new Ue(A,F,`padding requires 1 to 4 values; ${F.length} values found`)];let W={type:"number"},te=[];for(let fe=0;fe[]}})),R.constants&&(F=F.concat(If({key:"constants",value:R.constants,style:R,styleSpec:A,validateSpec:Bc}))),xr(F)}function Er(R){return function(A){return R(j1(_g({},A),{validateSpec:Bc}))}}function xr(R){return[].concat(R).sort((A,F)=>A.line-F.line)}function Kr(R){return function(...A){return xr(R.apply(this,A))}}Zt.source=Kr(Er(Tc)),Zt.sprite=Kr(Er(ff)),Zt.glyphs=Kr(Er(kt)),Zt.light=Kr(Er(wl)),Zt.sky=Kr(Er(vu)),Zt.terrain=Kr(Er(Oc)),Zt.layer=Kr(Er(ah)),Zt.filter=Kr(Er(Rf)),Zt.paintProperty=Kr(Er(Zf)),Zt.layoutProperty=Kr(Er(Wl));let Mi=Zt,Wi=Mi.light,dn=Mi.sky,wn=Mi.paintProperty,On=Mi.layoutProperty;function Yi(R,A){let F=!1;if(A&&A.length)for(let W of A)R.fire(new me(new Error(W.message))),F=!0;return F}class $i{constructor(A,F,W){let te=this.cells=[];if(A instanceof ArrayBuffer){this.arrayBuffer=A;let pe=new Int32Array(this.arrayBuffer);A=pe[0],this.d=(F=pe[1])+2*(W=pe[2]);for(let Ke=0;Ke=er[kr+0]&&te>=er[kr+1])?(Re[vr]=!0,pe.push(Rt[vr])):Re[vr]=!1}}}}_forEachCell(A,F,W,te,fe,pe,Re,Ke){let ft=this._convertToCellCoord(A),Rt=this._convertToCellCoord(F),er=this._convertToCellCoord(W),ur=this._convertToCellCoord(te);for(let vr=ft;vr<=er;vr++)for(let kr=Rt;kr<=ur;kr++){let Dr=this.d*kr+vr;if((!Ke||Ke(this._convertFromCellCoord(vr),this._convertFromCellCoord(kr),this._convertFromCellCoord(vr+1),this._convertFromCellCoord(kr+1)))&&fe.call(this,A,F,W,te,Dr,pe,Re,Ke))return}}_convertFromCellCoord(A){return(A-this.padding)/this.scale}_convertToCellCoord(A){return Math.max(0,Math.min(this.d-1,Math.floor(A*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let A=this.cells,F=3+this.cells.length+1+1,W=0;for(let pe=0;pe=0)continue;let pe=R[fe];te[fe]=an[F].shallow.indexOf(fe)>=0?pe:La(pe,A)}R instanceof Error&&(te.message=R.message)}if(te.$name)throw new Error("$name property is reserved for worker serialization logic.");return F!=="Object"&&(te.$name=F),te}function Ua(R){if(Ra(R))return R;if(Array.isArray(R))return R.map(Ua);if(typeof R!="object")throw new Error("can't deserialize object of type "+typeof R);let A=Ca(R)||"Object";if(!an[A])throw new Error(`can't deserialize unregistered class ${A}`);let{klass:F}=an[A];if(!F)throw new Error(`can't deserialize unregistered class ${A}`);if(F.deserialize)return F.deserialize(R);let W=Object.create(F.prototype);for(let te of Object.keys(R)){if(te==="$name")continue;let fe=R[te];W[te]=an[A].shallow.indexOf(te)>=0?fe:Ua(fe)}return W}class Zn{constructor(){this.first=!0}update(A,F){let W=Math.floor(A);return this.first?(this.first=!1,this.lastIntegerZoom=W,this.lastIntegerZoomTime=0,this.lastZoom=A,this.lastFloorZoom=W,!0):(this.lastFloorZoom>W?(this.lastIntegerZoom=W+1,this.lastIntegerZoomTime=F):this.lastFloorZoomR>=128&&R<=255,"Hangul Jamo":R=>R>=4352&&R<=4607,Khmer:R=>R>=6016&&R<=6143,"General Punctuation":R=>R>=8192&&R<=8303,"Letterlike Symbols":R=>R>=8448&&R<=8527,"Number Forms":R=>R>=8528&&R<=8591,"Miscellaneous Technical":R=>R>=8960&&R<=9215,"Control Pictures":R=>R>=9216&&R<=9279,"Optical Character Recognition":R=>R>=9280&&R<=9311,"Enclosed Alphanumerics":R=>R>=9312&&R<=9471,"Geometric Shapes":R=>R>=9632&&R<=9727,"Miscellaneous Symbols":R=>R>=9728&&R<=9983,"Miscellaneous Symbols and Arrows":R=>R>=11008&&R<=11263,"Ideographic Description Characters":R=>R>=12272&&R<=12287,"CJK Symbols and Punctuation":R=>R>=12288&&R<=12351,Katakana:R=>R>=12448&&R<=12543,Kanbun:R=>R>=12688&&R<=12703,"CJK Strokes":R=>R>=12736&&R<=12783,"Enclosed CJK Letters and Months":R=>R>=12800&&R<=13055,"CJK Compatibility":R=>R>=13056&&R<=13311,"Yijing Hexagram Symbols":R=>R>=19904&&R<=19967,"Private Use Area":R=>R>=57344&&R<=63743,"Vertical Forms":R=>R>=65040&&R<=65055,"CJK Compatibility Forms":R=>R>=65072&&R<=65103,"Small Form Variants":R=>R>=65104&&R<=65135,"Halfwidth and Fullwidth Forms":R=>R>=65280&&R<=65519};function Ka(R){for(let A of R)if(Ho(A.charCodeAt(0)))return!0;return!1}function bo(R){for(let A of R)if(!as(A.charCodeAt(0)))return!1;return!0}function Zo(R){let A=R.map(F=>{try{return new RegExp(`\\p{sc=${F}}`,"u").source}catch(W){return null}}).filter(F=>F);return new RegExp(A.join("|"),"u")}let Ss=Zo(["Arab","Dupl","Mong","Ougr","Syrc"]);function as(R){return!Ss.test(String.fromCodePoint(R))}let ws=Zo(["Bopo","Hani","Hira","Kana","Kits","Nshu","Tang","Yiii"]);function Ho(R){return!(R!==746&&R!==747&&(R<4352||!(Dn["CJK Compatibility Forms"](R)&&!(R>=65097&&R<=65103)||Dn["CJK Compatibility"](R)||Dn["CJK Strokes"](R)||!(!Dn["CJK Symbols and Punctuation"](R)||R>=12296&&R<=12305||R>=12308&&R<=12319||R===12336)||Dn["Enclosed CJK Letters and Months"](R)||Dn["Ideographic Description Characters"](R)||Dn.Kanbun(R)||Dn.Katakana(R)&&R!==12540||!(!Dn["Halfwidth and Fullwidth Forms"](R)||R===65288||R===65289||R===65293||R>=65306&&R<=65310||R===65339||R===65341||R===65343||R>=65371&&R<=65503||R===65507||R>=65512&&R<=65519)||!(!Dn["Small Form Variants"](R)||R>=65112&&R<=65118||R>=65123&&R<=65126)||Dn["Vertical Forms"](R)||Dn["Yijing Hexagram Symbols"](R)||new RegExp("\\p{sc=Cans}","u").test(String.fromCodePoint(R))||new RegExp("\\p{sc=Hang}","u").test(String.fromCodePoint(R))||ws.test(String.fromCodePoint(R)))))}function ml(R){return!(Ho(R)||function(A){return!!(Dn["Latin-1 Supplement"](A)&&(A===167||A===169||A===174||A===177||A===188||A===189||A===190||A===215||A===247)||Dn["General Punctuation"](A)&&(A===8214||A===8224||A===8225||A===8240||A===8241||A===8251||A===8252||A===8258||A===8263||A===8264||A===8265||A===8273)||Dn["Letterlike Symbols"](A)||Dn["Number Forms"](A)||Dn["Miscellaneous Technical"](A)&&(A>=8960&&A<=8967||A>=8972&&A<=8991||A>=8996&&A<=9e3||A===9003||A>=9085&&A<=9114||A>=9150&&A<=9165||A===9167||A>=9169&&A<=9179||A>=9186&&A<=9215)||Dn["Control Pictures"](A)&&A!==9251||Dn["Optical Character Recognition"](A)||Dn["Enclosed Alphanumerics"](A)||Dn["Geometric Shapes"](A)||Dn["Miscellaneous Symbols"](A)&&!(A>=9754&&A<=9759)||Dn["Miscellaneous Symbols and Arrows"](A)&&(A>=11026&&A<=11055||A>=11088&&A<=11097||A>=11192&&A<=11243)||Dn["CJK Symbols and Punctuation"](A)||Dn.Katakana(A)||Dn["Private Use Area"](A)||Dn["CJK Compatibility Forms"](A)||Dn["Small Form Variants"](A)||Dn["Halfwidth and Fullwidth Forms"](A)||A===8734||A===8756||A===8757||A>=9984&&A<=10087||A>=10102&&A<=10131||A===65532||A===65533)}(R))}let Ws=Zo(["Adlm","Arab","Armi","Avst","Chrs","Cprt","Egyp","Elym","Gara","Hatr","Hebr","Hung","Khar","Lydi","Mand","Mani","Mend","Merc","Mero","Narb","Nbat","Nkoo","Orkh","Palm","Phli","Phlp","Phnx","Prti","Rohg","Samr","Sarb","Sogo","Syrc","Thaa","Todr","Yezi"]);function Ls(R){return Ws.test(String.fromCodePoint(R))}function va(R,A){return!(!A&&Ls(R)||R>=2304&&R<=3583||R>=3840&&R<=4255||Dn.Khmer(R))}function no(R){for(let A of R)if(Ls(A.charCodeAt(0)))return!0;return!1}let ys=new class{constructor(){this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null}setState(R){this.pluginStatus=R.pluginStatus,this.pluginURL=R.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(R){this.applyArabicShaping=R.applyArabicShaping,this.processBidirectionalText=R.processBidirectionalText,this.processStyledBidirectionalText=R.processStyledBidirectionalText}isParsed(){return this.applyArabicShaping!=null&&this.processBidirectionalText!=null&&this.processStyledBidirectionalText!=null}getPluginURL(){return this.pluginURL}getRTLTextPluginStatus(){return this.pluginStatus}};class rs{constructor(A,F){this.zoom=A,F?(this.now=F.now,this.fadeDuration=F.fadeDuration,this.zoomHistory=F.zoomHistory,this.transition=F.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Zn,this.transition={})}isSupportedScript(A){return function(F,W){for(let te of F)if(!va(te.charCodeAt(0),W))return!1;return!0}(A,ys.getRTLTextPluginStatus()==="loaded")}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let A=this.zoom,F=A-Math.floor(A),W=this.crossFadingFactor();return A>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:F+(1-F)*W}:{fromScale:.5,toScale:1,t:1-(1-W)*F}}}class Ql{constructor(A,F){this.property=A,this.value=F,this.expression=function(W,te){if(Wf(W))return new nl(W,te);if(Dc(W)){let fe=_u(W,te);if(fe.result==="error")throw new Error(fe.value.map(pe=>`${pe.key}: ${pe.message}`).join(", "));return fe.value}{let fe=W;return te.type==="color"&&typeof W=="string"?fe=ir.parse(W):te.type!=="padding"||typeof W!="number"&&!Array.isArray(W)?te.type==="variableAnchorOffsetCollection"&&Array.isArray(W)&&(fe=Zi.parse(W)):fe=$r.parse(W),{kind:"constant",evaluate:()=>fe}}}(F===void 0?A.specification.default:F,A.specification)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(A,F,W){return this.property.possiblyEvaluate(this,A,F,W)}}class Cu{constructor(A){this.property=A,this.value=new Ql(A,void 0)}transitioned(A,F){return new Nc(this.property,this.value,F,L({},A.transition,this.transition),A.now)}untransitioned(){return new Nc(this.property,this.value,null,{},0)}}class Yu{constructor(A){this._properties=A,this._values=Object.create(A.defaultTransitionablePropertyValues)}getValue(A){return g(this._values[A].value.value)}setValue(A,F){Object.prototype.hasOwnProperty.call(this._values,A)||(this._values[A]=new Cu(this._values[A].property)),this._values[A].value=new Ql(this._values[A].property,F===null?void 0:g(F))}getTransition(A){return g(this._values[A].transition)}setTransition(A,F){Object.prototype.hasOwnProperty.call(this._values,A)||(this._values[A]=new Cu(this._values[A].property)),this._values[A].transition=g(F)||void 0}serialize(){let A={};for(let F of Object.keys(this._values)){let W=this.getValue(F);W!==void 0&&(A[F]=W);let te=this.getTransition(F);te!==void 0&&(A[`${F}-transition`]=te)}return A}transitioned(A,F){let W=new pu(this._properties);for(let te of Object.keys(this._values))W._values[te]=this._values[te].transitioned(A,F._values[te]);return W}untransitioned(){let A=new pu(this._properties);for(let F of Object.keys(this._values))A._values[F]=this._values[F].untransitioned();return A}}class Nc{constructor(A,F,W,te,fe){this.property=A,this.value=F,this.begin=fe+te.delay||0,this.end=this.begin+te.duration||0,A.specification.transition&&(te.delay||te.duration)&&(this.prior=W)}possiblyEvaluate(A,F,W){let te=A.now||0,fe=this.value.possiblyEvaluate(A,F,W),pe=this.prior;if(pe){if(te>this.end)return this.prior=null,fe;if(this.value.isDataDriven())return this.prior=null,fe;if(te=1)return 1;let ft=Ke*Ke,Rt=ft*Ke;return 4*(Ke<.5?Rt:3*(Ke-ft)+Rt-.75)}(Re))}}return fe}}class pu{constructor(A){this._properties=A,this._values=Object.create(A.defaultTransitioningPropertyValues)}possiblyEvaluate(A,F,W){let te=new Ac(this._properties);for(let fe of Object.keys(this._values))te._values[fe]=this._values[fe].possiblyEvaluate(A,F,W);return te}hasTransition(){for(let A of Object.keys(this._values))if(this._values[A].prior)return!0;return!1}}class Uc{constructor(A){this._properties=A,this._values=Object.create(A.defaultPropertyValues)}hasValue(A){return this._values[A].value!==void 0}getValue(A){return g(this._values[A].value)}setValue(A,F){this._values[A]=new Ql(this._values[A].property,F===null?void 0:g(F))}serialize(){let A={};for(let F of Object.keys(this._values)){let W=this.getValue(F);W!==void 0&&(A[F]=W)}return A}possiblyEvaluate(A,F,W){let te=new Ac(this._properties);for(let fe of Object.keys(this._values))te._values[fe]=this._values[fe].possiblyEvaluate(A,F,W);return te}}class xu{constructor(A,F,W){this.property=A,this.value=F,this.parameters=W}isConstant(){return this.value.kind==="constant"}constantOr(A){return this.value.kind==="constant"?this.value.value:A}evaluate(A,F,W,te){return this.property.evaluate(this.value,this.parameters,A,F,W,te)}}class Ac{constructor(A){this._properties=A,this._values=Object.create(A.defaultPossiblyEvaluatedValues)}get(A){return this._values[A]}}class Va{constructor(A){this.specification=A}possiblyEvaluate(A,F){if(A.isDataDriven())throw new Error("Value should not be data driven");return A.expression.evaluate(F)}interpolate(A,F,W){let te=Lo[this.specification.type];return te?te(A,F,W):A}}class oo{constructor(A,F){this.specification=A,this.overrides=F}possiblyEvaluate(A,F,W,te){return new xu(this,A.expression.kind==="constant"||A.expression.kind==="camera"?{kind:"constant",value:A.expression.evaluate(F,null,{},W,te)}:A.expression,F)}interpolate(A,F,W){if(A.value.kind!=="constant"||F.value.kind!=="constant")return A;if(A.value.value===void 0||F.value.value===void 0)return new xu(this,{kind:"constant",value:void 0},A.parameters);let te=Lo[this.specification.type];if(te){let fe=te(A.value.value,F.value.value,W);return new xu(this,{kind:"constant",value:fe},A.parameters)}return A}evaluate(A,F,W,te,fe,pe){return A.kind==="constant"?A.value:A.evaluate(F,W,te,fe,pe)}}class Vc extends oo{possiblyEvaluate(A,F,W,te){if(A.value===void 0)return new xu(this,{kind:"constant",value:void 0},F);if(A.expression.kind==="constant"){let fe=A.expression.evaluate(F,null,{},W,te),pe=A.property.specification.type==="resolvedImage"&&typeof fe!="string"?fe.name:fe,Re=this._calculate(pe,pe,pe,F);return new xu(this,{kind:"constant",value:Re},F)}if(A.expression.kind==="camera"){let fe=this._calculate(A.expression.evaluate({zoom:F.zoom-1}),A.expression.evaluate({zoom:F.zoom}),A.expression.evaluate({zoom:F.zoom+1}),F);return new xu(this,{kind:"constant",value:fe},F)}return new xu(this,A.expression,F)}evaluate(A,F,W,te,fe,pe){if(A.kind==="source"){let Re=A.evaluate(F,W,te,fe,pe);return this._calculate(Re,Re,Re,F)}return A.kind==="composite"?this._calculate(A.evaluate({zoom:Math.floor(F.zoom)-1},W,te),A.evaluate({zoom:Math.floor(F.zoom)},W,te),A.evaluate({zoom:Math.floor(F.zoom)+1},W,te),F):A.value}_calculate(A,F,W,te){return te.zoom>te.zoomHistory.lastIntegerZoom?{from:A,to:F}:{from:W,to:F}}interpolate(A){return A}}class hc{constructor(A){this.specification=A}possiblyEvaluate(A,F,W,te){if(A.value!==void 0){if(A.expression.kind==="constant"){let fe=A.expression.evaluate(F,null,{},W,te);return this._calculate(fe,fe,fe,F)}return this._calculate(A.expression.evaluate(new rs(Math.floor(F.zoom-1),F)),A.expression.evaluate(new rs(Math.floor(F.zoom),F)),A.expression.evaluate(new rs(Math.floor(F.zoom+1),F)),F)}}_calculate(A,F,W,te){return te.zoom>te.zoomHistory.lastIntegerZoom?{from:A,to:F}:{from:W,to:F}}interpolate(A){return A}}class Ku{constructor(A){this.specification=A}possiblyEvaluate(A,F,W,te){return!!A.expression.evaluate(F,null,{},W,te)}interpolate(){return!1}}class ue{constructor(A){this.properties=A,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let F in A){let W=A[F];W.specification.overridable&&this.overridableProperties.push(F);let te=this.defaultPropertyValues[F]=new Ql(W,void 0),fe=this.defaultTransitionablePropertyValues[F]=new Cu(W);this.defaultTransitioningPropertyValues[F]=fe.untransitioned(),this.defaultPossiblyEvaluatedValues[F]=te.possiblyEvaluate({})}}}Fi("DataDrivenProperty",oo),Fi("DataConstantProperty",Va),Fi("CrossFadedDataDrivenProperty",Vc),Fi("CrossFadedProperty",hc),Fi("ColorRampProperty",Ku);let w="-transition";class B extends Pe{constructor(A,F){if(super(),this.id=A.id,this.type=A.type,this._featureFilter={filter:()=>!0,needGeometry:!1},A.type!=="custom"&&(this.metadata=A.metadata,this.minzoom=A.minzoom,this.maxzoom=A.maxzoom,A.type!=="background"&&(this.source=A.source,this.sourceLayer=A["source-layer"],this.filter=A.filter),F.layout&&(this._unevaluatedLayout=new Uc(F.layout)),F.paint)){this._transitionablePaint=new Yu(F.paint);for(let W in A.paint)this.setPaintProperty(W,A.paint[W],{validate:!1});for(let W in A.layout)this.setLayoutProperty(W,A.layout[W],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Ac(F.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(A){return A==="visibility"?this.visibility:this._unevaluatedLayout.getValue(A)}setLayoutProperty(A,F,W={}){F!=null&&this._validate(On,`layers.${this.id}.layout.${A}`,A,F,W)||(A!=="visibility"?this._unevaluatedLayout.setValue(A,F):this.visibility=F)}getPaintProperty(A){return A.endsWith(w)?this._transitionablePaint.getTransition(A.slice(0,-11)):this._transitionablePaint.getValue(A)}setPaintProperty(A,F,W={}){if(F!=null&&this._validate(wn,`layers.${this.id}.paint.${A}`,A,F,W))return!1;if(A.endsWith(w))return this._transitionablePaint.setTransition(A.slice(0,-11),F||void 0),!1;{let te=this._transitionablePaint._values[A],fe=te.property.specification["property-type"]==="cross-faded-data-driven",pe=te.value.isDataDriven(),Re=te.value;this._transitionablePaint.setValue(A,F),this._handleSpecialPaintPropertyUpdate(A);let Ke=this._transitionablePaint._values[A].value;return Ke.isDataDriven()||pe||fe||this._handleOverridablePaintPropertyUpdate(A,Re,Ke)}}_handleSpecialPaintPropertyUpdate(A){}_handleOverridablePaintPropertyUpdate(A,F,W){return!1}isHidden(A){return!!(this.minzoom&&A=this.maxzoom)||this.visibility==="none"}updateTransitions(A){this._transitioningPaint=this._transitionablePaint.transitioned(A,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(A,F){A.getCrossfadeParameters&&(this._crossfadeParameters=A.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(A,void 0,F)),this.paint=this._transitioningPaint.possiblyEvaluate(A,void 0,F)}serialize(){let A={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(A.layout=A.layout||{},A.layout.visibility=this.visibility),S(A,(F,W)=>!(F===void 0||W==="layout"&&!Object.keys(F).length||W==="paint"&&!Object.keys(F).length))}_validate(A,F,W,te,fe={}){return(!fe||fe.validate!==!1)&&Yi(this,A.call(Mi,{key:F,layerType:this.type,objectKey:W,value:te,styleSpec:ce,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let A in this.paint._values){let F=this.paint.get(A);if(F instanceof xu&&Nl(F.property.specification)&&(F.value.kind==="source"||F.value.kind==="composite")&&F.value.isStateDependent)return!0}return!1}}let Q={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class ee{constructor(A,F){this._structArray=A,this._pos1=F*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class le{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(A,F){return A._trim(),F&&(A.isTransferred=!0,F.push(A.arrayBuffer)),{length:A.length,arrayBuffer:A.arrayBuffer}}static deserialize(A){let F=Object.create(this.prototype);return F.arrayBuffer=A.arrayBuffer,F.length=A.length,F.capacity=A.arrayBuffer.byteLength/F.bytesPerElement,F._refreshViews(),F}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(A){this.reserve(A),this.length=A}reserve(A){if(A>this.capacity){this.capacity=Math.max(A,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);let F=this.uint8;this._refreshViews(),F&&this.uint8.set(F)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function Fe(R,A=1){let F=0,W=0;return{members:R.map(te=>{let fe=Q[te.type].BYTES_PER_ELEMENT,pe=F=Ze(F,Math.max(A,fe)),Re=te.components||1;return W=Math.max(W,fe),F+=fe*Re,{name:te.name,type:te.type,components:Re,offset:pe}}),size:Ze(F,Math.max(W,A)),alignment:A}}function Ze(R,A){return Math.ceil(R/A)*A}class ut extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(A,F){let W=this.length;return this.resize(W+1),this.emplace(W,A,F)}emplace(A,F,W){let te=2*A;return this.int16[te+0]=F,this.int16[te+1]=W,A}}ut.prototype.bytesPerElement=4,Fi("StructArrayLayout2i4",ut);class Mt extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(A,F,W){let te=this.length;return this.resize(te+1),this.emplace(te,A,F,W)}emplace(A,F,W,te){let fe=3*A;return this.int16[fe+0]=F,this.int16[fe+1]=W,this.int16[fe+2]=te,A}}Mt.prototype.bytesPerElement=6,Fi("StructArrayLayout3i6",Mt);class Jt extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(A,F,W,te){let fe=this.length;return this.resize(fe+1),this.emplace(fe,A,F,W,te)}emplace(A,F,W,te,fe){let pe=4*A;return this.int16[pe+0]=F,this.int16[pe+1]=W,this.int16[pe+2]=te,this.int16[pe+3]=fe,A}}Jt.prototype.bytesPerElement=8,Fi("StructArrayLayout4i8",Jt);class $t extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(A,F,W,te,fe,pe){let Re=this.length;return this.resize(Re+1),this.emplace(Re,A,F,W,te,fe,pe)}emplace(A,F,W,te,fe,pe,Re){let Ke=6*A;return this.int16[Ke+0]=F,this.int16[Ke+1]=W,this.int16[Ke+2]=te,this.int16[Ke+3]=fe,this.int16[Ke+4]=pe,this.int16[Ke+5]=Re,A}}$t.prototype.bytesPerElement=12,Fi("StructArrayLayout2i4i12",$t);class yr extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(A,F,W,te,fe,pe){let Re=this.length;return this.resize(Re+1),this.emplace(Re,A,F,W,te,fe,pe)}emplace(A,F,W,te,fe,pe,Re){let Ke=4*A,ft=8*A;return this.int16[Ke+0]=F,this.int16[Ke+1]=W,this.uint8[ft+4]=te,this.uint8[ft+5]=fe,this.uint8[ft+6]=pe,this.uint8[ft+7]=Re,A}}yr.prototype.bytesPerElement=8,Fi("StructArrayLayout2i4ub8",yr);class Cr extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(A,F){let W=this.length;return this.resize(W+1),this.emplace(W,A,F)}emplace(A,F,W){let te=2*A;return this.float32[te+0]=F,this.float32[te+1]=W,A}}Cr.prototype.bytesPerElement=8,Fi("StructArrayLayout2f8",Cr);class ve extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(A,F,W,te,fe,pe,Re,Ke,ft,Rt){let er=this.length;return this.resize(er+1),this.emplace(er,A,F,W,te,fe,pe,Re,Ke,ft,Rt)}emplace(A,F,W,te,fe,pe,Re,Ke,ft,Rt,er){let ur=10*A;return this.uint16[ur+0]=F,this.uint16[ur+1]=W,this.uint16[ur+2]=te,this.uint16[ur+3]=fe,this.uint16[ur+4]=pe,this.uint16[ur+5]=Re,this.uint16[ur+6]=Ke,this.uint16[ur+7]=ft,this.uint16[ur+8]=Rt,this.uint16[ur+9]=er,A}}ve.prototype.bytesPerElement=20,Fi("StructArrayLayout10ui20",ve);class xe extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(A,F,W,te,fe,pe,Re,Ke,ft,Rt,er,ur){let vr=this.length;return this.resize(vr+1),this.emplace(vr,A,F,W,te,fe,pe,Re,Ke,ft,Rt,er,ur)}emplace(A,F,W,te,fe,pe,Re,Ke,ft,Rt,er,ur,vr){let kr=12*A;return this.int16[kr+0]=F,this.int16[kr+1]=W,this.int16[kr+2]=te,this.int16[kr+3]=fe,this.uint16[kr+4]=pe,this.uint16[kr+5]=Re,this.uint16[kr+6]=Ke,this.uint16[kr+7]=ft,this.int16[kr+8]=Rt,this.int16[kr+9]=er,this.int16[kr+10]=ur,this.int16[kr+11]=vr,A}}xe.prototype.bytesPerElement=24,Fi("StructArrayLayout4i4ui4i24",xe);class Ie extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(A,F,W){let te=this.length;return this.resize(te+1),this.emplace(te,A,F,W)}emplace(A,F,W,te){let fe=3*A;return this.float32[fe+0]=F,this.float32[fe+1]=W,this.float32[fe+2]=te,A}}Ie.prototype.bytesPerElement=12,Fi("StructArrayLayout3f12",Ie);class ze extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(A){let F=this.length;return this.resize(F+1),this.emplace(F,A)}emplace(A,F){return this.uint32[1*A+0]=F,A}}ze.prototype.bytesPerElement=4,Fi("StructArrayLayout1ul4",ze);class Qe extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(A,F,W,te,fe,pe,Re,Ke,ft){let Rt=this.length;return this.resize(Rt+1),this.emplace(Rt,A,F,W,te,fe,pe,Re,Ke,ft)}emplace(A,F,W,te,fe,pe,Re,Ke,ft,Rt){let er=10*A,ur=5*A;return this.int16[er+0]=F,this.int16[er+1]=W,this.int16[er+2]=te,this.int16[er+3]=fe,this.int16[er+4]=pe,this.int16[er+5]=Re,this.uint32[ur+3]=Ke,this.uint16[er+8]=ft,this.uint16[er+9]=Rt,A}}Qe.prototype.bytesPerElement=20,Fi("StructArrayLayout6i1ul2ui20",Qe);class Xe extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(A,F,W,te,fe,pe){let Re=this.length;return this.resize(Re+1),this.emplace(Re,A,F,W,te,fe,pe)}emplace(A,F,W,te,fe,pe,Re){let Ke=6*A;return this.int16[Ke+0]=F,this.int16[Ke+1]=W,this.int16[Ke+2]=te,this.int16[Ke+3]=fe,this.int16[Ke+4]=pe,this.int16[Ke+5]=Re,A}}Xe.prototype.bytesPerElement=12,Fi("StructArrayLayout2i2i2i12",Xe);class nt extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(A,F,W,te,fe){let pe=this.length;return this.resize(pe+1),this.emplace(pe,A,F,W,te,fe)}emplace(A,F,W,te,fe,pe){let Re=4*A,Ke=8*A;return this.float32[Re+0]=F,this.float32[Re+1]=W,this.float32[Re+2]=te,this.int16[Ke+6]=fe,this.int16[Ke+7]=pe,A}}nt.prototype.bytesPerElement=16,Fi("StructArrayLayout2f1f2i16",nt);class qt extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(A,F,W,te,fe,pe){let Re=this.length;return this.resize(Re+1),this.emplace(Re,A,F,W,te,fe,pe)}emplace(A,F,W,te,fe,pe,Re){let Ke=16*A,ft=4*A,Rt=8*A;return this.uint8[Ke+0]=F,this.uint8[Ke+1]=W,this.float32[ft+1]=te,this.float32[ft+2]=fe,this.int16[Rt+6]=pe,this.int16[Rt+7]=Re,A}}qt.prototype.bytesPerElement=16,Fi("StructArrayLayout2ub2f2i16",qt);class Wt extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(A,F,W){let te=this.length;return this.resize(te+1),this.emplace(te,A,F,W)}emplace(A,F,W,te){let fe=3*A;return this.uint16[fe+0]=F,this.uint16[fe+1]=W,this.uint16[fe+2]=te,A}}Wt.prototype.bytesPerElement=6,Fi("StructArrayLayout3ui6",Wt);class nr extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(A,F,W,te,fe,pe,Re,Ke,ft,Rt,er,ur,vr,kr,Dr,li,pi){let vn=this.length;return this.resize(vn+1),this.emplace(vn,A,F,W,te,fe,pe,Re,Ke,ft,Rt,er,ur,vr,kr,Dr,li,pi)}emplace(A,F,W,te,fe,pe,Re,Ke,ft,Rt,er,ur,vr,kr,Dr,li,pi,vn){let zi=24*A,ln=12*A,Tn=48*A;return this.int16[zi+0]=F,this.int16[zi+1]=W,this.uint16[zi+2]=te,this.uint16[zi+3]=fe,this.uint32[ln+2]=pe,this.uint32[ln+3]=Re,this.uint32[ln+4]=Ke,this.uint16[zi+10]=ft,this.uint16[zi+11]=Rt,this.uint16[zi+12]=er,this.float32[ln+7]=ur,this.float32[ln+8]=vr,this.uint8[Tn+36]=kr,this.uint8[Tn+37]=Dr,this.uint8[Tn+38]=li,this.uint32[ln+10]=pi,this.int16[zi+22]=vn,A}}nr.prototype.bytesPerElement=48,Fi("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",nr);class fr extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(A,F,W,te,fe,pe,Re,Ke,ft,Rt,er,ur,vr,kr,Dr,li,pi,vn,zi,ln,Tn,pa,ro,Vo,Xa,la,Mo,fo){let lo=this.length;return this.resize(lo+1),this.emplace(lo,A,F,W,te,fe,pe,Re,Ke,ft,Rt,er,ur,vr,kr,Dr,li,pi,vn,zi,ln,Tn,pa,ro,Vo,Xa,la,Mo,fo)}emplace(A,F,W,te,fe,pe,Re,Ke,ft,Rt,er,ur,vr,kr,Dr,li,pi,vn,zi,ln,Tn,pa,ro,Vo,Xa,la,Mo,fo,lo){let Wn=32*A,Ro=16*A;return this.int16[Wn+0]=F,this.int16[Wn+1]=W,this.int16[Wn+2]=te,this.int16[Wn+3]=fe,this.int16[Wn+4]=pe,this.int16[Wn+5]=Re,this.int16[Wn+6]=Ke,this.int16[Wn+7]=ft,this.uint16[Wn+8]=Rt,this.uint16[Wn+9]=er,this.uint16[Wn+10]=ur,this.uint16[Wn+11]=vr,this.uint16[Wn+12]=kr,this.uint16[Wn+13]=Dr,this.uint16[Wn+14]=li,this.uint16[Wn+15]=pi,this.uint16[Wn+16]=vn,this.uint16[Wn+17]=zi,this.uint16[Wn+18]=ln,this.uint16[Wn+19]=Tn,this.uint16[Wn+20]=pa,this.uint16[Wn+21]=ro,this.uint16[Wn+22]=Vo,this.uint32[Ro+12]=Xa,this.float32[Ro+13]=la,this.float32[Ro+14]=Mo,this.uint16[Wn+30]=fo,this.uint16[Wn+31]=lo,A}}fr.prototype.bytesPerElement=64,Fi("StructArrayLayout8i15ui1ul2f2ui64",fr);class br extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(A){let F=this.length;return this.resize(F+1),this.emplace(F,A)}emplace(A,F){return this.float32[1*A+0]=F,A}}br.prototype.bytesPerElement=4,Fi("StructArrayLayout1f4",br);class Fr extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(A,F,W){let te=this.length;return this.resize(te+1),this.emplace(te,A,F,W)}emplace(A,F,W,te){let fe=3*A;return this.uint16[6*A+0]=F,this.float32[fe+1]=W,this.float32[fe+2]=te,A}}Fr.prototype.bytesPerElement=12,Fi("StructArrayLayout1ui2f12",Fr);class Hr extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(A,F,W){let te=this.length;return this.resize(te+1),this.emplace(te,A,F,W)}emplace(A,F,W,te){let fe=4*A;return this.uint32[2*A+0]=F,this.uint16[fe+2]=W,this.uint16[fe+3]=te,A}}Hr.prototype.bytesPerElement=8,Fi("StructArrayLayout1ul2ui8",Hr);class ri extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(A,F){let W=this.length;return this.resize(W+1),this.emplace(W,A,F)}emplace(A,F,W){let te=2*A;return this.uint16[te+0]=F,this.uint16[te+1]=W,A}}ri.prototype.bytesPerElement=4,Fi("StructArrayLayout2ui4",ri);class Ci extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(A){let F=this.length;return this.resize(F+1),this.emplace(F,A)}emplace(A,F){return this.uint16[1*A+0]=F,A}}Ci.prototype.bytesPerElement=2,Fi("StructArrayLayout1ui2",Ci);class cn extends le{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(A,F,W,te){let fe=this.length;return this.resize(fe+1),this.emplace(fe,A,F,W,te)}emplace(A,F,W,te,fe){let pe=4*A;return this.float32[pe+0]=F,this.float32[pe+1]=W,this.float32[pe+2]=te,this.float32[pe+3]=fe,A}}cn.prototype.bytesPerElement=16,Fi("StructArrayLayout4f16",cn);class sn extends ee{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new u(this.anchorPointX,this.anchorPointY)}}sn.prototype.size=20;class Ln extends Qe{get(A){return new sn(this,A)}}Fi("CollisionBoxArray",Ln);class Yn extends ee{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(A){this._structArray.uint8[this._pos1+37]=A}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(A){this._structArray.uint8[this._pos1+38]=A}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(A){this._structArray.uint32[this._pos4+10]=A}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}Yn.prototype.size=48;class Aa extends nr{get(A){return new Yn(this,A)}}Fi("PlacedSymbolArray",Aa);class fa extends ee{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(A){this._structArray.uint32[this._pos4+12]=A}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}fa.prototype.size=64;class $a extends fr{get(A){return new fa(this,A)}}Fi("SymbolInstanceArray",$a);class Co extends br{getoffsetX(A){return this.float32[1*A+0]}}Fi("GlyphOffsetArray",Co);class Qa extends Mt{getx(A){return this.int16[3*A+0]}gety(A){return this.int16[3*A+1]}gettileUnitDistanceFromAnchor(A){return this.int16[3*A+2]}}Fi("SymbolLineVertexArray",Qa);class mo extends ee{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}mo.prototype.size=12;class Bo extends Fr{get(A){return new mo(this,A)}}Fi("TextAnchorOffsetArray",Bo);class Ps extends ee{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}Ps.prototype.size=8;class Ts extends Hr{get(A){return new Ps(this,A)}}Fi("FeatureIndexArray",Ts);class wo extends ut{}class To extends ut{}class hl extends ut{}class Ul extends $t{}class Lu extends yr{}class au extends Cr{}class Js extends ve{}class eu extends xe{}class dc extends Ie{}class Tl extends ze{}class Al extends Xe{}class X extends qt{}class se extends Wt{}class Te extends ri{}let qe=Fe([{name:"a_pos",components:2,type:"Int16"}],4),{members:Ve}=qe;class Ye{constructor(A=[]){this.segments=A}prepareSegment(A,F,W,te){let fe=this.segments[this.segments.length-1];return A>Ye.MAX_VERTEX_ARRAY_LENGTH&&E(`Max vertices per segment is ${Ye.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${A}`),(!fe||fe.vertexLength+A>Ye.MAX_VERTEX_ARRAY_LENGTH||fe.sortKey!==te)&&(fe={vertexOffset:F.length,primitiveOffset:W.length,vertexLength:0,primitiveLength:0},te!==void 0&&(fe.sortKey=te),this.segments.push(fe)),fe}get(){return this.segments}destroy(){for(let A of this.segments)for(let F in A.vaos)A.vaos[F].destroy()}static simpleSegment(A,F,W,te){return new Ye([{vertexOffset:A,primitiveOffset:F,vertexLength:W,primitiveLength:te,vaos:{},sortKey:0}])}}function Pt(R,A){return 256*(R=M(Math.floor(R),0,255))+M(Math.floor(A),0,255)}Ye.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Fi("SegmentVector",Ye);let ot=Fe([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]);var Xt={exports:{}},dr={exports:{}};dr.exports=function(R,A){var F,W,te,fe,pe,Re,Ke,ft;for(W=R.length-(F=3&R.length),te=A,pe=3432918353,Re=461845907,ft=0;ft>>16)*pe&65535)<<16)&4294967295)<<15|Ke>>>17))*Re+(((Ke>>>16)*Re&65535)<<16)&4294967295)<<13|te>>>19))+((5*(te>>>16)&65535)<<16)&4294967295))+((58964+(fe>>>16)&65535)<<16);switch(Ke=0,F){case 3:Ke^=(255&R.charCodeAt(ft+2))<<16;case 2:Ke^=(255&R.charCodeAt(ft+1))<<8;case 1:te^=Ke=(65535&(Ke=(Ke=(65535&(Ke^=255&R.charCodeAt(ft)))*pe+(((Ke>>>16)*pe&65535)<<16)&4294967295)<<15|Ke>>>17))*Re+(((Ke>>>16)*Re&65535)<<16)&4294967295}return te^=R.length,te=2246822507*(65535&(te^=te>>>16))+((2246822507*(te>>>16)&65535)<<16)&4294967295,te=3266489909*(65535&(te^=te>>>13))+((3266489909*(te>>>16)&65535)<<16)&4294967295,(te^=te>>>16)>>>0};var pr=dr.exports,Ur={exports:{}};Ur.exports=function(R,A){for(var F,W=R.length,te=A^W,fe=0;W>=4;)F=1540483477*(65535&(F=255&R.charCodeAt(fe)|(255&R.charCodeAt(++fe))<<8|(255&R.charCodeAt(++fe))<<16|(255&R.charCodeAt(++fe))<<24))+((1540483477*(F>>>16)&65535)<<16),te=1540483477*(65535&te)+((1540483477*(te>>>16)&65535)<<16)^(F=1540483477*(65535&(F^=F>>>24))+((1540483477*(F>>>16)&65535)<<16)),W-=4,++fe;switch(W){case 3:te^=(255&R.charCodeAt(fe+2))<<16;case 2:te^=(255&R.charCodeAt(fe+1))<<8;case 1:te=1540483477*(65535&(te^=255&R.charCodeAt(fe)))+((1540483477*(te>>>16)&65535)<<16)}return te=1540483477*(65535&(te^=te>>>13))+((1540483477*(te>>>16)&65535)<<16),(te^=te>>>15)>>>0};var zr=pr,gi=Ur.exports;Xt.exports=zr,Xt.exports.murmur3=zr,Xt.exports.murmur2=gi;var xi=o(Xt.exports);class Wr{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(A,F,W,te){this.ids.push(ii(A)),this.positions.push(F,W,te)}getPositions(A){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");let F=ii(A),W=0,te=this.ids.length-1;for(;W>1;this.ids[pe]>=F?te=pe:W=pe+1}let fe=[];for(;this.ids[W]===F;)fe.push({index:this.positions[3*W],start:this.positions[3*W+1],end:this.positions[3*W+2]}),W++;return fe}static serialize(A,F){let W=new Float64Array(A.ids),te=new Uint32Array(A.positions);return di(W,te,0,W.length-1),F&&F.push(W.buffer,te.buffer),{ids:W,positions:te}}static deserialize(A){let F=new Wr;return F.ids=A.ids,F.positions=A.positions,F.indexed=!0,F}}function ii(R){let A=+R;return!isNaN(A)&&A<=Number.MAX_SAFE_INTEGER?A:xi(String(R))}function di(R,A,F,W){for(;F>1],fe=F-1,pe=W+1;for(;;){do fe++;while(R[fe]te);if(fe>=pe)break;Li(R,fe,pe),Li(A,3*fe,3*pe),Li(A,3*fe+1,3*pe+1),Li(A,3*fe+2,3*pe+2)}pe-F`u_${te}`),this.type=W}setUniform(A,F,W){A.set(W.constantOr(this.value))}getBinding(A,F,W){return this.type==="color"?new kn(A,F):new Qr(A,F)}}class Ia{constructor(A,F){this.uniformNames=F.map(W=>`u_${W}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(A,F){this.pixelRatioFrom=F.pixelRatio,this.pixelRatioTo=A.pixelRatio,this.patternFrom=F.tlbr,this.patternTo=A.tlbr}setUniform(A,F,W,te){let fe=te==="u_pattern_to"?this.patternTo:te==="u_pattern_from"?this.patternFrom:te==="u_pixel_ratio_to"?this.pixelRatioTo:te==="u_pixel_ratio_from"?this.pixelRatioFrom:null;fe&&A.set(fe)}getBinding(A,F,W){return W.substr(0,9)==="u_pattern"?new Pn(A,F):new Qr(A,F)}}class yo{constructor(A,F,W,te){this.expression=A,this.type=W,this.maxValue=0,this.paintVertexAttributes=F.map(fe=>({name:`a_${fe}`,type:"Float32",components:W==="color"?2:1,offset:0})),this.paintVertexArray=new te}populatePaintArray(A,F,W,te,fe){let pe=this.paintVertexArray.length,Re=this.expression.evaluate(new rs(0),F,{},te,[],fe);this.paintVertexArray.resize(A),this._setPaintValue(pe,A,Re)}updatePaintArray(A,F,W,te){let fe=this.expression.evaluate({zoom:0},W,te);this._setPaintValue(A,F,fe)}_setPaintValue(A,F,W){if(this.type==="color"){let te=na(W);for(let fe=A;fe`u_${Re}_t`),this.type=W,this.useIntegerZoom=te,this.zoom=fe,this.maxValue=0,this.paintVertexAttributes=F.map(Re=>({name:`a_${Re}`,type:"Float32",components:W==="color"?4:2,offset:0})),this.paintVertexArray=new pe}populatePaintArray(A,F,W,te,fe){let pe=this.expression.evaluate(new rs(this.zoom),F,{},te,[],fe),Re=this.expression.evaluate(new rs(this.zoom+1),F,{},te,[],fe),Ke=this.paintVertexArray.length;this.paintVertexArray.resize(A),this._setPaintValue(Ke,A,pe,Re)}updatePaintArray(A,F,W,te){let fe=this.expression.evaluate({zoom:this.zoom},W,te),pe=this.expression.evaluate({zoom:this.zoom+1},W,te);this._setPaintValue(A,F,fe,pe)}_setPaintValue(A,F,W,te){if(this.type==="color"){let fe=na(W),pe=na(te);for(let Re=A;Re`#define HAS_UNIFORM_${te}`))}return A}getBinderAttributes(){let A=[];for(let F in this.binders){let W=this.binders[F];if(W instanceof yo||W instanceof Da)for(let te=0;te!0){this.programConfigurations={};for(let te of A)this.programConfigurations[te.id]=new Is(te,F,W);this.needsUpload=!1,this._featureMap=new Wr,this._bufferOffset=0}populatePaintArrays(A,F,W,te,fe,pe){for(let Re in this.programConfigurations)this.programConfigurations[Re].populatePaintArrays(A,F,te,fe,pe);F.id!==void 0&&this._featureMap.add(F.id,W,this._bufferOffset,A),this._bufferOffset=A,this.needsUpload=!0}updatePaintArrays(A,F,W,te){for(let fe of W)this.needsUpload=this.programConfigurations[fe.id].updatePaintArrays(A,this._featureMap,F,fe,te)||this.needsUpload}get(A){return this.programConfigurations[A]}upload(A){if(this.needsUpload){for(let F in this.programConfigurations)this.programConfigurations[F].upload(A);this.needsUpload=!1}}destroy(){for(let A in this.programConfigurations)this.programConfigurations[A].destroy()}}function Xs(R,A){return{"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[R]||[R.replace(`${A}-`,"").replace(/-/g,"_")]}function Un(R,A,F){let W={color:{source:Cr,composite:cn},number:{source:br,composite:Cr}},te=function(fe){return{"line-pattern":{source:Js,composite:Js},"fill-pattern":{source:Js,composite:Js},"fill-extrusion-pattern":{source:Js,composite:Js}}[fe]}(R);return te&&te[F]||W[A][F]}Fi("ConstantBinder",Ea),Fi("CrossFadedConstantBinder",Ia),Fi("SourceExpressionBinder",yo),Fi("CrossFadedCompositeBinder",go),Fi("CompositeExpressionBinder",Da),Fi("ProgramConfiguration",Is,{omit:["_buffers"]}),Fi("ProgramConfigurationSet",Ms);let ja=8192,Fo=Math.pow(2,14)-1,Uo=-Fo-1;function $s(R){let A=ja/R.extent,F=R.loadGeometry();for(let W=0;Wpe.x+1||Kepe.y+1)&&E("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return F}function Sl(R,A){return{type:R.type,id:R.id,properties:R.properties,geometry:A?$s(R):[]}}function bu(R,A,F,W,te){R.emplaceBack(2*A+(W+1)/2,2*F+(te+1)/2)}class dl{constructor(A){this.zoom=A.zoom,this.overscaling=A.overscaling,this.layers=A.layers,this.layerIds=this.layers.map(F=>F.id),this.index=A.index,this.hasPattern=!1,this.layoutVertexArray=new To,this.indexArray=new se,this.segments=new Ye,this.programConfigurations=new Ms(A.layers,A.zoom),this.stateDependentLayerIds=this.layers.filter(F=>F.isStateDependent()).map(F=>F.id)}populate(A,F,W){let te=this.layers[0],fe=[],pe=null,Re=!1;te.type==="circle"&&(pe=te.layout.get("circle-sort-key"),Re=!pe.isConstant());for(let{feature:Ke,id:ft,index:Rt,sourceLayerIndex:er}of A){let ur=this.layers[0]._featureFilter.needGeometry,vr=Sl(Ke,ur);if(!this.layers[0]._featureFilter.filter(new rs(this.zoom),vr,W))continue;let kr=Re?pe.evaluate(vr,{},W):void 0,Dr={id:ft,properties:Ke.properties,type:Ke.type,sourceLayerIndex:er,index:Rt,geometry:ur?vr.geometry:$s(Ke),patterns:{},sortKey:kr};fe.push(Dr)}Re&&fe.sort((Ke,ft)=>Ke.sortKey-ft.sortKey);for(let Ke of fe){let{geometry:ft,index:Rt,sourceLayerIndex:er}=Ke,ur=A[Rt].feature;this.addFeature(Ke,ft,Rt,W),F.featureIndex.insert(ur,ft,Rt,er,this.index)}}update(A,F,W){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(A,F,this.stateDependentLayers,W)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(A){this.uploaded||(this.layoutVertexBuffer=A.createVertexBuffer(this.layoutVertexArray,Ve),this.indexBuffer=A.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(A),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(A,F,W,te){for(let fe of F)for(let pe of fe){let Re=pe.x,Ke=pe.y;if(Re<0||Re>=ja||Ke<0||Ke>=ja)continue;let ft=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,A.sortKey),Rt=ft.vertexLength;bu(this.layoutVertexArray,Re,Ke,-1,-1),bu(this.layoutVertexArray,Re,Ke,1,-1),bu(this.layoutVertexArray,Re,Ke,1,1),bu(this.layoutVertexArray,Re,Ke,-1,1),this.indexArray.emplaceBack(Rt,Rt+1,Rt+2),this.indexArray.emplaceBack(Rt,Rt+3,Rt+2),ft.vertexLength+=4,ft.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,A,W,{},te)}}function Sc(R,A){for(let F=0;F1){if(Lr(R,A))return!0;for(let W=0;W1?F:F.sub(A)._mult(te)._add(A))}function vi(R,A){let F,W,te,fe=!1;for(let pe=0;peA.y!=te.y>A.y&&A.x<(te.x-W.x)*(A.y-W.y)/(te.y-W.y)+W.x&&(fe=!fe)}return fe}function Ni(R,A){let F=!1;for(let W=0,te=R.length-1;WA.y!=pe.y>A.y&&A.x<(pe.x-fe.x)*(A.y-fe.y)/(pe.y-fe.y)+fe.x&&(F=!F)}return F}function qi(R,A,F){let W=F[0],te=F[2];if(R.xte.x&&A.x>te.x||R.yte.y&&A.y>te.y)return!1;let fe=z(R,A,F[0]);return fe!==z(R,A,F[1])||fe!==z(R,A,F[2])||fe!==z(R,A,F[3])}function Si(R,A,F){let W=A.paint.get(R).value;return W.kind==="constant"?W.value:F.programConfigurations.get(A.id).getMaxValue(R)}function Vn(R){return Math.sqrt(R[0]*R[0]+R[1]*R[1])}function Qi(R,A,F,W,te){if(!A[0]&&!A[1])return R;let fe=u.convert(A)._mult(te);F==="viewport"&&fe._rotate(-W);let pe=[];for(let Re=0;Resi(li,Dr))}(ft,Ke),vr=er?Rt*Re:Rt;for(let kr of te)for(let Dr of kr){let li=er?Dr:si(Dr,Ke),pi=vr,vn=qn([],[Dr.x,Dr.y,0,1],Ke);if(this.paint.get("circle-pitch-scale")==="viewport"&&this.paint.get("circle-pitch-alignment")==="map"?pi*=vn[3]/pe.cameraToCenterDistance:this.paint.get("circle-pitch-scale")==="map"&&this.paint.get("circle-pitch-alignment")==="viewport"&&(pi*=pe.cameraToCenterDistance/vn[3]),Me(ur,li,pi))return!0}return!1}}function si(R,A){let F=qn([],[R.x,R.y,0,1],A);return new u(F[0]/F[3],F[1]/F[3])}class mn extends dl{}let Ji;Fi("HeatmapBucket",mn,{omit:["layers"]});var Ui={get paint(){return Ji=Ji||new ue({"heatmap-radius":new oo(ce.paint_heatmap["heatmap-radius"]),"heatmap-weight":new oo(ce.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new Va(ce.paint_heatmap["heatmap-intensity"]),"heatmap-color":new Ku(ce.paint_heatmap["heatmap-color"]),"heatmap-opacity":new Va(ce.paint_heatmap["heatmap-opacity"])})}};function Bi(R,{width:A,height:F},W,te){if(te){if(te instanceof Uint8ClampedArray)te=new Uint8Array(te.buffer);else if(te.length!==A*F*W)throw new RangeError(`mismatched image size. expected: ${te.length} but got: ${A*F*W}`)}else te=new Uint8Array(A*F*W);return R.width=A,R.height=F,R.data=te,R}function pn(R,{width:A,height:F},W){if(A===R.width&&F===R.height)return;let te=Bi({},{width:A,height:F},W);Nn(R,te,{x:0,y:0},{x:0,y:0},{width:Math.min(R.width,A),height:Math.min(R.height,F)},W),R.width=A,R.height=F,R.data=te.data}function Nn(R,A,F,W,te,fe){if(te.width===0||te.height===0)return A;if(te.width>R.width||te.height>R.height||F.x>R.width-te.width||F.y>R.height-te.height)throw new RangeError("out of range source coordinates for image copy");if(te.width>A.width||te.height>A.height||W.x>A.width-te.width||W.y>A.height-te.height)throw new RangeError("out of range destination coordinates for image copy");let pe=R.data,Re=A.data;if(pe===Re)throw new Error("srcData equals dstData, so image is already copied");for(let Ke=0;Ke{A[R.evaluationKey]=Ke;let ft=R.expression.evaluate(A);te.data[pe+Re+0]=Math.floor(255*ft.r/ft.a),te.data[pe+Re+1]=Math.floor(255*ft.g/ft.a),te.data[pe+Re+2]=Math.floor(255*ft.b/ft.a),te.data[pe+Re+3]=Math.floor(255*ft.a)};if(R.clips)for(let pe=0,Re=0;pe80*F){Re=1/0,Ke=1/0;let Rt=-1/0,er=-1/0;for(let ur=F;urRt&&(Rt=vr),kr>er&&(er=kr)}ft=Math.max(Rt-Re,er-Ke),ft=ft!==0?32767/ft:0}return Vl(fe,pe,F,Re,Ke,ft,0),pe}function Qs(R,A,F,W,te){let fe;if(te===function(pe,Re,Ke,ft){let Rt=0;for(let er=Re,ur=Ke-ft;er0)for(let pe=A;pe=A;pe-=W)fe=Nt(pe/W|0,R[pe],R[pe+1],fe);return fe&&ne(fe,fe.next)&&(Ne(fe),fe=fe.next),fe}function al(R,A){if(!R)return R;A||(A=R);let F,W=R;do if(F=!1,W.steiner||!ne(W,W.next)&&de(W.prev,W,W.next)!==0)W=W.next;else{if(Ne(W),W=A=W.prev,W===W.next)break;F=!0}while(F||W!==A);return A}function Vl(R,A,F,W,te,fe,pe){if(!R)return;!pe&&fe&&function(Ke,ft,Rt,er){let ur=Ke;do ur.z===0&&(ur.z=D(ur.x,ur.y,ft,Rt,er)),ur.prevZ=ur.prev,ur.nextZ=ur.next,ur=ur.next;while(ur!==Ke);ur.prevZ.nextZ=null,ur.prevZ=null,function(vr){let kr,Dr=1;do{let li,pi=vr;vr=null;let vn=null;for(kr=0;pi;){kr++;let zi=pi,ln=0;for(let pa=0;pa0||Tn>0&&zi;)ln!==0&&(Tn===0||!zi||pi.z<=zi.z)?(li=pi,pi=pi.nextZ,ln--):(li=zi,zi=zi.nextZ,Tn--),vn?vn.nextZ=li:vr=li,li.prevZ=vn,vn=li;pi=zi}vn.nextZ=null,Dr*=2}while(kr>1)}(ur)}(R,W,te,fe);let Re=R;for(;R.prev!==R.next;){let Ke=R.prev,ft=R.next;if(fe?Vs(R,W,te,fe):ss(R))A.push(Ke.i,R.i,ft.i),Ne(R),R=ft.next,Re=ft.next;else if((R=ft)===Re){pe?pe===1?Vl(R=Ys(al(R),A),A,F,W,te,fe,2):pe===2&&wa(R,A,F,W,te,fe):Vl(al(R),A,F,W,te,fe,1);break}}}function ss(R){let A=R.prev,F=R,W=R.next;if(de(A,F,W)>=0)return!1;let te=A.x,fe=F.x,pe=W.x,Re=A.y,Ke=F.y,ft=W.y,Rt=tefe?te>pe?te:pe:fe>pe?fe:pe,vr=Re>Ke?Re>ft?Re:ft:Ke>ft?Ke:ft,kr=W.next;for(;kr!==A;){if(kr.x>=Rt&&kr.x<=ur&&kr.y>=er&&kr.y<=vr&&O(te,Re,fe,Ke,pe,ft,kr.x,kr.y)&&de(kr.prev,kr,kr.next)>=0)return!1;kr=kr.next}return!0}function Vs(R,A,F,W){let te=R.prev,fe=R,pe=R.next;if(de(te,fe,pe)>=0)return!1;let Re=te.x,Ke=fe.x,ft=pe.x,Rt=te.y,er=fe.y,ur=pe.y,vr=ReKe?Re>ft?Re:ft:Ke>ft?Ke:ft,li=Rt>er?Rt>ur?Rt:ur:er>ur?er:ur,pi=D(vr,kr,A,F,W),vn=D(Dr,li,A,F,W),zi=R.prevZ,ln=R.nextZ;for(;zi&&zi.z>=pi&&ln&&ln.z<=vn;){if(zi.x>=vr&&zi.x<=Dr&&zi.y>=kr&&zi.y<=li&&zi!==te&&zi!==pe&&O(Re,Rt,Ke,er,ft,ur,zi.x,zi.y)&&de(zi.prev,zi,zi.next)>=0||(zi=zi.prevZ,ln.x>=vr&&ln.x<=Dr&&ln.y>=kr&&ln.y<=li&&ln!==te&&ln!==pe&&O(Re,Rt,Ke,er,ft,ur,ln.x,ln.y)&&de(ln.prev,ln,ln.next)>=0))return!1;ln=ln.nextZ}for(;zi&&zi.z>=pi;){if(zi.x>=vr&&zi.x<=Dr&&zi.y>=kr&&zi.y<=li&&zi!==te&&zi!==pe&&O(Re,Rt,Ke,er,ft,ur,zi.x,zi.y)&&de(zi.prev,zi,zi.next)>=0)return!1;zi=zi.prevZ}for(;ln&&ln.z<=vn;){if(ln.x>=vr&&ln.x<=Dr&&ln.y>=kr&&ln.y<=li&&ln!==te&&ln!==pe&&O(Re,Rt,Ke,er,ft,ur,ln.x,ln.y)&&de(ln.prev,ln,ln.next)>=0)return!1;ln=ln.nextZ}return!0}function Ys(R,A){let F=R;do{let W=F.prev,te=F.next.next;!ne(W,te)&&we(W,F,F.next,te)&&Yt(W,te)&&Yt(te,W)&&(A.push(W.i,F.i,te.i),Ne(F),Ne(F.next),F=R=te),F=F.next}while(F!==R);return al(F)}function wa(R,A,F,W,te,fe){let pe=R;do{let Re=pe.next.next;for(;Re!==pe.prev;){if(pe.i!==Re.i&&K(pe,Re)){let Ke=cr(pe,Re);return pe=al(pe,pe.next),Ke=al(Ke,Ke.next),Vl(pe,A,F,W,te,fe,0),void Vl(Ke,A,F,W,te,fe,0)}Re=Re.next}pe=pe.next}while(pe!==R)}function ol(R,A){return R.x-A.x}function io(R,A){let F=function(te,fe){let pe=fe,Re=te.x,Ke=te.y,ft,Rt=-1/0;do{if(Ke<=pe.y&&Ke>=pe.next.y&&pe.next.y!==pe.y){let Dr=pe.x+(Ke-pe.y)*(pe.next.x-pe.x)/(pe.next.y-pe.y);if(Dr<=Re&&Dr>Rt&&(Rt=Dr,ft=pe.x=pe.x&&pe.x>=ur&&Re!==pe.x&&O(Keft.x||pe.x===ft.x&&Y(ft,pe)))&&(ft=pe,kr=Dr)}pe=pe.next}while(pe!==er);return ft}(R,A);if(!F)return A;let W=cr(F,R);return al(W,W.next),al(F,F.next)}function Y(R,A){return de(R.prev,R,A.prev)<0&&de(A.next,R,R.next)<0}function D(R,A,F,W,te){return(R=1431655765&((R=858993459&((R=252645135&((R=16711935&((R=(R-F)*te|0)|R<<8))|R<<4))|R<<2))|R<<1))|(A=1431655765&((A=858993459&((A=252645135&((A=16711935&((A=(A-W)*te|0)|A<<8))|A<<4))|A<<2))|A<<1))<<1}function J(R){let A=R,F=R;do(A.x=(R-pe)*(fe-Re)&&(R-pe)*(W-Re)>=(F-pe)*(A-Re)&&(F-pe)*(fe-Re)>=(te-pe)*(W-Re)}function K(R,A){return R.next.i!==A.i&&R.prev.i!==A.i&&!function(F,W){let te=F;do{if(te.i!==F.i&&te.next.i!==F.i&&te.i!==W.i&&te.next.i!==W.i&&we(te,te.next,F,W))return!0;te=te.next}while(te!==F);return!1}(R,A)&&(Yt(R,A)&&Yt(A,R)&&function(F,W){let te=F,fe=!1,pe=(F.x+W.x)/2,Re=(F.y+W.y)/2;do te.y>Re!=te.next.y>Re&&te.next.y!==te.y&&pe<(te.next.x-te.x)*(Re-te.y)/(te.next.y-te.y)+te.x&&(fe=!fe),te=te.next;while(te!==F);return fe}(R,A)&&(de(R.prev,R,A.prev)||de(R,A.prev,A))||ne(R,A)&&de(R.prev,R,R.next)>0&&de(A.prev,A,A.next)>0)}function de(R,A,F){return(A.y-R.y)*(F.x-A.x)-(A.x-R.x)*(F.y-A.y)}function ne(R,A){return R.x===A.x&&R.y===A.y}function we(R,A,F,W){let te=ht(de(R,A,F)),fe=ht(de(R,A,W)),pe=ht(de(F,W,R)),Re=ht(de(F,W,A));return te!==fe&&pe!==Re||!(te!==0||!Oe(R,F,A))||!(fe!==0||!Oe(R,W,A))||!(pe!==0||!Oe(F,R,W))||!(Re!==0||!Oe(F,A,W))}function Oe(R,A,F){return A.x<=Math.max(R.x,F.x)&&A.x>=Math.min(R.x,F.x)&&A.y<=Math.max(R.y,F.y)&&A.y>=Math.min(R.y,F.y)}function ht(R){return R>0?1:R<0?-1:0}function Yt(R,A){return de(R.prev,R,R.next)<0?de(R,A,R.next)>=0&&de(R,R.prev,A)>=0:de(R,A,R.prev)<0||de(R,R.next,A)<0}function cr(R,A){let F=$e(R.i,R.x,R.y),W=$e(A.i,A.x,A.y),te=R.next,fe=A.prev;return R.next=A,A.prev=R,F.next=te,te.prev=F,W.next=F,F.prev=W,fe.next=W,W.prev=fe,W}function Nt(R,A,F,W){let te=$e(R,A,F);return W?(te.next=W.next,te.prev=W,W.next.prev=te,W.next=te):(te.prev=te,te.next=te),te}function Ne(R){R.next.prev=R.prev,R.prev.next=R.next,R.prevZ&&(R.prevZ.nextZ=R.nextZ),R.nextZ&&(R.nextZ.prevZ=R.prevZ)}function $e(R,A,F){return{i:R,x:A,y:F,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function st(R,A,F){let W=F.patternDependencies,te=!1;for(let fe of A){let pe=fe.paint.get(`${R}-pattern`);pe.isConstant()||(te=!0);let Re=pe.constantOr(null);Re&&(te=!0,W[Re.to]=!0,W[Re.from]=!0)}return te}function It(R,A,F,W,te){let fe=te.patternDependencies;for(let pe of A){let Re=pe.paint.get(`${R}-pattern`).value;if(Re.kind!=="constant"){let Ke=Re.evaluate({zoom:W-1},F,{},te.availableImages),ft=Re.evaluate({zoom:W},F,{},te.availableImages),Rt=Re.evaluate({zoom:W+1},F,{},te.availableImages);Ke=Ke&&Ke.name?Ke.name:Ke,ft=ft&&ft.name?ft.name:ft,Rt=Rt&&Rt.name?Rt.name:Rt,fe[Ke]=!0,fe[ft]=!0,fe[Rt]=!0,F.patterns[pe.id]={min:Ke,mid:ft,max:Rt}}}return F}class Bt{constructor(A){this.zoom=A.zoom,this.overscaling=A.overscaling,this.layers=A.layers,this.layerIds=this.layers.map(F=>F.id),this.index=A.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new hl,this.indexArray=new se,this.indexArray2=new Te,this.programConfigurations=new Ms(A.layers,A.zoom),this.segments=new Ye,this.segments2=new Ye,this.stateDependentLayerIds=this.layers.filter(F=>F.isStateDependent()).map(F=>F.id)}populate(A,F,W){this.hasPattern=st("fill",this.layers,F);let te=this.layers[0].layout.get("fill-sort-key"),fe=!te.isConstant(),pe=[];for(let{feature:Re,id:Ke,index:ft,sourceLayerIndex:Rt}of A){let er=this.layers[0]._featureFilter.needGeometry,ur=Sl(Re,er);if(!this.layers[0]._featureFilter.filter(new rs(this.zoom),ur,W))continue;let vr=fe?te.evaluate(ur,{},W,F.availableImages):void 0,kr={id:Ke,properties:Re.properties,type:Re.type,sourceLayerIndex:Rt,index:ft,geometry:er?ur.geometry:$s(Re),patterns:{},sortKey:vr};pe.push(kr)}fe&&pe.sort((Re,Ke)=>Re.sortKey-Ke.sortKey);for(let Re of pe){let{geometry:Ke,index:ft,sourceLayerIndex:Rt}=Re;if(this.hasPattern){let er=It("fill",this.layers,Re,this.zoom,F);this.patternFeatures.push(er)}else this.addFeature(Re,Ke,ft,W,{});F.featureIndex.insert(A[ft].feature,Ke,ft,Rt,this.index)}}update(A,F,W){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(A,F,this.stateDependentLayers,W)}addFeatures(A,F,W){for(let te of this.patternFeatures)this.addFeature(te,te.geometry,te.index,F,W)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(A){this.uploaded||(this.layoutVertexBuffer=A.createVertexBuffer(this.layoutVertexArray,Ml),this.indexBuffer=A.createIndexBuffer(this.indexArray),this.indexBuffer2=A.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(A),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(A,F,W,te,fe){for(let pe of Cf(F,500)){let Re=0;for(let vr of pe)Re+=vr.length;let Ke=this.segments.prepareSegment(Re,this.layoutVertexArray,this.indexArray),ft=Ke.vertexLength,Rt=[],er=[];for(let vr of pe){if(vr.length===0)continue;vr!==pe[0]&&er.push(Rt.length/2);let kr=this.segments2.prepareSegment(vr.length,this.layoutVertexArray,this.indexArray2),Dr=kr.vertexLength;this.layoutVertexArray.emplaceBack(vr[0].x,vr[0].y),this.indexArray2.emplaceBack(Dr+vr.length-1,Dr),Rt.push(vr[0].x),Rt.push(vr[0].y);for(let li=1;li>3}if(te--,W===1||W===2)fe+=R.readSVarint(),pe+=R.readSVarint(),W===1&&(A&&Re.push(A),A=[]),A.push(new Br(fe,pe));else{if(W!==7)throw new Error("unknown command "+W);A&&A.push(A[0].clone())}}return A&&Re.push(A),Re},ci.prototype.bbox=function(){var R=this._pbf;R.pos=this._geometry;for(var A=R.readVarint()+R.pos,F=1,W=0,te=0,fe=0,pe=1/0,Re=-1/0,Ke=1/0,ft=-1/0;R.pos>3}if(W--,F===1||F===2)(te+=R.readSVarint())Re&&(Re=te),(fe+=R.readSVarint())ft&&(ft=fe);else if(F!==7)throw new Error("unknown command "+F)}return[pe,Ke,Re,ft]},ci.prototype.toGeoJSON=function(R,A,F){var W,te,fe=this.extent*Math.pow(2,F),pe=this.extent*R,Re=this.extent*A,Ke=this.loadGeometry(),ft=ci.types[this.type];function Rt(vr){for(var kr=0;kr>3;te=pe===1?W.readString():pe===2?W.readFloat():pe===3?W.readDouble():pe===4?W.readVarint64():pe===5?W.readVarint():pe===6?W.readSVarint():pe===7?W.readBoolean():null}return te}(F))}Oi.prototype.feature=function(R){if(R<0||R>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[R];var A=this._pbf.readVarint()+this._pbf.pos;return new tn(this._pbf,A,this.extent,this._keys,this._values)};var on=Ei;function zn(R,A,F){if(R===3){var W=new on(F,F.readVarint()+F.pos);W.length&&(A[W.name]=W)}}_r.VectorTile=function(R,A){this.layers=R.readFields(zn,{},A)},_r.VectorTileFeature=Di,_r.VectorTileLayer=Ei;let Ja=_r.VectorTileFeature.types,co=Math.pow(2,13);function ts(R,A,F,W,te,fe,pe,Re){R.emplaceBack(A,F,2*Math.floor(W*co)+pe,te*co*2,fe*co*2,Math.round(Re))}class so{constructor(A){this.zoom=A.zoom,this.overscaling=A.overscaling,this.layers=A.layers,this.layerIds=this.layers.map(F=>F.id),this.index=A.index,this.hasPattern=!1,this.layoutVertexArray=new Ul,this.centroidVertexArray=new wo,this.indexArray=new se,this.programConfigurations=new Ms(A.layers,A.zoom),this.segments=new Ye,this.stateDependentLayerIds=this.layers.filter(F=>F.isStateDependent()).map(F=>F.id)}populate(A,F,W){this.features=[],this.hasPattern=st("fill-extrusion",this.layers,F);for(let{feature:te,id:fe,index:pe,sourceLayerIndex:Re}of A){let Ke=this.layers[0]._featureFilter.needGeometry,ft=Sl(te,Ke);if(!this.layers[0]._featureFilter.filter(new rs(this.zoom),ft,W))continue;let Rt={id:fe,sourceLayerIndex:Re,index:pe,geometry:Ke?ft.geometry:$s(te),properties:te.properties,type:te.type,patterns:{}};this.hasPattern?this.features.push(It("fill-extrusion",this.layers,Rt,this.zoom,F)):this.addFeature(Rt,Rt.geometry,pe,W,{}),F.featureIndex.insert(te,Rt.geometry,pe,Re,this.index,!0)}}addFeatures(A,F,W){for(let te of this.features){let{geometry:fe}=te;this.addFeature(te,fe,te.index,F,W)}}update(A,F,W){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(A,F,this.stateDependentLayers,W)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(A){this.uploaded||(this.layoutVertexBuffer=A.createVertexBuffer(this.layoutVertexArray,lr),this.centroidVertexBuffer=A.createVertexBuffer(this.centroidVertexArray,vt.members,!0),this.indexBuffer=A.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(A),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(A,F,W,te,fe){for(let pe of Cf(F,500)){let Re={x:0,y:0,vertexCount:0},Ke=0;for(let kr of pe)Ke+=kr.length;let ft=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let kr of pe){if(kr.length===0||ms(kr))continue;let Dr=0;for(let li=0;li=1){let vn=kr[li-1];if(!Yo(pi,vn)){ft.vertexLength+4>Ye.MAX_VERTEX_ARRAY_LENGTH&&(ft=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let zi=pi.sub(vn)._perp()._unit(),ln=vn.dist(pi);Dr+ln>32768&&(Dr=0),ts(this.layoutVertexArray,pi.x,pi.y,zi.x,zi.y,0,0,Dr),ts(this.layoutVertexArray,pi.x,pi.y,zi.x,zi.y,0,1,Dr),Re.x+=2*pi.x,Re.y+=2*pi.y,Re.vertexCount+=2,Dr+=ln,ts(this.layoutVertexArray,vn.x,vn.y,zi.x,zi.y,0,0,Dr),ts(this.layoutVertexArray,vn.x,vn.y,zi.x,zi.y,0,1,Dr),Re.x+=2*vn.x,Re.y+=2*vn.y,Re.vertexCount+=2;let Tn=ft.vertexLength;this.indexArray.emplaceBack(Tn,Tn+2,Tn+1),this.indexArray.emplaceBack(Tn+1,Tn+2,Tn+3),ft.vertexLength+=4,ft.primitiveLength+=2}}}}if(ft.vertexLength+Ke>Ye.MAX_VERTEX_ARRAY_LENGTH&&(ft=this.segments.prepareSegment(Ke,this.layoutVertexArray,this.indexArray)),Ja[A.type]!=="Polygon")continue;let Rt=[],er=[],ur=ft.vertexLength;for(let kr of pe)if(kr.length!==0){kr!==pe[0]&&er.push(Rt.length/2);for(let Dr=0;Drja)||R.y===A.y&&(R.y<0||R.y>ja)}function ms(R){return R.every(A=>A.x<0)||R.every(A=>A.x>ja)||R.every(A=>A.y<0)||R.every(A=>A.y>ja)}let ou;Fi("FillExtrusionBucket",so,{omit:["layers","features"]});var Cv={get paint(){return ou=ou||new ue({"fill-extrusion-opacity":new Va(ce["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new oo(ce["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new Va(ce["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new Va(ce["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Vc(ce["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new oo(ce["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new oo(ce["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new Va(ce["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class Lv extends B{constructor(A){super(A,Cv)}createBucket(A){return new so(A)}queryRadius(){return Vn(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature(A,F,W,te,fe,pe,Re,Ke){let ft=Qi(A,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),pe.angle,Re),Rt=this.paint.get("fill-extrusion-height").evaluate(F,W),er=this.paint.get("fill-extrusion-base").evaluate(F,W),ur=function(kr,Dr,li,pi){let vn=[];for(let zi of kr){let ln=[zi.x,zi.y,0,1];qn(ln,ln,Dr),vn.push(new u(ln[0]/ln[3],ln[1]/ln[3]))}return vn}(ft,Ke),vr=function(kr,Dr,li,pi){let vn=[],zi=[],ln=pi[8]*Dr,Tn=pi[9]*Dr,pa=pi[10]*Dr,ro=pi[11]*Dr,Vo=pi[8]*li,Xa=pi[9]*li,la=pi[10]*li,Mo=pi[11]*li;for(let fo of kr){let lo=[],Wn=[];for(let Ro of fo){let uo=Ro.x,$o=Ro.y,Ju=pi[0]*uo+pi[4]*$o+pi[12],Ou=pi[1]*uo+pi[5]*$o+pi[13],kh=pi[2]*uo+pi[6]*$o+pi[14],Qv=pi[3]*uo+pi[7]*$o+pi[15],ud=kh+pa,Ch=Qv+ro,Gd=Ju+Vo,Hd=Ou+Xa,jd=kh+la,Af=Qv+Mo,Lh=new u((Ju+ln)/Ch,(Ou+Tn)/Ch);Lh.z=ud/Ch,lo.push(Lh);let Ed=new u(Gd/Af,Hd/Af);Ed.z=jd/Af,Wn.push(Ed)}vn.push(lo),zi.push(Wn)}return[vn,zi]}(te,er,Rt,Ke);return function(kr,Dr,li){let pi=1/0;bt(li,Dr)&&(pi=Kv(li,Dr[0]));for(let vn=0;vnF.id),this.index=A.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(F=>{this.gradients[F.id]={}}),this.layoutVertexArray=new Lu,this.layoutVertexArray2=new au,this.indexArray=new se,this.programConfigurations=new Ms(A.layers,A.zoom),this.segments=new Ye,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(F=>F.isStateDependent()).map(F=>F.id)}populate(A,F,W){this.hasPattern=st("line",this.layers,F);let te=this.layers[0].layout.get("line-sort-key"),fe=!te.isConstant(),pe=[];for(let{feature:Re,id:Ke,index:ft,sourceLayerIndex:Rt}of A){let er=this.layers[0]._featureFilter.needGeometry,ur=Sl(Re,er);if(!this.layers[0]._featureFilter.filter(new rs(this.zoom),ur,W))continue;let vr=fe?te.evaluate(ur,{},W):void 0,kr={id:Ke,properties:Re.properties,type:Re.type,sourceLayerIndex:Rt,index:ft,geometry:er?ur.geometry:$s(Re),patterns:{},sortKey:vr};pe.push(kr)}fe&&pe.sort((Re,Ke)=>Re.sortKey-Ke.sortKey);for(let Re of pe){let{geometry:Ke,index:ft,sourceLayerIndex:Rt}=Re;if(this.hasPattern){let er=It("line",this.layers,Re,this.zoom,F);this.patternFeatures.push(er)}else this.addFeature(Re,Ke,ft,W,{});F.featureIndex.insert(A[ft].feature,Ke,ft,Rt,this.index)}}update(A,F,W){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(A,F,this.stateDependentLayers,W)}addFeatures(A,F,W){for(let te of this.patternFeatures)this.addFeature(te,te.geometry,te.index,F,W)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(A){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=A.createVertexBuffer(this.layoutVertexArray2,mp)),this.layoutVertexBuffer=A.createVertexBuffer(this.layoutVertexArray,gp),this.indexBuffer=A.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(A),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(A){if(A.properties&&Object.prototype.hasOwnProperty.call(A.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(A.properties,"mapbox_clip_end"))return{start:+A.properties.mapbox_clip_start,end:+A.properties.mapbox_clip_end}}addFeature(A,F,W,te,fe){let pe=this.layers[0].layout,Re=pe.get("line-join").evaluate(A,{}),Ke=pe.get("line-cap"),ft=pe.get("line-miter-limit"),Rt=pe.get("line-round-limit");this.lineClips=this.lineFeatureClips(A);for(let er of F)this.addLine(er,A,Re,Ke,ft,Rt);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,A,W,fe,te)}addLine(A,F,W,te,fe,pe){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let pi=0;pi=2&&A[Ke-1].equals(A[Ke-2]);)Ke--;let ft=0;for(;ft0;if(ro&&pi>ft){let Mo=ur.dist(vr);if(Mo>2*Rt){let fo=ur.sub(ur.sub(vr)._mult(Rt/Mo)._round());this.updateDistance(vr,fo),this.addCurrentVertex(fo,Dr,0,0,er),vr=fo}}let Xa=vr&&kr,la=Xa?W:Re?"butt":te;if(Xa&&la==="round"&&(Tnfe&&(la="bevel"),la==="bevel"&&(Tn>2&&(la="flipbevel"),Tn100)vn=li.mult(-1);else{let Mo=Tn*Dr.add(li).mag()/Dr.sub(li).mag();vn._perp()._mult(Mo*(Vo?-1:1))}this.addCurrentVertex(ur,vn,0,0,er),this.addCurrentVertex(ur,vn.mult(-1),0,0,er)}else if(la==="bevel"||la==="fakeround"){let Mo=-Math.sqrt(Tn*Tn-1),fo=Vo?Mo:0,lo=Vo?0:Mo;if(vr&&this.addCurrentVertex(ur,Dr,fo,lo,er),la==="fakeround"){let Wn=Math.round(180*pa/Math.PI/20);for(let Ro=1;Ro2*Rt){let fo=ur.add(kr.sub(ur)._mult(Rt/Mo)._round());this.updateDistance(ur,fo),this.addCurrentVertex(fo,li,0,0,er),ur=fo}}}}addCurrentVertex(A,F,W,te,fe,pe=!1){let Re=F.y*te-F.x,Ke=-F.y-F.x*te;this.addHalfVertex(A,F.x+F.y*W,F.y-F.x*W,pe,!1,W,fe),this.addHalfVertex(A,Re,Ke,pe,!0,-te,fe),this.distance>Pv/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(A,F,W,te,fe,pe))}addHalfVertex({x:A,y:F},W,te,fe,pe,Re,Ke){let ft=.5*(this.lineClips?this.scaledDistance*(Pv-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((A<<1)+(fe?1:0),(F<<1)+(pe?1:0),Math.round(63*W)+128,Math.round(63*te)+128,1+(Re===0?0:Re<0?-1:1)|(63&ft)<<2,ft>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);let Rt=Ke.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,Rt),Ke.primitiveLength++),pe?this.e2=Rt:this.e1=Rt}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(A,F){this.distance+=A.dist(F),this.updateScaledDistance()}}let Iv,hy;Fi("LineBucket",Jv,{omit:["layers","patternFeatures"]});var dg={get paint(){return hy=hy||new ue({"line-opacity":new oo(ce.paint_line["line-opacity"]),"line-color":new oo(ce.paint_line["line-color"]),"line-translate":new Va(ce.paint_line["line-translate"]),"line-translate-anchor":new Va(ce.paint_line["line-translate-anchor"]),"line-width":new oo(ce.paint_line["line-width"]),"line-gap-width":new oo(ce.paint_line["line-gap-width"]),"line-offset":new oo(ce.paint_line["line-offset"]),"line-blur":new oo(ce.paint_line["line-blur"]),"line-dasharray":new hc(ce.paint_line["line-dasharray"]),"line-pattern":new Vc(ce.paint_line["line-pattern"]),"line-gradient":new Ku(ce.paint_line["line-gradient"])})},get layout(){return Iv=Iv||new ue({"line-cap":new Va(ce.layout_line["line-cap"]),"line-join":new oo(ce.layout_line["line-join"]),"line-miter-limit":new Va(ce.layout_line["line-miter-limit"]),"line-round-limit":new Va(ce.layout_line["line-round-limit"]),"line-sort-key":new oo(ce.layout_line["line-sort-key"])})}};class oh extends oo{possiblyEvaluate(A,F){return F=new rs(Math.floor(F.zoom),{now:F.now,fadeDuration:F.fadeDuration,zoomHistory:F.zoomHistory,transition:F.transition}),super.possiblyEvaluate(A,F)}evaluate(A,F,W,te){return F=L({},F,{zoom:Math.floor(F.zoom)}),super.evaluate(A,F,W,te)}}let vg;class dy extends B{constructor(A){super(A,dg),this.gradientVersion=0,vg||(vg=new oh(dg.paint.properties["line-width"].specification),vg.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(A){if(A==="line-gradient"){let F=this.gradientExpression();this.stepInterpolant=!!function(W){return W._styleExpression!==void 0}(F)&&F._styleExpression.expression instanceof _n,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(A,F){super.recalculate(A,F),this.paint._values["line-floorwidth"]=vg.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,A)}createBucket(A){return new Jv(A)}queryRadius(A){let F=A,W=Zh(Si("line-width",this,F),Si("line-gap-width",this,F)),te=Si("line-offset",this,F);return W/2+Math.abs(te)+Vn(this.paint.get("line-translate"))}queryIntersectsFeature(A,F,W,te,fe,pe,Re){let Ke=Qi(A,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),pe.angle,Re),ft=Re/2*Zh(this.paint.get("line-width").evaluate(F,W),this.paint.get("line-gap-width").evaluate(F,W)),Rt=this.paint.get("line-offset").evaluate(F,W);return Rt&&(te=function(er,ur){let vr=[];for(let kr=0;kr=3){for(let li=0;li0?A+2*R:R}let am=Fe([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),k1=Fe([{name:"a_projected_pos",components:3,type:"Float32"}],4);Fe([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);let C1=Fe([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);Fe([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);let vy=Fe([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),om=Fe([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function sm(R,A,F){return R.sections.forEach(W=>{W.text=function(te,fe,pe){let Re=fe.layout.get("text-transform").evaluate(pe,{});return Re==="uppercase"?te=te.toLocaleUpperCase():Re==="lowercase"&&(te=te.toLocaleLowerCase()),ys.applyArabicShaping&&(te=ys.applyArabicShaping(te)),te}(W.text,A,F)}),R}Fe([{name:"triangle",components:3,type:"Uint16"}]),Fe([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),Fe([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),Fe([{type:"Float32",name:"offsetX"}]),Fe([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),Fe([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);let vc={"!":"\uFE15","#":"\uFF03",$:"\uFF04","%":"\uFF05","&":"\uFF06","(":"\uFE35",")":"\uFE36","*":"\uFF0A","+":"\uFF0B",",":"\uFE10","-":"\uFE32",".":"\u30FB","/":"\uFF0F",":":"\uFE13",";":"\uFE14","<":"\uFE3F","=":"\uFF1D",">":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};var tu=24,Sd=wu,py=function(R,A,F,W,te){var fe,pe,Re=8*te-W-1,Ke=(1<>1,Rt=-7,er=F?te-1:0,ur=F?-1:1,vr=R[A+er];for(er+=ur,fe=vr&(1<<-Rt)-1,vr>>=-Rt,Rt+=Re;Rt>0;fe=256*fe+R[A+er],er+=ur,Rt-=8);for(pe=fe&(1<<-Rt)-1,fe>>=-Rt,Rt+=W;Rt>0;pe=256*pe+R[A+er],er+=ur,Rt-=8);if(fe===0)fe=1-ft;else{if(fe===Ke)return pe?NaN:1/0*(vr?-1:1);pe+=Math.pow(2,W),fe-=ft}return(vr?-1:1)*pe*Math.pow(2,fe-W)},L1=function(R,A,F,W,te,fe){var pe,Re,Ke,ft=8*fe-te-1,Rt=(1<>1,ur=te===23?Math.pow(2,-24)-Math.pow(2,-77):0,vr=W?0:fe-1,kr=W?1:-1,Dr=A<0||A===0&&1/A<0?1:0;for(A=Math.abs(A),isNaN(A)||A===1/0?(Re=isNaN(A)?1:0,pe=Rt):(pe=Math.floor(Math.log(A)/Math.LN2),A*(Ke=Math.pow(2,-pe))<1&&(pe--,Ke*=2),(A+=pe+er>=1?ur/Ke:ur*Math.pow(2,1-er))*Ke>=2&&(pe++,Ke/=2),pe+er>=Rt?(Re=0,pe=Rt):pe+er>=1?(Re=(A*Ke-1)*Math.pow(2,te),pe+=er):(Re=A*Math.pow(2,er-1)*Math.pow(2,te),pe=0));te>=8;R[F+vr]=255&Re,vr+=kr,Re/=256,te-=8);for(pe=pe<0;R[F+vr]=255&pe,vr+=kr,pe/=256,ft-=8);R[F+vr-kr]|=128*Dr};function wu(R){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(R)?R:new Uint8Array(R||0),this.pos=0,this.type=0,this.length=this.buf.length}wu.Varint=0,wu.Fixed64=1,wu.Bytes=2,wu.Fixed32=5;var Kx=4294967296,lm=1/Kx,Bw=typeof TextDecoder=="undefined"?null:new TextDecoder("utf-8");function Rv(R){return R.type===wu.Bytes?R.readVarint()+R.pos:R.pos+1}function um(R,A,F){return F?4294967296*A+(R>>>0):4294967296*(A>>>0)+(R>>>0)}function Nw(R,A,F){var W=A<=16383?1:A<=2097151?2:A<=268435455?3:Math.floor(Math.log(A)/(7*Math.LN2));F.realloc(W);for(var te=F.pos-1;te>=R;te--)F.buf[te+W]=F.buf[te]}function Jx(R,A){for(var F=0;F>>8,R[F+2]=A>>>16,R[F+3]=A>>>24}function MC(R,A){return(R[A]|R[A+1]<<8|R[A+2]<<16)+(R[A+3]<<24)}wu.prototype={destroy:function(){this.buf=null},readFields:function(R,A,F){for(F=F||this.length;this.pos>3,fe=this.pos;this.type=7&W,R(te,A,this),this.pos===fe&&this.skip(W)}return A},readMessage:function(R,A){return this.readFields(R,A,this.readVarint()+this.pos)},readFixed32:function(){var R=gy(this.buf,this.pos);return this.pos+=4,R},readSFixed32:function(){var R=MC(this.buf,this.pos);return this.pos+=4,R},readFixed64:function(){var R=gy(this.buf,this.pos)+gy(this.buf,this.pos+4)*Kx;return this.pos+=8,R},readSFixed64:function(){var R=gy(this.buf,this.pos)+MC(this.buf,this.pos+4)*Kx;return this.pos+=8,R},readFloat:function(){var R=py(this.buf,this.pos,!0,23,4);return this.pos+=4,R},readDouble:function(){var R=py(this.buf,this.pos,!0,52,8);return this.pos+=8,R},readVarint:function(R){var A,F,W=this.buf;return A=127&(F=W[this.pos++]),F<128?A:(A|=(127&(F=W[this.pos++]))<<7,F<128?A:(A|=(127&(F=W[this.pos++]))<<14,F<128?A:(A|=(127&(F=W[this.pos++]))<<21,F<128?A:function(te,fe,pe){var Re,Ke,ft=pe.buf;if(Re=(112&(Ke=ft[pe.pos++]))>>4,Ke<128||(Re|=(127&(Ke=ft[pe.pos++]))<<3,Ke<128)||(Re|=(127&(Ke=ft[pe.pos++]))<<10,Ke<128)||(Re|=(127&(Ke=ft[pe.pos++]))<<17,Ke<128)||(Re|=(127&(Ke=ft[pe.pos++]))<<24,Ke<128)||(Re|=(1&(Ke=ft[pe.pos++]))<<31,Ke<128))return um(te,Re,fe);throw new Error("Expected varint not more than 10 bytes")}(A|=(15&(F=W[this.pos]))<<28,R,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var R=this.readVarint();return R%2==1?(R+1)/-2:R/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var R=this.readVarint()+this.pos,A=this.pos;return this.pos=R,R-A>=12&&Bw?function(F,W,te){return Bw.decode(F.subarray(W,te))}(this.buf,A,R):function(F,W,te){for(var fe="",pe=W;pe239?4:Rt>223?3:Rt>191?2:1;if(pe+ur>te)break;ur===1?Rt<128&&(er=Rt):ur===2?(192&(Re=F[pe+1]))==128&&(er=(31&Rt)<<6|63&Re)<=127&&(er=null):ur===3?(Ke=F[pe+2],(192&(Re=F[pe+1]))==128&&(192&Ke)==128&&((er=(15&Rt)<<12|(63&Re)<<6|63&Ke)<=2047||er>=55296&&er<=57343)&&(er=null)):ur===4&&(Ke=F[pe+2],ft=F[pe+3],(192&(Re=F[pe+1]))==128&&(192&Ke)==128&&(192&ft)==128&&((er=(15&Rt)<<18|(63&Re)<<12|(63&Ke)<<6|63&ft)<=65535||er>=1114112)&&(er=null)),er===null?(er=65533,ur=1):er>65535&&(er-=65536,fe+=String.fromCharCode(er>>>10&1023|55296),er=56320|1023&er),fe+=String.fromCharCode(er),pe+=ur}return fe}(this.buf,A,R)},readBytes:function(){var R=this.readVarint()+this.pos,A=this.buf.subarray(this.pos,R);return this.pos=R,A},readPackedVarint:function(R,A){if(this.type!==wu.Bytes)return R.push(this.readVarint(A));var F=Rv(this);for(R=R||[];this.pos127;);else if(A===wu.Bytes)this.pos=this.readVarint()+this.pos;else if(A===wu.Fixed32)this.pos+=4;else{if(A!==wu.Fixed64)throw new Error("Unimplemented type: "+A);this.pos+=8}},writeTag:function(R,A){this.writeVarint(R<<3|A)},realloc:function(R){for(var A=this.length||16;A268435455||R<0?function(A,F){var W,te;if(A>=0?(W=A%4294967296|0,te=A/4294967296|0):(te=~(-A/4294967296),4294967295^(W=~(-A%4294967296))?W=W+1|0:(W=0,te=te+1|0)),A>=18446744073709552e3||A<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");F.realloc(10),function(fe,pe,Re){Re.buf[Re.pos++]=127&fe|128,fe>>>=7,Re.buf[Re.pos++]=127&fe|128,fe>>>=7,Re.buf[Re.pos++]=127&fe|128,fe>>>=7,Re.buf[Re.pos++]=127&fe|128,Re.buf[Re.pos]=127&(fe>>>=7)}(W,0,F),function(fe,pe){var Re=(7&fe)<<4;pe.buf[pe.pos++]|=Re|((fe>>>=3)?128:0),fe&&(pe.buf[pe.pos++]=127&fe|((fe>>>=7)?128:0),fe&&(pe.buf[pe.pos++]=127&fe|((fe>>>=7)?128:0),fe&&(pe.buf[pe.pos++]=127&fe|((fe>>>=7)?128:0),fe&&(pe.buf[pe.pos++]=127&fe|((fe>>>=7)?128:0),fe&&(pe.buf[pe.pos++]=127&fe)))))}(te,F)}(R,this):(this.realloc(4),this.buf[this.pos++]=127&R|(R>127?128:0),R<=127||(this.buf[this.pos++]=127&(R>>>=7)|(R>127?128:0),R<=127||(this.buf[this.pos++]=127&(R>>>=7)|(R>127?128:0),R<=127||(this.buf[this.pos++]=R>>>7&127))))},writeSVarint:function(R){this.writeVarint(R<0?2*-R-1:2*R)},writeBoolean:function(R){this.writeVarint(!!R)},writeString:function(R){R=String(R),this.realloc(4*R.length),this.pos++;var A=this.pos;this.pos=function(W,te,fe){for(var pe,Re,Ke=0;Ke55295&&pe<57344){if(!Re){pe>56319||Ke+1===te.length?(W[fe++]=239,W[fe++]=191,W[fe++]=189):Re=pe;continue}if(pe<56320){W[fe++]=239,W[fe++]=191,W[fe++]=189,Re=pe;continue}pe=Re-55296<<10|pe-56320|65536,Re=null}else Re&&(W[fe++]=239,W[fe++]=191,W[fe++]=189,Re=null);pe<128?W[fe++]=pe:(pe<2048?W[fe++]=pe>>6|192:(pe<65536?W[fe++]=pe>>12|224:(W[fe++]=pe>>18|240,W[fe++]=pe>>12&63|128),W[fe++]=pe>>6&63|128),W[fe++]=63&pe|128)}return fe}(this.buf,R,this.pos);var F=this.pos-A;F>=128&&Nw(A,F,this),this.pos=A-1,this.writeVarint(F),this.pos+=F},writeFloat:function(R){this.realloc(4),L1(this.buf,R,this.pos,!0,23,4),this.pos+=4},writeDouble:function(R){this.realloc(8),L1(this.buf,R,this.pos,!0,52,8),this.pos+=8},writeBytes:function(R){var A=R.length;this.writeVarint(A),this.realloc(A);for(var F=0;F=128&&Nw(F,W,this),this.pos=F-1,this.writeVarint(W),this.pos+=W},writeMessage:function(R,A,F){this.writeTag(R,wu.Bytes),this.writeRawMessage(A,F)},writePackedVarint:function(R,A){A.length&&this.writeMessage(R,Jx,A)},writePackedSVarint:function(R,A){A.length&&this.writeMessage(R,H9,A)},writePackedBoolean:function(R,A){A.length&&this.writeMessage(R,X9,A)},writePackedFloat:function(R,A){A.length&&this.writeMessage(R,j9,A)},writePackedDouble:function(R,A){A.length&&this.writeMessage(R,W9,A)},writePackedFixed32:function(R,A){A.length&&this.writeMessage(R,OQ,A)},writePackedSFixed32:function(R,A){A.length&&this.writeMessage(R,Z9,A)},writePackedFixed64:function(R,A){A.length&&this.writeMessage(R,Y9,A)},writePackedSFixed64:function(R,A){A.length&&this.writeMessage(R,K9,A)},writeBytesField:function(R,A){this.writeTag(R,wu.Bytes),this.writeBytes(A)},writeFixed32Field:function(R,A){this.writeTag(R,wu.Fixed32),this.writeFixed32(A)},writeSFixed32Field:function(R,A){this.writeTag(R,wu.Fixed32),this.writeSFixed32(A)},writeFixed64Field:function(R,A){this.writeTag(R,wu.Fixed64),this.writeFixed64(A)},writeSFixed64Field:function(R,A){this.writeTag(R,wu.Fixed64),this.writeSFixed64(A)},writeVarintField:function(R,A){this.writeTag(R,wu.Varint),this.writeVarint(A)},writeSVarintField:function(R,A){this.writeTag(R,wu.Varint),this.writeSVarint(A)},writeStringField:function(R,A){this.writeTag(R,wu.Bytes),this.writeString(A)},writeFloatField:function(R,A){this.writeTag(R,wu.Fixed32),this.writeFloat(A)},writeDoubleField:function(R,A){this.writeTag(R,wu.Fixed64),this.writeDouble(A)},writeBooleanField:function(R,A){this.writeVarintField(R,!!A)}};var uS=o(Sd);let cS=3;function BQ(R,A,F){R===1&&F.readMessage(J9,A)}function J9(R,A,F){if(R===3){let{id:W,bitmap:te,width:fe,height:pe,left:Re,top:Ke,advance:ft}=F.readMessage(EC,{});A.push({id:W,bitmap:new aa({width:fe+2*cS,height:pe+2*cS},te),metrics:{width:fe,height:pe,left:Re,top:Ke,advance:ft}})}}function EC(R,A,F){R===1?A.id=F.readVarint():R===2?A.bitmap=F.readBytes():R===3?A.width=F.readVarint():R===4?A.height=F.readVarint():R===5?A.left=F.readSVarint():R===6?A.top=F.readSVarint():R===7&&(A.advance=F.readVarint())}let kC=cS;function fS(R){let A=0,F=0;for(let pe of R)A+=pe.w*pe.h,F=Math.max(F,pe.w);R.sort((pe,Re)=>Re.h-pe.h);let W=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(A/.95)),F),h:1/0}],te=0,fe=0;for(let pe of R)for(let Re=W.length-1;Re>=0;Re--){let Ke=W[Re];if(!(pe.w>Ke.w||pe.h>Ke.h)){if(pe.x=Ke.x,pe.y=Ke.y,fe=Math.max(fe,pe.y+pe.h),te=Math.max(te,pe.x+pe.w),pe.w===Ke.w&&pe.h===Ke.h){let ft=W.pop();Re=0&&W>=A&&Gw[this.text.charCodeAt(W)];W--)F--;this.text=this.text.substring(A,F),this.sectionIndex=this.sectionIndex.slice(A,F)}substring(A,F){let W=new P1;return W.text=this.text.substring(A,F),W.sectionIndex=this.sectionIndex.slice(A,F),W.sections=this.sections,W}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((A,F)=>Math.max(A,this.sections[F].scale),0)}addTextSection(A,F){this.text+=A.text,this.sections.push(Qx.forText(A.scale,A.fontStack||F));let W=this.sections.length-1;for(let te=0;te=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function eb(R,A,F,W,te,fe,pe,Re,Ke,ft,Rt,er,ur,vr,kr){let Dr=P1.fromFeature(R,te),li;er===i.ah.vertical&&Dr.verticalizePunctuation();let{processBidirectionalText:pi,processStyledBidirectionalText:vn}=ys;if(pi&&Dr.sections.length===1){li=[];let Tn=pi(Dr.toString(),I1(Dr,ft,fe,A,W,vr));for(let pa of Tn){let ro=new P1;ro.text=pa,ro.sections=Dr.sections;for(let Vo=0;Vo0&&tp>Df&&(Df=tp)}else{let Gc=ro[ru.fontStack],Yf=Gc&&Gc[$u];if(Yf&&Yf.rect)O1=Yf.rect,hf=Yf.metrics;else{let tp=pa[ru.fontStack],yg=tp&&tp[$u];if(!yg)continue;hf=yg.metrics}zv=(Lh-ru.scale)*tu}ep?(Tn.verticalizable=!0,Yh.push({glyph:$u,imageName:p0,x:$o,y:Ju+zv,vertical:ep,scale:ru.scale,fontStack:ru.fontStack,sectionIndex:pc,metrics:hf,rect:O1}),$o+=Gp*ru.scale+Wn):(Yh.push({glyph:$u,imageName:p0,x:$o,y:Ju+zv,vertical:ep,scale:ru.scale,fontStack:ru.fontStack,sectionIndex:pc,metrics:hf,rect:O1}),$o+=hf.advance*ru.scale+Wn)}Yh.length!==0&&(Ou=Math.max($o-Wn,Ou),cm(Yh,0,Yh.length-1,Qv,Df)),$o=0;let Fv=la*Lh+Df;cd.lineOffset=Math.max(Df,Ed),Ju+=Fv,kh=Math.max(Fv,kh),++ud}var Ch;let Gd=Ju-Eh,{horizontalAlign:Hd,verticalAlign:jd}=jw(Mo);(function(Af,Lh,Ed,cd,Yh,Df,Fv,uv,ru){let pc=(Lh-Ed)*Yh,$u=0;$u=Df!==Fv?-uv*cd-Eh:(-cd*ru+.5)*Fv;for(let zv of Af)for(let hf of zv.positionedGlyphs)hf.x+=pc,hf.y+=$u})(Tn.positionedLines,Qv,Hd,jd,Ou,kh,la,Gd,Xa.length),Tn.top+=-jd*Gd,Tn.bottom=Tn.top+Gd,Tn.left+=-Hd*Ou,Tn.right=Tn.left+Ou}(ln,A,F,W,li,pe,Re,Ke,er,ft,ur,kr),!function(Tn){for(let pa of Tn)if(pa.positionedGlyphs.length!==0)return!1;return!0}(zi)&&ln}let Gw={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},$9={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},Q9={40:!0};function CC(R,A,F,W,te,fe){if(A.imageName){let pe=W[A.imageName];return pe?pe.displaySize[0]*A.scale*tu/fe+te:0}{let pe=F[A.fontStack],Re=pe&&pe[R];return Re?Re.metrics.advance*A.scale+te:0}}function LC(R,A,F,W){let te=Math.pow(R-A,2);return W?R=0,ft=0;for(let er=0;erft){let Rt=Math.ceil(fe/ft);te*=Rt/pe,pe=Rt}return{x1:W,y1:te,x2:W+fe,y2:te+pe}}function RC(R,A,F,W,te,fe){let pe=R.image,Re;if(pe.content){let li=pe.content,pi=pe.pixelRatio||1;Re=[li[0]/pi,li[1]/pi,pe.displaySize[0]-li[2]/pi,pe.displaySize[1]-li[3]/pi]}let Ke=A.left*fe,ft=A.right*fe,Rt,er,ur,vr;F==="width"||F==="both"?(vr=te[0]+Ke-W[3],er=te[0]+ft+W[1]):(vr=te[0]+(Ke+ft-pe.displaySize[0])/2,er=vr+pe.displaySize[0]);let kr=A.top*fe,Dr=A.bottom*fe;return F==="height"||F==="both"?(Rt=te[1]+kr-W[0],ur=te[1]+Dr+W[2]):(Rt=te[1]+(kr+Dr-pe.displaySize[1])/2,ur=Rt+pe.displaySize[1]),{image:pe,top:Rt,right:er,bottom:ur,left:vr,collisionPadding:Re}}let rb=255,v0=128,fm=rb*v0;function DC(R,A){let{expression:F}=A;if(F.kind==="constant")return{kind:"constant",layoutSize:F.evaluate(new rs(R+1))};if(F.kind==="source")return{kind:"source"};{let{zoomStops:W,interpolationType:te}=F,fe=0;for(;fepe.id),this.index=A.index,this.pixelRatio=A.pixelRatio,this.sourceLayerIndex=A.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Ii([]),this.placementViewportMatrix=Ii([]);let F=this.layers[0]._unevaluatedLayout._values;this.textSizeData=DC(this.zoom,F["text-size"]),this.iconSizeData=DC(this.zoom,F["icon-size"]);let W=this.layers[0].layout,te=W.get("symbol-sort-key"),fe=W.get("symbol-z-order");this.canOverlap=hS(W,"text-overlap","text-allow-overlap")!=="never"||hS(W,"icon-overlap","icon-allow-overlap")!=="never"||W.get("text-ignore-placement")||W.get("icon-ignore-placement"),this.sortFeaturesByKey=fe!=="viewport-y"&&!te.isConstant(),this.sortFeaturesByY=(fe==="viewport-y"||fe==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,W.get("symbol-placement")==="point"&&(this.writingModes=W.get("text-writing-mode").map(pe=>i.ah[pe])),this.stateDependentLayerIds=this.layers.filter(pe=>pe.isStateDependent()).map(pe=>pe.id),this.sourceID=A.sourceID}createArrays(){this.text=new pS(new Ms(this.layers,this.zoom,A=>/^text/.test(A))),this.icon=new pS(new Ms(this.layers,this.zoom,A=>/^icon/.test(A))),this.glyphOffsetArray=new Co,this.lineVertexArray=new Qa,this.symbolInstances=new $a,this.textAnchorOffsets=new Bo}calculateGlyphDependencies(A,F,W,te,fe){for(let pe=0;pe0)&&(pe.value.kind!=="constant"||pe.value.value.length>0),Rt=Ke.value.kind!=="constant"||!!Ke.value.value||Object.keys(Ke.parameters).length>0,er=fe.get("symbol-sort-key");if(this.features=[],!ft&&!Rt)return;let ur=F.iconDependencies,vr=F.glyphDependencies,kr=F.availableImages,Dr=new rs(this.zoom);for(let{feature:li,id:pi,index:vn,sourceLayerIndex:zi}of A){let ln=te._featureFilter.needGeometry,Tn=Sl(li,ln);if(!te._featureFilter.filter(Dr,Tn,W))continue;let pa,ro;if(ln||(Tn.geometry=$s(li)),ft){let Xa=te.getValueAndResolveTokens("text-field",Tn,W,kr),la=ti.factory(Xa),Mo=this.hasRTLText=this.hasRTLText||vS(la);(!Mo||ys.getRTLTextPluginStatus()==="unavailable"||Mo&&ys.isParsed())&&(pa=sm(la,te,Tn))}if(Rt){let Xa=te.getValueAndResolveTokens("icon-image",Tn,W,kr);ro=Xa instanceof en?Xa:en.fromString(Xa)}if(!pa&&!ro)continue;let Vo=this.sortFeaturesByKey?er.evaluate(Tn,{},W):void 0;if(this.features.push({id:pi,text:pa,icon:ro,index:vn,sourceLayerIndex:zi,geometry:Tn.geometry,properties:li.properties,type:tq[li.type],sortKey:Vo}),ro&&(ur[ro.name]=!0),pa){let Xa=pe.evaluate(Tn,{},W).join(","),la=fe.get("text-rotation-alignment")!=="viewport"&&fe.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(i.ah.vertical)>=0;for(let Mo of pa.sections)if(Mo.image)ur[Mo.image.name]=!0;else{let fo=Ka(pa.toString()),lo=Mo.fontStack||Xa,Wn=vr[lo]=vr[lo]||{};this.calculateGlyphDependencies(Mo.text,Wn,la,this.allowVerticalPlacement,fo)}}}fe.get("symbol-placement")==="line"&&(this.features=function(li){let pi={},vn={},zi=[],ln=0;function Tn(Xa){zi.push(li[Xa]),ln++}function pa(Xa,la,Mo){let fo=vn[Xa];return delete vn[Xa],vn[la]=fo,zi[fo].geometry[0].pop(),zi[fo].geometry[0]=zi[fo].geometry[0].concat(Mo[0]),fo}function ro(Xa,la,Mo){let fo=pi[la];return delete pi[la],pi[Xa]=fo,zi[fo].geometry[0].shift(),zi[fo].geometry[0]=Mo[0].concat(zi[fo].geometry[0]),fo}function Vo(Xa,la,Mo){let fo=Mo?la[0][la[0].length-1]:la[0][0];return`${Xa}:${fo.x}:${fo.y}`}for(let Xa=0;XaXa.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((li,pi)=>li.sortKey-pi.sortKey)}update(A,F,W){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(A,F,this.layers,W),this.icon.programConfigurations.updatePaintArrays(A,F,this.layers,W))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(A){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(A),this.iconCollisionBox.upload(A)),this.text.upload(A,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(A,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(A,F){let W=this.lineVertexArray.length;if(A.segment!==void 0){let te=A.dist(F[A.segment+1]),fe=A.dist(F[A.segment]),pe={};for(let Re=A.segment+1;Re=0;Re--)pe[Re]={x:F[Re].x,y:F[Re].y,tileUnitDistanceFromAnchor:fe},Re>0&&(fe+=F[Re-1].dist(F[Re]));for(let Re=0;Re0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(A,F){let W=A.placedSymbolArray.get(F),te=W.vertexStartIndex+4*W.numGlyphs;for(let fe=W.vertexStartIndex;fete[Re]-te[Ke]||fe[Ke]-fe[Re]),pe}addToSortKeyRanges(A,F){let W=this.sortKeyRanges[this.sortKeyRanges.length-1];W&&W.sortKey===F?W.symbolInstanceEnd=A+1:this.sortKeyRanges.push({sortKey:F,symbolInstanceStart:A,symbolInstanceEnd:A+1})}sortFeatures(A){if(this.sortFeaturesByY&&this.sortedAngle!==A&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(A),this.sortedAngle=A,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(let F of this.symbolInstanceIndexes){let W=this.symbolInstances.get(F);this.featureSortOrder.push(W.featureIndex),[W.rightJustifiedTextSymbolIndex,W.centerJustifiedTextSymbolIndex,W.leftJustifiedTextSymbolIndex].forEach((te,fe,pe)=>{te>=0&&pe.indexOf(te)===fe&&this.addIndicesForPlacedSymbol(this.text,te)}),W.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,W.verticalPlacedTextSymbolIndex),W.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,W.placedIconSymbolIndex),W.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,W.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let Tf,ib;Fi("SymbolBucket",R1,{omit:["layers","collisionBoxArray","features","compareText"]}),R1.MAX_GLYPHS=65535,R1.addDynamicAttributes=dS;var Xw={get paint(){return ib=ib||new ue({"icon-opacity":new oo(ce.paint_symbol["icon-opacity"]),"icon-color":new oo(ce.paint_symbol["icon-color"]),"icon-halo-color":new oo(ce.paint_symbol["icon-halo-color"]),"icon-halo-width":new oo(ce.paint_symbol["icon-halo-width"]),"icon-halo-blur":new oo(ce.paint_symbol["icon-halo-blur"]),"icon-translate":new Va(ce.paint_symbol["icon-translate"]),"icon-translate-anchor":new Va(ce.paint_symbol["icon-translate-anchor"]),"text-opacity":new oo(ce.paint_symbol["text-opacity"]),"text-color":new oo(ce.paint_symbol["text-color"],{runtimeType:jt,getOverride:R=>R.textColor,hasOverride:R=>!!R.textColor}),"text-halo-color":new oo(ce.paint_symbol["text-halo-color"]),"text-halo-width":new oo(ce.paint_symbol["text-halo-width"]),"text-halo-blur":new oo(ce.paint_symbol["text-halo-blur"]),"text-translate":new Va(ce.paint_symbol["text-translate"]),"text-translate-anchor":new Va(ce.paint_symbol["text-translate-anchor"])})},get layout(){return Tf=Tf||new ue({"symbol-placement":new Va(ce.layout_symbol["symbol-placement"]),"symbol-spacing":new Va(ce.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Va(ce.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new oo(ce.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Va(ce.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Va(ce.layout_symbol["icon-allow-overlap"]),"icon-overlap":new Va(ce.layout_symbol["icon-overlap"]),"icon-ignore-placement":new Va(ce.layout_symbol["icon-ignore-placement"]),"icon-optional":new Va(ce.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Va(ce.layout_symbol["icon-rotation-alignment"]),"icon-size":new oo(ce.layout_symbol["icon-size"]),"icon-text-fit":new Va(ce.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Va(ce.layout_symbol["icon-text-fit-padding"]),"icon-image":new oo(ce.layout_symbol["icon-image"]),"icon-rotate":new oo(ce.layout_symbol["icon-rotate"]),"icon-padding":new oo(ce.layout_symbol["icon-padding"]),"icon-keep-upright":new Va(ce.layout_symbol["icon-keep-upright"]),"icon-offset":new oo(ce.layout_symbol["icon-offset"]),"icon-anchor":new oo(ce.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Va(ce.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Va(ce.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Va(ce.layout_symbol["text-rotation-alignment"]),"text-field":new oo(ce.layout_symbol["text-field"]),"text-font":new oo(ce.layout_symbol["text-font"]),"text-size":new oo(ce.layout_symbol["text-size"]),"text-max-width":new oo(ce.layout_symbol["text-max-width"]),"text-line-height":new Va(ce.layout_symbol["text-line-height"]),"text-letter-spacing":new oo(ce.layout_symbol["text-letter-spacing"]),"text-justify":new oo(ce.layout_symbol["text-justify"]),"text-radial-offset":new oo(ce.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Va(ce.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new oo(ce.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new oo(ce.layout_symbol["text-anchor"]),"text-max-angle":new Va(ce.layout_symbol["text-max-angle"]),"text-writing-mode":new Va(ce.layout_symbol["text-writing-mode"]),"text-rotate":new oo(ce.layout_symbol["text-rotate"]),"text-padding":new Va(ce.layout_symbol["text-padding"]),"text-keep-upright":new Va(ce.layout_symbol["text-keep-upright"]),"text-transform":new oo(ce.layout_symbol["text-transform"]),"text-offset":new oo(ce.layout_symbol["text-offset"]),"text-allow-overlap":new Va(ce.layout_symbol["text-allow-overlap"]),"text-overlap":new Va(ce.layout_symbol["text-overlap"]),"text-ignore-placement":new Va(ce.layout_symbol["text-ignore-placement"]),"text-optional":new Va(ce.layout_symbol["text-optional"])})}};class nb{constructor(A){if(A.property.overrides===void 0)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=A.property.overrides?A.property.overrides.runtimeType:Tt,this.defaultValue=A}evaluate(A){if(A.formattedSection){let F=this.defaultValue.property.overrides;if(F&&F.hasOverride(A.formattedSection))return F.getOverride(A.formattedSection)}return A.feature&&A.featureState?this.defaultValue.evaluate(A.feature,A.featureState):this.defaultValue.property.specification.default}eachChild(A){this.defaultValue.isConstant()||A(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}Fi("FormatSectionOverride",nb,{omit:["defaultValue"]});class my extends B{constructor(A){super(A,Xw)}recalculate(A,F){if(super.recalculate(A,F),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout._values["icon-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout._values["text-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")==="map"?"map":"viewport"),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){let W=this.layout.get("text-writing-mode");if(W){let te=[];for(let fe of W)te.indexOf(fe)<0&&te.push(fe);this.layout._values["text-writing-mode"]=te}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(A,F,W,te){let fe=this.layout.get(A).evaluate(F,{},W,te),pe=this._unevaluatedLayout._values[A];return pe.isDataDriven()||Dc(pe.value)||!fe?fe:function(Re,Ke){return Ke.replace(/{([^{}]+)}/g,(ft,Rt)=>Re&&Rt in Re?String(Re[Rt]):"")}(F.properties,fe)}createBucket(A){return new R1(A)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(let A of Xw.paint.overridableProperties){if(!my.hasPaintOverride(this.layout,A))continue;let F=this.paint.get(A),W=new nb(F),te=new Eu(W,F.property.specification),fe=null;fe=F.value.kind==="constant"||F.value.kind==="source"?new bc("source",te):new hu("composite",te,F.value.zoomStops),this.paint._values[A]=new xu(F.property,fe,F.parameters)}}_handleOverridablePaintPropertyUpdate(A,F,W){return!(!this.layout||F.isDataDriven()||W.isDataDriven())&&my.hasPaintOverride(this.layout,A)}static hasPaintOverride(A,F){let W=A.get("text-field"),te=Xw.paint.properties[F],fe=!1,pe=Re=>{for(let Ke of Re)if(te.overrides&&te.overrides.hasOverride(Ke))return void(fe=!0)};if(W.value.kind==="constant"&&W.value.value instanceof ti)pe(W.value.value.sections);else if(W.value.kind==="source"){let Re=ft=>{fe||(ft instanceof ua&&Mn(ft.value)===ei?pe(ft.value.sections):ft instanceof Yl?pe(ft.sections):ft.eachChild(Re))},Ke=W.value;Ke._styleExpression&&Re(Ke._styleExpression.expression)}return fe}}let FC;var ab={get paint(){return FC=FC||new ue({"background-color":new Va(ce.paint_background["background-color"]),"background-pattern":new hc(ce.paint_background["background-pattern"]),"background-opacity":new Va(ce.paint_background["background-opacity"])})}};class iq extends B{constructor(A){super(A,ab)}}let gS;var zC={get paint(){return gS=gS||new ue({"raster-opacity":new Va(ce.paint_raster["raster-opacity"]),"raster-hue-rotate":new Va(ce.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new Va(ce.paint_raster["raster-brightness-min"]),"raster-brightness-max":new Va(ce.paint_raster["raster-brightness-max"]),"raster-saturation":new Va(ce.paint_raster["raster-saturation"]),"raster-contrast":new Va(ce.paint_raster["raster-contrast"]),"raster-resampling":new Va(ce.paint_raster["raster-resampling"]),"raster-fade-duration":new Va(ce.paint_raster["raster-fade-duration"])})}};class ob extends B{constructor(A){super(A,zC)}}class mS extends B{constructor(A){super(A,{}),this.onAdd=F=>{this.implementation.onAdd&&this.implementation.onAdd(F,F.painter.context.gl)},this.onRemove=F=>{this.implementation.onRemove&&this.implementation.onRemove(F,F.painter.context.gl)},this.implementation=A}is3D(){return this.implementation.renderingMode==="3d"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}class yS{constructor(A){this._methodToThrottle=A,this._triggered=!1,typeof MessageChannel!="undefined"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._methodToThrottle()},0))}remove(){delete this._channel,this._methodToThrottle=()=>{}}}let _S=63710088e-1;class pg{constructor(A,F){if(isNaN(A)||isNaN(F))throw new Error(`Invalid LngLat object: (${A}, ${F})`);if(this.lng=+A,this.lat=+F,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new pg(T(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(A){let F=Math.PI/180,W=this.lat*F,te=A.lat*F,fe=Math.sin(W)*Math.sin(te)+Math.cos(W)*Math.cos(te)*Math.cos((A.lng-this.lng)*F);return _S*Math.acos(Math.min(fe,1))}static convert(A){if(A instanceof pg)return A;if(Array.isArray(A)&&(A.length===2||A.length===3))return new pg(Number(A[0]),Number(A[1]));if(!Array.isArray(A)&&typeof A=="object"&&A!==null)return new pg(Number("lng"in A?A.lng:A.lon),Number(A.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}let D1=2*Math.PI*_S;function qC(R){return D1*Math.cos(R*Math.PI/180)}function Zw(R){return(180+R)/360}function OC(R){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+R*Math.PI/360)))/360}function Yw(R,A){return R/qC(A)}function sb(R){return 360/Math.PI*Math.atan(Math.exp((180-360*R)*Math.PI/180))-90}class lb{constructor(A,F,W=0){this.x=+A,this.y=+F,this.z=+W}static fromLngLat(A,F=0){let W=pg.convert(A);return new lb(Zw(W.lng),OC(W.lat),Yw(F,W.lat))}toLngLat(){return new pg(360*this.x-180,sb(this.y))}toAltitude(){return this.z*qC(sb(this.y))}meterInMercatorCoordinateUnits(){return 1/D1*(A=sb(this.y),1/Math.cos(A*Math.PI/180));var A}}function yp(R,A,F){var W=2*Math.PI*6378137/256/Math.pow(2,F);return[R*W-2*Math.PI*6378137/2,A*W-2*Math.PI*6378137/2]}class xS{constructor(A,F,W){if(!function(te,fe,pe){return!(te<0||te>25||pe<0||pe>=Math.pow(2,te)||fe<0||fe>=Math.pow(2,te))}(A,F,W))throw new Error(`x=${F}, y=${W}, z=${A} outside of bounds. 0<=x<${Math.pow(2,A)}, 0<=y<${Math.pow(2,A)} 0<=z<=25 `);this.z=A,this.x=F,this.y=W,this.key=ub(0,A,A,F,W)}equals(A){return this.z===A.z&&this.x===A.x&&this.y===A.y}url(A,F,W){let te=(pe=this.y,Re=this.z,Ke=yp(256*(fe=this.x),256*(pe=Math.pow(2,Re)-pe-1),Re),ft=yp(256*(fe+1),256*(pe+1),Re),Ke[0]+","+Ke[1]+","+ft[0]+","+ft[1]);var fe,pe,Re,Ke,ft;let Rt=function(er,ur,vr){let kr,Dr="";for(let li=er;li>0;li--)kr=1<1?"@2x":"").replace(/{quadkey}/g,Rt).replace(/{bbox-epsg-3857}/g,te)}isChildOf(A){let F=this.z-A.z;return F>0&&A.x===this.x>>F&&A.y===this.y>>F}getTilePoint(A){let F=Math.pow(2,this.z);return new u((A.x*F-this.x)*ja,(A.y*F-this.y)*ja)}toString(){return`${this.z}/${this.x}/${this.y}`}}class BC{constructor(A,F){this.wrap=A,this.canonical=F,this.key=ub(A,F.z,F.z,F.x,F.y)}}class $v{constructor(A,F,W,te,fe){if(A= z; overscaledZ = ${A}; z = ${W}`);this.overscaledZ=A,this.wrap=F,this.canonical=new xS(W,+te,+fe),this.key=ub(F,A,W,te,fe)}clone(){return new $v(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(A){return this.overscaledZ===A.overscaledZ&&this.wrap===A.wrap&&this.canonical.equals(A.canonical)}scaledTo(A){if(A>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${A}; overscaledZ = ${this.overscaledZ}`);let F=this.canonical.z-A;return A>this.canonical.z?new $v(A,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new $v(A,this.wrap,A,this.canonical.x>>F,this.canonical.y>>F)}calculateScaledKey(A,F){if(A>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${A}; overscaledZ = ${this.overscaledZ}`);let W=this.canonical.z-A;return A>this.canonical.z?ub(this.wrap*+F,A,this.canonical.z,this.canonical.x,this.canonical.y):ub(this.wrap*+F,A,A,this.canonical.x>>W,this.canonical.y>>W)}isChildOf(A){if(A.wrap!==this.wrap)return!1;let F=this.canonical.z-A.canonical.z;return A.overscaledZ===0||A.overscaledZ>F&&A.canonical.y===this.canonical.y>>F}children(A){if(this.overscaledZ>=A)return[new $v(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let F=this.canonical.z+1,W=2*this.canonical.x,te=2*this.canonical.y;return[new $v(F,this.wrap,F,W,te),new $v(F,this.wrap,F,W+1,te),new $v(F,this.wrap,F,W,te+1),new $v(F,this.wrap,F,W+1,te+1)]}isLessThan(A){return this.wrapA.wrap)&&(this.overscaledZA.overscaledZ)&&(this.canonical.xA.canonical.x)&&this.canonical.ythis.max&&(this.max=er),er=this.dim+1||F<-1||F>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(F+1)*this.stride+(A+1)}unpack(A,F,W){return A*this.redFactor+F*this.greenFactor+W*this.blueFactor-this.baseShift}getPixels(){return new Ki({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(A,F,W){if(this.dim!==A.dim)throw new Error("dem dimension mismatch");let te=F*this.dim,fe=F*this.dim+this.dim,pe=W*this.dim,Re=W*this.dim+this.dim;switch(F){case-1:te=fe-1;break;case 1:fe=te+1}switch(W){case-1:pe=Re-1;break;case 1:Re=pe+1}let Ke=-F*this.dim,ft=-W*this.dim;for(let Rt=pe;Rt=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${A} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[A]}}class bS{constructor(A,F,W,te,fe){this.type="Feature",this._vectorTileFeature=A,A._z=F,A._x=W,A._y=te,this.properties=A.properties,this.id=fe}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(A){this._geometry=A}toJSON(){let A={geometry:this.geometry};for(let F in this)F!=="_geometry"&&F!=="_vectorTileFeature"&&(A[F]=this[F]);return A}}class yy{constructor(A,F){this.tileID=A,this.x=A.canonical.x,this.y=A.canonical.y,this.z=A.canonical.z,this.grid=new $i(ja,16,0),this.grid3D=new $i(ja,16,0),this.featureIndexArray=new Ts,this.promoteId=F}insert(A,F,W,te,fe,pe){let Re=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(W,te,fe);let Ke=pe?this.grid3D:this.grid;for(let ft=0;ft=0&&er[3]>=0&&Ke.insert(Re,er[0],er[1],er[2],er[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new _r.VectorTile(new uS(this.rawTileData)).layers,this.sourceLayerCoder=new UC(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(A,F,W,te){this.loadVTLayers();let fe=A.params||{},pe=ja/A.tileSize/A.scale,Re=Fc(fe.filter),Ke=A.queryGeometry,ft=A.queryPadding*pe,Rt=GC(Ke),er=this.grid.query(Rt.minX-ft,Rt.minY-ft,Rt.maxX+ft,Rt.maxY+ft),ur=GC(A.cameraQueryGeometry),vr=this.grid3D.query(ur.minX-ft,ur.minY-ft,ur.maxX+ft,ur.maxY+ft,(li,pi,vn,zi)=>function(ln,Tn,pa,ro,Vo){for(let la of ln)if(Tn<=la.x&&pa<=la.y&&ro>=la.x&&Vo>=la.y)return!0;let Xa=[new u(Tn,pa),new u(Tn,Vo),new u(ro,Vo),new u(ro,pa)];if(ln.length>2){for(let la of Xa)if(Ni(ln,la))return!0}for(let la=0;la(zi||(zi=$s(ln)),Tn.queryIntersectsFeature(Ke,ln,pa,zi,this.z,A.transform,pe,A.pixelPosMatrix)))}return kr}loadMatchingFeature(A,F,W,te,fe,pe,Re,Ke,ft,Rt,er){let ur=this.bucketLayerIDs[F];if(pe&&!function(li,pi){for(let vn=0;vn=0)return!0;return!1}(pe,ur))return;let vr=this.sourceLayerCoder.decode(W),kr=this.vtLayers[vr].feature(te);if(fe.needGeometry){let li=Sl(kr,!0);if(!fe.filter(new rs(this.tileID.overscaledZ),li,this.tileID.canonical))return}else if(!fe.filter(new rs(this.tileID.overscaledZ),kr))return;let Dr=this.getId(kr,vr);for(let li=0;li{let Re=A instanceof Ac?A.get(pe):null;return Re&&Re.evaluate?Re.evaluate(F,W,te):Re})}function GC(R){let A=1/0,F=1/0,W=-1/0,te=-1/0;for(let fe of R)A=Math.min(A,fe.x),F=Math.min(F,fe.y),W=Math.max(W,fe.x),te=Math.max(te,fe.y);return{minX:A,minY:F,maxX:W,maxY:te}}function nq(R,A){return A-R}function HC(R,A,F,W,te){let fe=[];for(let pe=0;pe=W&&er.x>=W||(Rt.x>=W?Rt=new u(W,Rt.y+(W-Rt.x)/(er.x-Rt.x)*(er.y-Rt.y))._round():er.x>=W&&(er=new u(W,Rt.y+(W-Rt.x)/(er.x-Rt.x)*(er.y-Rt.y))._round()),Rt.y>=te&&er.y>=te||(Rt.y>=te?Rt=new u(Rt.x+(te-Rt.y)/(er.y-Rt.y)*(er.x-Rt.x),te)._round():er.y>=te&&(er=new u(Rt.x+(te-Rt.y)/(er.y-Rt.y)*(er.x-Rt.x),te)._round()),Ke&&Rt.equals(Ke[Ke.length-1])||(Ke=[Rt],fe.push(Ke)),Ke.push(er)))))}}return fe}Fi("FeatureIndex",yy,{omit:["rawTileData","sourceLayerCoder"]});class gg extends u{constructor(A,F,W,te){super(A,F),this.angle=W,te!==void 0&&(this.segment=te)}clone(){return new gg(this.x,this.y,this.angle,this.segment)}}function wS(R,A,F,W,te){if(A.segment===void 0||F===0)return!0;let fe=A,pe=A.segment+1,Re=0;for(;Re>-F/2;){if(pe--,pe<0)return!1;Re-=R[pe].dist(fe),fe=R[pe]}Re+=R[pe].dist(R[pe+1]),pe++;let Ke=[],ft=0;for(;ReW;)ft-=Ke.shift().angleDelta;if(ft>te)return!1;pe++,Re+=Rt.dist(er)}return!0}function jC(R){let A=0;for(let F=0;Fft){let kr=(ft-Ke)/vr,Dr=Lo.number(er.x,ur.x,kr),li=Lo.number(er.y,ur.y,kr),pi=new gg(Dr,li,ur.angleTo(er),Rt);return pi._round(),!pe||wS(R,pi,Re,pe,A)?pi:void 0}Ke+=vr}}function oq(R,A,F,W,te,fe,pe,Re,Ke){let ft=WC(W,fe,pe),Rt=XC(W,te),er=Rt*pe,ur=R[0].x===0||R[0].x===Ke||R[0].y===0||R[0].y===Ke;return A-er=0&&ln=0&&Tn=0&&ur+ft<=Rt){let pa=new gg(ln,Tn,vn,kr);pa._round(),W&&!wS(R,pa,fe,W,te)||vr.push(pa)}}er+=pi}return Re||vr.length||pe||(vr=ZC(R,er/2,F,W,te,fe,pe,!0,Ke)),vr}Fi("Anchor",gg);let F1=Md;function YC(R,A,F,W){let te=[],fe=R.image,pe=fe.pixelRatio,Re=fe.paddedRect.w-2*F1,Ke=fe.paddedRect.h-2*F1,ft={x1:R.left,y1:R.top,x2:R.right,y2:R.bottom},Rt=fe.stretchX||[[0,Re]],er=fe.stretchY||[[0,Ke]],ur=(Wn,Ro)=>Wn+Ro[1]-Ro[0],vr=Rt.reduce(ur,0),kr=er.reduce(ur,0),Dr=Re-vr,li=Ke-kr,pi=0,vn=vr,zi=0,ln=kr,Tn=0,pa=Dr,ro=0,Vo=li;if(fe.content&&W){let Wn=fe.content,Ro=Wn[2]-Wn[0],uo=Wn[3]-Wn[1];(fe.textFitWidth||fe.textFitHeight)&&(ft=IC(R)),pi=mg(Rt,0,Wn[0]),zi=mg(er,0,Wn[1]),vn=mg(Rt,Wn[0],Wn[2]),ln=mg(er,Wn[1],Wn[3]),Tn=Wn[0]-pi,ro=Wn[1]-zi,pa=Ro-vn,Vo=uo-ln}let Xa=ft.x1,la=ft.y1,Mo=ft.x2-Xa,fo=ft.y2-la,lo=(Wn,Ro,uo,$o)=>{let Ju=Kw(Wn.stretch-pi,vn,Mo,Xa),Ou=z1(Wn.fixed-Tn,pa,Wn.stretch,vr),kh=Kw(Ro.stretch-zi,ln,fo,la),Qv=z1(Ro.fixed-ro,Vo,Ro.stretch,kr),ud=Kw(uo.stretch-pi,vn,Mo,Xa),Ch=z1(uo.fixed-Tn,pa,uo.stretch,vr),Gd=Kw($o.stretch-zi,ln,fo,la),Hd=z1($o.fixed-ro,Vo,$o.stretch,kr),jd=new u(Ju,kh),Af=new u(ud,kh),Lh=new u(ud,Gd),Ed=new u(Ju,Gd),cd=new u(Ou/pe,Qv/pe),Yh=new u(Ch/pe,Hd/pe),Df=A*Math.PI/180;if(Df){let ru=Math.sin(Df),pc=Math.cos(Df),$u=[pc,-ru,ru,pc];jd._matMult($u),Af._matMult($u),Ed._matMult($u),Lh._matMult($u)}let Fv=Wn.stretch+Wn.fixed,uv=Ro.stretch+Ro.fixed;return{tl:jd,tr:Af,bl:Ed,br:Lh,tex:{x:fe.paddedRect.x+F1+Fv,y:fe.paddedRect.y+F1+uv,w:uo.stretch+uo.fixed-Fv,h:$o.stretch+$o.fixed-uv},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:cd,pixelOffsetBR:Yh,minFontScaleX:pa/pe/Mo,minFontScaleY:Vo/pe/fo,isSDF:F}};if(W&&(fe.stretchX||fe.stretchY)){let Wn=KC(Rt,Dr,vr),Ro=KC(er,li,kr);for(let uo=0;uo0&&(Dr=Math.max(10,Dr),this.circleDiameter=Dr)}else{let ur=!((er=pe.image)===null||er===void 0)&&er.content&&(pe.image.textFitWidth||pe.image.textFitHeight)?IC(pe):{x1:pe.left,y1:pe.top,x2:pe.right,y2:pe.bottom};ur.y1=ur.y1*Re-Ke[0],ur.y2=ur.y2*Re+Ke[2],ur.x1=ur.x1*Re-Ke[3],ur.x2=ur.x2*Re+Ke[1];let vr=pe.collisionPadding;if(vr&&(ur.x1-=vr[0]*Re,ur.y1-=vr[1]*Re,ur.x2+=vr[2]*Re,ur.y2+=vr[3]*Re),Rt){let kr=new u(ur.x1,ur.y1),Dr=new u(ur.x2,ur.y1),li=new u(ur.x1,ur.y2),pi=new u(ur.x2,ur.y2),vn=Rt*Math.PI/180;kr._rotate(vn),Dr._rotate(vn),li._rotate(vn),pi._rotate(vn),ur.x1=Math.min(kr.x,Dr.x,li.x,pi.x),ur.x2=Math.max(kr.x,Dr.x,li.x,pi.x),ur.y1=Math.min(kr.y,Dr.y,li.y,pi.y),ur.y2=Math.max(kr.y,Dr.y,li.y,pi.y)}A.emplaceBack(F.x,F.y,ur.x1,ur.y1,ur.x2,ur.y2,W,te,fe)}this.boxEndIndex=A.length}}class Vp{constructor(A=[],F=(W,te)=>Wte?1:0){if(this.data=A,this.length=this.data.length,this.compare=F,this.length>0)for(let W=(this.length>>1)-1;W>=0;W--)this._down(W)}push(A){this.data.push(A),this._up(this.length++)}pop(){if(this.length===0)return;let A=this.data[0],F=this.data.pop();return--this.length>0&&(this.data[0]=F,this._down(0)),A}peek(){return this.data[0]}_up(A){let{data:F,compare:W}=this,te=F[A];for(;A>0;){let fe=A-1>>1,pe=F[fe];if(W(te,pe)>=0)break;F[A]=pe,A=fe}F[A]=te}_down(A){let{data:F,compare:W}=this,te=this.length>>1,fe=F[A];for(;A=0)break;F[A]=F[pe],A=pe}F[A]=fe}}function sq(R,A=1,F=!1){let W=1/0,te=1/0,fe=-1/0,pe=-1/0,Re=R[0];for(let vr=0;vrfe)&&(fe=kr.x),(!vr||kr.y>pe)&&(pe=kr.y)}let Ke=Math.min(fe-W,pe-te),ft=Ke/2,Rt=new Vp([],lq);if(Ke===0)return new u(W,te);for(let vr=W;vrer.d||!er.d)&&(er=vr,F&&console.log("found best %d after %d probes",Math.round(1e4*vr.d)/1e4,ur)),vr.max-er.d<=A||(ft=vr.h/2,Rt.push(new q1(vr.p.x-ft,vr.p.y-ft,ft,R)),Rt.push(new q1(vr.p.x+ft,vr.p.y-ft,ft,R)),Rt.push(new q1(vr.p.x-ft,vr.p.y+ft,ft,R)),Rt.push(new q1(vr.p.x+ft,vr.p.y+ft,ft,R)),ur+=4)}return F&&(console.log(`num probes: ${ur}`),console.log(`best distance: ${er.d}`)),er.p}function lq(R,A){return A.max-R.max}function q1(R,A,F,W){this.p=new u(R,A),this.h=F,this.d=function(te,fe){let pe=!1,Re=1/0;for(let Ke=0;Kete.y!=kr.y>te.y&&te.x<(kr.x-vr.x)*(te.y-vr.y)/(kr.y-vr.y)+vr.x&&(pe=!pe),Re=Math.min(Re,Nr(te,vr,kr))}}return(pe?1:-1)*Math.sqrt(Re)}(this.p,W),this.max=this.d+this.h*Math.SQRT2}var ld;i.aq=void 0,(ld=i.aq||(i.aq={}))[ld.center=1]="center",ld[ld.left=2]="left",ld[ld.right=3]="right",ld[ld.top=4]="top",ld[ld.bottom=5]="bottom",ld[ld["top-left"]=6]="top-left",ld[ld["top-right"]=7]="top-right",ld[ld["bottom-left"]=8]="bottom-left",ld[ld["bottom-right"]=9]="bottom-right";let vm=7,_y=Number.POSITIVE_INFINITY;function TS(R,A){return A[1]!==_y?function(F,W,te){let fe=0,pe=0;switch(W=Math.abs(W),te=Math.abs(te),F){case"top-right":case"top-left":case"top":pe=te-vm;break;case"bottom-right":case"bottom-left":case"bottom":pe=-te+vm}switch(F){case"top-right":case"bottom-right":case"right":fe=-W;break;case"top-left":case"bottom-left":case"left":fe=W}return[fe,pe]}(R,A[0],A[1]):function(F,W){let te=0,fe=0;W<0&&(W=0);let pe=W/Math.SQRT2;switch(F){case"top-right":case"top-left":fe=pe-vm;break;case"bottom-right":case"bottom-left":fe=-pe+vm;break;case"bottom":fe=-W+vm;break;case"top":fe=W-vm}switch(F){case"top-right":case"bottom-right":te=-pe;break;case"top-left":case"bottom-left":te=pe;break;case"left":te=W;break;case"right":te=-W}return[te,fe]}(R,A[0])}function JC(R,A,F){var W;let te=R.layout,fe=(W=te.get("text-variable-anchor-offset"))===null||W===void 0?void 0:W.evaluate(A,{},F);if(fe){let Re=fe.values,Ke=[];for(let ft=0;ftur*tu);Rt.startsWith("top")?er[1]-=vm:Rt.startsWith("bottom")&&(er[1]+=vm),Ke[ft+1]=er}return new Zi(Ke)}let pe=te.get("text-variable-anchor");if(pe){let Re;Re=R._unevaluatedLayout.getValue("text-radial-offset")!==void 0?[te.get("text-radial-offset").evaluate(A,{},F)*tu,_y]:te.get("text-offset").evaluate(A,{},F).map(ft=>ft*tu);let Ke=[];for(let ft of pe)Ke.push(ft,TS(ft,Re));return new Zi(Ke)}return null}function AS(R){switch(R){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function uq(R,A,F,W,te,fe,pe,Re,Ke,ft,Rt){let er=fe.textMaxSize.evaluate(A,{});er===void 0&&(er=pe);let ur=R.layers[0].layout,vr=ur.get("icon-offset").evaluate(A,{},Rt),kr=QC(F.horizontal),Dr=pe/24,li=R.tilePixelRatio*Dr,pi=R.tilePixelRatio*er/24,vn=R.tilePixelRatio*Re,zi=R.tilePixelRatio*ur.get("symbol-spacing"),ln=ur.get("text-padding")*R.tilePixelRatio,Tn=function(Wn,Ro,uo,$o=1){let Ju=Wn.get("icon-padding").evaluate(Ro,{},uo),Ou=Ju&&Ju.values;return[Ou[0]*$o,Ou[1]*$o,Ou[2]*$o,Ou[3]*$o]}(ur,A,Rt,R.tilePixelRatio),pa=ur.get("text-max-angle")/180*Math.PI,ro=ur.get("text-rotation-alignment")!=="viewport"&&ur.get("symbol-placement")!=="point",Vo=ur.get("icon-rotation-alignment")==="map"&&ur.get("symbol-placement")!=="point",Xa=ur.get("symbol-placement"),la=zi/2,Mo=ur.get("icon-text-fit"),fo;W&&Mo!=="none"&&(R.allowVerticalPlacement&&F.vertical&&(fo=RC(W,F.vertical,Mo,ur.get("icon-text-fit-padding"),vr,Dr)),kr&&(W=RC(W,kr,Mo,ur.get("icon-text-fit-padding"),vr,Dr)));let lo=(Wn,Ro)=>{Ro.x<0||Ro.x>=ja||Ro.y<0||Ro.y>=ja||function(uo,$o,Ju,Ou,kh,Qv,ud,Ch,Gd,Hd,jd,Af,Lh,Ed,cd,Yh,Df,Fv,uv,ru,pc,$u,zv,hf,O1){let p0=uo.addToLineVertexArray($o,Ju),Gp,ep,Gc,Yf,tp=0,yg=0,cv=0,B1=0,CS=-1,e3=-1,g0={},xy=xi("");if(uo.allowVerticalPlacement&&Ou.vertical){let kd=Ch.layout.get("text-rotate").evaluate(pc,{},hf)+90;Gc=new dm(Gd,$o,Hd,jd,Af,Ou.vertical,Lh,Ed,cd,kd),ud&&(Yf=new dm(Gd,$o,Hd,jd,Af,ud,Df,Fv,cd,kd))}if(kh){let kd=Ch.layout.get("icon-rotate").evaluate(pc,{}),rp=Ch.layout.get("icon-text-fit")!=="none",pm=YC(kh,kd,zv,rp),Wd=ud?YC(ud,kd,zv,rp):void 0;ep=new dm(Gd,$o,Hd,jd,Af,kh,Df,Fv,!1,kd),tp=4*pm.length;let Cd=uo.iconSizeData,xp=null;Cd.kind==="source"?(xp=[v0*Ch.layout.get("icon-size").evaluate(pc,{})],xp[0]>fm&&E(`${uo.layerIds[0]}: Value for "icon-size" is >= ${rb}. Reduce your "icon-size".`)):Cd.kind==="composite"&&(xp=[v0*$u.compositeIconSizes[0].evaluate(pc,{},hf),v0*$u.compositeIconSizes[1].evaluate(pc,{},hf)],(xp[0]>fm||xp[1]>fm)&&E(`${uo.layerIds[0]}: Value for "icon-size" is >= ${rb}. Reduce your "icon-size".`)),uo.addSymbols(uo.icon,pm,xp,ru,uv,pc,i.ah.none,$o,p0.lineStartIndex,p0.lineLength,-1,hf),CS=uo.icon.placedSymbolArray.length-1,Wd&&(yg=4*Wd.length,uo.addSymbols(uo.icon,Wd,xp,ru,uv,pc,i.ah.vertical,$o,p0.lineStartIndex,p0.lineLength,-1,hf),e3=uo.icon.placedSymbolArray.length-1)}let Kh=Object.keys(Ou.horizontal);for(let kd of Kh){let rp=Ou.horizontal[kd];if(!Gp){xy=xi(rp.text);let Wd=Ch.layout.get("text-rotate").evaluate(pc,{},hf);Gp=new dm(Gd,$o,Hd,jd,Af,rp,Lh,Ed,cd,Wd)}let pm=rp.positionedLines.length===1;if(cv+=$C(uo,$o,rp,Qv,Ch,cd,pc,Yh,p0,Ou.vertical?i.ah.horizontal:i.ah.horizontalOnly,pm?Kh:[kd],g0,CS,$u,hf),pm)break}Ou.vertical&&(B1+=$C(uo,$o,Ou.vertical,Qv,Ch,cd,pc,Yh,p0,i.ah.vertical,["vertical"],g0,e3,$u,hf));let hq=Gp?Gp.boxStartIndex:uo.collisionBoxArray.length,t3=Gp?Gp.boxEndIndex:uo.collisionBoxArray.length,m0=Gc?Gc.boxStartIndex:uo.collisionBoxArray.length,fv=Gc?Gc.boxEndIndex:uo.collisionBoxArray.length,i6=ep?ep.boxStartIndex:uo.collisionBoxArray.length,dq=ep?ep.boxEndIndex:uo.collisionBoxArray.length,n6=Yf?Yf.boxStartIndex:uo.collisionBoxArray.length,vq=Yf?Yf.boxEndIndex:uo.collisionBoxArray.length,_p=-1,hb=(kd,rp)=>kd&&kd.circleDiameter?Math.max(kd.circleDiameter,rp):rp;_p=hb(Gp,_p),_p=hb(Gc,_p),_p=hb(ep,_p),_p=hb(Yf,_p);let r3=_p>-1?1:0;r3&&(_p*=O1/tu),uo.glyphOffsetArray.length>=R1.MAX_GLYPHS&&E("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),pc.sortKey!==void 0&&uo.addToSortKeyRanges(uo.symbolInstances.length,pc.sortKey);let LS=JC(Ch,pc,hf),[pq,gq]=function(kd,rp){let pm=kd.length,Wd=rp==null?void 0:rp.values;if((Wd==null?void 0:Wd.length)>0)for(let Cd=0;Cd=0?g0.right:-1,g0.center>=0?g0.center:-1,g0.left>=0?g0.left:-1,g0.vertical||-1,CS,e3,xy,hq,t3,m0,fv,i6,dq,n6,vq,Hd,cv,B1,tp,yg,r3,0,Lh,_p,pq,gq)}(R,Ro,Wn,F,W,te,fo,R.layers[0],R.collisionBoxArray,A.index,A.sourceLayerIndex,R.index,li,[ln,ln,ln,ln],ro,Ke,vn,Tn,Vo,vr,A,fe,ft,Rt,pe)};if(Xa==="line")for(let Wn of HC(A.geometry,0,0,ja,ja)){let Ro=oq(Wn,zi,pa,F.vertical||kr,W,24,pi,R.overscaling,ja);for(let uo of Ro)kr&&cq(R,kr.text,la,uo)||lo(Wn,uo)}else if(Xa==="line-center"){for(let Wn of A.geometry)if(Wn.length>1){let Ro=aq(Wn,pa,F.vertical||kr,W,24,pi);Ro&&lo(Wn,Ro)}}else if(A.type==="Polygon")for(let Wn of Cf(A.geometry,0)){let Ro=sq(Wn,16);lo(Wn[0],new gg(Ro.x,Ro.y,0))}else if(A.type==="LineString")for(let Wn of A.geometry)lo(Wn,new gg(Wn[0].x,Wn[0].y,0));else if(A.type==="Point")for(let Wn of A.geometry)for(let Ro of Wn)lo([Ro],new gg(Ro.x,Ro.y,0))}function $C(R,A,F,W,te,fe,pe,Re,Ke,ft,Rt,er,ur,vr,kr){let Dr=function(vn,zi,ln,Tn,pa,ro,Vo,Xa){let la=Tn.layout.get("text-rotate").evaluate(ro,{})*Math.PI/180,Mo=[];for(let fo of zi.positionedLines)for(let lo of fo.positionedGlyphs){if(!lo.rect)continue;let Wn=lo.rect||{},Ro=kC+1,uo=!0,$o=1,Ju=0,Ou=(pa||Xa)&&lo.vertical,kh=lo.metrics.advance*lo.scale/2;if(Xa&&zi.verticalizable&&(Ju=fo.lineOffset/2-(lo.imageName?-(tu-lo.metrics.width*lo.scale)/2:(lo.scale-1)*tu)),lo.imageName){let ru=Vo[lo.imageName];uo=ru.sdf,$o=ru.pixelRatio,Ro=Md/$o}let Qv=pa?[lo.x+kh,lo.y]:[0,0],ud=pa?[0,0]:[lo.x+kh+ln[0],lo.y+ln[1]-Ju],Ch=[0,0];Ou&&(Ch=ud,ud=[0,0]);let Gd=lo.metrics.isDoubleResolution?2:1,Hd=(lo.metrics.left-Ro)*lo.scale-kh+ud[0],jd=(-lo.metrics.top-Ro)*lo.scale+ud[1],Af=Hd+Wn.w/Gd*lo.scale/$o,Lh=jd+Wn.h/Gd*lo.scale/$o,Ed=new u(Hd,jd),cd=new u(Af,jd),Yh=new u(Hd,Lh),Df=new u(Af,Lh);if(Ou){let ru=new u(-kh,kh-Eh),pc=-Math.PI/2,$u=tu/2-kh,zv=new u(5-Eh-$u,-(lo.imageName?$u:0)),hf=new u(...Ch);Ed._rotateAround(pc,ru)._add(zv)._add(hf),cd._rotateAround(pc,ru)._add(zv)._add(hf),Yh._rotateAround(pc,ru)._add(zv)._add(hf),Df._rotateAround(pc,ru)._add(zv)._add(hf)}if(la){let ru=Math.sin(la),pc=Math.cos(la),$u=[pc,-ru,ru,pc];Ed._matMult($u),cd._matMult($u),Yh._matMult($u),Df._matMult($u)}let Fv=new u(0,0),uv=new u(0,0);Mo.push({tl:Ed,tr:cd,bl:Yh,br:Df,tex:Wn,writingMode:zi.writingMode,glyphOffset:Qv,sectionIndex:lo.sectionIndex,isSDF:uo,pixelOffsetTL:Fv,pixelOffsetBR:uv,minFontScaleX:0,minFontScaleY:0})}return Mo}(0,F,Re,te,fe,pe,W,R.allowVerticalPlacement),li=R.textSizeData,pi=null;li.kind==="source"?(pi=[v0*te.layout.get("text-size").evaluate(pe,{})],pi[0]>fm&&E(`${R.layerIds[0]}: Value for "text-size" is >= ${rb}. Reduce your "text-size".`)):li.kind==="composite"&&(pi=[v0*vr.compositeTextSizes[0].evaluate(pe,{},kr),v0*vr.compositeTextSizes[1].evaluate(pe,{},kr)],(pi[0]>fm||pi[1]>fm)&&E(`${R.layerIds[0]}: Value for "text-size" is >= ${rb}. Reduce your "text-size".`)),R.addSymbols(R.text,Dr,pi,Re,fe,pe,ft,A,Ke.lineStartIndex,Ke.lineLength,ur,kr);for(let vn of Rt)er[vn]=R.text.placedSymbolArray.length-1;return 4*Dr.length}function QC(R){for(let A in R)return R[A];return null}function cq(R,A,F,W){let te=R.compareText;if(A in te){let fe=te[A];for(let pe=fe.length-1;pe>=0;pe--)if(W.dist(fe[pe])>4;if(te!==1)throw new Error(`Got v${te} data when expected v1.`);let fe=e6[15&W];if(!fe)throw new Error("Unrecognized array type.");let[pe]=new Uint16Array(A,2,1),[Re]=new Uint32Array(A,4,1);return new SS(Re,pe,fe,A)}constructor(A,F=64,W=Float64Array,te){if(isNaN(A)||A<0)throw new Error(`Unpexpected numItems value: ${A}.`);this.numItems=+A,this.nodeSize=Math.min(Math.max(+F,2),65535),this.ArrayType=W,this.IndexArrayType=A<65536?Uint16Array:Uint32Array;let fe=e6.indexOf(this.ArrayType),pe=2*A*this.ArrayType.BYTES_PER_ELEMENT,Re=A*this.IndexArrayType.BYTES_PER_ELEMENT,Ke=(8-Re%8)%8;if(fe<0)throw new Error(`Unexpected typed array class: ${W}.`);te&&te instanceof ArrayBuffer?(this.data=te,this.ids=new this.IndexArrayType(this.data,8,A),this.coords=new this.ArrayType(this.data,8+Re+Ke,2*A),this._pos=2*A,this._finished=!0):(this.data=new ArrayBuffer(8+pe+Re+Ke),this.ids=new this.IndexArrayType(this.data,8,A),this.coords=new this.ArrayType(this.data,8+Re+Ke,2*A),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+fe]),new Uint16Array(this.data,2,1)[0]=F,new Uint32Array(this.data,4,1)[0]=A)}add(A,F){let W=this._pos>>1;return this.ids[W]=W,this.coords[this._pos++]=A,this.coords[this._pos++]=F,W}finish(){let A=this._pos>>1;if(A!==this.numItems)throw new Error(`Added ${A} items when expected ${this.numItems}.`);return Jw(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(A,F,W,te){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:fe,coords:pe,nodeSize:Re}=this,Ke=[0,fe.length-1,0],ft=[];for(;Ke.length;){let Rt=Ke.pop()||0,er=Ke.pop()||0,ur=Ke.pop()||0;if(er-ur<=Re){for(let li=ur;li<=er;li++){let pi=pe[2*li],vn=pe[2*li+1];pi>=A&&pi<=W&&vn>=F&&vn<=te&&ft.push(fe[li])}continue}let vr=ur+er>>1,kr=pe[2*vr],Dr=pe[2*vr+1];kr>=A&&kr<=W&&Dr>=F&&Dr<=te&&ft.push(fe[vr]),(Rt===0?A<=kr:F<=Dr)&&(Ke.push(ur),Ke.push(vr-1),Ke.push(1-Rt)),(Rt===0?W>=kr:te>=Dr)&&(Ke.push(vr+1),Ke.push(er),Ke.push(1-Rt))}return ft}within(A,F,W){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:te,coords:fe,nodeSize:pe}=this,Re=[0,te.length-1,0],Ke=[],ft=W*W;for(;Re.length;){let Rt=Re.pop()||0,er=Re.pop()||0,ur=Re.pop()||0;if(er-ur<=pe){for(let li=ur;li<=er;li++)r6(fe[2*li],fe[2*li+1],A,F)<=ft&&Ke.push(te[li]);continue}let vr=ur+er>>1,kr=fe[2*vr],Dr=fe[2*vr+1];r6(kr,Dr,A,F)<=ft&&Ke.push(te[vr]),(Rt===0?A-W<=kr:F-W<=Dr)&&(Re.push(ur),Re.push(vr-1),Re.push(1-Rt)),(Rt===0?A+W>=kr:F+W>=Dr)&&(Re.push(vr+1),Re.push(er),Re.push(1-Rt))}return Ke}}function Jw(R,A,F,W,te,fe){if(te-W<=F)return;let pe=W+te>>1;t6(R,A,pe,W,te,fe),Jw(R,A,F,W,pe-1,1-fe),Jw(R,A,F,pe+1,te,1-fe)}function t6(R,A,F,W,te,fe){for(;te>W;){if(te-W>600){let ft=te-W+1,Rt=F-W+1,er=Math.log(ft),ur=.5*Math.exp(2*er/3),vr=.5*Math.sqrt(er*ur*(ft-ur)/ft)*(Rt-ft/2<0?-1:1);t6(R,A,F,Math.max(W,Math.floor(F-Rt*ur/ft+vr)),Math.min(te,Math.floor(F+(ft-Rt)*ur/ft+vr)),fe)}let pe=A[2*F+fe],Re=W,Ke=te;for(cb(R,A,W,F),A[2*te+fe]>pe&&cb(R,A,W,te);Repe;)Ke--}A[2*W+fe]===pe?cb(R,A,W,Ke):(Ke++,cb(R,A,Ke,te)),Ke<=F&&(W=Ke+1),F<=Ke&&(te=Ke-1)}}function cb(R,A,F,W){MS(R,F,W),MS(A,2*F,2*W),MS(A,2*F+1,2*W+1)}function MS(R,A,F){let W=R[A];R[A]=R[F],R[F]=W}function r6(R,A,F,W){let te=R-F,fe=A-W;return te*te+fe*fe}var $w;i.bg=void 0,($w=i.bg||(i.bg={})).create="create",$w.load="load",$w.fullLoad="fullLoad";let fb=null,sh=[],ES=1e3/60,kS="loadTime",Qw="fullLoadTime",fq={mark(R){performance.mark(R)},frame(R){let A=R;fb!=null&&sh.push(A-fb),fb=A},clearMetrics(){fb=null,sh=[],performance.clearMeasures(kS),performance.clearMeasures(Qw);for(let R in i.bg)performance.clearMarks(i.bg[R])},getPerformanceMetrics(){performance.measure(kS,i.bg.create,i.bg.load),performance.measure(Qw,i.bg.create,i.bg.fullLoad);let R=performance.getEntriesByName(kS)[0].duration,A=performance.getEntriesByName(Qw)[0].duration,F=sh.length,W=1/(sh.reduce((fe,pe)=>fe+pe,0)/F/1e3),te=sh.filter(fe=>fe>ES).reduce((fe,pe)=>fe+(pe-ES)/ES,0);return{loadTime:R,fullLoadTime:A,fps:W,percentDroppedFrames:te/(F+te)*100,totalFrames:F}}};i.$=class extends Jt{},i.A=yi,i.B=dn,i.C=function(R){if(V==null){let A=R.navigator?R.navigator.userAgent:null;V=!!R.safari||!(!A||!(/\b(iPad|iPhone|iPod)\b/.test(A)||A.match("Safari")&&!A.match("Chrome")))}return V},i.D=Va,i.E=Pe,i.F=class{constructor(R,A){this.target=R,this.mapId=A,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new yS(()=>this.process()),this.subscription=function(F,W,te,fe){return F.addEventListener(W,te,!1),{unsubscribe:()=>{F.removeEventListener(W,te,!1)}}}(this.target,"message",F=>this.receive(F)),this.globalScope=q(self)?R:window}registerMessageHandler(R,A){this.messageHandlers[R]=A}sendAsync(R,A){return new Promise((F,W)=>{let te=Math.round(1e18*Math.random()).toString(36).substring(0,10);this.resolveRejects[te]={resolve:F,reject:W},A&&A.signal.addEventListener("abort",()=>{delete this.resolveRejects[te];let Re={id:te,type:"",origin:location.origin,targetMapId:R.targetMapId,sourceMapId:this.mapId};this.target.postMessage(Re)},{once:!0});let fe=[],pe=Object.assign(Object.assign({},R),{id:te,sourceMapId:this.mapId,origin:location.origin,data:La(R.data,fe)});this.target.postMessage(pe,{transfer:fe})})}receive(R){let A=R.data,F=A.id;if(!(A.origin!=="file://"&&location.origin!=="file://"&&A.origin!=="resource://android"&&location.origin!=="resource://android"&&A.origin!==location.origin||A.targetMapId&&this.mapId!==A.targetMapId)){if(A.type===""){delete this.tasks[F];let W=this.abortControllers[F];return delete this.abortControllers[F],void(W&&W.abort())}if(q(self)||A.mustQueue)return this.tasks[F]=A,this.taskQueue.push(F),void this.invoker.trigger();this.processTask(F,A)}}process(){if(this.taskQueue.length===0)return;let R=this.taskQueue.shift(),A=this.tasks[R];delete this.tasks[R],this.taskQueue.length>0&&this.invoker.trigger(),A&&this.processTask(R,A)}processTask(R,A){return a(this,void 0,void 0,function*(){if(A.type===""){let te=this.resolveRejects[R];return delete this.resolveRejects[R],te?void(A.error?te.reject(Ua(A.error)):te.resolve(Ua(A.data))):void 0}if(!this.messageHandlers[A.type])return void this.completeTask(R,new Error(`Could not find a registered handler for ${A.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));let F=Ua(A.data),W=new AbortController;this.abortControllers[R]=W;try{let te=yield this.messageHandlers[A.type](A.sourceMapId,F,W);this.completeTask(R,null,te)}catch(te){this.completeTask(R,te)}})}completeTask(R,A,F){let W=[];delete this.abortControllers[R];let te={id:R,type:"",sourceMapId:this.mapId,origin:location.origin,error:A?La(A):null,data:La(F,W)};this.target.postMessage(te,{transfer:W})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}},i.G=Ce,i.H=function(){var R=new yi(16);return yi!=Float32Array&&(R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[11]=0,R[12]=0,R[13]=0,R[14]=0),R[0]=1,R[5]=1,R[10]=1,R[15]=1,R},i.I=Uw,i.J=function(R,A,F){var W,te,fe,pe,Re,Ke,ft,Rt,er,ur,vr,kr,Dr=F[0],li=F[1],pi=F[2];return A===R?(R[12]=A[0]*Dr+A[4]*li+A[8]*pi+A[12],R[13]=A[1]*Dr+A[5]*li+A[9]*pi+A[13],R[14]=A[2]*Dr+A[6]*li+A[10]*pi+A[14],R[15]=A[3]*Dr+A[7]*li+A[11]*pi+A[15]):(te=A[1],fe=A[2],pe=A[3],Re=A[4],Ke=A[5],ft=A[6],Rt=A[7],er=A[8],ur=A[9],vr=A[10],kr=A[11],R[0]=W=A[0],R[1]=te,R[2]=fe,R[3]=pe,R[4]=Re,R[5]=Ke,R[6]=ft,R[7]=Rt,R[8]=er,R[9]=ur,R[10]=vr,R[11]=kr,R[12]=W*Dr+Re*li+er*pi+A[12],R[13]=te*Dr+Ke*li+ur*pi+A[13],R[14]=fe*Dr+ft*li+vr*pi+A[14],R[15]=pe*Dr+Rt*li+kr*pi+A[15]),R},i.K=function(R,A,F){var W=F[0],te=F[1],fe=F[2];return R[0]=A[0]*W,R[1]=A[1]*W,R[2]=A[2]*W,R[3]=A[3]*W,R[4]=A[4]*te,R[5]=A[5]*te,R[6]=A[6]*te,R[7]=A[7]*te,R[8]=A[8]*fe,R[9]=A[9]*fe,R[10]=A[10]*fe,R[11]=A[11]*fe,R[12]=A[12],R[13]=A[13],R[14]=A[14],R[15]=A[15],R},i.L=ui,i.M=function(R,A){let F={};for(let W=0;W{let A=window.document.createElement("video");return A.muted=!0,new Promise(F=>{A.onloadstart=()=>{F(A)};for(let W of R){let te=window.document.createElement("source");ke(W)||(A.crossOrigin="Anonymous"),te.src=W,A.appendChild(te)}})},i.a4=function(){return x++},i.a5=Ln,i.a6=R1,i.a7=Fc,i.a8=Sl,i.a9=bS,i.aA=function(R){if(R.type==="custom")return new mS(R);switch(R.type){case"background":return new iq(R);case"circle":return new fi(R);case"fill":return new _t(R);case"fill-extrusion":return new Lv(R);case"heatmap":return new sa(R);case"hillshade":return new Zs(R);case"line":return new dy(R);case"raster":return new ob(R);case"symbol":return new my(R)}},i.aB=g,i.aC=function(R,A){if(!R)return[{command:"setStyle",args:[A]}];let F=[];try{if(!mt(R.version,A.version))return[{command:"setStyle",args:[A]}];mt(R.center,A.center)||F.push({command:"setCenter",args:[A.center]}),mt(R.zoom,A.zoom)||F.push({command:"setZoom",args:[A.zoom]}),mt(R.bearing,A.bearing)||F.push({command:"setBearing",args:[A.bearing]}),mt(R.pitch,A.pitch)||F.push({command:"setPitch",args:[A.pitch]}),mt(R.sprite,A.sprite)||F.push({command:"setSprite",args:[A.sprite]}),mt(R.glyphs,A.glyphs)||F.push({command:"setGlyphs",args:[A.glyphs]}),mt(R.transition,A.transition)||F.push({command:"setTransition",args:[A.transition]}),mt(R.light,A.light)||F.push({command:"setLight",args:[A.light]}),mt(R.terrain,A.terrain)||F.push({command:"setTerrain",args:[A.terrain]}),mt(R.sky,A.sky)||F.push({command:"setSky",args:[A.sky]}),mt(R.projection,A.projection)||F.push({command:"setProjection",args:[A.projection]});let W={},te=[];(function(pe,Re,Ke,ft){let Rt;for(Rt in Re=Re||{},pe=pe||{})Object.prototype.hasOwnProperty.call(pe,Rt)&&(Object.prototype.hasOwnProperty.call(Re,Rt)||ct(Rt,Ke,ft));for(Rt in Re)Object.prototype.hasOwnProperty.call(Re,Rt)&&(Object.prototype.hasOwnProperty.call(pe,Rt)?mt(pe[Rt],Re[Rt])||(pe[Rt].type==="geojson"&&Re[Rt].type==="geojson"&&Vt(pe,Re,Rt)?Ht(Ke,{command:"setGeoJSONSourceData",args:[Rt,Re[Rt].data]}):ar(Rt,Re,Ke,ft)):at(Rt,Re,Ke))})(R.sources,A.sources,te,W);let fe=[];R.layers&&R.layers.forEach(pe=>{"source"in pe&&W[pe.source]?F.push({command:"removeLayer",args:[pe.id]}):fe.push(pe)}),F=F.concat(te),function(pe,Re,Ke){Re=Re||[];let ft=(pe=pe||[]).map(tt),Rt=Re.map(tt),er=pe.reduce(je,{}),ur=Re.reduce(je,{}),vr=ft.slice(),kr=Object.create(null),Dr,li,pi,vn,zi;for(let ln=0,Tn=0;ln@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(F,W,te,fe)=>{let pe=te||fe;return A[W]=!pe||pe.toLowerCase(),""}),A["max-age"]){let F=parseInt(A["max-age"],10);isNaN(F)?delete A["max-age"]:A["max-age"]=F}return A},i.ab=function(R,A){let F=[];for(let W in R)W in A||F.push(W);return F},i.ac=M,i.ad=function(R,A,F){var W=Math.sin(F),te=Math.cos(F),fe=A[0],pe=A[1],Re=A[2],Ke=A[3],ft=A[4],Rt=A[5],er=A[6],ur=A[7];return A!==R&&(R[8]=A[8],R[9]=A[9],R[10]=A[10],R[11]=A[11],R[12]=A[12],R[13]=A[13],R[14]=A[14],R[15]=A[15]),R[0]=fe*te+ft*W,R[1]=pe*te+Rt*W,R[2]=Re*te+er*W,R[3]=Ke*te+ur*W,R[4]=ft*te-fe*W,R[5]=Rt*te-pe*W,R[6]=er*te-Re*W,R[7]=ur*te-Ke*W,R},i.ae=function(R){var A=new yi(16);return A[0]=R[0],A[1]=R[1],A[2]=R[2],A[3]=R[3],A[4]=R[4],A[5]=R[5],A[6]=R[6],A[7]=R[7],A[8]=R[8],A[9]=R[9],A[10]=R[10],A[11]=R[11],A[12]=R[12],A[13]=R[13],A[14]=R[14],A[15]=R[15],A},i.af=qn,i.ag=function(R,A){let F=0,W=0;if(R.kind==="constant")W=R.layoutSize;else if(R.kind!=="source"){let{interpolationType:te,minZoom:fe,maxZoom:pe}=R,Re=te?M(ko.interpolationFactor(te,A,fe,pe),0,1):0;R.kind==="camera"?W=Lo.number(R.minSize,R.maxSize,Re):F=Re}return{uSizeT:F,uSize:W}},i.ai=function(R,{uSize:A,uSizeT:F},{lowerSize:W,upperSize:te}){return R.kind==="source"?W/v0:R.kind==="composite"?Lo.number(W/v0,te/v0,F):A},i.aj=dS,i.ak=function(R,A,F,W){let te=A.y-R.y,fe=A.x-R.x,pe=W.y-F.y,Re=W.x-F.x,Ke=pe*fe-Re*te;if(Ke===0)return null;let ft=(Re*(R.y-F.y)-pe*(R.x-F.x))/Ke;return new u(R.x+ft*fe,R.y+ft*te)},i.al=HC,i.am=Sc,i.an=Ii,i.ao=function(R){let A=1/0,F=1/0,W=-1/0,te=-1/0;for(let fe of R)A=Math.min(A,fe.x),F=Math.min(F,fe.y),W=Math.max(W,fe.x),te=Math.max(te,fe.y);return[A,F,W,te]},i.ap=tu,i.ar=hS,i.as=function(R,A){var F=A[0],W=A[1],te=A[2],fe=A[3],pe=A[4],Re=A[5],Ke=A[6],ft=A[7],Rt=A[8],er=A[9],ur=A[10],vr=A[11],kr=A[12],Dr=A[13],li=A[14],pi=A[15],vn=F*Re-W*pe,zi=F*Ke-te*pe,ln=F*ft-fe*pe,Tn=W*Ke-te*Re,pa=W*ft-fe*Re,ro=te*ft-fe*Ke,Vo=Rt*Dr-er*kr,Xa=Rt*li-ur*kr,la=Rt*pi-vr*kr,Mo=er*li-ur*Dr,fo=er*pi-vr*Dr,lo=ur*pi-vr*li,Wn=vn*lo-zi*fo+ln*Mo+Tn*la-pa*Xa+ro*Vo;return Wn?(R[0]=(Re*lo-Ke*fo+ft*Mo)*(Wn=1/Wn),R[1]=(te*fo-W*lo-fe*Mo)*Wn,R[2]=(Dr*ro-li*pa+pi*Tn)*Wn,R[3]=(ur*pa-er*ro-vr*Tn)*Wn,R[4]=(Ke*la-pe*lo-ft*Xa)*Wn,R[5]=(F*lo-te*la+fe*Xa)*Wn,R[6]=(li*ln-kr*ro-pi*zi)*Wn,R[7]=(Rt*ro-ur*ln+vr*zi)*Wn,R[8]=(pe*fo-Re*la+ft*Vo)*Wn,R[9]=(W*la-F*fo-fe*Vo)*Wn,R[10]=(kr*pa-Dr*ln+pi*vn)*Wn,R[11]=(er*ln-Rt*pa-vr*vn)*Wn,R[12]=(Re*Xa-pe*Mo-Ke*Vo)*Wn,R[13]=(F*Mo-W*Xa+te*Vo)*Wn,R[14]=(Dr*zi-kr*Tn-li*vn)*Wn,R[15]=(Rt*Tn-er*zi+ur*vn)*Wn,R):null},i.at=AS,i.au=jw,i.av=SS,i.aw=function(){let R={},A=ce.$version;for(let F in ce.$root){let W=ce.$root[F];if(W.required){let te=null;te=F==="version"?A:W.type==="array"?[]:{},te!=null&&(R[F]=te)}}return R},i.ax=Zn,i.ay=re,i.az=function(R){R=R.slice();let A=Object.create(null);for(let F=0;F25||W<0||W>=1||F<0||F>=1)},i.bc=function(R,A){return R[0]=A[0],R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=A[1],R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=A[2],R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R},i.bd=class extends Mt{},i.be=_S,i.bf=fq,i.bh=ge,i.bi=function(R,A){_e.REGISTERED_PROTOCOLS[R]=A},i.bj=function(R){delete _e.REGISTERED_PROTOCOLS[R]},i.bk=function(R,A){let F={};for(let te=0;telo*tu)}let Xa=pe?"center":F.get("text-justify").evaluate(ft,{},R.canonical),la=F.get("symbol-placement")==="point"?F.get("text-max-width").evaluate(ft,{},R.canonical)*tu:1/0,Mo=()=>{R.bucket.allowVerticalPlacement&&Ka(ln)&&(kr.vertical=eb(Dr,R.glyphMap,R.glyphPositions,R.imagePositions,Rt,la,fe,ro,"left",pa,pi,i.ah.vertical,!0,ur,er))};if(!pe&&Vo){let fo=new Set;if(Xa==="auto")for(let Wn=0;Wna(void 0,void 0,void 0,function*(){if(R.byteLength===0)return createImageBitmap(new ImageData(1,1));let A=new Blob([new Uint8Array(R)],{type:"image/png"});try{return createImageBitmap(A)}catch(F){throw new Error(`Could not load image because of ${F.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}}),i.e=L,i.f=R=>new Promise((A,F)=>{let W=new Image;W.onload=()=>{A(W),URL.revokeObjectURL(W.src),W.onload=null,window.requestAnimationFrame(()=>{W.src=Z})},W.onerror=()=>F(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));let te=new Blob([new Uint8Array(R)],{type:"image/png"});W.src=R.byteLength?URL.createObjectURL(te):Z}),i.g=Ee,i.h=(R,A)=>Se(L(R,{type:"json"}),A),i.i=q,i.j=me,i.k=Le,i.l=(R,A)=>Se(L(R,{type:"arrayBuffer"}),A),i.m=Se,i.n=function(R){return new uS(R).readFields(BQ,[])},i.o=aa,i.p=fS,i.q=ue,i.r=Wi,i.s=ke,i.t=Yi,i.u=Mi,i.v=ce,i.w=E,i.x=function([R,A,F]){return A+=90,A*=Math.PI/180,F*=Math.PI/180,{x:R*Math.cos(A)*Math.sin(F),y:R*Math.sin(A)*Math.sin(F),z:R*Math.cos(F)}},i.y=Lo,i.z=rs}),r("worker",["./shared"],function(i){"use strict";class a{constructor(Ge){this.keyCache={},Ge&&this.replace(Ge)}replace(Ge){this._layerConfigs={},this._layers={},this.update(Ge,[])}update(Ge,Je){for(let et of Ge){this._layerConfigs[et.id]=et;let xt=this._layers[et.id]=i.aA(et);xt._featureFilter=i.a7(xt.filter),this.keyCache[et.id]&&delete this.keyCache[et.id]}for(let et of Je)delete this.keyCache[et],delete this._layerConfigs[et],delete this._layers[et];this.familiesBySource={};let We=i.bk(Object.values(this._layerConfigs),this.keyCache);for(let et of We){let xt=et.map(Ir=>this._layers[Ir.id]),At=xt[0];if(At.visibility==="none")continue;let Kt=At.source||"",Qt=this.familiesBySource[Kt];Qt||(Qt=this.familiesBySource[Kt]={});let Mr=At.sourceLayer||"_geojsonTileLayer",Gr=Qt[Mr];Gr||(Gr=Qt[Mr]=[]),Gr.push(xt)}}}class o{constructor(Ge){let Je={},We=[];for(let Kt in Ge){let Qt=Ge[Kt],Mr=Je[Kt]={};for(let Gr in Qt){let Ir=Qt[+Gr];if(!Ir||Ir.bitmap.width===0||Ir.bitmap.height===0)continue;let Yr={x:0,y:0,w:Ir.bitmap.width+2,h:Ir.bitmap.height+2};We.push(Yr),Mr[Gr]={rect:Yr,metrics:Ir.metrics}}}let{w:et,h:xt}=i.p(We),At=new i.o({width:et||1,height:xt||1});for(let Kt in Ge){let Qt=Ge[Kt];for(let Mr in Qt){let Gr=Qt[+Mr];if(!Gr||Gr.bitmap.width===0||Gr.bitmap.height===0)continue;let Ir=Je[Kt][Mr].rect;i.o.copy(Gr.bitmap,At,{x:0,y:0},{x:Ir.x+1,y:Ir.y+1},Gr.bitmap)}}this.image=At,this.positions=Je}}i.bl("GlyphAtlas",o);class s{constructor(Ge){this.tileID=new i.S(Ge.tileID.overscaledZ,Ge.tileID.wrap,Ge.tileID.canonical.z,Ge.tileID.canonical.x,Ge.tileID.canonical.y),this.uid=Ge.uid,this.zoom=Ge.zoom,this.pixelRatio=Ge.pixelRatio,this.tileSize=Ge.tileSize,this.source=Ge.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=Ge.showCollisionBoxes,this.collectResourceTiming=!!Ge.collectResourceTiming,this.returnDependencies=!!Ge.returnDependencies,this.promoteId=Ge.promoteId,this.inFlightDependencies=[]}parse(Ge,Je,We,et){return i._(this,void 0,void 0,function*(){this.status="parsing",this.data=Ge,this.collisionBoxArray=new i.a5;let xt=new i.bm(Object.keys(Ge.layers).sort()),At=new i.bn(this.tileID,this.promoteId);At.bucketLayerIDs=[];let Kt={},Qt={featureIndex:At,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:We},Mr=Je.familiesBySource[this.source];for(let Qn in Mr){let Vi=Ge.layers[Qn];if(!Vi)continue;Vi.version===1&&i.w(`Vector tile source "${this.source}" layer "${Qn}" does not use vector tile spec v2 and therefore may have some rendering errors.`);let Kn=xt.encode(Qn),Jn=[];for(let Gt=0;Gt=wt.maxzoom||wt.visibility!=="none"&&(l(Gt,this.zoom,We),(Kt[wt.id]=wt.createBucket({index:At.bucketLayerIDs.length,layers:Gt,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:Kn,sourceID:this.source})).populate(Jn,Qt,this.tileID.canonical),At.bucketLayerIDs.push(Gt.map(tr=>tr.id)))}}let Gr=i.aF(Qt.glyphDependencies,Qn=>Object.keys(Qn).map(Number));this.inFlightDependencies.forEach(Qn=>Qn==null?void 0:Qn.abort()),this.inFlightDependencies=[];let Ir=Promise.resolve({});if(Object.keys(Gr).length){let Qn=new AbortController;this.inFlightDependencies.push(Qn),Ir=et.sendAsync({type:"GG",data:{stacks:Gr,source:this.source,tileID:this.tileID,type:"glyphs"}},Qn)}let Yr=Object.keys(Qt.iconDependencies),_i=Promise.resolve({});if(Yr.length){let Qn=new AbortController;this.inFlightDependencies.push(Qn),_i=et.sendAsync({type:"GI",data:{icons:Yr,source:this.source,tileID:this.tileID,type:"icons"}},Qn)}let Pi=Object.keys(Qt.patternDependencies),ai=Promise.resolve({});if(Pi.length){let Qn=new AbortController;this.inFlightDependencies.push(Qn),ai=et.sendAsync({type:"GI",data:{icons:Pi,source:this.source,tileID:this.tileID,type:"patterns"}},Qn)}let[mi,un,Fn]=yield Promise.all([Ir,_i,ai]),An=new o(mi),Hn=new i.bo(un,Fn);for(let Qn in Kt){let Vi=Kt[Qn];Vi instanceof i.a6?(l(Vi.layers,this.zoom,We),i.bp({bucket:Vi,glyphMap:mi,glyphPositions:An.positions,imageMap:un,imagePositions:Hn.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):Vi.hasPattern&&(Vi instanceof i.bq||Vi instanceof i.br||Vi instanceof i.bs)&&(l(Vi.layers,this.zoom,We),Vi.addFeatures(Qt,this.tileID.canonical,Hn.patternPositions))}return this.status="done",{buckets:Object.values(Kt).filter(Qn=>!Qn.isEmpty()),featureIndex:At,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:An.image,imageAtlas:Hn,glyphMap:this.returnDependencies?mi:null,iconMap:this.returnDependencies?un:null,glyphPositions:this.returnDependencies?An.positions:null}})}}function l(gt,Ge,Je){let We=new i.z(Ge);for(let et of gt)et.recalculate(We,Je)}class u{constructor(Ge,Je,We){this.actor=Ge,this.layerIndex=Je,this.availableImages=We,this.fetching={},this.loading={},this.loaded={}}loadVectorTile(Ge,Je){return i._(this,void 0,void 0,function*(){let We=yield i.l(Ge.request,Je);try{return{vectorTile:new i.bt.VectorTile(new i.bu(We.data)),rawData:We.data,cacheControl:We.cacheControl,expires:We.expires}}catch(et){let xt=new Uint8Array(We.data),At=`Unable to parse the tile at ${Ge.request.url}, `;throw At+=xt[0]===31&&xt[1]===139?"please make sure the data is not gzipped and that you have configured the relevant header in the server":`got error: ${et.message}`,new Error(At)}})}loadTile(Ge){return i._(this,void 0,void 0,function*(){let Je=Ge.uid,We=!!(Ge&&Ge.request&&Ge.request.collectResourceTiming)&&new i.bv(Ge.request),et=new s(Ge);this.loading[Je]=et;let xt=new AbortController;et.abort=xt;try{let At=yield this.loadVectorTile(Ge,xt);if(delete this.loading[Je],!At)return null;let Kt=At.rawData,Qt={};At.expires&&(Qt.expires=At.expires),At.cacheControl&&(Qt.cacheControl=At.cacheControl);let Mr={};if(We){let Ir=We.finish();Ir&&(Mr.resourceTiming=JSON.parse(JSON.stringify(Ir)))}et.vectorTile=At.vectorTile;let Gr=et.parse(At.vectorTile,this.layerIndex,this.availableImages,this.actor);this.loaded[Je]=et,this.fetching[Je]={rawTileData:Kt,cacheControl:Qt,resourceTiming:Mr};try{let Ir=yield Gr;return i.e({rawTileData:Kt.slice(0)},Ir,Qt,Mr)}finally{delete this.fetching[Je]}}catch(At){throw delete this.loading[Je],et.status="done",this.loaded[Je]=et,At}})}reloadTile(Ge){return i._(this,void 0,void 0,function*(){let Je=Ge.uid;if(!this.loaded||!this.loaded[Je])throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");let We=this.loaded[Je];if(We.showCollisionBoxes=Ge.showCollisionBoxes,We.status==="parsing"){let et=yield We.parse(We.vectorTile,this.layerIndex,this.availableImages,this.actor),xt;if(this.fetching[Je]){let{rawTileData:At,cacheControl:Kt,resourceTiming:Qt}=this.fetching[Je];delete this.fetching[Je],xt=i.e({rawTileData:At.slice(0)},et,Kt,Qt)}else xt=et;return xt}if(We.status==="done"&&We.vectorTile)return We.parse(We.vectorTile,this.layerIndex,this.availableImages,this.actor)})}abortTile(Ge){return i._(this,void 0,void 0,function*(){let Je=this.loading,We=Ge.uid;Je&&Je[We]&&Je[We].abort&&(Je[We].abort.abort(),delete Je[We])})}removeTile(Ge){return i._(this,void 0,void 0,function*(){this.loaded&&this.loaded[Ge.uid]&&delete this.loaded[Ge.uid]})}}class c{constructor(){this.loaded={}}loadTile(Ge){return i._(this,void 0,void 0,function*(){let{uid:Je,encoding:We,rawImageData:et,redFactor:xt,greenFactor:At,blueFactor:Kt,baseShift:Qt}=Ge,Mr=et.width+2,Gr=et.height+2,Ir=i.b(et)?new i.R({width:Mr,height:Gr},yield i.bw(et,-1,-1,Mr,Gr)):et,Yr=new i.bx(Je,Ir,We,xt,At,Kt,Qt);return this.loaded=this.loaded||{},this.loaded[Je]=Yr,Yr})}removeTile(Ge){let Je=this.loaded,We=Ge.uid;Je&&Je[We]&&delete Je[We]}}function f(gt,Ge){if(gt.length!==0){h(gt[0],Ge);for(var Je=1;Je=Math.abs(Kt)?Je-Qt+Kt:Kt-Qt+Je,Je=Qt}Je+We>=0!=!!Ge&>.reverse()}var d=i.by(function gt(Ge,Je){var We,et=Ge&&Ge.type;if(et==="FeatureCollection")for(We=0;We>31}function q(gt,Ge){for(var Je=gt.loadGeometry(),We=gt.type,et=0,xt=0,At=Je.length,Kt=0;Ktgt},j=Math.fround||(N=new Float32Array(1),gt=>(N[0]=+gt,N[0]));var N;let H=3,ie=5,ae=6;class _e{constructor(Ge){this.options=Object.assign(Object.create(Z),Ge),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(Ge){let{log:Je,minZoom:We,maxZoom:et}=this.options;Je&&console.time("total time");let xt=`prepare ${Ge.length} points`;Je&&console.time(xt),this.points=Ge;let At=[];for(let Qt=0;Qt=We;Qt--){let Mr=+Date.now();Kt=this.trees[Qt]=this._createTree(this._cluster(Kt,Qt)),Je&&console.log("z%d: %d clusters in %dms",Qt,Kt.numItems,+Date.now()-Mr)}return Je&&console.timeEnd("total time"),this}getClusters(Ge,Je){let We=((Ge[0]+180)%360+360)%360-180,et=Math.max(-90,Math.min(90,Ge[1])),xt=Ge[2]===180?180:((Ge[2]+180)%360+360)%360-180,At=Math.max(-90,Math.min(90,Ge[3]));if(Ge[2]-Ge[0]>=360)We=-180,xt=180;else if(We>xt){let Ir=this.getClusters([We,et,180,At],Je),Yr=this.getClusters([-180,et,xt,At],Je);return Ir.concat(Yr)}let Kt=this.trees[this._limitZoom(Je)],Qt=Kt.range(ge(We),re(At),ge(xt),re(et)),Mr=Kt.data,Gr=[];for(let Ir of Qt){let Yr=this.stride*Ir;Gr.push(Mr[Yr+ie]>1?Ee(Mr,Yr,this.clusterProps):this.points[Mr[Yr+H]])}return Gr}getChildren(Ge){let Je=this._getOriginId(Ge),We=this._getOriginZoom(Ge),et="No cluster with the specified id.",xt=this.trees[We];if(!xt)throw new Error(et);let At=xt.data;if(Je*this.stride>=At.length)throw new Error(et);let Kt=this.options.radius/(this.options.extent*Math.pow(2,We-1)),Qt=xt.within(At[Je*this.stride],At[Je*this.stride+1],Kt),Mr=[];for(let Gr of Qt){let Ir=Gr*this.stride;At[Ir+4]===Ge&&Mr.push(At[Ir+ie]>1?Ee(At,Ir,this.clusterProps):this.points[At[Ir+H]])}if(Mr.length===0)throw new Error(et);return Mr}getLeaves(Ge,Je,We){let et=[];return this._appendLeaves(et,Ge,Je=Je||10,We=We||0,0),et}getTile(Ge,Je,We){let et=this.trees[this._limitZoom(Ge)],xt=Math.pow(2,Ge),{extent:At,radius:Kt}=this.options,Qt=Kt/At,Mr=(We-Qt)/xt,Gr=(We+1+Qt)/xt,Ir={features:[]};return this._addTileFeatures(et.range((Je-Qt)/xt,Mr,(Je+1+Qt)/xt,Gr),et.data,Je,We,xt,Ir),Je===0&&this._addTileFeatures(et.range(1-Qt/xt,Mr,1,Gr),et.data,xt,We,xt,Ir),Je===xt-1&&this._addTileFeatures(et.range(0,Mr,Qt/xt,Gr),et.data,-1,We,xt,Ir),Ir.features.length?Ir:null}getClusterExpansionZoom(Ge){let Je=this._getOriginZoom(Ge)-1;for(;Je<=this.options.maxZoom;){let We=this.getChildren(Ge);if(Je++,We.length!==1)break;Ge=We[0].properties.cluster_id}return Je}_appendLeaves(Ge,Je,We,et,xt){let At=this.getChildren(Je);for(let Kt of At){let Qt=Kt.properties;if(Qt&&Qt.cluster?xt+Qt.point_count<=et?xt+=Qt.point_count:xt=this._appendLeaves(Ge,Qt.cluster_id,We,et,xt):xt1,Gr,Ir,Yr;if(Mr)Gr=Ce(Je,Qt,this.clusterProps),Ir=Je[Qt],Yr=Je[Qt+1];else{let ai=this.points[Je[Qt+H]];Gr=ai.properties;let[mi,un]=ai.geometry.coordinates;Ir=ge(mi),Yr=re(un)}let _i={type:1,geometry:[[Math.round(this.options.extent*(Ir*xt-We)),Math.round(this.options.extent*(Yr*xt-et))]],tags:Gr},Pi;Pi=Mr||this.options.generateId?Je[Qt+H]:this.points[Je[Qt+H]].id,Pi!==void 0&&(_i.id=Pi),At.features.push(_i)}}_limitZoom(Ge){return Math.max(this.options.minZoom,Math.min(Math.floor(+Ge),this.options.maxZoom+1))}_cluster(Ge,Je){let{radius:We,extent:et,reduce:xt,minPoints:At}=this.options,Kt=We/(et*Math.pow(2,Je)),Qt=Ge.data,Mr=[],Gr=this.stride;for(let Ir=0;IrJe&&(mi+=Qt[Fn+ie])}if(mi>ai&&mi>=At){let un,Fn=Yr*ai,An=_i*ai,Hn=-1,Qn=((Ir/Gr|0)<<5)+(Je+1)+this.points.length;for(let Vi of Pi){let Kn=Vi*Gr;if(Qt[Kn+2]<=Je)continue;Qt[Kn+2]=Je;let Jn=Qt[Kn+ie];Fn+=Qt[Kn]*Jn,An+=Qt[Kn+1]*Jn,Qt[Kn+4]=Qn,xt&&(un||(un=this._map(Qt,Ir,!0),Hn=this.clusterProps.length,this.clusterProps.push(un)),xt(un,this._map(Qt,Kn)))}Qt[Ir+4]=Qn,Mr.push(Fn/mi,An/mi,1/0,Qn,-1,mi),xt&&Mr.push(Hn)}else{for(let un=0;un1)for(let un of Pi){let Fn=un*Gr;if(!(Qt[Fn+2]<=Je)){Qt[Fn+2]=Je;for(let An=0;An>5}_getOriginZoom(Ge){return(Ge-this.points.length)%32}_map(Ge,Je,We){if(Ge[Je+ie]>1){let At=this.clusterProps[Ge[Je+ae]];return We?Object.assign({},At):At}let et=this.points[Ge[Je+H]].properties,xt=this.options.map(et);return We&&xt===et?Object.assign({},xt):xt}}function Ee(gt,Ge,Je){return{type:"Feature",id:gt[Ge+H],properties:Ce(gt,Ge,Je),geometry:{type:"Point",coordinates:[(We=gt[Ge],360*(We-.5)),Se(gt[Ge+1])]}};var We}function Ce(gt,Ge,Je){let We=gt[Ge+ie],et=We>=1e4?`${Math.round(We/1e3)}k`:We>=1e3?Math.round(We/100)/10+"k":We,xt=gt[Ge+ae],At=xt===-1?{}:Object.assign({},Je[xt]);return Object.assign(At,{cluster:!0,cluster_id:gt[Ge+H],point_count:We,point_count_abbreviated:et})}function ge(gt){return gt/360+.5}function re(gt){let Ge=Math.sin(gt*Math.PI/180),Je=.5-.25*Math.log((1+Ge)/(1-Ge))/Math.PI;return Je<0?0:Je>1?1:Je}function Se(gt){let Ge=(180-360*gt)*Math.PI/180;return 360*Math.atan(Math.exp(Ge))/Math.PI-90}function ke(gt,Ge,Je,We){let et=We,xt=Ge+(Je-Ge>>1),At,Kt=Je-Ge,Qt=gt[Ge],Mr=gt[Ge+1],Gr=gt[Je],Ir=gt[Je+1];for(let Yr=Ge+3;Yret)At=Yr,et=_i;else if(_i===et){let Pi=Math.abs(Yr-xt);PiWe&&(At-Ge>3&&ke(gt,Ge,At,We),gt[At+2]=et,Je-At>3&&ke(gt,At,Je,We))}function be(gt,Ge,Je,We,et,xt){let At=et-Je,Kt=xt-We;if(At!==0||Kt!==0){let Qt=((gt-Je)*At+(Ge-We)*Kt)/(At*At+Kt*Kt);Qt>1?(Je=et,We=xt):Qt>0&&(Je+=At*Qt,We+=Kt*Qt)}return At=gt-Je,Kt=Ge-We,At*At+Kt*Kt}function Be(gt,Ge,Je,We){let et={id:gt==null?null:gt,type:Ge,geometry:Je,tags:We,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if(Ge==="Point"||Ge==="MultiPoint"||Ge==="LineString")Le(et,Je);else if(Ge==="Polygon")Le(et,Je[0]);else if(Ge==="MultiLineString")for(let xt of Je)Le(et,xt);else if(Ge==="MultiPolygon")for(let xt of Je)Le(et,xt[0]);return et}function Le(gt,Ge){for(let Je=0;Je0&&(At+=We?(et*Gr-Mr*xt)/2:Math.sqrt(Math.pow(Mr-et,2)+Math.pow(Gr-xt,2))),et=Mr,xt=Gr}let Kt=Ge.length-3;Ge[2]=1,ke(Ge,0,Kt,Je),Ge[Kt+2]=1,Ge.size=Math.abs(At),Ge.start=0,Ge.end=Ge.size}function He(gt,Ge,Je,We){for(let et=0;et1?1:Je}function Ht(gt,Ge,Je,We,et,xt,At,Kt){if(We/=Ge,xt>=(Je/=Ge)&&At=We)return null;let Qt=[];for(let Mr of gt){let Gr=Mr.geometry,Ir=Mr.type,Yr=et===0?Mr.minX:Mr.minY,_i=et===0?Mr.maxX:Mr.maxY;if(Yr>=Je&&_i=We)continue;let Pi=[];if(Ir==="Point"||Ir==="MultiPoint")at(Gr,Pi,Je,We,et);else if(Ir==="LineString")ct(Gr,Pi,Je,We,et,!1,Kt.lineMetrics);else if(Ir==="MultiLineString")Vt(Gr,Pi,Je,We,et,!1);else if(Ir==="Polygon")Vt(Gr,Pi,Je,We,et,!0);else if(Ir==="MultiPolygon")for(let ai of Gr){let mi=[];Vt(ai,mi,Je,We,et,!0),mi.length&&Pi.push(mi)}if(Pi.length){if(Kt.lineMetrics&&Ir==="LineString"){for(let ai of Pi)Qt.push(Be(Mr.id,Ir,ai,Mr.tags));continue}Ir!=="LineString"&&Ir!=="MultiLineString"||(Pi.length===1?(Ir="LineString",Pi=Pi[0]):Ir="MultiLineString"),Ir!=="Point"&&Ir!=="MultiPoint"||(Ir=Pi.length===3?"Point":"MultiPoint"),Qt.push(Be(Mr.id,Ir,Pi,Mr.tags))}}return Qt.length?Qt:null}function at(gt,Ge,Je,We,et){for(let xt=0;xt=Je&&At<=We&&rr(Ge,gt[xt],gt[xt+1],gt[xt+2])}}function ct(gt,Ge,Je,We,et,xt,At){let Kt=ar(gt),Qt=et===0?tt:je,Mr,Gr,Ir=gt.start;for(let mi=0;miJe&&(Gr=Qt(Kt,un,Fn,Hn,Qn,Je),At&&(Kt.start=Ir+Mr*Gr)):Vi>We?Kn=Je&&(Gr=Qt(Kt,un,Fn,Hn,Qn,Je),Jn=!0),Kn>We&&Vi<=We&&(Gr=Qt(Kt,un,Fn,Hn,Qn,We),Jn=!0),!xt&&Jn&&(At&&(Kt.end=Ir+Mr*Gr),Ge.push(Kt),Kt=ar(gt)),At&&(Ir+=Mr)}let Yr=gt.length-3,_i=gt[Yr],Pi=gt[Yr+1],ai=et===0?_i:Pi;ai>=Je&&ai<=We&&rr(Kt,_i,Pi,gt[Yr+2]),Yr=Kt.length-3,xt&&Yr>=3&&(Kt[Yr]!==Kt[0]||Kt[Yr+1]!==Kt[1])&&rr(Kt,Kt[0],Kt[1],Kt[2]),Kt.length&&Ge.push(Kt)}function ar(gt){let Ge=[];return Ge.size=gt.size,Ge.start=gt.start,Ge.end=gt.end,Ge}function Vt(gt,Ge,Je,We,et,xt){for(let At of gt)ct(At,Ge,Je,We,et,xt,!1)}function rr(gt,Ge,Je,We){gt.push(Ge,Je,We)}function tt(gt,Ge,Je,We,et,xt){let At=(xt-Ge)/(We-Ge);return rr(gt,xt,Je+(et-Je)*At,1),At}function je(gt,Ge,Je,We,et,xt){let At=(xt-Je)/(et-Je);return rr(gt,Ge+(We-Ge)*At,xt,1),At}function Ue(gt,Ge){let Je=[];for(let We=0;We0&&Ge.size<(et?At:We))return void(Je.numPoints+=Ge.length/3);let Kt=[];for(let Qt=0;QtAt)&&(Je.numSimplified++,Kt.push(Ge[Qt],Ge[Qt+1])),Je.numPoints++;et&&function(Qt,Mr){let Gr=0;for(let Ir=0,Yr=Qt.length,_i=Yr-2;Ir0===Mr)for(let Ir=0,Yr=Qt.length;Ir24)throw new Error("maxZoom should be in the 0-24 range");if(Je.promoteId&&Je.generateId)throw new Error("promoteId and generateId cannot be used together.");let et=function(xt,At){let Kt=[];if(xt.type==="FeatureCollection")for(let Qt=0;Qt1&&console.time("creation"),_i=this.tiles[Yr]=Tt(Ge,Je,We,et,Mr),this.tileCoords.push({z:Je,x:We,y:et}),Gr)){Gr>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",Je,We,et,_i.numFeatures,_i.numPoints,_i.numSimplified),console.timeEnd("creation"));let Jn=`z${Je}`;this.stats[Jn]=(this.stats[Jn]||0)+1,this.total++}if(_i.source=Ge,xt==null){if(Je===Mr.indexMaxZoom||_i.numPoints<=Mr.indexMaxPoints)continue}else{if(Je===Mr.maxZoom||Je===xt)continue;if(xt!=null){let Jn=xt-Je;if(We!==At>>Jn||et!==Kt>>Jn)continue}}if(_i.source=null,Ge.length===0)continue;Gr>1&&console.time("clipping");let Pi=.5*Mr.buffer/Mr.extent,ai=.5-Pi,mi=.5+Pi,un=1+Pi,Fn=null,An=null,Hn=null,Qn=null,Vi=Ht(Ge,Ir,We-Pi,We+mi,0,_i.minX,_i.maxX,Mr),Kn=Ht(Ge,Ir,We+ai,We+un,0,_i.minX,_i.maxX,Mr);Ge=null,Vi&&(Fn=Ht(Vi,Ir,et-Pi,et+mi,1,_i.minY,_i.maxY,Mr),An=Ht(Vi,Ir,et+ai,et+un,1,_i.minY,_i.maxY,Mr),Vi=null),Kn&&(Hn=Ht(Kn,Ir,et-Pi,et+mi,1,_i.minY,_i.maxY,Mr),Qn=Ht(Kn,Ir,et+ai,et+un,1,_i.minY,_i.maxY,Mr),Kn=null),Gr>1&&console.timeEnd("clipping"),Qt.push(Fn||[],Je+1,2*We,2*et),Qt.push(An||[],Je+1,2*We,2*et+1),Qt.push(Hn||[],Je+1,2*We+1,2*et),Qt.push(Qn||[],Je+1,2*We+1,2*et+1)}}getTile(Ge,Je,We){Ge=+Ge,Je=+Je,We=+We;let et=this.options,{extent:xt,debug:At}=et;if(Ge<0||Ge>24)return null;let Kt=1<1&&console.log("drilling down to z%d-%d-%d",Ge,Je,We);let Mr,Gr=Ge,Ir=Je,Yr=We;for(;!Mr&&Gr>0;)Gr--,Ir>>=1,Yr>>=1,Mr=this.tiles[or(Gr,Ir,Yr)];return Mr&&Mr.source?(At>1&&(console.log("found parent tile z%d-%d-%d",Gr,Ir,Yr),console.time("drilling down")),this.splitTile(Mr.source,Gr,Ir,Yr,Ge,Je,We),At>1&&console.timeEnd("drilling down"),this.tiles[Qt]?rt(this.tiles[Qt],xt):null):null}}function or(gt,Ge,Je){return 32*((1<{Ir.properties=_i;let Pi={};for(let ai of Yr)Pi[ai]=Qt[ai].evaluate(Gr,Ir);return Pi},At.reduce=(_i,Pi)=>{Ir.properties=Pi;for(let ai of Yr)Gr.accumulated=_i[ai],_i[ai]=Mr[ai].evaluate(Gr,Ir)},At}(Ge)).load((yield this._pendingData).features):(et=yield this._pendingData,new jt(et,Ge.geojsonVtOptions)),this.loaded={};let xt={};if(We){let At=We.finish();At&&(xt.resourceTiming={},xt.resourceTiming[Ge.source]=JSON.parse(JSON.stringify(At)))}return xt}catch(xt){if(delete this._pendingRequest,i.bB(xt))return{abandoned:!0};throw xt}var et})}getData(){return i._(this,void 0,void 0,function*(){return this._pendingData})}reloadTile(Ge){let Je=this.loaded;return Je&&Je[Ge.uid]?super.reloadTile(Ge):this.loadTile(Ge)}loadAndProcessGeoJSON(Ge,Je){return i._(this,void 0,void 0,function*(){let We=yield this.loadGeoJSON(Ge,Je);if(delete this._pendingRequest,typeof We!="object")throw new Error(`Input data given to '${Ge.source}' is not a valid GeoJSON object.`);if(d(We,!0),Ge.filter){let et=i.bC(Ge.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(et.result==="error")throw new Error(et.value.map(At=>`${At.key}: ${At.message}`).join(", "));We={type:"FeatureCollection",features:We.features.filter(At=>et.value.evaluate({zoom:0},At))}}return We})}loadGeoJSON(Ge,Je){return i._(this,void 0,void 0,function*(){let{promoteId:We}=Ge;if(Ge.request){let et=yield i.h(Ge.request,Je);return this._dataUpdateable=Ar(et.data,We)?ei(et.data,We):void 0,et.data}if(typeof Ge.data=="string")try{let et=JSON.parse(Ge.data);return this._dataUpdateable=Ar(et,We)?ei(et,We):void 0,et}catch(et){throw new Error(`Input data given to '${Ge.source}' is not a valid GeoJSON object.`)}if(!Ge.dataDiff)throw new Error(`Input data given to '${Ge.source}' is not a valid GeoJSON object.`);if(!this._dataUpdateable)throw new Error(`Cannot update existing geojson data in ${Ge.source}`);return function(et,xt,At){var Kt,Qt,Mr,Gr;if(xt.removeAll&&et.clear(),xt.remove)for(let Ir of xt.remove)et.delete(Ir);if(xt.add)for(let Ir of xt.add){let Yr=mr(Ir,At);Yr!=null&&et.set(Yr,Ir)}if(xt.update)for(let Ir of xt.update){let Yr=et.get(Ir.id);if(Yr==null)continue;let _i=!Ir.removeAllProperties&&(((Kt=Ir.removeProperties)===null||Kt===void 0?void 0:Kt.length)>0||((Qt=Ir.addOrUpdateProperties)===null||Qt===void 0?void 0:Qt.length)>0);if((Ir.newGeometry||Ir.removeAllProperties||_i)&&(Yr=Object.assign({},Yr),et.set(Ir.id,Yr),_i&&(Yr.properties=Object.assign({},Yr.properties))),Ir.newGeometry&&(Yr.geometry=Ir.newGeometry),Ir.removeAllProperties)Yr.properties={};else if(((Mr=Ir.removeProperties)===null||Mr===void 0?void 0:Mr.length)>0)for(let Pi of Ir.removeProperties)Object.prototype.hasOwnProperty.call(Yr.properties,Pi)&&delete Yr.properties[Pi];if(((Gr=Ir.addOrUpdateProperties)===null||Gr===void 0?void 0:Gr.length)>0)for(let{key:Pi,value:ai}of Ir.addOrUpdateProperties)Yr.properties[Pi]=ai}}(this._dataUpdateable,Ge.dataDiff,We),{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())}})}removeSource(Ge){return i._(this,void 0,void 0,function*(){this._pendingRequest&&this._pendingRequest.abort()})}getClusterExpansionZoom(Ge){return this._geoJSONIndex.getClusterExpansionZoom(Ge.clusterId)}getClusterChildren(Ge){return this._geoJSONIndex.getChildren(Ge.clusterId)}getClusterLeaves(Ge){return this._geoJSONIndex.getLeaves(Ge.clusterId,Ge.limit,Ge.offset)}}class jr{constructor(Ge){this.self=Ge,this.actor=new i.F(Ge),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.self.registerWorkerSource=(Je,We)=>{if(this.externalWorkerSourceTypes[Je])throw new Error(`Worker source with name "${Je}" already registered.`);this.externalWorkerSourceTypes[Je]=We},this.self.addProtocol=i.bi,this.self.removeProtocol=i.bj,this.self.registerRTLTextPlugin=Je=>{if(i.bD.isParsed())throw new Error("RTL text plugin already registered.");i.bD.setMethods(Je)},this.actor.registerMessageHandler("LDT",(Je,We)=>this._getDEMWorkerSource(Je,We.source).loadTile(We)),this.actor.registerMessageHandler("RDT",(Je,We)=>i._(this,void 0,void 0,function*(){this._getDEMWorkerSource(Je,We.source).removeTile(We)})),this.actor.registerMessageHandler("GCEZ",(Je,We)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Je,We.type,We.source).getClusterExpansionZoom(We)})),this.actor.registerMessageHandler("GCC",(Je,We)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Je,We.type,We.source).getClusterChildren(We)})),this.actor.registerMessageHandler("GCL",(Je,We)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Je,We.type,We.source).getClusterLeaves(We)})),this.actor.registerMessageHandler("LD",(Je,We)=>this._getWorkerSource(Je,We.type,We.source).loadData(We)),this.actor.registerMessageHandler("GD",(Je,We)=>this._getWorkerSource(Je,We.type,We.source).getData()),this.actor.registerMessageHandler("LT",(Je,We)=>this._getWorkerSource(Je,We.type,We.source).loadTile(We)),this.actor.registerMessageHandler("RT",(Je,We)=>this._getWorkerSource(Je,We.type,We.source).reloadTile(We)),this.actor.registerMessageHandler("AT",(Je,We)=>this._getWorkerSource(Je,We.type,We.source).abortTile(We)),this.actor.registerMessageHandler("RMT",(Je,We)=>this._getWorkerSource(Je,We.type,We.source).removeTile(We)),this.actor.registerMessageHandler("RS",(Je,We)=>i._(this,void 0,void 0,function*(){if(!this.workerSources[Je]||!this.workerSources[Je][We.type]||!this.workerSources[Je][We.type][We.source])return;let et=this.workerSources[Je][We.type][We.source];delete this.workerSources[Je][We.type][We.source],et.removeSource!==void 0&&et.removeSource(We)})),this.actor.registerMessageHandler("RM",Je=>i._(this,void 0,void 0,function*(){delete this.layerIndexes[Je],delete this.availableImages[Je],delete this.workerSources[Je],delete this.demWorkerSources[Je]})),this.actor.registerMessageHandler("SR",(Je,We)=>i._(this,void 0,void 0,function*(){this.referrer=We})),this.actor.registerMessageHandler("SRPS",(Je,We)=>this._syncRTLPluginState(Je,We)),this.actor.registerMessageHandler("IS",(Je,We)=>i._(this,void 0,void 0,function*(){this.self.importScripts(We)})),this.actor.registerMessageHandler("SI",(Je,We)=>this._setImages(Je,We)),this.actor.registerMessageHandler("UL",(Je,We)=>i._(this,void 0,void 0,function*(){this._getLayerIndex(Je).update(We.layers,We.removedIds)})),this.actor.registerMessageHandler("SL",(Je,We)=>i._(this,void 0,void 0,function*(){this._getLayerIndex(Je).replace(We)}))}_setImages(Ge,Je){return i._(this,void 0,void 0,function*(){this.availableImages[Ge]=Je;for(let We in this.workerSources[Ge]){let et=this.workerSources[Ge][We];for(let xt in et)et[xt].availableImages=Je}})}_syncRTLPluginState(Ge,Je){return i._(this,void 0,void 0,function*(){if(i.bD.isParsed())return i.bD.getState();if(Je.pluginStatus!=="loading")return i.bD.setState(Je),Je;let We=Je.pluginURL;if(this.self.importScripts(We),i.bD.isParsed()){let et={pluginStatus:"loaded",pluginURL:We};return i.bD.setState(et),et}throw i.bD.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${We}`)})}_getAvailableImages(Ge){let Je=this.availableImages[Ge];return Je||(Je=[]),Je}_getLayerIndex(Ge){let Je=this.layerIndexes[Ge];return Je||(Je=this.layerIndexes[Ge]=new a),Je}_getWorkerSource(Ge,Je,We){if(this.workerSources[Ge]||(this.workerSources[Ge]={}),this.workerSources[Ge][Je]||(this.workerSources[Ge][Je]={}),!this.workerSources[Ge][Je][We]){let et={sendAsync:(xt,At)=>(xt.targetMapId=Ge,this.actor.sendAsync(xt,At))};switch(Je){case"vector":this.workerSources[Ge][Je][We]=new u(et,this._getLayerIndex(Ge),this._getAvailableImages(Ge));break;case"geojson":this.workerSources[Ge][Je][We]=new qr(et,this._getLayerIndex(Ge),this._getAvailableImages(Ge));break;default:this.workerSources[Ge][Je][We]=new this.externalWorkerSourceTypes[Je](et,this._getLayerIndex(Ge),this._getAvailableImages(Ge))}}return this.workerSources[Ge][Je][We]}_getDEMWorkerSource(Ge,Je){return this.demWorkerSources[Ge]||(this.demWorkerSources[Ge]={}),this.demWorkerSources[Ge][Je]||(this.demWorkerSources[Ge][Je]=new c),this.demWorkerSources[Ge][Je]}}return i.i(self)&&(self.worker=new jr(self)),jr}),r("index",["exports","./shared"],function(i,a){"use strict";var o="4.7.1";let s,l,u={now:typeof performance!="undefined"&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frameAsync:ue=>new Promise((w,B)=>{let Q=requestAnimationFrame(w);ue.signal.addEventListener("abort",()=>{cancelAnimationFrame(Q),B(a.c())})}),getImageData(ue,w=0){return this.getImageCanvasContext(ue).getImageData(-w,-w,ue.width+2*w,ue.height+2*w)},getImageCanvasContext(ue){let w=window.document.createElement("canvas"),B=w.getContext("2d",{willReadFrequently:!0});if(!B)throw new Error("failed to create canvas 2d context");return w.width=ue.width,w.height=ue.height,B.drawImage(ue,0,0,ue.width,ue.height),B},resolveURL:ue=>(s||(s=document.createElement("a")),s.href=ue,s.href),hardwareConcurrency:typeof navigator!="undefined"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(l==null&&(l=matchMedia("(prefers-reduced-motion: reduce)")),l.matches)}};class c{static testProp(w){if(!c.docStyle)return w[0];for(let B=0;B{window.removeEventListener("click",c.suppressClickInternal,!0)},0)}static getScale(w){let B=w.getBoundingClientRect();return{x:B.width/w.offsetWidth||1,y:B.height/w.offsetHeight||1,boundingClientRect:B}}static getPoint(w,B,Q){let ee=B.boundingClientRect;return new a.P((Q.clientX-ee.left)/B.x-w.clientLeft,(Q.clientY-ee.top)/B.y-w.clientTop)}static mousePos(w,B){let Q=c.getScale(w);return c.getPoint(w,Q,B)}static touchPos(w,B){let Q=[],ee=c.getScale(w);for(let le=0;le{h&&b(h),h=null,m=!0},d.onerror=()=>{v=!0,h=null},d.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(ue){let w,B,Q,ee;ue.resetRequestQueue=()=>{w=[],B=0,Q=0,ee={}},ue.addThrottleControl=ut=>{let Mt=Q++;return ee[Mt]=ut,Mt},ue.removeThrottleControl=ut=>{delete ee[ut],Fe()},ue.getImage=(ut,Mt,Jt=!0)=>new Promise(($t,yr)=>{f.supported&&(ut.headers||(ut.headers={}),ut.headers.accept="image/webp,*/*"),a.e(ut,{type:"image"}),w.push({abortController:Mt,requestParameters:ut,supportImageRefresh:Jt,state:"queued",onError:Cr=>{yr(Cr)},onSuccess:Cr=>{$t(Cr)}}),Fe()});let le=ut=>a._(this,void 0,void 0,function*(){ut.state="running";let{requestParameters:Mt,supportImageRefresh:Jt,onError:$t,onSuccess:yr,abortController:Cr}=ut,ve=Jt===!1&&!a.i(self)&&!a.g(Mt.url)&&(!Mt.headers||Object.keys(Mt.headers).reduce((ze,Qe)=>ze&&Qe==="accept",!0));B++;let xe=ve?Ze(Mt,Cr):a.m(Mt,Cr);try{let ze=yield xe;delete ut.abortController,ut.state="completed",ze.data instanceof HTMLImageElement||a.b(ze.data)?yr(ze):ze.data&&yr({data:yield(Ie=ze.data,typeof createImageBitmap=="function"?a.d(Ie):a.f(Ie)),cacheControl:ze.cacheControl,expires:ze.expires})}catch(ze){delete ut.abortController,$t(ze)}finally{B--,Fe()}var Ie}),Fe=()=>{let ut=(()=>{for(let Mt of Object.keys(ee))if(ee[Mt]())return!0;return!1})()?a.a.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:a.a.MAX_PARALLEL_IMAGE_REQUESTS;for(let Mt=B;Mt0;Mt++){let Jt=w.shift();Jt.abortController.signal.aborted?Mt--:le(Jt)}},Ze=(ut,Mt)=>new Promise((Jt,$t)=>{let yr=new Image,Cr=ut.url,ve=ut.credentials;ve&&ve==="include"?yr.crossOrigin="use-credentials":(ve&&ve==="same-origin"||!a.s(Cr))&&(yr.crossOrigin="anonymous"),Mt.signal.addEventListener("abort",()=>{yr.src="",$t(a.c())}),yr.fetchPriority="high",yr.onload=()=>{yr.onerror=yr.onload=null,Jt({data:yr})},yr.onerror=()=>{yr.onerror=yr.onload=null,Mt.signal.aborted||$t(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))},yr.src=Cr})}(p||(p={})),p.resetRequestQueue();class k{constructor(w){this._transformRequestFn=w}transformRequest(w,B){return this._transformRequestFn&&this._transformRequestFn(w,B)||{url:w}}setTransformRequest(w){this._transformRequestFn=w}}function M(ue){var w=new a.A(3);return w[0]=ue[0],w[1]=ue[1],w[2]=ue[2],w}var T,L=function(ue,w,B){return ue[0]=w[0]-B[0],ue[1]=w[1]-B[1],ue[2]=w[2]-B[2],ue};T=new a.A(3),a.A!=Float32Array&&(T[0]=0,T[1]=0,T[2]=0);var x=function(ue){var w=ue[0],B=ue[1];return w*w+B*B};function C(ue){let w=[];if(typeof ue=="string")w.push({id:"default",url:ue});else if(ue&&ue.length>0){let B=[];for(let{id:Q,url:ee}of ue){let le=`${Q}${ee}`;B.indexOf(le)===-1&&(B.push(le),w.push({id:Q,url:ee}))}}return w}function S(ue,w,B){let Q=ue.split("?");return Q[0]+=`${w}${B}`,Q.join("?")}(function(){var ue=new a.A(2);a.A!=Float32Array&&(ue[0]=0,ue[1]=0)})();class g{constructor(w,B,Q,ee){this.context=w,this.format=Q,this.texture=w.gl.createTexture(),this.update(B,ee)}update(w,B,Q){let{width:ee,height:le}=w,Fe=!(this.size&&this.size[0]===ee&&this.size[1]===le||Q),{context:Ze}=this,{gl:ut}=Ze;if(this.useMipmap=!!(B&&B.useMipmap),ut.bindTexture(ut.TEXTURE_2D,this.texture),Ze.pixelStoreUnpackFlipY.set(!1),Ze.pixelStoreUnpack.set(1),Ze.pixelStoreUnpackPremultiplyAlpha.set(this.format===ut.RGBA&&(!B||B.premultiply!==!1)),Fe)this.size=[ee,le],w instanceof HTMLImageElement||w instanceof HTMLCanvasElement||w instanceof HTMLVideoElement||w instanceof ImageData||a.b(w)?ut.texImage2D(ut.TEXTURE_2D,0,this.format,this.format,ut.UNSIGNED_BYTE,w):ut.texImage2D(ut.TEXTURE_2D,0,this.format,ee,le,0,this.format,ut.UNSIGNED_BYTE,w.data);else{let{x:Mt,y:Jt}=Q||{x:0,y:0};w instanceof HTMLImageElement||w instanceof HTMLCanvasElement||w instanceof HTMLVideoElement||w instanceof ImageData||a.b(w)?ut.texSubImage2D(ut.TEXTURE_2D,0,Mt,Jt,ut.RGBA,ut.UNSIGNED_BYTE,w):ut.texSubImage2D(ut.TEXTURE_2D,0,Mt,Jt,ee,le,ut.RGBA,ut.UNSIGNED_BYTE,w.data)}this.useMipmap&&this.isSizePowerOfTwo()&&ut.generateMipmap(ut.TEXTURE_2D)}bind(w,B,Q){let{context:ee}=this,{gl:le}=ee;le.bindTexture(le.TEXTURE_2D,this.texture),Q!==le.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(Q=le.LINEAR),w!==this.filter&&(le.texParameteri(le.TEXTURE_2D,le.TEXTURE_MAG_FILTER,w),le.texParameteri(le.TEXTURE_2D,le.TEXTURE_MIN_FILTER,Q||w),this.filter=w),B!==this.wrap&&(le.texParameteri(le.TEXTURE_2D,le.TEXTURE_WRAP_S,B),le.texParameteri(le.TEXTURE_2D,le.TEXTURE_WRAP_T,B),this.wrap=B)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){let{gl:w}=this.context;w.deleteTexture(this.texture),this.texture=null}}function P(ue){let{userImage:w}=ue;return!!(w&&w.render&&w.render())&&(ue.data.replace(new Uint8Array(w.data.buffer)),!0)}class E extends a.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new a.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(w){if(this.loaded!==w&&(this.loaded=w,w)){for(let{ids:B,promiseResolve:Q}of this.requestors)Q(this._getImagesForIds(B));this.requestors=[]}}getImage(w){let B=this.images[w];if(B&&!B.data&&B.spriteData){let Q=B.spriteData;B.data=new a.R({width:Q.width,height:Q.height},Q.context.getImageData(Q.x,Q.y,Q.width,Q.height).data),B.spriteData=null}return B}addImage(w,B){if(this.images[w])throw new Error(`Image id ${w} already exist, use updateImage instead`);this._validate(w,B)&&(this.images[w]=B)}_validate(w,B){let Q=!0,ee=B.data||B.spriteData;return this._validateStretch(B.stretchX,ee&&ee.width)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "stretchX" value`))),Q=!1),this._validateStretch(B.stretchY,ee&&ee.height)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "stretchY" value`))),Q=!1),this._validateContent(B.content,B)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "content" value`))),Q=!1),Q}_validateStretch(w,B){if(!w)return!0;let Q=0;for(let ee of w){if(ee[0]{let ee=!0;if(!this.isLoaded())for(let le of w)this.images[le]||(ee=!1);this.isLoaded()||ee?B(this._getImagesForIds(w)):this.requestors.push({ids:w,promiseResolve:B})})}_getImagesForIds(w){let B={};for(let Q of w){let ee=this.getImage(Q);ee||(this.fire(new a.k("styleimagemissing",{id:Q})),ee=this.getImage(Q)),ee?B[Q]={data:ee.data.clone(),pixelRatio:ee.pixelRatio,sdf:ee.sdf,version:ee.version,stretchX:ee.stretchX,stretchY:ee.stretchY,content:ee.content,textFitWidth:ee.textFitWidth,textFitHeight:ee.textFitHeight,hasRenderCallback:!!(ee.userImage&&ee.userImage.render)}:a.w(`Image "${Q}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`)}return B}getPixelSize(){let{width:w,height:B}=this.atlasImage;return{width:w,height:B}}getPattern(w){let B=this.patterns[w],Q=this.getImage(w);if(!Q)return null;if(B&&B.position.version===Q.version)return B.position;if(B)B.position.version=Q.version;else{let ee={w:Q.data.width+2,h:Q.data.height+2,x:0,y:0},le=new a.I(ee,Q);this.patterns[w]={bin:ee,position:le}}return this._updatePatternAtlas(),this.patterns[w].position}bind(w){let B=w.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new g(w,this.atlasImage,B.RGBA),this.atlasTexture.bind(B.LINEAR,B.CLAMP_TO_EDGE)}_updatePatternAtlas(){let w=[];for(let le in this.patterns)w.push(this.patterns[le].bin);let{w:B,h:Q}=a.p(w),ee=this.atlasImage;ee.resize({width:B||1,height:Q||1});for(let le in this.patterns){let{bin:Fe}=this.patterns[le],Ze=Fe.x+1,ut=Fe.y+1,Mt=this.getImage(le).data,Jt=Mt.width,$t=Mt.height;a.R.copy(Mt,ee,{x:0,y:0},{x:Ze,y:ut},{width:Jt,height:$t}),a.R.copy(Mt,ee,{x:0,y:$t-1},{x:Ze,y:ut-1},{width:Jt,height:1}),a.R.copy(Mt,ee,{x:0,y:0},{x:Ze,y:ut+$t},{width:Jt,height:1}),a.R.copy(Mt,ee,{x:Jt-1,y:0},{x:Ze-1,y:ut},{width:1,height:$t}),a.R.copy(Mt,ee,{x:0,y:0},{x:Ze+Jt,y:ut},{width:1,height:$t})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(w){for(let B of w){if(this.callbackDispatchedThisFrame[B])continue;this.callbackDispatchedThisFrame[B]=!0;let Q=this.getImage(B);Q||a.w(`Image with ID: "${B}" was not found`),P(Q)&&this.updateImage(B,Q)}}}let z=1e20;function q(ue,w,B,Q,ee,le,Fe,Ze,ut){for(let Mt=w;Mt-1);ut++,le[ut]=Ze,Fe[ut]=Mt,Fe[ut+1]=z}for(let Ze=0,ut=0;Ze65535)throw new Error("glyphs > 65535 not supported");if(Q.ranges[le])return{stack:w,id:B,glyph:ee};if(!this.url)throw new Error("glyphsUrl is not set");if(!Q.requests[le]){let Ze=G.loadGlyphRange(w,le,this.url,this.requestManager);Q.requests[le]=Ze}let Fe=yield Q.requests[le];for(let Ze in Fe)this._doesCharSupportLocalGlyph(+Ze)||(Q.glyphs[+Ze]=Fe[+Ze]);return Q.ranges[le]=!0,{stack:w,id:B,glyph:Fe[B]||null}})}_doesCharSupportLocalGlyph(w){return!!this.localIdeographFontFamily&&new RegExp("\\p{Ideo}|\\p{sc=Hang}|\\p{sc=Hira}|\\p{sc=Kana}","u").test(String.fromCodePoint(w))}_tinySDF(w,B,Q){let ee=this.localIdeographFontFamily;if(!ee||!this._doesCharSupportLocalGlyph(Q))return;let le=w.tinySDF;if(!le){let Ze="400";/bold/i.test(B)?Ze="900":/medium/i.test(B)?Ze="500":/light/i.test(B)&&(Ze="200"),le=w.tinySDF=new G.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:ee,fontWeight:Ze})}let Fe=le.draw(String.fromCharCode(Q));return{id:Q,bitmap:new a.o({width:Fe.width||60,height:Fe.height||60},Fe.data),metrics:{width:Fe.glyphWidth/2||24,height:Fe.glyphHeight/2||24,left:Fe.glyphLeft/2+.5||0,top:Fe.glyphTop/2-27.5||-8,advance:Fe.glyphAdvance/2||24,isDoubleResolution:!0}}}}G.loadGlyphRange=function(ue,w,B,Q){return a._(this,void 0,void 0,function*(){let ee=256*w,le=ee+255,Fe=Q.transformRequest(B.replace("{fontstack}",ue).replace("{range}",`${ee}-${le}`),"Glyphs"),Ze=yield a.l(Fe,new AbortController);if(!Ze||!Ze.data)throw new Error(`Could not load glyph range. range: ${w}, ${ee}-${le}`);let ut={};for(let Mt of a.n(Ze.data))ut[Mt.id]=Mt;return ut})},G.TinySDF=class{constructor({fontSize:ue=24,buffer:w=3,radius:B=8,cutoff:Q=.25,fontFamily:ee="sans-serif",fontWeight:le="normal",fontStyle:Fe="normal"}={}){this.buffer=w,this.cutoff=Q,this.radius=B;let Ze=this.size=ue+4*w,ut=this._createCanvas(Ze),Mt=this.ctx=ut.getContext("2d",{willReadFrequently:!0});Mt.font=`${Fe} ${le} ${ue}px ${ee}`,Mt.textBaseline="alphabetic",Mt.textAlign="left",Mt.fillStyle="black",this.gridOuter=new Float64Array(Ze*Ze),this.gridInner=new Float64Array(Ze*Ze),this.f=new Float64Array(Ze),this.z=new Float64Array(Ze+1),this.v=new Uint16Array(Ze)}_createCanvas(ue){let w=document.createElement("canvas");return w.width=w.height=ue,w}draw(ue){let{width:w,actualBoundingBoxAscent:B,actualBoundingBoxDescent:Q,actualBoundingBoxLeft:ee,actualBoundingBoxRight:le}=this.ctx.measureText(ue),Fe=Math.ceil(B),Ze=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(le-ee))),ut=Math.min(this.size-this.buffer,Fe+Math.ceil(Q)),Mt=Ze+2*this.buffer,Jt=ut+2*this.buffer,$t=Math.max(Mt*Jt,0),yr=new Uint8ClampedArray($t),Cr={data:yr,width:Mt,height:Jt,glyphWidth:Ze,glyphHeight:ut,glyphTop:Fe,glyphLeft:0,glyphAdvance:w};if(Ze===0||ut===0)return Cr;let{ctx:ve,buffer:xe,gridInner:Ie,gridOuter:ze}=this;ve.clearRect(xe,xe,Ze,ut),ve.fillText(ue,xe,xe+Fe);let Qe=ve.getImageData(xe,xe,Ze,ut);ze.fill(z,0,$t),Ie.fill(0,0,$t);for(let Xe=0;Xe0?nr*nr:0,Ie[Wt]=nr<0?nr*nr:0}}q(ze,0,0,Mt,Jt,Mt,this.f,this.v,this.z),q(Ie,xe,xe,Ze,ut,Mt,this.f,this.v,this.z);for(let Xe=0;Xe<$t;Xe++){let nt=Math.sqrt(ze[Xe])-Math.sqrt(Ie[Xe]);yr[Xe]=Math.round(255-255*(nt/this.radius+this.cutoff))}return Cr}};class Z{constructor(){this.specification=a.v.light.position}possiblyEvaluate(w,B){return a.x(w.expression.evaluate(B))}interpolate(w,B,Q){return{x:a.y.number(w.x,B.x,Q),y:a.y.number(w.y,B.y,Q),z:a.y.number(w.z,B.z,Q)}}}let j;class N extends a.E{constructor(w){super(),j=j||new a.q({anchor:new a.D(a.v.light.anchor),position:new Z,color:new a.D(a.v.light.color),intensity:new a.D(a.v.light.intensity)}),this._transitionable=new a.T(j),this.setLight(w),this._transitioning=this._transitionable.untransitioned()}getLight(){return this._transitionable.serialize()}setLight(w,B={}){if(!this._validate(a.r,w,B))for(let Q in w){let ee=w[Q];Q.endsWith("-transition")?this._transitionable.setTransition(Q.slice(0,-11),ee):this._transitionable.setValue(Q,ee)}}updateTransitions(w){this._transitioning=this._transitionable.transitioned(w,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(w){this.properties=this._transitioning.possiblyEvaluate(w)}_validate(w,B,Q){return(!Q||Q.validate!==!1)&&a.t(this,w.call(a.u,{value:B,style:{glyphs:!0,sprite:!0},styleSpec:a.v}))}}let H=new a.q({"sky-color":new a.D(a.v.sky["sky-color"]),"horizon-color":new a.D(a.v.sky["horizon-color"]),"fog-color":new a.D(a.v.sky["fog-color"]),"fog-ground-blend":new a.D(a.v.sky["fog-ground-blend"]),"horizon-fog-blend":new a.D(a.v.sky["horizon-fog-blend"]),"sky-horizon-blend":new a.D(a.v.sky["sky-horizon-blend"]),"atmosphere-blend":new a.D(a.v.sky["atmosphere-blend"])});class ie extends a.E{constructor(w){super(),this._transitionable=new a.T(H),this.setSky(w),this._transitioning=this._transitionable.untransitioned(),this.recalculate(new a.z(0))}setSky(w,B={}){if(!this._validate(a.B,w,B)){w||(w={"sky-color":"transparent","horizon-color":"transparent","fog-color":"transparent","fog-ground-blend":1,"atmosphere-blend":0});for(let Q in w){let ee=w[Q];Q.endsWith("-transition")?this._transitionable.setTransition(Q.slice(0,-11),ee):this._transitionable.setValue(Q,ee)}}}getSky(){return this._transitionable.serialize()}updateTransitions(w){this._transitioning=this._transitionable.transitioned(w,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(w){this.properties=this._transitioning.possiblyEvaluate(w)}_validate(w,B,Q={}){return(Q==null?void 0:Q.validate)!==!1&&a.t(this,w.call(a.u,a.e({value:B,style:{glyphs:!0,sprite:!0},styleSpec:a.v})))}calculateFogBlendOpacity(w){return w<60?0:w<70?(w-60)/10:1}}class ae{constructor(w,B){this.width=w,this.height=B,this.nextRow=0,this.data=new Uint8Array(this.width*this.height),this.dashEntry={}}getDash(w,B){let Q=w.join(",")+String(B);return this.dashEntry[Q]||(this.dashEntry[Q]=this.addDash(w,B)),this.dashEntry[Q]}getDashRanges(w,B,Q){let ee=[],le=w.length%2==1?-w[w.length-1]*Q:0,Fe=w[0]*Q,Ze=!0;ee.push({left:le,right:Fe,isDash:Ze,zeroLength:w[0]===0});let ut=w[0];for(let Mt=1;Mt1&&(ut=w[++Ze]);let Jt=Math.abs(Mt-ut.left),$t=Math.abs(Mt-ut.right),yr=Math.min(Jt,$t),Cr,ve=le/Q*(ee+1);if(ut.isDash){let xe=ee-Math.abs(ve);Cr=Math.sqrt(yr*yr+xe*xe)}else Cr=ee-Math.sqrt(yr*yr+ve*ve);this.data[Fe+Mt]=Math.max(0,Math.min(255,Cr+128))}}}addRegularDash(w){for(let Ze=w.length-1;Ze>=0;--Ze){let ut=w[Ze],Mt=w[Ze+1];ut.zeroLength?w.splice(Ze,1):Mt&&Mt.isDash===ut.isDash&&(Mt.left=ut.left,w.splice(Ze,1))}let B=w[0],Q=w[w.length-1];B.isDash===Q.isDash&&(B.left=Q.left-this.width,Q.right=B.right+this.width);let ee=this.width*this.nextRow,le=0,Fe=w[le];for(let Ze=0;Ze1&&(Fe=w[++le]);let ut=Math.abs(Ze-Fe.left),Mt=Math.abs(Ze-Fe.right),Jt=Math.min(ut,Mt);this.data[ee+Ze]=Math.max(0,Math.min(255,(Fe.isDash?Jt:-Jt)+128))}}addDash(w,B){let Q=B?7:0,ee=2*Q+1;if(this.nextRow+ee>this.height)return a.w("LineAtlas out of space"),null;let le=0;for(let Ze=0;Ze{B.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[_e]}numActive(){return Object.keys(this.active).length}}let Ce=Math.floor(u.hardwareConcurrency/2),ge,re;function Se(){return ge||(ge=new Ee),ge}Ee.workerCount=a.C(globalThis)?Math.max(Math.min(Ce,3),1):1;class ke{constructor(w,B){this.workerPool=w,this.actors=[],this.currentActor=0,this.id=B;let Q=this.workerPool.acquire(B);for(let ee=0;ee{B.remove()}),this.actors=[],w&&this.workerPool.release(this.id)}registerMessageHandler(w,B){for(let Q of this.actors)Q.registerMessageHandler(w,B)}}function be(){return re||(re=new ke(Se(),a.G),re.registerMessageHandler("GR",(ue,w,B)=>a.m(w,B))),re}function Be(ue,w){let B=a.H();return a.J(B,B,[1,1,0]),a.K(B,B,[.5*ue.width,.5*ue.height,1]),a.L(B,B,ue.calculatePosMatrix(w.toUnwrapped()))}function Le(ue,w,B,Q,ee,le){let Fe=function($t,yr,Cr){if($t)for(let ve of $t){let xe=yr[ve];if(xe&&xe.source===Cr&&xe.type==="fill-extrusion")return!0}else for(let ve in yr){let xe=yr[ve];if(xe.source===Cr&&xe.type==="fill-extrusion")return!0}return!1}(ee&&ee.layers,w,ue.id),Ze=le.maxPitchScaleFactor(),ut=ue.tilesIn(Q,Ze,Fe);ut.sort(me);let Mt=[];for(let $t of ut)Mt.push({wrappedTileID:$t.tileID.wrapped().key,queryResults:$t.tile.queryRenderedFeatures(w,B,ue._state,$t.queryGeometry,$t.cameraQueryGeometry,$t.scale,ee,le,Ze,Be(ue.transform,$t.tileID))});let Jt=function($t){let yr={},Cr={};for(let ve of $t){let xe=ve.queryResults,Ie=ve.wrappedTileID,ze=Cr[Ie]=Cr[Ie]||{};for(let Qe in xe){let Xe=xe[Qe],nt=ze[Qe]=ze[Qe]||{},qt=yr[Qe]=yr[Qe]||[];for(let Wt of Xe)nt[Wt.featureIndex]||(nt[Wt.featureIndex]=!0,qt.push(Wt))}}return yr}(Mt);for(let $t in Jt)Jt[$t].forEach(yr=>{let Cr=yr.feature,ve=ue.getFeatureState(Cr.layer["source-layer"],Cr.id);Cr.source=Cr.layer.source,Cr.layer["source-layer"]&&(Cr.sourceLayer=Cr.layer["source-layer"]),Cr.state=ve});return Jt}function me(ue,w){let B=ue.tileID,Q=w.tileID;return B.overscaledZ-Q.overscaledZ||B.canonical.y-Q.canonical.y||B.wrap-Q.wrap||B.canonical.x-Q.canonical.x}function Pe(ue,w,B){return a._(this,void 0,void 0,function*(){let Q=ue;if(ue.url?Q=(yield a.h(w.transformRequest(ue.url,"Source"),B)).data:yield u.frameAsync(B),!Q)return null;let ee=a.M(a.e(Q,ue),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return"vector_layers"in Q&&Q.vector_layers&&(ee.vectorLayerIds=Q.vector_layers.map(le=>le.id)),ee})}class ce{constructor(w,B){w&&(B?this.setSouthWest(w).setNorthEast(B):Array.isArray(w)&&(w.length===4?this.setSouthWest([w[0],w[1]]).setNorthEast([w[2],w[3]]):this.setSouthWest(w[0]).setNorthEast(w[1])))}setNorthEast(w){return this._ne=w instanceof a.N?new a.N(w.lng,w.lat):a.N.convert(w),this}setSouthWest(w){return this._sw=w instanceof a.N?new a.N(w.lng,w.lat):a.N.convert(w),this}extend(w){let B=this._sw,Q=this._ne,ee,le;if(w instanceof a.N)ee=w,le=w;else{if(!(w instanceof ce))return Array.isArray(w)?w.length===4||w.every(Array.isArray)?this.extend(ce.convert(w)):this.extend(a.N.convert(w)):w&&("lng"in w||"lon"in w)&&"lat"in w?this.extend(a.N.convert(w)):this;if(ee=w._sw,le=w._ne,!ee||!le)return this}return B||Q?(B.lng=Math.min(ee.lng,B.lng),B.lat=Math.min(ee.lat,B.lat),Q.lng=Math.max(le.lng,Q.lng),Q.lat=Math.max(le.lat,Q.lat)):(this._sw=new a.N(ee.lng,ee.lat),this._ne=new a.N(le.lng,le.lat)),this}getCenter(){return new a.N((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new a.N(this.getWest(),this.getNorth())}getSouthEast(){return new a.N(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(w){let{lng:B,lat:Q}=a.N.convert(w),ee=this._sw.lng<=B&&B<=this._ne.lng;return this._sw.lng>this._ne.lng&&(ee=this._sw.lng>=B&&B>=this._ne.lng),this._sw.lat<=Q&&Q<=this._ne.lat&&ee}static convert(w){return w instanceof ce?w:w&&new ce(w)}static fromLngLat(w,B=0){let Q=360*B/40075017,ee=Q/Math.cos(Math.PI/180*w.lat);return new ce(new a.N(w.lng-ee,w.lat-Q),new a.N(w.lng+ee,w.lat+Q))}adjustAntiMeridian(){let w=new a.N(this._sw.lng,this._sw.lat),B=new a.N(this._ne.lng,this._ne.lat);return new ce(w,w.lng>B.lng?new a.N(B.lng+360,B.lat):B)}}class He{constructor(w,B,Q){this.bounds=ce.convert(this.validateBounds(w)),this.minzoom=B||0,this.maxzoom=Q||24}validateBounds(w){return Array.isArray(w)&&w.length===4?[Math.max(-180,w[0]),Math.max(-90,w[1]),Math.min(180,w[2]),Math.min(90,w[3])]:[-180,-90,180,90]}contains(w){let B=Math.pow(2,w.z),Q=Math.floor(a.O(this.bounds.getWest())*B),ee=Math.floor(a.Q(this.bounds.getNorth())*B),le=Math.ceil(a.O(this.bounds.getEast())*B),Fe=Math.ceil(a.Q(this.bounds.getSouth())*B);return w.x>=Q&&w.x=ee&&w.y{this._options.tiles=w}),this}setUrl(w){return this.setSourceProperty(()=>{this.url=w,this._options.url=w}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}serialize(){return a.e({},this._options)}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),Q={request:this.map._requestManager.transformRequest(B,"Tile"),uid:w.uid,tileID:w.tileID,zoom:w.tileID.overscaledZ,tileSize:this.tileSize*w.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};Q.request.collectResourceTiming=this._collectResourceTiming;let ee="RT";if(w.actor&&w.state!=="expired"){if(w.state==="loading")return new Promise((le,Fe)=>{w.reloadPromise={resolve:le,reject:Fe}})}else w.actor=this.dispatcher.getActor(),ee="LT";w.abortController=new AbortController;try{let le=yield w.actor.sendAsync({type:ee,data:Q},w.abortController);if(delete w.abortController,w.aborted)return;this._afterTileLoadWorkerResponse(w,le)}catch(le){if(delete w.abortController,w.aborted)return;if(le&&le.status!==404)throw le;this._afterTileLoadWorkerResponse(w,null)}})}_afterTileLoadWorkerResponse(w,B){if(B&&B.resourceTiming&&(w.resourceTiming=B.resourceTiming),B&&this.map._refreshExpiredTiles&&w.setExpiryData(B),w.loadVectorData(B,this.map.painter),w.reloadPromise){let Q=w.reloadPromise;w.reloadPromise=null,this.loadTile(w).then(Q.resolve).catch(Q.reject)}}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController),w.actor&&(yield w.actor.sendAsync({type:"AT",data:{uid:w.uid,type:this.type,source:this.id}}))})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.unloadVectorData(),w.actor&&(yield w.actor.sendAsync({type:"RMT",data:{uid:w.uid,type:this.type,source:this.id}}))})}hasTransition(){return!1}}class mt extends a.E{constructor(w,B,Q,ee){super(),this.id=w,this.dispatcher=Q,this.setEventedParent(ee),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=a.e({type:"raster"},B),a.e(this,a.M(B,["url","scheme","tileSize"]))}load(){return a._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new a.k("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{let w=yield Pe(this._options,this.map._requestManager,this._tileJSONRequest);this._tileJSONRequest=null,this._loaded=!0,w&&(a.e(this,w),w.bounds&&(this.tileBounds=new He(w.bounds,this.minzoom,this.maxzoom)),this.fire(new a.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new a.k("data",{dataType:"source",sourceDataType:"content"})))}catch(w){this._tileJSONRequest=null,this.fire(new a.j(w))}})}loaded(){return this._loaded}onAdd(w){this.map=w,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}setSourceProperty(w){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),w(),this.load()}setTiles(w){return this.setSourceProperty(()=>{this._options.tiles=w}),this}setUrl(w){return this.setSourceProperty(()=>{this.url=w,this._options.url=w}),this}serialize(){return a.e({},this._options)}hasTile(w){return!this.tileBounds||this.tileBounds.contains(w.canonical)}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);w.abortController=new AbortController;try{let Q=yield p.getImage(this.map._requestManager.transformRequest(B,"Tile"),w.abortController,this.map._refreshExpiredTiles);if(delete w.abortController,w.aborted)return void(w.state="unloaded");if(Q&&Q.data){this.map._refreshExpiredTiles&&Q.cacheControl&&Q.expires&&w.setExpiryData({cacheControl:Q.cacheControl,expires:Q.expires});let ee=this.map.painter.context,le=ee.gl,Fe=Q.data;w.texture=this.map.painter.getTileTexture(Fe.width),w.texture?w.texture.update(Fe,{useMipmap:!0}):(w.texture=new g(ee,Fe,le.RGBA,{useMipmap:!0}),w.texture.bind(le.LINEAR,le.CLAMP_TO_EDGE,le.LINEAR_MIPMAP_NEAREST)),w.state="loaded"}}catch(Q){if(delete w.abortController,w.aborted)w.state="unloaded";else if(Q)throw w.state="errored",Q}})}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController)})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.texture&&this.map.painter.saveTileTexture(w.texture)})}hasTransition(){return!1}}class Ht extends mt{constructor(w,B,Q,ee){super(w,B,Q,ee),this.type="raster-dem",this.maxzoom=22,this._options=a.e({type:"raster-dem"},B),this.encoding=B.encoding||"mapbox",this.redFactor=B.redFactor,this.greenFactor=B.greenFactor,this.blueFactor=B.blueFactor,this.baseShift=B.baseShift}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),Q=this.map._requestManager.transformRequest(B,"Tile");w.neighboringTiles=this._getNeighboringTiles(w.tileID),w.abortController=new AbortController;try{let ee=yield p.getImage(Q,w.abortController,this.map._refreshExpiredTiles);if(delete w.abortController,w.aborted)return void(w.state="unloaded");if(ee&&ee.data){let le=ee.data;this.map._refreshExpiredTiles&&ee.cacheControl&&ee.expires&&w.setExpiryData({cacheControl:ee.cacheControl,expires:ee.expires});let Fe=a.b(le)&&a.U()?le:yield this.readImageNow(le),Ze={type:this.type,uid:w.uid,source:this.id,rawImageData:Fe,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(!w.actor||w.state==="expired"){w.actor=this.dispatcher.getActor();let ut=yield w.actor.sendAsync({type:"LDT",data:Ze});w.dem=ut,w.needsHillshadePrepare=!0,w.needsTerrainPrepare=!0,w.state="loaded"}}}catch(ee){if(delete w.abortController,w.aborted)w.state="unloaded";else if(ee)throw w.state="errored",ee}})}readImageNow(w){return a._(this,void 0,void 0,function*(){if(typeof VideoFrame!="undefined"&&a.V()){let B=w.width+2,Q=w.height+2;try{return new a.R({width:B,height:Q},yield a.W(w,-1,-1,B,Q))}catch(ee){}}return u.getImageData(w,1)})}_getNeighboringTiles(w){let B=w.canonical,Q=Math.pow(2,B.z),ee=(B.x-1+Q)%Q,le=B.x===0?w.wrap-1:w.wrap,Fe=(B.x+1+Q)%Q,Ze=B.x+1===Q?w.wrap+1:w.wrap,ut={};return ut[new a.S(w.overscaledZ,le,B.z,ee,B.y).key]={backfilled:!1},ut[new a.S(w.overscaledZ,Ze,B.z,Fe,B.y).key]={backfilled:!1},B.y>0&&(ut[new a.S(w.overscaledZ,le,B.z,ee,B.y-1).key]={backfilled:!1},ut[new a.S(w.overscaledZ,w.wrap,B.z,B.x,B.y-1).key]={backfilled:!1},ut[new a.S(w.overscaledZ,Ze,B.z,Fe,B.y-1).key]={backfilled:!1}),B.y+10&&a.e(le,{resourceTiming:ee}),this.fire(new a.k("data",Object.assign(Object.assign({},le),{sourceDataType:"metadata"}))),this.fire(new a.k("data",Object.assign(Object.assign({},le),{sourceDataType:"content"})))}catch(Q){if(this._pendingLoads--,this._removed)return void this.fire(new a.k("dataabort",{dataType:"source"}));this.fire(new a.j(Q))}})}loaded(){return this._pendingLoads===0}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.actor?"RT":"LT";w.actor=this.actor;let Q={type:this.type,uid:w.uid,tileID:w.tileID,zoom:w.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};w.abortController=new AbortController;let ee=yield this.actor.sendAsync({type:B,data:Q},w.abortController);delete w.abortController,w.unloadVectorData(),w.aborted||w.loadVectorData(ee,this.map.painter,B==="RT")})}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController),w.aborted=!0})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:w.uid,type:this.type,source:this.id}})})}onRemove(){this._removed=!0,this.actor.sendAsync({type:"RS",data:{type:this.type,source:this.id}})}serialize(){return a.e({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}}var ct=a.Y([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class ar extends a.E{constructor(w,B,Q,ee){super(),this.id=w,this.dispatcher=Q,this.coordinates=B.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(ee),this.options=B}load(w){return a._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new a.k("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{let B=yield p.getImage(this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,B&&B.data&&(this.image=B.data,w&&(this.coordinates=w),this._finishLoading())}catch(B){this._request=null,this._loaded=!0,this.fire(new a.j(B))}})}loaded(){return this._loaded}updateImage(w){return w.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=w.url,this.load(w.coordinates).finally(()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new a.k("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(w){this.map=w,this.load()}onRemove(){this._request&&(this._request.abort(),this._request=null)}setCoordinates(w){this.coordinates=w;let B=w.map(a.Z.fromLngLat);this.tileID=function(ee){let le=1/0,Fe=1/0,Ze=-1/0,ut=-1/0;for(let yr of ee)le=Math.min(le,yr.x),Fe=Math.min(Fe,yr.y),Ze=Math.max(Ze,yr.x),ut=Math.max(ut,yr.y);let Mt=Math.max(Ze-le,ut-Fe),Jt=Math.max(0,Math.floor(-Math.log(Mt)/Math.LN2)),$t=Math.pow(2,Jt);return new a.a1(Jt,Math.floor((le+Ze)/2*$t),Math.floor((Fe+ut)/2*$t))}(B),this.minzoom=this.maxzoom=this.tileID.z;let Q=B.map(ee=>this.tileID.getTilePoint(ee)._round());return this._boundsArray=new a.$,this._boundsArray.emplaceBack(Q[0].x,Q[0].y,0,0),this._boundsArray.emplaceBack(Q[1].x,Q[1].y,a.X,0),this._boundsArray.emplaceBack(Q[3].x,Q[3].y,0,a.X),this._boundsArray.emplaceBack(Q[2].x,Q[2].y,a.X,a.X),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new a.k("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;let w=this.map.painter.context,B=w.gl;this.boundsBuffer||(this.boundsBuffer=w.createVertexBuffer(this._boundsArray,ct.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture||(this.texture=new g(w,this.image,B.RGBA),this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE));let Q=!1;for(let ee in this.tiles){let le=this.tiles[ee];le.state!=="loaded"&&(le.state="loaded",le.texture=this.texture,Q=!0)}Q&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(w){return a._(this,void 0,void 0,function*(){this.tileID&&this.tileID.equals(w.tileID.canonical)?(this.tiles[String(w.tileID.wrap)]=w,w.buckets={}):w.state="errored"})}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}class Vt extends ar{constructor(w,B,Q,ee){super(w,B,Q,ee),this.roundZoom=!0,this.type="video",this.options=B}load(){return a._(this,void 0,void 0,function*(){this._loaded=!1;let w=this.options;this.urls=[];for(let B of w.urls)this.urls.push(this.map._requestManager.transformRequest(B,"Source").url);try{let B=yield a.a3(this.urls);if(this._loaded=!0,!B)return;this.video=B,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading()}catch(B){this.fire(new a.j(B))}})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(w){if(this.video){let B=this.video.seekable;wB.end(0)?this.fire(new a.j(new a.a2(`sources.${this.id}`,null,`Playback for this video can be set only between the ${B.start(0)} and ${B.end(0)}-second mark.`))):this.video.currentTime=w}}getVideo(){return this.video}onAdd(w){this.map||(this.map=w,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;let w=this.map.painter.context,B=w.gl;this.boundsBuffer||(this.boundsBuffer=w.createVertexBuffer(this._boundsArray,ct.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE),B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,this.video)):(this.texture=new g(w,this.video,B.RGBA),this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE));let Q=!1;for(let ee in this.tiles){let le=this.tiles[ee];le.state!=="loaded"&&(le.state="loaded",le.texture=this.texture,Q=!0)}Q&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class rr extends ar{constructor(w,B,Q,ee){super(w,B,Q,ee),B.coordinates?Array.isArray(B.coordinates)&&B.coordinates.length===4&&!B.coordinates.some(le=>!Array.isArray(le)||le.length!==2||le.some(Fe=>typeof Fe!="number"))||this.fire(new a.j(new a.a2(`sources.${w}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new a.j(new a.a2(`sources.${w}`,null,'missing required property "coordinates"'))),B.animate&&typeof B.animate!="boolean"&&this.fire(new a.j(new a.a2(`sources.${w}`,null,'optional "animate" property must be a boolean value'))),B.canvas?typeof B.canvas=="string"||B.canvas instanceof HTMLCanvasElement||this.fire(new a.j(new a.a2(`sources.${w}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new a.j(new a.a2(`sources.${w}`,null,'missing required property "canvas"'))),this.options=B,this.animate=B.animate===void 0||B.animate}load(){return a._(this,void 0,void 0,function*(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new a.j(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())})}getCanvas(){return this.canvas}onAdd(w){this.map=w,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let w=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,w=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,w=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;let B=this.map.painter.context,Q=B.gl;this.boundsBuffer||(this.boundsBuffer=B.createVertexBuffer(this._boundsArray,ct.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture?(w||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new g(B,this.canvas,Q.RGBA,{premultiply:!0});let ee=!1;for(let le in this.tiles){let Fe=this.tiles[le];Fe.state!=="loaded"&&(Fe.state="loaded",Fe.texture=this.texture,ee=!0)}ee&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let w of[this.canvas.width,this.canvas.height])if(isNaN(w)||w<=0)return!0;return!1}}let tt={},je=ue=>{switch(ue){case"geojson":return at;case"image":return ar;case"raster":return mt;case"raster-dem":return Ht;case"vector":return lt;case"video":return Vt;case"canvas":return rr}return tt[ue]},Ue="RTLPluginLoaded";class Ae extends a.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=be()}_syncState(w){return this.status=w,this.dispatcher.broadcast("SRPS",{pluginStatus:w,pluginURL:this.url}).catch(B=>{throw this.status="error",B})}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null}setRTLTextPlugin(w){return a._(this,arguments,void 0,function*(B,Q=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=u.resolveURL(B),!this.url)throw new Error(`requested url ${B} is invalid`);if(this.status==="unavailable"){if(!Q)return this._requestImport();this.status="deferred",this._syncState(this.status)}else if(this.status==="requested")return this._requestImport()})}_requestImport(){return a._(this,void 0,void 0,function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new a.k(Ue))})}lazyLoad(){this.status==="unavailable"?this.status="requested":this.status==="deferred"&&this._requestImport()}}let rt=null;function St(){return rt||(rt=new Ae),rt}class Tt{constructor(w,B){this.timeAdded=0,this.fadeEndTime=0,this.tileID=w,this.uid=a.a4(),this.uses=0,this.tileSize=B,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state="loading"}registerFadeDuration(w){let B=w+this.timeAdded;Ble.getLayer(Mt)).filter(Boolean);if(ut.length!==0){Ze.layers=ut,Ze.stateDependentLayerIds&&(Ze.stateDependentLayers=Ze.stateDependentLayerIds.map(Mt=>ut.filter(Jt=>Jt.id===Mt)[0]));for(let Mt of ut)Fe[Mt.id]=Ze}}return Fe}(w.buckets,B.style),this.hasSymbolBuckets=!1;for(let ee in this.buckets){let le=this.buckets[ee];if(le instanceof a.a6){if(this.hasSymbolBuckets=!0,!Q)break;le.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let ee in this.buckets){let le=this.buckets[ee];if(le instanceof a.a6&&le.hasRTLText){this.hasRTLText=!0,St().lazyLoad();break}}this.queryPadding=0;for(let ee in this.buckets){let le=this.buckets[ee];this.queryPadding=Math.max(this.queryPadding,B.style.getLayer(ee).queryRadius(le))}w.imageAtlas&&(this.imageAtlas=w.imageAtlas),w.glyphAtlasImage&&(this.glyphAtlasImage=w.glyphAtlasImage)}else this.collisionBoxArray=new a.a5}unloadVectorData(){for(let w in this.buckets)this.buckets[w].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(w){return this.buckets[w.id]}upload(w){for(let Q in this.buckets){let ee=this.buckets[Q];ee.uploadPending()&&ee.upload(w)}let B=w.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new g(w,this.imageAtlas.image,B.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new g(w,this.glyphAtlasImage,B.ALPHA),this.glyphAtlasImage=null)}prepare(w){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(w,this.imageAtlasTexture)}queryRenderedFeatures(w,B,Q,ee,le,Fe,Ze,ut,Mt,Jt){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:ee,cameraQueryGeometry:le,scale:Fe,tileSize:this.tileSize,pixelPosMatrix:Jt,transform:ut,params:Ze,queryPadding:this.queryPadding*Mt},w,B,Q):{}}querySourceFeatures(w,B){let Q=this.latestFeatureIndex;if(!Q||!Q.rawTileData)return;let ee=Q.loadVTLayers(),le=B&&B.sourceLayer?B.sourceLayer:"",Fe=ee._geojsonTileLayer||ee[le];if(!Fe)return;let Ze=a.a7(B&&B.filter),{z:ut,x:Mt,y:Jt}=this.tileID.canonical,$t={z:ut,x:Mt,y:Jt};for(let yr=0;yrQ)ee=!1;else if(B)if(this.expirationTime{this.remove(w,le)},Q)),this.data[ee].push(le),this.order.push(ee),this.order.length>this.max){let Fe=this._getAndRemoveByKey(this.order[0]);Fe&&this.onRemove(Fe)}return this}has(w){return w.wrapped().key in this.data}getAndRemove(w){return this.has(w)?this._getAndRemoveByKey(w.wrapped().key):null}_getAndRemoveByKey(w){let B=this.data[w].shift();return B.timeout&&clearTimeout(B.timeout),this.data[w].length===0&&delete this.data[w],this.order.splice(this.order.indexOf(w),1),B.value}getByKey(w){let B=this.data[w];return B?B[0].value:null}get(w){return this.has(w)?this.data[w.wrapped().key][0].value:null}remove(w,B){if(!this.has(w))return this;let Q=w.wrapped().key,ee=B===void 0?0:this.data[Q].indexOf(B),le=this.data[Q][ee];return this.data[Q].splice(ee,1),le.timeout&&clearTimeout(le.timeout),this.data[Q].length===0&&delete this.data[Q],this.onRemove(le.value),this.order.splice(this.order.indexOf(Q),1),this}setMaxSize(w){for(this.max=w;this.order.length>this.max;){let B=this._getAndRemoveByKey(this.order[0]);B&&this.onRemove(B)}return this}filter(w){let B=[];for(let Q in this.data)for(let ee of this.data[Q])w(ee.value)||B.push(ee);for(let Q of B)this.remove(Q.value.tileID,Q)}}class Et{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(w,B,Q){let ee=String(B);if(this.stateChanges[w]=this.stateChanges[w]||{},this.stateChanges[w][ee]=this.stateChanges[w][ee]||{},a.e(this.stateChanges[w][ee],Q),this.deletedStates[w]===null){this.deletedStates[w]={};for(let le in this.state[w])le!==ee&&(this.deletedStates[w][le]=null)}else if(this.deletedStates[w]&&this.deletedStates[w][ee]===null){this.deletedStates[w][ee]={};for(let le in this.state[w][ee])Q[le]||(this.deletedStates[w][ee][le]=null)}else for(let le in Q)this.deletedStates[w]&&this.deletedStates[w][ee]&&this.deletedStates[w][ee][le]===null&&delete this.deletedStates[w][ee][le]}removeFeatureState(w,B,Q){if(this.deletedStates[w]===null)return;let ee=String(B);if(this.deletedStates[w]=this.deletedStates[w]||{},Q&&B!==void 0)this.deletedStates[w][ee]!==null&&(this.deletedStates[w][ee]=this.deletedStates[w][ee]||{},this.deletedStates[w][ee][Q]=null);else if(B!==void 0)if(this.stateChanges[w]&&this.stateChanges[w][ee])for(Q in this.deletedStates[w][ee]={},this.stateChanges[w][ee])this.deletedStates[w][ee][Q]=null;else this.deletedStates[w][ee]=null;else this.deletedStates[w]=null}getState(w,B){let Q=String(B),ee=a.e({},(this.state[w]||{})[Q],(this.stateChanges[w]||{})[Q]);if(this.deletedStates[w]===null)return{};if(this.deletedStates[w]){let le=this.deletedStates[w][B];if(le===null)return{};for(let Fe in le)delete ee[Fe]}return ee}initializeTileState(w,B){w.setFeatureState(this.state,B)}coalesceChanges(w,B){let Q={};for(let ee in this.stateChanges){this.state[ee]=this.state[ee]||{};let le={};for(let Fe in this.stateChanges[ee])this.state[ee][Fe]||(this.state[ee][Fe]={}),a.e(this.state[ee][Fe],this.stateChanges[ee][Fe]),le[Fe]=this.state[ee][Fe];Q[ee]=le}for(let ee in this.deletedStates){this.state[ee]=this.state[ee]||{};let le={};if(this.deletedStates[ee]===null)for(let Fe in this.state[ee])le[Fe]={},this.state[ee][Fe]={};else for(let Fe in this.deletedStates[ee]){if(this.deletedStates[ee][Fe]===null)this.state[ee][Fe]={};else for(let Ze of Object.keys(this.deletedStates[ee][Fe]))delete this.state[ee][Fe][Ze];le[Fe]=this.state[ee][Fe]}Q[ee]=Q[ee]||{},a.e(Q[ee],le)}if(this.stateChanges={},this.deletedStates={},Object.keys(Q).length!==0)for(let ee in w)w[ee].setFeatureState(Q,B)}}class pt extends a.E{constructor(w,B,Q){super(),this.id=w,this.dispatcher=Q,this.on("data",ee=>this._dataHandler(ee)),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=((ee,le,Fe,Ze)=>{let ut=new(je(le.type))(ee,le,Fe,Ze);if(ut.id!==ee)throw new Error(`Expected Source id to be ${ee} instead of ${ut.id}`);return ut})(w,B,Q,this),this._tiles={},this._cache=new dt(0,ee=>this._unloadTile(ee)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new Et,this._didEmitContent=!1,this._updated=!1}onAdd(w){this.map=w,this._maxTileCacheSize=w?w._maxTileCacheSize:null,this._maxTileCacheZoomLevels=w?w._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(w)}onRemove(w){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(w)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(let w in this._tiles){let B=this._tiles[w];if(B.state!=="loaded"&&B.state!=="errored")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;let w=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,w&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(w,B,Q){return a._(this,void 0,void 0,function*(){try{yield this._source.loadTile(w),this._tileLoaded(w,B,Q)}catch(ee){w.state="errored",ee.status!==404?this._source.fire(new a.j(ee,{tile:w})):this.update(this.transform,this.terrain)}})}_unloadTile(w){this._source.unloadTile&&this._source.unloadTile(w)}_abortTile(w){this._source.abortTile&&this._source.abortTile(w),this._source.fire(new a.k("dataabort",{tile:w,coord:w.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(w){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(let B in this._tiles){let Q=this._tiles[B];Q.upload(w),Q.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(w=>w.tileID).sort(jt).map(w=>w.key)}getRenderableIds(w){let B=[];for(let Q in this._tiles)this._isIdRenderable(Q,w)&&B.push(this._tiles[Q]);return w?B.sort((Q,ee)=>{let le=Q.tileID,Fe=ee.tileID,Ze=new a.P(le.canonical.x,le.canonical.y)._rotate(this.transform.angle),ut=new a.P(Fe.canonical.x,Fe.canonical.y)._rotate(this.transform.angle);return le.overscaledZ-Fe.overscaledZ||ut.y-Ze.y||ut.x-Ze.x}).map(Q=>Q.tileID.key):B.map(Q=>Q.tileID).sort(jt).map(Q=>Q.key)}hasRenderableParent(w){let B=this.findLoadedParent(w,0);return!!B&&this._isIdRenderable(B.tileID.key)}_isIdRenderable(w,B){return this._tiles[w]&&this._tiles[w].hasData()&&!this._coveredTiles[w]&&(B||!this._tiles[w].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(let w in this._tiles)this._tiles[w].state!=="errored"&&this._reloadTile(w,"reloading")}}_reloadTile(w,B){return a._(this,void 0,void 0,function*(){let Q=this._tiles[w];Q&&(Q.state!=="loading"&&(Q.state=B),yield this._loadTile(Q,w,B))})}_tileLoaded(w,B,Q){w.timeAdded=u.now(),Q==="expired"&&(w.refreshedUponExpiration=!0),this._setTileReloadTimer(B,w),this.getSource().type==="raster-dem"&&w.dem&&this._backfillDEM(w),this._state.initializeTileState(w,this.map?this.map.painter:null),w.aborted||this._source.fire(new a.k("data",{dataType:"source",tile:w,coord:w.tileID}))}_backfillDEM(w){let B=this.getRenderableIds();for(let ee=0;ee1||(Math.abs(Fe)>1&&(Math.abs(Fe+ut)===1?Fe+=ut:Math.abs(Fe-ut)===1&&(Fe-=ut)),le.dem&&ee.dem&&(ee.dem.backfillBorder(le.dem,Fe,Ze),ee.neighboringTiles&&ee.neighboringTiles[Mt]&&(ee.neighboringTiles[Mt].backfilled=!0)))}}getTile(w){return this.getTileByID(w.key)}getTileByID(w){return this._tiles[w]}_retainLoadedChildren(w,B,Q,ee){for(let le in this._tiles){let Fe=this._tiles[le];if(ee[le]||!Fe.hasData()||Fe.tileID.overscaledZ<=B||Fe.tileID.overscaledZ>Q)continue;let Ze=Fe.tileID;for(;Fe&&Fe.tileID.overscaledZ>B+1;){let Mt=Fe.tileID.scaledTo(Fe.tileID.overscaledZ-1);Fe=this._tiles[Mt.key],Fe&&Fe.hasData()&&(Ze=Mt)}let ut=Ze;for(;ut.overscaledZ>B;)if(ut=ut.scaledTo(ut.overscaledZ-1),w[ut.key]){ee[Ze.key]=Ze;break}}}findLoadedParent(w,B){if(w.key in this._loadedParentTiles){let Q=this._loadedParentTiles[w.key];return Q&&Q.tileID.overscaledZ>=B?Q:null}for(let Q=w.overscaledZ-1;Q>=B;Q--){let ee=w.scaledTo(Q),le=this._getLoadedTile(ee);if(le)return le}}findLoadedSibling(w){return this._getLoadedTile(w)}_getLoadedTile(w){let B=this._tiles[w.key];return B&&B.hasData()?B:this._cache.getByKey(w.wrapped().key)}updateCacheSize(w){let B=Math.ceil(w.width/this._source.tileSize)+1,Q=Math.ceil(w.height/this._source.tileSize)+1,ee=Math.floor(B*Q*(this._maxTileCacheZoomLevels===null?a.a.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),le=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,ee):ee;this._cache.setMaxSize(le)}handleWrapJump(w){let B=Math.round((w-(this._prevLng===void 0?w:this._prevLng))/360);if(this._prevLng=w,B){let Q={};for(let ee in this._tiles){let le=this._tiles[ee];le.tileID=le.tileID.unwrapTo(le.tileID.wrap+B),Q[le.tileID.key]=le}this._tiles=Q;for(let ee in this._timers)clearTimeout(this._timers[ee]),delete this._timers[ee];for(let ee in this._tiles)this._setTileReloadTimer(ee,this._tiles[ee])}}_updateCoveredAndRetainedTiles(w,B,Q,ee,le,Fe){let Ze={},ut={},Mt=Object.keys(w),Jt=u.now();for(let $t of Mt){let yr=w[$t],Cr=this._tiles[$t];if(!Cr||Cr.fadeEndTime!==0&&Cr.fadeEndTime<=Jt)continue;let ve=this.findLoadedParent(yr,B),xe=this.findLoadedSibling(yr),Ie=ve||xe||null;Ie&&(this._addTile(Ie.tileID),Ze[Ie.tileID.key]=Ie.tileID),ut[$t]=yr}this._retainLoadedChildren(ut,ee,Q,w);for(let $t in Ze)w[$t]||(this._coveredTiles[$t]=!0,w[$t]=Ze[$t]);if(Fe){let $t={},yr={};for(let Cr of le)this._tiles[Cr.key].hasData()?$t[Cr.key]=Cr:yr[Cr.key]=Cr;for(let Cr in yr){let ve=yr[Cr].children(this._source.maxzoom);this._tiles[ve[0].key]&&this._tiles[ve[1].key]&&this._tiles[ve[2].key]&&this._tiles[ve[3].key]&&($t[ve[0].key]=w[ve[0].key]=ve[0],$t[ve[1].key]=w[ve[1].key]=ve[1],$t[ve[2].key]=w[ve[2].key]=ve[2],$t[ve[3].key]=w[ve[3].key]=ve[3],delete yr[Cr])}for(let Cr in yr){let ve=yr[Cr],xe=this.findLoadedParent(ve,this._source.minzoom),Ie=this.findLoadedSibling(ve),ze=xe||Ie||null;if(ze){$t[ze.tileID.key]=w[ze.tileID.key]=ze.tileID;for(let Qe in $t)$t[Qe].isChildOf(ze.tileID)&&delete $t[Qe]}}for(let Cr in this._tiles)$t[Cr]||(this._coveredTiles[Cr]=!0)}}update(w,B){if(!this._sourceLoaded||this._paused)return;let Q;this.transform=w,this.terrain=B,this.updateCacheSize(w),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?Q=w.getVisibleUnwrappedCoordinates(this._source.tileID).map(Jt=>new a.S(Jt.canonical.z,Jt.wrap,Jt.canonical.z,Jt.canonical.x,Jt.canonical.y)):(Q=w.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:B}),this._source.hasTile&&(Q=Q.filter(Jt=>this._source.hasTile(Jt)))):Q=[];let ee=w.coveringZoomLevel(this._source),le=Math.max(ee-pt.maxOverzooming,this._source.minzoom),Fe=Math.max(ee+pt.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){let Jt={};for(let $t of Q)if($t.canonical.z>this._source.minzoom){let yr=$t.scaledTo($t.canonical.z-1);Jt[yr.key]=yr;let Cr=$t.scaledTo(Math.max(this._source.minzoom,Math.min($t.canonical.z,5)));Jt[Cr.key]=Cr}Q=Q.concat(Object.values(Jt))}let Ze=Q.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,Ze&&this.fire(new a.k("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));let ut=this._updateRetainedTiles(Q,ee);or(this._source.type)&&this._updateCoveredAndRetainedTiles(ut,le,Fe,ee,Q,B);for(let Jt in ut)this._tiles[Jt].clearFadeHold();let Mt=a.ab(this._tiles,ut);for(let Jt of Mt){let $t=this._tiles[Jt];$t.hasSymbolBuckets&&!$t.holdingForFade()?$t.setHoldDuration(this.map._fadeDuration):$t.hasSymbolBuckets&&!$t.symbolFadeFinished()||this._removeTile(Jt)}this._updateLoadedParentTileCache(),this._updateLoadedSiblingTileCache()}releaseSymbolFadeTiles(){for(let w in this._tiles)this._tiles[w].holdingForFade()&&this._removeTile(w)}_updateRetainedTiles(w,B){var Q;let ee={},le={},Fe=Math.max(B-pt.maxOverzooming,this._source.minzoom),Ze=Math.max(B+pt.maxUnderzooming,this._source.minzoom),ut={};for(let Mt of w){let Jt=this._addTile(Mt);ee[Mt.key]=Mt,Jt.hasData()||Bthis._source.maxzoom){let yr=Mt.children(this._source.maxzoom)[0],Cr=this.getTile(yr);if(Cr&&Cr.hasData()){ee[yr.key]=yr;continue}}else{let yr=Mt.children(this._source.maxzoom);if(ee[yr[0].key]&&ee[yr[1].key]&&ee[yr[2].key]&&ee[yr[3].key])continue}let $t=Jt.wasRequested();for(let yr=Mt.overscaledZ-1;yr>=Fe;--yr){let Cr=Mt.scaledTo(yr);if(le[Cr.key])break;if(le[Cr.key]=!0,Jt=this.getTile(Cr),!Jt&&$t&&(Jt=this._addTile(Cr)),Jt){let ve=Jt.hasData();if((ve||!(!((Q=this.map)===null||Q===void 0)&&Q.cancelPendingTileRequestsWhileZooming)||$t)&&(ee[Cr.key]=Cr),$t=Jt.wasRequested(),ve)break}}}return ee}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(let w in this._tiles){let B=[],Q,ee=this._tiles[w].tileID;for(;ee.overscaledZ>0;){if(ee.key in this._loadedParentTiles){Q=this._loadedParentTiles[ee.key];break}B.push(ee.key);let le=ee.scaledTo(ee.overscaledZ-1);if(Q=this._getLoadedTile(le),Q)break;ee=le}for(let le of B)this._loadedParentTiles[le]=Q}}_updateLoadedSiblingTileCache(){this._loadedSiblingTiles={};for(let w in this._tiles){let B=this._tiles[w].tileID,Q=this._getLoadedTile(B);this._loadedSiblingTiles[B.key]=Q}}_addTile(w){let B=this._tiles[w.key];if(B)return B;B=this._cache.getAndRemove(w),B&&(this._setTileReloadTimer(w.key,B),B.tileID=w,this._state.initializeTileState(B,this.map?this.map.painter:null),this._cacheTimers[w.key]&&(clearTimeout(this._cacheTimers[w.key]),delete this._cacheTimers[w.key],this._setTileReloadTimer(w.key,B)));let Q=B;return B||(B=new Tt(w,this._source.tileSize*w.overscaleFactor()),this._loadTile(B,w.key,B.state)),B.uses++,this._tiles[w.key]=B,Q||this._source.fire(new a.k("dataloading",{tile:B,coord:B.tileID,dataType:"source"})),B}_setTileReloadTimer(w,B){w in this._timers&&(clearTimeout(this._timers[w]),delete this._timers[w]);let Q=B.getExpiryTimeout();Q&&(this._timers[w]=setTimeout(()=>{this._reloadTile(w,"expired"),delete this._timers[w]},Q))}_removeTile(w){let B=this._tiles[w];B&&(B.uses--,delete this._tiles[w],this._timers[w]&&(clearTimeout(this._timers[w]),delete this._timers[w]),B.uses>0||(B.hasData()&&B.state!=="reloading"?this._cache.add(B.tileID,B,B.getExpiryTimeout()):(B.aborted=!0,this._abortTile(B),this._unloadTile(B))))}_dataHandler(w){let B=w.sourceDataType;w.dataType==="source"&&B==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&w.dataType==="source"&&B==="content"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(let w in this._tiles)this._removeTile(w);this._cache.reset()}tilesIn(w,B,Q){let ee=[],le=this.transform;if(!le)return ee;let Fe=Q?le.getCameraQueryGeometry(w):w,Ze=w.map(ve=>le.pointCoordinate(ve,this.terrain)),ut=Fe.map(ve=>le.pointCoordinate(ve,this.terrain)),Mt=this.getIds(),Jt=1/0,$t=1/0,yr=-1/0,Cr=-1/0;for(let ve of ut)Jt=Math.min(Jt,ve.x),$t=Math.min($t,ve.y),yr=Math.max(yr,ve.x),Cr=Math.max(Cr,ve.y);for(let ve=0;ve=0&&Xe[1].y+Qe>=0){let nt=Ze.map(Wt=>Ie.getTilePoint(Wt)),qt=ut.map(Wt=>Ie.getTilePoint(Wt));ee.push({tile:xe,tileID:Ie,queryGeometry:nt,cameraQueryGeometry:qt,scale:ze})}}return ee}getVisibleCoordinates(w){let B=this.getRenderableIds(w).map(Q=>this._tiles[Q].tileID);for(let Q of B)Q.posMatrix=this.transform.calculatePosMatrix(Q.toUnwrapped());return B}hasTransition(){if(this._source.hasTransition())return!0;if(or(this._source.type)){let w=u.now();for(let B in this._tiles)if(this._tiles[B].fadeEndTime>=w)return!0}return!1}setFeatureState(w,B,Q){this._state.updateState(w=w||"_geojsonTileLayer",B,Q)}removeFeatureState(w,B,Q){this._state.removeFeatureState(w=w||"_geojsonTileLayer",B,Q)}getFeatureState(w,B){return this._state.getState(w=w||"_geojsonTileLayer",B)}setDependencies(w,B,Q){let ee=this._tiles[w];ee&&ee.setDependencies(B,Q)}reloadTilesForDependencies(w,B){for(let Q in this._tiles)this._tiles[Q].hasDependency(w,B)&&this._reloadTile(Q,"reloading");this._cache.filter(Q=>!Q.hasDependency(w,B))}}function jt(ue,w){let B=Math.abs(2*ue.wrap)-+(ue.wrap<0),Q=Math.abs(2*w.wrap)-+(w.wrap<0);return ue.overscaledZ-w.overscaledZ||Q-B||w.canonical.y-ue.canonical.y||w.canonical.x-ue.canonical.x}function or(ue){return ue==="raster"||ue==="image"||ue==="video"}pt.maxOverzooming=10,pt.maxUnderzooming=3;class mr{constructor(w,B){this.reset(w,B)}reset(w,B){this.points=w||[],this._distances=[0];for(let Q=1;Q0?(ee-Fe)/Ze:0;return this.points[le].mult(1-ut).add(this.points[B].mult(ut))}}function Ar(ue,w){let B=!0;return ue==="always"||ue!=="never"&&w!=="never"||(B=!1),B}class ei{constructor(w,B,Q){let ee=this.boxCells=[],le=this.circleCells=[];this.xCellCount=Math.ceil(w/Q),this.yCellCount=Math.ceil(B/Q);for(let Fe=0;Fethis.width||ee<0||B>this.height)return[];let ut=[];if(w<=0&&B<=0&&this.width<=Q&&this.height<=ee){if(le)return[{key:null,x1:w,y1:B,x2:Q,y2:ee}];for(let Mt=0;Mt0}hitTestCircle(w,B,Q,ee,le){let Fe=w-Q,Ze=w+Q,ut=B-Q,Mt=B+Q;if(Ze<0||Fe>this.width||Mt<0||ut>this.height)return!1;let Jt=[];return this._forEachCell(Fe,ut,Ze,Mt,this._queryCellCircle,Jt,{hitTest:!0,overlapMode:ee,circle:{x:w,y:B,radius:Q},seenUids:{box:{},circle:{}}},le),Jt.length>0}_queryCell(w,B,Q,ee,le,Fe,Ze,ut){let{seenUids:Mt,hitTest:Jt,overlapMode:$t}=Ze,yr=this.boxCells[le];if(yr!==null){let ve=this.bboxes;for(let xe of yr)if(!Mt.box[xe]){Mt.box[xe]=!0;let Ie=4*xe,ze=this.boxKeys[xe];if(w<=ve[Ie+2]&&B<=ve[Ie+3]&&Q>=ve[Ie+0]&&ee>=ve[Ie+1]&&(!ut||ut(ze))&&(!Jt||!Ar($t,ze.overlapMode))&&(Fe.push({key:ze,x1:ve[Ie],y1:ve[Ie+1],x2:ve[Ie+2],y2:ve[Ie+3]}),Jt))return!0}}let Cr=this.circleCells[le];if(Cr!==null){let ve=this.circles;for(let xe of Cr)if(!Mt.circle[xe]){Mt.circle[xe]=!0;let Ie=3*xe,ze=this.circleKeys[xe];if(this._circleAndRectCollide(ve[Ie],ve[Ie+1],ve[Ie+2],w,B,Q,ee)&&(!ut||ut(ze))&&(!Jt||!Ar($t,ze.overlapMode))){let Qe=ve[Ie],Xe=ve[Ie+1],nt=ve[Ie+2];if(Fe.push({key:ze,x1:Qe-nt,y1:Xe-nt,x2:Qe+nt,y2:Xe+nt}),Jt)return!0}}}return!1}_queryCellCircle(w,B,Q,ee,le,Fe,Ze,ut){let{circle:Mt,seenUids:Jt,overlapMode:$t}=Ze,yr=this.boxCells[le];if(yr!==null){let ve=this.bboxes;for(let xe of yr)if(!Jt.box[xe]){Jt.box[xe]=!0;let Ie=4*xe,ze=this.boxKeys[xe];if(this._circleAndRectCollide(Mt.x,Mt.y,Mt.radius,ve[Ie+0],ve[Ie+1],ve[Ie+2],ve[Ie+3])&&(!ut||ut(ze))&&!Ar($t,ze.overlapMode))return Fe.push(!0),!0}}let Cr=this.circleCells[le];if(Cr!==null){let ve=this.circles;for(let xe of Cr)if(!Jt.circle[xe]){Jt.circle[xe]=!0;let Ie=3*xe,ze=this.circleKeys[xe];if(this._circlesCollide(ve[Ie],ve[Ie+1],ve[Ie+2],Mt.x,Mt.y,Mt.radius)&&(!ut||ut(ze))&&!Ar($t,ze.overlapMode))return Fe.push(!0),!0}}}_forEachCell(w,B,Q,ee,le,Fe,Ze,ut){let Mt=this._convertToXCellCoord(w),Jt=this._convertToYCellCoord(B),$t=this._convertToXCellCoord(Q),yr=this._convertToYCellCoord(ee);for(let Cr=Mt;Cr<=$t;Cr++)for(let ve=Jt;ve<=yr;ve++)if(le.call(this,w,B,Q,ee,this.xCellCount*ve+Cr,Fe,Ze,ut))return}_convertToXCellCoord(w){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(w*this.xScale)))}_convertToYCellCoord(w){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(w*this.yScale)))}_circlesCollide(w,B,Q,ee,le,Fe){let Ze=ee-w,ut=le-B,Mt=Q+Fe;return Mt*Mt>Ze*Ze+ut*ut}_circleAndRectCollide(w,B,Q,ee,le,Fe,Ze){let ut=(Fe-ee)/2,Mt=Math.abs(w-(ee+ut));if(Mt>ut+Q)return!1;let Jt=(Ze-le)/2,$t=Math.abs(B-(le+Jt));if($t>Jt+Q)return!1;if(Mt<=ut||$t<=Jt)return!0;let yr=Mt-ut,Cr=$t-Jt;return yr*yr+Cr*Cr<=Q*Q}}function qr(ue,w,B,Q,ee){let le=a.H();return w?(a.K(le,le,[1/ee,1/ee,1]),B||a.ad(le,le,Q.angle)):a.L(le,Q.labelPlaneMatrix,ue),le}function jr(ue,w,B,Q,ee){if(w){let le=a.ae(ue);return a.K(le,le,[ee,ee,1]),B||a.ad(le,le,-Q.angle),le}return Q.glCoordMatrix}function gt(ue,w,B,Q){let ee;Q?(ee=[ue,w,Q(ue,w),1],a.af(ee,ee,B)):(ee=[ue,w,0,1],ai(ee,ee,B));let le=ee[3];return{point:new a.P(ee[0]/le,ee[1]/le),signedDistanceFromCamera:le,isOccluded:!1}}function Ge(ue,w){return .5+ue/w*.5}function Je(ue,w){return ue.x>=-w[0]&&ue.x<=w[0]&&ue.y>=-w[1]&&ue.y<=w[1]}function We(ue,w,B,Q,ee,le,Fe,Ze,ut,Mt,Jt,$t,yr,Cr,ve){let xe=Q?ue.textSizeData:ue.iconSizeData,Ie=a.ag(xe,B.transform.zoom),ze=[256/B.width*2+1,256/B.height*2+1],Qe=Q?ue.text.dynamicLayoutVertexArray:ue.icon.dynamicLayoutVertexArray;Qe.clear();let Xe=ue.lineVertexArray,nt=Q?ue.text.placedSymbolArray:ue.icon.placedSymbolArray,qt=B.transform.width/B.transform.height,Wt=!1;for(let nr=0;nrMath.abs(B.x-w.x)*Q?{useVertical:!0}:(ue===a.ah.vertical?w.yB.x)?{needsFlipping:!0}:null}function At(ue,w,B,Q,ee,le,Fe,Ze,ut,Mt,Jt){let $t=B/24,yr=w.lineOffsetX*$t,Cr=w.lineOffsetY*$t,ve;if(w.numGlyphs>1){let xe=w.glyphStartIndex+w.numGlyphs,Ie=w.lineStartIndex,ze=w.lineStartIndex+w.lineLength,Qe=et($t,Ze,yr,Cr,Q,w,Jt,ue);if(!Qe)return{notEnoughRoom:!0};let Xe=gt(Qe.first.point.x,Qe.first.point.y,Fe,ue.getElevation).point,nt=gt(Qe.last.point.x,Qe.last.point.y,Fe,ue.getElevation).point;if(ee&&!Q){let qt=xt(w.writingMode,Xe,nt,Mt);if(qt)return qt}ve=[Qe.first];for(let qt=w.glyphStartIndex+1;qt0?Xe.point:function(Wt,nr,fr,br,Fr,Hr){return Kt(Wt,nr,fr,1,Fr,Hr)}(ue.tileAnchorPoint,Qe,Ie,0,le,ue),qt=xt(w.writingMode,Ie,nt,Mt);if(qt)return qt}let xe=Yr($t*Ze.getoffsetX(w.glyphStartIndex),yr,Cr,Q,w.segment,w.lineStartIndex,w.lineStartIndex+w.lineLength,ue,Jt);if(!xe||ue.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};ve=[xe]}for(let xe of ve)a.aj(ut,xe.point,xe.angle);return{}}function Kt(ue,w,B,Q,ee,le){let Fe=ue.add(ue.sub(w)._unit()),Ze=ee!==void 0?gt(Fe.x,Fe.y,ee,le.getElevation).point:Mr(Fe.x,Fe.y,le).point,ut=B.sub(Ze);return B.add(ut._mult(Q/ut.mag()))}function Qt(ue,w,B){let Q=w.projectionCache;if(Q.projections[ue])return Q.projections[ue];let ee=new a.P(w.lineVertexArray.getx(ue),w.lineVertexArray.gety(ue)),le=Mr(ee.x,ee.y,w);if(le.signedDistanceFromCamera>0)return Q.projections[ue]=le.point,Q.anyProjectionOccluded=Q.anyProjectionOccluded||le.isOccluded,le.point;let Fe=ue-B.direction;return function(Ze,ut,Mt,Jt,$t){return Kt(Ze,ut,Mt,Jt,void 0,$t)}(B.distanceFromAnchor===0?w.tileAnchorPoint:new a.P(w.lineVertexArray.getx(Fe),w.lineVertexArray.gety(Fe)),ee,B.previousVertex,B.absOffsetX-B.distanceFromAnchor+1,w)}function Mr(ue,w,B){let Q=ue+B.translation[0],ee=w+B.translation[1],le;return!B.pitchWithMap&&B.projection.useSpecialProjectionForSymbols?(le=B.projection.projectTileCoordinates(Q,ee,B.unwrappedTileID,B.getElevation),le.point.x=(.5*le.point.x+.5)*B.width,le.point.y=(.5*-le.point.y+.5)*B.height):(le=gt(Q,ee,B.labelPlaneMatrix,B.getElevation),le.isOccluded=!1),le}function Gr(ue,w,B){return ue._unit()._perp()._mult(w*B)}function Ir(ue,w,B,Q,ee,le,Fe,Ze,ut){if(Ze.projectionCache.offsets[ue])return Ze.projectionCache.offsets[ue];let Mt=B.add(w);if(ue+ut.direction=ee)return Ze.projectionCache.offsets[ue]=Mt,Mt;let Jt=Qt(ue+ut.direction,Ze,ut),$t=Gr(Jt.sub(B),Fe,ut.direction),yr=B.add($t),Cr=Jt.add($t);return Ze.projectionCache.offsets[ue]=a.ak(le,Mt,yr,Cr)||Mt,Ze.projectionCache.offsets[ue]}function Yr(ue,w,B,Q,ee,le,Fe,Ze,ut){let Mt=Q?ue-w:ue+w,Jt=Mt>0?1:-1,$t=0;Q&&(Jt*=-1,$t=Math.PI),Jt<0&&($t+=Math.PI);let yr,Cr=Jt>0?le+ee:le+ee+1;Ze.projectionCache.cachedAnchorPoint?yr=Ze.projectionCache.cachedAnchorPoint:(yr=Mr(Ze.tileAnchorPoint.x,Ze.tileAnchorPoint.y,Ze).point,Ze.projectionCache.cachedAnchorPoint=yr);let ve,xe,Ie=yr,ze=yr,Qe=0,Xe=0,nt=Math.abs(Mt),qt=[],Wt;for(;Qe+Xe<=nt;){if(Cr+=Jt,Cr=Fe)return null;Qe+=Xe,ze=Ie,xe=ve;let br={absOffsetX:nt,direction:Jt,distanceFromAnchor:Qe,previousVertex:ze};if(Ie=Qt(Cr,Ze,br),B===0)qt.push(ze),Wt=Ie.sub(ze);else{let Fr,Hr=Ie.sub(ze);Fr=Hr.mag()===0?Gr(Qt(Cr+Jt,Ze,br).sub(Ie),B,Jt):Gr(Hr,B,Jt),xe||(xe=ze.add(Fr)),ve=Ir(Cr,Fr,Ie,le,Fe,xe,B,Ze,br),qt.push(xe),Wt=ve.sub(xe)}Xe=Wt.mag()}let nr=Wt._mult((nt-Qe)/Xe)._add(xe||ze),fr=$t+Math.atan2(Ie.y-ze.y,Ie.x-ze.x);return qt.push(nr),{point:nr,angle:ut?fr:0,path:qt}}let _i=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function Pi(ue,w){for(let B=0;B=1;fa--)Ln.push(cn.path[fa]);for(let fa=1;fa$a.signedDistanceFromCamera<=0)?[]:fa.map($a=>$a.point)}let Aa=[];if(Ln.length>0){let fa=Ln[0].clone(),$a=Ln[0].clone();for(let Co=1;Co=Hr.x&&$a.x<=ri.x&&fa.y>=Hr.y&&$a.y<=ri.y?[Ln]:$a.xri.x||$a.yri.y?[]:a.al([Ln],Hr.x,Hr.y,ri.x,ri.y)}for(let fa of Aa){Ci.reset(fa,.25*Fr);let $a=0;$a=Ci.length<=.5*Fr?1:Math.ceil(Ci.paddedLength/Yn)+1;for(let Co=0;Co<$a;Co++){let Qa=Co/Math.max($a-1,1),mo=Ci.lerp(Qa),Bo=mo.x+mi,Ps=mo.y+mi;ze.push(Bo,Ps,Fr,0);let Ts=Bo-Fr,wo=Ps-Fr,To=Bo+Fr,hl=Ps+Fr;if(br=br&&this.isOffscreen(Ts,wo,To,hl),fr=fr||this.isInsideGrid(Ts,wo,To,hl),w!=="always"&&this.grid.hitTestCircle(Bo,Ps,Fr,w,yr)&&(nr=!0,!Jt))return{circles:[],offscreen:!1,collisionDetected:nr}}}}return{circles:!Jt&&nr||!fr||Xegt(ee.x,ee.y,Q,B.getElevation))}queryRenderedSymbols(w){if(w.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};let B=[],Q=1/0,ee=1/0,le=-1/0,Fe=-1/0;for(let Jt of w){let $t=new a.P(Jt.x+mi,Jt.y+mi);Q=Math.min(Q,$t.x),ee=Math.min(ee,$t.y),le=Math.max(le,$t.x),Fe=Math.max(Fe,$t.y),B.push($t)}let Ze=this.grid.query(Q,ee,le,Fe).concat(this.ignoredGrid.query(Q,ee,le,Fe)),ut={},Mt={};for(let Jt of Ze){let $t=Jt.key;if(ut[$t.bucketInstanceId]===void 0&&(ut[$t.bucketInstanceId]={}),ut[$t.bucketInstanceId][$t.featureIndex])continue;let yr=[new a.P(Jt.x1,Jt.y1),new a.P(Jt.x2,Jt.y1),new a.P(Jt.x2,Jt.y2),new a.P(Jt.x1,Jt.y2)];a.am(B,yr)&&(ut[$t.bucketInstanceId][$t.featureIndex]=!0,Mt[$t.bucketInstanceId]===void 0&&(Mt[$t.bucketInstanceId]=[]),Mt[$t.bucketInstanceId].push($t.featureIndex))}return Mt}insertCollisionBox(w,B,Q,ee,le,Fe){(Q?this.ignoredGrid:this.grid).insert({bucketInstanceId:ee,featureIndex:le,collisionGroupID:Fe,overlapMode:B},w[0],w[1],w[2],w[3])}insertCollisionCircles(w,B,Q,ee,le,Fe){let Ze=Q?this.ignoredGrid:this.grid,ut={bucketInstanceId:ee,featureIndex:le,collisionGroupID:Fe,overlapMode:B};for(let Mt=0;Mt=this.screenRightBoundary||eethis.screenBottomBoundary}isInsideGrid(w,B,Q,ee){return Q>=0&&w=0&&Bthis.projectAndGetPerspectiveRatio(Q,Fr.x,Fr.y,ee,Mt));fr=br.some(Fr=>!Fr.isOccluded),nr=br.map(Fr=>Fr.point)}else fr=!0;return{box:a.ao(nr),allPointsOccluded:!fr}}}function Fn(ue,w,B){return w*(a.X/(ue.tileSize*Math.pow(2,B-ue.tileID.overscaledZ)))}class An{constructor(w,B,Q,ee){this.opacity=w?Math.max(0,Math.min(1,w.opacity+(w.placed?B:-B))):ee&&Q?1:0,this.placed=Q}isHidden(){return this.opacity===0&&!this.placed}}class Hn{constructor(w,B,Q,ee,le){this.text=new An(w?w.text:null,B,Q,le),this.icon=new An(w?w.icon:null,B,ee,le)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class Qn{constructor(w,B,Q){this.text=w,this.icon=B,this.skipFade=Q}}class Vi{constructor(){this.invProjMatrix=a.H(),this.viewportMatrix=a.H(),this.circles=[]}}class Kn{constructor(w,B,Q,ee,le){this.bucketInstanceId=w,this.featureIndex=B,this.sourceLayerIndex=Q,this.bucketIndex=ee,this.tileID=le}}class Jn{constructor(w){this.crossSourceCollisions=w,this.maxGroupID=0,this.collisionGroups={}}get(w){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[w]){let B=++this.maxGroupID;this.collisionGroups[w]={ID:B,predicate:Q=>Q.collisionGroupID===B}}return this.collisionGroups[w]}}function Gt(ue,w,B,Q,ee){let{horizontalAlign:le,verticalAlign:Fe}=a.au(ue);return new a.P(-(le-.5)*w+Q[0]*ee,-(Fe-.5)*B+Q[1]*ee)}class wt{constructor(w,B,Q,ee,le,Fe){this.transform=w.clone(),this.terrain=Q,this.collisionIndex=new un(this.transform,B),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=ee,this.retainedQueryData={},this.collisionGroups=new Jn(le),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=Fe,Fe&&(Fe.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(w){let B=this.terrain;return B?(Q,ee)=>B.getElevation(w,Q,ee):null}getBucketParts(w,B,Q,ee){let le=Q.getBucket(B),Fe=Q.latestFeatureIndex;if(!le||!Fe||B.id!==le.layerIds[0])return;let Ze=Q.collisionBoxArray,ut=le.layers[0].layout,Mt=le.layers[0].paint,Jt=Math.pow(2,this.transform.zoom-Q.tileID.overscaledZ),$t=Q.tileSize/a.X,yr=Q.tileID.toUnwrapped(),Cr=this.transform.calculatePosMatrix(yr),ve=ut.get("text-pitch-alignment")==="map",xe=ut.get("text-rotation-alignment")==="map",Ie=Fn(Q,1,this.transform.zoom),ze=this.collisionIndex.mapProjection.translatePosition(this.transform,Q,Mt.get("text-translate"),Mt.get("text-translate-anchor")),Qe=this.collisionIndex.mapProjection.translatePosition(this.transform,Q,Mt.get("icon-translate"),Mt.get("icon-translate-anchor")),Xe=qr(Cr,ve,xe,this.transform,Ie),nt=null;if(ve){let Wt=jr(Cr,ve,xe,this.transform,Ie);nt=a.L([],this.transform.labelPlaneMatrix,Wt)}this.retainedQueryData[le.bucketInstanceId]=new Kn(le.bucketInstanceId,Fe,le.sourceLayerIndex,le.index,Q.tileID);let qt={bucket:le,layout:ut,translationText:ze,translationIcon:Qe,posMatrix:Cr,unwrappedTileID:yr,textLabelPlaneMatrix:Xe,labelToScreenMatrix:nt,scale:Jt,textPixelRatio:$t,holdingForFade:Q.holdingForFade(),collisionBoxArray:Ze,partiallyEvaluatedTextSize:a.ag(le.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(le.sourceID)};if(ee)for(let Wt of le.sortKeyRanges){let{sortKey:nr,symbolInstanceStart:fr,symbolInstanceEnd:br}=Wt;w.push({sortKey:nr,symbolInstanceStart:fr,symbolInstanceEnd:br,parameters:qt})}else w.push({symbolInstanceStart:0,symbolInstanceEnd:le.symbolInstances.length,parameters:qt})}attemptAnchorPlacement(w,B,Q,ee,le,Fe,Ze,ut,Mt,Jt,$t,yr,Cr,ve,xe,Ie,ze,Qe,Xe){let nt=a.aq[w.textAnchor],qt=[w.textOffset0,w.textOffset1],Wt=Gt(nt,Q,ee,qt,le),nr=this.collisionIndex.placeCollisionBox(B,yr,ut,Mt,Jt,Ze,Fe,Ie,$t.predicate,Xe,Wt);if((!Qe||this.collisionIndex.placeCollisionBox(Qe,yr,ut,Mt,Jt,Ze,Fe,ze,$t.predicate,Xe,Wt).placeable)&&nr.placeable){let fr;if(this.prevPlacement&&this.prevPlacement.variableOffsets[Cr.crossTileID]&&this.prevPlacement.placements[Cr.crossTileID]&&this.prevPlacement.placements[Cr.crossTileID].text&&(fr=this.prevPlacement.variableOffsets[Cr.crossTileID].anchor),Cr.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[Cr.crossTileID]={textOffset:qt,width:Q,height:ee,anchor:nt,textBoxScale:le,prevAnchor:fr},this.markUsedJustification(ve,nt,Cr,xe),ve.allowVerticalPlacement&&(this.markUsedOrientation(ve,xe,Cr),this.placedOrientations[Cr.crossTileID]=xe),{shift:Wt,placedGlyphBoxes:nr}}}placeLayerBucketPart(w,B,Q){let{bucket:ee,layout:le,translationText:Fe,translationIcon:Ze,posMatrix:ut,unwrappedTileID:Mt,textLabelPlaneMatrix:Jt,labelToScreenMatrix:$t,textPixelRatio:yr,holdingForFade:Cr,collisionBoxArray:ve,partiallyEvaluatedTextSize:xe,collisionGroup:Ie}=w.parameters,ze=le.get("text-optional"),Qe=le.get("icon-optional"),Xe=a.ar(le,"text-overlap","text-allow-overlap"),nt=Xe==="always",qt=a.ar(le,"icon-overlap","icon-allow-overlap"),Wt=qt==="always",nr=le.get("text-rotation-alignment")==="map",fr=le.get("text-pitch-alignment")==="map",br=le.get("icon-text-fit")!=="none",Fr=le.get("symbol-z-order")==="viewport-y",Hr=nt&&(Wt||!ee.hasIconData()||Qe),ri=Wt&&(nt||!ee.hasTextData()||ze);!ee.collisionArrays&&ve&&ee.deserializeCollisionBoxes(ve);let Ci=this._getTerrainElevationFunc(this.retainedQueryData[ee.bucketInstanceId].tileID),cn=(sn,Ln,Yn)=>{var Aa,fa;if(B[sn.crossTileID])return;if(Cr)return void(this.placements[sn.crossTileID]=new Qn(!1,!1,!1));let $a=!1,Co=!1,Qa=!0,mo=null,Bo={box:null,placeable:!1,offscreen:null},Ps={box:null,placeable:!1,offscreen:null},Ts=null,wo=null,To=null,hl=0,Ul=0,Lu=0;Ln.textFeatureIndex?hl=Ln.textFeatureIndex:sn.useRuntimeCollisionCircles&&(hl=sn.featureIndex),Ln.verticalTextFeatureIndex&&(Ul=Ln.verticalTextFeatureIndex);let au=Ln.textBox;if(au){let Tl=Te=>{let qe=a.ah.horizontal;if(ee.allowVerticalPlacement&&!Te&&this.prevPlacement){let Ve=this.prevPlacement.placedOrientations[sn.crossTileID];Ve&&(this.placedOrientations[sn.crossTileID]=Ve,qe=Ve,this.markUsedOrientation(ee,qe,sn))}return qe},Al=(Te,qe)=>{if(ee.allowVerticalPlacement&&sn.numVerticalGlyphVertices>0&&Ln.verticalTextBox){for(let Ve of ee.writingModes)if(Ve===a.ah.vertical?(Bo=qe(),Ps=Bo):Bo=Te(),Bo&&Bo.placeable)break}else Bo=Te()},X=sn.textAnchorOffsetStartIndex,se=sn.textAnchorOffsetEndIndex;if(se===X){let Te=(qe,Ve)=>{let Ye=this.collisionIndex.placeCollisionBox(qe,Xe,yr,ut,Mt,fr,nr,Fe,Ie.predicate,Ci);return Ye&&Ye.placeable&&(this.markUsedOrientation(ee,Ve,sn),this.placedOrientations[sn.crossTileID]=Ve),Ye};Al(()=>Te(au,a.ah.horizontal),()=>{let qe=Ln.verticalTextBox;return ee.allowVerticalPlacement&&sn.numVerticalGlyphVertices>0&&qe?Te(qe,a.ah.vertical):{box:null,offscreen:null}}),Tl(Bo&&Bo.placeable)}else{let Te=a.aq[(fa=(Aa=this.prevPlacement)===null||Aa===void 0?void 0:Aa.variableOffsets[sn.crossTileID])===null||fa===void 0?void 0:fa.anchor],qe=(Ye,Pt,ot)=>{let Xt=Ye.x2-Ye.x1,dr=Ye.y2-Ye.y1,pr=sn.textBoxScale,Ur=br&&qt==="never"?Pt:null,zr=null,gi=Xe==="never"?1:2,xi="never";Te&&gi++;for(let Wr=0;Wrqe(au,Ln.iconBox,a.ah.horizontal),()=>{let Ye=Ln.verticalTextBox;return ee.allowVerticalPlacement&&(!Bo||!Bo.placeable)&&sn.numVerticalGlyphVertices>0&&Ye?qe(Ye,Ln.verticalIconBox,a.ah.vertical):{box:null,occluded:!0,offscreen:null}}),Bo&&($a=Bo.placeable,Qa=Bo.offscreen);let Ve=Tl(Bo&&Bo.placeable);if(!$a&&this.prevPlacement){let Ye=this.prevPlacement.variableOffsets[sn.crossTileID];Ye&&(this.variableOffsets[sn.crossTileID]=Ye,this.markUsedJustification(ee,Ye.anchor,sn,Ve))}}}if(Ts=Bo,$a=Ts&&Ts.placeable,Qa=Ts&&Ts.offscreen,sn.useRuntimeCollisionCircles){let Tl=ee.text.placedSymbolArray.get(sn.centerJustifiedTextSymbolIndex),Al=a.ai(ee.textSizeData,xe,Tl),X=le.get("text-padding");wo=this.collisionIndex.placeCollisionCircles(Xe,Tl,ee.lineVertexArray,ee.glyphOffsetArray,Al,ut,Mt,Jt,$t,Q,fr,Ie.predicate,sn.collisionCircleDiameter,X,Fe,Ci),wo.circles.length&&wo.collisionDetected&&!Q&&a.w("Collisions detected, but collision boxes are not shown"),$a=nt||wo.circles.length>0&&!wo.collisionDetected,Qa=Qa&&wo.offscreen}if(Ln.iconFeatureIndex&&(Lu=Ln.iconFeatureIndex),Ln.iconBox){let Tl=Al=>this.collisionIndex.placeCollisionBox(Al,qt,yr,ut,Mt,fr,nr,Ze,Ie.predicate,Ci,br&&mo?mo:void 0);Ps&&Ps.placeable&&Ln.verticalIconBox?(To=Tl(Ln.verticalIconBox),Co=To.placeable):(To=Tl(Ln.iconBox),Co=To.placeable),Qa=Qa&&To.offscreen}let Js=ze||sn.numHorizontalGlyphVertices===0&&sn.numVerticalGlyphVertices===0,eu=Qe||sn.numIconVertices===0;Js||eu?eu?Js||(Co=Co&&$a):$a=Co&&$a:Co=$a=Co&&$a;let dc=Co&&To.placeable;if($a&&Ts.placeable&&this.collisionIndex.insertCollisionBox(Ts.box,Xe,le.get("text-ignore-placement"),ee.bucketInstanceId,Ps&&Ps.placeable&&Ul?Ul:hl,Ie.ID),dc&&this.collisionIndex.insertCollisionBox(To.box,qt,le.get("icon-ignore-placement"),ee.bucketInstanceId,Lu,Ie.ID),wo&&$a&&this.collisionIndex.insertCollisionCircles(wo.circles,Xe,le.get("text-ignore-placement"),ee.bucketInstanceId,hl,Ie.ID),Q&&this.storeCollisionData(ee.bucketInstanceId,Yn,Ln,Ts,To,wo),sn.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");if(ee.bucketInstanceId===0)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[sn.crossTileID]=new Qn($a||Hr,Co||ri,Qa||ee.justReloaded),B[sn.crossTileID]=!0};if(Fr){if(w.symbolInstanceStart!==0)throw new Error("bucket.bucketInstanceId should be 0");let sn=ee.getSortedSymbolIndexes(this.transform.angle);for(let Ln=sn.length-1;Ln>=0;--Ln){let Yn=sn[Ln];cn(ee.symbolInstances.get(Yn),ee.collisionArrays[Yn],Yn)}}else for(let sn=w.symbolInstanceStart;sn=0&&(w.text.placedSymbolArray.get(Ze).crossTileID=le>=0&&Ze!==le?0:Q.crossTileID)}markUsedOrientation(w,B,Q){let ee=B===a.ah.horizontal||B===a.ah.horizontalOnly?B:0,le=B===a.ah.vertical?B:0,Fe=[Q.leftJustifiedTextSymbolIndex,Q.centerJustifiedTextSymbolIndex,Q.rightJustifiedTextSymbolIndex];for(let Ze of Fe)w.text.placedSymbolArray.get(Ze).placedOrientation=ee;Q.verticalPlacedTextSymbolIndex&&(w.text.placedSymbolArray.get(Q.verticalPlacedTextSymbolIndex).placedOrientation=le)}commit(w){this.commitTime=w,this.zoomAtLastRecencyCheck=this.transform.zoom;let B=this.prevPlacement,Q=!1;this.prevZoomAdjustment=B?B.zoomAdjustment(this.transform.zoom):0;let ee=B?B.symbolFadeChange(w):1,le=B?B.opacities:{},Fe=B?B.variableOffsets:{},Ze=B?B.placedOrientations:{};for(let ut in this.placements){let Mt=this.placements[ut],Jt=le[ut];Jt?(this.opacities[ut]=new Hn(Jt,ee,Mt.text,Mt.icon),Q=Q||Mt.text!==Jt.text.placed||Mt.icon!==Jt.icon.placed):(this.opacities[ut]=new Hn(null,ee,Mt.text,Mt.icon,Mt.skipFade),Q=Q||Mt.text||Mt.icon)}for(let ut in le){let Mt=le[ut];if(!this.opacities[ut]){let Jt=new Hn(Mt,ee,!1,!1);Jt.isHidden()||(this.opacities[ut]=Jt,Q=Q||Mt.text.placed||Mt.icon.placed)}}for(let ut in Fe)this.variableOffsets[ut]||!this.opacities[ut]||this.opacities[ut].isHidden()||(this.variableOffsets[ut]=Fe[ut]);for(let ut in Ze)this.placedOrientations[ut]||!this.opacities[ut]||this.opacities[ut].isHidden()||(this.placedOrientations[ut]=Ze[ut]);if(B&&B.lastPlacementChangeTime===void 0)throw new Error("Last placement time for previous placement is not defined");Q?this.lastPlacementChangeTime=w:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=B?B.lastPlacementChangeTime:w)}updateLayerOpacities(w,B){let Q={};for(let ee of B){let le=ee.getBucket(w);le&&ee.latestFeatureIndex&&w.id===le.layerIds[0]&&this.updateBucketOpacities(le,ee.tileID,Q,ee.collisionBoxArray)}}updateBucketOpacities(w,B,Q,ee){w.hasTextData()&&(w.text.opacityVertexArray.clear(),w.text.hasVisibleVertices=!1),w.hasIconData()&&(w.icon.opacityVertexArray.clear(),w.icon.hasVisibleVertices=!1),w.hasIconCollisionBoxData()&&w.iconCollisionBox.collisionVertexArray.clear(),w.hasTextCollisionBoxData()&&w.textCollisionBox.collisionVertexArray.clear();let le=w.layers[0],Fe=le.layout,Ze=new Hn(null,0,!1,!1,!0),ut=Fe.get("text-allow-overlap"),Mt=Fe.get("icon-allow-overlap"),Jt=le._unevaluatedLayout.hasValue("text-variable-anchor")||le._unevaluatedLayout.hasValue("text-variable-anchor-offset"),$t=Fe.get("text-rotation-alignment")==="map",yr=Fe.get("text-pitch-alignment")==="map",Cr=Fe.get("icon-text-fit")!=="none",ve=new Hn(null,0,ut&&(Mt||!w.hasIconData()||Fe.get("icon-optional")),Mt&&(ut||!w.hasTextData()||Fe.get("text-optional")),!0);!w.collisionArrays&&ee&&(w.hasIconCollisionBoxData()||w.hasTextCollisionBoxData())&&w.deserializeCollisionBoxes(ee);let xe=(ze,Qe,Xe)=>{for(let nt=0;nt0,fr=this.placedOrientations[Qe.crossTileID],br=fr===a.ah.vertical,Fr=fr===a.ah.horizontal||fr===a.ah.horizontalOnly;if(Xe>0||nt>0){let ri=en(Wt.text);xe(w.text,Xe,br?fn:ri),xe(w.text,nt,Fr?fn:ri);let Ci=Wt.text.isHidden();[Qe.rightJustifiedTextSymbolIndex,Qe.centerJustifiedTextSymbolIndex,Qe.leftJustifiedTextSymbolIndex].forEach(Ln=>{Ln>=0&&(w.text.placedSymbolArray.get(Ln).hidden=Ci||br?1:0)}),Qe.verticalPlacedTextSymbolIndex>=0&&(w.text.placedSymbolArray.get(Qe.verticalPlacedTextSymbolIndex).hidden=Ci||Fr?1:0);let cn=this.variableOffsets[Qe.crossTileID];cn&&this.markUsedJustification(w,cn.anchor,Qe,fr);let sn=this.placedOrientations[Qe.crossTileID];sn&&(this.markUsedJustification(w,"left",Qe,sn),this.markUsedOrientation(w,sn,Qe))}if(nr){let ri=en(Wt.icon),Ci=!(Cr&&Qe.verticalPlacedIconSymbolIndex&&br);Qe.placedIconSymbolIndex>=0&&(xe(w.icon,Qe.numIconVertices,Ci?ri:fn),w.icon.placedSymbolArray.get(Qe.placedIconSymbolIndex).hidden=Wt.icon.isHidden()),Qe.verticalPlacedIconSymbolIndex>=0&&(xe(w.icon,Qe.numVerticalIconVertices,Ci?fn:ri),w.icon.placedSymbolArray.get(Qe.verticalPlacedIconSymbolIndex).hidden=Wt.icon.isHidden())}let Hr=Ie&&Ie.has(ze)?Ie.get(ze):{text:null,icon:null};if(w.hasIconCollisionBoxData()||w.hasTextCollisionBoxData()){let ri=w.collisionArrays[ze];if(ri){let Ci=new a.P(0,0);if(ri.textBox||ri.verticalTextBox){let cn=!0;if(Jt){let sn=this.variableOffsets[qt];sn?(Ci=Gt(sn.anchor,sn.width,sn.height,sn.textOffset,sn.textBoxScale),$t&&Ci._rotate(yr?this.transform.angle:-this.transform.angle)):cn=!1}if(ri.textBox||ri.verticalTextBox){let sn;ri.textBox&&(sn=br),ri.verticalTextBox&&(sn=Fr),tr(w.textCollisionBox.collisionVertexArray,Wt.text.placed,!cn||sn,Hr.text,Ci.x,Ci.y)}}if(ri.iconBox||ri.verticalIconBox){let cn=!!(!Fr&&ri.verticalIconBox),sn;ri.iconBox&&(sn=cn),ri.verticalIconBox&&(sn=!cn),tr(w.iconCollisionBox.collisionVertexArray,Wt.icon.placed,sn,Hr.icon,Cr?Ci.x:0,Cr?Ci.y:0)}}}}if(w.sortFeatures(this.transform.angle),this.retainedQueryData[w.bucketInstanceId]&&(this.retainedQueryData[w.bucketInstanceId].featureSortOrder=w.featureSortOrder),w.hasTextData()&&w.text.opacityVertexBuffer&&w.text.opacityVertexBuffer.updateData(w.text.opacityVertexArray),w.hasIconData()&&w.icon.opacityVertexBuffer&&w.icon.opacityVertexBuffer.updateData(w.icon.opacityVertexArray),w.hasIconCollisionBoxData()&&w.iconCollisionBox.collisionVertexBuffer&&w.iconCollisionBox.collisionVertexBuffer.updateData(w.iconCollisionBox.collisionVertexArray),w.hasTextCollisionBoxData()&&w.textCollisionBox.collisionVertexBuffer&&w.textCollisionBox.collisionVertexBuffer.updateData(w.textCollisionBox.collisionVertexArray),w.text.opacityVertexArray.length!==w.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${w.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${w.text.layoutVertexArray.length}) / 4`);if(w.icon.opacityVertexArray.length!==w.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${w.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${w.icon.layoutVertexArray.length}) / 4`);if(w.bucketInstanceId in this.collisionCircleArrays){let ze=this.collisionCircleArrays[w.bucketInstanceId];w.placementInvProjMatrix=ze.invProjMatrix,w.placementViewportMatrix=ze.viewportMatrix,w.collisionCircleArray=ze.circles,delete this.collisionCircleArrays[w.bucketInstanceId]}}symbolFadeChange(w){return this.fadeDuration===0?1:(w-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(w){return Math.max(0,(this.transform.zoom-w)/1.5)}hasTransitions(w){return this.stale||w-this.lastPlacementChangeTimew}setStale(){this.stale=!0}}function tr(ue,w,B,Q,ee,le){Q&&Q.length!==0||(Q=[0,0,0,0]);let Fe=Q[0]-mi,Ze=Q[1]-mi,ut=Q[2]-mi,Mt=Q[3]-mi;ue.emplaceBack(w?1:0,B?1:0,ee||0,le||0,Fe,Ze),ue.emplaceBack(w?1:0,B?1:0,ee||0,le||0,ut,Ze),ue.emplaceBack(w?1:0,B?1:0,ee||0,le||0,ut,Mt),ue.emplaceBack(w?1:0,B?1:0,ee||0,le||0,Fe,Mt)}let ir=Math.pow(2,25),wr=Math.pow(2,24),Xr=Math.pow(2,17),ti=Math.pow(2,16),$r=Math.pow(2,9),Ri=Math.pow(2,8),Zi=Math.pow(2,1);function en(ue){if(ue.opacity===0&&!ue.placed)return 0;if(ue.opacity===1&&ue.placed)return 4294967295;let w=ue.placed?1:0,B=Math.floor(127*ue.opacity);return B*ir+w*wr+B*Xr+w*ti+B*$r+w*Ri+B*Zi+w}let fn=0;function yn(){return{isOccluded:(ue,w,B)=>!1,getPitchedTextCorrection:(ue,w,B)=>1,get useSpecialProjectionForSymbols(){return!1},projectTileCoordinates(ue,w,B,Q){throw new Error("Not implemented.")},translatePosition:(ue,w,B,Q)=>function(ee,le,Fe,Ze,ut=!1){if(!Fe[0]&&!Fe[1])return[0,0];let Mt=ut?Ze==="map"?ee.angle:0:Ze==="viewport"?-ee.angle:0;if(Mt){let Jt=Math.sin(Mt),$t=Math.cos(Mt);Fe=[Fe[0]*$t-Fe[1]*Jt,Fe[0]*Jt+Fe[1]*$t]}return[ut?Fe[0]:Fn(le,Fe[0],ee.zoom),ut?Fe[1]:Fn(le,Fe[1],ee.zoom)]}(ue,w,B,Q),getCircleRadiusCorrection:ue=>1}}class Mn{constructor(w){this._sortAcrossTiles=w.layout.get("symbol-z-order")!=="viewport-y"&&!w.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(w,B,Q,ee,le){let Fe=this._bucketParts;for(;this._currentTileIndexZe.sortKey-ut.sortKey));this._currentPartIndex!this._forceFullPlacement&&u.now()-ee>2;for(;this._currentPlacementIndex>=0;){let Fe=B[w[this._currentPlacementIndex]],Ze=this.placement.collisionIndex.transform.zoom;if(Fe.type==="symbol"&&(!Fe.minzoom||Fe.minzoom<=Ze)&&(!Fe.maxzoom||Fe.maxzoom>Ze)){if(this._inProgressLayer||(this._inProgressLayer=new Mn(Fe)),this._inProgressLayer.continuePlacement(Q[Fe.source],this.placement,this._showCollisionBoxes,Fe,le))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(w){return this.placement.commit(w),this.placement}}let ua=512/a.X/2;class ma{constructor(w,B,Q){this.tileID=w,this.bucketInstanceId=Q,this._symbolsByKey={};let ee=new Map;for(let le=0;le({x:Math.floor(ut.anchorX*ua),y:Math.floor(ut.anchorY*ua)})),crossTileIDs:Fe.map(ut=>ut.crossTileID)};if(Ze.positions.length>128){let ut=new a.av(Ze.positions.length,16,Uint16Array);for(let{x:Mt,y:Jt}of Ze.positions)ut.add(Mt,Jt);ut.finish(),delete Ze.positions,Ze.index=ut}this._symbolsByKey[le]=Ze}}getScaledCoordinates(w,B){let{x:Q,y:ee,z:le}=this.tileID.canonical,{x:Fe,y:Ze,z:ut}=B.canonical,Mt=ua/Math.pow(2,ut-le),Jt=(Ze*a.X+w.anchorY)*Mt,$t=ee*a.X*ua;return{x:Math.floor((Fe*a.X+w.anchorX)*Mt-Q*a.X*ua),y:Math.floor(Jt-$t)}}findMatches(w,B,Q){let ee=this.tileID.canonical.zw)}}class Wa{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class Fa{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(w){let B=Math.round((w-this.lng)/360);if(B!==0)for(let Q in this.indexes){let ee=this.indexes[Q],le={};for(let Fe in ee){let Ze=ee[Fe];Ze.tileID=Ze.tileID.unwrapTo(Ze.tileID.wrap+B),le[Ze.tileID.key]=Ze}this.indexes[Q]=le}this.lng=w}addBucket(w,B,Q){if(this.indexes[w.overscaledZ]&&this.indexes[w.overscaledZ][w.key]){if(this.indexes[w.overscaledZ][w.key].bucketInstanceId===B.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(w.overscaledZ,this.indexes[w.overscaledZ][w.key])}for(let le=0;lew.overscaledZ)for(let Ze in Fe){let ut=Fe[Ze];ut.tileID.isChildOf(w)&&ut.findMatches(B.symbolInstances,w,ee)}else{let Ze=Fe[w.scaledTo(Number(le)).key];Ze&&Ze.findMatches(B.symbolInstances,w,ee)}}for(let le=0;le{B[Q]=!0});for(let Q in this.layerIndexes)B[Q]||delete this.layerIndexes[Q]}}let da=(ue,w)=>a.t(ue,w&&w.filter(B=>B.identifier!=="source.canvas")),jn=a.aw();class Ha extends a.E{constructor(w,B={}){super(),this._rtlPluginLoaded=()=>{for(let Q in this.sourceCaches){let ee=this.sourceCaches[Q].getSource().type;ee!=="vector"&&ee!=="geojson"||this.sourceCaches[Q].reload()}},this.map=w,this.dispatcher=new ke(Se(),w._getMapId()),this.dispatcher.registerMessageHandler("GG",(Q,ee)=>this.getGlyphs(Q,ee)),this.dispatcher.registerMessageHandler("GI",(Q,ee)=>this.getImages(Q,ee)),this.imageManager=new E,this.imageManager.setEventedParent(this),this.glyphManager=new G(w._requestManager,B.localIdeographFontFamily),this.lineAtlas=new ae(256,512),this.crossTileSymbolIndex=new Xo,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new a.ax,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("SR",a.ay()),St().on(Ue,this._rtlPluginLoaded),this.on("data",Q=>{if(Q.dataType!=="source"||Q.sourceDataType!=="metadata")return;let ee=this.sourceCaches[Q.sourceId];if(!ee)return;let le=ee.getSource();if(le&&le.vectorLayerIds)for(let Fe in this._layers){let Ze=this._layers[Fe];Ze.source===le.id&&this._validateLayer(Ze)}})}loadURL(w,B={},Q){this.fire(new a.k("dataloading",{dataType:"style"})),B.validate=typeof B.validate!="boolean"||B.validate;let ee=this.map._requestManager.transformRequest(w,"Style");this._loadStyleRequest=new AbortController;let le=this._loadStyleRequest;a.h(ee,this._loadStyleRequest).then(Fe=>{this._loadStyleRequest=null,this._load(Fe.data,B,Q)}).catch(Fe=>{this._loadStyleRequest=null,Fe&&!le.signal.aborted&&this.fire(new a.j(Fe))})}loadJSON(w,B={},Q){this.fire(new a.k("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,u.frameAsync(this._frameRequest).then(()=>{this._frameRequest=null,B.validate=B.validate!==!1,this._load(w,B,Q)}).catch(()=>{})}loadEmpty(){this.fire(new a.k("dataloading",{dataType:"style"})),this._load(jn,{validate:!1})}_load(w,B,Q){var ee;let le=B.transformStyle?B.transformStyle(Q,w):w;if(!B.validate||!da(this,a.u(le))){this._loaded=!0,this.stylesheet=le;for(let Fe in le.sources)this.addSource(Fe,le.sources[Fe],{validate:!1});le.sprite?this._loadSprite(le.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(le.glyphs),this._createLayers(),this.light=new N(this.stylesheet.light),this.sky=new ie(this.stylesheet.sky),this.map.setTerrain((ee=this.stylesheet.terrain)!==null&&ee!==void 0?ee:null),this.fire(new a.k("data",{dataType:"style"})),this.fire(new a.k("style.load"))}}_createLayers(){let w=a.az(this.stylesheet.layers);this.dispatcher.broadcast("SL",w),this._order=w.map(B=>B.id),this._layers={},this._serializedLayers=null;for(let B of w){let Q=a.aA(B);Q.setEventedParent(this,{layer:{id:B.id}}),this._layers[B.id]=Q}}_loadSprite(w,B=!1,Q=void 0){let ee;this.imageManager.setLoaded(!1),this._spriteRequest=new AbortController,function(le,Fe,Ze,ut){return a._(this,void 0,void 0,function*(){let Mt=C(le),Jt=Ze>1?"@2x":"",$t={},yr={};for(let{id:Cr,url:ve}of Mt){let xe=Fe.transformRequest(S(ve,Jt,".json"),"SpriteJSON");$t[Cr]=a.h(xe,ut);let Ie=Fe.transformRequest(S(ve,Jt,".png"),"SpriteImage");yr[Cr]=p.getImage(Ie,ut)}return yield Promise.all([...Object.values($t),...Object.values(yr)]),function(Cr,ve){return a._(this,void 0,void 0,function*(){let xe={};for(let Ie in Cr){xe[Ie]={};let ze=u.getImageCanvasContext((yield ve[Ie]).data),Qe=(yield Cr[Ie]).data;for(let Xe in Qe){let{width:nt,height:qt,x:Wt,y:nr,sdf:fr,pixelRatio:br,stretchX:Fr,stretchY:Hr,content:ri,textFitWidth:Ci,textFitHeight:cn}=Qe[Xe];xe[Ie][Xe]={data:null,pixelRatio:br,sdf:fr,stretchX:Fr,stretchY:Hr,content:ri,textFitWidth:Ci,textFitHeight:cn,spriteData:{width:nt,height:qt,x:Wt,y:nr,context:ze}}}}return xe})}($t,yr)})}(w,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then(le=>{if(this._spriteRequest=null,le)for(let Fe in le){this._spritesImagesIds[Fe]=[];let Ze=this._spritesImagesIds[Fe]?this._spritesImagesIds[Fe].filter(ut=>!(ut in le)):[];for(let ut of Ze)this.imageManager.removeImage(ut),this._changedImages[ut]=!0;for(let ut in le[Fe]){let Mt=Fe==="default"?ut:`${Fe}:${ut}`;this._spritesImagesIds[Fe].push(Mt),Mt in this.imageManager.images?this.imageManager.updateImage(Mt,le[Fe][ut],!1):this.imageManager.addImage(Mt,le[Fe][ut]),B&&(this._changedImages[Mt]=!0)}}}).catch(le=>{this._spriteRequest=null,ee=le,this.fire(new a.j(ee))}).finally(()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),B&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"})),Q&&Q(ee)})}_unloadSprite(){for(let w of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(w),this._changedImages[w]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}_validateLayer(w){let B=this.sourceCaches[w.source];if(!B)return;let Q=w.sourceLayer;if(!Q)return;let ee=B.getSource();(ee.type==="geojson"||ee.vectorLayerIds&&ee.vectorLayerIds.indexOf(Q)===-1)&&this.fire(new a.j(new Error(`Source layer "${Q}" does not exist on source "${ee.id}" as specified by style layer "${w.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let w in this.sourceCaches)if(!this.sourceCaches[w].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(w,B=!1){let Q=this._serializedAllLayers();if(!w||w.length===0)return Object.values(B?a.aB(Q):Q);let ee=[];for(let le of w)if(Q[le]){let Fe=B?a.aB(Q[le]):Q[le];ee.push(Fe)}return ee}_serializedAllLayers(){let w=this._serializedLayers;if(w)return w;w=this._serializedLayers={};let B=Object.keys(this._layers);for(let Q of B){let ee=this._layers[Q];ee.type!=="custom"&&(w[Q]=ee.serialize())}return w}hasTransitions(){if(this.light&&this.light.hasTransition()||this.sky&&this.sky.hasTransition())return!0;for(let w in this.sourceCaches)if(this.sourceCaches[w].hasTransition())return!0;for(let w in this._layers)if(this._layers[w].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(w){if(!this._loaded)return;let B=this._changed;if(B){let ee=Object.keys(this._updatedLayers),le=Object.keys(this._removedLayers);(ee.length||le.length)&&this._updateWorkerLayers(ee,le);for(let Fe in this._updatedSources){let Ze=this._updatedSources[Fe];if(Ze==="reload")this._reloadSource(Fe);else{if(Ze!=="clear")throw new Error(`Invalid action ${Ze}`);this._clearSource(Fe)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let Fe in this._updatedPaintProps)this._layers[Fe].updateTransitions(w);this.light.updateTransitions(w),this.sky.updateTransitions(w),this._resetUpdates()}let Q={};for(let ee in this.sourceCaches){let le=this.sourceCaches[ee];Q[ee]=le.used,le.used=!1}for(let ee of this._order){let le=this._layers[ee];le.recalculate(w,this._availableImages),!le.isHidden(w.zoom)&&le.source&&(this.sourceCaches[le.source].used=!0)}for(let ee in Q){let le=this.sourceCaches[ee];!!Q[ee]!=!!le.used&&le.fire(new a.k("data",{sourceDataType:"visibility",dataType:"source",sourceId:ee}))}this.light.recalculate(w),this.sky.recalculate(w),this.z=w.zoom,B&&this.fire(new a.k("data",{dataType:"style"}))}_updateTilesForChangedImages(){let w=Object.keys(this._changedImages);if(w.length){for(let B in this.sourceCaches)this.sourceCaches[B].reloadTilesForDependencies(["icons","patterns"],w);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let w in this.sourceCaches)this.sourceCaches[w].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(w,B){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(w,!1),removedIds:B})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(w,B={}){var Q;this._checkLoaded();let ee=this.serialize();if(w=B.transformStyle?B.transformStyle(ee,w):w,((Q=B.validate)===null||Q===void 0||Q)&&da(this,a.u(w)))return!1;(w=a.aB(w)).layers=a.az(w.layers);let le=a.aC(ee,w),Fe=this._getOperationsToPerform(le);if(Fe.unimplemented.length>0)throw new Error(`Unimplemented: ${Fe.unimplemented.join(", ")}.`);if(Fe.operations.length===0)return!1;for(let Ze of Fe.operations)Ze();return this.stylesheet=w,this._serializedLayers=null,!0}_getOperationsToPerform(w){let B=[],Q=[];for(let ee of w)switch(ee.command){case"setCenter":case"setZoom":case"setBearing":case"setPitch":continue;case"addLayer":B.push(()=>this.addLayer.apply(this,ee.args));break;case"removeLayer":B.push(()=>this.removeLayer.apply(this,ee.args));break;case"setPaintProperty":B.push(()=>this.setPaintProperty.apply(this,ee.args));break;case"setLayoutProperty":B.push(()=>this.setLayoutProperty.apply(this,ee.args));break;case"setFilter":B.push(()=>this.setFilter.apply(this,ee.args));break;case"addSource":B.push(()=>this.addSource.apply(this,ee.args));break;case"removeSource":B.push(()=>this.removeSource.apply(this,ee.args));break;case"setLayerZoomRange":B.push(()=>this.setLayerZoomRange.apply(this,ee.args));break;case"setLight":B.push(()=>this.setLight.apply(this,ee.args));break;case"setGeoJSONSourceData":B.push(()=>this.setGeoJSONSourceData.apply(this,ee.args));break;case"setGlyphs":B.push(()=>this.setGlyphs.apply(this,ee.args));break;case"setSprite":B.push(()=>this.setSprite.apply(this,ee.args));break;case"setSky":B.push(()=>this.setSky.apply(this,ee.args));break;case"setTerrain":B.push(()=>this.map.setTerrain.apply(this,ee.args));break;case"setTransition":B.push(()=>{});break;default:Q.push(ee.command)}return{operations:B,unimplemented:Q}}addImage(w,B){if(this.getImage(w))return this.fire(new a.j(new Error(`An image named "${w}" already exists.`)));this.imageManager.addImage(w,B),this._afterImageUpdated(w)}updateImage(w,B){this.imageManager.updateImage(w,B)}getImage(w){return this.imageManager.getImage(w)}removeImage(w){if(!this.getImage(w))return this.fire(new a.j(new Error(`An image named "${w}" does not exist.`)));this.imageManager.removeImage(w),this._afterImageUpdated(w)}_afterImageUpdated(w){this._availableImages=this.imageManager.listImages(),this._changedImages[w]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(w,B,Q={}){if(this._checkLoaded(),this.sourceCaches[w]!==void 0)throw new Error(`Source "${w}" already exists.`);if(!B.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(B).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(B.type)>=0&&this._validate(a.u.source,`sources.${w}`,B,null,Q))return;this.map&&this.map._collectResourceTiming&&(B.collectResourceTiming=!0);let ee=this.sourceCaches[w]=new pt(w,B,this.dispatcher);ee.style=this,ee.setEventedParent(this,()=>({isSourceLoaded:ee.loaded(),source:ee.serialize(),sourceId:w})),ee.onAdd(this.map),this._changed=!0}removeSource(w){if(this._checkLoaded(),this.sourceCaches[w]===void 0)throw new Error("There is no source with this ID");for(let Q in this._layers)if(this._layers[Q].source===w)return this.fire(new a.j(new Error(`Source "${w}" cannot be removed while layer "${Q}" is using it.`)));let B=this.sourceCaches[w];delete this.sourceCaches[w],delete this._updatedSources[w],B.fire(new a.k("data",{sourceDataType:"metadata",dataType:"source",sourceId:w})),B.setEventedParent(null),B.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(w,B){if(this._checkLoaded(),this.sourceCaches[w]===void 0)throw new Error(`There is no source with this ID=${w}`);let Q=this.sourceCaches[w].getSource();if(Q.type!=="geojson")throw new Error(`geojsonSource.type is ${Q.type}, which is !== 'geojson`);Q.setData(B),this._changed=!0}getSource(w){return this.sourceCaches[w]&&this.sourceCaches[w].getSource()}addLayer(w,B,Q={}){this._checkLoaded();let ee=w.id;if(this.getLayer(ee))return void this.fire(new a.j(new Error(`Layer "${ee}" already exists on this map.`)));let le;if(w.type==="custom"){if(da(this,a.aD(w)))return;le=a.aA(w)}else{if("source"in w&&typeof w.source=="object"&&(this.addSource(ee,w.source),w=a.aB(w),w=a.e(w,{source:ee})),this._validate(a.u.layer,`layers.${ee}`,w,{arrayIndex:-1},Q))return;le=a.aA(w),this._validateLayer(le),le.setEventedParent(this,{layer:{id:ee}})}let Fe=B?this._order.indexOf(B):this._order.length;if(B&&Fe===-1)this.fire(new a.j(new Error(`Cannot add layer "${ee}" before non-existing layer "${B}".`)));else{if(this._order.splice(Fe,0,ee),this._layerOrderChanged=!0,this._layers[ee]=le,this._removedLayers[ee]&&le.source&&le.type!=="custom"){let Ze=this._removedLayers[ee];delete this._removedLayers[ee],Ze.type!==le.type?this._updatedSources[le.source]="clear":(this._updatedSources[le.source]="reload",this.sourceCaches[le.source].pause())}this._updateLayer(le),le.onAdd&&le.onAdd(this.map)}}moveLayer(w,B){if(this._checkLoaded(),this._changed=!0,!this._layers[w])return void this.fire(new a.j(new Error(`The layer '${w}' does not exist in the map's style and cannot be moved.`)));if(w===B)return;let Q=this._order.indexOf(w);this._order.splice(Q,1);let ee=B?this._order.indexOf(B):this._order.length;B&&ee===-1?this.fire(new a.j(new Error(`Cannot move layer "${w}" before non-existing layer "${B}".`))):(this._order.splice(ee,0,w),this._layerOrderChanged=!0)}removeLayer(w){this._checkLoaded();let B=this._layers[w];if(!B)return void this.fire(new a.j(new Error(`Cannot remove non-existing layer "${w}".`)));B.setEventedParent(null);let Q=this._order.indexOf(w);this._order.splice(Q,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[w]=B,delete this._layers[w],this._serializedLayers&&delete this._serializedLayers[w],delete this._updatedLayers[w],delete this._updatedPaintProps[w],B.onRemove&&B.onRemove(this.map)}getLayer(w){return this._layers[w]}getLayersOrder(){return[...this._order]}hasLayer(w){return w in this._layers}setLayerZoomRange(w,B,Q){this._checkLoaded();let ee=this.getLayer(w);ee?ee.minzoom===B&&ee.maxzoom===Q||(B!=null&&(ee.minzoom=B),Q!=null&&(ee.maxzoom=Q),this._updateLayer(ee)):this.fire(new a.j(new Error(`Cannot set the zoom range of non-existing layer "${w}".`)))}setFilter(w,B,Q={}){this._checkLoaded();let ee=this.getLayer(w);if(ee){if(!a.aE(ee.filter,B))return B==null?(ee.filter=void 0,void this._updateLayer(ee)):void(this._validate(a.u.filter,`layers.${ee.id}.filter`,B,null,Q)||(ee.filter=a.aB(B),this._updateLayer(ee)))}else this.fire(new a.j(new Error(`Cannot filter non-existing layer "${w}".`)))}getFilter(w){return a.aB(this.getLayer(w).filter)}setLayoutProperty(w,B,Q,ee={}){this._checkLoaded();let le=this.getLayer(w);le?a.aE(le.getLayoutProperty(B),Q)||(le.setLayoutProperty(B,Q,ee),this._updateLayer(le)):this.fire(new a.j(new Error(`Cannot style non-existing layer "${w}".`)))}getLayoutProperty(w,B){let Q=this.getLayer(w);if(Q)return Q.getLayoutProperty(B);this.fire(new a.j(new Error(`Cannot get style of non-existing layer "${w}".`)))}setPaintProperty(w,B,Q,ee={}){this._checkLoaded();let le=this.getLayer(w);le?a.aE(le.getPaintProperty(B),Q)||(le.setPaintProperty(B,Q,ee)&&this._updateLayer(le),this._changed=!0,this._updatedPaintProps[w]=!0,this._serializedLayers=null):this.fire(new a.j(new Error(`Cannot style non-existing layer "${w}".`)))}getPaintProperty(w,B){return this.getLayer(w).getPaintProperty(B)}setFeatureState(w,B){this._checkLoaded();let Q=w.source,ee=w.sourceLayer,le=this.sourceCaches[Q];if(le===void 0)return void this.fire(new a.j(new Error(`The source '${Q}' does not exist in the map's style.`)));let Fe=le.getSource().type;Fe==="geojson"&&ee?this.fire(new a.j(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):Fe!=="vector"||ee?(w.id===void 0&&this.fire(new a.j(new Error("The feature id parameter must be provided."))),le.setFeatureState(ee,w.id,B)):this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(w,B){this._checkLoaded();let Q=w.source,ee=this.sourceCaches[Q];if(ee===void 0)return void this.fire(new a.j(new Error(`The source '${Q}' does not exist in the map's style.`)));let le=ee.getSource().type,Fe=le==="vector"?w.sourceLayer:void 0;le!=="vector"||Fe?B&&typeof w.id!="string"&&typeof w.id!="number"?this.fire(new a.j(new Error("A feature id is required to remove its specific state property."))):ee.removeFeatureState(Fe,w.id,B):this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(w){this._checkLoaded();let B=w.source,Q=w.sourceLayer,ee=this.sourceCaches[B];if(ee!==void 0)return ee.getSource().type!=="vector"||Q?(w.id===void 0&&this.fire(new a.j(new Error("The feature id parameter must be provided."))),ee.getFeatureState(Q,w.id)):void this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new a.j(new Error(`The source '${B}' does not exist in the map's style.`)))}getTransition(){return a.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;let w=a.aF(this.sourceCaches,le=>le.serialize()),B=this._serializeByIds(this._order,!0),Q=this.map.getTerrain()||void 0,ee=this.stylesheet;return a.aG({version:ee.version,name:ee.name,metadata:ee.metadata,light:ee.light,sky:ee.sky,center:ee.center,zoom:ee.zoom,bearing:ee.bearing,pitch:ee.pitch,sprite:ee.sprite,glyphs:ee.glyphs,transition:ee.transition,sources:w,layers:B,terrain:Q},le=>le!==void 0)}_updateLayer(w){this._updatedLayers[w.id]=!0,w.source&&!this._updatedSources[w.source]&&this.sourceCaches[w.source].getSource().type!=="raster"&&(this._updatedSources[w.source]="reload",this.sourceCaches[w.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(w){let B=Fe=>this._layers[Fe].type==="fill-extrusion",Q={},ee=[];for(let Fe=this._order.length-1;Fe>=0;Fe--){let Ze=this._order[Fe];if(B(Ze)){Q[Ze]=Fe;for(let ut of w){let Mt=ut[Ze];if(Mt)for(let Jt of Mt)ee.push(Jt)}}}ee.sort((Fe,Ze)=>Ze.intersectionZ-Fe.intersectionZ);let le=[];for(let Fe=this._order.length-1;Fe>=0;Fe--){let Ze=this._order[Fe];if(B(Ze))for(let ut=ee.length-1;ut>=0;ut--){let Mt=ee[ut].feature;if(Q[Mt.layer.id]{let fr=ze.featureSortOrder;if(fr){let br=fr.indexOf(Wt.featureIndex);return fr.indexOf(nr.featureIndex)-br}return nr.featureIndex-Wt.featureIndex});for(let Wt of qt)nt.push(Wt)}}for(let ze in ve)ve[ze].forEach(Qe=>{let Xe=Qe.feature,nt=Mt[Ze[ze].source].getFeatureState(Xe.layer["source-layer"],Xe.id);Xe.source=Xe.layer.source,Xe.layer["source-layer"]&&(Xe.sourceLayer=Xe.layer["source-layer"]),Xe.state=nt});return ve}(this._layers,Fe,this.sourceCaches,w,B,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(le)}querySourceFeatures(w,B){B&&B.filter&&this._validate(a.u.filter,"querySourceFeatures.filter",B.filter,null,B);let Q=this.sourceCaches[w];return Q?function(ee,le){let Fe=ee.getRenderableIds().map(Mt=>ee.getTileByID(Mt)),Ze=[],ut={};for(let Mt=0;Mtyr.getTileByID(Cr)).sort((Cr,ve)=>ve.tileID.overscaledZ-Cr.tileID.overscaledZ||(Cr.tileID.isLessThan(ve.tileID)?-1:1))}let $t=this.crossTileSymbolIndex.addLayer(Jt,ut[Jt.source],w.center.lng);Fe=Fe||$t}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((le=le||this._layerOrderChanged||Q===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(u.now(),w.zoom))&&(this.pauseablePlacement=new Ba(w,this.map.terrain,this._order,le,B,Q,ee,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,ut),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(u.now()),Ze=!0),Fe&&this.pauseablePlacement.placement.setStale()),Ze||Fe)for(let Mt of this._order){let Jt=this._layers[Mt];Jt.type==="symbol"&&this.placement.updateLayerOpacities(Jt,ut[Jt.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(u.now())}_releaseSymbolFadeTiles(){for(let w in this.sourceCaches)this.sourceCaches[w].releaseSymbolFadeTiles()}getImages(w,B){return a._(this,void 0,void 0,function*(){let Q=yield this.imageManager.getImages(B.icons);this._updateTilesForChangedImages();let ee=this.sourceCaches[B.source];return ee&&ee.setDependencies(B.tileID.key,B.type,B.icons),Q})}getGlyphs(w,B){return a._(this,void 0,void 0,function*(){let Q=yield this.glyphManager.getGlyphs(B.stacks),ee=this.sourceCaches[B.source];return ee&&ee.setDependencies(B.tileID.key,B.type,[""]),Q})}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(w,B={}){this._checkLoaded(),w&&this._validate(a.u.glyphs,"glyphs",w,null,B)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=w,this.glyphManager.entries={},this.glyphManager.setURL(w))}addSprite(w,B,Q={},ee){this._checkLoaded();let le=[{id:w,url:B}],Fe=[...C(this.stylesheet.sprite),...le];this._validate(a.u.sprite,"sprite",Fe,null,Q)||(this.stylesheet.sprite=Fe,this._loadSprite(le,!0,ee))}removeSprite(w){this._checkLoaded();let B=C(this.stylesheet.sprite);if(B.find(Q=>Q.id===w)){if(this._spritesImagesIds[w])for(let Q of this._spritesImagesIds[w])this.imageManager.removeImage(Q),this._changedImages[Q]=!0;B.splice(B.findIndex(Q=>Q.id===w),1),this.stylesheet.sprite=B.length>0?B:void 0,delete this._spritesImagesIds[w],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}else this.fire(new a.j(new Error(`Sprite "${w}" doesn't exists on this map.`)))}getSprite(){return C(this.stylesheet.sprite)}setSprite(w,B={},Q){this._checkLoaded(),w&&this._validate(a.u.sprite,"sprite",w,null,B)||(this.stylesheet.sprite=w,w?this._loadSprite(w,!0,Q):(this._unloadSprite(),Q&&Q(null)))}}var vo=a.Y([{name:"a_pos",type:"Int16",components:2}]);let Gn={prelude:Ct(`#ifdef GL_ES +precision mediump float; +#else +#if !defined(lowp) +#define lowp +#endif +#if !defined(mediump) +#define mediump +#endif +#if !defined(highp) +#define highp +#endif +#endif +`,`#ifdef GL_ES +precision highp float; +#else +#if !defined(lowp) +#define lowp +#endif +#if !defined(mediump) +#define mediump +#endif +#if !defined(highp) +#define highp +#endif +#endif +vec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0 +);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;} +#ifdef TERRAIN3D +uniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth; +#endif +const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) { +#ifdef TERRAIN3D +highp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0)); +#else +return 1.0; +#endif +}float calculate_visibility(vec4 pos) { +#ifdef TERRAIN3D +vec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0; +#else +return 1.0; +#endif +}float ele(vec2 pos) { +#ifdef TERRAIN3D +vec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a; +#else +return 0.0; +#endif +}float get_elevation(vec2 pos) { +#ifdef TERRAIN3D +vec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration; +#else +return 0.0; +#endif +}`),background:Ct(`uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),backgroundPattern:Ct(`uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}"),circle:Ct(`varying vec3 v_data;varying float v_visibility; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define mediump float radius +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define highp vec4 stroke_color +#pragma mapbox: define mediump float stroke_width +#pragma mapbox: define lowp float stroke_opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize mediump float radius +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize highp vec4 stroke_color +#pragma mapbox: initialize mediump float stroke_width +#pragma mapbox: initialize lowp float stroke_opacity +vec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define mediump float radius +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define highp vec4 stroke_color +#pragma mapbox: define mediump float stroke_width +#pragma mapbox: define lowp float stroke_opacity +void main(void) { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize mediump float radius +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize highp vec4 stroke_color +#pragma mapbox: initialize mediump float stroke_width +#pragma mapbox: initialize lowp float stroke_opacity +vec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`),clippingMask:Ct("void main() {gl_FragColor=vec4(1.0);}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),heatmap:Ct(`uniform highp float u_intensity;varying vec2 v_extrude; +#pragma mapbox: define highp float weight +#define GAUSS_COEF 0.3989422804014327 +void main() { +#pragma mapbox: initialize highp float weight +float d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude; +#pragma mapbox: define highp float weight +#pragma mapbox: define mediump float radius +const highp float ZERO=1.0/255.0/16.0; +#define GAUSS_COEF 0.3989422804014327 +void main(void) { +#pragma mapbox: initialize highp float weight +#pragma mapbox: initialize mediump float radius +vec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,get_elevation(floor(a_pos*0.5)),1);gl_Position=u_matrix*pos;}`),heatmapTexture:Ct(`uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(0.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}"),collisionBox:Ct("varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_anchor_pos;attribute vec2 a_placed;attribute vec2 a_box_real;uniform mat4 u_matrix;uniform vec2 u_pixel_extrude_scale;varying float v_placed;varying float v_notUsed;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:Ct("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),debug:Ct("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}"),fill:Ct(`#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float opacity +gl_FragColor=color*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec2 a_pos;uniform mat4 u_matrix; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float opacity +gl_Position=u_matrix*vec4(a_pos,0,1);}`),fillOutline:Ct(`varying vec2 v_pos; +#pragma mapbox: define highp vec4 outline_color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 outline_color +#pragma mapbox: initialize lowp float opacity +float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos; +#pragma mapbox: define highp vec4 outline_color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 outline_color +#pragma mapbox: initialize lowp float opacity +gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillOutlinePattern:Ct(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillPattern:Ct(`#ifdef GL_ES +precision highp float; +#endif +uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`),fillExtrusion:Ct(`varying vec4 v_color;void main() {gl_FragColor=v_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed; +#ifdef TERRAIN3D +attribute vec2 a_centroid; +#endif +varying vec4 v_color; +#pragma mapbox: define highp float base +#pragma mapbox: define highp float height +#pragma mapbox: define highp vec4 color +void main() { +#pragma mapbox: initialize highp float base +#pragma mapbox: initialize highp float height +#pragma mapbox: initialize highp vec4 color +vec3 normal=a_normal_ed.xyz; +#ifdef TERRAIN3D +float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0); +#else +float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0; +#endif +base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`),fillExtrusionPattern:Ct(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed; +#ifdef TERRAIN3D +attribute vec2 a_centroid; +#endif +varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to; +#ifdef TERRAIN3D +float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0); +#else +float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0; +#endif +base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0 +? a_pos +: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`),hillshadePrepare:Ct(`#ifdef GL_ES +precision highp float; +#endif +uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hillshade:Ct(`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent; +#define PI 3.141592653589793 +void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}"),line:Ct(`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_width2=vec2(outset,inset);}`),lineGradient:Ct(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_width2=vec2(outset,inset);}`),linePattern:Ct(`#ifdef GL_ES +precision highp float; +#endif +uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:Ct(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`),raster:Ct(`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),symbolIcon:Ct(`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec2 v_tex;varying float v_fade_opacity;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);} +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}`),symbolSDF:Ct(`#define SDF_PX 8.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec2 v_data0;varying vec3 v_data1;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);} +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`),symbolTextAndIcon:Ct(`#define SDF_PX 8.0 +#define SDF 1.0 +#define ICON 0.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec4 v_data0;varying vec4 v_data1;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);} +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`),terrain:Ct("uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;varying vec2 v_texture_pos;varying float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture2D(u_texture,v_texture_pos);if (v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);gl_FragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {gl_FragColor=surface_color;}}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform mat4 u_fog_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}"),terrainDepth:Ct("varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}"),terrainCoords:Ct("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);}"),sky:Ct("uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform float u_horizon;uniform float u_sky_horizon_blend;void main() {float y=gl_FragCoord.y;if (y > u_horizon) {float blend=y-u_horizon;if (blend < u_sky_horizon_blend) {gl_FragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {gl_FragColor=u_sky_color;}}}","attribute vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}")};function Ct(ue,w){let B=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,Q=w.match(/attribute ([\w]+) ([\w]+)/g),ee=ue.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),le=w.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),Fe=le?le.concat(ee):ee,Ze={};return{fragmentSource:ue=ue.replace(B,(ut,Mt,Jt,$t,yr)=>(Ze[yr]=!0,Mt==="define"?` +#ifndef HAS_UNIFORM_u_${yr} +varying ${Jt} ${$t} ${yr}; +#else +uniform ${Jt} ${$t} u_${yr}; +#endif +`:` +#ifdef HAS_UNIFORM_u_${yr} + ${Jt} ${$t} ${yr} = u_${yr}; +#endif +`)),vertexSource:w=w.replace(B,(ut,Mt,Jt,$t,yr)=>{let Cr=$t==="float"?"vec2":"vec4",ve=yr.match(/color/)?"color":Cr;return Ze[yr]?Mt==="define"?` +#ifndef HAS_UNIFORM_u_${yr} +uniform lowp float u_${yr}_t; +attribute ${Jt} ${Cr} a_${yr}; +varying ${Jt} ${$t} ${yr}; +#else +uniform ${Jt} ${$t} u_${yr}; +#endif +`:ve==="vec4"?` +#ifndef HAS_UNIFORM_u_${yr} + ${yr} = a_${yr}; +#else + ${Jt} ${$t} ${yr} = u_${yr}; +#endif +`:` +#ifndef HAS_UNIFORM_u_${yr} + ${yr} = unpack_mix_${ve}(a_${yr}, u_${yr}_t); +#else + ${Jt} ${$t} ${yr} = u_${yr}; +#endif +`:Mt==="define"?` +#ifndef HAS_UNIFORM_u_${yr} +uniform lowp float u_${yr}_t; +attribute ${Jt} ${Cr} a_${yr}; +#else +uniform ${Jt} ${$t} u_${yr}; +#endif +`:ve==="vec4"?` +#ifndef HAS_UNIFORM_u_${yr} + ${Jt} ${$t} ${yr} = a_${yr}; +#else + ${Jt} ${$t} ${yr} = u_${yr}; +#endif +`:` +#ifndef HAS_UNIFORM_u_${yr} + ${Jt} ${$t} ${yr} = unpack_mix_${ve}(a_${yr}, u_${yr}_t); +#else + ${Jt} ${$t} ${yr} = u_${yr}; +#endif +`}),staticAttributes:Q,staticUniforms:Fe}}class Sr{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(w,B,Q,ee,le,Fe,Ze,ut,Mt){this.context=w;let Jt=this.boundPaintVertexBuffers.length!==ee.length;for(let $t=0;!Jt&&$t({u_matrix:ue,u_texture:0,u_ele_delta:w,u_fog_matrix:B,u_fog_color:Q?Q.properties.get("fog-color"):a.aM.white,u_fog_ground_blend:Q?Q.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:Q?Q.calculateFogBlendOpacity(ee):0,u_horizon_color:Q?Q.properties.get("horizon-color"):a.aM.white,u_horizon_fog_blend:Q?Q.properties.get("horizon-fog-blend"):1});function hi(ue){let w=[];for(let B=0;B({u_depth:new a.aH(Wt,nr.u_depth),u_terrain:new a.aH(Wt,nr.u_terrain),u_terrain_dim:new a.aI(Wt,nr.u_terrain_dim),u_terrain_matrix:new a.aJ(Wt,nr.u_terrain_matrix),u_terrain_unpack:new a.aK(Wt,nr.u_terrain_unpack),u_terrain_exaggeration:new a.aI(Wt,nr.u_terrain_exaggeration)}))(w,qt),this.binderUniforms=Q?Q.getUniforms(w,qt):[]}draw(w,B,Q,ee,le,Fe,Ze,ut,Mt,Jt,$t,yr,Cr,ve,xe,Ie,ze,Qe){let Xe=w.gl;if(this.failedToCreate)return;if(w.program.set(this.program),w.setDepthMode(Q),w.setStencilMode(ee),w.setColorMode(le),w.setCullFace(Fe),ut){w.activeTexture.set(Xe.TEXTURE2),Xe.bindTexture(Xe.TEXTURE_2D,ut.depthTexture),w.activeTexture.set(Xe.TEXTURE3),Xe.bindTexture(Xe.TEXTURE_2D,ut.texture);for(let qt in this.terrainUniforms)this.terrainUniforms[qt].set(ut[qt])}for(let qt in this.fixedUniforms)this.fixedUniforms[qt].set(Ze[qt]);xe&&xe.setUniforms(w,this.binderUniforms,Cr,{zoom:ve});let nt=0;switch(B){case Xe.LINES:nt=2;break;case Xe.TRIANGLES:nt=3;break;case Xe.LINE_STRIP:nt=1}for(let qt of yr.get()){let Wt=qt.vaos||(qt.vaos={});(Wt[Mt]||(Wt[Mt]=new Sr)).bind(w,this,Jt,xe?xe.getPaintVertexBuffers():[],$t,qt.vertexOffset,Ie,ze,Qe),Xe.drawElements(B,qt.primitiveLength*nt,Xe.UNSIGNED_SHORT,qt.primitiveOffset*nt*2)}}}function Sn(ue,w,B){let Q=1/Fn(B,1,w.transform.tileZoom),ee=Math.pow(2,B.tileID.overscaledZ),le=B.tileSize*Math.pow(2,w.transform.tileZoom)/ee,Fe=le*(B.tileID.canonical.x+B.tileID.wrap*ee),Ze=le*B.tileID.canonical.y;return{u_image:0,u_texsize:B.imageAtlasTexture.size,u_scale:[Q,ue.fromScale,ue.toScale],u_fade:ue.t,u_pixel_coord_upper:[Fe>>16,Ze>>16],u_pixel_coord_lower:[65535&Fe,65535&Ze]}}let En=(ue,w,B,Q)=>{let ee=w.style.light,le=ee.properties.get("position"),Fe=[le.x,le.y,le.z],Ze=function(){var Mt=new a.A(9);return a.A!=Float32Array&&(Mt[1]=0,Mt[2]=0,Mt[3]=0,Mt[5]=0,Mt[6]=0,Mt[7]=0),Mt[0]=1,Mt[4]=1,Mt[8]=1,Mt}();ee.properties.get("anchor")==="viewport"&&function(Mt,Jt){var $t=Math.sin(Jt),yr=Math.cos(Jt);Mt[0]=yr,Mt[1]=$t,Mt[2]=0,Mt[3]=-$t,Mt[4]=yr,Mt[5]=0,Mt[6]=0,Mt[7]=0,Mt[8]=1}(Ze,-w.transform.angle),function(Mt,Jt,$t){var yr=Jt[0],Cr=Jt[1],ve=Jt[2];Mt[0]=yr*$t[0]+Cr*$t[3]+ve*$t[6],Mt[1]=yr*$t[1]+Cr*$t[4]+ve*$t[7],Mt[2]=yr*$t[2]+Cr*$t[5]+ve*$t[8]}(Fe,Fe,Ze);let ut=ee.properties.get("color");return{u_matrix:ue,u_lightpos:Fe,u_lightintensity:ee.properties.get("intensity"),u_lightcolor:[ut.r,ut.g,ut.b],u_vertical_gradient:+B,u_opacity:Q}},ki=(ue,w,B,Q,ee,le,Fe)=>a.e(En(ue,w,B,Q),Sn(le,w,Fe),{u_height_factor:-Math.pow(2,ee.overscaledZ)/Fe.tileSize/8}),_n=ue=>({u_matrix:ue}),ya=(ue,w,B,Q)=>a.e(_n(ue),Sn(B,w,Q)),ea=(ue,w)=>({u_matrix:ue,u_world:w}),Ma=(ue,w,B,Q,ee)=>a.e(ya(ue,w,B,Q),{u_world:ee}),_o=(ue,w,B,Q)=>{let ee=ue.transform,le,Fe;if(Q.paint.get("circle-pitch-alignment")==="map"){let Ze=Fn(B,1,ee.zoom);le=!0,Fe=[Ze,Ze]}else le=!1,Fe=ee.pixelsToGLUnits;return{u_camera_to_center_distance:ee.cameraToCenterDistance,u_scale_with_map:+(Q.paint.get("circle-pitch-scale")==="map"),u_matrix:ue.translatePosMatrix(w.posMatrix,B,Q.paint.get("circle-translate"),Q.paint.get("circle-translate-anchor")),u_pitch_with_map:+le,u_device_pixel_ratio:ue.pixelRatio,u_extrude_scale:Fe}},No=(ue,w,B)=>({u_matrix:ue,u_inv_matrix:w,u_camera_to_center_distance:B.cameraToCenterDistance,u_viewport_size:[B.width,B.height]}),po=(ue,w,B=1)=>({u_matrix:ue,u_color:w,u_overlay:0,u_overlay_scale:B}),Lo=ue=>({u_matrix:ue}),ko=(ue,w,B,Q)=>({u_matrix:ue,u_extrude_scale:Fn(w,1,B),u_intensity:Q}),Ds=(ue,w,B,Q)=>{let ee=a.H();a.aP(ee,0,ue.width,ue.height,0,0,1);let le=ue.context.gl;return{u_matrix:ee,u_world:[le.drawingBufferWidth,le.drawingBufferHeight],u_image:B,u_color_ramp:Q,u_opacity:w.paint.get("heatmap-opacity")}};function Fs(ue,w){let B=Math.pow(2,w.canonical.z),Q=w.canonical.y;return[new a.Z(0,Q/B).toLngLat().lat,new a.Z(0,(Q+1)/B).toLngLat().lat]}let ll=(ue,w,B,Q)=>{let ee=ue.transform;return{u_matrix:As(ue,w,B,Q),u_ratio:1/Fn(w,1,ee.zoom),u_device_pixel_ratio:ue.pixelRatio,u_units_to_pixels:[1/ee.pixelsToGLUnits[0],1/ee.pixelsToGLUnits[1]]}},ul=(ue,w,B,Q,ee)=>a.e(ll(ue,w,B,ee),{u_image:0,u_image_height:Q}),zl=(ue,w,B,Q,ee)=>{let le=ue.transform,Fe=il(w,le);return{u_matrix:As(ue,w,B,ee),u_texsize:w.imageAtlasTexture.size,u_ratio:1/Fn(w,1,le.zoom),u_device_pixel_ratio:ue.pixelRatio,u_image:0,u_scale:[Fe,Q.fromScale,Q.toScale],u_fade:Q.t,u_units_to_pixels:[1/le.pixelsToGLUnits[0],1/le.pixelsToGLUnits[1]]}},us=(ue,w,B,Q,ee,le)=>{let Fe=ue.lineAtlas,Ze=il(w,ue.transform),ut=B.layout.get("line-cap")==="round",Mt=Fe.getDash(Q.from,ut),Jt=Fe.getDash(Q.to,ut),$t=Mt.width*ee.fromScale,yr=Jt.width*ee.toScale;return a.e(ll(ue,w,B,le),{u_patternscale_a:[Ze/$t,-Mt.height/2],u_patternscale_b:[Ze/yr,-Jt.height/2],u_sdfgamma:Fe.width/(256*Math.min($t,yr)*ue.pixelRatio)/2,u_image:0,u_tex_y_a:Mt.y,u_tex_y_b:Jt.y,u_mix:ee.t})};function il(ue,w){return 1/Fn(ue,1,w.tileZoom)}function As(ue,w,B,Q){return ue.translatePosMatrix(Q?Q.posMatrix:w.tileID.posMatrix,w,B.paint.get("line-translate"),B.paint.get("line-translate-anchor"))}let cl=(ue,w,B,Q,ee)=>{return{u_matrix:ue,u_tl_parent:w,u_scale_parent:B,u_buffer_scale:1,u_fade_t:Q.mix,u_opacity:Q.opacity*ee.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:ee.paint.get("raster-brightness-min"),u_brightness_high:ee.paint.get("raster-brightness-max"),u_saturation_factor:(Fe=ee.paint.get("raster-saturation"),Fe>0?1-1/(1.001-Fe):-Fe),u_contrast_factor:(le=ee.paint.get("raster-contrast"),le>0?1/(1-le):1+le),u_spin_weights:Ks(ee.paint.get("raster-hue-rotate"))};var le,Fe};function Ks(ue){ue*=Math.PI/180;let w=Math.sin(ue),B=Math.cos(ue);return[(2*B+1)/3,(-Math.sqrt(3)*w-B+1)/3,(Math.sqrt(3)*w-B+1)/3]}let zs=(ue,w,B,Q,ee,le,Fe,Ze,ut,Mt,Jt,$t,yr,Cr)=>{let ve=Fe.transform;return{u_is_size_zoom_constant:+(ue==="constant"||ue==="source"),u_is_size_feature_constant:+(ue==="constant"||ue==="camera"),u_size_t:w?w.uSizeT:0,u_size:w?w.uSize:0,u_camera_to_center_distance:ve.cameraToCenterDistance,u_pitch:ve.pitch/360*2*Math.PI,u_rotate_symbol:+B,u_aspect_ratio:ve.width/ve.height,u_fade_change:Fe.options.fadeDuration?Fe.symbolFadeChange:1,u_matrix:Ze,u_label_plane_matrix:ut,u_coord_matrix:Mt,u_is_text:+$t,u_pitch_with_map:+Q,u_is_along_line:ee,u_is_variable_anchor:le,u_texsize:yr,u_texture:0,u_translation:Jt,u_pitched_scale:Cr}},Io=(ue,w,B,Q,ee,le,Fe,Ze,ut,Mt,Jt,$t,yr,Cr,ve)=>{let xe=Fe.transform;return a.e(zs(ue,w,B,Q,ee,le,Fe,Ze,ut,Mt,Jt,$t,yr,ve),{u_gamma_scale:Q?Math.cos(xe._pitch)*xe.cameraToCenterDistance:1,u_device_pixel_ratio:Fe.pixelRatio,u_is_halo:+Cr})},ls=(ue,w,B,Q,ee,le,Fe,Ze,ut,Mt,Jt,$t,yr,Cr)=>a.e(Io(ue,w,B,Q,ee,le,Fe,Ze,ut,Mt,Jt,!0,$t,!0,Cr),{u_texsize_icon:yr,u_texture_icon:1}),Yl=(ue,w,B)=>({u_matrix:ue,u_opacity:w,u_color:B}),Su=(ue,w,B,Q,ee,le)=>a.e(function(Fe,Ze,ut,Mt){let Jt=ut.imageManager.getPattern(Fe.from.toString()),$t=ut.imageManager.getPattern(Fe.to.toString()),{width:yr,height:Cr}=ut.imageManager.getPixelSize(),ve=Math.pow(2,Mt.tileID.overscaledZ),xe=Mt.tileSize*Math.pow(2,ut.transform.tileZoom)/ve,Ie=xe*(Mt.tileID.canonical.x+Mt.tileID.wrap*ve),ze=xe*Mt.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:Jt.tl,u_pattern_br_a:Jt.br,u_pattern_tl_b:$t.tl,u_pattern_br_b:$t.br,u_texsize:[yr,Cr],u_mix:Ze.t,u_pattern_size_a:Jt.displaySize,u_pattern_size_b:$t.displaySize,u_scale_a:Ze.fromScale,u_scale_b:Ze.toScale,u_tile_units_to_pixels:1/Fn(Mt,1,ut.transform.tileZoom),u_pixel_coord_upper:[Ie>>16,ze>>16],u_pixel_coord_lower:[65535&Ie,65535&ze]}}(Q,le,B,ee),{u_matrix:ue,u_opacity:w}),nc={fillExtrusion:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_lightpos:new a.aN(ue,w.u_lightpos),u_lightintensity:new a.aI(ue,w.u_lightintensity),u_lightcolor:new a.aN(ue,w.u_lightcolor),u_vertical_gradient:new a.aI(ue,w.u_vertical_gradient),u_opacity:new a.aI(ue,w.u_opacity)}),fillExtrusionPattern:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_lightpos:new a.aN(ue,w.u_lightpos),u_lightintensity:new a.aI(ue,w.u_lightintensity),u_lightcolor:new a.aN(ue,w.u_lightcolor),u_vertical_gradient:new a.aI(ue,w.u_vertical_gradient),u_height_factor:new a.aI(ue,w.u_height_factor),u_image:new a.aH(ue,w.u_image),u_texsize:new a.aO(ue,w.u_texsize),u_pixel_coord_upper:new a.aO(ue,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(ue,w.u_pixel_coord_lower),u_scale:new a.aN(ue,w.u_scale),u_fade:new a.aI(ue,w.u_fade),u_opacity:new a.aI(ue,w.u_opacity)}),fill:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix)}),fillPattern:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_image:new a.aH(ue,w.u_image),u_texsize:new a.aO(ue,w.u_texsize),u_pixel_coord_upper:new a.aO(ue,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(ue,w.u_pixel_coord_lower),u_scale:new a.aN(ue,w.u_scale),u_fade:new a.aI(ue,w.u_fade)}),fillOutline:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_world:new a.aO(ue,w.u_world)}),fillOutlinePattern:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_world:new a.aO(ue,w.u_world),u_image:new a.aH(ue,w.u_image),u_texsize:new a.aO(ue,w.u_texsize),u_pixel_coord_upper:new a.aO(ue,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(ue,w.u_pixel_coord_lower),u_scale:new a.aN(ue,w.u_scale),u_fade:new a.aI(ue,w.u_fade)}),circle:(ue,w)=>({u_camera_to_center_distance:new a.aI(ue,w.u_camera_to_center_distance),u_scale_with_map:new a.aH(ue,w.u_scale_with_map),u_pitch_with_map:new a.aH(ue,w.u_pitch_with_map),u_extrude_scale:new a.aO(ue,w.u_extrude_scale),u_device_pixel_ratio:new a.aI(ue,w.u_device_pixel_ratio),u_matrix:new a.aJ(ue,w.u_matrix)}),collisionBox:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_pixel_extrude_scale:new a.aO(ue,w.u_pixel_extrude_scale)}),collisionCircle:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_inv_matrix:new a.aJ(ue,w.u_inv_matrix),u_camera_to_center_distance:new a.aI(ue,w.u_camera_to_center_distance),u_viewport_size:new a.aO(ue,w.u_viewport_size)}),debug:(ue,w)=>({u_color:new a.aL(ue,w.u_color),u_matrix:new a.aJ(ue,w.u_matrix),u_overlay:new a.aH(ue,w.u_overlay),u_overlay_scale:new a.aI(ue,w.u_overlay_scale)}),clippingMask:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix)}),heatmap:(ue,w)=>({u_extrude_scale:new a.aI(ue,w.u_extrude_scale),u_intensity:new a.aI(ue,w.u_intensity),u_matrix:new a.aJ(ue,w.u_matrix)}),heatmapTexture:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_world:new a.aO(ue,w.u_world),u_image:new a.aH(ue,w.u_image),u_color_ramp:new a.aH(ue,w.u_color_ramp),u_opacity:new a.aI(ue,w.u_opacity)}),hillshade:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_image:new a.aH(ue,w.u_image),u_latrange:new a.aO(ue,w.u_latrange),u_light:new a.aO(ue,w.u_light),u_shadow:new a.aL(ue,w.u_shadow),u_highlight:new a.aL(ue,w.u_highlight),u_accent:new a.aL(ue,w.u_accent)}),hillshadePrepare:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_image:new a.aH(ue,w.u_image),u_dimension:new a.aO(ue,w.u_dimension),u_zoom:new a.aI(ue,w.u_zoom),u_unpack:new a.aK(ue,w.u_unpack)}),line:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_ratio:new a.aI(ue,w.u_ratio),u_device_pixel_ratio:new a.aI(ue,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(ue,w.u_units_to_pixels)}),lineGradient:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_ratio:new a.aI(ue,w.u_ratio),u_device_pixel_ratio:new a.aI(ue,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(ue,w.u_units_to_pixels),u_image:new a.aH(ue,w.u_image),u_image_height:new a.aI(ue,w.u_image_height)}),linePattern:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_texsize:new a.aO(ue,w.u_texsize),u_ratio:new a.aI(ue,w.u_ratio),u_device_pixel_ratio:new a.aI(ue,w.u_device_pixel_ratio),u_image:new a.aH(ue,w.u_image),u_units_to_pixels:new a.aO(ue,w.u_units_to_pixels),u_scale:new a.aN(ue,w.u_scale),u_fade:new a.aI(ue,w.u_fade)}),lineSDF:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_ratio:new a.aI(ue,w.u_ratio),u_device_pixel_ratio:new a.aI(ue,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(ue,w.u_units_to_pixels),u_patternscale_a:new a.aO(ue,w.u_patternscale_a),u_patternscale_b:new a.aO(ue,w.u_patternscale_b),u_sdfgamma:new a.aI(ue,w.u_sdfgamma),u_image:new a.aH(ue,w.u_image),u_tex_y_a:new a.aI(ue,w.u_tex_y_a),u_tex_y_b:new a.aI(ue,w.u_tex_y_b),u_mix:new a.aI(ue,w.u_mix)}),raster:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_tl_parent:new a.aO(ue,w.u_tl_parent),u_scale_parent:new a.aI(ue,w.u_scale_parent),u_buffer_scale:new a.aI(ue,w.u_buffer_scale),u_fade_t:new a.aI(ue,w.u_fade_t),u_opacity:new a.aI(ue,w.u_opacity),u_image0:new a.aH(ue,w.u_image0),u_image1:new a.aH(ue,w.u_image1),u_brightness_low:new a.aI(ue,w.u_brightness_low),u_brightness_high:new a.aI(ue,w.u_brightness_high),u_saturation_factor:new a.aI(ue,w.u_saturation_factor),u_contrast_factor:new a.aI(ue,w.u_contrast_factor),u_spin_weights:new a.aN(ue,w.u_spin_weights)}),symbolIcon:(ue,w)=>({u_is_size_zoom_constant:new a.aH(ue,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(ue,w.u_is_size_feature_constant),u_size_t:new a.aI(ue,w.u_size_t),u_size:new a.aI(ue,w.u_size),u_camera_to_center_distance:new a.aI(ue,w.u_camera_to_center_distance),u_pitch:new a.aI(ue,w.u_pitch),u_rotate_symbol:new a.aH(ue,w.u_rotate_symbol),u_aspect_ratio:new a.aI(ue,w.u_aspect_ratio),u_fade_change:new a.aI(ue,w.u_fade_change),u_matrix:new a.aJ(ue,w.u_matrix),u_label_plane_matrix:new a.aJ(ue,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(ue,w.u_coord_matrix),u_is_text:new a.aH(ue,w.u_is_text),u_pitch_with_map:new a.aH(ue,w.u_pitch_with_map),u_is_along_line:new a.aH(ue,w.u_is_along_line),u_is_variable_anchor:new a.aH(ue,w.u_is_variable_anchor),u_texsize:new a.aO(ue,w.u_texsize),u_texture:new a.aH(ue,w.u_texture),u_translation:new a.aO(ue,w.u_translation),u_pitched_scale:new a.aI(ue,w.u_pitched_scale)}),symbolSDF:(ue,w)=>({u_is_size_zoom_constant:new a.aH(ue,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(ue,w.u_is_size_feature_constant),u_size_t:new a.aI(ue,w.u_size_t),u_size:new a.aI(ue,w.u_size),u_camera_to_center_distance:new a.aI(ue,w.u_camera_to_center_distance),u_pitch:new a.aI(ue,w.u_pitch),u_rotate_symbol:new a.aH(ue,w.u_rotate_symbol),u_aspect_ratio:new a.aI(ue,w.u_aspect_ratio),u_fade_change:new a.aI(ue,w.u_fade_change),u_matrix:new a.aJ(ue,w.u_matrix),u_label_plane_matrix:new a.aJ(ue,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(ue,w.u_coord_matrix),u_is_text:new a.aH(ue,w.u_is_text),u_pitch_with_map:new a.aH(ue,w.u_pitch_with_map),u_is_along_line:new a.aH(ue,w.u_is_along_line),u_is_variable_anchor:new a.aH(ue,w.u_is_variable_anchor),u_texsize:new a.aO(ue,w.u_texsize),u_texture:new a.aH(ue,w.u_texture),u_gamma_scale:new a.aI(ue,w.u_gamma_scale),u_device_pixel_ratio:new a.aI(ue,w.u_device_pixel_ratio),u_is_halo:new a.aH(ue,w.u_is_halo),u_translation:new a.aO(ue,w.u_translation),u_pitched_scale:new a.aI(ue,w.u_pitched_scale)}),symbolTextAndIcon:(ue,w)=>({u_is_size_zoom_constant:new a.aH(ue,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(ue,w.u_is_size_feature_constant),u_size_t:new a.aI(ue,w.u_size_t),u_size:new a.aI(ue,w.u_size),u_camera_to_center_distance:new a.aI(ue,w.u_camera_to_center_distance),u_pitch:new a.aI(ue,w.u_pitch),u_rotate_symbol:new a.aH(ue,w.u_rotate_symbol),u_aspect_ratio:new a.aI(ue,w.u_aspect_ratio),u_fade_change:new a.aI(ue,w.u_fade_change),u_matrix:new a.aJ(ue,w.u_matrix),u_label_plane_matrix:new a.aJ(ue,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(ue,w.u_coord_matrix),u_is_text:new a.aH(ue,w.u_is_text),u_pitch_with_map:new a.aH(ue,w.u_pitch_with_map),u_is_along_line:new a.aH(ue,w.u_is_along_line),u_is_variable_anchor:new a.aH(ue,w.u_is_variable_anchor),u_texsize:new a.aO(ue,w.u_texsize),u_texsize_icon:new a.aO(ue,w.u_texsize_icon),u_texture:new a.aH(ue,w.u_texture),u_texture_icon:new a.aH(ue,w.u_texture_icon),u_gamma_scale:new a.aI(ue,w.u_gamma_scale),u_device_pixel_ratio:new a.aI(ue,w.u_device_pixel_ratio),u_is_halo:new a.aH(ue,w.u_is_halo),u_translation:new a.aO(ue,w.u_translation),u_pitched_scale:new a.aI(ue,w.u_pitched_scale)}),background:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_opacity:new a.aI(ue,w.u_opacity),u_color:new a.aL(ue,w.u_color)}),backgroundPattern:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_opacity:new a.aI(ue,w.u_opacity),u_image:new a.aH(ue,w.u_image),u_pattern_tl_a:new a.aO(ue,w.u_pattern_tl_a),u_pattern_br_a:new a.aO(ue,w.u_pattern_br_a),u_pattern_tl_b:new a.aO(ue,w.u_pattern_tl_b),u_pattern_br_b:new a.aO(ue,w.u_pattern_br_b),u_texsize:new a.aO(ue,w.u_texsize),u_mix:new a.aI(ue,w.u_mix),u_pattern_size_a:new a.aO(ue,w.u_pattern_size_a),u_pattern_size_b:new a.aO(ue,w.u_pattern_size_b),u_scale_a:new a.aI(ue,w.u_scale_a),u_scale_b:new a.aI(ue,w.u_scale_b),u_pixel_coord_upper:new a.aO(ue,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(ue,w.u_pixel_coord_lower),u_tile_units_to_pixels:new a.aI(ue,w.u_tile_units_to_pixels)}),terrain:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_texture:new a.aH(ue,w.u_texture),u_ele_delta:new a.aI(ue,w.u_ele_delta),u_fog_matrix:new a.aJ(ue,w.u_fog_matrix),u_fog_color:new a.aL(ue,w.u_fog_color),u_fog_ground_blend:new a.aI(ue,w.u_fog_ground_blend),u_fog_ground_blend_opacity:new a.aI(ue,w.u_fog_ground_blend_opacity),u_horizon_color:new a.aL(ue,w.u_horizon_color),u_horizon_fog_blend:new a.aI(ue,w.u_horizon_fog_blend)}),terrainDepth:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_ele_delta:new a.aI(ue,w.u_ele_delta)}),terrainCoords:(ue,w)=>({u_matrix:new a.aJ(ue,w.u_matrix),u_texture:new a.aH(ue,w.u_texture),u_terrain_coords_id:new a.aI(ue,w.u_terrain_coords_id),u_ele_delta:new a.aI(ue,w.u_ele_delta)}),sky:(ue,w)=>({u_sky_color:new a.aL(ue,w.u_sky_color),u_horizon_color:new a.aL(ue,w.u_horizon_color),u_horizon:new a.aI(ue,w.u_horizon),u_sky_horizon_blend:new a.aI(ue,w.u_sky_horizon_blend)})};class bs{constructor(w,B,Q){this.context=w;let ee=w.gl;this.buffer=ee.createBuffer(),this.dynamicDraw=!!Q,this.context.unbindVAO(),w.bindElementBuffer.set(this.buffer),ee.bufferData(ee.ELEMENT_ARRAY_BUFFER,B.arrayBuffer,this.dynamicDraw?ee.DYNAMIC_DRAW:ee.STATIC_DRAW),this.dynamicDraw||delete B.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(w){let B=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),B.bufferSubData(B.ELEMENT_ARRAY_BUFFER,0,w.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}let Rn={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class _a{constructor(w,B,Q,ee){this.length=B.length,this.attributes=Q,this.itemSize=B.bytesPerElement,this.dynamicDraw=ee,this.context=w;let le=w.gl;this.buffer=le.createBuffer(),w.bindVertexBuffer.set(this.buffer),le.bufferData(le.ARRAY_BUFFER,B.arrayBuffer,this.dynamicDraw?le.DYNAMIC_DRAW:le.STATIC_DRAW),this.dynamicDraw||delete B.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(w){if(w.length!==this.length)throw new Error(`Length of new data is ${w.length}, which doesn't match current length of ${this.length}`);let B=this.context.gl;this.bind(),B.bufferSubData(B.ARRAY_BUFFER,0,w.arrayBuffer)}enableAttributes(w,B){for(let Q=0;Q0){let Wt=a.H();a.aQ(Wt,Xe.placementInvProjMatrix,ue.transform.glCoordMatrix),a.aQ(Wt,Wt,Xe.placementViewportMatrix),ut.push({circleArray:qt,circleOffset:Jt,transform:Qe.posMatrix,invTransform:Wt,coord:Qe}),Mt+=qt.length/4,Jt=Mt}nt&&Ze.draw(le,Fe.LINES,Po.disabled,Ko.disabled,ue.colorModeForRenderPass(),Pa.disabled,{u_matrix:Qe.posMatrix,u_pixel_extrude_scale:[1/($t=ue.transform).width,1/$t.height]},ue.style.map.terrain&&ue.style.map.terrain.getTerrainData(Qe),B.id,nt.layoutVertexBuffer,nt.indexBuffer,nt.segments,null,ue.transform.zoom,null,null,nt.collisionVertexBuffer)}var $t;if(!ee||!ut.length)return;let yr=ue.useProgram("collisionCircle"),Cr=new a.aR;Cr.resize(4*Mt),Cr._trim();let ve=0;for(let ze of ut)for(let Qe=0;Qe=0&&(ze[Xe.associatedIconIndex]={shiftedAnchor:Yn,angle:Aa})}else Pi(Xe.numGlyphs,xe)}if(Mt){Ie.clear();let Qe=ue.icon.placedSymbolArray;for(let Xe=0;Xeue.style.map.terrain.getElevation(Hr,ot,Xt):null,Pt=B.layout.get("text-rotation-alignment")==="map";We(Ci,Hr.posMatrix,ue,ee,Ul,au,ze,Mt,Pt,xe,Hr.toUnwrapped(),ve.width,ve.height,Js,Ye)}let Tl=Hr.posMatrix,Al=ee&&fr||dc,X=Qe||Al?bl:Ul,se=Lu,Te=Ln&&B.paint.get(ee?"text-halo-width":"icon-halo-width").constantOr(1)!==0,qe;qe=Ln?Ci.iconsInText?ls(Yn.kind,$a,Xe,ze,Qe,Al,ue,Tl,X,se,Js,Qa,Ts,Fr):Io(Yn.kind,$a,Xe,ze,Qe,Al,ue,Tl,X,se,Js,ee,Qa,!0,Fr):zs(Yn.kind,$a,Xe,ze,Qe,Al,ue,Tl,X,se,Js,ee,Qa,Fr);let Ve={program:fa,buffers:cn,uniformValues:qe,atlasTexture:mo,atlasTextureIcon:wo,atlasInterpolation:Bo,atlasInterpolationIcon:Ps,isSDF:Ln,hasHalo:Te};if(qt&&Ci.canOverlap){Wt=!0;let Ye=cn.segments.get();for(let Pt of Ye)br.push({segments:new a.a0([Pt]),sortKey:Pt.sortKey,state:Ve,terrainData:Co})}else br.push({segments:cn.segments,sortKey:0,state:Ve,terrainData:Co})}Wt&&br.sort((Hr,ri)=>Hr.sortKey-ri.sortKey);for(let Hr of br){let ri=Hr.state;if(yr.activeTexture.set(Cr.TEXTURE0),ri.atlasTexture.bind(ri.atlasInterpolation,Cr.CLAMP_TO_EDGE),ri.atlasTextureIcon&&(yr.activeTexture.set(Cr.TEXTURE1),ri.atlasTextureIcon&&ri.atlasTextureIcon.bind(ri.atlasInterpolationIcon,Cr.CLAMP_TO_EDGE)),ri.isSDF){let Ci=ri.uniformValues;ri.hasHalo&&(Ci.u_is_halo=1,Qf(ri.buffers,Hr.segments,B,ue,ri.program,nr,Jt,$t,Ci,Hr.terrainData)),Ci.u_is_halo=0}Qf(ri.buffers,Hr.segments,B,ue,ri.program,nr,Jt,$t,ri.uniformValues,Hr.terrainData)}}function Qf(ue,w,B,Q,ee,le,Fe,Ze,ut,Mt){let Jt=Q.context;ee.draw(Jt,Jt.gl.TRIANGLES,le,Fe,Ze,Pa.disabled,ut,Mt,B.id,ue.layoutVertexBuffer,ue.indexBuffer,w,B.paint,Q.transform.zoom,ue.programConfigurations.get(B.id),ue.dynamicLayoutVertexBuffer,ue.opacityVertexBuffer)}function _f(ue,w,B,Q){let ee=ue.context,le=ee.gl,Fe=Ko.disabled,Ze=new Os([le.ONE,le.ONE],a.aM.transparent,[!0,!0,!0,!0]),ut=w.getBucket(B);if(!ut)return;let Mt=Q.key,Jt=B.heatmapFbos.get(Mt);Jt||(Jt=eh(ee,w.tileSize,w.tileSize),B.heatmapFbos.set(Mt,Jt)),ee.bindFramebuffer.set(Jt.framebuffer),ee.viewport.set([0,0,w.tileSize,w.tileSize]),ee.clear({color:a.aM.transparent});let $t=ut.programConfigurations.get(B.id),yr=ue.useProgram("heatmap",$t),Cr=ue.style.map.terrain.getTerrainData(Q);yr.draw(ee,le.TRIANGLES,Po.disabled,Fe,Ze,Pa.disabled,ko(Q.posMatrix,w,ue.transform.zoom,B.paint.get("heatmap-intensity")),Cr,B.id,ut.layoutVertexBuffer,ut.indexBuffer,ut.segments,B.paint,ue.transform.zoom,$t)}function Yc(ue,w,B){let Q=ue.context,ee=Q.gl;Q.setColorMode(ue.colorModeForRenderPass());let le=th(Q,w),Fe=B.key,Ze=w.heatmapFbos.get(Fe);Ze&&(Q.activeTexture.set(ee.TEXTURE0),ee.bindTexture(ee.TEXTURE_2D,Ze.colorAttachment.get()),Q.activeTexture.set(ee.TEXTURE1),le.bind(ee.LINEAR,ee.CLAMP_TO_EDGE),ue.useProgram("heatmapTexture").draw(Q,ee.TRIANGLES,Po.disabled,Ko.disabled,ue.colorModeForRenderPass(),Pa.disabled,Ds(ue,w,0,1),null,w.id,ue.rasterBoundsBuffer,ue.quadTriangleIndexBuffer,ue.rasterBoundsSegments,w.paint,ue.transform.zoom),Ze.destroy(),w.heatmapFbos.delete(Fe))}function eh(ue,w,B){var Q,ee;let le=ue.gl,Fe=le.createTexture();le.bindTexture(le.TEXTURE_2D,Fe),le.texParameteri(le.TEXTURE_2D,le.TEXTURE_WRAP_S,le.CLAMP_TO_EDGE),le.texParameteri(le.TEXTURE_2D,le.TEXTURE_WRAP_T,le.CLAMP_TO_EDGE),le.texParameteri(le.TEXTURE_2D,le.TEXTURE_MIN_FILTER,le.LINEAR),le.texParameteri(le.TEXTURE_2D,le.TEXTURE_MAG_FILTER,le.LINEAR);let Ze=(Q=ue.HALF_FLOAT)!==null&&Q!==void 0?Q:le.UNSIGNED_BYTE,ut=(ee=ue.RGBA16F)!==null&&ee!==void 0?ee:le.RGBA;le.texImage2D(le.TEXTURE_2D,0,ut,w,B,0,le.RGBA,Ze,null);let Mt=ue.createFramebuffer(w,B,!1,!1);return Mt.colorAttachment.set(Fe),Mt}function th(ue,w){return w.colorRampTexture||(w.colorRampTexture=new g(ue,w.colorRamp,ue.gl.RGBA)),w.colorRampTexture}function ju(ue,w,B,Q,ee){if(!B||!Q||!Q.imageAtlas)return;let le=Q.imageAtlas.patternPositions,Fe=le[B.to.toString()],Ze=le[B.from.toString()];if(!Fe&&Ze&&(Fe=Ze),!Ze&&Fe&&(Ze=Fe),!Fe||!Ze){let ut=ee.getPaintProperty(w);Fe=le[ut],Ze=le[ut]}Fe&&Ze&&ue.setConstantPatternPositions(Fe,Ze)}function jf(ue,w,B,Q,ee,le,Fe){let Ze=ue.context.gl,ut="fill-pattern",Mt=B.paint.get(ut),Jt=Mt&&Mt.constantOr(1),$t=B.getCrossfadeParameters(),yr,Cr,ve,xe,Ie;Fe?(Cr=Jt&&!B.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",yr=Ze.LINES):(Cr=Jt?"fillPattern":"fill",yr=Ze.TRIANGLES);let ze=Mt.constantOr(null);for(let Qe of Q){let Xe=w.getTile(Qe);if(Jt&&!Xe.patternsLoaded())continue;let nt=Xe.getBucket(B);if(!nt)continue;let qt=nt.programConfigurations.get(B.id),Wt=ue.useProgram(Cr,qt),nr=ue.style.map.terrain&&ue.style.map.terrain.getTerrainData(Qe);Jt&&(ue.context.activeTexture.set(Ze.TEXTURE0),Xe.imageAtlasTexture.bind(Ze.LINEAR,Ze.CLAMP_TO_EDGE),qt.updatePaintBuffers($t)),ju(qt,ut,ze,Xe,B);let fr=nr?Qe:null,br=ue.translatePosMatrix(fr?fr.posMatrix:Qe.posMatrix,Xe,B.paint.get("fill-translate"),B.paint.get("fill-translate-anchor"));if(Fe){xe=nt.indexBuffer2,Ie=nt.segments2;let Fr=[Ze.drawingBufferWidth,Ze.drawingBufferHeight];ve=Cr==="fillOutlinePattern"&&Jt?Ma(br,ue,$t,Xe,Fr):ea(br,Fr)}else xe=nt.indexBuffer,Ie=nt.segments,ve=Jt?ya(br,ue,$t,Xe):_n(br);Wt.draw(ue.context,yr,ee,ue.stencilModeForClipping(Qe),le,Pa.disabled,ve,nr,B.id,nt.layoutVertexBuffer,xe,Ie,B.paint,ue.transform.zoom,qt)}}function cc(ue,w,B,Q,ee,le,Fe){let Ze=ue.context,ut=Ze.gl,Mt="fill-extrusion-pattern",Jt=B.paint.get(Mt),$t=Jt.constantOr(1),yr=B.getCrossfadeParameters(),Cr=B.paint.get("fill-extrusion-opacity"),ve=Jt.constantOr(null);for(let xe of Q){let Ie=w.getTile(xe),ze=Ie.getBucket(B);if(!ze)continue;let Qe=ue.style.map.terrain&&ue.style.map.terrain.getTerrainData(xe),Xe=ze.programConfigurations.get(B.id),nt=ue.useProgram($t?"fillExtrusionPattern":"fillExtrusion",Xe);$t&&(ue.context.activeTexture.set(ut.TEXTURE0),Ie.imageAtlasTexture.bind(ut.LINEAR,ut.CLAMP_TO_EDGE),Xe.updatePaintBuffers(yr)),ju(Xe,Mt,ve,Ie,B);let qt=ue.translatePosMatrix(xe.posMatrix,Ie,B.paint.get("fill-extrusion-translate"),B.paint.get("fill-extrusion-translate-anchor")),Wt=B.paint.get("fill-extrusion-vertical-gradient"),nr=$t?ki(qt,ue,Wt,Cr,xe,yr,Ie):En(qt,ue,Wt,Cr);nt.draw(Ze,Ze.gl.TRIANGLES,ee,le,Fe,Pa.backCCW,nr,Qe,B.id,ze.layoutVertexBuffer,ze.indexBuffer,ze.segments,B.paint,ue.transform.zoom,Xe,ue.style.map.terrain&&ze.centroidVertexBuffer)}}function sf(ue,w,B,Q,ee,le,Fe){let Ze=ue.context,ut=Ze.gl,Mt=B.fbo;if(!Mt)return;let Jt=ue.useProgram("hillshade"),$t=ue.style.map.terrain&&ue.style.map.terrain.getTerrainData(w);Ze.activeTexture.set(ut.TEXTURE0),ut.bindTexture(ut.TEXTURE_2D,Mt.colorAttachment.get()),Jt.draw(Ze,ut.TRIANGLES,ee,le,Fe,Pa.disabled,((yr,Cr,ve,xe)=>{let Ie=ve.paint.get("hillshade-shadow-color"),ze=ve.paint.get("hillshade-highlight-color"),Qe=ve.paint.get("hillshade-accent-color"),Xe=ve.paint.get("hillshade-illumination-direction")*(Math.PI/180);ve.paint.get("hillshade-illumination-anchor")==="viewport"&&(Xe-=yr.transform.angle);let nt=!yr.options.moving;return{u_matrix:xe?xe.posMatrix:yr.transform.calculatePosMatrix(Cr.tileID.toUnwrapped(),nt),u_image:0,u_latrange:Fs(0,Cr.tileID),u_light:[ve.paint.get("hillshade-exaggeration"),Xe],u_shadow:Ie,u_highlight:ze,u_accent:Qe}})(ue,B,Q,$t?w:null),$t,Q.id,ue.rasterBoundsBuffer,ue.quadTriangleIndexBuffer,ue.rasterBoundsSegments)}function Nl(ue,w,B,Q,ee,le){let Fe=ue.context,Ze=Fe.gl,ut=w.dem;if(ut&&ut.data){let Mt=ut.dim,Jt=ut.stride,$t=ut.getPixels();if(Fe.activeTexture.set(Ze.TEXTURE1),Fe.pixelStoreUnpackPremultiplyAlpha.set(!1),w.demTexture=w.demTexture||ue.getTileTexture(Jt),w.demTexture){let Cr=w.demTexture;Cr.update($t,{premultiply:!1}),Cr.bind(Ze.NEAREST,Ze.CLAMP_TO_EDGE)}else w.demTexture=new g(Fe,$t,Ze.RGBA,{premultiply:!1}),w.demTexture.bind(Ze.NEAREST,Ze.CLAMP_TO_EDGE);Fe.activeTexture.set(Ze.TEXTURE0);let yr=w.fbo;if(!yr){let Cr=new g(Fe,{width:Mt,height:Mt,data:null},Ze.RGBA);Cr.bind(Ze.LINEAR,Ze.CLAMP_TO_EDGE),yr=w.fbo=Fe.createFramebuffer(Mt,Mt,!0,!1),yr.colorAttachment.set(Cr.texture)}Fe.bindFramebuffer.set(yr.framebuffer),Fe.viewport.set([0,0,Mt,Mt]),ue.useProgram("hillshadePrepare").draw(Fe,Ze.TRIANGLES,Q,ee,le,Pa.disabled,((Cr,ve)=>{let xe=ve.stride,Ie=a.H();return a.aP(Ie,0,a.X,-a.X,0,0,1),a.J(Ie,Ie,[0,-a.X,0]),{u_matrix:Ie,u_image:1,u_dimension:[xe,xe],u_zoom:Cr.overscaledZ,u_unpack:ve.getUnpackVector()}})(w.tileID,ut),null,B.id,ue.rasterBoundsBuffer,ue.quadTriangleIndexBuffer,ue.rasterBoundsSegments),w.needsHillshadePrepare=!1}}function Kc(ue,w,B,Q,ee,le){let Fe=Q.paint.get("raster-fade-duration");if(!le&&Fe>0){let Ze=u.now(),ut=(Ze-ue.timeAdded)/Fe,Mt=w?(Ze-w.timeAdded)/Fe:-1,Jt=B.getSource(),$t=ee.coveringZoomLevel({tileSize:Jt.tileSize,roundZoom:Jt.roundZoom}),yr=!w||Math.abs(w.tileID.overscaledZ-$t)>Math.abs(ue.tileID.overscaledZ-$t),Cr=yr&&ue.refreshedUponExpiration?1:a.ac(yr?ut:1-Mt,0,1);return ue.refreshedUponExpiration&&ut>=1&&(ue.refreshedUponExpiration=!1),w?{opacity:1,mix:1-Cr}:{opacity:Cr,mix:0}}return{opacity:1,mix:0}}let Rc=new a.aM(1,0,0,1),gs=new a.aM(0,1,0,1),Wf=new a.aM(0,0,1,1),Wh=new a.aM(1,0,1,1),rh=new a.aM(0,1,1,1);function lf(ue,w,B,Q){Mu(ue,0,w+B/2,ue.transform.width,B,Q)}function Sh(ue,w,B,Q){Mu(ue,w-B/2,0,B,ue.transform.height,Q)}function Mu(ue,w,B,Q,ee,le){let Fe=ue.context,Ze=Fe.gl;Ze.enable(Ze.SCISSOR_TEST),Ze.scissor(w*ue.pixelRatio,B*ue.pixelRatio,Q*ue.pixelRatio,ee*ue.pixelRatio),Fe.clear({color:le}),Ze.disable(Ze.SCISSOR_TEST)}function ih(ue,w,B){let Q=ue.context,ee=Q.gl,le=B.posMatrix,Fe=ue.useProgram("debug"),Ze=Po.disabled,ut=Ko.disabled,Mt=ue.colorModeForRenderPass(),Jt="$debug",$t=ue.style.map.terrain&&ue.style.map.terrain.getTerrainData(B);Q.activeTexture.set(ee.TEXTURE0);let yr=w.getTileByID(B.key).latestRawTileData,Cr=Math.floor((yr&&yr.byteLength||0)/1024),ve=w.getTile(B).tileSize,xe=512/Math.min(ve,512)*(B.overscaledZ/ue.transform.zoom)*.5,Ie=B.canonical.toString();B.overscaledZ!==B.canonical.z&&(Ie+=` => ${B.overscaledZ}`),function(ze,Qe){ze.initDebugOverlayCanvas();let Xe=ze.debugOverlayCanvas,nt=ze.context.gl,qt=ze.debugOverlayCanvas.getContext("2d");qt.clearRect(0,0,Xe.width,Xe.height),qt.shadowColor="white",qt.shadowBlur=2,qt.lineWidth=1.5,qt.strokeStyle="white",qt.textBaseline="top",qt.font="bold 36px Open Sans, sans-serif",qt.fillText(Qe,5,5),qt.strokeText(Qe,5,5),ze.debugOverlayTexture.update(Xe),ze.debugOverlayTexture.bind(nt.LINEAR,nt.CLAMP_TO_EDGE)}(ue,`${Ie} ${Cr}kB`),Fe.draw(Q,ee.TRIANGLES,Ze,ut,Os.alphaBlended,Pa.disabled,po(le,a.aM.transparent,xe),null,Jt,ue.debugBuffer,ue.quadTriangleIndexBuffer,ue.debugSegments),Fe.draw(Q,ee.LINE_STRIP,Ze,ut,Mt,Pa.disabled,po(le,a.aM.red),$t,Jt,ue.debugBuffer,ue.tileBorderIndexBuffer,ue.debugSegments)}function js(ue,w,B){let Q=ue.context,ee=Q.gl,le=ue.colorModeForRenderPass(),Fe=new Po(ee.LEQUAL,Po.ReadWrite,ue.depthRangeFor3D),Ze=ue.useProgram("terrain"),ut=w.getTerrainMesh();Q.bindFramebuffer.set(null),Q.viewport.set([0,0,ue.width,ue.height]);for(let Mt of B){let Jt=ue.renderToTexture.getTexture(Mt),$t=w.getTerrainData(Mt.tileID);Q.activeTexture.set(ee.TEXTURE0),ee.bindTexture(ee.TEXTURE_2D,Jt.texture);let yr=ue.transform.calculatePosMatrix(Mt.tileID.toUnwrapped()),Cr=w.getMeshFrameDelta(ue.transform.zoom),ve=ue.transform.calculateFogMatrix(Mt.tileID.toUnwrapped()),xe=Jr(yr,Cr,ve,ue.style.sky,ue.transform.pitch);Ze.draw(Q,ee.TRIANGLES,Fe,Ko.disabled,le,Pa.backCCW,xe,$t,"terrain",ut.vertexBuffer,ut.indexBuffer,ut.segments)}}class Eu{constructor(w,B,Q){this.vertexBuffer=w,this.indexBuffer=B,this.segments=Q}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}}class Dc{constructor(w,B){this.context=new od(w),this.transform=B,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:a.an(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=pt.maxUnderzooming+pt.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Xo}resize(w,B,Q){if(this.width=Math.floor(w*Q),this.height=Math.floor(B*Q),this.pixelRatio=Q,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(let ee of this.style._order)this.style._layers[ee].resize()}setup(){let w=this.context,B=new a.aX;B.emplaceBack(0,0),B.emplaceBack(a.X,0),B.emplaceBack(0,a.X),B.emplaceBack(a.X,a.X),this.tileExtentBuffer=w.createVertexBuffer(B,vo.members),this.tileExtentSegments=a.a0.simpleSegment(0,0,4,2);let Q=new a.aX;Q.emplaceBack(0,0),Q.emplaceBack(a.X,0),Q.emplaceBack(0,a.X),Q.emplaceBack(a.X,a.X),this.debugBuffer=w.createVertexBuffer(Q,vo.members),this.debugSegments=a.a0.simpleSegment(0,0,4,5);let ee=new a.$;ee.emplaceBack(0,0,0,0),ee.emplaceBack(a.X,0,a.X,0),ee.emplaceBack(0,a.X,0,a.X),ee.emplaceBack(a.X,a.X,a.X,a.X),this.rasterBoundsBuffer=w.createVertexBuffer(ee,ct.members),this.rasterBoundsSegments=a.a0.simpleSegment(0,0,4,2);let le=new a.aX;le.emplaceBack(0,0),le.emplaceBack(1,0),le.emplaceBack(0,1),le.emplaceBack(1,1),this.viewportBuffer=w.createVertexBuffer(le,vo.members),this.viewportSegments=a.a0.simpleSegment(0,0,4,2);let Fe=new a.aZ;Fe.emplaceBack(0),Fe.emplaceBack(1),Fe.emplaceBack(3),Fe.emplaceBack(2),Fe.emplaceBack(0),this.tileBorderIndexBuffer=w.createIndexBuffer(Fe);let Ze=new a.aY;Ze.emplaceBack(0,1,2),Ze.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=w.createIndexBuffer(Ze);let ut=this.context.gl;this.stencilClearMode=new Ko({func:ut.ALWAYS,mask:0},0,255,ut.ZERO,ut.ZERO,ut.ZERO)}clearStencil(){let w=this.context,B=w.gl;this.nextStencilID=1,this.currentStencilSource=void 0;let Q=a.H();a.aP(Q,0,this.width,this.height,0,0,1),a.K(Q,Q,[B.drawingBufferWidth,B.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(w,B.TRIANGLES,Po.disabled,this.stencilClearMode,Os.disabled,Pa.disabled,Lo(Q),null,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(w,B){if(this.currentStencilSource===w.source||!w.isTileClipped()||!B||!B.length)return;this.currentStencilSource=w.source;let Q=this.context,ee=Q.gl;this.nextStencilID+B.length>256&&this.clearStencil(),Q.setColorMode(Os.disabled),Q.setDepthMode(Po.disabled);let le=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(let Fe of B){let Ze=this._tileClippingMaskIDs[Fe.key]=this.nextStencilID++,ut=this.style.map.terrain&&this.style.map.terrain.getTerrainData(Fe);le.draw(Q,ee.TRIANGLES,Po.disabled,new Ko({func:ee.ALWAYS,mask:0},Ze,255,ee.KEEP,ee.KEEP,ee.REPLACE),Os.disabled,Pa.disabled,Lo(Fe.posMatrix),ut,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let w=this.nextStencilID++,B=this.context.gl;return new Ko({func:B.NOTEQUAL,mask:255},w,255,B.KEEP,B.KEEP,B.REPLACE)}stencilModeForClipping(w){let B=this.context.gl;return new Ko({func:B.EQUAL,mask:255},this._tileClippingMaskIDs[w.key],0,B.KEEP,B.KEEP,B.REPLACE)}stencilConfigForOverlap(w){let B=this.context.gl,Q=w.sort((Fe,Ze)=>Ze.overscaledZ-Fe.overscaledZ),ee=Q[Q.length-1].overscaledZ,le=Q[0].overscaledZ-ee+1;if(le>1){this.currentStencilSource=void 0,this.nextStencilID+le>256&&this.clearStencil();let Fe={};for(let Ze=0;Ze({u_sky_color:ze.properties.get("sky-color"),u_horizon_color:ze.properties.get("horizon-color"),u_horizon:(Qe.height/2+Qe.getHorizon())*Xe,u_sky_horizon_blend:ze.properties.get("sky-horizon-blend")*Qe.height/2*Xe}))(Mt,ut.style.map.transform,ut.pixelRatio),Cr=new Po($t.LEQUAL,Po.ReadWrite,[0,1]),ve=Ko.disabled,xe=ut.colorModeForRenderPass(),Ie=ut.useProgram("sky");if(!Mt.mesh){let ze=new a.aX;ze.emplaceBack(-1,-1),ze.emplaceBack(1,-1),ze.emplaceBack(1,1),ze.emplaceBack(-1,1);let Qe=new a.aY;Qe.emplaceBack(0,1,2),Qe.emplaceBack(0,2,3),Mt.mesh=new Eu(Jt.createVertexBuffer(ze,vo.members),Jt.createIndexBuffer(Qe),a.a0.simpleSegment(0,0,ze.length,Qe.length))}Ie.draw(Jt,$t.TRIANGLES,Cr,ve,xe,Pa.disabled,yr,void 0,"sky",Mt.mesh.vertexBuffer,Mt.mesh.indexBuffer,Mt.mesh.segments)}(this,this.style.sky),this._showOverdrawInspector=B.showOverdrawInspector,this.depthRangeFor3D=[0,1-(w._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=Q.length-1;this.currentLayer>=0;this.currentLayer--){let ut=this.style._layers[Q[this.currentLayer]],Mt=ee[ut.source],Jt=le[ut.source];this._renderTileClippingMasks(ut,Jt),this.renderLayer(this,Mt,ut,Jt)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayerIe.source&&!Ie.isHidden(Jt)?[Mt.sourceCaches[Ie.source]]:[]),Cr=yr.filter(Ie=>Ie.getSource().type==="vector"),ve=yr.filter(Ie=>Ie.getSource().type!=="vector"),xe=Ie=>{(!$t||$t.getSource().maxzoomxe(Ie)),$t||ve.forEach(Ie=>xe(Ie)),$t}(this.style,this.transform.zoom);ut&&function(Mt,Jt,$t){for(let yr=0;yr<$t.length;yr++)ih(Mt,Jt,$t[yr])}(this,ut,ut.getVisibleCoordinates())}this.options.showPadding&&function(ut){let Mt=ut.transform.padding;lf(ut,ut.transform.height-(Mt.top||0),3,Rc),lf(ut,Mt.bottom||0,3,gs),Sh(ut,Mt.left||0,3,Wf),Sh(ut,ut.transform.width-(Mt.right||0),3,Wh);let Jt=ut.transform.centerPoint;(function($t,yr,Cr,ve){Mu($t,yr-1,Cr-10,2,20,ve),Mu($t,yr-10,Cr-1,20,2,ve)})(ut,Jt.x,ut.transform.height-Jt.y,rh)}(this),this.context.setDefault()}maybeDrawDepthAndCoords(w){if(!this.style||!this.style.map||!this.style.map.terrain)return;let B=this.terrainFacilitator.matrix,Q=this.transform.modelViewProjectionMatrix,ee=this.terrainFacilitator.dirty;ee||(ee=w?!a.a_(B,Q):!a.a$(B,Q)),ee||(ee=this.style.map.terrain.sourceCache.tilesAfterTime(this.terrainFacilitator.renderTime).length>0),ee&&(a.b0(B,Q),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(le,Fe){let Ze=le.context,ut=Ze.gl,Mt=Os.unblended,Jt=new Po(ut.LEQUAL,Po.ReadWrite,[0,1]),$t=Fe.getTerrainMesh(),yr=Fe.sourceCache.getRenderableTiles(),Cr=le.useProgram("terrainDepth");Ze.bindFramebuffer.set(Fe.getFramebuffer("depth").framebuffer),Ze.viewport.set([0,0,le.width/devicePixelRatio,le.height/devicePixelRatio]),Ze.clear({color:a.aM.transparent,depth:1});for(let ve of yr){let xe=Fe.getTerrainData(ve.tileID),Ie={u_matrix:le.transform.calculatePosMatrix(ve.tileID.toUnwrapped()),u_ele_delta:Fe.getMeshFrameDelta(le.transform.zoom)};Cr.draw(Ze,ut.TRIANGLES,Jt,Ko.disabled,Mt,Pa.backCCW,Ie,xe,"terrain",$t.vertexBuffer,$t.indexBuffer,$t.segments)}Ze.bindFramebuffer.set(null),Ze.viewport.set([0,0,le.width,le.height])}(this,this.style.map.terrain),function(le,Fe){let Ze=le.context,ut=Ze.gl,Mt=Os.unblended,Jt=new Po(ut.LEQUAL,Po.ReadWrite,[0,1]),$t=Fe.getTerrainMesh(),yr=Fe.getCoordsTexture(),Cr=Fe.sourceCache.getRenderableTiles(),ve=le.useProgram("terrainCoords");Ze.bindFramebuffer.set(Fe.getFramebuffer("coords").framebuffer),Ze.viewport.set([0,0,le.width/devicePixelRatio,le.height/devicePixelRatio]),Ze.clear({color:a.aM.transparent,depth:1}),Fe.coordsIndex=[];for(let xe of Cr){let Ie=Fe.getTerrainData(xe.tileID);Ze.activeTexture.set(ut.TEXTURE0),ut.bindTexture(ut.TEXTURE_2D,yr.texture);let ze={u_matrix:le.transform.calculatePosMatrix(xe.tileID.toUnwrapped()),u_terrain_coords_id:(255-Fe.coordsIndex.length)/255,u_texture:0,u_ele_delta:Fe.getMeshFrameDelta(le.transform.zoom)};ve.draw(Ze,ut.TRIANGLES,Jt,Ko.disabled,Mt,Pa.backCCW,ze,Ie,"terrain",$t.vertexBuffer,$t.indexBuffer,$t.segments),Fe.coordsIndex.push(xe.tileID.key)}Ze.bindFramebuffer.set(null),Ze.viewport.set([0,0,le.width,le.height])}(this,this.style.map.terrain))}renderLayer(w,B,Q,ee){if(!Q.isHidden(this.transform.zoom)&&(Q.type==="background"||Q.type==="custom"||(ee||[]).length))switch(this.id=Q.id,Q.type){case"symbol":(function(le,Fe,Ze,ut,Mt){if(le.renderPass!=="translucent")return;let Jt=Ko.disabled,$t=le.colorModeForRenderPass();(Ze._unevaluatedLayout.hasValue("text-variable-anchor")||Ze._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(yr,Cr,ve,xe,Ie,ze,Qe,Xe,nt){let qt=Cr.transform,Wt=yn(),nr=Ie==="map",fr=ze==="map";for(let br of yr){let Fr=xe.getTile(br),Hr=Fr.getBucket(ve);if(!Hr||!Hr.text||!Hr.text.segments.get().length)continue;let ri=a.ag(Hr.textSizeData,qt.zoom),Ci=Fn(Fr,1,Cr.transform.zoom),cn=qr(br.posMatrix,fr,nr,Cr.transform,Ci),sn=ve.layout.get("icon-text-fit")!=="none"&&Hr.hasIconData();if(ri){let Ln=Math.pow(2,qt.zoom-Fr.tileID.overscaledZ),Yn=Cr.style.map.terrain?(fa,$a)=>Cr.style.map.terrain.getElevation(br,fa,$a):null,Aa=Wt.translatePosition(qt,Fr,Qe,Xe);yf(Hr,nr,fr,nt,qt,cn,br.posMatrix,Ln,ri,sn,Wt,Aa,br.toUnwrapped(),Yn)}}}(ut,le,Ze,Fe,Ze.layout.get("text-rotation-alignment"),Ze.layout.get("text-pitch-alignment"),Ze.paint.get("text-translate"),Ze.paint.get("text-translate-anchor"),Mt),Ze.paint.get("icon-opacity").constantOr(1)!==0&&Ah(le,Fe,Ze,ut,!1,Ze.paint.get("icon-translate"),Ze.paint.get("icon-translate-anchor"),Ze.layout.get("icon-rotation-alignment"),Ze.layout.get("icon-pitch-alignment"),Ze.layout.get("icon-keep-upright"),Jt,$t),Ze.paint.get("text-opacity").constantOr(1)!==0&&Ah(le,Fe,Ze,ut,!0,Ze.paint.get("text-translate"),Ze.paint.get("text-translate-anchor"),Ze.layout.get("text-rotation-alignment"),Ze.layout.get("text-pitch-alignment"),Ze.layout.get("text-keep-upright"),Jt,$t),Fe.map.showCollisionBoxes&&(Hu(le,Fe,Ze,ut,!0),Hu(le,Fe,Ze,ut,!1))})(w,B,Q,ee,this.style.placement.variableOffsets);break;case"circle":(function(le,Fe,Ze,ut){if(le.renderPass!=="translucent")return;let Mt=Ze.paint.get("circle-opacity"),Jt=Ze.paint.get("circle-stroke-width"),$t=Ze.paint.get("circle-stroke-opacity"),yr=!Ze.layout.get("circle-sort-key").isConstant();if(Mt.constantOr(1)===0&&(Jt.constantOr(1)===0||$t.constantOr(1)===0))return;let Cr=le.context,ve=Cr.gl,xe=le.depthModeForSublayer(0,Po.ReadOnly),Ie=Ko.disabled,ze=le.colorModeForRenderPass(),Qe=[];for(let Xe=0;XeXe.sortKey-nt.sortKey);for(let Xe of Qe){let{programConfiguration:nt,program:qt,layoutVertexBuffer:Wt,indexBuffer:nr,uniformValues:fr,terrainData:br}=Xe.state;qt.draw(Cr,ve.TRIANGLES,xe,Ie,ze,Pa.disabled,fr,br,Ze.id,Wt,nr,Xe.segments,Ze.paint,le.transform.zoom,nt)}})(w,B,Q,ee);break;case"heatmap":(function(le,Fe,Ze,ut){if(Ze.paint.get("heatmap-opacity")===0)return;let Mt=le.context;if(le.style.map.terrain){for(let Jt of ut){let $t=Fe.getTile(Jt);Fe.hasRenderableParent(Jt)||(le.renderPass==="offscreen"?_f(le,$t,Ze,Jt):le.renderPass==="translucent"&&Yc(le,Ze,Jt))}Mt.viewport.set([0,0,le.width,le.height])}else le.renderPass==="offscreen"?function(Jt,$t,yr,Cr){let ve=Jt.context,xe=ve.gl,Ie=Ko.disabled,ze=new Os([xe.ONE,xe.ONE],a.aM.transparent,[!0,!0,!0,!0]);(function(Qe,Xe,nt){let qt=Qe.gl;Qe.activeTexture.set(qt.TEXTURE1),Qe.viewport.set([0,0,Xe.width/4,Xe.height/4]);let Wt=nt.heatmapFbos.get(a.aU);Wt?(qt.bindTexture(qt.TEXTURE_2D,Wt.colorAttachment.get()),Qe.bindFramebuffer.set(Wt.framebuffer)):(Wt=eh(Qe,Xe.width/4,Xe.height/4),nt.heatmapFbos.set(a.aU,Wt))})(ve,Jt,yr),ve.clear({color:a.aM.transparent});for(let Qe=0;Qe20&&Jt.texParameterf(Jt.TEXTURE_2D,Mt.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,Mt.extTextureFilterAnisotropicMax);let Hr=le.style.map.terrain&&le.style.map.terrain.getTerrainData(Qe),ri=Hr?Qe:null,Ci=ri?ri.posMatrix:le.transform.calculatePosMatrix(Qe.toUnwrapped(),ze),cn=cl(Ci,br||[0,0],fr||1,nr,Ze);$t instanceof ar?yr.draw(Mt,Jt.TRIANGLES,Xe,Ko.disabled,Cr,Pa.disabled,cn,Hr,Ze.id,$t.boundsBuffer,le.quadTriangleIndexBuffer,$t.boundsSegments):yr.draw(Mt,Jt.TRIANGLES,Xe,ve[Qe.overscaledZ],Cr,Pa.disabled,cn,Hr,Ze.id,le.rasterBoundsBuffer,le.quadTriangleIndexBuffer,le.rasterBoundsSegments)}})(w,B,Q,ee);break;case"background":(function(le,Fe,Ze,ut){let Mt=Ze.paint.get("background-color"),Jt=Ze.paint.get("background-opacity");if(Jt===0)return;let $t=le.context,yr=$t.gl,Cr=le.transform,ve=Cr.tileSize,xe=Ze.paint.get("background-pattern");if(le.isPatternMissing(xe))return;let Ie=!xe&&Mt.a===1&&Jt===1&&le.opaquePassEnabledForLayer()?"opaque":"translucent";if(le.renderPass!==Ie)return;let ze=Ko.disabled,Qe=le.depthModeForSublayer(0,Ie==="opaque"?Po.ReadWrite:Po.ReadOnly),Xe=le.colorModeForRenderPass(),nt=le.useProgram(xe?"backgroundPattern":"background"),qt=ut||Cr.coveringTiles({tileSize:ve,terrain:le.style.map.terrain});xe&&($t.activeTexture.set(yr.TEXTURE0),le.imageManager.bind(le.context));let Wt=Ze.getCrossfadeParameters();for(let nr of qt){let fr=ut?nr.posMatrix:le.transform.calculatePosMatrix(nr.toUnwrapped()),br=xe?Su(fr,Jt,le,xe,{tileID:nr,tileSize:ve},Wt):Yl(fr,Jt,Mt),Fr=le.style.map.terrain&&le.style.map.terrain.getTerrainData(nr);nt.draw($t,yr.TRIANGLES,Qe,ze,Xe,Pa.disabled,br,Fr,Ze.id,le.tileExtentBuffer,le.quadTriangleIndexBuffer,le.tileExtentSegments)}})(w,0,Q,ee);break;case"custom":(function(le,Fe,Ze){let ut=le.context,Mt=Ze.implementation;if(le.renderPass==="offscreen"){let Jt=Mt.prerender;Jt&&(le.setCustomLayerDefaults(),ut.setColorMode(le.colorModeForRenderPass()),Jt.call(Mt,ut.gl,le.transform.customLayerMatrix()),ut.setDirty(),le.setBaseState())}else if(le.renderPass==="translucent"){le.setCustomLayerDefaults(),ut.setColorMode(le.colorModeForRenderPass()),ut.setStencilMode(Ko.disabled);let Jt=Mt.renderingMode==="3d"?new Po(le.context.gl.LEQUAL,Po.ReadWrite,le.depthRangeFor3D):le.depthModeForSublayer(0,Po.ReadOnly);ut.setDepthMode(Jt),Mt.render(ut.gl,le.transform.customLayerMatrix(),{farZ:le.transform.farZ,nearZ:le.transform.nearZ,fov:le.transform._fov,modelViewProjectionMatrix:le.transform.modelViewProjectionMatrix,projectionMatrix:le.transform.projectionMatrix}),ut.setDirty(),le.setBaseState(),ut.bindFramebuffer.set(null)}})(w,0,Q)}}translatePosMatrix(w,B,Q,ee,le){if(!Q[0]&&!Q[1])return w;let Fe=le?ee==="map"?this.transform.angle:0:ee==="viewport"?-this.transform.angle:0;if(Fe){let Mt=Math.sin(Fe),Jt=Math.cos(Fe);Q=[Q[0]*Jt-Q[1]*Mt,Q[0]*Mt+Q[1]*Jt]}let Ze=[le?Q[0]:Fn(B,Q[0],this.transform.zoom),le?Q[1]:Fn(B,Q[1],this.transform.zoom),0],ut=new Float32Array(16);return a.J(ut,w,Ze),ut}saveTileTexture(w){let B=this._tileTextures[w.size[0]];B?B.push(w):this._tileTextures[w.size[0]]=[w]}getTileTexture(w){let B=this._tileTextures[w];return B&&B.length>0?B.pop():null}isPatternMissing(w){if(!w)return!1;if(!w.from||!w.to)return!0;let B=this.imageManager.getPattern(w.from.toString()),Q=this.imageManager.getPattern(w.to.toString());return!B||!Q}useProgram(w,B){this.cache=this.cache||{};let Q=w+(B?B.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[Q]||(this.cache[Q]=new hn(this.context,Gn[w],B,nc[w],this._showOverdrawInspector,this.style.map.terrain)),this.cache[Q]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){let w=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(w.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new g(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}overLimit(){let{drawingBufferWidth:w,drawingBufferHeight:B}=this.context.gl;return this.width!==w||this.height!==B}}class ks{constructor(w,B){this.points=w,this.planes=B}static fromInvProjectionMatrix(w,B,Q){let ee=Math.pow(2,Q),le=[[-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,1],[-1,-1,1,1]].map(Ze=>{let ut=1/(Ze=a.af([],Ze,w))[3]/B*ee;return a.b1(Ze,Ze,[ut,ut,1/Ze[3],ut])}),Fe=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(Ze=>{let ut=function(yr,Cr){var ve=Cr[0],xe=Cr[1],Ie=Cr[2],ze=ve*ve+xe*xe+Ie*Ie;return ze>0&&(ze=1/Math.sqrt(ze)),yr[0]=Cr[0]*ze,yr[1]=Cr[1]*ze,yr[2]=Cr[2]*ze,yr}([],function(yr,Cr,ve){var xe=Cr[0],Ie=Cr[1],ze=Cr[2],Qe=ve[0],Xe=ve[1],nt=ve[2];return yr[0]=Ie*nt-ze*Xe,yr[1]=ze*Qe-xe*nt,yr[2]=xe*Xe-Ie*Qe,yr}([],L([],le[Ze[0]],le[Ze[1]]),L([],le[Ze[2]],le[Ze[1]]))),Mt=-((Jt=ut)[0]*($t=le[Ze[1]])[0]+Jt[1]*$t[1]+Jt[2]*$t[2]);var Jt,$t;return ut.concat(Mt)});return new ks(le,Fe)}}class bc{constructor(w,B){this.min=w,this.max=B,this.center=function(Q,ee,le){return Q[0]=.5*ee[0],Q[1]=.5*ee[1],Q[2]=.5*ee[2],Q}([],function(Q,ee,le){return Q[0]=ee[0]+le[0],Q[1]=ee[1]+le[1],Q[2]=ee[2]+le[2],Q}([],this.min,this.max))}quadrant(w){let B=[w%2==0,w<2],Q=M(this.min),ee=M(this.max);for(let le=0;le=0&&Fe++;if(Fe===0)return 0;Fe!==B.length&&(Q=!1)}if(Q)return 2;for(let ee=0;ee<3;ee++){let le=Number.MAX_VALUE,Fe=-Number.MAX_VALUE;for(let Ze=0;Zethis.max[ee]-this.min[ee])return 0}return 1}}class hu{constructor(w=0,B=0,Q=0,ee=0){if(isNaN(w)||w<0||isNaN(B)||B<0||isNaN(Q)||Q<0||isNaN(ee)||ee<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=w,this.bottom=B,this.left=Q,this.right=ee}interpolate(w,B,Q){return B.top!=null&&w.top!=null&&(this.top=a.y.number(w.top,B.top,Q)),B.bottom!=null&&w.bottom!=null&&(this.bottom=a.y.number(w.bottom,B.bottom,Q)),B.left!=null&&w.left!=null&&(this.left=a.y.number(w.left,B.left,Q)),B.right!=null&&w.right!=null&&(this.right=a.y.number(w.right,B.right,Q)),this}getCenter(w,B){let Q=a.ac((this.left+w-this.right)/2,0,w),ee=a.ac((this.top+B-this.bottom)/2,0,B);return new a.P(Q,ee)}equals(w){return this.top===w.top&&this.bottom===w.bottom&&this.left===w.left&&this.right===w.right}clone(){return new hu(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}let _u=85.051129;class nl{constructor(w,B,Q,ee,le){this.tileSize=512,this._renderWorldCopies=le===void 0||!!le,this._minZoom=w||0,this._maxZoom=B||22,this._minPitch=Q==null?0:Q,this._maxPitch=ee==null?60:ee,this.setMaxBounds(),this.width=0,this.height=0,this._center=new a.N(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new hu,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={},this.minElevationForCurrentTile=0}clone(){let w=new nl(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return w.apply(this),w}apply(w){this.tileSize=w.tileSize,this.latRange=w.latRange,this.lngRange=w.lngRange,this.width=w.width,this.height=w.height,this._center=w._center,this._elevation=w._elevation,this.minElevationForCurrentTile=w.minElevationForCurrentTile,this.zoom=w.zoom,this.angle=w.angle,this._fov=w._fov,this._pitch=w._pitch,this._unmodified=w._unmodified,this._edgeInsets=w._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(w){this._minZoom!==w&&(this._minZoom=w,this.zoom=Math.max(this.zoom,w))}get maxZoom(){return this._maxZoom}set maxZoom(w){this._maxZoom!==w&&(this._maxZoom=w,this.zoom=Math.min(this.zoom,w))}get minPitch(){return this._minPitch}set minPitch(w){this._minPitch!==w&&(this._minPitch=w,this.pitch=Math.max(this.pitch,w))}get maxPitch(){return this._maxPitch}set maxPitch(w){this._maxPitch!==w&&(this._maxPitch=w,this.pitch=Math.min(this.pitch,w))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(w){w===void 0?w=!0:w===null&&(w=!1),this._renderWorldCopies=w}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new a.P(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(w){let B=-a.b3(w,-180,180)*Math.PI/180;this.angle!==B&&(this._unmodified=!1,this.angle=B,this._calcMatrices(),this.rotationMatrix=function(){var Q=new a.A(4);return a.A!=Float32Array&&(Q[1]=0,Q[2]=0),Q[0]=1,Q[3]=1,Q}(),function(Q,ee,le){var Fe=ee[0],Ze=ee[1],ut=ee[2],Mt=ee[3],Jt=Math.sin(le),$t=Math.cos(le);Q[0]=Fe*$t+ut*Jt,Q[1]=Ze*$t+Mt*Jt,Q[2]=Fe*-Jt+ut*$t,Q[3]=Ze*-Jt+Mt*$t}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(w){let B=a.ac(w,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==B&&(this._unmodified=!1,this._pitch=B,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(w){w=Math.max(.01,Math.min(60,w)),this._fov!==w&&(this._unmodified=!1,this._fov=w/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(w){let B=Math.min(Math.max(w,this.minZoom),this.maxZoom);this._zoom!==B&&(this._unmodified=!1,this._zoom=B,this.tileZoom=Math.max(0,Math.floor(B)),this.scale=this.zoomScale(B),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(w){w.lat===this._center.lat&&w.lng===this._center.lng||(this._unmodified=!1,this._center=w,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(w){w!==this._elevation&&(this._elevation=w,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(w){this._edgeInsets.equals(w)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,w,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(w){return this._edgeInsets.equals(w)}interpolatePadding(w,B,Q){this._unmodified=!1,this._edgeInsets.interpolate(w,B,Q),this._constrain(),this._calcMatrices()}coveringZoomLevel(w){let B=(w.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/w.tileSize));return Math.max(0,B)}getVisibleUnwrappedCoordinates(w){let B=[new a.b4(0,w)];if(this._renderWorldCopies){let Q=this.pointCoordinate(new a.P(0,0)),ee=this.pointCoordinate(new a.P(this.width,0)),le=this.pointCoordinate(new a.P(this.width,this.height)),Fe=this.pointCoordinate(new a.P(0,this.height)),Ze=Math.floor(Math.min(Q.x,ee.x,le.x,Fe.x)),ut=Math.floor(Math.max(Q.x,ee.x,le.x,Fe.x)),Mt=1;for(let Jt=Ze-Mt;Jt<=ut+Mt;Jt++)Jt!==0&&B.push(new a.b4(Jt,w))}return B}coveringTiles(w){var B,Q;let ee=this.coveringZoomLevel(w),le=ee;if(w.minzoom!==void 0&&eew.maxzoom&&(ee=w.maxzoom);let Fe=this.pointCoordinate(this.getCameraPoint()),Ze=a.Z.fromLngLat(this.center),ut=Math.pow(2,ee),Mt=[ut*Fe.x,ut*Fe.y,0],Jt=[ut*Ze.x,ut*Ze.y,0],$t=ks.fromInvProjectionMatrix(this.invModelViewProjectionMatrix,this.worldSize,ee),yr=w.minzoom||0;!w.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(yr=ee);let Cr=w.terrain?2/Math.min(this.tileSize,w.tileSize)*this.tileSize:3,ve=Xe=>({aabb:new bc([Xe*ut,0,0],[(Xe+1)*ut,ut,0]),zoom:0,x:0,y:0,wrap:Xe,fullyVisible:!1}),xe=[],Ie=[],ze=ee,Qe=w.reparseOverscaled?le:ee;if(this._renderWorldCopies)for(let Xe=1;Xe<=3;Xe++)xe.push(ve(-Xe)),xe.push(ve(Xe));for(xe.push(ve(0));xe.length>0;){let Xe=xe.pop(),nt=Xe.x,qt=Xe.y,Wt=Xe.fullyVisible;if(!Wt){let Hr=Xe.aabb.intersects($t);if(Hr===0)continue;Wt=Hr===2}let nr=w.terrain?Mt:Jt,fr=Xe.aabb.distanceX(nr),br=Xe.aabb.distanceY(nr),Fr=Math.max(Math.abs(fr),Math.abs(br));if(Xe.zoom===ze||Fr>Cr+(1<=yr){let Hr=ze-Xe.zoom,ri=Mt[0]-.5-(nt<>1),cn=Xe.zoom+1,sn=Xe.aabb.quadrant(Hr);if(w.terrain){let Ln=new a.S(cn,Xe.wrap,cn,ri,Ci),Yn=w.terrain.getMinMaxElevation(Ln),Aa=(B=Yn.minElevation)!==null&&B!==void 0?B:this.elevation,fa=(Q=Yn.maxElevation)!==null&&Q!==void 0?Q:this.elevation;sn=new bc([sn.min[0],sn.min[1],Aa],[sn.max[0],sn.max[1],fa])}xe.push({aabb:sn,zoom:cn,x:ri,y:Ci,wrap:Xe.wrap,fullyVisible:Wt})}}return Ie.sort((Xe,nt)=>Xe.distanceSq-nt.distanceSq).map(Xe=>Xe.tileID)}resize(w,B){this.width=w,this.height=B,this.pixelsToGLUnits=[2/w,-2/B],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(w){return Math.pow(2,w)}scaleZoom(w){return Math.log(w)/Math.LN2}project(w){let B=a.ac(w.lat,-85.051129,_u);return new a.P(a.O(w.lng)*this.worldSize,a.Q(B)*this.worldSize)}unproject(w){return new a.Z(w.x/this.worldSize,w.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(w){let B=this.elevation,Q=Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter,ee=this.pointLocation(this.centerPoint,w),le=w.getElevationForLngLatZoom(ee,this.tileZoom);if(!(this.elevation-le))return;let Fe=Q+B-le,Ze=Math.cos(this._pitch)*this.cameraToCenterDistance/Fe/a.b5(1,ee.lat),ut=this.scaleZoom(Ze/this.tileSize);this._elevation=le,this._center=ee,this.zoom=ut}setLocationAtPoint(w,B){let Q=this.pointCoordinate(B),ee=this.pointCoordinate(this.centerPoint),le=this.locationCoordinate(w),Fe=new a.Z(le.x-(Q.x-ee.x),le.y-(Q.y-ee.y));this.center=this.coordinateLocation(Fe),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(w,B){return B?this.coordinatePoint(this.locationCoordinate(w),B.getElevationForLngLatZoom(w,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(w))}pointLocation(w,B){return this.coordinateLocation(this.pointCoordinate(w,B))}locationCoordinate(w){return a.Z.fromLngLat(w)}coordinateLocation(w){return w&&w.toLngLat()}pointCoordinate(w,B){if(B){let yr=B.pointCoordinate(w);if(yr!=null)return yr}let Q=[w.x,w.y,0,1],ee=[w.x,w.y,1,1];a.af(Q,Q,this.pixelMatrixInverse),a.af(ee,ee,this.pixelMatrixInverse);let le=Q[3],Fe=ee[3],Ze=Q[1]/le,ut=ee[1]/Fe,Mt=Q[2]/le,Jt=ee[2]/Fe,$t=Mt===Jt?0:(0-Mt)/(Jt-Mt);return new a.Z(a.y.number(Q[0]/le,ee[0]/Fe,$t)/this.worldSize,a.y.number(Ze,ut,$t)/this.worldSize)}coordinatePoint(w,B=0,Q=this.pixelMatrix){let ee=[w.x*this.worldSize,w.y*this.worldSize,B,1];return a.af(ee,ee,Q),new a.P(ee[0]/ee[3],ee[1]/ee[3])}getBounds(){let w=Math.max(0,this.height/2-this.getHorizon());return new ce().extend(this.pointLocation(new a.P(0,w))).extend(this.pointLocation(new a.P(this.width,w))).extend(this.pointLocation(new a.P(this.width,this.height))).extend(this.pointLocation(new a.P(0,this.height)))}getMaxBounds(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new ce([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(w){w?(this.lngRange=[w.getWest(),w.getEast()],this.latRange=[w.getSouth(),w.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-85.051129,_u])}calculateTileMatrix(w){let B=w.canonical,Q=this.worldSize/this.zoomScale(B.z),ee=B.x+Math.pow(2,B.z)*w.wrap,le=a.an(new Float64Array(16));return a.J(le,le,[ee*Q,B.y*Q,0]),a.K(le,le,[Q/a.X,Q/a.X,1]),le}calculatePosMatrix(w,B=!1){let Q=w.key,ee=B?this._alignedPosMatrixCache:this._posMatrixCache;if(ee[Q])return ee[Q];let le=this.calculateTileMatrix(w);return a.L(le,B?this.alignedModelViewProjectionMatrix:this.modelViewProjectionMatrix,le),ee[Q]=new Float32Array(le),ee[Q]}calculateFogMatrix(w){let B=w.key,Q=this._fogMatrixCache;if(Q[B])return Q[B];let ee=this.calculateTileMatrix(w);return a.L(ee,this.fogMatrix,ee),Q[B]=new Float32Array(ee),Q[B]}customLayerMatrix(){return this.mercatorMatrix.slice()}getConstrained(w,B){B=a.ac(+B,this.minZoom,this.maxZoom);let Q={center:new a.N(w.lng,w.lat),zoom:B},ee=this.lngRange;if(!this._renderWorldCopies&&ee===null){let Xe=179.9999999999;ee=[-Xe,Xe]}let le=this.tileSize*this.zoomScale(Q.zoom),Fe=0,Ze=le,ut=0,Mt=le,Jt=0,$t=0,{x:yr,y:Cr}=this.size;if(this.latRange){let Xe=this.latRange;Fe=a.Q(Xe[1])*le,Ze=a.Q(Xe[0])*le,Ze-FeZe&&(ze=Ze-Xe)}if(ee){let Xe=(ut+Mt)/2,nt=ve;this._renderWorldCopies&&(nt=a.b3(ve,Xe-le/2,Xe+le/2));let qt=yr/2;nt-qtMt&&(Ie=Mt-qt)}if(Ie!==void 0||ze!==void 0){let Xe=new a.P(Ie!=null?Ie:ve,ze!=null?ze:xe);Q.center=this.unproject.call({worldSize:le},Xe).wrap()}return Q}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let w=this._unmodified,{center:B,zoom:Q}=this.getConstrained(this.center,this.zoom);this.center=B,this.zoom=Q,this._unmodified=w,this._constraining=!1}_calcMatrices(){if(!this.height)return;let w=this.centerOffset,B=this.point.x,Q=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=a.b5(1,this.center.lat)*this.worldSize;let ee=a.an(new Float64Array(16));a.K(ee,ee,[this.width/2,-this.height/2,1]),a.J(ee,ee,[1,-1,0]),this.labelPlaneMatrix=ee,ee=a.an(new Float64Array(16)),a.K(ee,ee,[1,-1,1]),a.J(ee,ee,[-1,-1,0]),a.K(ee,ee,[2/this.width,2/this.height,1]),this.glCoordMatrix=ee;let le=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),Fe=Math.min(this.elevation,this.minElevationForCurrentTile),Ze=le-Fe*this._pixelPerMeter/Math.cos(this._pitch),ut=Fe<0?Ze:le,Mt=Math.PI/2+this._pitch,Jt=this._fov*(.5+w.y/this.height),$t=Math.sin(Jt)*ut/Math.sin(a.ac(Math.PI-Mt-Jt,.01,Math.PI-.01)),yr=this.getHorizon(),Cr=2*Math.atan(yr/this.cameraToCenterDistance)*(.5+w.y/(2*yr)),ve=Math.sin(Cr)*ut/Math.sin(a.ac(Math.PI-Mt-Cr,.01,Math.PI-.01)),xe=Math.min($t,ve);this.farZ=1.01*(Math.cos(Math.PI/2-this._pitch)*xe+ut),this.nearZ=this.height/50,ee=new Float64Array(16),a.b6(ee,this._fov,this.width/this.height,this.nearZ,this.farZ),ee[8]=2*-w.x/this.width,ee[9]=2*w.y/this.height,this.projectionMatrix=a.ae(ee),a.K(ee,ee,[1,-1,1]),a.J(ee,ee,[0,0,-this.cameraToCenterDistance]),a.b7(ee,ee,this._pitch),a.ad(ee,ee,this.angle),a.J(ee,ee,[-B,-Q,0]),this.mercatorMatrix=a.K([],ee,[this.worldSize,this.worldSize,this.worldSize]),a.K(ee,ee,[1,1,this._pixelPerMeter]),this.pixelMatrix=a.L(new Float64Array(16),this.labelPlaneMatrix,ee),a.J(ee,ee,[0,0,-this.elevation]),this.modelViewProjectionMatrix=ee,this.invModelViewProjectionMatrix=a.as([],ee),this.fogMatrix=new Float64Array(16),a.b6(this.fogMatrix,this._fov,this.width/this.height,le,this.farZ),this.fogMatrix[8]=2*-w.x/this.width,this.fogMatrix[9]=2*w.y/this.height,a.K(this.fogMatrix,this.fogMatrix,[1,-1,1]),a.J(this.fogMatrix,this.fogMatrix,[0,0,-this.cameraToCenterDistance]),a.b7(this.fogMatrix,this.fogMatrix,this._pitch),a.ad(this.fogMatrix,this.fogMatrix,this.angle),a.J(this.fogMatrix,this.fogMatrix,[-B,-Q,0]),a.K(this.fogMatrix,this.fogMatrix,[1,1,this._pixelPerMeter]),a.J(this.fogMatrix,this.fogMatrix,[0,0,-this.elevation]),this.pixelMatrix3D=a.L(new Float64Array(16),this.labelPlaneMatrix,ee);let Ie=this.width%2/2,ze=this.height%2/2,Qe=Math.cos(this.angle),Xe=Math.sin(this.angle),nt=B-Math.round(B)+Qe*Ie+Xe*ze,qt=Q-Math.round(Q)+Qe*ze+Xe*Ie,Wt=new Float64Array(ee);if(a.J(Wt,Wt,[nt>.5?nt-1:nt,qt>.5?qt-1:qt,0]),this.alignedModelViewProjectionMatrix=Wt,ee=a.as(new Float64Array(16),this.pixelMatrix),!ee)throw new Error("failed to invert matrix");this.pixelMatrixInverse=ee,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;let w=this.pointCoordinate(new a.P(0,0)),B=[w.x*this.worldSize,w.y*this.worldSize,0,1];return a.af(B,B,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){let w=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new a.P(0,w))}getCameraQueryGeometry(w){let B=this.getCameraPoint();if(w.length===1)return[w[0],B];{let Q=B.x,ee=B.y,le=B.x,Fe=B.y;for(let Ze of w)Q=Math.min(Q,Ze.x),ee=Math.min(ee,Ze.y),le=Math.max(le,Ze.x),Fe=Math.max(Fe,Ze.y);return[new a.P(Q,ee),new a.P(le,ee),new a.P(le,Fe),new a.P(Q,Fe),new a.P(Q,ee)]}}lngLatToCameraDepth(w,B){let Q=this.locationCoordinate(w),ee=[Q.x*this.worldSize,Q.y*this.worldSize,B,1];return a.af(ee,ee,this.modelViewProjectionMatrix),ee[2]/ee[3]}}function nh(ue,w){let B,Q=!1,ee=null,le=null,Fe=()=>{ee=null,Q&&(ue.apply(le,B),ee=setTimeout(Fe,w),Q=!1)};return(...Ze)=>(Q=!0,le=this,B=Ze,ee||Fe(),ee)}class Mh{constructor(w){this._getCurrentHash=()=>{let B=window.location.hash.replace("#","");if(this._hashName){let Q;return B.split("&").map(ee=>ee.split("=")).forEach(ee=>{ee[0]===this._hashName&&(Q=ee)}),(Q&&Q[1]||"").split("/")}return B.split("/")},this._onHashChange=()=>{let B=this._getCurrentHash();if(B.length>=3&&!B.some(Q=>isNaN(Q))){let Q=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(B[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+B[2],+B[1]],zoom:+B[0],bearing:Q,pitch:+(B[4]||0)}),!0}return!1},this._updateHashUnthrottled=()=>{let B=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,B)},this._removeHash=()=>{let B=this._getCurrentHash();if(B.length===0)return;let Q=B.join("/"),ee=Q;ee.split("&").length>0&&(ee=ee.split("&")[0]),this._hashName&&(ee=`${this._hashName}=${Q}`);let le=window.location.hash.replace(ee,"");le.startsWith("#&")?le=le.slice(0,1)+le.slice(2):le==="#"&&(le="");let Fe=window.location.href.replace(/(#.+)?$/,le);Fe=Fe.replace("&&","&"),window.history.replaceState(window.history.state,null,Fe)},this._updateHash=nh(this._updateHashUnthrottled,300),this._hashName=w&&encodeURIComponent(w)}addTo(w){return this._map=w,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(w){let B=this._map.getCenter(),Q=Math.round(100*this._map.getZoom())/100,ee=Math.ceil((Q*Math.LN2+Math.log(512/360/.5))/Math.LN10),le=Math.pow(10,ee),Fe=Math.round(B.lng*le)/le,Ze=Math.round(B.lat*le)/le,ut=this._map.getBearing(),Mt=this._map.getPitch(),Jt="";if(Jt+=w?`/${Fe}/${Ze}/${Q}`:`${Q}/${Ze}/${Fe}`,(ut||Mt)&&(Jt+="/"+Math.round(10*ut)/10),Mt&&(Jt+=`/${Math.round(Mt)}`),this._hashName){let $t=this._hashName,yr=!1,Cr=window.location.hash.slice(1).split("&").map(ve=>{let xe=ve.split("=")[0];return xe===$t?(yr=!0,`${xe}=${Jt}`):ve}).filter(ve=>ve);return yr||Cr.push(`${$t}=${Jt}`),`#${Cr.join("&")}`}return`#${Jt}`}}let zu={linearity:.3,easing:a.b8(0,0,.3,1)},Fc=a.e({deceleration:2500,maxSpeed:1400},zu),wc=a.e({deceleration:20,maxSpeed:1400},zu),bd=a.e({deceleration:1e3,maxSpeed:360},zu),xf=a.e({deceleration:1e3,maxSpeed:90},zu);class Pf{constructor(w){this._map=w,this.clear()}clear(){this._inertiaBuffer=[]}record(w){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:u.now(),settings:w})}_drainInertiaBuffer(){let w=this._inertiaBuffer,B=u.now();for(;w.length>0&&B-w[0].time>160;)w.shift()}_onMoveEnd(w){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;let B={zoom:0,bearing:0,pitch:0,pan:new a.P(0,0),pinchAround:void 0,around:void 0};for(let{settings:le}of this._inertiaBuffer)B.zoom+=le.zoomDelta||0,B.bearing+=le.bearingDelta||0,B.pitch+=le.pitchDelta||0,le.panDelta&&B.pan._add(le.panDelta),le.around&&(B.around=le.around),le.pinchAround&&(B.pinchAround=le.pinchAround);let Q=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,ee={};if(B.pan.mag()){let le=bf(B.pan.mag(),Q,a.e({},Fc,w||{}));ee.offset=B.pan.mult(le.amount/B.pan.mag()),ee.center=this._map.transform.center,qu(ee,le)}if(B.zoom){let le=bf(B.zoom,Q,wc);ee.zoom=this._map.transform.zoom+le.amount,qu(ee,le)}if(B.bearing){let le=bf(B.bearing,Q,bd);ee.bearing=this._map.transform.bearing+a.ac(le.amount,-179,179),qu(ee,le)}if(B.pitch){let le=bf(B.pitch,Q,xf);ee.pitch=this._map.transform.pitch+le.amount,qu(ee,le)}if(ee.zoom||ee.bearing){let le=B.pinchAround===void 0?B.around:B.pinchAround;ee.around=le?this._map.unproject(le):this._map.getCenter()}return this.clear(),a.e(ee,{noMoveStart:!0})}}function qu(ue,w){(!ue.duration||ue.durationB.unproject(ut)),Ze=le.reduce((ut,Mt,Jt,$t)=>ut.add(Mt.div($t.length)),new a.P(0,0));super(w,{points:le,point:Ze,lngLats:Fe,lngLat:B.unproject(Ze),originalEvent:Q}),this._defaultPrevented=!1}}class Xh extends a.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(w,B,Q){super(w,{originalEvent:Q}),this._defaultPrevented=!1}}class If{constructor(w,B){this._map=w,this._clickTolerance=B.clickTolerance}reset(){delete this._mousedownPos}wheel(w){return this._firePreventable(new Xh(w.type,this._map,w))}mousedown(w,B){return this._mousedownPos=B,this._firePreventable(new jl(w.type,this._map,w))}mouseup(w){this._map.fire(new jl(w.type,this._map,w))}click(w,B){this._mousedownPos&&this._mousedownPos.dist(B)>=this._clickTolerance||this._map.fire(new jl(w.type,this._map,w))}dblclick(w){return this._firePreventable(new jl(w.type,this._map,w))}mouseover(w){this._map.fire(new jl(w.type,this._map,w))}mouseout(w){this._map.fire(new jl(w.type,this._map,w))}touchstart(w){return this._firePreventable(new uf(w.type,this._map,w))}touchmove(w){this._map.fire(new uf(w.type,this._map,w))}touchend(w){this._map.fire(new uf(w.type,this._map,w))}touchcancel(w){this._map.fire(new uf(w.type,this._map,w))}_firePreventable(w){if(this._map.fire(w),w.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Cs{constructor(w){this._map=w}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(w){this._map.fire(new jl(w.type,this._map,w))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new jl("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(w){this._delayContextMenu?this._contextMenuEvent=w:this._ignoreContextMenu||this._map.fire(new jl(w.type,this._map,w)),this._map.listens("contextmenu")&&w.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class du{constructor(w){this._map=w}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(w){return this.transform.pointLocation(a.P.convert(w),this._map.terrain)}}class ku{constructor(w,B){this._map=w,this._tr=new du(w),this._el=w.getCanvasContainer(),this._container=w.getContainer(),this._clickTolerance=B.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(w,B){this.isEnabled()&&w.shiftKey&&w.button===0&&(c.disableDrag(),this._startPos=this._lastPos=B,this._active=!0)}mousemoveWindow(w,B){if(!this._active)return;let Q=B;if(this._lastPos.equals(Q)||!this._box&&Q.dist(this._startPos)le.fitScreenCoordinates(Q,ee,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",w)}keydown(w){this._active&&w.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",w))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(c.remove(this._box),this._box=null),c.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(w,B){return this._map.fire(new a.k(w,{originalEvent:B}))}}function Xf(ue,w){if(ue.length!==w.length)throw new Error(`The number of touches and points are not equal - touches ${ue.length}, points ${w.length}`);let B={};for(let Q=0;Qthis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=w.timeStamp),Q.length===this.numTouches&&(this.centroid=function(ee){let le=new a.P(0,0);for(let Fe of ee)le._add(Fe);return le.div(ee.length)}(B),this.touches=Xf(Q,B)))}touchmove(w,B,Q){if(this.aborted||!this.centroid)return;let ee=Xf(Q,B);for(let le in this.touches){let Fe=ee[le];(!Fe||Fe.dist(this.touches[le])>30)&&(this.aborted=!0)}}touchend(w,B,Q){if((!this.centroid||w.timeStamp-this.startTime>500)&&(this.aborted=!0),Q.length===0){let ee=!this.aborted&&this.centroid;if(this.reset(),ee)return ee}}}class wf{constructor(w){this.singleTap=new Us(w),this.numTaps=w.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(w,B,Q){this.singleTap.touchstart(w,B,Q)}touchmove(w,B,Q){this.singleTap.touchmove(w,B,Q)}touchend(w,B,Q){let ee=this.singleTap.touchend(w,B,Q);if(ee){let le=w.timeStamp-this.lastTime<500,Fe=!this.lastTap||this.lastTap.dist(ee)<30;if(le&&Fe||this.reset(),this.count++,this.lastTime=w.timeStamp,this.lastTap=ee,this.count===this.numTaps)return this.reset(),ee}}}class zc{constructor(w){this._tr=new du(w),this._zoomIn=new wf({numTouches:1,numTaps:2}),this._zoomOut=new wf({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(w,B,Q){this._zoomIn.touchstart(w,B,Q),this._zoomOut.touchstart(w,B,Q)}touchmove(w,B,Q){this._zoomIn.touchmove(w,B,Q),this._zoomOut.touchmove(w,B,Q)}touchend(w,B,Q){let ee=this._zoomIn.touchend(w,B,Q),le=this._zoomOut.touchend(w,B,Q),Fe=this._tr;return ee?(this._active=!0,w.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:Ze=>Ze.easeTo({duration:300,zoom:Fe.zoom+1,around:Fe.unproject(ee)},{originalEvent:w})}):le?(this._active=!0,w.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:Ze=>Ze.easeTo({duration:300,zoom:Fe.zoom-1,around:Fe.unproject(le)},{originalEvent:w})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Wu{constructor(w){this._enabled=!!w.enable,this._moveStateManager=w.moveStateManager,this._clickTolerance=w.clickTolerance||1,this._moveFunction=w.move,this._activateOnStart=!!w.activateOnStart,w.assignEvents(this),this.reset()}reset(w){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(w)}_move(...w){let B=this._moveFunction(...w);if(B.bearingDelta||B.pitchDelta||B.around||B.panDelta)return this._active=!0,B}dragStart(w,B){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(w)&&(this._moveStateManager.startMove(w),this._lastPoint=B.length?B[0]:B,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(w,B){if(!this.isEnabled())return;let Q=this._lastPoint;if(!Q)return;if(w.preventDefault(),!this._moveStateManager.isValidMoveEvent(w))return void this.reset(w);let ee=B.length?B[0]:B;return!this._moved&&ee.dist(Q){ue.mousedown=ue.dragStart,ue.mousemoveWindow=ue.dragMove,ue.mouseup=ue.dragEnd,ue.contextmenu=w=>{w.preventDefault()}},Wl=({enable:ue,clickTolerance:w,bearingDegreesPerPixelMoved:B=.8})=>{let Q=new Xu({checkCorrectEvent:ee=>c.mouseButton(ee)===0&&ee.ctrlKey||c.mouseButton(ee)===2});return new Wu({clickTolerance:w,move:(ee,le)=>({bearingDelta:(le.x-ee.x)*B}),moveStateManager:Q,enable:ue,assignEvents:Zf})},ah=({enable:ue,clickTolerance:w,pitchDegreesPerPixelMoved:B=-.5})=>{let Q=new Xu({checkCorrectEvent:ee=>c.mouseButton(ee)===0&&ee.ctrlKey||c.mouseButton(ee)===2});return new Wu({clickTolerance:w,move:(ee,le)=>({pitchDelta:(le.y-ee.y)*B}),moveStateManager:Q,enable:ue,assignEvents:Zf})};class Zu{constructor(w,B){this._clickTolerance=w.clickTolerance||1,this._map=B,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new a.P(0,0)}_shouldBePrevented(w){return w<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(w,B,Q){return this._calculateTransform(w,B,Q)}touchmove(w,B,Q){if(this._active){if(!this._shouldBePrevented(Q.length))return w.preventDefault(),this._calculateTransform(w,B,Q);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",w)}}touchend(w,B,Q){this._calculateTransform(w,B,Q),this._active&&this._shouldBePrevented(Q.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(w,B,Q){Q.length>0&&(this._active=!0);let ee=Xf(Q,B),le=new a.P(0,0),Fe=new a.P(0,0),Ze=0;for(let Mt in ee){let Jt=ee[Mt],$t=this._touches[Mt];$t&&(le._add(Jt),Fe._add(Jt.sub($t)),Ze++,ee[Mt]=Jt)}if(this._touches=ee,this._shouldBePrevented(Ze)||!Fe.mag())return;let ut=Fe.div(Ze);return this._sum._add(ut),this._sum.mag()Math.abs(ue.x)}class Bc extends qc{constructor(w){super(),this._currentTouchCount=0,this._map=w}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(w,B,Q){super.touchstart(w,B,Q),this._currentTouchCount=Q.length}_start(w){this._lastPoints=w,fc(w[0].sub(w[1]))&&(this._valid=!1)}_move(w,B,Q){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;let ee=w[0].sub(this._lastPoints[0]),le=w[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(ee,le,Q.timeStamp),this._valid?(this._lastPoints=w,this._active=!0,{pitchDelta:(ee.y+le.y)/2*-.5}):void 0}gestureBeginsVertically(w,B,Q){if(this._valid!==void 0)return this._valid;let ee=w.mag()>=2,le=B.mag()>=2;if(!ee&&!le)return;if(!ee||!le)return this._firstMove===void 0&&(this._firstMove=Q),Q-this._firstMove<100&&void 0;let Fe=w.y>0==B.y>0;return fc(w)&&fc(B)&&Fe}}let kt={panStep:100,bearingStep:15,pitchStep:10};class Zt{constructor(w){this._tr=new du(w);let B=kt;this._panStep=B.panStep,this._bearingStep=B.bearingStep,this._pitchStep=B.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(w){if(w.altKey||w.ctrlKey||w.metaKey)return;let B=0,Q=0,ee=0,le=0,Fe=0;switch(w.keyCode){case 61:case 107:case 171:case 187:B=1;break;case 189:case 109:case 173:B=-1;break;case 37:w.shiftKey?Q=-1:(w.preventDefault(),le=-1);break;case 39:w.shiftKey?Q=1:(w.preventDefault(),le=1);break;case 38:w.shiftKey?ee=1:(w.preventDefault(),Fe=-1);break;case 40:w.shiftKey?ee=-1:(w.preventDefault(),Fe=1);break;default:return}return this._rotationDisabled&&(Q=0,ee=0),{cameraAnimation:Ze=>{let ut=this._tr;Ze.easeTo({duration:300,easeId:"keyboardHandler",easing:Er,zoom:B?Math.round(ut.zoom)+B*(w.shiftKey?2:1):ut.zoom,bearing:ut.bearing+Q*this._bearingStep,pitch:ut.pitch+ee*this._pitchStep,offset:[-le*this._panStep,-Fe*this._panStep],center:ut.center},{originalEvent:w})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function Er(ue){return ue*(2-ue)}let xr=4.000244140625;class Kr{constructor(w,B){this._onTimeout=Q=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(Q)},this._map=w,this._tr=new du(w),this._triggerRenderFrame=B,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(w){this._defaultZoomRate=w}setWheelZoomRate(w){this._wheelZoomRate=w}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(w){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!w&&w.around==="center")}disable(){this.isEnabled()&&(this._enabled=!1)}_shouldBePrevented(w){return!!this._map.cooperativeGestures.isEnabled()&&!(w.ctrlKey||this._map.cooperativeGestures.isBypassed(w))}wheel(w){if(!this.isEnabled())return;if(this._shouldBePrevented(w))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",w);let B=w.deltaMode===WheelEvent.DOM_DELTA_LINE?40*w.deltaY:w.deltaY,Q=u.now(),ee=Q-(this._lastWheelEventTime||0);this._lastWheelEventTime=Q,B!==0&&B%xr==0?this._type="wheel":B!==0&&Math.abs(B)<4?this._type="trackpad":ee>400?(this._type=null,this._lastValue=B,this._timeout=setTimeout(this._onTimeout,40,w)):this._type||(this._type=Math.abs(ee*B)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,B+=this._lastValue)),w.shiftKey&&B&&(B/=4),this._type&&(this._lastWheelEvent=w,this._delta-=B,this._active||this._start(w)),w.preventDefault()}_start(w){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);let B=c.mousePos(this._map.getCanvas(),w),Q=this._tr;this._around=B.y>Q.transform.height/2-Q.transform.getHorizon()?a.N.convert(this._aroundCenter?Q.center:Q.unproject(B)):a.N.convert(Q.center),this._aroundPoint=Q.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;let w=this._tr.transform;if(this._delta!==0){let ut=this._type==="wheel"&&Math.abs(this._delta)>xr?this._wheelZoomRate:this._defaultZoomRate,Mt=2/(1+Math.exp(-Math.abs(this._delta*ut)));this._delta<0&&Mt!==0&&(Mt=1/Mt);let Jt=typeof this._targetZoom=="number"?w.zoomScale(this._targetZoom):w.scale;this._targetZoom=Math.min(w.maxZoom,Math.max(w.minZoom,w.scaleZoom(Jt*Mt))),this._type==="wheel"&&(this._startZoom=w.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let B=typeof this._targetZoom=="number"?this._targetZoom:w.zoom,Q=this._startZoom,ee=this._easing,le,Fe=!1,Ze=u.now()-this._lastWheelEventTime;if(this._type==="wheel"&&Q&&ee&&Ze){let ut=Math.min(Ze/200,1),Mt=ee(ut);le=a.y.number(Q,B,Mt),ut<1?this._frameId||(this._frameId=!0):Fe=!0}else le=B,Fe=!0;return this._active=!0,Fe&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!Fe,zoomDelta:le-w.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(w){let B=a.b9;if(this._prevEase){let Q=this._prevEase,ee=(u.now()-Q.start)/Q.duration,le=Q.easing(ee+.01)-Q.easing(ee),Fe=.27/Math.sqrt(le*le+1e-4)*.01,Ze=Math.sqrt(.0729-Fe*Fe);B=a.b8(Fe,Ze,.25,1)}return this._prevEase={start:u.now(),duration:w,easing:B},B}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class Mi{constructor(w,B){this._clickZoom=w,this._tapZoom=B}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class Wi{constructor(w){this._tr=new du(w),this.reset()}reset(){this._active=!1}dblclick(w,B){return w.preventDefault(),{cameraAnimation:Q=>{Q.easeTo({duration:300,zoom:this._tr.zoom+(w.shiftKey?-1:1),around:this._tr.unproject(B)},{originalEvent:w})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class dn{constructor(){this._tap=new wf({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(w,B,Q){if(!this._swipePoint)if(this._tapTime){let ee=B[0],le=w.timeStamp-this._tapTime<500,Fe=this._tapPoint.dist(ee)<30;le&&Fe?Q.length>0&&(this._swipePoint=ee,this._swipeTouch=Q[0].identifier):this.reset()}else this._tap.touchstart(w,B,Q)}touchmove(w,B,Q){if(this._tapTime){if(this._swipePoint){if(Q[0].identifier!==this._swipeTouch)return;let ee=B[0],le=ee.y-this._swipePoint.y;return this._swipePoint=ee,w.preventDefault(),this._active=!0,{zoomDelta:le/128}}}else this._tap.touchmove(w,B,Q)}touchend(w,B,Q){if(this._tapTime)this._swipePoint&&Q.length===0&&this.reset();else{let ee=this._tap.touchend(w,B,Q);ee&&(this._tapTime=w.timeStamp,this._tapPoint=ee)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class wn{constructor(w,B,Q){this._el=w,this._mousePan=B,this._touchPan=Q}enable(w){this._inertiaOptions=w||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class On{constructor(w,B,Q){this._pitchWithRotate=w.pitchWithRotate,this._mouseRotate=B,this._mousePitch=Q}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class Yi{constructor(w,B,Q,ee){this._el=w,this._touchZoom=B,this._touchRotate=Q,this._tapDragZoom=ee,this._rotationDisabled=!1,this._enabled=!0}enable(w){this._touchZoom.enable(w),this._rotationDisabled||this._touchRotate.enable(w),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}class $i{constructor(w,B){this._bypassKey=navigator.userAgent.indexOf("Mac")!==-1?"metaKey":"ctrlKey",this._map=w,this._options=B,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;let w=this._map.getCanvasContainer();w.classList.add("maplibregl-cooperative-gestures"),this._container=c.create("div","maplibregl-cooperative-gesture-screen",w);let B=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");this._bypassKey==="metaKey"&&(B=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));let Q=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),ee=document.createElement("div");ee.className="maplibregl-desktop-message",ee.textContent=B,this._container.appendChild(ee);let le=document.createElement("div");le.className="maplibregl-mobile-message",le.textContent=Q,this._container.appendChild(le),this._container.setAttribute("aria-hidden","true")}_destroyUI(){this._container&&(c.remove(this._container),this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")),delete this._container}enable(){this._setupUI(),this._enabled=!0}disable(){this._enabled=!1,this._destroyUI()}isEnabled(){return this._enabled}isBypassed(w){return w[this._bypassKey]}notifyGestureBlocked(w,B){this._enabled&&(this._map.fire(new a.k("cooperativegestureprevented",{gestureType:w,originalEvent:B})),this._container.classList.add("maplibregl-show"),setTimeout(()=>{this._container.classList.remove("maplibregl-show")},100))}}let an=ue=>ue.zoom||ue.drag||ue.pitch||ue.rotate;class Fi extends a.k{}function ta(ue){return ue.panDelta&&ue.panDelta.mag()||ue.zoomDelta||ue.bearingDelta||ue.pitchDelta}class Ca{constructor(w,B){this.handleWindowEvent=ee=>{this.handleEvent(ee,`${ee.type}Window`)},this.handleEvent=(ee,le)=>{if(ee.type==="blur")return void this.stop(!0);this._updatingCamera=!0;let Fe=ee.type==="renderFrame"?void 0:ee,Ze={needsRenderFrame:!1},ut={},Mt={},Jt=ee.touches,$t=Jt?this._getMapTouches(Jt):void 0,yr=$t?c.touchPos(this._map.getCanvas(),$t):c.mousePos(this._map.getCanvas(),ee);for(let{handlerName:xe,handler:Ie,allowed:ze}of this._handlers){if(!Ie.isEnabled())continue;let Qe;this._blockedByActive(Mt,ze,xe)?Ie.reset():Ie[le||ee.type]&&(Qe=Ie[le||ee.type](ee,yr,$t),this.mergeHandlerResult(Ze,ut,Qe,xe,Fe),Qe&&Qe.needsRenderFrame&&this._triggerRenderFrame()),(Qe||Ie.isActive())&&(Mt[xe]=Ie)}let Cr={};for(let xe in this._previousActiveHandlers)Mt[xe]||(Cr[xe]=Fe);this._previousActiveHandlers=Mt,(Object.keys(Cr).length||ta(Ze))&&(this._changes.push([Ze,ut,Cr]),this._triggerRenderFrame()),(Object.keys(Mt).length||ta(Ze))&&this._map._stop(!0),this._updatingCamera=!1;let{cameraAnimation:ve}=Ze;ve&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],ve(this._map))},this._map=w,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Pf(w),this._bearingSnap=B.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(B);let Q=this._el;this._listeners=[[Q,"touchstart",{passive:!0}],[Q,"touchmove",{passive:!1}],[Q,"touchend",void 0],[Q,"touchcancel",void 0],[Q,"mousedown",void 0],[Q,"mousemove",void 0],[Q,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[Q,"mouseover",void 0],[Q,"mouseout",void 0],[Q,"dblclick",void 0],[Q,"click",void 0],[Q,"keydown",{capture:!1}],[Q,"keyup",void 0],[Q,"wheel",{passive:!1}],[Q,"contextmenu",void 0],[window,"blur",void 0]];for(let[ee,le,Fe]of this._listeners)c.addEventListener(ee,le,ee===document?this.handleWindowEvent:this.handleEvent,Fe)}destroy(){for(let[w,B,Q]of this._listeners)c.removeEventListener(w,B,w===document?this.handleWindowEvent:this.handleEvent,Q)}_addDefaultHandlers(w){let B=this._map,Q=B.getCanvasContainer();this._add("mapEvent",new If(B,w));let ee=B.boxZoom=new ku(B,w);this._add("boxZoom",ee),w.interactive&&w.boxZoom&&ee.enable();let le=B.cooperativeGestures=new $i(B,w.cooperativeGestures);this._add("cooperativeGestures",le),w.cooperativeGestures&&le.enable();let Fe=new zc(B),Ze=new Wi(B);B.doubleClickZoom=new Mi(Ze,Fe),this._add("tapZoom",Fe),this._add("clickZoom",Ze),w.interactive&&w.doubleClickZoom&&B.doubleClickZoom.enable();let ut=new dn;this._add("tapDragZoom",ut);let Mt=B.touchPitch=new Bc(B);this._add("touchPitch",Mt),w.interactive&&w.touchPitch&&B.touchPitch.enable(w.touchPitch);let Jt=Wl(w),$t=ah(w);B.dragRotate=new On(w,Jt,$t),this._add("mouseRotate",Jt,["mousePitch"]),this._add("mousePitch",$t,["mouseRotate"]),w.interactive&&w.dragRotate&&B.dragRotate.enable();let yr=(({enable:Qe,clickTolerance:Xe})=>{let nt=new Xu({checkCorrectEvent:qt=>c.mouseButton(qt)===0&&!qt.ctrlKey});return new Wu({clickTolerance:Xe,move:(qt,Wt)=>({around:Wt,panDelta:Wt.sub(qt)}),activateOnStart:!0,moveStateManager:nt,enable:Qe,assignEvents:Zf})})(w),Cr=new Zu(w,B);B.dragPan=new wn(Q,yr,Cr),this._add("mousePan",yr),this._add("touchPan",Cr,["touchZoom","touchRotate"]),w.interactive&&w.dragPan&&B.dragPan.enable(w.dragPan);let ve=new ff,xe=new vu;B.touchZoomRotate=new Yi(Q,xe,ve,ut),this._add("touchRotate",ve,["touchPan","touchZoom"]),this._add("touchZoom",xe,["touchPan","touchRotate"]),w.interactive&&w.touchZoomRotate&&B.touchZoomRotate.enable(w.touchZoomRotate);let Ie=B.scrollZoom=new Kr(B,()=>this._triggerRenderFrame());this._add("scrollZoom",Ie,["mousePan"]),w.interactive&&w.scrollZoom&&B.scrollZoom.enable(w.scrollZoom);let ze=B.keyboard=new Zt(B);this._add("keyboard",ze),w.interactive&&w.keyboard&&B.keyboard.enable(),this._add("blockableMapEvent",new Cs(B))}_add(w,B,Q){this._handlers.push({handlerName:w,handler:B,allowed:Q}),this._handlersById[w]=B}stop(w){if(!this._updatingCamera){for(let{handler:B}of this._handlers)B.reset();this._inertia.clear(),this._fireEvents({},{},w),this._changes=[]}}isActive(){for(let{handler:w}of this._handlers)if(w.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!an(this._eventsInProgress)||this.isZooming()}_blockedByActive(w,B,Q){for(let ee in w)if(ee!==Q&&(!B||B.indexOf(ee)<0))return!0;return!1}_getMapTouches(w){let B=[];for(let Q of w)this._el.contains(Q.target)&&B.push(Q);return B}mergeHandlerResult(w,B,Q,ee,le){if(!Q)return;a.e(w,Q);let Fe={handlerName:ee,originalEvent:Q.originalEvent||le};Q.zoomDelta!==void 0&&(B.zoom=Fe),Q.panDelta!==void 0&&(B.drag=Fe),Q.pitchDelta!==void 0&&(B.pitch=Fe),Q.bearingDelta!==void 0&&(B.rotate=Fe)}_applyChanges(){let w={},B={},Q={};for(let[ee,le,Fe]of this._changes)ee.panDelta&&(w.panDelta=(w.panDelta||new a.P(0,0))._add(ee.panDelta)),ee.zoomDelta&&(w.zoomDelta=(w.zoomDelta||0)+ee.zoomDelta),ee.bearingDelta&&(w.bearingDelta=(w.bearingDelta||0)+ee.bearingDelta),ee.pitchDelta&&(w.pitchDelta=(w.pitchDelta||0)+ee.pitchDelta),ee.around!==void 0&&(w.around=ee.around),ee.pinchAround!==void 0&&(w.pinchAround=ee.pinchAround),ee.noInertia&&(w.noInertia=ee.noInertia),a.e(B,le),a.e(Q,Fe);this._updateMapTransform(w,B,Q),this._changes=[]}_updateMapTransform(w,B,Q){let ee=this._map,le=ee._getTransformForUpdate(),Fe=ee.terrain;if(!(ta(w)||Fe&&this._terrainMovement))return this._fireEvents(B,Q,!0);let{panDelta:Ze,zoomDelta:ut,bearingDelta:Mt,pitchDelta:Jt,around:$t,pinchAround:yr}=w;yr!==void 0&&($t=yr),ee._stop(!0),$t=$t||ee.transform.centerPoint;let Cr=le.pointLocation(Ze?$t.sub(Ze):$t);Mt&&(le.bearing+=Mt),Jt&&(le.pitch+=Jt),ut&&(le.zoom+=ut),Fe?this._terrainMovement||!B.drag&&!B.zoom?B.drag&&this._terrainMovement?le.center=le.pointLocation(le.centerPoint.sub(Ze)):le.setLocationAtPoint(Cr,$t):(this._terrainMovement=!0,this._map._elevationFreeze=!0,le.setLocationAtPoint(Cr,$t)):le.setLocationAtPoint(Cr,$t),ee._applyUpdatedTransform(le),this._map._update(),w.noInertia||this._inertia.record(w),this._fireEvents(B,Q,!0)}_fireEvents(w,B,Q){let ee=an(this._eventsInProgress),le=an(w),Fe={};for(let $t in w){let{originalEvent:yr}=w[$t];this._eventsInProgress[$t]||(Fe[`${$t}start`]=yr),this._eventsInProgress[$t]=w[$t]}!ee&&le&&this._fireEvent("movestart",le.originalEvent);for(let $t in Fe)this._fireEvent($t,Fe[$t]);le&&this._fireEvent("move",le.originalEvent);for(let $t in w){let{originalEvent:yr}=w[$t];this._fireEvent($t,yr)}let Ze={},ut;for(let $t in this._eventsInProgress){let{handlerName:yr,originalEvent:Cr}=this._eventsInProgress[$t];this._handlersById[yr].isActive()||(delete this._eventsInProgress[$t],ut=B[yr]||Cr,Ze[`${$t}end`]=ut)}for(let $t in Ze)this._fireEvent($t,Ze[$t]);let Mt=an(this._eventsInProgress),Jt=(ee||le)&&!Mt;if(Jt&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;let $t=this._map._getTransformForUpdate();$t.recalculateZoom(this._map.terrain),this._map._applyUpdatedTransform($t)}if(Q&&Jt){this._updatingCamera=!0;let $t=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),yr=Cr=>Cr!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new Fi("renderFrame",{timeStamp:w})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class Ra extends a.E{constructor(w,B){super(),this._renderFrameCallback=()=>{let Q=Math.min((u.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(Q)),Q<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=w,this._bearingSnap=B.bearingSnap,this.on("moveend",()=>{delete this._requestedCameraState})}getCenter(){return new a.N(this.transform.center.lng,this.transform.center.lat)}setCenter(w,B){return this.jumpTo({center:w},B)}panBy(w,B,Q){return w=a.P.convert(w).mult(-1),this.panTo(this.transform.center,a.e({offset:w},B),Q)}panTo(w,B,Q){return this.easeTo(a.e({center:w},B),Q)}getZoom(){return this.transform.zoom}setZoom(w,B){return this.jumpTo({zoom:w},B),this}zoomTo(w,B,Q){return this.easeTo(a.e({zoom:w},B),Q)}zoomIn(w,B){return this.zoomTo(this.getZoom()+1,w,B),this}zoomOut(w,B){return this.zoomTo(this.getZoom()-1,w,B),this}getBearing(){return this.transform.bearing}setBearing(w,B){return this.jumpTo({bearing:w},B),this}getPadding(){return this.transform.padding}setPadding(w,B){return this.jumpTo({padding:w},B),this}rotateTo(w,B,Q){return this.easeTo(a.e({bearing:w},B),Q)}resetNorth(w,B){return this.rotateTo(0,a.e({duration:1e3},w),B),this}resetNorthPitch(w,B){return this.easeTo(a.e({bearing:0,pitch:0,duration:1e3},w),B),this}snapToNorth(w,B){return Math.abs(this.getBearing()){if(this._zooming&&(ee.zoom=a.y.number(le,Ie,nr)),this._rotating&&(ee.bearing=a.y.number(Fe,Mt,nr)),this._pitching&&(ee.pitch=a.y.number(Ze,Jt,nr)),this._padding&&(ee.interpolatePadding(ut,$t,nr),Cr=ee.centerPoint.add(yr)),this.terrain&&!w.freezeElevation&&this._updateElevation(nr),nt)ee.setLocationAtPoint(nt,qt);else{let fr=ee.zoomScale(ee.zoom-le),br=Ie>le?Math.min(2,Xe):Math.max(.5,Xe),Fr=Math.pow(br,1-nr),Hr=ee.unproject(ze.add(Qe.mult(nr*Fr)).mult(fr));ee.setLocationAtPoint(ee.renderWorldCopies?Hr.wrap():Hr,Cr)}this._applyUpdatedTransform(ee),this._fireMoveEvents(B)},nr=>{this.terrain&&w.freezeElevation&&this._finalizeElevation(),this._afterEase(B,nr)},w),this}_prepareEase(w,B,Q={}){this._moving=!0,B||Q.moving||this.fire(new a.k("movestart",w)),this._zooming&&!Q.zooming&&this.fire(new a.k("zoomstart",w)),this._rotating&&!Q.rotating&&this.fire(new a.k("rotatestart",w)),this._pitching&&!Q.pitching&&this.fire(new a.k("pitchstart",w))}_prepareElevation(w){this._elevationCenter=w,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(w,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(w){this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);let B=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(w<1&&B!==this._elevationTarget){let Q=this._elevationTarget-this._elevationStart;this._elevationStart+=w*(Q-(B-(Q*w+this._elevationStart))/(1-w)),this._elevationTarget=B}this.transform.elevation=a.y.number(this._elevationStart,this._elevationTarget,w)}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(w){let B=w.getCameraPosition(),Q=this.terrain.getElevationForLngLatZoom(B.lngLat,w.zoom);if(B.altitudethis._elevateCameraIfInsideTerrain(ee)),this.transformCameraUpdate&&B.push(ee=>this.transformCameraUpdate(ee)),!B.length)return;let Q=w.clone();for(let ee of B){let le=Q.clone(),{center:Fe,zoom:Ze,pitch:ut,bearing:Mt,elevation:Jt}=ee(le);Fe&&(le.center=Fe),Ze!==void 0&&(le.zoom=Ze),ut!==void 0&&(le.pitch=ut),Mt!==void 0&&(le.bearing=Mt),Jt!==void 0&&(le.elevation=Jt),Q.apply(le)}this.transform.apply(Q)}_fireMoveEvents(w){this.fire(new a.k("move",w)),this._zooming&&this.fire(new a.k("zoom",w)),this._rotating&&this.fire(new a.k("rotate",w)),this._pitching&&this.fire(new a.k("pitch",w))}_afterEase(w,B){if(this._easeId&&B&&this._easeId===B)return;delete this._easeId;let Q=this._zooming,ee=this._rotating,le=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,Q&&this.fire(new a.k("zoomend",w)),ee&&this.fire(new a.k("rotateend",w)),le&&this.fire(new a.k("pitchend",w)),this.fire(new a.k("moveend",w))}flyTo(w,B){var Q;if(!w.essential&&u.prefersReducedMotion){let Ln=a.M(w,["center","zoom","bearing","pitch","around"]);return this.jumpTo(Ln,B)}this.stop(),w=a.e({offset:[0,0],speed:1.2,curve:1.42,easing:a.b9},w);let ee=this._getTransformForUpdate(),le=ee.zoom,Fe=ee.bearing,Ze=ee.pitch,ut=ee.padding,Mt="bearing"in w?this._normalizeBearing(w.bearing,Fe):Fe,Jt="pitch"in w?+w.pitch:Ze,$t="padding"in w?w.padding:ee.padding,yr=a.P.convert(w.offset),Cr=ee.centerPoint.add(yr),ve=ee.pointLocation(Cr),{center:xe,zoom:Ie}=ee.getConstrained(a.N.convert(w.center||ve),(Q=w.zoom)!==null&&Q!==void 0?Q:le);this._normalizeCenter(xe,ee);let ze=ee.zoomScale(Ie-le),Qe=ee.project(ve),Xe=ee.project(xe).sub(Qe),nt=w.curve,qt=Math.max(ee.width,ee.height),Wt=qt/ze,nr=Xe.mag();if("minZoom"in w){let Ln=a.ac(Math.min(w.minZoom,le,Ie),ee.minZoom,ee.maxZoom),Yn=qt/ee.zoomScale(Ln-le);nt=Math.sqrt(Yn/nr*2)}let fr=nt*nt;function br(Ln){let Yn=(Wt*Wt-qt*qt+(Ln?-1:1)*fr*fr*nr*nr)/(2*(Ln?Wt:qt)*fr*nr);return Math.log(Math.sqrt(Yn*Yn+1)-Yn)}function Fr(Ln){return(Math.exp(Ln)-Math.exp(-Ln))/2}function Hr(Ln){return(Math.exp(Ln)+Math.exp(-Ln))/2}let ri=br(!1),Ci=function(Ln){return Hr(ri)/Hr(ri+nt*Ln)},cn=function(Ln){return qt*((Hr(ri)*(Fr(Yn=ri+nt*Ln)/Hr(Yn))-Fr(ri))/fr)/nr;var Yn},sn=(br(!0)-ri)/nt;if(Math.abs(nr)<1e-6||!isFinite(sn)){if(Math.abs(qt-Wt)<1e-6)return this.easeTo(w,B);let Ln=Wt0,Ci=Yn=>Math.exp(Ln*nt*Yn)}return w.duration="duration"in w?+w.duration:1e3*sn/("screenSpeed"in w?+w.screenSpeed/nt:+w.speed),w.maxDuration&&w.duration>w.maxDuration&&(w.duration=0),this._zooming=!0,this._rotating=Fe!==Mt,this._pitching=Jt!==Ze,this._padding=!ee.isPaddingEqual($t),this._prepareEase(B,!1),this.terrain&&this._prepareElevation(xe),this._ease(Ln=>{let Yn=Ln*sn,Aa=1/Ci(Yn);ee.zoom=Ln===1?Ie:le+ee.scaleZoom(Aa),this._rotating&&(ee.bearing=a.y.number(Fe,Mt,Ln)),this._pitching&&(ee.pitch=a.y.number(Ze,Jt,Ln)),this._padding&&(ee.interpolatePadding(ut,$t,Ln),Cr=ee.centerPoint.add(yr)),this.terrain&&!w.freezeElevation&&this._updateElevation(Ln);let fa=Ln===1?xe:ee.unproject(Qe.add(Xe.mult(cn(Yn))).mult(Aa));ee.setLocationAtPoint(ee.renderWorldCopies?fa.wrap():fa,Cr),this._applyUpdatedTransform(ee),this._fireMoveEvents(B)},()=>{this.terrain&&w.freezeElevation&&this._finalizeElevation(),this._afterEase(B)},w),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(w,B){var Q;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let ee=this._onEaseEnd;delete this._onEaseEnd,ee.call(this,B)}return w||(Q=this.handlers)===null||Q===void 0||Q.stop(!1),this}_ease(w,B,Q){Q.animate===!1||Q.duration===0?(w(1),B()):(this._easeStart=u.now(),this._easeOptions=Q,this._onEaseFrame=w,this._onEaseEnd=B,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(w,B){w=a.b3(w,-180,180);let Q=Math.abs(w-B);return Math.abs(w-360-B)180?-360:Q<-180?360:0}queryTerrainElevation(w){return this.terrain?this.terrain.getElevationForLngLatZoom(a.N.convert(w),this.transform.tileZoom)-this.transform.elevation:null}}let La={compact:!0,customAttribution:'MapLibre'};class Ua{constructor(w=La){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")))},this._updateData=B=>{!B||B.sourceDataType!=="metadata"&&B.sourceDataType!=="visibility"&&B.dataType!=="style"&&B.type!=="terrain"||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"))},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show")},this.options=w}getDefaultPosition(){return"bottom-right"}onAdd(w){return this._map=w,this._compact=this.options.compact,this._container=c.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=c.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=c.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){c.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(w,B){let Q=this._map._getUIString(`AttributionControl.${B}`);w.title=Q,w.setAttribute("aria-label",Q)}_updateAttributions(){if(!this._map.style)return;let w=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?w=w.concat(this.options.customAttribution.map(ee=>typeof ee!="string"?"":ee)):typeof this.options.customAttribution=="string"&&w.push(this.options.customAttribution)),this._map.style.stylesheet){let ee=this._map.style.stylesheet;this.styleOwner=ee.owner,this.styleId=ee.id}let B=this._map.style.sourceCaches;for(let ee in B){let le=B[ee];if(le.used||le.usedForTerrain){let Fe=le.getSource();Fe.attribution&&w.indexOf(Fe.attribution)<0&&w.push(Fe.attribution)}}w=w.filter(ee=>String(ee).trim()),w.sort((ee,le)=>ee.length-le.length),w=w.filter((ee,le)=>{for(let Fe=le+1;Fe=0)return!1;return!0});let Q=w.join(" | ");Q!==this._attribHTML&&(this._attribHTML=Q,w.length?(this._innerContainer.innerHTML=Q,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}}class Zn{constructor(w={}){this._updateCompact=()=>{let B=this._container.children;if(B.length){let Q=B[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&Q.classList.add("maplibregl-compact"):Q.classList.remove("maplibregl-compact")}},this.options=w}getDefaultPosition(){return"bottom-left"}onAdd(w){this._map=w,this._compact=this.options&&this.options.compact,this._container=c.create("div","maplibregl-ctrl");let B=c.create("a","maplibregl-ctrl-logo");return B.target="_blank",B.rel="noopener nofollow",B.href="https://maplibre.org/",B.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),B.setAttribute("rel","noopener nofollow"),this._container.appendChild(B),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){c.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class Dn{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(w){let B=++this._id;return this._queue.push({callback:w,id:B,cancelled:!1}),B}remove(w){let B=this._currentlyRunning,Q=B?this._queue.concat(B):this._queue;for(let ee of Q)if(ee.id===w)return void(ee.cancelled=!0)}run(w=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");let B=this._currentlyRunning=this._queue;this._queue=[];for(let Q of B)if(!Q.cancelled&&(Q.callback(w),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}var Ka=a.Y([{name:"a_pos3d",type:"Int16",components:3}]);class bo extends a.E{constructor(w){super(),this.sourceCache=w,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,w.usedForTerrain=!0,w.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(w,B){this.sourceCache.update(w,B),this._renderableTilesKeys=[];let Q={};for(let ee of w.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:B}))Q[ee.key]=!0,this._renderableTilesKeys.push(ee.key),this._tiles[ee.key]||(ee.posMatrix=new Float64Array(16),a.aP(ee.posMatrix,0,a.X,0,a.X,0,1),this._tiles[ee.key]=new Tt(ee,this.tileSize));for(let ee in this._tiles)Q[ee]||delete this._tiles[ee]}freeRtt(w){for(let B in this._tiles){let Q=this._tiles[B];(!w||Q.tileID.equals(w)||Q.tileID.isChildOf(w)||w.isChildOf(Q.tileID))&&(Q.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(w=>this.getTileByID(w))}getTileByID(w){return this._tiles[w]}getTerrainCoords(w){let B={};for(let Q of this._renderableTilesKeys){let ee=this._tiles[Q].tileID;if(ee.canonical.equals(w.canonical)){let le=w.clone();le.posMatrix=new Float64Array(16),a.aP(le.posMatrix,0,a.X,0,a.X,0,1),B[Q]=le}else if(ee.canonical.isChildOf(w.canonical)){let le=w.clone();le.posMatrix=new Float64Array(16);let Fe=ee.canonical.z-w.canonical.z,Ze=ee.canonical.x-(ee.canonical.x>>Fe<>Fe<>Fe;a.aP(le.posMatrix,0,Mt,0,Mt,0,1),a.J(le.posMatrix,le.posMatrix,[-Ze*Mt,-ut*Mt,0]),B[Q]=le}else if(w.canonical.isChildOf(ee.canonical)){let le=w.clone();le.posMatrix=new Float64Array(16);let Fe=w.canonical.z-ee.canonical.z,Ze=w.canonical.x-(w.canonical.x>>Fe<>Fe<>Fe;a.aP(le.posMatrix,0,a.X,0,a.X,0,1),a.J(le.posMatrix,le.posMatrix,[Ze*Mt,ut*Mt,0]),a.K(le.posMatrix,le.posMatrix,[1/2**Fe,1/2**Fe,0]),B[Q]=le}}return B}getSourceTile(w,B){let Q=this.sourceCache._source,ee=w.overscaledZ-this.deltaZoom;if(ee>Q.maxzoom&&(ee=Q.maxzoom),ee=Q.minzoom&&(!le||!le.dem);)le=this.sourceCache.getTileByID(w.scaledTo(ee--).key);return le}tilesAfterTime(w=Date.now()){return Object.values(this._tiles).filter(B=>B.timeAdded>=w)}}class Zo{constructor(w,B,Q){this.painter=w,this.sourceCache=new bo(B),this.options=Q,this.exaggeration=typeof Q.exaggeration=="number"?Q.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(w,B,Q,ee=a.X){var le;if(!(B>=0&&B=0&&Qw.canonical.z&&(w.canonical.z>=ee?le=w.canonical.z-ee:a.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));let Fe=w.canonical.x-(w.canonical.x>>le<>le<>8<<4|le>>8,B[Fe+3]=0;let Q=new a.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(B.buffer)),ee=new g(w,Q,w.gl.RGBA,{premultiply:!1});return ee.bind(w.gl.NEAREST,w.gl.CLAMP_TO_EDGE),this._coordsTexture=ee,ee}pointCoordinate(w){this.painter.maybeDrawDepthAndCoords(!0);let B=new Uint8Array(4),Q=this.painter.context,ee=Q.gl,le=Math.round(w.x*this.painter.pixelRatio/devicePixelRatio),Fe=Math.round(w.y*this.painter.pixelRatio/devicePixelRatio),Ze=Math.round(this.painter.height/devicePixelRatio);Q.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),ee.readPixels(le,Ze-Fe-1,1,1,ee.RGBA,ee.UNSIGNED_BYTE,B),Q.bindFramebuffer.set(null);let ut=B[0]+(B[2]>>4<<8),Mt=B[1]+((15&B[2])<<8),Jt=this.coordsIndex[255-B[3]],$t=Jt&&this.sourceCache.getTileByID(Jt);if(!$t)return null;let yr=this._coordsTextureSize,Cr=(1<<$t.tileID.canonical.z)*yr;return new a.Z(($t.tileID.canonical.x*yr+ut)/Cr+$t.tileID.wrap,($t.tileID.canonical.y*yr+Mt)/Cr,this.getElevation($t.tileID,ut,Mt,yr))}depthAtPoint(w){let B=new Uint8Array(4),Q=this.painter.context,ee=Q.gl;return Q.bindFramebuffer.set(this.getFramebuffer("depth").framebuffer),ee.readPixels(w.x,this.painter.height/devicePixelRatio-w.y-1,1,1,ee.RGBA,ee.UNSIGNED_BYTE,B),Q.bindFramebuffer.set(null),(B[0]/16777216+B[1]/65536+B[2]/256+B[3])/256}getTerrainMesh(){if(this._mesh)return this._mesh;let w=this.painter.context,B=new a.bd,Q=new a.aY,ee=this.meshSize,le=a.X/ee,Fe=ee*ee;for(let $t=0;$t<=ee;$t++)for(let yr=0;yr<=ee;yr++)B.emplaceBack(yr*le,$t*le,0);for(let $t=0;$tw.id!==B),this._recentlyUsed.push(w.id)}stampObject(w){w.stamp=++this._stamp}getOrCreateFreeObject(){for(let B of this._recentlyUsed)if(!this._objects[B].inUse)return this._objects[B];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");let w=this._createObject(this._objects.length);return this._objects.push(w),w}freeObject(w){w.inUse=!1}freeAllObjects(){for(let w of this._objects)this.freeObject(w)}isFull(){return!(this._objects.length!w.inUse)===!1}}let as={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class ws{constructor(w,B){this.painter=w,this.terrain=B,this.pool=new Ss(w.context,30,B.sourceCache.tileSize*B.qualityFactor)}destruct(){this.pool.destruct()}getTexture(w){return this.pool.getObjectForId(w.rtt[this._stacks.length-1].id).texture}prepareForRender(w,B){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=w._order.filter(Q=>!w._layers[Q].isHidden(B)),this._coordsDescendingInv={};for(let Q in w.sourceCaches){this._coordsDescendingInv[Q]={};let ee=w.sourceCaches[Q].getVisibleCoordinates();for(let le of ee){let Fe=this.terrain.sourceCache.getTerrainCoords(le);for(let Ze in Fe)this._coordsDescendingInv[Q][Ze]||(this._coordsDescendingInv[Q][Ze]=[]),this._coordsDescendingInv[Q][Ze].push(Fe[Ze])}}this._coordsDescendingInvStr={};for(let Q of w._order){let ee=w._layers[Q],le=ee.source;if(as[ee.type]&&!this._coordsDescendingInvStr[le]){this._coordsDescendingInvStr[le]={};for(let Fe in this._coordsDescendingInv[le])this._coordsDescendingInvStr[le][Fe]=this._coordsDescendingInv[le][Fe].map(Ze=>Ze.key).sort().join()}}for(let Q of this._renderableTiles)for(let ee in this._coordsDescendingInvStr){let le=this._coordsDescendingInvStr[ee][Q.tileID.key];le&&le!==Q.rttCoords[ee]&&(Q.rtt=[])}}renderLayer(w){if(w.isHidden(this.painter.transform.zoom))return!1;let B=w.type,Q=this.painter,ee=this._renderableLayerIds[this._renderableLayerIds.length-1]===w.id;if(as[B]&&(this._prevType&&as[this._prevType]||this._stacks.push([]),this._prevType=B,this._stacks[this._stacks.length-1].push(w.id),!ee))return!0;if(as[this._prevType]||as[B]&&ee){this._prevType=B;let le=this._stacks.length-1,Fe=this._stacks[le]||[];for(let Ze of this._renderableTiles){if(this.pool.isFull()&&(js(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(Ze),Ze.rtt[le]){let Mt=this.pool.getObjectForId(Ze.rtt[le].id);if(Mt.stamp===Ze.rtt[le].stamp){this.pool.useObject(Mt);continue}}let ut=this.pool.getOrCreateFreeObject();this.pool.useObject(ut),this.pool.stampObject(ut),Ze.rtt[le]={id:ut.id,stamp:ut.stamp},Q.context.bindFramebuffer.set(ut.fbo.framebuffer),Q.context.clear({color:a.aM.transparent,stencil:0}),Q.currentStencilSource=void 0;for(let Mt=0;Mt{ue.touchstart=ue.dragStart,ue.touchmoveWindow=ue.dragMove,ue.touchend=ue.dragEnd},va={showCompass:!0,showZoom:!0,visualizePitch:!1};class no{constructor(w,B,Q=!1){this.mousedown=Fe=>{this.startMouse(a.e({},Fe,{ctrlKey:!0,preventDefault:()=>Fe.preventDefault()}),c.mousePos(this.element,Fe)),c.addEventListener(window,"mousemove",this.mousemove),c.addEventListener(window,"mouseup",this.mouseup)},this.mousemove=Fe=>{this.moveMouse(Fe,c.mousePos(this.element,Fe))},this.mouseup=Fe=>{this.mouseRotate.dragEnd(Fe),this.mousePitch&&this.mousePitch.dragEnd(Fe),this.offTemp()},this.touchstart=Fe=>{Fe.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=c.touchPos(this.element,Fe.targetTouches)[0],this.startTouch(Fe,this._startPos),c.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.addEventListener(window,"touchend",this.touchend))},this.touchmove=Fe=>{Fe.targetTouches.length!==1?this.reset():(this._lastPos=c.touchPos(this.element,Fe.targetTouches)[0],this.moveTouch(Fe,this._lastPos))},this.touchend=Fe=>{Fe.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10;let ee=w.dragRotate._mouseRotate.getClickTolerance(),le=w.dragRotate._mousePitch.getClickTolerance();this.element=B,this.mouseRotate=Wl({clickTolerance:ee,enable:!0}),this.touchRotate=(({enable:Fe,clickTolerance:Ze,bearingDegreesPerPixelMoved:ut=.8})=>{let Mt=new cf;return new Wu({clickTolerance:Ze,move:(Jt,$t)=>({bearingDelta:($t.x-Jt.x)*ut}),moveStateManager:Mt,enable:Fe,assignEvents:Ls})})({clickTolerance:ee,enable:!0}),this.map=w,Q&&(this.mousePitch=ah({clickTolerance:le,enable:!0}),this.touchPitch=(({enable:Fe,clickTolerance:Ze,pitchDegreesPerPixelMoved:ut=-.5})=>{let Mt=new cf;return new Wu({clickTolerance:Ze,move:(Jt,$t)=>({pitchDelta:($t.y-Jt.y)*ut}),moveStateManager:Mt,enable:Fe,assignEvents:Ls})})({clickTolerance:le,enable:!0})),c.addEventListener(B,"mousedown",this.mousedown),c.addEventListener(B,"touchstart",this.touchstart,{passive:!1}),c.addEventListener(B,"touchcancel",this.reset)}startMouse(w,B){this.mouseRotate.dragStart(w,B),this.mousePitch&&this.mousePitch.dragStart(w,B),c.disableDrag()}startTouch(w,B){this.touchRotate.dragStart(w,B),this.touchPitch&&this.touchPitch.dragStart(w,B),c.disableDrag()}moveMouse(w,B){let Q=this.map,{bearingDelta:ee}=this.mouseRotate.dragMove(w,B)||{};if(ee&&Q.setBearing(Q.getBearing()+ee),this.mousePitch){let{pitchDelta:le}=this.mousePitch.dragMove(w,B)||{};le&&Q.setPitch(Q.getPitch()+le)}}moveTouch(w,B){let Q=this.map,{bearingDelta:ee}=this.touchRotate.dragMove(w,B)||{};if(ee&&Q.setBearing(Q.getBearing()+ee),this.touchPitch){let{pitchDelta:le}=this.touchPitch.dragMove(w,B)||{};le&&Q.setPitch(Q.getPitch()+le)}}off(){let w=this.element;c.removeEventListener(w,"mousedown",this.mousedown),c.removeEventListener(w,"touchstart",this.touchstart,{passive:!1}),c.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.removeEventListener(window,"touchend",this.touchend),c.removeEventListener(w,"touchcancel",this.reset),this.offTemp()}offTemp(){c.enableDrag(),c.removeEventListener(window,"mousemove",this.mousemove),c.removeEventListener(window,"mouseup",this.mouseup),c.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.removeEventListener(window,"touchend",this.touchend)}}let ys;function rs(ue,w,B){let Q=new a.N(ue.lng,ue.lat);if(ue=new a.N(ue.lng,ue.lat),w){let ee=new a.N(ue.lng-360,ue.lat),le=new a.N(ue.lng+360,ue.lat),Fe=B.locationPoint(ue).distSqr(w);B.locationPoint(ee).distSqr(w)180;){let ee=B.locationPoint(ue);if(ee.x>=0&&ee.y>=0&&ee.x<=B.width&&ee.y<=B.height)break;ue.lng>B.center.lng?ue.lng-=360:ue.lng+=360}return ue.lng!==Q.lng&&B.locationPoint(ue).y>B.height/2-B.getHorizon()?ue:Q}let Ql={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function Cu(ue,w,B){let Q=ue.classList;for(let ee in Ql)Q.remove(`maplibregl-${B}-anchor-${ee}`);Q.add(`maplibregl-${B}-anchor-${w}`)}class Yu extends a.E{constructor(w){if(super(),this._onKeyPress=B=>{let Q=B.code,ee=B.charCode||B.keyCode;Q!=="Space"&&Q!=="Enter"&&ee!==32&&ee!==13||this.togglePopup()},this._onMapClick=B=>{let Q=B.originalEvent.target,ee=this._element;this._popup&&(Q===ee||ee.contains(Q))&&this.togglePopup()},this._update=B=>{var Q;if(!this._map)return;let ee=this._map.loaded()&&!this._map.isMoving();((B==null?void 0:B.type)==="terrain"||(B==null?void 0:B.type)==="render"&&!ee)&&this._map.once("render",this._update),this._lngLat=this._map.transform.renderWorldCopies?rs(this._lngLat,this._flatPos,this._map.transform):(Q=this._lngLat)===null||Q===void 0?void 0:Q.wrap(),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationPoint(this._lngLat)._add(this._offset));let le="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?le=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(le=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let Fe="";this._pitchAlignment==="viewport"||this._pitchAlignment==="auto"?Fe="rotateX(0deg)":this._pitchAlignment==="map"&&(Fe=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||B&&B.type!=="moveend"||(this._pos=this._pos.round()),c.setTransform(this._element,`${Ql[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${Fe} ${le}`),u.frameAsync(new AbortController).then(()=>{this._updateOpacity(B&&B.type==="moveend")}).catch(()=>{})},this._onMove=B=>{if(!this._isDragging){let Q=this._clickTolerance||this._map._clickTolerance;this._isDragging=B.point.dist(this._pointerdownPos)>=Q}this._isDragging&&(this._pos=B.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new a.k("dragstart"))),this.fire(new a.k("drag")))},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new a.k("dragend")),this._state="inactive"},this._addDragHandler=B=>{this._element.contains(B.originalEvent.target)&&(B.preventDefault(),this._positionDelta=B.point.sub(this._pos).add(this._offset),this._pointerdownPos=B.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},this._anchor=w&&w.anchor||"center",this._color=w&&w.color||"#3FB1CE",this._scale=w&&w.scale||1,this._draggable=w&&w.draggable||!1,this._clickTolerance=w&&w.clickTolerance||0,this._subpixelPositioning=w&&w.subpixelPositioning||!1,this._isDragging=!1,this._state="inactive",this._rotation=w&&w.rotation||0,this._rotationAlignment=w&&w.rotationAlignment||"auto",this._pitchAlignment=w&&w.pitchAlignment&&w.pitchAlignment!=="auto"?w.pitchAlignment:this._rotationAlignment,this.setOpacity(),this.setOpacity(w==null?void 0:w.opacity,w==null?void 0:w.opacityWhenCovered),w&&w.element)this._element=w.element,this._offset=a.P.convert(w&&w.offset||[0,0]);else{this._defaultMarker=!0,this._element=c.create("div");let B=c.createNS("http://www.w3.org/2000/svg","svg"),Q=41,ee=27;B.setAttributeNS(null,"display","block"),B.setAttributeNS(null,"height",`${Q}px`),B.setAttributeNS(null,"width",`${ee}px`),B.setAttributeNS(null,"viewBox",`0 0 ${ee} ${Q}`);let le=c.createNS("http://www.w3.org/2000/svg","g");le.setAttributeNS(null,"stroke","none"),le.setAttributeNS(null,"stroke-width","1"),le.setAttributeNS(null,"fill","none"),le.setAttributeNS(null,"fill-rule","evenodd");let Fe=c.createNS("http://www.w3.org/2000/svg","g");Fe.setAttributeNS(null,"fill-rule","nonzero");let Ze=c.createNS("http://www.w3.org/2000/svg","g");Ze.setAttributeNS(null,"transform","translate(3.0, 29.0)"),Ze.setAttributeNS(null,"fill","#000000");let ut=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(let ze of ut){let Qe=c.createNS("http://www.w3.org/2000/svg","ellipse");Qe.setAttributeNS(null,"opacity","0.04"),Qe.setAttributeNS(null,"cx","10.5"),Qe.setAttributeNS(null,"cy","5.80029008"),Qe.setAttributeNS(null,"rx",ze.rx),Qe.setAttributeNS(null,"ry",ze.ry),Ze.appendChild(Qe)}let Mt=c.createNS("http://www.w3.org/2000/svg","g");Mt.setAttributeNS(null,"fill",this._color);let Jt=c.createNS("http://www.w3.org/2000/svg","path");Jt.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),Mt.appendChild(Jt);let $t=c.createNS("http://www.w3.org/2000/svg","g");$t.setAttributeNS(null,"opacity","0.25"),$t.setAttributeNS(null,"fill","#000000");let yr=c.createNS("http://www.w3.org/2000/svg","path");yr.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),$t.appendChild(yr);let Cr=c.createNS("http://www.w3.org/2000/svg","g");Cr.setAttributeNS(null,"transform","translate(6.0, 7.0)"),Cr.setAttributeNS(null,"fill","#FFFFFF");let ve=c.createNS("http://www.w3.org/2000/svg","g");ve.setAttributeNS(null,"transform","translate(8.0, 8.0)");let xe=c.createNS("http://www.w3.org/2000/svg","circle");xe.setAttributeNS(null,"fill","#000000"),xe.setAttributeNS(null,"opacity","0.25"),xe.setAttributeNS(null,"cx","5.5"),xe.setAttributeNS(null,"cy","5.5"),xe.setAttributeNS(null,"r","5.4999962");let Ie=c.createNS("http://www.w3.org/2000/svg","circle");Ie.setAttributeNS(null,"fill","#FFFFFF"),Ie.setAttributeNS(null,"cx","5.5"),Ie.setAttributeNS(null,"cy","5.5"),Ie.setAttributeNS(null,"r","5.4999962"),ve.appendChild(xe),ve.appendChild(Ie),Fe.appendChild(Ze),Fe.appendChild(Mt),Fe.appendChild($t),Fe.appendChild(Cr),Fe.appendChild(ve),B.appendChild(Fe),B.setAttributeNS(null,"height",Q*this._scale+"px"),B.setAttributeNS(null,"width",ee*this._scale+"px"),this._element.appendChild(B),this._offset=a.P.convert(w&&w.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",B=>{B.preventDefault()}),this._element.addEventListener("mousedown",B=>{B.preventDefault()}),Cu(this._element,this._anchor,"marker"),w&&w.className)for(let B of w.className.split(" "))this._element.classList.add(B);this._popup=null}addTo(w){return this.remove(),this._map=w,this._element.setAttribute("aria-label",w._getUIString("Marker.Title")),w.getCanvasContainer().appendChild(this._element),w.on("move",this._update),w.on("moveend",this._update),w.on("terrain",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("terrain",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),c.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(w){return this._lngLat=a.N.convert(w),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(w){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),w){if(!("offset"in w.options)){let ee=Math.abs(13.5)/Math.SQRT2;w.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[ee,-1*(38.1-13.5+ee)],"bottom-right":[-ee,-1*(38.1-13.5+ee)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=w,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}setSubpixelPositioning(w){return this._subpixelPositioning=w,this}getPopup(){return this._popup}togglePopup(){let w=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:w?(w.isOpen()?w.remove():(w.setLngLat(this._lngLat),w.addTo(this._map)),this):this}_updateOpacity(w=!1){var B,Q;if(!(!((B=this._map)===null||B===void 0)&&B.terrain))return void(this._element.style.opacity!==this._opacity&&(this._element.style.opacity=this._opacity));if(w)this._opacityTimeout=null;else{if(this._opacityTimeout)return;this._opacityTimeout=setTimeout(()=>{this._opacityTimeout=null},100)}let ee=this._map,le=ee.terrain.depthAtPoint(this._pos),Fe=ee.terrain.getElevationForLngLatZoom(this._lngLat,ee.transform.tileZoom);if(ee.transform.lngLatToCameraDepth(this._lngLat,Fe)-le<.006)return void(this._element.style.opacity=this._opacity);let Ze=-this._offset.y/ee.transform._pixelPerMeter,ut=Math.sin(ee.getPitch()*Math.PI/180)*Ze,Mt=ee.terrain.depthAtPoint(new a.P(this._pos.x,this._pos.y-this._offset.y)),Jt=ee.transform.lngLatToCameraDepth(this._lngLat,Fe+ut)-Mt>.006;!((Q=this._popup)===null||Q===void 0)&&Q.isOpen()&&Jt&&this._popup.remove(),this._element.style.opacity=Jt?this._opacityWhenCovered:this._opacity}getOffset(){return this._offset}setOffset(w){return this._offset=a.P.convert(w),this._update(),this}addClassName(w){this._element.classList.add(w)}removeClassName(w){this._element.classList.remove(w)}toggleClassName(w){return this._element.classList.toggle(w)}setDraggable(w){return this._draggable=!!w,this._map&&(w?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(w){return this._rotation=w||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(w){return this._rotationAlignment=w||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(w){return this._pitchAlignment=w&&w!=="auto"?w:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(w,B){return w===void 0&&B===void 0&&(this._opacity="1",this._opacityWhenCovered="0.2"),w!==void 0&&(this._opacity=w),B!==void 0&&(this._opacityWhenCovered=B),this._map&&this._updateOpacity(!0),this}}let Nc={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},pu=0,Uc=!1,xu={maxWidth:100,unit:"metric"};function Ac(ue,w,B){let Q=B&&B.maxWidth||100,ee=ue._container.clientHeight/2,le=ue.unproject([0,ee]),Fe=ue.unproject([Q,ee]),Ze=le.distanceTo(Fe);if(B&&B.unit==="imperial"){let ut=3.2808*Ze;ut>5280?Va(w,Q,ut/5280,ue._getUIString("ScaleControl.Miles")):Va(w,Q,ut,ue._getUIString("ScaleControl.Feet"))}else B&&B.unit==="nautical"?Va(w,Q,Ze/1852,ue._getUIString("ScaleControl.NauticalMiles")):Ze>=1e3?Va(w,Q,Ze/1e3,ue._getUIString("ScaleControl.Kilometers")):Va(w,Q,Ze,ue._getUIString("ScaleControl.Meters"))}function Va(ue,w,B,Q){let ee=function(le){let Fe=Math.pow(10,`${Math.floor(le)}`.length-1),Ze=le/Fe;return Ze=Ze>=10?10:Ze>=5?5:Ze>=3?3:Ze>=2?2:Ze>=1?1:function(ut){let Mt=Math.pow(10,Math.ceil(-Math.log(ut)/Math.LN10));return Math.round(ut*Mt)/Mt}(Ze),Fe*Ze}(B);ue.style.width=w*(ee/B)+"px",ue.innerHTML=`${ee} ${Q}`}let oo={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1},Vc=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function hc(ue){if(ue){if(typeof ue=="number"){let w=Math.round(Math.abs(ue)/Math.SQRT2);return{center:new a.P(0,0),top:new a.P(0,ue),"top-left":new a.P(w,w),"top-right":new a.P(-w,w),bottom:new a.P(0,-ue),"bottom-left":new a.P(w,-w),"bottom-right":new a.P(-w,-w),left:new a.P(ue,0),right:new a.P(-ue,0)}}if(ue instanceof a.P||Array.isArray(ue)){let w=a.P.convert(ue);return{center:w,top:w,"top-left":w,"top-right":w,bottom:w,"bottom-left":w,"bottom-right":w,left:w,right:w}}return{center:a.P.convert(ue.center||[0,0]),top:a.P.convert(ue.top||[0,0]),"top-left":a.P.convert(ue["top-left"]||[0,0]),"top-right":a.P.convert(ue["top-right"]||[0,0]),bottom:a.P.convert(ue.bottom||[0,0]),"bottom-left":a.P.convert(ue["bottom-left"]||[0,0]),"bottom-right":a.P.convert(ue["bottom-right"]||[0,0]),left:a.P.convert(ue.left||[0,0]),right:a.P.convert(ue.right||[0,0])}}return hc(new a.P(0,0))}let Ku=o;i.AJAXError=a.bh,i.Evented=a.E,i.LngLat=a.N,i.MercatorCoordinate=a.Z,i.Point=a.P,i.addProtocol=a.bi,i.config=a.a,i.removeProtocol=a.bj,i.AttributionControl=Ua,i.BoxZoomHandler=ku,i.CanvasSource=rr,i.CooperativeGesturesHandler=$i,i.DoubleClickZoomHandler=Mi,i.DragPanHandler=wn,i.DragRotateHandler=On,i.EdgeInsets=hu,i.FullscreenControl=class extends a.E{constructor(ue={}){super(),this._onFullscreenChange=()=>{var w;let B=window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement;for(;!((w=B==null?void 0:B.shadowRoot)===null||w===void 0)&&w.fullscreenElement;)B=B.shadowRoot.fullscreenElement;B===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,ue&&ue.container&&(ue.container instanceof HTMLElement?this._container=ue.container:a.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange")}onAdd(ue){return this._map=ue,this._container||(this._container=this._map.getContainer()),this._controlContainer=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){c.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let ue=this._fullscreenButton=c.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);c.create("span","maplibregl-ctrl-icon",ue).setAttribute("aria-hidden","true"),ue.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let ue=this._getTitle();this._fullscreenButton.setAttribute("aria-label",ue),this._fullscreenButton.title=ue}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new a.k("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new a.k("fullscreenend")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable())}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},i.GeoJSONSource=at,i.GeolocateControl=class extends a.E{constructor(ue){super(),this._onSuccess=w=>{if(this._map){if(this._isOutOfMapMaxBounds(w))return this._setErrorState(),this.fire(new a.k("outofmaxbounds",w)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=w,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(w),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(w),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new a.k("geolocate",w)),this._finish()}},this._updateCamera=w=>{let B=new a.N(w.coords.longitude,w.coords.latitude),Q=w.coords.accuracy,ee=this._map.getBearing(),le=a.e({bearing:ee},this.options.fitBoundsOptions),Fe=ce.fromLngLat(B,Q);this._map.fitBounds(Fe,le,{geolocateSource:!0})},this._updateMarker=w=>{if(w){let B=new a.N(w.coords.longitude,w.coords.latitude);this._accuracyCircleMarker.setLngLat(B).addTo(this._map),this._userLocationDotMarker.setLngLat(B).addTo(this._map),this._accuracy=w.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},this._onError=w=>{if(this._map){if(this.options.trackUserLocation)if(w.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;let B=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(w.code===3&&Uc)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new a.k("error",w)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",w=>w.preventDefault()),this._geolocateButton=c.create("button","maplibregl-ctrl-geolocate",this._container),c.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0)},this._finishSetupUI=w=>{if(this._map){if(w===!1){a.w("Geolocation support is not available so the GeolocateControl will be disabled.");let B=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B)}else{let B=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=c.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new Yu({element:this._dotElement}),this._circleElement=c.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Yu({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",()=>this.trigger()),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",B=>{B.geolocateSource||this._watchState!=="ACTIVE_LOCK"||B.originalEvent&&B.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new a.k("trackuserlocationend")),this.fire(new a.k("userlocationlostfocus")))})}},this.options=a.e({},Nc,ue)}onAdd(ue){return this._map=ue,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return a._(this,arguments,void 0,function*(w=!1){if(ys!==void 0&&!w)return ys;if(window.navigator.permissions===void 0)return ys=!!window.navigator.geolocation,ys;try{ys=(yield window.navigator.permissions.query({name:"geolocation"})).state!=="denied"}catch(B){ys=!!window.navigator.geolocation}return ys})}().then(w=>this._finishSetupUI(w)),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),c.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,pu=0,Uc=!1}_isOutOfMapMaxBounds(ue){let w=this._map.getMaxBounds(),B=ue.coords;return w&&(B.longitudew.getEast()||B.latitudew.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){let ue=this._map.getBounds(),w=ue.getSouthEast(),B=ue.getNorthEast(),Q=w.distanceTo(B),ee=Math.ceil(this._accuracy/(Q/this._map._container.clientHeight)*2);this._circleElement.style.width=`${ee}px`,this._circleElement.style.height=`${ee}px`}trigger(){if(!this._setup)return a.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new a.k("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":pu--,Uc=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new a.k("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new a.k("trackuserlocationstart")),this.fire(new a.k("userlocationfocus"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let ue;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),pu++,pu>1?(ue={maximumAge:6e5,timeout:0},Uc=!0):(ue=this.options.positionOptions,Uc=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,ue)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},i.Hash=Mh,i.ImageSource=ar,i.KeyboardHandler=Zt,i.LngLatBounds=ce,i.LogoControl=Zn,i.Map=class extends Ra{constructor(ue){a.bf.mark(a.bg.create);let w=Object.assign(Object.assign({},Ws),ue);if(w.minZoom!=null&&w.maxZoom!=null&&w.minZoom>w.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(w.minPitch!=null&&w.maxPitch!=null&&w.minPitch>w.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(w.minPitch!=null&&w.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(w.maxPitch!=null&&w.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new nl(w.minZoom,w.maxZoom,w.minPitch,w.maxPitch,w.renderWorldCopies),{bearingSnap:w.bearingSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new Dn,this._controls=[],this._mapId=a.a4(),this._contextLost=B=>{B.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.fire(new a.k("webglcontextlost",{originalEvent:B}))},this._contextRestored=B=>{this._setupPainter(),this.resize(),this._update(),this.fire(new a.k("webglcontextrestored",{originalEvent:B}))},this._onMapScroll=B=>{if(B.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=w.interactive,this._maxTileCacheSize=w.maxTileCacheSize,this._maxTileCacheZoomLevels=w.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=w.failIfMajorPerformanceCaveat===!0,this._preserveDrawingBuffer=w.preserveDrawingBuffer===!0,this._antialias=w.antialias===!0,this._trackResize=w.trackResize===!0,this._bearingSnap=w.bearingSnap,this._refreshExpiredTiles=w.refreshExpiredTiles===!0,this._fadeDuration=w.fadeDuration,this._crossSourceCollisions=w.crossSourceCollisions===!0,this._collectResourceTiming=w.collectResourceTiming===!0,this._locale=Object.assign(Object.assign({},Ho),w.locale),this._clickTolerance=w.clickTolerance,this._overridePixelRatio=w.pixelRatio,this._maxCanvasSize=w.maxCanvasSize,this.transformCameraUpdate=w.transformCameraUpdate,this.cancelPendingTileRequestsWhileZooming=w.cancelPendingTileRequestsWhileZooming===!0,this._imageQueueHandle=p.addThrottleControl(()=>this.isMoving()),this._requestManager=new k(w.transformRequest),typeof w.container=="string"){if(this._container=document.getElementById(w.container),!this._container)throw new Error(`Container '${w.container}' not found.`)}else{if(!(w.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=w.container}if(w.maxBounds&&this.setMaxBounds(w.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",()=>this._update(!1)).on("moveend",()=>this._update(!1)).on("zoom",()=>this._update(!0)).on("terrain",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}).once("idle",()=>{this._idleTriggered=!0}),typeof window!="undefined"){addEventListener("online",this._onWindowOnline,!1);let B=!1,Q=nh(ee=>{this._trackResize&&!this._removed&&(this.resize(ee),this.redraw())},50);this._resizeObserver=new ResizeObserver(ee=>{B?Q(ee):B=!0}),this._resizeObserver.observe(this._container)}this.handlers=new Ca(this,w),this._hash=w.hash&&new Mh(typeof w.hash=="string"&&w.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:w.center,zoom:w.zoom,bearing:w.bearing,pitch:w.pitch}),w.bounds&&(this.resize(),this.fitBounds(w.bounds,a.e({},w.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=w.localIdeographFontFamily,this._validateStyle=w.validateStyle,w.style&&this.setStyle(w.style,{localIdeographFontFamily:w.localIdeographFontFamily}),w.attributionControl&&this.addControl(new Ua(typeof w.attributionControl=="boolean"?void 0:w.attributionControl)),w.maplibreLogo&&this.addControl(new Zn,w.logoPosition),this.on("style.load",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on("data",B=>{this._update(B.dataType==="style"),this.fire(new a.k(`${B.dataType}data`,B))}),this.on("dataloading",B=>{this.fire(new a.k(`${B.dataType}dataloading`,B))}),this.on("dataabort",B=>{this.fire(new a.k("sourcedataabort",B))})}_getMapId(){return this._mapId}addControl(ue,w){if(w===void 0&&(w=ue.getDefaultPosition?ue.getDefaultPosition():"top-right"),!ue||!ue.onAdd)return this.fire(new a.j(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));let B=ue.onAdd(this);this._controls.push(ue);let Q=this._controlPositions[w];return w.indexOf("bottom")!==-1?Q.insertBefore(B,Q.firstChild):Q.appendChild(B),this}removeControl(ue){if(!ue||!ue.onRemove)return this.fire(new a.j(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));let w=this._controls.indexOf(ue);return w>-1&&this._controls.splice(w,1),ue.onRemove(this),this}hasControl(ue){return this._controls.indexOf(ue)>-1}calculateCameraOptionsFromTo(ue,w,B,Q){return Q==null&&this.terrain&&(Q=this.terrain.getElevationForLngLatZoom(B,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(ue,w,B,Q)}resize(ue){var w;let B=this._containerDimensions(),Q=B[0],ee=B[1],le=this._getClampedPixelRatio(Q,ee);if(this._resizeCanvas(Q,ee,le),this.painter.resize(Q,ee,le),this.painter.overLimit()){let Ze=this.painter.context.gl;this._maxCanvasSize=[Ze.drawingBufferWidth,Ze.drawingBufferHeight];let ut=this._getClampedPixelRatio(Q,ee);this._resizeCanvas(Q,ee,ut),this.painter.resize(Q,ee,ut)}this.transform.resize(Q,ee),(w=this._requestedCameraState)===null||w===void 0||w.resize(Q,ee);let Fe=!this._moving;return Fe&&(this.stop(),this.fire(new a.k("movestart",ue)).fire(new a.k("move",ue))),this.fire(new a.k("resize",ue)),Fe&&this.fire(new a.k("moveend",ue)),this}_getClampedPixelRatio(ue,w){let{0:B,1:Q}=this._maxCanvasSize,ee=this.getPixelRatio(),le=ue*ee,Fe=w*ee;return Math.min(le>B?B/le:1,Fe>Q?Q/Fe:1)*ee}getPixelRatio(){var ue;return(ue=this._overridePixelRatio)!==null&&ue!==void 0?ue:devicePixelRatio}setPixelRatio(ue){this._overridePixelRatio=ue,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(ue){return this.transform.setMaxBounds(ce.convert(ue)),this._update()}setMinZoom(ue){if((ue=ue==null?-2:ue)>=-2&&ue<=this.transform.maxZoom)return this.transform.minZoom=ue,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=ue,this._update(),this.getZoom()>ue&&this.setZoom(ue),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(ue){if((ue=ue==null?0:ue)<0)throw new Error("minPitch must be greater than or equal to 0");if(ue>=0&&ue<=this.transform.maxPitch)return this.transform.minPitch=ue,this._update(),this.getPitch()85)throw new Error("maxPitch must be less than or equal to 85");if(ue>=this.transform.minPitch)return this.transform.maxPitch=ue,this._update(),this.getPitch()>ue&&this.setPitch(ue),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(ue){return this.transform.renderWorldCopies=ue,this._update()}project(ue){return this.transform.locationPoint(a.N.convert(ue),this.style&&this.terrain)}unproject(ue){return this.transform.pointLocation(a.P.convert(ue),this.terrain)}isMoving(){var ue;return this._moving||((ue=this.handlers)===null||ue===void 0?void 0:ue.isMoving())}isZooming(){var ue;return this._zooming||((ue=this.handlers)===null||ue===void 0?void 0:ue.isZooming())}isRotating(){var ue;return this._rotating||((ue=this.handlers)===null||ue===void 0?void 0:ue.isRotating())}_createDelegatedListener(ue,w,B){if(ue==="mouseenter"||ue==="mouseover"){let Q=!1;return{layers:w,listener:B,delegates:{mousemove:le=>{let Fe=w.filter(ut=>this.getLayer(ut)),Ze=Fe.length!==0?this.queryRenderedFeatures(le.point,{layers:Fe}):[];Ze.length?Q||(Q=!0,B.call(this,new jl(ue,this,le.originalEvent,{features:Ze}))):Q=!1},mouseout:()=>{Q=!1}}}}if(ue==="mouseleave"||ue==="mouseout"){let Q=!1;return{layers:w,listener:B,delegates:{mousemove:Fe=>{let Ze=w.filter(ut=>this.getLayer(ut));(Ze.length!==0?this.queryRenderedFeatures(Fe.point,{layers:Ze}):[]).length?Q=!0:Q&&(Q=!1,B.call(this,new jl(ue,this,Fe.originalEvent)))},mouseout:Fe=>{Q&&(Q=!1,B.call(this,new jl(ue,this,Fe.originalEvent)))}}}}{let Q=ee=>{let le=w.filter(Ze=>this.getLayer(Ze)),Fe=le.length!==0?this.queryRenderedFeatures(ee.point,{layers:le}):[];Fe.length&&(ee.features=Fe,B.call(this,ee),delete ee.features)};return{layers:w,listener:B,delegates:{[ue]:Q}}}}_saveDelegatedListener(ue,w){this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[ue]=this._delegatedListeners[ue]||[],this._delegatedListeners[ue].push(w)}_removeDelegatedListener(ue,w,B){if(!this._delegatedListeners||!this._delegatedListeners[ue])return;let Q=this._delegatedListeners[ue];for(let ee=0;eew.includes(Fe))){for(let Fe in le.delegates)this.off(Fe,le.delegates[Fe]);return void Q.splice(ee,1)}}}on(ue,w,B){if(B===void 0)return super.on(ue,w);let Q=this._createDelegatedListener(ue,typeof w=="string"?[w]:w,B);this._saveDelegatedListener(ue,Q);for(let ee in Q.delegates)this.on(ee,Q.delegates[ee]);return this}once(ue,w,B){if(B===void 0)return super.once(ue,w);let Q=typeof w=="string"?[w]:w,ee=this._createDelegatedListener(ue,Q,B);for(let le in ee.delegates){let Fe=ee.delegates[le];ee.delegates[le]=(...Ze)=>{this._removeDelegatedListener(ue,Q,B),Fe(...Ze)}}this._saveDelegatedListener(ue,ee);for(let le in ee.delegates)this.once(le,ee.delegates[le]);return this}off(ue,w,B){return B===void 0?super.off(ue,w):(this._removeDelegatedListener(ue,typeof w=="string"?[w]:w,B),this)}queryRenderedFeatures(ue,w){if(!this.style)return[];let B,Q=ue instanceof a.P||Array.isArray(ue),ee=Q?ue:[[0,0],[this.transform.width,this.transform.height]];if(w=w||(Q?{}:ue)||{},ee instanceof a.P||typeof ee[0]=="number")B=[a.P.convert(ee)];else{let le=a.P.convert(ee[0]),Fe=a.P.convert(ee[1]);B=[le,new a.P(Fe.x,le.y),Fe,new a.P(le.x,Fe.y),le]}return this.style.queryRenderedFeatures(B,w,this.transform)}querySourceFeatures(ue,w){return this.style.querySourceFeatures(ue,w)}setStyle(ue,w){return(w=a.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},w)).diff!==!1&&w.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&ue?(this._diffStyle(ue,w),this):(this._localIdeographFontFamily=w.localIdeographFontFamily,this._updateStyle(ue,w))}setTransformRequest(ue){return this._requestManager.setTransformRequest(ue),this}_getUIString(ue){let w=this._locale[ue];if(w==null)throw new Error(`Missing UI string '${ue}'`);return w}_updateStyle(ue,w){if(w.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",()=>this._updateStyle(ue,w));let B=this.style&&w.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!ue)),ue?(this.style=new Ha(this,w||{}),this.style.setEventedParent(this,{style:this.style}),typeof ue=="string"?this.style.loadURL(ue,w,B):this.style.loadJSON(ue,w,B),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new Ha(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(ue,w){if(typeof ue=="string"){let B=this._requestManager.transformRequest(ue,"Style");a.h(B,new AbortController).then(Q=>{this._updateDiff(Q.data,w)}).catch(Q=>{Q&&this.fire(new a.j(Q))})}else typeof ue=="object"&&this._updateDiff(ue,w)}_updateDiff(ue,w){try{this.style.setState(ue,w)&&this._update(!0)}catch(B){a.w(`Unable to perform style diff: ${B.message||B.error||B}. Rebuilding the style from scratch.`),this._updateStyle(ue,w)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():a.w("There is no style added to the map.")}addSource(ue,w){return this._lazyInitEmptyStyle(),this.style.addSource(ue,w),this._update(!0)}isSourceLoaded(ue){let w=this.style&&this.style.sourceCaches[ue];if(w!==void 0)return w.loaded();this.fire(new a.j(new Error(`There is no source with ID '${ue}'`)))}setTerrain(ue){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),ue){let w=this.style.sourceCaches[ue.source];if(!w)throw new Error(`cannot load terrain, because there exists no source with ID: ${ue.source}`);this.terrain===null&&w.reload();for(let B in this.style._layers){let Q=this.style._layers[B];Q.type==="hillshade"&&Q.source===ue.source&&a.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new Zo(this.painter,w,ue),this.painter.renderToTexture=new ws(this.painter,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=B=>{B.dataType==="style"?this.terrain.sourceCache.freeRtt():B.dataType==="source"&&B.tile&&(B.sourceId!==ue.source||this._elevationFreeze||(this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(B.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.minElevationForCurrentTile=0,this.transform.elevation=0;return this.fire(new a.k("terrain",{terrain:ue})),this}getTerrain(){var ue,w;return(w=(ue=this.terrain)===null||ue===void 0?void 0:ue.options)!==null&&w!==void 0?w:null}areTilesLoaded(){let ue=this.style&&this.style.sourceCaches;for(let w in ue){let B=ue[w]._tiles;for(let Q in B){let ee=B[Q];if(ee.state!=="loaded"&&ee.state!=="errored")return!1}}return!0}removeSource(ue){return this.style.removeSource(ue),this._update(!0)}getSource(ue){return this.style.getSource(ue)}addImage(ue,w,B={}){let{pixelRatio:Q=1,sdf:ee=!1,stretchX:le,stretchY:Fe,content:Ze,textFitWidth:ut,textFitHeight:Mt}=B;if(this._lazyInitEmptyStyle(),!(w instanceof HTMLImageElement||a.b(w))){if(w.width===void 0||w.height===void 0)return this.fire(new a.j(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));{let{width:Jt,height:$t,data:yr}=w,Cr=w;return this.style.addImage(ue,{data:new a.R({width:Jt,height:$t},new Uint8Array(yr)),pixelRatio:Q,stretchX:le,stretchY:Fe,content:Ze,textFitWidth:ut,textFitHeight:Mt,sdf:ee,version:0,userImage:Cr}),Cr.onAdd&&Cr.onAdd(this,ue),this}}{let{width:Jt,height:$t,data:yr}=u.getImageData(w);this.style.addImage(ue,{data:new a.R({width:Jt,height:$t},yr),pixelRatio:Q,stretchX:le,stretchY:Fe,content:Ze,textFitWidth:ut,textFitHeight:Mt,sdf:ee,version:0})}}updateImage(ue,w){let B=this.style.getImage(ue);if(!B)return this.fire(new a.j(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));let Q=w instanceof HTMLImageElement||a.b(w)?u.getImageData(w):w,{width:ee,height:le,data:Fe}=Q;if(ee===void 0||le===void 0)return this.fire(new a.j(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(ee!==B.data.width||le!==B.data.height)return this.fire(new a.j(new Error("The width and height of the updated image must be that same as the previous version of the image")));let Ze=!(w instanceof HTMLImageElement||a.b(w));return B.data.replace(Fe,Ze),this.style.updateImage(ue,B),this}getImage(ue){return this.style.getImage(ue)}hasImage(ue){return ue?!!this.style.getImage(ue):(this.fire(new a.j(new Error("Missing required image id"))),!1)}removeImage(ue){this.style.removeImage(ue)}loadImage(ue){return p.getImage(this._requestManager.transformRequest(ue,"Image"),new AbortController)}listImages(){return this.style.listImages()}addLayer(ue,w){return this._lazyInitEmptyStyle(),this.style.addLayer(ue,w),this._update(!0)}moveLayer(ue,w){return this.style.moveLayer(ue,w),this._update(!0)}removeLayer(ue){return this.style.removeLayer(ue),this._update(!0)}getLayer(ue){return this.style.getLayer(ue)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(ue,w,B){return this.style.setLayerZoomRange(ue,w,B),this._update(!0)}setFilter(ue,w,B={}){return this.style.setFilter(ue,w,B),this._update(!0)}getFilter(ue){return this.style.getFilter(ue)}setPaintProperty(ue,w,B,Q={}){return this.style.setPaintProperty(ue,w,B,Q),this._update(!0)}getPaintProperty(ue,w){return this.style.getPaintProperty(ue,w)}setLayoutProperty(ue,w,B,Q={}){return this.style.setLayoutProperty(ue,w,B,Q),this._update(!0)}getLayoutProperty(ue,w){return this.style.getLayoutProperty(ue,w)}setGlyphs(ue,w={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(ue,w),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(ue,w,B={}){return this._lazyInitEmptyStyle(),this.style.addSprite(ue,w,B,Q=>{Q||this._update(!0)}),this}removeSprite(ue){return this._lazyInitEmptyStyle(),this.style.removeSprite(ue),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(ue,w={}){return this._lazyInitEmptyStyle(),this.style.setSprite(ue,w,B=>{B||this._update(!0)}),this}setLight(ue,w={}){return this._lazyInitEmptyStyle(),this.style.setLight(ue,w),this._update(!0)}getLight(){return this.style.getLight()}setSky(ue){return this._lazyInitEmptyStyle(),this.style.setSky(ue),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(ue,w){return this.style.setFeatureState(ue,w),this._update()}removeFeatureState(ue,w){return this.style.removeFeatureState(ue,w),this._update()}getFeatureState(ue){return this.style.getFeatureState(ue)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let ue=0,w=0;return this._container&&(ue=this._container.clientWidth||400,w=this._container.clientHeight||300),[ue,w]}_setupContainer(){let ue=this._container;ue.classList.add("maplibregl-map");let w=this._canvasContainer=c.create("div","maplibregl-canvas-container",ue);this._interactive&&w.classList.add("maplibregl-interactive"),this._canvas=c.create("canvas","maplibregl-canvas",w),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex",this._interactive?"0":"-1"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region");let B=this._containerDimensions(),Q=this._getClampedPixelRatio(B[0],B[1]);this._resizeCanvas(B[0],B[1],Q);let ee=this._controlContainer=c.create("div","maplibregl-control-container",ue),le=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(Fe=>{le[Fe]=c.create("div",`maplibregl-ctrl-${Fe} `,ee)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(ue,w,B){this._canvas.width=Math.floor(B*ue),this._canvas.height=Math.floor(B*w),this._canvas.style.width=`${ue}px`,this._canvas.style.height=`${w}px`}_setupPainter(){let ue={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1},w=null;this._canvas.addEventListener("webglcontextcreationerror",Q=>{w={requestedAttributes:ue},Q&&(w.statusMessage=Q.statusMessage,w.type=Q.type)},{once:!0});let B=this._canvas.getContext("webgl2",ue)||this._canvas.getContext("webgl",ue);if(!B){let Q="Failed to initialize WebGL";throw w?(w.message=Q,new Error(JSON.stringify(w))):new Error(Q)}this.painter=new Dc(B,this.transform),f.testSupport(B)}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(ue){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||ue,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(ue){return this._update(),this._renderTaskQueue.add(ue)}_cancelRenderFrame(ue){this._renderTaskQueue.remove(ue)}_render(ue){let w=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(ue),this._removed)return;let B=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let ee=this.transform.zoom,le=u.now();this.style.zoomHistory.update(ee,le);let Fe=new a.z(ee,{now:le,fadeDuration:w,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),Ze=Fe.crossFadingFactor();Ze===1&&Ze===this._crossFadingFactor||(B=!0,this._crossFadingFactor=Ze),this.style.update(Fe)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.minElevationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,w,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:w,showPadding:this.showPadding}),this.fire(new a.k("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,a.bf.mark(a.bg.load),this.fire(new a.k("load"))),this.style&&(this.style.hasTransitions()||B)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let Q=this._sourcesDirty||this._styleDirty||this._placementDirty;return Q||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new a.k("idle")),!this._loaded||this._fullyLoaded||Q||(this._fullyLoaded=!0,a.bf.mark(a.bg.fullLoad)),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var ue;this._hash&&this._hash.remove();for(let B of this._controls)B.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window!="undefined"&&removeEventListener("online",this._onWindowOnline,!1),p.removeThrottleControl(this._imageQueueHandle),(ue=this._resizeObserver)===null||ue===void 0||ue.disconnect();let w=this.painter.context.gl.getExtension("WEBGL_lose_context");w!=null&&w.loseContext&&w.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),c.remove(this._canvasContainer),c.remove(this._controlContainer),this._container.classList.remove("maplibregl-map"),a.bf.clearMetrics(),this._removed=!0,this.fire(new a.k("remove"))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,u.frameAsync(this._frameRequest).then(ue=>{a.bf.frame(ue),this._frameRequest=null,this._render(ue)}).catch(()=>{}))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(ue){this._showTileBoundaries!==ue&&(this._showTileBoundaries=ue,this._update())}get showPadding(){return!!this._showPadding}set showPadding(ue){this._showPadding!==ue&&(this._showPadding=ue,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(ue){this._showCollisionBoxes!==ue&&(this._showCollisionBoxes=ue,ue?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(ue){this._showOverdrawInspector!==ue&&(this._showOverdrawInspector=ue,this._update())}get repaint(){return!!this._repaint}set repaint(ue){this._repaint!==ue&&(this._repaint=ue,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(ue){this._vertices=ue,this._update()}get version(){return ml}getCameraTargetElevation(){return this.transform.elevation}},i.MapMouseEvent=jl,i.MapTouchEvent=uf,i.MapWheelEvent=Xh,i.Marker=Yu,i.NavigationControl=class{constructor(ue){this._updateZoomButtons=()=>{let w=this._map.getZoom(),B=w===this._map.getMaxZoom(),Q=w===this._map.getMinZoom();this._zoomInButton.disabled=B,this._zoomOutButton.disabled=Q,this._zoomInButton.setAttribute("aria-disabled",B.toString()),this._zoomOutButton.setAttribute("aria-disabled",Q.toString())},this._rotateCompassArrow=()=>{let w=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=w},this._setButtonTitle=(w,B)=>{let Q=this._map._getUIString(`NavigationControl.${B}`);w.title=Q,w.setAttribute("aria-label",Q)},this.options=a.e({},va,ue),this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",w=>w.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",w=>this._map.zoomIn({},{originalEvent:w})),c.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",w=>this._map.zoomOut({},{originalEvent:w})),c.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",w=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:w}):this._map.resetNorth({},{originalEvent:w})}),this._compassIcon=c.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(ue){return this._map=ue,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new no(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){c.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(ue,w){let B=c.create("button",ue,this._container);return B.type="button",B.addEventListener("click",w),B}},i.Popup=class extends a.E{constructor(ue){super(),this.remove=()=>(this._content&&c.remove(this._content),this._container&&(c.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),this._map._canvasContainer.classList.remove("maplibregl-track-pointer"),delete this._map,this.fire(new a.k("close"))),this),this._onMouseUp=w=>{this._update(w.point)},this._onMouseMove=w=>{this._update(w.point)},this._onDrag=w=>{this._update(w.point)},this._update=w=>{var B;if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=c.create("div","maplibregl-popup",this._map.getContainer()),this._tip=c.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(let Ze of this.options.className.split(" "))this._container.classList.add(Ze);this._closeButton&&this._closeButton.setAttribute("aria-label",this._map._getUIString("Popup.Close")),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=this._map.transform.renderWorldCopies&&!this._trackPointer?rs(this._lngLat,this._flatPos,this._map.transform):(B=this._lngLat)===null||B===void 0?void 0:B.wrap(),this._trackPointer&&!w)return;let Q=this._flatPos=this._pos=this._trackPointer&&w?w:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&w?w:this._map.transform.locationPoint(this._lngLat));let ee=this.options.anchor,le=hc(this.options.offset);if(!ee){let Ze=this._container.offsetWidth,ut=this._container.offsetHeight,Mt;Mt=Q.y+le.bottom.ythis._map.transform.height-ut?["bottom"]:[],Q.xthis._map.transform.width-Ze/2&&Mt.push("right"),ee=Mt.length===0?"bottom":Mt.join("-")}let Fe=Q.add(le[ee]);this.options.subpixelPositioning||(Fe=Fe.round()),c.setTransform(this._container,`${Ql[ee]} translate(${Fe.x}px,${Fe.y}px)`),Cu(this._container,ee,"popup")},this._onClose=()=>{this.remove()},this.options=a.e(Object.create(oo),ue)}addTo(ue){return this._map&&this.remove(),this._map=ue,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new a.k("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(ue){return this._lngLat=a.N.convert(ue),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(ue){return this.setDOMContent(document.createTextNode(ue))}setHTML(ue){let w=document.createDocumentFragment(),B=document.createElement("body"),Q;for(B.innerHTML=ue;Q=B.firstChild,Q;)w.appendChild(Q);return this.setDOMContent(w)}getMaxWidth(){var ue;return(ue=this._container)===null||ue===void 0?void 0:ue.style.maxWidth}setMaxWidth(ue){return this.options.maxWidth=ue,this._update(),this}setDOMContent(ue){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=c.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(ue),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(ue){return this._container&&this._container.classList.add(ue),this}removeClassName(ue){return this._container&&this._container.classList.remove(ue),this}setOffset(ue){return this.options.offset=ue,this._update(),this}toggleClassName(ue){if(this._container)return this._container.classList.toggle(ue)}setSubpixelPositioning(ue){this.options.subpixelPositioning=ue}_createCloseButton(){this.options.closeButton&&(this._closeButton=c.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let ue=this._container.querySelector(Vc);ue&&ue.focus()}},i.RasterDEMTileSource=Ht,i.RasterTileSource=mt,i.ScaleControl=class{constructor(ue){this._onMove=()=>{Ac(this._map,this._container,this.options)},this.setUnit=w=>{this.options.unit=w,Ac(this._map,this._container,this.options)},this.options=Object.assign(Object.assign({},xu),ue)}getDefaultPosition(){return"bottom-left"}onAdd(ue){return this._map=ue,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-scale",ue.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){c.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}},i.ScrollZoomHandler=Kr,i.Style=Ha,i.TerrainControl=class{constructor(ue){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.Disable")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.Enable"))},this.options=ue}onAdd(ue){return this._map=ue,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=c.create("button","maplibregl-ctrl-terrain",this._container),c.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){c.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},i.TwoFingersTouchPitchHandler=Bc,i.TwoFingersTouchRotateHandler=ff,i.TwoFingersTouchZoomHandler=vu,i.TwoFingersTouchZoomRotateHandler=Yi,i.VectorTileSource=lt,i.VideoSource=Vt,i.addSourceType=(ue,w)=>a._(void 0,void 0,void 0,function*(){if(je(ue))throw new Error(`A source type called "${ue}" already exists.`);((B,Q)=>{tt[B]=Q})(ue,w)}),i.clearPrewarmedResources=function(){let ue=ge;ue&&(ue.isPreloaded()&&ue.numActive()===1?(ue.release(_e),ge=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},i.getMaxParallelImageRequests=function(){return a.a.MAX_PARALLEL_IMAGE_REQUESTS},i.getRTLTextPluginStatus=function(){return St().getRTLTextPluginStatus()},i.getVersion=function(){return Ku},i.getWorkerCount=function(){return Ee.workerCount},i.getWorkerUrl=function(){return a.a.WORKER_URL},i.importScriptInWorkers=function(ue){return be().broadcast("IS",ue)},i.prewarm=function(){Se().acquire(_e)},i.setMaxParallelImageRequests=function(ue){a.a.MAX_PARALLEL_IMAGE_REQUESTS=ue},i.setRTLTextPlugin=function(ue,w){return St().setRTLTextPlugin(ue,w)},i.setWorkerCount=function(ue){Ee.workerCount=ue},i.setWorkerUrl=function(ue){a.a.WORKER_URL=ue}});var n=e;return n})});var wje=ye((Kbr,bje)=>{"use strict";var gw=Pr(),jXt=Zl().sanitizeHTML,WXt=RJ(),yje=Ix();function _je(e,t){this.subplot=e,this.uid=e.uid+"-"+t,this.index=t,this.idSource="source-"+this.uid,this.idLayer=yje.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var sg=_je.prototype;sg.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=g7(t)};sg.needsNewImage=function(e){var t=this.subplot.map;return t.getSource(this.idSource)&&this.sourceType==="image"&&e.sourcetype==="image"&&(this.source!==e.source||JSON.stringify(this.coordinates)!==JSON.stringify(e.coordinates))};sg.needsNewSource=function(e){return this.sourceType!==e.sourcetype||JSON.stringify(this.source)!==JSON.stringify(e.source)||this.layerType!==e.type};sg.needsNewLayer=function(e){return this.layerType!==e.type||this.below!==this.subplot.belowLookup["layout-"+this.index]};sg.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]};sg.updateImage=function(e){var t=this.subplot.map;t.getSource(this.idSource).updateImage({url:e.source,coordinates:e.coordinates});var r=this.findFollowingMapLayerId(this.lookupBelow());r!==null&&this.subplot.map.moveLayer(this.idLayer,r)};sg.updateSource=function(e){var t=this.subplot.map;if(t.getSource(this.idSource)&&t.removeSource(this.idSource),this.sourceType=e.sourcetype,this.source=e.source,!!g7(e)){var r=XXt(e);t.addSource(this.idSource,r)}};sg.findFollowingMapLayerId=function(e){if(e==="traces")for(var t=this.subplot.getMapLayers(),r=0;r0){for(var r=0;r0}function xje(e){var t={},r={};switch(e.type){case"circle":gw.extendFlat(r,{"circle-radius":e.circle.radius,"circle-color":e.color,"circle-opacity":e.opacity});break;case"line":gw.extendFlat(r,{"line-width":e.line.width,"line-color":e.color,"line-opacity":e.opacity,"line-dasharray":e.line.dash});break;case"fill":gw.extendFlat(r,{"fill-color":e.color,"fill-outline-color":e.fill.outlinecolor,"fill-opacity":e.opacity});break;case"symbol":var n=e.symbol,i=WXt(n.textposition,n.iconsize);gw.extendFlat(t,{"icon-image":n.icon+"-15","icon-size":n.iconsize/10,"text-field":n.text,"text-size":n.textfont.size,"text-anchor":i.anchor,"text-offset":i.offset,"symbol-placement":n.placement}),gw.extendFlat(r,{"icon-color":e.color,"text-color":n.textfont.color,"text-opacity":e.opacity});break;case"raster":gw.extendFlat(r,{"raster-fade-duration":0,"raster-opacity":e.opacity});break}return{layout:t,paint:r}}function XXt(e){var t=e.sourcetype,r=e.source,n={type:t},i;return t==="geojson"?i="data":t==="vector"?i=typeof r=="string"?"url":"tiles":t==="raster"?(i="tiles",n.tileSize=256):t==="image"&&(i="url",n.coordinates=e.coordinates),n[i]=r,e.sourceattribution&&(n.attribution=jXt(e.sourceattribution)),n}bje.exports=function(t,r,n){var i=new _je(t,r);return i.update(n),i}});var Lje=ye((Jbr,Cje)=>{"use strict";var BJ=mje(),NJ=Pr(),Sje=dx(),Tje=Oa(),ZXt=ho(),YXt=yv(),m7=ef(),Mje=Cg(),KXt=Mje.drawMode,JXt=Mje.selectMode,$Xt=qf().prepSelect,QXt=qf().clearOutline,eZt=qf().clearSelectionsCache,tZt=qf().selectOnClick,mw=Ix(),rZt=wje();function Eje(e,t){this.id=t,this.gd=e;var r=e._fullLayout,n=e._context;this.container=r._glcontainer.node(),this.isStatic=n.staticPlot,this.uid=r._uid+"-"+this.id,this.div=null,this.xaxis=null,this.yaxis=null,this.createFramework(r),this.map=null,this.styleObj=null,this.traceHash={},this.layerList=[],this.belowLookup={},this.dragging=!1,this.wheeling=!1}var Hh=Eje.prototype;Hh.plot=function(e,t,r){var n=this,i;n.map?i=new Promise(function(a,o){n.updateMap(e,t,a,o)}):i=new Promise(function(a,o){n.createMap(e,t,a,o)}),r.push(i)};Hh.createMap=function(e,t,r,n){var i=this,a=t[i.id],o=i.styleObj=kje(a.style),s=a.bounds,l=s?[[s.west,s.south],[s.east,s.north]]:null,u=i.map=new BJ.Map({container:i.div,style:o.style,center:UJ(a.center),zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,maxBounds:l,interactive:!i.isStatic,preserveDrawingBuffer:i.isStatic,doubleClickZoom:!1,boxZoom:!1,attributionControl:!1}).addControl(new BJ.AttributionControl({compact:!0})),c={};u.on("styleimagemissing",function(h){var d=h.id;if(!c[d]&&d.includes("-15")){c[d]=!0;var v=new Image(15,15);v.onload=function(){u.addImage(d,v)},v.crossOrigin="Anonymous",v.src="https://unpkg.com/maki@2.1.0/icons/"+d+".svg"}}),u.setTransformRequest(function(h){return h=h.replace("https://fonts.openmaptiles.org/Open Sans Extrabold","https://fonts.openmaptiles.org/Open Sans Extra Bold"),h=h.replace("https://tiles.basemaps.cartocdn.com/fonts/Open Sans Extrabold","https://fonts.openmaptiles.org/Open Sans Extra Bold"),h=h.replace("https://fonts.openmaptiles.org/Open Sans Regular,Arial Unicode MS Regular","https://fonts.openmaptiles.org/Klokantech Noto Sans Regular"),{url:h}}),u._canvas.style.left="0px",u._canvas.style.top="0px",i.rejectOnError(n),i.isStatic||i.initFx(e,t);var f=[];f.push(new Promise(function(h){u.once("load",h)})),f=f.concat(Sje.fetchTraceGeoData(e)),Promise.all(f).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Hh.updateMap=function(e,t,r,n){var i=this,a=i.map,o=t[this.id];i.rejectOnError(n);var s=[],l=kje(o.style);JSON.stringify(i.styleObj)!==JSON.stringify(l)&&(i.styleObj=l,a.setStyle(l.style),i.traceHash={},s.push(new Promise(function(u){a.once("styledata",u)}))),s=s.concat(Sje.fetchTraceGeoData(e)),Promise.all(s).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Hh.fillBelowLookup=function(e,t){var r=t[this.id],n=r.layers,i,a,o=this.belowLookup={},s=!1;for(i=0;i1)for(i=0;i-1&&tZt(l.originalEvent,n,[r.xaxis],[r.yaxis],r.id,s),u.indexOf("event")>-1&&m7.click(n,l.originalEvent)}}};Hh.updateFx=function(e){var t=this,r=t.map,n=t.gd;if(t.isStatic)return;function i(l){var u=t.map.unproject(l);return[u.lng,u.lat]}var a=e.dragmode,o;o=function(l,u){if(u.isRect){var c=l.range={};c[t.id]=[i([u.xmin,u.ymin]),i([u.xmax,u.ymax])]}else{var f=l.lassoPoints={};f[t.id]=u.map(i)}};var s=t.dragOptions;t.dragOptions=NJ.extendDeep(s||{},{dragmode:e.dragmode,element:t.div,gd:n,plotinfo:{id:t.id,domain:e[t.id].domain,xaxis:t.xaxis,yaxis:t.yaxis,fillRangeItems:o},xaxes:[t.xaxis],yaxes:[t.yaxis],subplot:t.id}),r.off("click",t.onClickInPanHandler),JXt(a)||KXt(a)?(r.dragPan.disable(),r.on("zoomstart",t.clearOutline),t.dragOptions.prepFn=function(l,u,c){$Xt(l,u,c,t.dragOptions,a)},YXt.init(t.dragOptions)):(r.dragPan.enable(),r.off("zoomstart",t.clearOutline),t.div.onmousedown=null,t.div.ontouchstart=null,t.div.removeEventListener("touchstart",t.div._ontouchstart),t.onClickInPanHandler=t.onClickInPanFn(t.dragOptions),r.on("click",t.onClickInPanHandler))};Hh.updateFramework=function(e){var t=e[this.id].domain,r=e._size,n=this.div.style;n.width=r.w*(t.x[1]-t.x[0])+"px",n.height=r.h*(t.y[1]-t.y[0])+"px",n.left=r.l+t.x[0]*r.w+"px",n.top=r.t+(1-t.y[1])*r.h+"px",this.xaxis._offset=r.l+t.x[0]*r.w,this.xaxis._length=r.w*(t.x[1]-t.x[0]),this.yaxis._offset=r.t+(1-t.y[1])*r.h,this.yaxis._length=r.h*(t.y[1]-t.y[0])};Hh.updateLayers=function(e){var t=e[this.id],r=t.layers,n=this.layerList,i;if(r.length!==n.length){for(i=0;i{"use strict";var VJ=Pr(),nZt=q_(),aZt=Kd(),Pje=eC();Ije.exports=function(t,r,n){nZt(t,r,n,{type:"map",attributes:Pje,handleDefaults:oZt,partition:"y"})};function oZt(e,t,r){r("style"),r("center.lon"),r("center.lat"),r("zoom"),r("bearing"),r("pitch");var n=r("bounds.west"),i=r("bounds.east"),a=r("bounds.south"),o=r("bounds.north");(n===void 0||i===void 0||a===void 0||o===void 0)&&delete t.bounds,aZt(e,t,{name:"layers",handleItemDefaults:sZt}),t._input=e}function sZt(e,t){function r(l,u){return VJ.coerce(e,t,Pje.layers,l,u)}var n=r("visible");if(n){var i=r("sourcetype"),a=i==="raster"||i==="image";r("source"),r("sourceattribution"),i==="vector"&&r("sourcelayer"),i==="image"&&r("coordinates");var o;a&&(o="raster");var s=r("type",o);a&&s!=="raster"&&(s=t.type="raster",VJ.log("Source types *raster* and *image* must drawn *raster* layer type.")),r("below"),r("color"),r("opacity"),r("minzoom"),r("maxzoom"),s==="circle"&&r("circle.radius"),s==="line"&&(r("line.width"),r("line.dash")),s==="fill"&&r("fill.outlinecolor"),s==="symbol"&&(r("symbol.icon"),r("symbol.iconsize"),r("symbol.text"),VJ.coerceFont(r,"symbol.textfont",void 0,{noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}),r("symbol.textposition"),r("symbol.placement"))}}});var _7=ye(u0=>{"use strict";var y7=Pr(),Dje=y7.strTranslate,lZt=y7.strScale,uZt=Id().getSubplotCalcData,cZt=Wp(),fZt=qa(),Fje=So(),hZt=Zl(),dZt=Lje(),Rx="map";u0.name=Rx;u0.attr="subplot";u0.idRoot=Rx;u0.idRegex=u0.attrRegex=y7.counterRegex(Rx);u0.attributes={subplot:{valType:"subplotid",dflt:"map",editType:"calc"}};u0.layoutAttributes=eC();u0.supplyLayoutDefaults=Rje();u0.plot=function(t){for(var r=t._fullLayout,n=t.calcdata,i=r._subplots[Rx],a=0;am/2){var b=f.split("|").join("
");d.text(b).attr("data-unformatted",b).call(hZt.convertToTspans,e),v=Fje.bBox(d.node())}d.attr("transform",Dje(-3,-v.height+8)),h.insert("rect",".static-attribution").attr({x:-v.width-6,y:-v.height-3,width:v.width+6,height:v.height+3,fill:"rgba(255, 255, 255, 0.75)"});var p=1;v.width+6>m&&(p=m/(v.width+6));var k=[n.l+n.w*o.x[1],n.t+n.h*(1-o.y[0])];h.attr("transform",Dje(k[0],k[1])+lZt(p))}};u0.updateFx=function(e){for(var t=e._fullLayout,r=t._subplots[Rx],n=0;n{"use strict";zje.exports={attributes:c7(),supplyDefaults:YHe(),colorbar:Qd(),formatLabels:IJ(),calc:bF(),plot:uje(),hoverPoints:p7().hoverPoints,eventData:dje(),selectPoints:pje(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.update(t)}},moduleType:"trace",name:"scattermap",basePlotModule:_7(),categories:["map","gl","symbols","showLegend","scatter-like"],meta:{}}});var Bje=ye((t2r,Oje)=>{"use strict";Oje.exports=qje()});var GJ=ye((r2r,Nje)=>{"use strict";var x1=o5(),vZt=Tu(),{hovertemplateAttrs:pZt,templatefallbackAttrs:gZt}=Ll(),mZt=Gl(),Dx=Ao().extendFlat;Nje.exports=Dx({locations:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},geojson:{valType:"any",editType:"calc"},featureidkey:Dx({},x1.featureidkey,{}),below:{valType:"string",editType:"plot"},text:x1.text,hovertext:x1.hovertext,marker:{line:{color:Dx({},x1.marker.line.color,{editType:"plot"}),width:Dx({},x1.marker.line.width,{editType:"plot"}),editType:"calc"},opacity:Dx({},x1.marker.opacity,{editType:"plot"}),editType:"calc"},selected:{marker:{opacity:Dx({},x1.selected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},unselected:{marker:{opacity:Dx({},x1.unselected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},hoverinfo:x1.hoverinfo,hovertemplate:pZt({},{keys:["properties"]}),hovertemplatefallback:gZt(),showlegend:Dx({},mZt.showlegend,{dflt:!1})},vZt("",{cLetter:"z",editTypeOverride:"calc"}))});var Vje=ye((i2r,Uje)=>{"use strict";var nC=Pr(),yZt=td(),_Zt=GJ();Uje.exports=function(t,r,n,i){function a(c,f){return nC.coerce(t,r,_Zt,c,f)}var o=a("locations"),s=a("z"),l=a("geojson");if(!nC.isArrayOrTypedArray(o)||!o.length||!nC.isArrayOrTypedArray(s)||!s.length||!(typeof l=="string"&&l!==""||nC.isPlainObject(l))){r.visible=!1;return}a("featureidkey"),r._length=Math.min(o.length,s.length),a("below"),a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback");var u=a("marker.line.width");u&&a("marker.line.color"),a("marker.opacity"),yZt(t,r,i,a,{prefix:"",cLetter:"z"}),nC.coerceSelectionMarkerOpacity(r,a)}});var HJ=ye((n2r,jje)=>{"use strict";var xZt=Eo(),b1=Pr(),bZt=tc(),wZt=So(),TZt=fx().makeBlank,Gje=dx();function AZt(e){var t=e[0].trace,r=t.visible===!0&&t._length!==0,n={layout:{visibility:"none"},paint:{}},i={layout:{visibility:"none"},paint:{}},a=t._opts={fill:n,line:i,geojson:TZt()};if(!r)return a;var o=Gje.extractTraceFeature(e);if(!o)return a;var s=bZt.makeColorScaleFuncFromTrace(t),l=t.marker,u=l.line||{},c;b1.isArrayOrTypedArray(l.opacity)&&(c=function(k){var M=k.mo;return xZt(M)?+b1.constrain(M,0,1):0});var f;b1.isArrayOrTypedArray(u.color)&&(f=function(k){return k.mlc});var h;b1.isArrayOrTypedArray(u.width)&&(h=function(k){return k.mlw});for(var d=0;d{"use strict";var Xje=HJ().convert,SZt=HJ().convertOnSelect,Wje=Ix().traceLayerPrefix;function Zje(e,t){this.type="choroplethmap",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["fill",Wje+t+"-fill"],["line",Wje+t+"-line"]],this.below=null}var F5=Zje.prototype;F5.update=function(e){this._update(Xje(e)),e[0].trace._glTrace=this};F5.updateOnSelect=function(e){this._update(SZt(e))};F5._update=function(e){var t=this.subplot,r=this.layerList,n=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(e.geojson),n!==this.below&&(this._removeLayers(),this._addLayers(e,n),this.below=n);for(var i=0;i=0;r--)e.removeLayer(t[r][1])};F5.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};Yje.exports=function(t,r){var n=r[0].trace,i=new Zje(t,n.uid),a=i.sourceId,o=Xje(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),r[0].trace._glTrace=i,i}});var $je=ye((o2r,Jje)=>{"use strict";Jje.exports={attributes:GJ(),supplyDefaults:Vje(),colorbar:D_(),calc:VF(),plot:Kje(),hoverPoints:HF(),eventData:jF(),selectPoints:WF(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.updateOnSelect(t)}},getBelow:function(e,t){for(var r=t.getMapLayers(),n=r.length-2;n>=0;n--){var i=r[n].id;if(typeof i=="string"&&i.indexOf("water")===0){for(var a=n+1;a{"use strict";Qje.exports=$je()});var WJ=ye((l2r,rWe)=>{"use strict";var MZt=Tu(),{hovertemplateAttrs:EZt,templatefallbackAttrs:kZt}=Ll(),tWe=Gl(),x7=c7(),jJ=Ao().extendFlat;rWe.exports=jJ({lon:x7.lon,lat:x7.lat,z:{valType:"data_array",editType:"calc"},radius:{valType:"number",editType:"plot",arrayOk:!0,min:1,dflt:30},below:{valType:"string",editType:"plot"},text:x7.text,hovertext:x7.hovertext,hoverinfo:jJ({},tWe.hoverinfo,{flags:["lon","lat","z","text","name"]}),hovertemplate:EZt(),hovertemplatefallback:kZt(),showlegend:jJ({},tWe.showlegend,{dflt:!1})},MZt("",{cLetter:"z",editTypeOverride:"calc"}))});var nWe=ye((u2r,iWe)=>{"use strict";var CZt=Pr(),LZt=td(),PZt=WJ();iWe.exports=function(t,r,n,i){function a(u,c){return CZt.coerce(t,r,PZt,u,c)}var o=a("lon")||[],s=a("lat")||[],l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("z"),a("radius"),a("below"),a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),LZt(t,r,i,a,{prefix:"",cLetter:"z"})}});var sWe=ye((c2r,oWe)=>{"use strict";var XJ=Eo(),IZt=Pr().isArrayOrTypedArray,ZJ=fs().BADNUM,RZt=gv(),aWe=Pr()._;oWe.exports=function(t,r){for(var n=r._length,i=new Array(n),a=r.z,o=IZt(a)&&a.length,s=0;s{"use strict";var DZt=Eo(),YJ=Pr(),lWe=ka(),uWe=tc(),cWe=fs().BADNUM,FZt=fx().makeBlank;fWe.exports=function(t){var r=t[0].trace,n=r.visible===!0&&r._length!==0,i={layout:{visibility:"none"},paint:{}},a=r._opts={heatmap:i,geojson:FZt()};if(!n)return a;var o=[],s,l=r.z,u=r.radius,c=YJ.isArrayOrTypedArray(l)&&l.length,f=YJ.isArrayOrTypedArray(u);for(s=0;s0?+u[s]:0),o.push({type:"Feature",geometry:{type:"Point",coordinates:d},properties:v})}}var b=uWe.extractOpts(r),p=b.reversescale?uWe.flipScale(b.colorscale):b.colorscale,k=p[0][1],M=lWe.opacity(k)<1?k:lWe.addOpacity(k,0),T=["interpolate",["linear"],["heatmap-density"],0,M];for(s=1;s{"use strict";var dWe=hWe(),zZt=Ix().traceLayerPrefix;function vWe(e,t){this.type="densitymap",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["heatmap",zZt+t+"-heatmap"]],this.below=null}var b7=vWe.prototype;b7.update=function(e){var t=this.subplot,r=this.layerList,n=dWe(e),i=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(n.geojson),i!==this.below&&(this._removeLayers(),this._addLayers(n,i),this.below=i);for(var a=0;a=0;r--)e.removeLayer(t[r][1])};b7.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};pWe.exports=function(t,r){var n=r[0].trace,i=new vWe(t,n.uid),a=i.sourceId,o=dWe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),i}});var yWe=ye((d2r,mWe)=>{"use strict";var qZt=ho(),OZt=p7().hoverPoints,BZt=p7().getExtraText;mWe.exports=function(t,r,n){var i=OZt(t,r,n);if(i){var a=i[0],o=a.cd,s=o[0].trace,l=o[a.index];if(delete a.color,"z"in l){var u=a.subplot.mockAxis;a.z=l.z,a.zLabel=qZt.tickText(u,u.c2l(l.z),"hover").text}return a.extraText=BZt(s,l,o[0].t.labels),[a]}}});var xWe=ye((v2r,_We)=>{"use strict";_We.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t.z=r.z,t}});var wWe=ye((p2r,bWe)=>{"use strict";bWe.exports={attributes:WJ(),supplyDefaults:nWe(),colorbar:D_(),formatLabels:IJ(),calc:sWe(),plot:gWe(),hoverPoints:yWe(),eventData:xWe(),getBelow:function(e,t){for(var r=t.getMapLayers(),n=0;n{"use strict";TWe.exports=wWe()});var JJ=ye((y2r,CWe)=>{"use strict";var NZt=ec(),UZt=Gl(),SWe=Ih(),KJ=g3(),VZt=Cc().attributes,{hovertemplateAttrs:MWe,templatefallbackAttrs:EWe}=Ll(),GZt=Tu(),HZt=vl().templatedArray,jZt=vf().descriptionOnlyNumbers,kWe=Ao().extendFlat,WZt=mc().overrideAll,m2r=CWe.exports=WZt({hoverinfo:kWe({},UZt.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:KJ.hoverlabel,domain:VZt({name:"sankey",trace:!0}),orientation:{valType:"enumerated",values:["v","h"],dflt:"h"},valueformat:{valType:"string",dflt:".3s",description:jZt("value")},valuesuffix:{valType:"string",dflt:""},arrangement:{valType:"enumerated",values:["snap","perpendicular","freeform","fixed"],dflt:"snap"},textfont:NZt({autoShadowDflt:!0}),customdata:void 0,node:{label:{valType:"data_array",dflt:[]},groups:{valType:"info_array",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:"number",editType:"calc"}},x:{valType:"data_array",dflt:[]},y:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:SWe.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:.5,arrayOk:!0}},pad:{valType:"number",arrayOk:!1,min:0,dflt:20},thickness:{valType:"number",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:KJ.hoverlabel,hovertemplate:MWe({},{keys:["value","label"]}),hovertemplatefallback:EWe(),align:{valType:"enumerated",values:["justify","left","right","center"],dflt:"justify"}},link:{arrowlen:{valType:"number",min:0,dflt:0},label:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},hovercolor:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:SWe.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:0,arrayOk:!0}},source:{valType:"data_array",dflt:[]},target:{valType:"data_array",dflt:[]},value:{valType:"data_array",dflt:[]},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:KJ.hoverlabel,hovertemplate:MWe({},{keys:["value","label"]}),hovertemplatefallback:EWe(),colorscales:HZt("concentrationscales",{editType:"calc",label:{valType:"string",editType:"calc",dflt:""},cmax:{valType:"number",editType:"calc",dflt:1},cmin:{valType:"number",editType:"calc",dflt:0},colorscale:kWe(GZt().colorscale,{dflt:[[0,"white"],[1,"black"]]})})}},"calc","nested")});var DWe=ye((_2r,RWe)=>{"use strict";var z5=Pr(),w7=JJ(),XZt=ka(),LWe=fd(),ZZt=Cc().defaults,PWe=xM(),IWe=vl(),YZt=Kd();RWe.exports=function(t,r,n,i){function a(T,L){return z5.coerce(t,r,w7,T,L)}var o=z5.extendDeep(i.hoverlabel,t.hoverlabel),s=t.node,l=IWe.newContainer(r,"node");function u(T,L){return z5.coerce(s,l,w7.node,T,L)}u("label"),u("groups"),u("x"),u("y"),u("pad"),u("thickness"),u("line.color"),u("line.width"),u("hoverinfo",t.hoverinfo),PWe(s,l,u,o),u("hovertemplate"),u("align");var c=i.colorway,f=function(T){return c[T%c.length]};u("color",l.label.map(function(T,L){return XZt.addOpacity(f(L),.8)})),u("customdata");var h=t.link||{},d=IWe.newContainer(r,"link");function v(T,L){return z5.coerce(h,d,w7.link,T,L)}v("label"),v("arrowlen"),v("source"),v("target"),v("value"),v("line.color"),v("line.width"),v("hoverinfo",t.hoverinfo),PWe(h,d,v,o),v("hovertemplate");var m=LWe(i.paper_bgcolor).getLuminance()<.333,b=m?"rgba(255, 255, 255, 0.6)":"rgba(0, 0, 0, 0.2)",p=v("color",b);function k(T){var L=LWe(T);if(!L.isValid())return T;var x=L.getAlpha();return x<=.8?L.setAlpha(x+.2):L=m?L.brighten():L.darken(),L.toRgbString()}v("hovercolor",Array.isArray(p)?p.map(k):k(p)),v("customdata"),YZt(h,d,{name:"colorscales",handleItemDefaults:KZt}),ZZt(r,i,a),a("orientation"),a("valueformat"),a("valuesuffix");var M;l.x.length&&l.y.length&&(M="freeform"),a("arrangement",M),z5.coerceFont(a,"textfont",i.font,{autoShadowDflt:!0}),r._length=null};function KZt(e,t){function r(n,i){return z5.coerce(e,t,w7.link.colorscales,n,i)}r("label"),r("cmin"),r("cmax"),r("colorscale")}});var $J=ye((x2r,FWe)=>{"use strict";FWe.exports=JZt;function JZt(e){for(var t=e.length,r=new Array(t),n=new Array(t),i=new Array(t),a=new Array(t),o=new Array(t),s=new Array(t),l=0;l0;){b=k[k.length-1];var M=e[b];if(a[b]=0&&s[b].push(o[L])}a[b]=T}else{if(n[b]===r[b]){for(var x=[],C=[],S=0,T=p.length-1;T>=0;--T){var g=p[T];if(i[g]=!1,x.push(g),C.push(s[g]),S+=s[g].length,o[g]=c.length,g===b){p.length=T;break}}c.push(x);for(var P=new Array(S),T=0;T{"use strict";var $Zt=$J(),q5=Pr(),QZt=ny().wrap,aC=q5.isArrayOrTypedArray,zWe=q5.isIndex,qWe=tc();function eYt(e){var t=e.node,r=e.link,n=[],i=aC(r.color),a=aC(r.hovercolor),o=aC(r.customdata),s={},l={},u=r.colorscales.length,c;for(c=0;cv&&(v=r.source[c]),r.target[c]>v&&(v=r.target[c]);var m=v+1;e.node._count=m;var b,p=e.node.groups,k={};for(c=0;c0&&zWe(S,m)&&zWe(g,m)&&!(k.hasOwnProperty(S)&&k.hasOwnProperty(g)&&k[S]===k[g])){k.hasOwnProperty(g)&&(g=k[g]),k.hasOwnProperty(S)&&(S=k[S]),S=+S,g=+g,s[S]=s[g]=!0;var P="";r.label&&r.label[c]&&(P=r.label[c]);var E=null;P&&l.hasOwnProperty(P)&&(E=l[P]),n.push({pointNumber:c,label:P,color:i?r.color[c]:r.color,hovercolor:a?r.hovercolor[c]:r.hovercolor,customdata:o?r.customdata[c]:r.customdata,concentrationscale:E,source:S,target:g,value:+C}),x.source.push(S),x.target.push(g)}}var z=m+p.length,q=aC(t.color),V=aC(t.customdata),G=[];for(c=0;cm-1,childrenNodes:[],pointNumber:c,label:Z,color:q?t.color[c]:t.color,customdata:V?t.customdata[c]:t.customdata})}var j=!1;return tYt(z,x.source,x.target)&&(j=!0),{circular:j,links:n,nodes:G,groups:p,groupLookup:k}}function tYt(e,t,r){for(var n=q5.init2dArray(e,0),i=0;i1})}OWe.exports=function(t,r){var n=eYt(r);return QZt({circular:n.circular,_nodes:n.nodes,_links:n.links,_groups:n.groups,_groupLookup:n.groupLookup})}});var UWe=ye((T7,NWe)=>{(function(e,t){typeof T7=="object"&&typeof NWe!="undefined"?t(T7):(e=e||self,t(e.d3=e.d3||{}))})(T7,function(e){"use strict";function t(C){var S=+this._x.call(null,C),g=+this._y.call(null,C);return r(this.cover(S,g),S,g,C)}function r(C,S,g,P){if(isNaN(S)||isNaN(g))return C;var E,z=C._root,q={data:P},V=C._x0,G=C._y0,Z=C._x1,j=C._y1,N,H,ie,ae,_e,Ee,Ce,ge;if(!z)return C._root=q,C;for(;z.length;)if((_e=S>=(N=(V+Z)/2))?V=N:Z=N,(Ee=g>=(H=(G+j)/2))?G=H:j=H,E=z,!(z=z[Ce=Ee<<1|_e]))return E[Ce]=q,C;if(ie=+C._x.call(null,z.data),ae=+C._y.call(null,z.data),S===ie&&g===ae)return q.next=z,E?E[Ce]=q:C._root=q,C;do E=E?E[Ce]=new Array(4):C._root=new Array(4),(_e=S>=(N=(V+Z)/2))?V=N:Z=N,(Ee=g>=(H=(G+j)/2))?G=H:j=H;while((Ce=Ee<<1|_e)===(ge=(ae>=H)<<1|ie>=N));return E[ge]=z,E[Ce]=q,C}function n(C){var S,g,P=C.length,E,z,q=new Array(P),V=new Array(P),G=1/0,Z=1/0,j=-1/0,N=-1/0;for(g=0;gj&&(j=E),zN&&(N=z));if(G>j||Z>N)return this;for(this.cover(G,Z).cover(j,N),g=0;gC||C>=E||P>S||S>=z;)switch(Z=(Sj||(V=ae.y0)>N||(G=ae.x1)=Ce)<<1|C>=Ee)&&(ae=H[H.length-1],H[H.length-1]=H[H.length-1-_e],H[H.length-1-_e]=ae)}else{var ge=C-+this._x.call(null,ie.data),re=S-+this._y.call(null,ie.data),Se=ge*ge+re*re;if(Se=(H=(q+G)/2))?q=H:G=H,(_e=N>=(ie=(V+Z)/2))?V=ie:Z=ie,S=g,!(g=g[Ee=_e<<1|ae]))return this;if(!g.length)break;(S[Ee+1&3]||S[Ee+2&3]||S[Ee+3&3])&&(P=S,Ce=Ee)}for(;g.data!==C;)if(E=g,!(g=g.next))return this;return(z=g.next)&&delete g.next,E?(z?E.next=z:delete E.next,this):S?(z?S[Ee]=z:delete S[Ee],(g=S[0]||S[1]||S[2]||S[3])&&g===(S[3]||S[2]||S[1]||S[0])&&!g.length&&(P?P[Ce]=g:this._root=g),this):(this._root=z,this)}function c(C){for(var S=0,g=C.length;S{(function(e,t){t(typeof A7=="object"&&typeof VWe!="undefined"?A7:e.d3=e.d3||{})})(A7,function(e){"use strict";var t="$";function r(){}r.prototype=n.prototype={constructor:r,has:function(m){return t+m in this},get:function(m){return this[t+m]},set:function(m,b){return this[t+m]=b,this},remove:function(m){var b=t+m;return b in this&&delete this[b]},clear:function(){for(var m in this)m[0]===t&&delete this[m]},keys:function(){var m=[];for(var b in this)b[0]===t&&m.push(b.slice(1));return m},values:function(){var m=[];for(var b in this)b[0]===t&&m.push(this[b]);return m},entries:function(){var m=[];for(var b in this)b[0]===t&&m.push({key:b.slice(1),value:this[b]});return m},size:function(){var m=0;for(var b in this)b[0]===t&&++m;return m},empty:function(){for(var m in this)if(m[0]===t)return!1;return!0},each:function(m){for(var b in this)b[0]===t&&m(this[b],b.slice(1),this)}};function n(m,b){var p=new r;if(m instanceof r)m.each(function(x,C){p.set(C,x)});else if(Array.isArray(m)){var k=-1,M=m.length,T;if(b==null)for(;++k=m.length)return p!=null&&x.sort(p),k!=null?k(x):x;for(var P=-1,E=x.length,z=m[C++],q,V,G=n(),Z,j=S();++Pm.length)return x;var S,g=b[C-1];return k!=null&&C>=m.length?S=x.entries():(S=[],x.each(function(P,E){S.push({key:E,values:L(P,C)})})),g!=null?S.sort(function(P,E){return g(P.key,E.key)}):S}return M={object:function(x){return T(x,0,a,o)},map:function(x){return T(x,0,s,l)},entries:function(x){return L(T(x,0,s,l),0)},key:function(x){return m.push(x),M},sortKeys:function(x){return b[m.length-1]=x,M},sortValues:function(x){return p=x,M},rollup:function(x){return k=x,M}}}function a(){return{}}function o(m,b,p){m[b]=p}function s(){return n()}function l(m,b,p){m.set(b,p)}function u(){}var c=n.prototype;u.prototype=f.prototype={constructor:u,has:c.has,add:function(m){return m+="",this[t+m]=m,this},remove:c.remove,clear:c.clear,values:c.keys,size:c.size,empty:c.empty,each:c.each};function f(m,b){var p=new u;if(m instanceof u)m.each(function(T){p.add(T)});else if(m){var k=-1,M=m.length;if(b==null)for(;++k{(function(e,t){typeof M7=="object"&&typeof GWe!="undefined"?t(M7):(e=e||self,t(e.d3=e.d3||{}))})(M7,function(e){"use strict";var t={value:function(){}};function r(){for(var s=0,l=arguments.length,u={},c;s=0&&(c=u.slice(f+1),u=u.slice(0,f)),u&&!l.hasOwnProperty(u))throw new Error("unknown type: "+u);return{type:u,name:c}})}n.prototype=r.prototype={constructor:n,on:function(s,l){var u=this._,c=i(s+"",u),f,h=-1,d=c.length;if(arguments.length<2){for(;++h0)for(var u=new Array(f),c=0,f,h;c{(function(e,t){typeof E7=="object"&&typeof jWe!="undefined"?t(E7):(e=e||self,t(e.d3=e.d3||{}))})(E7,function(e){"use strict";var t=0,r=0,n=0,i=1e3,a,o,s=0,l=0,u=0,c=typeof performance=="object"&&performance.now?performance:Date,f=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(C){setTimeout(C,17)};function h(){return l||(f(d),l=c.now()+u)}function d(){l=0}function v(){this._call=this._time=this._next=null}v.prototype=m.prototype={constructor:v,restart:function(C,S,g){if(typeof C!="function")throw new TypeError("callback is not a function");g=(g==null?h():+g)+(S==null?0:+S),!this._next&&o!==this&&(o?o._next=this:a=this,o=this),this._call=C,this._time=g,T()},stop:function(){this._call&&(this._call=null,this._time=1/0,T())}};function m(C,S,g){var P=new v;return P.restart(C,S,g),P}function b(){h(),++t;for(var C=a,S;C;)(S=l-C._time)>=0&&C._call.call(null,S),C=C._next;--t}function p(){l=(s=c.now())+u,t=r=0;try{b()}finally{t=0,M(),l=0}}function k(){var C=c.now(),S=C-s;S>i&&(u-=S,s=C)}function M(){for(var C,S=a,g,P=1/0;S;)S._call?(P>S._time&&(P=S._time),C=S,S=S._next):(g=S._next,S._next=null,S=C?C._next=g:a=g);o=C,T(P)}function T(C){if(!t){r&&(r=clearTimeout(r));var S=C-l;S>24?(C<1/0&&(r=setTimeout(p,C-c.now()-u)),n&&(n=clearInterval(n))):(n||(s=c.now(),n=setInterval(k,i)),t=1,f(p))}}function L(C,S,g){var P=new v;return S=S==null?0:+S,P.restart(function(E){P.stop(),C(E+S)},S,g),P}function x(C,S,g){var P=new v,E=S;return S==null?(P.restart(C,S,g),P):(S=+S,g=g==null?h():+g,P.restart(function z(q){q+=E,P.restart(z,E+=S,g),C(q)},S,g),P)}e.interval=x,e.now=h,e.timeout=L,e.timer=m,e.timerFlush=b,Object.defineProperty(e,"__esModule",{value:!0})})});var ZWe=ye((k7,XWe)=>{(function(e,t){typeof k7=="object"&&typeof XWe!="undefined"?t(k7,UWe(),S7(),HWe(),WWe()):t(e.d3=e.d3||{},e.d3,e.d3,e.d3,e.d3)})(k7,function(e,t,r,n,i){"use strict";function a(C,S){var g;C==null&&(C=0),S==null&&(S=0);function P(){var E,z=g.length,q,V=0,G=0;for(E=0;EN.index){var Pe=H-Be.x-Be.vx,ce=ie-Be.y-Be.vy,He=Pe*Pe+ce*ce;HeH+me||keie+me||beG.r&&(G.r=G[Z].r)}function V(){if(S){var G,Z=S.length,j;for(g=new Array(Z),G=0;G1?(_e==null?V.remove(ae):V.set(ae,ie(_e)),S):V.get(ae)},find:function(ae,_e,Ee){var Ce=0,ge=C.length,re,Se,ke,be,Be;for(Ee==null?Ee=1/0:Ee*=Ee,Ce=0;Ce1?(Z.on(ae,_e),S):Z.on(ae)}}}function M(){var C,S,g,P=o(-30),E,z=1,q=1/0,V=.81;function G(H){var ie,ae=C.length,_e=t.quadtree(C,v,m).visitAfter(j);for(g=H,ie=0;ie=q)return;(H.data!==S||H.next)&&(Ee===0&&(Ee=s(),re+=Ee*Ee),Ce===0&&(Ce=s(),re+=Ce*Ce),re{(function(e,t){typeof C7=="object"&&typeof YWe!="undefined"?t(C7):(e=e||self,t(e.d3=e.d3||{}))})(C7,function(e){"use strict";var t=Math.PI,r=2*t,n=1e-6,i=r-n;function a(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function o(){return new a}a.prototype=o.prototype={constructor:a,moveTo:function(s,l){this._+="M"+(this._x0=this._x1=+s)+","+(this._y0=this._y1=+l)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(s,l){this._+="L"+(this._x1=+s)+","+(this._y1=+l)},quadraticCurveTo:function(s,l,u,c){this._+="Q"+ +s+","+ +l+","+(this._x1=+u)+","+(this._y1=+c)},bezierCurveTo:function(s,l,u,c,f,h){this._+="C"+ +s+","+ +l+","+ +u+","+ +c+","+(this._x1=+f)+","+(this._y1=+h)},arcTo:function(s,l,u,c,f){s=+s,l=+l,u=+u,c=+c,f=+f;var h=this._x1,d=this._y1,v=u-s,m=c-l,b=h-s,p=d-l,k=b*b+p*p;if(f<0)throw new Error("negative radius: "+f);if(this._x1===null)this._+="M"+(this._x1=s)+","+(this._y1=l);else if(k>n)if(!(Math.abs(p*v-m*b)>n)||!f)this._+="L"+(this._x1=s)+","+(this._y1=l);else{var M=u-h,T=c-d,L=v*v+m*m,x=M*M+T*T,C=Math.sqrt(L),S=Math.sqrt(k),g=f*Math.tan((t-Math.acos((L+k-x)/(2*C*S)))/2),P=g/S,E=g/C;Math.abs(P-1)>n&&(this._+="L"+(s+P*b)+","+(l+P*p)),this._+="A"+f+","+f+",0,0,"+ +(p*M>b*T)+","+(this._x1=s+E*v)+","+(this._y1=l+E*m)}},arc:function(s,l,u,c,f,h){s=+s,l=+l,u=+u,h=!!h;var d=u*Math.cos(c),v=u*Math.sin(c),m=s+d,b=l+v,p=1^h,k=h?c-f:f-c;if(u<0)throw new Error("negative radius: "+u);this._x1===null?this._+="M"+m+","+b:(Math.abs(this._x1-m)>n||Math.abs(this._y1-b)>n)&&(this._+="L"+m+","+b),u&&(k<0&&(k=k%r+r),k>i?this._+="A"+u+","+u+",0,1,"+p+","+(s-d)+","+(l-v)+"A"+u+","+u+",0,1,"+p+","+(this._x1=m)+","+(this._y1=b):k>n&&(this._+="A"+u+","+u+",0,"+ +(k>=t)+","+p+","+(this._x1=s+u*Math.cos(f))+","+(this._y1=l+u*Math.sin(f))))},rect:function(s,l,u,c){this._+="M"+(this._x0=this._x1=+s)+","+(this._y0=this._y1=+l)+"h"+ +u+"v"+ +c+"h"+-u+"Z"},toString:function(){return this._}},e.path=o,Object.defineProperty(e,"__esModule",{value:!0})})});var QJ=ye((L7,JWe)=>{(function(e,t){typeof L7=="object"&&typeof JWe!="undefined"?t(L7,KWe()):(e=e||self,t(e.d3=e.d3||{},e.d3))})(L7,function(e,t){"use strict";function r(Ct){return function(){return Ct}}var n=Math.abs,i=Math.atan2,a=Math.cos,o=Math.max,s=Math.min,l=Math.sin,u=Math.sqrt,c=1e-12,f=Math.PI,h=f/2,d=2*f;function v(Ct){return Ct>1?0:Ct<-1?f:Math.acos(Ct)}function m(Ct){return Ct>=1?h:Ct<=-1?-h:Math.asin(Ct)}function b(Ct){return Ct.innerRadius}function p(Ct){return Ct.outerRadius}function k(Ct){return Ct.startAngle}function M(Ct){return Ct.endAngle}function T(Ct){return Ct&&Ct.padAngle}function L(Ct,Sr,Jr,hi,hn,Sn,En,ki){var _n=Jr-Ct,ya=hi-Sr,ea=En-hn,Ma=ki-Sn,_o=Ma*_n-ea*ya;if(!(_o*_oYl*Yl+Su*Su&&(As=Ks,cl=zs),{cx:As,cy:cl,x01:-ea,y01:-Ma,x11:As*(hn/zl-1),y11:cl*(hn/zl-1)}}function C(){var Ct=b,Sr=p,Jr=r(0),hi=null,hn=k,Sn=M,En=T,ki=null;function _n(){var ya,ea,Ma=+Ct.apply(this,arguments),_o=+Sr.apply(this,arguments),No=hn.apply(this,arguments)-h,po=Sn.apply(this,arguments)-h,Lo=n(po-No),ko=po>No;if(ki||(ki=ya=t.path()),_oc))ki.moveTo(0,0);else if(Lo>d-c)ki.moveTo(_o*a(No),_o*l(No)),ki.arc(0,0,_o,No,po,!ko),Ma>c&&(ki.moveTo(Ma*a(po),Ma*l(po)),ki.arc(0,0,Ma,po,No,ko));else{var Ds=No,Fs=po,ll=No,ul=po,zl=Lo,us=Lo,il=En.apply(this,arguments)/2,As=il>c&&(hi?+hi.apply(this,arguments):u(Ma*Ma+_o*_o)),cl=s(n(_o-Ma)/2,+Jr.apply(this,arguments)),Ks=cl,zs=cl,Io,ls;if(As>c){var Yl=m(As/Ma*l(il)),Su=m(As/_o*l(il));(zl-=Yl*2)>c?(Yl*=ko?1:-1,ll+=Yl,ul-=Yl):(zl=0,ll=ul=(No+po)/2),(us-=Su*2)>c?(Su*=ko?1:-1,Ds+=Su,Fs-=Su):(us=0,Ds=Fs=(No+po)/2)}var nc=_o*a(Ds),bs=_o*l(Ds),Rn=Ma*a(ul),_a=Ma*l(ul);if(cl>c){var Vu=_o*a(Fs),ql=_o*l(Fs),xo=Ma*a(ll),Kl=Ma*l(ll),Ns;if(Loc?zs>c?(Io=x(xo,Kl,nc,bs,_o,zs,ko),ls=x(Vu,ql,Rn,_a,_o,zs,ko),ki.moveTo(Io.cx+Io.x01,Io.cy+Io.y01),zsc)||!(zl>c)?ki.lineTo(Rn,_a):Ks>c?(Io=x(Rn,_a,Vu,ql,Ma,-Ks,ko),ls=x(nc,bs,xo,Kl,Ma,-Ks,ko),ki.lineTo(Io.cx+Io.x01,Io.cy+Io.y01),Ks=_o;--No)ki.point(Fs[No],ll[No]);ki.lineEnd(),ki.areaEnd()}ko&&(Fs[Ma]=+Ct(Lo,Ma,ea),ll[Ma]=+Jr(Lo,Ma,ea),ki.point(Sr?+Sr(Lo,Ma,ea):Fs[Ma],hi?+hi(Lo,Ma,ea):ll[Ma]))}if(Ds)return ki=null,Ds+""||null}function ya(){return z().defined(hn).curve(En).context(Sn)}return _n.x=function(ea){return arguments.length?(Ct=typeof ea=="function"?ea:r(+ea),Sr=null,_n):Ct},_n.x0=function(ea){return arguments.length?(Ct=typeof ea=="function"?ea:r(+ea),_n):Ct},_n.x1=function(ea){return arguments.length?(Sr=ea==null?null:typeof ea=="function"?ea:r(+ea),_n):Sr},_n.y=function(ea){return arguments.length?(Jr=typeof ea=="function"?ea:r(+ea),hi=null,_n):Jr},_n.y0=function(ea){return arguments.length?(Jr=typeof ea=="function"?ea:r(+ea),_n):Jr},_n.y1=function(ea){return arguments.length?(hi=ea==null?null:typeof ea=="function"?ea:r(+ea),_n):hi},_n.lineX0=_n.lineY0=function(){return ya().x(Ct).y(Jr)},_n.lineY1=function(){return ya().x(Ct).y(hi)},_n.lineX1=function(){return ya().x(Sr).y(Jr)},_n.defined=function(ea){return arguments.length?(hn=typeof ea=="function"?ea:r(!!ea),_n):hn},_n.curve=function(ea){return arguments.length?(En=ea,Sn!=null&&(ki=En(Sn)),_n):En},_n.context=function(ea){return arguments.length?(ea==null?Sn=ki=null:ki=En(Sn=ea),_n):Sn},_n}function V(Ct,Sr){return SrCt?1:Sr>=Ct?0:NaN}function G(Ct){return Ct}function Z(){var Ct=G,Sr=V,Jr=null,hi=r(0),hn=r(d),Sn=r(0);function En(ki){var _n,ya=ki.length,ea,Ma,_o=0,No=new Array(ya),po=new Array(ya),Lo=+hi.apply(this,arguments),ko=Math.min(d,Math.max(-d,hn.apply(this,arguments)-Lo)),Ds,Fs=Math.min(Math.abs(ko)/ya,Sn.apply(this,arguments)),ll=Fs*(ko<0?-1:1),ul;for(_n=0;_n0&&(_o+=ul);for(Sr!=null?No.sort(function(zl,us){return Sr(po[zl],po[us])}):Jr!=null&&No.sort(function(zl,us){return Jr(ki[zl],ki[us])}),_n=0,Ma=_o?(ko-ya*ll)/_o:0;_n0?ul*Ma:0)+ll,po[ea]={data:ki[ea],index:_n,value:ul,startAngle:Lo,endAngle:Ds,padAngle:Fs};return po}return En.value=function(ki){return arguments.length?(Ct=typeof ki=="function"?ki:r(+ki),En):Ct},En.sortValues=function(ki){return arguments.length?(Sr=ki,Jr=null,En):Sr},En.sort=function(ki){return arguments.length?(Jr=ki,Sr=null,En):Jr},En.startAngle=function(ki){return arguments.length?(hi=typeof ki=="function"?ki:r(+ki),En):hi},En.endAngle=function(ki){return arguments.length?(hn=typeof ki=="function"?ki:r(+ki),En):hn},En.padAngle=function(ki){return arguments.length?(Sn=typeof ki=="function"?ki:r(+ki),En):Sn},En}var j=H(g);function N(Ct){this._curve=Ct}N.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(Ct,Sr){this._curve.point(Sr*Math.sin(Ct),Sr*-Math.cos(Ct))}};function H(Ct){function Sr(Jr){return new N(Ct(Jr))}return Sr._curve=Ct,Sr}function ie(Ct){var Sr=Ct.curve;return Ct.angle=Ct.x,delete Ct.x,Ct.radius=Ct.y,delete Ct.y,Ct.curve=function(Jr){return arguments.length?Sr(H(Jr)):Sr()._curve},Ct}function ae(){return ie(z().curve(j))}function _e(){var Ct=q().curve(j),Sr=Ct.curve,Jr=Ct.lineX0,hi=Ct.lineX1,hn=Ct.lineY0,Sn=Ct.lineY1;return Ct.angle=Ct.x,delete Ct.x,Ct.startAngle=Ct.x0,delete Ct.x0,Ct.endAngle=Ct.x1,delete Ct.x1,Ct.radius=Ct.y,delete Ct.y,Ct.innerRadius=Ct.y0,delete Ct.y0,Ct.outerRadius=Ct.y1,delete Ct.y1,Ct.lineStartAngle=function(){return ie(Jr())},delete Ct.lineX0,Ct.lineEndAngle=function(){return ie(hi())},delete Ct.lineX1,Ct.lineInnerRadius=function(){return ie(hn())},delete Ct.lineY0,Ct.lineOuterRadius=function(){return ie(Sn())},delete Ct.lineY1,Ct.curve=function(En){return arguments.length?Sr(H(En)):Sr()._curve},Ct}function Ee(Ct,Sr){return[(Sr=+Sr)*Math.cos(Ct-=Math.PI/2),Sr*Math.sin(Ct)]}var Ce=Array.prototype.slice;function ge(Ct){return Ct.source}function re(Ct){return Ct.target}function Se(Ct){var Sr=ge,Jr=re,hi=P,hn=E,Sn=null;function En(){var ki,_n=Ce.call(arguments),ya=Sr.apply(this,_n),ea=Jr.apply(this,_n);if(Sn||(Sn=ki=t.path()),Ct(Sn,+hi.apply(this,(_n[0]=ya,_n)),+hn.apply(this,_n),+hi.apply(this,(_n[0]=ea,_n)),+hn.apply(this,_n)),ki)return Sn=null,ki+""||null}return En.source=function(ki){return arguments.length?(Sr=ki,En):Sr},En.target=function(ki){return arguments.length?(Jr=ki,En):Jr},En.x=function(ki){return arguments.length?(hi=typeof ki=="function"?ki:r(+ki),En):hi},En.y=function(ki){return arguments.length?(hn=typeof ki=="function"?ki:r(+ki),En):hn},En.context=function(ki){return arguments.length?(Sn=ki==null?null:ki,En):Sn},En}function ke(Ct,Sr,Jr,hi,hn){Ct.moveTo(Sr,Jr),Ct.bezierCurveTo(Sr=(Sr+hi)/2,Jr,Sr,hn,hi,hn)}function be(Ct,Sr,Jr,hi,hn){Ct.moveTo(Sr,Jr),Ct.bezierCurveTo(Sr,Jr=(Jr+hn)/2,hi,Jr,hi,hn)}function Be(Ct,Sr,Jr,hi,hn){var Sn=Ee(Sr,Jr),En=Ee(Sr,Jr=(Jr+hn)/2),ki=Ee(hi,Jr),_n=Ee(hi,hn);Ct.moveTo(Sn[0],Sn[1]),Ct.bezierCurveTo(En[0],En[1],ki[0],ki[1],_n[0],_n[1])}function Le(){return Se(ke)}function me(){return Se(be)}function Pe(){var Ct=Se(Be);return Ct.angle=Ct.x,delete Ct.x,Ct.radius=Ct.y,delete Ct.y,Ct}var ce={draw:function(Ct,Sr){var Jr=Math.sqrt(Sr/f);Ct.moveTo(Jr,0),Ct.arc(0,0,Jr,0,d)}},He={draw:function(Ct,Sr){var Jr=Math.sqrt(Sr/5)/2;Ct.moveTo(-3*Jr,-Jr),Ct.lineTo(-Jr,-Jr),Ct.lineTo(-Jr,-3*Jr),Ct.lineTo(Jr,-3*Jr),Ct.lineTo(Jr,-Jr),Ct.lineTo(3*Jr,-Jr),Ct.lineTo(3*Jr,Jr),Ct.lineTo(Jr,Jr),Ct.lineTo(Jr,3*Jr),Ct.lineTo(-Jr,3*Jr),Ct.lineTo(-Jr,Jr),Ct.lineTo(-3*Jr,Jr),Ct.closePath()}},lt=Math.sqrt(1/3),mt=lt*2,Ht={draw:function(Ct,Sr){var Jr=Math.sqrt(Sr/mt),hi=Jr*lt;Ct.moveTo(0,-Jr),Ct.lineTo(hi,0),Ct.lineTo(0,Jr),Ct.lineTo(-hi,0),Ct.closePath()}},at=.8908130915292852,ct=Math.sin(f/10)/Math.sin(7*f/10),ar=Math.sin(d/10)*ct,Vt=-Math.cos(d/10)*ct,rr={draw:function(Ct,Sr){var Jr=Math.sqrt(Sr*at),hi=ar*Jr,hn=Vt*Jr;Ct.moveTo(0,-Jr),Ct.lineTo(hi,hn);for(var Sn=1;Sn<5;++Sn){var En=d*Sn/5,ki=Math.cos(En),_n=Math.sin(En);Ct.lineTo(_n*Jr,-ki*Jr),Ct.lineTo(ki*hi-_n*hn,_n*hi+ki*hn)}Ct.closePath()}},tt={draw:function(Ct,Sr){var Jr=Math.sqrt(Sr),hi=-Jr/2;Ct.rect(hi,hi,Jr,Jr)}},je=Math.sqrt(3),Ue={draw:function(Ct,Sr){var Jr=-Math.sqrt(Sr/(je*3));Ct.moveTo(0,Jr*2),Ct.lineTo(-je*Jr,-Jr),Ct.lineTo(je*Jr,-Jr),Ct.closePath()}},Ae=-.5,rt=Math.sqrt(3)/2,St=1/Math.sqrt(12),Tt=(St/2+1)*3,dt={draw:function(Ct,Sr){var Jr=Math.sqrt(Sr/Tt),hi=Jr/2,hn=Jr*St,Sn=hi,En=Jr*St+Jr,ki=-Sn,_n=En;Ct.moveTo(hi,hn),Ct.lineTo(Sn,En),Ct.lineTo(ki,_n),Ct.lineTo(Ae*hi-rt*hn,rt*hi+Ae*hn),Ct.lineTo(Ae*Sn-rt*En,rt*Sn+Ae*En),Ct.lineTo(Ae*ki-rt*_n,rt*ki+Ae*_n),Ct.lineTo(Ae*hi+rt*hn,Ae*hn-rt*hi),Ct.lineTo(Ae*Sn+rt*En,Ae*En-rt*Sn),Ct.lineTo(Ae*ki+rt*_n,Ae*_n-rt*ki),Ct.closePath()}},Et=[ce,He,Ht,tt,rr,Ue,dt];function pt(){var Ct=r(ce),Sr=r(64),Jr=null;function hi(){var hn;if(Jr||(Jr=hn=t.path()),Ct.apply(this,arguments).draw(Jr,+Sr.apply(this,arguments)),hn)return Jr=null,hn+""||null}return hi.type=function(hn){return arguments.length?(Ct=typeof hn=="function"?hn:r(hn),hi):Ct},hi.size=function(hn){return arguments.length?(Sr=typeof hn=="function"?hn:r(+hn),hi):Sr},hi.context=function(hn){return arguments.length?(Jr=hn==null?null:hn,hi):Jr},hi}function jt(){}function or(Ct,Sr,Jr){Ct._context.bezierCurveTo((2*Ct._x0+Ct._x1)/3,(2*Ct._y0+Ct._y1)/3,(Ct._x0+2*Ct._x1)/3,(Ct._y0+2*Ct._y1)/3,(Ct._x0+4*Ct._x1+Sr)/6,(Ct._y0+4*Ct._y1+Jr)/6)}function mr(Ct){this._context=Ct}mr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:or(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(Ct,Sr){switch(Ct=+Ct,Sr=+Sr,this._point){case 0:this._point=1,this._line?this._context.lineTo(Ct,Sr):this._context.moveTo(Ct,Sr);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:or(this,Ct,Sr);break}this._x0=this._x1,this._x1=Ct,this._y0=this._y1,this._y1=Sr}};function Ar(Ct){return new mr(Ct)}function ei(Ct){this._context=Ct}ei.prototype={areaStart:jt,areaEnd:jt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(Ct,Sr){switch(Ct=+Ct,Sr=+Sr,this._point){case 0:this._point=1,this._x2=Ct,this._y2=Sr;break;case 1:this._point=2,this._x3=Ct,this._y3=Sr;break;case 2:this._point=3,this._x4=Ct,this._y4=Sr,this._context.moveTo((this._x0+4*this._x1+Ct)/6,(this._y0+4*this._y1+Sr)/6);break;default:or(this,Ct,Sr);break}this._x0=this._x1,this._x1=Ct,this._y0=this._y1,this._y1=Sr}};function qr(Ct){return new ei(Ct)}function jr(Ct){this._context=Ct}jr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(Ct,Sr){switch(Ct=+Ct,Sr=+Sr,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var Jr=(this._x0+4*this._x1+Ct)/6,hi=(this._y0+4*this._y1+Sr)/6;this._line?this._context.lineTo(Jr,hi):this._context.moveTo(Jr,hi);break;case 3:this._point=4;default:or(this,Ct,Sr);break}this._x0=this._x1,this._x1=Ct,this._y0=this._y1,this._y1=Sr}};function gt(Ct){return new jr(Ct)}function Ge(Ct,Sr){this._basis=new mr(Ct),this._beta=Sr}Ge.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var Ct=this._x,Sr=this._y,Jr=Ct.length-1;if(Jr>0)for(var hi=Ct[0],hn=Sr[0],Sn=Ct[Jr]-hi,En=Sr[Jr]-hn,ki=-1,_n;++ki<=Jr;)_n=ki/Jr,this._basis.point(this._beta*Ct[ki]+(1-this._beta)*(hi+_n*Sn),this._beta*Sr[ki]+(1-this._beta)*(hn+_n*En));this._x=this._y=null,this._basis.lineEnd()},point:function(Ct,Sr){this._x.push(+Ct),this._y.push(+Sr)}};var Je=function Ct(Sr){function Jr(hi){return Sr===1?new mr(hi):new Ge(hi,Sr)}return Jr.beta=function(hi){return Ct(+hi)},Jr}(.85);function We(Ct,Sr,Jr){Ct._context.bezierCurveTo(Ct._x1+Ct._k*(Ct._x2-Ct._x0),Ct._y1+Ct._k*(Ct._y2-Ct._y0),Ct._x2+Ct._k*(Ct._x1-Sr),Ct._y2+Ct._k*(Ct._y1-Jr),Ct._x2,Ct._y2)}function et(Ct,Sr){this._context=Ct,this._k=(1-Sr)/6}et.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:We(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(Ct,Sr){switch(Ct=+Ct,Sr=+Sr,this._point){case 0:this._point=1,this._line?this._context.lineTo(Ct,Sr):this._context.moveTo(Ct,Sr);break;case 1:this._point=2,this._x1=Ct,this._y1=Sr;break;case 2:this._point=3;default:We(this,Ct,Sr);break}this._x0=this._x1,this._x1=this._x2,this._x2=Ct,this._y0=this._y1,this._y1=this._y2,this._y2=Sr}};var xt=function Ct(Sr){function Jr(hi){return new et(hi,Sr)}return Jr.tension=function(hi){return Ct(+hi)},Jr}(0);function At(Ct,Sr){this._context=Ct,this._k=(1-Sr)/6}At.prototype={areaStart:jt,areaEnd:jt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(Ct,Sr){switch(Ct=+Ct,Sr=+Sr,this._point){case 0:this._point=1,this._x3=Ct,this._y3=Sr;break;case 1:this._point=2,this._context.moveTo(this._x4=Ct,this._y4=Sr);break;case 2:this._point=3,this._x5=Ct,this._y5=Sr;break;default:We(this,Ct,Sr);break}this._x0=this._x1,this._x1=this._x2,this._x2=Ct,this._y0=this._y1,this._y1=this._y2,this._y2=Sr}};var Kt=function Ct(Sr){function Jr(hi){return new At(hi,Sr)}return Jr.tension=function(hi){return Ct(+hi)},Jr}(0);function Qt(Ct,Sr){this._context=Ct,this._k=(1-Sr)/6}Qt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(Ct,Sr){switch(Ct=+Ct,Sr=+Sr,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:We(this,Ct,Sr);break}this._x0=this._x1,this._x1=this._x2,this._x2=Ct,this._y0=this._y1,this._y1=this._y2,this._y2=Sr}};var Mr=function Ct(Sr){function Jr(hi){return new Qt(hi,Sr)}return Jr.tension=function(hi){return Ct(+hi)},Jr}(0);function Gr(Ct,Sr,Jr){var hi=Ct._x1,hn=Ct._y1,Sn=Ct._x2,En=Ct._y2;if(Ct._l01_a>c){var ki=2*Ct._l01_2a+3*Ct._l01_a*Ct._l12_a+Ct._l12_2a,_n=3*Ct._l01_a*(Ct._l01_a+Ct._l12_a);hi=(hi*ki-Ct._x0*Ct._l12_2a+Ct._x2*Ct._l01_2a)/_n,hn=(hn*ki-Ct._y0*Ct._l12_2a+Ct._y2*Ct._l01_2a)/_n}if(Ct._l23_a>c){var ya=2*Ct._l23_2a+3*Ct._l23_a*Ct._l12_a+Ct._l12_2a,ea=3*Ct._l23_a*(Ct._l23_a+Ct._l12_a);Sn=(Sn*ya+Ct._x1*Ct._l23_2a-Sr*Ct._l12_2a)/ea,En=(En*ya+Ct._y1*Ct._l23_2a-Jr*Ct._l12_2a)/ea}Ct._context.bezierCurveTo(hi,hn,Sn,En,Ct._x2,Ct._y2)}function Ir(Ct,Sr){this._context=Ct,this._alpha=Sr}Ir.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(Ct,Sr){if(Ct=+Ct,Sr=+Sr,this._point){var Jr=this._x2-Ct,hi=this._y2-Sr;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Jr*Jr+hi*hi,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(Ct,Sr):this._context.moveTo(Ct,Sr);break;case 1:this._point=2;break;case 2:this._point=3;default:Gr(this,Ct,Sr);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=Ct,this._y0=this._y1,this._y1=this._y2,this._y2=Sr}};var Yr=function Ct(Sr){function Jr(hi){return Sr?new Ir(hi,Sr):new et(hi,0)}return Jr.alpha=function(hi){return Ct(+hi)},Jr}(.5);function _i(Ct,Sr){this._context=Ct,this._alpha=Sr}_i.prototype={areaStart:jt,areaEnd:jt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(Ct,Sr){if(Ct=+Ct,Sr=+Sr,this._point){var Jr=this._x2-Ct,hi=this._y2-Sr;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Jr*Jr+hi*hi,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=Ct,this._y3=Sr;break;case 1:this._point=2,this._context.moveTo(this._x4=Ct,this._y4=Sr);break;case 2:this._point=3,this._x5=Ct,this._y5=Sr;break;default:Gr(this,Ct,Sr);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=Ct,this._y0=this._y1,this._y1=this._y2,this._y2=Sr}};var Pi=function Ct(Sr){function Jr(hi){return Sr?new _i(hi,Sr):new At(hi,0)}return Jr.alpha=function(hi){return Ct(+hi)},Jr}(.5);function ai(Ct,Sr){this._context=Ct,this._alpha=Sr}ai.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(Ct,Sr){if(Ct=+Ct,Sr=+Sr,this._point){var Jr=this._x2-Ct,hi=this._y2-Sr;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Jr*Jr+hi*hi,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Gr(this,Ct,Sr);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=Ct,this._y0=this._y1,this._y1=this._y2,this._y2=Sr}};var mi=function Ct(Sr){function Jr(hi){return Sr?new ai(hi,Sr):new Qt(hi,0)}return Jr.alpha=function(hi){return Ct(+hi)},Jr}(.5);function un(Ct){this._context=Ct}un.prototype={areaStart:jt,areaEnd:jt,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(Ct,Sr){Ct=+Ct,Sr=+Sr,this._point?this._context.lineTo(Ct,Sr):(this._point=1,this._context.moveTo(Ct,Sr))}};function Fn(Ct){return new un(Ct)}function An(Ct){return Ct<0?-1:1}function Hn(Ct,Sr,Jr){var hi=Ct._x1-Ct._x0,hn=Sr-Ct._x1,Sn=(Ct._y1-Ct._y0)/(hi||hn<0&&-0),En=(Jr-Ct._y1)/(hn||hi<0&&-0),ki=(Sn*hn+En*hi)/(hi+hn);return(An(Sn)+An(En))*Math.min(Math.abs(Sn),Math.abs(En),.5*Math.abs(ki))||0}function Qn(Ct,Sr){var Jr=Ct._x1-Ct._x0;return Jr?(3*(Ct._y1-Ct._y0)/Jr-Sr)/2:Sr}function Vi(Ct,Sr,Jr){var hi=Ct._x0,hn=Ct._y0,Sn=Ct._x1,En=Ct._y1,ki=(Sn-hi)/3;Ct._context.bezierCurveTo(hi+ki,hn+ki*Sr,Sn-ki,En-ki*Jr,Sn,En)}function Kn(Ct){this._context=Ct}Kn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Vi(this,this._t0,Qn(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(Ct,Sr){var Jr=NaN;if(Ct=+Ct,Sr=+Sr,!(Ct===this._x1&&Sr===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(Ct,Sr):this._context.moveTo(Ct,Sr);break;case 1:this._point=2;break;case 2:this._point=3,Vi(this,Qn(this,Jr=Hn(this,Ct,Sr)),Jr);break;default:Vi(this,this._t0,Jr=Hn(this,Ct,Sr));break}this._x0=this._x1,this._x1=Ct,this._y0=this._y1,this._y1=Sr,this._t0=Jr}}};function Jn(Ct){this._context=new Gt(Ct)}(Jn.prototype=Object.create(Kn.prototype)).point=function(Ct,Sr){Kn.prototype.point.call(this,Sr,Ct)};function Gt(Ct){this._context=Ct}Gt.prototype={moveTo:function(Ct,Sr){this._context.moveTo(Sr,Ct)},closePath:function(){this._context.closePath()},lineTo:function(Ct,Sr){this._context.lineTo(Sr,Ct)},bezierCurveTo:function(Ct,Sr,Jr,hi,hn,Sn){this._context.bezierCurveTo(Sr,Ct,hi,Jr,Sn,hn)}};function wt(Ct){return new Kn(Ct)}function tr(Ct){return new Jn(Ct)}function ir(Ct){this._context=Ct}ir.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var Ct=this._x,Sr=this._y,Jr=Ct.length;if(Jr)if(this._line?this._context.lineTo(Ct[0],Sr[0]):this._context.moveTo(Ct[0],Sr[0]),Jr===2)this._context.lineTo(Ct[1],Sr[1]);else for(var hi=wr(Ct),hn=wr(Sr),Sn=0,En=1;En=0;--Sr)hn[Sr]=(En[Sr]-hn[Sr+1])/Sn[Sr];for(Sn[Jr-1]=(Ct[Jr]+hn[Jr-1])/2,Sr=0;Sr=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(Ct,Sr){switch(Ct=+Ct,Sr=+Sr,this._point){case 0:this._point=1,this._line?this._context.lineTo(Ct,Sr):this._context.moveTo(Ct,Sr);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,Sr),this._context.lineTo(Ct,Sr);else{var Jr=this._x*(1-this._t)+Ct*this._t;this._context.lineTo(Jr,this._y),this._context.lineTo(Jr,Sr)}break}}this._x=Ct,this._y=Sr}};function $r(Ct){return new ti(Ct,.5)}function Ri(Ct){return new ti(Ct,0)}function Zi(Ct){return new ti(Ct,1)}function en(Ct,Sr){if((En=Ct.length)>1)for(var Jr=1,hi,hn,Sn=Ct[Sr[0]],En,ki=Sn.length;Jr=0;)Jr[Sr]=Sr;return Jr}function yn(Ct,Sr){return Ct[Sr]}function Mn(){var Ct=r([]),Sr=fn,Jr=en,hi=yn;function hn(Sn){var En=Ct.apply(this,arguments),ki,_n=Sn.length,ya=En.length,ea=new Array(ya),Ma;for(ki=0;ki0){for(var Jr,hi,hn=0,Sn=Ct[0].length,En;hn0)for(var Jr,hi=0,hn,Sn,En,ki,_n,ya=Ct[Sr[0]].length;hi0?(hn[0]=En,hn[1]=En+=Sn):Sn<0?(hn[1]=ki,hn[0]=ki+=Sn):(hn[0]=0,hn[1]=Sn)}function ma(Ct,Sr){if((hn=Ct.length)>0){for(var Jr=0,hi=Ct[Sr[0]],hn,Sn=hi.length;Jr0)||!((Sn=(hn=Ct[Sr[0]]).length)>0))){for(var Jr=0,hi=1,hn,Sn,En;hiSn&&(Sn=hn,Jr=Sr);return Jr}function da(Ct){var Sr=Ct.map(jn);return fn(Ct).sort(function(Jr,hi){return Sr[Jr]-Sr[hi]})}function jn(Ct){for(var Sr=0,Jr=-1,hi=Ct.length,hn;++Jr{(function(e,t){typeof P7=="object"&&typeof $We!="undefined"?t(P7,dk(),S7(),QJ()):t(e.d3=e.d3||{},e.d3,e.d3,e.d3)})(P7,function(e,t,r,n){"use strict";function i(g){return g.target.depth}function a(g){return g.depth}function o(g,P){return P-1-g.height}function s(g,P){return g.sourceLinks.length?g.depth:P-1}function l(g){return g.targetLinks.length?g.depth:g.sourceLinks.length?t.min(g.sourceLinks,i)-1:0}function u(g){return function(){return g}}function c(g,P){return h(g.source,P.source)||g.index-P.index}function f(g,P){return h(g.target,P.target)||g.index-P.index}function h(g,P){return g.y0-P.y0}function d(g){return g.value}function v(g){return(g.y0+g.y1)/2}function m(g){return v(g.source)*g.value}function b(g){return v(g.target)*g.value}function p(g){return g.index}function k(g){return g.nodes}function M(g){return g.links}function T(g,P){var E=g.get(P);if(!E)throw new Error("missing: "+P);return E}var L=function(){var g=0,P=0,E=1,z=1,q=24,V=8,G=p,Z=s,j=k,N=M,H=32,ie=2/3;function ae(){var Se={nodes:j.apply(null,arguments),links:N.apply(null,arguments)};return _e(Se),Ee(Se),Ce(Se),ge(Se,H),re(Se),Se}ae.update=function(Se){return re(Se),Se},ae.nodeId=function(Se){return arguments.length?(G=typeof Se=="function"?Se:u(Se),ae):G},ae.nodeAlign=function(Se){return arguments.length?(Z=typeof Se=="function"?Se:u(Se),ae):Z},ae.nodeWidth=function(Se){return arguments.length?(q=+Se,ae):q},ae.nodePadding=function(Se){return arguments.length?(V=+Se,ae):V},ae.nodes=function(Se){return arguments.length?(j=typeof Se=="function"?Se:u(Se),ae):j},ae.links=function(Se){return arguments.length?(N=typeof Se=="function"?Se:u(Se),ae):N},ae.size=function(Se){return arguments.length?(g=P=0,E=+Se[0],z=+Se[1],ae):[E-g,z-P]},ae.extent=function(Se){return arguments.length?(g=+Se[0][0],E=+Se[1][0],P=+Se[0][1],z=+Se[1][1],ae):[[g,P],[E,z]]},ae.iterations=function(Se){return arguments.length?(H=+Se,ae):H};function _e(Se){Se.nodes.forEach(function(be,Be){be.index=Be,be.sourceLinks=[],be.targetLinks=[]});var ke=r.map(Se.nodes,G);Se.links.forEach(function(be,Be){be.index=Be;var Le=be.source,me=be.target;typeof Le!="object"&&(Le=be.source=T(ke,Le)),typeof me!="object"&&(me=be.target=T(ke,me)),Le.sourceLinks.push(be),me.targetLinks.push(be)})}function Ee(Se){Se.nodes.forEach(function(ke){ke.value=Math.max(t.sum(ke.sourceLinks,d),t.sum(ke.targetLinks,d))})}function Ce(Se){var ke,be,Be;for(ke=Se.nodes,be=[],Be=0;ke.length;++Be,ke=be,be=[])ke.forEach(function(me){me.depth=Be,me.sourceLinks.forEach(function(Pe){be.indexOf(Pe.target)<0&&be.push(Pe.target)})});for(ke=Se.nodes,be=[],Be=0;ke.length;++Be,ke=be,be=[])ke.forEach(function(me){me.height=Be,me.targetLinks.forEach(function(Pe){be.indexOf(Pe.source)<0&&be.push(Pe.source)})});var Le=(E-g-q)/(Be-1);Se.nodes.forEach(function(me){me.x1=(me.x0=g+Math.max(0,Math.min(Be-1,Math.floor(Z.call(null,me,Be))))*Le)+q})}function ge(Se){var ke=r.nest().key(function(He){return He.x0}).sortKeys(t.ascending).entries(Se.nodes).map(function(He){return He.values});Le(),ce();for(var be=1,Be=H;Be>0;--Be)Pe(be*=.99),ce(),me(be),ce();function Le(){var He=t.max(ke,function(Ht){return Ht.length}),lt=ie*(z-P)/(He-1);V>lt&&(V=lt);var mt=t.min(ke,function(Ht){return(z-P-(Ht.length-1)*V)/t.sum(Ht,d)});ke.forEach(function(Ht){Ht.forEach(function(at,ct){at.y1=(at.y0=ct)+at.value*mt})}),Se.links.forEach(function(Ht){Ht.width=Ht.value*mt})}function me(He){ke.forEach(function(lt){lt.forEach(function(mt){if(mt.targetLinks.length){var Ht=(t.sum(mt.targetLinks,m)/t.sum(mt.targetLinks,d)-v(mt))*He;mt.y0+=Ht,mt.y1+=Ht}})})}function Pe(He){ke.slice().reverse().forEach(function(lt){lt.forEach(function(mt){if(mt.sourceLinks.length){var Ht=(t.sum(mt.sourceLinks,b)/t.sum(mt.sourceLinks,d)-v(mt))*He;mt.y0+=Ht,mt.y1+=Ht}})})}function ce(){ke.forEach(function(He){var lt,mt,Ht=P,at=He.length,ct;for(He.sort(h),ct=0;ct0&&(lt.y0+=mt,lt.y1+=mt),Ht=lt.y1+V;if(mt=Ht-V-z,mt>0)for(Ht=lt.y0-=mt,lt.y1-=mt,ct=at-2;ct>=0;--ct)lt=He[ct],mt=lt.y1+V-Ht,mt>0&&(lt.y0-=mt,lt.y1-=mt),Ht=lt.y0})}}function re(Se){Se.nodes.forEach(function(ke){ke.sourceLinks.sort(f),ke.targetLinks.sort(c)}),Se.nodes.forEach(function(ke){var be=ke.y0,Be=be;ke.sourceLinks.forEach(function(Le){Le.y0=be+Le.width/2,be+=Le.width}),ke.targetLinks.forEach(function(Le){Le.y1=Be+Le.width/2,Be+=Le.width})})}return ae};function x(g){return[g.source.x1,g.y0]}function C(g){return[g.target.x0,g.y1]}var S=function(){return n.linkHorizontal().source(x).target(C)};e.sankey=L,e.sankeyCenter=l,e.sankeyLeft=a,e.sankeyRight=o,e.sankeyJustify=s,e.sankeyLinkHorizontal=S,Object.defineProperty(e,"__esModule",{value:!0})})});var tXe=ye((w2r,eXe)=>{var rYt=$J();eXe.exports=function(t,r){var n=[],i=[],a=[],o={},s=[],l;function u(M){a[M]=!1,o.hasOwnProperty(M)&&Object.keys(o[M]).forEach(function(T){delete o[M][T],a[T]&&u(T)})}function c(M){var T=!1;i.push(M),a[M]=!0;var L,x;for(L=0;L=M})}function d(M){h(M);for(var T=t,L=rYt(T),x=L.components.filter(function(q){return q.length>1}),C=1/0,S,g=0;g{(function(e,t){typeof I7=="object"&&typeof rXe!="undefined"?t(I7,dk(),S7(),QJ(),tXe()):t(e.d3=e.d3||{},e.d3,e.d3,e.d3,null)})(I7,function(e,t,r,n,i){"use strict";i=i&&i.hasOwnProperty("default")?i.default:i;function a(at){return at.target.depth}function o(at){return at.depth}function s(at,ct){return ct-1-at.height}function l(at,ct){return at.sourceLinks.length?at.depth:ct-1}function u(at){return at.targetLinks.length?at.depth:at.sourceLinks.length?t.min(at.sourceLinks,a)-1:0}function c(at){return function(){return at}}var f=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(at){return typeof at}:function(at){return at&&typeof Symbol=="function"&&at.constructor===Symbol&&at!==Symbol.prototype?"symbol":typeof at};function h(at,ct){return v(at.source,ct.source)||at.index-ct.index}function d(at,ct){return v(at.target,ct.target)||at.index-ct.index}function v(at,ct){return at.partOfCycle===ct.partOfCycle?at.y0-ct.y0:at.circularLinkType==="top"||ct.circularLinkType==="bottom"?-1:1}function m(at){return at.value}function b(at){return(at.y0+at.y1)/2}function p(at){return b(at.source)}function k(at){return b(at.target)}function M(at){return at.index}function T(at){return at.nodes}function L(at){return at.links}function x(at,ct){var ar=at.get(ct);if(!ar)throw new Error("missing: "+ct);return ar}function C(at,ct){return ct(at)}var S=25,g=10,P=.3;function E(){var at=0,ct=0,ar=1,Vt=1,rr=24,tt,je=M,Ue=l,Ae=T,rt=L,St=32,Tt=2,dt,Et=null;function pt(){var gt={nodes:Ae.apply(null,arguments),links:rt.apply(null,arguments)};jt(gt),z(gt,je,Et),or(gt),ei(gt),q(gt,je),qr(gt,St,je),jr(gt);for(var Ge=4,Je=0;Je0?Ge+S+g:Ge,Je=Je>0?Je+S+g:Je,We=We>0?We+S+g:We,et=et>0?et+S+g:et,{top:Ge,bottom:Je,left:et,right:We}}function Ar(gt,Ge){var Je=t.max(gt.nodes,function(Mr){return Mr.column}),We=ar-at,et=Vt-ct,xt=We+Ge.right+Ge.left,At=et+Ge.top+Ge.bottom,Kt=We/xt,Qt=et/At;return at=at*Kt+Ge.left,ar=Ge.right==0?ar:ar*Kt,ct=ct*Qt+Ge.top,Vt=Vt*Qt,gt.nodes.forEach(function(Mr){Mr.x0=at+Mr.column*((ar-at-rr)/Je),Mr.x1=Mr.x0+rr}),Qt}function ei(gt){var Ge,Je,We;for(Ge=gt.nodes,Je=[],We=0;Ge.length;++We,Ge=Je,Je=[])Ge.forEach(function(et){et.depth=We,et.sourceLinks.forEach(function(xt){Je.indexOf(xt.target)<0&&!xt.circular&&Je.push(xt.target)})});for(Ge=gt.nodes,Je=[],We=0;Ge.length;++We,Ge=Je,Je=[])Ge.forEach(function(et){et.height=We,et.targetLinks.forEach(function(xt){Je.indexOf(xt.source)<0&&!xt.circular&&Je.push(xt.source)})});gt.nodes.forEach(function(et){et.column=Math.floor(Ue.call(null,et,We))})}function qr(gt,Ge,Je){var We=r.nest().key(function(Mr){return Mr.column}).sortKeys(t.ascending).entries(gt.nodes).map(function(Mr){return Mr.values});At(Je),Qt();for(var et=1,xt=Ge;xt>0;--xt)Kt(et*=.99,Je),Qt();function At(Mr){if(dt){var Gr=1/0;We.forEach(function(Pi){var ai=Vt*dt/(Pi.length+1);Gr=ai0))if(Pi==0&&_i==1)mi=ai.y1-ai.y0,ai.y0=Vt/2-mi/2,ai.y1=Vt/2+mi/2;else if(Pi==Ir-1&&_i==1)mi=ai.y1-ai.y0,ai.y0=Vt/2-mi/2,ai.y1=Vt/2+mi/2;else{var un=0,Fn=t.mean(ai.sourceLinks,k),An=t.mean(ai.targetLinks,p);Fn&&An?un=(Fn+An)/2:un=Fn||An;var Hn=(un-b(ai))*Mr;ai.y0+=Hn,ai.y1+=Hn}})})}function Qt(){We.forEach(function(Mr){var Gr,Ir,Yr=ct,_i=Mr.length,Pi;for(Mr.sort(v),Pi=0;Pi<_i;++Pi)Gr=Mr[Pi],Ir=Yr-Gr.y0,Ir>0&&(Gr.y0+=Ir,Gr.y1+=Ir),Yr=Gr.y1+tt;if(Ir=Yr-tt-Vt,Ir>0)for(Yr=Gr.y0-=Ir,Gr.y1-=Ir,Pi=_i-2;Pi>=0;--Pi)Gr=Mr[Pi],Ir=Gr.y1+tt-Yr,Ir>0&&(Gr.y0-=Ir,Gr.y1-=Ir),Yr=Gr.y0})}}function jr(gt){gt.nodes.forEach(function(Ge){Ge.sourceLinks.sort(d),Ge.targetLinks.sort(h)}),gt.nodes.forEach(function(Ge){var Je=Ge.y0,We=Je,et=Ge.y1,xt=et;Ge.sourceLinks.forEach(function(At){At.circular?(At.y0=et-At.width/2,et=et-At.width):(At.y0=Je+At.width/2,Je+=At.width)}),Ge.targetLinks.forEach(function(At){At.circular?(At.y1=xt-At.width/2,xt=xt-At.width):(At.y1=We+At.width/2,We+=At.width)})})}return pt}function z(at,ct,ar){var Vt=0;if(ar===null){for(var rr=[],tt=0;ttct.source.column)}function Z(at,ct){var ar=0;at.sourceLinks.forEach(function(rr){ar=rr.circular&&!mt(rr,ct)?ar+1:ar});var Vt=0;return at.targetLinks.forEach(function(rr){Vt=rr.circular&&!mt(rr,ct)?Vt+1:Vt}),ar+Vt}function j(at){var ct=at.source.sourceLinks,ar=0;ct.forEach(function(tt){ar=tt.circular?ar+1:ar});var Vt=at.target.targetLinks,rr=0;return Vt.forEach(function(tt){rr=tt.circular?rr+1:rr}),!(ar>1||rr>1)}function N(at,ct,ar){return at.sort(ae),at.forEach(function(Vt,rr){var tt=0;if(mt(Vt,ar)&&j(Vt))Vt.circularPathData.verticalBuffer=tt+Vt.width/2;else{var je=0;for(je;jett?Ue:tt}Vt.circularPathData.verticalBuffer=tt+Vt.width/2}}),at}function H(at,ct,ar,Vt){var rr=5,tt=t.min(at.links,function(Ae){return Ae.source.y0});at.links.forEach(function(Ae){Ae.circular&&(Ae.circularPathData={})});var je=at.links.filter(function(Ae){return Ae.circularLinkType=="top"});N(je,ct,Vt);var Ue=at.links.filter(function(Ae){return Ae.circularLinkType=="bottom"});N(Ue,ct,Vt),at.links.forEach(function(Ae){if(Ae.circular){if(Ae.circularPathData.arcRadius=Ae.width+g,Ae.circularPathData.leftNodeBuffer=rr,Ae.circularPathData.rightNodeBuffer=rr,Ae.circularPathData.sourceWidth=Ae.source.x1-Ae.source.x0,Ae.circularPathData.sourceX=Ae.source.x0+Ae.circularPathData.sourceWidth,Ae.circularPathData.targetX=Ae.target.x0,Ae.circularPathData.sourceY=Ae.y0,Ae.circularPathData.targetY=Ae.y1,mt(Ae,Vt)&&j(Ae))Ae.circularPathData.leftSmallArcRadius=g+Ae.width/2,Ae.circularPathData.leftLargeArcRadius=g+Ae.width/2,Ae.circularPathData.rightSmallArcRadius=g+Ae.width/2,Ae.circularPathData.rightLargeArcRadius=g+Ae.width/2,Ae.circularLinkType=="bottom"?(Ae.circularPathData.verticalFullExtent=Ae.source.y1+S+Ae.circularPathData.verticalBuffer,Ae.circularPathData.verticalLeftInnerExtent=Ae.circularPathData.verticalFullExtent-Ae.circularPathData.leftLargeArcRadius,Ae.circularPathData.verticalRightInnerExtent=Ae.circularPathData.verticalFullExtent-Ae.circularPathData.rightLargeArcRadius):(Ae.circularPathData.verticalFullExtent=Ae.source.y0-S-Ae.circularPathData.verticalBuffer,Ae.circularPathData.verticalLeftInnerExtent=Ae.circularPathData.verticalFullExtent+Ae.circularPathData.leftLargeArcRadius,Ae.circularPathData.verticalRightInnerExtent=Ae.circularPathData.verticalFullExtent+Ae.circularPathData.rightLargeArcRadius);else{var rt=Ae.source.column,St=Ae.circularLinkType,Tt=at.links.filter(function(pt){return pt.source.column==rt&&pt.circularLinkType==St});Ae.circularLinkType=="bottom"?Tt.sort(Ee):Tt.sort(_e);var dt=0;Tt.forEach(function(pt,jt){pt.circularLinkID==Ae.circularLinkID&&(Ae.circularPathData.leftSmallArcRadius=g+Ae.width/2+dt,Ae.circularPathData.leftLargeArcRadius=g+Ae.width/2+jt*ct+dt),dt=dt+pt.width}),rt=Ae.target.column,Tt=at.links.filter(function(pt){return pt.target.column==rt&&pt.circularLinkType==St}),Ae.circularLinkType=="bottom"?Tt.sort(ge):Tt.sort(Ce),dt=0,Tt.forEach(function(pt,jt){pt.circularLinkID==Ae.circularLinkID&&(Ae.circularPathData.rightSmallArcRadius=g+Ae.width/2+dt,Ae.circularPathData.rightLargeArcRadius=g+Ae.width/2+jt*ct+dt),dt=dt+pt.width}),Ae.circularLinkType=="bottom"?(Ae.circularPathData.verticalFullExtent=Math.max(ar,Ae.source.y1,Ae.target.y1)+S+Ae.circularPathData.verticalBuffer,Ae.circularPathData.verticalLeftInnerExtent=Ae.circularPathData.verticalFullExtent-Ae.circularPathData.leftLargeArcRadius,Ae.circularPathData.verticalRightInnerExtent=Ae.circularPathData.verticalFullExtent-Ae.circularPathData.rightLargeArcRadius):(Ae.circularPathData.verticalFullExtent=tt-S-Ae.circularPathData.verticalBuffer,Ae.circularPathData.verticalLeftInnerExtent=Ae.circularPathData.verticalFullExtent+Ae.circularPathData.leftLargeArcRadius,Ae.circularPathData.verticalRightInnerExtent=Ae.circularPathData.verticalFullExtent+Ae.circularPathData.rightLargeArcRadius)}Ae.circularPathData.leftInnerExtent=Ae.circularPathData.sourceX+Ae.circularPathData.leftNodeBuffer,Ae.circularPathData.rightInnerExtent=Ae.circularPathData.targetX-Ae.circularPathData.rightNodeBuffer,Ae.circularPathData.leftFullExtent=Ae.circularPathData.sourceX+Ae.circularPathData.leftLargeArcRadius+Ae.circularPathData.leftNodeBuffer,Ae.circularPathData.rightFullExtent=Ae.circularPathData.targetX-Ae.circularPathData.rightLargeArcRadius-Ae.circularPathData.rightNodeBuffer}if(Ae.circular)Ae.path=ie(Ae);else{var Et=n.linkHorizontal().source(function(pt){var jt=pt.source.x0+(pt.source.x1-pt.source.x0),or=pt.y0;return[jt,or]}).target(function(pt){var jt=pt.target.x0,or=pt.y1;return[jt,or]});Ae.path=Et(Ae)}})}function ie(at){var ct="";return at.circularLinkType=="top"?ct="M"+at.circularPathData.sourceX+" "+at.circularPathData.sourceY+" L"+at.circularPathData.leftInnerExtent+" "+at.circularPathData.sourceY+" A"+at.circularPathData.leftLargeArcRadius+" "+at.circularPathData.leftSmallArcRadius+" 0 0 0 "+at.circularPathData.leftFullExtent+" "+(at.circularPathData.sourceY-at.circularPathData.leftSmallArcRadius)+" L"+at.circularPathData.leftFullExtent+" "+at.circularPathData.verticalLeftInnerExtent+" A"+at.circularPathData.leftLargeArcRadius+" "+at.circularPathData.leftLargeArcRadius+" 0 0 0 "+at.circularPathData.leftInnerExtent+" "+at.circularPathData.verticalFullExtent+" L"+at.circularPathData.rightInnerExtent+" "+at.circularPathData.verticalFullExtent+" A"+at.circularPathData.rightLargeArcRadius+" "+at.circularPathData.rightLargeArcRadius+" 0 0 0 "+at.circularPathData.rightFullExtent+" "+at.circularPathData.verticalRightInnerExtent+" L"+at.circularPathData.rightFullExtent+" "+(at.circularPathData.targetY-at.circularPathData.rightSmallArcRadius)+" A"+at.circularPathData.rightLargeArcRadius+" "+at.circularPathData.rightSmallArcRadius+" 0 0 0 "+at.circularPathData.rightInnerExtent+" "+at.circularPathData.targetY+" L"+at.circularPathData.targetX+" "+at.circularPathData.targetY:ct="M"+at.circularPathData.sourceX+" "+at.circularPathData.sourceY+" L"+at.circularPathData.leftInnerExtent+" "+at.circularPathData.sourceY+" A"+at.circularPathData.leftLargeArcRadius+" "+at.circularPathData.leftSmallArcRadius+" 0 0 1 "+at.circularPathData.leftFullExtent+" "+(at.circularPathData.sourceY+at.circularPathData.leftSmallArcRadius)+" L"+at.circularPathData.leftFullExtent+" "+at.circularPathData.verticalLeftInnerExtent+" A"+at.circularPathData.leftLargeArcRadius+" "+at.circularPathData.leftLargeArcRadius+" 0 0 1 "+at.circularPathData.leftInnerExtent+" "+at.circularPathData.verticalFullExtent+" L"+at.circularPathData.rightInnerExtent+" "+at.circularPathData.verticalFullExtent+" A"+at.circularPathData.rightLargeArcRadius+" "+at.circularPathData.rightLargeArcRadius+" 0 0 1 "+at.circularPathData.rightFullExtent+" "+at.circularPathData.verticalRightInnerExtent+" L"+at.circularPathData.rightFullExtent+" "+(at.circularPathData.targetY+at.circularPathData.rightSmallArcRadius)+" A"+at.circularPathData.rightLargeArcRadius+" "+at.circularPathData.rightSmallArcRadius+" 0 0 1 "+at.circularPathData.rightInnerExtent+" "+at.circularPathData.targetY+" L"+at.circularPathData.targetX+" "+at.circularPathData.targetY,ct}function ae(at,ct){return re(at)==re(ct)?at.circularLinkType=="bottom"?Ee(at,ct):_e(at,ct):re(ct)-re(at)}function _e(at,ct){return at.y0-ct.y0}function Ee(at,ct){return ct.y0-at.y0}function Ce(at,ct){return at.y1-ct.y1}function ge(at,ct){return ct.y1-at.y1}function re(at){return at.target.column-at.source.column}function Se(at){return at.target.x0-at.source.x1}function ke(at,ct){var ar=V(at),Vt=Se(ct)/Math.tan(ar),rr=lt(at)=="up"?at.y1+Vt:at.y1-Vt;return rr}function be(at,ct){var ar=V(at),Vt=Se(ct)/Math.tan(ar),rr=lt(at)=="up"?at.y1-Vt:at.y1+Vt;return rr}function Be(at,ct,ar,Vt){at.links.forEach(function(rr){if(!rr.circular&&rr.target.column-rr.source.column>1){var tt=rr.source.column+1,je=rr.target.column-1,Ue=1,Ae=je-tt+1;for(Ue=1;tt<=je;tt++,Ue++)at.nodes.forEach(function(rt){if(rt.column==tt){var St=Ue/(Ae+1),Tt=Math.pow(1-St,3),dt=3*St*Math.pow(1-St,2),Et=3*Math.pow(St,2)*(1-St),pt=Math.pow(St,3),jt=Tt*rr.y0+dt*rr.y0+Et*rr.y1+pt*rr.y1,or=jt-rr.width/2,mr=jt+rr.width/2,Ar;or>rt.y0&&orrt.y0&&mrrt.y1&&me(ei,Ar,ct,ar)})):orrt.y1&&(Ar=mr-rt.y0+10,rt=me(rt,Ar,ct,ar),at.nodes.forEach(function(ei){C(ei,Vt)==C(rt,Vt)||ei.column!=rt.column||ei.y0rt.y1&&me(ei,Ar,ct,ar)}))}})}})}function Le(at,ct){return at.y0>ct.y0&&at.y0ct.y0&&at.y1ct.y1}function me(at,ct,ar,Vt){return at.y0+ct>=ar&&at.y1+ct<=Vt&&(at.y0=at.y0+ct,at.y1=at.y1+ct,at.targetLinks.forEach(function(rr){rr.y1=rr.y1+ct}),at.sourceLinks.forEach(function(rr){rr.y0=rr.y0+ct})),at}function Pe(at,ct,ar,Vt){at.nodes.forEach(function(rr){Vt&&rr.y+(rr.y1-rr.y0)>ct&&(rr.y=rr.y-(rr.y+(rr.y1-rr.y0)-ct));var tt=at.links.filter(function(Ae){return C(Ae.source,ar)==C(rr,ar)}),je=tt.length;je>1&&tt.sort(function(Ae,rt){if(!Ae.circular&&!rt.circular){if(Ae.target.column==rt.target.column)return Ae.y1-rt.y1;if(He(Ae,rt)){if(Ae.target.column>rt.target.column){var St=be(rt,Ae);return Ae.y1-St}if(rt.target.column>Ae.target.column){var Tt=be(Ae,rt);return Tt-rt.y1}}else return Ae.y1-rt.y1}if(Ae.circular&&!rt.circular)return Ae.circularLinkType=="top"?-1:1;if(rt.circular&&!Ae.circular)return rt.circularLinkType=="top"?1:-1;if(Ae.circular&&rt.circular)return Ae.circularLinkType===rt.circularLinkType&&Ae.circularLinkType=="top"?Ae.target.column===rt.target.column?Ae.target.y1-rt.target.y1:rt.target.column-Ae.target.column:Ae.circularLinkType===rt.circularLinkType&&Ae.circularLinkType=="bottom"?Ae.target.column===rt.target.column?rt.target.y1-Ae.target.y1:Ae.target.column-rt.target.column:Ae.circularLinkType=="top"?-1:1});var Ue=rr.y0;tt.forEach(function(Ae){Ae.y0=Ue+Ae.width/2,Ue=Ue+Ae.width}),tt.forEach(function(Ae,rt){if(Ae.circularLinkType=="bottom"){var St=rt+1,Tt=0;for(St;St1&&rr.sort(function(Ue,Ae){if(!Ue.circular&&!Ae.circular){if(Ue.source.column==Ae.source.column)return Ue.y0-Ae.y0;if(He(Ue,Ae)){if(Ae.source.column0?"up":"down"}function mt(at,ct){return C(at.source,ct)==C(at.target,ct)}function Ht(at,ct,ar){var Vt=at.nodes,rr=at.links,tt=!1,je=!1;if(rr.forEach(function(dt){dt.circularLinkType=="top"?tt=!0:dt.circularLinkType=="bottom"&&(je=!0)}),tt==!1||je==!1){var Ue=t.min(Vt,function(dt){return dt.y0}),Ae=t.max(Vt,function(dt){return dt.y1}),rt=Ae-Ue,St=ar-ct,Tt=St/rt;Vt.forEach(function(dt){var Et=(dt.y1-dt.y0)*Tt;dt.y0=(dt.y0-Ue)*Tt,dt.y1=dt.y0+Et}),rr.forEach(function(dt){dt.y0=(dt.y0-Ue)*Tt,dt.y1=(dt.y1-Ue)*Tt,dt.width=dt.width*Tt})}}e.sankeyCircular=E,e.sankeyCenter=u,e.sankeyLeft=o,e.sankeyRight=s,e.sankeyJustify=l,Object.defineProperty(e,"__esModule",{value:!0})})});var e$=ye((T2r,nXe)=>{"use strict";nXe.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:"linear",cn:{sankey:"sankey",sankeyLinks:"sankey-links",sankeyLink:"sankey-link",sankeyNodeSet:"sankey-node-set",sankeyNode:"sankey-node",nodeRect:"node-rect",nodeLabel:"node-label"}}});var mXe=ye((A2r,gXe)=>{"use strict";var aXe=ZWe(),iYt=(j2(),gb(H2)).interpolateNumber,O5=qa(),oC=QWe(),nYt=iXe(),Nu=e$(),B5=fd(),yw=ka(),aYt=So(),w1=Pr(),i$=w1.strTranslate,oYt=w1.strRotate,n$=ny(),sC=n$.keyFun,R7=n$.repeat,fXe=n$.unwrap,oXe=Zl(),sYt=Oa(),hXe=Dh(),lYt=hXe.CAP_SHIFT,uYt=hXe.LINE_SPACING,cYt=3;function fYt(e,t,r){var n=fXe(t),i=n.trace,a=i.domain,o=i.orientation==="h",s=i.node.pad,l=i.node.thickness,u={justify:oC.sankeyJustify,left:oC.sankeyLeft,right:oC.sankeyRight,center:oC.sankeyCenter}[i.node.align],c=e.width*(a.x[1]-a.x[0]),f=e.height*(a.y[1]-a.y[0]),h=n._nodes,d=n._links,v=n.circular,m;v?m=nYt.sankeyCircular().circularLinkGap(0):m=oC.sankey(),m.iterations(Nu.sankeyIterations).size(o?[c,f]:[f,c]).nodeWidth(l).nodePadding(s).nodeId(function(V){return V.pointNumber}).nodeAlign(u).nodes(h).links(d);var b=m();m.nodePadding()=N||(j=N-Z.y0,j>1e-6&&(Z.y0+=j,Z.y1+=j)),N=Z.y1+s})}function P(V){var G=V.map(function(_e,Ee){return{x0:_e.x0,index:Ee}}).sort(function(_e,Ee){return _e.x0-Ee.x0}),Z=[],j=-1,N,H=-1/0,ie;for(p=0;pH+l&&(j+=1,N=ae.x0),H=ae.x0,Z[j]||(Z[j]=[]),Z[j].push(ae),ie=N-ae.x0,ae.x0+=ie,ae.x1+=ie}return Z}if(i.node.x.length&&i.node.y.length){for(p=0;p0?" L "+i.targetX+" "+i.targetY:"")+"Z"):(r="M "+(i.targetX-t)+" "+(i.targetY-n)+" L "+(i.rightInnerExtent-t)+" "+(i.targetY-n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightSmallArcRadius+n)+" 0 0 0 "+(i.rightFullExtent-n-t)+" "+(i.targetY+i.rightSmallArcRadius)+" L "+(i.rightFullExtent-n-t)+" "+i.verticalRightInnerExtent,a&&o?r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightInnerExtent-n-t)+" "+(i.verticalFullExtent+n)+" L "+(i.rightFullExtent+n-t-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent+n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent:a?r+=" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightFullExtent-t-n-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" L "+(i.leftFullExtent+n+(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent:r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightInnerExtent-t)+" "+(i.verticalFullExtent+n)+" L "+i.leftInnerExtent+" "+(i.verticalFullExtent+n)+" A "+(i.leftLargeArcRadius+n)+" "+(i.leftLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent,r+=" L "+(i.leftFullExtent+n)+" "+(i.sourceY+i.leftSmallArcRadius)+" A "+(i.leftLargeArcRadius+n)+" "+(i.leftSmallArcRadius+n)+" 0 0 0 "+i.leftInnerExtent+" "+(i.sourceY-n)+" L "+i.sourceX+" "+(i.sourceY-n)+" L "+i.sourceX+" "+(i.sourceY+n)+" L "+i.leftInnerExtent+" "+(i.sourceY+n)+" A "+(i.leftLargeArcRadius-n)+" "+(i.leftSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent-n)+" "+(i.sourceY+i.leftSmallArcRadius)+" L "+(i.leftFullExtent-n)+" "+i.verticalLeftInnerExtent,a&&o?r+=" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent-n-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" L "+(i.rightFullExtent+n-t+(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent:a?r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+(i.verticalFullExtent+n)+" L "+(i.rightFullExtent-t-n)+" "+(i.verticalFullExtent+n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent:r+=" A "+(i.leftLargeArcRadius-n)+" "+(i.leftLargeArcRadius-n)+" 0 0 1 "+i.leftInnerExtent+" "+(i.verticalFullExtent-n)+" L "+(i.rightInnerExtent-t)+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightLargeArcRadius-n)+" 0 0 1 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent,r+=" L "+(i.rightFullExtent+n-t)+" "+(i.targetY+i.rightSmallArcRadius)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightInnerExtent-t)+" "+(i.targetY+n)+" L "+(i.targetX-t)+" "+(i.targetY+n)+(t>0?" L "+i.targetX+" "+i.targetY:"")+"Z"),r}function a$(){var e=.5;function t(r){var n=r.linkArrowLength;if(r.link.circular)return dYt(r.link,n);var i=Math.abs((r.link.target.x0-r.link.source.x1)/2);n>i&&(n=i);var a=r.link.source.x1,o=r.link.target.x0-n,s=iYt(a,o),l=s(e),u=s(1-e),c=r.link.y0-r.link.width/2,f=r.link.y0+r.link.width/2,h=r.link.y1-r.link.width/2,d=r.link.y1+r.link.width/2,v="M"+a+","+c,m="C"+l+","+c+" "+u+","+h+" "+o+","+h,b="C"+u+","+d+" "+l+","+f+" "+a+","+f,p=n>0?"L"+(o+n)+","+(h+r.link.width/2):"";return p+="L"+o+","+d,v+m+p+b+"Z"}return t}function vYt(e,t){var r=B5(t.color),n=Nu.nodePadAcross,i=e.nodePad/2;t.dx=t.x1-t.x0,t.dy=t.y1-t.y0;var a=t.dx,o=Math.max(.5,t.dy),s="node_"+t.pointNumber;return t.group&&(s=w1.randstr()),t.trace=e.trace,t.curveNumber=e.trace.index,{index:t.pointNumber,key:s,partOfGroup:t.partOfGroup||!1,group:t.group,traceId:e.key,trace:e.trace,node:t,nodePad:e.nodePad,nodeLineColor:e.nodeLineColor,nodeLineWidth:e.nodeLineWidth,textFont:e.textFont,size:e.horizontal?e.height:e.width,visibleWidth:Math.ceil(a),visibleHeight:o,zoneX:-n,zoneY:-i,zoneWidth:a+2*n,zoneHeight:o+2*i,labelY:e.horizontal?t.dy/2+1:t.dx/2+1,left:t.originalLayer===1,sizeAcross:e.width,forceLayouts:e.forceLayouts,horizontal:e.horizontal,darkBackground:r.getBrightness()<=128,tinyColorHue:yw.tinyRGB(r),tinyColorAlpha:r.getAlpha(),valueFormat:e.valueFormat,valueSuffix:e.valueSuffix,sankey:e.sankey,graph:e.graph,arrangement:e.arrangement,uniqueNodeLabelPathId:[e.guid,e.key,s].join("_"),interactionState:e.interactionState,figure:e}}function r$(e){e.attr("transform",function(t){return i$(t.node.x0.toFixed(3),t.node.y0.toFixed(3))})}function pYt(e){e.call(r$)}function dXe(e,t){e.call(pYt),t.attr("d",a$())}function sXe(e){e.attr("width",function(t){return t.node.x1-t.node.x0}).attr("height",function(t){return t.visibleHeight})}function t$(e){return e.link.width>1||e.linkLineWidth>0}function lXe(e){var t=i$(e.translateX,e.translateY);return t+(e.horizontal?"matrix(1 0 0 1 0 0)":"matrix(0 1 1 0 0 0)")}function uXe(e,t,r){e.on(".basic",null).on("mouseover.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.hover(this,n,t),n.interactionState.hovered=[this,n])}).on("mousemove.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.follow(this,n),n.interactionState.hovered=[this,n])}).on("mouseout.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.unhover(this,n,t),n.interactionState.hovered=!1)}).on("click.basic",function(n){n.interactionState.hovered&&(r.unhover(this,n,t),n.interactionState.hovered=!1),!n.interactionState.dragInProgress&&!n.partOfGroup&&r.select(this,n,t)})}function gYt(e,t,r,n){var i=O5.behavior.drag().origin(function(a){return{x:a.node.x0+a.visibleWidth/2,y:a.node.y0+a.visibleHeight/2}}).on("dragstart",function(a){if(a.arrangement!=="fixed"&&(w1.ensureSingle(n._fullLayout._infolayer,"g","dragcover",function(s){n._fullLayout._dragCover=s}),w1.raiseToTop(this),a.interactionState.dragInProgress=a.node,cXe(a.node),a.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,a.interactionState.hovered),a.interactionState.hovered=!1),a.arrangement==="snap")){var o=a.traceId+"|"+a.key;a.forceLayouts[o]?a.forceLayouts[o].alpha(1):mYt(e,o,a,n),yYt(e,t,a,o,n)}}).on("drag",function(a){if(a.arrangement!=="fixed"){var o=O5.event.x,s=O5.event.y;a.arrangement==="snap"?(a.node.x0=o-a.visibleWidth/2,a.node.x1=o+a.visibleWidth/2,a.node.y0=s-a.visibleHeight/2,a.node.y1=s+a.visibleHeight/2):(a.arrangement==="freeform"&&(a.node.x0=o-a.visibleWidth/2,a.node.x1=o+a.visibleWidth/2),s=Math.max(0,Math.min(a.size-a.visibleHeight/2,s)),a.node.y0=s-a.visibleHeight/2,a.node.y1=s+a.visibleHeight/2),cXe(a.node),a.arrangement!=="snap"&&(a.sankey.update(a.graph),dXe(e.filter(pXe(a)),t))}}).on("dragend",function(a){if(a.arrangement!=="fixed"){a.interactionState.dragInProgress=!1;for(var o=0;o0)window.requestAnimationFrame(a);else{var l=r.node.originalX;r.node.x0=l-r.visibleWidth/2,r.node.x1=l+r.visibleWidth/2,vXe(r,i)}})}function _Yt(e,t,r,n){return function(){for(var a=0,o=0;o0&&n.forceLayouts[t].alpha(0)}}function vXe(e,t){for(var r=[],n=[],i=0;i{"use strict";var Zv=qa(),s$=Pr(),D7=s$.numberFormat,TYt=mXe(),N5=ef(),AYt=ka(),Fx=e$().cn,lC=s$._;function yXe(e){return e!==""}function U5(e,t){return e.filter(function(r){return r.key===t.traceId})}function _Xe(e,t){Zv.select(e).select("path").style("fill-opacity",t),Zv.select(e).select("rect").style("fill-opacity",t)}function xXe(e){Zv.select(e).select("text.name").style("fill","black")}function bXe(e){return function(t){return e.node.sourceLinks.indexOf(t.link)!==-1||e.node.targetLinks.indexOf(t.link)!==-1}}function wXe(e){return function(t){return t.node.sourceLinks.indexOf(e.link)!==-1||t.node.targetLinks.indexOf(e.link)!==-1}}function TXe(e,t,r){t&&r&&U5(r,t).selectAll("."+Fx.sankeyLink).filter(bXe(t)).call(AXe.bind(0,t,r,!1))}function o$(e,t,r){t&&r&&U5(r,t).selectAll("."+Fx.sankeyLink).filter(bXe(t)).call(SXe.bind(0,t,r,!1))}function AXe(e,t,r,n){n.style("fill",function(i){if(!i.link.concentrationscale)return i.tinyColorHoverHue}).style("fill-opacity",function(i){if(!i.link.concentrationscale)return i.tinyColorHoverAlpha}),n.each(function(i){var a=i.link.label;a!==""&&U5(t,e).selectAll("."+Fx.sankeyLink).filter(function(o){return o.link.label===a}).style("fill",function(o){if(!o.link.concentrationscale)return o.tinyColorHoverHue}).style("fill-opacity",function(o){if(!o.link.concentrationscale)return o.tinyColorHoverAlpha})}),r&&U5(t,e).selectAll("."+Fx.sankeyNode).filter(wXe(e)).call(TXe)}function SXe(e,t,r,n){n.style("fill",function(i){return i.tinyColorHue}).style("fill-opacity",function(i){return i.tinyColorAlpha}),n.each(function(i){var a=i.link.label;a!==""&&U5(t,e).selectAll("."+Fx.sankeyLink).filter(function(o){return o.link.label===a}).style("fill",function(o){return o.tinyColorHue}).style("fill-opacity",function(o){return o.tinyColorAlpha})}),r&&U5(t,e).selectAll(Fx.sankeyNode).filter(wXe(e)).call(o$)}function kf(e,t){var r=e.hoverlabel||{},n=s$.nestedProperty(r,t).get();return Array.isArray(n)?!1:n}MXe.exports=function(t,r){for(var n=t._fullLayout,i=n._paper,a=n._size,o=0;o"),color:kf(C,"bgcolor")||AYt.addOpacity(z.color,1),borderColor:kf(C,"bordercolor"),fontFamily:kf(C,"font.family"),fontSize:kf(C,"font.size"),fontColor:kf(C,"font.color"),fontWeight:kf(C,"font.weight"),fontStyle:kf(C,"font.style"),fontVariant:kf(C,"font.variant"),fontTextcase:kf(C,"font.textcase"),fontLineposition:kf(C,"font.lineposition"),fontShadow:kf(C,"font.shadow"),nameLength:kf(C,"namelength"),textAlign:kf(C,"align"),idealAlign:Zv.event.x"),color:kf(C,"bgcolor")||x.tinyColorHue,borderColor:kf(C,"bordercolor"),fontFamily:kf(C,"font.family"),fontSize:kf(C,"font.size"),fontColor:kf(C,"font.color"),fontWeight:kf(C,"font.weight"),fontStyle:kf(C,"font.style"),fontVariant:kf(C,"font.variant"),fontTextcase:kf(C,"font.textcase"),fontLineposition:kf(C,"font.lineposition"),fontShadow:kf(C,"font.shadow"),nameLength:kf(C,"namelength"),textAlign:kf(C,"align"),idealAlign:"left",hovertemplate:C.hovertemplate,hovertemplateLabels:V,eventData:[x.node]},{container:n._hoverlayer.node(),outerContainer:n._paper.node(),gd:t});_Xe(j,.85),xXe(j)}}},T=function(L,x,C){t._fullLayout.hovermode!==!1&&(Zv.select(L).call(o$,x,C),x.node.trace.node.hoverinfo!=="skip"&&(x.node.fullData=x.node.trace,t.emit("plotly_unhover",{event:Zv.event,points:[x.node]})),N5.loneUnhover(n._hoverlayer.node()))};TYt(t,i,r,{width:a.w,height:a.h,margin:{t:a.t,r:a.r,b:a.b,l:a.l}},{linkEvents:{hover:u,follow:m,unhover:b,select:l},nodeEvents:{hover:k,follow:M,unhover:T,select:p}})}});var EXe=ye(_w=>{"use strict";var SYt=mc().overrideAll,MYt=Id().getModuleCalcData,EYt=l$(),kYt=W1(),CYt=Eg(),LYt=yv(),PYt=qf().prepSelect,u$=Pr(),IYt=Oa(),F7="sankey";_w.name=F7;_w.baseLayoutAttrOverrides=SYt({hoverlabel:kYt.hoverlabel},"plot","nested");_w.plot=function(e){var t=MYt(e.calcdata,F7)[0];EYt(e,t),_w.updateFx(e)};_w.clean=function(e,t,r,n){var i=n._has&&n._has(F7),a=t._has&&t._has(F7);i&&!a&&(n._paperdiv.selectAll(".sankey").remove(),n._paperdiv.selectAll(".bgsankey").remove())};_w.updateFx=function(e){for(var t=0;t{"use strict";kXe.exports=function(t,r){for(var n=t.cd,i=[],a=n[0].trace,o=a._sankey.graph.nodes,s=0;s{"use strict";LXe.exports={attributes:JJ(),supplyDefaults:DWe(),calc:BWe(),plot:l$(),moduleType:"trace",name:"sankey",basePlotModule:EXe(),selectPoints:CXe(),categories:["noOpacity"],meta:{}}});var RXe=ye((C2r,IXe)=>{"use strict";IXe.exports=PXe()});var FXe=ye(V5=>{"use strict";var DXe=Mc();V5.name="indicator";V5.plot=function(e,t,r,n){DXe.plotBasePlot(V5.name,e,t,r,n)};V5.clean=function(e,t,r,n){DXe.cleanBasePlot(V5.name,e,t,r,n)}});var f$=ye((P2r,UXe)=>{"use strict";var zx=Ao().extendFlat,qXe=Ao().extendDeep,DYt=mc().overrideAll,OXe=ec(),BXe=Ih(),FYt=Cc().attributes,Nf=Rd(),zYt=vl().templatedArray,z7=QT(),zXe=vf().descriptionOnlyNumbers,c$=OXe({editType:"plot",colorEditType:"plot"}),uC={color:{valType:"color",editType:"plot"},line:{color:{valType:"color",dflt:BXe.defaultLine,editType:"plot"},width:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},thickness:{valType:"number",min:0,max:1,dflt:1,editType:"plot"},editType:"calc"},NXe={valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},qYt=zYt("step",qXe({},uC,{range:NXe}));UXe.exports={mode:{valType:"flaglist",editType:"calc",flags:["number","delta","gauge"],dflt:"number"},value:{valType:"number",editType:"calc",anim:!0},align:{valType:"enumerated",values:["left","center","right"],editType:"plot"},domain:FYt({name:"indicator",trace:!0,editType:"calc"}),title:{text:{valType:"string",editType:"plot"},align:{valType:"enumerated",values:["left","center","right"],editType:"plot"},font:zx({},c$,{}),editType:"plot"},number:{valueformat:{valType:"string",dflt:"",editType:"plot",description:zXe("value")},font:zx({},c$,{}),prefix:{valType:"string",dflt:"",editType:"plot"},suffix:{valType:"string",dflt:"",editType:"plot"},editType:"plot"},delta:{reference:{valType:"number",editType:"calc"},position:{valType:"enumerated",values:["top","bottom","left","right"],dflt:"bottom",editType:"plot"},relative:{valType:"boolean",editType:"plot",dflt:!1},valueformat:{valType:"string",editType:"plot",description:zXe("value")},increasing:{symbol:{valType:"string",dflt:z7.INCREASING.SYMBOL,editType:"plot"},color:{valType:"color",dflt:z7.INCREASING.COLOR,editType:"plot"},editType:"plot"},decreasing:{symbol:{valType:"string",dflt:z7.DECREASING.SYMBOL,editType:"plot"},color:{valType:"color",dflt:z7.DECREASING.COLOR,editType:"plot"},editType:"plot"},font:zx({},c$,{}),prefix:{valType:"string",dflt:"",editType:"plot"},suffix:{valType:"string",dflt:"",editType:"plot"},editType:"calc"},gauge:{shape:{valType:"enumerated",editType:"plot",dflt:"angular",values:["angular","bullet"]},bar:qXe({},uC,{color:{dflt:"green"}}),bgcolor:{valType:"color",editType:"plot"},bordercolor:{valType:"color",dflt:BXe.defaultLine,editType:"plot"},borderwidth:{valType:"number",min:0,dflt:1,editType:"plot"},axis:DYt({range:NXe,visible:zx({},Nf.visible,{dflt:!0}),tickmode:Nf.minor.tickmode,nticks:Nf.nticks,tick0:Nf.tick0,dtick:Nf.dtick,tickvals:Nf.tickvals,ticktext:Nf.ticktext,ticks:zx({},Nf.ticks,{dflt:"outside"}),ticklen:Nf.ticklen,tickwidth:Nf.tickwidth,tickcolor:Nf.tickcolor,ticklabelstep:Nf.ticklabelstep,showticklabels:Nf.showticklabels,labelalias:Nf.labelalias,tickfont:OXe({}),tickangle:Nf.tickangle,tickformat:Nf.tickformat,tickformatstops:Nf.tickformatstops,tickprefix:Nf.tickprefix,showtickprefix:Nf.showtickprefix,ticksuffix:Nf.ticksuffix,showticksuffix:Nf.showticksuffix,separatethousands:Nf.separatethousands,exponentformat:Nf.exponentformat,minexponent:Nf.minexponent,showexponent:Nf.showexponent,editType:"plot"},"plot"),steps:qYt,threshold:{line:{color:zx({},uC.line.color,{}),width:zx({},uC.line.width,{dflt:1}),editType:"plot"},thickness:zx({},uC.thickness,{dflt:.85}),value:{valType:"number",editType:"calc",dflt:!1},editType:"plot"},editType:"plot"}}});var h$=ye((I2r,VXe)=>{"use strict";VXe.exports={defaultNumberFontSize:80,bulletNumberDomainSize:.25,bulletPadding:.025,innerRadius:.75,valueThickness:.5,titlePadding:5,horizontalPadding:10}});var jXe=ye((R2r,HXe)=>{"use strict";var ly=Pr(),O7=f$(),OYt=Cc().defaults,GXe=vl(),BYt=Kd(),q7=h$(),NYt=Pb(),UYt=q3(),VYt=s_(),GYt=l_();function HYt(e,t,r,n){function i(x,C){return ly.coerce(e,t,O7,x,C)}OYt(t,n,i),i("mode"),t._hasNumber=t.mode.indexOf("number")!==-1,t._hasDelta=t.mode.indexOf("delta")!==-1,t._hasGauge=t.mode.indexOf("gauge")!==-1;var a=i("value");t._range=[0,typeof a=="number"?1.5*a:1];var o=new Array(2),s;if(t._hasNumber){i("number.valueformat");var l=ly.extendFlat({},n.font);l.size=void 0,ly.coerceFont(i,"number.font",l),t.number.font.size===void 0&&(t.number.font.size=q7.defaultNumberFontSize,o[0]=!0),i("number.prefix"),i("number.suffix"),s=t.number.font.size}var u;if(t._hasDelta){var c=ly.extendFlat({},n.font);c.size=void 0,ly.coerceFont(i,"delta.font",c),t.delta.font.size===void 0&&(t.delta.font.size=(t._hasNumber?.5:1)*(s||q7.defaultNumberFontSize),o[1]=!0),i("delta.reference",t.value),i("delta.relative"),i("delta.valueformat",t.delta.relative?"2%":""),i("delta.increasing.symbol"),i("delta.increasing.color"),i("delta.decreasing.symbol"),i("delta.decreasing.color"),i("delta.position"),i("delta.prefix"),i("delta.suffix"),u=t.delta.font.size}t._scaleNumbers=(!t._hasNumber||o[0])&&(!t._hasDelta||o[1])||!1;var f=ly.extendFlat({},n.font);f.size=.25*(s||u||q7.defaultNumberFontSize),ly.coerceFont(i,"title.font",f),i("title.text");var h,d,v,m;function b(x,C){return ly.coerce(h,d,O7.gauge,x,C)}function p(x,C){return ly.coerce(v,m,O7.gauge.axis,x,C)}if(t._hasGauge){h=e.gauge,h||(h={}),d=GXe.newContainer(t,"gauge"),b("shape");var k=t._isBullet=t.gauge.shape==="bullet";k||i("title.align","center");var M=t._isAngular=t.gauge.shape==="angular";M||i("align","center"),b("bgcolor",n.paper_bgcolor),b("borderwidth"),b("bordercolor"),b("bar.color"),b("bar.line.color"),b("bar.line.width");var T=q7.valueThickness*(t.gauge.shape==="bullet"?.5:1);b("bar.thickness",T),BYt(h,d,{name:"steps",handleItemDefaults:jYt}),b("threshold.value"),b("threshold.thickness"),b("threshold.line.width"),b("threshold.line.color"),v={},h&&(v=h.axis||{}),m=GXe.newContainer(d,"axis"),p("visible"),t._range=p("range",t._range);var L={font:n.font,noAutotickangles:!0,outerTicks:!0,noTicklabelshift:!0,noTicklabelstandoff:!0};NYt(v,m,p,"linear"),GYt(v,m,p,"linear",L),VYt(v,m,p,"linear",L),UYt(v,m,p,L)}else i("title.align","center"),i("align","center"),t._isAngular=t._isBullet=!1;t._length=null}function jYt(e,t){function r(n,i){return ly.coerce(e,t,O7.gauge.steps,n,i)}r("color"),r("line.color"),r("line.width"),r("range"),r("thickness")}HXe.exports={supplyDefaults:HYt}});var XXe=ye((D2r,WXe)=>{"use strict";function WYt(e,t){var r=[],n=t.value;typeof t._lastValue!="number"&&(t._lastValue=t.value);var i=t._lastValue,a=i;return t._hasDelta&&typeof t.delta.reference=="number"&&(a=t.delta.reference),r[0]={y:n,lastY:i,delta:n-a,relativeDelta:(n-a)/a},r}WXe.exports={calc:WYt}});var QXe=ye((F2r,$Xe)=>{"use strict";var Aw=qa(),XYt=(j2(),gb(H2)).interpolate,ZXe=(j2(),gb(H2)).interpolateNumber,qx=Pr(),ZYt=qx.strScale,fC=qx.strTranslate,YYt=qx.rad2deg,KYt=Dh().MID_SHIFT,Tw=So(),xw=h$(),N7=Zl(),lv=ho(),JYt=h4(),$Yt=vI(),QYt=Rd(),G5=ka(),d$={left:"start",center:"middle",right:"end"},bw={left:0,center:.5,right:1},YXe=/[yzafpnµmkMGTPEZY]/;function hC(e){return e&&e.duration>0}$Xe.exports=function(t,r,n,i){var a=t._fullLayout,o;hC(n)&&i&&(o=i()),qx.makeTraceGroups(a._indicatorlayer,r,"trace").each(function(s){var l=s[0],u=l.trace,c=Aw.select(this),f=u._hasGauge,h=u._isAngular,d=u._isBullet,v=u.domain,m={w:a._size.w*(v.x[1]-v.x[0]),h:a._size.h*(v.y[1]-v.y[0]),l:a._size.l+a._size.w*v.x[0],r:a._size.r+a._size.w*(1-v.x[1]),t:a._size.t+a._size.h*(1-v.y[1]),b:a._size.b+a._size.h*v.y[0]},b=m.l+m.w/2,p=m.t+m.h/2,k=Math.min(m.w/2,m.h),M=xw.innerRadius*k,T,L,x,C=u.align||"center";if(L=p,!f)T=m.l+bw[C]*m.w,x=function(j){return KXe(j,m.w,m.h)};else if(h&&(T=b,L=p+k/2,x=function(j){return nKt(j,.9*M)}),d){var S=xw.bulletPadding,g=1-xw.bulletNumberDomainSize+S;T=m.l+(g+(1-g)*bw[C])*m.w,x=function(j){return KXe(j,(xw.bulletNumberDomainSize-S)*m.w,m.h)}}rKt(t,c,s,{numbersX:T,numbersY:L,numbersScaler:x,transitionOpts:n,onComplete:o});var P,E;f&&(P={range:u.gauge.axis.range,color:u.gauge.bgcolor,line:{color:u.gauge.bordercolor,width:0},thickness:1},E={range:u.gauge.axis.range,color:"rgba(0, 0, 0, 0)",line:{color:u.gauge.bordercolor,width:u.gauge.borderwidth},thickness:1});var z=c.selectAll("g.angular").data(h?s:[]);z.exit().remove();var q=c.selectAll("g.angularaxis").data(h?s:[]);q.exit().remove(),h&&tKt(t,c,s,{radius:k,innerRadius:M,gauge:z,layer:q,size:m,gaugeBg:P,gaugeOutline:E,transitionOpts:n,onComplete:o});var V=c.selectAll("g.bullet").data(d?s:[]);V.exit().remove();var G=c.selectAll("g.bulletaxis").data(d?s:[]);G.exit().remove(),d&&eKt(t,c,s,{gauge:V,layer:G,size:m,gaugeBg:P,gaugeOutline:E,transitionOpts:n,onComplete:o});var Z=c.selectAll("text.title").data(s);Z.exit().remove(),Z.enter().append("text").classed("title",!0),Z.attr("text-anchor",function(){return d?d$.right:d$[u.title.align]}).text(u.title.text).call(Tw.font,u.title.font).call(N7.convertToTspans,t),Z.attr("transform",function(){var j=m.l+m.w*bw[u.title.align],N,H=xw.titlePadding,ie=Tw.bBox(Z.node());if(f){if(h)if(u.gauge.axis.visible){var ae=Tw.bBox(q.node());N=ae.top-H-ie.bottom}else N=m.t+m.h/2-k/2-ie.bottom-H;d&&(N=L-(ie.top+ie.bottom)/2,j=m.l-xw.bulletPadding*m.w)}else N=u._numbersTop-H-ie.bottom;return fC(j,N)})})};function eKt(e,t,r,n){var i=r[0].trace,a=n.gauge,o=n.layer,s=n.gaugeBg,l=n.gaugeOutline,u=n.size,c=i.domain,f=n.transitionOpts,h=n.onComplete,d,v,m,b,p;a.enter().append("g").classed("bullet",!0),a.attr("transform",fC(u.l,u.t)),o.enter().append("g").classed("bulletaxis",!0).classed("crisp",!0),o.selectAll("g.xbulletaxistick,path,text").remove();var k=u.h,M=i.gauge.bar.thickness*k,T=c.x[0],L=c.x[0]+(c.x[1]-c.x[0])*(i._hasNumber||i._hasDelta?1-xw.bulletNumberDomainSize:1);d=cC(e,i.gauge.axis),d._id="xbulletaxis",d.domain=[T,L],d.setScale(),v=lv.calcTicks(d),m=lv.makeTransTickFn(d),b=lv.getTickSigns(d)[2],p=u.t+u.h,d.visible&&(lv.drawTicks(e,d,{vals:d.ticks==="inside"?lv.clipEnds(d,v):v,layer:o,path:lv.makeTickPath(d,p,b),transFn:m}),lv.drawLabels(e,d,{vals:v,layer:o,transFn:m,labelFns:lv.makeLabelFns(d,p)}));function x(q){q.attr("width",function(V){return Math.max(0,d.c2p(V.range[1])-d.c2p(V.range[0]))}).attr("x",function(V){return d.c2p(V.range[0])}).attr("y",function(V){return .5*(1-V.thickness)*k}).attr("height",function(V){return V.thickness*k})}var C=[s].concat(i.gauge.steps),S=a.selectAll("g.bg-bullet").data(C);S.enter().append("g").classed("bg-bullet",!0).append("rect"),S.select("rect").call(x).call(ww),S.exit().remove();var g=a.selectAll("g.value-bullet").data([i.gauge.bar]);g.enter().append("g").classed("value-bullet",!0).append("rect"),g.select("rect").attr("height",M).attr("y",(k-M)/2).call(ww),hC(f)?g.select("rect").transition().duration(f.duration).ease(f.easing).each("end",function(){h&&h()}).each("interrupt",function(){h&&h()}).attr("width",Math.max(0,d.c2p(Math.min(i.gauge.axis.range[1],r[0].y)))):g.select("rect").attr("width",typeof r[0].y=="number"?Math.max(0,d.c2p(Math.min(i.gauge.axis.range[1],r[0].y))):0),g.exit().remove();var P=r.filter(function(){return i.gauge.threshold.value||i.gauge.threshold.value===0}),E=a.selectAll("g.threshold-bullet").data(P);E.enter().append("g").classed("threshold-bullet",!0).append("line"),E.select("line").attr("x1",d.c2p(i.gauge.threshold.value)).attr("x2",d.c2p(i.gauge.threshold.value)).attr("y1",(1-i.gauge.threshold.thickness)/2*k).attr("y2",(1-(1-i.gauge.threshold.thickness)/2)*k).call(G5.stroke,i.gauge.threshold.line.color).style("stroke-width",i.gauge.threshold.line.width),E.exit().remove();var z=a.selectAll("g.gauge-outline").data([l]);z.enter().append("g").classed("gauge-outline",!0).append("rect"),z.select("rect").call(x).call(ww),z.exit().remove()}function tKt(e,t,r,n){var i=r[0].trace,a=n.size,o=n.radius,s=n.innerRadius,l=n.gaugeBg,u=n.gaugeOutline,c=[a.l+a.w/2,a.t+a.h/2+o/2],f=n.gauge,h=n.layer,d=n.transitionOpts,v=n.onComplete,m=Math.PI/2;function b(_e){var Ee=i.gauge.axis.range[0],Ce=i.gauge.axis.range[1],ge=(_e-Ee)/(Ce-Ee)*Math.PI-m;return ge<-m?-m:ge>m?m:ge}function p(_e){return Aw.svg.arc().innerRadius((s+o)/2-_e/2*(o-s)).outerRadius((s+o)/2+_e/2*(o-s)).startAngle(-m)}function k(_e){_e.attr("d",function(Ee){return p(Ee.thickness).startAngle(b(Ee.range[0])).endAngle(b(Ee.range[1]))()})}var M,T,L,x;f.enter().append("g").classed("angular",!0),f.attr("transform",fC(c[0],c[1])),h.enter().append("g").classed("angularaxis",!0).classed("crisp",!0),h.selectAll("g.xangularaxistick,path,text").remove(),M=cC(e,i.gauge.axis),M.type="linear",M.range=i.gauge.axis.range,M._id="xangularaxis",M.ticklabeloverflow="allow",M.setScale();var C=function(_e){return(M.range[0]-_e.x)/(M.range[1]-M.range[0])*Math.PI+Math.PI},S={},g=lv.makeLabelFns(M,0),P=g.labelStandoff;S.xFn=function(_e){var Ee=C(_e);return Math.cos(Ee)*P},S.yFn=function(_e){var Ee=C(_e),Ce=Math.sin(Ee)>0?.2:1;return-Math.sin(Ee)*(P+_e.fontSize*Ce)+Math.abs(Math.cos(Ee))*(_e.fontSize*KYt)},S.anchorFn=function(_e){var Ee=C(_e),Ce=Math.cos(Ee);return Math.abs(Ce)<.1?"middle":Ce>0?"start":"end"},S.heightFn=function(_e,Ee,Ce){var ge=C(_e);return-.5*(1+Math.sin(ge))*Ce};var E=function(_e){return fC(c[0]+o*Math.cos(_e),c[1]-o*Math.sin(_e))};L=function(_e){return E(C(_e))};var z=function(_e){var Ee=C(_e);return E(Ee)+"rotate("+-YYt(Ee)+")"};if(T=lv.calcTicks(M),x=lv.getTickSigns(M)[2],M.visible){x=M.ticks==="inside"?-1:1;var q=(M.linewidth||1)/2;lv.drawTicks(e,M,{vals:T,layer:h,path:"M"+x*q+",0h"+x*M.ticklen,transFn:z}),lv.drawLabels(e,M,{vals:T,layer:h,transFn:L,labelFns:S})}var V=[l].concat(i.gauge.steps),G=f.selectAll("g.bg-arc").data(V);G.enter().append("g").classed("bg-arc",!0).append("path"),G.select("path").call(k).call(ww),G.exit().remove();var Z=p(i.gauge.bar.thickness),j=f.selectAll("g.value-arc").data([i.gauge.bar]);j.enter().append("g").classed("value-arc",!0).append("path");var N=j.select("path");hC(d)?(N.transition().duration(d.duration).ease(d.easing).each("end",function(){v&&v()}).each("interrupt",function(){v&&v()}).attrTween("d",iKt(Z,b(r[0].lastY),b(r[0].y))),i._lastValue=r[0].y):N.attr("d",typeof r[0].y=="number"?Z.endAngle(b(r[0].y)):"M0,0Z"),N.call(ww),j.exit().remove(),V=[];var H=i.gauge.threshold.value;(H||H===0)&&V.push({range:[H,H],color:i.gauge.threshold.color,line:{color:i.gauge.threshold.line.color,width:i.gauge.threshold.line.width},thickness:i.gauge.threshold.thickness});var ie=f.selectAll("g.threshold-arc").data(V);ie.enter().append("g").classed("threshold-arc",!0).append("path"),ie.select("path").call(k).call(ww),ie.exit().remove();var ae=f.selectAll("g.gauge-outline").data([u]);ae.enter().append("g").classed("gauge-outline",!0).append("path"),ae.select("path").call(k).call(ww),ae.exit().remove()}function rKt(e,t,r,n){var i=r[0].trace,a=n.numbersX,o=n.numbersY,s=i.align||"center",l=d$[s],u=n.transitionOpts,c=n.onComplete,f=qx.ensureSingle(t,"g","numbers"),h,d,v,m=[];i._hasNumber&&m.push("number"),i._hasDelta&&(m.push("delta"),i.delta.position==="left"&&m.reverse());var b=f.selectAll("text").data(m);b.enter().append("text"),b.attr("text-anchor",function(){return l}).attr("class",function(E){return E}).attr("x",null).attr("y",null).attr("dx",null).attr("dy",null),b.exit().remove();function p(E,z,q,V){if(E.match("s")&&q>=0!=V>=0&&!z(q).slice(-1).match(YXe)&&!z(V).slice(-1).match(YXe)){var G=E.slice().replace("s","f").replace(/\d+/,function(j){return parseInt(j)-1}),Z=cC(e,{tickformat:G});return function(j){return Math.abs(j)<1?lv.tickText(Z,j).text:z(j)}}else return z}function k(){var E=cC(e,{tickformat:i.number.valueformat},i._range);E.setScale(),lv.prepTicks(E);var z=function(j){return lv.tickText(E,j).text},q=i.number.suffix,V=i.number.prefix,G=f.select("text.number");function Z(){var j=typeof r[0].y=="number"?V+z(r[0].y)+q:"-";G.text(j).call(Tw.font,i.number.font).call(N7.convertToTspans,e)}return hC(u)?G.transition().duration(u.duration).ease(u.easing).each("end",function(){Z(),c&&c()}).each("interrupt",function(){Z(),c&&c()}).attrTween("text",function(){var j=Aw.select(this),N=ZXe(r[0].lastY,r[0].y);i._lastValue=r[0].y;var H=p(i.number.valueformat,z,r[0].lastY,r[0].y);return function(ie){j.text(V+H(N(ie))+q)}}):Z(),h=JXe(V+z(r[0].y)+q,i.number.font,l,e),G}function M(){var E=cC(e,{tickformat:i.delta.valueformat},i._range);E.setScale(),lv.prepTicks(E);var z=function(ie){return lv.tickText(E,ie).text},q=i.delta.suffix,V=i.delta.prefix,G=function(ie){var ae=i.delta.relative?ie.relativeDelta:ie.delta;return ae},Z=function(ie,ae){return ie===0||typeof ie!="number"||isNaN(ie)?"-":(ie>0?i.delta.increasing.symbol:i.delta.decreasing.symbol)+V+ae(ie)+q},j=function(ie){return ie.delta>=0?i.delta.increasing.color:i.delta.decreasing.color};i._deltaLastValue===void 0&&(i._deltaLastValue=G(r[0]));var N=f.select("text.delta");N.call(Tw.font,i.delta.font).call(G5.fill,j({delta:i._deltaLastValue}));function H(){N.text(Z(G(r[0]),z)).call(G5.fill,j(r[0])).call(N7.convertToTspans,e)}return hC(u)?N.transition().duration(u.duration).ease(u.easing).tween("text",function(){var ie=Aw.select(this),ae=G(r[0]),_e=i._deltaLastValue,Ee=p(i.delta.valueformat,z,_e,ae),Ce=ZXe(_e,ae);return i._deltaLastValue=ae,function(ge){ie.text(Z(Ce(ge),Ee)),ie.call(G5.fill,j({delta:Ce(ge)}))}}).each("end",function(){H(),c&&c()}).each("interrupt",function(){H(),c&&c()}):H(),d=JXe(Z(G(r[0]),z),i.delta.font,l,e),N}var T=i.mode+i.align,L;if(i._hasDelta&&(L=M(),T+=i.delta.position+i.delta.font.size+i.delta.font.family+i.delta.valueformat,T+=i.delta.increasing.symbol+i.delta.decreasing.symbol,v=d),i._hasNumber&&(k(),T+=i.number.font.size+i.number.font.family+i.number.valueformat+i.number.suffix+i.number.prefix,v=h),i._hasDelta&&i._hasNumber){var x=[(h.left+h.right)/2,(h.top+h.bottom)/2],C=[(d.left+d.right)/2,(d.top+d.bottom)/2],S,g,P=.75*i.delta.font.size;i.delta.position==="left"&&(S=B7(i,"deltaPos",0,-1*(h.width*bw[i.align]+d.width*(1-bw[i.align])+P),T,Math.min),g=x[1]-C[1],v={width:h.width+d.width+P,height:Math.max(h.height,d.height),left:d.left+S,right:h.right,top:Math.min(h.top,d.top+g),bottom:Math.max(h.bottom,d.bottom+g)}),i.delta.position==="right"&&(S=B7(i,"deltaPos",0,h.width*(1-bw[i.align])+d.width*bw[i.align]+P,T,Math.max),g=x[1]-C[1],v={width:h.width+d.width+P,height:Math.max(h.height,d.height),left:h.left,right:d.right+S,top:Math.min(h.top,d.top+g),bottom:Math.max(h.bottom,d.bottom+g)}),i.delta.position==="bottom"&&(S=null,g=d.height,v={width:Math.max(h.width,d.width),height:h.height+d.height,left:Math.min(h.left,d.left),right:Math.max(h.right,d.right),top:h.bottom-h.height,bottom:h.bottom+d.height}),i.delta.position==="top"&&(S=null,g=h.top,v={width:Math.max(h.width,d.width),height:h.height+d.height,left:Math.min(h.left,d.left),right:Math.max(h.right,d.right),top:h.bottom-h.height-d.height,bottom:h.bottom}),L.attr({dx:S,dy:g})}(i._hasNumber||i._hasDelta)&&f.attr("transform",function(){var E=n.numbersScaler(v);T+=E[2];var z=B7(i,"numbersScale",1,E[0],T,Math.min),q;i._scaleNumbers||(z=1),i._isAngular?q=o-z*v.bottom:q=o-z*(v.top+v.bottom)/2,i._numbersTop=z*v.top+q;var V=v[s];s==="center"&&(V=(v.left+v.right)/2);var G=a-z*V;return G=B7(i,"numbersTranslate",0,G,T,Math.max),fC(G,q)+ZYt(z)})}function ww(e){e.each(function(t){G5.stroke(Aw.select(this),t.line.color)}).each(function(t){G5.fill(Aw.select(this),t.color)}).style("stroke-width",function(t){return t.line.width})}function iKt(e,t,r){return function(){var n=XYt(t,r);return function(i){return e.endAngle(n(i))()}}}function cC(e,t,r){var n=e._fullLayout,i=qx.extendFlat({type:"linear",ticks:"outside",range:r,showline:!0},t),a={type:"linear",_id:"x"+t._id},o={letter:"x",font:n.font,noAutotickangles:!0,noHover:!0,noTickson:!0};function s(l,u){return qx.coerce(i,a,QYt,l,u)}return JYt(i,a,s,o,n),$Yt(i,a,s,o),a}function KXe(e,t,r){var n=Math.min(t/e.width,r/e.height);return[n,e,t+"x"+r]}function nKt(e,t){var r=Math.sqrt(e.width/2*(e.width/2)+e.height*e.height),n=t/r;return[n,e,t]}function JXe(e,t,r,n){var i=document.createElementNS("http://www.w3.org/2000/svg","text"),a=Aw.select(i);return a.text(e).attr("x",0).attr("y",0).attr("text-anchor",r).attr("data-unformatted",e).call(N7.convertToTspans,n).call(Tw.font,t),Tw.bBox(a.node())}function B7(e,t,r,n,i,a){var o="_cache"+t;e[o]&&e[o].key===i||(e[o]={key:i,value:r});var s=qx.aggNums(a,null,[e[o].value,n],2);return e[o].value=s,s}});var tZe=ye((z2r,eZe)=>{"use strict";eZe.exports={moduleType:"trace",name:"indicator",basePlotModule:FXe(),categories:["svg","noOpacity","noHover"],animatable:!0,attributes:f$(),supplyDefaults:jXe().supplyDefaults,calc:XXe().calc,plot:QXe(),meta:{}}});var iZe=ye((q2r,rZe)=>{"use strict";rZe.exports=tZe()});var v$=ye((B2r,sZe)=>{"use strict";var nZe=Qb(),U7=Ao().extendFlat,aKt=mc().overrideAll,aZe=ec(),oKt=Cc().attributes,oZe=vf().descriptionOnlyNumbers,O2r=sZe.exports=aKt({domain:oKt({name:"table",trace:!0}),columnwidth:{valType:"number",arrayOk:!0,dflt:null},columnorder:{valType:"data_array"},header:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:oZe("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:28},align:U7({},nZe.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:U7({},aZe({arrayOk:!0}))},cells:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:oZe("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:20},align:U7({},nZe.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:U7({},aZe({arrayOk:!0}))}},"calc","from-root")});var uZe=ye((N2r,lZe)=>{"use strict";var p$=Pr(),sKt=v$(),lKt=Cc().defaults;function uKt(e,t){for(var r=e.columnorder||[],n=e.header.values.length,i=r.slice(0,n),a=i.slice().sort(function(l,u){return l-u}),o=i.map(function(l){return a.indexOf(l)}),s=o.length;s{"use strict";var cKt=ny().wrap;cZe.exports=function(){return cKt({})}});var g$=ye((V2r,hZe)=>{"use strict";hZe.exports={cellPad:8,columnExtentOffset:10,columnTitleOffset:28,emptyHeaderHeight:16,latexCheck:/^\$.*\$$/,goldenRatio:1.618,lineBreaker:"
",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:"cubic-out",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:"cubic-out",uplift:5,wrapSpacer:" ",wrapSplitCharacter:" ",cn:{table:"table",tableControlView:"table-control-view",scrollBackground:"scroll-background",yColumn:"y-column",columnBlock:"column-block",scrollAreaClip:"scroll-area-clip",scrollAreaClipRect:"scroll-area-clip-rect",columnBoundary:"column-boundary",columnBoundaryClippath:"column-boundary-clippath",columnBoundaryRect:"column-boundary-rect",columnCells:"column-cells",columnCell:"column-cell",cellRect:"cell-rect",cellText:"cell-text",cellTextHolder:"cell-text-holder",scrollbarKit:"scrollbar-kit",scrollbar:"scrollbar",scrollbarSlider:"scrollbar-slider",scrollbarGlyph:"scrollbar-glyph",scrollbarCaptureZone:"scrollbar-capture-zone"}}});var bZe=ye((G2r,xZe)=>{"use strict";var dZe=g$(),y$=Ao().extendFlat,fKt=Eo(),hKt=Yd().isTypedArray,V7=Yd().isArrayOrTypedArray;xZe.exports=function(t,r){var n=m$(r.cells.values),i=function(g){return g.slice(r.header.values.length,g.length)},a=m$(r.header.values);a.length&&!a[0].length&&(a[0]=[""],a=m$(a));var o=a.concat(i(n).map(function(){return _Ze((a[0]||[""]).length)})),s=r.domain,l=Math.floor(t._fullLayout._size.w*(s.x[1]-s.x[0])),u=Math.floor(t._fullLayout._size.h*(s.y[1]-s.y[0])),c=r.header.values.length?o[0].map(function(){return r.header.height}):[dZe.emptyHeaderHeight],f=n.length?n[0].map(function(){return r.cells.height}):[],h=c.reduce(vZe,0),d=u-h,v=d+dZe.uplift,m=mZe(f,v),b=mZe(c,h),p=gZe(b,[]),k=gZe(m,p),M={},T=r._fullInput.columnorder;V7(T)&&(T=Array.from(T)),T=T.concat(i(n.map(function(g,P){return P})));var L=o.map(function(g,P){var E=V7(r.columnwidth)?r.columnwidth[Math.min(P,r.columnwidth.length-1)]:r.columnwidth;return fKt(E)?Number(E):1}),x=L.reduce(vZe,0);L=L.map(function(g){return g/x*l});var C=Math.max(_$(r.header.line.width),_$(r.cells.line.width)),S={key:r.uid+t._context.staticPlot,translateX:s.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-s.y[1]),size:t._fullLayout._size,width:l,maxLineWidth:C,height:u,columnOrder:T,groupHeight:u,rowBlocks:k,headerRowBlocks:p,scrollY:0,cells:y$({},r.cells,{values:n}),headerCells:y$({},r.header,{values:o}),gdColumns:o.map(function(g){return g[0]}),gdColumnsOriginalOrder:o.map(function(g){return g[0]}),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:o.map(function(g,P){var E=M[g];M[g]=(E||0)+1;var z=g+"__"+M[g];return{key:z,label:g,specIndex:P,xIndex:T[P],xScale:pZe,x:void 0,calcdata:void 0,columnWidth:L[P]}})};return S.columns.forEach(function(g){g.calcdata=S,g.x=pZe(g)}),S};function _$(e){if(V7(e)){for(var t=0,r=0;r=t||u===e.length-1)&&(r[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=u,o=yZe(),i+=a,s=u+1,a=0);return r}function yZe(){return{firstRowIndex:null,lastRowIndex:null,rows:[]}}});var wZe=ye(x$=>{"use strict";var G7=Ao().extendFlat;x$.splitToPanels=function(e){var t=[0,0],r=G7({},e,{key:"header",type:"header",page:0,prevPages:t,currentRepaint:[null,null],dragHandle:!0,values:e.calcdata.headerCells.values[e.specIndex],rowBlocks:e.calcdata.headerRowBlocks,calcdata:G7({},e.calcdata,{cells:e.calcdata.headerCells})}),n=G7({},e,{key:"cells1",type:"cells",page:0,prevPages:t,currentRepaint:[null,null],dragHandle:!1,values:e.calcdata.cells.values[e.specIndex],rowBlocks:e.calcdata.rowBlocks}),i=G7({},e,{key:"cells2",type:"cells",page:1,prevPages:t,currentRepaint:[null,null],dragHandle:!1,values:e.calcdata.cells.values[e.specIndex],rowBlocks:e.calcdata.rowBlocks});return[n,i,r]};x$.splitToCells=function(e){var t=dKt(e);return(e.values||[]).slice(t[0],t[1]).map(function(r,n){var i=typeof r=="string"&&r.match(/[<$&> ]/)?"_keybuster_"+Math.random():"";return{keyWithinBlock:n+i,key:t[0]+n,column:e,calcdata:e.calcdata,page:e.page,rowBlocks:e.rowBlocks,value:r}})};function dKt(e){var t=e.rowBlocks[e.page],r=t?t.rows[0].rowIndex:0,n=t?r+t.rows.length:0;return[r,n]}});var L$=ye((j2r,RZe)=>{"use strict";var Ya=g$(),rf=qa(),b$=Pr(),vKt=b$.numberFormat,Uu=ny(),w$=So(),pKt=Zl(),gKt=Pr().raiseToTop,lg=Pr().strTranslate,mKt=Pr().cancelTransition,yKt=bZe(),CZe=wZe(),TZe=ka();RZe.exports=function(t,r){var n=!t._context.staticPlot,i=t._fullLayout._paper.selectAll("."+Ya.cn.table).data(r.map(function(k){var M=Uu.unwrap(k),T=M.trace;return yKt(t,T)}),Uu.keyFun);i.exit().remove(),i.enter().append("g").classed(Ya.cn.table,!0).attr("overflow","visible").style("box-sizing","content-box").style("position","absolute").style("left",0).style("overflow","visible").style("shape-rendering","crispEdges").style("pointer-events","all"),i.attr("width",function(k){return k.width+k.size.l+k.size.r}).attr("height",function(k){return k.height+k.size.t+k.size.b}).attr("transform",function(k){return lg(k.translateX,k.translateY)});var a=i.selectAll("."+Ya.cn.tableControlView).data(Uu.repeat,Uu.keyFun),o=a.enter().append("g").classed(Ya.cn.tableControlView,!0).style("box-sizing","content-box");if(n){var s="onwheel"in document?"wheel":"mousewheel";o.on("mousemove",function(k){a.filter(function(M){return k===M}).call(dC,t)}).on(s,function(k){if(!k.scrollbarState.wheeling){k.scrollbarState.wheeling=!0;var M=k.scrollY+rf.event.deltaY,T=j7(t,a,null,M)(k);T||(rf.event.stopPropagation(),rf.event.preventDefault()),k.scrollbarState.wheeling=!1}}).call(dC,t,!0)}a.attr("transform",function(k){return lg(k.size.l,k.size.t)});var l=a.selectAll("."+Ya.cn.scrollBackground).data(Uu.repeat,Uu.keyFun);l.enter().append("rect").classed(Ya.cn.scrollBackground,!0).attr("fill","none"),l.attr("width",function(k){return k.width}).attr("height",function(k){return k.height}),a.each(function(k){w$.setClipUrl(rf.select(this),AZe(t,k),t)});var u=a.selectAll("."+Ya.cn.yColumn).data(function(k){return k.columns},Uu.keyFun);u.enter().append("g").classed(Ya.cn.yColumn,!0),u.exit().remove(),u.attr("transform",function(k){return lg(k.x,0)}),n&&u.call(rf.behavior.drag().origin(function(k){var M=rf.select(this);return EZe(M,k,-Ya.uplift),gKt(this),k.calcdata.columnDragInProgress=!0,dC(a.filter(function(T){return k.calcdata.key===T.key}),t),k}).on("drag",function(k){var M=rf.select(this),T=function(C){return(k===C?rf.event.x:C.x)+C.columnWidth/2};k.x=Math.max(-Ya.overdrag,Math.min(k.calcdata.width+Ya.overdrag-k.columnWidth,rf.event.x));var L=LZe(u).filter(function(C){return C.calcdata.key===k.calcdata.key}),x=L.sort(function(C,S){return T(C)-T(S)});x.forEach(function(C,S){C.xIndex=S,C.x=k===C?C.x:C.xScale(C)}),u.filter(function(C){return k!==C}).transition().ease(Ya.transitionEase).duration(Ya.transitionDuration).attr("transform",function(C){return lg(C.x,0)}),M.call(mKt).attr("transform",lg(k.x,-Ya.uplift))}).on("dragend",function(k){var M=rf.select(this),T=k.calcdata;k.x=k.xScale(k),k.calcdata.columnDragInProgress=!1,EZe(M,k,0),kKt(t,T,T.columns.map(function(L){return L.xIndex}))})),u.each(function(k){w$.setClipUrl(rf.select(this),SZe(t,k),t)});var c=u.selectAll("."+Ya.cn.columnBlock).data(CZe.splitToPanels,Uu.keyFun);c.enter().append("g").classed(Ya.cn.columnBlock,!0).attr("id",function(k){return k.key}),c.style("cursor",function(k){return k.dragHandle?"ew-resize":k.calcdata.scrollbarState.barWiggleRoom?"ns-resize":"default"});var f=c.filter(CKt),h=c.filter(E$);n&&h.call(rf.behavior.drag().origin(function(k){return rf.event.stopPropagation(),k}).on("drag",j7(t,a,-1)).on("dragend",function(){})),T$(t,a,f,c),T$(t,a,h,c);var d=a.selectAll("."+Ya.cn.scrollAreaClip).data(Uu.repeat,Uu.keyFun);d.enter().append("clipPath").classed(Ya.cn.scrollAreaClip,!0).attr("id",function(k){return AZe(t,k)});var v=d.selectAll("."+Ya.cn.scrollAreaClipRect).data(Uu.repeat,Uu.keyFun);v.enter().append("rect").classed(Ya.cn.scrollAreaClipRect,!0).attr("x",-Ya.overdrag).attr("y",-Ya.uplift).attr("fill","none"),v.attr("width",function(k){return k.width+2*Ya.overdrag}).attr("height",function(k){return k.height+Ya.uplift});var m=u.selectAll("."+Ya.cn.columnBoundary).data(Uu.repeat,Uu.keyFun);m.enter().append("g").classed(Ya.cn.columnBoundary,!0);var b=u.selectAll("."+Ya.cn.columnBoundaryClippath).data(Uu.repeat,Uu.keyFun);b.enter().append("clipPath").classed(Ya.cn.columnBoundaryClippath,!0),b.attr("id",function(k){return SZe(t,k)});var p=b.selectAll("."+Ya.cn.columnBoundaryRect).data(Uu.repeat,Uu.keyFun);p.enter().append("rect").classed(Ya.cn.columnBoundaryRect,!0).attr("fill","none"),p.attr("width",function(k){return k.columnWidth+2*H7(k)}).attr("height",function(k){return k.calcdata.height+2*H7(k)+Ya.uplift}).attr("x",function(k){return-H7(k)}).attr("y",function(k){return-H7(k)}),k$(null,h,a)};function H7(e){return Math.ceil(e.calcdata.maxLineWidth/2)}function AZe(e,t){return"clip"+e._fullLayout._uid+"_scrollAreaBottomClip_"+t.key}function SZe(e,t){return"clip"+e._fullLayout._uid+"_columnBoundaryClippath_"+t.calcdata.key+"_"+t.specIndex}function LZe(e){return[].concat.apply([],e.map(function(t){return t})).map(function(t){return t.__data__})}function dC(e,t,r){function n(u){var c=u.rowBlocks;return S$(c,c.length-1)+(c.length?W7(c[c.length-1],1/0):1)}var i=e.selectAll("."+Ya.cn.scrollbarKit).data(Uu.repeat,Uu.keyFun);i.enter().append("g").classed(Ya.cn.scrollbarKit,!0).style("shape-rendering","geometricPrecision"),i.each(function(u){var c=u.scrollbarState;c.totalHeight=n(u),c.scrollableAreaHeight=u.groupHeight-A$(u),c.currentlyVisibleHeight=Math.min(c.totalHeight,c.scrollableAreaHeight),c.ratio=c.currentlyVisibleHeight/c.totalHeight,c.barLength=Math.max(c.ratio*c.currentlyVisibleHeight,Ya.goldenRatio*Ya.scrollbarWidth),c.barWiggleRoom=c.currentlyVisibleHeight-c.barLength,c.wiggleRoom=Math.max(0,c.totalHeight-c.scrollableAreaHeight),c.topY=c.barWiggleRoom===0?0:u.scrollY/c.wiggleRoom*c.barWiggleRoom,c.bottomY=c.topY+c.barLength,c.dragMultiplier=c.wiggleRoom/c.barWiggleRoom}).attr("transform",function(u){var c=u.width+Ya.scrollbarWidth/2+Ya.scrollbarOffset;return lg(c,A$(u))});var a=i.selectAll("."+Ya.cn.scrollbar).data(Uu.repeat,Uu.keyFun);a.enter().append("g").classed(Ya.cn.scrollbar,!0);var o=a.selectAll("."+Ya.cn.scrollbarSlider).data(Uu.repeat,Uu.keyFun);o.enter().append("g").classed(Ya.cn.scrollbarSlider,!0),o.attr("transform",function(u){return lg(0,u.scrollbarState.topY||0)});var s=o.selectAll("."+Ya.cn.scrollbarGlyph).data(Uu.repeat,Uu.keyFun);s.enter().append("line").classed(Ya.cn.scrollbarGlyph,!0).attr("stroke","black").attr("stroke-width",Ya.scrollbarWidth).attr("stroke-linecap","round").attr("y1",Ya.scrollbarWidth/2),s.attr("y2",function(u){return u.scrollbarState.barLength-Ya.scrollbarWidth/2}).attr("stroke-opacity",function(u){return u.columnDragInProgress||!u.scrollbarState.barWiggleRoom||r?0:.4}),s.transition().delay(0).duration(0),s.transition().delay(Ya.scrollbarHideDelay).duration(Ya.scrollbarHideDuration).attr("stroke-opacity",0);var l=a.selectAll("."+Ya.cn.scrollbarCaptureZone).data(Uu.repeat,Uu.keyFun);l.enter().append("line").classed(Ya.cn.scrollbarCaptureZone,!0).attr("stroke","white").attr("stroke-opacity",.01).attr("stroke-width",Ya.scrollbarCaptureWidth).attr("stroke-linecap","butt").attr("y1",0).on("mousedown",function(u){var c=rf.event.y,f=this.getBoundingClientRect(),h=u.scrollbarState,d=c-f.top,v=rf.scale.linear().domain([0,h.scrollableAreaHeight]).range([0,h.totalHeight]).clamp(!0);h.topY<=d&&d<=h.bottomY||j7(t,e,null,v(d-h.barLength/2))(u)}).call(rf.behavior.drag().origin(function(u){return rf.event.stopPropagation(),u.scrollbarState.scrollbarScrollInProgress=!0,u}).on("drag",j7(t,e)).on("dragend",function(){})),l.attr("y2",function(u){return u.scrollbarState.scrollableAreaHeight}),t._context.staticPlot&&(s.remove(),l.remove())}function T$(e,t,r,n){var i=_Kt(r),a=xKt(i);AKt(a);var o=bKt(a);MKt(o);var s=TKt(a),l=wKt(s);SKt(l),PZe(l,t,n,e),C$(a)}function _Kt(e){var t=e.selectAll("."+Ya.cn.columnCells).data(Uu.repeat,Uu.keyFun);return t.enter().append("g").classed(Ya.cn.columnCells,!0),t.exit().remove(),t}function xKt(e){var t=e.selectAll("."+Ya.cn.columnCell).data(CZe.splitToCells,function(r){return r.keyWithinBlock});return t.enter().append("g").classed(Ya.cn.columnCell,!0),t.exit().remove(),t}function bKt(e){var t=e.selectAll("."+Ya.cn.cellRect).data(Uu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("rect").classed(Ya.cn.cellRect,!0),t}function wKt(e){var t=e.selectAll("."+Ya.cn.cellText).data(Uu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("text").classed(Ya.cn.cellText,!0).style("cursor",function(){return"auto"}).on("mousedown",function(){rf.event.stopPropagation()}),t}function TKt(e){var t=e.selectAll("."+Ya.cn.cellTextHolder).data(Uu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("g").classed(Ya.cn.cellTextHolder,!0).style("shape-rendering","geometricPrecision"),t}function AKt(e){e.each(function(t,r){var n=t.calcdata.cells.font,i=t.column.specIndex,a={size:Yv(n.size,i,r),color:Yv(n.color,i,r),family:Yv(n.family,i,r),weight:Yv(n.weight,i,r),style:Yv(n.style,i,r),variant:Yv(n.variant,i,r),textcase:Yv(n.textcase,i,r),lineposition:Yv(n.lineposition,i,r),shadow:Yv(n.shadow,i,r)};t.rowNumber=t.key,t.align=Yv(t.calcdata.cells.align,i,r),t.cellBorderWidth=Yv(t.calcdata.cells.line.width,i,r),t.font=a})}function SKt(e){e.each(function(t){w$.font(rf.select(this),t.font)})}function MKt(e){e.attr("width",function(t){return t.column.columnWidth}).attr("stroke-width",function(t){return t.cellBorderWidth}).each(function(t){var r=rf.select(this);TZe.stroke(r,Yv(t.calcdata.cells.line.color,t.column.specIndex,t.rowNumber)),TZe.fill(r,Yv(t.calcdata.cells.fill.color,t.column.specIndex,t.rowNumber))})}function PZe(e,t,r,n){e.text(function(i){var a=i.column.specIndex,o=i.rowNumber,s=i.value,l=typeof s=="string",u=l&&s.match(/
/i),c=!l||u;i.mayHaveMarkup=l&&s.match(/[<&>]/);var f=EKt(s);i.latex=f;var h=f?"":Yv(i.calcdata.cells.prefix,a,o)||"",d=f?"":Yv(i.calcdata.cells.suffix,a,o)||"",v=f?null:Yv(i.calcdata.cells.format,a,o)||null,m=h+(v?vKt(v)(i.value):i.value)+d,b;i.wrappingNeeded=!i.wrapped&&!c&&!f&&(b=MZe(m)),i.cellHeightMayIncrease=u||f||i.mayHaveMarkup||(b===void 0?MZe(m):b),i.needsConvertToTspans=i.mayHaveMarkup||i.wrappingNeeded||i.latex;var p;if(i.wrappingNeeded){var k=Ya.wrapSplitCharacter===" "?m.replace(/i&&n.push(a),i+=l}return n}function k$(e,t,r){var n=LZe(t)[0];if(n!==void 0){var i=n.rowBlocks,a=n.calcdata,o=S$(i,i.length),s=n.calcdata.groupHeight-A$(n),l=a.scrollY=Math.max(0,Math.min(o-s,a.scrollY)),u=LKt(i,l,s);u.length===1&&(u[0]===i.length-1?u.unshift(u[0]-1):u.push(u[0]+1)),u[0]%2&&u.reverse(),t.each(function(c,f){c.page=u[f],c.scrollY=l}),t.attr("transform",function(c){var f=S$(c.rowBlocks,c.page)-c.scrollY;return lg(0,f)}),e&&(kZe(e,r,t,u,n.prevPages,n,0),kZe(e,r,t,u,n.prevPages,n,1),dC(r,e))}}function j7(e,t,r,n){return function(a){var o=a.calcdata?a.calcdata:a,s=t.filter(function(f){return o.key===f.key}),l=r||o.scrollbarState.dragMultiplier,u=o.scrollY;o.scrollY=n===void 0?o.scrollY+l*rf.event.dy:n;var c=s.selectAll("."+Ya.cn.yColumn).selectAll("."+Ya.cn.columnBlock).filter(E$);return k$(e,c,s),o.scrollY===u}}function kZe(e,t,r,n,i,a,o){var s=n[o]!==i[o];s&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout(function(){var l=r.filter(function(u,c){return c===o&&n[c]!==i[c]});T$(e,t,l,r),i[o]=n[o]}))}function PKt(e,t,r,n){return function(){var a=rf.select(t.parentNode);a.each(function(o){var s=o.fragments;a.selectAll("tspan.line").each(function(m,b){s[b].width=this.getComputedTextLength()});var l=s[s.length-1].width,u=s.slice(0,-1),c=[],f,h,d=0,v=o.column.columnWidth-2*Ya.cellPad;for(o.value="";u.length;)f=u.shift(),h=f.width+l,d+h>v&&(o.value+=c.join(Ya.wrapSpacer)+Ya.lineBreaker,c=[],d=0),c.push(f.text),d+=h;d&&(o.value+=c.join(Ya.wrapSpacer)),o.wrapped=!0}),a.selectAll("tspan.line").remove(),PZe(a.select("."+Ya.cn.cellText),r,e,n),rf.select(t.parentNode.parentNode).call(C$)}}function IKt(e,t,r,n,i){return function(){if(!i.settledY){var o=rf.select(t.parentNode),s=M$(i),l=i.key-s.firstRowIndex,u=s.rows[l].rowHeight,c=i.cellHeightMayIncrease?t.parentNode.getBoundingClientRect().height+2*Ya.cellPad:u,f=Math.max(c,u),h=f-s.rows[l].rowHeight;h&&(s.rows[l].rowHeight=f,e.selectAll("."+Ya.cn.columnCell).call(C$),k$(null,e.filter(E$),0),dC(r,n,!0)),o.attr("transform",function(){var d=this,v=d.parentNode,m=v.getBoundingClientRect(),b=rf.select(d.parentNode).select("."+Ya.cn.cellRect).node().getBoundingClientRect(),p=d.transform.baseVal.consolidate(),k=b.top-m.top+(p?p.matrix.f:Ya.cellPad);return lg(IZe(i,rf.select(d.parentNode).select("."+Ya.cn.cellTextHolder).node().getBoundingClientRect().width),k)}),i.settledY=!0}}}function IZe(e,t){switch(e.align){case"left":return Ya.cellPad;case"right":return e.column.columnWidth-(t||0)-Ya.cellPad;case"center":return(e.column.columnWidth-(t||0))/2;default:return Ya.cellPad}}function C$(e){e.attr("transform",function(t){var r=t.rowBlocks[0].auxiliaryBlocks.reduce(function(o,s){return o+W7(s,1/0)},0),n=M$(t),i=W7(n,t.key),a=i+r;return lg(0,a)}).selectAll("."+Ya.cn.cellRect).attr("height",function(t){return DKt(M$(t),t.key).rowHeight})}function S$(e,t){for(var r=0,n=t-1;n>=0;n--)r+=RKt(e[n]);return r}function W7(e,t){for(var r=0,n=0;n{"use strict";var FKt=Id().getModuleCalcData,zKt=L$(),X7="table";Z7.name=X7;Z7.plot=function(e){var t=FKt(e.calcdata,X7)[0];t.length&&zKt(e,t)};Z7.clean=function(e,t,r,n){var i=n._has&&n._has(X7),a=t._has&&t._has(X7);i&&!a&&n._paperdiv.selectAll(".table").remove()}});var zZe=ye((X2r,FZe)=>{"use strict";FZe.exports={attributes:v$(),supplyDefaults:uZe(),calc:fZe(),plot:L$(),moduleType:"trace",name:"table",basePlotModule:DZe(),categories:["noOpacity"],meta:{}}});var OZe=ye((Z2r,qZe)=>{"use strict";qZe.exports=zZe()});var GZe=ye((Y2r,VZe)=>{"use strict";var BZe=ec(),NZe=Ih(),P$=Rd(),qKt=vf().descriptionWithDates,OKt=mc().overrideAll,UZe=Pd().dash,I$=Ao().extendFlat;VZe.exports={color:{valType:"color",editType:"calc"},smoothing:{valType:"number",dflt:1,min:0,max:1.3,editType:"calc"},title:{text:{valType:"string",dflt:"",editType:"calc"},font:BZe({editType:"calc"}),offset:{valType:"number",dflt:10,editType:"calc"},editType:"calc"},type:{valType:"enumerated",values:["-","linear","date","category"],dflt:"-",editType:"calc"},autotypenumbers:P$.autotypenumbers,autorange:{valType:"enumerated",values:[!0,!1,"reversed"],dflt:!0,editType:"calc"},rangemode:{valType:"enumerated",values:["normal","tozero","nonnegative"],dflt:"normal",editType:"calc"},range:{valType:"info_array",editType:"calc",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}]},fixedrange:{valType:"boolean",dflt:!1,editType:"calc"},cheatertype:{valType:"enumerated",values:["index","value"],dflt:"value",editType:"calc"},tickmode:{valType:"enumerated",values:["linear","array"],dflt:"array",editType:"calc"},nticks:{valType:"integer",min:0,dflt:0,editType:"calc"},tickvals:{valType:"data_array",editType:"calc"},ticktext:{valType:"data_array",editType:"calc"},showticklabels:{valType:"enumerated",values:["start","end","both","none"],dflt:"start",editType:"calc"},labelalias:I$({},P$.labelalias,{editType:"calc"}),tickfont:BZe({editType:"calc"}),tickangle:{valType:"angle",dflt:"auto",editType:"calc"},tickprefix:{valType:"string",dflt:"",editType:"calc"},showtickprefix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},ticksuffix:{valType:"string",dflt:"",editType:"calc"},showticksuffix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},showexponent:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},exponentformat:{valType:"enumerated",values:["none","e","E","power","SI","B","SI extended"],dflt:"B",editType:"calc"},minexponent:{valType:"number",dflt:3,min:0,editType:"calc"},separatethousands:{valType:"boolean",dflt:!1,editType:"calc"},tickformat:{valType:"string",dflt:"",editType:"calc",description:qKt("tick label")},tickformatstops:OKt(P$.tickformatstops,"calc","from-root"),categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},labelpadding:{valType:"integer",dflt:10,editType:"calc"},labelprefix:{valType:"string",editType:"calc"},labelsuffix:{valType:"string",dflt:"",editType:"calc"},showline:{valType:"boolean",dflt:!1,editType:"calc"},linecolor:{valType:"color",dflt:NZe.defaultLine,editType:"calc"},linewidth:{valType:"number",min:0,dflt:1,editType:"calc"},gridcolor:{valType:"color",editType:"calc"},gridwidth:{valType:"number",min:0,dflt:1,editType:"calc"},griddash:I$({},UZe,{editType:"calc"}),showgrid:{valType:"boolean",dflt:!0,editType:"calc"},minorgridcount:{valType:"integer",min:0,dflt:0,editType:"calc"},minorgridwidth:{valType:"number",min:0,dflt:1,editType:"calc"},minorgriddash:I$({},UZe,{editType:"calc"}),minorgridcolor:{valType:"color",dflt:NZe.lightLine,editType:"calc"},startline:{valType:"boolean",editType:"calc"},startlinecolor:{valType:"color",editType:"calc"},startlinewidth:{valType:"number",dflt:1,editType:"calc"},endline:{valType:"boolean",editType:"calc"},endlinewidth:{valType:"number",dflt:1,editType:"calc"},endlinecolor:{valType:"color",editType:"calc"},tick0:{valType:"number",min:0,dflt:0,editType:"calc"},dtick:{valType:"number",min:0,dflt:1,editType:"calc"},arraytick0:{valType:"integer",min:0,dflt:0,editType:"calc"},arraydtick:{valType:"integer",min:1,dflt:1,editType:"calc"},editType:"calc"}});var K7=ye((K2r,WZe)=>{"use strict";var BKt=ec(),HZe=GZe(),jZe=Ih(),Y7=BKt({editType:"calc"}),NKt=pf().zorder;Y7.family.dflt='"Open Sans", verdana, arial, sans-serif';Y7.size.dflt=12;Y7.color.dflt=jZe.defaultLine;WZe.exports={carpet:{valType:"string",editType:"calc"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},a:{valType:"data_array",editType:"calc"},a0:{valType:"number",dflt:0,editType:"calc"},da:{valType:"number",dflt:1,editType:"calc"},b:{valType:"data_array",editType:"calc"},b0:{valType:"number",dflt:0,editType:"calc"},db:{valType:"number",dflt:1,editType:"calc"},cheaterslope:{valType:"number",dflt:1,editType:"calc"},aaxis:HZe,baxis:HZe,font:Y7,color:{valType:"color",dflt:jZe.defaultLine,editType:"plot"},zorder:NKt}});var YZe=ye((J2r,ZZe)=>{"use strict";var XZe=Pr().isArray1D;ZZe.exports=function(t,r,n){var i=n("x"),a=i&&i.length,o=n("y"),s=o&&o.length;if(!a&&!s)return!1;if(r._cheater=!i,(!a||XZe(i))&&(!s||XZe(o))){var l=a?i.length:1/0;s&&(l=Math.min(l,o.length)),r.a&&r.a.length&&(l=Math.min(l,r.a.length)),r.b&&r.b.length&&(l=Math.min(l,r.b.length)),r._length=l}else r._length=null;return!0}});var $Ze=ye(($2r,JZe)=>{"use strict";var UKt=K7(),KZe=ka().addOpacity,VKt=Oa(),vC=Pr(),GKt=Pb(),HKt=s_(),jKt=l_(),WKt=fI(),XKt=xm(),ZKt=H3();JZe.exports=function(t,r,n){var i=n.letter,a=n.font||{},o=UKt[i+"axis"];function s(g,P){return vC.coerce(t,r,o,g,P)}function l(g,P){return vC.coerce2(t,r,o,g,P)}n.name&&(r._name=n.name,r._id=n.name),s("autotypenumbers",n.autotypenumbersDflt);var u=s("type");if(u==="-"&&(n.data&&YKt(r,n.data),r.type==="-"?r.type="linear":u=t.type=r.type),s("smoothing"),s("cheatertype"),s("showticklabels"),s("labelprefix",i+" = "),s("labelsuffix"),s("showtickprefix"),s("showticksuffix"),s("separatethousands"),s("tickformat"),s("exponentformat"),s("minexponent"),s("showexponent"),s("categoryorder"),s("tickmode"),s("tickvals"),s("ticktext"),s("tick0"),s("dtick"),r.tickmode==="array"&&(s("arraytick0"),s("arraydtick")),s("labelpadding"),r._hovertitle=i,u==="date"){var c=VKt.getComponentMethod("calendars","handleDefaults");c(t,r,"calendar",n.calendar)}XKt(r,n.fullLayout),r.c2p=vC.identity;var f=s("color",n.dfltColor),h=f===t.color?f:a.color,d=s("title.text");d&&(vC.coerceFont(s,"title.font",a,{overrideDflt:{size:vC.bigFont(a.size),color:h}}),s("title.offset")),s("tickangle");var v=s("autorange",!r.isValidRange(t.range));v&&s("rangemode"),s("range"),r.cleanRange(),s("fixedrange"),GKt(t,r,s,u),jKt(t,r,s,u,n),HKt(t,r,s,u,n),WKt(t,r,s,{data:n.data,dataAttr:i});var m=l("gridcolor",KZe(f,.3)),b=l("gridwidth"),p=l("griddash"),k=s("showgrid");k||(delete r.gridcolor,delete r.gridwidth,delete r.griddash);var M=l("startlinecolor",f),T=l("startlinewidth",b),L=s("startline",r.showgrid||!!M||!!T);L||(delete r.startlinecolor,delete r.startlinewidth);var x=l("endlinecolor",f),C=l("endlinewidth",b),S=s("endline",r.showgrid||!!x||!!C);return S||(delete r.endlinecolor,delete r.endlinewidth),k?(s("minorgridcount"),s("minorgridwidth",b),s("minorgriddash",p),s("minorgridcolor",KZe(m,.06)),r.minorgridcount||(delete r.minorgridwidth,delete r.minorgriddash,delete r.minorgridcolor)):(delete r.gridcolor,delete r.gridwidth,delete r.griddash),r.showticklabels==="none"&&(delete r.tickfont,delete r.tickangle,delete r.showexponent,delete r.exponentformat,delete r.minexponent,delete r.tickformat,delete r.showticksuffix,delete r.showtickprefix),r.showticksuffix||delete r.ticksuffix,r.showtickprefix||delete r.tickprefix,s("tickmode"),r};function YKt(e,t){if(e.type==="-"){var r=e._id,n=r.charAt(0),i=n+"calendar",a=e[i];e.type=ZKt(t,a,{autotypenumbers:e.autotypenumbers})}}});var eYe=ye((Q2r,QZe)=>{"use strict";var KKt=$Ze(),JKt=vl();QZe.exports=function(t,r,n,i,a){var o=i("a");o||(i("da"),i("a0"));var s=i("b");s||(i("db"),i("b0")),$Kt(t,r,n,a)};function $Kt(e,t,r,n){var i=["aaxis","baxis"];i.forEach(function(a){var o=a.charAt(0),s=e[a]||{},l=JKt.newContainer(t,a),u={noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0,noTicklabelstep:!0,tickfont:"x",id:o+"axis",letter:o,font:t.font,name:a,data:e[o],calendar:t.calendar,dfltColor:n,bgColor:r.paper_bgcolor,autotypenumbersDflt:r.autotypenumbers,fullLayout:r};KKt(s,l,u),l._categories=l._categories||[],!e[a]&&s.type!=="-"&&(e[a]={type:s.type})})}});var iYe=ye((ewr,rYe)=>{"use strict";var tYe=Pr(),QKt=YZe(),eJt=eYe(),tJt=K7(),rJt=Ih();rYe.exports=function(t,r,n,i){function a(l,u){return tYe.coerce(t,r,tJt,l,u)}r._clipPathId="clip"+r.uid+"carpet";var o=a("color",rJt.defaultLine);if(tYe.coerceFont(a,"font",i.font),a("carpet"),eJt(t,r,i,a,o),!r.a||!r.b){r.visible=!1;return}r.a.length<3&&(r.aaxis.smoothing=0),r.b.length<3&&(r.baxis.smoothing=0);var s=QKt(t,r,a);s||(r.visible=!1),r._cheater&&a("cheaterslope"),a("zorder")}});var R$=ye((twr,nYe)=>{"use strict";var iJt=Pr().isArrayOrTypedArray;nYe.exports=function(t,r,n){var i;for(iJt(t)?t.length>r.length&&(t=t.slice(0,r.length)):t=[],i=0;i{"use strict";aYe.exports=function(t,r,n){if(t.length===0)return"";var i,a=[],o=n?3:1;for(i=0;i{"use strict";oYe.exports=function(t,r,n,i,a,o){var s=a[0]*t.dpdx(r),l=a[1]*t.dpdy(n),u=1,c=1;if(o){var f=Math.sqrt(a[0]*a[0]+a[1]*a[1]),h=Math.sqrt(o[0]*o[0]+o[1]*o[1]),d=(a[0]*o[0]+a[1]*o[1])/f/h;c=Math.max(0,d)}var v=Math.atan2(l,s)*180/Math.PI;return v<-90?(v+=180,u=-u):v>90&&(v-=180,u=-u),{angle:v,flip:u,p:t.c2p(i,r,n),offsetMultplier:c}}});var pYe=ye((nwr,vYe)=>{"use strict";var e9=qa(),J7=So(),$7=R$(),cYe=D$(),pC=sYe(),F$=Zl(),Up=Pr(),fYe=Up.strRotate,Q7=Up.strTranslate,hYe=Dh();vYe.exports=function(t,r,n,i){var a=t._context.staticPlot,o=r.xaxis,s=r.yaxis,l=t._fullLayout,u=l._clips;Up.makeTraceGroups(i,n,"trace").each(function(c){var f=e9.select(this),h=c[0],d=h.trace,v=d.aaxis,m=d.baxis,b=Up.ensureSingle(f,"g","minorlayer"),p=Up.ensureSingle(f,"g","majorlayer"),k=Up.ensureSingle(f,"g","boundarylayer"),M=Up.ensureSingle(f,"g","labellayer");f.style("opacity",d.opacity),H5(o,s,p,v,"a",v._gridlines,!0,a),H5(o,s,p,m,"b",m._gridlines,!0,a),H5(o,s,b,v,"a",v._minorgridlines,!0,a),H5(o,s,b,m,"b",m._minorgridlines,!0,a),H5(o,s,k,v,"a-boundary",v._boundarylines,a),H5(o,s,k,m,"b-boundary",m._boundarylines,a);var T=lYe(t,o,s,d,h,M,v._labels,"a-label"),L=lYe(t,o,s,d,h,M,m._labels,"b-label");aJt(t,M,d,h,o,s,T,L),nJt(d,h,u,o,s)})};function nJt(e,t,r,n,i){var a,o,s,l,u=r.select("#"+e._clipPathId);u.size()||(u=r.append("clipPath").classed("carpetclip",!0));var c=Up.ensureSingle(u,"path","carpetboundary"),f=t.clipsegments,h=[];for(l=0;l0?"start":"end","data-notex":1}).call(J7.font,f.font).text(f.text).call(F$.convertToTspans,e),p=J7.bBox(this);b.attr("transform",Q7(d.p[0],d.p[1])+fYe(d.angle)+Q7(f.axis.labelpadding*m,p.height*.3)),u=Math.max(u,p.width+f.axis.labelpadding)}),l.exit().remove(),c.maxExtent=u,c}function aJt(e,t,r,n,i,a,o,s){var l,u,c,f,h=Up.aggNums(Math.min,null,r.a),d=Up.aggNums(Math.max,null,r.a),v=Up.aggNums(Math.min,null,r.b),m=Up.aggNums(Math.max,null,r.b);l=.5*(h+d),u=v,c=r.ab2xy(l,u,!0),f=r.dxyda_rough(l,u),o.angle===void 0&&Up.extendFlat(o,pC(r,i,a,c,r.dxydb_rough(l,u))),uYe(e,t,r,n,c,f,r.aaxis,i,a,o,"a-title"),l=h,u=.5*(v+m),c=r.ab2xy(l,u,!0),f=r.dxydb_rough(l,u),s.angle===void 0&&Up.extendFlat(s,pC(r,i,a,c,r.dxyda_rough(l,u))),uYe(e,t,r,n,c,f,r.baxis,i,a,s,"b-title")}var dYe=hYe.LINE_SPACING,oJt=(1-hYe.MID_SHIFT)/dYe+1;function uYe(e,t,r,n,i,a,o,s,l,u,c){var f=[];o.title.text&&f.push(o.title.text);var h=t.selectAll("text."+c).data(f),d=u.maxExtent;h.enter().append("text").classed(c,!0),h.each(function(){var v=pC(r,s,l,i,a);["start","both"].indexOf(o.showticklabels)===-1&&(d=0);var m=o.title.font.size;d+=m+o.title.offset;var b=u.angle+(u.flip<0?180:0),p=(b-v.angle+450)%360,k=p>90&&p<270,M=e9.select(this);M.text(o.title.text).call(F$.convertToTspans,e),k&&(d=(-F$.lineCount(M)+oJt)*dYe*m-d),M.attr("transform",Q7(v.p[0],v.p[1])+fYe(v.angle)+Q7(0,d)).attr("text-anchor","middle").call(J7.font,o.title.font)}),h.exit().remove()}});var mYe=ye((awr,gYe)=>{"use strict";var t9=Pr().isArrayOrTypedArray;gYe.exports=function(e,t,r){var n,i,a,o,s,l,u=[],c=t9(e)?e.length:e,f=t9(t)?t.length:t,h=t9(e)?e:null,d=t9(t)?t:null;h&&(a=(h.length-1)/(h[h.length-1]-h[0])/(c-1)),d&&(o=(d.length-1)/(d[d.length-1]-d[0])/(f-1));var v,m=1/0,b=-1/0;for(i=0;i{"use strict";var yYe=Pr().isArrayOrTypedArray;xYe.exports=function(e){return _Ye(e,0)};function _Ye(e,t){if(!yYe(e)||t>=10)return null;for(var r=1/0,n=-1/0,i=e.length,a=0;a{"use strict";var sJt=ho(),Ox=Ao().extendFlat;wYe.exports=function(t,r,n){var i,a,o,s,l,u,c,f,h,d,v,m,b,p,k=t["_"+r],M=t[r+"axis"],T=M._gridlines=[],L=M._minorgridlines=[],x=M._boundarylines=[],C=t["_"+n],S=t[n+"axis"];M.tickmode==="array"&&(M.tickvals=k.slice());var g=t._xctrl,P=t._yctrl,E=g[0].length,z=g.length,q=t._a.length,V=t._b.length;sJt.prepTicks(M),M.tickmode==="array"&&delete M.tickvals;var G=M.smoothing?3:1;function Z(N){var H,ie,ae,_e,Ee,Ce,ge,re,Se,ke,be,Be,Le=[],me=[],Pe={};if(r==="b")for(ie=t.b2j(N),ae=Math.floor(Math.max(0,Math.min(V-2,ie))),_e=ie-ae,Pe.length=V,Pe.crossLength=q,Pe.xy=function(ce){return t.evalxy([],ce,ie)},Pe.dxy=function(ce,He){return t.dxydi([],ce,ae,He,_e)},H=0;H0&&(Se=t.dxydi([],H-1,ae,0,_e),Le.push(Ee[0]+Se[0]/3),me.push(Ee[1]+Se[1]/3),ke=t.dxydi([],H-1,ae,1,_e),Le.push(re[0]-ke[0]/3),me.push(re[1]-ke[1]/3)),Le.push(re[0]),me.push(re[1]),Ee=re;else for(H=t.a2i(N),Ce=Math.floor(Math.max(0,Math.min(q-2,H))),ge=H-Ce,Pe.length=q,Pe.crossLength=V,Pe.xy=function(ce){return t.evalxy([],H,ce)},Pe.dxy=function(ce,He){return t.dxydj([],Ce,ce,ge,He)},ie=0;ie0&&(be=t.dxydj([],Ce,ie-1,ge,0),Le.push(Ee[0]+be[0]/3),me.push(Ee[1]+be[1]/3),Be=t.dxydj([],Ce,ie-1,ge,1),Le.push(re[0]-Be[0]/3),me.push(re[1]-Be[1]/3)),Le.push(re[0]),me.push(re[1]),Ee=re;return Pe.axisLetter=r,Pe.axis=M,Pe.crossAxis=S,Pe.value=N,Pe.constvar=n,Pe.index=f,Pe.x=Le,Pe.y=me,Pe.smoothing=S.smoothing,Pe}function j(N){var H,ie,ae,_e,Ee,Ce=[],ge=[],re={};if(re.length=k.length,re.crossLength=C.length,r==="b")for(ae=Math.max(0,Math.min(V-2,N)),Ee=Math.min(1,Math.max(0,N-ae)),re.xy=function(Se){return t.evalxy([],Se,N)},re.dxy=function(Se,ke){return t.dxydi([],Se,ae,ke,Ee)},H=0;Hk.length-1)&&T.push(Ox(j(a),{color:M.gridcolor,width:M.gridwidth,dash:M.griddash}));for(f=u;fk.length-1)&&!(v<0||v>k.length-1))for(m=k[o],b=k[v],i=0;ik[k.length-1])&&L.push(Ox(Z(d),{color:M.minorgridcolor,width:M.minorgridwidth,dash:M.minorgriddash})));M.startline&&x.push(Ox(j(0),{color:M.startlinecolor,width:M.startlinewidth})),M.endline&&x.push(Ox(j(k.length-1),{color:M.endlinecolor,width:M.endlinewidth}))}else{for(s=5e-15,l=[Math.floor((k[k.length-1]-M.tick0)/M.dtick*(1+s)),Math.ceil((k[0]-M.tick0)/M.dtick/(1+s))].sort(function(N,H){return N-H}),u=l[0],c=l[1],f=u;f<=c;f++)h=M.tick0+M.dtick*f,T.push(Ox(Z(h),{color:M.gridcolor,width:M.gridwidth,dash:M.griddash}));for(f=u-1;fk[k.length-1])&&L.push(Ox(Z(d),{color:M.minorgridcolor,width:M.minorgridwidth,dash:M.minorgriddash}));M.startline&&x.push(Ox(Z(k[0]),{color:M.startlinecolor,width:M.startlinewidth})),M.endline&&x.push(Ox(Z(k[k.length-1]),{color:M.endlinecolor,width:M.endlinewidth}))}}});var EYe=ye((lwr,MYe)=>{"use strict";var AYe=ho(),SYe=Ao().extendFlat;MYe.exports=function(t,r){var n,i,a,o,s,l=r._labels=[],u=r._gridlines;for(n=0;n{"use strict";kYe.exports=function(t,r,n,i){var a,o,s,l=[],u=!!n.smoothing,c=!!i.smoothing,f=t[0].length-1,h=t.length-1;for(a=0,o=[],s=[];a<=f;a++)o[a]=t[0][a],s[a]=r[0][a];for(l.push({x:o,y:s,bicubic:u}),a=0,o=[],s=[];a<=h;a++)o[a]=t[a][f],s[a]=r[a][f];for(l.push({x:o,y:s,bicubic:c}),a=f,o=[],s=[];a>=0;a--)o[f-a]=t[h][a],s[f-a]=r[h][a];for(l.push({x:o,y:s,bicubic:u}),a=h,o=[],s=[];a>=0;a--)o[h-a]=t[a][0],s[h-a]=r[a][0];return l.push({x:o,y:s,bicubic:c}),l}});var PYe=ye((cwr,LYe)=>{"use strict";var lJt=Pr();LYe.exports=function(t,r,n){var i,a,o,s=[],l=[],u=t[0].length,c=t.length;function f(ae,_e){var Ee=0,Ce,ge=0;return ae>0&&(Ce=t[_e][ae-1])!==void 0&&(ge++,Ee+=Ce),ae0&&(Ce=t[_e-1][ae])!==void 0&&(ge++,Ee+=Ce),_e0&&a0&&iS);return lJt.log("Smoother converged to",g,"after",E,"iterations"),t}});var RYe=ye((fwr,IYe)=>{"use strict";IYe.exports={RELATIVE_CULL_TOLERANCE:1e-6}});var zYe=ye((hwr,FYe)=>{"use strict";var DYe=.5;FYe.exports=function(t,r,n,i){var a=t[0]-r[0],o=t[1]-r[1],s=n[0]-r[0],l=n[1]-r[1],u=Math.pow(a*a+o*o,DYe/2),c=Math.pow(s*s+l*l,DYe/2),f=(c*c*a-u*u*s)*i,h=(c*c*o-u*u*l)*i,d=c*(u+c)*3,v=u*(u+c)*3;return[[r[0]+(d&&f/d),r[1]+(d&&h/d)],[r[0]-(v&&f/v),r[1]-(v&&h/v)]]}});var OYe=ye((dwr,qYe)=>{"use strict";var z$=zYe(),r9=Pr().ensureArray;function j5(e,t,r){var n=-.5*r[0]+1.5*t[0],i=-.5*r[1]+1.5*t[1];return[(2*n+e[0])/3,(2*i+e[1])/3]}qYe.exports=function(t,r,n,i,a,o){var s,l,u,c,f,h,d,v,m,b,p=n[0].length,k=n.length,M=a?3*p-2:p,T=o?3*k-2:k;for(t=r9(t,T),r=r9(r,T),u=0;u{"use strict";BYe.exports=function(e,t,r,n,i){var a=t-2,o=r-2;return n&&i?function(s,l,u){s||(s=[]);var c,f,h,d,v,m,b=Math.max(0,Math.min(Math.floor(l),a)),p=Math.max(0,Math.min(Math.floor(u),o)),k=Math.max(0,Math.min(1,l-b)),M=Math.max(0,Math.min(1,u-p));b*=3,p*=3;var T=k*k,L=T*k,x=1-k,C=x*x,S=C*x,g=M*M,P=g*M,E=1-M,z=E*E,q=z*E;for(m=0;m{"use strict";UYe.exports=function(e,t,r){return t&&r?function(n,i,a,o,s){n||(n=[]);var l,u,c,f,h,d;i*=3,a*=3;var v=o*o,m=1-o,b=m*m,p=m*o*2,k=-3*b,M=3*(b-p),T=3*(p-v),L=3*v,x=s*s,C=x*s,S=1-s,g=S*S,P=g*S;for(d=0;d{"use strict";GYe.exports=function(e,t,r){return t&&r?function(n,i,a,o,s){n||(n=[]);var l,u,c,f,h,d;i*=3,a*=3;var v=o*o,m=v*o,b=1-o,p=b*b,k=p*b,M=s*s,T=1-s,L=T*T,x=T*s*2,C=-3*L,S=3*(L-x),g=3*(x-M),P=3*M;for(d=0;d{"use strict";var jYe=RYe(),WYe=V6().findBin,uJt=OYe(),cJt=NYe(),fJt=VYe(),hJt=HYe();XYe.exports=function(t){var r=t._a,n=t._b,i=r.length,a=n.length,o=t.aaxis,s=t.baxis,l=r[0],u=r[i-1],c=n[0],f=n[a-1],h=r[r.length-1]-r[0],d=n[n.length-1]-n[0],v=h*jYe.RELATIVE_CULL_TOLERANCE,m=d*jYe.RELATIVE_CULL_TOLERANCE;l-=v,u+=v,c-=m,f+=m,t.isVisible=function(b,p){return b>l&&bc&&pu||pf},t.setScale=function(){var b=t._x,p=t._y,k=uJt(t._xctrl,t._yctrl,b,p,o.smoothing,s.smoothing);t._xctrl=k[0],t._yctrl=k[1],t.evalxy=cJt([t._xctrl,t._yctrl],i,a,o.smoothing,s.smoothing),t.dxydi=fJt([t._xctrl,t._yctrl],o.smoothing,s.smoothing),t.dxydj=hJt([t._xctrl,t._yctrl],o.smoothing,s.smoothing)},t.i2a=function(b){var p=Math.max(0,Math.floor(b[0]),i-2),k=b[0]-p;return(1-k)*r[p]+k*r[p+1]},t.j2b=function(b){var p=Math.max(0,Math.floor(b[1]),i-2),k=b[1]-p;return(1-k)*n[p]+k*n[p+1]},t.ij2ab=function(b){return[t.i2a(b[0]),t.j2b(b[1])]},t.a2i=function(b){var p=Math.max(0,Math.min(WYe(b,r),i-2)),k=r[p],M=r[p+1];return Math.max(0,Math.min(i-1,p+(b-k)/(M-k)))},t.b2j=function(b){var p=Math.max(0,Math.min(WYe(b,n),a-2)),k=n[p],M=n[p+1];return Math.max(0,Math.min(a-1,p+(b-k)/(M-k)))},t.ab2ij=function(b){return[t.a2i(b[0]),t.b2j(b[1])]},t.i2c=function(b,p){return t.evalxy([],b,p)},t.ab2xy=function(b,p,k){if(!k&&(br[i-1]|pn[a-1]))return[!1,!1];var M=t.a2i(b),T=t.b2j(p),L=t.evalxy([],M,T);if(k){var x=0,C=0,S=[],g,P,E,z;br[i-1]?(g=i-2,P=1,x=(b-r[i-1])/(r[i-1]-r[i-2])):(g=Math.max(0,Math.min(i-2,Math.floor(M))),P=M-g),pn[a-1]?(E=a-2,z=1,C=(p-n[a-1])/(n[a-1]-n[a-2])):(E=Math.max(0,Math.min(a-2,Math.floor(T))),z=T-E),x&&(t.dxydi(S,g,E,P,z),L[0]+=S[0]*x,L[1]+=S[1]*x),C&&(t.dxydj(S,g,E,P,z),L[0]+=S[0]*C,L[1]+=S[1]*C)}return L},t.c2p=function(b,p,k){return[p.c2p(b[0]),k.c2p(b[1])]},t.p2x=function(b,p,k){return[p.p2c(b[0]),k.p2c(b[1])]},t.dadi=function(b){var p=Math.max(0,Math.min(r.length-2,b));return r[p+1]-r[p]},t.dbdj=function(b){var p=Math.max(0,Math.min(n.length-2,b));return n[p+1]-n[p]},t.dxyda=function(b,p,k,M){var T=t.dxydi(null,b,p,k,M),L=t.dadi(b,k);return[T[0]/L,T[1]/L]},t.dxydb=function(b,p,k,M){var T=t.dxydj(null,b,p,k,M),L=t.dbdj(p,M);return[T[0]/L,T[1]/L]},t.dxyda_rough=function(b,p,k){var M=h*(k||.1),T=t.ab2xy(b+M,p,!0),L=t.ab2xy(b-M,p,!0);return[(T[0]-L[0])*.5/M,(T[1]-L[1])*.5/M]},t.dxydb_rough=function(b,p,k){var M=d*(k||.1),T=t.ab2xy(b,p+M,!0),L=t.ab2xy(b,p-M,!0);return[(T[0]-L[0])*.5/M,(T[1]-L[1])*.5/M]},t.dpdx=function(b){return b._m},t.dpdy=function(b){return b._m}}});var rKe=ye((ywr,tKe)=>{"use strict";var i9=ho(),YYe=Pr().isArray1D,dJt=mYe(),KYe=bYe(),JYe=TYe(),$Ye=EYe(),vJt=CYe(),QYe=c8(),eKe=PYe(),pJt=l8(),gJt=ZYe();tKe.exports=function(t,r){var n=i9.getFromId(t,r.xaxis),i=i9.getFromId(t,r.yaxis),a=r.aaxis,o=r.baxis,s=r.x,l=r.y,u=[];s&&YYe(s)&&u.push("x"),l&&YYe(l)&&u.push("y"),u.length&&pJt(r,a,o,"a","b",u);var c=r._a=r._a||r.a,f=r._b=r._b||r.b;s=r._x||r.x,l=r._y||r.y;var h={};if(r._cheater){var d=a.cheatertype==="index"?c.length:c,v=o.cheatertype==="index"?f.length:f;s=dJt(d,v,r.cheaterslope)}r._x=s=QYe(s),r._y=l=QYe(l),eKe(s,c,f),eKe(l,c,f),gJt(r),r.setScale();var m=KYe(s),b=KYe(l),p=.5*(m[1]-m[0]),k=.5*(m[1]+m[0]),M=.5*(b[1]-b[0]),T=.5*(b[1]+b[0]),L=1.3;return m=[k-p*L,k+p*L],b=[T-M*L,T+M*L],r._extremes[n._id]=i9.findExtremes(n,m,{padded:!0}),r._extremes[i._id]=i9.findExtremes(i,b,{padded:!0}),JYe(r,"a","b"),JYe(r,"b","a"),$Ye(r,a),$Ye(r,o),h.clipsegments=vJt(r._xctrl,r._yctrl,a,o),h.x=s,h.y=l,h.a=c,h.b=f,[h]}});var nKe=ye((_wr,iKe)=>{"use strict";iKe.exports={attributes:K7(),supplyDefaults:iYe(),plot:pYe(),calc:rKe(),animatable:!0,isContainer:!0,moduleType:"trace",name:"carpet",basePlotModule:mh(),categories:["cartesian","svg","carpet","carpetAxis","notLegendIsolatable","noMultiCategory","noHover","noSortingByValue"],meta:{}}});var oKe=ye((xwr,aKe)=>{"use strict";aKe.exports=nKe()});var q$=ye((bwr,cKe)=>{"use strict";var mJt=Pg(),c0=pf(),yJt=Gl(),{hovertemplateAttrs:_Jt,texttemplateAttrs:xJt,templatefallbackAttrs:sKe}=Ll(),lKe=Tu(),Bx=Ao().extendFlat,ug=c0.marker,W5=c0.line,uKe=ug.line;cKe.exports={carpet:{valType:"string",editType:"calc"},a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},mode:Bx({},c0.mode,{dflt:"markers"}),text:Bx({},c0.text,{}),texttemplate:xJt({editType:"plot"},{keys:["a","b","text"]}),texttemplatefallback:sKe({editType:"plot"}),hovertext:Bx({},c0.hovertext,{}),line:{color:W5.color,width:W5.width,dash:W5.dash,backoff:W5.backoff,shape:Bx({},W5.shape,{values:["linear","spline"]}),smoothing:W5.smoothing,editType:"calc"},connectgaps:c0.connectgaps,fill:Bx({},c0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:mJt(),marker:Bx({symbol:ug.symbol,opacity:ug.opacity,maxdisplayed:ug.maxdisplayed,angle:ug.angle,angleref:ug.angleref,standoff:ug.standoff,size:ug.size,sizeref:ug.sizeref,sizemin:ug.sizemin,sizemode:ug.sizemode,line:Bx({width:uKe.width,dash:uKe.dash,editType:"calc"},lKe("marker.line")),gradient:ug.gradient,editType:"calc"},lKe("marker")),textfont:c0.textfont,textposition:c0.textposition,selected:c0.selected,unselected:c0.unselected,hoverinfo:Bx({},yJt.hoverinfo,{flags:["a","b","text","name"]}),hoveron:c0.hoveron,hovertemplate:_Jt(),hovertemplatefallback:sKe(),zorder:c0.zorder}});var vKe=ye((wwr,dKe)=>{"use strict";var fKe=Pr(),bJt=Pm(),X5=Ru(),wJt=$p(),TJt=D0(),hKe=uT(),AJt=F0(),SJt=Fg(),MJt=q$();dKe.exports=function(t,r,n,i){function a(h,d){return fKe.coerce(t,r,MJt,h,d)}a("carpet"),r.xaxis="x",r.yaxis="y";var o=a("a"),s=a("b"),l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("text"),a("texttemplate"),a("texttemplatefallback"),a("hovertext");var u=l{"use strict";pKe.exports=function(t,r){var n={},i=r._carpet,a=i.ab2ij([t.a,t.b]),o=Math.floor(a[0]),s=a[0]-o,l=Math.floor(a[1]),u=a[1]-l,c=i.evalxy([],o,l,s,u);return n.yLabel=c[1].toFixed(3),n}});var n9=ye((Awr,mKe)=>{"use strict";mKe.exports=function(e,t){for(var r=e._fullData.length,n,i=0;i{"use strict";var yKe=Eo(),EJt=z0(),kJt=Dm(),CJt=q0(),LJt=O0().calcMarkerSize,PJt=n9();_Ke.exports=function(t,r){var n=r._carpetTrace=PJt(t,r);if(!(!n||!n.visible||n.visible==="legendonly")){var i;r.xaxis=n.xaxis,r.yaxis=n.yaxis;var a=r._length,o=new Array(a),s,l,u=!1;for(i=0;i{"use strict";var IJt=pT(),bKe=ho(),RJt=So();wKe.exports=function(t,r,n,i){var a,o,s,l=n[0][0].carpet,u=bKe.getFromId(t,l.xaxis||"x"),c=bKe.getFromId(t,l.yaxis||"y"),f={xaxis:u,yaxis:c,plot:r.plot};for(a=0;a{"use strict";var DJt=_T(),FJt=Pr().fillText;AKe.exports=function(t,r,n,i){var a=DJt(t,r,n,i);if(!a||a[0].index===!1)return;var o=a[0];if(o.index===void 0){var s=1-o.y0/t.ya._length,l=t.xa._length,u=l*s/2,c=l-u;return o.x0=Math.max(Math.min(o.x0,c),u),o.x1=Math.max(Math.min(o.x1,c),u),a}var f=o.cd[o.index];o.a=f.a,o.b=f.b,o.xLabelVal=void 0,o.yLabelVal=void 0;var h=o.trace,d=h._carpet,v=h._module.formatLabels(f,h);o.yLabel=v.yLabel,delete o.text;var m=[];function b(M,T){var L;M.labelprefix&&M.labelprefix.length>0?L=M.labelprefix.replace(/ = $/,""):L=M._hovertitle,m.push(L+": "+T.toFixed(3)+M.labelsuffix)}if(!h.hovertemplate){var p=f.hi||h.hoverinfo,k=p.split("+");k.indexOf("all")!==-1&&(k=["a","b","text"]),k.indexOf("a")!==-1&&b(d.aaxis,f.a),k.indexOf("b")!==-1&&b(d.baxis,f.b),m.push("y: "+o.yLabel),k.indexOf("text")!==-1&&FJt(f,h,m),o.extraText=m.join("
")}return a}});var EKe=ye((kwr,MKe)=>{"use strict";MKe.exports=function(t,r,n,i,a){var o=i[a];return t.a=o.a,t.b=o.b,t.y=o.y,t}});var CKe=ye((Cwr,kKe)=>{"use strict";kKe.exports={attributes:q$(),supplyDefaults:vKe(),colorbar:Qd(),formatLabels:gKe(),calc:xKe(),plot:TKe(),style:sp().style,styleOnSelect:sp().styleOnSelect,hoverPoints:SKe(),selectPoints:xT(),eventData:EKe(),moduleType:"trace",name:"scattercarpet",basePlotModule:mh(),categories:["svg","carpet","symbols","showLegend","carpetDependent","zoomScale"],meta:{}}});var PKe=ye((Lwr,LKe)=>{"use strict";LKe.exports=CKe()});var O$=ye((Pwr,IKe)=>{"use strict";var cg=qT(),T1=O4(),zJt=Tu(),qJt=Ao().extendFlat,uy=T1.contours;IKe.exports=qJt({carpet:{valType:"string",editType:"calc"},z:cg.z,a:cg.x,a0:cg.x0,da:cg.dx,b:cg.y,b0:cg.y0,db:cg.dy,text:cg.text,hovertext:cg.hovertext,transpose:cg.transpose,atype:cg.xtype,btype:cg.ytype,fillcolor:T1.fillcolor,autocontour:T1.autocontour,ncontours:T1.ncontours,contours:{type:uy.type,start:uy.start,end:uy.end,size:uy.size,coloring:{valType:"enumerated",values:["fill","lines","none"],dflt:"fill",editType:"calc"},showlines:uy.showlines,showlabels:uy.showlabels,labelfont:uy.labelfont,labelformat:uy.labelformat,operation:uy.operation,value:uy.value,editType:"calc",impliedEdits:{autocontour:!1}},line:{color:T1.line.color,width:T1.line.width,dash:T1.line.dash,smoothing:T1.line.smoothing,editType:"plot"},zorder:T1.zorder},zJt("",{cLetter:"z",autoColorDflt:!1}))});var B$=ye((Iwr,FKe)=>{"use strict";var RKe=Pr(),OJt=a8(),DKe=O$(),BJt=FG(),NJt=C8(),UJt=L8();FKe.exports=function(t,r,n,i){function a(u,c){return RKe.coerce(t,r,DKe,u,c)}function o(u){return RKe.coerce2(t,r,DKe,u)}if(a("carpet"),t.a&&t.b){var s=OJt(t,r,a,i,"a","b");if(!s){r.visible=!1;return}a("text");var l=a("contours.type")==="constraint";l?BJt(t,r,a,i,n,{hasHover:!1}):(NJt(t,r,a,o),UJt(t,r,a,i,{hasHover:!1}))}else r._defaultColor=n,r._length=null;a("zorder")}});var BKe=ye((Rwr,OKe)=>{"use strict";var VJt=gv(),zKe=Pr(),GJt=l8(),HJt=c8(),jJt=f8(),WJt=h8(),qKe=nG(),XJt=B$(),ZJt=n9(),YJt=TG();OKe.exports=function(t,r){var n=r._carpetTrace=ZJt(t,r);if(!(!n||!n.visible||n.visible==="legendonly")){if(!r.a||!r.b){var i=t.data[n.index],a=t.data[r.index];a.a||(a.a=i.a),a.b||(a.b=i.b),XJt(a,r,r._defaultColor,t._fullLayout)}var o=KJt(t,r);return YJt(r,r._z),o}};function KJt(e,t){var r=t._carpetTrace,n=r.aaxis,i=r.baxis,a,o,s,l,u,c,f;n._minDtick=0,i._minDtick=0,zKe.isArray1D(t.z)&&GJt(t,n,i,"a","b",["z"]),a=t._a=t._a||t.a,l=t._b=t._b||t.b,a=a?n.makeCalcdata(t,"_a"):[],l=l?i.makeCalcdata(t,"_b"):[],o=t.a0||0,s=t.da||1,u=t.b0||0,c=t.db||1,f=t._z=HJt(t._z||t.z,t.transpose),t._emptypoints=WJt(f),jJt(f,t._emptypoints);var h=zKe.maxRowLength(f),d=t.xtype==="scaled"?"":a,v=qKe(t,d,o,s,h,n),m=t.ytype==="scaled"?"":l,b=qKe(t,m,u,c,f.length,i),p={a:v,b,z:f};return t.contours.type==="levels"&&t.contours.coloring!=="none"&&VJt(e,t,{vals:f,containerStr:"",cLetter:"z"}),[p]}});var UKe=ye((Dwr,NKe)=>{"use strict";var JJt=Pr().isArrayOrTypedArray;NKe.exports=function(e,t,r,n){var i,a,o,s,l,u,c,f,h,d,v,m,b,p=JJt(r)?"a":"b",k=p==="a"?e.aaxis:e.baxis,M=k.smoothing,T=p==="a"?e.a2i:e.b2j,L=p==="a"?r:n,x=p==="a"?n:r,C=p==="a"?t.a.length:t.b.length,S=p==="a"?t.b.length:t.a.length,g=Math.floor(p==="a"?e.b2j(x):e.a2i(x)),P=p==="a"?function(_e){return e.evalxy([],_e,g)}:function(_e){return e.evalxy([],g,_e)};M&&(o=Math.max(0,Math.min(S-2,g)),s=g-o,a=p==="a"?function(_e,Ee){return e.dxydi([],_e,o,Ee,s)}:function(_e,Ee){return e.dxydj([],o,_e,s,Ee)});var E=T(L[0]),z=T(L[1]),q=E0?Math.floor:Math.ceil,Z=q>0?Math.ceil:Math.floor,j=q>0?Math.min:Math.max,N=q>0?Math.max:Math.min,H=G(E+V),ie=Z(z-V);c=P(E);var ae=[[c]];for(i=H;i*q{"use strict";var o9=qa(),s9=R$(),WKe=D$(),gC=So(),A1=Pr(),$Jt=SG(),QJt=MG(),Sw=R8(),a9=N4(),e$t=LG(),t$t=CG(),r$t=PG(),i$t=n9(),VKe=UKe();XKe.exports=function(t,r,n,i){var a=r.xaxis,o=r.yaxis;A1.makeTraceGroups(i,n,"contour").each(function(s){var l=o9.select(this),u=s[0],c=u.trace,f=c._carpetTrace=i$t(t,c),h=t.calcdata[f.index][0];if(!f.visible||f.visible==="legendonly")return;var d=u.a,v=u.b,m=c.contours,b=t$t(m,r,u),p=m.type==="constraint",k=m._operation,M=p?k==="="?"lines":"fill":m.coloring;function T(G){var Z=f.ab2xy(G[0],G[1],!0);return[a.c2p(Z[0]),o.c2p(Z[1])]}var L=[[d[0],v[v.length-1]],[d[d.length-1],v[v.length-1]],[d[d.length-1],v[0]],[d[0],v[0]]];$Jt(b);var x=(d[d.length-1]-d[0])*1e-8,C=(v[v.length-1]-v[0])*1e-8;QJt(b,x,C);var S=b;m.type==="constraint"&&(S=e$t(b,k)),n$t(b,T);var g,P,E,z,q=[];for(z=h.clipsegments.length-1;z>=0;z--)g=h.clipsegments[z],P=s9([],g.x,a.c2p),E=s9([],g.y,o.c2p),P.reverse(),E.reverse(),q.push(WKe(P,E,g.bicubic));var V="M"+q.join("L")+"Z";s$t(l,h.clipsegments,a,o,p,M),l$t(c,l,a,o,S,L,T,f,h,M,V),a$t(l,b,t,u,m,r,f),gC.setClipUrl(l,f._clipPathId,t)})};function n$t(e,t){var r,n,i,a,o,s,l,u,c;for(r=0;rb&&(n.max=b),n.len=n.max-n.min}function GKe(e,t,r){var n=e.getPointAtLength(t),i=e.getPointAtLength(r),a=i.x-n.x,o=i.y-n.y,s=Math.sqrt(a*a+o*o);return[a/s,o/s]}function HKe(e){var t=Math.sqrt(e[0]*e[0]+e[1]*e[1]);return[e[0]/t,e[1]/t]}function jKe(e,t){var r=Math.abs(e[0]*t[0]+e[1]*t[1]),n=Math.sqrt(1-r*r);return n/r}function s$t(e,t,r,n,i,a){var o,s,l,u,c=A1.ensureSingle(e,"g","contourbg"),f=c.selectAll("path").data(a==="fill"&&!i?[0]:[]);f.enter().append("path"),f.exit().remove();var h=[];for(u=0;u=0&&(d=P,m=b):Math.abs(h[1]-d[1])=0&&(d=P,m=b):A1.log("endpt to newendpt is not vert. or horz.",h,d,P)}if(m>=0)break;u+=S(h,d),h=d}if(m===t.edgepaths.length){A1.log("unclosed perimeter path");break}l=m,f=c.indexOf(l)===-1,f&&(l=c[0],u+=S(h,d)+"Z",h=null)}for(l=0;l{"use strict";YKe.exports={attributes:O$(),supplyDefaults:B$(),colorbar:z8(),calc:BKe(),plot:ZKe(),style:F8(),moduleType:"trace",name:"contourcarpet",basePlotModule:mh(),categories:["cartesian","svg","carpet","contour","symbols","showLegend","hasLines","carpetDependent","noHover","noSortingByValue"],meta:{}}});var $Ke=ye((qwr,JKe)=>{"use strict";JKe.exports=KKe()});var u9=ye((Owr,iJe)=>{"use strict";var l9=Pr().extendFlat,mC=pf(),QKe=vf().axisHoverFormat,{hovertemplateAttrs:c$t,templatefallbackAttrs:f$t}=Ll(),tJe=Pd().dash,h$t=g3(),rJe=QT(),d$t=rJe.INCREASING.COLOR,v$t=rJe.DECREASING.COLOR,N$=mC.line;function eJe(e){return{line:{color:l9({},N$.color,{dflt:e}),width:N$.width,dash:tJe,editType:"style"},editType:"style"}}iJe.exports={xperiod:mC.xperiod,xperiod0:mC.xperiod0,xperiodalignment:mC.xperiodalignment,xhoverformat:QKe("x"),yhoverformat:QKe("y"),x:{valType:"data_array",editType:"calc+clearAxisTypes"},open:{valType:"data_array",editType:"calc"},high:{valType:"data_array",editType:"calc"},low:{valType:"data_array",editType:"calc"},close:{valType:"data_array",editType:"calc"},line:{width:l9({},N$.width,{}),dash:l9({},tJe,{}),editType:"style"},increasing:eJe(d$t),decreasing:eJe(v$t),text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:c$t({},{keys:["open","high","low","close"]}),hovertemplatefallback:f$t(),tickwidth:{valType:"number",min:0,max:.5,dflt:.3,editType:"calc"},hoverlabel:l9({},h$t.hoverlabel,{split:{valType:"boolean",dflt:!1,editType:"style"}}),zorder:mC.zorder}});var U$=ye((Bwr,nJe)=>{"use strict";var p$t=Oa(),g$t=Pr();nJe.exports=function(t,r,n,i){var a=n("x"),o=n("open"),s=n("high"),l=n("low"),u=n("close");n("hoverlabel.split");var c=p$t.getComponentMethod("calendars","handleTraceDefaults");if(c(t,r,["x"],i),!!(o&&s&&l&&u)){var f=Math.min(o.length,s.length,l.length,u.length);return a&&(f=Math.min(f,g$t.minRowLength(a))),r._length=f,f}}});var sJe=ye((Nwr,oJe)=>{"use strict";var m$t=Pr(),y$t=U$(),_$t=Dg(),x$t=u9();oJe.exports=function(t,r,n,i){function a(s,l){return m$t.coerce(t,r,x$t,s,l)}var o=y$t(t,r,a,i);if(!o){r.visible=!1;return}_$t(t,r,i,a,{x:!0}),a("xhoverformat"),a("yhoverformat"),a("line.width"),a("line.dash"),aJe(t,r,a,"increasing"),aJe(t,r,a,"decreasing"),a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),a("tickwidth"),i._requestRangeslider[r.xaxis]=!0,a("zorder")};function aJe(e,t,r,n){r(n+".line.color"),r(n+".line.width",t.line.width),r(n+".line.dash",t.line.dash)}});var V$=ye((Uwr,uJe)=>{"use strict";var Z5=Pr(),c9=Z5._,f9=ho(),b$t=zg(),yC=fs().BADNUM;function w$t(e,t){var r=f9.getFromId(e,t.xaxis),n=f9.getFromId(e,t.yaxis),i=A$t(e,r,t),a=t._minDiff;t._minDiff=null;var o=t._origX;t._origX=null;var s=t._xcalc;t._xcalc=null;var l=lJe(e,t,o,s,n,T$t);return t._extremes[r._id]=f9.findExtremes(r,s,{vpad:a/2}),l.length?(Z5.extendFlat(l[0].t,{wHover:a/2,tickLen:i}),l):[{t:{empty:!0}}]}function T$t(e,t,r,n){return{o:e,h:t,l:r,c:n}}function lJe(e,t,r,n,i,a){for(var o=i.makeCalcdata(t,"open"),s=i.makeCalcdata(t,"high"),l=i.makeCalcdata(t,"low"),u=i.makeCalcdata(t,"close"),c=Z5.isArrayOrTypedArray(t.text),f=Z5.isArrayOrTypedArray(t.hovertext),h=!0,d=null,v=!!t.xperiodalignment,m=[],b=0;bd):h=L>k,d=L;var x=a(k,M,T,L);x.pos=p,x.yc=(k+L)/2,x.i=b,x.dir=h?"increasing":"decreasing",x.x=x.pos,x.y=[T,M],v&&(x.orig_p=r[b]),c&&(x.tx=t.text[b]),f&&(x.htx=t.hovertext[b]),m.push(x)}else m.push({pos:p,empty:!0})}return t._extremes[i._id]=f9.findExtremes(i,Z5.concat(l,s),{padded:!0}),m.length&&(m[0].t={labels:{open:c9(e,"open:")+" ",high:c9(e,"high:")+" ",low:c9(e,"low:")+" ",close:c9(e,"close:")+" "}}),m}function A$t(e,t,r){var n=r._minDiff;if(!n){var i=e._fullData,a=[];n=1/0;var o;for(o=0;o{"use strict";var S$t=qa(),cJe=Pr();fJe.exports=function(t,r,n,i){var a=r.yaxis,o=r.xaxis,s=!!o.rangebreaks;cJe.makeTraceGroups(i,n,"trace ohlc").each(function(l){var u=S$t.select(this),c=l[0],f=c.t,h=c.trace;if(h.visible!==!0||f.empty){u.remove();return}var d=f.tickLen,v=u.selectAll("path").data(cJe.identity);v.enter().append("path"),v.exit().remove(),v.attr("d",function(m){if(m.empty)return"M0,0Z";var b=o.c2p(m.pos-d,!0),p=o.c2p(m.pos+d,!0),k=s?(b+p)/2:o.c2p(m.pos,!0),M=a.c2p(m.o,!0),T=a.c2p(m.h,!0),L=a.c2p(m.l,!0),x=a.c2p(m.c,!0);return"M"+b+","+M+"H"+k+"M"+k+","+T+"V"+L+"M"+p+","+x+"H"+k})})}});var vJe=ye((Gwr,dJe)=>{"use strict";var G$=qa(),M$t=So(),E$t=ka();dJe.exports=function(t,r,n){var i=n||G$.select(t).selectAll("g.ohlclayer").selectAll("g.trace");i.style("opacity",function(a){return a[0].trace.opacity}),i.each(function(a){var o=a[0].trace;G$.select(this).selectAll("path").each(function(s){if(!s.empty){var l=o[s.dir].line;G$.select(this).style("fill","none").call(E$t.stroke,l.color).call(M$t.dashLine,l.dash,l.width).style("opacity",o.selectedpoints&&!s.selected?.3:1)}})})}});var j$=ye((Hwr,_Je)=>{"use strict";var H$=ho(),k$t=Pr(),h9=ef(),C$t=ka(),L$t=Pr().fillText,pJe=QT(),P$t={increasing:pJe.INCREASING.SYMBOL,decreasing:pJe.DECREASING.SYMBOL};function I$t(e,t,r,n){var i=e.cd,a=i[0].trace;return a.hoverlabel.split?mJe(e,t,r,n):yJe(e,t,r,n)}function gJe(e,t,r,n){var i=e.cd,a=e.xa,o=i[0].trace,s=i[0].t,l=o.type,u=l==="ohlc"?"l":"min",c=l==="ohlc"?"h":"max",f,h,d=s.bPos||0,v=function(P){return P.pos+d-t},m=s.bdPos||s.tickLen,b=s.wHover,p=Math.min(1,m/Math.abs(a.r2c(a.range[1])-a.r2c(a.range[0])));f=e.maxHoverDistance-p,h=e.maxSpikeDistance-p;function k(P){var E=v(P);return h9.inbox(E-b,E+b,f)}function M(P){var E=P[u],z=P[c];return E===z||h9.inbox(E-r,z-r,f)}function T(P){return(k(P)+M(P))/2}var L=h9.getDistanceFunction(n,k,M,T);if(h9.getClosest(i,L,e),e.index===!1)return null;var x=i[e.index];if(x.empty)return null;var C=x.dir,S=o[C],g=S.line.color;return C$t.opacity(g)&&S.line.width?e.color=g:e.color=S.fillcolor,e.x0=a.c2p(x.pos+d-m,!0),e.x1=a.c2p(x.pos+d+m,!0),e.xLabelVal=x.orig_p!==void 0?x.orig_p:x.pos,e.spikeDistance=T(x)*h/f,e.xSpike=a.c2p(x.pos,!0),e}function mJe(e,t,r,n){var i=e.cd,a=e.ya,o=i[0].trace,s=i[0].t,l=[],u=gJe(e,t,r,n);if(!u)return[];var c=i[u.index],f=c.hi||o.hoverinfo||"";if(f==="none"||f==="skip")return[];for(var h=["high","open","close","low"],d={},v=0;v"+s.labels[m]+H$.hoverLabelText(a,b,o.yhoverformat)):(k=k$t.extendFlat({},u),k.y0=k.y1=p,k.yLabelVal=b,k.yLabel=s.labels[m]+H$.hoverLabelText(a,b,o.yhoverformat),k.name="",l.push(k),d[b]=k)}return l}function yJe(e,t,r,n){var i=e.cd,a=e.ya,o=i[0].trace,s=i[0].t,l=gJe(e,t,r,n);if(!l)return[];var u=l.index,c=i[u],f=l.index=c.i,h=c.dir;function d(T){return s.labels[T]+H$.hoverLabelText(a,o[T][f],o.yhoverformat)}var v=c.hi||o.hoverinfo||"",m=v.split("+"),b=v==="all",p=b||m.indexOf("y")!==-1,k=b||m.indexOf("text")!==-1,M=p?[d("open"),d("high"),d("low"),d("close")+" "+P$t[h]]:[];return k&&L$t(c,o,M),l.extraText=M.join("
"),l.y0=l.y1=a.c2p(c.yc,!0),[l]}_Je.exports={hoverPoints:I$t,hoverSplit:mJe,hoverOnPoints:yJe}});var W$=ye((jwr,xJe)=>{"use strict";xJe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l=n[0].t.bPos||0;if(r===!1)for(s=0;s{"use strict";bJe.exports={moduleType:"trace",name:"ohlc",basePlotModule:mh(),categories:["cartesian","svg","showLegend"],meta:{},attributes:u9(),supplyDefaults:sJe(),calc:V$().calc,plot:hJe(),style:vJe(),hoverPoints:j$().hoverPoints,selectPoints:W$()}});var AJe=ye((Xwr,TJe)=>{"use strict";TJe.exports=wJe()});var Z$=ye((Zwr,EJe)=>{"use strict";var X$=Pr().extendFlat,SJe=vf().axisHoverFormat,vp=u9(),Y5=C4();function MJe(e){return{line:{color:X$({},Y5.line.color,{dflt:e}),width:Y5.line.width,editType:"style"},fillcolor:Y5.fillcolor,editType:"style"}}EJe.exports={xperiod:vp.xperiod,xperiod0:vp.xperiod0,xperiodalignment:vp.xperiodalignment,xhoverformat:SJe("x"),yhoverformat:SJe("y"),x:vp.x,open:vp.open,high:vp.high,low:vp.low,close:vp.close,line:{width:X$({},Y5.line.width,{}),editType:"style"},increasing:MJe(vp.increasing.line.color.dflt),decreasing:MJe(vp.decreasing.line.color.dflt),text:vp.text,hovertext:vp.hovertext,hovertemplate:vp.hovertemplate,hovertemplatefallback:vp.hovertemplatefallback,whiskerwidth:X$({},Y5.whiskerwidth,{dflt:0}),hoverlabel:vp.hoverlabel,zorder:Y5.zorder}});var LJe=ye((Ywr,CJe)=>{"use strict";var R$t=Pr(),D$t=ka(),F$t=U$(),z$t=Dg(),q$t=Z$();CJe.exports=function(t,r,n,i){function a(s,l){return R$t.coerce(t,r,q$t,s,l)}var o=F$t(t,r,a,i);if(!o){r.visible=!1;return}z$t(t,r,i,a,{x:!0}),a("xhoverformat"),a("yhoverformat"),a("line.width"),kJe(t,r,a,"increasing"),kJe(t,r,a,"decreasing"),a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),a("whiskerwidth"),i._requestRangeslider[r.xaxis]=!0,a("zorder")};function kJe(e,t,r,n){var i=r(n+".line.color");r(n+".line.width",t.line.width),r(n+".fillcolor",D$t.addOpacity(i,.5))}});var DJe=ye((Kwr,RJe)=>{"use strict";var PJe=Pr(),IJe=ho(),O$t=zg(),B$t=V$().calcCommon;RJe.exports=function(e,t){var r=e._fullLayout,n=IJe.getFromId(e,t.xaxis),i=IJe.getFromId(e,t.yaxis),a=n.makeCalcdata(t,"x"),o=O$t(t,n,"x",a).vals,s=B$t(e,t,a,o,i,N$t);return s.length?(PJe.extendFlat(s[0].t,{num:r._numBoxes,dPos:PJe.distinctVals(o).minDiff/2,posLetter:"x",valLetter:"y"}),r._numBoxes++,s):[{t:{empty:!0}}]};function N$t(e,t,r,n){return{min:r,q1:Math.min(e,n),med:n,q3:Math.max(e,n),max:t}}});var zJe=ye((Jwr,FJe)=>{"use strict";FJe.exports={moduleType:"trace",name:"candlestick",basePlotModule:mh(),categories:["cartesian","svg","showLegend","candlestick","boxLayout"],meta:{},attributes:Z$(),layoutAttributes:L4(),supplyLayoutDefaults:QI().supplyLayoutDefaults,crossTraceCalc:t8().crossTraceCalc,supplyDefaults:LJe(),calc:DJe(),plot:r8().plot,layerName:"boxlayer",style:i8().style,hoverPoints:j$().hoverPoints,selectPoints:W$()}});var OJe=ye(($wr,qJe)=>{"use strict";qJe.exports=zJe()});var K$=ye((Qwr,BJe)=>{"use strict";var v9=Pr(),U$t=xm(),d9=v9.deg2rad,Y$=v9.rad2deg;BJe.exports=function(t,r,n){switch(U$t(t,n),t._id){case"x":case"radialaxis":V$t(t,r);break;case"angularaxis":j$t(t,r);break}};function V$t(e,t){var r=t._subplot;e.setGeometry=function(){var n=e._rl[0],i=e._rl[1],a=r.innerRadius,o=(r.radius-a)/(i-n),s=a/o,l=n>i?function(u){return u<=0}:function(u){return u>=0};e.c2g=function(u){var c=e.c2l(u)-n;return(l(c)?c:0)+s},e.g2c=function(u){return e.l2c(u+n-s)},e.g2p=function(u){return u*o},e.c2p=function(u){return e.g2p(e.c2g(u))}}}function G$t(e,t){return t==="degrees"?d9(e):e}function H$t(e,t){return t==="degrees"?Y$(e):e}function j$t(e,t){var r=e.type;if(r==="linear"){var n=e.d2c,i=e.c2d;e.d2c=function(a,o){return G$t(n(a),o)},e.c2d=function(a,o){return i(H$t(a,o))}}e.makeCalcdata=function(a,o){var s=a[o],l=a._length,u,c,f=function(b){return e.d2c(b,a.thetaunit)};if(s)for(u=new Array(l),c=0;c{"use strict";NJe.exports={attr:"subplot",name:"polar",axisNames:["angularaxis","radialaxis"],axisName2dataArray:{angularaxis:"theta",radialaxis:"r"},layerNames:["draglayer","plotbg","backplot","angular-grid","radial-grid","frontplot","angular-line","radial-line","angular-axis","radial-axis"],radialDragBoxSize:50,angularDragBoxSize:30,cornerLen:25,cornerHalfWidth:2,MINDRAG:8,MINZOOM:20,OFFEDGE:20}});var m9=ye((t3r,jJe)=>{"use strict";var Mw=Pr(),UJe=zM().tester,J$=Mw.findIndexOfMin,GJe=Mw.isAngleInsideSector,W$t=Mw.angleDelta,VJe=Mw.angleDist;function X$t(e,t,r,n,i){if(!GJe(t,n))return!1;var a,o;r[0]0?o:1/0},n=J$(t,r),i=Mw.mod(n+1,t.length);return[t[n],t[i]]}function g9(e){return Math.abs(e)>1e-10?e:0}function $$(e,t,r){t=t||0,r=r||0;for(var n=e.length,i=new Array(n),a=0;a{"use strict";function WJe(e){return e<0?-1:e>0?1:0}function J5(e){var t=e[0],r=e[1];if(!isFinite(t)||!isFinite(r))return[1,0];var n=(t+1)*(t+1)+r*r;return[(t*t+r*r-1)/n,2*r/n]}function $5(e,t){var r=t[0],n=t[1];return[r*e.radius+e.cx,-n*e.radius+e.cy]}function XJe(e,t){return t*e.radius}function tQt(e,t,r,n){var i=$5(e,J5([r,t])),a=i[0],o=i[1],s=$5(e,J5([n,t])),l=s[0],u=s[1];if(t===0)return["M"+a+","+o,"L"+l+","+u].join(" ");var c=XJe(e,1/Math.abs(t));return["M"+a+","+o,"A"+c+","+c+" 0 0,"+(t<0?1:0)+" "+l+","+u].join(" ")}function rQt(e,t,r,n){var i=XJe(e,1/(t+1)),a=$5(e,J5([t,r])),o=a[0],s=a[1],l=$5(e,J5([t,n])),u=l[0],c=l[1];if(WJe(r)!==WJe(n)){var f=$5(e,J5([t,0])),h=f[0],d=f[1];return["M"+o+","+s,"A"+i+","+i+" 0 0,"+(0{"use strict";var Ew=qa(),iQt=fd(),Cw=Oa(),Xc=Pr(),cy=Xc.strRotate,xd=Xc.strTranslate,eQ=ka(),_C=So(),nQt=Mc(),pp=ho(),aQt=xm(),oQt=K$(),sQt=Mg().doAutoRange,S1=XN(),x9=yv(),YJe=ef(),lQt=qb(),uQt=qf().prepSelect,cQt=qf().selectOnClick,tQ=qf().clearOutline,KJe=Eg(),JJe=wM(),$Je=LM().redrawReglTraces,fQt=Dh().MID_SHIFT,Nx=p9(),M1=m9(),b9=Q$(),y9=b9.smith,hQt=b9.reactanceArc,dQt=b9.resistanceArc,_9=b9.smithTransform,vQt=Xc._,QJe=Xc.mod,Ux=Xc.deg2rad,kw=Xc.rad2deg;function e$e(e,t,r){this.isSmith=r||!1,this.id=t,this.gd=e,this._hasClipOnAxisFalse=null,this.vangles=null,this.radialAxisAngle=null,this.traceHash={},this.layers={},this.clipPaths={},this.clipIds={},this.viewInitial={};var n=e._fullLayout,i="clip"+n._uid+t;this.clipIds.forTraces=i+"-for-traces",this.clipPaths.forTraces=n._clips.append("clipPath").attr("id",this.clipIds.forTraces),this.clipPaths.forTraces.append("path"),this.framework=n["_"+(r?"smith":"polar")+"layer"].append("g").attr("class",t),this.getHole=function(a){return this.isSmith?0:a.hole},this.getSector=function(a){return this.isSmith?[0,360]:a.sector},this.getRadial=function(a){return this.isSmith?a.realaxis:a.radialaxis},this.getAngular=function(a){return this.isSmith?a.imaginaryaxis:a.angularaxis},r||(this.radialTickLayout=null,this.angularTickLayout=null)}var Nd=e$e.prototype;i$e.exports=function(t,r,n){return new e$e(t,r,n)};Nd.plot=function(e,t){for(var r=this,n=t[r.id],i=!1,a=0;ab?(p=u,k=u*b,L=(c-k)/i.h/2,M=[s[0],s[1]],T=[l[0]+L,l[1]-L]):(p=c/b,k=c,L=(u-p)/i.w/2,M=[s[0]+L,s[1]-L],T=[l[0],l[1]]),r.xLength2=p,r.yLength2=k,r.xDomain2=M,r.yDomain2=T;var x=r.xOffset2=i.l+i.w*M[0],C=r.yOffset2=i.t+i.h*(1-T[1]),S=r.radius=p/d,g=r.innerRadius=r.getHole(t)*S,P=r.cx=x-S*h[0],E=r.cy=C+S*h[3],z=r.cxx=P-x,q=r.cyy=E-C,V=a.side,G;V==="counterclockwise"?(G=V,V="top"):V==="clockwise"&&(G=V,V="bottom"),r.radialAxis=r.mockAxis(e,t,a,{_id:"x",side:V,_trueSide:G,domain:[g/i.w,S/i.w]}),r.angularAxis=r.mockAxis(e,t,o,{side:"right",domain:[0,Math.PI],autorange:!1}),r.doAutoRange(e,t),r.updateAngularAxis(e,t),r.updateRadialAxis(e,t),r.updateRadialAxisTitle(e,t),r.xaxis=r.mockCartesianAxis(e,t,{_id:"x",domain:M}),r.yaxis=r.mockCartesianAxis(e,t,{_id:"y",domain:T});var Z=r.pathSubplot();r.clipPaths.forTraces.select("path").attr("d",Z).attr("transform",xd(z,q)),n.frontplot.attr("transform",xd(x,C)).call(_C.setClipUrl,r._hasClipOnAxisFalse?null:r.clipIds.forTraces,r.gd),n.bg.attr("d",Z).attr("transform",xd(P,E)).call(eQ.fill,t.bgcolor)};Nd.mockAxis=function(e,t,r,n){var i=Xc.extendFlat({},r,n);return oQt(i,t,e),i};Nd.mockCartesianAxis=function(e,t,r){var n=this,i=n.isSmith,a=r._id,o=Xc.extendFlat({type:"linear"},r);aQt(o,e);var s={x:[0,2],y:[1,3]};return o.setRange=function(){var l=n.sectorBBox,u=s[a],c=n.radialAxis._rl,f=(c[1]-c[0])/(1-n.getHole(t));o.range=[l[u[0]]*f,l[u[1]]*f]},o.isPtWithinRange=a==="x"&&!i?function(l){return n.isPtInside(l)}:function(){return!0},o.setRange(),o.setScale(),o};Nd.doAutoRange=function(e,t){var r=this,n=r.gd,i=r.radialAxis,a=r.getRadial(t);sQt(n,i);var o=i.range;if(a.range=o.slice(),a._input.range=o.slice(),i._rl=[i.r2l(o[0],null,"gregorian"),i.r2l(o[1],null,"gregorian")],i.minallowed!==void 0){var s=i.r2l(i.minallowed);i._rl[0]>i._rl[1]?i._rl[1]=Math.max(i._rl[1],s):i._rl[0]=Math.max(i._rl[0],s)}if(i.maxallowed!==void 0){var l=i.r2l(i.maxallowed);i._rl[0]90&&c<=270&&(f.tickangle=180);var v=d?function(S){var g=_9(r,y9([S.x,0]));return xd(g[0]-s,g[1]-l)}:function(S){return xd(f.l2p(S.x)+o,0)},m=d?function(S){return dQt(r,S.x,-1/0,1/0)}:function(S){return r.pathArc(f.r2p(S.x)+o)},b=t$e(u);if(r.radialTickLayout!==b&&(i["radial-axis"].selectAll(".xtick").remove(),r.radialTickLayout=b),h){f.setScale();var p=0,k=d?(f.tickvals||[]).filter(function(S){return S>=0}).map(function(S){return pp.tickText(f,S,!0,!1)}):pp.calcTicks(f),M=d?k:pp.clipEnds(f,k),T=pp.getTickSigns(f)[2];d&&((f.ticks==="top"&&f.side==="bottom"||f.ticks==="bottom"&&f.side==="top")&&(T=-T),f.ticks==="top"&&f.side==="top"&&(p=-f.ticklen),f.ticks==="bottom"&&f.side==="bottom"&&(p=f.ticklen)),pp.drawTicks(n,f,{vals:k,layer:i["radial-axis"],path:pp.makeTickPath(f,0,T),transFn:v,crisp:!1}),pp.drawGrid(n,f,{vals:M,layer:i["radial-grid"],path:m,transFn:Xc.noop,crisp:!1}),pp.drawLabels(n,f,{vals:k,layer:i["radial-axis"],transFn:v,labelFns:pp.makeLabelFns(f,p)})}var L=r.radialAxisAngle=r.vangles?kw(r$e(Ux(u.angle),r.vangles)):u.angle,x=xd(s,l),C=x+cy(-L);xC(i["radial-axis"],h&&(u.showticklabels||u.ticks),{transform:C}),xC(i["radial-grid"],h&&u.showgrid,{transform:d?"":x}),xC(i["radial-line"].select("line"),h&&u.showline,{x1:d?-a:o,y1:0,x2:a,y2:0,transform:C}).attr("stroke-width",u.linewidth).call(eQ.stroke,u.linecolor)};Nd.updateRadialAxisTitle=function(e,t,r){if(!this.isSmith){var n=this,i=n.gd,a=n.radius,o=n.cx,s=n.cy,l=n.getRadial(t),u=n.id+"title",c=0;if(l.title){var f=_C.bBox(n.layers["radial-axis"].node()).height,h=l.title.font.size,d=l.side;c=d==="top"?h:d==="counterclockwise"?-(f+h*.4):f+h*.8}var v=r!==void 0?r:n.radialAxisAngle,m=Ux(v),b=Math.cos(m),p=Math.sin(m),k=o+a/2*b+c*p,M=s-a/2*p+c*b;n.layers["radial-axis-title"]=lQt.draw(i,u,{propContainer:l,propName:n.id+".radialaxis.title.text",placeholder:vQt(i,"Click to enter radial axis title"),attributes:{x:k,y:M,"text-anchor":"middle"},transform:{rotate:-v}})}};Nd.updateAngularAxis=function(e,t){var r=this,n=r.gd,i=r.layers,a=r.radius,o=r.innerRadius,s=r.cx,l=r.cy,u=r.getAngular(t),c=r.angularAxis,f=r.isSmith;f||(r.fillViewInitialKey("angularaxis.rotation",u.rotation),c.setGeometry(),c.setScale());var h=f?function(g){var P=_9(r,y9([0,g.x]));return Math.atan2(P[0]-s,P[1]-l)-Math.PI/2}:function(g){return c.t2g(g.x)};c.type==="linear"&&c.thetaunit==="radians"&&(c.tick0=kw(c.tick0),c.dtick=kw(c.dtick));var d=function(g){return xd(s+a*Math.cos(g),l-a*Math.sin(g))},v=f?function(g){var P=_9(r,y9([0,g.x]));return xd(P[0],P[1])}:function(g){return d(h(g))},m=f?function(g){var P=_9(r,y9([0,g.x])),E=Math.atan2(P[0]-s,P[1]-l)-Math.PI/2;return xd(P[0],P[1])+cy(-kw(E))}:function(g){var P=h(g);return d(P)+cy(-kw(P))},b=f?function(g){return hQt(r,g.x,0,1/0)}:function(g){var P=h(g),E=Math.cos(P),z=Math.sin(P);return"M"+[s+o*E,l-o*z]+"L"+[s+a*E,l-a*z]},p=pp.makeLabelFns(c,0),k=p.labelStandoff,M={};M.xFn=function(g){var P=h(g);return Math.cos(P)*k},M.yFn=function(g){var P=h(g),E=Math.sin(P)>0?.2:1;return-Math.sin(P)*(k+g.fontSize*E)+Math.abs(Math.cos(P))*(g.fontSize*fQt)},M.anchorFn=function(g){var P=h(g),E=Math.cos(P);return Math.abs(E)<.1?"middle":E>0?"start":"end"},M.heightFn=function(g,P,E){var z=h(g);return-.5*(1+Math.sin(z))*E};var T=t$e(u);r.angularTickLayout!==T&&(i["angular-axis"].selectAll("."+c._id+"tick").remove(),r.angularTickLayout=T);var L=f?[1/0].concat(c.tickvals||[]).map(function(g){return pp.tickText(c,g,!0,!1)}):pp.calcTicks(c);f&&(L[0].text="\u221E",L[0].fontSize*=1.75);var x;if(t.gridshape==="linear"?(x=L.map(h),Xc.angleDelta(x[0],x[1])<0&&(x=x.slice().reverse())):x=null,r.vangles=x,c.type==="category"&&(L=L.filter(function(g){return Xc.isAngleInsideSector(h(g),r.sectorInRad)})),c.visible){var C=c.ticks==="inside"?-1:1,S=(c.linewidth||1)/2;pp.drawTicks(n,c,{vals:L,layer:i["angular-axis"],path:"M"+C*S+",0h"+C*c.ticklen,transFn:m,crisp:!1}),pp.drawGrid(n,c,{vals:L,layer:i["angular-grid"],path:b,transFn:Xc.noop,crisp:!1}),pp.drawLabels(n,c,{vals:L,layer:i["angular-axis"],repositionOnUpdate:!0,transFn:v,labelFns:M})}xC(i["angular-line"].select("path"),u.showline,{d:r.pathSubplot(),transform:xd(s,l)}).attr("stroke-width",u.linewidth).call(eQ.stroke,u.linecolor)};Nd.updateFx=function(e,t){if(!this.gd._context.staticPlot){var r=!this.isSmith;r&&(this.updateAngularDrag(e),this.updateRadialDrag(e,t,0),this.updateRadialDrag(e,t,1)),this.updateHoverAndMainDrag(e)}};Nd.updateHoverAndMainDrag=function(e){var t=this,r=t.isSmith,n=t.gd,i=t.layers,a=e._zoomlayer,o=Nx.MINZOOM,s=Nx.OFFEDGE,l=t.radius,u=t.innerRadius,c=t.cx,f=t.cy,h=t.cxx,d=t.cyy,v=t.sectorInRad,m=t.vangles,b=t.radialAxis,p=M1.clampTiny,k=M1.findXYatLength,M=M1.findEnclosingVertexAngles,T=Nx.cornerHalfWidth,L=Nx.cornerLen/2,x,C,S=S1.makeDragger(i,"path","maindrag",e.dragmode===!1?"none":"crosshair");Ew.select(S).attr("d",t.pathSubplot()).attr("transform",xd(c,f)),S.onmousemove=function(ce){YJe.hover(n,ce,t.id),n._fullLayout._lasthover=S,n._fullLayout._hoversubplot=t.id},S.onmouseout=function(ce){n._dragging||x9.unhover(n,ce)};var g={element:S,gd:n,subplot:t.id,plotinfo:{id:t.id,xaxis:t.xaxis,yaxis:t.yaxis},xaxes:[t.xaxis],yaxes:[t.yaxis]},P,E,z,q,V,G,Z,j,N;function H(ce,He){return Math.sqrt(ce*ce+He*He)}function ie(ce,He){return H(ce-h,He-d)}function ae(ce,He){return Math.atan2(d-He,ce-h)}function _e(ce,He){return[ce*Math.cos(He),ce*Math.sin(-He)]}function Ee(ce,He){if(ce===0)return t.pathSector(2*T);var lt=L/ce,mt=He-lt,Ht=He+lt,at=Math.max(0,Math.min(ce,l)),ct=at-T,ar=at+T;return"M"+_e(ct,mt)+"A"+[ct,ct]+" 0,0,0 "+_e(ct,Ht)+"L"+_e(ar,Ht)+"A"+[ar,ar]+" 0,0,1 "+_e(ar,mt)+"Z"}function Ce(ce,He,lt){if(ce===0)return t.pathSector(2*T);var mt=_e(ce,He),Ht=_e(ce,lt),at=p((mt[0]+Ht[0])/2),ct=p((mt[1]+Ht[1])/2),ar,Vt;if(at&&ct){var rr=ct/at,tt=-1/rr,je=k(T,rr,at,ct);ar=k(L,tt,je[0][0],je[0][1]),Vt=k(L,tt,je[1][0],je[1][1])}else{var Ue,Ae;ct?(Ue=L,Ae=T):(Ue=T,Ae=L),ar=[[at-Ue,ct-Ae],[at+Ue,ct-Ae]],Vt=[[at-Ue,ct+Ae],[at+Ue,ct+Ae]]}return"M"+ar.join("L")+"L"+Vt.reverse().join("L")+"Z"}function ge(){z=null,q=null,V=t.pathSubplot(),G=!1;var ce=n._fullLayout[t.id];Z=iQt(ce.bgcolor).getLuminance(),j=S1.makeZoombox(a,Z,c,f,V),j.attr("fill-rule","evenodd"),N=S1.makeCorners(a,c,f),tQ(n)}function re(ce,He){return He=Math.max(Math.min(He,l),u),ceo?(ce-1&&ce===1&&cQt(He,n,[t.xaxis],[t.yaxis],t.id,g),lt.indexOf("event")>-1&&YJe.click(n,He,t.id)}g.prepFn=function(ce,He,lt){var mt=n._fullLayout.dragmode,Ht=S.getBoundingClientRect();n._fullLayout._calcInverseTransform(n);var at=n._fullLayout._invTransform;x=n._fullLayout._invScaleX,C=n._fullLayout._invScaleY;var ct=Xc.apply3DTransform(at)(He-Ht.left,lt-Ht.top);if(P=ct[0],E=ct[1],m){var ar=M1.findPolygonOffset(l,v[0],v[1],m);P+=h+ar[0],E+=d+ar[1]}switch(mt){case"zoom":g.clickFn=Pe,r||(m?g.moveFn=Be:g.moveFn=ke,g.doneFn=Le,ge(ce,He,lt));break;case"select":case"lasso":uQt(ce,He,lt,g,mt);break}},x9.init(g)};Nd.updateRadialDrag=function(e,t,r){var n=this,i=n.gd,a=n.layers,o=n.radius,s=n.innerRadius,l=n.cx,u=n.cy,c=n.radialAxis,f=Nx.radialDragBoxSize,h=f/2;if(!c.visible)return;var d=Ux(n.radialAxisAngle),v=c._rl,m=v[0],b=v[1],p=v[r],k=.75*(v[1]-v[0])/(1-n.getHole(t))/o,M,T,L;r?(M=l+(o+h)*Math.cos(d),T=u-(o+h)*Math.sin(d),L="radialdrag"):(M=l+(s-h)*Math.cos(d),T=u-(s-h)*Math.sin(d),L="radialdrag-inner");var x=S1.makeRectDragger(a,L,"crosshair",-h,-h,f,f),C={element:x,gd:i};e.dragmode===!1&&(C.dragmode=!1),xC(Ew.select(x),c.visible&&s0!=(r?P>m:P=90||i>90&&a>=450?d=1:s<=0&&u<=0?d=0:d=Math.max(s,u),i<=180&&a>=180||i>180&&a>=540?c=-1:o>=0&&l>=0?c=0:c=Math.min(o,l),i<=270&&a>=270||i>270&&a>=630?f=-1:s>=0&&u>=0?f=0:f=Math.min(s,u),a>=360?h=1:o<=0&&l<=0?h=0:h=Math.max(o,l),[c,f,h,d]}function r$e(e,t){var r=function(i){return Xc.angleDist(e,i)},n=Xc.findIndexOfMin(t,r);return t[n]}function xC(e,t,r){return t?(e.attr("display",null),e.attr(r)):e&&e.attr("display","none"),e}});var iQ=ye((n3r,u$e)=>{"use strict";var gQt=Ih(),os=Rd(),mQt=Cc().attributes,f0=Pr().extendFlat,n$e=mc().overrideAll,a$e=n$e({color:os.color,showline:f0({},os.showline,{dflt:!0}),linecolor:os.linecolor,linewidth:os.linewidth,showgrid:f0({},os.showgrid,{dflt:!0}),gridcolor:os.gridcolor,gridwidth:os.gridwidth,griddash:os.griddash},"plot","from-root"),o$e=n$e({tickmode:os.minor.tickmode,nticks:os.nticks,tick0:os.tick0,dtick:os.dtick,tickvals:os.tickvals,ticktext:os.ticktext,ticks:os.ticks,ticklen:os.ticklen,tickwidth:os.tickwidth,tickcolor:os.tickcolor,ticklabelstep:os.ticklabelstep,showticklabels:os.showticklabels,labelalias:os.labelalias,minorloglabels:os.minorloglabels,showtickprefix:os.showtickprefix,tickprefix:os.tickprefix,showticksuffix:os.showticksuffix,ticksuffix:os.ticksuffix,showexponent:os.showexponent,exponentformat:os.exponentformat,minexponent:os.minexponent,separatethousands:os.separatethousands,tickfont:os.tickfont,tickangle:os.tickangle,tickformat:os.tickformat,tickformatstops:os.tickformatstops,layer:os.layer},"plot","from-root"),s$e={visible:f0({},os.visible,{dflt:!0}),type:f0({},os.type,{values:["-","linear","log","date","category"]}),autotypenumbers:os.autotypenumbers,autorangeoptions:{minallowed:os.autorangeoptions.minallowed,maxallowed:os.autorangeoptions.maxallowed,clipmin:os.autorangeoptions.clipmin,clipmax:os.autorangeoptions.clipmax,include:os.autorangeoptions.include,editType:"plot"},autorange:f0({},os.autorange,{editType:"plot"}),rangemode:{valType:"enumerated",values:["tozero","nonnegative","normal"],dflt:"tozero",editType:"calc"},minallowed:f0({},os.minallowed,{editType:"plot"}),maxallowed:f0({},os.maxallowed,{editType:"plot"}),range:f0({},os.range,{items:[{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}}],editType:"plot"}),categoryorder:os.categoryorder,categoryarray:os.categoryarray,angle:{valType:"angle",editType:"plot"},autotickangles:os.autotickangles,side:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"clockwise",editType:"plot"},title:{text:f0({},os.title.text,{editType:"plot",dflt:""}),font:f0({},os.title.font,{editType:"plot"}),editType:"plot"},hoverformat:os.hoverformat,uirevision:{valType:"any",editType:"none"},editType:"calc"};f0(s$e,a$e,o$e);var l$e={visible:f0({},os.visible,{dflt:!0}),type:{valType:"enumerated",values:["-","linear","category"],dflt:"-",editType:"calc",_noTemplating:!0},autotypenumbers:os.autotypenumbers,categoryorder:os.categoryorder,categoryarray:os.categoryarray,thetaunit:{valType:"enumerated",values:["radians","degrees"],dflt:"degrees",editType:"calc"},period:{valType:"number",editType:"calc",min:0},direction:{valType:"enumerated",values:["counterclockwise","clockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",editType:"calc"},hoverformat:os.hoverformat,uirevision:{valType:"any",editType:"none"},editType:"calc"};f0(l$e,a$e,o$e);u$e.exports={domain:mQt({name:"polar",editType:"plot"}),sector:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],dflt:[0,360],editType:"plot"},hole:{valType:"number",min:0,max:1,dflt:0,editType:"plot"},bgcolor:{valType:"color",editType:"plot",dflt:gQt.background},radialaxis:s$e,angularaxis:l$e,gridshape:{valType:"enumerated",values:["circular","linear"],dflt:"circular",editType:"plot"},uirevision:{valType:"any",editType:"none"},editType:"calc"}});var d$e=ye((a3r,h$e)=>{"use strict";var w9=Pr(),yQt=ka(),_Qt=vl(),xQt=q_(),bQt=Id().getSubplotData,wQt=Pb(),TQt=q3(),AQt=s_(),SQt=l_(),MQt=fI(),EQt=c4(),kQt=SB(),CQt=H3(),f$e=iQ(),LQt=K$(),T9=p9(),c$e=T9.axisNames;function PQt(e,t,r,n){var i=r("bgcolor");n.bgColor=yQt.combine(i,n.paper_bgcolor);var a=r("sector");r("hole");var o=bQt(n.fullData,T9.name,n.id),s=n.layoutOut,l;function u(j,N){return r(l+"."+j,N)}for(var c=0;c{"use strict";var RQt=Id().getSubplotCalcData,DQt=Pr().counterRegex,FQt=rQ(),p$e=p9(),g$e=p$e.attr,Lw=p$e.name,v$e=DQt(Lw),m$e={};m$e[g$e]={valType:"subplotid",dflt:Lw,editType:"calc"};function zQt(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[Lw],i=0;i{"use strict";var{hovertemplateAttrs:OQt,texttemplateAttrs:BQt,templatefallbackAttrs:_$e}=Ll(),S9=Ao().extendFlat,NQt=Pg(),h0=pf(),UQt=Gl(),Q5=h0.line;x$e.exports={mode:h0.mode,r:{valType:"data_array",editType:"calc+clearAxisTypes"},theta:{valType:"data_array",editType:"calc+clearAxisTypes"},r0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes"},dr:{valType:"number",dflt:1,editType:"calc"},theta0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes"},dtheta:{valType:"number",editType:"calc"},thetaunit:{valType:"enumerated",values:["radians","degrees","gradians"],dflt:"degrees",editType:"calc+clearAxisTypes"},text:h0.text,texttemplate:BQt({editType:"plot"},{keys:["r","theta","text"]}),texttemplatefallback:_$e({editType:"plot"}),hovertext:h0.hovertext,line:{color:Q5.color,width:Q5.width,dash:Q5.dash,backoff:Q5.backoff,shape:S9({},Q5.shape,{values:["linear","spline"]}),smoothing:Q5.smoothing,editType:"calc"},connectgaps:h0.connectgaps,marker:h0.marker,cliponaxis:S9({},h0.cliponaxis,{dflt:!1}),textposition:h0.textposition,textfont:h0.textfont,fill:S9({},h0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:NQt(),hoverinfo:S9({},UQt.hoverinfo,{flags:["r","theta","text","name"]}),hoveron:h0.hoveron,hovertemplate:OQt(),hovertemplatefallback:_$e(),selected:h0.selected,unselected:h0.unselected}});var E9=ye((l3r,T$e)=>{"use strict";var M9=Pr(),eS=Ru(),VQt=$p(),GQt=D0(),b$e=uT(),HQt=F0(),jQt=Fg(),WQt=Pm().PTS_LINESONLY,XQt=bC();function ZQt(e,t,r,n){function i(s,l){return M9.coerce(e,t,XQt,s,l)}var a=w$e(e,t,n,i);if(!a){t.visible=!1;return}i("thetaunit"),i("mode",a{"use strict";var YQt=Pr(),A$e=ho();S$e.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o,s;a?(o=a.radialAxis,s=a.angularAxis):(a=n[r.subplot],o=a.radialaxis,s=a.angularaxis);var l=o.c2l(t.r);i.rLabel=A$e.tickText(o,l,!0).text;var u=s.thetaunit==="degrees"?YQt.rad2deg(t.theta):t.theta;return i.thetaLabel=A$e.tickText(s,u,!0).text,i}});var k$e=ye((c3r,E$e)=>{"use strict";var M$e=Eo(),KQt=fs().BADNUM,JQt=ho(),$Qt=z0(),QQt=Dm(),eer=q0(),ter=O0().calcMarkerSize;E$e.exports=function(t,r){for(var n=t._fullLayout,i=r.subplot,a=n[i].radialaxis,o=n[i].angularaxis,s=a.makeCalcdata(r,"r"),l=o.makeCalcdata(r,"theta"),u=r._length,c=new Array(u),f=0;f{"use strict";var rer=pT(),C$e=fs().BADNUM;L$e.exports=function(t,r,n){for(var i=r.layers.frontplot.select("g.scatterlayer"),a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:r.framework,layerClipId:r._hasClipOnAxisFalse?r.clipIds.forTraces:null},l=r.radialAxis,u=r.angularAxis,c=0;c{"use strict";var ier=_T();function ner(e,t,r,n){var i=ier(e,t,r,n);if(!(!i||i[0].index===!1)){var a=i[0];if(a.index===void 0)return i;var o=e.subplot,s=a.cd[a.index],l=a.trace;if(o.isPtInside(s))return a.xLabelVal=void 0,a.yLabelVal=void 0,I$e(s,l,o,a),a.hovertemplate=l.hovertemplate,i}}function I$e(e,t,r,n){var i=r.radialAxis,a=r.angularAxis;i._hovertitle="r",a._hovertitle="\u03B8";var o={};o[t.subplot]={_subplot:r};var s=t._module.formatLabels(e,t,o);n.rLabel=s.rLabel,n.thetaLabel=s.thetaLabel;var l=e.hi||t.hoverinfo,u=[];function c(h,d){u.push(h._hovertitle+": "+d)}if(!t.hovertemplate){var f=l.split("+");f.indexOf("all")!==-1&&(f=["r","theta","text"]),f.indexOf("r")!==-1&&c(i,n.rLabel),f.indexOf("theta")!==-1&&c(a,n.thetaLabel),f.indexOf("text")!==-1&&n.text&&(u.push(n.text),delete n.text),n.extraText=u.join("
")}}R$e.exports={hoverPoints:ner,makeHoverPointText:I$e}});var F$e=ye((d3r,D$e)=>{"use strict";D$e.exports={moduleType:"trace",name:"scatterpolar",basePlotModule:A9(),categories:["polar","symbols","showLegend","scatter-like"],attributes:bC(),supplyDefaults:E9().supplyDefaults,colorbar:Qd(),formatLabels:k9(),calc:k$e(),plot:P$e(),style:sp().style,styleOnSelect:sp().styleOnSelect,hoverPoints:C9().hoverPoints,selectPoints:xT(),meta:{}}});var q$e=ye((v3r,z$e)=>{"use strict";z$e.exports=F$e()});var nQ=ye((m3r,B$e)=>{"use strict";var O$e=bC(),{cliponaxis:p3r,hoveron:g3r}=O$e,aer=mee(O$e,["cliponaxis","hoveron"]),{connectgaps:oer,line:{color:ser,dash:ler,width:uer},fill:cer,fillcolor:fer,marker:her,textfont:der,textposition:ver}=mk();B$e.exports=j1(_g({},aer),{connectgaps:oer,fill:cer,fillcolor:fer,line:{color:ser,dash:ler,editType:"calc",width:uer},marker:her,textfont:der,textposition:ver})});var V$e=ye((_3r,U$e)=>{"use strict";var N$e=Pr(),aQ=Ru(),per=E9().handleRThetaDefaults,ger=$p(),mer=D0(),yer=F0(),_er=Fg(),xer=Pm().PTS_LINESONLY,ber=nQ();U$e.exports=function(t,r,n,i){function a(s,l){return N$e.coerce(t,r,ber,s,l)}var o=per(t,r,i,a);if(!o){r.visible=!1;return}a("thetaunit"),a("mode",o{"use strict";var wer=k9();G$e.exports=function(t,r,n){var i=t.i;return"r"in t||(t.r=r._r[i]),"theta"in t||(t.theta=r._theta[i]),wer(t,r,n)}});var W$e=ye((b3r,j$e)=>{"use strict";var Ter=z0(),Aer=O0().calcMarkerSize,Ser=lw(),Mer=ho(),Eer=gx().TOO_MANY_POINTS;j$e.exports=function(t,r){var n=t._fullLayout,i=r.subplot,a=n[i].radialaxis,o=n[i].angularaxis,s=r._r=a.makeCalcdata(r,"r"),l=r._theta=o.makeCalcdata(r,"theta"),u=r._length,c={};u{"use strict";var ker=XF(),Cer=C9().makeHoverPointText;function Ler(e,t,r,n){var i=e.cd,a=i[0].t,o=a.r,s=a.theta,l=ker.hoverPoints(e,t,r,n);if(!(!l||l[0].index===!1)){var u=l[0];if(u.index===void 0)return l;var c=e.subplot,f=u.cd[u.index],h=u.trace;if(f.r=o[u.index],f.theta=s[u.index],!!c.isPtInside(f))return u.xLabelVal=void 0,u.yLabelVal=void 0,Cer(f,h,c,u),l}}X$e.exports={hoverPoints:Ler}});var K$e=ye((T3r,Y$e)=>{"use strict";Y$e.exports={moduleType:"trace",name:"scatterpolargl",basePlotModule:A9(),categories:["gl","regl","polar","symbols","showLegend","scatter-like"],attributes:nQ(),supplyDefaults:V$e(),colorbar:Qd(),formatLabels:H$e(),calc:W$e(),hoverPoints:Z$e().hoverPoints,selectPoints:mY(),meta:{}}});var J$e=ye((A3r,oQ)=>{"use strict";var Per=KF(),Ier=Eo(),Rer=bK(),Der=vY(),L9=lw(),P9=Pr(),Fer=gx().TOO_MANY_POINTS,zer={};oQ.exports=function(t,r,n){if(n.length){var i=r.radialAxis,a=r.angularAxis,o=Der(t,r);return n.forEach(function(s){if(!(!s||!s[0]||!s[0].trace)){var l=s[0],u=l.trace,c=l.t,f=u._length,h=c.r,d=c.theta,v=c.opts,m,b=h.slice(),p=d.slice();for(m=0;m=Fer&&(v.marker.cluster=c.tree),v.marker&&(v.markerSel.positions=v.markerUnsel.positions=v.marker.positions=k),v.line&&k.length>1&&P9.extendFlat(v.line,L9.linePositions(t,u,k)),v.text&&(P9.extendFlat(v.text,{positions:k},L9.textPosition(t,u,v.text,v.marker)),P9.extendFlat(v.textSel,{positions:k},L9.textPosition(t,u,v.text,v.markerSel)),P9.extendFlat(v.textUnsel,{positions:k},L9.textPosition(t,u,v.text,v.markerUnsel))),v.fill&&!o.fill2d&&(o.fill2d=!0),v.marker&&!o.scatter2d&&(o.scatter2d=!0),v.line&&!o.line2d&&(o.line2d=!0),v.text&&!o.glText&&(o.glText=!0),o.lineOptions.push(v.line),o.fillOptions.push(v.fill),o.markerOptions.push(v.marker),o.markerSelectedOptions.push(v.markerSel),o.markerUnselectedOptions.push(v.markerUnsel),o.textOptions.push(v.text),o.textSelectedOptions.push(v.textSel),o.textUnselectedOptions.push(v.textUnsel),o.selectBatch.push([]),o.unselectBatch.push([]),c.x=M,c.y=T,c.rawx=M,c.rawy=T,c.r=h,c.theta=d,c.positions=k,c._scene=o,c.index=o.count,o.count++}}),Rer(t,r,n)}};oQ.exports.reglPrecompiled=zer});var eQe=ye((S3r,Q$e)=>{"use strict";var $$e=K$e();$$e.plot=J$e();Q$e.exports=$$e});var rQe=ye((M3r,tQe)=>{"use strict";tQe.exports=eQe()});var sQ=ye((E3r,iQe)=>{"use strict";var{hovertemplateAttrs:qer,templatefallbackAttrs:Oer}=Ll(),tS=Ao().extendFlat,Vx=bC(),Gx=qm();iQe.exports={r:Vx.r,theta:Vx.theta,r0:Vx.r0,dr:Vx.dr,theta0:Vx.theta0,dtheta:Vx.dtheta,thetaunit:Vx.thetaunit,base:tS({},Gx.base,{}),offset:tS({},Gx.offset,{}),width:tS({},Gx.width,{}),text:tS({},Gx.text,{}),hovertext:tS({},Gx.hovertext,{}),marker:Ber(),hoverinfo:Vx.hoverinfo,hovertemplate:qer(),hovertemplatefallback:Oer(),selected:Gx.selected,unselected:Gx.unselected};function Ber(){var e=tS({},Gx.marker);return delete e.cornerradius,e}});var lQ=ye((k3r,nQe)=>{"use strict";nQe.exports={barmode:{valType:"enumerated",values:["stack","overlay"],dflt:"stack",editType:"calc"},bargap:{valType:"number",dflt:.1,min:0,max:1,editType:"calc"}}});var sQe=ye((C3r,oQe)=>{"use strict";var aQe=Pr(),Ner=E9().handleRThetaDefaults,Uer=XI(),Ver=sQ();oQe.exports=function(t,r,n,i){function a(s,l){return aQe.coerce(t,r,Ver,s,l)}var o=Ner(t,r,i,a);if(!o){r.visible=!1;return}a("thetaunit"),a("base"),a("offset"),a("width"),a("text"),a("hovertext"),a("hovertemplate"),a("hovertemplatefallback"),Uer(t,r,a,n,i),aQe.coerceSelectionMarkerOpacity(r,a)}});var uQe=ye((L3r,lQe)=>{"use strict";var Ger=Pr(),Her=lQ();lQe.exports=function(e,t,r){var n={},i;function a(l,u){return Ger.coerce(e[i]||{},t[i],Her,l,u)}for(var o=0;o{"use strict";var cQe=pv().hasColorscale,fQe=gv(),jer=Pr().isArrayOrTypedArray,Wer=S4(),Xer=i2().setGroupPositions,Zer=q0(),Yer=Oa().traceIs,Ker=Pr().extendFlat;function Jer(e,t){for(var r=e._fullLayout,n=t.subplot,i=r[n].radialaxis,a=r[n].angularaxis,o=i.makeCalcdata(t,"r"),s=a.makeCalcdata(t,"theta"),l=t._length,u=new Array(l),c=o,f=s,h=0;h{"use strict";var dQe=qa(),I9=Eo(),rS=Pr(),Qer=So(),cQ=m9();vQe.exports=function(t,r,n){var i=t._context.staticPlot,a=r.xaxis,o=r.yaxis,s=r.radialAxis,l=r.angularAxis,u=etr(r),c=r.layers.frontplot.select("g.barlayer");rS.makeTraceGroups(c,n,"trace bars").each(function(){var f=dQe.select(this),h=rS.ensureSingle(f,"g","points"),d=h.selectAll("g.point").data(rS.identity);d.enter().append("g").style("vector-effect",i?"none":"non-scaling-stroke").style("stroke-miterlimit",2).classed("point",!0),d.exit().remove(),d.each(function(v){var m=dQe.select(this),b=v.rp0=s.c2p(v.s0),p=v.rp1=s.c2p(v.s1),k=v.thetag0=l.c2g(v.p0),M=v.thetag1=l.c2g(v.p1),T;if(!I9(b)||!I9(p)||!I9(k)||!I9(M)||b===p||k===M)T="M0,0Z";else{var L=s.c2g(v.s1),x=(k+M)/2;v.ct=[a.c2p(L*Math.cos(x)),o.c2p(L*Math.sin(x))],T=u(b,p,k,M)}rS.ensureSingle(m,"path").attr("d",T)}),Qer.setClipUrl(f,r._hasClipOnAxisFalse?r.clipIds.forTraces:null,t)})};function etr(e){var t=e.cxx,r=e.cyy;return e.vangles?function(n,i,a,o){var s,l;rS.angleDelta(a,o)>0?(s=a,l=o):(s=o,l=a);var u=cQ.findEnclosingVertexAngles(s,e.vangles)[0],c=cQ.findEnclosingVertexAngles(l,e.vangles)[1],f=[u,(s+l)/2,c];return cQ.pathPolygonAnnulus(n,i,s,l,f,t,r)}:function(n,i,a,o){return rS.pathAnnulus(n,i,a,o,t,r)}}});var mQe=ye((R3r,gQe)=>{"use strict";var ttr=ef(),fQ=Pr(),rtr=RT().getTraceColor,itr=fQ.fillText,ntr=C9().makeHoverPointText,atr=m9().isPtInsidePolygon;gQe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.subplot,s=o.radialAxis,l=o.angularAxis,u=o.vangles,c=u?atr:fQ.isPtInsideSector,f=t.maxHoverDistance,h=l._period||2*Math.PI,d=Math.abs(s.g2p(Math.sqrt(r*r+n*n))),v=Math.atan2(n,r);s.range[0]>s.range[1]&&(v+=Math.PI);var m=function(M){return c(d,v,[M.rp0,M.rp1],[M.thetag0,M.thetag1],u)?f+Math.min(1,Math.abs(M.thetag1-M.thetag0)/h)-1+(M.rp1-d)/(M.rp1-M.rp0)-1:1/0};if(ttr.getClosest(i,m,t),t.index!==!1){var b=t.index,p=i[b];t.x0=t.x1=p.ct[0],t.y0=t.y1=p.ct[1];var k=fQ.extendFlat({},p,{r:p.s,theta:p.p});return itr(p,a,t),ntr(k,a,o,t),t.hovertemplate=a.hovertemplate,t.color=rtr(a,p),t.xLabelVal=t.yLabelVal=void 0,p.s<0&&(t.idealAlign="left"),[t]}}});var _Qe=ye((D3r,yQe)=>{"use strict";yQe.exports={moduleType:"trace",name:"barpolar",basePlotModule:A9(),categories:["polar","bar","showLegend"],attributes:sQ(),layoutAttributes:lQ(),supplyDefaults:sQe(),supplyLayoutDefaults:uQe(),calc:uQ().calc,crossTraceCalc:uQ().crossTraceCalc,plot:pQe(),colorbar:Qd(),formatLabels:k9(),style:V0().style,styleOnSelect:V0().styleOnSelect,hoverPoints:mQe(),selectPoints:DT(),meta:{}}});var bQe=ye((F3r,xQe)=>{"use strict";xQe.exports=_Qe()});var hQ=ye((z3r,wQe)=>{"use strict";wQe.exports={attr:"subplot",name:"smith",axisNames:["realaxis","imaginaryaxis"],axisName2dataArray:{imaginaryaxis:"imag",realaxis:"real"}}});var dQ=ye((q3r,MQe)=>{"use strict";var otr=Ih(),Uf=Rd(),str=Cc().attributes,Hx=Pr().extendFlat,TQe=mc().overrideAll,AQe=TQe({color:Uf.color,showline:Hx({},Uf.showline,{dflt:!0}),linecolor:Uf.linecolor,linewidth:Uf.linewidth,showgrid:Hx({},Uf.showgrid,{dflt:!0}),gridcolor:Uf.gridcolor,gridwidth:Uf.gridwidth,griddash:Uf.griddash},"plot","from-root"),SQe=TQe({ticklen:Uf.ticklen,tickwidth:Hx({},Uf.tickwidth,{dflt:2}),tickcolor:Uf.tickcolor,showticklabels:Uf.showticklabels,labelalias:Uf.labelalias,showtickprefix:Uf.showtickprefix,tickprefix:Uf.tickprefix,showticksuffix:Uf.showticksuffix,ticksuffix:Uf.ticksuffix,tickfont:Uf.tickfont,tickformat:Uf.tickformat,hoverformat:Uf.hoverformat,layer:Uf.layer},"plot","from-root"),ltr=Hx({visible:Hx({},Uf.visible,{dflt:!0}),tickvals:{dflt:[.2,.5,1,2,5],valType:"data_array",editType:"plot"},tickangle:Hx({},Uf.tickangle,{dflt:90}),ticks:{valType:"enumerated",values:["top","bottom",""],editType:"ticks"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},editType:"calc"},AQe,SQe),utr=Hx({visible:Hx({},Uf.visible,{dflt:!0}),tickvals:{valType:"data_array",editType:"plot"},ticks:Uf.ticks,editType:"calc"},AQe,SQe);MQe.exports={domain:str({name:"smith",editType:"plot"}),bgcolor:{valType:"color",editType:"plot",dflt:otr.background},realaxis:ltr,imaginaryaxis:utr,editType:"calc"}});var CQe=ye((O3r,kQe)=>{"use strict";var iS=Pr(),ctr=ka(),ftr=vl(),htr=q_(),dtr=Id().getSubplotData,vtr=l_(),ptr=s_(),gtr=c4(),mtr=xm(),nS=dQ(),vQ=hQ(),EQe=vQ.axisNames,ytr=xtr(function(e){return iS.isTypedArray(e)&&(e=Array.from(e)),e.slice().reverse().map(function(t){return-t}).concat([0]).concat(e)},String);function _tr(e,t,r,n){var i=r("bgcolor");n.bgColor=ctr.combine(i,n.paper_bgcolor);var a=dtr(n.fullData,vQ.name,n.id),o=n.layoutOut,s;function l(L,x){return r(s+"."+L,x)}for(var u=0;u{"use strict";var btr=Id().getSubplotCalcData,wtr=Pr().counterRegex,Ttr=rQ(),PQe=hQ(),IQe=PQe.attr,Pw=PQe.name,LQe=wtr(Pw),RQe={};RQe[IQe]={valType:"subplotid",dflt:Pw,editType:"calc"};function Atr(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[Pw],i=0;i{"use strict";var{hovertemplateAttrs:Mtr,texttemplateAttrs:Etr,templatefallbackAttrs:zQe}=Ll(),R9=Ao().extendFlat,ktr=Pg(),d0=pf(),Ctr=Gl(),aS=d0.line;qQe.exports={mode:d0.mode,real:{valType:"data_array",editType:"calc+clearAxisTypes"},imag:{valType:"data_array",editType:"calc+clearAxisTypes"},text:d0.text,texttemplate:Etr({editType:"plot"},{keys:["real","imag","text"]}),texttemplatefallback:zQe({editType:"plot"}),hovertext:d0.hovertext,line:{color:aS.color,width:aS.width,dash:aS.dash,backoff:aS.backoff,shape:R9({},aS.shape,{values:["linear","spline"]}),smoothing:aS.smoothing,editType:"calc"},connectgaps:d0.connectgaps,marker:d0.marker,cliponaxis:R9({},d0.cliponaxis,{dflt:!1}),textposition:d0.textposition,textfont:d0.textfont,fill:R9({},d0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:ktr(),hoverinfo:R9({},Ctr.hoverinfo,{flags:["real","imag","text","name"]}),hoveron:d0.hoveron,hovertemplate:Mtr(),hovertemplatefallback:zQe(),selected:d0.selected,unselected:d0.unselected}});var NQe=ye((U3r,BQe)=>{"use strict";var D9=Pr(),oS=Ru(),Ltr=$p(),Ptr=D0(),OQe=uT(),Itr=F0(),Rtr=Fg(),Dtr=Pm().PTS_LINESONLY,Ftr=pQ();BQe.exports=function(t,r,n,i){function a(l,u){return D9.coerce(t,r,Ftr,l,u)}var o=ztr(t,r,i,a);if(!o){r.visible=!1;return}a("mode",o{"use strict";var UQe=ho();VQe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot;return i.realLabel=UQe.tickText(a.radialAxis,t.real,!0).text,i.imagLabel=UQe.tickText(a.angularAxis,t.imag,!0).text,i}});var WQe=ye((G3r,jQe)=>{"use strict";var HQe=Eo(),qtr=fs().BADNUM,Otr=z0(),Btr=Dm(),Ntr=q0(),Utr=O0().calcMarkerSize;jQe.exports=function(t,r){for(var n=t._fullLayout,i=r.subplot,a=n[i].realaxis,o=n[i].imaginaryaxis,s=a.makeCalcdata(r,"real"),l=o.makeCalcdata(r,"imag"),u=r._length,c=new Array(u),f=0;f{"use strict";var Vtr=pT(),XQe=fs().BADNUM,Gtr=Q$(),Htr=Gtr.smith;ZQe.exports=function(t,r,n){for(var i=r.layers.frontplot.select("g.scatterlayer"),a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:r.framework,layerClipId:r._hasClipOnAxisFalse?r.clipIds.forTraces:null},l=0;l{"use strict";var jtr=_T();function Wtr(e,t,r,n){var i=jtr(e,t,r,n);if(!(!i||i[0].index===!1)){var a=i[0];if(a.index===void 0)return i;var o=e.subplot,s=a.cd[a.index],l=a.trace;if(o.isPtInside(s))return a.xLabelVal=void 0,a.yLabelVal=void 0,KQe(s,l,o,a),a.hovertemplate=l.hovertemplate,i}}function KQe(e,t,r,n){var i=r.radialAxis,a=r.angularAxis;i._hovertitle="real",a._hovertitle="imag";var o={};o[t.subplot]={_subplot:r};var s=t._module.formatLabels(e,t,o);n.realLabel=s.realLabel,n.imagLabel=s.imagLabel;var l=e.hi||t.hoverinfo,u=[];function c(h,d){u.push(h._hovertitle+": "+d)}if(!t.hovertemplate){var f=l.split("+");f.indexOf("all")!==-1&&(f=["real","imag","text"]),f.indexOf("real")!==-1&&c(i,n.realLabel),f.indexOf("imag")!==-1&&c(a,n.imagLabel),f.indexOf("text")!==-1&&n.text&&(u.push(n.text),delete n.text),n.extraText=u.join("
")}}JQe.exports={hoverPoints:Wtr,makeHoverPointText:KQe}});var eet=ye((W3r,QQe)=>{"use strict";QQe.exports={moduleType:"trace",name:"scattersmith",basePlotModule:FQe(),categories:["smith","symbols","showLegend","scatter-like"],attributes:pQ(),supplyDefaults:NQe(),colorbar:Qd(),formatLabels:GQe(),calc:WQe(),plot:YQe(),style:sp().style,styleOnSelect:sp().styleOnSelect,hoverPoints:$Qe().hoverPoints,selectPoints:xT(),meta:{}}});var ret=ye((X3r,tet)=>{"use strict";tet.exports=eet()});var kv=ye((Z3r,net)=>{var z9=Nh();function iet(){this.regionalOptions=[],this.regionalOptions[""]={invalidCalendar:"Calendar {0} not found",invalidDate:"Invalid {0} date",invalidMonth:"Invalid {0} month",invalidYear:"Invalid {0} year",differentCalendars:"Cannot mix {0} and {1} dates"},this.local=this.regionalOptions[""],this.calendars={},this._localCals={}}z9(iet.prototype,{instance:function(e,t){e=(e||"gregorian").toLowerCase(),t=t||"";var r=this._localCals[e+"-"+t];if(!r&&this.calendars[e]&&(r=new this.calendars[e](t),this._localCals[e+"-"+t]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[""].invalidCalendar).replace(/\{0\}/,e);return r},newDate:function(e,t,r,n,i){return n=(e!=null&&e.year?e.calendar():typeof n=="string"?this.instance(n,i):n)||this.instance(),n.newDate(e,t,r)},substituteDigits:function(e){return function(t){return(t+"").replace(/[0-9]/g,function(r){return e[r]})}},substituteChineseDigits:function(e,t){return function(r){for(var n="",i=0;r>0;){var a=r%10;n=(a===0?"":e[a]+t[i])+n,i++,r=Math.floor(r/10)}return n.indexOf(e[1]+t[1])===0&&(n=n.substr(1)),n||e[0]}}});function gQ(e,t,r,n){if(this._calendar=e,this._year=t,this._month=r,this._day=n,this._calendar._validateLevel===0&&!this._calendar.isValid(this._year,this._month,this._day))throw(Gs.local.invalidDate||Gs.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name)}function F9(e,t){return e=""+e,"000000".substring(0,t-e.length)+e}z9(gQ.prototype,{newDate:function(e,t,r){return this._calendar.newDate(e==null?this:e,t,r)},year:function(e){return arguments.length===0?this._year:this.set(e,"y")},month:function(e){return arguments.length===0?this._month:this.set(e,"m")},day:function(e){return arguments.length===0?this._day:this.set(e,"d")},date:function(e,t,r){if(!this._calendar.isValid(e,t,r))throw(Gs.local.invalidDate||Gs.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name);return this._year=e,this._month=t,this._day=r,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(e,t){return this._calendar.add(this,e,t)},set:function(e,t){return this._calendar.set(this,e,t)},compareTo:function(e){if(this._calendar.name!==e._calendar.name)throw(Gs.local.differentCalendars||Gs.regionalOptions[""].differentCalendars).replace(/\{0\}/,this._calendar.local.name).replace(/\{1\}/,e._calendar.local.name);var t=this._year!==e._year?this._year-e._year:this._month!==e._month?this.monthOfYear()-e.monthOfYear():this._day-e._day;return t===0?0:t<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(e){return this._calendar.fromJD(e)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(e){return this._calendar.fromJSDate(e)},toString:function(){return(this.year()<0?"-":"")+F9(Math.abs(this.year()),4)+"-"+F9(this.month(),2)+"-"+F9(this.day(),2)}});function mQ(){this.shortYearCutoff="+10"}z9(mQ.prototype,{_validateLevel:0,newDate:function(e,t,r){return e==null?this.today():(e.year&&(this._validate(e,t,r,Gs.local.invalidDate||Gs.regionalOptions[""].invalidDate),r=e.day(),t=e.month(),e=e.year()),new gQ(this,e,t,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(e){var t=this._validate(e,this.minMonth,this.minDay,Gs.local.invalidYear||Gs.regionalOptions[""].invalidYear);return t.year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Gs.local.invalidYear||Gs.regionalOptions[""].invalidYear);return(t.year()<0?"-":"")+F9(Math.abs(t.year()),4)},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,Gs.local.invalidYear||Gs.regionalOptions[""].invalidYear),12},monthOfYear:function(e,t){var r=this._validate(e,t,this.minDay,Gs.local.invalidMonth||Gs.regionalOptions[""].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(e,t){var r=(t+this.firstMonth-2*this.minMonth)%this.monthsInYear(e)+this.minMonth;return this._validate(e,r,this.minDay,Gs.local.invalidMonth||Gs.regionalOptions[""].invalidMonth),r},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Gs.local.invalidYear||Gs.regionalOptions[""].invalidYear);return this.leapYear(t)?366:365},dayOfYear:function(e,t,r){var n=this._validate(e,t,r,Gs.local.invalidDate||Gs.regionalOptions[""].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,Gs.local.invalidDate||Gs.regionalOptions[""].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(e,t,r){return this._validate(e,t,r,Gs.local.invalidDate||Gs.regionalOptions[""].invalidDate),{}},add:function(e,t,r){return this._validate(e,this.minMonth,this.minDay,Gs.local.invalidDate||Gs.regionalOptions[""].invalidDate),this._correctAdd(e,this._add(e,t,r),t,r)},_add:function(e,t,r){if(this._validateLevel++,r==="d"||r==="w"){var n=e.toJD()+t*(r==="w"?this.daysInWeek():1),i=e.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=e.year()+(r==="y"?t:0),o=e.monthOfYear()+(r==="m"?t:0),i=e.day(),s=function(c){for(;of-1+c.minMonth;)a++,o-=f,f=c.monthsInYear(a)};r==="y"?(e.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,e.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):r==="m"&&(s(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var l=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,l}catch(u){throw this._validateLevel--,u}},_correctAdd:function(e,t,r,n){if(!this.hasYearZero&&(n==="y"||n==="m")&&(t[0]===0||e.year()>0!=t[0]>0)){var i={y:[1,1,"y"],m:[1,this.monthsInYear(-1),"m"],w:[this.daysInWeek(),this.daysInYear(-1),"d"],d:[1,this.daysInYear(-1),"d"]}[n],a=r<0?-1:1;t=this._add(e,r*i[0]+a*i[1],i[2])}return e.date(t[0],t[1],t[2])},set:function(e,t,r){this._validate(e,this.minMonth,this.minDay,Gs.local.invalidDate||Gs.regionalOptions[""].invalidDate);var n=r==="y"?t:e.year(),i=r==="m"?t:e.month(),a=r==="d"?t:e.day();return(r==="y"||r==="m")&&(a=Math.min(a,this.daysInMonth(n,i))),e.date(n,i,a)},isValid:function(e,t,r){this._validateLevel++;var n=this.hasYearZero||e!==0;if(n){var i=this.newDate(e,t,this.minDay);n=t>=this.minMonth&&t-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),u=i-(l>2.5?4716:4715);return u<=0&&u--,this.newDate(u,l,s)},toJSDate:function(e,t,r){var n=this._validate(e,t,r,Gs.local.invalidDate||Gs.regionalOptions[""].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(e){return this.newDate(e.getFullYear(),e.getMonth()+1,e.getDate())}});var Gs=net.exports=new iet;Gs.cdate=gQ;Gs.baseCalendar=mQ;Gs.calendars.gregorian=yQ});var aet=ye(()=>{var _Q=Nh(),Ud=kv();_Q(Ud.regionalOptions[""],{invalidArguments:"Invalid arguments",invalidFormat:"Cannot format a date from another calendar",missingNumberAt:"Missing number at position {0}",unknownNameAt:"Unknown name at position {0}",unexpectedLiteralAt:"Unexpected literal at position {0}",unexpectedText:"Additional text found at end"});Ud.local=Ud.regionalOptions[""];_Q(Ud.cdate.prototype,{formatDate:function(e,t){return typeof e!="string"&&(t=e,e=""),this._calendar.formatDate(e||"",this,t)}});_Q(Ud.baseCalendar.prototype,{UNIX_EPOCH:Ud.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:24*60*60,TICKS_EPOCH:Ud.instance().jdEpoch,TICKS_PER_DAY:24*60*60*1e7,ATOM:"yyyy-mm-dd",COOKIE:"D, dd M yyyy",FULL:"DD, MM d, yyyy",ISO_8601:"yyyy-mm-dd",JULIAN:"J",RFC_822:"D, d M yy",RFC_850:"DD, dd-M-yy",RFC_1036:"D, d M yy",RFC_1123:"D, d M yyyy",RFC_2822:"D, d M yyyy",RSS:"D, d M yy",TICKS:"!",TIMESTAMP:"@",W3C:"yyyy-mm-dd",formatDate:function(e,t,r){if(typeof e!="string"&&(r=t,t=e,e=""),!t)return"";if(t.calendar()!==this)throw Ud.local.invalidFormat||Ud.regionalOptions[""].invalidFormat;e=e||this.local.dateFormat,r=r||{};for(var n=r.dayNamesShort||this.local.dayNamesShort,i=r.dayNames||this.local.dayNames,a=r.monthNumbers||this.local.monthNumbers,o=r.monthNamesShort||this.local.monthNamesShort,s=r.monthNames||this.local.monthNames,l=r.calculateWeek||this.local.calculateWeek,u=function(T,L){for(var x=1;M+x1},c=function(T,L,x,C){var S=""+L;if(u(T,C))for(;S.length1},k=function(z,q){var V=p(z,q),G=[2,3,V?4:2,V?4:2,10,11,20]["oyYJ@!".indexOf(z)+1],Z=new RegExp("^-?\\d{1,"+G+"}"),j=t.substring(S).match(Z);if(!j)throw(Ud.local.missingNumberAt||Ud.regionalOptions[""].missingNumberAt).replace(/\{0\}/,S);return S+=j[0].length,parseInt(j[0],10)},M=this,T=function(){if(typeof s=="function"){p("m");var z=s.call(M,t.substring(S));return S+=z.length,z}return k("m")},L=function(z,q,V,G){for(var Z=p(z,G)?V:q,j=0;j-1){h=1,d=v;for(var E=this.daysInMonth(f,h);d>E;E=this.daysInMonth(f,h))h++,d-=E}return c>-1?this.fromJD(c):this.newDate(f,h,d)},determineDate:function(e,t,r,n,i){r&&typeof r!="object"&&(i=n,n=r,r=null),typeof n!="string"&&(i=n,n="");var a=this,o=function(s){try{return a.parseDate(n,s,i)}catch(f){}s=s.toLowerCase();for(var l=(s.match(/^c/)&&r?r.newDate():null)||a.today(),u=/([+-]?[0-9]+)\s*(d|w|m|y)?/g,c=u.exec(s);c;)l.add(parseInt(c[1],10),c[2]||"d"),c=u.exec(s);return l};return t=t?t.newDate():null,e=e==null?t:typeof e=="string"?o(e):typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?t:a.today().add(e,"d"):a.newDate(e),e}})});var oet=ye(()=>{var jx=kv(),Xtr=Nh(),xQ=jx.instance();function q9(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}q9.prototype=new jx.baseCalendar;Xtr(q9.prototype,{name:"Chinese",jdEpoch:17214255e-1,hasYearZero:!1,minMonth:0,firstMonth:0,minDay:1,regionalOptions:{"":{name:"Chinese",epochs:["BEC","EC"],monthNumbers:function(e,t){if(typeof e=="string"){var r=e.match(Ytr);return r?r[0]:""}var n=this._validateYear(e),i=e.month(),a=""+this.toChineseMonth(n,i);return t&&a.length<2&&(a="0"+a),this.isIntercalaryMonth(n,i)&&(a+="i"),a},monthNames:function(e){if(typeof e=="string"){var t=e.match(Ktr);return t?t[0]:""}var r=this._validateYear(e),n=e.month(),i=this.toChineseMonth(r,n),a=["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"][i-1];return this.isIntercalaryMonth(r,n)&&(a="\u95F0"+a),a},monthNamesShort:function(e){if(typeof e=="string"){var t=e.match(Jtr);return t?t[0]:""}var r=this._validateYear(e),n=e.month(),i=this.toChineseMonth(r,n),a=["\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D","\u5341","\u5341\u4E00","\u5341\u4E8C"][i-1];return this.isIntercalaryMonth(r,n)&&(a="\u95F0"+a),a},parseMonth:function(e,t){e=this._validateYear(e);var r=parseInt(t),n;if(isNaN(r))t[0]==="\u95F0"&&(n=!0,t=t.substring(1)),t[t.length-1]==="\u6708"&&(t=t.substring(0,t.length-1)),r=1+["\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D","\u5341","\u5341\u4E00","\u5341\u4E8C"].indexOf(t);else{var i=t[t.length-1];n=i==="i"||i==="I"}var a=this.toMonthIndex(e,r,n);return a},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},_validateYear:function(e,t){if(e.year&&(e=e.year()),typeof e!="number"||e<1888||e>2111)throw t.replace(/\{0\}/,this.local.name);return e},toMonthIndex:function(e,t,r){var n=this.intercalaryMonth(e),i=r&&t!==n;if(i||t<1||t>12)throw jx.local.invalidMonth.replace(/\{0\}/,this.local.name);var a;return n?!r&&t<=n?a=t-1:a=t:a=t-1,a},toChineseMonth:function(e,t){e.year&&(e=e.year(),t=e.month());var r=this.intercalaryMonth(e),n=r?12:11;if(t<0||t>n)throw jx.local.invalidMonth.replace(/\{0\}/,this.local.name);var i;return r?t>13;return r},isIntercalaryMonth:function(e,t){e.year&&(e=e.year(),t=e.month());var r=this.intercalaryMonth(e);return!!r&&r===t},leapYear:function(e){return this.intercalaryMonth(e)!==0},weekOfYear:function(e,t,r){var n=this._validateYear(e,jx.local.invalidyear),i=Xx[n-Xx[0]],a=i>>9&4095,o=i>>5&15,s=i&31,l;l=xQ.newDate(a,o,s),l.add(4-(l.dayOfWeek()||7),"d");var u=this.toJD(e,t,r)-l.toJD();return 1+Math.floor(u/7)},monthsInYear:function(e){return this.leapYear(e)?13:12},daysInMonth:function(e,t){e.year&&(t=e.month(),e=e.year()),e=this._validateYear(e);var r=Wx[e-Wx[0]],n=r>>13,i=n?12:11;if(t>i)throw jx.local.invalidMonth.replace(/\{0\}/,this.local.name);var a=r&1<<12-t?30:29;return a},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,a,r,jx.local.invalidDate);e=this._validateYear(n.year()),t=n.month(),r=n.day();var i=this.isIntercalaryMonth(e,t),a=this.toChineseMonth(e,t),o=Qtr(e,a,r,i);return xQ.toJD(o.year,o.month,o.day)},fromJD:function(e){var t=xQ.fromJD(e),r=$tr(t.year(),t.month(),t.day()),n=this.toMonthIndex(r.year,r.month,r.isIntercalary);return this.newDate(r.year,n,r.day)},fromString:function(e){var t=e.match(Ztr),r=this._validateYear(+t[1]),n=+t[2],i=!!t[3],a=this.toMonthIndex(r,n,i),o=+t[4];return this.newDate(r,a,o)},add:function(e,t,r){var n=e.year(),i=e.month(),a=this.isIntercalaryMonth(n,i),o=this.toChineseMonth(n,i),s=Object.getPrototypeOf(q9.prototype).add.call(this,e,t,r);if(r==="y"){var l=s.year(),u=s.month(),c=this.isIntercalaryMonth(l,o),f=a&&c?this.toMonthIndex(l,o,!0):this.toMonthIndex(l,o,!1);f!==u&&s.month(f)}return s}});var Ztr=/^\s*(-?\d\d\d\d|\d\d)[-/](\d?\d)([iI]?)[-/](\d?\d)/m,Ytr=/^\d?\d[iI]?/m,Ktr=/^闰?十?[一二三四五六七八九]?月/m,Jtr=/^闰?十?[一二三四五六七八九]?/m;jx.calendars.chinese=q9;var Wx=[1887,5780,5802,19157,2742,50359,1198,2646,46378,7466,3412,30122,5482,67949,2396,5294,43597,6732,6954,36181,2772,4954,18781,2396,54427,5274,6730,47781,5800,6868,21210,4790,59703,2350,5270,46667,3402,3496,38325,1388,4782,18735,2350,52374,6804,7498,44457,2906,1388,29294,4700,63789,6442,6804,56138,5802,2772,38235,1210,4698,22827,5418,63125,3476,5802,43701,2484,5302,27223,2646,70954,7466,3412,54698,5482,2412,38062,5294,2636,32038,6954,60245,2772,4826,43357,2394,5274,39501,6730,72357,5800,5844,53978,4790,2358,38039,5270,87627,3402,3496,54708,5484,4782,43311,2350,3222,27978,7498,68965,2904,5484,45677,4700,6444,39573,6804,6986,19285,2772,62811,1210,4698,47403,5418,5780,38570,5546,76469,2420,5302,51799,2646,5414,36501,3412,5546,18869,2412,54446,5276,6732,48422,6822,2900,28010,4826,92509,2394,5274,55883,6730,6820,47956,5812,2778,18779,2358,62615,5270,5450,46757,3492,5556,27318,4718,67887,2350,3222,52554,7498,3428,38252,5468,4700,31022,6444,64149,6804,6986,43861,2772,5338,35421,2650,70955,5418,5780,54954,5546,2740,38074,5302,2646,29991,3366,61011,3412,5546,43445,2412,5294,35406,6732,72998,6820,6996,52586,2778,2396,38045,5274,6698,23333,6820,64338,5812,2746,43355,2358,5270,39499,5450,79525,3492,5548],Xx=[1887,966732,967231,967733,968265,968766,969297,969798,970298,970829,971330,971830,972362,972863,973395,973896,974397,974928,975428,975929,976461,976962,977462,977994,978494,979026,979526,980026,980558,981059,981559,982091,982593,983124,983624,984124,984656,985157,985656,986189,986690,987191,987722,988222,988753,989254,989754,990286,990788,991288,991819,992319,992851,993352,993851,994383,994885,995385,995917,996418,996918,997450,997949,998481,998982,999483,1000014,1000515,1001016,1001548,1002047,1002578,1003080,1003580,1004111,1004613,1005113,1005645,1006146,1006645,1007177,1007678,1008209,1008710,1009211,1009743,1010243,1010743,1011275,1011775,1012306,1012807,1013308,1013840,1014341,1014841,1015373,1015874,1016404,1016905,1017405,1017937,1018438,1018939,1019471,1019972,1020471,1021002,1021503,1022035,1022535,1023036,1023568,1024069,1024568,1025100,1025601,1026102,1026633,1027133,1027666,1028167,1028666,1029198,1029699,1030199,1030730,1031231,1031763,1032264,1032764,1033296,1033797,1034297,1034828,1035329,1035830,1036362,1036861,1037393,1037894,1038394,1038925,1039427,1039927,1040459,1040959,1041491,1041992,1042492,1043023,1043524,1044024,1044556,1045057,1045558,1046090,1046590,1047121,1047622,1048122,1048654,1049154,1049655,1050187,1050689,1051219,1051720,1052220,1052751,1053252,1053752,1054284,1054786,1055285,1055817,1056317,1056849,1057349,1057850,1058382,1058883,1059383,1059915,1060415,1060947,1061447,1061947,1062479,1062981,1063480,1064012,1064514,1065014,1065545,1066045,1066577,1067078,1067578,1068110,1068611,1069112,1069642,1070142,1070674,1071175,1071675,1072207,1072709,1073209,1073740,1074241,1074741,1075273,1075773,1076305,1076807,1077308,1077839,1078340,1078840,1079372,1079871,1080403,1080904];function $tr(e,t,r,n){var i,a;if(typeof e=="object")i=e,a=t||{};else{var o=typeof e=="number"&&e>=1888&&e<=2111;if(!o)throw new Error("Solar year outside range 1888-2111");var s=typeof t=="number"&&t>=1&&t<=12;if(!s)throw new Error("Solar month outside range 1 - 12");var l=typeof r=="number"&&r>=1&&r<=31;if(!l)throw new Error("Solar day outside range 1 - 31");i={year:e,month:t,day:r},a=n||{}}var u=Xx[i.year-Xx[0]],c=i.year<<9|i.month<<5|i.day;a.year=c>=u?i.year:i.year-1,u=Xx[a.year-Xx[0]];var f=u>>9&4095,h=u>>5&15,d=u&31,v,m=new Date(f,h-1,d),b=new Date(i.year,i.month-1,i.day);v=Math.round((b-m)/(24*3600*1e3));var p=Wx[a.year-Wx[0]],k;for(k=0;k<13;k++){var M=p&1<<12-k?30:29;if(v>13;return!T||k=1888&&e<=2111;if(!s)throw new Error("Lunar year outside range 1888-2111");var l=typeof t=="number"&&t>=1&&t<=12;if(!l)throw new Error("Lunar month outside range 1 - 12");var u=typeof r=="number"&&r>=1&&r<=30;if(!u)throw new Error("Lunar day outside range 1 - 30");var c;typeof n=="object"?(c=!1,a=n):(c=!!n,a=i||{}),o={year:e,month:t,day:r,isIntercalary:c}}var f;f=o.day-1;var h=Wx[o.year-Wx[0]],d=h>>13,v;d&&(o.month>d||o.isIntercalary)?v=o.month:v=o.month-1;for(var m=0;m>9&4095,M=p>>5&15,T=p&31,L=new Date(k,M-1,T+f);return a.year=L.getFullYear(),a.month=1+L.getMonth(),a.day=L.getDate(),a}});var set=ye(()=>{var Iw=kv(),err=Nh();function bQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}bQ.prototype=new Iw.baseCalendar;err(bQ.prototype,{name:"Coptic",jdEpoch:18250295e-1,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Coptic",epochs:["BAM","AM"],monthNames:["Thout","Paopi","Hathor","Koiak","Tobi","Meshir","Paremhat","Paremoude","Pashons","Paoni","Epip","Mesori","Pi Kogi Enavot"],monthNamesShort:["Tho","Pao","Hath","Koi","Tob","Mesh","Pat","Pad","Pash","Pao","Epi","Meso","PiK"],dayNames:["Tkyriaka","Pesnau","Pshoment","Peftoou","Ptiou","Psoou","Psabbaton"],dayNamesShort:["Tky","Pes","Psh","Pef","Pti","Pso","Psa"],dayNamesMin:["Tk","Pes","Psh","Pef","Pt","Pso","Psa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,Iw.local.invalidYear),r=t.year()+(t.year()<0?1:0);return r%4===3||r%4===-1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,Iw.local.invalidYear||Iw.regionalOptions[""].invalidYear),13},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,Iw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===13&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,Iw.local.invalidDate);return e=n.year(),e<0&&e++,n.day()+(n.month()-1)*30+(e-1)*365+Math.floor(e/4)+this.jdEpoch-1},fromJD:function(e){var t=Math.floor(e)+.5-this.jdEpoch,r=Math.floor((t-Math.floor((t+366)/1461))/365)+1;r<=0&&r--,t=Math.floor(e)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(t/30)+1,i=t-(n-1)*30+1;return this.newDate(r,n,i)}});Iw.calendars.coptic=bQ});var uet=ye(()=>{var E1=kv(),trr=Nh();function wQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}wQ.prototype=new E1.baseCalendar;trr(wQ.prototype,{name:"Discworld",jdEpoch:17214255e-1,daysPerMonth:[16,32,32,32,32,32,32,32,32,32,32,32,32],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Discworld",epochs:["BUC","UC"],monthNames:["Ick","Offle","February","March","April","May","June","Grune","August","Spune","Sektober","Ember","December"],monthNamesShort:["Ick","Off","Feb","Mar","Apr","May","Jun","Gru","Aug","Spu","Sek","Emb","Dec"],dayNames:["Sunday","Octeday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Oct","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Oc","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:2,isRTL:!1}},leapYear:function(e){return this._validate(e,this.minMonth,this.minDay,E1.local.invalidYear),!1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,E1.local.invalidYear),13},daysInYear:function(e){return this._validate(e,this.minMonth,this.minDay,E1.local.invalidYear),400},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/8)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,E1.local.invalidMonth);return this.daysPerMonth[r.month()-1]},daysInWeek:function(){return 8},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,E1.local.invalidDate);return(n.day()+1)%8},weekDay:function(e,t,r){var n=this.dayOfWeek(e,t,r);return n>=2&&n<=6},extraInfo:function(e,t,r){var n=this._validate(e,t,r,E1.local.invalidDate);return{century:rrr[Math.floor((n.year()-1)/100)+1]||""}},toJD:function(e,t,r){var n=this._validate(e,t,r,E1.local.invalidDate);return e=n.year()+(n.year()<0?1:0),t=n.month(),r=n.day(),r+(t>1?16:0)+(t>2?(t-2)*32:0)+(e-1)*400+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e+.5)-Math.floor(this.jdEpoch)-1;var t=Math.floor(e/400)+1;e-=(t-1)*400,e+=e>15?16:0;var r=Math.floor(e/32)+1,n=e-(r-1)*32+1;return this.newDate(t<=0?t-1:t,r,n)}});var rrr={20:"Fruitbat",21:"Anchovy"};E1.calendars.discworld=wQ});var cet=ye(()=>{var Rw=kv(),irr=Nh();function TQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}TQ.prototype=new Rw.baseCalendar;irr(TQ.prototype,{name:"Ethiopian",jdEpoch:17242205e-1,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Ethiopian",epochs:["BEE","EE"],monthNames:["Meskerem","Tikemet","Hidar","Tahesas","Tir","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehase","Pagume"],monthNamesShort:["Mes","Tik","Hid","Tah","Tir","Yek","Meg","Mia","Gen","Sen","Ham","Neh","Pag"],dayNames:["Ehud","Segno","Maksegno","Irob","Hamus","Arb","Kidame"],dayNamesShort:["Ehu","Seg","Mak","Iro","Ham","Arb","Kid"],dayNamesMin:["Eh","Se","Ma","Ir","Ha","Ar","Ki"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,Rw.local.invalidYear),r=t.year()+(t.year()<0?1:0);return r%4===3||r%4===-1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,Rw.local.invalidYear||Rw.regionalOptions[""].invalidYear),13},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,Rw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===13&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,Rw.local.invalidDate);return e=n.year(),e<0&&e++,n.day()+(n.month()-1)*30+(e-1)*365+Math.floor(e/4)+this.jdEpoch-1},fromJD:function(e){var t=Math.floor(e)+.5-this.jdEpoch,r=Math.floor((t-Math.floor((t+366)/1461))/365)+1;r<=0&&r--,t=Math.floor(e)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(t/30)+1,i=t-(n-1)*30+1;return this.newDate(r,n,i)}});Rw.calendars.ethiopian=TQ});var fet=ye(()=>{var Zx=kv(),nrr=Nh();function AQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}AQ.prototype=new Zx.baseCalendar;nrr(AQ.prototype,{name:"Hebrew",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{"":{name:"Hebrew",epochs:["BAM","AM"],monthNames:["Nisan","Iyar","Sivan","Tammuz","Av","Elul","Tishrei","Cheshvan","Kislev","Tevet","Shevat","Adar","Adar II"],monthNamesShort:["Nis","Iya","Siv","Tam","Av","Elu","Tis","Che","Kis","Tev","She","Ada","Ad2"],dayNames:["Yom Rishon","Yom Sheni","Yom Shlishi","Yom Revi'i","Yom Chamishi","Yom Shishi","Yom Shabbat"],dayNamesShort:["Ris","She","Shl","Rev","Cha","Shi","Sha"],dayNamesMin:["Ri","She","Shl","Re","Ch","Shi","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Zx.local.invalidYear);return this._leapYear(t.year())},_leapYear:function(e){return e=e<0?e+1:e,O9(e*7+1,19)<7},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,Zx.local.invalidYear),this._leapYear(e.year?e.year():e)?13:12},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Zx.local.invalidYear);return e=t.year(),this.toJD(e===-1?1:e+1,7,1)-this.toJD(e,7,1)},daysInMonth:function(e,t){return e.year&&(t=e.month(),e=e.year()),this._validate(e,t,this.minDay,Zx.local.invalidMonth),t===12&&this.leapYear(e)||t===8&&O9(this.daysInYear(e),10)===5?30:t===9&&O9(this.daysInYear(e),10)===3?29:this.daysPerMonth[t-1]},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==6},extraInfo:function(e,t,r){var n=this._validate(e,t,r,Zx.local.invalidDate);return{yearType:(this.leapYear(n)?"embolismic":"common")+" "+["deficient","regular","complete"][this.daysInYear(n)%10-3]}},toJD:function(e,t,r){var n=this._validate(e,t,r,Zx.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=e<=0?e+1:e,a=this.jdEpoch+this._delay1(i)+this._delay2(i)+r+1;if(t<7){for(var o=7;o<=this.monthsInYear(e);o++)a+=this.daysInMonth(e,o);for(var o=1;o=this.toJD(t===-1?1:t+1,7,1);)t++;for(var r=ethis.toJD(t,r,this.daysInMonth(t,r));)r++;var n=e-this.toJD(t,r,1)+1;return this.newDate(t,r,n)}});function O9(e,t){return e-t*Math.floor(e/t)}Zx.calendars.hebrew=AQ});var het=ye(()=>{var wC=kv(),arr=Nh();function SQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}SQ.prototype=new wC.baseCalendar;arr(SQ.prototype,{name:"Islamic",jdEpoch:19484395e-1,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Islamic",epochs:["BH","AH"],monthNames:["Muharram","Safar","Rabi' al-awwal","Rabi' al-thani","Jumada al-awwal","Jumada al-thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-ahad","Yawm al-ithnayn","Yawm ath-thulaathaa'","Yawm al-arbi'aa'","Yawm al-kham\u012Bs","Yawm al-jum'a","Yawm as-sabt"],dayNamesShort:["Aha","Ith","Thu","Arb","Kha","Jum","Sab"],dayNamesMin:["Ah","It","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,wC.local.invalidYear);return(t.year()*11+14)%30<11},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){return this.leapYear(e)?355:354},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,wC.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,wC.local.invalidDate);return e=n.year(),t=n.month(),r=n.day(),e=e<=0?e+1:e,r+Math.ceil(29.5*(t-1))+(e-1)*354+Math.floor((3+11*e)/30)+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e)+.5;var t=Math.floor((30*(e-this.jdEpoch)+10646)/10631);t=t<=0?t-1:t;var r=Math.min(12,Math.ceil((e-29-this.toJD(t,1,1))/29.5)+1),n=e-this.toJD(t,r,1)+1;return this.newDate(t,r,n)}});wC.calendars.islamic=SQ});var det=ye(()=>{var TC=kv(),orr=Nh();function MQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}MQ.prototype=new TC.baseCalendar;orr(MQ.prototype,{name:"Julian",jdEpoch:17214235e-1,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Julian",epochs:["BC","AD"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"mm/dd/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,TC.local.invalidYear),r=t.year()<0?t.year()+1:t.year();return r%4===0},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(4-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,TC.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,TC.local.invalidDate);return e=n.year(),t=n.month(),r=n.day(),e<0&&e++,t<=2&&(e--,t+=12),Math.floor(365.25*(e+4716))+Math.floor(30.6001*(t+1))+r-1524.5},fromJD:function(e){var t=Math.floor(e+.5),r=t+1524,n=Math.floor((r-122.1)/365.25),i=Math.floor(365.25*n),a=Math.floor((r-i)/30.6001),o=a-Math.floor(a<14?1:13),s=n-Math.floor(o>2?4716:4715),l=r-i-Math.floor(30.6001*a);return s<=0&&s--,this.newDate(s,o,l)}});TC.calendars.julian=MQ});var pet=ye(()=>{var fg=kv(),srr=Nh();function kQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}kQ.prototype=new fg.baseCalendar;srr(kQ.prototype,{name:"Mayan",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{"":{name:"Mayan",epochs:["",""],monthNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],monthNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],dayNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesMin:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],digits:null,dateFormat:"YYYY.m.d",firstDay:0,isRTL:!1,haabMonths:["Pop","Uo","Zip","Zotz","Tzec","Xul","Yaxkin","Mol","Chen","Yax","Zac","Ceh","Mac","Kankin","Muan","Pax","Kayab","Cumku","Uayeb"],tzolkinMonths:["Imix","Ik","Akbal","Kan","Chicchan","Cimi","Manik","Lamat","Muluc","Oc","Chuen","Eb","Ben","Ix","Men","Cib","Caban","Etznab","Cauac","Ahau"]}},leapYear:function(e){return this._validate(e,this.minMonth,this.minDay,fg.local.invalidYear),!1},formatYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,fg.local.invalidYear);e=t.year();var r=Math.floor(e/400);e=e%400,e+=e<0?400:0;var n=Math.floor(e/20);return r+"."+n+"."+e%20},forYear:function(e){if(e=e.split("."),e.length<3)throw"Invalid Mayan year";for(var t=0,r=0;r19||r>0&&n<0)throw"Invalid Mayan year";t=t*20+n}return t},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,fg.local.invalidYear),18},weekOfYear:function(e,t,r){return this._validate(e,t,r,fg.local.invalidDate),0},daysInYear:function(e){return this._validate(e,this.minMonth,this.minDay,fg.local.invalidYear),360},daysInMonth:function(e,t){return this._validate(e,t,this.minDay,fg.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,fg.local.invalidDate);return n.day()},weekDay:function(e,t,r){return this._validate(e,t,r,fg.local.invalidDate),!0},extraInfo:function(e,t,r){var n=this._validate(e,t,r,fg.local.invalidDate),i=n.toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(e){e-=this.jdEpoch;var t=EQ(e+8+17*20,365);return[Math.floor(t/20)+1,EQ(t,20)]},_toTzolkin:function(e){return e-=this.jdEpoch,[vet(e+20,20),vet(e+4,13)]},toJD:function(e,t,r){var n=this._validate(e,t,r,fg.local.invalidDate);return n.day()+n.month()*20+n.year()*360+this.jdEpoch},fromJD:function(e){e=Math.floor(e)+.5-this.jdEpoch;var t=Math.floor(e/360);e=e%360,e+=e<0?360:0;var r=Math.floor(e/20),n=e%20;return this.newDate(t,r,n)}});function EQ(e,t){return e-t*Math.floor(e/t)}function vet(e,t){return EQ(e-1,t)+1}fg.calendars.mayan=kQ});var met=ye(()=>{var Dw=kv(),lrr=Nh();function CQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}CQ.prototype=new Dw.baseCalendar;var get=Dw.instance("gregorian");lrr(CQ.prototype,{name:"Nanakshahi",jdEpoch:22576735e-1,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Nanakshahi",epochs:["BN","AN"],monthNames:["Chet","Vaisakh","Jeth","Harh","Sawan","Bhadon","Assu","Katak","Maghar","Poh","Magh","Phagun"],monthNamesShort:["Che","Vai","Jet","Har","Saw","Bha","Ass","Kat","Mgr","Poh","Mgh","Pha"],dayNames:["Somvaar","Mangalvar","Budhvaar","Veervaar","Shukarvaar","Sanicharvaar","Etvaar"],dayNamesShort:["Som","Mangal","Budh","Veer","Shukar","Sanichar","Et"],dayNamesMin:["So","Ma","Bu","Ve","Sh","Sa","Et"],digits:null,dateFormat:"dd-mm-yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Dw.local.invalidYear||Dw.regionalOptions[""].invalidYear);return get.leapYear(t.year()+(t.year()<1?1:0)+1469)},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(1-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,Dw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,Dw.local.invalidMonth),i=n.year();i<0&&i++;for(var a=n.day(),o=1;o=this.toJD(t+1,1,1);)t++;for(var r=e-Math.floor(this.toJD(t,1,1)+.5)+1,n=1;r>this.daysInMonth(t,n);)r-=this.daysInMonth(t,n),n++;return this.newDate(t,n,r)}});Dw.calendars.nanakshahi=CQ});var yet=ye(()=>{var Fw=kv(),urr=Nh();function LQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}LQ.prototype=new Fw.baseCalendar;urr(LQ.prototype,{name:"Nepali",jdEpoch:17007095e-1,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{"":{name:"Nepali",epochs:["BBS","ABS"],monthNames:["Baisakh","Jestha","Ashadh","Shrawan","Bhadra","Ashwin","Kartik","Mangsir","Paush","Mangh","Falgun","Chaitra"],monthNamesShort:["Bai","Je","As","Shra","Bha","Ash","Kar","Mang","Pau","Ma","Fal","Chai"],dayNames:["Aaitabaar","Sombaar","Manglbaar","Budhabaar","Bihibaar","Shukrabaar","Shanibaar"],dayNamesShort:["Aaita","Som","Mangl","Budha","Bihi","Shukra","Shani"],dayNamesMin:["Aai","So","Man","Bu","Bi","Shu","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:1,isRTL:!1}},leapYear:function(e){return this.daysInYear(e)!==this.daysPerYear},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Fw.local.invalidYear);if(e=t.year(),typeof this.NEPALI_CALENDAR_DATA[e]=="undefined")return this.daysPerYear;for(var r=0,n=this.minMonth;n<=12;n++)r+=this.NEPALI_CALENDAR_DATA[e][n];return r},daysInMonth:function(e,t){return e.year&&(t=e.month(),e=e.year()),this._validate(e,t,this.minDay,Fw.local.invalidMonth),typeof this.NEPALI_CALENDAR_DATA[e]=="undefined"?this.daysPerMonth[t-1]:this.NEPALI_CALENDAR_DATA[e][t]},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==6},toJD:function(e,t,r){var n=this._validate(e,t,r,Fw.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=Fw.instance(),a=0,o=t,s=e;this._createMissingCalendarData(e);var l=e-(o>9||o===9&&r>=this.NEPALI_CALENDAR_DATA[s][0]?56:57);for(t!==9&&(a=r,o--);o!==9;)o<=0&&(o=12,s--),a+=this.NEPALI_CALENDAR_DATA[s][o],o--;return t===9?(a+=r-this.NEPALI_CALENDAR_DATA[s][0],a<0&&(a+=i.daysInYear(l))):a+=this.NEPALI_CALENDAR_DATA[s][9]-this.NEPALI_CALENDAR_DATA[s][0],i.newDate(l,1,1).add(a,"d").toJD()},fromJD:function(e){var t=Fw.instance(),r=t.fromJD(e),n=r.year(),i=r.dayOfYear(),a=n+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)o++,o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var u=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,u)},_createMissingCalendarData:function(e){var t=this.daysPerMonth.slice(0);t.unshift(17);for(var r=e-1;r{var sS=kv(),crr=Nh();function N9(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}function B9(e){var t=e-475;e<0&&t++;var r=.242197,n=r*t,i=r*(t+1),a=n-Math.floor(n),o=i-Math.floor(i);return a>o}N9.prototype=new sS.baseCalendar;crr(N9.prototype,{name:"Persian",jdEpoch:19483205e-1,daysPerMonth:[31,31,31,31,31,31,30,30,30,30,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Persian",epochs:["BP","AP"],monthNames:["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],monthNamesShort:["Far","Ord","Kho","Tir","Mor","Sha","Meh","Aba","Aza","Dey","Bah","Esf"],dayNames:["Yekshanbeh","Doshanbeh","Seshanbeh","Chah\u0101rshanbeh","Panjshanbeh","Jom'eh","Shanbeh"],dayNamesShort:["Yek","Do","Se","Cha","Panj","Jom","Sha"],dayNamesMin:["Ye","Do","Se","Ch","Pa","Jo","Sh"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,sS.local.invalidYear);return B9(t.year())},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-((n.dayOfWeek()+1)%7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,sS.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,sS.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=0;if(e>0)for(var a=1;a0?e-1:e)*365+i+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e)+.5;var t=475+(e-this.toJD(475,1,1))/365.242197,r=Math.floor(t);r<=0&&r--,e>this.toJD(r,12,B9(r)?30:29)&&(r++,r===0&&r++);var n=e-this.toJD(r,1,1)+1,i=n<=186?Math.ceil(n/31):Math.ceil((n-6)/30),a=e-this.toJD(r,i,1)+1;return this.newDate(r,i,a)}});sS.calendars.persian=N9;sS.calendars.jalali=N9});var xet=ye(()=>{var zw=kv(),frr=Nh(),U9=zw.instance();function PQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}PQ.prototype=new zw.baseCalendar;frr(PQ.prototype,{name:"Taiwan",jdEpoch:24194025e-1,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Taiwan",epochs:["BROC","ROC"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,zw.local.invalidYear),r=this._t2gYear(t.year());return U9.leapYear(r)},weekOfYear:function(i,t,r){var n=this._validate(i,this.minMonth,this.minDay,zw.local.invalidYear),i=this._t2gYear(n.year());return U9.weekOfYear(i,n.month(),n.day())},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,zw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,zw.local.invalidDate),i=this._t2gYear(n.year());return U9.toJD(i,n.month(),n.day())},fromJD:function(e){var t=U9.fromJD(e),r=this._g2tYear(t.year());return this.newDate(r,t.month(),t.day())},_t2gYear:function(e){return e+this.yearsOffset+(e>=-this.yearsOffset&&e<=-1?1:0)},_g2tYear:function(e){return e-this.yearsOffset-(e>=1&&e<=this.yearsOffset?1:0)}});zw.calendars.taiwan=PQ});var bet=ye(()=>{var qw=kv(),hrr=Nh(),V9=qw.instance();function IQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}IQ.prototype=new qw.baseCalendar;hrr(IQ.prototype,{name:"Thai",jdEpoch:15230985e-1,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Thai",epochs:["BBE","BE"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,qw.local.invalidYear),r=this._t2gYear(t.year());return V9.leapYear(r)},weekOfYear:function(i,t,r){var n=this._validate(i,this.minMonth,this.minDay,qw.local.invalidYear),i=this._t2gYear(n.year());return V9.weekOfYear(i,n.month(),n.day())},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,qw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,qw.local.invalidDate),i=this._t2gYear(n.year());return V9.toJD(i,n.month(),n.day())},fromJD:function(e){var t=V9.fromJD(e),r=this._g2tYear(t.year());return this.newDate(r,t.month(),t.day())},_t2gYear:function(e){return e-this.yearsOffset-(e>=1&&e<=this.yearsOffset?1:0)},_g2tYear:function(e){return e+this.yearsOffset+(e>=-this.yearsOffset&&e<=-1?1:0)}});qw.calendars.thai=IQ});var wet=ye(()=>{var Ow=kv(),drr=Nh();function RQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}RQ.prototype=new Ow.baseCalendar;drr(RQ.prototype,{name:"UmmAlQura",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Umm al-Qura",epochs:["BH","AH"],monthNames:["Al-Muharram","Safar","Rabi' al-awwal","Rabi' Al-Thani","Jumada Al-Awwal","Jumada Al-Thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-Ahad","Yawm al-Ithnain","Yawm al-Thal\u0101th\u0101\u2019","Yawm al-Arba\u2018\u0101\u2019","Yawm al-Kham\u012Bs","Yawm al-Jum\u2018a","Yawm al-Sabt"],dayNamesMin:["Ah","Ith","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!0}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Ow.local.invalidYear);return this.daysInYear(t.year())===355},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){for(var t=0,r=1;r<=12;r++)t+=this.daysInMonth(e,r);return t},daysInMonth:function(e,t){for(var r=this._validate(e,t,this.minDay,Ow.local.invalidMonth),n=r.toJD()-24e5+.5,i=0,a=0;an)return Yx[i]-Yx[i-1];i++}return 30},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,Ow.local.invalidDate),i=12*(n.year()-1)+n.month()-15292,a=n.day()+Yx[i-1]-1;return a+24e5-.5},fromJD:function(e){for(var t=e-24e5+.5,r=0,n=0;nt);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),o=a+1,s=i-12*a,l=t-Yx[r-1]+1;return this.newDate(o,s,l)},isValid:function(e,t,r){var n=Ow.baseCalendar.prototype.isValid.apply(this,arguments);return n&&(e=e.year!=null?e.year:e,n=e>=1276&&e<=1500),n},_validate:function(e,t,r,n){var i=Ow.baseCalendar.prototype._validate.apply(this,arguments);if(i.year<1276||i.year>1500)throw n.replace(/\{0\}/,this.local.name);return i}});Ow.calendars.ummalqura=RQ;var Yx=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]});var Aet=ye((STr,Tet)=>{"use strict";Tet.exports=kv();aet();oet();set();uet();cet();fet();het();det();pet();met();yet();_et();xet();bet();wet()});var Iet=ye((MTr,Pet)=>{"use strict";var Eet=Aet(),AC=Pr(),ket=fs(),vrr=ket.EPOCHJD,prr=ket.ONEDAY,zQ={valType:"enumerated",values:AC.sortObjectKeys(Eet.calendars),editType:"calc",dflt:"gregorian"},Cet=function(e,t,r,n){var i={};return i[r]=zQ,AC.coerce(e,t,i,r,n)},grr=function(e,t,r,n){for(var i=0;i{"use strict";Ret.exports=Iet()});var wrr=ye((kTr,zet)=>{var Fet=fye();Fet.register([d1e(),e_e(),vxe(),Fxe(),Yxe(),jbe(),n2e(),W2e(),bwe(),i3e(),H3e(),rke(),jke(),z6e(),ALe(),tPe(),SPe(),KIe(),p8e(),R8e(),j8e(),aRe(),xRe(),zRe(),dFe(),RFe(),KBe(),KNe(),oVe(),IVe(),VGe(),iHe(),EHe(),Bje(),eWe(),AWe(),RXe(),iZe(),OZe(),oKe(),PKe(),$Ke(),AJe(),OJe(),q$e(),rQe(),bQe(),ret(),Det()]);zet.exports=Fet});return wrr();})(); +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/*! + * pad-left + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT license. + */ +/*! + * repeat-string + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT License. + */ +/*! Bundled license information: + +native-promise-only/lib/npo.src.js: + (*! Native Promise Only + v0.8.1 (c) Kyle Simpson + MIT License: http://getify.mit-license.org + *) + +polybooljs/index.js: + (* + * @copyright 2016 Sean Connelly (@voidqk), http://syntheti.cc + * @license MIT + * @preserve Project Home: https://github.com/voidqk/polybooljs + *) + +ieee754/index.js: + (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) + +buffer/index.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) + +safe-buffer/index.js: + (*! safe-buffer. MIT License. Feross Aboukhadijeh *) + +assert/build/internal/util/comparisons.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) + +object-assign/index.js: + (* + object-assign + (c) Sindre Sorhus + @license MIT + *) + +maplibre-gl/dist/maplibre-gl.js: + (** + * MapLibre GL JS + * @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v4.7.1/LICENSE.txt + *) +*/ + +window.Plotly = Plotly; +return Plotly; +})); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index e0ddcdd..6b27d59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,6 @@ "version": "0.0.1", "license": "MIT", "dependencies": { - "3dmol": "^2.5.5", - "ngl": "^2.4.0", - "plotly.js-dist-min": "^3.6.0", "vscode-languageclient": "^10.0.0" }, "devDependencies": { @@ -26,6 +23,7 @@ "@typescript-eslint/parser": "^8.60.1", "@vscode/test-electron": "^2.5.2", "@vscode/vsce": "3.9.2", + "3dmol": "^2.5.5", "eslint": "^8.56.0", "glob": "^13.0.6", "husky": "^8.0.3", @@ -34,6 +32,9 @@ "jsdom": "^29.1.1", "lint-staged": "^15.2.0", "mocha": "^11.7.6", + "ngl": "^2.4.0", + "playwright": "^1.61.1", + "plotly.js-dist-min": "^3.7.0", "prettier": "^3.8.3", "sharp": "^0.34.5", "three": "^0.183.2", @@ -4441,6 +4442,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz", "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==", + "dev": true, "hasInstallScript": true, "license": "Apache-2.0" }, @@ -4902,6 +4904,7 @@ "version": "2.0.17", "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-2.0.17.tgz", "integrity": "sha512-fueJssTf+4dW4HODshEGkIZbkLKHzgu1FvCI4cTc/MKum/534Euo3SrN+ilq8xgyHnOjtmg33/hee8iXLRg1XA==", + "dev": true, "license": "MIT" }, "node_modules/@types/babel__core": { @@ -4953,12 +4956,14 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@types/benchmark/-/benchmark-2.1.5.tgz", "integrity": "sha512-cKio2eFB3v7qmKcvIHLUMw/dIx/8bhWPuzpzRT4unCPRTD8VdA9Zb0afxpcxOqR4PixRS7yT42FqGS8BYL8g1w==", + "dev": true, "license": "MIT" }, "node_modules/@types/body-parser": { "version": "1.19.6", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, "license": "MIT", "dependencies": { "@types/connect": "*", @@ -4969,6 +4974,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.8.1.tgz", "integrity": "sha512-kCFuWS0ebDbmxs0AXYn6e2r2nrGAb5KwQhknjSPSPgJcGd8+HVSILlUyFhGqML2gk39HcG7D1ydW9/qpYkN00Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/express": "*", @@ -4979,6 +4985,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -4988,6 +4995,7 @@ "version": "4.1.13", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/ms": "*" @@ -4997,12 +5005,14 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, "license": "MIT" }, "node_modules/@types/estree-jsx": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree": "*" @@ -5012,6 +5022,7 @@ "version": "5.0.6", "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", + "dev": true, "license": "MIT", "dependencies": { "@types/body-parser": "*", @@ -5023,6 +5034,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -5056,6 +5068,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "*" @@ -5065,6 +5078,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-coverage": { @@ -5147,6 +5161,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "*" @@ -5177,12 +5192,14 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, "license": "MIT" }, "node_modules/@types/node": { "version": "18.19.130", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", + "dev": true, "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -5192,6 +5209,7 @@ "version": "2.6.13", "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz", "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -5209,6 +5227,7 @@ "version": "15.7.15", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true, "license": "MIT", "peer": true }, @@ -5216,18 +5235,21 @@ "version": "6.15.1", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.1.tgz", "integrity": "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==", + "dev": true, "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, "license": "MIT" }, "node_modules/@types/react": { "version": "18.3.31", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.31.tgz", "integrity": "sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -5246,6 +5268,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -5255,6 +5278,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/http-errors": "*", @@ -5279,6 +5303,7 @@ "version": "3.30.5", "resolved": "https://registry.npmjs.org/@types/swagger-ui-dist/-/swagger-ui-dist-3.30.5.tgz", "integrity": "sha512-SrXhD9L8qeIxJzN+o1kmf3wXeVf/+Km3jIdRM1+Yq3I5b/dlF5TcGr5WCVM7I/cBYpgf43/gCPIucQ13AhICiw==", + "dev": true, "license": "MIT" }, "node_modules/@types/three": { @@ -5308,6 +5333,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, "license": "MIT" }, "node_modules/@types/vscode": { @@ -5600,6 +5626,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, "license": "ISC" }, "node_modules/@vitejs/plugin-vue": { @@ -6097,6 +6124,7 @@ "version": "2.5.5", "resolved": "https://registry.npmjs.org/3dmol/-/3dmol-2.5.5.tgz", "integrity": "sha512-kqNHouGqq3YfW58174tdERvm0XYTmP0tavQKOqIw1ouc2OJ7epkXEFrtEkVXV0clBZT2Ze2xHRC/qxX0u0qCdw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "iobuffer": "^5.0.0", @@ -6113,12 +6141,14 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "dev": true, "license": "(MIT AND Zlib)" }, "node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, "license": "MIT", "dependencies": { "mime-types": "^3.0.0", @@ -6132,6 +6162,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -6299,12 +6330,14 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -6321,6 +6354,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz", "integrity": "sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -6343,6 +6377,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", @@ -6374,6 +6409,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -6383,12 +6419,14 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, "license": "MIT" }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" @@ -6541,6 +6579,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -6660,6 +6699,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "dev": true, "license": "MIT", "dependencies": { "bytes": "^3.1.2", @@ -6684,6 +6724,7 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -6869,6 +6910,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -6878,6 +6920,7 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -6896,6 +6939,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -6909,6 +6953,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -6966,6 +7011,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -7003,6 +7049,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -7013,6 +7060,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -7023,6 +7071,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -7033,6 +7082,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -7120,7 +7170,8 @@ "node_modules/chroma-js": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-1.4.1.tgz", - "integrity": "sha512-jTwQiT859RTFN/vIf7s+Vl/Z2LcMrvMv3WUFmd/4u76AdlFC0NTNgqEEFPcRiHmAswPsMiQEDZLM8vX8qXpZNQ==" + "integrity": "sha512-jTwQiT859RTFN/vIf7s+Vl/Z2LcMrvMv3WUFmd/4u76AdlFC0NTNgqEEFPcRiHmAswPsMiQEDZLM8vX8qXpZNQ==", + "dev": true }, "node_modules/ci-info": { "version": "4.4.0", @@ -7315,6 +7366,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" @@ -7327,6 +7379,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -7347,6 +7400,7 @@ "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" @@ -7359,6 +7413,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -7377,6 +7432,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -7386,12 +7442,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, "license": "MIT" }, "node_modules/compression/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, "funding": [ { "type": "github", @@ -7419,6 +7477,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -7432,6 +7491,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -7448,6 +7508,7 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -7457,6 +7518,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.6.0" @@ -7489,6 +7551,7 @@ "version": "2.8.6", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "dev": true, "license": "MIT", "dependencies": { "object-assign": "^4", @@ -7634,6 +7697,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, "license": "MIT" }, "node_modules/data-urls": { @@ -7654,6 +7718,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -7671,6 +7736,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -7688,6 +7754,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -7705,6 +7772,7 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -7742,6 +7810,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "dev": true, "license": "MIT", "dependencies": { "character-entities": "^2.0.0" @@ -7845,6 +7914,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -7875,6 +7945,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", @@ -7892,6 +7963,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -7901,6 +7973,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -7910,6 +7983,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -7939,6 +8013,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, "license": "MIT", "dependencies": { "dequal": "^2.0.0" @@ -8057,6 +8132,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -8105,6 +8181,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, "license": "MIT" }, "node_modules/electron-to-chromium": { @@ -8145,6 +8222,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -8215,6 +8293,7 @@ "version": "1.24.2", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "dev": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.2", @@ -8283,12 +8362,14 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true, "license": "MIT" }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8298,6 +8379,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8307,6 +8389,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -8319,6 +8402,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -8334,6 +8418,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.2.7", @@ -8403,6 +8488,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, "license": "MIT" }, "node_modules/escape-string-regexp": { @@ -8618,6 +8704,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -8645,6 +8732,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -8746,6 +8834,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "dev": true, "license": "MIT", "dependencies": { "accepts": "^2.0.0", @@ -8789,6 +8878,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, "license": "MIT" }, "node_modules/fast-deep-equal": { @@ -8934,6 +9024,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.4.0", @@ -9014,6 +9105,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.2.7" @@ -9046,6 +9138,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", + "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -9062,6 +9155,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -9071,6 +9165,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -9083,6 +9178,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -9092,6 +9188,7 @@ "version": "2.16.11", "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.16.11.tgz", "integrity": "sha512-LaI+KaX2NFkfn1ZGHoKCmcfv7yrZsC3b8NtWsTVQeHkq4F27vI5igUuO53sxqDEa2gNQMHFPmpojDw/1zmUK7w==", + "dev": true, "license": "MIT", "peer": true }, @@ -9099,6 +9196,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -9153,6 +9251,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9162,6 +9261,7 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -9182,6 +9282,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9191,6 +9292,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -9233,6 +9335,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -9267,6 +9370,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -9293,6 +9397,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -9365,6 +9470,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, "license": "MIT", "dependencies": { "define-properties": "^1.2.1", @@ -9415,6 +9521,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -9441,6 +9548,7 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/h264-mp4-encoder/-/h264-mp4-encoder-1.0.12.tgz", "integrity": "sha512-xih3J+Go0o1RqGjhOt6TwXLWWGqLONRPyS8yoMu/RoS/S8WyEv4HuHp1KBsDDl8srZQ3gw9f95JYkCSjCuZbHQ==", + "dev": true, "license": "MIT" }, "node_modules/handlebars": { @@ -9469,6 +9577,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -9491,6 +9600,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -9503,6 +9613,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.0" @@ -9518,6 +9629,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -9530,6 +9642,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -9545,6 +9658,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -9581,6 +9695,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", @@ -9608,6 +9723,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" @@ -9691,6 +9807,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz", "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==", + "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -9732,6 +9849,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, "license": "MIT", "dependencies": { "depd": "~2.0.0", @@ -9858,6 +9976,7 @@ "version": "10.2.0", "resolved": "https://registry.npmjs.org/immer/-/immer-10.2.0.tgz", "integrity": "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==", + "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -9868,6 +9987,7 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.6.tgz", "integrity": "sha512-q1swsS8K7L8usSHuOqF2TAoCCkonYz0SG38wLAggaa4Wml70zixIvt2ql4coQ2C2B3hTjltJry4r6bULwgAXLQ==", + "dev": true, "license": "MIT" }, "node_modules/import-fresh": { @@ -9946,6 +10066,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, "license": "ISC" }, "node_modules/ini": { @@ -9960,12 +10081,14 @@ "version": "0.2.7", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "dev": true, "license": "MIT" }, "node_modules/internal-slot": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -9980,6 +10103,7 @@ "version": "2.2.22", "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-2.2.22.tgz", "integrity": "sha512-FHCCztTkHoV9mdBsHpocLpdTAfh956ZQcIkWQxxS0U5HT53vtrcuYdQneEJKH6xILaLNzXVl2Cvwtoy8XNN0AA==", + "dev": true, "license": "MIT", "peerDependencies": { "fp-ts": "^2.5.0" @@ -9989,12 +10113,14 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.4.0.tgz", "integrity": "sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA==", + "dev": true, "license": "MIT" }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.10" @@ -10004,6 +10130,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -10014,6 +10141,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, "license": "MIT", "dependencies": { "is-alphabetical": "^2.0.0", @@ -10028,6 +10156,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -10052,6 +10181,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, "license": "MIT", "dependencies": { "async-function": "^1.0.0", @@ -10071,6 +10201,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, "license": "MIT", "dependencies": { "has-bigints": "^1.0.2" @@ -10086,6 +10217,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -10102,6 +10234,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10130,6 +10263,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -10147,6 +10281,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -10163,6 +10298,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -10199,6 +10335,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" @@ -10237,6 +10374,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.4", @@ -10269,6 +10407,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -10311,6 +10450,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10323,6 +10463,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10345,6 +10486,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -10388,12 +10530,14 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, "license": "MIT" }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -10412,6 +10556,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10424,6 +10569,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" @@ -10452,6 +10598,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -10468,6 +10615,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -10485,6 +10633,7 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" @@ -10513,6 +10662,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10525,6 +10675,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" @@ -10540,6 +10691,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -13050,6 +13202,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -13813,6 +13966,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -13823,6 +13977,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -13937,6 +14092,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -13946,6 +14102,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -13970,6 +14127,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", @@ -13988,6 +14146,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", @@ -14012,6 +14171,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", @@ -14030,6 +14190,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -14044,6 +14205,7 @@ "version": "13.2.1", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -14065,6 +14227,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -14086,6 +14249,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0" @@ -14113,6 +14277,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -14122,6 +14287,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -14158,6 +14324,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14193,6 +14360,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14227,6 +14395,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14248,6 +14417,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14270,6 +14440,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14290,6 +14461,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14312,6 +14484,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14334,6 +14507,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14354,6 +14528,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14373,6 +14548,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14394,6 +14570,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14414,6 +14591,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14433,6 +14611,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14455,6 +14634,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14471,6 +14651,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14487,6 +14668,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14506,6 +14688,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14525,6 +14708,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14546,6 +14730,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14568,6 +14753,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14584,6 +14770,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -14640,6 +14827,7 @@ "version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -14649,6 +14837,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "dev": true, "license": "MIT", "dependencies": { "mime-db": "^1.54.0" @@ -14921,6 +15110,7 @@ "version": "4.18.0", "resolved": "https://registry.npmjs.org/molstar/-/molstar-4.18.0.tgz", "integrity": "sha512-mU2da9laqdFtGKGCqOyFywCAxuvRYevOMFjrX/6RwIUd+HB5yOpbLXXRA5ErVadHXLTlEYOutCzNv+AwvmrfmA==", + "dev": true, "license": "MIT", "dependencies": { "@types/argparse": "^2.0.17", @@ -14992,6 +15182,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, "license": "MIT" }, "node_modules/mute-stream": { @@ -15039,6 +15230,7 @@ "version": "0.6.4", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -15055,6 +15247,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/netcdfjs/-/netcdfjs-3.0.0.tgz", "integrity": "sha512-LOvT8KkC308qtpUkcBPiCMBtii7ZQCN6LxcVheWgyUeZ6DQWcpSRFV9dcVXLj/2eHZ/bre9tV5HTH4Sf93vrFw==", + "dev": true, "license": "MIT", "dependencies": { "iobuffer": "^5.3.2" @@ -15064,6 +15257,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/ngl/-/ngl-2.4.0.tgz", "integrity": "sha512-XrPo1om/Q0r++jqKkIYlQvGGRiJvD81zi9o9ltCLDeBYBaSbQuOSbJ0wq7zIdTuIpQL+a+BogV+LI0trNiGzVw==", + "dev": true, "license": "MIT", "dependencies": { "chroma-js": "^1.3.7", @@ -15077,6 +15271,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/node-abi": { @@ -15105,6 +15300,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" @@ -15125,18 +15321,21 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, "license": "MIT" }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, "license": "BSD-2-Clause" }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, "license": "MIT", "dependencies": { "tr46": "~0.0.3", @@ -15253,6 +15452,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -15262,6 +15462,7 @@ "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -15274,6 +15475,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -15283,6 +15485,7 @@ "version": "4.1.7", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -15303,6 +15506,7 @@ "version": "2.1.9", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.9.tgz", "integrity": "sha512-mt8YM6XwsTTovI+kdZdHSxoyF2DI59up034orlC9NfweclcWOt7CVascNNLp6U+bjFVCVCIh9PwS76tDM/rH8g==", + "dev": true, "license": "MIT", "dependencies": { "array.prototype.reduce": "^1.0.8", @@ -15324,6 +15528,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, "license": "MIT", "dependencies": { "ee-first": "1.1.1" @@ -15336,6 +15541,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -15345,6 +15551,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -15485,6 +15692,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.6", @@ -15564,6 +15772,7 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true, "license": "(MIT AND Zlib)" }, "node_modules/parent-module": { @@ -15583,6 +15792,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -15602,6 +15812,7 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/parse-json": { @@ -15700,6 +15911,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -15763,6 +15975,7 @@ "version": "8.4.2", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -15908,10 +16121,58 @@ "node": ">=8" } }, + "node_modules/playwright": { + "version": "1.61.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.61.1.tgz", + "integrity": "sha512-DWnY5o3YbLWK4GovuAVwpqL+1VwGNdUGrRr++8j8PtQQzvAVZUIMjKQ90fY689sEJZJBbZVw1rXaOKSTitkzPQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.61.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.61.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.1.tgz", + "integrity": "sha512-h7Qlt6m4REp25qvIdvbDtVmD4LqVXfpRxhORv9L0jzETM05p4fuPJ3dKyuSXQxDSbXnmS79HAgi9589lGSpLkg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/plotly.js-dist-min": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/plotly.js-dist-min/-/plotly.js-dist-min-3.6.0.tgz", - "integrity": "sha512-VR9jO2YdcEwbzVwtRyPE0eAieXFv1x5q6M9nnIgUS8FggahPrjiID6kzpnTYABwLX0gZkgEc0zxS6gQgVmgHzw==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/plotly.js-dist-min/-/plotly.js-dist-min-3.7.0.tgz", + "integrity": "sha512-IRWNnBJZmKss3URDnicBK2nvt/VTSi/MD1GnUscAYFjwSuN6g/CTde5R1UC0RYtblehj8rkT4BL8r05e/c8j5Q==", + "dev": true, "license": "MIT" }, "node_modules/pluralize": { @@ -15928,6 +16189,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -16081,6 +16343,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -16091,6 +16354,7 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, "license": "MIT", "dependencies": { "forwarded": "0.2.0", @@ -16153,6 +16417,7 @@ "version": "6.15.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -16199,6 +16464,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -16208,6 +16474,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "dev": true, "license": "MIT", "dependencies": { "bytes": "~3.1.2", @@ -16223,6 +16490,7 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -16280,6 +16548,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -16293,6 +16562,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -16314,6 +16584,7 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-10.1.0.tgz", "integrity": "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -16448,6 +16719,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -16497,6 +16769,7 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -16517,6 +16790,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -16533,6 +16807,7 @@ "version": "11.1.2", "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -16784,6 +17059,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.4.0", @@ -16844,6 +17120,7 @@ "version": "7.8.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" @@ -16853,6 +17130,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.9", @@ -16872,6 +17150,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, "license": "MIT" }, "node_modules/safe-buffer": { @@ -16885,6 +17164,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -16901,12 +17181,14 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, "license": "MIT" }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -16924,6 +17206,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, "license": "MIT" }, "node_modules/sax": { @@ -16953,6 +17236,7 @@ "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -17005,6 +17289,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.4.3", @@ -17041,6 +17326,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "dev": true, "license": "MIT", "dependencies": { "encodeurl": "^2.0.0", @@ -17060,6 +17346,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -17077,6 +17364,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -17092,6 +17380,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -17113,6 +17402,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, "license": "ISC" }, "node_modules/sharp": { @@ -17204,6 +17494,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -17223,6 +17514,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -17239,6 +17531,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -17257,6 +17550,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -17288,7 +17582,8 @@ "node_modules/signals": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/signals/-/signals-1.0.0.tgz", - "integrity": "sha512-dE3lBiqgrgIvpGHYBy6/kiYKfh0HXRmbg0ocakBKiOefbal6ZeTtNlQlxsu9ADkNzv5OmRwRKu+IaTPSqJdZDg==" + "integrity": "sha512-dE3lBiqgrgIvpGHYBy6/kiYKfh0HXRmbg0ocakBKiOefbal6ZeTtNlQlxsu9ADkNzv5OmRwRKu+IaTPSqJdZDg==", + "dev": true }, "node_modules/simple-concat": { "version": "1.0.1", @@ -17421,6 +17716,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -17507,6 +17803,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -17529,6 +17826,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -17656,6 +17954,7 @@ "version": "1.2.11", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz", "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.9", @@ -17678,6 +17977,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz", "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.9", @@ -17696,6 +17996,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -17713,6 +18014,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, "license": "MIT", "dependencies": { "character-entities-html4": "^2.0.0", @@ -17797,6 +18099,7 @@ "version": "1.1.21", "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "dev": true, "license": "MIT", "dependencies": { "style-to-object": "1.0.14" @@ -17806,6 +18109,7 @@ "version": "1.0.14", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "dev": true, "license": "MIT", "dependencies": { "inline-style-parser": "0.2.7" @@ -17871,6 +18175,7 @@ "version": "5.32.6", "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.32.6.tgz", "integrity": "sha512-75ttZNaYCLoFPnozPZcTUU6mS3wKT8l7WLjU5zJSHFeJa23i5vtnze6IiCl4jDMPeQTXVXIgovq4M11NNfQvSA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@scarf/scarf": "=1.4.0" @@ -18157,6 +18462,7 @@ "version": "0.183.2", "resolved": "https://registry.npmjs.org/three/-/three-0.183.2.tgz", "integrity": "sha512-di3BsL2FEQ1PA7Hcvn4fyJOlxRRgFYBpMTcyOgkwJIaDOdJMebEFPA+t98EvjuljDx4hNulAGwF6KIjtwI5jgQ==", + "dev": true, "license": "MIT" }, "node_modules/tinyglobby": { @@ -18230,6 +18536,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.6" @@ -18265,6 +18572,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -18275,6 +18583,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -18364,6 +18673,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, "license": "0BSD" }, "node_modules/tunnel": { @@ -18430,6 +18740,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", + "dev": true, "license": "MIT", "dependencies": { "content-type": "^2.0.0", @@ -18448,6 +18759,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -18461,6 +18773,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -18475,6 +18788,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -18494,6 +18808,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -18515,6 +18830,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.8.tgz", "integrity": "sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.9", @@ -18582,6 +18898,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -18617,6 +18934,7 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, "license": "MIT" }, "node_modules/unicorn-magic": { @@ -18636,6 +18954,7 @@ "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -18655,6 +18974,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -18667,6 +18987,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -18680,6 +19001,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -18693,6 +19015,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -18706,6 +19029,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -18721,6 +19045,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -18745,6 +19070,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -18785,6 +19111,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/upng-js/-/upng-js-2.1.0.tgz", "integrity": "sha512-d3xzZzpMP64YkjP5pr8gNyvBt7dLk/uGI67EctzDuVp4lCZyVMo0aJO6l/VDlgbInJYDY6cnClLoBp29eKWI6g==", + "dev": true, "license": "MIT", "dependencies": { "pako": "^1.0.5" @@ -18818,6 +19145,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.3.tgz", "integrity": "sha512-GIEaZ6o86fj09Wtf0VfZ5XP7tmd4t3jM5aZCgmBi231D0DB1AEBa3Aa6MP48DMsAIi96WkpWLimIWVwOjbDMOw==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -18870,6 +19198,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -18892,6 +19221,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -18906,6 +19236,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -19193,6 +19524,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, "license": "MIT", "dependencies": { "is-bigint": "^1.1.0", @@ -19212,6 +19544,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -19239,12 +19572,14 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, "license": "MIT" }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, "license": "MIT", "dependencies": { "is-map": "^2.0.3", @@ -19263,6 +19598,7 @@ "version": "1.1.22", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.22.tgz", "integrity": "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==", + "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -19419,6 +19755,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": { @@ -19684,6 +20021,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, "license": "MIT", "funding": { "type": "github", diff --git a/package.json b/package.json index d69e20a..7953213 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,25 @@ "onCommand:openqc.validate", "onView:openqc-sidebar", "onCommand:openqc.previewInput", + "onCommand:openqc.exportStructureWithPicker", + "onCommand:openqc.exportStructure", + "onCommand:openqc.saveEditedStructureToSource", "onCommand:openqc.convertFormat", + "onCommand:openqc.generateCalculatorInput", + "onCommand:openqc.runCalculation", + "onCommand:openqc.readResults", + "onCommand:openqc.quickVASP", + "onCommand:openqc.quickCP2K", + "onCommand:openqc.quickQE", + "onCommand:openqc.checkCalculators", + "onCommand:openqc.checkExternalAnalyzers", + "onCommand:openqc.generateMultiwfnScript", + "onCommand:openqc.runMultiwfnAnalysis", + "onCommand:openqc.convertDensityC2x", + "onCommand:openqc.convertStructureOpenBabel", + "onCommand:openqc.showOptimizationTrajectory", + "onCommand:openqc.migrateStructure", + "onCommand:openqc.migrateStructureAdvanced", "onCommand:openqc.aiOptimizeInput", "onCommand:openqc.aiGenerateInput", "onCommand:openqc.aiExplainParameters", @@ -561,6 +579,51 @@ "title": "OpenQC: Quick Convert (ASE)", "category": "ASE Integration" }, + { + "command": "openqc.generateCalculatorInput", + "title": "OpenQC: Generate Calculator Input", + "category": "ASE Integration" + }, + { + "command": "openqc.runCalculation", + "title": "OpenQC: Run Calculator", + "category": "ASE Integration" + }, + { + "command": "openqc.readResults", + "title": "OpenQC: Read Calculator Results", + "category": "ASE Integration" + }, + { + "command": "openqc.quickVASP", + "title": "OpenQC: Quick VASP Calculation", + "category": "ASE Integration" + }, + { + "command": "openqc.quickCP2K", + "title": "OpenQC: Quick CP2K Calculation", + "category": "ASE Integration" + }, + { + "command": "openqc.quickQE", + "title": "OpenQC: Quick Quantum ESPRESSO Calculation", + "category": "ASE Integration" + }, + { + "command": "openqc.checkCalculators", + "title": "OpenQC: Check Calculator Availability", + "category": "ASE Integration" + }, + { + "command": "openqc.migrateStructure", + "title": "OpenQC: Migrate Structure", + "category": "Migration" + }, + { + "command": "openqc.migrateStructureAdvanced", + "title": "OpenQC: Migrate Structure (Advanced)", + "category": "Migration" + }, { "command": "openqc.migrateKpoints", "title": "OpenQC: Migrate k-Point Grid", @@ -647,6 +710,12 @@ "category": "OpenQC", "icon": "$(save)" }, + { + "command": "openqc.saveEditedStructureToSource", + "title": "OpenQC: Save Edited Structure to Source File", + "category": "OpenQC", + "icon": "$(save-as)" + }, { "command": "openqc.checkPythonBackend", "title": "OpenQC: Check Scientific Python Backend", @@ -682,6 +751,11 @@ "title": "OpenQC: Show SCF Convergence", "category": "OpenQC" }, + { + "command": "openqc.showOptimizationTrajectory", + "title": "OpenQC: Show Optimization Trajectory", + "category": "OpenQC" + }, { "command": "openqc.checkExternalAnalyzers", "title": "OpenQC: Check External Analyzers", @@ -701,6 +775,11 @@ "command": "openqc.convertDensityC2x", "title": "OpenQC: Convert Density with c2x", "category": "OpenQC" + }, + { + "command": "openqc.convertStructureOpenBabel", + "title": "OpenQC: Convert Structure with Open Babel", + "category": "OpenQC" } ], "views": { @@ -1323,31 +1402,6 @@ "default": 5000, "description": "Refresh interval in milliseconds for sidebar views" }, - "openqc.visualization.moleculeRenderer": { - "type": "string", - "enum": [ - "3Dmol.js", - "NGL", - "VTK" - ], - "default": "3Dmol.js", - "description": "Default molecule renderer" - }, - "openqc.visualization.plotLibrary": { - "type": "string", - "enum": [ - "Plotly.js", - "Chart.js", - "D3.js" - ], - "default": "Plotly.js", - "description": "Default plotting library" - }, - "openqc.visualization.autoOpen": { - "type": "boolean", - "default": true, - "description": "Automatically open visualization on file open" - }, "openqc.converter.pythonPath": { "type": "string", "default": "python3", @@ -1369,6 +1423,74 @@ "minimum": 1000, "description": "Timeout in milliseconds for Python subprocess bridge commands" }, + "openqc.calculators.vasp.command": { + "type": "string", + "default": "vasp", + "description": "Command used to run VASP calculator jobs" + }, + "openqc.calculators.vasp.defaultParams": { + "type": "object", + "default": { + "encut": 400, + "kpts": [ + 4, + 4, + 4 + ], + "prec": "Normal", + "ismear": 0, + "sigma": 0.1 + }, + "description": "Default VASP parameters used by OpenQC calculator input generation" + }, + "openqc.calculators.cp2k.command": { + "type": "string", + "default": "cp2k.popt", + "description": "Command used to run CP2K calculator jobs" + }, + "openqc.calculators.cp2k.defaultParams": { + "type": "object", + "default": { + "basis_set": "DZVP-MOLOPT-SR-GTH", + "potential": "GTH-PBE", + "xc_functional": "PBE", + "cutoff": 400, + "rel_cutoff": 50, + "ngrids": 4 + }, + "description": "Default CP2K parameters used by OpenQC calculator input generation" + }, + "openqc.calculators.qe.command": { + "type": "string", + "default": "pw.x", + "description": "Command used to run Quantum ESPRESSO calculator jobs" + }, + "openqc.calculators.qe.defaultParams": { + "type": "object", + "default": { + "calculation": "scf", + "ecutwfc": 40, + "ecutrho": 320, + "conv_thr": 1e-8, + "kpts": [ + 4, + 4, + 4 + ] + }, + "description": "Default Quantum ESPRESSO parameters used by OpenQC calculator input generation" + }, + "openqc.external.allowExternalAnalyzers": { + "type": "boolean", + "default": false, + "description": "Allow OpenQC commands to execute external analyzers after preview confirmation" + }, + "openqc.external.timeoutMs": { + "type": "number", + "default": 60000, + "minimum": 1000, + "description": "Timeout in milliseconds for external analyzer subprocesses" + }, "openqc.external.multiwfnPath": { "type": "string", "default": "", @@ -1611,6 +1733,8 @@ "test:integration": "jest --testPathPattern=tests/integration", "test:coverage": "jest --coverage", "test:e2e": "node ./out/test/runTest.js", + "test:visual": "npm run compile && node scripts/visual-smoke-openqc-viewer.mjs", + "test:visual:vsix": "node scripts/visual-smoke-vsix.mjs", "test:all": "jest --coverage --runInBand", "package:vsix": "node scripts/package-vsix.mjs", "verify:vsix": "node scripts/verify-vsix.mjs", @@ -1619,7 +1743,7 @@ "release:tag": "node scripts/create-release-tag.mjs", "release:tag:push": "node scripts/create-release-tag.mjs --push", "audit:prod": "npm audit --omit=dev --audit-level=high", - "check:release": "make check && npm run package:vsix && npm run verify:vsix && npm run release:assets", + "check:release": "make check && npm run test:visual && npm run package:vsix && npm run verify:vsix && npm run test:visual:vsix && npm run release:assets", "ci:pr": "npm run compile && npm run lint && npm run typecheck && npm run format:check && npm run audit:prod && npm run test:all", "docs:dev": "vitepress dev docs", "docs:build": "vitepress build docs", @@ -1640,6 +1764,7 @@ "@typescript-eslint/eslint-plugin": "^8.60.1", "@typescript-eslint/parser": "^8.60.1", "@vscode/test-electron": "^2.5.2", + "3dmol": "^2.5.5", "eslint": "^8.56.0", "glob": "^13.0.6", "husky": "^8.0.3", @@ -1648,6 +1773,9 @@ "jsdom": "^29.1.1", "lint-staged": "^15.2.0", "mocha": "^11.7.6", + "ngl": "^2.4.0", + "playwright": "^1.61.1", + "plotly.js-dist-min": "^3.7.0", "prettier": "^3.8.3", "sharp": "^0.34.5", "three": "^0.183.2", @@ -1656,9 +1784,6 @@ "vitepress": "^1.6.4" }, "dependencies": { - "3dmol": "^2.5.5", - "ngl": "^2.4.0", - "plotly.js-dist-min": "^3.6.0", "vscode-languageclient": "^10.0.0" }, "overrides": { diff --git a/python/openqc/ase/calculator.py b/python/openqc/ase/calculator.py index 564b6b3..86a8ef1 100644 --- a/python/openqc/ase/calculator.py +++ b/python/openqc/ase/calculator.py @@ -213,6 +213,96 @@ def run_calculation(self, input_data: CalculatorInput, config: CalculatorConfig) error=str(e), execution_time=time.time() - start_time ) + + def run_existing_calculation( + self, + work_dir: str, + calculator: str, + config: CalculatorConfig, + ) -> CalculationResult: + """Run a calculation from an existing input directory.""" + start_time = time.time() + + try: + calc = calculator.lower() + work_path = Path(work_dir) + if not work_path.exists(): + return CalculationResult( + success=False, + status="failed", + work_dir=work_dir, + input_files=[], + output_files=[], + error=f"Working directory not found: {work_dir}" + ) + + if config.command: + cmd = config.command.split() + else: + cmd = [config.executable] + + if config.num_cores and config.num_cores > 1: + cmd = ["mpirun", "-np", str(config.num_cores)] + cmd + + env = os.environ.copy() + if config.environment: + env.update(config.environment) + if config.max_memory: + env["MEMORY"] = str(config.max_memory) + + process = subprocess.run( + cmd, + cwd=str(work_path), + env=env, + capture_output=True, + text=True, + timeout=config.wall_time if config.wall_time else None + ) + + output_files = self._find_output_files(work_path, calc) + energy = None + forces = None + stress = None + if process.returncode == 0: + energy, forces, stress = self._parse_results(work_path, calc) + + input_files = list(work_path.glob("*.in")) + list(work_path.glob("*.inp")) + input_files += list(work_path.glob("POSCAR")) + list(work_path.glob("INCAR")) + + return CalculationResult( + success=process.returncode == 0, + status="completed" if process.returncode == 0 else "failed", + work_dir=str(work_path), + input_files=[str(f) for f in input_files], + output_files=output_files, + energy=energy, + forces=forces, + stress=stress, + error=process.stderr if process.returncode != 0 else None, + execution_time=time.time() - start_time, + metadata={"return_code": process.returncode} + ) + + except subprocess.TimeoutExpired: + return CalculationResult( + success=False, + status="failed", + work_dir=work_dir, + input_files=[], + output_files=[], + error=f"Calculation timed out after {config.wall_time} seconds", + execution_time=time.time() - start_time + ) + except Exception as e: + return CalculationResult( + success=False, + status="failed", + work_dir=work_dir, + input_files=[], + output_files=[], + error=str(e), + execution_time=time.time() - start_time + ) def read_results(self, work_dir: str, calculator: str) -> CalculationResult: """Read calculation results from working directory.""" @@ -338,9 +428,12 @@ def _generate_cp2k_input(self, input_data: CalculatorInput) -> List[str]: run_type = params.get("run_type", "ENERGY") basis_file = params.get("basis_set_file", "BASIS_MOLOPT") pot_file = params.get("potential_file", "GTH_POTENTIALS") - xc_func = params.get("xc", "PBE") + xc_func = params.get("xc_functional", params.get("xc", "PBE")) max_scf = params.get("max_scf", 50) scf_eps = params.get("scf_eps", 1e-7) + cutoff = params.get("cutoff", 400) + rel_cutoff = params.get("rel_cutoff") + ngrids = params.get("ngrids") content = f"""&GLOBAL PROJECT {label} @@ -353,6 +446,14 @@ def _generate_cp2k_input(self, input_data: CalculatorInput) -> List[str]: &DFT BASIS_SET_FILE_NAME {basis_file} POTENTIAL_FILE_NAME {pot_file} + &MGRID + CUTOFF {cutoff} +""" + if rel_cutoff is not None: + content += f" REL_CUTOFF {rel_cutoff}\n" + if ngrids is not None: + content += f" NGRIDS {ngrids}\n" + content += f""" &END MGRID &XC &XC_FUNCTIONAL {xc_func} &END XC_FUNCTIONAL @@ -372,7 +473,7 @@ def _generate_cp2k_input(self, input_data: CalculatorInput) -> List[str]: content += f" B {atoms.cell[1, 0]:.6f} {atoms.cell[1, 1]:.6f} {atoms.cell[1, 2]:.6f}\n" content += f" C {atoms.cell[2, 0]:.6f} {atoms.cell[2, 1]:.6f} {atoms.cell[2, 2]:.6f}\n" - pbc_str = " ".join(["XYZ"[i] if p else "NONE" for i, p in enumerate(atoms.pbc)]) + pbc_str = "".join("XYZ"[i] for i, p in enumerate(atoms.pbc) if p) or "NONE" content += f" PERIODIC {pbc_str}\n" content += " &END CELL\n" content += " &COORD\n" @@ -572,22 +673,22 @@ def _parse_results(self, work_dir: Path, calculator: str): elif calculator == "cp2k": for out_file in work_dir.glob("*.out"): energy = self._parse_cp2k_output(out_file) - if energy: + if energy is not None: break elif calculator == "qe": for out_file in work_dir.glob("*.out"): energy = self._parse_qe_output(out_file) - if energy: + if energy is not None: break elif calculator == "gaussian": for log_file in work_dir.glob("*.log"): energy = self._parse_gaussian_output(log_file) - if energy: + if energy is not None: break elif calculator == "orca": for out_file in work_dir.glob("*.out"): energy = self._parse_orca_output(out_file) - if energy: + if energy is not None: break except Exception: pass @@ -672,6 +773,7 @@ def main(): print("Commands:") print(" generate ") print(" run ") + print(" run-existing ") print(" read ") sys.exit(1) @@ -696,6 +798,15 @@ def main(): config = CalculatorConfig(**json.loads(sys.argv[3])) result = calculator.run_calculation(input_data, config) print(json.dumps(result.to_dict(), indent=2)) + + elif command == "run-existing": + if len(sys.argv) < 5: + print("Error: calculator, work_dir, and config JSON required") + sys.exit(1) + + config = CalculatorConfig(**json.loads(sys.argv[4])) + result = calculator.run_existing_calculation(sys.argv[3], sys.argv[2], config) + print(json.dumps(result.to_dict(), indent=2)) elif command == "read": if len(sys.argv) < 4: diff --git a/python/openqc/bridge/check_backend.py b/python/openqc/bridge/check_backend.py index 167ab26..a132d11 100644 --- a/python/openqc/bridge/check_backend.py +++ b/python/openqc/bridge/check_backend.py @@ -72,11 +72,138 @@ def check_backend() -> Dict[str, Any]: "c2x": _check_external_tool("c2x"), } + capabilities = _derive_capabilities(packages, external_tools) + required_packages = ["numpy", "ase", "pymatgen", "cclib", "dpdata"] + missing_packages = [ + name for name in required_packages + if not packages.get(name, {}).get("available", False) + ] + + if len(missing_packages) == len(required_packages): + status = "missing" + elif missing_packages: + status = "degraded" + else: + status = "installed" + + status_detail = _status_detail(status, missing_packages) + return { "success": True, + "status": status, + "statusDetail": status_detail, "python": python_info, "packages": packages, "externalTools": external_tools, + "capabilities": capabilities, + "missingPackages": missing_packages, + } + + +def _status_detail(status: str, missing_packages: List[str]) -> str: + """Return a concise human-facing backend health detail.""" + if status == "installed": + return "Core scientific Python packages are installed." + + if status == "degraded": + missing = ", ".join(missing_packages) + return ( + "Python is available, but these core packages are missing: " + f"{missing}. Related OpenQC features are degraded or disabled." + ) + + return ( + "Python is available, but no core scientific backend packages were found. " + "Install numpy plus at least one OpenQC backend package such as ase, pymatgen, cclib, or dpdata." + ) + + +def _capability( + label: str, + status: str, + detail: str, + requires: Optional[List[str]] = None, +) -> Dict[str, Any]: + """Build a structured capability status entry.""" + result: Dict[str, Any] = {"label": label, "status": status, "detail": detail} + if requires: + result["requires"] = requires + return result + + +def _status_for(available: List[bool]) -> str: + """Map dependency availability to available/degraded/missing.""" + if all(available): + return "available" + if any(available): + return "degraded" + return "missing" + + +def _missing_requirements(requirements: Dict[str, bool]) -> List[str]: + """Return dependency names that are not available.""" + return [name for name, available in requirements.items() if not available] + + +def _derive_capabilities( + packages: Dict[str, Dict[str, Any]], + external_tools: Dict[str, Dict[str, Any]], +) -> Dict[str, Dict[str, Any]]: + """Summarize feature-level backend readiness.""" + has_ase = packages["ase"]["available"] + has_pymatgen = packages["pymatgen"]["available"] + has_cclib = packages["cclib"]["available"] + has_dpdata = packages["dpdata"]["available"] + has_spglib = packages["spglib"]["available"] + has_multiwfn = external_tools["multiwfn"]["available"] + has_c2x = external_tools["c2x"]["available"] + has_openbabel = external_tools["openbabel"]["available"] + + structure_requirements = {"native": True, "ase": has_ase, "pymatgen": has_pymatgen} + conversion_requirements = {"ase": has_ase, "dpdata": has_dpdata} + analysis_requirements = { + "Multiwfn": has_multiwfn, + "c2x": has_c2x, + "Open Babel": has_openbabel, + } + + return { + "structureParsing": _capability( + "Structure parsing", + _status_for(list(structure_requirements.values())), + "Native parsers cover XYZ, POSCAR/CONTCAR, Gaussian, ORCA, CP2K, and GAMESS coordinate inputs; ASE and pymatgen broaden periodic and molecular structure support.", + _missing_requirements({"ase": has_ase, "pymatgen": has_pymatgen}), + ), + "formatConversion": _capability( + "Format conversion", + _status_for(list(conversion_requirements.values())), + "ASE handles broad structure-file conversion; dpdata handles molecular dynamics dataset conversion.", + _missing_requirements(conversion_requirements), + ), + "outputParsing": _capability( + "Calculation output parsing", + "available" if has_cclib else "missing", + "cclib parses calculation outputs for energies, orbitals, frequencies, charges, and structures.", + [] if has_cclib else ["cclib"], + ), + "supercell": _capability( + "Supercell generation", + "available" if (has_ase or has_pymatgen) else "missing", + "ASE or pymatgen enables backend supercell generation for parsed periodic structures.", + [] if (has_ase or has_pymatgen) else ["ase", "pymatgen"], + ), + "standardization": _capability( + "Symmetry standardization", + "available" if has_spglib else "missing", + "spglib enables symmetry-aware standardization workflows.", + [] if has_spglib else ["spglib"], + ), + "externalAnalysis": _capability( + "External analysis tools", + _status_for(list(analysis_requirements.values())), + "Multiwfn, c2x, and Open Babel are optional command-line analyzers for wavefunction, density, and structure conversion workflows.", + _missing_requirements(analysis_requirements), + ), } diff --git a/python/openqc/bridge/output_bridge.py b/python/openqc/bridge/output_bridge.py index 8aa2891..98211b5 100644 --- a/python/openqc/bridge/output_bridge.py +++ b/python/openqc/bridge/output_bridge.py @@ -11,8 +11,19 @@ """ import json +import re import sys -from typing import Any, Dict, List, Optional +from typing import Any, Dict, List, Optional, Tuple + +RY_TO_EV = 13.605693122994 +_FLOAT_RE = r"[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[EeDd][-+]?\d+)?" + +_ELEMENT_MAP = { + 1: "H", 2: "He", 3: "Li", 4: "Be", 5: "B", 6: "C", 7: "N", 8: "O", + 9: "F", 10: "Ne", 11: "Na", 12: "Mg", 13: "Al", 14: "Si", 15: "P", + 16: "S", 17: "Cl", 18: "Ar", 19: "K", 20: "Ca", 26: "Fe", 29: "Cu", + 30: "Zn", 47: "Ag", 79: "Au", +} # --------------------------------------------------------------------------- @@ -28,6 +39,15 @@ def _make_results(**kwargs) -> Dict[str, Any]: return results +def _element_symbol(atomic_number: Any, fallback: str) -> str: + """Convert an atomic number to an element symbol when known.""" + try: + number = int(atomic_number) + except (TypeError, ValueError): + return fallback + return _ELEMENT_MAP.get(number, f"X{number}") + + # --------------------------------------------------------------------------- # cclib-based parser # --------------------------------------------------------------------------- @@ -42,6 +62,8 @@ def _parse_with_cclib(filepath: str, software: str = None) -> Dict[str, Any]: ) data = cclib.io.ccread(filepath) + if data is None: + raise ValueError(f"cclib could not parse output file: {filepath}") results = _make_results( sourceFile=filepath, @@ -105,13 +127,7 @@ def _parse_with_cclib(filepath: str, software: str = None) -> Dict[str, Any]: elements = [] if hasattr(data, "atomnos") and data.atomnos is not None: # Convert atomic numbers to element symbols - _ELEMENT_MAP = { - 1: "H", 2: "He", 3: "Li", 4: "Be", 5: "B", 6: "C", 7: "N", 8: "O", - 9: "F", 10: "Ne", 11: "Na", 12: "Mg", 13: "Al", 14: "Si", 15: "P", - 16: "S", 17: "Cl", 18: "Ar", 19: "K", 20: "Ca", 26: "Fe", 29: "Cu", - 30: "Zn", 47: "Ag", 79: "Au", - } - elements = [_ELEMENT_MAP.get(n, f"X{n}") for n in data.atomnos] + elements = [_element_symbol(n, f"X{n}") for n in data.atomnos] atoms = [] for i, coord in enumerate(coords): elem = elements[i] if i < len(elements) else f"X{i+1}" @@ -125,32 +141,261 @@ def _parse_with_cclib(filepath: str, software: str = None) -> Dict[str, Any]: return results +def _extract_trajectory_with_cclib(filepath: str, software: str = None) -> Dict[str, Any]: + """Extract geometry optimization frames as OpenQCStructure DTOs.""" + try: + import cclib + except ImportError as exc: + return { + "sourceFile": filepath, + "software": software or "auto", + "supported": False, + "frames": [], + "frameCount": 0, + "cclibAvailable": False, + "warnings": [f"cclib is required for trajectory extraction: {exc}"], + } + + try: + data = cclib.io.ccread(filepath) + except Exception as exc: + return { + "sourceFile": filepath, + "software": software or "auto", + "supported": False, + "frames": [], + "frameCount": 0, + "cclibAvailable": False, + "warnings": [f"cclib parser failed during trajectory extraction: {exc}"], + } + + if data is None: + return { + "sourceFile": filepath, + "software": software or "auto", + "supported": False, + "frames": [], + "frameCount": 0, + "cclibAvailable": True, + "warnings": ["cclib could not parse output file for trajectory extraction"], + } + + software_name = software or getattr(data, "metadata", {}).get("package", "unknown") + atomcoords = getattr(data, "atomcoords", None) + atomnos = list(getattr(data, "atomnos", []) or []) + + if atomcoords is None or len(atomcoords) == 0: + return { + "sourceFile": filepath, + "software": software_name, + "supported": False, + "frames": [], + "frameCount": 0, + "cclibAvailable": True, + "warnings": ["No atom coordinate trajectory was found in this output file"], + } + + frames = [] + for frame_index, coords in enumerate(atomcoords): + atoms = [] + for atom_index, coord in enumerate(coords): + fallback = f"X{atom_index + 1}" + element = ( + _element_symbol(atomnos[atom_index], fallback) + if atom_index < len(atomnos) + else fallback + ) + atoms.append( + { + "element": element, + "x": float(coord[0]), + "y": float(coord[1]), + "z": float(coord[2]), + } + ) + + frames.append( + { + "schemaVersion": "openqc.structure.v1", + "name": f"Frame {frame_index + 1}", + "kind": "molecule", + "atoms": atoms, + } + ) + + energies = [] + scf_energies = getattr(data, "scfenergies", None) + if scf_energies is not None: + energies = [float(energy) for energy in scf_energies] + + return { + "sourceFile": filepath, + "software": software_name, + "supported": True, + "frames": frames, + "frameCount": len(frames), + "energies": energies, + "cclibAvailable": True, + } + + +# --------------------------------------------------------------------------- +# Shared parse/summarize entry points +# --------------------------------------------------------------------------- + +def parse_output_file(filepath: str, software: str = "auto") -> Dict[str, Any]: + """Parse an output file with cclib and native fallback.""" + try: + result = _parse_with_cclib(filepath, software) + result["cclibAvailable"] = True + return result + except Exception as cclib_error: + with open(filepath, "r", encoding="utf-8", errors="ignore") as handle: + content = handle.read() + result = _parse_output_native(content, software) + result["sourceFile"] = filepath + result["cclibAvailable"] = False + warnings = result.get("warnings", []) + warnings.append(f"cclib parser unavailable or failed: {cclib_error}") + result["warnings"] = warnings + return result + + +def summarize_results(result: Dict[str, Any]) -> Dict[str, Any]: + """Create a compact output summary from OpenQCResults-like data.""" + return { + "sourceFile": result.get("sourceFile"), + "software": result.get("software"), + "success": result.get("success"), + "finalEnergy": result.get("finalEnergy"), + "scfStepCount": len(result.get("scfEnergies", [])), + "optimizationConverged": result.get("optimization", {}).get("converged"), + "frequencyCount": len(result.get("frequencies", [])), + "cclibAvailable": result.get("cclibAvailable"), + "warnings": result.get("warnings", []), + } + + # --------------------------------------------------------------------------- # Native fallback for common output formats # --------------------------------------------------------------------------- def _parse_output_native(content: str, software: str = None) -> Dict[str, Any]: """Try to extract basic info from output without cclib.""" - results = _make_results(sourceSoftware=software) - - # Try to find final energy - for line in reversed(content.split("\n")): - line_lower = line.lower().strip() - if "scf done" in line_lower or "converged to" in line_lower: - parts = line.split() - for i, p in enumerate(parts): - try: - val = float(p) - if abs(val) > 0.1 and abs(val) < 1e6: - results["finalEnergy"] = {"value": val, "unit": "hartree"} - break - except ValueError: - continue - break + detected_software = _detect_native_software(content, software) + results = _make_results(software=detected_software, success=True) + scf_energies, energy_unit = _extract_native_energies(content, detected_software) + + if scf_energies: + results["finalEnergy"] = {"value": scf_energies[-1], "unit": energy_unit} + results["scfEnergies"] = scf_energies + else: + results["success"] = False + results["warnings"] = [ + "No calculation output data could be extracted from this file." + ] + results["errors"] = [ + "Unsupported or unrecognized calculation output." + ] return results +def _detect_native_software(content: str, software: Optional[str]) -> str: + """Detect common output software families for native fallback parsing.""" + hint = (software or "auto").lower() + if hint and hint != "auto": + return hint + + signatures = [ + ("gaussian", [r"Entering Gaussian System", r"SCF Done:"]), + ("orca", [r"^\s*\* O\s+R\s+C\s+A \*", r"FINAL SINGLE POINT ENERGY", r"ORCA TERMINATED"]), + ("cp2k", [r"^CP2K\|", r"^ENERGY\|"]), + ("qe", [r"Program PWSCF", r"!\s+total energy\s+="]), + ("gamess", [r"GAMESS VERSION", r"^\s*TOTAL ENERGY\s*="]), + ] + + for software_name, patterns in signatures: + if any(re.search(pattern, content, re.IGNORECASE | re.MULTILINE) for pattern in patterns): + return software_name + + return software or "auto" + + +def _extract_native_energies(content: str, software: str) -> Tuple[List[float], str]: + """Extract final/scf energies from common text outputs.""" + software_lower = (software or "auto").lower() + + if software_lower == "gaussian": + return _extract_gaussian_energies(content), "hartree" + if software_lower == "orca": + return _extract_regex_energies( + content, + [ + rf"FINAL SINGLE POINT ENERGY\s+({_FLOAT_RE})", + rf"Total Energy\s*:\s*({_FLOAT_RE})\s*Eh", + ], + ), "hartree" + if software_lower == "cp2k": + return _extract_regex_energies( + content, + [ + rf"^ENERGY\|.*?({_FLOAT_RE})\s*$", + rf"Total energy:\s*({_FLOAT_RE})", + ], + ), "hartree" + if software_lower in {"qe", "quantum_espresso"}: + energies_ry = _extract_regex_energies( + content, + [ + rf"!\s+total energy\s+=\s+({_FLOAT_RE})\s+Ry", + rf"total energy\s+=\s+({_FLOAT_RE})\s+Ry", + ], + ) + return [energy * RY_TO_EV for energy in energies_ry], "eV" + if software_lower == "gamess": + return _extract_regex_energies( + content, + [ + rf"^\s*TOTAL ENERGY\s*=\s*({_FLOAT_RE})", + rf"FINAL\s+\S+\s+ENERGY\s+IS\s+({_FLOAT_RE})", + ], + ), "hartree" + + gaussian_energies = _extract_gaussian_energies(content) + if gaussian_energies: + return gaussian_energies, "hartree" + + return _extract_regex_energies(content, [rf"converged to\s+({_FLOAT_RE})"]), "hartree" + + +def _extract_gaussian_energies(content: str) -> List[float]: + energies: List[float] = [] + for match in re.finditer(rf"SCF Done:\s+.*?=\s+({_FLOAT_RE})", content, re.IGNORECASE): + energies.append(_parse_float(match.group(1))) + if energies: + return energies + + return _extract_regex_energies(content, [rf"converged to\s+({_FLOAT_RE})"]) + + +def _extract_regex_energies(content: str, patterns: List[str]) -> List[float]: + energies: List[float] = [] + for pattern in patterns: + for match in re.finditer(pattern, content, re.IGNORECASE | re.MULTILINE): + try: + energies.append(_parse_float(match.group(1))) + except (IndexError, ValueError): + continue + if energies: + return energies + return energies + + +def _parse_float(value: str) -> float: + return float(value.replace("D", "E").replace("d", "e")) + + # --------------------------------------------------------------------------- # Main entry point # --------------------------------------------------------------------------- @@ -169,32 +414,24 @@ def main(): if not filepath: raise ValueError("Missing 'path' argument") software = args.get("software", "auto") - try: - result = _parse_with_cclib(filepath, software) - except ImportError: - # Fallback: read file and try native extraction - with open(filepath, "r") as f: - content = f.read() - result = _parse_output_native(content, software) - result["cclibAvailable"] = False + result = parse_output_file(filepath, software) write_response(result) elif command == "summarize": filepath = args.get("path") if not filepath: raise ValueError("Missing 'path' argument") - result = _parse_with_cclib(filepath, args.get("software")) - summary = { - "sourceFile": result.get("sourceFile"), - "software": result.get("software"), - "success": result.get("success"), - "finalEnergy": result.get("finalEnergy"), - "scfStepCount": len(result.get("scfEnergies", [])), - "optimizationConverged": result.get("optimization", {}).get("converged"), - "frequencyCount": len(result.get("frequencies", [])), - } + result = parse_output_file(filepath, args.get("software", "auto")) + summary = summarize_results(result) write_response(summary) + elif command == "trajectory": + filepath = args.get("path") + if not filepath: + raise ValueError("Missing 'path' argument") + result = _extract_trajectory_with_cclib(filepath, args.get("software")) + write_response(result) + else: write_error(f"Unknown command: {command}") diff --git a/python/openqc/bridge/structure_bridge.py b/python/openqc/bridge/structure_bridge.py index 9390dd9..4828fc3 100644 --- a/python/openqc/bridge/structure_bridge.py +++ b/python/openqc/bridge/structure_bridge.py @@ -11,6 +11,9 @@ import json import sys import os +import math +import re +from datetime import datetime, timezone from typing import Any, Dict, List, Optional, Tuple @@ -57,7 +60,7 @@ def _make_structure(atoms, cell=None, name=None, kind=None, source_format=None, "parser": "python-structure-bridge", }, "provenance": { - "createdAt": __import__("datetime").datetime.utcnow().isoformat() + "Z", + "createdAt": datetime.now(timezone.utc).isoformat().replace("+00:00", "Z"), "warnings": warnings or [], }, } @@ -184,6 +187,111 @@ def _parse_orca_input(content: str, filename: str = "") -> Dict[str, Any]: return _make_structure(atoms, name=filename, source_format="orca", source_software="orca") +def _parse_cp2k_input(content: str, filename: str = "") -> Dict[str, Any]: + """Parse CP2K input coordinates natively from &SUBSYS/&COORD blocks.""" + atoms = [] + cell_vectors: Dict[str, List[float]] = {} + coordinate_mode = "cartesian" + in_cell = False + in_coord = False + + for raw_line in content.splitlines(): + line = raw_line.split("#", 1)[0].split("!", 1)[0].strip() + upper = line.upper() + if not line: + continue + + if upper.startswith("&CELL"): + in_cell = True + continue + if in_cell and upper.startswith("&END"): + in_cell = False + continue + if upper.startswith("&COORD"): + in_coord = True + continue + if in_coord and upper.startswith("&END"): + in_coord = False + continue + + if in_cell: + parts = line.split() + key = parts[0].upper() + if key == "ABC" and len(parts) >= 4: + a, b, c = (float(parts[1]), float(parts[2]), float(parts[3])) + cell_vectors["a"] = [a, 0.0, 0.0] + cell_vectors["b"] = [0.0, b, 0.0] + cell_vectors["c"] = [0.0, 0.0, c] + elif key in ("A", "B", "C") and len(parts) >= 4: + cell_vectors[key.lower()] = [float(parts[1]), float(parts[2]), float(parts[3])] + continue + + if in_coord: + if upper in ("SCALED", "FRACTIONAL"): + coordinate_mode = "fractional" + continue + if upper.startswith("UNIT"): + continue + parts = line.split() + if len(parts) >= 4 and parts[0][0].isalpha(): + try: + atoms.append(_make_atom(parts[0], float(parts[1]), float(parts[2]), float(parts[3]))) + except ValueError: + continue + + cell = None + if all(key in cell_vectors for key in ("a", "b", "c")): + cell = _make_cell( + cell_vectors["a"], + cell_vectors["b"], + cell_vectors["c"], + coordinate_mode=coordinate_mode, + ) + + return _make_structure(atoms, cell=cell, name=filename, source_format="cp2k", source_software="cp2k") + + +def _parse_gamess_input(content: str, filename: str = "") -> Dict[str, Any]: + """Parse GAMESS input coordinates natively from the $DATA group.""" + atoms = [] + in_data = False + skipped_header_lines = 0 + + for raw_line in content.splitlines(): + stripped = raw_line.strip() + upper = stripped.upper() + if not stripped: + continue + if "$DATA" in upper: + in_data = True + skipped_header_lines = 0 + continue + if in_data and "$END" in upper: + break + if not in_data: + continue + if skipped_header_lines < 2: + skipped_header_lines += 1 + continue + + parts = stripped.split() + if len(parts) >= 5 and parts[0][0].isalpha() and _is_float(parts[1]): + try: + atoms.append(_make_atom(parts[0], float(parts[2]), float(parts[3]), float(parts[4]))) + except ValueError: + continue + + return _make_structure(atoms, name=filename, source_format="gamess", source_software="gamess") + + +def _is_float(value: str) -> bool: + try: + float(value) + return True + except ValueError: + return False + + # --------------------------------------------------------------------------- # ASE-based parsers (optional dependency) # --------------------------------------------------------------------------- @@ -268,26 +376,36 @@ def _generate_supercell(structure: Dict[str, Any], na: int, nb: int, nc: int) -> a = cell["a"] b = cell["b"] c = cell["c"] + coordinate_mode = cell.get("coordinateMode", "cartesian") for ia in range(na): for ib in range(nb): for ic in range(nc): for atom in base_atoms: - dx = ia * a[0] + ib * b[0] + ic * c[0] - dy = ia * a[1] + ib * b[1] + ic * c[1] - dz = ia * a[2] + ib * b[2] + ic * c[2] - super_atoms.append(_make_atom( - atom["element"], - atom["x"] + dx, - atom["y"] + dy, - atom["z"] + dz, - )) + if coordinate_mode == "fractional": + super_atoms.append(_make_atom( + atom["element"], + (atom["x"] + ia) / na, + (atom["y"] + ib) / nb, + (atom["z"] + ic) / nc, + )) + else: + dx = ia * a[0] + ib * b[0] + ic * c[0] + dy = ia * a[1] + ib * b[1] + ic * c[1] + dz = ia * a[2] + ib * b[2] + ic * c[2] + super_atoms.append(_make_atom( + atom["element"], + atom["x"] + dx, + atom["y"] + dy, + atom["z"] + dz, + )) super_cell = _make_cell( [a[0] * na, a[1] * na, a[2] * na], [b[0] * nb, b[1] * nb, b[2] * nb], [c[0] * nc, c[1] * nc, c[2] * nc], pbc=cell.get("pbc", [True, True, True]), + coordinate_mode=coordinate_mode, ) return _make_structure( @@ -297,11 +415,193 @@ def _generate_supercell(structure: Dict[str, Any], na: int, nb: int, nc: int) -> ) +# --------------------------------------------------------------------------- +# Native structure rendering +# --------------------------------------------------------------------------- + +def convert_structure(structure: Dict[str, Any], target_format: str) -> Dict[str, Any]: + """Convert an OpenQCStructure dict into a native text format.""" + fmt = _normalize_target_format(target_format) + if fmt == "openqc": + return { + "format": "openqc", + "structure": structure, + "atomCount": len(structure.get("atoms", [])), + } + + renderers = { + "xyz": _render_xyz, + "pdb": _render_pdb, + "poscar": _render_poscar, + "cif": _render_cif, + } + if fmt not in renderers: + raise ValueError( + "Unsupported native conversion target. Supported targets: xyz, pdb, poscar, vasp, cif, openqc" + ) + + return { + "format": fmt, + "content": renderers[fmt](structure), + "atomCount": len(structure.get("atoms", [])), + } + + +def _normalize_target_format(target_format: str) -> str: + fmt = (target_format or "xyz").strip().lower().lstrip(".") + aliases = { + "vasp": "poscar", + "contcar": "poscar", + "json": "openqc", + "openqcstructure": "openqc", + } + return aliases.get(fmt, fmt) + + +def _render_xyz(structure: Dict[str, Any]) -> str: + atoms = _cartesian_atoms(structure) + lines = [str(len(atoms)), structure.get("name") or "OpenQC export"] + lines.extend( + f"{atom['element']} {_coord(atom['x'])} {_coord(atom['y'])} {_coord(atom['z'])}" + for atom in atoms + ) + return "\n".join(lines) + "\n" + + +def _render_pdb(structure: Dict[str, Any]) -> str: + lines = [] + for idx, atom in enumerate(_cartesian_atoms(structure), start=1): + element = str(atom["element"])[:2].rjust(2) + lines.append( + "HETATM" + f"{idx:5d} {element.ljust(4)} MOL 1 " + f"{float(atom['x']):8.3f}{float(atom['y']):8.3f}{float(atom['z']):8.3f}" + f" 1.00 0.00 {element}" + ) + lines.append("END") + return "\n".join(lines) + "\n" + + +def _render_poscar(structure: Dict[str, Any]) -> str: + cell = structure.get("cell") + if not cell: + raise ValueError("POSCAR conversion requires a unit cell") + + grouped = _group_atoms_by_element(structure.get("atoms", [])) + coordinate_mode = cell.get("coordinateMode", "cartesian") + lines = [ + structure.get("name") or "OpenQC export", + "1.0", + _vector_line(cell["a"]), + _vector_line(cell["b"]), + _vector_line(cell["c"]), + " ".join(group["element"] for group in grouped), + " ".join(str(len(group["atoms"])) for group in grouped), + "Direct" if coordinate_mode == "fractional" else "Cartesian", + ] + + for group in grouped: + for atom in group["atoms"]: + lines.append(f"{_coord(atom['x'])} {_coord(atom['y'])} {_coord(atom['z'])}") + + return "\n".join(lines) + "\n" + + +def _render_cif(structure: Dict[str, Any]) -> str: + cell = structure.get("cell") + if not cell: + raise ValueError("CIF conversion requires a unit cell") + + a, b, c = cell["a"], cell["b"], cell["c"] + atoms = _cartesian_atoms(structure) + lines = [ + "data_openqc_export", + f"_cell_length_a {_coord(_norm(a))}", + f"_cell_length_b {_coord(_norm(b))}", + f"_cell_length_c {_coord(_norm(c))}", + f"_cell_angle_alpha {_coord(_angle_degrees(b, c))}", + f"_cell_angle_beta {_coord(_angle_degrees(a, c))}", + f"_cell_angle_gamma {_coord(_angle_degrees(a, b))}", + "loop_", + "_atom_site_label", + "_atom_site_type_symbol", + "_atom_site_Cartn_x", + "_atom_site_Cartn_y", + "_atom_site_Cartn_z", + ] + for idx, atom in enumerate(atoms, start=1): + label = f"{atom['element']}{idx}" + lines.append( + f"{label} {atom['element']} {_coord(atom['x'])} {_coord(atom['y'])} {_coord(atom['z'])}" + ) + return "\n".join(lines) + "\n" + + +def _cartesian_atoms(structure: Dict[str, Any]) -> List[Dict[str, Any]]: + atoms = structure.get("atoms", []) + cell = structure.get("cell") + if not cell or cell.get("coordinateMode") != "fractional": + return [dict(atom) for atom in atoms] + + return [ + { + **atom, + **dict(zip(("x", "y", "z"), _fractional_to_cartesian( + [atom["x"], atom["y"], atom["z"]], cell + ))), + } + for atom in atoms + ] + + +def _fractional_to_cartesian(frac: List[float], cell: Dict[str, Any]) -> List[float]: + u, v, w = frac + a, b, c = cell["a"], cell["b"], cell["c"] + return [ + u * a[0] + v * b[0] + w * c[0], + u * a[1] + v * b[1] + w * c[1], + u * a[2] + v * b[2] + w * c[2], + ] + + +def _group_atoms_by_element(atoms: List[Dict[str, Any]]) -> List[Dict[str, Any]]: + groups: List[Dict[str, Any]] = [] + index_by_element: Dict[str, int] = {} + for atom in atoms: + element = str(atom["element"]) + if element not in index_by_element: + index_by_element[element] = len(groups) + groups.append({"element": element, "atoms": []}) + groups[index_by_element[element]]["atoms"].append(atom) + return groups + + +def _vector_line(vector: List[float]) -> str: + return " ".join(_coord(value) for value in vector) + + +def _coord(value: float) -> str: + return f"{float(value):.6f}" if math.isfinite(float(value)) else "0.000000" + + +def _norm(vector: List[float]) -> float: + return math.sqrt(sum(float(value) ** 2 for value in vector)) + + +def _angle_degrees(a: List[float], b: List[float]) -> float: + denom = _norm(a) * _norm(b) + if denom == 0: + return 0.0 + cosine = sum(float(a[i]) * float(b[i]) for i in range(3)) / denom + cosine = min(1.0, max(-1.0, cosine)) + return math.degrees(math.acos(cosine)) + + # --------------------------------------------------------------------------- # Auto-detect format and parse # --------------------------------------------------------------------------- -def _detect_format(filepath: str) -> str: +def _detect_format(filepath: str, content: Optional[str] = None) -> str: """Detect file format from extension and name.""" basename = os.path.basename(filepath).upper() ext = os.path.splitext(filepath)[1].lower() @@ -315,17 +615,42 @@ def _detect_format(filepath: str) -> str: if ext in (".gjf", ".com"): return "gaussian" if ext == ".inp": - return "orca" # default for .inp + return _detect_inp_format(filepath, content) if basename.startswith("INCAR") or basename.startswith("KPOINTS"): return "vasp" return ext.strip(".") or "unknown" +def _detect_inp_format(filepath: str, content: Optional[str] = None) -> str: + """Disambiguate common quantum-chemistry .inp dialects by content.""" + if content is None: + try: + with open(filepath, "r") as handle: + content = handle.read(8192) + except OSError: + content = "" + + upper = content.upper() + if re.search(r"^\s*&(?:GLOBAL|FORCE_EVAL|SUBSYS|COORD)\b", upper, re.MULTILINE): + return "cp2k" + if re.search(r"^\s*\$(?:CONTRL|DATA|BASIS|SYSTEM|SCF)\b", upper, re.MULTILINE): + return "gamess" + return "orca" + + def parse_file(filepath: str, format_hint: str = None, content: str = None) -> Dict[str, Any]: """Parse a structure file into OpenQCStructure JSON.""" - fmt = format_hint or _detect_format(filepath) + normalized_hint = (format_hint or "").strip().lower() + fmt = _detect_format(filepath, content) if normalized_hint in ("", "auto") else normalized_hint name = os.path.basename(filepath) + if content is None and fmt in ("xyz", "poscar", "gaussian", "orca", "cp2k", "gamess"): + try: + with open(filepath, "r") as f: + content = f.read() + except OSError: + content = None + # Native parsers first (no dependency needed) if fmt == "xyz" and content: return _parse_xyz(content, name) @@ -335,23 +660,38 @@ def parse_file(filepath: str, format_hint: str = None, content: str = None) -> D return _parse_gaussian_input(content, name) if fmt == "orca" and content: return _parse_orca_input(content, name) + if fmt == "cp2k" and content: + return _parse_cp2k_input(content, name) + if fmt == "gamess" and content: + return _parse_gamess_input(content, name) - # Try pymatgen for CIF and other crystal formats - if fmt in ("cif",) or (not content): + parser_errors = [] + + # Try pymatgen first for CIF, where it is usually the best parser. + if fmt in ("cif",): try: return _parse_with_pymatgen(filepath, fmt) - except ImportError: - pass + except Exception as exc: + parser_errors.append(f"pymatgen: {exc}") # Try ASE as general fallback try: return _parse_with_ase(filepath, fmt) - except ImportError: - pass + except Exception as exc: + parser_errors.append(f"ASE: {exc}") + + # Try pymatgen after ASE for other file-backed formats. + if fmt not in ("cif",): + try: + return _parse_with_pymatgen(filepath, fmt) + except Exception as exc: + parser_errors.append(f"pymatgen: {exc}") + + details = f" Attempts: {'; '.join(parser_errors)}" if parser_errors else "" raise ValueError( f"Cannot parse format '{fmt}'. Install pymatgen or ASE for extended format support: " - "pip install pymatgen ase" + f"pip install pymatgen ase.{details}" ) @@ -394,10 +734,9 @@ def main(): fmt = args.get("format", "auto") if fmt == "auto": fmt = None - structure = parse_file(filepath, format_hint=fmt) - # For now, output as the structure JSON (conversion to specific formats - # can be added via ASE/pymatgen later) - write_response(structure) + content = args.get("content") + structure = parse_file(filepath, format_hint=fmt, content=content) + write_response(convert_structure(structure, target_format)) else: write_error(f"Unknown command: {command}") diff --git a/scripts/verify-vsix.mjs b/scripts/verify-vsix.mjs index 340f9bc..7063a65 100644 --- a/scripts/verify-vsix.mjs +++ b/scripts/verify-vsix.mjs @@ -46,9 +46,9 @@ if (forbiddenEntries.length > 0) { const requiredEntries = [ 'extension/out/extension.js', 'extension/python/format_converter.py', - 'extension/node_modules/3dmol/build/3Dmol-min.js', - 'extension/node_modules/ngl/dist/ngl.js', - 'extension/node_modules/plotly.js-dist-min/plotly.min.js', + 'extension/media/vendor/3dmol/3Dmol-min.js', + 'extension/media/vendor/ngl/ngl.js', + 'extension/media/vendor/plotly.js-dist-min/plotly.min.js', 'extension/node_modules/vscode-languageclient/lib/node/main.js', ]; const missingEntries = requiredEntries.filter(entry => !entries.includes(entry)); diff --git a/scripts/visual-smoke-openqc-viewer.mjs b/scripts/visual-smoke-openqc-viewer.mjs new file mode 100644 index 0000000..6d5ab54 --- /dev/null +++ b/scripts/visual-smoke-openqc-viewer.mjs @@ -0,0 +1,505 @@ +#!/usr/bin/env node + +import fs from 'fs'; +import { createRequire } from 'module'; +import path from 'path'; +import { pathToFileURL } from 'url'; +import { chromium } from 'playwright'; +import sharp from 'sharp'; + +const require = createRequire(import.meta.url); +const root = path.resolve(new URL('..', import.meta.url).pathname); +const { buildVisualSmokePaths, isVisualSmokeReadyMarker, parseVisualSmokeArgs } = require( + path.join(root, 'out', 'smoke', 'visualSmokePaths.js') +); +const options = parseVisualSmokeArgs(process.argv.slice(2), root); +const { extensionRoot, outputDir, outputPrefix } = options; +const { htmlPath, screenshotPath, narrowScreenshotPath, reportPath } = + buildVisualSmokePaths(options); + +fs.mkdirSync(outputDir, { recursive: true }); + +function requireProductionWebview(targetExtensionRoot) { + const webviewModulePath = path.join( + targetExtensionRoot, + 'out', + 'webviews', + 'openqcViewerWebview.js' + ); + if (!fs.existsSync(webviewModulePath)) { + throw new Error( + `Compiled webview generator not found in ${targetExtensionRoot}. Run \`npm run compile\` before \`npm run test:visual\`, or pass an extracted VSIX extension root.` + ); + } + + const moduleApi = require('module'); + const originalLoad = moduleApi._load; + const vscodeMock = { + Uri: { + joinPath(base, ...parts) { + const basePath = base.fsPath || base.path; + const fsPath = path.join(basePath, ...parts); + return { fsPath, path: fsPath }; + }, + }, + }; + + try { + moduleApi._load = function loadWithVscodeMock(request, parent, isMain) { + if (request === 'vscode') { + return vscodeMock; + } + return originalLoad.call(this, request, parent, isMain); + }; + return require(webviewModulePath).OpenQCViewerWebview; + } finally { + moduleApi._load = originalLoad; + } +} + +const OpenQCViewerWebview = requireProductionWebview(extensionRoot); +const productionHtml = OpenQCViewerWebview.generateHTML( + { + asWebviewUri(uri) { + return pathToFileURL(uri.fsPath || uri.path).href; + }, + }, + { fsPath: extensionRoot, path: extensionRoot } +); + +const nonce = productionHtml.match(/script-src 'nonce-([^']+)'/)?.[1]; +if (!nonce) { + throw new Error('Unable to extract CSP nonce from production OpenQC viewer HTML.'); +} + +const smokeStyle = ``; + +const bootstrapScript = ``; + +const driverScript = ``; + +const html = productionHtml + .replace('OpenQC Structure Viewer', 'OpenQC Viewer Visual Smoke') + .replace('', `${smokeStyle}\n${bootstrapScript}\n`) + .replace('', '\n
booting
') + .replace('', `${driverScript}\n`); + +fs.writeFileSync(htmlPath, html, 'utf8'); + +const screenshots = [ + { + name: 'desktop', + path: screenshotPath, + viewport: '1280,800', + minWidth: 1000, + minHeight: 700, + minBytes: 20000, + }, + { + name: 'narrow', + path: narrowScreenshotPath, + viewport: '430,780', + minWidth: 390, + minHeight: 700, + minBytes: 12000, + }, +]; + +async function captureAndInspect(browser, screenshot) { + const [width, height] = screenshot.viewport.split(',').map(Number); + const page = await browser.newPage({ viewport: { width, height } }); + const diagnostics = []; + page.on('console', message => diagnostics.push(`console.${message.type()}: ${message.text()}`)); + page.on('pageerror', error => diagnostics.push(`pageerror: ${error.message}`)); + page.on('requestfailed', request => { + diagnostics.push( + `requestfailed: ${request.url()} (${request.failure()?.errorText || 'unknown error'})` + ); + }); + page.setDefaultTimeout(20_000); + try { + await page.goto(pathToFileURL(htmlPath).href, { waitUntil: 'load', timeout: 20_000 }); + try { + await page.waitForFunction(() => { + const state = document.getElementById('visual-smoke-ready')?.dataset.state; + return state === 'ready' || state === 'error'; + }); + } catch (error) { + const state = await page.locator('#visual-smoke-ready').evaluate(element => ({ + state: element.dataset.state, + text: element.textContent, + })); + if (!isVisualSmokeReadyMarker(state)) { + throw new Error( + `Viewer smoke timed out in state ${state.state || 'missing'} (${state.text || 'no status'}). ${diagnostics.join(' | ') || 'No browser diagnostics were emitted.'}`, + { cause: error } + ); + } + } + const marker = await page.locator('#visual-smoke-ready').evaluate(element => ({ + state: element.dataset.state, + text: element.textContent, + })); + if (marker.state !== 'ready') { + throw new Error(`Viewer smoke reported an error: ${marker.text || 'unknown error'}`); + } + await page.waitForTimeout(500); + await page.screenshot({ path: screenshot.path }); + } finally { + await page.close(); + } + + const image = sharp(screenshot.path).removeAlpha(); + const { data, info } = await image.raw().toBuffer({ resolveWithObject: true }); + const uniqueSamples = new Set(); + for ( + let offset = 0; + offset < data.length; + offset += Math.max(3, Math.floor(data.length / 6000)) + ) { + const aligned = offset - (offset % 3); + uniqueSamples.add(`${data[aligned]},${data[aligned + 1]},${data[aligned + 2]}`); + } + + const entry = { + name: screenshot.name, + screenshotPath: screenshot.path, + viewport: screenshot.viewport, + width: info.width, + height: info.height, + channels: info.channels, + uniqueSampleCount: uniqueSamples.size, + bytes: fs.statSync(screenshot.path).size, + }; + + if (info.width < screenshot.minWidth || info.height < screenshot.minHeight) { + throw new Error( + `${screenshot.name} screenshot dimensions are too small: ${info.width}x${info.height}` + ); + } + + if (entry.bytes < screenshot.minBytes || uniqueSamples.size < 16) { + throw new Error( + `${screenshot.name} screenshot appears blank or under-rendered: ${entry.bytes} bytes, ${uniqueSamples.size} sampled colors` + ); + } + + return entry; +} + +const screenshotReports = []; +const browser = await chromium.launch({ headless: true, timeout: 20_000 }); +try { + for (const screenshot of screenshots) { + screenshotReports.push(await captureAndInspect(browser, screenshot)); + } +} finally { + await browser.close(); +} + +const report = { + extensionRoot, + htmlPath, + outputPrefix, + screenshotPath, + screenshots: screenshotReports, +}; + +fs.writeFileSync(reportPath, `${JSON.stringify(report, null, 2)}\n`, 'utf8'); + +console.log(`OpenQC viewer visual smoke passed (${outputPrefix}): ${screenshotPath}`); +console.log(`OpenQC viewer narrow smoke passed (${outputPrefix}): ${narrowScreenshotPath}`); +console.log(`Visual smoke report: ${reportPath}`); diff --git a/scripts/visual-smoke-vsix.mjs b/scripts/visual-smoke-vsix.mjs new file mode 100644 index 0000000..a179b5b --- /dev/null +++ b/scripts/visual-smoke-vsix.mjs @@ -0,0 +1,59 @@ +#!/usr/bin/env node + +import { spawnSync } from 'child_process'; +import fs from 'fs'; +import path from 'path'; + +const root = path.resolve(new URL('..', import.meta.url).pathname); +const packageJson = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8')); +const defaultVsix = path.join(root, 'vsix', `${packageJson.name}-${packageJson.version}.vsix`); +const vsixPath = path.resolve(process.argv[2] || defaultVsix); +const extractRoot = path.join(root, 'output', 'playwright', 'vsix-visual-smoke'); +const extensionRoot = path.join(extractRoot, 'extension'); + +if (!fs.existsSync(vsixPath)) { + throw new Error(`VSIX not found: ${vsixPath}. Run \`npm run package:vsix\` first.`); +} + +fs.rmSync(extractRoot, { recursive: true, force: true }); +fs.mkdirSync(extractRoot, { recursive: true }); + +const unzip = spawnSync('unzip', ['-q', vsixPath, '-d', extractRoot], { + cwd: root, + encoding: 'utf8', +}); + +if (unzip.status !== 0) { + process.stderr.write(unzip.stdout || ''); + process.stderr.write(unzip.stderr || ''); + throw new Error(`Failed to extract VSIX for visual smoke: ${vsixPath}`); +} + +const requiredFiles = [ + path.join(extensionRoot, 'out', 'webviews', 'openqcViewerWebview.js'), + path.join(extensionRoot, 'media', 'openqc-viewer.js'), + path.join(extensionRoot, 'media', 'openqc-viewer.css'), + path.join(extensionRoot, 'media', 'vendor', '3dmol', '3Dmol-min.js'), +]; + +for (const file of requiredFiles) { + if (!fs.existsSync(file)) { + throw new Error(`Extracted VSIX is missing required visual runtime file: ${file}`); + } +} + +const smoke = spawnSync( + process.execPath, + [ + path.join(root, 'scripts', 'visual-smoke-openqc-viewer.mjs'), + '--extension-root', + extensionRoot, + '--output-prefix', + 'openqc-viewer-vsix-smoke', + ], + { cwd: root, encoding: 'utf8', stdio: 'inherit' } +); + +if (smoke.status !== 0) { + throw new Error(`Packaged VSIX visual smoke failed for ${vsixPath}`); +} diff --git a/src/analyzers/ExternalAnalyzer.ts b/src/analyzers/ExternalAnalyzer.ts index 0928755..1821257 100644 --- a/src/analyzers/ExternalAnalyzer.ts +++ b/src/analyzers/ExternalAnalyzer.ts @@ -1,5 +1,5 @@ /** - * External analyzer adapter framework for Multiwfn and c2x. + * External analyzer adapter framework for Multiwfn, c2x, and Open Babel. * * Safety model: * - External analyzers are disabled by default. @@ -12,6 +12,9 @@ import * as vscode from 'vscode'; import { execFile } from 'child_process'; +import { constants } from 'fs'; +import { access } from 'fs/promises'; +import * as path from 'path'; import { Logger } from '../utils/Logger'; const logger = Logger.getInstance(); @@ -40,6 +43,13 @@ export interface AnalyzerCommand { args: string[]; cwd: string; description: string; + stdin?: string; + expectedOutputPath?: string; +} + +export interface PathLookupCommand { + executable: string; + args: string[]; } // --------------------------------------------------------------------------- @@ -62,6 +72,14 @@ export const C2X_CONFIG: AnalyzerConfig = { description: 'CASTEP density/checkpoint conversion to cube, XSF, and structure formats', }; +export const OPENBABEL_CONFIG: AnalyzerConfig = { + id: 'openbabel', + displayName: 'Open Babel', + settingKey: 'openqc.external.openBabelPath', + defaultCommand: 'obabel', + description: 'Structure and molecule format conversion via the Open Babel CLI', +}; + // --------------------------------------------------------------------------- // Status check // --------------------------------------------------------------------------- @@ -73,8 +91,7 @@ export async function checkAnalyzer(config: AnalyzerConfig): Promise { - execFile('which', [config.defaultCommand], (error, stdout) => { + execFile(lookup.executable, lookup.args, (error, stdout) => { if (error) { resolve({ id: config.id, available: false, path: null, enabled }); } else { + const resolvedPath = firstResolvedPath(stdout); resolve({ id: config.id, - available: true, - path: stdout.trim() || null, + available: Boolean(resolvedPath), + path: resolvedPath, enabled, }); } @@ -98,6 +117,25 @@ export async function checkAnalyzer(config: AnalyzerConfig): Promise line.trim()) + .filter(Boolean)[0] ?? null + ); +} + // --------------------------------------------------------------------------- // Command preview and execution // --------------------------------------------------------------------------- @@ -112,6 +150,8 @@ export function generateMultiwfnScript( executable: config.defaultCommand, args: [inputFile], cwd: '', + stdin: generateMultiwfnStdin(operation, outputFile), + expectedOutputPath: outputFile, description: `Multiwfn: ${operation} on ${inputFile} → ${outputFile}`, }; } @@ -125,14 +165,26 @@ export function generateC2xCommand( executable: 'c2x', args: [inputFile, outputFile], cwd: '', + expectedOutputPath: outputFile, description: `c2x: ${operation} ${inputFile} → ${outputFile}`, }; } +export function generateOpenBabelCommand(inputFile: string, outputFile: string): AnalyzerCommand { + return { + executable: 'obabel', + args: [inputFile, '-O', outputFile], + cwd: '', + expectedOutputPath: outputFile, + description: `Open Babel: convert ${inputFile} → ${outputFile}`, + }; +} + export async function previewCommand(command: AnalyzerCommand): Promise { const detail = `Command: ${command.executable} ${command.args.join(' ')}\n` + `Working directory: ${command.cwd || '(current)'}\n` + + (command.stdin ? `Standard input:\n${command.stdin}\n` : '') + `Description: ${command.description}`; const result = await vscode.window.showWarningMessage( @@ -150,11 +202,11 @@ export async function executeAnalyzer( timeoutMs: number = 60000 ): Promise<{ success: boolean; stdout: string; stderr: string; exitCode: number | null }> { return new Promise(resolve => { - execFile( + const child = execFile( command.executable, command.args, { timeout: timeoutMs, cwd: command.cwd || undefined }, - (error, stdout, stderr) => { + async (error, stdout, stderr) => { if (error) { resolve({ success: false, @@ -163,9 +215,50 @@ export async function executeAnalyzer( exitCode: typeof error.code === 'number' ? error.code : null, }); } else { + if (command.expectedOutputPath) { + const expectedOutputPath = path.isAbsolute(command.expectedOutputPath) + ? command.expectedOutputPath + : path.join(command.cwd || process.cwd(), command.expectedOutputPath); + try { + await access(expectedOutputPath); + } catch { + resolve({ + success: false, + stdout, + stderr: stderr || `Expected analyzer output was not created: ${expectedOutputPath}`, + exitCode: 0, + }); + return; + } + } resolve({ success: true, stdout, stderr: stderr || '', exitCode: 0 }); } } ); + if (command.stdin && child.stdin) { + child.stdin.write(command.stdin); + child.stdin.end(); + } }); } + +function generateMultiwfnStdin(operation: string, outputFile: string): string { + const normalized = operation.toLowerCase(); + if (normalized.includes('population')) { + return ['7', '1', '0', 'q'].join('\n') + '\n'; + } + + if (normalized.includes('orbital')) { + return ['200', '3', outputFile, '0', 'q'].join('\n') + '\n'; + } + + if (normalized.includes('electrostatic')) { + return ['5', '12', '2', outputFile, '0', 'q'].join('\n') + '\n'; + } + + if (normalized.includes('elf')) { + return ['5', '9', '2', outputFile, '0', 'q'].join('\n') + '\n'; + } + + return ['5', '1', '2', outputFile, '0', 'q'].join('\n') + '\n'; +} diff --git a/src/ase/ASECalculator.ts b/src/ase/ASECalculator.ts index a465306..24a9f77 100644 --- a/src/ase/ASECalculator.ts +++ b/src/ase/ASECalculator.ts @@ -97,52 +97,43 @@ export class ASECalculator { * Generate input files for a calculation */ public async generateInput(atoms: ASEAtoms, outputDir: string): Promise { - const args = [ + const inputData = this.buildCalculatorInput(atoms, outputDir); + const result = await this.executeCalculator>([ 'generate', - this.config.type, - JSON.stringify(atoms), - outputDir, - JSON.stringify(this.config.parameters), - ]; - - if (this.config.pseudopotentials) { - args.push('--pseudos', JSON.stringify(this.config.pseudopotentials)); - } + JSON.stringify(inputData), + ]); - if (this.config.basisSets) { - args.push('--basis', JSON.stringify(this.config.basisSets)); - } - - return this.executeCalculator(args); + return this.normalizeInputGenerationResult(result, outputDir); } /** * Run a calculation */ - public async runCalculation(inputDir: string, outputDir?: string): Promise { - const args = ['run', this.config.type, inputDir]; - - if (outputDir) { - args.push('--output-dir', outputDir); - } - - if (this.config.command) { - args.push('--command', this.config.command); - } - - if (this.config.environment) { - args.push('--env', JSON.stringify(this.config.environment)); - } + public async runCalculation( + inputDir: string, + outputDir?: string, + signal?: AbortSignal + ): Promise { + const workDir = outputDir || inputDir; + const config = this.buildExecutionConfig(); + const result = await this.executeCalculator>( + ['run-existing', this.config.type, workDir, JSON.stringify(config)], + signal + ); - return this.executeCalculator(args); + return this.normalizeCalculationResult(result); } /** * Read calculation results */ public async readResults(outputDir: string): Promise { - const args = ['read', this.config.type, outputDir]; - return this.executeCalculator(args); + const result = await this.executeCalculator>([ + 'read', + outputDir, + this.config.type, + ]); + return this.normalizeCalculationResult(result); } /** @@ -179,13 +170,47 @@ export class ASECalculator { /** * Execute Python calculator script */ - private async executeCalculator(args: string[]): Promise { + private async executeCalculator(args: string[], signal?: AbortSignal): Promise { return new Promise(resolve => { const process = spawn(this.pythonPath, [this.calculatorScript, ...args]); + let settled = false; let stdout = ''; let stderr = ''; + const finish = (result: T): void => { + if (settled) { + return; + } + settled = true; + resolve(result); + }; + + const cancelledResult = (): T => + ({ + success: false, + error: 'Calculation cancelled by user', + warnings: ['Calculation cancelled by user'], + outputFiles: [], + metadata: { cancelled: true }, + }) as unknown as T; + + if (signal?.aborted) { + if (typeof process.kill === 'function') { + process.kill('SIGTERM'); + } + finish(cancelledResult()); + return; + } + + const abortHandler = (): void => { + if (typeof process.kill === 'function') { + process.kill('SIGTERM'); + } + finish(cancelledResult()); + }; + signal?.addEventListener('abort', abortHandler, { once: true }); + process.stdout.on('data', data => { stdout += data.toString(); }); @@ -195,8 +220,13 @@ export class ASECalculator { }); process.on('close', code => { + signal?.removeEventListener('abort', abortHandler); + if (signal?.aborted) { + finish(cancelledResult()); + return; + } if (code !== 0) { - resolve({ + finish({ success: false, error: `Calculator failed with code ${code}: ${stderr}`, warnings: [], @@ -208,9 +238,9 @@ export class ASECalculator { try { const result = JSON.parse(stdout) as T; - resolve(result); + finish(result); } catch (error) { - resolve({ + finish({ success: false, error: `Failed to parse calculator output: ${error}`, warnings: [], @@ -221,7 +251,12 @@ export class ASECalculator { }); process.on('error', error => { - resolve({ + signal?.removeEventListener('abort', abortHandler); + if (signal?.aborted) { + finish(cancelledResult()); + return; + } + finish({ success: false, error: `Failed to execute calculator: ${error.message}`, warnings: [], @@ -326,6 +361,100 @@ export class ASECalculator { public getConfig(): CalculatorConfig { return { ...this.config }; } + + private buildCalculatorInput(atoms: ASEAtoms, workDir: string): Record { + const input: Record = { + atoms, + calculator: this.config.type, + parameters: this.config.parameters, + work_dir: workDir, + }; + + if (this.config.pseudopotentials) { + input.pseudopotentials = this.config.pseudopotentials; + } + + return input; + } + + private buildExecutionConfig(): Record { + const executable = this.config.command?.split(/\s+/)[0] || this.getDefaultCommand(); + const config: Record = { + executable, + }; + + if (this.config.command) { + config.command = this.config.command; + } + + if (this.config.environment) { + config.environment = this.config.environment; + } + + return config; + } + + private getDefaultCommand(): string { + switch (this.config.type) { + case CalculatorType.VASP: + return 'vasp'; + case CalculatorType.CP2K: + return 'cp2k.popt'; + case CalculatorType.QE: + return 'pw.x'; + default: + return this.config.type; + } + } + + private normalizeInputGenerationResult( + result: Record, + outputDir: string + ): InputGenerationResult { + if (!result.success) { + return { + success: false, + files: {}, + error: result.error, + warnings: result.warnings ?? [], + }; + } + + const rawFiles = result.files ?? result.input_files ?? []; + const files: Record = {}; + if (Array.isArray(rawFiles)) { + for (const file of rawFiles) { + const filePath = path.isAbsolute(file) ? file : path.join(outputDir, file); + files[path.basename(file)] = filePath; + } + } else if (rawFiles && typeof rawFiles === 'object') { + for (const [name, file] of Object.entries(rawFiles)) { + if (typeof file === 'string') { + files[name] = path.isAbsolute(file) ? file : path.join(outputDir, file); + } + } + } + + return { + success: true, + files, + warnings: result.warnings ?? [], + }; + } + + private normalizeCalculationResult(result: Record): CalculationResult { + return { + success: !!result.success, + energy: result.energy, + forces: result.forces, + stress: result.stress, + atoms: result.atoms, + error: result.error, + warnings: result.warnings ?? [], + metadata: result.metadata ?? {}, + outputFiles: result.outputFiles ?? result.output_files ?? [], + }; + } } /** diff --git a/src/ase/calculatorCommands.ts b/src/ase/calculatorCommands.ts index 3f595f6..fea690c 100644 --- a/src/ase/calculatorCommands.ts +++ b/src/ase/calculatorCommands.ts @@ -16,18 +16,26 @@ import { getCalculatorConfiguration, } from './ASECalculator'; import { ASEConverter, ASEAtoms } from './ASEConverter'; +import { parseOutput } from '../results/OutputParserBridge'; +import type { OpenQCResults } from '../results/OpenQCResults'; + +type OutputCandidate = { + filePath: string; + software: string; +}; /** * Register calculator commands */ export function registerCalculatorCommands(context: vscode.ExtensionContext): void { const factory = new CalculatorFactory(context); + const converter = new ASEConverter(context); // Command: Generate calculator input context.subscriptions.push( vscode.commands.registerCommand( 'openqc.generateCalculatorInput', - async () => await generateCalculatorInput(factory) + async () => await generateCalculatorInput(factory, converter) ) ); @@ -41,14 +49,14 @@ export function registerCalculatorCommands(context: vscode.ExtensionContext): vo // Command: Read calculation results context.subscriptions.push( - vscode.commands.registerCommand('openqc.readResults', async () => await readResults()) + vscode.commands.registerCommand('openqc.readResults', async () => await readResults(factory)) ); // Command: Quick VASP calculation context.subscriptions.push( vscode.commands.registerCommand( 'openqc.quickVASP', - async () => await quickCalculation(factory, CalculatorType.VASP) + async () => await quickCalculation(factory, converter, CalculatorType.VASP) ) ); @@ -56,7 +64,7 @@ export function registerCalculatorCommands(context: vscode.ExtensionContext): vo context.subscriptions.push( vscode.commands.registerCommand( 'openqc.quickCP2K', - async () => await quickCalculation(factory, CalculatorType.CP2K) + async () => await quickCalculation(factory, converter, CalculatorType.CP2K) ) ); @@ -64,7 +72,7 @@ export function registerCalculatorCommands(context: vscode.ExtensionContext): vo context.subscriptions.push( vscode.commands.registerCommand( 'openqc.quickQE', - async () => await quickCalculation(factory, CalculatorType.QE) + async () => await quickCalculation(factory, converter, CalculatorType.QE) ) ); @@ -80,7 +88,10 @@ export function registerCalculatorCommands(context: vscode.ExtensionContext): vo /** * Generate input files for a calculator */ -async function generateCalculatorInput(factory: CalculatorFactory): Promise { +async function generateCalculatorInput( + factory: CalculatorFactory, + converter: ASEConverter +): Promise { const editor = vscode.window.activeTextEditor; if (!editor) { vscode.window.showErrorMessage('No active editor'); @@ -121,6 +132,9 @@ async function generateCalculatorInput(factory: CalculatorFactory): Promise { progress.report({ message: 'Reading structure...' }); - // Read structure from current file - const converter = new ASEConverter( - vscode.extensions.getExtension('newtontech.openqc')!.exports.context - ); const filepath = editor.document.uri.fsPath; const readResult = await converter.readToAtoms(filepath); @@ -205,6 +215,12 @@ async function runCalculation(factory: CalculatorFactory): Promise { } const calculator = factory.createCalculator(config); + if (!(await ensureBackendAvailable(calculator))) { + return; + } + if (!(await ensureCalculatorExecutableAvailable(calculator, calculatorType))) { + return; + } // Run calculation await vscode.window.withProgress( @@ -234,7 +250,7 @@ async function runCalculation(factory: CalculatorFactory): Promise { /** * Read calculation results */ -async function readResults(): Promise { +async function readResults(factory: CalculatorFactory): Promise { // Select output directory const outputDir = await vscode.window.showInputBox({ prompt: 'Enter output directory containing calculation results', @@ -253,26 +269,26 @@ async function readResults(): Promise { return; } - // Select calculator type - const calculatorType = await selectCalculatorType(); - if (!calculatorType) { + const outputCandidate = findCalculationOutputCandidate(outputDir); + if (outputCandidate) { + await parseDetectedCalculationOutput(outputCandidate); return; } - // Create temporary calculator to read results - const extension = vscode.extensions.getExtension('newtontech.openqc'); - if (!extension) { - vscode.window.showErrorMessage('OpenQC extension not found'); + // Select calculator type + const calculatorType = await selectCalculatorType(); + if (!calculatorType) { return; } - const { CalculatorFactory } = await import('./ASECalculator'); - const factory = new CalculatorFactory(extension.exports.context); const config: CalculatorConfig = { type: calculatorType, parameters: {}, }; const calculator = factory.createCalculator(config); + if (!(await ensureBackendAvailable(calculator))) { + return; + } // Read results await vscode.window.withProgress( @@ -298,11 +314,45 @@ async function readResults(): Promise { ); } +async function parseDetectedCalculationOutput(candidate: OutputCandidate): Promise { + await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + title: `Reading ${candidate.software.toUpperCase()} results`, + cancellable: false, + }, + async progress => { + progress.report({ message: `Parsing ${path.basename(candidate.filePath)}...` }); + + const result = await parseOutput(candidate.filePath, candidate.software); + + if (!result.success || !result.data) { + vscode.window.showErrorMessage( + `Failed to parse calculation output: ${result.error || 'No result data returned'}` + ); + return; + } + + if (result.data.success === false) { + const warning = + result.data.warnings?.[0] || + result.data.errors?.[0] || + 'No calculation output data could be extracted from this file.'; + vscode.window.showWarningMessage(warning); + return; + } + + displayOpenQCResults(result.data); + } + ); +} + /** * Quick calculation from current file */ async function quickCalculation( factory: CalculatorFactory, + converter: ASEConverter, calculatorType: CalculatorType ): Promise { const editor = vscode.window.activeTextEditor; @@ -342,6 +392,12 @@ async function quickCalculation( } const calculator = factory.createCalculator(config); + if (!(await ensureBackendAvailable(calculator))) { + return; + } + if (!(await ensureCalculatorExecutableAvailable(calculator, calculatorType))) { + return; + } // Run calculation await vscode.window.withProgress( @@ -353,10 +409,6 @@ async function quickCalculation( async progress => { progress.report({ message: 'Reading structure...' }); - // Read structure - const converter = new ASEConverter( - vscode.extensions.getExtension('newtontech.openqc')!.exports.context - ); const readResult = await converter.readToAtoms(filepath); if (!readResult.success || !readResult.atoms) { @@ -400,8 +452,8 @@ async function checkCalculators(factory: CalculatorFactory): Promise { const calcAvailable = await calculator.isCalculatorAvailable(); results.push( - `${type.toUpperCase()}: Backend ${backendAvailable ? '✓' : '✗'}, Calculator ${ - calcAvailable ? '✓' : '✗' + `${type.toUpperCase()}: Backend ${backendAvailable ? 'available' : 'missing'}, Calculator ${ + calcAvailable ? 'available' : 'missing' }` ); } @@ -409,6 +461,33 @@ async function checkCalculators(factory: CalculatorFactory): Promise { vscode.window.showInformationMessage(`Calculator Status: ${results.join(', ')}`, { modal: true }); } +async function ensureBackendAvailable(calculator: ASECalculator): Promise { + const backendAvailable = await calculator.isAvailable(); + if (!backendAvailable) { + vscode.window.showWarningMessage( + 'ASE Python backend is unavailable. Install ASE in the configured Python environment or update openqc.pythonPath before using calculator commands.' + ); + return false; + } + + return true; +} + +async function ensureCalculatorExecutableAvailable( + calculator: ASECalculator, + calculatorType: CalculatorType +): Promise { + const executableAvailable = await calculator.isCalculatorAvailable(); + if (!executableAvailable) { + vscode.window.showWarningMessage( + `${calculatorType.toUpperCase()} executable is unavailable. Install the calculator or configure its command before running calculations.` + ); + return false; + } + + return true; +} + /** * Select calculator type */ @@ -430,6 +509,90 @@ async function selectCalculatorType(): Promise { return selected?.type; } +function findCalculationOutputCandidate(outputDir: string): OutputCandidate | undefined { + let entries: string[]; + try { + entries = fs.readdirSync(outputDir); + } catch { + return undefined; + } + + const files = entries + .map(entry => path.join(outputDir, entry)) + .filter(filePath => { + try { + return fs.statSync(filePath).isFile(); + } catch { + return false; + } + }); + + return findOutputByName(files) || findOutputByContent(files); +} + +function findOutputByName(files: string[]): OutputCandidate | undefined { + const patterns: Array<{ software: string; pattern: RegExp; priority: number }> = [ + { software: 'orca', pattern: /^ORCA.*\.out$/i, priority: 10 }, + { software: 'gaussian', pattern: /^Gaussian.*\.log$/i, priority: 20 }, + { software: 'gamess', pattern: /^GAMESS.*\.(?:log|dat)$/i, priority: 30 }, + { software: 'qe', pattern: /^(?:pw|ph|cppp)\.out$/i, priority: 40 }, + { software: 'cp2k', pattern: /^cp2k.*\.log$/i, priority: 50 }, + { software: 'cp2k', pattern: /^.*\.ener$/i, priority: 55 }, + ]; + + for (const { software, pattern } of patterns.sort((a, b) => a.priority - b.priority)) { + const match = files.find(filePath => pattern.test(path.basename(filePath))); + if (match) { + return { filePath: match, software }; + } + } + + return undefined; +} + +function findOutputByContent(files: string[]): OutputCandidate | undefined { + for (const filePath of files) { + const sample = readOutputSample(filePath); + if (!sample) { + continue; + } + + const software = detectOutputSoftware(sample); + if (software) { + return { filePath, software }; + } + } + + return undefined; +} + +function readOutputSample(filePath: string): string | undefined { + try { + const fd = fs.openSync(filePath, 'r'); + try { + const buffer = Buffer.alloc(1024 * 1024); + const bytesRead = fs.readSync(fd, buffer, 0, buffer.length, 0); + return buffer.toString('utf8', 0, bytesRead); + } finally { + fs.closeSync(fd); + } + } catch { + return undefined; + } +} + +function detectOutputSoftware(content: string): string | undefined { + const signatures: Array<{ software: string; pattern: RegExp }> = [ + { software: 'gaussian', pattern: /Entering Gaussian System|SCF Done:/i }, + { software: 'orca', pattern: /^\s*\* O\s+R\s+C\s+A \*|FINAL SINGLE POINT ENERGY/im }, + { software: 'cp2k', pattern: /^CP2K\||^ENERGY\|/im }, + { software: 'qe', pattern: /Program PWSCF|!\s+total energy\s+=/i }, + { software: 'gamess', pattern: /GAMESS VERSION|^\s*TOTAL ENERGY\s*=/im }, + ]; + + return signatures.find(signature => signature.pattern.test(content))?.software; +} + /** * Configure calculator parameters */ @@ -461,11 +624,46 @@ async function configureCalculator( return defaults; } - // TODO: Implement parameter customization UI - // For now, return defaults - vscode.window.showInformationMessage('Using default parameters (customization coming soon)'); + const parameterJson = await vscode.window.showInputBox({ + prompt: `Enter ${calculatorType.toUpperCase()} parameters as JSON`, + value: JSON.stringify(defaults.parameters, null, 2), + validateInput: value => { + try { + const parsed = JSON.parse(value || '{}'); + if (!parsed || Array.isArray(parsed) || typeof parsed !== 'object') { + return 'Calculator parameters must be a JSON object'; + } + return null; + } catch (error) { + return `Invalid calculator parameter JSON: ${ + error instanceof Error ? error.message : String(error) + }`; + } + }, + }); - return defaults; + if (parameterJson === undefined) { + return undefined; + } + + let parsedParameters: Record; + try { + const parsed = JSON.parse(parameterJson || '{}'); + if (!parsed || Array.isArray(parsed) || typeof parsed !== 'object') { + throw new Error('Calculator parameters must be a JSON object'); + } + parsedParameters = parsed; + } catch (error) { + vscode.window.showErrorMessage( + `Invalid calculator parameter JSON: ${error instanceof Error ? error.message : String(error)}` + ); + return undefined; + } + + return { + ...defaults, + parameters: parsedParameters, + }; } /** @@ -517,6 +715,36 @@ function displayCalculationResults(result: { .then(doc => vscode.window.showTextDocument(doc)); } +function displayOpenQCResults(result: OpenQCResults): void { + const messages: string[] = []; + const software = result.software ? result.software.toUpperCase() : 'CALCULATION'; + + if (result.finalEnergy) { + messages.push( + `${software} energy: ${result.finalEnergy.value.toFixed(6)} ${result.finalEnergy.unit}` + ); + } + + if (result.scfEnergies?.length) { + messages.push(`SCF steps: ${result.scfEnergies.length}`); + } + + if (result.warnings?.length) { + messages.push(`Warnings: ${result.warnings.length}`); + } + + vscode.window.showInformationMessage( + messages.length > 0 ? messages.join(', ') : `Parsed ${software} results` + ); + + vscode.workspace + .openTextDocument({ + content: JSON.stringify(result, null, 2), + language: 'json', + }) + .then(doc => vscode.window.showTextDocument(doc)); +} + /** * Format calculation results for display */ diff --git a/src/ase/commands.ts b/src/ase/commands.ts index b370335..6b35145 100644 --- a/src/ase/commands.ts +++ b/src/ase/commands.ts @@ -5,7 +5,24 @@ */ import * as vscode from 'vscode'; -import { ASEConverter, ASEFormat, ConversionResult } from './ASEConverter'; +import { ASEConverter, ASEFormat, type ASEAtoms, type ConversionResult } from './ASEConverter'; + +interface AtomsExtraction { + atoms?: ASEAtoms; + source?: string; + error?: string; +} + +type ValidationResult = { value: T } | { error: string }; + +const ELEMENT_SYMBOLS = [ + '', + ...'H He Li Be B C N O F Ne Na Mg Al Si P S Cl Ar K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe Cs Ba La Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn Fr Ra Ac Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr Rf Db Sg Bh Hs Mt Ds Rg Cn Nh Fl Mc Lv Ts Og'.split( + ' ' + ), +]; + +const ELEMENT_SYMBOL_SET: ReadonlySet = new Set(ELEMENT_SYMBOLS.slice(1)); /** * Register ASE commands @@ -41,7 +58,7 @@ export function registerASECommands(context: vscode.ExtensionContext): void { context.subscriptions.push( vscode.commands.registerCommand( 'openqc.quickConvert', - async () => await quickConvert(converter) + async (from?: string, to?: string) => await quickConvert(converter, from, to) ) ); } @@ -101,8 +118,28 @@ async function convertToASE(converter: ASEConverter): Promise { * Convert ASE Atoms to target format */ async function convertFromASE(converter: ASEConverter): Promise { - // This would typically be called after convertToASE - // For now, show a quick pick of available formats + const editor = vscode.window.activeTextEditor; + if (!editor) { + vscode.window.showErrorMessage('No active editor with ASE Atoms JSON'); + return; + } + + let atoms: any; + try { + const parsed = JSON.parse(editor.document.getText()); + const extracted = extractASEAtoms(parsed); + if (!extracted.atoms) { + vscode.window.showErrorMessage( + `Current JSON does not contain usable ASE Atoms data: ${extracted.error}` + ); + return; + } + atoms = extracted.atoms; + } catch (error) { + vscode.window.showErrorMessage(`Current document is not valid ASE Atoms JSON: ${error}`); + return; + } + const formats = converter.getSupportedFormats(); const items = Object.entries(formats).map(([key, value]) => ({ label: value.name, @@ -135,8 +172,23 @@ async function convertFromASE(converter: ASEConverter): Promise { return; } - vscode.window.showInformationMessage( - `Converting to ${selected.format}... (Feature coming soon - need atoms data)` + await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + title: `Writing ${selected.format} from ASE Atoms`, + cancellable: false, + }, + async () => { + const result = await converter.writeFromAtoms(atoms, outputPath, selected.format); + if (!result.success) { + vscode.window.showErrorMessage(`Conversion failed: ${result.error}`); + return; + } + + const doc = await vscode.workspace.openTextDocument(outputPath); + await vscode.window.showTextDocument(doc); + vscode.window.showInformationMessage(`Successfully wrote ${outputPath}`); + } ); } @@ -228,7 +280,11 @@ async function migrateFormat(converter: ASEConverter): Promise { /** * Quick convert with common presets */ -async function quickConvert(converter: ASEConverter): Promise { +async function quickConvert( + converter: ASEConverter, + fromFormat?: string, + toFormat?: string +): Promise { const presets = [ { label: 'VASP → CP2K', input: ASEFormat.VASP, output: ASEFormat.CP2K }, { label: 'VASP → Quantum ESPRESSO', input: ASEFormat.VASP, output: ASEFormat.QE }, @@ -239,15 +295,32 @@ async function quickConvert(converter: ASEConverter): Promise { { label: 'CIF → VASP', input: ASEFormat.CIF, output: ASEFormat.VASP }, ]; - const selected = await vscode.window.showQuickPick( - presets.map(p => p), - { placeHolder: 'Select conversion preset' } - ); + const selected = + fromFormat && toFormat + ? { + label: `${fromFormat.toUpperCase()} → ${toFormat.toUpperCase()}`, + input: normalizeASEFormat(fromFormat, converter.getSupportedFormats()), + output: normalizeASEFormat(toFormat, converter.getSupportedFormats()), + } + : await vscode.window.showQuickPick( + presets.map(p => p), + { placeHolder: 'Select conversion preset' } + ); if (!selected) { return; } + if (!selected.input || !selected.output) { + const supported = Object.keys(converter.getSupportedFormats()).join(', '); + vscode.window.showErrorMessage( + `Unsupported ASE quick conversion: ${fromFormat ?? 'unknown'} → ${ + toFormat ?? 'unknown' + }. Supported formats: ${supported}` + ); + return; + } + const editor = vscode.window.activeTextEditor; if (!editor) { vscode.window.showErrorMessage('No active editor'); @@ -293,7 +366,8 @@ function formatAtomsInfo(result: ConversionResult): string { return JSON.stringify(result, null, 2); } - const atoms = result.atoms; + const extracted = extractASEAtoms(result.atoms); + const atoms = extracted.atoms ?? result.atoms; const formula = getChemicalFormula(atoms.chemical_symbols); const info = { @@ -303,7 +377,9 @@ function formatAtomsInfo(result: ConversionResult): string { periodic: atoms.pbc.some(p => p), elements: [...new Set(atoms.chemical_symbols)], }, + aseAtoms: atoms, structure: { + chemical_symbols: atoms.chemical_symbols, positions: atoms.positions, cell: atoms.cell, pbc: atoms.pbc, @@ -315,6 +391,263 @@ function formatAtomsInfo(result: ConversionResult): string { return JSON.stringify(info, null, 2); } +function extractASEAtoms(value: unknown): AtomsExtraction { + const candidates = getAtomsCandidates(value); + if (candidates.length === 0) { + return { + error: + 'expected a JSON object containing aseAtoms, atoms, data.atoms, structure, or a top-level Atoms object', + }; + } + + const errors: string[] = []; + for (const candidate of candidates) { + const normalized = normalizeAtoms(candidate.value); + if ('value' in normalized) { + return { atoms: normalized.value, source: candidate.source }; + } + errors.push(`${candidate.source}: ${normalized.error}`); + } + + return { + error: errors.slice(0, 3).join('; '), + }; +} + +function getAtomsCandidates(value: unknown): Array<{ value: unknown; source: string }> { + if (!isRecord(value)) { + return []; + } + + const candidates: Array<{ value: unknown; source: string }> = []; + + addCandidate(candidates, value.aseAtoms, 'aseAtoms'); + addCandidate(candidates, value.atoms, 'atoms'); + if (isRecord(value.data)) { + addCandidate(candidates, value.data.aseAtoms, 'data.aseAtoms'); + addCandidate(candidates, value.data.atoms, 'data.atoms'); + addCandidate(candidates, value.data.structure, 'data.structure'); + } + addCandidate(candidates, value.structure, 'structure'); + addCandidate(candidates, value, 'top-level'); + + return candidates; +} + +function addCandidate( + candidates: Array<{ value: unknown; source: string }>, + value: unknown, + source: string +): void { + if (value !== undefined && value !== null) { + candidates.push({ value, source }); + } +} + +function normalizeAtoms(value: unknown): ValidationResult { + if (!isRecord(value)) { + return { error: 'candidate is not an object' }; + } + + const symbolValue = value.chemical_symbols ?? value.chemicalSymbols ?? value.symbols; + const symbols = normalizeSymbols(symbolValue, value.numbers); + if ('error' in symbols) { + return { error: symbols.error }; + } + + const positions = normalizeVector3List(value.positions, 'positions'); + if ('error' in positions) { + return { error: positions.error }; + } + + if (symbols.value.length === 0) { + return { error: 'chemical_symbols must contain at least one atom' }; + } + + if (symbols.value.length !== positions.value.length) { + return { + error: `chemical_symbols has ${symbols.value.length} entries but positions has ${positions.value.length}`, + }; + } + + const pbc = normalizePbc(value.pbc); + if ('error' in pbc) { + return { error: pbc.error }; + } + + const cell = normalizeCell(value.cell); + if ('error' in cell) { + return { error: cell.error }; + } + + const atoms: ASEAtoms = { + chemical_symbols: symbols.value, + positions: positions.value, + cell: cell.value, + pbc: pbc.value, + }; + + if (value.info !== undefined) { + if (!isRecord(value.info)) { + return { error: 'info must be an object when provided' }; + } + atoms.info = value.info; + } + + if (value.masses !== undefined) { + const masses = normalizeNumberList(value.masses, 'masses'); + if ('error' in masses) { + return { error: masses.error }; + } + if (masses.value.length !== symbols.value.length) { + return { + error: `masses has ${masses.value.length} entries but chemical_symbols has ${symbols.value.length}`, + }; + } + atoms.masses = masses.value; + } + + if (typeof value.constraints === 'string') { + atoms.constraints = value.constraints; + } + + return { value: atoms }; +} + +function normalizeSymbols(symbolValue: unknown, numbersValue: unknown): ValidationResult { + if (Array.isArray(symbolValue)) { + const symbols: string[] = []; + for (const symbol of symbolValue) { + if (typeof symbol !== 'string' || !ELEMENT_SYMBOL_SET.has(symbol)) { + return { error: 'chemical_symbols must be valid element symbols' }; + } + symbols.push(symbol); + } + return { value: symbols }; + } + + if (Array.isArray(numbersValue)) { + const symbols: string[] = []; + for (const number of numbersValue) { + if (!Number.isInteger(number) || number < 1 || number >= ELEMENT_SYMBOLS.length) { + return { error: 'numbers must contain valid atomic numbers' }; + } + symbols.push(ELEMENT_SYMBOLS[number]); + } + return { value: symbols }; + } + + return { error: 'missing chemical_symbols, symbols, or numbers array' }; +} + +function normalizeVector3List(value: unknown, label: string): ValidationResult { + if (!Array.isArray(value)) { + return { error: `${label} must be an array` }; + } + + const rows: number[][] = []; + for (const row of value) { + if (!Array.isArray(row) || row.length !== 3 || !row.every(isFiniteNumber)) { + return { error: `${label} must contain [x, y, z] numeric rows` }; + } + rows.push([...row]); + } + return { value: rows }; +} + +function normalizeCell(value: unknown): ValidationResult { + if (value === undefined || value === null) { + return { value: null }; + } + + if (!Array.isArray(value) || value.length !== 3) { + return { error: 'cell must be a 3-vector or 3x3 numeric matrix' }; + } + + if (value.every(isFiniteNumber)) { + return { + value: [ + [value[0], 0, 0], + [0, value[1], 0], + [0, 0, value[2]], + ], + }; + } + + return normalizeVector3List(value, 'cell'); +} + +function normalizePbc(value: unknown): ValidationResult { + if (value === undefined || value === null) { + return { value: [false, false, false] }; + } + + if (typeof value === 'boolean') { + return { value: [value, value, value] }; + } + + if (Array.isArray(value)) { + if (value.length === 1 && typeof value[0] === 'boolean') { + return { value: [value[0], value[0], value[0]] }; + } + if (value.length === 3 && value.every(item => typeof item === 'boolean')) { + return { value: [...value] }; + } + } + + return { error: 'pbc must be a boolean or a 3-element boolean array' }; +} + +function normalizeNumberList(value: unknown, label: string): ValidationResult { + if (!Array.isArray(value) || !value.every(isFiniteNumber)) { + return { error: `${label} must be a numeric array` }; + } + return { value: [...value] }; +} + +function isRecord(value: unknown): value is Record { + return typeof value === 'object' && value !== null && !Array.isArray(value); +} + +function isFiniteNumber(value: unknown): value is number { + return typeof value === 'number' && Number.isFinite(value); +} + +function normalizeASEFormat( + value: string, + formats: Record +): ASEFormat | undefined { + const normalized = value + .trim() + .toLowerCase() + .replace(/[\s_-]+/g, ''); + const aliases: Record = { + poscar: ASEFormat.VASP, + contcar: ASEFormat.VASP, + vasp: ASEFormat.VASP, + espresso: ASEFormat.QE, + quantumespresso: ASEFormat.QE, + qe: ASEFormat.QE, + gaussian: ASEFormat.Gaussian, + gau: ASEFormat.Gaussian, + orca: ASEFormat.ORCA, + nwchem: ASEFormat.NWChem, + gamess: ASEFormat.GAMESS, + lammps: ASEFormat.LAMMPS, + xyz: ASEFormat.XYZ, + pdb: ASEFormat.PDB, + cif: ASEFormat.CIF, + cp2k: ASEFormat.CP2K, + }; + + if (aliases[normalized]) { + return aliases[normalized]; + } + + const formatKey = Object.keys(formats).find(key => key.toLowerCase() === value.toLowerCase()); + return formatKey as ASEFormat | undefined; +} + /** * Get chemical formula from element symbols */ diff --git a/src/commands/analyzerCommands.ts b/src/commands/analyzerCommands.ts index a8a93b7..d737632 100644 --- a/src/commands/analyzerCommands.ts +++ b/src/commands/analyzerCommands.ts @@ -9,11 +9,14 @@ import { checkAnalyzer, MULTIWFN_CONFIG, C2X_CONFIG, + OPENBABEL_CONFIG, generateMultiwfnScript, generateC2xCommand, + generateOpenBabelCommand, previewCommand, executeAnalyzer, } from '../analyzers/ExternalAnalyzer'; +import type { AnalyzerCommand } from '../analyzers/ExternalAnalyzer'; export function registerAnalyzerCommands(context: vscode.ExtensionContext): void { context.subscriptions.push( @@ -22,14 +25,18 @@ export function registerAnalyzerCommands(context: vscode.ExtensionContext): void generateMultiwfnScriptCommand() ), vscode.commands.registerCommand('openqc.runMultiwfnAnalysis', () => runMultiwfnCommand()), - vscode.commands.registerCommand('openqc.convertDensityC2x', () => convertWithC2xCommand()) + vscode.commands.registerCommand('openqc.convertDensityC2x', () => convertWithC2xCommand()), + vscode.commands.registerCommand('openqc.convertStructureOpenBabel', () => + convertWithOpenBabelCommand() + ) ); } async function checkAnalyzers(): Promise { - const [multiwfn, c2x] = await Promise.all([ + const [multiwfn, c2x, openbabel] = await Promise.all([ checkAnalyzer(MULTIWFN_CONFIG), checkAnalyzer(C2X_CONFIG), + checkAnalyzer(OPENBABEL_CONFIG), ]); const channel = vscode.window.createOutputChannel('OpenQC External Analyzers'); @@ -38,7 +45,7 @@ async function checkAnalyzers(): Promise { channel.appendLine('═'.repeat(40)); channel.appendLine(''); - for (const status of [multiwfn, c2x]) { + for (const status of [multiwfn, c2x, openbabel]) { const icon = status.available ? '✅' : '❌'; const path = status.path ?? 'not found'; const enabled = status.enabled ? 'enabled' : 'disabled'; @@ -59,7 +66,9 @@ async function generateMultiwfnScriptCommand(): Promise { prompt: 'Input file path (.fchk, .wfn, .molden, .cube)', placeHolder: '/path/to/file.fchk', }); - if (!inputFile) return; + if (!inputFile) { + return; + } const operation = await vscode.window.showQuickPick( [ @@ -71,13 +80,15 @@ async function generateMultiwfnScriptCommand(): Promise { ], { placeHolder: 'Select analysis type' } ); - if (!operation) return; + if (!operation) { + return; + } - const outputFile = `${inputFile}.${operation.toLowerCase().replace(/\s+/g, '_')}.out`; + const outputFile = defaultMultiwfnOutputPath(inputFile, operation); const command = generateMultiwfnScript(inputFile, operation, outputFile); const doc = await vscode.workspace.openTextDocument({ - content: `# Multiwfn Analysis Script\n# ${command.description}\n\n${command.executable} ${command.args.join(' ')}\n`, + content: renderShellCommand(command), language: 'shellscript', }); await vscode.window.showTextDocument(doc); @@ -88,13 +99,171 @@ async function generateMultiwfnScriptCommand(): Promise { } async function runMultiwfnCommand(): Promise { - vscode.window.showWarningMessage( - 'External analyzers must be enabled in settings before execution. Set openqc.external.allowExternalAnalyzers to true.' + const status = await checkAnalyzer(MULTIWFN_CONFIG); + if (!ensureAnalyzerReady(status, MULTIWFN_CONFIG.displayName)) { + return; + } + + const inputFile = await vscode.window.showInputBox({ + prompt: 'Input file path for Multiwfn (.fchk, .wfn, .molden, .cube)', + placeHolder: '/path/to/file.fchk', + }); + if (!inputFile) { + return; + } + + const operation = await vscode.window.showQuickPick( + [ + 'Electron density cube', + 'Electrostatic potential cube', + 'ELF cube', + 'Population analysis', + 'Orbital cube', + ], + { placeHolder: 'Select analysis type' } ); + if (!operation) { + return; + } + + const outputFile = defaultMultiwfnOutputPath(inputFile, operation); + const command = generateMultiwfnScript(inputFile, operation, outputFile); + command.executable = status.path ?? command.executable; + + await runAnalyzerCommand(command); +} + +function defaultMultiwfnOutputPath(inputFile: string, operation: string): string { + const suffix = operation.toLowerCase().replace(/\s+/g, '_'); + const extension = operation.toLowerCase().includes('cube') ? 'cube' : 'out'; + return `${inputFile}.${suffix}.${extension}`; } async function convertWithC2xCommand(): Promise { - vscode.window.showInformationMessage( - 'c2x conversion requires CASTEP checkpoint or density files. Configure path in openqc.external.c2xPath.' + const status = await checkAnalyzer(C2X_CONFIG); + if (!ensureAnalyzerReady(status, C2X_CONFIG.displayName)) { + return; + } + + const inputFile = await vscode.window.showInputBox({ + prompt: 'Input density/checkpoint file for c2x', + placeHolder: '/path/to/file.check', + }); + if (!inputFile) { + return; + } + + const outputFile = await vscode.window.showInputBox({ + prompt: 'Output file path for c2x conversion', + value: `${inputFile}.cube`, + }); + if (!outputFile) { + return; + } + + const command = generateC2xCommand(inputFile, 'convert', outputFile); + command.executable = status.path ?? command.executable; + + await runAnalyzerCommand(command); +} + +async function convertWithOpenBabelCommand(): Promise { + const status = await checkAnalyzer(OPENBABEL_CONFIG); + if (!ensureAnalyzerReady(status, OPENBABEL_CONFIG.displayName)) { + return; + } + + const inputFile = await vscode.window.showInputBox({ + prompt: 'Input structure or molecule file for Open Babel', + placeHolder: '/path/to/structure.xyz', + }); + if (!inputFile) { + return; + } + + const outputFile = await vscode.window.showInputBox({ + prompt: 'Output structure or molecule file for Open Babel', + value: `${inputFile}.pdb`, + }); + if (!outputFile) { + return; + } + + const command = generateOpenBabelCommand(inputFile, outputFile); + command.executable = status.path ?? command.executable; + + await runAnalyzerCommand(command); +} + +function ensureAnalyzerReady( + status: { available: boolean; enabled: boolean; path: string | null }, + displayName: string +): boolean { + if (!status.enabled) { + vscode.window.showWarningMessage( + `External analyzers are disabled. Enable openqc.external.allowExternalAnalyzers before running ${displayName}.` + ); + return false; + } + + if (!status.available || !status.path) { + vscode.window.showErrorMessage( + `${displayName} executable was not found. Configure the corresponding openqc.external.*Path setting or add it to PATH.` + ); + return false; + } + + return true; +} + +async function runAnalyzerCommand(command: AnalyzerCommand): Promise { + if (!(await previewCommand(command))) { + return; + } + + const timeoutMs = vscode.workspace + .getConfiguration('openqc.external') + .get('timeoutMs', 60000); + + await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + title: command.description, + cancellable: false, + }, + async () => { + const result = await executeAnalyzer(command, timeoutMs); + const channel = vscode.window.createOutputChannel('OpenQC External Analyzer Run'); + channel.clear(); + channel.appendLine(command.description); + channel.appendLine(`Command: ${command.executable} ${command.args.join(' ')}`); + if (command.expectedOutputPath) { + channel.appendLine(`Expected output: ${command.expectedOutputPath}`); + } + channel.appendLine(`Exit code: ${result.exitCode}`); + channel.appendLine(''); + channel.appendLine('--- stdout ---'); + channel.appendLine(result.stdout || '(empty)'); + channel.appendLine('--- stderr ---'); + channel.appendLine(result.stderr || '(empty)'); + channel.show(true); + + if (result.success) { + vscode.window.showInformationMessage('External analyzer completed successfully'); + } else { + vscode.window.showErrorMessage( + 'External analyzer failed; see OpenQC External Analyzer Run output' + ); + } + } ); } + +function renderShellCommand(command: AnalyzerCommand): string { + const commandLine = `${command.executable} ${command.args.join(' ')}`; + if (!command.stdin) { + return `# ${command.description}\n\n${commandLine}\n`; + } + + return `# ${command.description}\n\n${commandLine} <<'EOF'\n${command.stdin}EOF\n`; +} diff --git a/src/commands/exportCommands.ts b/src/commands/exportCommands.ts index db517f3..f4476aa 100644 --- a/src/commands/exportCommands.ts +++ b/src/commands/exportCommands.ts @@ -8,19 +8,24 @@ */ import * as vscode from 'vscode'; -import { StructureExporter, ExportFormat, ExportOptions } from '../utils/structureExporter'; +import { StructureExporter, ExportFormat } from '../utils/structureExporter'; import { Atom } from '../visualizers/types'; +import type { OpenQCBond } from '../structures/OpenQCStructure'; /** * Register export commands */ export function registerExportCommands( context: vscode.ExtensionContext, - getStructureData?: () => { - atoms: Atom[]; - cell?: { a: number; b: number; c: number; alpha: number; beta: number; gamma: number }; - pbc?: [boolean, boolean, boolean]; - } + getStructureData?: () => + | { + atoms: Atom[]; + bonds?: OpenQCBond[]; + cell?: any; + pbc?: [boolean, boolean, boolean]; + } + | undefined, + saveStructureToSource?: () => Promise ): void { const exporter = new StructureExporter(context); @@ -40,7 +45,7 @@ export function registerExportCommands( } // Show format picker - const formats = StructureExporter.getSupportedFormats(); + const formats = StructureExporter.getNativeFormats(); const formatItems = formats.map(format => ({ label: StructureExporter.getFormatDisplayName(format), description: format, @@ -61,7 +66,9 @@ export function registerExportCommands( if (!result.success) { vscode.window.showErrorMessage(`Export failed: ${result.error}`); + return; } + showExportWarnings(result.warnings); } ); @@ -81,7 +88,7 @@ export function registerExportCommands( } // Show format picker with recent formats - const formats = StructureExporter.getSupportedFormats(); + const formats = StructureExporter.getNativeFormats(); const formatItems = formats.map(format => ({ label: StructureExporter.getFormatDisplayName(format), description: format, @@ -119,18 +126,36 @@ export function registerExportCommands( if (!result.success) { vscode.window.showErrorMessage(`Export failed: ${result.error}`); + return; } + showExportWarnings(result.warnings); } ); - context.subscriptions.push(exportStructureCommand, exportWithPickerCommand); + const saveEditedStructureCommand = vscode.commands.registerCommand( + 'openqc.saveEditedStructureToSource', + async () => { + if (!saveStructureToSource) { + vscode.window.showErrorMessage('No editable OpenQC viewer source is available'); + return; + } + + await saveStructureToSource(); + } + ); + + context.subscriptions.push( + exportStructureCommand, + exportWithPickerCommand, + saveEditedStructureCommand + ); } -/** - * Capitalize first letter - */ -function capitalize(str: string): string { - return str.charAt(0).toUpperCase() + str.slice(1); +function showExportWarnings(warnings: string[] | undefined): void { + if (!warnings || warnings.length === 0) { + return; + } + vscode.window.showWarningMessage(`Export completed with warnings: ${warnings.join(' ')}`); } /** diff --git a/src/commands/jobCommands.ts b/src/commands/jobCommands.ts new file mode 100644 index 0000000..ea248c6 --- /dev/null +++ b/src/commands/jobCommands.ts @@ -0,0 +1,376 @@ +import * as vscode from 'vscode'; +import { + CalculatorConfig, + CalculatorFactory, + CalculatorType, + getCalculatorConfiguration, +} from '../ase/ASECalculator'; +import { JobItem, JobResultData, JobTreeProvider } from '../sidebar/JobTreeProvider'; +import { renderResultsWebviewHtml } from '../webviews/resultsWebview'; + +interface CalculatorPickItem { + label: string; + description: CalculatorType; +} + +const CALCULATOR_ITEMS: CalculatorPickItem[] = [ + { label: 'VASP', description: CalculatorType.VASP }, + { label: 'CP2K', description: CalculatorType.CP2K }, + { label: 'Quantum ESPRESSO', description: CalculatorType.QE }, +]; + +export function registerJobCommands( + context: vscode.ExtensionContext, + jobProvider: JobTreeProvider +): void { + const runningJobs = new Map(); + + context.subscriptions.push( + vscode.commands.registerCommand('openqc.sidebar.refreshJobs', () => { + jobProvider.refresh(); + vscode.window.showInformationMessage('Jobs refreshed'); + }), + + vscode.commands.registerCommand('openqc.sidebar.runCalculation', async () => { + await runCalculationFromSidebar(context, jobProvider, runningJobs); + }), + + vscode.commands.registerCommand('openqc.sidebar.viewResults', async (item: JobItem) => { + await viewJobResults(item); + }), + + vscode.commands.registerCommand('openqc.sidebar.exportData', async (item: JobItem) => { + await exportJobData(item); + }), + + vscode.commands.registerCommand('openqc.sidebar.cancelJob', (item: JobItem) => { + const controller = runningJobs.get(item.id); + controller?.abort(); + const cancelled = jobProvider.cancelJob(item.id); + if (cancelled) { + vscode.window.showInformationMessage(`Cancelled job: ${item.label}`); + } else { + vscode.window.showInformationMessage(`Job is not running: ${item.label}`); + } + }), + + vscode.commands.registerCommand('openqc.sidebar.restartJob', async (item: JobItem) => { + await restartJobFromSidebar(context, jobProvider, item, runningJobs); + }) + ); +} + +async function runCalculationFromSidebar( + context: vscode.ExtensionContext, + jobProvider: JobTreeProvider, + runningJobs: Map +): Promise { + const selectedCalculator = await vscode.window.showQuickPick(CALCULATOR_ITEMS, { + placeHolder: 'Select calculator for an existing input directory', + }); + if (!selectedCalculator) { + return; + } + + const directoryUris = await vscode.window.showOpenDialog({ + canSelectFiles: false, + canSelectFolders: true, + canSelectMany: false, + openLabel: 'Select Input Directory', + }); + const inputDir = directoryUris?.[0]?.fsPath; + if (!inputDir) { + return; + } + + const defaultName = `${selectedCalculator.label} calculation`; + const nameInput = await vscode.window.showInputBox({ + prompt: 'Enter calculation name', + placeHolder: defaultName, + value: defaultName, + }); + if (nameInput === undefined) { + return; + } + const name = nameInput.trim() || defaultName; + + const job = new JobItem( + `job-${Date.now()}`, + name, + 'running', + 5, + selectedCalculator.label, + new Date(), + undefined, + inputDir + ); + jobProvider.addJob(job); + vscode.window.showInformationMessage(`Started calculation: ${name}`); + + await executeJob(context, jobProvider, job, selectedCalculator.description, runningJobs); +} + +async function restartJobFromSidebar( + context: vscode.ExtensionContext, + jobProvider: JobTreeProvider, + item: JobItem, + runningJobs: Map +): Promise { + if (!item.workingDirectory) { + vscode.window.showWarningMessage(`Cannot restart ${item.label}: no working directory recorded`); + return; + } + + const calculatorType = getCalculatorTypeForSoftware(item.software); + if (!calculatorType) { + vscode.window.showWarningMessage( + `Cannot restart ${item.label}: unsupported calculator ${item.software}` + ); + return; + } + + const job = jobProvider.restartJob(item.id); + if (!job) { + vscode.window.showWarningMessage(`Cannot restart ${item.label}: job was not found`); + return; + } + + vscode.window.showInformationMessage(`Restarted job: ${item.label}`); + await executeJob(context, jobProvider, job, calculatorType, runningJobs); +} + +async function executeJob( + context: vscode.ExtensionContext, + jobProvider: JobTreeProvider, + job: JobItem, + calculatorType: CalculatorType, + runningJobs: Map +): Promise { + const inputDir = job.workingDirectory; + if (!inputDir) { + jobProvider.updateJobResult( + job.id, + 'failed', + { + success: false, + error: 'No working directory recorded for calculation job', + warnings: [], + metadata: {}, + outputFiles: [], + }, + 100 + ); + return; + } + + const calculator = new CalculatorFactory(context).createCalculator( + createCalculatorConfig(calculatorType) + ); + + const controller = new AbortController(); + runningJobs.set(job.id, controller); + jobProvider.updateJobStatus(job.id, 'running', 25); + try { + const result = await calculator.runCalculation(inputDir, undefined, controller.signal); + const latest = jobProvider.getJob(job.id); + if (controller.signal.aborted || latest?.status === 'cancelled') { + return; + } + const resultData = normalizeJobResult(result); + + if (result.success) { + jobProvider.updateJobResult(job.id, 'completed', resultData, 100); + vscode.window.showInformationMessage(`Completed calculation: ${job.label}`); + } else { + jobProvider.updateJobResult(job.id, 'failed', resultData, 100); + vscode.window.showErrorMessage(`Calculation failed: ${result.error ?? 'unknown error'}`); + } + } finally { + runningJobs.delete(job.id); + } +} + +function getCalculatorTypeForSoftware(software: string): CalculatorType | undefined { + return CALCULATOR_ITEMS.find( + item => item.label === software || item.description === software.toLowerCase() + )?.description; +} + +function createCalculatorConfig(type: CalculatorType): CalculatorConfig { + const calculatorConfig = getCalculatorConfiguration(); + const settings = calculatorConfig[type] ?? {}; + return { + type, + command: settings.command, + parameters: settings.defaultParams ?? {}, + }; +} + +function normalizeJobResult(result: { + success: boolean; + energy?: number; + forces?: number[][]; + stress?: number[][]; + error?: string; + warnings?: string[]; + metadata?: Record; + outputFiles?: string[]; +}): JobResultData { + return { + success: result.success, + energy: result.energy, + forces: result.forces, + stress: result.stress, + error: result.error, + warnings: result.warnings ?? [], + metadata: result.metadata ?? {}, + outputFiles: result.outputFiles ?? [], + }; +} + +async function viewJobResults(item: JobItem): Promise { + if (item.status !== 'completed' && item.status !== 'failed') { + vscode.window.showInformationMessage(`Results not available for ${item.status} jobs`); + return; + } + if (!item.result) { + vscode.window.showWarningMessage(`No captured result data is available for ${item.label}`); + return; + } + + const panel = vscode.window.createWebviewPanel( + 'openqc.results', + `Results: ${item.label}`, + vscode.ViewColumn.Two, + { + retainContextWhenHidden: true, + localResourceRoots: [], + } + ); + + panel.webview.html = renderResultsWebviewHtml( + { + jobId: item.id, + jobName: item.label, + software: item.software, + status: item.status, + startTime: item.startTime?.toISOString(), + endTime: item.endTime?.toISOString(), + duration: typeof item.tooltip === 'string' ? item.tooltip.split('Duration: ')[1] : undefined, + output: formatJobResultOutput(item), + }, + panel.webview.cspSource + ); +} + +async function exportJobData(item: JobItem): Promise { + if (item.status !== 'completed') { + vscode.window.showWarningMessage('Can only export data from completed jobs'); + return; + } + if (!item.result) { + vscode.window.showWarningMessage(`No captured result data is available for ${item.label}`); + return; + } + + const uri = await vscode.window.showSaveDialog({ + filters: { + JSON: ['json'], + CSV: ['csv'], + 'All Files': ['*'], + }, + defaultUri: vscode.Uri.file(`${item.label.replace(/\s+/g, '_')}_results.json`), + saveLabel: 'Export Results', + }); + if (!uri) { + return; + } + + const payload = createJobExportPayload(item); + const content = uri.fsPath.toLowerCase().endsWith('.csv') + ? renderJobResultCsv(payload) + : JSON.stringify(payload, null, 2); + await vscode.workspace.fs.writeFile(vscode.Uri.file(uri.fsPath), Buffer.from(content)); + vscode.window.showInformationMessage(`Exported ${item.label} to ${uri.fsPath}`); +} + +export function createJobExportPayload(item: JobItem): Record { + return { + jobId: item.id, + jobName: item.label, + software: item.software, + status: item.status, + workingDirectory: item.workingDirectory, + startTime: item.startTime?.toISOString(), + endTime: item.endTime?.toISOString(), + timestamp: new Date().toISOString(), + result: item.result, + }; +} + +export function formatJobResultOutput(item: JobItem): string { + const result = item.result; + if (!result) { + return 'No captured result data is available.'; + } + + const lines = [ + `Results for ${item.label}`, + '', + `Software: ${item.software}`, + `Status: ${item.status}`, + ]; + if (item.workingDirectory) { + lines.push(`Directory: ${item.workingDirectory}`); + } + if (typeof result.energy === 'number') { + lines.push(`Final energy: ${result.energy}`); + } + if (result.forces?.length) { + lines.push(`Forces: ${result.forces.length} atoms`); + } + if (result.stress?.length) { + lines.push(`Stress rows: ${result.stress.length}`); + } + if (result.outputFiles?.length) { + lines.push(`Output files: ${result.outputFiles.join(', ')}`); + } + if (result.warnings?.length) { + lines.push('', 'Warnings:', ...result.warnings.map(warning => `- ${warning}`)); + } + if (result.error) { + lines.push('', 'Error:', result.error); + } + if (result.metadata && Object.keys(result.metadata).length > 0) { + lines.push('', 'Metadata:', JSON.stringify(result.metadata, null, 2)); + } + + return lines.join('\n'); +} + +function renderJobResultCsv(payload: Record): string { + const result = payload.result ?? {}; + return [ + 'jobId,jobName,software,status,workingDirectory,energy,error,outputFiles', + [ + payload.jobId, + payload.jobName, + payload.software, + payload.status, + payload.workingDirectory ?? '', + result.energy ?? '', + result.error ?? '', + Array.isArray(result.outputFiles) ? result.outputFiles.join(';') : '', + ] + .map(csvCell) + .join(','), + ].join('\n'); +} + +function csvCell(value: unknown): string { + const text = String(value); + if (!/[",\n]/.test(text)) { + return text; + } + return `"${text.replace(/"/g, '""')}"`; +} diff --git a/src/commands/migrationCommands.ts b/src/commands/migrationCommands.ts index 9a38875..c24f4ea 100644 --- a/src/commands/migrationCommands.ts +++ b/src/commands/migrationCommands.ts @@ -18,67 +18,67 @@ import { MDWorkflowConverter, quickMigrateMDWorkflow } from '../utils/migration/ */ export function registerMigrationCommands(context: vscode.ExtensionContext): void { // Structure migration command - const migrateStructureCommand = vscode.commands.registerCommand( + registerCommandWithLegacyAlias( + context, + 'openqc.migrateStructure', 'OpenQC.migrateStructure', - async () => { - await quickMigrateStructure(context); - } + () => quickMigrateStructure(context) ); - context.subscriptions.push(migrateStructureCommand); // Advanced structure migration with options - const migrateStructureAdvancedCommand = vscode.commands.registerCommand( + registerCommandWithLegacyAlias( + context, + 'openqc.migrateStructureAdvanced', 'OpenQC.migrateStructureAdvanced', - async () => { - await migrateStructureWithOptions(context); - } + () => migrateStructureWithOptions(context) ); - context.subscriptions.push(migrateStructureAdvancedCommand); // k-Point grid migration - const migrateKpointsCommand = vscode.commands.registerCommand( - 'OpenQC.migrateKpoints', - async () => { - await migrateKpoints(context); - } + registerCommandWithLegacyAlias(context, 'openqc.migrateKpoints', 'OpenQC.migrateKpoints', () => + migrateKpoints(context) ); - context.subscriptions.push(migrateKpointsCommand); // Electronic parameter migration - const migrateParametersCommand = vscode.commands.registerCommand( + registerCommandWithLegacyAlias( + context, + 'openqc.migrateParameters', 'OpenQC.migrateParameters', - async () => { - await migrateParameters(context); - } + () => migrateParameters(context) ); - context.subscriptions.push(migrateParametersCommand); // MD/Optimization workflow migration (Phase 3.4) - const migrateMDWorkflowCommand = vscode.commands.registerCommand( + registerCommandWithLegacyAlias( + context, + 'openqc.migrateMDWorkflow', 'OpenQC.migrateMDWorkflow', - async () => { - await quickMigrateMDWorkflow(context); - } + () => quickMigrateMDWorkflow(context) ); - context.subscriptions.push(migrateMDWorkflowCommand); // Legacy MD parameters migration (for backward compatibility) - const migrateMDParametersCommand = vscode.commands.registerCommand( + registerCommandWithLegacyAlias( + context, + 'openqc.migrateMDParameters', 'OpenQC.migrateMDParameters', - async () => { - await migrateMDParameters(context); - } + () => migrateMDParameters(context) ); - context.subscriptions.push(migrateMDParametersCommand); // Show migration validation report - const showValidationCommand = vscode.commands.registerCommand( + registerCommandWithLegacyAlias( + context, + 'openqc.showMigrationValidation', 'OpenQC.showMigrationValidation', - async () => { - await showMigrationValidation(context); - } + () => showMigrationValidation(context) ); - context.subscriptions.push(showValidationCommand); +} + +function registerCommandWithLegacyAlias( + context: vscode.ExtensionContext, + command: string, + legacyCommand: string, + handler: () => Promise +): void { + context.subscriptions.push(vscode.commands.registerCommand(command, handler)); + context.subscriptions.push(vscode.commands.registerCommand(legacyCommand, handler)); } /** diff --git a/src/commands/pythonBackendCommands.ts b/src/commands/pythonBackendCommands.ts index 4235d0b..58e966f 100644 --- a/src/commands/pythonBackendCommands.ts +++ b/src/commands/pythonBackendCommands.ts @@ -77,8 +77,20 @@ function displayBackendResult(result: BridgeResponse): void } const data = result.data; + const backendStatus = data.status ?? 'degraded'; + const capabilitySummary = summarizeCapabilities(data.capabilities); channel.appendLine('✅ Scientific Python Backend Check'); channel.appendLine('═'.repeat(40)); + channel.appendLine(`Status: ${backendStatus.toUpperCase()}`); + if (data.statusDetail) { + channel.appendLine(`Detail: ${data.statusDetail}`); + } + if (capabilitySummary) { + channel.appendLine(`Capabilities: ${capabilitySummary}`); + } + if (data.missingPackages && data.missingPackages.length > 0) { + channel.appendLine(`Missing core packages: ${data.missingPackages.join(', ')}`); + } channel.appendLine(''); // Python @@ -108,6 +120,21 @@ function displayBackendResult(result: BridgeResponse): void channel.appendLine(`\n ${availableCount}/${pkgEntries.length} packages available`); channel.appendLine(''); + // Capabilities + if (data.capabilities && Object.keys(data.capabilities).length > 0) { + channel.appendLine('🧭 Feature Readiness:'); + for (const [name, capability] of Object.entries(data.capabilities)) { + const icon = getCapabilityIcon(capability.status); + const label = capability.label ?? humanizeCapabilityName(name); + channel.appendLine(` ${icon} ${label}: ${formatCapabilityStatus(capability.status)}`); + channel.appendLine(` ${capability.detail}`); + if (capability.requires && capability.requires.length > 0) { + channel.appendLine(` Install for full support: ${capability.requires.join(', ')}`); + } + } + channel.appendLine(''); + } + // External tools channel.appendLine('🔧 External Tools:'); const tools = data.externalTools ?? {}; @@ -123,9 +150,14 @@ function displayBackendResult(result: BridgeResponse): void logger.info(`Backend check: ${availableCount}/${pkgEntries.length} packages available`); channel.show(true); - vscode.window.showInformationMessage( - `Python backend: ${data.python.version} — ${availableCount}/${pkgEntries.length} scientific packages available` - ); + const message = formatBackendNotification(data, availableCount, pkgEntries.length); + if (backendStatus === 'installed') { + vscode.window.showInformationMessage(message); + } else if (backendStatus === 'degraded') { + vscode.window.showWarningMessage(message); + } else { + vscode.window.showErrorMessage(message); + } } async function configurePythonPath(): Promise { @@ -154,3 +186,61 @@ async function configurePythonPath(): Promise { async function showDiagnostics(): Promise { await runBackendCheck(); } + +function summarizeCapabilities( + capabilities: BackendCheckResult['capabilities'] +): string | undefined { + if (!capabilities || Object.keys(capabilities).length === 0) { + return undefined; + } + + const counts = { available: 0, degraded: 0, missing: 0 }; + for (const capability of Object.values(capabilities)) { + counts[capability.status] += 1; + } + + return `${counts.available} available, ${counts.degraded} degraded, ${counts.missing} missing`; +} + +function getCapabilityIcon(status: string): string { + if (status === 'available') { + return '✅'; + } + if (status === 'degraded') { + return '⚠️'; + } + return '❌'; +} + +function formatCapabilityStatus(status: string): string { + return status.toUpperCase(); +} + +function humanizeCapabilityName(name: string): string { + return name.replace(/([a-z0-9])([A-Z])/g, '$1 $2').replace(/^./, first => first.toUpperCase()); +} + +function formatBackendNotification( + data: BackendCheckResult, + availableCount: number, + totalCount: number +): string { + const backendStatus = data.status ?? 'degraded'; + const packageSummary = `${availableCount}/${totalCount} scientific packages available`; + + if (backendStatus === 'installed') { + return `Python backend installed: ${data.python.version} — ${packageSummary}`; + } + + if (data.missingPackages && data.missingPackages.length > 0) { + return `Python backend ${backendStatus}: missing ${data.missingPackages.join( + ', ' + )}. ${packageSummary}`; + } + + if (data.statusDetail) { + return `Python backend ${backendStatus}: ${data.statusDetail}`; + } + + return `Python backend ${backendStatus}: ${packageSummary}`; +} diff --git a/src/commands/scientificBridgeCommands.ts b/src/commands/scientificBridgeCommands.ts index ea62f5d..9e985b4 100644 --- a/src/commands/scientificBridgeCommands.ts +++ b/src/commands/scientificBridgeCommands.ts @@ -4,22 +4,355 @@ */ import * as vscode from 'vscode'; +import { + parseStructure, + generateSupercell as generateSupercellBridge, +} from '../python/StructureBridge'; +import { extractTrajectory, parseOutput } from '../results/OutputParserBridge'; +import { OpenQCViewerPanel } from '../visualizers/OpenQCViewerPanel'; +import type { OpenQCResults } from '../results/OpenQCResults'; +import type { OpenQCStructure } from '../structures/OpenQCStructure'; export function registerScientificBridgeCommands(context: vscode.ExtensionContext): void { context.subscriptions.push( vscode.commands.registerCommand('openqc.parseStructurePython', async () => { - vscode.window.showInformationMessage( - 'Parse structure with Python backend (requires Python bridge)' - ); + await parseStructureCommand(); }), vscode.commands.registerCommand('openqc.generateSupercell', async () => { - vscode.window.showInformationMessage('Generate supercell (requires periodic structure)'); + await generateSupercellCommand(context); }), vscode.commands.registerCommand('openqc.parseCalculationOutput', async () => { - vscode.window.showInformationMessage('Parse calculation output (requires cclib)'); + await parseCalculationOutputCommand(); }), vscode.commands.registerCommand('openqc.showSCFConvergence', async () => { - vscode.window.showInformationMessage('Show SCF convergence (parse output first)'); + await showScfConvergenceCommand(context); + }), + vscode.commands.registerCommand('openqc.showOptimizationTrajectory', async () => { + await showOptimizationTrajectoryCommand(context); }) ); } + +async function parseStructureCommand(): Promise { + const document = getActiveDocument(); + if (!document) { + return; + } + + await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + title: 'Parsing structure with OpenQC Python bridge...', + cancellable: false, + }, + async () => { + const result = await parseStructure(document.uri.fsPath, undefined, document.getText()); + if (!result.success || !result.data) { + vscode.window.showErrorMessage(`Structure parse failed: ${formatBridgeError(result)}`); + return; + } + + await showJsonDocument(result.data, 'json'); + vscode.window.showInformationMessage( + `Parsed structure: ${result.data.atoms.length} atoms (${result.data.kind})` + ); + } + ); +} + +async function generateSupercellCommand(context: vscode.ExtensionContext): Promise { + const document = getActiveDocument(); + if (!document) { + return; + } + + const dims = await vscode.window.showInputBox({ + prompt: 'Supercell dimensions', + value: '2 2 2', + placeHolder: 'na nb nc', + validateInput: value => { + const parsed = parseSupercellDims(value); + return parsed ? undefined : 'Enter three positive integers, for example: 2 2 2'; + }, + }); + if (!dims) { + return; + } + + const [na, nb, nc] = parseSupercellDims(dims)!; + + await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + title: `Generating ${na}x${nb}x${nc} supercell...`, + cancellable: false, + }, + async () => { + const parsed = await parseStructure(document.uri.fsPath, undefined, document.getText()); + if (!parsed.success || !parsed.data) { + vscode.window.showErrorMessage(`Structure parse failed: ${formatBridgeError(parsed)}`); + return; + } + + const result = await generateSupercellBridge(parsed.data, na, nb, nc); + if (!result.success || !result.data) { + vscode.window.showErrorMessage(`Supercell generation failed: ${formatBridgeError(result)}`); + return; + } + + OpenQCViewerPanel.createOrShow( + context.extensionUri, + result.data, + `${document.fileName} ${na}x${nb}x${nc}` + ); + vscode.window.showInformationMessage( + `Generated supercell with ${result.data.atoms.length} atoms` + ); + } + ); +} + +async function parseCalculationOutputCommand(): Promise { + const document = getActiveDocument(); + if (!document) { + return; + } + + await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + title: 'Parsing calculation output...', + cancellable: false, + }, + async () => { + const result = await parseOutput(document.uri.fsPath); + if (!result.success || !result.data) { + vscode.window.showErrorMessage(`Output parse failed: ${formatBridgeError(result)}`); + return; + } + if (result.data.success === false) { + vscode.window.showWarningMessage( + result.data.warnings?.[0] ?? + result.data.errors?.[0] ?? + 'No calculation output data found.' + ); + return; + } + + await showJsonDocument(result.data, 'json'); + const energy = result.data.finalEnergy + ? ` Final energy: ${result.data.finalEnergy.value} ${result.data.finalEnergy.unit}.` + : ''; + vscode.window.showInformationMessage(`Parsed calculation output.${energy}`); + } + ); +} + +async function showScfConvergenceCommand(context: vscode.ExtensionContext): Promise { + const document = getActiveDocument(); + if (!document) { + return; + } + + await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + title: 'Parsing SCF convergence...', + cancellable: false, + }, + async () => { + const result = await parseOutput(document.uri.fsPath); + if (!result.success || !result.data) { + vscode.window.showErrorMessage(`Output parse failed: ${formatBridgeError(result)}`); + return; + } + + const energies = result.data.scfEnergies ?? result.data.optimization?.energies ?? []; + if (energies.length === 0) { + vscode.window.showWarningMessage( + 'No SCF or optimization energy series found in this output.' + ); + return; + } + + const panel = vscode.window.createWebviewPanel( + 'openqc.scfConvergence', + 'OpenQC: SCF Convergence', + vscode.ViewColumn.Two, + { enableScripts: false, localResourceRoots: [context.extensionUri] } + ); + panel.webview.html = renderScfConvergenceHtml(result.data, energies); + } + ); +} + +async function showOptimizationTrajectoryCommand(context: vscode.ExtensionContext): Promise { + const document = getActiveDocument(); + if (!document) { + return; + } + + await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + title: 'Extracting optimization trajectory...', + cancellable: false, + }, + async () => { + const result = await extractTrajectory(document.uri.fsPath); + if (!result.success || !result.data) { + vscode.window.showErrorMessage( + `Trajectory extraction failed: ${formatBridgeError(result)}` + ); + return; + } + + if (!result.data.supported || result.data.frames.length === 0) { + vscode.window.showWarningMessage( + result.data.warnings?.[0] ?? 'No optimization trajectory frames found in this output.' + ); + return; + } + + const trajectory = toTrajectoryStructure(result.data.frames, document.fileName); + OpenQCViewerPanel.createOrShow( + context.extensionUri, + trajectory, + `${document.fileName} trajectory` + ); + vscode.window.showInformationMessage( + `Loaded optimization trajectory with ${trajectory.frames?.length ?? 0} frames` + ); + } + ); +} + +function getActiveDocument(): vscode.TextDocument | undefined { + const document = vscode.window.activeTextEditor?.document; + if (!document) { + vscode.window.showErrorMessage('No active text editor'); + } + return document; +} + +async function showJsonDocument(data: unknown, language: string): Promise { + const doc = await vscode.workspace.openTextDocument({ + content: JSON.stringify(data, null, 2), + language, + }); + await vscode.window.showTextDocument(doc); +} + +function formatBridgeError(result: { error?: { message?: string }; stderr?: string }): string { + return result.error?.message ?? result.stderr ?? 'Unknown error'; +} + +function parseSupercellDims(value: string): [number, number, number] | undefined { + const values = value + .trim() + .split(/[,\s]+/) + .map(part => Number.parseInt(part, 10)); + if (values.length !== 3 || values.some(value => !Number.isInteger(value) || value < 1)) { + return undefined; + } + return values as [number, number, number]; +} + +function toTrajectoryStructure(frames: unknown[], filename: string): OpenQCStructure { + const normalizedFrames = frames.map((frame, index) => normalizeTrajectoryFrame(frame, index)); + const firstFrame = normalizedFrames[0]; + + return { + ...firstFrame, + kind: 'trajectory', + name: firstFrame.name || `${filename} trajectory`, + frames: normalizedFrames, + }; +} + +function normalizeTrajectoryFrame(frame: unknown, index: number): OpenQCStructure { + const source = (frame && typeof frame === 'object' ? frame : {}) as Partial; + return { + schemaVersion: 'openqc.structure.v1', + kind: source.kind === 'periodic' || source.kind === 'surface' ? source.kind : 'molecule', + name: source.name || `Frame ${index + 1}`, + atoms: Array.isArray(source.atoms) ? source.atoms : [], + ...(source.cell ? { cell: source.cell } : {}), + ...(Array.isArray(source.bonds) ? { bonds: source.bonds } : {}), + ...(source.metadata ? { metadata: source.metadata } : {}), + }; +} + +function renderScfConvergenceHtml(results: OpenQCResults, energies: number[]): string { + const points = toPolylinePoints(energies, 760, 320); + const min = Math.min(...energies); + const max = Math.max(...energies); + const title = escapeHtml(results.software || 'OpenQC'); + const finalEnergy = results.finalEnergy + ? `${results.finalEnergy.value} ${results.finalEnergy.unit}` + : `${energies[energies.length - 1]}`; + + return ` + + + + + OpenQC SCF Convergence + + + +

${title} Energy Convergence

+
Steps: ${energies.length} · Min: ${formatNumber(min)} · Max: ${formatNumber(max)} · Final: ${escapeHtml(finalEnergy)}
+ + + + + ${points + .split(' ') + .map(point => { + const [x, y] = point.split(','); + return ``; + }) + .join('')} + + +`; +} + +function toPolylinePoints(values: number[], width: number, height: number): string { + const min = Math.min(...values); + const max = Math.max(...values); + const range = max - min || 1; + return values + .map((value, index) => { + const x = 40 + (values.length === 1 ? 0 : (index / (values.length - 1)) * width); + const y = 20 + (1 - (value - min) / range) * height; + return `${formatNumber(x)},${formatNumber(y)}`; + }) + .join(' '); +} + +function formatNumber(value: number): string { + return Number.isFinite(value) ? value.toFixed(6).replace(/\.?0+$/, '') : String(value); +} + +function escapeHtml(value: string): string { + return value.replace(/[&<>"']/g, char => { + const escapes: Record = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + }; + return escapes[char]; + }); +} diff --git a/src/extension.ts b/src/extension.ts index a037911..6613706 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -9,28 +9,21 @@ import { DefinitionProvider, } from './providers/lsp'; import { registerASECommands } from './ase/commands'; +import { registerCalculatorCommands } from './ase/calculatorCommands'; import { registerMigrationCommands } from './commands/migrationCommands'; import { registerPythonBackendCommands } from './commands/pythonBackendCommands'; import { registerScientificBridgeCommands } from './commands/scientificBridgeCommands'; import { registerAnalyzerCommands } from './commands/analyzerCommands'; +import { registerJobCommands } from './commands/jobCommands'; import { registerAICommands } from './ai/aiCommands'; import { registerExportCommands } from './commands/exportCommands'; import { FileTypeDetector } from './managers/FileTypeDetector'; -import { MoleculeTreeProvider, JobTreeProvider, MoleculeItem, JobItem } from './sidebar'; +import { MoleculeTreeProvider, JobTreeProvider, MoleculeItem } from './sidebar'; import { OpenQCConverterProvider } from './sidebar/OpenQCConverterProvider'; import { MoleculeViewerPanel } from './visualizers/MoleculeViewerPanel'; import { OpenQCViewerPanel } from './visualizers/OpenQCViewerPanel'; -import { StructureConverter } from './visualizers/StructureConverter'; -import { Molecule3D } from './visualizers/Molecule3D'; -import { - createOpenQCStructure, - molecularStructureToOpenQCStructure, - poscarToOpenQCStructure, -} from './structures/converters'; -import type { OpenQCStructure } from './structures/OpenQCStructure'; -import { createParser } from './parsers'; +import { ViewerStructurePipeline } from './visualizers/ViewerStructurePipeline'; import { registerFormatConversionCommands } from './commands/formatConversionCommands'; -import { renderResultsWebviewHtml } from './webviews/resultsWebview'; import { Logger, LogLevel } from './utils/Logger'; import { getLanguageFeaturePolicy, readLanguageFeatureMode } from './languageFeatures'; import { listBundledLspServers } from './lsp/registry'; @@ -47,6 +40,7 @@ let fileTypeDetector: FileTypeDetector; let moleculeProvider: MoleculeTreeProvider; let jobProvider: JobTreeProvider; let converterProvider: OpenQCConverterProvider; +let viewerStructurePipeline: ViewerStructurePipeline; const logger = Logger.getInstance(); export function activate(context: vscode.ExtensionContext) { @@ -72,6 +66,7 @@ export function activate(context: vscode.ExtensionContext) { // Initialize visualization providers structureViewer = new StructureViewer(context.extensionUri); dataPlotter = new DataPlotter(context.extensionUri); + viewerStructurePipeline = new ViewerStructurePipeline(context); // Initialize sidebar providers moleculeProvider = new MoleculeTreeProvider(context); @@ -155,49 +150,8 @@ export function activate(context: vscode.ExtensionContext) { } try { - const content = document.getText(); const fileName = document.fileName; - let structure: OpenQCStructure | undefined; - - // 1. Try format-specific DTO path for periodic formats - if (software === 'VASP') { - const basename = fileName.split(/[/\\]/).pop()?.toUpperCase() ?? ''; - if (basename === 'POSCAR' || basename === 'CONTCAR') { - try { - structure = poscarToOpenQCStructure(content, fileName); - } catch { - logger.warn('POSCAR DTO parse failed, falling back to legacy path'); - } - } - } - - // 2. Try StructureConverter DTO path for other formats - if (!structure) { - try { - const converter = new StructureConverter(); - const molecular = converter.autoConvert(content, fileName); - if (molecular.atoms.length > 0) { - structure = molecularStructureToOpenQCStructure(molecular, { - sourceSoftware: software, - sourceParser: 'native', - }); - } - } catch { - logger.warn('StructureConverter DTO parse failed, falling back to legacy path'); - } - } - - // 3. Final legacy fallback: Molecule3D → atoms → createOpenQCStructure - if (!structure) { - const molecule3D = new Molecule3D(); - const atoms = molecule3D.parseAtoms(content, software); - if (atoms.length > 0) { - structure = createOpenQCStructure(atoms, { - name: fileName, - sourceSoftware: software, - }); - } - } + const structure = (await viewerStructurePipeline.parse(document, software)).structure; if (!structure || structure.atoms.length === 0) { vscode.window.showErrorMessage('No molecular structure found in file'); @@ -280,12 +234,6 @@ export function activate(context: vscode.ExtensionContext) { vscode.window.showInformationMessage('Molecules refreshed'); }), - // Sidebar: Refresh jobs view - vscode.commands.registerCommand('openqc.sidebar.refreshJobs', () => { - jobProvider.refresh(); - vscode.window.showInformationMessage('Jobs refreshed'); - }), - // Sidebar: Open molecule vscode.commands.registerCommand('openqc.sidebar.openMolecule', async (item: MoleculeItem) => { if (item.filePath) { @@ -306,115 +254,6 @@ export function activate(context: vscode.ExtensionContext) { vscode.window.showInformationMessage(`Removed molecule: ${item.label}`); }), - // Sidebar: Run calculation - vscode.commands.registerCommand('openqc.sidebar.runCalculation', () => { - vscode.window - .showInputBox({ - prompt: 'Enter calculation name', - placeHolder: 'e.g., Geometry Optimization', - }) - .then(name => { - if (name) { - jobProvider.addJob(new JobItem(`job-${Date.now()}`, name, 'queued', 0, 'Gaussian')); - vscode.window.showInformationMessage(`Started calculation: ${name}`); - } - }); - }), - - // Sidebar: View results - vscode.commands.registerCommand('openqc.sidebar.viewResults', async (item: JobItem) => { - if (item.status !== 'completed' && item.status !== 'failed') { - vscode.window.showInformationMessage(`Results not available for ${item.status} jobs`); - return; - } - - // Create a results panel - const panel = vscode.window.createWebviewPanel( - 'openqc.results', - `Results: ${item.label}`, - vscode.ViewColumn.Two, - { - retainContextWhenHidden: true, - localResourceRoots: [], - } - ); - - // Generate results content - const resultsData = { - jobId: item.id, - jobName: item.label, - software: item.software, - status: item.status, - startTime: item.startTime?.toISOString(), - endTime: item.endTime?.toISOString(), - duration: - typeof item.tooltip === 'string' ? item.tooltip.split('Duration: ')[1] : undefined, - // In a real implementation, this would come from actual job output - output: `Results for ${item.label}\n\nSoftware: ${item.software}\nStatus: ${item.status}\n\nSample output data would appear here.\n\nFor completed jobs, this would include:\n- Final energies\n- Optimized geometries\n- Convergence data\n- Properties calculated\n\nFor failed jobs, this would include:\n- Error messages\n- Stack traces\n- Diagnostic information`, - }; - - panel.webview.html = renderResultsWebviewHtml(resultsData, panel.webview.cspSource); - }), - - // Sidebar: Export data - vscode.commands.registerCommand('openqc.sidebar.exportData', async (item: JobItem) => { - if (item.status !== 'completed') { - vscode.window.showWarningMessage('Can only export data from completed jobs'); - return; - } - - const uri = await vscode.window.showSaveDialog({ - filters: { - JSON: ['json'], - CSV: ['csv'], - 'All Files': ['*'], - }, - defaultUri: vscode.Uri.file(`${item.label.replace(/\s+/g, '_')}_results.json`), - saveLabel: 'Export Results', - }); - - if (uri) { - try { - const exportData = { - jobId: item.id, - jobName: item.label, - software: item.software, - status: item.status, - startTime: item.startTime?.toISOString(), - endTime: item.endTime?.toISOString(), - timestamp: new Date().toISOString(), - // In a real implementation, this would include actual job results - data: { - energies: [-76.0, -76.1, -76.2], - forces: [ - [0.01, 0.02, 0.03], - [-0.01, -0.02, -0.03], - ], - converged: true, - }, - }; - - const content = JSON.stringify(exportData, null, 2); - await vscode.workspace.fs.writeFile(uri, Buffer.from(content)); - vscode.window.showInformationMessage(`Exported ${item.label} to ${uri.fsPath}`); - } catch (error) { - vscode.window.showErrorMessage(`Failed to export data: ${error}`); - } - } - }), - - // Sidebar: Cancel job - vscode.commands.registerCommand('openqc.sidebar.cancelJob', (item: JobItem) => { - jobProvider.cancelJob(item.id); - vscode.window.showInformationMessage(`Cancelled job: ${item.label}`); - }), - - // Sidebar: Restart job - vscode.commands.registerCommand('openqc.sidebar.restartJob', (item: JobItem) => { - jobProvider.restartJob(item.id); - vscode.window.showInformationMessage(`Restarted job: ${item.label}`); - }), - // Auto-start LSP on document open vscode.workspace.onDidOpenTextDocument(async document => { if (languageFeaturePolicy.autoStartLsp) { @@ -449,12 +288,19 @@ export function activate(context: vscode.ExtensionContext) { } // Register ASE commands + registerASECommands(context); + registerCalculatorCommands(context); registerPythonBackendCommands(context); registerScientificBridgeCommands(context); registerAnalyzerCommands(context); + registerJobCommands(context, jobProvider); registerMigrationCommands(context); registerAICommands(context); - registerExportCommands(context); + registerExportCommands( + context, + () => OpenQCViewerPanel.getCurrentStructureData(), + () => OpenQCViewerPanel.saveCurrentStructureToSource() + ); // Register DSL authoring context command for agent workflows registerDslAuthoringContextCommand(context, () => lspManager); @@ -472,6 +318,7 @@ export function activate(context: vscode.ExtensionContext) { } export async function deactivate() { + viewerStructurePipeline?.clear(); if (lspManager) { await lspManager.dispose(); } diff --git a/src/performance/cacheManager.ts b/src/performance/cacheManager.ts index af06232..1ceacc3 100644 --- a/src/performance/cacheManager.ts +++ b/src/performance/cacheManager.ts @@ -302,6 +302,7 @@ export class LRUCache { this.cleanupTimer = setInterval(() => { this.cleanup(); }, this.config.cleanupInterval); + this.cleanupTimer.unref?.(); } /** diff --git a/src/performance/computeWorker.ts b/src/performance/computeWorker.ts index 3500571..6e25361 100644 --- a/src/performance/computeWorker.ts +++ b/src/performance/computeWorker.ts @@ -6,6 +6,11 @@ */ import { ASEAtoms } from '../ase/ASEConverter'; +import { + convertParameterValue, + getParameterMappings, + ParameterMapping, +} from '../utils/migration/params'; // Worker message types export enum WorkerMessageType { @@ -133,72 +138,40 @@ class ComputeWorker { * Parse structure from text content */ private async parseStructure(payload: ParseStructurePayload): Promise { - // Simulate heavy parsing (actual implementation would call Python backend) - const { content, format, options } = payload; + const { content, format } = payload; - // Basic validation if (!content || content.trim().length === 0) { throw new Error('Empty content provided'); } - // For now, return a mock structure - // In production, this would call the Python converter - const lines = content.split('\n'); - const atomCount = Math.min(lines.length, 1000); - - const atoms: ASEAtoms = { - chemical_symbols: Array(atomCount).fill('C'), - positions: Array(atomCount) - .fill(0) - .map((_, i) => [i * 1.5, i * 1.5, i * 1.5]), - pbc: [true, true, true], - cell: [ - [10, 0, 0], - [0, 10, 0], - [0, 0, 10], - ], - info: { format, parsed: true }, - }; + const normalizedFormat = String(format || '').toLowerCase(); + if (['xyz', 'extxyz'].includes(normalizedFormat)) { + return this.parseXyz(content, normalizedFormat); + } + if (['vasp', 'poscar', 'contcar'].includes(normalizedFormat)) { + return this.parsePoscar(content, normalizedFormat); + } - return atoms; + throw new Error(`Unsupported structure format for worker-local parsing: ${format}`); } /** * Convert atoms to target format */ private async convertFormat(payload: ConvertFormatPayload): Promise { - const { atoms, targetFormat, options } = payload; + const { atoms, targetFormat } = payload; + const normalizedTarget = String(targetFormat || '').toLowerCase(); - // Validate input - if (!atoms || !atoms.chemical_symbols || atoms.chemical_symbols.length === 0) { - throw new Error('Invalid atoms object'); - } - - // Simulate conversion (would call Python backend) - const lines: string[] = []; + this.validateAtoms(atoms); - // Header - lines.push(`# Converted to ${targetFormat}`); - lines.push(`# Atoms: ${atoms.chemical_symbols.length}`); - lines.push(''); - - // Cell (if periodic) - if (atoms.cell && atoms.pbc.some(p => p)) { - lines.push('# Unit cell:'); - atoms.cell.forEach(row => { - lines.push(row.map(v => v.toFixed(6)).join(' ')); - }); - lines.push(''); + if (['xyz', 'extxyz'].includes(normalizedTarget)) { + return this.formatXyz(atoms, normalizedTarget === 'extxyz'); + } + if (['vasp', 'poscar', 'contcar'].includes(normalizedTarget)) { + return this.formatPoscar(atoms); } - // Atoms - lines.push('# Atomic positions:'); - atoms.chemical_symbols.forEach((symbol, i) => { - const pos = atoms.positions[i]; - lines.push(`${symbol} ${pos.map(v => v.toFixed(6)).join(' ')}`); - }); - - return lines.join('\n'); + throw new Error(`Unsupported worker conversion target format: ${targetFormat}`); } /** @@ -207,6 +180,7 @@ class ComputeWorker { private async validateStructure(payload: ValidateStructurePayload): Promise> { const { atoms, checks } = payload; const results: Record = {}; + this.validateAtoms(atoms); for (const check of checks) { switch (check) { @@ -242,6 +216,7 @@ class ComputeWorker { ): Promise> { const { atoms, properties } = payload; const results: Record = {}; + this.validateAtoms(atoms); for (const prop of properties) { switch (prop) { @@ -274,28 +249,80 @@ class ComputeWorker { */ private async migrateParameters(payload: MigrateParametersPayload): Promise> { const { sourceFormat, targetFormat, parameters } = payload; - - // Simulate parameter mapping + const source = String(sourceFormat || '').toLowerCase(); + const target = String(targetFormat || '').toLowerCase(); const migrated: Record = {}; + const warnings: string[] = []; + const notes = [`Migrated from ${source} to ${target}`]; + const unmapped: string[] = []; - // Example mappings - if (sourceFormat === 'vasp' && targetFormat === 'cp2k') { - if (parameters.ENCUT) { - migrated.CUTOFF = Math.round(parameters.ENCUT * 1.1); // CP2K needs higher cutoff - } - if (parameters.EDIFF) { - migrated.EPSCF = parameters.EDIFF; + if (!parameters || typeof parameters !== 'object' || Array.isArray(parameters)) { + throw new Error('parameters must be a key-value object'); + } + + const mappings = getParameterMappings(source, target); + if (mappings.length === 0) { + warnings.push(`No worker-local parameter mappings for ${source} -> ${target}`); + return { + migrated, + warnings, + notes, + unmapped: Object.keys(parameters), + supported: false, + }; + } + + const mappingLookup = new Map(); + mappings.forEach(mapping => mappingLookup.set(mapping.sourceParam.toUpperCase(), mapping)); + + Object.entries(parameters).forEach(([key, value]) => { + const baseKey = this.getBaseParameterName(key); + const mapping = + mappingLookup.get(key.toUpperCase()) || mappingLookup.get(baseKey.toUpperCase()); + + if (!mapping) { + unmapped.push(key); + return; } - } else if (sourceFormat === 'qe' && targetFormat === 'vasp') { - if (parameters.ecutwfc) { - migrated.ENCUT = parameters.ecutwfc; + + try { + const convertedValue = convertParameterValue(mapping, value); + if ( + mapping.unitFactor !== undefined && + typeof convertedValue === 'number' && + !Number.isFinite(convertedValue) + ) { + throw new Error(`non-numeric value cannot be converted with unit factor`); + } + migrated[mapping.targetParam] = this.cleanConvertedValue(convertedValue); + if (mapping.unitFactor !== undefined && mapping.unitFactor !== 1) { + notes.push( + `${key} -> ${mapping.targetParam} converted with factor ${mapping.unitFactor}` + ); + } + } catch (error) { + warnings.push( + `Failed to map ${key} to ${mapping.targetParam}: ${ + error instanceof Error ? error.message : String(error) + }` + ); } + }); + + if (unmapped.length > 0) { + warnings.push( + `${unmapped.length} parameters could not be mapped: ${unmapped + .slice(0, 5) + .join(', ')}${unmapped.length > 5 ? '...' : ''}` + ); } return { migrated, - warnings: [], - notes: [`Migrated from ${sourceFormat} to ${targetFormat}`], + warnings, + notes, + unmapped, + supported: true, }; } @@ -331,9 +358,12 @@ class ComputeWorker { * Check cell consistency */ private checkCellConsistency(atoms: ASEAtoms): any { - if (!atoms.cell || !atoms.pbc.some(p => p)) { + if (!atoms.pbc.some(p => p)) { return { valid: true, warnings: ['Non-periodic system'] }; } + if (!atoms.cell) { + return { valid: false, warnings: ['Periodic system is missing unit-cell vectors'] }; + } const warnings: string[] = []; @@ -378,10 +408,37 @@ class ComputeWorker { * Check charge neutrality (simplified) */ private checkChargeNeutrality(atoms: ASEAtoms): any { - // Simplified check - would need actual charges in production + const charges = this.extractCharges(atoms); + if (!charges) { + return { + valid: true, + status: 'skipped', + netCharge: null, + warnings: ['No per-atom charges available; skipped charge neutrality check'], + }; + } + + if (charges.length !== atoms.chemical_symbols.length) { + return { + valid: false, + status: 'skipped', + netCharge: null, + warnings: [ + `Charge array length ${charges.length} does not match atom count ${atoms.chemical_symbols.length}`, + ], + }; + } + + const netCharge = charges.reduce((sum, charge) => sum + charge, 0); + const tolerance = Number(atoms.info?.chargeTolerance ?? 1e-6); + const valid = Math.abs(netCharge) <= tolerance; + return { - valid: true, - warnings: ['Charge neutrality check not implemented'], + valid, + status: 'checked', + netCharge, + tolerance, + warnings: valid ? [] : [`Net charge is ${netCharge.toFixed(6)} e`], }; } @@ -391,26 +448,53 @@ class ComputeWorker { private calculateCenterOfMass(atoms: ASEAtoms): number[] { const n = atoms.chemical_symbols.length; const com = [0, 0, 0]; + const masses = this.getMasses(atoms); + const totalMass = masses.reduce((sum, mass) => sum + mass, 0); + + if (n === 0 || totalMass === 0) { + return com; + } for (let i = 0; i < n; i++) { for (let j = 0; j < 3; j++) { - com[j] += atoms.positions[i][j]; + com[j] += atoms.positions[i][j] * masses[i]; } } - return com.map(v => v / n); + return com.map(v => this.cleanNumber(v / totalMass)); } /** - * Calculate moment of inertia tensor (simplified) + * Calculate moment of inertia tensor about the center of mass. */ private calculateMomentOfInertia(atoms: ASEAtoms): number[][] { - // Simplified - return identity matrix - return [ - [1, 0, 0], - [0, 1, 0], - [0, 0, 1], + const com = this.calculateCenterOfMass(atoms); + const masses = this.getMasses(atoms); + const tensor = [ + [0, 0, 0], + [0, 0, 0], + [0, 0, 0], ]; + + for (let i = 0; i < atoms.chemical_symbols.length; i++) { + const mass = masses[i]; + const x = atoms.positions[i][0] - com[0]; + const y = atoms.positions[i][1] - com[1]; + const z = atoms.positions[i][2] - com[2]; + + tensor[0][0] += mass * (y * y + z * z); + tensor[1][1] += mass * (x * x + z * z); + tensor[2][2] += mass * (x * x + y * y); + tensor[0][1] -= mass * x * y; + tensor[0][2] -= mass * x * z; + tensor[1][2] -= mass * y * z; + } + + tensor[1][0] = tensor[0][1]; + tensor[2][0] = tensor[0][2]; + tensor[2][1] = tensor[1][2]; + + return tensor.map(row => row.map(value => this.cleanNumber(value))); } /** @@ -445,8 +529,373 @@ class ComputeWorker { } return Math.sqrt(sum); } + + private parseXyz(content: string, format: string): ASEAtoms { + const rawLines = content.split(/\r?\n/); + const lines = rawLines.map(line => line.trim()).filter(line => line.length > 0); + if (lines.length === 0) { + throw new Error('Invalid XYZ: no atom lines found'); + } + + const declaredCount = Number.parseInt(lines[0], 10); + const hasHeader = Number.isInteger(declaredCount) && String(declaredCount) === lines[0]; + const comment = hasHeader ? (rawLines[1] ?? '').trim() : ''; + const atomLines = hasHeader ? rawLines.slice(2, declaredCount + 2) : rawLines; + const parsed = this.parseAtomCoordinateLines(atomLines); + + if (hasHeader && parsed.chemical_symbols.length !== declaredCount) { + throw new Error( + `Invalid XYZ: declared ${declaredCount} atoms but parsed ${parsed.chemical_symbols.length}` + ); + } + if (parsed.chemical_symbols.length === 0) { + throw new Error('Invalid XYZ: no valid atom coordinate lines found'); + } + + return { + chemical_symbols: parsed.chemical_symbols, + positions: parsed.positions, + pbc: [false, false, false], + info: { + format, + comment, + parsed: true, + parser: 'compute-worker-native', + }, + }; + } + + private parsePoscar(content: string, format: string): ASEAtoms { + const lines = content + .split(/\r?\n/) + .map(line => line.trim()) + .filter(line => line.length > 0); + if (lines.length < 8) { + throw new Error('Invalid POSCAR: too few lines'); + } + + const title = lines[0]; + const scale = this.parseFiniteNumber(lines[1], 'POSCAR scale'); + const latticeScale = scale === 0 ? 1 : scale; + const cell = [ + this.parseVector(lines[2], latticeScale, 'POSCAR cell a'), + this.parseVector(lines[3], latticeScale, 'POSCAR cell b'), + this.parseVector(lines[4], latticeScale, 'POSCAR cell c'), + ]; + + const line5 = lines[5].split(/\s+/); + const line6 = lines[6].split(/\s+/); + const hasElementLine = line5.every(token => /^[A-Za-z][A-Za-z0-9_+-]*$/.test(token)); + const elements = hasElementLine ? line5.map(element => this.normalizeElement(element)) : []; + const counts = (hasElementLine ? line6 : line5).map((token, index) => { + const count = Number.parseInt(token, 10); + if (!Number.isInteger(count) || count < 0) { + throw new Error(`Invalid POSCAR atom count at index ${index + 1}`); + } + return count; + }); + const symbols = hasElementLine ? elements : counts.map((_, index) => `X${index + 1}`); + + let cursor = hasElementLine ? 7 : 6; + let mode = lines[cursor].toLowerCase(); + if (mode.startsWith('s')) { + cursor += 1; + mode = lines[cursor].toLowerCase(); + } + const direct = mode.startsWith('d'); + const cartesian = mode.startsWith('c') || mode.startsWith('k'); + if (!direct && !cartesian) { + throw new Error(`Invalid POSCAR coordinate mode: ${lines[cursor]}`); + } + cursor += 1; + + const chemicalSymbols: string[] = []; + const positions: number[][] = []; + for (let speciesIndex = 0; speciesIndex < symbols.length; speciesIndex++) { + for (let atomIndex = 0; atomIndex < counts[speciesIndex]; atomIndex++) { + if (cursor >= lines.length) { + throw new Error('Invalid POSCAR: not enough coordinate lines'); + } + const fractionalOrCartesian = this.parseVector(lines[cursor], 1, 'POSCAR atom position'); + chemicalSymbols.push(symbols[speciesIndex]); + positions.push( + direct + ? this.fractionalToCartesian(fractionalOrCartesian, cell) + : fractionalOrCartesian.map(value => value * latticeScale) + ); + cursor += 1; + } + } + + return { + chemical_symbols: chemicalSymbols, + positions: positions.map(position => position.map(value => this.cleanNumber(value))), + cell, + pbc: [true, true, true], + info: { + format, + title, + coordinateMode: direct ? 'direct' : 'cartesian', + parsed: true, + parser: 'compute-worker-native', + }, + }; + } + + private formatXyz(atoms: ASEAtoms, extended: boolean): string { + const comment = + extended && atoms.cell + ? `Lattice="${atoms.cell + .flatMap(vector => vector.slice(0, 3)) + .map(value => this.formatCoordinate(value)) + .join(' ')}" Properties=species:S:1:pos:R:3 pbc="${atoms.pbc + .map(value => (value ? 'T' : 'F')) + .join(' ')}"` + : String(atoms.info?.comment ?? 'OpenQC worker export'); + + const lines = [String(atoms.chemical_symbols.length), comment]; + atoms.chemical_symbols.forEach((symbol, index) => { + lines.push( + `${this.normalizeElement(symbol)} ${atoms.positions[index] + .slice(0, 3) + .map(value => this.formatCoordinate(value)) + .join(' ')}` + ); + }); + + return lines.join('\n'); + } + + private formatPoscar(atoms: ASEAtoms): string { + if (!atoms.cell) { + throw new Error('Cannot convert to POSCAR/VASP without unit-cell vectors'); + } + + const groups = this.groupAtomIndicesBySymbol(atoms); + const lines = [ + String(atoms.info?.title ?? 'OpenQC worker export'), + '1.000000000000', + ...atoms.cell.map(vector => + vector + .slice(0, 3) + .map(value => this.formatCoordinate(value)) + .join(' ') + ), + groups.map(group => group.symbol).join(' '), + groups.map(group => String(group.indices.length)).join(' '), + 'Cartesian', + ]; + + groups.forEach(group => { + group.indices.forEach(index => { + lines.push( + atoms.positions[index] + .slice(0, 3) + .map(value => this.formatCoordinate(value)) + .join(' ') + ); + }); + }); + + return lines.join('\n'); + } + + private groupAtomIndicesBySymbol(atoms: ASEAtoms): Array<{ symbol: string; indices: number[] }> { + const groups: Array<{ symbol: string; indices: number[] }> = []; + const bySymbol = new Map(); + + atoms.chemical_symbols.forEach((rawSymbol, index) => { + const symbol = this.normalizeElement(rawSymbol); + let indices = bySymbol.get(symbol); + if (!indices) { + indices = []; + bySymbol.set(symbol, indices); + groups.push({ symbol, indices }); + } + indices.push(index); + }); + + return groups; + } + + private parseAtomCoordinateLines( + lines: string[] + ): Pick { + const chemicalSymbols: string[] = []; + const positions: number[][] = []; + for (const line of lines) { + const stripped = line.trim(); + if (!stripped || stripped.startsWith('#')) { + continue; + } + const parts = stripped.split(/\s+/); + if (parts.length < 4 || !/^[A-Za-z][A-Za-z0-9_+-]*$/.test(parts[0])) { + continue; + } + const position = [ + Number.parseFloat(parts[1]), + Number.parseFloat(parts[2]), + Number.parseFloat(parts[3]), + ]; + if (position.some(value => !Number.isFinite(value))) { + continue; + } + chemicalSymbols.push(this.normalizeElement(parts[0])); + positions.push(position); + } + + return { chemical_symbols: chemicalSymbols, positions }; + } + + private parseVector(line: string, scale: number, label: string): number[] { + const parts = line.split(/\s+/); + if (parts.length < 3) { + throw new Error(`Invalid ${label}: expected 3 numeric values`); + } + return [ + this.parseFiniteNumber(parts[0], label) * scale, + this.parseFiniteNumber(parts[1], label) * scale, + this.parseFiniteNumber(parts[2], label) * scale, + ]; + } + + private parseFiniteNumber(value: string, label: string): number { + const number = Number.parseFloat(value); + if (!Number.isFinite(number)) { + throw new Error(`Invalid ${label}: ${value}`); + } + return number; + } + + private fractionalToCartesian(fractional: number[], cell: number[][]): number[] { + return [ + fractional[0] * cell[0][0] + fractional[1] * cell[1][0] + fractional[2] * cell[2][0], + fractional[0] * cell[0][1] + fractional[1] * cell[1][1] + fractional[2] * cell[2][1], + fractional[0] * cell[0][2] + fractional[1] * cell[1][2] + fractional[2] * cell[2][2], + ]; + } + + private normalizeElement(value: string): string { + const letters = value.replace(/[^A-Za-z]/g, '').slice(0, 2); + if (!letters) { + return 'X'; + } + return letters.charAt(0).toUpperCase() + letters.slice(1).toLowerCase(); + } + + private extractCharges(atoms: ASEAtoms): number[] | undefined { + const candidate = + (atoms as any).charges ?? + atoms.info?.charges ?? + atoms.info?.initial_charges ?? + atoms.info?.formal_charges; + if (!Array.isArray(candidate)) { + return undefined; + } + + const charges = candidate.map(value => Number(value)); + if (charges.some(value => !Number.isFinite(value))) { + return undefined; + } + return charges; + } + + private getMasses(atoms: ASEAtoms): number[] { + if ( + Array.isArray(atoms.masses) && + atoms.masses.length === atoms.chemical_symbols.length && + atoms.masses.every(mass => Number.isFinite(mass) && mass > 0) + ) { + return atoms.masses; + } + + return atoms.chemical_symbols.map(symbol => ATOMIC_MASSES[symbol] ?? 1); + } + + private cleanNumber(value: number): number { + return Math.abs(value) < 1e-12 ? 0 : Number(value.toFixed(12)); + } + + private cleanConvertedValue(value: any): any { + if (typeof value === 'number' && Number.isFinite(value)) { + return this.cleanNumber(value); + } + return value; + } + + private formatCoordinate(value: number): string { + return this.cleanNumber(value).toFixed(6); + } + + private getBaseParameterName(key: string): string { + const parts = key.split('.'); + return parts[parts.length - 1]; + } + + private validateAtoms(atoms: ASEAtoms | null | undefined): void { + if (!atoms || !Array.isArray(atoms.chemical_symbols) || !Array.isArray(atoms.positions)) { + throw new Error('Invalid atoms object'); + } + if (atoms.chemical_symbols.length === 0) { + throw new Error('atoms must contain at least one atom'); + } + if (atoms.chemical_symbols.length !== atoms.positions.length) { + throw new Error('chemical_symbols length must match positions length'); + } + if (!Array.isArray(atoms.pbc) || atoms.pbc.length !== 3) { + throw new Error('pbc must be a 3-element boolean array'); + } + + atoms.positions.forEach((position, index) => { + if ( + !Array.isArray(position) || + position.length < 3 || + position.slice(0, 3).some(value => !Number.isFinite(value)) + ) { + throw new Error(`Atom ${index}: position must contain three finite numbers`); + } + }); + + if (atoms.cell !== undefined && atoms.cell !== null) { + if ( + !Array.isArray(atoms.cell) || + atoms.cell.length !== 3 || + atoms.cell.some( + vector => + !Array.isArray(vector) || + vector.length < 3 || + vector.slice(0, 3).some(value => !Number.isFinite(value)) + ) + ) { + throw new Error('cell must contain three finite 3D vectors'); + } + } + } } +const ATOMIC_MASSES: Record = { + H: 1.008, + He: 4.002602, + Li: 6.94, + Be: 9.0121831, + B: 10.81, + C: 12.011, + N: 14.007, + O: 15.999, + F: 18.998403163, + Ne: 20.1797, + Na: 22.98976928, + Mg: 24.305, + Al: 26.9815385, + Si: 28.085, + P: 30.973761998, + S: 32.06, + Cl: 35.45, + Ar: 39.948, + K: 39.0983, + Ca: 40.078, +}; + // Worker instance const worker = new ComputeWorker(); diff --git a/src/performance/incrementalParser.ts b/src/performance/incrementalParser.ts index 5647f14..b6d087d 100644 --- a/src/performance/incrementalParser.ts +++ b/src/performance/incrementalParser.ts @@ -51,6 +51,12 @@ export interface DocumentVersion { lineCount: number; } +interface DocumentSnapshot { + version: number; + content: string; + result: ParseResult; +} + /** * Incremental parser configuration */ @@ -74,6 +80,7 @@ export class IncrementalParser { private config: IncrementalParserConfig; private parseFunction: (content: string) => T; private diffFunction?: (oldAst: T, newAst: T) => ChangeSet; + private snapshots: Map> = new Map(); constructor( parseFunction: (content: string) => T, @@ -91,11 +98,12 @@ export class IncrementalParser { */ async parse(document: vscode.TextDocument): Promise> { const uri = document.uri.toString(); + const filePath = document.uri.fsPath || uri; const version = document.version; const content = document.getText(); // Check cache - const cacheKey = CacheKeyGenerator.forFile(document.uri.fsPath, `parse:${version}`); + const cacheKey = CacheKeyGenerator.forFile(filePath, `parse:${version}`); const cached = this.cache.get(cacheKey); if (cached && cached.version === version) { @@ -104,11 +112,11 @@ export class IncrementalParser { // Check if incremental parsing is beneficial if (this.shouldUseIncremental(document)) { - return this.parseIncremental(document, content); + return this.parseIncremental(document, uri, filePath, content); } // Full parse - return this.parseFull(uri, version, content); + return this.parseFull(uri, filePath, version, content); } /** @@ -116,29 +124,32 @@ export class IncrementalParser { */ private async parseIncremental( document: vscode.TextDocument, + uri: string, + filePath: string, content: string ): Promise> { - const uri = document.uri.toString(); const version = document.version; // Find previous version - const previousKey = this.findPreviousVersion(uri, version); - const previous = previousKey ? this.cache.get(previousKey) : undefined; + const previous = this.findPreviousVersion(uri, version); if (!previous) { - return this.parseFull(uri, version, content); + return this.parseFull(uri, filePath, version, content); } // Get content changes - const changes = this.detectChanges(document, previous); + const lineChanges = this.detectChanges(content, previous.content); // If changes are too large, do full parse - if (this.changesTooLarge(changes, document.lineCount)) { - return this.parseFull(uri, version, content); + if (this.changesTooLarge(lineChanges, document.lineCount)) { + return this.parseFull(uri, filePath, version, content); } // Parse only changed regions - const partialAst = await this.parsePartial(content, changes, previous.ast); + const partialAst = await this.parsePartial(content); + const changes = this.diffFunction + ? this.diffFunction(previous.result.ast, partialAst) + : lineChanges; const result: ParseResult = { ast: partialAst, @@ -149,8 +160,9 @@ export class IncrementalParser { }; // Cache result - const cacheKey = CacheKeyGenerator.forFile(document.uri.fsPath, `parse:${version}`); + const cacheKey = CacheKeyGenerator.forFile(filePath, `parse:${version}`); this.cache.set(cacheKey, result); + this.snapshots.set(uri, { version, content, result }); return result; } @@ -158,7 +170,12 @@ export class IncrementalParser { /** * Full parse */ - private async parseFull(uri: string, version: number, content: string): Promise> { + private async parseFull( + uri: string, + filePath: string, + version: number, + content: string + ): Promise> { const ast = this.parseFunction(content); const result: ParseResult = { @@ -170,8 +187,9 @@ export class IncrementalParser { }; // Cache result - const cacheKey = CacheKeyGenerator.forFile(uri, `parse:${version}`); + const cacheKey = CacheKeyGenerator.forFile(filePath, `parse:${version}`); this.cache.set(cacheKey, result); + this.snapshots.set(uri, { version, content, result }); return result; } @@ -179,26 +197,70 @@ export class IncrementalParser { /** * Parse partial content */ - private async parsePartial(content: string, changes: ChangeSet, previousAst: T): Promise { - // This is a simplified implementation - // In a real implementation, this would: - // 1. Extract affected regions from previous AST - // 2. Parse only changed regions - // 3. Merge results with previous AST - - // For now, do a full parse but mark it as partial + private async parsePartial(content: string): Promise { + // Generic AST merging is parser-specific, so the shared fallback reparses + // the document while preserving exact line-level change metadata. return this.parseFunction(content); } /** * Detect changes between document versions */ - private detectChanges(document: vscode.TextDocument, previous: ParseResult): ChangeSet { + private detectChanges(currentContent: string, previousContent: string): ChangeSet { + const currentLines = currentContent.split(/\r?\n/); + const previousLines = previousContent.split(/\r?\n/); const changes: ChangeSet = { added: [], removed: [], modified: [] }; - // Get document changes from VSCode - // This would use vscode.workspace.onDidChangeTextDocument in a real implementation - // For now, return empty changes + let prefix = 0; + while ( + prefix < previousLines.length && + prefix < currentLines.length && + previousLines[prefix] === currentLines[prefix] + ) { + prefix++; + } + + let previousSuffix = previousLines.length - 1; + let currentSuffix = currentLines.length - 1; + while ( + previousSuffix >= prefix && + currentSuffix >= prefix && + previousLines[previousSuffix] === currentLines[currentSuffix] + ) { + previousSuffix--; + currentSuffix--; + } + + const removedCount = previousSuffix - prefix + 1; + const addedCount = currentSuffix - prefix + 1; + if (removedCount <= 0 && addedCount <= 0) { + return changes; + } + + if (removedCount <= 0) { + changes.added.push({ + startLine: prefix, + endLine: prefix + addedCount, + startColumn: 0, + endColumn: 0, + }); + } else if (addedCount <= 0) { + changes.removed.push({ + startLine: prefix, + endLine: prefix + removedCount, + startColumn: 0, + endColumn: 0, + }); + } else { + const lastLine = currentLines[Math.max(prefix, prefix + addedCount - 1)] ?? ''; + changes.modified.push({ + startLine: prefix, + endLine: prefix + addedCount, + startColumn: 0, + endColumn: lastLine.length, + }); + } + return changes; } @@ -225,10 +287,15 @@ export class IncrementalParser { /** * Find previous cached version */ - private findPreviousVersion(uri: string, currentVersion: number): string | undefined { - // This would search the cache for the most recent version before currentVersion - // For now, return undefined - return undefined; + private findPreviousVersion( + uri: string, + currentVersion: number + ): DocumentSnapshot | undefined { + const snapshot = this.snapshots.get(uri); + if (!snapshot || snapshot.version >= currentVersion) { + return undefined; + } + return snapshot; } /** @@ -236,6 +303,7 @@ export class IncrementalParser { */ clearCache(): void { this.cache.clear(); + this.snapshots.clear(); } /** @@ -254,12 +322,15 @@ export class ASTDiffer { * Diff two ASTs */ static diff(oldAst: any, newAst: any): ChangeSet { - const changes: ChangeSet = { added: [], removed: [], modified: [] }; - - // This is a simplified implementation - // Real implementation would traverse ASTs and compute minimal diff + if (ASTDiffer.nodesEqual(oldAst, newAst)) { + return { added: [], removed: [], modified: [] }; + } - return changes; + return { + added: [], + removed: [], + modified: [{ startLine: 0, endLine: 1, startColumn: 0, endColumn: 0 }], + }; } /** diff --git a/src/performance/workerManager.ts b/src/performance/workerManager.ts index adac59e..3c91daa 100644 --- a/src/performance/workerManager.ts +++ b/src/performance/workerManager.ts @@ -5,7 +5,7 @@ */ import * as vscode from 'vscode'; -import { WorkerMessage, WorkerResponse, WorkerMessageType } from './computeWorker'; +import { ComputeWorker, WorkerMessage, WorkerMessageType } from './computeWorker'; export interface WorkerTask { id: string; @@ -39,6 +39,9 @@ export class WorkerManager { private taskMap: Map = new Map(); private maxWorkers: number; private taskCounter: number = 0; + private activeTasks: number = 0; + private completedDurations: number[] = []; + private readonly computeWorker = new ComputeWorker(); private stats: WorkerStats = { activeWorkers: 0, pendingTasks: 0, @@ -212,14 +215,10 @@ export class WorkerManager { * Process task queue */ private processQueue(): void { - // Check if we can start more tasks - if (this.taskQueue.length === 0) { - return; + while (this.taskQueue.length > 0 && this.activeTasks < this.maxWorkers) { + void this.executeTask(this.taskQueue.shift()!); } - - // For now, execute tasks synchronously - // In production, this would use actual WebWorkers - this.executeTask(this.taskQueue.shift()!); + this.updateQueueStats(); } /** @@ -228,13 +227,20 @@ export class WorkerManager { private async executeTask(task: WorkerTask): Promise { task.status = 'running'; task.startTime = Date.now(); + this.activeTasks++; + this.updateQueueStats(); try { - // Simulate worker execution - // In production, this would send message to WebWorker - const result = await this.simulateWorkerExecution(task); + const response = await this.computeWorker.processMessage({ + id: task.id, + type: task.type, + payload: task.payload, + }); + if (!response.success) { + throw new Error(response.error || 'Worker task failed'); + } - task.result = result; + task.result = response.result; task.status = 'completed'; task.endTime = Date.now(); @@ -245,49 +251,24 @@ export class WorkerManager { task.endTime = Date.now(); this.stats.failedTasks++; + } finally { + this.activeTasks = Math.max(0, this.activeTasks - 1); + if (task.startTime && task.endTime) { + this.completedDurations.push(task.endTime - task.startTime); + this.stats.averageDuration = + this.completedDurations.reduce((sum, duration) => sum + duration, 0) / + this.completedDurations.length; + } + this.updateQueueStats(); } - this.stats.pendingTasks = this.taskQueue.length; - // Process next task this.processQueue(); } - /** - * Simulate worker execution (for testing) - */ - private async simulateWorkerExecution(task: WorkerTask): Promise { - // Simulate computation time - await new Promise(resolve => setTimeout(resolve, 100)); - - // Return mock result - switch (task.type) { - case WorkerMessageType.PARSE_STRUCTURE: - return { - chemical_symbols: ['C', 'C', 'C'], - positions: [ - [0, 0, 0], - [1, 0, 0], - [2, 0, 0], - ], - pbc: [false, false, false], - }; - - case WorkerMessageType.CONVERT_FORMAT: - return '# Converted structure\nC 0 0 0\nC 1 0 0\n'; - - case WorkerMessageType.VALIDATE_STRUCTURE: - return { valid: true, warnings: [] }; - - case WorkerMessageType.CALCULATE_PROPERTIES: - return { center_of_mass: [1, 0, 0] }; - - case WorkerMessageType.MIGRATE_PARAMETERS: - return { migrated: {}, warnings: [] }; - - default: - throw new Error(`Unknown task type: ${task.type}`); - } + private updateQueueStats(): void { + this.stats.activeWorkers = this.activeTasks; + this.stats.pendingTasks = this.taskQueue.length; } } diff --git a/src/providers/DataPlotter.ts b/src/providers/DataPlotter.ts index bc7286b..f22f428 100644 --- a/src/providers/DataPlotter.ts +++ b/src/providers/DataPlotter.ts @@ -1,5 +1,8 @@ import * as vscode from 'vscode'; import { FileTypeDetector, QuantumChemistrySoftware } from '../managers/FileTypeDetector'; +import { generateNonce } from '../utils/nonce'; + +const NUMBER_CAPTURE = '([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[Ee][+-]?\\d+)?)'; export class DataPlotter { private panel: vscode.WebviewPanel | undefined; @@ -35,7 +38,7 @@ export class DataPlotter { { enableScripts: true, localResourceRoots: [ - vscode.Uri.joinPath(this.extensionUri, 'node_modules', 'plotly.js-dist-min'), + vscode.Uri.joinPath(this.extensionUri, 'media', 'vendor', 'plotly.js-dist-min'), ], retainContextWhenHidden: true, } @@ -98,12 +101,8 @@ export class DataPlotter { private extractCp2kData(content: string): any[] { // Extract energy convergence data const plots: any[] = []; - const energyPattern = /Total energy\s*:\s*([-\d.]+)/gi; - const energies: number[] = []; - let match; - while ((match = energyPattern.exec(content)) !== null) { - energies.push(parseFloat(match[1])); - } + const energyPattern = new RegExp(`Total energy\\s*:\\s*${NUMBER_CAPTURE}`, 'gi'); + const energies = collectNumbers(content, energyPattern); if (energies.length > 0) { plots.push({ title: 'Energy Convergence', @@ -119,6 +118,48 @@ export class DataPlotter { private extractVaspData(content: string): any[] { const plots: any[] = []; + const scfEnergyPattern = new RegExp(`^\\s*(?:DAV|RMM|CG):\\s*\\d+\\s+${NUMBER_CAPTURE}`, 'gim'); + const scfEnergies = collectNumbers(content, scfEnergyPattern); + if (scfEnergies.length > 0) { + plots.push({ + title: 'VASP SCF Energy Convergence', + type: 'line', + x: scfEnergies.map((_, i) => i + 1), + y: scfEnergies, + xLabel: 'Electronic Step', + yLabel: 'Energy (eV)', + }); + } + + const ionicEnergyPattern = new RegExp(`^\\s*\\d+\\s+F=\\s*${NUMBER_CAPTURE}`, 'gim'); + const ionicEnergies = collectNumbers(content, ionicEnergyPattern); + if (ionicEnergies.length > 0) { + plots.push({ + title: 'VASP Ionic Free Energy', + type: 'line', + x: ionicEnergies.map((_, i) => i + 1), + y: ionicEnergies, + xLabel: 'Ionic Step', + yLabel: 'Free Energy (eV)', + }); + } + + const outcarEnergyPattern = new RegExp( + `free\\s+energy\\s+TOTEN\\s*=\\s*${NUMBER_CAPTURE}`, + 'gi' + ); + const outcarEnergies = collectNumbers(content, outcarEnergyPattern); + if (outcarEnergies.length > 0) { + plots.push({ + title: 'VASP OUTCAR Total Energy', + type: 'line', + x: outcarEnergies.map((_, i) => i + 1), + y: outcarEnergies, + xLabel: 'Ionic Step', + yLabel: 'TOTEN (eV)', + }); + } + // Extract KPOINTS data const kpointsMatch = content.match(/KPOINTS[\s\S]*?^\s*$/m); if (kpointsMatch) { @@ -141,12 +182,8 @@ export class DataPlotter { private extractGaussianData(content: string): any[] { const plots: any[] = []; // Extract SCF energies - const scfPattern = /SCF Done:\s*E\([^)]+\)\s*=\s*([-\d.]+)/gi; - const energies: number[] = []; - let match; - while ((match = scfPattern.exec(content)) !== null) { - energies.push(parseFloat(match[1])); - } + const scfPattern = new RegExp(`SCF Done:\\s*E\\([^)]+\\)\\s*=\\s*${NUMBER_CAPTURE}`, 'gi'); + const energies = collectNumbers(content, scfPattern); if (energies.length > 0) { plots.push({ title: 'SCF Energy Convergence', @@ -163,12 +200,8 @@ export class DataPlotter { private extractOrcaData(content: string): any[] { const plots: any[] = []; // Extract energy data from output-like content - const energyPattern = /FINAL SINGLE POINT ENERGY\s+([-\d.]+)/gi; - const energies: number[] = []; - let match; - while ((match = energyPattern.exec(content)) !== null) { - energies.push(parseFloat(match[1])); - } + const energyPattern = new RegExp(`FINAL SINGLE POINT ENERGY\\s+${NUMBER_CAPTURE}`, 'gi'); + const energies = collectNumbers(content, energyPattern); if (energies.length > 0) { plots.push({ title: 'Energy', @@ -185,12 +218,8 @@ export class DataPlotter { private extractQeData(content: string): any[] { const plots: any[] = []; // Extract SCF convergence - const energyPattern = /total energy\s*=\s*([-\d.]+)/gi; - const energies: number[] = []; - let match; - while ((match = energyPattern.exec(content)) !== null) { - energies.push(parseFloat(match[1])); - } + const energyPattern = new RegExp(`total energy\\s*=\\s*${NUMBER_CAPTURE}`, 'gi'); + const energies = collectNumbers(content, energyPattern); if (energies.length > 0) { plots.push({ title: 'Total Energy Convergence', @@ -207,12 +236,8 @@ export class DataPlotter { private extractGamessData(content: string): any[] { const plots: any[] = []; // Extract SCF data - const energyPattern = /TOTAL ENERGY\s*=\s*([-\d.]+)/gi; - const energies: number[] = []; - let match; - while ((match = energyPattern.exec(content)) !== null) { - energies.push(parseFloat(match[1])); - } + const energyPattern = new RegExp(`TOTAL ENERGY\\s*=\\s*${NUMBER_CAPTURE}`, 'gi'); + const energies = collectNumbers(content, energyPattern); if (energies.length > 0) { plots.push({ title: 'Total Energy', @@ -229,12 +254,8 @@ export class DataPlotter { private extractNwchemData(content: string): any[] { const plots: any[] = []; // Extract energy data - const energyPattern = /Total SCF energy\s*=\s*([-\d.]+)/gi; - const energies: number[] = []; - let match; - while ((match = energyPattern.exec(content)) !== null) { - energies.push(parseFloat(match[1])); - } + const energyPattern = new RegExp(`Total SCF energy\\s*=\\s*${NUMBER_CAPTURE}`, 'gi'); + const energies = collectNumbers(content, energyPattern); if (energies.length > 0) { plots.push({ title: 'SCF Energy', @@ -255,7 +276,13 @@ export class DataPlotter { ): string { const nonce = getNonce(); const plotlyUri = webview.asWebviewUri( - vscode.Uri.joinPath(this.extensionUri, 'node_modules', 'plotly.js-dist-min', 'plotly.min.js') + vscode.Uri.joinPath( + this.extensionUri, + 'media', + 'vendor', + 'plotly.js-dist-min', + 'plotly.min.js' + ) ); const csp = getWebviewCsp(webview.cspSource, nonce); const plotsJson = escapeScriptJson(data.plots); @@ -396,6 +423,15 @@ export class DataPlotter { } } +function collectNumbers(content: string, pattern: RegExp): number[] { + const values: number[] = []; + let match: RegExpExecArray | null; + while ((match = pattern.exec(content)) !== null) { + values.push(Number.parseFloat(match[1])); + } + return values; +} + function getWebviewCsp(cspSource: string, nonce: string): string { return [ `default-src 'none';`, @@ -425,11 +461,4 @@ function escapeScriptJson(value: unknown): string { .replace(/\u2029/g, '\\u2029'); } -function getNonce(): string { - let text = ''; - const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - for (let i = 0; i < 32; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; -} +const getNonce = generateNonce; diff --git a/src/providers/StructureViewer.ts b/src/providers/StructureViewer.ts index 7f75c24..5f62c71 100644 --- a/src/providers/StructureViewer.ts +++ b/src/providers/StructureViewer.ts @@ -1,7 +1,11 @@ import * as vscode from 'vscode'; import * as path from 'path'; import { Molecule3D } from '../visualizers/Molecule3D'; +import { OpenQCViewerPanel } from '../visualizers/OpenQCViewerPanel'; import { FileTypeDetector, QuantumChemistrySoftware } from '../managers/FileTypeDetector'; +import { poscarToOpenQCStructure } from '../structures/converters'; +import type { OpenQCStructure } from '../structures/OpenQCStructure'; +import { generateNonce } from '../utils/nonce'; export class StructureViewer { private panel: vscode.WebviewPanel | undefined; @@ -38,9 +42,7 @@ export class StructureViewer { column, { enableScripts: true, - localResourceRoots: [ - vscode.Uri.joinPath(this.extensionUri, 'node_modules', '3dmol', 'build'), - ], + localResourceRoots: [vscode.Uri.joinPath(this.extensionUri, 'media')], retainContextWhenHidden: true, } ); @@ -65,6 +67,12 @@ export class StructureViewer { return; } + const structure = this.tryCreatePreviewStructure(editor.document, software); + if (structure) { + OpenQCViewerPanel.createOrShow(this.extensionUri, structure, editor.document.fileName); + return; + } + const column = vscode.ViewColumn.Two; if (this.panel) { @@ -76,9 +84,7 @@ export class StructureViewer { column, { enableScripts: true, - localResourceRoots: [ - vscode.Uri.joinPath(this.extensionUri, 'node_modules', '3dmol', 'build'), - ], + localResourceRoots: [vscode.Uri.joinPath(this.extensionUri, 'media')], retainContextWhenHidden: true, } ); @@ -91,6 +97,26 @@ export class StructureViewer { this.updatePreviewContent(editor.document, software); } + private tryCreatePreviewStructure( + document: vscode.TextDocument, + software: QuantumChemistrySoftware + ): OpenQCStructure | undefined { + const content = document.getText(); + const fileName = document.fileName; + const basename = path.basename(fileName).toUpperCase(); + + if (software === 'VASP' && (basename === 'POSCAR' || basename === 'CONTCAR')) { + try { + const structure = poscarToOpenQCStructure(content, fileName); + return structure.atoms.length > 0 ? structure : undefined; + } catch { + return undefined; + } + } + + return undefined; + } + private updateContent(document: vscode.TextDocument, software: QuantumChemistrySoftware): void { if (!this.panel) { return; @@ -241,7 +267,7 @@ export class StructureViewer { ): string { const nonce = getNonce(); const threeDmolUri = webview.asWebviewUri( - vscode.Uri.joinPath(this.extensionUri, 'node_modules', '3dmol', 'build', '3Dmol-min.js') + vscode.Uri.joinPath(this.extensionUri, 'media', 'vendor', '3dmol', '3Dmol-min.js') ); const csp = getWebviewCsp(webview.cspSource, nonce); const atomsJson = escapeScriptJson(atoms); @@ -578,11 +604,4 @@ function escapeScriptJson(value: unknown): string { .replace(/\u2029/g, '\\u2029'); } -function getNonce(): string { - let text = ''; - const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - for (let i = 0; i < 32; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; -} +const getNonce = generateNonce; diff --git a/src/python/PythonBackendStatus.ts b/src/python/PythonBackendStatus.ts index bb0610e..3bb1446 100644 --- a/src/python/PythonBackendStatus.ts +++ b/src/python/PythonBackendStatus.ts @@ -24,12 +24,26 @@ export interface ExternalToolStatus { path: string | null; } +export type BackendHealthStatus = 'installed' | 'degraded' | 'missing'; +export type BackendCapabilityStatus = 'available' | 'degraded' | 'missing'; + +export interface BackendCapability { + label?: string; + status: BackendCapabilityStatus; + detail: string; + requires?: string[]; +} + /** Full backend check result. */ export interface BackendCheckResult { success: boolean; + status?: BackendHealthStatus; + statusDetail?: string; python: PythonInfo; packages: Record; externalTools: Record; + capabilities?: Record; + missingPackages?: string[]; } /** Bridge error from Python subprocess. */ diff --git a/src/python/PythonBridge.ts b/src/python/PythonBridge.ts index 529c7e5..1ebea95 100644 --- a/src/python/PythonBridge.ts +++ b/src/python/PythonBridge.ts @@ -11,6 +11,7 @@ */ import { execFile } from 'child_process'; +import * as path from 'path'; import * as vscode from 'vscode'; import type { BackendCheckResult, BridgeError } from './PythonBackendStatus'; import { Logger } from '../utils/Logger'; @@ -33,6 +34,19 @@ function getTimeoutMs(): number { return config.get('python.timeoutMs', DEFAULT_TIMEOUT_MS); } +function getBundledPythonPath(): string { + return path.resolve(__dirname, '..', '..', 'python'); +} + +function getPythonEnv(): NodeJS.ProcessEnv { + const bundledPythonPath = getBundledPythonPath(); + const existing = process.env.PYTHONPATH; + return { + ...process.env, + PYTHONPATH: existing ? `${bundledPythonPath}${path.delimiter}${existing}` : bundledPythonPath, + }; +} + // --------------------------------------------------------------------------- // Bridge response // --------------------------------------------------------------------------- @@ -82,7 +96,7 @@ export function execPythonJson( { timeout: timeoutMs, maxBuffer: 10 * 1024 * 1024, // 10 MB - env: { ...process.env }, + env: getPythonEnv(), }, (error, stdout, stderr) => { if (options?.cancelToken?.isCancellationRequested) { diff --git a/src/python/StructureBridge.ts b/src/python/StructureBridge.ts index a957734..327b718 100644 --- a/src/python/StructureBridge.ts +++ b/src/python/StructureBridge.ts @@ -6,6 +6,13 @@ import { execPythonJson, type BridgeResponse } from './PythonBridge'; import type { OpenQCStructure } from '../structures/OpenQCStructure'; +export interface StructureConversionResult { + format: string; + content?: string; + atomCount: number; + structure?: OpenQCStructure; +} + export async function parseStructure( filePath: string, formatHint?: string, @@ -33,8 +40,8 @@ export async function convertStructure( filePath: string, targetFormat: string, formatHint?: string -): Promise> { - return execPythonJson('openqc.bridge.structure_bridge', { +): Promise> { + return execPythonJson('openqc.bridge.structure_bridge', { command: 'convert', args: { path: filePath, to: targetFormat, format: formatHint || 'auto' }, }); diff --git a/src/results/OutputParserBridge.ts b/src/results/OutputParserBridge.ts index 32db292..2efcc0f 100644 --- a/src/results/OutputParserBridge.ts +++ b/src/results/OutputParserBridge.ts @@ -10,6 +10,17 @@ import { Logger } from '../utils/Logger'; const logger = Logger.getInstance(); +export interface OutputTrajectory { + sourceFile?: string; + software?: string; + supported: boolean; + frames: unknown[]; + frameCount: number; + energies?: number[]; + cclibAvailable?: boolean; + warnings?: string[]; +} + /** * Parse a calculation output file. * @@ -55,3 +66,19 @@ export async function summarizeOutput( args: { path: filePath, software: software || 'auto' }, }); } + +/** + * Extract an optimization trajectory from a calculation output file. + * + * Returns a structured unsupported response when the output format or parser + * does not expose coordinate frames. + */ +export async function extractTrajectory( + filePath: string, + software?: string +): Promise> { + return execPythonJson('openqc.bridge.output_bridge', { + command: 'trajectory', + args: { path: filePath, software: software || 'auto' }, + }); +} diff --git a/src/sidebar/JobTreeProvider.ts b/src/sidebar/JobTreeProvider.ts index 5f7964f..10f0aa8 100644 --- a/src/sidebar/JobTreeProvider.ts +++ b/src/sidebar/JobTreeProvider.ts @@ -6,6 +6,17 @@ import { createComponentLogger } from '../utils/Logger'; */ export type JobStatus = 'running' | 'completed' | 'failed' | 'queued' | 'cancelled'; +export interface JobResultData { + success: boolean; + energy?: number; + forces?: number[][]; + stress?: number[][]; + error?: string; + warnings?: string[]; + metadata?: Record; + outputFiles?: string[]; +} + interface StoredJob { id: string; label: string; @@ -14,6 +25,8 @@ interface StoredJob { software: string; startTime?: string; endTime?: string; + workingDirectory?: string; + result?: JobResultData; } /** @@ -28,13 +41,15 @@ export class JobItem extends vscode.TreeItem { public readonly software: string, public readonly startTime?: Date, public readonly endTime?: Date, + public readonly workingDirectory?: string, + public readonly result?: JobResultData, public readonly collapsibleState: vscode.TreeItemCollapsibleState = vscode .TreeItemCollapsibleState.None ) { super(label, collapsibleState); const duration = this.calculateDuration(); - this.tooltip = `${label}\nStatus: ${status}\nSoftware: ${software}\nProgress: ${progress}%\nDuration: ${duration}`; + this.tooltip = `${label}\nStatus: ${status}\nSoftware: ${software}\nProgress: ${progress}%\nDuration: ${duration}${workingDirectory ? `\nDirectory: ${workingDirectory}` : ''}`; this.description = `${software} - ${progress}%`; this.contextValue = status; @@ -144,7 +159,7 @@ export class JobTreeProvider implements vscode.TreeDataProvider { /** * Update job status */ - updateJobStatus(id: string, status: JobStatus, progress: number): void { + updateJobStatus(id: string, status: JobStatus, progress: number): boolean { const index = this.jobs.findIndex(j => j.id === id); if (index >= 0) { const job = this.jobs[index]; @@ -158,12 +173,46 @@ export class JobTreeProvider implements vscode.TreeDataProvider { job.startTime, status === 'completed' || status === 'failed' || status === 'cancelled' ? new Date() - : undefined + : undefined, + job.workingDirectory, + job.result ); this.jobs[index] = updatedJob; this.saveJobs(); this._onDidChangeTreeData.fire(); + return true; + } + return false; + } + + updateJobResult( + id: string, + status: 'completed' | 'failed', + result: JobResultData, + progress = status === 'completed' ? 100 : 0 + ): boolean { + const index = this.jobs.findIndex(j => j.id === id); + if (index >= 0) { + const job = this.jobs[index]; + if (job.status === 'cancelled') { + return false; + } + this.jobs[index] = new JobItem( + job.id, + job.label, + status, + progress, + job.software, + job.startTime, + new Date(), + job.workingDirectory, + result + ); + this.saveJobs(); + this._onDidChangeTreeData.fire(); + return true; } + return false; } /** @@ -181,29 +230,34 @@ export class JobTreeProvider implements vscode.TreeDataProvider { /** * Cancel a running job */ - cancelJob(id: string): void { + cancelJob(id: string): boolean { const job = this.jobs.find(j => j.id === id); - if (job && job.status === 'running') { - this.updateJobStatus(id, 'cancelled', job.progress); + if (job && (job.status === 'running' || job.status === 'queued')) { + return this.updateJobStatus(id, 'cancelled', job.progress); } + return false; } /** * Restart a job */ - restartJob(id: string): void { + restartJob(id: string): JobItem | undefined { const job = this.jobs.find(j => j.id === id); if (job) { const newJob = new JobItem( `${job.id}-restart-${Date.now()}`, `${job.label} (restart)`, - 'queued', - 0, + 'running', + 5, job.software, - undefined + new Date(), + undefined, + job.workingDirectory ); this.addJob(newJob); + return newJob; } + return undefined; } /** @@ -239,20 +293,14 @@ export class JobTreeProvider implements vscode.TreeDataProvider { j.progress, j.software, j.startTime ? new Date(j.startTime) : undefined, - j.endTime ? new Date(j.endTime) : undefined + j.endTime ? new Date(j.endTime) : undefined, + j.workingDirectory, + j.result ) ); - - // If no saved jobs, add some sample data for demonstration - if (this.jobs.length === 0) { - this.addSampleJobs(); - } } catch (error) { this.logger.error('Failed to load jobs from workspace state', error as Error); - this.logger.debug('Falling back to sample jobs after load failure'); this.jobs = []; - // Add sample jobs as fallback - this.addSampleJobs(); } } @@ -269,6 +317,8 @@ export class JobTreeProvider implements vscode.TreeDataProvider { software: job.software, startTime: job.startTime?.toISOString(), endTime: job.endTime?.toISOString(), + workingDirectory: job.workingDirectory, + result: job.result, })); await this.context.workspaceState.update('openqc.jobs', stored); @@ -277,58 +327,9 @@ export class JobTreeProvider implements vscode.TreeDataProvider { } } - /** - * Add sample jobs for demonstration - */ - private addSampleJobs(): void { - const samples = [ - new JobItem( - 'job-1', - 'Water Optimization', - 'running', - 65, - 'Gaussian', - new Date(Date.now() - 120000) - ), - new JobItem( - 'job-2', - 'Benzene Frequency', - 'completed', - 100, - 'ORCA', - new Date(Date.now() - 3600000), - new Date(Date.now() - 3000000) - ), - new JobItem('job-3', 'Surface Calculation', 'queued', 0, 'VASP', undefined), - new JobItem( - 'job-4', - 'MD Simulation', - 'failed', - 45, - 'CP2K', - new Date(Date.now() - 7200000), - new Date(Date.now() - 7000000) - ), - ]; - this.jobs = samples; - this.saveJobs(); - } - - /** - * Update progress for running jobs (simulation) - */ private updateRunningJobs(): void { - this.jobs.forEach(job => { - if (job.status === 'running' && job.progress < 100) { - const increment = Math.random() * 5; - const newProgress = Math.min(job.progress + increment, 100); - if (newProgress >= 100) { - this.updateJobStatus(job.id, 'completed', 100); - } else { - this.updateJobStatus(job.id, 'running', Math.floor(newProgress)); - } - } - }); + // Jobs are advanced by concrete command handlers when calculator execution returns. + // Refresh only redraws persisted state. } /** diff --git a/src/sidebar/MoleculeTreeProvider.ts b/src/sidebar/MoleculeTreeProvider.ts index 380b0fe..17ee149 100644 --- a/src/sidebar/MoleculeTreeProvider.ts +++ b/src/sidebar/MoleculeTreeProvider.ts @@ -134,16 +134,9 @@ export class MoleculeTreeProvider implements vscode.TreeDataProvider m && m.id) .map(m => new MoleculeItem(m.id, m.label, m.formula, m.atomCount, m.filePath)); - - // If no saved molecules, add some sample data for demonstration - if (this.molecules.length === 0) { - this.addSampleMolecules(); - } } catch (error) { console.error('Failed to load molecules:', error); this.molecules = []; - // Add sample molecules as fallback - this.addSampleMolecules(); } } @@ -166,21 +159,6 @@ export class MoleculeTreeProvider implements vscode.TreeDataProvider { if (typeof bond !== 'object' || bond === null) { errors.push(`Bond ${i}: must be an object`); @@ -207,9 +208,27 @@ export function validateOpenQCStructure( const b = bond as Record; if (typeof b.from !== 'number' || typeof b.to !== 'number') { errors.push(`Bond ${i}: "from" and "to" must be numbers`); + } else { + if (!Number.isInteger(b.from) || !Number.isInteger(b.to)) { + errors.push(`Bond ${i}: "from" and "to" must be integer atom indices`); + } + if (b.from === b.to) { + errors.push(`Bond ${i}: "from" and "to" must reference different atoms`); + } + if ( + atomCount > 0 && + (b.from < 0 || b.to < 0 || b.from >= atomCount || b.to >= atomCount) + ) { + errors.push(`Bond ${i}: atom index out of range`); + } } if (b.order !== undefined && typeof b.order !== 'number') { errors.push(`Bond ${i}: "order" must be a number when provided`); + } else if ( + typeof b.order === 'number' && + (!Number.isInteger(b.order) || b.order < 1 || b.order > 3) + ) { + errors.push(`Bond ${i}: "order" must be 1, 2, or 3`); } }); } diff --git a/src/utils/migration/params.ts b/src/utils/migration/params.ts index 8965f97..d66704d 100644 --- a/src/utils/migration/params.ts +++ b/src/utils/migration/params.ts @@ -28,6 +28,9 @@ export interface ParameterMapping { defaultValue?: any; } +export const RY_TO_EV = 13.605693122994; +export const EV_TO_RY = 1 / RY_TO_EV; + /** * Energy cutoff mappings */ @@ -37,8 +40,8 @@ export const ENERGY_CUTOFF_MAPPINGS: ParameterMapping[] = [ target: 'cp2k', sourceParam: 'ENCUT', targetParam: 'CUTOFF', - unitFactor: 1.0, - description: 'Plane-wave cutoff energy (eV)', + unitFactor: EV_TO_RY, + description: 'Plane-wave cutoff energy (eV to Ry)', required: true, }, { @@ -46,8 +49,8 @@ export const ENERGY_CUTOFF_MAPPINGS: ParameterMapping[] = [ target: 'qe', sourceParam: 'ENCUT', targetParam: 'ecutwfc', - unitFactor: 1.0, - description: 'Kinetic energy cutoff for wavefunctions (Ry)', + unitFactor: EV_TO_RY, + description: 'Kinetic energy cutoff for wavefunctions (eV to Ry)', required: true, }, { @@ -55,8 +58,8 @@ export const ENERGY_CUTOFF_MAPPINGS: ParameterMapping[] = [ target: 'vasp', sourceParam: 'ecutwfc', targetParam: 'ENCUT', - unitFactor: 1.0, - description: 'Kinetic energy cutoff (eV)', + unitFactor: RY_TO_EV, + description: 'Kinetic energy cutoff (Ry to eV)', required: true, }, { @@ -64,8 +67,8 @@ export const ENERGY_CUTOFF_MAPPINGS: ParameterMapping[] = [ target: 'vasp', sourceParam: 'CUTOFF', targetParam: 'ENCUT', - unitFactor: 1.0, - description: 'Plane-wave cutoff energy (eV)', + unitFactor: RY_TO_EV, + description: 'Plane-wave cutoff energy (Ry to eV)', required: true, }, ]; diff --git a/src/utils/nonce.ts b/src/utils/nonce.ts new file mode 100644 index 0000000..54e536e --- /dev/null +++ b/src/utils/nonce.ts @@ -0,0 +1,26 @@ +import { randomBytes } from 'crypto'; + +const NONCE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; +const DEFAULT_NONCE_LENGTH = 32; +const BYTE_LIMIT = 256 - (256 % NONCE_CHARS.length); + +export function generateNonce(length: number = DEFAULT_NONCE_LENGTH): string { + if (!Number.isInteger(length) || length <= 0) { + throw new Error('Nonce length must be a positive integer'); + } + + let nonce = ''; + while (nonce.length < length) { + const bytes = randomBytes(length); + for (const byte of bytes) { + if (byte >= BYTE_LIMIT) { + continue; + } + nonce += NONCE_CHARS[byte % NONCE_CHARS.length]; + if (nonce.length === length) { + break; + } + } + } + return nonce; +} diff --git a/src/utils/structureExporter.ts b/src/utils/structureExporter.ts index b05f269..95528d6 100644 --- a/src/utils/structureExporter.ts +++ b/src/utils/structureExporter.ts @@ -5,10 +5,8 @@ */ import * as vscode from 'vscode'; -import * as path from 'path'; -import * as fs from 'fs'; -import { spawn } from 'child_process'; import { Atom } from '../visualizers/types'; +import type { OpenQCBond, OpenQCCell } from '../structures/OpenQCStructure'; export type ExportFormat = | 'vasp' @@ -34,11 +32,21 @@ export interface ExportOptions { export interface StructureData { atoms: Atom[]; - cell?: { a: number; b: number; c: number; alpha: number; beta: number; gamma: number }; + bonds?: OpenQCBond[]; + cell?: LatticeParameters | OpenQCCell; pbc?: [boolean, boolean, boolean]; metadata?: Record; } +export interface LatticeParameters { + a: number; + b: number; + c: number; + alpha: number; + beta: number; + gamma: number; +} + export interface ExportResult { success: boolean; outputPath?: string; @@ -48,40 +56,98 @@ export interface ExportResult { } export class StructureExporter { - private pythonPath: string; - private converterPath: string; - - constructor(context?: vscode.ExtensionContext) { - const config = vscode.workspace.getConfiguration('openqc'); - this.pythonPath = config.get('pythonPath', 'python3'); - - if (context) { - this.converterPath = path.join( - context.extensionPath, - 'python', - 'openqc', - 'ase', - 'structure_writer.py' - ); - } else { - this.converterPath = path.join( - __dirname, - '..', - '..', - 'python', - 'openqc', - 'ase', - 'structure_writer.py' - ); - } - } + constructor(_context?: vscode.ExtensionContext) {} public async exportStructure( structure: StructureData, options: ExportOptions ): Promise { - // Simplified implementation - return { success: false, error: 'Not implemented yet' }; + if (!structure.atoms || structure.atoms.length === 0) { + return { success: false, error: 'No atoms to export' }; + } + + const contentResult = this.renderStructure(structure, options.format); + if (!contentResult.success || !contentResult.content) { + return contentResult; + } + + let outputPath = options.outputPath; + if (!outputPath) { + const uri = await vscode.window.showSaveDialog({ + defaultUri: vscode.Uri.file(`structure.${getFormatExtensions(options.format)[0]}`), + saveLabel: 'Export Structure', + filters: { + [StructureExporter.getFormatDisplayName(options.format)]: getFormatExtensions( + options.format + ), + }, + }); + if (!uri) { + return { success: false, error: 'Export cancelled' }; + } + outputPath = uri.fsPath; + } + + await vscode.workspace.fs.writeFile( + vscode.Uri.file(outputPath), + Buffer.from(contentResult.content) + ); + vscode.window.showInformationMessage(`Structure exported to ${outputPath}`); + + return { + success: true, + outputPath, + content: contentResult.content, + warnings: contentResult.warnings, + }; + } + + public async overwriteStructureFile( + structure: StructureData, + outputPath: string + ): Promise { + const format = StructureExporter.inferNativeFormatFromPath(outputPath); + if (!format) { + return { + success: false, + error: + 'Cannot infer a native writable structure format for this source file. Export to XYZ, Extended XYZ, PDB, POSCAR, or CIF instead.', + }; + } + + return this.exportStructure(structure, { + format, + outputPath, + overwrite: true, + }); + } + + private renderStructure(structure: StructureData, format: ExportFormat): ExportResult { + switch (format) { + case 'xyz': + return { + success: true, + content: renderXyz(structure), + warnings: bondTopologyWarnings('XYZ', structure), + }; + case 'extxyz': + return { + success: true, + content: renderExtxyz(structure), + warnings: bondTopologyWarnings('Extended XYZ', structure), + }; + case 'pdb': + return renderPdb(structure); + case 'vasp': + return renderPoscar(structure); + case 'cif': + return renderCif(structure); + default: + return { + success: false, + error: `${StructureExporter.getFormatDisplayName(format)} export requires the ASE backend and is not implemented by the native exporter yet.`, + }; + } } public static getFormatDisplayName(format: ExportFormat): string { @@ -118,4 +184,337 @@ export class StructureExporter { 'cif', ]; } + + public static getNativeFormats(): ExportFormat[] { + return ['xyz', 'extxyz', 'pdb', 'vasp', 'cif']; + } + + public static inferNativeFormatFromPath(filePath: string): ExportFormat | undefined { + const normalized = filePath.replace(/\\/g, '/'); + const basename = normalized.split('/').pop() ?? normalized; + const upperBasename = basename.toUpperCase(); + const lowerBasename = basename.toLowerCase(); + + if (upperBasename === 'POSCAR' || upperBasename === 'CONTCAR') { + return 'vasp'; + } + if (lowerBasename.endsWith('.extxyz')) { + return 'extxyz'; + } + if (lowerBasename.endsWith('.xyz')) { + return 'xyz'; + } + if (lowerBasename.endsWith('.pdb')) { + return 'pdb'; + } + if (lowerBasename.endsWith('.cif')) { + return 'cif'; + } + + return undefined; + } +} + +function bondTopologyWarnings(formatName: string, structure: StructureData): string[] { + if (!Array.isArray(structure.bonds) || structure.bonds.length === 0) { + return []; + } + return [ + `${formatName} export does not preserve edited bond topology or bond order; use PDB for basic CONECT connectivity.`, + ]; +} + +function renderXyz(structure: StructureData): string { + const atoms = cartesianAtoms(structure); + return ( + [ + String(structure.atoms.length), + 'OpenQC export', + ...atoms.map( + atom => + `${atom.element} ${formatCoord(atom.x)} ${formatCoord(atom.y)} ${formatCoord(atom.z)}` + ), + ].join('\n') + '\n' + ); +} + +function renderExtxyz(structure: StructureData): string { + const vectors = getCellVectors(structure.cell); + const atoms = cartesianAtoms(structure); + const lattice = vectors + ? ` Lattice="${vectors.flat().map(formatCoord).join(' ')}" Properties=species:S:1:pos:R:3` + : ' Properties=species:S:1:pos:R:3'; + return ( + [ + String(structure.atoms.length), + `OpenQC export${lattice}`, + ...atoms.map( + atom => + `${atom.element} ${formatCoord(atom.x)} ${formatCoord(atom.y)} ${formatCoord(atom.z)}` + ), + ].join('\n') + '\n' + ); +} + +function renderPdb(structure: StructureData): ExportResult { + const lines = cartesianAtoms(structure).map((atom, index) => { + const serial = String(index + 1).padStart(5); + const element = atom.element.padStart(2); + return `HETATM${serial} ${element.padEnd(4)} MOL 1 ${formatPdbCoord(atom.x)}${formatPdbCoord(atom.y)}${formatPdbCoord(atom.z)} 1.00 0.00 ${element}`; + }); + const conect = renderPdbConect(structure.bonds, structure.atoms.length); + return { + success: true, + content: [...lines, ...conect.lines, 'END'].join('\n') + '\n', + warnings: conect.warnings, + }; +} + +function renderPdbConect( + bonds: OpenQCBond[] | undefined, + atomCount: number +): { lines: string[]; warnings: string[] } { + if (!Array.isArray(bonds) || bonds.length === 0) { + return { lines: [], warnings: [] }; + } + + const lines: string[] = []; + const warnings: string[] = []; + const seen = new Set(); + for (const [index, bond] of bonds.entries()) { + if (!isValidBondIndex(bond.from, atomCount) || !isValidBondIndex(bond.to, atomCount)) { + warnings.push( + `Skipped PDB CONECT bond ${index}: atom indices ${bond.from}-${bond.to} are out of range for ${atomCount} atoms` + ); + continue; + } + if (bond.from === bond.to) { + warnings.push(`Skipped PDB CONECT bond ${index}: self bonds cannot be represented`); + continue; + } + const from = Math.min(bond.from, bond.to); + const to = Math.max(bond.from, bond.to); + const key = `${from}:${to}`; + if (seen.has(key)) { + continue; + } + seen.add(key); + lines.push(`CONECT${String(from + 1).padStart(5)}${String(to + 1).padStart(5)}`); + } + return { lines, warnings }; +} + +function isValidBondIndex(index: number, atomCount: number): boolean { + return Number.isInteger(index) && index >= 0 && index < atomCount; +} + +function renderPoscar(structure: StructureData): ExportResult { + const vectors = getCellVectors(structure.cell); + if (!vectors) { + return { + success: false, + error: 'VASP POSCAR export requires unit-cell vectors or lattice parameters', + }; + } + + const groups = groupAtomsByElement(structure.atoms); + const coordinateMode = getCoordinateMode(structure.cell); + const hasSelectiveDynamics = structure.atoms.some(atom => hasSelectiveDynamicsFlags(atom)); + const lines = [ + 'OpenQC export', + '1.0', + ...vectors.map(vector => vector.map(formatCoord).join(' ')), + groups.map(group => group.element).join(' '), + groups.map(group => String(group.atoms.length)).join(' '), + ]; + + if (hasSelectiveDynamics) { + lines.push('Selective dynamics'); + } + lines.push(coordinateMode === 'fractional' ? 'Direct' : 'Cartesian'); + + for (const group of groups) { + for (const atom of group.atoms) { + const coords = `${formatCoord(atom.x)} ${formatCoord(atom.y)} ${formatCoord(atom.z)}`; + lines.push(hasSelectiveDynamics ? `${coords} ${formatSelectiveDynamics(atom)}` : coords); + } + } + + return { + success: true, + content: lines.join('\n') + '\n', + warnings: bondTopologyWarnings('VASP POSCAR', structure), + }; +} + +function hasSelectiveDynamicsFlags(atom: Atom): boolean { + return ( + Array.isArray(atom.selectiveDynamics) && + atom.selectiveDynamics.length === 3 && + atom.selectiveDynamics.every(value => typeof value === 'boolean') + ); +} + +function formatSelectiveDynamics(atom: Atom): string { + const flags: [boolean, boolean, boolean] = hasSelectiveDynamicsFlags(atom) + ? (atom.selectiveDynamics as [boolean, boolean, boolean]) + : [true, true, true]; + return flags.map(value => (value ? 'T' : 'F')).join(' '); +} + +function renderCif(structure: StructureData): ExportResult { + const vectors = getCellVectors(structure.cell); + if (!vectors) { + return { success: false, error: 'CIF export requires unit-cell vectors or lattice parameters' }; + } + + const params = latticeParametersFromVectors(vectors); + const atoms = cartesianAtoms(structure); + const lines = [ + 'data_openqc_export', + `_cell_length_a ${formatCoord(params.a)}`, + `_cell_length_b ${formatCoord(params.b)}`, + `_cell_length_c ${formatCoord(params.c)}`, + `_cell_angle_alpha ${formatCoord(params.alpha)}`, + `_cell_angle_beta ${formatCoord(params.beta)}`, + `_cell_angle_gamma ${formatCoord(params.gamma)}`, + 'loop_', + '_atom_site_label', + '_atom_site_type_symbol', + '_atom_site_Cartn_x', + '_atom_site_Cartn_y', + '_atom_site_Cartn_z', + ]; + + atoms.forEach((atom, index) => { + const label = `${atom.element}${index + 1}`; + lines.push( + `${label} ${atom.element} ${formatCoord(atom.x)} ${formatCoord(atom.y)} ${formatCoord(atom.z)}` + ); + }); + + return { + success: true, + content: lines.join('\n') + '\n', + warnings: bondTopologyWarnings('CIF', structure), + }; +} + +function cartesianAtoms(structure: StructureData): Atom[] { + const vectors = getCellVectors(structure.cell); + if (!vectors || getCoordinateMode(structure.cell) !== 'fractional') { + return structure.atoms; + } + + return structure.atoms.map(atom => { + const [x, y, z] = fractionalToCartesian([atom.x, atom.y, atom.z], vectors); + return { ...atom, x, y, z }; + }); +} + +function getCoordinateMode(cell: StructureData['cell']): 'cartesian' | 'fractional' { + return (cell as OpenQCCell | undefined)?.coordinateMode === 'fractional' + ? 'fractional' + : 'cartesian'; +} + +function fractionalToCartesian( + fractional: [number, number, number], + vectors: [[number, number, number], [number, number, number], [number, number, number]] +): [number, number, number] { + const [u, v, w] = fractional; + const [a, b, c] = vectors; + return [ + u * a[0] + v * b[0] + w * c[0], + u * a[1] + v * b[1] + w * c[1], + u * a[2] + v * b[2] + w * c[2], + ]; +} + +function getCellVectors( + cell: StructureData['cell'] +): [[number, number, number], [number, number, number], [number, number, number]] | undefined { + if (!cell) { + return undefined; + } + + if (Array.isArray((cell as OpenQCCell).a)) { + const openqcCell = cell as OpenQCCell; + return [openqcCell.a, openqcCell.b, openqcCell.c]; + } + + const params = cell as LatticeParameters; + const alpha = degreesToRadians(params.alpha); + const beta = degreesToRadians(params.beta); + const gamma = degreesToRadians(params.gamma); + const a: [number, number, number] = [params.a, 0, 0]; + const b: [number, number, number] = [params.b * Math.cos(gamma), params.b * Math.sin(gamma), 0]; + const cx = params.c * Math.cos(beta); + const cy = (params.c * (Math.cos(alpha) - Math.cos(beta) * Math.cos(gamma))) / Math.sin(gamma); + const cz = Math.sqrt(Math.max(params.c ** 2 - cx ** 2 - cy ** 2, 0)); + return [a, b, [cx, cy, cz]]; +} + +function latticeParametersFromVectors( + vectors: [[number, number, number], [number, number, number], [number, number, number]] +): LatticeParameters { + const [a, b, c] = vectors; + return { + a: norm(a), + b: norm(b), + c: norm(c), + alpha: angleDegrees(b, c), + beta: angleDegrees(a, c), + gamma: angleDegrees(a, b), + }; +} + +function groupAtomsByElement(atoms: Atom[]): Array<{ element: string; atoms: Atom[] }> { + const groups = new Map(); + for (const atom of atoms) { + const group = groups.get(atom.element) ?? []; + group.push(atom); + groups.set(atom.element, group); + } + return Array.from(groups, ([element, atoms]) => ({ element, atoms })); +} + +function norm(vector: [number, number, number]): number { + return Math.sqrt(vector[0] ** 2 + vector[1] ** 2 + vector[2] ** 2); +} + +function angleDegrees(a: [number, number, number], b: [number, number, number]): number { + const dot = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + const cosine = Math.min(1, Math.max(-1, dot / (norm(a) * norm(b)))); + return (Math.acos(cosine) * 180) / Math.PI; +} + +function degreesToRadians(value: number): number { + return (value * Math.PI) / 180; +} + +function formatCoord(value: number): string { + return Number.isFinite(value) ? value.toFixed(6) : '0.000000'; +} + +function formatPdbCoord(value: number): string { + return value.toFixed(3).padStart(8); +} + +function getFormatExtensions(format: ExportFormat): string[] { + const extensionMap: Record = { + vasp: ['POSCAR', 'CONTCAR'], + cp2k: ['inp'], + qe: ['in', 'pw.in'], + gaussian: ['com', 'gjf'], + orca: ['inp'], + nwchem: ['nw', 'nwinp'], + gamess: ['inp'], + lammps: ['lmp', 'data'], + xyz: ['xyz'], + extxyz: ['extxyz'], + pdb: ['pdb'], + cif: ['cif'], + }; + return extensionMap[format]; } diff --git a/src/visualizers/MoleculeViewerPanel.ts b/src/visualizers/MoleculeViewerPanel.ts index e7f8174..4bf4954 100644 --- a/src/visualizers/MoleculeViewerPanel.ts +++ b/src/visualizers/MoleculeViewerPanel.ts @@ -25,6 +25,8 @@ export class MoleculeViewerPanel { // If we already have a panel, show it if (MoleculeViewerPanel.currentPanel) { MoleculeViewerPanel.currentPanel._panel.reveal(column); + MoleculeViewerPanel.currentPanel._xyzContent = xyzContent; + MoleculeViewerPanel.currentPanel._filename = filename; MoleculeViewerPanel.currentPanel._sendInitializeMessage({ xyz: xyzContent }); return; } @@ -65,8 +67,8 @@ export class MoleculeViewerPanel { private constructor( panel: vscode.WebviewPanel, private readonly _extensionUri: vscode.Uri, - xyzContent: string, - private readonly _filename: string + private _xyzContent: string, + private _filename: string ) { this._panel = panel; @@ -83,7 +85,7 @@ export class MoleculeViewerPanel { this._panel.onDidChangeViewState( () => { if (this._panel.visible) { - this._sendInitializeMessage({ xyz: xyzContent }); + this._sendInitializeMessage({ xyz: this._xyzContent }); } }, null, @@ -98,7 +100,7 @@ export class MoleculeViewerPanel { ); // Send initial structure data - this._sendInitializeMessage({ xyz: xyzContent }); + this._sendInitializeMessage({ xyz: this._xyzContent }); } private _sendInitializeMessage(structure: { xyz?: string; json?: string }): void { @@ -150,6 +152,7 @@ export class MoleculeViewerPanel { public serialize(): MoleculeViewerState { return { filename: this._filename, + xyz: this._xyzContent, }; } @@ -157,8 +160,6 @@ export class MoleculeViewerPanel { * Deserialize and restore panel state */ public static deserialize(state: MoleculeViewerState, extensionUri: vscode.Uri): void { - // Note: In a real implementation, we'd need to store the XYZ content - // This is a simplified version that shows the pattern MoleculeViewerPanel.createOrShow(extensionUri, state.xyz || '', state.filename); } } diff --git a/src/visualizers/MoleculeViewerWebview.ts b/src/visualizers/MoleculeViewerWebview.ts index 5799f39..9eccb92 100644 --- a/src/visualizers/MoleculeViewerWebview.ts +++ b/src/visualizers/MoleculeViewerWebview.ts @@ -1,4 +1,5 @@ import * as vscode from 'vscode'; +import { generateNonce } from '../utils/nonce'; export class MoleculeViewerWebview { /** @@ -6,9 +7,9 @@ export class MoleculeViewerWebview { * @returns HTML string with embedded JavaScript */ static generateWebviewHTML(webview: vscode.Webview, extensionUri: vscode.Uri): string { - const nonce = this.getNonce(); + const nonce = generateNonce(); const nglScriptUri = webview.asWebviewUri( - vscode.Uri.joinPath(extensionUri, 'node_modules', 'ngl', 'dist', 'ngl.js') + vscode.Uri.joinPath(extensionUri, 'media', 'vendor', 'ngl', 'ngl.js') ); const csp = this.getCSP(webview.cspSource, nonce); @@ -346,7 +347,7 @@ export class MoleculeViewerWebview { return { enableScripts: true, localResourceRoots: extensionUri - ? [vscode.Uri.joinPath(extensionUri, 'node_modules', 'ngl', 'dist')] + ? [vscode.Uri.joinPath(extensionUri, 'media', 'vendor', 'ngl')] : undefined, }; } @@ -364,16 +365,4 @@ export class MoleculeViewerWebview { `media-src ${cspSource};`, ].join(' '); } - - /** - * Generate a random nonce for CSP - */ - private static getNonce(): string { - let text = ''; - const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - for (let i = 0; i < 32; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; - } } diff --git a/src/visualizers/OpenQCViewerPanel.ts b/src/visualizers/OpenQCViewerPanel.ts index b63c776..7738b06 100644 --- a/src/visualizers/OpenQCViewerPanel.ts +++ b/src/visualizers/OpenQCViewerPanel.ts @@ -14,10 +14,9 @@ import * as vscode from 'vscode'; import type { OpenQCStructure } from '../structures/OpenQCStructure'; import { validateOpenQCStructure, type ValidationResult } from '../structures/validation'; -import { openQCStructureToXYZ } from '../structures/converters'; -import { MoleculeViewerWebview } from './MoleculeViewerWebview'; import { OpenQCViewerWebview } from '../webviews/openqcViewerWebview'; import { Logger } from '../utils/Logger'; +import { StructureExporter, type StructureData } from '../utils/structureExporter'; const logger = Logger.getInstance(); @@ -54,6 +53,7 @@ export class OpenQCViewerPanel { private readonly _panel: vscode.WebviewPanel; private _disposables: vscode.Disposable[] = []; private _currentStructure?: OpenQCStructure; + private _dirty = false; // ----------------------------------------------------------------------- // Factory @@ -77,7 +77,7 @@ export class OpenQCViewerPanel { if (OpenQCViewerPanel.currentPanel) { OpenQCViewerPanel.currentPanel._panel.reveal(column); - OpenQCViewerPanel.currentPanel._sendStructure(structure); + OpenQCViewerPanel.currentPanel._replaceStructure(structure, filename); return; } @@ -104,7 +104,7 @@ export class OpenQCViewerPanel { panel: vscode.WebviewPanel, private readonly _extensionUri: vscode.Uri, structure: OpenQCStructure, - private readonly _filename: string + private _filename: string ) { this._panel = panel; @@ -135,7 +135,7 @@ export class OpenQCViewerPanel { ); this._panel.webview.onDidReceiveMessage( - message => OpenQCViewerPanel._handleMessage(message), + message => this._handleMessage(message), null, this._disposables ); @@ -158,6 +158,40 @@ export class OpenQCViewerPanel { return this._currentStructure; } + /** Return whether the viewer has unsaved webview-side edits. */ + public isDirty(): boolean { + return this._dirty; + } + + public static getCurrentStructureData(): StructureData | undefined { + const structure = OpenQCViewerPanel.currentPanel?._currentStructure; + if (!structure) { + return undefined; + } + + return { + atoms: structure.atoms.map(atom => ({ + element: atom.element, + x: atom.x, + y: atom.y, + z: atom.z, + })), + bonds: structure.bonds, + cell: structure.cell, + pbc: structure.cell?.pbc, + metadata: structure.metadata, + }; + } + + public static async saveCurrentStructureToSource(): Promise { + if (!OpenQCViewerPanel.currentPanel) { + vscode.window.showErrorMessage('No OpenQC structure viewer is open'); + return false; + } + + return OpenQCViewerPanel.currentPanel._saveCurrentStructureToSource(); + } + public dispose(): void { OpenQCViewerPanel.currentPanel = undefined; this._panel.dispose(); @@ -175,6 +209,8 @@ export class OpenQCViewerPanel { private _sendStructure(structure: OpenQCStructure): void { this._currentStructure = structure; + this._dirty = false; + this._updateTitle(); // Validate const validation = validateOpenQCStructure(structure); @@ -187,33 +223,43 @@ export class OpenQCViewerPanel { validation, }); - // Also send as XYZ for backward compatibility with NGL-based webview - try { - const xyz = openQCStructureToXYZ(structure); - this._panel.webview.postMessage({ - type: 'initialize', - structure: { xyz }, - filename: this._filename, - }); - } catch { - // If XYZ conversion fails, the DTO path is still available - } - logger.info(`Viewer: loaded ${structure.atoms.length} atoms from ${this._filename}`); if (validation.warnings.length > 0) { getOutputChannel().appendLine(`Warnings: ${validation.warnings.join('; ')}`); } } + private _replaceStructure(structure: OpenQCStructure, filename: string): void { + this._filename = filename; + this._sendStructure(structure); + } + // ----------------------------------------------------------------------- // Message handlers // ----------------------------------------------------------------------- - private static _handleMessage(message: any): void { + private _handleMessage(message: any): void { switch (message.type) { case 'exportImage': OpenQCViewerPanel._handleExportImage(message.data); break; + case 'structureEdited': + case 'structureUpdated': + this._handleStructureUpdate(message.structure, message.dirty ?? true); + break; + case 'exportEditedStructure': + case 'exportStructure': + this._handleStructureExportRequest(message.structure, message.dirty); + break; + case 'saveEditedStructureToSource': + if ( + message.structure && + !this._handleStructureUpdate(message.structure, message.dirty ?? true) + ) { + break; + } + void this._saveCurrentStructureToSource(); + break; case 'error': vscode.window.showErrorMessage(`OpenQC Viewer: ${message.message}`); break; @@ -226,6 +272,88 @@ export class OpenQCViewerPanel { } } + private _handleStructureUpdate(structurePayload: unknown, dirty: boolean): boolean { + const structure = parseStructurePayload(structurePayload); + if (!structure) { + vscode.window.showErrorMessage('OpenQC Viewer: edited structure message was invalid'); + return false; + } + + const validation = validateOpenQCStructure(structure); + if (!validation.valid) { + vscode.window.showErrorMessage( + `OpenQC Viewer: edited structure is invalid: ${validation.errors.join('; ')}` + ); + return false; + } + + this._currentStructure = structure; + this._dirty = dirty; + this._updateTitle(); + if (validation.warnings.length > 0) { + getOutputChannel().appendLine(`Edited structure warnings: ${validation.warnings.join('; ')}`); + } + return true; + } + + private _handleStructureExportRequest(structurePayload: unknown, dirty?: unknown): void { + const nextDirty = typeof dirty === 'boolean' ? dirty : this._dirty; + if (structurePayload && !this._handleStructureUpdate(structurePayload, nextDirty)) { + return; + } + void vscode.commands.executeCommand('openqc.exportStructureWithPicker'); + } + + private _updateTitle(): void { + this._panel.title = `OpenQC: ${this._dirty ? '• ' : ''}${this._filename}`; + } + + private async _saveCurrentStructureToSource(): Promise { + const structureData = OpenQCViewerPanel.getCurrentStructureData(); + if (!this._currentStructure || !structureData || structureData.atoms.length === 0) { + vscode.window.showErrorMessage('No edited structure is available to save'); + return false; + } + + const format = StructureExporter.inferNativeFormatFromPath(this._filename); + if (!format) { + vscode.window.showErrorMessage( + 'OpenQC can only write edited structures back to XYZ, Extended XYZ, PDB, CIF, POSCAR, or CONTCAR source files. Use Export Structure for other formats.' + ); + return false; + } + + if (!this._dirty) { + vscode.window.showInformationMessage('No OpenQC viewer edits to save'); + return false; + } + + const confirmation = await vscode.window.showWarningMessage( + `Overwrite source file with the edited structure?\n${this._filename}`, + { modal: true }, + 'Save' + ); + if (confirmation !== 'Save') { + return false; + } + + const exporter = new StructureExporter(); + const result = await exporter.overwriteStructureFile(structureData, this._filename); + if (!result.success) { + vscode.window.showErrorMessage(`Save failed: ${result.error}`); + return false; + } + + this._dirty = false; + this._updateTitle(); + await this._panel.webview.postMessage({ + type: 'markStructureSaved', + structure: JSON.stringify(this._currentStructure), + }); + vscode.window.showInformationMessage(`Edited structure saved to ${this._filename}`); + return true; + } + private static async _handleExportImage(data: any): Promise { // Accept both Blob-like objects and base64 data URLs let buffer: Buffer; @@ -259,3 +387,23 @@ export class OpenQCViewerPanel { } } } + +function parseStructurePayload(payload: unknown): OpenQCStructure | undefined { + if (!payload) { + return undefined; + } + + if (typeof payload === 'string') { + try { + return JSON.parse(payload) as OpenQCStructure; + } catch { + return undefined; + } + } + + if (typeof payload === 'object') { + return payload as OpenQCStructure; + } + + return undefined; +} diff --git a/src/visualizers/ThreeJsWebview.ts b/src/visualizers/ThreeJsWebview.ts index 690a7c6..78799ed 100644 --- a/src/visualizers/ThreeJsWebview.ts +++ b/src/visualizers/ThreeJsWebview.ts @@ -10,6 +10,7 @@ import * as vscode from 'vscode'; import { ThreeJsRenderer } from './ThreeJsRenderer'; import { Atom, RepresentationMode } from './types'; +import { generateNonce } from '../utils/nonce'; export interface ThreeJsWebviewOptions { title: string; @@ -501,14 +502,4 @@ export class ThreeJsWebview { } } -/** - * Generate a random nonce for CSP - */ -function getNonce(): string { - let text = ''; - const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - for (let i = 0; i < 32; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; -} +const getNonce = generateNonce; diff --git a/src/visualizers/ViewerStructurePipeline.ts b/src/visualizers/ViewerStructurePipeline.ts new file mode 100644 index 0000000..e8dfc12 --- /dev/null +++ b/src/visualizers/ViewerStructurePipeline.ts @@ -0,0 +1,181 @@ +import * as path from 'path'; +import * as vscode from 'vscode'; +import type { QuantumChemistrySoftware } from '../managers/FileTypeDetector'; +import { CacheKeyGenerator, CacheManager, type LRUCache } from '../performance/cacheManager'; +import { IncrementalParser } from '../performance/incrementalParser'; +import { getWorkerManager, type WorkerManager } from '../performance/workerManager'; +import { WorkerMessageType } from '../performance/computeWorker'; +import type { ASEAtoms } from '../ase/ASEConverter'; +import { + OPENQC_STRUCTURE_SCHEMA_VERSION, + type OpenQCStructure, +} from '../structures/OpenQCStructure'; +import { + createOpenQCStructure, + poscarToOpenQCStructure, + molecularStructureToOpenQCStructure, +} from '../structures/converters'; +import { StructureConverter } from './StructureConverter'; +import { Molecule3D } from './Molecule3D'; + +export type ViewerParseSource = 'cache' | 'worker' | 'incremental'; + +export interface ViewerParseResult { + structure: OpenQCStructure; + source: ViewerParseSource; + incremental: boolean; +} + +/** Production path that connects worker parsing, LRU caching, and incremental parsing to 3Dmol. */ +export class ViewerStructurePipeline { + private readonly parsers = new Map>(); + private readonly structureCache: LRUCache; + + constructor( + context: vscode.ExtensionContext, + private readonly workerManager: WorkerManager = getWorkerManager() + ) { + this.structureCache = CacheManager.getInstance(context).getStructureCache(); + } + + async parse( + document: vscode.TextDocument, + software: QuantumChemistrySoftware + ): Promise { + const filePath = document.uri.fsPath || document.fileName || document.uri.toString(); + const cacheKey = CacheKeyGenerator.forFile(filePath, `viewer:${document.version}`); + const cached = this.structureCache.get(cacheKey); + if (cached) { + return { structure: cached, source: 'cache', incremental: false }; + } + + const workerStructure = await this.tryWorkerParse(document, software); + if (workerStructure) { + this.structureCache.set(cacheKey, workerStructure); + return { structure: workerStructure, source: 'worker', incremental: false }; + } + + const parserKey = `${document.uri.toString()}::${software}`; + let parser = this.parsers.get(parserKey); + if (!parser) { + parser = new IncrementalParser(content => + parseViewerStructureContent(content, document.fileName, software) + ); + this.parsers.set(parserKey, parser); + } + + const parsed = await parser.parse(document); + this.structureCache.set(cacheKey, parsed.ast); + const incremental = + parsed.changes.added.length > 0 || + parsed.changes.removed.length > 0 || + parsed.changes.modified.length > 0; + return { structure: parsed.ast, source: 'incremental', incremental }; + } + + clear(): void { + this.parsers.forEach(parser => parser.clearCache()); + this.parsers.clear(); + } + + private async tryWorkerParse( + document: vscode.TextDocument, + software: QuantumChemistrySoftware + ): Promise { + const basename = path.basename(document.fileName).toUpperCase(); + if (software !== 'VASP' || (basename !== 'POSCAR' && basename !== 'CONTCAR')) { + return undefined; + } + + try { + const task = await this.workerManager.submitTask( + WorkerMessageType.PARSE_STRUCTURE, + { content: document.getText(), format: 'poscar' }, + 'high' + ); + const completed = await this.workerManager.waitForTask(task.id, 10_000); + return aseAtomsToOpenQCStructure(completed.result as ASEAtoms, document.fileName, software); + } catch { + return undefined; + } + } +} + +export function parseViewerStructureContent( + content: string, + fileName: string, + software: QuantumChemistrySoftware +): OpenQCStructure { + if (software === 'VASP') { + const basename = path.basename(fileName).toUpperCase(); + if (basename === 'POSCAR' || basename === 'CONTCAR') { + try { + const structure = poscarToOpenQCStructure(content, fileName); + if (structure.atoms.length > 0) { + return structure; + } + } catch { + // Continue through shared native fallbacks. + } + } + } + + try { + const molecular = new StructureConverter().autoConvert(content, fileName); + if (molecular.atoms.length > 0) { + return molecularStructureToOpenQCStructure(molecular, { + sourceSoftware: software, + sourceParser: 'native', + }); + } + } catch { + // Continue to legacy format parsing. + } + + const atoms = new Molecule3D().parseAtoms(content, software); + if (atoms.length === 0) { + throw new Error('No molecular structure found in file'); + } + return createOpenQCStructure(atoms, { name: fileName, sourceSoftware: software }); +} + +function aseAtomsToOpenQCStructure( + atoms: ASEAtoms, + fileName: string, + software: QuantumChemistrySoftware +): OpenQCStructure { + const cell = atoms.cell + ? { + a: tuple3(atoms.cell[0]), + b: tuple3(atoms.cell[1]), + c: tuple3(atoms.cell[2]), + pbc: tupleBoolean3(atoms.pbc), + coordinateMode: 'cartesian' as const, + } + : undefined; + + return { + schemaVersion: OPENQC_STRUCTURE_SCHEMA_VERSION, + kind: cell ? 'periodic' : 'molecule', + name: fileName, + atoms: atoms.chemical_symbols.map((element, index) => ({ + element, + x: atoms.positions[index][0], + y: atoms.positions[index][1], + z: atoms.positions[index][2], + })), + cell, + metadata: { + source: { filename: fileName, software, parser: 'compute-worker-native' }, + provenance: { createdAt: new Date().toISOString(), warnings: [] }, + }, + }; +} + +function tuple3(values: number[]): [number, number, number] { + return [values[0], values[1], values[2]]; +} + +function tupleBoolean3(values: boolean[]): [boolean, boolean, boolean] { + return [Boolean(values[0]), Boolean(values[1]), Boolean(values[2])]; +} diff --git a/src/visualizers/types.ts b/src/visualizers/types.ts index 37ac394..c382d21 100644 --- a/src/visualizers/types.ts +++ b/src/visualizers/types.ts @@ -12,6 +12,8 @@ export interface Atom { x: number; y: number; z: number; + /** VASP-style selective dynamics flags: true means free along that axis. */ + selectiveDynamics?: [boolean, boolean, boolean]; } /** diff --git a/src/webviews/openqcViewerWebview.ts b/src/webviews/openqcViewerWebview.ts index ec45e1a..86b047a 100644 --- a/src/webviews/openqcViewerWebview.ts +++ b/src/webviews/openqcViewerWebview.ts @@ -9,6 +9,7 @@ */ import * as vscode from 'vscode'; +import { generateNonce } from '../utils/nonce'; export class OpenQCViewerWebview { /** @@ -25,7 +26,7 @@ export class OpenQCViewerWebview { vscode.Uri.joinPath(extensionUri, 'media', 'openqc-viewer.css') ); const threeDmolUri = webview.asWebviewUri( - vscode.Uri.joinPath(extensionUri, 'node_modules', '3dmol', 'build', '3Dmol-min.js') + vscode.Uri.joinPath(extensionUri, 'media', 'vendor', '3dmol', '3Dmol-min.js') ); const csp = [ @@ -61,6 +62,8 @@ export class OpenQCViewerWebview {
+ +
@@ -69,6 +72,56 @@ export class OpenQCViewerWebview { + +
+ + + + + + + + + + + + + + + + + + + + + 0 bonds + + + + + + + + + + + + Clean +
+
@@ -129,19 +182,9 @@ export class OpenQCViewerWebview { static getWebviewOptions(extensionUri: vscode.Uri): vscode.WebviewOptions { return { enableScripts: true, - localResourceRoots: [ - vscode.Uri.joinPath(extensionUri, 'media'), - vscode.Uri.joinPath(extensionUri, 'node_modules', '3dmol'), - ], + localResourceRoots: [vscode.Uri.joinPath(extensionUri, 'media')], }; } } -function getNonce(): string { - let text = ''; - const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - for (let i = 0; i < 32; i++) { - text += chars.charAt(Math.floor(Math.random() * chars.length)); - } - return text; -} +const getNonce = generateNonce; diff --git a/src/webviews/resultsWebview.ts b/src/webviews/resultsWebview.ts index b712d43..17e8d7b 100644 --- a/src/webviews/resultsWebview.ts +++ b/src/webviews/resultsWebview.ts @@ -1,3 +1,5 @@ +import { generateNonce } from '../utils/nonce'; + export interface ResultsWebviewData { jobId: string; jobName: string; @@ -194,11 +196,4 @@ function escapeHtml(value: unknown): string { .replace(/'/g, '''); } -function getNonce(): string { - let text = ''; - const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - for (let i = 0; i < 32; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; -} +const getNonce = generateNonce; diff --git a/tests/mocks/vscode.ts b/tests/mocks/vscode.ts index fba81e0..5f936a2 100644 --- a/tests/mocks/vscode.ts +++ b/tests/mocks/vscode.ts @@ -6,6 +6,11 @@ export const window = { showWarningMessage: jest.fn(() => Promise.resolve(undefined)), showErrorMessage: jest.fn(() => Promise.resolve(undefined)), showTextDocument: jest.fn(() => Promise.resolve(undefined)), + showSaveDialog: jest.fn(() => Promise.resolve(undefined)), + showInputBox: jest.fn(() => Promise.resolve(undefined)), + showQuickPick: jest.fn(() => Promise.resolve(undefined)), + showOpenDialog: jest.fn(() => Promise.resolve(undefined)), + withProgress: jest.fn((_options: unknown, task: (progress?: unknown) => unknown) => task()), activeTextEditor: undefined, visibleTextEditors: [], tabGroups: { @@ -83,6 +88,7 @@ export const workspace = { workspaceFolders: [], getWorkspaceFolder: jest.fn(), asRelativePath: jest.fn((path: string) => path), + openTextDocument: jest.fn(), fs: { readFile: jest.fn(), writeFile: jest.fn(), @@ -388,8 +394,39 @@ export const FoldingRangeKind = { Region: 3, }; +export const TreeItemCollapsibleState = { + None: 0, + Collapsed: 1, + Expanded: 2, +}; + +export class TreeItem { + command?: unknown; + contextValue?: string; + description?: string; + iconPath?: unknown; + tooltip?: string; + + constructor( + public label: string, + public collapsibleState?: number + ) {} +} + +export class ThemeColor { + constructor(public id: string) {} +} + +export class ThemeIcon { + constructor( + public id: string, + public color?: ThemeColor + ) {} +} + export const commands = { registerCommand: jest.fn(() => ({ dispose: jest.fn() })), + executeCommand: jest.fn(), }; export const env = { @@ -402,6 +439,10 @@ export const ViewColumn = { Three: 3, }; +export const ProgressLocation = { + Notification: 15, +}; + export const Uri = { file: jest.fn((path: string) => ({ path, @@ -474,7 +515,12 @@ export default { SymbolKind, SymbolTag, FoldingRangeKind, + TreeItemCollapsibleState, + TreeItem, + ThemeColor, + ThemeIcon, ViewColumn, + ProgressLocation, Uri, EventEmitter, ExtensionContext, diff --git a/tests/performance/computeWorker.test.ts b/tests/performance/computeWorker.test.ts index 0bf0953..8be799e 100644 --- a/tests/performance/computeWorker.test.ts +++ b/tests/performance/computeWorker.test.ts @@ -31,12 +31,12 @@ describe('ComputeWorker', () => { }); describe('PARSE_STRUCTURE', () => { - it('should parse structure successfully', async () => { + it('should parse XYZ structure content into real atom symbols and coordinates', async () => { const message: WorkerMessage = { type: WorkerMessageType.PARSE_STRUCTURE, id: 'test-1', payload: { - content: 'C 0 0 0\nC 1 0 0\nC 2 0 0', + content: '3\nwater\nO 0.0 0.0 0.0\nH 0.96 0.0 0.0\nH -0.24 0.93 0.0\n', format: 'xyz', }, }; @@ -44,10 +44,95 @@ describe('ComputeWorker', () => { const response = await worker.processMessage(message); expect(response.success).toBe(true); - expect(response.result).toBeDefined(); + expect(response.result.chemical_symbols).toEqual(['O', 'H', 'H']); + expect(response.result.positions).toEqual([ + [0, 0, 0], + [0.96, 0, 0], + [-0.24, 0.93, 0], + ]); + expect(response.result.pbc).toEqual([false, false, false]); + expect(response.result.info).toMatchObject({ format: 'xyz', comment: 'water' }); expect(response.duration).toBeGreaterThanOrEqual(0); }); + it('should parse VASP POSCAR Direct coordinates into Cartesian positions', async () => { + const message: WorkerMessage = { + type: WorkerMessageType.PARSE_STRUCTURE, + id: 'test-poscar', + payload: { + content: [ + 'Si', + '1.0', + '5.43 0 0', + '0 5.43 0', + '0 0 5.43', + 'Si', + '2', + 'Direct', + '0 0 0', + '0.25 0.25 0.25', + ].join('\n'), + format: 'poscar', + }, + }; + + const response = await worker.processMessage(message); + + expect(response.success).toBe(true); + expect(response.result.chemical_symbols).toEqual(['Si', 'Si']); + expect(response.result.positions[1]).toEqual([1.3575, 1.3575, 1.3575]); + expect(response.result.cell).toEqual([ + [5.43, 0, 0], + [0, 5.43, 0], + [0, 0, 5.43], + ]); + expect(response.result.pbc).toEqual([true, true, true]); + }); + + it('should reject unsupported structure formats instead of returning a fake structure', async () => { + const message: WorkerMessage = { + type: WorkerMessageType.PARSE_STRUCTURE, + id: 'test-unsupported-format', + payload: { + content: 'not a structure', + format: 'unknown-format', + }, + }; + + const response = await worker.processMessage(message); + + expect(response.success).toBe(false); + expect(response.error).toContain('Unsupported structure format'); + }); + + it('should reject XYZ content with mismatched declared atom count', async () => { + const response = await worker.processMessage({ + type: WorkerMessageType.PARSE_STRUCTURE, + id: 'test-xyz-mismatch', + payload: { + content: '2\nbad\nH 0 0 0\n', + format: 'xyz', + }, + }); + + expect(response.success).toBe(false); + expect(response.error).toContain('declared 2 atoms but parsed 1'); + }); + + it('should reject XYZ content with non-finite or missing coordinates', async () => { + const response = await worker.processMessage({ + type: WorkerMessageType.PARSE_STRUCTURE, + id: 'test-xyz-bad-coords', + payload: { + content: '1\nbad\nH NaN 0 0\n', + format: 'xyz', + }, + }); + + expect(response.success).toBe(false); + expect(response.error).toContain('declared 1 atoms but parsed 0'); + }); + it('should fail with empty content', async () => { const message: WorkerMessage = { type: WorkerMessageType.PARSE_STRUCTURE, @@ -66,22 +151,108 @@ describe('ComputeWorker', () => { }); describe('CONVERT_FORMAT', () => { - it('should convert atoms to target format', async () => { - const atoms = createMockAtoms(10); + it('should convert atoms to standard XYZ text', async () => { + const atoms: ASEAtoms = { + chemical_symbols: ['O', 'H', 'H'], + positions: [ + [0, 0, 0], + [0.9572, 0, 0], + [-0.239, 0.927, 0], + ], + pbc: [false, false, false], + info: { comment: 'water' }, + }; const message: WorkerMessage = { type: WorkerMessageType.CONVERT_FORMAT, id: 'test-3', payload: { atoms, - targetFormat: 'vasp', + targetFormat: 'xyz', }, }; const response = await worker.processMessage(message); expect(response.success).toBe(true); - expect(response.result).toBeDefined(); - expect(response.result).toContain('Converted to vasp'); + expect(response.result.split('\n')).toEqual([ + '3', + 'water', + 'O 0.000000 0.000000 0.000000', + 'H 0.957200 0.000000 0.000000', + 'H -0.239000 0.927000 0.000000', + ]); + }); + + it('should convert atoms to grouped POSCAR text', async () => { + const atoms: ASEAtoms = { + chemical_symbols: ['Si', 'O', 'O', 'Si'], + positions: [ + [0, 0, 0], + [1.6, 0, 0], + [0, 1.6, 0], + [2.7, 2.7, 2.7], + ], + pbc: [true, true, true], + cell: [ + [5.4, 0, 0], + [0, 5.4, 0], + [0, 0, 5.4], + ], + info: { title: 'SiO2' }, + }; + + const response = await worker.processMessage({ + type: WorkerMessageType.CONVERT_FORMAT, + id: 'test-poscar-export', + payload: { atoms, targetFormat: 'poscar' }, + }); + + expect(response.success).toBe(true); + expect(response.result.split('\n')).toEqual([ + 'SiO2', + '1.000000000000', + '5.400000 0.000000 0.000000', + '0.000000 5.400000 0.000000', + '0.000000 0.000000 5.400000', + 'Si O', + '2 2', + 'Cartesian', + '0.000000 0.000000 0.000000', + '2.700000 2.700000 2.700000', + '1.600000 0.000000 0.000000', + '0.000000 1.600000 0.000000', + ]); + }); + + it('should reject POSCAR conversion without unit-cell vectors', async () => { + const atoms: ASEAtoms = { + chemical_symbols: ['H'], + positions: [[0, 0, 0]], + pbc: [false, false, false], + }; + + const response = await worker.processMessage({ + type: WorkerMessageType.CONVERT_FORMAT, + id: 'test-poscar-no-cell', + payload: { atoms, targetFormat: 'vasp' }, + }); + + expect(response.success).toBe(false); + expect(response.error).toContain('without unit-cell vectors'); + }); + + it('should reject unsupported worker conversion targets', async () => { + const response = await worker.processMessage({ + type: WorkerMessageType.CONVERT_FORMAT, + id: 'test-unsupported-convert', + payload: { + atoms: createMockAtoms(1), + targetFormat: 'cube', + }, + }); + + expect(response.success).toBe(false); + expect(response.error).toContain('Unsupported worker conversion target format'); }); it('should fail with invalid atoms', async () => { @@ -147,6 +318,123 @@ describe('ComputeWorker', () => { expect(response.result.atom_overlap.valid).toBe(false); expect(response.result.atom_overlap.overlaps.length).toBeGreaterThan(0); }); + + it('should reject malformed atoms before running structure checks', async () => { + const atoms: ASEAtoms = { + chemical_symbols: ['C', 'O'], + positions: [[0, 0, 0]], + pbc: [false, false, false], + }; + + const response = await worker.processMessage({ + type: WorkerMessageType.VALIDATE_STRUCTURE, + id: 'test-malformed-atoms', + payload: { + atoms, + checks: ['bond_lengths'], + }, + }); + + expect(response.success).toBe(false); + expect(response.error).toContain('chemical_symbols length must match positions length'); + }); + + it('should reject periodic atoms with missing cell for cell consistency checks', async () => { + const atoms: ASEAtoms = { + chemical_symbols: ['C'], + positions: [[0, 0, 0]], + pbc: [true, true, true], + }; + + const response = await worker.processMessage({ + type: WorkerMessageType.VALIDATE_STRUCTURE, + id: 'test-periodic-no-cell', + payload: { + atoms, + checks: ['cell_consistency'], + }, + }); + + expect(response.success).toBe(true); + expect(response.result.cell_consistency.valid).toBe(false); + expect(response.result.cell_consistency.warnings[0]).toContain('Periodic system is missing'); + }); + + it('should validate charge neutrality from explicit charge arrays', async () => { + const atoms: ASEAtoms = { + chemical_symbols: ['Na', 'Cl'], + positions: [ + [0, 0, 0], + [2.8, 0, 0], + ], + pbc: [false, false, false], + info: { charges: [1, -1] }, + }; + + const response = await worker.processMessage({ + type: WorkerMessageType.VALIDATE_STRUCTURE, + id: 'test-charge-neutral', + payload: { + atoms, + checks: ['charge_neutrality'], + }, + }); + + expect(response.success).toBe(true); + expect(response.result.charge_neutrality).toMatchObject({ + valid: true, + netCharge: 0, + status: 'checked', + }); + expect(response.result.charge_neutrality.warnings).toEqual([]); + }); + + it('should mark charge neutrality as skipped when no charge data is present', async () => { + const atoms = createMockAtoms(2); + + const response = await worker.processMessage({ + type: WorkerMessageType.VALIDATE_STRUCTURE, + id: 'test-charge-skipped', + payload: { + atoms, + checks: ['charge_neutrality'], + }, + }); + + expect(response.success).toBe(true); + expect(response.result.charge_neutrality).toMatchObject({ + valid: true, + status: 'skipped', + netCharge: null, + }); + }); + + it('should flag non-neutral explicit charge arrays', async () => { + const atoms: ASEAtoms = { + chemical_symbols: ['Na', 'Cl'], + positions: [ + [0, 0, 0], + [2.8, 0, 0], + ], + pbc: [false, false, false], + info: { charges: [1, 0] }, + }; + + const response = await worker.processMessage({ + type: WorkerMessageType.VALIDATE_STRUCTURE, + id: 'test-charge-non-neutral', + payload: { + atoms, + checks: ['charge_neutrality'], + }, + }); + + expect(response.success).toBe(true); + expect(response.result.charge_neutrality.valid).toBe(false); + expect(response.result.charge_neutrality.status).toBe('checked'); + expect(response.result.charge_neutrality.netCharge).toBe(1); + expect(response.result.charge_neutrality.warnings[0]).toContain('Net charge is 1.000000'); + }); }); describe('CALCULATE_PROPERTIES', () => { @@ -170,14 +458,15 @@ describe('ComputeWorker', () => { expect(response.result.atom_count).toBe(10); }); - it('should calculate center of mass correctly', async () => { + it('should calculate mass-weighted center of mass correctly', async () => { const atoms: ASEAtoms = { - chemical_symbols: ['C', 'C'], + chemical_symbols: ['X', 'X'], positions: [ [0, 0, 0], [2, 0, 0], ], pbc: [false, false, false], + masses: [1, 3], }; const message: WorkerMessage = { @@ -192,7 +481,77 @@ describe('ComputeWorker', () => { const response = await worker.processMessage(message); expect(response.success).toBe(true); - expect(response.result.center_of_mass).toEqual([1, 0, 0]); + expect(response.result.center_of_mass).toEqual([1.5, 0, 0]); + }); + + it('should calculate a real moment of inertia tensor about the center of mass', async () => { + const atoms: ASEAtoms = { + chemical_symbols: ['X', 'X'], + positions: [ + [-1, 0, 0], + [1, 0, 0], + ], + pbc: [false, false, false], + masses: [1, 1], + }; + + const response = await worker.processMessage({ + type: WorkerMessageType.CALCULATE_PROPERTIES, + id: 'test-inertia', + payload: { + atoms, + properties: ['moment_of_inertia'], + }, + }); + + expect(response.success).toBe(true); + expect(response.result.moment_of_inertia).toEqual([ + [0, 0, 0], + [0, 2, 0], + [0, 0, 2], + ]); + }); + + it('should calculate exact finite bounding boxes for negative coordinates', async () => { + const atoms: ASEAtoms = { + chemical_symbols: ['C', 'O', 'H'], + positions: [ + [-1, 2, 0], + [3, -4, 5], + [0, 1, -2], + ], + pbc: [false, false, false], + }; + + const response = await worker.processMessage({ + type: WorkerMessageType.CALCULATE_PROPERTIES, + id: 'test-bounds', + payload: { + atoms, + properties: ['bounding_box'], + }, + }); + + expect(response.success).toBe(true); + expect(response.result.bounding_box).toEqual({ + min: [-1, -4, -2], + max: [3, 2, 5], + size: [4, 6, 7], + }); + }); + + it('should reject empty atom payloads before calculating properties', async () => { + const response = await worker.processMessage({ + type: WorkerMessageType.CALCULATE_PROPERTIES, + id: 'test-empty-properties', + payload: { + atoms: { chemical_symbols: [], positions: [], pbc: [false, false, false] }, + properties: ['bounding_box'], + }, + }); + + expect(response.success).toBe(false); + expect(response.error).toContain('atoms must contain at least one atom'); }); }); @@ -215,8 +574,9 @@ describe('ComputeWorker', () => { expect(response.success).toBe(true); expect(response.result.migrated).toBeDefined(); - expect(response.result.migrated.CUTOFF).toBe(572); // 520 * 1.1 - expect(response.result.migrated.EPSCF).toBe(1e-6); + expect(response.result.migrated.CUTOFF).toBeCloseTo(38.219295063, 9); + expect(response.result.migrated.EPS_SCF).toBe(1e-6); + expect(response.result.notes.join('\n')).toContain('ENCUT -> CUTOFF converted with factor'); }); it('should migrate QE to VASP parameters', async () => { @@ -235,7 +595,64 @@ describe('ComputeWorker', () => { const response = await worker.processMessage(message); expect(response.success).toBe(true); - expect(response.result.migrated.ENCUT).toBe(60); + expect(response.result.migrated.ENCUT).toBeCloseTo(816.34158738, 8); + }); + + it('should migrate VASP to QE parameters with unit conversion and convergence mapping', async () => { + const response = await worker.processMessage({ + type: WorkerMessageType.MIGRATE_PARAMETERS, + id: 'test-vasp-qe', + payload: { + sourceFormat: 'vasp', + targetFormat: 'qe', + parameters: { + ENCUT: 408.17079368982, + EDIFF: 1e-7, + UNKNOWN: true, + }, + }, + }); + + expect(response.success).toBe(true); + expect(response.result.migrated.ecutwfc).toBeCloseTo(30, 10); + expect(response.result.migrated.conv_thr).toBe(1e-7); + expect(response.result.unmapped).toEqual(['UNKNOWN']); + expect(response.result.warnings[0]).toContain('could not be mapped'); + }); + + it('should report unsupported parameter migration pairs without pretending success', async () => { + const response = await worker.processMessage({ + type: WorkerMessageType.MIGRATE_PARAMETERS, + id: 'test-unsupported-migration', + payload: { + sourceFormat: 'orca', + targetFormat: 'lammps', + parameters: { + MaxIter: 200, + }, + }, + }); + + expect(response.success).toBe(true); + expect(response.result.supported).toBe(false); + expect(response.result.migrated).toEqual({}); + expect(response.result.unmapped).toEqual(['MaxIter']); + expect(response.result.warnings[0]).toContain('No worker-local parameter mappings'); + }); + + it('should reject non-object migration parameter payloads', async () => { + const response = await worker.processMessage({ + type: WorkerMessageType.MIGRATE_PARAMETERS, + id: 'test-bad-params', + payload: { + sourceFormat: 'vasp', + targetFormat: 'qe', + parameters: null, + }, + }); + + expect(response.success).toBe(false); + expect(response.error).toContain('parameters must be a key-value object'); }); }); diff --git a/tests/performance/incrementalParser.test.ts b/tests/performance/incrementalParser.test.ts new file mode 100644 index 0000000..4c0e680 --- /dev/null +++ b/tests/performance/incrementalParser.test.ts @@ -0,0 +1,102 @@ +import { IncrementalParser } from '../../src/performance/incrementalParser'; + +describe('IncrementalParser', () => { + function createDocument(content: string, version: number, fsPath = '/tmp/input.inp'): any { + return { + uri: { + fsPath, + toString: () => `file://${fsPath}`, + }, + version, + lineCount: content.split('\n').length, + getText: () => content, + languageId: 'openqc-test', + }; + } + + it('returns cached results for the same document version without reparsing', async () => { + const parse = jest.fn((content: string) => ({ lines: content.split('\n') })); + const parser = new IncrementalParser(parse, undefined, { minLinesForIncremental: 2 }); + const document = createDocument(['A', 'B', 'C'].join('\n'), 1); + + const first = await parser.parse(document); + const second = await parser.parse(document); + + expect(first.cached).toBe(false); + expect(second.cached).toBe(true); + expect(parse).toHaveBeenCalledTimes(1); + }); + + it('detects added lines between cached document versions', async () => { + const parser = new IncrementalParser( + (content: string) => ({ lines: content.split('\n') }), + undefined, + { minLinesForIncremental: 2 } + ); + + await parser.parse(createDocument(['A', 'B', 'C', 'D', 'E', 'F'].join('\n'), 1)); + const result = await parser.parse( + createDocument(['A', 'B', 'B2', 'C', 'D', 'E', 'F'].join('\n'), 2) + ); + + expect(result.changes.added).toEqual([ + { startLine: 2, endLine: 3, startColumn: 0, endColumn: 0 }, + ]); + expect(result.changes.modified).toEqual([]); + expect(result.ast.lines).toEqual(['A', 'B', 'B2', 'C', 'D', 'E', 'F']); + }); + + it('detects removed lines between cached document versions', async () => { + const parser = new IncrementalParser( + (content: string) => ({ lines: content.split('\n') }), + undefined, + { minLinesForIncremental: 2 } + ); + + await parser.parse(createDocument(['A', 'B', 'C', 'D', 'E', 'F'].join('\n'), 1)); + const result = await parser.parse(createDocument(['A', 'C', 'D', 'E', 'F'].join('\n'), 2)); + + expect(result.changes.removed).toEqual([ + { startLine: 1, endLine: 2, startColumn: 0, endColumn: 0 }, + ]); + expect(result.changes.added).toEqual([]); + }); + + it('detects modified lines between cached document versions', async () => { + const parser = new IncrementalParser( + (content: string) => ({ lines: content.split('\n') }), + undefined, + { minLinesForIncremental: 2 } + ); + + await parser.parse(createDocument(['A', 'B', 'C', 'D', 'E', 'F'].join('\n'), 1)); + const result = await parser.parse( + createDocument(['A', 'B changed', 'C', 'D', 'E', 'F'].join('\n'), 2) + ); + + expect(result.changes.modified).toEqual([ + { startLine: 1, endLine: 2, startColumn: 0, endColumn: 9 }, + ]); + }); + + it('uses the AST diff function when provided', async () => { + const diff = jest.fn(() => ({ + added: [], + removed: [], + modified: [{ startLine: 10, endLine: 11, startColumn: 0, endColumn: 1 }], + })); + const original = ['A', 'B', 'C', 'D', 'E', 'F'].join('\n'); + const updated = ['A', 'B2', 'C', 'D', 'E', 'F'].join('\n'); + const parser = new IncrementalParser((content: string) => ({ text: content }), diff, { + minLinesForIncremental: 2, + }); + + await parser.parse(createDocument(original, 1)); + const result = await parser.parse(createDocument(updated, 2)); + + expect(diff).toHaveBeenCalledWith({ text: original }, { text: updated }); + expect(result.changes.modified).toEqual([ + { startLine: 10, endLine: 11, startColumn: 0, endColumn: 1 }, + ]); + }); +}); diff --git a/tests/performance/workerManager.test.ts b/tests/performance/workerManager.test.ts index dedf8c0..ba47103 100644 --- a/tests/performance/workerManager.test.ts +++ b/tests/performance/workerManager.test.ts @@ -119,6 +119,39 @@ describe('WorkerManager', () => { expect(completed.result).toBeDefined(); }, 10000); + it('should return real ComputeWorker parse results instead of fixed mock data', async () => { + const task = await manager.submitTask(WorkerMessageType.PARSE_STRUCTURE, { + content: '3\nwater\nO 0 0 0\nH 0.96 0 0\nH -0.24 0.93 0\n', + format: 'xyz', + }); + + const completed = await manager.waitForTask(task.id, 5000); + + expect(completed.status).toBe('completed'); + expect(completed.result.chemical_symbols).toEqual(['O', 'H', 'H']); + expect(completed.result.positions[1]).toEqual([0.96, 0, 0]); + expect(completed.result.info).toMatchObject({ + parser: 'compute-worker-native', + }); + }); + + it('should surface ComputeWorker errors and update failed task stats', async () => { + const task = await manager.submitTask(WorkerMessageType.PARSE_STRUCTURE, { + content: 'not a supported structure', + format: 'unknown-format', + }); + + await expect(manager.waitForTask(task.id, 5000)).rejects.toThrow( + 'Unsupported structure format' + ); + + const failedTask = manager.getTask(task.id); + const stats = manager.getStats(); + expect(failedTask?.status).toBe('failed'); + expect(failedTask?.error).toContain('Unsupported structure format'); + expect(stats.failedTasks).toBeGreaterThan(0); + }); + it('should timeout if task takes too long', async () => { // This test is timing-dependent and may be flaky // The task may complete faster than the timeout on fast machines diff --git a/tests/python/test_check_backend.py b/tests/python/test_check_backend.py new file mode 100644 index 0000000..f07a606 --- /dev/null +++ b/tests/python/test_check_backend.py @@ -0,0 +1,52 @@ +import unittest + +from openqc.bridge.check_backend import _derive_capabilities + + +class CheckBackendCapabilityTest(unittest.TestCase): + def test_structure_parsing_reports_native_degraded_without_optional_parsers(self): + packages = { + "ase": {"available": False}, + "pymatgen": {"available": False}, + "cclib": {"available": False}, + "dpdata": {"available": False}, + "spglib": {"available": False}, + } + external_tools = { + "multiwfn": {"available": False}, + "c2x": {"available": False}, + "openbabel": {"available": False}, + } + + capabilities = _derive_capabilities(packages, external_tools) + structure = capabilities["structureParsing"] + + self.assertEqual(structure["status"], "degraded") + self.assertIn("ase", structure["requires"]) + self.assertIn("pymatgen", structure["requires"]) + self.assertIn("Native", structure["detail"]) + + def test_external_analysis_reports_openbabel_requirement(self): + packages = { + "ase": {"available": False}, + "pymatgen": {"available": False}, + "cclib": {"available": False}, + "dpdata": {"available": False}, + "spglib": {"available": False}, + } + external_tools = { + "multiwfn": {"available": False}, + "c2x": {"available": False}, + "openbabel": {"available": False}, + } + + capabilities = _derive_capabilities(packages, external_tools) + external = capabilities["externalAnalysis"] + + self.assertEqual(external["status"], "missing") + self.assertIn("Open Babel", external["requires"]) + self.assertIn("Open Babel", external["detail"]) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/python/test_output_bridge.py b/tests/python/test_output_bridge.py new file mode 100644 index 0000000..26e8c2b --- /dev/null +++ b/tests/python/test_output_bridge.py @@ -0,0 +1,294 @@ +import sys +import tempfile +import types +import unittest +from pathlib import Path + +from openqc.bridge.output_bridge import _parse_output_native, main + + +class OutputBridgeTest(unittest.TestCase): + def test_native_output_parser_extracts_scf_energy_series(self): + results = _parse_output_native( + "\n".join( + [ + " SCF Done: E(RHF) = -75.500000 A.U. after 1 cycles", + " SCF Done: E(RHF) = -76.100000 A.U. after 2 cycles", + ] + ), + "gaussian", + ) + + self.assertTrue(results["success"]) + self.assertEqual(results["software"], "gaussian") + self.assertEqual(results["finalEnergy"], {"value": -76.1, "unit": "hartree"}) + self.assertEqual(results["scfEnergies"], [-75.5, -76.1]) + + def test_native_output_parser_extracts_orca_final_energy_without_cclib(self): + results = _parse_output_native( + "\n".join( + [ + "* O R C A *", + "FINAL SINGLE POINT ENERGY -75.983271231", + "ORCA TERMINATED NORMALLY", + ] + ), + "auto", + ) + + self.assertTrue(results["success"]) + self.assertEqual(results["software"], "orca") + self.assertEqual(results["finalEnergy"], {"value": -75.983271231, "unit": "hartree"}) + self.assertEqual(results["scfEnergies"], [-75.983271231]) + + def test_native_output_parser_extracts_cp2k_energy_without_cclib(self): + results = _parse_output_native( + "\n".join( + [ + "CP2K| version string", + "ENERGY| Total FORCE_EVAL ( QS ) energy (a.u.): -76.234567890", + "ENERGY| Total FORCE_EVAL ( QS ) energy (a.u.): -76.345678901", + ] + ), + "auto", + ) + + self.assertTrue(results["success"]) + self.assertEqual(results["software"], "cp2k") + self.assertEqual(results["finalEnergy"], {"value": -76.345678901, "unit": "hartree"}) + self.assertEqual(results["scfEnergies"], [-76.23456789, -76.345678901]) + + def test_native_output_parser_extracts_qe_energy_without_cclib(self): + results = _parse_output_native( + "\n".join( + [ + "Program PWSCF v.7.2 starts", + "! total energy = -15.25000000 Ry", + ] + ), + "auto", + ) + + self.assertTrue(results["success"]) + self.assertEqual(results["software"], "qe") + self.assertEqual(results["finalEnergy"]["unit"], "eV") + self.assertAlmostEqual(results["finalEnergy"]["value"], -207.4868201256585) + self.assertAlmostEqual(results["scfEnergies"][0], -207.4868201256585) + + def test_native_output_parser_extracts_gamess_energy_without_cclib(self): + results = _parse_output_native( + "\n".join( + [ + "GAMESS VERSION = 00", + " TOTAL ENERGY = -75.654321000", + ] + ), + "auto", + ) + + self.assertTrue(results["success"]) + self.assertEqual(results["software"], "gamess") + self.assertEqual(results["finalEnergy"], {"value": -75.654321, "unit": "hartree"}) + self.assertEqual(results["scfEnergies"], [-75.654321]) + + def test_native_output_parser_reports_unsupported_for_junk_text(self): + results = _parse_output_native( + "this is not a quantum chemistry output file\njust ordinary notes\n", + "auto", + ) + + self.assertFalse(results["success"]) + self.assertEqual(results["software"], "auto") + self.assertNotIn("finalEnergy", results) + self.assertNotIn("scfEnergies", results) + self.assertIn("No calculation output data", results["warnings"][0]) + + def test_parse_command_falls_back_when_cclib_cannot_parse_file(self): + fake_cclib = types.SimpleNamespace( + io=types.SimpleNamespace( + ccread=lambda _path: (_ for _ in ()).throw(ValueError("not a cclib file")) + ) + ) + previous = sys.modules.get("cclib") + sys.modules["cclib"] = fake_cclib + try: + with tempfile.TemporaryDirectory() as tmpdir: + output_path = Path(tmpdir) / "gaussian.log" + output_path.write_text( + " SCF Done: E(RHF) = -76.000000 A.U. after 3 cycles\n", + encoding="utf-8", + ) + + results = _run_output_bridge_parse(output_path) + finally: + if previous is None: + sys.modules.pop("cclib", None) + else: + sys.modules["cclib"] = previous + + self.assertTrue(results["success"]) + self.assertFalse(results["data"]["cclibAvailable"]) + self.assertEqual(results["data"]["finalEnergy"], {"value": -76.0, "unit": "hartree"}) + self.assertIn("cclib parser unavailable or failed", results["data"]["warnings"][0]) + + def test_parse_command_falls_back_when_cclib_returns_none(self): + fake_cclib = types.SimpleNamespace(io=types.SimpleNamespace(ccread=lambda _path: None)) + previous = sys.modules.get("cclib") + sys.modules["cclib"] = fake_cclib + try: + with tempfile.TemporaryDirectory() as tmpdir: + output_path = Path(tmpdir) / "gaussian.log" + output_path.write_text( + " SCF Done: E(RHF) = -77.000000 A.U. after 3 cycles\n", + encoding="utf-8", + ) + + results = _run_output_bridge_parse(output_path) + finally: + if previous is None: + sys.modules.pop("cclib", None) + else: + sys.modules["cclib"] = previous + + self.assertFalse(results["data"]["cclibAvailable"]) + self.assertEqual(results["data"]["finalEnergy"], {"value": -77.0, "unit": "hartree"}) + + def test_parse_command_does_not_claim_success_for_unrecognized_output(self): + fake_cclib = types.SimpleNamespace(io=types.SimpleNamespace(ccread=lambda _path: None)) + previous = sys.modules.get("cclib") + sys.modules["cclib"] = fake_cclib + try: + with tempfile.TemporaryDirectory() as tmpdir: + output_path = Path(tmpdir) / "notes.out" + output_path.write_text( + "ordinary lab notes\nnot a calculation output\n", + encoding="utf-8", + ) + + results = _run_output_bridge_parse(output_path) + finally: + if previous is None: + sys.modules.pop("cclib", None) + else: + sys.modules["cclib"] = previous + + self.assertTrue(results["success"]) + self.assertFalse(results["data"]["success"]) + self.assertFalse(results["data"]["cclibAvailable"]) + self.assertIn("No calculation output data", results["data"]["warnings"][0]) + self.assertIn("cclib parser unavailable or failed", results["data"]["warnings"][1]) + + def test_summarize_command_uses_native_fallback_when_cclib_fails(self): + fake_cclib = types.SimpleNamespace(io=types.SimpleNamespace(ccread=lambda _path: None)) + previous = sys.modules.get("cclib") + sys.modules["cclib"] = fake_cclib + try: + with tempfile.TemporaryDirectory() as tmpdir: + output_path = Path(tmpdir) / "orca.out" + output_path.write_text( + "* O R C A *\nFINAL SINGLE POINT ENERGY -75.983271231\n", + encoding="utf-8", + ) + + results = _run_output_bridge_command("summarize", output_path, software="auto") + finally: + if previous is None: + sys.modules.pop("cclib", None) + else: + sys.modules["cclib"] = previous + + self.assertTrue(results["success"]) + self.assertEqual(results["data"]["software"], "orca") + self.assertTrue(results["data"]["success"]) + self.assertEqual(results["data"]["finalEnergy"], {"value": -75.983271231, "unit": "hartree"}) + self.assertEqual(results["data"]["scfStepCount"], 1) + self.assertFalse(results["data"]["cclibAvailable"]) + + def test_trajectory_command_extracts_cclib_atomcoord_frames(self): + fake_data = types.SimpleNamespace( + metadata={"package": "gaussian"}, + atomnos=[1, 8], + atomcoords=[ + [[0.0, 0.0, 0.0], [0.0, 0.0, 1.0]], + [[0.0, 0.0, 0.1], [0.0, 0.0, 1.1]], + ], + scfenergies=[-75.0, -76.0], + ) + fake_cclib = types.SimpleNamespace(io=types.SimpleNamespace(ccread=lambda _path: fake_data)) + previous = sys.modules.get("cclib") + sys.modules["cclib"] = fake_cclib + try: + with tempfile.TemporaryDirectory() as tmpdir: + output_path = Path(tmpdir) / "gaussian.log" + output_path.write_text("fake gaussian optimization\n", encoding="utf-8") + + results = _run_output_bridge_command("trajectory", output_path) + finally: + if previous is None: + sys.modules.pop("cclib", None) + else: + sys.modules["cclib"] = previous + + self.assertTrue(results["success"]) + data = results["data"] + self.assertTrue(data["supported"]) + self.assertEqual(data["sourceFile"], str(output_path)) + self.assertEqual(data["software"], "gaussian") + self.assertEqual(data["frameCount"], 2) + self.assertEqual(data["energies"], [-75.0, -76.0]) + self.assertEqual(data["frames"][0]["schemaVersion"], "openqc.structure.v1") + self.assertEqual(data["frames"][0]["atoms"][1]["element"], "O") + self.assertEqual(data["frames"][1]["atoms"][1]["z"], 1.1) + + def test_trajectory_command_returns_structured_unsupported_without_frames(self): + fake_data = types.SimpleNamespace(metadata={"package": "orca"}, scfenergies=[-10.0]) + fake_cclib = types.SimpleNamespace(io=types.SimpleNamespace(ccread=lambda _path: fake_data)) + previous = sys.modules.get("cclib") + sys.modules["cclib"] = fake_cclib + try: + with tempfile.TemporaryDirectory() as tmpdir: + output_path = Path(tmpdir) / "orca.out" + output_path.write_text("fake single point\n", encoding="utf-8") + + results = _run_output_bridge_command("trajectory", output_path) + finally: + if previous is None: + sys.modules.pop("cclib", None) + else: + sys.modules["cclib"] = previous + + self.assertTrue(results["success"]) + self.assertFalse(results["data"]["supported"]) + self.assertEqual(results["data"]["frames"], []) + self.assertEqual(results["data"]["frameCount"], 0) + self.assertIn("No atom coordinate trajectory", results["data"]["warnings"][0]) + + +def _run_output_bridge_parse(output_path: Path): + return _run_output_bridge_command("parse", output_path) + + +def _run_output_bridge_command(command: str, output_path: Path, software: str = "gaussian"): + import io + import json + + previous_stdin = sys.stdin + previous_stdout = sys.stdout + request = { + "command": command, + "args": {"path": str(output_path), "software": software}, + } + captured_stdout = io.StringIO() + try: + sys.stdin = io.StringIO(json.dumps(request)) + sys.stdout = captured_stdout + main() + finally: + sys.stdin = previous_stdin + sys.stdout = previous_stdout + + return json.loads(captured_stdout.getvalue()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/python/test_structure_bridge.py b/tests/python/test_structure_bridge.py new file mode 100644 index 0000000..2df0af6 --- /dev/null +++ b/tests/python/test_structure_bridge.py @@ -0,0 +1,148 @@ +import unittest +import tempfile +from pathlib import Path + +from openqc.bridge.structure_bridge import _generate_supercell, convert_structure, parse_file + + +class StructureBridgeSupercellTest(unittest.TestCase): + def test_fractional_supercell_keeps_fractional_coordinates(self): + structure = { + "name": "Si", + "atoms": [ + {"element": "Si", "x": 0.0, "y": 0.0, "z": 0.0}, + {"element": "Si", "x": 0.25, "y": 0.25, "z": 0.25}, + ], + "cell": { + "a": [2.715, 2.715, 0.0], + "b": [0.0, 2.715, 2.715], + "c": [2.715, 0.0, 2.715], + "pbc": [True, True, True], + "coordinateMode": "fractional", + }, + "metadata": {"source": {"format": "poscar"}}, + } + + supercell = _generate_supercell(structure, 2, 1, 1) + + self.assertEqual(supercell["cell"]["coordinateMode"], "fractional") + self.assertEqual(supercell["cell"]["a"], [5.43, 5.43, 0.0]) + self.assertEqual(len(supercell["atoms"]), 4) + self.assertEqual(supercell["atoms"][0]["x"], 0.0) + self.assertEqual(supercell["atoms"][1]["x"], 0.125) + self.assertEqual(supercell["atoms"][2]["x"], 0.5) + self.assertEqual(supercell["atoms"][3]["x"], 0.625) + + def test_file_only_xyz_uses_native_parser_without_optional_dependencies(self): + with tempfile.TemporaryDirectory() as tmpdir: + xyz_path = Path(tmpdir) / "water.xyz" + xyz_path.write_text( + "3\nwater\nO 0.000 0.000 0.000\nH 0.757 0.586 0.000\nH -0.757 0.586 0.000\n", + encoding="utf-8", + ) + + structure = parse_file(str(xyz_path)) + + self.assertEqual(structure["kind"], "molecule") + self.assertEqual(len(structure["atoms"]), 3) + self.assertEqual(structure["atoms"][0]["element"], "O") + + def test_file_only_poscar_uses_native_parser_without_optional_dependencies(self): + with tempfile.TemporaryDirectory() as tmpdir: + poscar_path = Path(tmpdir) / "POSCAR" + poscar_path.write_text( + "\n".join( + [ + "Si", + "1.0", + "5.43 0 0", + "0 5.43 0", + "0 0 5.43", + "Si", + "2", + "Direct", + "0 0 0", + "0.25 0.25 0.25", + ] + ) + + "\n", + encoding="utf-8", + ) + + structure = parse_file(str(poscar_path)) + + self.assertEqual(structure["kind"], "periodic") + self.assertEqual(structure["cell"]["coordinateMode"], "fractional") + self.assertEqual(len(structure["atoms"]), 2) + + def test_cp2k_inp_autodetects_and_uses_native_coord_parser(self): + fixture = Path(__file__).parents[1] / "fixtures" / "cp2k" / "H2O.inp" + + structure = parse_file(str(fixture)) + + self.assertEqual(structure["metadata"]["source"]["format"], "cp2k") + self.assertEqual(structure["metadata"]["source"]["software"], "cp2k") + self.assertEqual(structure["kind"], "periodic") + self.assertEqual(len(structure["atoms"]), 3) + self.assertEqual(structure["atoms"][0]["element"], "O") + self.assertEqual(structure["cell"]["a"], [10.0, 0.0, 0.0]) + + def test_gamess_inp_autodetects_and_uses_native_data_parser(self): + fixture = Path(__file__).parents[1] / "fixtures" / "gamess" / "H2O.inp" + + structure = parse_file(str(fixture)) + + self.assertEqual(structure["metadata"]["source"]["format"], "gamess") + self.assertEqual(structure["metadata"]["source"]["software"], "gamess") + self.assertEqual(structure["kind"], "molecule") + self.assertEqual(len(structure["atoms"]), 3) + self.assertEqual(structure["atoms"][0]["element"], "O") + + def test_convert_xyz_to_pdb_returns_target_content_not_openqc_json(self): + with tempfile.TemporaryDirectory() as tmpdir: + xyz_path = Path(tmpdir) / "water.xyz" + xyz_path.write_text( + "3\nwater\nO 0.000 0.000 0.000\nH 0.757 0.586 0.000\nH -0.757 0.586 0.000\n", + encoding="utf-8", + ) + + structure = parse_file(str(xyz_path)) + converted = convert_structure(structure, "pdb") + + self.assertEqual(converted["format"], "pdb") + self.assertEqual(converted["atomCount"], 3) + self.assertIn("HETATM", converted["content"]) + self.assertIn("END", converted["content"]) + self.assertNotIn("schemaVersion", converted) + + def test_convert_fractional_poscar_to_xyz_uses_cartesian_coordinates(self): + with tempfile.TemporaryDirectory() as tmpdir: + poscar_path = Path(tmpdir) / "POSCAR" + poscar_path.write_text( + "\n".join( + [ + "Si", + "1.0", + "5.43 0 0", + "0 5.43 0", + "0 0 5.43", + "Si", + "2", + "Direct", + "0 0 0", + "0.25 0.25 0.25", + ] + ) + + "\n", + encoding="utf-8", + ) + + structure = parse_file(str(poscar_path)) + converted = convert_structure(structure, "xyz") + + self.assertEqual(converted["format"], "xyz") + self.assertIn("Si 1.357500 1.357500 1.357500", converted["content"]) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/unit/DataPlotter.test.ts b/tests/unit/DataPlotter.test.ts index fff60fa..5f973fe 100644 --- a/tests/unit/DataPlotter.test.ts +++ b/tests/unit/DataPlotter.test.ts @@ -9,6 +9,7 @@ jest.mock('../../src/managers/FileTypeDetector', () => ({ if (doc.fileName.includes('cp2k.out')) return 'CP2K'; if (doc.fileName.includes('KPOINTS')) return 'VASP'; if (doc.fileName.includes('OUTCAR')) return 'VASP'; + if (doc.fileName.includes('OSZICAR')) return 'VASP'; if (doc.fileName.includes('gaussian.log')) return 'Gaussian'; if (doc.fileName.includes('orca.out')) return 'ORCA'; if (doc.fileName.includes('qe.pwo')) return 'Quantum ESPRESSO'; @@ -144,7 +145,7 @@ describe('DataPlotter', () => { enableScripts: true, localResourceRoots: expect.arrayContaining([ expect.objectContaining({ - fsPath: expect.stringContaining('node_modules/plotly.js-dist-min'), + fsPath: expect.stringContaining('media/vendor/plotly.js-dist-min'), }), ]), retainContextWhenHidden: true, @@ -189,6 +190,53 @@ Monkhorst // Panel created expect(vscode.window.createWebviewPanel).toHaveBeenCalled(); }); + + it('should extract SCF and ionic energies from OSZICAR output', () => { + const oszicarOutput = ` + DAV: 1 -0.134008904263E+04 -0.13401E+04 + DAV: 2 -0.134015700000E+04 -0.67957E-01 + 1 F= -.13401571E+04 E0= -.13401571E+04 d E =-.134016E+04 + RMM: 1 -0.134115900000E+04 -0.10019E+01 + RMM: 2 -0.134125000000E+04 -0.91000E-01 + 2 F= -.13412500E+04 E0= -.13412500E+04 d E =-.10929E+01 +`; + + const mockEditor = { + document: { + fileName: '/test/OSZICAR', + getText: () => oszicarOutput, + }, + } as unknown as vscode.TextEditor; + + plotter.show(mockEditor); + + const panel = (vscode.window.createWebviewPanel as jest.Mock).mock.results[0].value; + expect(panel.webview.html).toContain('VASP SCF Energy Convergence'); + expect(panel.webview.html).toContain('VASP Ionic Free Energy'); + expect(panel.webview.html).toContain('-1340.08904263'); + expect(panel.webview.html).toContain('-1341.25'); + }); + + it('should extract TOTEN convergence from OUTCAR output', () => { + const outcarOutput = ` + free energy TOTEN = -10.12567890 eV + free energy TOTEN = -10.22567890 eV +`; + + const mockEditor = { + document: { + fileName: '/test/OUTCAR', + getText: () => outcarOutput, + }, + } as unknown as vscode.TextEditor; + + plotter.show(mockEditor); + + const panel = (vscode.window.createWebviewPanel as jest.Mock).mock.results[0].value; + expect(panel.webview.html).toContain('VASP OUTCAR Total Energy'); + expect(panel.webview.html).toContain('-10.1256789'); + expect(panel.webview.html).toContain('-10.2256789'); + }); }); describe('Gaussian data extraction', () => { @@ -328,7 +376,7 @@ FINAL SINGLE POINT ENERGY -76.38462354 plotter.show(mockEditor); const panel = (vscode.window.createWebviewPanel as jest.Mock).mock.results[0].value; - expect(panel.webview.html).toContain('node_modules/plotly.js-dist-min/plotly.min.js'); + expect(panel.webview.html).toContain('media/vendor/plotly.js-dist-min/plotly.min.js'); expect(panel.webview.html).toContain('Content-Security-Policy'); expect(panel.webview.html).not.toContain('https://cdn.plot.ly'); expect(panel.webview.html).not.toContain("'unsafe-inline'"); diff --git a/tests/unit/SidebarProviders.test.ts b/tests/unit/SidebarProviders.test.ts index 554bb82..aa08b03 100644 --- a/tests/unit/SidebarProviders.test.ts +++ b/tests/unit/SidebarProviders.test.ts @@ -139,8 +139,10 @@ describe('MoleculeTreeProvider', () => { provider.dispose(); }); - it('should initialize with sample molecules if no saved data', () => { + it('should initialize empty if no saved data', async () => { expect(mockContext.workspaceState.get).toHaveBeenCalledWith('openqc.molecules', []); + await expect(provider.getChildren()).resolves.toEqual([]); + expect(mockContext.workspaceState.update).not.toHaveBeenCalled(); }); it('should add a molecule', () => { @@ -150,6 +152,8 @@ describe('MoleculeTreeProvider', () => { }); it('should remove a molecule', () => { + const molecule = new MoleculeItem('mol-1', 'Test', 'H2', 2); + provider.addMolecule(molecule); provider.removeMolecule('mol-1'); expect(mockContext.workspaceState.update).toHaveBeenCalled(); }); @@ -190,8 +194,10 @@ describe('JobTreeProvider', () => { provider.dispose(); }); - it('should initialize with sample jobs if no saved data', () => { + it('should initialize empty if no saved data', async () => { expect(mockContext.workspaceState.get).toHaveBeenCalledWith('openqc.jobs', []); + await expect(provider.getChildren()).resolves.toEqual([]); + expect(mockContext.workspaceState.update).not.toHaveBeenCalled(); }); it('should add a job', () => { @@ -201,18 +207,33 @@ describe('JobTreeProvider', () => { }); it('should update job status', () => { + provider.addJob(new JobItem('job-1', 'Test Job', 'running', 50, 'Gaussian')); provider.updateJobStatus('job-1', 'completed', 100); expect(mockContext.workspaceState.update).toHaveBeenCalled(); }); it('should cancel a running job', () => { + provider.addJob(new JobItem('job-1', 'Test Job', 'running', 50, 'Gaussian')); provider.cancelJob('job-1'); - // Should not throw error + expect(provider.getJob('job-1')?.status).toBe('cancelled'); }); it('should restart a job', () => { - provider.restartJob('job-1'); - // Should create a new job + provider.addJob( + new JobItem( + 'job-1', + 'Test Job', + 'completed', + 100, + 'Gaussian', + undefined, + undefined, + '/tmp/gaussian' + ) + ); + const restarted = provider.restartJob('job-1'); + expect(restarted?.status).toBe('running'); + expect(restarted?.workingDirectory).toBe('/tmp/gaussian'); expect(mockContext.workspaceState.update).toHaveBeenCalled(); }); diff --git a/tests/unit/analyzers/ExternalAnalyzer.integration.test.ts b/tests/unit/analyzers/ExternalAnalyzer.integration.test.ts new file mode 100644 index 0000000..8029bc8 --- /dev/null +++ b/tests/unit/analyzers/ExternalAnalyzer.integration.test.ts @@ -0,0 +1,110 @@ +import * as fs from 'fs'; +import * as os from 'os'; +import * as path from 'path'; +import * as vscode from 'vscode'; +import { + checkAnalyzer, + executeAnalyzer, + generateMultiwfnScript, + OPENBABEL_CONFIG, +} from '../../../src/analyzers/ExternalAnalyzer'; + +describe('ExternalAnalyzer real process integration', () => { + let tempDir: string; + + beforeEach(() => { + tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'openqc-external-analyzer-')); + jest.clearAllMocks(); + }); + + afterEach(() => { + fs.rmSync(tempDir, { recursive: true, force: true }); + }); + + it('runs a fake analyzer executable and validates a relative output path under cwd', async () => { + const executable = writeExecutable( + 'fake-c2x.sh', + [ + '#!/bin/sh', + 'printf "converted %s -> %s\\n" "$1" "$2"', + 'printf "cube data\\n" > "$2"', + ].join('\n') + ); + + const result = await executeAnalyzer( + { + executable, + args: ['density.check', 'density.cube'], + cwd: tempDir, + expectedOutputPath: 'density.cube', + description: 'fake c2x relative output smoke', + }, + 1000 + ); + + expect(result).toMatchObject({ + success: true, + exitCode: 0, + stderr: '', + }); + expect(result.stdout).toContain('converted density.check -> density.cube'); + expect(fs.readFileSync(path.join(tempDir, 'density.cube'), 'utf8')).toContain('cube data'); + }); + + it('passes generated Multiwfn stdin to a real child process', async () => { + const stdinCapture = path.join(tempDir, 'multiwfn.stdin'); + const outputFile = path.join(tempDir, 'density.cube'); + const executable = writeExecutable( + 'fake-multiwfn.sh', + ['#!/bin/sh', `cat > "${stdinCapture}"`, `printf "cube\\n" > "${outputFile}"`].join('\n') + ); + const command = generateMultiwfnScript('water.fchk', 'ELF cube', outputFile); + command.executable = executable; + command.cwd = tempDir; + + const result = await executeAnalyzer(command, 1000); + + expect(result.success).toBe(true); + expect(fs.readFileSync(stdinCapture, 'utf8')).toBe(command.stdin); + expect(fs.readFileSync(outputFile, 'utf8')).toContain('cube'); + }); + + it('treats a configured non-executable analyzer path as unavailable', async () => { + const notExecutable = path.join(tempDir, 'obabel-not-executable'); + fs.writeFileSync(notExecutable, '#!/bin/sh\nexit 0\n', { mode: 0o644 }); + mockWorkspaceSettings({ + 'openqc.external.openBabelPath': notExecutable, + 'openqc.external.allowExternalAnalyzers': true, + }); + + const status = await checkAnalyzer(OPENBABEL_CONFIG); + + expect(status).toEqual({ + id: 'openbabel', + available: false, + path: notExecutable, + enabled: true, + }); + }); + + function writeExecutable(filename: string, content: string): string { + const executable = path.join(tempDir, filename); + fs.writeFileSync(executable, `${content}\n`, { mode: 0o755 }); + return executable; + } +}); + +function mockWorkspaceSettings(values: Record): void { + (vscode.workspace.getConfiguration as jest.Mock).mockImplementation((section?: string) => ({ + get: jest.fn((key: string, defaultValue?: unknown) => { + const fullKey = section ? `${section}.${key}` : key; + if (fullKey in values) { + return values[fullKey]; + } + if (key in values) { + return values[key]; + } + return defaultValue; + }), + })); +} diff --git a/tests/unit/analyzers/ExternalAnalyzer.test.ts b/tests/unit/analyzers/ExternalAnalyzer.test.ts new file mode 100644 index 0000000..a566100 --- /dev/null +++ b/tests/unit/analyzers/ExternalAnalyzer.test.ts @@ -0,0 +1,151 @@ +import { + checkAnalyzer, + executeAnalyzer, + generateC2xCommand, + generateMultiwfnScript, + generateOpenBabelCommand, + getPathLookupCommand, + OPENBABEL_CONFIG, + previewCommand, +} from '../../../src/analyzers/ExternalAnalyzer'; +import * as vscode from 'vscode'; +import { execFile } from 'child_process'; +import { access } from 'fs/promises'; + +jest.mock('child_process', () => ({ + execFile: jest.fn(), +})); +jest.mock('fs/promises', () => ({ + access: jest.fn(), +})); + +describe('ExternalAnalyzer', () => { + beforeEach(() => { + jest.clearAllMocks(); + (access as unknown as jest.Mock).mockResolvedValue(undefined); + }); + + it('generates non-interactive Multiwfn commands with operation stdin', () => { + const command = generateMultiwfnScript( + '/tmp/water.fchk', + 'Electron density cube', + '/tmp/water.cube' + ); + + expect(command.args).toEqual(['/tmp/water.fchk']); + expect(command.stdin).toContain('/tmp/water.cube'); + expect(command.stdin).toContain('q'); + expect(command.expectedOutputPath).toBe('/tmp/water.cube'); + }); + + it('previews command stdin before external execution', async () => { + (vscode.window.showWarningMessage as jest.Mock).mockResolvedValue('Execute'); + const command = generateMultiwfnScript('/tmp/water.fchk', 'ELF cube', '/tmp/elf.cube'); + + const accepted = await previewCommand(command); + + expect(accepted).toBe(true); + expect(vscode.window.showWarningMessage).toHaveBeenCalledWith( + 'Confirm external analyzer execution?', + expect.objectContaining({ + detail: expect.stringContaining('Standard input:'), + }), + 'Execute', + 'Cancel' + ); + }); + + it('writes analyzer stdin to the spawned process', async () => { + const stdin = { write: jest.fn(), end: jest.fn() }; + (execFile as unknown as jest.Mock).mockImplementation((_exe, _args, _opts, cb) => { + cb(null, 'done', ''); + return { stdin }; + }); + const command = generateMultiwfnScript( + '/tmp/water.fchk', + 'Population analysis', + '/tmp/pop.out' + ); + + const result = await executeAnalyzer(command, 1000); + + expect(result.success).toBe(true); + expect(stdin.write).toHaveBeenCalledWith(command.stdin); + expect(stdin.end).toHaveBeenCalled(); + }); + + it('fails successful analyzer exits when the expected output file is missing', async () => { + (access as unknown as jest.Mock).mockRejectedValue(new Error('missing')); + (execFile as unknown as jest.Mock).mockImplementation((_exe, _args, _opts, cb) => { + cb(null, 'done', ''); + return {}; + }); + const command = generateOpenBabelCommand('/tmp/water.xyz', '/tmp/water.pdb'); + + const result = await executeAnalyzer(command, 1000); + + expect(result.success).toBe(false); + expect(result.exitCode).toBe(0); + expect(result.stderr).toContain('Expected analyzer output was not created'); + }); + + it('keeps c2x conversion as argv-only execution', () => { + const command = generateC2xCommand('/tmp/density.check', 'convert', '/tmp/density.cube'); + + expect(command.args).toEqual(['/tmp/density.check', '/tmp/density.cube']); + expect(command.stdin).toBeUndefined(); + expect(command.expectedOutputPath).toBe('/tmp/density.cube'); + }); + + it('generates Open Babel conversion commands with output inference', () => { + const command = generateOpenBabelCommand('/tmp/water.xyz', '/tmp/water.pdb'); + + expect(command).toMatchObject({ + executable: 'obabel', + args: ['/tmp/water.xyz', '-O', '/tmp/water.pdb'], + expectedOutputPath: '/tmp/water.pdb', + description: expect.stringContaining('Open Babel'), + }); + expect(command.stdin).toBeUndefined(); + }); + + it('uses the Windows where command for PATH analyzer lookup', () => { + expect(getPathLookupCommand('obabel', 'win32')).toEqual({ + executable: 'where', + args: ['obabel'], + }); + }); + + it('uses the POSIX which command for PATH analyzer lookup', () => { + expect(getPathLookupCommand('obabel', 'darwin')).toEqual({ + executable: 'which', + args: ['obabel'], + }); + }); + + it('reports PATH analyzer lookup using the first resolved executable path', async () => { + (vscode.workspace.getConfiguration as jest.Mock).mockReturnValue({ + get: jest.fn((key: string, defaultValue?: unknown) => { + if (key === 'openqc.external.openBabelPath') { + return ''; + } + if (key === 'openqc.external.allowExternalAnalyzers') { + return true; + } + return defaultValue; + }), + }); + (execFile as unknown as jest.Mock).mockImplementation((_exe, _args, cb) => { + cb(null, '/usr/local/bin/obabel\n/opt/homebrew/bin/obabel\n', ''); + }); + + const status = await checkAnalyzer(OPENBABEL_CONFIG); + + expect(status).toEqual({ + id: 'openbabel', + available: true, + path: '/usr/local/bin/obabel', + enabled: true, + }); + }); +}); diff --git a/tests/unit/ase/ASECalculator.test.ts b/tests/unit/ase/ASECalculator.test.ts new file mode 100644 index 0000000..f23aebc --- /dev/null +++ b/tests/unit/ase/ASECalculator.test.ts @@ -0,0 +1,182 @@ +import { EventEmitter } from 'events'; +import { spawn } from 'child_process'; +import { ASECalculator, CalculatorType } from '../../../src/ase/ASECalculator'; + +jest.mock('child_process', () => ({ + spawn: jest.fn(), + exec: jest.fn(), +})); + +jest.mock( + 'vscode', + () => ({ + workspace: { + getConfiguration: jest.fn(() => ({ + get: jest.fn((key: string, defaultValue?: unknown) => { + if (key === 'pythonPath') { + return 'python3'; + } + return defaultValue; + }), + })), + }, + }), + { virtual: true } +); + +describe('ASECalculator Python CLI contract', () => { + const context = { + extensionPath: '/ext', + } as any; + const atoms = { + chemical_symbols: ['H', 'H'], + positions: [ + [0, 0, 0], + [0, 0, 0.74], + ], + cell: [ + [8, 0, 0], + [0, 8, 0], + [0, 0, 8], + ], + pbc: [false, false, false], + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('sends generate as a single CalculatorInput JSON payload and maps returned files', async () => { + mockSpawnJson({ + success: true, + status: 'completed', + work_dir: '/tmp/vasp', + input_files: ['POSCAR', 'INCAR', 'KPOINTS'], + output_files: [], + warnings: [], + metadata: { calculator: 'vasp' }, + }); + const calculator = new ASECalculator(context, { + type: CalculatorType.VASP, + command: 'vasp_std', + parameters: { encut: 520 }, + }); + + const result = await calculator.generateInput(atoms, '/tmp/vasp'); + + const args = (spawn as jest.Mock).mock.calls[0][1]; + expect(args[1]).toBe('generate'); + expect(args).toHaveLength(3); + expect(JSON.parse(args[2])).toMatchObject({ + atoms, + calculator: 'vasp', + parameters: { encut: 520 }, + work_dir: '/tmp/vasp', + }); + expect(result.files).toEqual({ + POSCAR: '/tmp/vasp/POSCAR', + INCAR: '/tmp/vasp/INCAR', + KPOINTS: '/tmp/vasp/KPOINTS', + }); + }); + + it('runs existing input directories through the run-existing CLI contract', async () => { + mockSpawnJson({ + success: true, + status: 'completed', + work_dir: '/tmp/vasp', + input_files: ['INCAR'], + output_files: ['/tmp/vasp/OUTCAR'], + energy: -10.5, + warnings: [], + metadata: { return_code: 0 }, + }); + const calculator = new ASECalculator(context, { + type: CalculatorType.VASP, + command: 'vasp_std', + environment: { OMP_NUM_THREADS: '1' }, + parameters: {}, + }); + + const result = await calculator.runCalculation('/tmp/vasp'); + + const args = (spawn as jest.Mock).mock.calls[0][1]; + expect(args[1]).toBe('run-existing'); + expect(args[2]).toBe('vasp'); + expect(args[3]).toBe('/tmp/vasp'); + expect(JSON.parse(args[4])).toMatchObject({ + executable: 'vasp_std', + command: 'vasp_std', + environment: { OMP_NUM_THREADS: '1' }, + }); + expect(result.energy).toBe(-10.5); + }); + + it('sends read as read ', async () => { + mockSpawnJson({ + success: true, + status: 'completed', + work_dir: '/tmp/qe', + input_files: ['qe.in'], + output_files: ['qe.out'], + energy: -20, + warnings: [], + metadata: { calculator: 'qe' }, + }); + const calculator = new ASECalculator(context, { + type: CalculatorType.QE, + command: 'pw.x', + parameters: {}, + }); + + await calculator.readResults('/tmp/qe'); + + const args = (spawn as jest.Mock).mock.calls[0][1]; + expect(args.slice(1)).toEqual(['read', '/tmp/qe', 'qe']); + }); + + it('kills the Python calculator process when an abort signal is raised', async () => { + const child = mockSpawnHanging(); + const calculator = new ASECalculator(context, { + type: CalculatorType.VASP, + command: 'vasp_std', + parameters: {}, + }); + const controller = new AbortController(); + + const resultPromise = calculator.runCalculation('/tmp/vasp', undefined, controller.signal); + controller.abort(); + const result = await resultPromise; + + expect(child.kill).toHaveBeenCalledWith('SIGTERM'); + expect(result.success).toBe(false); + expect(result.error).toContain('cancelled'); + expect(result.metadata.cancelled).toBe(true); + }); +}); + +function mockSpawnJson(payload: unknown): void { + (spawn as jest.Mock).mockImplementation(() => { + const child = new EventEmitter() as any; + child.stdout = new EventEmitter(); + child.stderr = new EventEmitter(); + child.kill = jest.fn(); + setImmediate(() => { + child.stdout.emit('data', JSON.stringify(payload)); + child.emit('close', 0); + }); + return child; + }); +} + +function mockSpawnHanging(): any { + const child = new EventEmitter() as any; + child.stdout = new EventEmitter(); + child.stderr = new EventEmitter(); + child.kill = jest.fn(() => { + setImmediate(() => child.emit('close', null)); + return true; + }); + (spawn as jest.Mock).mockReturnValue(child); + return child; +} diff --git a/tests/unit/ase/calculatorCommands.test.ts b/tests/unit/ase/calculatorCommands.test.ts new file mode 100644 index 0000000..f29ef17 --- /dev/null +++ b/tests/unit/ase/calculatorCommands.test.ts @@ -0,0 +1,276 @@ +const mockRegisterCommand = jest.fn( + (command: string, callback: (...args: unknown[]) => unknown) => ({ + command, + callback, + dispose: jest.fn(), + }) +); +const mockShowInputBox = jest.fn(); +const mockShowQuickPick = jest.fn(); +const mockShowWarningMessage = jest.fn(); +const mockShowErrorMessage = jest.fn(); +const mockShowInformationMessage = jest.fn(); +const mockWithProgress = jest.fn((_options, task) => task({ report: jest.fn() })); +const mockOpenTextDocument = jest.fn(); +const mockShowTextDocument = jest.fn(); +const mockParseOutput = jest.fn(); + +jest.mock( + 'vscode', + () => ({ + commands: { + registerCommand: mockRegisterCommand, + }, + window: { + activeTextEditor: undefined, + showInputBox: mockShowInputBox, + showQuickPick: mockShowQuickPick, + showWarningMessage: mockShowWarningMessage, + showErrorMessage: mockShowErrorMessage, + showInformationMessage: mockShowInformationMessage, + showTextDocument: mockShowTextDocument, + withProgress: mockWithProgress, + }, + workspace: { + getConfiguration: jest.fn(() => ({ + get: jest.fn((_key: string, defaultValue?: unknown) => defaultValue), + })), + openTextDocument: mockOpenTextDocument, + }, + ProgressLocation: { + Notification: 15, + }, + }), + { virtual: true } +); + +const mockCalculator = { + isAvailable: jest.fn(), + isCalculatorAvailable: jest.fn(), + generateInput: jest.fn(), + runCalculation: jest.fn(), + readResults: jest.fn(), + calculate: jest.fn(), +}; +const mockCreateCalculator = jest.fn(() => mockCalculator); + +jest.mock('../../../src/ase/ASECalculator', () => ({ + CalculatorFactory: jest.fn().mockImplementation(() => ({ + createCalculator: mockCreateCalculator, + })), + CalculatorType: { + VASP: 'vasp', + CP2K: 'cp2k', + QE: 'qe', + }, + getCalculatorConfiguration: jest.fn(() => ({ + vasp: { command: 'vasp', defaultParams: {} }, + cp2k: { command: 'cp2k.popt', defaultParams: {} }, + qe: { command: 'pw.x', defaultParams: {} }, + })), +})); + +const mockReadToAtoms = jest.fn(); + +jest.mock('../../../src/ase/ASEConverter', () => ({ + ASEConverter: jest.fn().mockImplementation(() => ({ + readToAtoms: mockReadToAtoms, + })), +})); + +jest.mock('../../../src/results/OutputParserBridge', () => ({ + parseOutput: mockParseOutput, +})); + +import { registerCalculatorCommands } from '../../../src/ase/calculatorCommands'; +import * as fs from 'fs'; +import * as os from 'os'; +import * as path from 'path'; + +describe('calculator commands', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockRegisterCommand.mockImplementation( + (command: string, callback: (...args: unknown[]) => unknown) => ({ + command, + callback, + dispose: jest.fn(), + }) + ); + mockCalculator.isAvailable.mockResolvedValue(true); + mockCalculator.isCalculatorAvailable.mockResolvedValue(true); + mockCalculator.runCalculation.mockResolvedValue({ + success: true, + energy: -1.23, + warnings: [], + metadata: {}, + outputFiles: [], + }); + mockCalculator.readResults.mockResolvedValue({ + success: true, + energy: -2.34, + warnings: [], + metadata: {}, + outputFiles: ['/tmp/calc/OUTCAR'], + }); + mockParseOutput.mockResolvedValue({ + success: true, + data: { + schemaVersion: 'openqc.results.v1', + success: true, + software: 'orca', + finalEnergy: { value: -75.98, unit: 'hartree' }, + scfEnergies: [-75.98], + warnings: [], + }, + }); + mockOpenTextDocument.mockResolvedValue({ uri: { fsPath: 'results.json' } }); + }); + + it('registers the calculator command surface', () => { + const context = createContext(); + + registerCalculatorCommands(context); + + expect(registeredCommandIds()).toEqual([ + 'openqc.generateCalculatorInput', + 'openqc.runCalculation', + 'openqc.readResults', + 'openqc.quickVASP', + 'openqc.quickCP2K', + 'openqc.quickQE', + 'openqc.checkCalculators', + ]); + expect(context.subscriptions).toHaveLength(7); + }); + + it('stops execution with a degraded backend message when ASE is unavailable', async () => { + registerCalculatorCommands(createContext()); + mockShowInputBox.mockResolvedValue('/tmp/calc'); + mockShowQuickPick + .mockResolvedValueOnce({ label: 'VASP', type: 'vasp' }) + .mockResolvedValueOnce({ label: 'Use defaults', value: false }); + mockCalculator.isAvailable.mockResolvedValue(false); + + await commandHandler('openqc.runCalculation')(); + + expect(mockShowWarningMessage).toHaveBeenCalledWith( + expect.stringContaining('ASE Python backend is unavailable') + ); + expect(mockCalculator.isCalculatorAvailable).not.toHaveBeenCalled(); + expect(mockCalculator.runCalculation).not.toHaveBeenCalled(); + expect(mockWithProgress).not.toHaveBeenCalled(); + }); + + it('passes customized calculator parameters from JSON input into execution config', async () => { + registerCalculatorCommands(createContext()); + mockShowInputBox + .mockResolvedValueOnce('/tmp/calc') + .mockResolvedValueOnce('{"encut":520,"kpts":[2,2,2]}'); + mockShowQuickPick + .mockResolvedValueOnce({ label: 'VASP', type: 'vasp' }) + .mockResolvedValueOnce({ label: 'Customize parameters', value: true }); + + await commandHandler('openqc.runCalculation')(); + + expect(mockCreateCalculator).toHaveBeenCalledWith( + expect.objectContaining({ + type: 'vasp', + command: 'vasp', + parameters: { + encut: 520, + kpts: [2, 2, 2], + }, + }) + ); + expect(mockCalculator.runCalculation).toHaveBeenCalledWith('/tmp/calc'); + }); + + it('stops calculator execution on invalid custom parameter JSON', async () => { + registerCalculatorCommands(createContext()); + mockShowInputBox.mockResolvedValueOnce('/tmp/calc').mockResolvedValueOnce('{bad json'); + mockShowQuickPick + .mockResolvedValueOnce({ label: 'VASP', type: 'vasp' }) + .mockResolvedValueOnce({ label: 'Customize parameters', value: true }); + + await commandHandler('openqc.runCalculation')(); + + expect(mockShowErrorMessage).toHaveBeenCalledWith( + expect.stringContaining('Invalid calculator parameter JSON') + ); + expect(mockCreateCalculator).not.toHaveBeenCalled(); + expect(mockCalculator.runCalculation).not.toHaveBeenCalled(); + }); + + it('routes detected ORCA output directories through the output bridge', async () => { + const tmpdir = fs.mkdtempSync(path.join(os.tmpdir(), 'openqc-orca-results-')); + const outputPath = path.join(tmpdir, 'ORCA.out'); + fs.writeFileSync( + outputPath, + '* O R C A *\nFINAL SINGLE POINT ENERGY -75.980000\n', + 'utf8' + ); + try { + registerCalculatorCommands(createContext()); + mockShowInputBox.mockResolvedValue(tmpdir); + + await commandHandler('openqc.readResults')(); + + expect(mockParseOutput).toHaveBeenCalledWith(outputPath, 'orca'); + expect(mockShowQuickPick).not.toHaveBeenCalled(); + expect(mockCreateCalculator).not.toHaveBeenCalled(); + expect(mockOpenTextDocument).toHaveBeenCalledWith( + expect.objectContaining({ + language: 'json', + content: expect.stringContaining('"software": "orca"'), + }) + ); + } finally { + fs.rmSync(tmpdir, { recursive: true, force: true }); + } + }); + + it('keeps the ASE calculator result reader for directories without bridge outputs', async () => { + const tmpdir = fs.mkdtempSync(path.join(os.tmpdir(), 'openqc-vasp-results-')); + try { + registerCalculatorCommands(createContext()); + mockShowInputBox.mockResolvedValue(tmpdir); + mockShowQuickPick.mockResolvedValueOnce({ label: 'VASP', type: 'vasp' }); + + await commandHandler('openqc.readResults')(); + + expect(mockParseOutput).not.toHaveBeenCalled(); + expect(mockCreateCalculator).toHaveBeenCalledWith({ type: 'vasp', parameters: {} }); + expect(mockCalculator.readResults).toHaveBeenCalledWith(tmpdir); + expect(mockOpenTextDocument).toHaveBeenCalledWith( + expect.objectContaining({ + language: 'json', + content: expect.stringContaining('"energy": -2.34'), + }) + ); + } finally { + fs.rmSync(tmpdir, { recursive: true, force: true }); + } + }); +}); + +function createContext(): any { + return { + extensionPath: '/tmp/openqc-extension', + subscriptions: [], + }; +} + +function registeredCommandIds(): string[] { + return mockRegisterCommand.mock.calls.map(([command]) => command); +} + +function commandHandler(command: string): () => Promise { + const handler = mockRegisterCommand.mock.calls.find( + ([registered]) => registered === command + )?.[1]; + if (!handler) { + throw new Error(`Command not registered: ${command}`); + } + return handler as () => Promise; +} diff --git a/tests/unit/ase/commands.test.ts b/tests/unit/ase/commands.test.ts new file mode 100644 index 0000000..c67c289 --- /dev/null +++ b/tests/unit/ase/commands.test.ts @@ -0,0 +1,189 @@ +const mockConverter = { + readToAtoms: jest.fn(), + writeFromAtoms: jest.fn(), + convertFormat: jest.fn(), + getSupportedFormats: jest.fn(), +}; + +jest.mock('../../../src/ase/ASEConverter', () => ({ + ASEFormat: { + VASP: 'vasp', + CP2K: 'cp2k', + QE: 'qe', + Gaussian: 'gaussian', + ORCA: 'orca', + NWChem: 'nwchem', + GAMESS: 'gamess', + LAMMPS: 'lammps', + XYZ: 'xyz', + PDB: 'pdb', + CIF: 'cif', + }, + ASEConverter: jest.fn(() => mockConverter), +})); + +import * as vscode from 'vscode'; +import { registerASECommands } from '../../../src/ase/commands'; + +describe('ASE command handlers', () => { + beforeEach(() => { + jest.clearAllMocks(); + (vscode.commands.registerCommand as jest.Mock).mockImplementation( + (command: string, callback: (...args: unknown[]) => unknown) => ({ + command, + callback, + dispose: jest.fn(), + }) + ); + (vscode.window.withProgress as jest.Mock).mockImplementation((_options, task) => + task({ report: jest.fn() }) + ); + (vscode.workspace.openTextDocument as jest.Mock).mockResolvedValue({ + uri: { fsPath: '/tmp/output.xyz' }, + }); + (vscode.window.showTextDocument as jest.Mock).mockResolvedValue(undefined); + (vscode.window.showInputBox as jest.Mock).mockResolvedValue('/tmp/water.xyz'); + (vscode.window.showQuickPick as jest.Mock).mockImplementation( + async (items: any[]) => items.find(item => item.format === 'xyz') ?? items[0] + ); + mockConverter.getSupportedFormats.mockReturnValue({ + vasp: { name: 'VASP', extensions: ['POSCAR'], description: 'VASP structure format' }, + cp2k: { name: 'CP2K', extensions: ['.inp'], description: 'CP2K input format' }, + qe: { + name: 'Quantum ESPRESSO', + extensions: ['.in'], + description: 'Quantum ESPRESSO input format', + }, + xyz: { name: 'XYZ', extensions: ['.xyz'], description: 'Generic XYZ format' }, + }); + mockConverter.writeFromAtoms.mockResolvedValue({ + success: true, + warnings: [], + metadata: {}, + }); + mockConverter.convertFormat.mockResolvedValue({ + success: true, + warnings: [], + metadata: {}, + }); + }); + + it('normalizes ASE Atoms JSON before writing from Atoms', async () => { + const context = { + subscriptions: [], + extensionPath: '/ext', + } as unknown as vscode.ExtensionContext; + registerASECommands(context); + (vscode.window as any).activeTextEditor = { + document: { + getText: jest.fn(() => + JSON.stringify({ + data: { + atoms: { + numbers: [8, 1, 1], + positions: [ + [0, 0, 0], + [0.75, 0, 0.5], + [-0.75, 0, 0.5], + ], + cell: [12, 13, 14], + pbc: true, + info: { source: 'unit-test' }, + }, + }, + }) + ), + }, + }; + + await commandHandler('openqc.convertFromASE')(); + + expect(mockConverter.writeFromAtoms).toHaveBeenCalledWith( + { + chemical_symbols: ['O', 'H', 'H'], + positions: [ + [0, 0, 0], + [0.75, 0, 0.5], + [-0.75, 0, 0.5], + ], + cell: [ + [12, 0, 0], + [0, 13, 0], + [0, 0, 14], + ], + pbc: [true, true, true], + info: { source: 'unit-test' }, + }, + '/tmp/water.xyz', + 'xyz' + ); + expect(vscode.window.showInformationMessage).toHaveBeenCalledWith( + 'Successfully wrote /tmp/water.xyz' + ); + }); + + it('rejects malformed ASE Atoms JSON before invoking the converter', async () => { + const context = { + subscriptions: [], + extensionPath: '/ext', + } as unknown as vscode.ExtensionContext; + registerASECommands(context); + (vscode.window as any).activeTextEditor = { + document: { + getText: jest.fn(() => + JSON.stringify({ + aseAtoms: { + chemical_symbols: ['H', 'H'], + positions: [[0, 0, 0]], + }, + }) + ), + }, + }; + + await commandHandler('openqc.convertFromASE')(); + + expect(mockConverter.writeFromAtoms).not.toHaveBeenCalled(); + expect(vscode.window.showErrorMessage).toHaveBeenCalledWith( + expect.stringContaining('chemical_symbols has 2 entries but positions has 1') + ); + }); + + it('validates quick-convert format arguments from the sidebar', async () => { + const context = { + subscriptions: [], + extensionPath: '/ext', + } as unknown as vscode.ExtensionContext; + registerASECommands(context); + (vscode.window as any).activeTextEditor = { + document: { + uri: { fsPath: '/tmp/POSCAR' }, + }, + }; + + await commandHandler('openqc.quickConvert')('POSCAR', 'quantum espresso'); + + expect(mockConverter.convertFormat).toHaveBeenCalledWith( + '/tmp/POSCAR', + '/tmp/POSCAR_qe.in', + 'vasp', + 'qe' + ); + + await commandHandler('openqc.quickConvert')('bad-format', 'cp2k'); + + expect(vscode.window.showErrorMessage).toHaveBeenCalledWith( + expect.stringContaining('Unsupported ASE quick conversion') + ); + }); +}); + +function commandHandler(command: string): (...args: unknown[]) => Promise { + const handler = (vscode.commands.registerCommand as jest.Mock).mock.calls.find( + ([registered]) => registered === command + )?.[1]; + if (!handler) { + throw new Error(`Command not registered: ${command}`); + } + return handler; +} diff --git a/tests/unit/commands/analyzerCommands.test.ts b/tests/unit/commands/analyzerCommands.test.ts new file mode 100644 index 0000000..b00dd95 --- /dev/null +++ b/tests/unit/commands/analyzerCommands.test.ts @@ -0,0 +1,382 @@ +const mockCheckAnalyzer = jest.fn(); +const mockGenerateMultiwfnScript = jest.fn(); +const mockGenerateC2xCommand = jest.fn(); +const mockGenerateOpenBabelCommand = jest.fn(); +const mockPreviewCommand = jest.fn(); +const mockExecuteAnalyzer = jest.fn(); + +jest.mock('../../../src/analyzers/ExternalAnalyzer', () => ({ + MULTIWFN_CONFIG: { + id: 'multiwfn', + displayName: 'Multiwfn', + settingKey: 'openqc.external.multiwfnPath', + defaultCommand: 'Multiwfn', + description: 'Wavefunction analysis', + }, + C2X_CONFIG: { + id: 'c2x', + displayName: 'c2x', + settingKey: 'openqc.external.c2xPath', + defaultCommand: 'c2x', + description: 'Density conversion', + }, + OPENBABEL_CONFIG: { + id: 'openbabel', + displayName: 'Open Babel', + settingKey: 'openqc.external.openBabelPath', + defaultCommand: 'obabel', + description: 'Structure and molecular format conversion', + }, + checkAnalyzer: mockCheckAnalyzer, + generateMultiwfnScript: mockGenerateMultiwfnScript, + generateC2xCommand: mockGenerateC2xCommand, + generateOpenBabelCommand: mockGenerateOpenBabelCommand, + previewCommand: mockPreviewCommand, + executeAnalyzer: mockExecuteAnalyzer, +})); + +import * as vscode from 'vscode'; +import { registerAnalyzerCommands } from '../../../src/commands/analyzerCommands'; + +describe('analyzer commands', () => { + const channel = { + clear: jest.fn(), + appendLine: jest.fn(), + show: jest.fn(), + dispose: jest.fn(), + }; + const externalSettings: Record = { + allowExternalAnalyzers: false, + timeoutMs: 60000, + }; + + beforeEach(() => { + jest.clearAllMocks(); + externalSettings.allowExternalAnalyzers = false; + externalSettings.timeoutMs = 60000; + + (vscode.commands.registerCommand as jest.Mock).mockImplementation( + (command: string, callback: (...args: unknown[]) => unknown) => ({ + command, + callback, + dispose: jest.fn(), + }) + ); + (vscode.workspace.getConfiguration as jest.Mock).mockImplementation((section?: string) => ({ + get: jest.fn((key: string, defaultValue?: unknown) => { + if (section === 'openqc.external' && key in externalSettings) { + return externalSettings[key]; + } + return defaultValue; + }), + })); + (vscode.window.createOutputChannel as jest.Mock).mockReturnValue(channel); + (vscode.window.withProgress as jest.Mock).mockImplementation((_options, task) => task()); + (vscode.workspace.openTextDocument as jest.Mock).mockResolvedValue({ + uri: { fsPath: 'untitled' }, + }); + mockPreviewCommand.mockResolvedValue(true); + }); + + it('registers external analyzer commands', () => { + const context = { subscriptions: [] } as unknown as vscode.ExtensionContext; + + registerAnalyzerCommands(context); + + expect(vscode.commands.registerCommand).toHaveBeenCalledWith( + 'openqc.checkExternalAnalyzers', + expect.any(Function) + ); + expect(vscode.commands.registerCommand).toHaveBeenCalledWith( + 'openqc.generateMultiwfnScript', + expect.any(Function) + ); + expect(vscode.commands.registerCommand).toHaveBeenCalledWith( + 'openqc.runMultiwfnAnalysis', + expect.any(Function) + ); + expect(vscode.commands.registerCommand).toHaveBeenCalledWith( + 'openqc.convertDensityC2x', + expect.any(Function) + ); + expect(vscode.commands.registerCommand).toHaveBeenCalledWith( + 'openqc.convertStructureOpenBabel', + expect.any(Function) + ); + expect(context.subscriptions).toHaveLength(5); + }); + + it('reports analyzer availability and global enablement in the output channel', async () => { + externalSettings.allowExternalAnalyzers = true; + mockCheckAnalyzer + .mockResolvedValueOnce({ + id: 'multiwfn', + available: true, + path: '/opt/Multiwfn', + enabled: true, + }) + .mockResolvedValueOnce({ + id: 'c2x', + available: false, + path: null, + enabled: true, + }) + .mockResolvedValueOnce({ + id: 'openbabel', + available: true, + path: '/opt/obabel', + enabled: true, + }); + registerAnalyzerCommands({ subscriptions: [] } as unknown as vscode.ExtensionContext); + + await commandHandler('openqc.checkExternalAnalyzers')(); + + expect(channel.appendLine).toHaveBeenCalledWith(expect.stringContaining('multiwfn')); + expect(channel.appendLine).toHaveBeenCalledWith(expect.stringContaining('/opt/Multiwfn')); + expect(channel.appendLine).toHaveBeenCalledWith(expect.stringContaining('c2x')); + expect(channel.appendLine).toHaveBeenCalledWith(expect.stringContaining('openbabel')); + expect(channel.appendLine).toHaveBeenCalledWith(expect.stringContaining('/opt/obabel')); + expect(channel.appendLine).toHaveBeenCalledWith( + expect.stringContaining('Analyzers are ENABLED') + ); + expect(channel.show).toHaveBeenCalledWith(true); + }); + + it('generates a reviewable Multiwfn script without executing the analyzer', async () => { + (vscode.window.showInputBox as jest.Mock).mockResolvedValue('/tmp/water.fchk'); + (vscode.window.showQuickPick as jest.Mock).mockResolvedValue('Population analysis'); + mockGenerateMultiwfnScript.mockReturnValue({ + executable: 'Multiwfn', + args: ['/tmp/water.fchk'], + cwd: '', + stdin: '7\n1\n0\nq\n', + expectedOutputPath: '/tmp/water.fchk.population_analysis.out', + description: 'Multiwfn population analysis', + }); + registerAnalyzerCommands({ subscriptions: [] } as unknown as vscode.ExtensionContext); + + await commandHandler('openqc.generateMultiwfnScript')(); + + expect(mockGenerateMultiwfnScript).toHaveBeenCalledWith( + '/tmp/water.fchk', + 'Population analysis', + '/tmp/water.fchk.population_analysis.out' + ); + expect(vscode.workspace.openTextDocument).toHaveBeenCalledWith( + expect.objectContaining({ + language: 'shellscript', + content: expect.stringContaining("<<'EOF'"), + }) + ); + expect(mockExecuteAnalyzer).not.toHaveBeenCalled(); + }); + + it('generates cube-oriented Multiwfn scripts with .cube output paths', async () => { + (vscode.window.showInputBox as jest.Mock).mockResolvedValue('/tmp/water.fchk'); + (vscode.window.showQuickPick as jest.Mock).mockResolvedValue('ELF cube'); + mockGenerateMultiwfnScript.mockReturnValue({ + executable: 'Multiwfn', + args: ['/tmp/water.fchk'], + cwd: '', + stdin: '5\n9\n2\n/tmp/water.fchk.elf_cube.cube\n0\nq\n', + expectedOutputPath: '/tmp/water.fchk.elf_cube.cube', + description: 'Multiwfn ELF cube', + }); + registerAnalyzerCommands({ subscriptions: [] } as unknown as vscode.ExtensionContext); + + await commandHandler('openqc.generateMultiwfnScript')(); + + expect(mockGenerateMultiwfnScript).toHaveBeenCalledWith( + '/tmp/water.fchk', + 'ELF cube', + '/tmp/water.fchk.elf_cube.cube' + ); + expect(vscode.workspace.openTextDocument).toHaveBeenCalledWith( + expect.objectContaining({ + content: expect.stringContaining('/tmp/water.fchk.elf_cube.cube'), + }) + ); + }); + + it('stops Multiwfn execution when external analyzers are disabled', async () => { + mockCheckAnalyzer.mockResolvedValue({ + id: 'multiwfn', + available: true, + path: '/opt/Multiwfn', + enabled: false, + }); + registerAnalyzerCommands({ subscriptions: [] } as unknown as vscode.ExtensionContext); + + await commandHandler('openqc.runMultiwfnAnalysis')(); + + expect(vscode.window.showWarningMessage).toHaveBeenCalledWith( + expect.stringContaining('External analyzers are disabled') + ); + expect(vscode.window.showInputBox).not.toHaveBeenCalled(); + expect(mockExecuteAnalyzer).not.toHaveBeenCalled(); + }); + + it('stops Multiwfn execution when the executable is unavailable', async () => { + mockCheckAnalyzer.mockResolvedValue({ + id: 'multiwfn', + available: false, + path: null, + enabled: true, + }); + registerAnalyzerCommands({ subscriptions: [] } as unknown as vscode.ExtensionContext); + + await commandHandler('openqc.runMultiwfnAnalysis')(); + + expect(vscode.window.showErrorMessage).toHaveBeenCalledWith( + expect.stringContaining('Multiwfn executable was not found') + ); + expect(mockExecuteAnalyzer).not.toHaveBeenCalled(); + }); + + it('runs Multiwfn with configured path, timeout, and failure output', async () => { + externalSettings.timeoutMs = 1234; + mockCheckAnalyzer.mockResolvedValue({ + id: 'multiwfn', + available: true, + path: '/opt/Multiwfn', + enabled: true, + }); + (vscode.window.showInputBox as jest.Mock).mockResolvedValue('/tmp/water.fchk'); + (vscode.window.showQuickPick as jest.Mock).mockResolvedValue('ELF cube'); + mockGenerateMultiwfnScript.mockReturnValue({ + executable: 'Multiwfn', + args: ['/tmp/water.fchk'], + cwd: '', + stdin: '5\n9\n2\n/tmp/water.fchk.elf_cube.cube\n0\nq\n', + expectedOutputPath: '/tmp/water.fchk.elf_cube.cube', + description: 'Multiwfn ELF cube', + }); + mockExecuteAnalyzer.mockResolvedValue({ + success: false, + stdout: 'partial stdout', + stderr: 'failed stderr', + exitCode: 2, + }); + registerAnalyzerCommands({ subscriptions: [] } as unknown as vscode.ExtensionContext); + + await commandHandler('openqc.runMultiwfnAnalysis')(); + + expect(mockGenerateMultiwfnScript).toHaveBeenCalledWith( + '/tmp/water.fchk', + 'ELF cube', + '/tmp/water.fchk.elf_cube.cube' + ); + expect(mockExecuteAnalyzer).toHaveBeenCalledWith( + expect.objectContaining({ executable: '/opt/Multiwfn' }), + 1234 + ); + expect(channel.appendLine).toHaveBeenCalledWith('Exit code: 2'); + expect(channel.appendLine).toHaveBeenCalledWith('partial stdout'); + expect(channel.appendLine).toHaveBeenCalledWith('failed stderr'); + expect(vscode.window.showErrorMessage).toHaveBeenCalledWith( + 'External analyzer failed; see OpenQC External Analyzer Run output' + ); + }); + + it('runs c2x conversion with configured path and success message', async () => { + mockCheckAnalyzer.mockResolvedValue({ + id: 'c2x', + available: true, + path: '/opt/c2x', + enabled: true, + }); + (vscode.window.showInputBox as jest.Mock) + .mockResolvedValueOnce('/tmp/density.check') + .mockResolvedValueOnce('/tmp/density.cube'); + mockGenerateC2xCommand.mockReturnValue({ + executable: 'c2x', + args: ['/tmp/density.check', '/tmp/density.cube'], + cwd: '', + description: 'c2x conversion', + }); + mockExecuteAnalyzer.mockResolvedValue({ + success: true, + stdout: 'converted', + stderr: '', + exitCode: 0, + }); + registerAnalyzerCommands({ subscriptions: [] } as unknown as vscode.ExtensionContext); + + await commandHandler('openqc.convertDensityC2x')(); + + expect(mockExecuteAnalyzer).toHaveBeenCalledWith( + expect.objectContaining({ executable: '/opt/c2x' }), + 60000 + ); + expect(vscode.window.showInformationMessage).toHaveBeenCalledWith( + 'External analyzer completed successfully' + ); + }); + + it('stops Open Babel conversion when external analyzers are disabled', async () => { + mockCheckAnalyzer.mockResolvedValue({ + id: 'openbabel', + available: true, + path: '/opt/obabel', + enabled: false, + }); + registerAnalyzerCommands({ subscriptions: [] } as unknown as vscode.ExtensionContext); + + await commandHandler('openqc.convertStructureOpenBabel')(); + + expect(vscode.window.showWarningMessage).toHaveBeenCalledWith( + expect.stringContaining('External analyzers are disabled') + ); + expect(vscode.window.showInputBox).not.toHaveBeenCalled(); + expect(mockExecuteAnalyzer).not.toHaveBeenCalled(); + }); + + it('runs Open Babel conversion with configured path and preview confirmation', async () => { + externalSettings.timeoutMs = 9876; + mockCheckAnalyzer.mockResolvedValue({ + id: 'openbabel', + available: true, + path: '/opt/obabel', + enabled: true, + }); + (vscode.window.showInputBox as jest.Mock) + .mockResolvedValueOnce('/tmp/water.xyz') + .mockResolvedValueOnce('/tmp/water.pdb'); + mockGenerateOpenBabelCommand.mockReturnValue({ + executable: 'obabel', + args: ['/tmp/water.xyz', '-O', '/tmp/water.pdb'], + cwd: '', + expectedOutputPath: '/tmp/water.pdb', + description: 'Open Babel: convert /tmp/water.xyz → /tmp/water.pdb', + }); + mockExecuteAnalyzer.mockResolvedValue({ + success: true, + stdout: '1 molecule converted', + stderr: '', + exitCode: 0, + }); + registerAnalyzerCommands({ subscriptions: [] } as unknown as vscode.ExtensionContext); + + await commandHandler('openqc.convertStructureOpenBabel')(); + + expect(mockGenerateOpenBabelCommand).toHaveBeenCalledWith('/tmp/water.xyz', '/tmp/water.pdb'); + expect(mockPreviewCommand).toHaveBeenCalledWith( + expect.objectContaining({ executable: '/opt/obabel' }) + ); + expect(mockExecuteAnalyzer).toHaveBeenCalledWith( + expect.objectContaining({ executable: '/opt/obabel' }), + 9876 + ); + expect(channel.appendLine).toHaveBeenCalledWith('1 molecule converted'); + }); +}); + +function commandHandler(command: string): () => Promise { + const handler = (vscode.commands.registerCommand as jest.Mock).mock.calls.find( + ([registered]) => registered === command + )?.[1]; + if (!handler) { + throw new Error(`Command not registered: ${command}`); + } + return handler; +} diff --git a/tests/unit/commands/commandManifest.test.ts b/tests/unit/commands/commandManifest.test.ts new file mode 100644 index 0000000..ff4a8fd --- /dev/null +++ b/tests/unit/commands/commandManifest.test.ts @@ -0,0 +1,91 @@ +import * as fs from 'fs'; +import * as path from 'path'; + +describe('command manifest contract', () => { + const repoRoot = path.resolve(__dirname, '../../..'); + const unadvertisedRuntimeCommands = new Set(['openqc.getDslAuthoringContext']); + + it('keeps contributed and user-facing runtime commands synchronized', () => { + const manifest = JSON.parse( + fs.readFileSync(path.join(repoRoot, 'package.json'), 'utf8') + ) as PackageManifest; + const contributed = new Set(manifest.contributes.commands.map(entry => entry.command)); + const registered = collectRegisteredCommands(path.join(repoRoot, 'src')); + + expect([...contributed].filter(command => command.startsWith('OpenQC.'))).toEqual([]); + expect([...contributed].filter(command => !registered.has(command))).toEqual([]); + expect( + [...registered] + .filter(command => command.startsWith('openqc.')) + .filter(command => !unadvertisedRuntimeCommands.has(command)) + .filter(command => !contributed.has(command)) + .sort() + ).toEqual([]); + }); + + it('activates ASE, calculator, and export command registrations from the extension entrypoint', () => { + const extensionSource = fs.readFileSync(path.join(repoRoot, 'src/extension.ts'), 'utf8'); + + expect(extensionSource).toContain('registerASECommands(context)'); + expect(extensionSource).toContain('registerCalculatorCommands(context)'); + expect(extensionSource).toContain('registerExportCommands('); + expect(extensionSource).toContain('() => OpenQCViewerPanel.getCurrentStructureData()'); + expect(extensionSource).toContain('() => OpenQCViewerPanel.saveCurrentStructureToSource()'); + }); + + it('contributes calculator settings consumed by the ASE calculator wrapper', () => { + const manifest = JSON.parse( + fs.readFileSync(path.join(repoRoot, 'package.json'), 'utf8') + ) as PackageManifest; + const properties = manifest.contributes.configuration.properties; + + for (const calculator of ['vasp', 'cp2k', 'qe']) { + expect(hasOwn(properties, `openqc.calculators.${calculator}.command`)).toBe(true); + expect(hasOwn(properties, `openqc.calculators.${calculator}.defaultParams`)).toBe(true); + } + }); +}); + +interface PackageManifest { + contributes: { + commands: Array<{ command: string }>; + configuration: { + properties: Record; + }; + }; +} + +function collectRegisteredCommands(srcRoot: string): Set { + const commands = new Set(); + + for (const filePath of walkTsFiles(srcRoot)) { + const source = fs.readFileSync(filePath, 'utf8'); + for (const match of source.matchAll(/registerCommand\(\s*['"]([^'"]+)['"]/g)) { + commands.add(match[1]); + } + for (const match of source.matchAll( + /registerCommandWithLegacyAlias\(\s*context,\s*['"]([^'"]+)['"]/g + )) { + commands.add(match[1]); + } + } + + return commands; +} + +function walkTsFiles(root: string): string[] { + const files: string[] = []; + for (const entry of fs.readdirSync(root, { withFileTypes: true })) { + const fullPath = path.join(root, entry.name); + if (entry.isDirectory()) { + files.push(...walkTsFiles(fullPath)); + } else if (entry.isFile() && entry.name.endsWith('.ts')) { + files.push(fullPath); + } + } + return files; +} + +function hasOwn(object: Record, key: string): boolean { + return Object.prototype.hasOwnProperty.call(object, key); +} diff --git a/tests/unit/commands/exportCommands.test.ts b/tests/unit/commands/exportCommands.test.ts new file mode 100644 index 0000000..a498698 --- /dev/null +++ b/tests/unit/commands/exportCommands.test.ts @@ -0,0 +1,39 @@ +import * as vscode from 'vscode'; +import { registerExportCommands } from '../../../src/commands/exportCommands'; + +describe('exportCommands', () => { + beforeEach(() => { + jest.clearAllMocks(); + (vscode.commands.registerCommand as jest.Mock).mockImplementation( + (_command: string, _handler: (...args: any[]) => unknown) => ({ dispose: jest.fn() }) + ); + (vscode.window.showQuickPick as jest.Mock).mockResolvedValue({ + label: 'XYZ', + description: 'xyz', + }); + (vscode.window.showSaveDialog as jest.Mock).mockResolvedValue({ + fsPath: '/tmp/bonded.xyz', + }); + }); + + it('shows exporter warnings after a successful command-palette export', async () => { + const context = { subscriptions: [] } as unknown as vscode.ExtensionContext; + registerExportCommands(context, () => ({ + atoms: [ + { element: 'C', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1.2, y: 0, z: 0 }, + ], + bonds: [{ from: 0, to: 1, order: 2 }], + })); + + const handler = (vscode.commands.registerCommand as jest.Mock).mock.calls.find( + ([command]) => command === 'openqc.exportStructure' + )?.[1] as () => Promise; + + await handler(); + + expect(vscode.window.showWarningMessage).toHaveBeenCalledWith( + expect.stringContaining('does not preserve edited bond topology or bond order') + ); + }); +}); diff --git a/tests/unit/commands/jobCommands.test.ts b/tests/unit/commands/jobCommands.test.ts new file mode 100644 index 0000000..843b825 --- /dev/null +++ b/tests/unit/commands/jobCommands.test.ts @@ -0,0 +1,306 @@ +import * as vscode from 'vscode'; +import { registerJobCommands, createJobExportPayload } from '../../../src/commands/jobCommands'; +import { JobItem, JobTreeProvider } from '../../../src/sidebar/JobTreeProvider'; + +const runCalculation = jest.fn(); +const createCalculator = jest.fn(() => ({ runCalculation })); + +jest.mock('../../../src/ase/ASECalculator', () => ({ + CalculatorType: { + VASP: 'vasp', + CP2K: 'cp2k', + QE: 'qe', + }, + CalculatorFactory: jest.fn().mockImplementation(() => ({ createCalculator })), + getCalculatorConfiguration: jest.fn(() => ({ + vasp: { command: '/usr/local/bin/vasp_std', defaultParams: { encut: 520 } }, + cp2k: { command: 'cp2k.popt', defaultParams: { cutoff: 400 } }, + qe: { command: 'pw.x', defaultParams: { ecutwfc: 40 } }, + })), +})); + +describe('jobCommands', () => { + let provider: jest.Mocked; + + beforeEach(() => { + jest.clearAllMocks(); + jest.spyOn(Date, 'now').mockReturnValue(1234567890); + (vscode.commands.registerCommand as jest.Mock).mockImplementation( + (_command: string, _handler: (...args: any[]) => unknown) => ({ dispose: jest.fn() }) + ); + (vscode.window.showQuickPick as jest.Mock).mockResolvedValue({ + label: 'VASP', + description: 'vasp', + }); + (vscode.window.showOpenDialog as jest.Mock).mockResolvedValue([{ fsPath: '/tmp/vasp-run' }]); + (vscode.window.showInputBox as jest.Mock).mockResolvedValue('Static VASP'); + (vscode.window.showSaveDialog as jest.Mock).mockResolvedValue({ + fsPath: '/tmp/static_vasp_results.json', + }); + provider = { + refresh: jest.fn(), + addJob: jest.fn(), + updateJobStatus: jest.fn(), + updateJobResult: jest.fn(), + cancelJob: jest.fn(() => true), + restartJob: jest.fn(), + getJob: jest.fn(), + } as unknown as jest.Mocked; + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + it('runs an existing calculator directory and stores the real successful result', async () => { + runCalculation.mockResolvedValue({ + success: true, + energy: -10.5, + forces: [[0.1, 0.2, 0.3]], + warnings: ['converged with warning'], + metadata: { parser: 'ase' }, + outputFiles: ['OUTCAR'], + }); + registerJobCommands({ subscriptions: [] } as any, provider); + + await getCommandHandler('openqc.sidebar.runCalculation')(); + + expect(createCalculator).toHaveBeenCalledWith({ + type: 'vasp', + command: '/usr/local/bin/vasp_std', + parameters: { encut: 520 }, + }); + expect(runCalculation).toHaveBeenCalledWith('/tmp/vasp-run', undefined, expect.any(Object)); + expect(provider.addJob).toHaveBeenCalledWith( + expect.objectContaining({ + id: 'job-1234567890', + label: 'Static VASP', + status: 'running', + progress: 5, + software: 'VASP', + workingDirectory: '/tmp/vasp-run', + }) + ); + expect(provider.updateJobResult).toHaveBeenCalledWith( + 'job-1234567890', + 'completed', + expect.objectContaining({ + success: true, + energy: -10.5, + outputFiles: ['OUTCAR'], + }), + 100 + ); + }); + + it('stores failed calculator execution results instead of fabricating output', async () => { + runCalculation.mockResolvedValue({ + success: false, + error: 'vasp_std exited with code 1', + warnings: [], + metadata: {}, + outputFiles: ['stdout.log'], + }); + registerJobCommands({ subscriptions: [] } as any, provider); + + await getCommandHandler('openqc.sidebar.runCalculation')(); + + expect(provider.updateJobResult).toHaveBeenCalledWith( + 'job-1234567890', + 'failed', + expect.objectContaining({ + success: false, + error: 'vasp_std exited with code 1', + outputFiles: ['stdout.log'], + }), + 100 + ); + expect(vscode.window.showErrorMessage).toHaveBeenCalledWith( + 'Calculation failed: vasp_std exited with code 1' + ); + }); + + it('cancels the running calculator and ignores late results', async () => { + let resolveRun: (value: unknown) => void; + runCalculation.mockImplementation( + () => + new Promise(resolve => { + resolveRun = resolve; + }) + ); + registerJobCommands({ subscriptions: [] } as any, provider); + + const runPromise = getCommandHandler('openqc.sidebar.runCalculation')(); + await flushPromises(); + + const signal = runCalculation.mock.calls[0][2] as AbortSignal; + expect(signal.aborted).toBe(false); + (provider.getJob as jest.Mock).mockReturnValue( + new JobItem('job-1234567890', 'Static VASP', 'cancelled', 25, 'VASP') + ); + + await getCommandHandler('openqc.sidebar.cancelJob')( + new JobItem('job-1234567890', 'Static VASP', 'running', 25, 'VASP') + ); + + expect(signal.aborted).toBe(true); + expect(provider.cancelJob).toHaveBeenCalledWith('job-1234567890'); + resolveRun!({ + success: true, + energy: -99, + warnings: [], + metadata: {}, + outputFiles: ['OUTCAR'], + }); + await runPromise; + + expect(provider.updateJobResult).not.toHaveBeenCalled(); + }); + + it('restarts a job by creating and executing a concrete restart job', async () => { + runCalculation.mockResolvedValue({ + success: true, + energy: -11, + warnings: [], + metadata: {}, + outputFiles: ['OUTCAR'], + }); + const restartJob = new JobItem( + 'job-old-restart-1234567890', + 'Old Job (restart)', + 'running', + 5, + 'VASP', + undefined, + undefined, + '/tmp/vasp-run' + ); + (provider.restartJob as jest.Mock).mockReturnValue(restartJob); + (provider.getJob as jest.Mock).mockReturnValue(restartJob); + registerJobCommands({ subscriptions: [] } as any, provider); + + await getCommandHandler('openqc.sidebar.restartJob')( + new JobItem( + 'job-old', + 'Old Job', + 'completed', + 100, + 'VASP', + undefined, + undefined, + '/tmp/vasp-run' + ) + ); + + expect(provider.restartJob).toHaveBeenCalledWith('job-old'); + expect(runCalculation).toHaveBeenCalledWith('/tmp/vasp-run', undefined, expect.any(Object)); + expect(provider.updateJobResult).toHaveBeenCalledWith( + 'job-old-restart-1234567890', + 'completed', + expect.objectContaining({ energy: -11 }), + 100 + ); + }); + + it('does not start a job when the calculation name prompt is cancelled', async () => { + (vscode.window.showInputBox as jest.Mock).mockResolvedValue(undefined); + registerJobCommands({ subscriptions: [] } as any, provider); + + await getCommandHandler('openqc.sidebar.runCalculation')(); + + expect(provider.addJob).not.toHaveBeenCalled(); + expect(runCalculation).not.toHaveBeenCalled(); + }); + + it('renders captured job result data in the results webview', async () => { + registerJobCommands({ subscriptions: [] } as any, provider); + const item = new JobItem( + 'job-real', + 'Real Job', + 'completed', + 100, + 'VASP', + new Date('2026-07-03T00:00:00Z'), + new Date('2026-07-03T00:00:01Z'), + '/tmp/real-job', + { + success: true, + energy: -10.5, + warnings: ['low precision'], + metadata: { source: 'OUTCAR' }, + outputFiles: ['OUTCAR'], + } + ); + + await getCommandHandler('openqc.sidebar.viewResults')(item); + + const panel = (vscode.window.createWebviewPanel as jest.Mock).mock.results[0].value; + expect(panel.webview.html).toContain('Final energy: -10.5'); + expect(panel.webview.html).toContain('Output files: OUTCAR'); + expect(panel.webview.html).not.toContain('Sample output data'); + }); + + it('exports captured result data as JSON', async () => { + registerJobCommands({ subscriptions: [] } as any, provider); + const item = new JobItem( + 'job-export', + 'Export Job', + 'completed', + 100, + 'CP2K', + undefined, + undefined, + '/tmp/cp2k', + { + success: true, + energy: -123.4, + outputFiles: ['openqc_cp2k_smoke.out'], + } + ); + + await getCommandHandler('openqc.sidebar.exportData')(item); + + const buffer = (vscode.workspace.fs.writeFile as jest.Mock).mock.calls[0][1] as Buffer; + const payload = JSON.parse(buffer.toString()); + expect(payload.result.energy).toBe(-123.4); + expect(payload.result.outputFiles).toEqual(['openqc_cp2k_smoke.out']); + expect(payload).not.toHaveProperty('data.energies'); + }); + + it('builds export payloads from JobItem result data', () => { + const item = new JobItem( + 'job-payload', + 'Payload', + 'completed', + 100, + 'QE', + undefined, + undefined, + '/tmp/qe', + { + success: true, + energy: -3.14, + } + ); + + expect(createJobExportPayload(item)).toMatchObject({ + jobId: 'job-payload', + workingDirectory: '/tmp/qe', + result: { success: true, energy: -3.14 }, + }); + }); +}); + +function getCommandHandler(command: string): (...args: any[]) => Promise { + const handler = (vscode.commands.registerCommand as jest.Mock).mock.calls.find( + ([registeredCommand]) => registeredCommand === command + )?.[1]; + if (!handler) { + throw new Error(`Command not registered: ${command}`); + } + return handler; +} + +function flushPromises(): Promise { + return new Promise(resolve => setImmediate(resolve)); +} diff --git a/tests/unit/commands/pythonBackendCommands.test.ts b/tests/unit/commands/pythonBackendCommands.test.ts new file mode 100644 index 0000000..e2a1f8d --- /dev/null +++ b/tests/unit/commands/pythonBackendCommands.test.ts @@ -0,0 +1,111 @@ +const mockCheckBackend = jest.fn(); +const mockLogger = { + debug: jest.fn(), + info: jest.fn(), + warn: jest.fn(), + error: jest.fn(), +}; + +jest.mock('../../../src/python/PythonBridge', () => ({ + checkBackend: mockCheckBackend, +})); + +jest.mock('../../../src/utils/Logger', () => ({ + Logger: { + getInstance: jest.fn(() => mockLogger), + }, +})); + +import * as vscode from 'vscode'; +import { registerPythonBackendCommands } from '../../../src/commands/pythonBackendCommands'; + +describe('python backend commands', () => { + const channel = { + clear: jest.fn(), + appendLine: jest.fn(), + show: jest.fn(), + dispose: jest.fn(), + }; + + beforeEach(() => { + jest.clearAllMocks(); + (vscode.commands.registerCommand as jest.Mock).mockImplementation( + (command: string, callback: (...args: unknown[]) => unknown) => ({ + command, + callback, + dispose: jest.fn(), + }) + ); + (vscode.window.withProgress as jest.Mock).mockImplementation((_options, task) => + task(undefined, { isCancellationRequested: false, onCancellationRequested: jest.fn() }) + ); + (vscode.window.createOutputChannel as jest.Mock).mockReturnValue(channel); + }); + + it('shows degraded backend detail and labeled capability readiness', async () => { + mockCheckBackend.mockResolvedValue({ + success: true, + data: { + success: true, + status: 'degraded', + statusDetail: 'Python is available, but these core packages are missing: ase, cclib.', + python: { + executable: '/usr/bin/python3', + version: '3.11.0', + platform: 'darwin', + }, + packages: { + numpy: { available: true, version: '2.0.0' }, + ase: { available: false, installHint: 'pip install ase' }, + cclib: { available: false, installHint: 'pip install cclib' }, + }, + externalTools: { + multiwfn: { available: false, path: null }, + }, + capabilities: { + formatConversion: { + label: 'Format conversion', + status: 'degraded', + detail: 'dpdata is available but ASE is missing.', + requires: ['ase'], + }, + outputParsing: { + label: 'Calculation output parsing', + status: 'missing', + detail: 'cclib parses output files.', + requires: ['cclib'], + }, + }, + missingPackages: ['ase', 'cclib'], + }, + }); + + const context = { subscriptions: [] } as unknown as vscode.ExtensionContext; + registerPythonBackendCommands(context); + + await commandHandler('openqc.checkPythonBackend')(); + + expect(channel.appendLine).toHaveBeenCalledWith('Status: DEGRADED'); + expect(channel.appendLine).toHaveBeenCalledWith( + 'Detail: Python is available, but these core packages are missing: ase, cclib.' + ); + expect(channel.appendLine).toHaveBeenCalledWith( + 'Capabilities: 0 available, 1 degraded, 1 missing' + ); + expect(channel.appendLine).toHaveBeenCalledWith(' ⚠️ Format conversion: DEGRADED'); + expect(channel.appendLine).toHaveBeenCalledWith(' Install for full support: ase'); + expect(vscode.window.showWarningMessage).toHaveBeenCalledWith( + 'Python backend degraded: missing ase, cclib. 1/3 scientific packages available' + ); + }); +}); + +function commandHandler(command: string): () => Promise { + const handler = (vscode.commands.registerCommand as jest.Mock).mock.calls.find( + ([registered]) => registered === command + )?.[1]; + if (!handler) { + throw new Error(`Command not registered: ${command}`); + } + return handler; +} diff --git a/tests/unit/commands/scientificBridgeCommands.test.ts b/tests/unit/commands/scientificBridgeCommands.test.ts new file mode 100644 index 0000000..5ccc024 --- /dev/null +++ b/tests/unit/commands/scientificBridgeCommands.test.ts @@ -0,0 +1,212 @@ +jest.mock( + 'vscode', + () => ({ + commands: { + registerCommand: jest.fn((_command: string, callback: (...args: unknown[]) => unknown) => ({ + dispose: jest.fn(), + callback, + })), + }, + window: { + activeTextEditor: undefined, + showErrorMessage: jest.fn(), + showWarningMessage: jest.fn(), + showInformationMessage: jest.fn(), + showTextDocument: jest.fn(), + showInputBox: jest.fn(), + createWebviewPanel: jest.fn(() => ({ + webview: { html: '' }, + })), + withProgress: jest.fn((_options, task) => task()), + }, + workspace: { + openTextDocument: jest.fn(), + }, + ProgressLocation: { + Notification: 15, + }, + ViewColumn: { + Two: 2, + }, + }), + { virtual: true } +); + +jest.mock('../../../src/python/StructureBridge', () => ({ + parseStructure: jest.fn(), + generateSupercell: jest.fn(), +})); + +jest.mock('../../../src/results/OutputParserBridge', () => ({ + parseOutput: jest.fn(), + extractTrajectory: jest.fn(), +})); + +jest.mock('../../../src/visualizers/OpenQCViewerPanel', () => ({ + OpenQCViewerPanel: { + createOrShow: jest.fn(), + }, +})); + +import * as vscode from 'vscode'; +import { registerScientificBridgeCommands } from '../../../src/commands/scientificBridgeCommands'; +import { parseStructure, generateSupercell } from '../../../src/python/StructureBridge'; +import { extractTrajectory, parseOutput } from '../../../src/results/OutputParserBridge'; +import { OpenQCViewerPanel } from '../../../src/visualizers/OpenQCViewerPanel'; + +const mockParseStructure = parseStructure as jest.Mock; +const mockGenerateSupercell = generateSupercell as jest.Mock; +const mockParseOutput = parseOutput as jest.Mock; +const mockExtractTrajectory = extractTrajectory as jest.Mock; + +describe('scientific bridge commands', () => { + beforeEach(() => { + jest.clearAllMocks(); + (vscode.window as any).activeTextEditor = { + document: { + uri: { fsPath: '/tmp/POSCAR' }, + fileName: '/tmp/POSCAR', + getText: jest.fn(() => 'Si'), + }, + }; + (vscode.workspace.openTextDocument as jest.Mock).mockResolvedValue({ + uri: { fsPath: 'untitled' }, + }); + (vscode.window.showInputBox as jest.Mock).mockResolvedValue('2 2 1'); + }); + + it('registers and invokes real bridge handlers', async () => { + const context = { subscriptions: [], extensionUri: { fsPath: '/ext' } } as any; + const structure = { + name: 'Si', + kind: 'periodic', + atoms: [{ element: 'Si', x: 0, y: 0, z: 0 }], + }; + mockParseStructure.mockResolvedValue({ success: true, data: structure }); + mockGenerateSupercell.mockResolvedValue({ + success: true, + data: { ...structure, atoms: [...structure.atoms, ...structure.atoms] }, + }); + mockParseOutput.mockResolvedValue({ + success: true, + data: { software: 'vasp', finalEnergy: { value: -1, unit: 'eV' }, scfEnergies: [-0.5, -1] }, + }); + mockExtractTrajectory.mockResolvedValue({ + success: true, + data: { + supported: true, + frameCount: 2, + frames: [ + { + schemaVersion: 'openqc.structure.v1', + kind: 'molecule', + name: 'Frame 1', + atoms: [{ element: 'H', x: 0, y: 0, z: 0 }], + }, + { + schemaVersion: 'openqc.structure.v1', + kind: 'molecule', + name: 'Frame 2', + atoms: [{ element: 'H', x: 0, y: 0, z: 0.1 }], + }, + ], + energies: [-0.5, -1], + }, + }); + + registerScientificBridgeCommands(context); + + await commandHandler('openqc.parseStructurePython')(); + expect(mockParseStructure).toHaveBeenCalledWith('/tmp/POSCAR', undefined, 'Si'); + expect(vscode.workspace.openTextDocument).toHaveBeenCalledWith( + expect.objectContaining({ language: 'json' }) + ); + + await commandHandler('openqc.generateSupercell')(); + expect(mockGenerateSupercell).toHaveBeenCalledWith(structure, 2, 2, 1); + expect(OpenQCViewerPanel.createOrShow).toHaveBeenCalled(); + + await commandHandler('openqc.parseCalculationOutput')(); + expect(mockParseOutput).toHaveBeenCalledWith('/tmp/POSCAR'); + + await commandHandler('openqc.showSCFConvergence')(); + expect(vscode.window.createWebviewPanel).toHaveBeenCalledWith( + 'openqc.scfConvergence', + 'OpenQC: SCF Convergence', + vscode.ViewColumn.Two, + expect.objectContaining({ enableScripts: false }) + ); + + await commandHandler('openqc.showOptimizationTrajectory')(); + expect(mockExtractTrajectory).toHaveBeenCalledWith('/tmp/POSCAR'); + expect(OpenQCViewerPanel.createOrShow).toHaveBeenCalledWith( + context.extensionUri, + expect.objectContaining({ + schemaVersion: 'openqc.structure.v1', + kind: 'trajectory', + atoms: [{ element: 'H', x: 0, y: 0, z: 0 }], + frames: expect.arrayContaining([ + expect.objectContaining({ name: 'Frame 1' }), + expect.objectContaining({ name: 'Frame 2' }), + ]), + }), + '/tmp/POSCAR trajectory' + ); + }); + + it('shows a structured warning when an output has no extractable trajectory', async () => { + const context = { subscriptions: [], extensionUri: { fsPath: '/ext' } } as any; + mockExtractTrajectory.mockResolvedValue({ + success: true, + data: { + supported: false, + frameCount: 0, + frames: [], + warnings: ['No atom coordinate trajectory was found in this output file'], + }, + }); + registerScientificBridgeCommands(context); + + await commandHandler('openqc.showOptimizationTrajectory')(); + + expect(OpenQCViewerPanel.createOrShow).not.toHaveBeenCalled(); + expect(vscode.window.showWarningMessage).toHaveBeenCalledWith( + 'No atom coordinate trajectory was found in this output file' + ); + }); + + it('does not announce success for unrecognized calculation output', async () => { + const context = { subscriptions: [], extensionUri: { fsPath: '/ext' } } as any; + mockParseOutput.mockResolvedValue({ + success: true, + data: { + schemaVersion: 'openqc.results.v1', + software: 'auto', + success: false, + cclibAvailable: false, + warnings: ['No calculation output data could be extracted from this file.'], + }, + }); + registerScientificBridgeCommands(context); + + await commandHandler('openqc.parseCalculationOutput')(); + + expect(vscode.workspace.openTextDocument).not.toHaveBeenCalled(); + expect(vscode.window.showInformationMessage).not.toHaveBeenCalledWith( + expect.stringContaining('Parsed calculation output') + ); + expect(vscode.window.showWarningMessage).toHaveBeenCalledWith( + 'No calculation output data could be extracted from this file.' + ); + }); +}); + +function commandHandler(command: string): () => Promise { + const handler = (vscode.commands.registerCommand as jest.Mock).mock.calls.find( + ([registered]) => registered === command + )?.[1]; + if (!handler) { + throw new Error(`Command not registered: ${command}`); + } + return handler; +} diff --git a/tests/unit/migration/migration.test.ts b/tests/unit/migration/migration.test.ts index 79f9ff0..713adce 100644 --- a/tests/unit/migration/migration.test.ts +++ b/tests/unit/migration/migration.test.ts @@ -566,7 +566,8 @@ Test`; }; const result = converter.convertParameters(sourceParams, 'cp2k'); - expect(result.parameters.CUTOFF).toBe(520); + expect(result.parameters.CUTOFF).toBeCloseTo(38.219295063, 9); + expect(result.parameters.EPS_SCF).toBe(1e-6); }); it('should track unmapped parameters', () => { diff --git a/tests/unit/packaging/releasePipeline.test.ts b/tests/unit/packaging/releasePipeline.test.ts index 09e3a64..b962168 100644 --- a/tests/unit/packaging/releasePipeline.test.ts +++ b/tests/unit/packaging/releasePipeline.test.ts @@ -30,6 +30,7 @@ describe('release pipeline contract', () => { expect(makefile).toContain('check: ## Run the canonical pull-request quality gate'); expect(makefile).toContain('npm run ci:pr'); expect(makefile).not.toContain('cd core'); + expect(ci).toContain('npx playwright install --with-deps chromium'); expect(ci).toContain('run: npm run check:release'); expect(release).toContain('run: npm run check:release'); expect(ci).toContain('node-version: 22'); @@ -59,6 +60,10 @@ describe('release pipeline contract', () => { expect(guard).toContain("['rev-parse', 'refs/remotes/origin/master']"); expect(guard).toContain('tagCommit !== head'); expect(verifier).toContain('VSIX contains forbidden files'); + expect(verifier).toContain('extension/media/vendor/3dmol/3Dmol-min.js'); + expect(verifier).toContain('extension/media/vendor/ngl/ngl.js'); + expect(verifier).toContain('extension/media/vendor/plotly.js-dist-min/plotly.min.js'); + expect(verifier).not.toContain('extension/node_modules/3dmol'); expect(vscodeignore).toContain('core/**'); expect(vscodeignore).toContain('tests/**'); expect(vscodeignore).not.toMatch(/^!node_modules\/(?:3dmol|ngl|plotly\.js-dist-min)\/\*\*$/m); diff --git a/tests/unit/providers/StructureViewer.test.ts b/tests/unit/providers/StructureViewer.test.ts index cae573e..11e7c8c 100644 --- a/tests/unit/providers/StructureViewer.test.ts +++ b/tests/unit/providers/StructureViewer.test.ts @@ -1,5 +1,6 @@ import { StructureViewer } from '../../../src/providers/StructureViewer'; import { FileTypeDetector } from '../../../src/managers/FileTypeDetector'; +import { OpenQCViewerPanel } from '../../../src/visualizers/OpenQCViewerPanel'; import * as vscode from 'vscode'; // Mock FileTypeDetector @@ -14,6 +15,12 @@ jest.mock('../../../src/managers/FileTypeDetector', () => ({ })), })); +jest.mock('../../../src/visualizers/OpenQCViewerPanel', () => ({ + OpenQCViewerPanel: { + createOrShow: jest.fn(), + }, +})); + // Mock vscode module jest.mock('vscode', () => { let currentPanel: any = null; @@ -121,7 +128,7 @@ Direct enableScripts: true, localResourceRoots: expect.arrayContaining([ expect.objectContaining({ - fsPath: expect.stringContaining('node_modules/3dmol/build'), + fsPath: expect.stringContaining('media'), }), ]), retainContextWhenHidden: true, @@ -179,7 +186,7 @@ Direct enableScripts: true, localResourceRoots: expect.arrayContaining([ expect.objectContaining({ - fsPath: expect.stringContaining('node_modules/3dmol/build'), + fsPath: expect.stringContaining('media'), }), ]), retainContextWhenHidden: true, @@ -194,6 +201,54 @@ Direct expect(vscode.window.showWarningMessage).toHaveBeenCalledWith('No active editor found'); }); + it('routes POSCAR previews through the canonical DTO viewer instead of the legacy preview panel', () => { + const mockEditor = { + document: { + fileName: '/test/POSCAR', + getText: () => + `Fe slab +1.0 +2.0 0.0 0.0 +0.0 2.0 0.0 +0.0 0.0 8.0 +Fe O +1 1 +Selective dynamics +Direct +0.0 0.0 0.0 F F T +0.5 0.5 0.5 T T T`, + }, + } as unknown as vscode.TextEditor; + + viewer.showPreview(mockEditor); + + expect(OpenQCViewerPanel.createOrShow).toHaveBeenCalledWith( + mockUri, + expect.objectContaining({ + schemaVersion: 'openqc.structure.v1', + kind: 'periodic', + atoms: expect.arrayContaining([ + expect.objectContaining({ + element: 'Fe', + selectiveDynamics: [false, false, true], + }), + expect.objectContaining({ + element: 'O', + selectiveDynamics: [true, true, true], + }), + ]), + cell: expect.objectContaining({ coordinateMode: 'fractional' }), + }), + '/test/POSCAR' + ); + expect(vscode.window.createWebviewPanel).not.toHaveBeenCalledWith( + 'openqcInputPreview', + expect.any(String), + expect.any(Number), + expect.any(Object) + ); + }); + it('should create preview panel for Gaussian input', () => { const mockEditor = { document: { @@ -308,7 +363,7 @@ O 0.0 0.0 0.0`, viewer.show(mockEditor); const panel = (vscode.window.createWebviewPanel as jest.Mock).mock.results[0].value; - expect(panel.webview.html).toContain('node_modules/3dmol/build/3Dmol-min.js'); + expect(panel.webview.html).toContain('media/vendor/3dmol/3Dmol-min.js'); expect(panel.webview.html).toContain('Content-Security-Policy'); expect(panel.webview.html).not.toContain('https://cdnjs.cloudflare.com'); expect(panel.webview.html).not.toContain("'unsafe-inline'"); diff --git a/tests/unit/python/PythonBridge.test.ts b/tests/unit/python/PythonBridge.test.ts index 410a620..5feefcc 100644 --- a/tests/unit/python/PythonBridge.test.ts +++ b/tests/unit/python/PythonBridge.test.ts @@ -75,6 +75,22 @@ describe('PythonBridge', () => { expect(result.data).toEqual(mockData); }); + it('adds the bundled Python package directory to PYTHONPATH', async () => { + const mockData = { success: true }; + mockExecFile.mockImplementation((_cmd: any, _args: any, _opts: any, cb: any) => { + cb(null, JSON.stringify(mockData), ''); + return {} as any; + }); + + await execPythonJson('openqc.bridge.check_backend', undefined, { + pythonPath: 'python3', + timeoutMs: 5000, + }); + + const options = mockExecFile.mock.calls[0][2]; + expect(options.env.PYTHONPATH).toContain('/python'); + }); + it('handles missing Python executable (ENOENT)', async () => { const error: any = new Error('spawn python3 ENOENT'); error.code = 'ENOENT'; diff --git a/tests/unit/results/OutputParserBridge.test.ts b/tests/unit/results/OutputParserBridge.test.ts new file mode 100644 index 0000000..29c9840 --- /dev/null +++ b/tests/unit/results/OutputParserBridge.test.ts @@ -0,0 +1,56 @@ +const mockExecPythonJson = jest.fn(); + +jest.mock('../../../src/python/PythonBridge', () => ({ + execPythonJson: mockExecPythonJson, +})); + +jest.mock('../../../src/utils/Logger', () => ({ + Logger: { + getInstance: () => ({ + info: jest.fn(), + warn: jest.fn(), + debug: jest.fn(), + error: jest.fn(), + }), + }, +})); + +import { + extractTrajectory, + parseOutput, + summarizeOutput, +} from '../../../src/results/OutputParserBridge'; + +describe('OutputParserBridge', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockExecPythonJson.mockResolvedValue({ success: true, data: {} }); + }); + + it('parses calculation output through the Python output bridge', async () => { + await parseOutput('/tmp/gaussian.log', 'gaussian'); + + expect(mockExecPythonJson).toHaveBeenCalledWith('openqc.bridge.output_bridge', { + command: 'parse', + args: { path: '/tmp/gaussian.log', software: 'gaussian' }, + }); + }); + + it('summarizes calculation output through the Python output bridge', async () => { + await summarizeOutput('/tmp/orca.out'); + + expect(mockExecPythonJson).toHaveBeenCalledWith('openqc.bridge.output_bridge', { + command: 'summarize', + args: { path: '/tmp/orca.out', software: 'auto' }, + }); + }); + + it('extracts optimization trajectories through the Python output bridge', async () => { + await extractTrajectory('/tmp/gaussian.log', 'gaussian'); + + expect(mockExecPythonJson).toHaveBeenCalledWith('openqc.bridge.output_bridge', { + command: 'trajectory', + args: { path: '/tmp/gaussian.log', software: 'gaussian' }, + }); + }); +}); diff --git a/tests/unit/sidebar/JobTreeProvider.test.ts b/tests/unit/sidebar/JobTreeProvider.test.ts index 89eeeea..52ebe4b 100644 --- a/tests/unit/sidebar/JobTreeProvider.test.ts +++ b/tests/unit/sidebar/JobTreeProvider.test.ts @@ -152,6 +152,12 @@ describe('JobTreeProvider Full Coverage', () => { }); describe('JobTreeProvider methods', () => { + it('should start empty when no jobs are stored', async () => { + const children = await provider.getChildren(); + expect(children).toEqual([]); + expect(mockContext.workspaceState.update).not.toHaveBeenCalled(); + }); + it('should get tree item', () => { const job = new JobItem('job-1', 'Test', 'running', 50, 'NWChem'); const result = provider.getTreeItem(job); @@ -179,11 +185,19 @@ describe('JobTreeProvider Full Coverage', () => { software: 'Gaussian', startTime: new Date().toISOString(), endTime: new Date().toISOString(), + workingDirectory: '/tmp/calc', + result: { + success: true, + energy: -10.5, + outputFiles: ['OUTCAR'], + }, }, ]; mockContext.workspaceState.get = jest.fn(() => savedJobs); const newProvider = new JobTreeProvider(mockContext); expect(mockContext.workspaceState.get).toHaveBeenCalledWith('openqc.jobs', []); + expect(newProvider.getJob('saved-1')?.workingDirectory).toBe('/tmp/calc'); + expect(newProvider.getJob('saved-1')?.result?.energy).toBe(-10.5); newProvider.dispose(); }); @@ -220,6 +234,7 @@ describe('JobTreeProvider Full Coverage', () => { throw new Error('Load error'); }); const newProvider = new JobTreeProvider(mockContext); + expect(newProvider.getJob('job-1')).toBeUndefined(); newProvider.dispose(); }); @@ -269,6 +284,45 @@ describe('JobTreeProvider Full Coverage', () => { expect(mockContext.workspaceState.update).toHaveBeenCalled(); }); + it('should store real calculation results on completion', () => { + const job = new JobItem( + 'job-result', + 'Real result', + 'running', + 50, + 'VASP', + new Date(), + undefined, + '/tmp/vasp' + ); + provider.addJob(job); + + provider.updateJobResult('job-result', 'completed', { + success: true, + energy: -10.5, + forces: [[0.1, 0.2, 0.3]], + outputFiles: ['OUTCAR'], + }); + + const updated = provider.getJob('job-result'); + expect(updated?.status).toBe('completed'); + expect(updated?.progress).toBe(100); + expect(updated?.result?.energy).toBe(-10.5); + expect(updated?.result?.outputFiles).toEqual(['OUTCAR']); + expect(updated?.workingDirectory).toBe('/tmp/vasp'); + expect(mockContext.workspaceState.update).toHaveBeenCalledWith( + 'openqc.jobs', + expect.arrayContaining([ + expect.objectContaining({ + id: 'job-result', + status: 'completed', + workingDirectory: '/tmp/vasp', + result: expect.objectContaining({ energy: -10.5 }), + }), + ]) + ); + }); + it('should do nothing when updating non-existent job', () => { provider.updateJobStatus('non-existent', 'running', 50); // Should not throw @@ -277,30 +331,45 @@ describe('JobTreeProvider Full Coverage', () => { it('should cancel running job', () => { const job = new JobItem('job-cancel', 'Test', 'running', 50, 'ORCA'); provider.addJob(job); - provider.cancelJob('job-cancel'); + const cancelled = provider.cancelJob('job-cancel'); + expect(cancelled).toBe(true); expect(mockContext.workspaceState.update).toHaveBeenCalled(); }); it('should cancel non-running job without error', () => { const job = new JobItem('job-no-cancel', 'Test', 'completed', 100, 'ORCA'); provider.addJob(job); - provider.cancelJob('job-no-cancel'); // Should not throw + expect(provider.cancelJob('job-no-cancel')).toBe(false); }); it('should cancel non-existent job without error', () => { - provider.cancelJob('non-existent'); // Should not throw + expect(provider.cancelJob('non-existent')).toBe(false); }); - it('should restart job', () => { - const job = new JobItem('job-restart', 'Test', 'completed', 100, 'VASP'); + it('should create a running restart job that preserves the working directory', () => { + const job = new JobItem( + 'job-restart', + 'Test', + 'completed', + 100, + 'VASP', + undefined, + undefined, + '/tmp/vasp' + ); provider.addJob(job); - provider.restartJob('job-restart'); + const restarted = provider.restartJob('job-restart'); + expect(restarted).toMatchObject({ + label: 'Test (restart)', + status: 'running', + progress: 5, + workingDirectory: '/tmp/vasp', + }); expect(mockContext.workspaceState.update).toHaveBeenCalled(); }); it('should do nothing when restarting non-existent job', () => { - provider.restartJob('non-existent'); - // Should not throw + expect(provider.restartJob('non-existent')).toBeUndefined(); }); it('should clear completed jobs', () => { @@ -336,37 +405,16 @@ describe('JobTreeProvider Full Coverage', () => { }); }); - describe('updateRunningJobs simulation', () => { - it('should complete job when progress reaches 100', () => { - // Add a running job with high progress - const job = new JobItem('job-sim', 'Sim', 'running', 99, 'Gaussian'); - provider.addJob(job); - - // Mock Math.random to return high value - const originalRandom = Math.random; - Math.random = jest.fn(() => 0.9); // Will make progress >= 100 - - provider.refresh(); - - Math.random = originalRandom; - - // Job should be completed now - const updated = provider.getJob('job-sim'); - // Due to timing, this might not be completed yet, but the code path is exercised - }); - - it('should update progress for running job', () => { - // Add a running job with low progress - const job = new JobItem('job-sim2', 'Sim2', 'running', 50, 'VASP'); + describe('refresh behavior', () => { + it('should not simulate progress or complete running jobs', () => { + const job = new JobItem('job-no-sim', 'No Sim', 'running', 99, 'Gaussian'); provider.addJob(job); - // Mock Math.random to return low value - const originalRandom = Math.random; - Math.random = jest.fn(() => 0.1); // Will make progress < 100 - provider.refresh(); - Math.random = originalRandom; + const updated = provider.getJob('job-no-sim'); + expect(updated?.status).toBe('running'); + expect(updated?.progress).toBe(99); }); }); diff --git a/tests/unit/sidebar/MoleculeTreeProvider.test.ts b/tests/unit/sidebar/MoleculeTreeProvider.test.ts index ff164e1..0b72a5d 100644 --- a/tests/unit/sidebar/MoleculeTreeProvider.test.ts +++ b/tests/unit/sidebar/MoleculeTreeProvider.test.ts @@ -114,6 +114,12 @@ describe('MoleculeTreeProvider Full Coverage', () => { expect(Array.isArray(children)).toBe(true); }); + it('should start empty when no molecules are stored', async () => { + const children = await provider.getChildren(); + expect(children).toEqual([]); + expect(mockContext.workspaceState.update).not.toHaveBeenCalled(); + }); + it('should get children when element provided (empty array)', async () => { const mol = new MoleculeItem('mol-1', 'Test', 'H2', 2); const children = await provider.getChildren(mol); @@ -168,6 +174,7 @@ describe('MoleculeTreeProvider Full Coverage', () => { throw new Error('Load error'); }); const newProvider = new MoleculeTreeProvider(mockContext); + expect(newProvider.getMolecule('mol-1')).toBeUndefined(); newProvider.dispose(); }); diff --git a/tests/unit/smoke/visualSmokePaths.test.ts b/tests/unit/smoke/visualSmokePaths.test.ts new file mode 100644 index 0000000..dd0b45d --- /dev/null +++ b/tests/unit/smoke/visualSmokePaths.test.ts @@ -0,0 +1,55 @@ +import * as path from 'path'; +import { + buildVisualSmokePaths, + isVisualSmokeReadyMarker, + parseVisualSmokeArgs, +} from '../../../src/smoke/visualSmokePaths'; + +describe('visual smoke path options', () => { + const workspaceRoot = path.resolve('/repo/openqc'); + + it('uses source workspace paths by default', () => { + const options = parseVisualSmokeArgs([], workspaceRoot); + + expect(options.extensionRoot).toBe(workspaceRoot); + expect(options.outputPrefix).toBe('openqc-viewer-smoke'); + expect(options.outputDir).toBe(path.join(workspaceRoot, 'output', 'playwright')); + }); + + it('accepts an extracted VSIX extension root and output prefix', () => { + const options = parseVisualSmokeArgs( + [ + '--extension-root', + '/tmp/openqc-vsix/extension', + '--output-prefix', + 'openqc-viewer-vsix-smoke', + ], + workspaceRoot + ); + + expect(options.extensionRoot).toBe(path.resolve('/tmp/openqc-vsix/extension')); + expect(options.outputPrefix).toBe('openqc-viewer-vsix-smoke'); + expect(buildVisualSmokePaths(options).htmlPath).toBe( + path.join(workspaceRoot, 'output', 'playwright', 'openqc-viewer-vsix-smoke.html') + ); + }); + + it('rejects flags without values', () => { + expect(() => parseVisualSmokeArgs(['--extension-root'], workspaceRoot)).toThrow( + 'Missing value for --extension-root' + ); + }); + + it('rejects unknown flags', () => { + expect(() => parseVisualSmokeArgs(['--unknown'], workspaceRoot)).toThrow( + 'Unknown visual smoke option: --unknown' + ); + }); + + it('accepts only a verified ready marker after a browser polling timeout', () => { + expect(isVisualSmokeReadyMarker({ state: 'ready', text: 'ready' })).toBe(true); + expect(isVisualSmokeReadyMarker({ state: 'error', text: 'viewer failed' })).toBe(false); + expect(isVisualSmokeReadyMarker({ state: 'booting', text: 'booting' })).toBe(false); + expect(isVisualSmokeReadyMarker({ state: undefined, text: null })).toBe(false); + }); +}); diff --git a/tests/unit/structures/OpenQCStructure.validation.test.ts b/tests/unit/structures/OpenQCStructure.validation.test.ts index d409d4a..4c7a5b9 100644 --- a/tests/unit/structures/OpenQCStructure.validation.test.ts +++ b/tests/unit/structures/OpenQCStructure.validation.test.ts @@ -283,6 +283,20 @@ describe('validateOpenQCStructure', () => { // ----------------------------------------------------------------------- describe('bond validation', () => { + it('rejects non-array bonds', () => { + const result = validateOpenQCStructure({ + schemaVersion: OPENQC_STRUCTURE_SCHEMA_VERSION, + kind: 'molecule', + atoms: [ + { element: 'H', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1, y: 0, z: 0 }, + ], + bonds: { from: 0, to: 1 } as any, + }); + expect(result.valid).toBe(false); + expect(result.errors).toContain('bonds must be an array when provided'); + }); + it('rejects bond with non-number from/to', () => { const result = validateOpenQCStructure({ schemaVersion: OPENQC_STRUCTURE_SCHEMA_VERSION, @@ -296,6 +310,75 @@ describe('validateOpenQCStructure', () => { expect(result.valid).toBe(false); expect(result.errors.some(e => e.includes('"from" and "to"'))).toBe(true); }); + + it('rejects bond with non-integer atom indices', () => { + const result = validateOpenQCStructure({ + schemaVersion: OPENQC_STRUCTURE_SCHEMA_VERSION, + kind: 'molecule', + atoms: [ + { element: 'H', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1, y: 0, z: 0 }, + ], + bonds: [{ from: 0.5, to: 1 }], + }); + expect(result.valid).toBe(false); + expect(result.errors.some(e => e.includes('integer atom indices'))).toBe(true); + }); + + it('rejects bond that references the same atom', () => { + const result = validateOpenQCStructure({ + schemaVersion: OPENQC_STRUCTURE_SCHEMA_VERSION, + kind: 'molecule', + atoms: [ + { element: 'H', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1, y: 0, z: 0 }, + ], + bonds: [{ from: 1, to: 1 }], + }); + expect(result.valid).toBe(false); + expect(result.errors.some(e => e.includes('different atoms'))).toBe(true); + }); + + it('rejects bond with atom index out of range', () => { + const result = validateOpenQCStructure({ + schemaVersion: OPENQC_STRUCTURE_SCHEMA_VERSION, + kind: 'molecule', + atoms: [ + { element: 'H', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1, y: 0, z: 0 }, + ], + bonds: [{ from: 0, to: 2 }], + }); + expect(result.valid).toBe(false); + expect(result.errors.some(e => e.includes('atom index out of range'))).toBe(true); + }); + + it('rejects bond with invalid order', () => { + const result = validateOpenQCStructure({ + schemaVersion: OPENQC_STRUCTURE_SCHEMA_VERSION, + kind: 'molecule', + atoms: [ + { element: 'H', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1, y: 0, z: 0 }, + ], + bonds: [{ from: 0, to: 1, order: 4 }], + }); + expect(result.valid).toBe(false); + expect(result.errors.some(e => e.includes('"order" must be 1, 2, or 3'))).toBe(true); + }); + + it('accepts valid bond indices and order', () => { + const result = validateOpenQCStructure({ + schemaVersion: OPENQC_STRUCTURE_SCHEMA_VERSION, + kind: 'molecule', + atoms: [ + { element: 'H', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1, y: 0, z: 0 }, + ], + bonds: [{ from: 0, to: 1, order: 2 }], + }); + expect(result.valid).toBe(true); + }); }); // ----------------------------------------------------------------------- diff --git a/tests/unit/utils/nonce.test.ts b/tests/unit/utils/nonce.test.ts new file mode 100644 index 0000000..ff386bb --- /dev/null +++ b/tests/unit/utils/nonce.test.ts @@ -0,0 +1,42 @@ +import { generateNonce } from '../../../src/utils/nonce'; +import * as fs from 'fs'; +import * as path from 'path'; + +const REPO_ROOT = path.resolve(__dirname, '../../..'); +const WEBVIEW_NONCE_SOURCES = [ + 'src/providers/StructureViewer.ts', + 'src/providers/DataPlotter.ts', + 'src/webviews/openqcViewerWebview.ts', + 'src/webviews/resultsWebview.ts', + 'src/sidebar/OpenQCConverterProvider.ts', + 'src/visualizers/ThreeJsWebview.ts', + 'src/visualizers/MoleculeViewerWebview.ts', +]; + +describe('generateNonce', () => { + it('generates a 32-character CSP nonce by default', () => { + expect(generateNonce()).toMatch(/^[A-Za-z0-9]{32}$/); + }); + + it('does not depend on Math.random for CSP nonce generation', () => { + const randomSpy = jest.spyOn(Math, 'random').mockImplementation(() => { + throw new Error('Math.random must not be used for CSP nonces'); + }); + + expect(() => generateNonce()).not.toThrow(); + + randomSpy.mockRestore(); + }); + + it('supports custom nonce lengths for webview callers', () => { + expect(generateNonce(48)).toMatch(/^[A-Za-z0-9]{48}$/); + }); + + it('keeps webview CSP nonce sources off Math.random', () => { + for (const source of WEBVIEW_NONCE_SOURCES) { + const text = fs.readFileSync(path.join(REPO_ROOT, source), 'utf8'); + + expect(text).not.toContain('Math.random'); + } + }); +}); diff --git a/tests/unit/utils/structureExporter.test.ts b/tests/unit/utils/structureExporter.test.ts index d93877a..0b9685f 100644 --- a/tests/unit/utils/structureExporter.test.ts +++ b/tests/unit/utils/structureExporter.test.ts @@ -4,8 +4,13 @@ import { StructureData, ExportOptions, } from '../../../src/utils/structureExporter'; +import * as vscode from 'vscode'; describe('StructureExporter', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + describe('constructor', () => { it('should use default pythonPath from config', () => { const exporter = new StructureExporter(); @@ -22,7 +27,16 @@ describe('StructureExporter', () => { }); describe('exportStructure', () => { - it('should return not-implemented result', async () => { + it('should reject empty structures', async () => { + const exporter = new StructureExporter(); + + const result = await exporter.exportStructure({ atoms: [] }, { format: 'xyz' }); + + expect(result).toEqual({ success: false, error: 'No atoms to export' }); + expect(vscode.workspace.fs.writeFile).not.toHaveBeenCalled(); + }); + + it('should export XYZ without requiring the Python backend', async () => { const exporter = new StructureExporter(); const structure: StructureData = { atoms: [ @@ -30,11 +44,366 @@ describe('StructureExporter', () => { { element: 'O', x: 0.96, y: 0, z: 0 }, ], }; - const options: ExportOptions = { format: 'xyz' }; + const options: ExportOptions = { format: 'xyz', outputPath: '/tmp/water.xyz' }; const result = await exporter.exportStructure(structure, options); + expect(result.success).toBe(true); + expect(result.outputPath).toBe('/tmp/water.xyz'); + expect(result.content).toContain('2\nOpenQC export'); + expect(result.content).toContain('H 0.000000 0.000000 0.000000'); + expect(result.content).toContain('O 0.960000 0.000000 0.000000'); + expect(vscode.workspace.fs.writeFile).toHaveBeenCalledWith( + expect.objectContaining({ fsPath: '/tmp/water.xyz' }), + expect.any(Buffer) + ); + }); + + it('should prompt for an output path when none is provided', async () => { + const exporter = new StructureExporter(); + (vscode.window.showSaveDialog as jest.Mock).mockResolvedValue({ + fsPath: '/tmp/prompted.xyz', + }); + + const result = await exporter.exportStructure( + { atoms: [{ element: 'He', x: 0, y: 0, z: 0 }] }, + { format: 'xyz' } + ); + + expect(result.success).toBe(true); + expect(result.outputPath).toBe('/tmp/prompted.xyz'); + expect(vscode.window.showSaveDialog).toHaveBeenCalledWith( + expect.objectContaining({ + saveLabel: 'Export Structure', + filters: { XYZ: ['xyz'] }, + }) + ); + }); + + it('should return a cancelled result when the save dialog is dismissed', async () => { + const exporter = new StructureExporter(); + (vscode.window.showSaveDialog as jest.Mock).mockResolvedValue(undefined); + + const result = await exporter.exportStructure( + { atoms: [{ element: 'He', x: 0, y: 0, z: 0 }] }, + { format: 'xyz' } + ); + + expect(result).toEqual({ success: false, error: 'Export cancelled' }); + expect(vscode.workspace.fs.writeFile).not.toHaveBeenCalled(); + }); + + it('should export extended XYZ with lattice metadata from lattice parameters', async () => { + const exporter = new StructureExporter(); + const structure: StructureData = { + atoms: [{ element: 'C', x: Number.POSITIVE_INFINITY, y: 0.5, z: 1 }], + cell: { a: 10, b: 20, c: 30, alpha: 90, beta: 90, gamma: 90 }, + }; + + const result = await exporter.exportStructure(structure, { + format: 'extxyz', + outputPath: '/tmp/carbon.extxyz', + }); + + expect(result.success).toBe(true); + expect(result.content).toContain( + 'Lattice="10.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 30.000000"' + ); + expect(result.content).toContain('C 0.000000 0.500000 1.000000'); + }); + + it('should export PDB records', async () => { + const exporter = new StructureExporter(); + + const result = await exporter.exportStructure( + { atoms: [{ element: 'H', x: 1.2, y: 3.4, z: 5.6 }] }, + { format: 'pdb', outputPath: '/tmp/water.pdb' } + ); + + expect(result.success).toBe(true); + expect(result.content).toContain('HETATM'); + expect(result.content).toContain(' 1.200 3.400 5.600'); + expect(result.content).toContain('END'); + }); + + it('should export PDB CONECT records for valid bonds', async () => { + const exporter = new StructureExporter(); + + const result = await exporter.exportStructure( + { + atoms: [ + { element: 'C', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1.2, y: 0, z: 0 }, + { element: 'H', x: 2.2, y: 0, z: 0 }, + ], + bonds: [ + { from: 0, to: 1, order: 2 }, + { from: 1, to: 2, order: 1 }, + ], + }, + { format: 'pdb', outputPath: '/tmp/bonded.pdb' } + ); + + expect(result.success).toBe(true); + expect(result.content).toContain('CONECT 1 2'); + expect(result.content).toContain('CONECT 2 3'); + expect(result.content?.trim().endsWith('END')).toBe(true); + }); + + it('should warn when non-PDB native exports drop edited bond topology', async () => { + const exporter = new StructureExporter(); + const structure: StructureData = { + atoms: [ + { element: 'C', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1.2, y: 0, z: 0 }, + ], + bonds: [{ from: 0, to: 1, order: 2 }], + }; + + const result = await exporter.exportStructure(structure, { + format: 'xyz', + outputPath: '/tmp/bonded.xyz', + }); + + expect(result.success).toBe(true); + expect(result.warnings).toEqual([ + 'XYZ export does not preserve edited bond topology or bond order; use PDB for basic CONECT connectivity.', + ]); + }); + + it('should skip duplicate and out-of-range PDB CONECT bonds', async () => { + const exporter = new StructureExporter(); + + const result = await exporter.exportStructure( + { + atoms: [ + { element: 'C', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1.2, y: 0, z: 0 }, + ], + bonds: [ + { from: 0, to: 1, order: 1 }, + { from: 1, to: 0, order: 3 }, + { from: 0, to: 99, order: 1 }, + ], + }, + { format: 'pdb', outputPath: '/tmp/deduped.pdb' } + ); + + expect(result.success).toBe(true); + const conectLines = result.content?.split('\n').filter(line => line.startsWith('CONECT')); + expect(conectLines).toEqual(['CONECT 1 2']); + expect(result.warnings).toEqual([ + 'Skipped PDB CONECT bond 2: atom indices 0-99 are out of range for 2 atoms', + ]); + }); + + it('should export POSCAR when unit-cell vectors are available', async () => { + const exporter = new StructureExporter(); + const structure: StructureData = { + atoms: [ + { element: 'Si', x: 0, y: 0, z: 0 }, + { element: 'Si', x: 1.3575, y: 1.3575, z: 1.3575 }, + ], + cell: { + a: [2.715, 2.715, 0], + b: [0, 2.715, 2.715], + c: [2.715, 0, 2.715], + pbc: [true, true, true], + coordinateMode: 'cartesian', + }, + }; + + const result = await exporter.exportStructure(structure, { + format: 'vasp', + outputPath: '/tmp/POSCAR', + }); + + expect(result.success).toBe(true); + expect(result.content).toContain('Si'); + expect(result.content).toContain('2'); + expect(result.content).toContain('Cartesian'); + expect(result.content).toContain('2.715000 2.715000 0.000000'); + }); + + it('should preserve fractional coordinates as Direct in POSCAR', async () => { + const exporter = new StructureExporter(); + const structure: StructureData = { + atoms: [ + { element: 'Si', x: 0, y: 0, z: 0 }, + { element: 'Si', x: 0.25, y: 0.25, z: 0.25 }, + ], + cell: { + a: [2.715, 2.715, 0], + b: [0, 2.715, 2.715], + c: [2.715, 0, 2.715], + pbc: [true, true, true], + coordinateMode: 'fractional', + }, + }; + + const result = await exporter.exportStructure(structure, { + format: 'vasp', + outputPath: '/tmp/POSCAR', + }); + + expect(result.success).toBe(true); + expect(result.content).toContain('Direct'); + expect(result.content).toContain('0.250000 0.250000 0.250000'); + expect(result.content).not.toContain('1.357500 1.357500 1.357500'); + }); + + it('should preserve selective dynamics flags in POSCAR export and default missing flags to T', async () => { + const exporter = new StructureExporter(); + const structure: StructureData = { + atoms: [ + { element: 'Fe', x: 0, y: 0, z: 0, selectiveDynamics: [true, true, false] }, + { element: 'Fe', x: 0.5, y: 0.5, z: 0.5 }, + ] as any, + cell: { + a: [2.87, 0, 0], + b: [0, 2.87, 0], + c: [0, 0, 2.87], + pbc: [true, true, true], + coordinateMode: 'fractional', + }, + }; + + const result = await exporter.exportStructure(structure, { + format: 'vasp', + outputPath: '/tmp/POSCAR', + }); + + expect(result.success).toBe(true); + const lines = result.content?.trim().split('\n') ?? []; + expect(lines.slice(5, 8)).toEqual(['Fe', '2', 'Selective dynamics']); + expect(lines[8]).toBe('Direct'); + expect(lines[9]).toBe('0.000000 0.000000 0.000000 T T F'); + expect(lines[10]).toBe('0.500000 0.500000 0.500000 T T T'); + }); + + it('should export CIF cell parameters and atom sites', async () => { + const exporter = new StructureExporter(); + const structure: StructureData = { + atoms: [ + { element: 'Na', x: 0, y: 0, z: 0 }, + { element: 'Cl', x: 2.5, y: 2.5, z: 2.5 }, + ], + cell: { + a: [5, 0, 0], + b: [0, 5, 0], + c: [0, 0, 5], + pbc: [true, true, true], + coordinateMode: 'cartesian', + }, + }; + + const result = await exporter.exportStructure(structure, { + format: 'cif', + outputPath: '/tmp/nacl.cif', + }); + + expect(result.success).toBe(true); + expect(result.content).toContain('_cell_length_a 5.000000'); + expect(result.content).toContain('_cell_angle_gamma 90.000000'); + expect(result.content).toContain('Na1 Na 0.000000 0.000000 0.000000'); + expect(result.content).toContain('Cl2 Cl 2.500000 2.500000 2.500000'); + }); + + it('should convert fractional coordinates to Cartesian atom sites in CIF', async () => { + const exporter = new StructureExporter(); + const structure: StructureData = { + atoms: [{ element: 'Si', x: 0.25, y: 0.25, z: 0.25 }], + cell: { + a: [2.715, 2.715, 0], + b: [0, 2.715, 2.715], + c: [2.715, 0, 2.715], + pbc: [true, true, true], + coordinateMode: 'fractional', + }, + }; + + const result = await exporter.exportStructure(structure, { + format: 'cif', + outputPath: '/tmp/si.cif', + }); + + expect(result.success).toBe(true); + expect(result.content).toContain('Si1 Si 1.357500 1.357500 1.357500'); + }); + + it('should reject POSCAR and CIF exports without cell data', async () => { + const exporter = new StructureExporter(); + const structure: StructureData = { + atoms: [{ element: 'H', x: 0, y: 0, z: 0 }], + }; + + const poscar = await exporter.exportStructure(structure, { + format: 'vasp', + outputPath: '/tmp/POSCAR', + }); + const cif = await exporter.exportStructure(structure, { + format: 'cif', + outputPath: '/tmp/water.cif', + }); + + expect(poscar.success).toBe(false); + expect(poscar.error).toContain('requires unit-cell vectors'); + expect(cif.success).toBe(false); + expect(cif.error).toContain('requires unit-cell vectors'); + }); + + it('should report unsupported native export formats clearly', async () => { + const exporter = new StructureExporter(); + const structure: StructureData = { + atoms: [{ element: 'H', x: 0, y: 0, z: 0 }], + }; + + const result = await exporter.exportStructure(structure, { + format: 'cp2k', + outputPath: '/tmp/structure.inp', + }); + + expect(result.success).toBe(false); + expect(result.error).toContain('requires the ASE backend'); + expect(vscode.workspace.fs.writeFile).not.toHaveBeenCalled(); + }); + + it('should infer native writable formats from source filenames', () => { + expect(StructureExporter.inferNativeFormatFromPath('/tmp/water.xyz')).toBe('xyz'); + expect(StructureExporter.inferNativeFormatFromPath('/tmp/water.extxyz')).toBe('extxyz'); + expect(StructureExporter.inferNativeFormatFromPath('/tmp/water.pdb')).toBe('pdb'); + expect(StructureExporter.inferNativeFormatFromPath('/tmp/water.cif')).toBe('cif'); + expect(StructureExporter.inferNativeFormatFromPath('/tmp/POSCAR')).toBe('vasp'); + expect(StructureExporter.inferNativeFormatFromPath('C:\\calc\\CONTCAR')).toBe('vasp'); + expect(StructureExporter.inferNativeFormatFromPath('/tmp/input.inp')).toBeUndefined(); + }); + + it('should overwrite inferred native source formats without prompting', async () => { + const exporter = new StructureExporter(); + const result = await exporter.overwriteStructureFile( + { atoms: [{ element: 'Ne', x: 1, y: 2, z: 3 }] }, + '/tmp/neon.xyz' + ); + + expect(result.success).toBe(true); + expect(result.outputPath).toBe('/tmp/neon.xyz'); + expect(result.content).toContain('Ne 1.000000 2.000000 3.000000'); + expect(vscode.window.showSaveDialog).not.toHaveBeenCalled(); + expect(vscode.workspace.fs.writeFile).toHaveBeenCalledWith( + expect.objectContaining({ fsPath: '/tmp/neon.xyz' }), + expect.any(Buffer) + ); + }); + + it('should reject source overwrite when the source format is not natively writable', async () => { + const exporter = new StructureExporter(); + const result = await exporter.overwriteStructureFile( + { atoms: [{ element: 'H', x: 0, y: 0, z: 0 }] }, + '/tmp/input.inp' + ); + expect(result.success).toBe(false); - expect(result.error).toBe('Not implemented yet'); + expect(result.error).toContain('Cannot infer'); + expect(vscode.workspace.fs.writeFile).not.toHaveBeenCalled(); }); }); @@ -83,5 +452,9 @@ describe('StructureExporter', () => { const formats = StructureExporter.getSupportedFormats(); expect(Array.isArray(formats)).toBe(true); }); + + it('should expose only directly implemented native export formats for command pickers', () => { + expect(StructureExporter.getNativeFormats()).toEqual(['xyz', 'extxyz', 'pdb', 'vasp', 'cif']); + }); }); }); diff --git a/tests/unit/visualizers/MoleculeViewerPanel.test.ts b/tests/unit/visualizers/MoleculeViewerPanel.test.ts index b6ae348..046278f 100644 --- a/tests/unit/visualizers/MoleculeViewerPanel.test.ts +++ b/tests/unit/visualizers/MoleculeViewerPanel.test.ts @@ -125,8 +125,8 @@ describe('MoleculeViewerPanel', () => { MoleculeViewerPanel.createOrShow(mockExtensionUri, 'new-xyz', 'new.xyz'); expect(createSpy).not.toHaveBeenCalled(); - // Note: reveal is called on the internal panel reference - // We verify by checking that createWebviewPanel wasn't called again + const panel = (MoleculeViewerPanel as any).currentPanel; + expect(panel.serialize()).toEqual({ filename: 'new.xyz', xyz: 'new-xyz' }); }); }); @@ -253,13 +253,13 @@ describe('MoleculeViewerPanel', () => { }); describe('serialize', () => { - it('returns state with filename', () => { + it('returns state with filename and XYZ content', () => { MoleculeViewerPanel.createOrShow(mockExtensionUri, 'xyz-content', 'test.xyz'); const panel = (MoleculeViewerPanel as any).currentPanel; const state = panel.serialize(); - expect(state).toEqual({ filename: 'test.xyz' }); + expect(state).toEqual({ filename: 'test.xyz', xyz: 'xyz-content' }); }); }); diff --git a/tests/unit/visualizers/MoleculeViewerWebview.test.ts b/tests/unit/visualizers/MoleculeViewerWebview.test.ts index 93463b0..ed74355 100644 --- a/tests/unit/visualizers/MoleculeViewerWebview.test.ts +++ b/tests/unit/visualizers/MoleculeViewerWebview.test.ts @@ -19,7 +19,7 @@ describe('MoleculeViewerWebview', () => { expect(html).toContain('ngl'); expect(html).toContain(''); - expect(html).toContain('node_modules/ngl/dist/ngl.js'); + expect(html).toContain('media/vendor/ngl/ngl.js'); expect(html).not.toContain('https://unpkg.com'); expect(html).not.toContain('https://cdn.jsdelivr.net'); }); @@ -66,7 +66,7 @@ describe('MoleculeViewerWebview', () => { expect(options).toHaveProperty('enableScripts', true); expect(options.localResourceRoots).toHaveLength(1); - expect(options.localResourceRoots?.[0].toString()).toContain('node_modules/ngl/dist'); + expect(options.localResourceRoots?.[0].toString()).toContain('media/vendor/ngl'); }); }); diff --git a/tests/unit/visualizers/OpenQCViewerPanel.test.ts b/tests/unit/visualizers/OpenQCViewerPanel.test.ts index ac76f4f..539db13 100644 --- a/tests/unit/visualizers/OpenQCViewerPanel.test.ts +++ b/tests/unit/visualizers/OpenQCViewerPanel.test.ts @@ -11,14 +11,19 @@ import { createOpenQCStructure } from '../../../src/structures/converters'; // Mock vscode jest.mock('vscode', () => { const messages: any[] = []; + let messageHandler: ((message: any) => void) | undefined; const panel = { + title: '', webview: { html: '', postMessage: jest.fn((msg: any) => { messages.push(msg); return true; }), - onDidReceiveMessage: jest.fn(), + onDidReceiveMessage: jest.fn((handler: (message: any) => void) => { + messageHandler = handler; + return { dispose: jest.fn() }; + }), asWebviewUri: jest.fn((uri: any) => uri), cspSource: 'https://test-host', }, @@ -39,10 +44,19 @@ jest.mock('vscode', () => { appendLine: jest.fn(), dispose: jest.fn(), })), + showWarningMessage: jest.fn(), showErrorMessage: jest.fn(), showInformationMessage: jest.fn(), showSaveDialog: jest.fn(), }, + workspace: { + fs: { + writeFile: jest.fn(), + }, + }, + commands: { + executeCommand: jest.fn(), + }, ViewColumn: { One: 1, Two: 2 }, Uri: { joinPath: jest.fn((...parts: string[]) => ({ fsPath: parts.join('/') })), @@ -51,6 +65,7 @@ jest.mock('vscode', () => { Disposable: { from: jest.fn() }, _messages: messages, _panel: panel, + _getMessageHandler: () => messageHandler, }; }); @@ -109,7 +124,33 @@ describe('OpenQCViewerPanel', () => { expect(vscode._panel.reveal).toHaveBeenCalled(); }); - it('sends both loadStructure and initialize messages', () => { + it('updates the source filename when reusing an existing viewer panel', async () => { + OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, WATER_STRUCTURE, '/tmp/a.xyz'); + OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, WATER_STRUCTURE, '/tmp/b.xyz'); + vscode.window.showWarningMessage.mockResolvedValue('Save'); + + vscode._getMessageHandler()({ + type: 'structureUpdated', + structure: JSON.stringify({ + ...WATER_STRUCTURE, + atoms: [{ ...WATER_STRUCTURE.atoms[0], x: 7 }], + }), + }); + + const saved = await OpenQCViewerPanel.saveCurrentStructureToSource(); + + expect(saved).toBe(true); + expect(vscode.workspace.fs.writeFile).toHaveBeenCalledWith( + expect.objectContaining({ fsPath: '/tmp/b.xyz' }), + expect.any(Buffer) + ); + expect(vscode.workspace.fs.writeFile).not.toHaveBeenCalledWith( + expect.objectContaining({ fsPath: '/tmp/a.xyz' }), + expect.any(Buffer) + ); + }); + + it('sends only the canonical DTO load message to the production viewer', () => { OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, WATER_STRUCTURE, 'water.xyz'); const messages = vscode._messages; @@ -121,20 +162,203 @@ describe('OpenQCViewerPanel', () => { expect(loadMsg.filename).toBe('water.xyz'); expect(loadMsg.validation).toBeDefined(); - expect(initMsg).toBeDefined(); - expect(initMsg.structure).toBeDefined(); - expect(initMsg.structure.xyz).toBeDefined(); + expect(initMsg).toBeUndefined(); }); it('sends periodic structure with cell data', () => { OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, SILICON_STRUCTURE, 'POSCAR'); const loadMsg = vscode._messages.find((m: any) => m.type === 'loadStructure'); - const initMsg = vscode._messages.find((m: any) => m.type === 'initialize'); const parsedStructure = JSON.parse(loadMsg.structure); expect(parsedStructure.cell).toBeDefined(); expect(parsedStructure.cell.a).toEqual([5.43, 0.0, 0.0]); - expect(initMsg.structure.xyz).toContain('Si 1.357500 1.357500 1.357500'); + expect(vscode._messages.find((m: any) => m.type === 'initialize')).toBeUndefined(); + }); + + it('updates current export data from webview-side structure edits', () => { + OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, WATER_STRUCTURE, 'water.xyz'); + const edited = { + ...WATER_STRUCTURE, + atoms: [ + WATER_STRUCTURE.atoms[0], + { ...WATER_STRUCTURE.atoms[1], x: 2.5 }, + WATER_STRUCTURE.atoms[2], + ], + bonds: [{ from: 0, to: 1, order: 2 }], + }; + + vscode._getMessageHandler()({ + type: 'structureUpdated', + structure: JSON.stringify(edited), + }); + + expect(OpenQCViewerPanel.currentPanel?.isDirty()).toBe(true); + expect(vscode._panel.title).toBe('OpenQC: • water.xyz'); + expect(OpenQCViewerPanel.getCurrentStructureData()?.atoms[1].x).toBe(2.5); + expect(OpenQCViewerPanel.getCurrentStructureData()?.bonds).toEqual([ + { from: 0, to: 1, order: 2 }, + ]); + }); + + it('updates structure and invokes export picker on webview export request', () => { + OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, WATER_STRUCTURE, 'water.xyz'); + + vscode._getMessageHandler()({ + type: 'exportEditedStructure', + structure: WATER_STRUCTURE, + }); + + expect(vscode.commands.executeCommand).toHaveBeenCalledWith( + 'openqc.exportStructureWithPicker' + ); + }); + + it('does not mark the panel dirty when exporting a clean webview payload', () => { + OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, WATER_STRUCTURE, 'water.xyz'); + + vscode._getMessageHandler()({ + type: 'exportEditedStructure', + structure: JSON.stringify(WATER_STRUCTURE), + dirty: false, + }); + + expect(OpenQCViewerPanel.currentPanel?.isDirty()).toBe(false); + expect(vscode._panel.title).toBe('OpenQC: water.xyz'); + expect(vscode.commands.executeCommand).toHaveBeenCalledWith( + 'openqc.exportStructureWithPicker' + ); + }); + + it('rejects invalid edited structures without replacing current structure', () => { + OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, WATER_STRUCTURE, 'water.xyz'); + + vscode._getMessageHandler()({ + type: 'structureEdited', + structure: { ...WATER_STRUCTURE, atoms: [] }, + }); + + expect(vscode.window.showErrorMessage).toHaveBeenCalledWith( + expect.stringContaining('edited structure is invalid') + ); + expect(OpenQCViewerPanel.getCurrentStructureData()?.atoms).toHaveLength(3); + }); + + it('rejects edited structures with invalid bonds without replacing current structure', () => { + OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, WATER_STRUCTURE, 'water.xyz'); + + vscode._getMessageHandler()({ + type: 'structureUpdated', + structure: JSON.stringify({ + ...WATER_STRUCTURE, + bonds: [{ from: 0, to: 99, order: 1 }], + }), + }); + + expect(vscode.window.showErrorMessage).toHaveBeenCalledWith( + expect.stringContaining('edited structure is invalid') + ); + expect(OpenQCViewerPanel.getCurrentStructureData()?.bonds).toBeUndefined(); + }); + + it('does not invoke export picker when edited export payload is invalid', () => { + OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, WATER_STRUCTURE, 'water.xyz'); + + vscode._getMessageHandler()({ + type: 'exportEditedStructure', + structure: { ...WATER_STRUCTURE, atoms: [] }, + }); + + expect(vscode.commands.executeCommand).not.toHaveBeenCalled(); + }); + + it('saves edited structures back to native writable source files after confirmation', async () => { + OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, WATER_STRUCTURE, '/tmp/water.xyz'); + const edited = { + ...WATER_STRUCTURE, + atoms: [ + WATER_STRUCTURE.atoms[0], + { ...WATER_STRUCTURE.atoms[1], x: 2.5 }, + WATER_STRUCTURE.atoms[2], + ], + }; + vscode.window.showWarningMessage.mockResolvedValue('Save'); + + vscode._getMessageHandler()({ + type: 'structureUpdated', + structure: JSON.stringify(edited), + }); + + const saved = await OpenQCViewerPanel.saveCurrentStructureToSource(); + + expect(saved).toBe(true); + expect(vscode.workspace.fs.writeFile).toHaveBeenCalledWith( + expect.objectContaining({ fsPath: '/tmp/water.xyz' }), + expect.any(Buffer) + ); + const savedBuffer = vscode.workspace.fs.writeFile.mock.calls[0][1] as Buffer; + expect(savedBuffer.toString()).toContain('H 2.500000 0.757200 -0.469200'); + expect(vscode._panel.webview.postMessage).toHaveBeenCalledWith( + expect.objectContaining({ type: 'markStructureSaved' }) + ); + expect(OpenQCViewerPanel.currentPanel?.isDirty()).toBe(false); + expect(vscode._panel.title).toBe('OpenQC: /tmp/water.xyz'); + }); + + it('writes edited bonds back to PDB CONECT records for native PDB sources', async () => { + OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, WATER_STRUCTURE, '/tmp/water.pdb'); + vscode.window.showWarningMessage.mockResolvedValue('Save'); + + vscode._getMessageHandler()({ + type: 'structureUpdated', + structure: JSON.stringify({ + ...WATER_STRUCTURE, + bonds: [{ from: 0, to: 1, order: 1 }], + }), + }); + + const saved = await OpenQCViewerPanel.saveCurrentStructureToSource(); + + expect(saved).toBe(true); + const savedBuffer = vscode.workspace.fs.writeFile.mock.calls[0][1] as Buffer; + expect(savedBuffer.toString()).toContain('CONECT 1 2'); + }); + + it('rejects source writeback for non-native source formats', async () => { + OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, WATER_STRUCTURE, '/tmp/cp2k.inp'); + + vscode._getMessageHandler()({ + type: 'structureUpdated', + structure: JSON.stringify({ + ...WATER_STRUCTURE, + atoms: [{ ...WATER_STRUCTURE.atoms[0], x: 1 }], + }), + }); + + const saved = await OpenQCViewerPanel.saveCurrentStructureToSource(); + + expect(saved).toBe(false); + expect(vscode.window.showErrorMessage).toHaveBeenCalledWith( + expect.stringContaining('only write edited structures back') + ); + expect(vscode.workspace.fs.writeFile).not.toHaveBeenCalled(); + }); + + it('handles webview save-source requests using the latest edited payload', async () => { + OpenQCViewerPanel.createOrShow({ fsPath: '/ext' } as any, WATER_STRUCTURE, '/tmp/water.xyz'); + vscode.window.showWarningMessage.mockResolvedValue('Save'); + + vscode._getMessageHandler()({ + type: 'saveEditedStructureToSource', + structure: JSON.stringify({ + ...WATER_STRUCTURE, + atoms: [{ ...WATER_STRUCTURE.atoms[0], x: 4 }], + }), + }); + + await new Promise(resolve => setImmediate(resolve)); + + const savedBuffer = vscode.workspace.fs.writeFile.mock.calls[0][1] as Buffer; + expect(savedBuffer.toString()).toContain('O 4.000000 0.000000 0.117300'); }); }); diff --git a/tests/unit/visualizers/ViewerStructurePipeline.test.ts b/tests/unit/visualizers/ViewerStructurePipeline.test.ts new file mode 100644 index 0000000..70ca91b --- /dev/null +++ b/tests/unit/visualizers/ViewerStructurePipeline.test.ts @@ -0,0 +1,80 @@ +import { ViewerStructurePipeline } from '../../../src/visualizers/ViewerStructurePipeline'; +import type { WorkerManager } from '../../../src/performance/workerManager'; + +jest.mock('vscode', () => require('../../mocks/vscode')); + +function createContext(): any { + return { + globalStorageUri: { fsPath: '/tmp/openqc-viewer-pipeline-tests' }, + subscriptions: [], + }; +} + +function createDocument(fileName: string, content: string, version = 1): any { + return { + fileName, + version, + lineCount: content.split(/\r?\n/).length, + uri: { + fsPath: fileName, + toString: () => `file://${fileName}`, + }, + getText: () => content, + }; +} + +describe('ViewerStructurePipeline', () => { + it('routes POSCAR parsing through the real worker and then serves the viewer cache', async () => { + const submitTask = jest.fn().mockResolvedValue({ id: 'viewer-worker-task' }); + const waitForTask = jest.fn().mockResolvedValue({ + status: 'completed', + result: { + chemical_symbols: ['Si'], + positions: [[0, 0, 0]], + pbc: [true, true, true], + cell: [ + [5, 0, 0], + [0, 5, 0], + [0, 0, 5], + ], + }, + }); + const worker = { submitTask, waitForTask } as unknown as WorkerManager; + const pipeline = new ViewerStructurePipeline(createContext(), worker); + const document = createDocument('/tmp/openqc-viewer-worker/POSCAR', 'fixture'); + + const first = await pipeline.parse(document, 'VASP'); + const second = await pipeline.parse(document, 'VASP'); + + expect(first.source).toBe('worker'); + expect(first.structure.atoms).toEqual([{ element: 'Si', x: 0, y: 0, z: 0 }]); + expect(first.structure.metadata?.source?.parser).toBe('compute-worker-native'); + expect(second.source).toBe('cache'); + expect(submitTask).toHaveBeenCalledTimes(1); + expect(waitForTask).toHaveBeenCalledWith('viewer-worker-task', 10_000); + }); + + it('uses the incremental parser for supported non-worker documents', async () => { + const worker = { + submitTask: jest.fn(), + waitForTask: jest.fn(), + } as unknown as WorkerManager; + const pipeline = new ViewerStructurePipeline(createContext(), worker); + const prefix = Array.from({ length: 120 }, () => '# padding').join('\n'); + const firstContent = `${prefix}\n&COORD\nH 0 0 0\n&END COORD`; + const secondContent = `${prefix}\n&COORD\nH 1 0 0\n&END COORD`; + + const first = await pipeline.parse(createDocument('/tmp/viewer.cp2k', firstContent, 1), 'CP2K'); + const second = await pipeline.parse( + createDocument('/tmp/viewer.cp2k', secondContent, 2), + 'CP2K' + ); + + expect(first.source).toBe('incremental'); + expect(first.incremental).toBe(false); + expect(second.source).toBe('incremental'); + expect(second.incremental).toBe(true); + expect(second.structure.atoms[0].x).toBe(1); + expect(worker.submitTask).not.toHaveBeenCalled(); + }); +}); diff --git a/tests/unit/webviews/openqcViewerWebview.test.ts b/tests/unit/webviews/openqcViewerWebview.test.ts index ceae7c7..92b063f 100644 --- a/tests/unit/webviews/openqcViewerWebview.test.ts +++ b/tests/unit/webviews/openqcViewerWebview.test.ts @@ -18,6 +18,30 @@ jest.mock('vscode', () => ({ }, })); +function loadViewerTestApi(): any { + const script = fs.readFileSync( + path.resolve(__dirname, '../../../media/openqc-viewer.js'), + 'utf8' + ); + const context: any = { + window: { addEventListener: jest.fn() }, + document: { + readyState: 'loading', + addEventListener: jest.fn(), + getElementById: jest.fn(), + }, + acquireVsCodeApi: () => ({ postMessage: jest.fn() }), + setInterval, + clearInterval, + setTimeout, + JSON, + parseInt, + }; + + vm.runInNewContext(script, context); + return context.window.__openqcViewerTest; +} + describe('OpenQCViewerWebview', () => { const mockWebview = { asWebviewUri: jest.fn((uri: any) => `vscode-webview://${uri.path}`), @@ -81,6 +105,40 @@ describe('OpenQCViewerWebview', () => { expect(html).toContain('spacefill'); }); + it('includes selection, measurement, and export controls', () => { + const html = OpenQCViewerWebview.generateHTML(mockWebview as any, mockExtensionUri as any); + + expect(html).toContain('id="btn-labels"'); + expect(html).toContain('id="btn-measure"'); + expect(html).toContain('id="btn-export"'); + }); + + it('includes bounded atom editing controls', () => { + const html = OpenQCViewerWebview.generateHTML(mockWebview as any, mockExtensionUri as any); + + expect(html).toContain('id="editing-controls"'); + expect(html).toContain('id="edit-element"'); + expect(html).toContain('id="btn-add-atom"'); + expect(html).toContain('id="btn-delete-atom"'); + expect(html).toContain('id="btn-move-atom"'); + expect(html).toContain('id="bond-from"'); + expect(html).toContain('id="bond-to"'); + expect(html).toContain('id="bond-order"'); + expect(html).toContain('id="btn-add-bond"'); + expect(html).toContain('id="btn-delete-bond"'); + expect(html).toContain('id="bond-count"'); + expect(html).toContain('id="constraint-x"'); + expect(html).toContain('id="constraint-y"'); + expect(html).toContain('id="constraint-z"'); + expect(html).toContain('id="btn-set-constraints"'); + expect(html).toContain('id="btn-undo-edit"'); + expect(html).toContain('id="btn-redo-edit"'); + expect(html).toContain('id="btn-save-source"'); + expect(html).toContain('id="btn-export-structure"'); + expect(html).toContain('id="dirty-indicator"'); + expect(html).toContain('>Clean'); + }); + it('includes periodic controls', () => { const html = OpenQCViewerWebview.generateHTML(mockWebview as any, mockExtensionUri as any); @@ -107,6 +165,12 @@ describe('OpenQCViewerWebview', () => { expect(html).toContain('id="status-bar"'); expect(html).toContain('id="atom-count"'); }); + + it('loads 3Dmol from vendored media assets', () => { + const html = OpenQCViewerWebview.generateHTML(mockWebview as any, mockExtensionUri as any); + + expect(html).toContain('media/vendor/3dmol/3Dmol-min.js'); + }); }); describe('getWebviewOptions', () => { @@ -115,36 +179,54 @@ describe('OpenQCViewerWebview', () => { expect(options.enableScripts).toBe(true); }); - it('sets local resource roots for media and 3dmol', () => { + it('sets local resource roots to media assets only', () => { const options = OpenQCViewerWebview.getWebviewOptions(mockExtensionUri as any); - expect(options.localResourceRoots).toHaveLength(2); + expect(options.localResourceRoots).toHaveLength(1); + expect((options.localResourceRoots?.[0] as any).fsPath).toContain('media'); }); }); describe('bundled viewer script', () => { - it('converts fractional periodic coordinates to Cartesian XYZ before 3Dmol rendering', () => { + it('keeps the 3Dmol canvas constrained below toolbar controls', () => { + const css = fs.readFileSync( + path.resolve(__dirname, '../../../media/openqc-viewer.css'), + 'utf8' + ); + + expect(css).toMatch(/#viewer-canvas\s*{[^}]*position:\s*relative;/s); + expect(css).toMatch(/#viewer-canvas\s*{[^}]*overflow:\s*hidden;/s); + }); + + it('keeps deterministic edit helpers uniquely declared', () => { const script = fs.readFileSync( path.resolve(__dirname, '../../../media/openqc-viewer.js'), 'utf8' ); - const context: any = { - window: { addEventListener: jest.fn() }, - document: { - readyState: 'loading', - addEventListener: jest.fn(), - getElementById: jest.fn(), - }, - acquireVsCodeApi: () => ({ postMessage: jest.fn() }), - setInterval, - clearInterval, - setTimeout, - JSON, - parseInt, - }; - vm.runInNewContext(script, context); + expect(script.match(/function normalizeSelectionIndex\(/g)).toHaveLength(1); + expect(script.match(/function applyEditingAction\(/g)).toHaveLength(1); + expect(script.match(/function calculateDihedral\(/g)).toHaveLength(1); + expect(script.match(/function createEditedStructureExportMessage\(/g)).toHaveLength(1); + expect(script.match(/function createEditedStructureSaveMessage\(/g)).toHaveLength(1); + expect(script.match(/function createStructureUpdateMessage\(/g)).toHaveLength(1); + expect(script.match(/function normalizeStructureBond\(/g)).toHaveLength(1); + expect(script.match(/function normalizeBondPair\(/g)).toHaveLength(1); + expect(script.match(/function normalizeSelectiveDynamics\(/g)).toHaveLength(1); + expect(script.match(/function renderExplicitBonds\(/g)).toHaveLength(1); + expect(script.match(/function replicateBondsForSupercell\(/g)).toHaveLength(1); + expect(script.match(/function buildSupercellStructure\(/g)).toHaveLength(1); + expect(script).toContain("type: 'structureUpdated'"); + expect(script).toContain("type: 'saveEditedStructureToSource'"); + expect(script).toContain("case 'markStructureSaved'"); + expect(script).toContain("getElementById('btn-save-source')"); + expect(script).toContain("getElementById('btn-add-bond')"); + expect(script).toContain("getElementById('btn-set-constraints')"); + }); + + it('converts fractional periodic coordinates to Cartesian XYZ before 3Dmol rendering', () => { + const api = loadViewerTestApi(); - const xyz = context.window.__openqcViewerTest.structureToXYZ({ + const xyz = api.structureToXYZ({ name: 'Si', kind: 'periodic', atoms: [ @@ -162,5 +244,407 @@ describe('OpenQCViewerWebview', () => { expect(xyz).toContain('Si 1.357500 1.357500 1.357500'); }); + + it('exposes deterministic distance, angle, and dihedral helpers for measurement mode', () => { + const api = loadViewerTestApi(); + + expect(api.calculateDistance({ x: 0, y: 0, z: 0 }, { x: 0, y: 3, z: 4 })).toBe(5); + expect( + api.calculateAngle({ x: 1, y: 0, z: 0 }, { x: 0, y: 0, z: 0 }, { x: 0, y: 1, z: 0 }) + ).toBeCloseTo(90); + expect( + api.calculateDihedral( + { x: 1, y: 0, z: 0 }, + { x: 0, y: 0, z: 0 }, + { x: 0, y: 1, z: 0 }, + { x: 0, y: 1, z: 1 } + ) + ).toBeCloseTo(90); + expect(typeof api.handleAtomClick).toBe('function'); + }); + + it('applies add, move, delete, undo, and redo as deterministic edit transitions', () => { + const api = loadViewerTestApi(); + let state = api.createEditorState({ + name: 'H', + atoms: [{ element: 'H', x: 0, y: 0, z: 0 }], + }); + + expect(state.dirty).toBe(false); + + state = api.applyEditingAction(state, { + type: 'addAtom', + atom: { element: 'cl', x: 1, y: 2, z: 3 }, + }); + expect(state.structure.atoms).toHaveLength(2); + expect(state.structure.atoms[1]).toMatchObject({ element: 'Cl', x: 1, y: 2, z: 3 }); + expect(state.selectedIndex).toBe(1); + expect(state.dirty).toBe(true); + expect(state.undoStack).toHaveLength(1); + + state = api.applyEditingAction(state, { type: 'moveSelectedAtom', dx: 0.5, dy: -1, dz: 2 }); + expect(state.structure.atoms[1]).toMatchObject({ element: 'Cl', x: 1.5, y: 1, z: 5 }); + + state = api.applyEditingAction(state, { type: 'deleteSelectedAtom' }); + expect(state.structure.atoms).toHaveLength(1); + expect(state.selectedIndex).toBe(0); + + state = api.applyEditingAction(state, { type: 'undo' }); + expect(state.structure.atoms).toHaveLength(2); + expect(state.structure.atoms[1]).toMatchObject({ element: 'Cl', x: 1.5, y: 1, z: 5 }); + + state = api.applyEditingAction(state, { type: 'undo' }); + expect(state.structure.atoms[1]).toMatchObject({ element: 'Cl', x: 1, y: 2, z: 3 }); + + state = api.applyEditingAction(state, { type: 'redo' }); + expect(state.structure.atoms[1]).toMatchObject({ element: 'Cl', x: 1.5, y: 1, z: 5 }); + }); + + it('applies bond add, order update, delete, and atom-delete remapping deterministically', () => { + const api = loadViewerTestApi(); + let state = api.createEditorState({ + name: 'linear', + atoms: [ + { element: 'C', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1, y: 0, z: 0 }, + { element: 'H', x: 2, y: 0, z: 0 }, + ], + }); + + state = api.applyEditingAction(state, { + type: 'addOrUpdateBond', + from: 0, + to: 1, + order: 2, + }); + expect(state.structure.bonds).toEqual([{ from: 0, to: 1, order: 2 }]); + expect(state.dirty).toBe(true); + expect(state.undoStack).toHaveLength(1); + + state = api.applyEditingAction(state, { + type: 'addOrUpdateBond', + from: 1, + to: 0, + order: 3, + }); + expect(state.structure.bonds).toEqual([{ from: 0, to: 1, order: 3 }]); + + state = api.applyEditingAction(state, { type: 'deleteBond', from: 1, to: 0 }); + expect(state.structure.bonds).toEqual([]); + + state = api.applyEditingAction(state, { type: 'undo' }); + expect(state.structure.bonds).toEqual([{ from: 0, to: 1, order: 3 }]); + + state = api.createEditorState( + { + name: 'remap', + atoms: [ + { element: 'C', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1, y: 0, z: 0 }, + { element: 'H', x: 2, y: 0, z: 0 }, + ], + bonds: [ + { from: 0, to: 2, order: 2 }, + { from: 1, to: 2, order: 1 }, + ], + }, + 1 + ); + state = api.applyEditingAction(state, { type: 'deleteSelectedAtom' }); + expect(state.structure.atoms).toHaveLength(2); + expect(state.structure.bonds).toEqual([{ from: 0, to: 1, order: 2 }]); + }); + + it('applies selected-atom selective dynamics constraints with undo/redo', () => { + const api = loadViewerTestApi(); + let state = api.createEditorState( + { + name: 'slab', + atoms: [ + { element: 'Fe', x: 0, y: 0, z: 0, selectiveDynamics: [true, true, true] }, + { element: 'Fe', x: 0, y: 0, z: 1 }, + ], + }, + 1 + ); + + state = api.applyEditingAction(state, { + type: 'setSelectedAtomConstraints', + selectiveDynamics: [false, false, true], + }); + + expect(state.structure.atoms[0].selectiveDynamics).toEqual([true, true, true]); + expect(state.structure.atoms[1].selectiveDynamics).toEqual([false, false, true]); + expect(state.dirty).toBe(true); + + state = api.applyEditingAction(state, { type: 'undo' }); + expect(state.structure.atoms[1].selectiveDynamics).toBeUndefined(); + expect(state.dirty).toBe(false); + + state = api.applyEditingAction(state, { type: 'redo' }); + expect(state.structure.atoms[1].selectiveDynamics).toEqual([false, false, true]); + }); + + it('normalizes VASP-style selective dynamics flags without coercing invalid triples', () => { + const api = loadViewerTestApi(); + + expect(api.normalizeSelectiveDynamics([true, 'F', 't'])).toEqual([true, false, true]); + expect(api.normalizeSelectiveDynamics(['T', 'false', 1])).toBeNull(); + expect(api.normalizeSelectiveDynamics([true, false])).toBeNull(); + }); + + it('rejects invalid bond orders and replicates valid bonds for supercells', () => { + const api = loadViewerTestApi(); + const structure = { + atoms: [ + { element: 'C', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1, y: 0, z: 0 }, + ], + }; + + expect(api.normalizeStructureBond({ from: 0, to: 1, order: 0 }, structure)).toBeNull(); + expect(api.normalizeStructureBond({ from: 0, to: 1, order: 4 }, structure)).toBeNull(); + expect(api.normalizeStructureBond({ from: 0, to: 1, order: 1.5 }, structure)).toBeNull(); + expect(api.normalizeStructureBond({ from: 0, to: 1, order: '2' }, structure)).toBeNull(); + + expect(api.replicateBondsForSupercell([{ from: 0, to: 1, order: 2 }], 2, 3)).toEqual([ + { from: 0, to: 1, order: 2 }, + { from: 2, to: 3, order: 2 }, + { from: 4, to: 5, order: 2 }, + ]); + }); + + it('builds supercells without dropping atom metadata or edited bonds', () => { + const api = loadViewerTestApi(); + const supercell = api.buildSupercellStructure( + { + name: 'constrained slab', + kind: 'periodic', + atoms: [ + { + element: 'Fe', + x: 0, + y: 0, + z: 0, + selectiveDynamics: [false, false, true], + tag: 'bottom', + }, + { + element: 'O', + x: 0.5, + y: 0.5, + z: 0.5, + selectiveDynamics: [true, true, true], + charge: -1, + }, + ], + bonds: [{ from: 0, to: 1, order: 2 }], + cell: { + a: [2, 0, 0], + b: [0, 2, 0], + c: [0, 0, 4], + pbc: [true, true, true], + coordinateMode: 'fractional', + }, + }, + 2, + 1, + 1 + ); + + expect(supercell.atoms).toHaveLength(4); + expect(supercell.atoms[0]).toMatchObject({ + element: 'Fe', + x: 0, + y: 0, + z: 0, + selectiveDynamics: [false, false, true], + tag: 'bottom', + }); + expect(supercell.atoms[1]).toMatchObject({ + element: 'O', + x: 1, + y: 1, + z: 2, + selectiveDynamics: [true, true, true], + charge: -1, + }); + expect(supercell.atoms[2]).toMatchObject({ + element: 'Fe', + x: 2, + y: 0, + z: 0, + selectiveDynamics: [false, false, true], + tag: 'bottom', + }); + expect(supercell.cell).toMatchObject({ + a: [4, 0, 0], + b: [0, 2, 0], + c: [0, 0, 4], + pbc: [true, true, true], + coordinateMode: 'cartesian', + }); + expect(supercell.bonds).toEqual([ + { from: 0, to: 1, order: 2 }, + { from: 2, to: 3, order: 2 }, + ]); + }); + + it('clears dirty state when undo returns to the loaded baseline', () => { + const api = loadViewerTestApi(); + let state = api.createEditorState({ + atoms: [{ element: 'H', x: 0, y: 0, z: 0 }], + }); + + state = api.applyEditingAction(state, { + type: 'addAtom', + atom: { element: 'O', x: 0, y: 0, z: 1 }, + }); + expect(state.dirty).toBe(true); + + state = api.applyEditingAction(state, { type: 'undo' }); + expect(state.structure.atoms).toHaveLength(1); + expect(state.dirty).toBe(false); + expect(state.redoStack).toHaveLength(1); + }); + + it('creates an edited-structure export message without extension-side dependencies', () => { + const api = loadViewerTestApi(); + const message = api.createEditedStructureExportMessage( + { + name: 'Edited', + atoms: [ + { element: 'h', x: 0, y: 0, z: 0 }, + { element: 'o', x: 1, y: 0, z: 0 }, + ], + bonds: [{ from: 0, to: 1, order: 2 }], + }, + true + ); + + expect(message).toMatchObject({ + type: 'exportEditedStructure', + dirty: true, + atomCount: 2, + bondCount: 1, + }); + expect(JSON.parse(message.structure)).toMatchObject({ + name: 'Edited', + atoms: [ + { element: 'H', x: 0, y: 0, z: 0 }, + { element: 'O', x: 1, y: 0, z: 0 }, + ], + bonds: [{ from: 0, to: 1, order: 2 }], + }); + }); + + it('creates an edited-structure save message without extension-side dependencies', () => { + const api = loadViewerTestApi(); + const message = api.createEditedStructureSaveMessage( + { + name: 'Edited', + atoms: [ + { element: 'cl', x: 1, y: 2, z: 3 }, + { element: 'na', x: 2, y: 2, z: 3 }, + ], + bonds: [{ from: 1, to: 0, order: 3 }], + }, + true + ); + + expect(message).toMatchObject({ + type: 'saveEditedStructureToSource', + dirty: true, + atomCount: 2, + bondCount: 1, + }); + expect(JSON.parse(message.structure)).toMatchObject({ + name: 'Edited', + atoms: [ + { element: 'Cl', x: 1, y: 2, z: 3 }, + { element: 'Na', x: 2, y: 2, z: 3 }, + ], + bonds: [{ from: 0, to: 1, order: 3 }], + }); + }); + + it('includes selected atom constraints in edited-structure save messages', () => { + const api = loadViewerTestApi(); + let state = api.createEditorState( + { + name: 'surface', + atoms: [{ element: 'Pt', x: 0, y: 0, z: 0 }], + }, + 0 + ); + + state = api.applyEditingAction(state, { + type: 'setSelectedAtomConstraints', + selectiveDynamics: [false, false, true], + }); + const message = api.createEditedStructureSaveMessage(state.structure, state.dirty); + + expect(message).toMatchObject({ + type: 'saveEditedStructureToSource', + dirty: true, + atomCount: 1, + }); + expect(JSON.parse(message.structure).atoms[0].selectiveDynamics).toEqual([ + false, + false, + true, + ]); + }); + + it('keeps the complete editing surface enabled through exactly 10,000 atoms', () => { + const api = loadViewerTestApi(); + const structure = createDeterministicStructure(10_000); + const plan = api.createViewerLoadPlan(structure); + + expect(api.FULL_EDIT_ATOM_LIMIT).toBe(10_000); + expect(plan.mode).toBe('editable'); + expect(plan.renderedAtomCount).toBe(10_000); + expect(plan.renderStructure).toBe(structure); + expect(plan.status).toContain('full editing enabled'); + }); + + it('creates a deterministic bounded read-only LOD for a 100,000-atom fixture', () => { + const api = loadViewerTestApi(); + const structure = createDeterministicStructure(100_000); + const startedAt = Date.now(); + const first = api.createViewerLoadPlan(structure); + const second = api.createViewerLoadPlan(structure); + const elapsedMs = Date.now() - startedAt; + + expect(first.mode).toBe('readonly-lod'); + expect(first.atomCount).toBe(100_000); + expect(first.renderedAtomCount).toBe(10_000); + expect(first.renderStructure.atoms).toHaveLength(10_000); + expect(first.renderStructure.bonds).toEqual([]); + expect(first.renderStructure.frames).toBeUndefined(); + expect(first.renderStructure.atoms[0]).toBe(structure.atoms[0]); + expect(first.renderStructure.atoms.at(-1)).toBe(structure.atoms.at(-1)); + expect(first.renderStructure.atoms.map((atom: any) => atom.x)).toEqual( + second.renderStructure.atoms.map((atom: any) => atom.x) + ); + expect(first.status).toContain('Read-only LOD'); + expect(elapsedMs).toBeLessThan(2_000); + }, 5_000); }); }); + +function createDeterministicStructure(atomCount: number): any { + return { + schemaVersion: 'openqc.structure.v1', + kind: 'molecule', + name: `${atomCount}-atom-fixture`, + atoms: Array.from({ length: atomCount }, (_, index) => ({ + element: index % 2 === 0 ? 'C' : 'H', + x: index, + y: index % 97, + z: index % 193, + })), + bonds: [{ from: 0, to: atomCount - 1, order: 1 }], + frames: [{ atoms: [] }], + }; +}