diff --git a/.gitignore b/.gitignore index d9d03d2..4933843 100644 --- a/.gitignore +++ b/.gitignore @@ -1,293 +1,297 @@ -# ============================================================================= -# UTO Manager — Flutter / Dart / VSCode / MkDocs .gitignore -# U.S. Army Unit Task Organization Enterprise System -# ============================================================================= - -# ----------------------------------------------------------------------------- -# Flutter / Dart -# ----------------------------------------------------------------------------- - -# Dart tool cache -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies - -# Flutter build outputs -build/ -*.apk -*.aab -*.ipa -*.app -*.exe -*.msix -*.msi - -# Dart generated files -*.g.dart -*.freezed.dart -*.gr.dart -*.mocks.dart - -# Drift / SQLite generated files -*.drift.dart -*.g.dart - -# Protobuf generated files -*.pb.dart -*.pbenum.dart -*.pbgrpc.dart -*.pbjson.dart - -# pubspec lock (keep for reproducible builds — comment out if desired) -# pubspec.lock - -# Flutter web build -web/flutter_service_worker.js -web/flutter.js -web/flutter_bootstrap.js -web/version.json -web/main.dart.js -web/main.dart.js.map - -# Flutter Windows build artifacts -windows/flutter/generated_plugin_registrant.cc -windows/flutter/generated_plugin_registrant.h -windows/flutter/generated_plugins.cmake -windows/flutter/ephemeral/ - -# Flutter Android build artifacts -android/.gradle/ -android/local.properties -android/key.properties -android/app/google-services.json -android/app/debug.keystore -android/app/release.keystore -android/app/upload-keystore.jks -android/captures/ -android/gradlew -android/gradlew.bat -android/gradle/ - -# Flutter iOS (future target) -ios/Flutter/App.framework -ios/Flutter/Flutter.framework -ios/Flutter/Flutter.podspec -ios/Flutter/Generated.xcconfig -ios/Flutter/ephemeral/ -ios/Flutter/app.flx -ios/Flutter/app.zip -ios/Flutter/flutter_assets/ -ios/ServiceDefinitions.json -ios/Runner/GeneratedPluginRegistrant.* -ios/Pods/ -ios/.symlinks/ -ios/Flutter/flutter_export_environment.sh - -# Dart analysis cache -.dart_tool/ -analysis_options.yaml.bak - -# Coverage reports -coverage/ -lcov.info -*.lcov - -# Dart pub cache (local) -.pub-cache/ -.pub/ - -# Flutter DevTools -.devtools - -# ----------------------------------------------------------------------------- -# Visual Studio Code -# ----------------------------------------------------------------------------- - -# VSCode workspace settings (keep .vscode/settings.json if team-shared) -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -!.vscode/*.code-snippets - -# VSCode local history -.history/ -*.vsix - -# VSCode test results -.vscode-test/ - -# ----------------------------------------------------------------------------- -# MkDocs / Python Documentation -# ----------------------------------------------------------------------------- - -# MkDocs build output -site/ - -# Python virtual environments -.venv/ -venv/ -env/ -ENV/ -.env/ - -# Python cache -__pycache__/ -*.py[cod] -*$py.class -*.pyo -*.pyd -.Python - -# Python package build artifacts -dist/ -*.egg-info/ -*.egg -MANIFEST - -# pip -pip-log.txt -pip-delete-this-directory.txt - -# MkDocs cache -.cache/ -.mkdocs_cache/ - -# Jupyter Notebooks (if used for documentation) -.ipynb_checkpoints/ - -# ----------------------------------------------------------------------------- -# Operating System -# ----------------------------------------------------------------------------- - -# Windows -Thumbs.db -Thumbs.db:encryptable -ehthumbs.db -ehthumbs_vista.db -Desktop.ini -$RECYCLE.BIN/ -*.lnk -*.stackdump - -# macOS -.DS_Store -.AppleDouble -.LSOverride -._* -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Linux -*~ -.fuse_hidden* -.directory -.Trash-* -.nfs* - -# ----------------------------------------------------------------------------- -# Security & Secrets -# ----------------------------------------------------------------------------- - -# Environment variable files -.env -.env.* -!.env.example -*.env - -# Key files and certificates -*.pem -*.key -*.p12 -*.pfx -*.jks -*.keystore -google-services.json -GoogleService-Info.plist - -# SQLCipher / database encryption keys -*.db-key -*.sqlite-key - -# Firebase -firebase.json -.firebaserc -firebase-debug.log - -# ----------------------------------------------------------------------------- -# CI/CD & Build Tools -# ----------------------------------------------------------------------------- - -# GitHub Actions local runner cache -.act/ - -# Gradle -.gradle/ -gradle-app.setting -!gradle-wrapper.jar -!gradle-wrapper.properties - -# CMake (Windows native build) -CMakeCache.txt -CMakeFiles/ -CMakeScripts/ -cmake_install.cmake -install_manifest.txt -compile_commands.json -CTestTestfile.cmake -_deps/ - -# Ninja build files -*.ninja -*.ninja_deps -*.ninja_log - -# ----------------------------------------------------------------------------- -# Logs & Temporary Files -# ----------------------------------------------------------------------------- - -# Log files -*.log -logs/ -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Temporary files -*.tmp -*.temp -*.swp -*.swo -*~ -.~lock.* - -# Test output -test-results/ -test_results/ -junit.xml - -# ----------------------------------------------------------------------------- -# Project-Specific -# ----------------------------------------------------------------------------- - -# UTO project save files (user data — not source controlled) -*.uto - -# Exported organizational charts (generated artifacts) -exports/ - -# Local MOS dictionary overrides (use committed version) -local_mos_override.json - -# Performance benchmark raw data -benchmarks/raw/ - -# DevTools snapshots -*.devtools_snapshot -*.heapsnapshot +# ============================================================================= +# UTO Manager — Flutter / Dart / VSCode / MkDocs .gitignore +# U.S. Army Unit Task Organization Enterprise System +# ============================================================================= + +# ----------------------------------------------------------------------------- +# Flutter / Dart +# ----------------------------------------------------------------------------- + +# Dart tool cache +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies + +# Flutter build outputs +build/ +*.apk +*.aab +*.ipa +*.app +*.exe +*.msix +*.msi + +# Dart generated files +*.g.dart +*.freezed.dart +*.gr.dart +*.mocks.dart + +# Drift / SQLite generated files +*.drift.dart +*.g.dart + +# Protobuf generated files +*.pb.dart +*.pbenum.dart +*.pbgrpc.dart +*.pbjson.dart + +# pubspec lock (keep for reproducible builds — comment out if desired) +# pubspec.lock + +# Flutter web build +web/flutter_service_worker.js +web/flutter.js +web/flutter_bootstrap.js +web/version.json +web/main.dart.js +web/main.dart.js.map + +# Drift web worker build artifacts (keep drift_worker.js, sqlite3.wasm, drift_worker.dart) +web/drift_worker.js.deps +web/drift_worker.js.map + +# Flutter Windows build artifacts +windows/flutter/generated_plugin_registrant.cc +windows/flutter/generated_plugin_registrant.h +windows/flutter/generated_plugins.cmake +windows/flutter/ephemeral/ + +# Flutter Android build artifacts +android/.gradle/ +android/local.properties +android/key.properties +android/app/google-services.json +android/app/debug.keystore +android/app/release.keystore +android/app/upload-keystore.jks +android/captures/ +android/gradlew +android/gradlew.bat +android/gradle/ + +# Flutter iOS (future target) +ios/Flutter/App.framework +ios/Flutter/Flutter.framework +ios/Flutter/Flutter.podspec +ios/Flutter/Generated.xcconfig +ios/Flutter/ephemeral/ +ios/Flutter/app.flx +ios/Flutter/app.zip +ios/Flutter/flutter_assets/ +ios/ServiceDefinitions.json +ios/Runner/GeneratedPluginRegistrant.* +ios/Pods/ +ios/.symlinks/ +ios/Flutter/flutter_export_environment.sh + +# Dart analysis cache +.dart_tool/ +analysis_options.yaml.bak + +# Coverage reports +coverage/ +lcov.info +*.lcov + +# Dart pub cache (local) +.pub-cache/ +.pub/ + +# Flutter DevTools +.devtools + +# ----------------------------------------------------------------------------- +# Visual Studio Code +# ----------------------------------------------------------------------------- + +# VSCode workspace settings (keep .vscode/settings.json if team-shared) +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# VSCode local history +.history/ +*.vsix + +# VSCode test results +.vscode-test/ + +# ----------------------------------------------------------------------------- +# MkDocs / Python Documentation +# ----------------------------------------------------------------------------- + +# MkDocs build output +site/ + +# Python virtual environments +.venv/ +venv/ +env/ +ENV/ +.env/ + +# Python cache +__pycache__/ +*.py[cod] +*$py.class +*.pyo +*.pyd +.Python + +# Python package build artifacts +dist/ +*.egg-info/ +*.egg +MANIFEST + +# pip +pip-log.txt +pip-delete-this-directory.txt + +# MkDocs cache +.cache/ +.mkdocs_cache/ + +# Jupyter Notebooks (if used for documentation) +.ipynb_checkpoints/ + +# ----------------------------------------------------------------------------- +# Operating System +# ----------------------------------------------------------------------------- + +# Windows +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db +Desktop.ini +$RECYCLE.BIN/ +*.lnk +*.stackdump + +# macOS +.DS_Store +.AppleDouble +.LSOverride +._* +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Linux +*~ +.fuse_hidden* +.directory +.Trash-* +.nfs* + +# ----------------------------------------------------------------------------- +# Security & Secrets +# ----------------------------------------------------------------------------- + +# Environment variable files +.env +.env.* +!.env.example +*.env + +# Key files and certificates +*.pem +*.key +*.p12 +*.pfx +*.jks +*.keystore +google-services.json +GoogleService-Info.plist + +# SQLCipher / database encryption keys +*.db-key +*.sqlite-key + +# Firebase +firebase.json +.firebaserc +firebase-debug.log + +# ----------------------------------------------------------------------------- +# CI/CD & Build Tools +# ----------------------------------------------------------------------------- + +# GitHub Actions local runner cache +.act/ + +# Gradle +.gradle/ +gradle-app.setting +!gradle-wrapper.jar +!gradle-wrapper.properties + +# CMake (Windows native build) +CMakeCache.txt +CMakeFiles/ +CMakeScripts/ +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps/ + +# Ninja build files +*.ninja +*.ninja_deps +*.ninja_log + +# ----------------------------------------------------------------------------- +# Logs & Temporary Files +# ----------------------------------------------------------------------------- + +# Log files +*.log +logs/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Temporary files +*.tmp +*.temp +*.swp +*.swo +*~ +.~lock.* + +# Test output +test-results/ +test_results/ +junit.xml + +# ----------------------------------------------------------------------------- +# Project-Specific +# ----------------------------------------------------------------------------- + +# UTO project save files (user data — not source controlled) +*.uto + +# Exported organizational charts (generated artifacts) +exports/ + +# Local MOS dictionary overrides (use committed version) +local_mos_override.json + +# Performance benchmark raw data +benchmarks/raw/ + +# DevTools snapshots +*.devtools_snapshot +*.heapsnapshot diff --git a/README.md b/README.md index 45ebb3a..e486d0c 100644 --- a/README.md +++ b/README.md @@ -1,286 +1,288 @@ -# UTO Manager - -## Flutter-Based Military Unit Task Organization Enterprise System - -### U.S. Army 2026 Doctrine — Cross-Platform Command & Control Application - ---- - -[![Flutter](https://img.shields.io/badge/Flutter-3.x-02569B?logo=flutter)](https://flutter.dev) -[![Dart](https://img.shields.io/badge/Dart-3.x-0175C2?logo=dart)](https://dart.dev) -[![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Web%20%7C%20Android-brightgreen)](https://flutter.dev/multi-platform) -[![License](https://img.shields.io/badge/License-Proprietary-red)](LICENSE) -[![Docs](https://img.shields.io/badge/Docs-MkDocs-526CFE?logo=materialformkdocs)](https://www.mkdocs.org) - ---- - -## Overview - -**UTO Manager** is a cross-platform command and control (C2) application for creating, visualizing, and validating U.S. Army unit task organizations (UTOs) in accordance with 2026 Army doctrine. Built with Flutter, the application targets **Windows x64**, **Web (WASM/CanvasKit)**, and **Android** from a single Dart codebase. - -The system models military formations from individual soldier positions up to multi-domain Brigade Combat Teams, enforcing Modified Table of Organization and Equipment (MTOE) doctrinal rules in real time. - ---- - -## Key Features - -- **Interactive Visual Canvas** — GPU-accelerated `CustomPainter` engine with pan/zoom, viewport culling, and 60 FPS rendering at 5,000+ nodes -- **Drag-and-Drop Re-parenting** — Cross-platform state machine with doctrinal validation highlights (green/red) and undo/redo support -- **MIL-STD-2525D Symbology** — Hybrid rendering pipeline: `milsymbol.js` on Web, native SVG path engine on Windows/Android -- **2026 Doctrinal Templates** — Pre-configured JSON templates for MBCT, SBCT, ABCT, CAB-Heavy, and CAB-Light formations -- **Real-Time MTOE Validation** — Background Dart Isolate engine detecting MOS mismatches, rank violations, vacant leadership slots, and structural hierarchy errors -- **Offline-First Architecture** — Drift/SQLite persistence with delta synchronization for contested network environments -- **Multi-Format Export** — JSON, Protobuf, and vector PDF organizational chart export - ---- - -## Platform Targets - -| Platform | Deployment | Performance Target | -|---|---|---| -| Windows x64 | Native `.msi` / `.exe` | 60 FPS @ 5,000+ nodes | -| Web (WASM) | WebAssembly + CanvasKit | 60 FPS @ 2,000+ nodes | -| Android | Native `.apk` / `.aab` | 60 FPS @ 1,500+ nodes | - ---- - -## Architecture - -```text -[Presentation Layer: CustomPainter / InteractiveViewer / Responsive Shell] - │ - ▼ -[Application State Layer: BLoC / Signals / Super Drag-and-Drop Pipeline] - │ - ▼ -[Domain Layer: MTOE Doctrinal Rules Engine / Structural Validation] - │ - ▼ -[Infrastructure Layer: Drift SQLite / IndexedDB / Protobuf Codecs] -``` - -### Project Structure - -```text -lib/ -├── domain/ # Entities, value objects, repository interfaces -│ ├── entities/ # UnitNode, PositionSlot, PersonnelRecord -│ ├── enums/ # Echelon, DoctrinalBranch, AuthorizedRank -│ └── repositories/ # Abstract repository contracts -├── application/ # BLoC / use cases / state management -│ ├── blocs/ # State management BLoCs -│ └── use_cases/ # Domain use case implementations -├── infrastructure/ # Drift DB, IndexedDB adapters, Protobuf codecs -│ ├── database/ # Drift table definitions and DAOs -│ ├── codecs/ # JSON and Protobuf serialization -│ └── sync/ # Delta synchronization engine -└── presentation/ # Widgets, painters, responsive shell - ├── canvas/ # CustomPainter, InteractiveViewer, viewport - ├── layout/ # Reingold-Tilford algorithm, Quadtree index - ├── symbology/ # MIL-STD-2525D rendering pipeline - └── shell/ # Three-pane UI, responsive layouts -``` - ---- - -## Getting Started - -### Prerequisites - -- [Flutter SDK](https://docs.flutter.dev/get-started/install) 3.x or later -- [Dart SDK](https://dart.dev/get-dart) 3.x (included with Flutter) -- [Visual Studio 2022](https://visualstudio.microsoft.com/) with **Desktop development with C++** workload (Windows target) -- [Android Studio](https://developer.android.com/studio) with Android SDK (Android target) -- [Python 3.9+](https://www.python.org/) with `pip` (MkDocs documentation) -- [Git](https://git-scm.com/) - -### Clone the Repository - -```bash -git clone https://git.kellsupport.com/uto_manager.git -cd uto_manager -``` - -### Install Flutter Dependencies - -```bash -flutter pub get -``` - -### Run the Application - -```bash -# Windows desktop -flutter run -d windows - -# Web (Chrome) -flutter run -d chrome - -# Web (WASM mode) -flutter run -d chrome --wasm - -# Android (connected device or emulator) -flutter run -d android -``` - -### Run Tests - -```bash -# All tests -flutter test - -# With coverage -flutter test --coverage - -# Static analysis -flutter analyze -``` - -### Build Release Packages - -```bash -# Windows -flutter build windows --release - -# Web (WASM) -flutter build web --wasm --release - -# Android APK -flutter build apk --release - -# Android App Bundle (Google Play) -flutter build appbundle --release -``` - ---- - -## Documentation - -Project documentation is built with [MkDocs](https://www.mkdocs.org/) using the [Material theme](https://squidfunk.github.io/mkdocs-material/). - -### Install Documentation Dependencies - -```bash -pip install -r docs/requirements.txt -``` - -### Serve Documentation Locally - -```bash -mkdocs serve -``` - -Then open [http://127.0.0.1:8000](http://127.0.0.1:8000) in your browser. - -### Build Documentation Site - -```bash -mkdocs build -``` - -Output is written to the `site/` directory (excluded from version control). - ---- - -## Development Workflow - -### Branch Strategy - -| Branch | Purpose | -|---|---| -| `main` | Production-ready releases only | -| `develop` | Integration branch for completed features | -| `feature/*` | Individual feature development | -| `fix/*` | Bug fixes | -| `release/*` | Release preparation and stabilization | - -### Commit Convention - -This project follows [Conventional Commits](https://www.conventionalcommits.org/): - -```text -feat(canvas): implement viewport culling via inverse matrix transform -fix(validation): correct MOS mismatch detection for 68W slots -docs(readme): update platform prerequisites -chore(deps): upgrade drift to 2.x -``` - -### Code Quality - -```bash -# Format code -dart format . - -# Analyze code -flutter analyze - -# Run linter -dart run dart_code_metrics:metrics analyze lib -``` - ---- - -## Technology Stack - -| Layer | Technology | Purpose | -|---|---|---| -| UI Framework | Flutter (Dart) | Single codebase for Windows, Web, Android | -| Rendering | CustomPainter + InteractiveViewer | GPU-direct drawing; bypasses widget tree overhead | -| State Management | BLoC + Signals | Reactive atomic state | -| Drag-and-Drop | super_drag_and_drop | Cross-platform payload integrity | -| Local Database | Drift (SQLite / IndexedDB) | Type-safe reactive ORM; offline-first | -| Encryption | SQLCipher | Data-at-rest protection | -| Symbology (Web) | milsymbol.js via dart:js_interop | Full MIL-STD-2525D compliance | -| Symbology (Native) | path_drawing + SVG assets + LRU cache | Zero external runtime dependencies | -| Background Compute | Dart Isolates | Offload layout, validation, export | -| Serialization | JSON + Protobuf | Human-readable + compact binary export | -| PDF Export | pdf package | Vector-quality organizational chart output | -| Documentation | MkDocs + Material theme | User and developer documentation | - ---- - -## Development Phases - -| Phase | Title | Weeks | Status | -|---|---|---|---| -| Phase 1 | Architecture & Data Foundations | 1 – 4 | ⬜ Not Started | -| Phase 2 | Canvas Graphics Engine & Gesture Subsystem | 5 – 9 | ⬜ Not Started | -| Phase 3 | 2026 Doctrinal Templates & Symbology Engine | 10 – 14 | ⬜ Not Started | -| Phase 4 | Persistence, Validation Rules, & Export Engine | 15 – 19 | ⬜ Not Started | -| Phase 5 | Platform Optimization, Profiling, & Hardening | 20 – 24 | ⬜ Not Started | - -See [`development_status.md`](development_status.md) for detailed task tracking and [`phased_development_plan.md`](phased_development_plan.md) for full phase specifications. - ---- - -## Contributing - -1. Fork the repository and create a `feature/*` branch from `develop` -2. Implement your changes with appropriate unit tests -3. Ensure `flutter analyze` passes with zero violations -4. Ensure `flutter test --coverage` meets the 80% minimum threshold -5. Submit a pull request targeting the `develop` branch -6. Pull requests require passing CI on all three platform targets before merge - ---- - -## Security - -This application is designed for use with U.S. Army organizational data. All local data is encrypted at rest using SQLCipher. Encryption keys are stored in platform keychains (Windows Credential Manager / Android Keystore). - -**Do not commit sensitive data, encryption keys, or classified information to this repository.** - ---- - -## License - -Proprietary — All rights reserved. See [LICENSE](LICENSE) for details. - ---- - -## Related Documents - -- [`master_development_plan.md`](master_development_plan.md) — Full architectural specification -- [`phased_development_plan.md`](phased_development_plan.md) — Phase-by-phase implementation plan -- [`development_status.md`](development_status.md) — Sprint tracking and task status -- [Documentation Site](http://127.0.0.1:8000) — MkDocs user and developer documentation +# UTO Manager + +## Flutter-Based Military Unit Task Organization Enterprise System + +### U.S. Army 2026 Doctrine — Cross-Platform Command & Control Application + +--- + +[![Flutter](https://img.shields.io/badge/Flutter-3.x-02569B?logo=flutter)](https://flutter.dev) +[![Dart](https://img.shields.io/badge/Dart-3.x-0175C2?logo=dart)](https://dart.dev) +[![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Web%20%7C%20Android-brightgreen)](https://flutter.dev/multi-platform) +[![License](https://img.shields.io/badge/License-Proprietary-red)](LICENSE) +[![Docs](https://img.shields.io/badge/Docs-MkDocs-526CFE?logo=materialformkdocs)](https://www.mkdocs.org) + +--- + +## Overview + +**UTO Manager** is a cross-platform command and control (C2) application for creating, visualizing, and validating U.S. Army unit task organizations (UTOs) in accordance with 2026 Army doctrine. Built with Flutter, the application targets **Windows x64**, **Web (WASM/CanvasKit)**, and **Android** from a single Dart codebase. + +The system models military formations from individual soldier positions up to multi-domain Brigade Combat Teams, enforcing Modified Table of Organization and Equipment (MTOE) doctrinal rules in real time. + +--- + +## Key Features + +- **Interactive Visual Canvas** — GPU-accelerated `CustomPainter` engine with pan/zoom, viewport culling, and 60 FPS rendering at 5,000+ nodes +- **Full CRUD UI** — Add, edit, and delete units, position slots, and soldiers via modal dialogs with live MOS autocomplete +- **Drag-and-Drop Re-parenting** — Cross-platform state machine with doctrinal validation highlights (green/red) and undo/redo support +- **MIL-STD-2525D Symbology** — Hybrid rendering pipeline: `milsymbol.js` on Web, native SVG path engine on Windows/Android *(planned)* +- **2026 Doctrinal Templates** — Pre-configured JSON templates for MBCT, SBCT, ABCT, CAB-Heavy, and CAB-Light formations +- **Real-Time MTOE Validation** — Background Dart Isolate engine detecting MOS mismatches, rank violations, vacant leadership slots, and structural hierarchy errors +- **Offline-First Architecture** — Drift/SQLite persistence with delta synchronization for contested network environments +- **Multi-Format Export** — JSON, Protobuf (`.utob`), and vector PDF organizational chart export +- **Web Platform Support** — Full WASM/IndexedDB persistence via `drift_worker.js` and `sqlite3.wasm` + +--- + +## Platform Targets + +| Platform | Deployment | Performance Target | +|---|---|---| +| Windows x64 | Native `.msi` / `.exe` | 60 FPS @ 5,000+ nodes | +| Web (WASM) | WebAssembly + CanvasKit | 60 FPS @ 2,000+ nodes | +| Android | Native `.apk` / `.aab` | 60 FPS @ 1,500+ nodes | + +--- + +## Architecture + +```text +[Presentation Layer: CustomPainter / InteractiveViewer / Responsive Shell] + │ + ▼ +[Application State Layer: BLoC / Signals / Super Drag-and-Drop Pipeline] + │ + ▼ +[Domain Layer: MTOE Doctrinal Rules Engine / Structural Validation] + │ + ▼ +[Infrastructure Layer: Drift SQLite / IndexedDB / Protobuf Codecs] +``` + +### Project Structure + +```text +lib/ +├── domain/ # Entities, value objects, repository interfaces +│ ├── entities/ # UnitNode, PositionSlot, PersonnelRecord +│ ├── enums/ # Echelon, DoctrinalBranch, AuthorizedRank +│ └── repositories/ # Abstract repository contracts +├── application/ # BLoC / use cases / state management +│ ├── blocs/ # State management BLoCs +│ └── use_cases/ # Domain use case implementations +├── infrastructure/ # Drift DB, IndexedDB adapters, Protobuf codecs +│ ├── database/ # Drift table definitions and DAOs +│ ├── codecs/ # JSON and Protobuf serialization +│ └── sync/ # Delta synchronization engine +└── presentation/ # Widgets, painters, responsive shell + ├── canvas/ # CustomPainter, InteractiveViewer, viewport + ├── layout/ # Reingold-Tilford algorithm, Quadtree index + ├── symbology/ # MIL-STD-2525D rendering pipeline + └── shell/ # Three-pane UI, responsive layouts +``` + +--- + +## Getting Started + +### Prerequisites + +- [Flutter SDK](https://docs.flutter.dev/get-started/install) 3.x or later +- [Dart SDK](https://dart.dev/get-dart) 3.x (included with Flutter) +- [Visual Studio 2022](https://visualstudio.microsoft.com/) with **Desktop development with C++** workload (Windows target) +- [Android Studio](https://developer.android.com/studio) with Android SDK (Android target) +- [Python 3.9+](https://www.python.org/) with `pip` (MkDocs documentation) +- [Git](https://git-scm.com/) + +### Clone the Repository + +```bash +git clone https://git.kellsupport.com/uto_manager.git +cd uto_manager +``` + +### Install Flutter Dependencies + +```bash +flutter pub get +``` + +### Run the Application + +```bash +# Windows desktop +flutter run -d windows + +# Web (Chrome) +flutter run -d chrome + +# Web (WASM mode) +flutter run -d chrome --wasm + +# Android (connected device or emulator) +flutter run -d android +``` + +### Run Tests + +```bash +# All tests +flutter test + +# With coverage +flutter test --coverage + +# Static analysis +flutter analyze +``` + +### Build Release Packages + +```bash +# Windows +flutter build windows --release + +# Web (WASM) +flutter build web --wasm --release + +# Android APK +flutter build apk --release + +# Android App Bundle (Google Play) +flutter build appbundle --release +``` + +--- + +## Documentation + +Project documentation is built with [MkDocs](https://www.mkdocs.org/) using the [Material theme](https://squidfunk.github.io/mkdocs-material/). + +### Install Documentation Dependencies + +```bash +pip install -r docs/requirements.txt +``` + +### Serve Documentation Locally + +```bash +mkdocs serve +``` + +Then open [http://127.0.0.1:8000](http://127.0.0.1:8000) in your browser. + +### Build Documentation Site + +```bash +mkdocs build +``` + +Output is written to the `site/` directory (excluded from version control). + +--- + +## Development Workflow + +### Branch Strategy + +| Branch | Purpose | +|---|---| +| `main` | Production-ready releases only | +| `develop` | Integration branch for completed features | +| `feature/*` | Individual feature development | +| `fix/*` | Bug fixes | +| `release/*` | Release preparation and stabilization | + +### Commit Convention + +This project follows [Conventional Commits](https://www.conventionalcommits.org/): + +```text +feat(canvas): implement viewport culling via inverse matrix transform +fix(validation): correct MOS mismatch detection for 68W slots +docs(readme): update platform prerequisites +chore(deps): upgrade drift to 2.x +``` + +### Code Quality + +```bash +# Format code +dart format . + +# Analyze code +flutter analyze + +# Run linter +dart run dart_code_metrics:metrics analyze lib +``` + +--- + +## Technology Stack + +| Layer | Technology | Purpose | +|---|---|---| +| UI Framework | Flutter (Dart) | Single codebase for Windows, Web, Android | +| Rendering | CustomPainter + InteractiveViewer | GPU-direct drawing; bypasses widget tree overhead | +| State Management | BLoC + Signals | Reactive atomic state | +| Drag-and-Drop | super_drag_and_drop | Cross-platform payload integrity | +| Local Database | Drift (SQLite / IndexedDB) | Type-safe reactive ORM; offline-first | +| Encryption | SQLCipher | Data-at-rest protection | +| Symbology (Web) | milsymbol.js via dart:js_interop | Full MIL-STD-2525D compliance | +| Symbology (Native) | path_drawing + SVG assets + LRU cache | Zero external runtime dependencies | +| Background Compute | Dart Isolates | Offload layout, validation, export | +| Serialization | JSON + Protobuf | Human-readable + compact binary export | +| PDF Export | pdf package | Vector-quality organizational chart output | +| Documentation | MkDocs + Material theme | User and developer documentation | + +--- + +## Development Phases + +| Phase | Title | Weeks | Status | +|---|---|---|---| +| Phase 1 | Architecture & Data Foundations | 1 – 4 | ✅ Complete | +| Phase 2 | Canvas Graphics Engine & Persistence | 5 – 9 | ✅ Complete | +| Phase 3 | Template Library & Import/Export | 10 – 14 | ✅ Complete | +| Phase 4 | Reporting & Analytics | 15 – 19 | ✅ Complete | +| Phase 5 | UI/CRUD Layer & Web Platform | 20 – 24 | ✅ Complete | + +See [`development_status.md`](development_status.md) for detailed task tracking and [`phased_development_plan.md`](phased_development_plan.md) for full phase specifications. + +--- + +## Contributing + +1. Fork the repository and create a `feature/*` branch from `develop` +2. Implement your changes with appropriate unit tests +3. Ensure `flutter analyze` passes with zero violations +4. Ensure `flutter test --coverage` meets the 80% minimum threshold +5. Submit a pull request targeting the `develop` branch +6. Pull requests require passing CI on all three platform targets before merge + +--- + +## Security + +This application is designed for use with U.S. Army organizational data. All local data is encrypted at rest using SQLCipher. Encryption keys are stored in platform keychains (Windows Credential Manager / Android Keystore). + +**Do not commit sensitive data, encryption keys, or classified information to this repository.** + +--- + +## License + +Proprietary — All rights reserved. See [LICENSE](LICENSE) for details. + +--- + +## Related Documents + +- [`master_development_plan.md`](master_development_plan.md) — Full architectural specification +- [`phased_development_plan.md`](phased_development_plan.md) — Phase-by-phase implementation plan +- [`development_status.md`](development_status.md) — Sprint tracking and task status +- [Documentation Site](http://127.0.0.1:8000) — MkDocs user and developer documentation diff --git a/development_status.md b/development_status.md index fd5d084..4a6d999 100644 --- a/development_status.md +++ b/development_status.md @@ -1,12 +1,12 @@ # UTO Manager — Development Status -Last updated: 2026-08-09 — branch `fix/phase-4-analyzer-infos` merged to `main` +Last updated: 2026-08-09 — Phase 5 UI/CRUD layer merged to `main` --- ## Current Branch -`main` (fix/phase-4-analyzer-infos merged) +`main` (Phase 5 UI/CRUD layer merged) ## Overall Progress @@ -16,7 +16,7 @@ Last updated: 2026-08-09 — branch `fix/phase-4-analyzer-infos` merged to `main | 2 | Canvas Engine & Persistence | ✅ Complete | | 3 | Template Library & Import/Export | ✅ Complete | | 4 | Reporting & Analytics | ✅ Complete | -| 5 | Multi-user / Sync | 🔲 Not started | +| 5 | UI/CRUD Layer & Web Platform | ✅ Complete | --- @@ -204,6 +204,132 @@ Last updated: 2026-08-09 — branch `fix/phase-4-analyzer-infos` merged to `main --- +## Phase 5 — UI/CRUD Layer & Web Platform ✅ + +**Completed items:** + +### Domain Entities (Phase 5) + +- `SoldierPosition` entity — named duty position for assignment to personnel records: + - `positionId` (UUID v4 for custom; fixed string for built-ins) + - `title` — human-readable position title (e.g. "Team Leader", "Rifleman") + - `isBuiltIn` — true for app-seeded positions; false for user-created ones + - `copyWith`, `Equatable` props, `toString` + - `SoldierPosition.builtIns` — 31 pre-defined Army duty positions across all branches: + - Command/Staff: Commander, XO, CSM, First Sergeant, S2/S3/S4/S6 + - Platoon: Platoon Leader, Platoon Sergeant, RTO + - Squad/Section: Squad Leader, Team Leader + - Individual: Rifleman, Grenadier, Automatic Rifleman, Machine Gunner, Sniper, + JTAC/Fire Support, Medic, Combat Engineer, Driver, Gunner, Loader, + Tank Commander, Crew Member, Supply Sergeant, Armorer, Commo Sergeant, + Intelligence Analyst, Forward Observer, CBRN Specialist + +### Domain Entities — Extended (Phase 5) + +- `PersonnelRecord` — Extended with: + - `positionTitle` field (optional) — duty position title from `SoldierPosition` + - `displayLabel` getter — prefers `name`; falls back to `positionTitle`; then `(Unnamed Soldier)` + - `isAssigned` getter — true when `assignedSlotId != null` + - `isFmc` getter — true when `readinessState == fullyMissionCapable` + - `copyWith` — extended with `clearName`, `clearPositionTitle`, `clearAssignment` flags + +### Infrastructure — Database (Phase 5) + +- `SoldierPositions` Drift table — persists named duty positions: + - `position_id` (TEXT, PK), `title` (TEXT), `is_built_in` (BOOLEAN, default false) +- `SoldierPositionsDao` — full DAO for `SoldierPositions`: + - `getAll()`, `getById(positionId)`, `upsert()`, `upsertAll()`, `updatePosition()`, + `deletePosition()`, `watchAll()` +- `AppDatabase` — schema version bumped to **v2**: + - Migration v1→v2: adds `position_title` column to `Personnel` table; creates `soldier_positions` table +- Web platform support: + - `drift_worker.dart` / `drift_worker.js` — Drift web worker for IndexedDB persistence + - `sqlite3.wasm` — SQLite WASM binary for web target + - `_openConnection()` updated to use `driftDatabase()` (platform-adaptive: SQLite on native, WASM/IndexedDB on web) + +### Infrastructure — Repositories (Phase 5) + +- `DriftSoldierPositionsRepository` — Drift-backed repository for `SoldierPosition`: + - `getAll()` — returns all positions (built-in + custom) + - `watchAll()` — reactive stream of all positions + - `upsert(position)` — insert or update a position + - `seedBuiltIns()` — idempotent seed of all `SoldierPosition.builtIns` on first launch + - `delete(positionId)` — deletes custom positions only; no-op for built-ins + +### Application — BLoC (Phase 5) + +- `UnitTreeCubit` — Extended with full CRUD operations: + - `addUnit(unit)` — inserts a new `UnitNode` + - `updateUnit(unit)` — updates an existing `UnitNode` + - `addSlot(slot)` — inserts a new `PositionSlot` + - `updateSlot(slot)` — updates an existing `PositionSlot` + - `deleteSlot(slotId)` — deletes a position slot + - `clearAll()` — deletes all slots then all units (template reset) +- `PersonnelCubit` — Extended with full CRUD operations: + - `addPersonnel(record)` — inserts a new `PersonnelRecord` + - `updatePersonnel(record)` — updates an existing `PersonnelRecord` + - `deletePersonnel(soldierId)` — deletes soldier; clears slot assignment first if assigned + +### Presentation — Dialogs (Phase 5) + +- `AddEditPersonnelDialog` — full-featured dialog for creating/editing soldiers: + - Position dropdown (loaded from `DriftSoldierPositionsRepository`) with add/rename/delete custom positions + - Optional full name field (Last, First MI format) + - Pay grade dropdown (all `AuthorizedRank` values) + - Primary MOS field with live autocomplete suggestions from `DutyMos.allCodes` + - Readiness state dropdown + - MOS validation against known codes +- `AddEditSlotDialog` — dialog for creating/editing position slots: + - Position title text field + - Authorized rank dropdown + - Duty MOS field with live autocomplete suggestions + - Key leader toggle switch +- `AddEditUnitDialog` — dialog for creating/editing unit nodes: + - Optional unit name/designation field (auto-generates from echelon + branch if blank) + - Echelon dropdown + - Branch/functional area dropdown + - Optional parent unit dropdown (excludes self and descendants) + - Key leader unit toggle switch + +### Presentation — HomeScreen (Phase 5) + +- App bar actions: + - **Add Unit** (`add_box_outlined`) — opens `AddEditUnitDialog` + - **Add Soldier** (`person_add_outlined`) — opens `AddEditPersonnelDialog` + - **Run MTOE Validation** (`fact_check_outlined`) — triggers `ValidationCubit.validate()` + - **Export** (`upload_file_outlined`) — opens export format selection dialog + - **Clear All** (`delete_sweep_outlined`) — confirmation dialog to reset all units/slots +- Personnel panel: + - Search/filter bar (name, MOS, rank) + - Tap soldier tile to edit via `AddEditPersonnelDialog` + - Assigned/unassigned count footer + - Empty-state prompt with "Add Soldier" button +- Inspector panel: + - Edit unit button → `AddEditUnitDialog` + - Add child unit button → `AddEditUnitDialog` (pre-selected parent) + - Delete unit button → confirmation dialog (cascades to subtree) + - Validation findings section (per-unit, grouped by severity with color-coded icons) + - Position slots header with fill count and "Add Slot" button + - Per-slot edit and delete actions via `AddEditSlotDialog` + - Empty-state prompts for no units selected and no slots defined +- Export dialog (`_ExportDialog`): + - Format selection: JSON, Binary (`.utob`), PDF + - PDF page size selector (Letter, A4, Tabloid) + - Export result/error feedback inline +- Status bar: + - Unit count, slot fill rate (filled/total + percentage) + - Total soldier count + - Validation state: running spinner, clean indicator, or critical/warning/advisory counts + +### App Wiring (Phase 5) + +- `main.dart` — Added `DriftSoldierPositionsRepository` wired to `HomeScreen` +- `HomeScreen` — now requires `positionsRepository` parameter + +**Test count (Phase 5):** existing 263 tests; widget test updated for new `HomeScreen` signature + +--- + ## Test Summary | File | Tests | Status | @@ -227,15 +353,18 @@ Last updated: 2026-08-09 — branch `fix/phase-4-analyzer-infos` merged to `main --- -## Known Limitations / Next Steps (Phase 5) +## Known Limitations / Next Steps (Phase 5 Hardening) -- No multi-user or real-time sync capability (Phase 5) +- No multi-user or real-time sync capability (Phase 5 hardening) - Canvas layout is vertical tree only; horizontal layout not yet implemented - No undo/redo for assignment operations - No search/filter on the canvas itself -- `DeltaSynchronizer` uses simulated online/offline; real network transport deferred to Phase 5 -- `ProtobufCodec` uses zlib-compressed JSON as payload; true protobuf schema deferred to Phase 5 +- `DeltaSynchronizer` uses simulated online/offline; real network transport deferred +- `ProtobufCodec` uses zlib-compressed JSON as payload; true protobuf schema deferred - Template instantiation does not yet persist to database in a single Drift transaction (uses sequential inserts) +- MIL-STD-2525D symbology engine not yet implemented (deferred) +- SQLCipher data-at-rest encryption not yet integrated (deferred) +- No undo/redo stack for unit/slot/personnel CRUD operations --- @@ -245,6 +374,7 @@ Last updated: 2026-08-09 — branch `fix/phase-4-analyzer-infos` merged to `main lib/ ├── domain/ │ ├── entities/ # Pure Dart domain models (no Flutter deps) +│ │ # UnitNode, PositionSlot, PersonnelRecord, SoldierPosition │ ├── value_objects/ # DutyMos (supports 3-char and 4-char AOC formats) │ ├── repositories/ # Abstract interfaces │ └── services/ # UnitTreeService, AssignmentService, @@ -254,12 +384,18 @@ lib/ ├── infrastructure/ │ ├── codecs/ # UnitTreeCodec (JSON), ProtobufCodec (binary), │ │ # PdfChartExporter (PDF org chart) -│ ├── database/ # Drift schema, DAOs, generated code +│ ├── database/ # Drift schema (v2), DAOs, generated code +│ │ # Tables: Units, PositionSlots, Personnel, +│ │ # SoldierPositions, Templates │ └── repositories/ # Drift-backed implementations +│ # DriftSoldierPositionsRepository (new in Phase 5) ├── application/ │ └── blocs/ # UnitTreeCubit, PersonnelCubit, │ # TemplateCubit, ValidationCubit └── presentation/ - ├── screens/ # HomeScreen (with PDF/binary export + validation UI) + ├── screens/ + │ ├── home_screen.dart # Full CRUD UI + export dialog + │ └── dialogs/ # AddEditPersonnelDialog, AddEditSlotDialog, + │ # AddEditUnitDialog (all new in Phase 5) └── widgets/ # Canvas, cards, tiles ``` diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 0000000..fa0b357 --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1,3 @@ +description: This file stores settings for Dart & Flutter DevTools. +documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states +extensions: diff --git a/docs/developer-guide/index.md b/docs/developer-guide/index.md index 59899c1..bd73ccc 100644 --- a/docs/developer-guide/index.md +++ b/docs/developer-guide/index.md @@ -1,89 +1,90 @@ -# Developer Guide - -## UTO Manager — Engineering & Architecture Reference - ---- - -This guide covers the technical architecture, implementation details, and contribution guidelines for engineers building and extending the UTO Manager platform. - ---- - -## In This Guide - -| Section | Description | -|---|---| -| [Architecture Overview](architecture/overview.md) | Layered clean architecture and system design | -| [Domain Model](domain/entities.md) | Core Dart entities, enums, and repository contracts | -| [Canvas Engine](canvas/custom-painter.md) | CustomPainter rendering, viewport culling, layout algorithm | -| [Symbology Engine](symbology/mil-std-2525d.md) | MIL-STD-2525D hybrid rendering pipeline | -| [Database & Persistence](database/drift-schema.md) | Drift schema, DAOs, migrations, offline-first | -| [Validation Engine](validation/mtoe-engine.md) | Real-time MTOE validation in background Isolates | -| [Export Engine](export/json-codec.md) | JSON, Protobuf, and PDF export modules | -| [Performance](performance/repaint-boundaries.md) | RepaintBoundary isolation, Dart Isolates, benchmarks | -| [CI/CD](cicd/pipeline.md) | Multi-platform build pipeline and test gates | -| [Contributing](contributing/workflow.md) | Branch strategy, commit conventions, code standards | - ---- - -## Architecture at a Glance - -```text -[Presentation Layer] - CustomPainter / InteractiveViewer / Responsive Shell - │ - ▼ -[Application State Layer] - BLoC / Signals / Drag-and-Drop Pipeline - │ - ▼ -[Domain Layer] - MTOE Rules Engine / Structural Validation / Entities - │ - ▼ -[Infrastructure Layer] - Drift SQLite / IndexedDB / Protobuf Codecs / Delta Sync -``` - ---- - -## Technology Stack - -| Layer | Technology | -|---|---| -| UI Framework | Flutter 3.x (Dart 3.x) | -| Rendering | CustomPainter + InteractiveViewer | -| State Management | BLoC + Signals | -| Drag-and-Drop | super_drag_and_drop | -| Local Database | Drift (SQLite / IndexedDB) | -| Encryption | SQLCipher | -| Symbology (Web) | milsymbol.js via dart:js_interop | -| Symbology (Native) | path_drawing + SVG assets + LRU cache | -| Background Compute | Dart Isolates | -| Serialization | JSON + Protobuf | -| PDF Export | pdf package | -| Documentation | MkDocs + Material theme | - ---- - -## Development Setup - -```bash -# Clone the repository -git clone https://git.kellsupport.com/uto_manager.git -cd uto_manager - -# Install Flutter dependencies -flutter pub get - -# Run static analysis -flutter analyze - -# Run all tests with coverage -flutter test --coverage - -# Install documentation dependencies -pip install -r docs/requirements.txt - -# Serve documentation locally -mkdocs serve -``` +# Developer Guide + +## UTO Manager — Engineering & Architecture Reference + +--- + +This guide covers the technical architecture, implementation details, and contribution guidelines for engineers building and extending the UTO Manager platform. + +--- + +## In This Guide + +| Section | Description | +|---|---| +| [Architecture Overview](architecture/overview.md) | Layered clean architecture and system design | +| [Domain Model](domain/entities.md) | Core Dart entities, enums, and repository contracts | +| [Canvas Engine](canvas/custom-painter.md) | CustomPainter rendering, viewport culling, layout algorithm | +| [Symbology Engine](symbology/mil-std-2525d.md) | MIL-STD-2525D hybrid rendering pipeline | +| [Database & Persistence](database/drift-schema.md) | Drift schema, DAOs, migrations, offline-first | +| [Validation Engine](validation/mtoe-engine.md) | Real-time MTOE validation in background Isolates | +| [Export Engine](export/json-codec.md) | JSON, Protobuf, and PDF export modules | +| [Performance](performance/repaint-boundaries.md) | RepaintBoundary isolation, Dart Isolates, benchmarks | +| [CI/CD](cicd/pipeline.md) | Multi-platform build pipeline and test gates | +| [Contributing](contributing/workflow.md) | Branch strategy, commit conventions, code standards | + +--- + +## Architecture at a Glance + +```text +[Presentation Layer] + CustomPainter / InteractiveViewer / Responsive Shell + │ + ▼ +[Application State Layer] + BLoC / Signals / Drag-and-Drop Pipeline + │ + ▼ +[Domain Layer] + MTOE Rules Engine / Structural Validation / Entities + │ + ▼ +[Infrastructure Layer] + Drift SQLite / IndexedDB / Protobuf Codecs / Delta Sync +``` + +--- + +## Technology Stack + +| Layer | Technology | +|---|---| +| UI Framework | Flutter 3.x (Dart 3.x) | +| Rendering | CustomPainter + InteractiveViewer | +| State Management | BLoC (flutter_bloc) | +| Drag-and-Drop | Flutter DragTarget / Draggable | +| Local Database | Drift v2 (SQLite / IndexedDB) — schema v2 | +| Web DB Worker | drift_worker.js + sqlite3.wasm | +| Encryption | SQLCipher *(planned)* | +| Symbology (Web) | milsymbol.js via dart:js_interop *(planned)* | +| Symbology (Native) | path_drawing + SVG assets + LRU cache *(planned)* | +| Background Compute | Dart Isolates (IsolateValidationRunner) | +| Serialization | JSON (UnitTreeCodec) + Binary (ProtobufCodec) | +| PDF Export | Pure-Dart PDF 1.4 (PdfChartExporter) | +| Documentation | MkDocs + Material theme | + +--- + +## Development Setup + +```bash +# Clone the repository +git clone https://git.kellsupport.com/uto_manager.git +cd uto_manager + +# Install Flutter dependencies +flutter pub get + +# Run static analysis +flutter analyze + +# Run all tests with coverage +flutter test --coverage + +# Install documentation dependencies +pip install -r docs/requirements.txt + +# Serve documentation locally +mkdocs serve +``` diff --git a/docs/index.md b/docs/index.md index 9a8d4d7..0cb3daf 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,72 +1,72 @@ -# UTO Manager Documentation - -## Flutter-Based Military Unit Task Organization Enterprise System - -### U.S. Army 2026 Doctrine — Cross-Platform Command & Control Application - ---- - -Welcome to the **UTO Manager** documentation. Use the navigation tabs above to find what you need. - ---- - -## Documentation Sections - -
- -- :material-book-open-variant:{ .lg .middle } **User Guide** - - --- - - Step-by-step instructions for planners and operators using UTO Manager to build, visualize, and validate unit task organizations. - - [:octicons-arrow-right-24: User Guide](user-guide/index.md) - -- :material-code-braces:{ .lg .middle } **Developer Guide** - - --- - - Architecture deep-dives, API references, and contribution guidelines for engineers building and extending the platform. - - [:octicons-arrow-right-24: Developer Guide](developer-guide/index.md) - -- :material-shield-star:{ .lg .middle } **Doctrinal Reference** - - --- - - U.S. Army 2026 force structure specifications, MOS reference tables, and MIL-STD-2525D symbology reference. - - [:octicons-arrow-right-24: Doctrinal Reference](doctrinal-reference/index.md) - -- :material-note-text:{ .lg .middle } **Release Notes** - - --- - - Version history, feature summaries, known limitations, and upgrade instructions. - - [:octicons-arrow-right-24: Release Notes](release-notes/index.md) - -
- ---- - -## Quick Links - -| Resource | Description | -|---|---| -| [Installation](user-guide/getting-started/installation.md) | Set up UTO Manager on Windows, Web, or Android | -| [Quick Start](user-guide/getting-started/quick-start.md) | Create your first unit task organization in 5 minutes | -| [MBCT Template](user-guide/templates/mbct.md) | Mobile Brigade Combat Team template guide | -| [Architecture Overview](developer-guide/architecture/overview.md) | Clean architecture and layered design | -| [MOS Reference](doctrinal-reference/mos/infantry.md) | Military Occupational Specialty reference tables | -| [MIL-STD-2525D](doctrinal-reference/symbology/overview.md) | Tactical symbology reference | - ---- - -## About This Project - -UTO Manager is a cross-platform C2 application built with **Flutter** targeting Windows x64, Web (WASM/CanvasKit), and Android from a single Dart codebase. The system enforces U.S. Army MTOE doctrinal rules in real time, supporting formations from individual soldier positions up to multi-domain Brigade Combat Teams. - -**Current Version:** Pre-release (Phase 1 — Architecture & Data Foundations) - -**Project Repository:** [git.kellsupport.com/uto_manager](https://git.kellsupport.com/uto_manager) +# UTO Manager Documentation + +## Flutter-Based Military Unit Task Organization Enterprise System + +### U.S. Army 2026 Doctrine — Cross-Platform Command & Control Application + +--- + +Welcome to the **UTO Manager** documentation. Use the navigation tabs above to find what you need. + +--- + +## Documentation Sections + +
+ +- :material-book-open-variant:{ .lg .middle } **User Guide** + + --- + + Step-by-step instructions for planners and operators using UTO Manager to build, visualize, and validate unit task organizations. + + [:octicons-arrow-right-24: User Guide](user-guide/index.md) + +- :material-code-braces:{ .lg .middle } **Developer Guide** + + --- + + Architecture deep-dives, API references, and contribution guidelines for engineers building and extending the platform. + + [:octicons-arrow-right-24: Developer Guide](developer-guide/index.md) + +- :material-shield-star:{ .lg .middle } **Doctrinal Reference** + + --- + + U.S. Army 2026 force structure specifications, MOS reference tables, and MIL-STD-2525D symbology reference. + + [:octicons-arrow-right-24: Doctrinal Reference](doctrinal-reference/index.md) + +- :material-note-text:{ .lg .middle } **Release Notes** + + --- + + Version history, feature summaries, known limitations, and upgrade instructions. + + [:octicons-arrow-right-24: Release Notes](release-notes/index.md) + +
+ +--- + +## Quick Links + +| Resource | Description | +|---|---| +| [Installation](user-guide/getting-started/installation.md) | Set up UTO Manager on Windows, Web, or Android | +| [Quick Start](user-guide/getting-started/quick-start.md) | Create your first unit task organization in 5 minutes | +| [MBCT Template](user-guide/templates/mbct.md) | Mobile Brigade Combat Team template guide | +| [Architecture Overview](developer-guide/architecture/overview.md) | Clean architecture and layered design | +| [MOS Reference](doctrinal-reference/mos/infantry.md) | Military Occupational Specialty reference tables | +| [MIL-STD-2525D](doctrinal-reference/symbology/overview.md) | Tactical symbology reference | + +--- + +## About This Project + +UTO Manager is a cross-platform C2 application built with **Flutter** targeting Windows x64, Web (WASM/CanvasKit), and Android from a single Dart codebase. The system enforces U.S. Army MTOE doctrinal rules in real time, supporting formations from individual soldier positions up to multi-domain Brigade Combat Teams. + +**Current Version:** Pre-release (Phases 1–5 complete — UI/CRUD Layer & Web Platform) + +**Project Repository:** [git.kellsupport.com/uto_manager](https://git.kellsupport.com/uto_manager) diff --git a/docs/release-notes/index.md b/docs/release-notes/index.md index a1fe7f5..5314fb9 100644 --- a/docs/release-notes/index.md +++ b/docs/release-notes/index.md @@ -1,21 +1,22 @@ -# Release Notes - -## UTO Manager Version History - ---- - -| Version | Date | Status | -|---|---|---| -| [v1.0.0](v1.0.0.md) | TBD | 🔵 In Development | - ---- - -## Roadmap - -| Milestone | Target | Deliverable | -|---|---|---| -| M1 — End of Week 4 | TBD | Compilable multi-platform skeleton + Drift DB + CI pipeline | -| M2 — End of Week 9 | TBD | Functional canvas engine with drag-and-drop on Windows and Android | -| M3 — End of Week 14 | TBD | All BCT templates instantiable + MIL-STD-2525D symbols rendering | -| M4 — End of Week 19 | TBD | Full persistence + real-time MTOE validation + JSON/PDF export | -| M5 — End of Week 24 | TBD | Signed release packages for Windows, Web, and Android | +# Release Notes + +## UTO Manager Version History + +--- + +| Version | Date | Status | +|---|---|---| +| [v1.0.0](v1.0.0.md) | TBD | 🔵 In Development | + +--- + +## Roadmap + +| Milestone | Target | Deliverable | +|---|---|---| +| M1 — End of Week 4 | 2026-08-07 ✅ | Compilable multi-platform skeleton + Drift DB + domain entities | +| M2 — End of Week 9 | 2026-08-08 ✅ | Functional canvas engine with drag-and-drop on Windows and Android | +| M3 — End of Week 14 | 2026-08-09 ✅ | All BCT templates instantiable + MTOE validation engine | +| M4 — End of Week 19 | 2026-08-09 ✅ | Full persistence + real-time MTOE validation + JSON/PDF/binary export | +| M5 — End of Week 24 | 2026-08-09 ✅ | Full CRUD UI + web platform support + DB schema v2 | +| M6 — Hardening | TBD | MIL-STD-2525D symbology, SQLCipher encryption, signed release packages | diff --git a/docs/release-notes/v1.0.0.md b/docs/release-notes/v1.0.0.md index b9f6fe8..b7f1fbf 100644 --- a/docs/release-notes/v1.0.0.md +++ b/docs/release-notes/v1.0.0.md @@ -1,59 +1,112 @@ -# v1.0.0 — Initial Release - -## Status: 🔵 In Development - -**Target:** End of Week 24 - ---- - -## Planned Features - -### Core Platform - -- Cross-platform Flutter application targeting Windows x64, Web (WASM), and Android -- GPU-accelerated `CustomPainter` canvas engine with viewport culling -- 60 FPS rendering at 5,000+ nodes (Windows), 2,000+ (Web), 1,500+ (Android) - -### Organizational Modeling - -- Complete domain model: `UnitNode`, `PositionSlot`, `PersonnelRecord` -- MOS validation across all functional branches (Infantry, Medical, Fires, Signal, Cyber/EW, Aviation, Logistics, Engineer) -- 2026 doctrinal templates: MBCT, SBCT, ABCT, CAB-Heavy, CAB-Light - -### Visual Canvas - -- Reingold-Tilford hierarchical tree layout algorithm -- Quadtree spatial index for hit-testing and drag proximity queries -- Cross-platform drag-and-drop re-parenting with doctrinal validation highlights -- MIL-STD-2525D tactical symbology rendering - -### Persistence & Validation - -- Drift/SQLite offline-first persistence with IndexedDB on Web -- Real-time MTOE validation engine (MOS mismatch, rank mismatch, vacant leadership, structural violations) -- Delta synchronization for contested network environments -- SQLCipher data-at-rest encryption - -### Export - -- JSON export/import with doctrinal validation -- Protobuf binary export -- Vector PDF organizational chart export - -### Platform-Specific - -- Windows: multi-window, high-DPI scaling, `.msi` installer, `.uto` file association -- Web: PWA offline capability, IndexedDB quota management -- Android: battery profiling, touch-optimized targets (48×48 dp minimum) - ---- - -## Known Limitations - -*To be documented upon release.* - ---- - -## Upgrade Instructions - -*Initial release — no upgrade path required.* +# v1.0.0 — Initial Release + +## Status: 🔵 In Development + +**Target:** End of hardening phase + +--- + +## Implemented Features (Phases 1–5) + +### Core Platform + +- Cross-platform Flutter application targeting Windows x64, Web (WASM), and Android +- GPU-accelerated `CustomPainter` canvas engine with viewport culling +- Three-pane adaptive layout: personnel roster | org chart canvas | unit inspector +- Offline-first Drift/SQLite persistence with IndexedDB on Web (schema v2) +- Web platform: `drift_worker.js` + `sqlite3.wasm` for full WASM/IndexedDB support + +### Organizational Modeling + +- Complete domain model: `UnitNode`, `PositionSlot`, `PersonnelRecord`, `SoldierPosition` +- MOS validation across all functional branches (Infantry, Medical, Fires, Signal, Cyber/EW, Aviation, Logistics, Engineer) +- 2026 doctrinal templates: MBCT, SBCT, ABCT, CAB-Heavy, CAB-Light +- 31 built-in Army duty positions (Command/Staff, Platoon, Squad, Individual) + user-defined custom positions + +### Full CRUD User Interface + +- **Add/Edit/Delete Units** — `AddEditUnitDialog` with echelon, branch, parent, and key-leader fields +- **Add/Edit/Delete Position Slots** — `AddEditSlotDialog` with MOS autocomplete and key-leader toggle +- **Add/Edit/Delete Soldiers** — `AddEditPersonnelDialog` with position picker, MOS autocomplete, pay grade, and readiness state +- **Custom Position Management** — create, rename, and delete custom duty positions from within the personnel dialog +- **Clear All** — confirmation-gated reset of all units, slots, and assignments + +### Visual Canvas + +- `InteractiveViewer` pan/zoom org chart +- Drag-and-drop soldier assignment (drag from personnel panel → drop on position slot card) +- Drag-and-drop unit re-parenting with doctrinal validation highlights +- Validation node indicators: red border for critical findings, amber for warnings + +### MTOE Validation Engine + +- 7 validation rules (V001–V007): MOS mismatch, rank mismatch, vacant key leader, missing 68W medic, missing 13F FSO, structural hierarchy violation, manning below 70% +- Background Dart Isolate execution via `IsolateValidationRunner` +- Findings displayed in inspector panel (per-unit, color-coded by severity) and status bar + +### Persistence & Sync + +- Drift schema v2: `units`, `position_slots`, `personnel`, `soldier_positions`, `templates` +- Schema migration v1→v2: adds `position_title` to `Personnel`, creates `soldier_positions` table +- `CommandEventStore` — append-only event log for all structural mutations +- `DeltaSynchronizer` — offline-first sync helper (simulated transport; real network deferred) + +### Export + +- **JSON export/import** — full unit tree with schema versioning and round-trip fidelity +- **Binary export (`.utob`)** — `ProtobufCodec` with 12-byte UTOB header + zlib-compressed JSON +- **PDF export** — pure-Dart PDF 1.4 org-chart generator (Letter/A4/Tabloid, UNCLASSIFIED banner) +- Export dialog with format selection and PDF page-size picker + +--- + +## Planned Features (Hardening Phase) + +### Visual Symbology + +- MIL-STD-2525D tactical symbology rendering (hybrid: `milsymbol.js` on Web, SVG path engine on native) + +### Security + +- SQLCipher data-at-rest encryption for local Drift database +- Platform keychain key storage (Windows Credential Manager / Android Keystore) + +### Platform Hardening + +- Windows: multi-window support, `.msi` installer, `.uto` file association +- Web: PWA offline capability, IndexedDB quota management, service worker +- Android: battery profiling, touch-optimized targets (48×48 dp minimum) + +### Performance + +- Reingold-Tilford layout algorithm in background Dart Isolate +- Quadtree spatial index for hit-testing +- `RepaintBoundary` layer isolation +- 60 FPS at 5,000+ nodes (Windows), 2,000+ (Web), 1,500+ (Android) + +### UX + +- Undo/redo stack for all CRUD operations +- Canvas search/filter +- Keyboard shortcuts (Ctrl+Z, Ctrl+F, Ctrl+D, Ctrl+S) + +--- + +## Known Limitations + +- MIL-STD-2525D symbology not yet rendered (nodes show text labels only) +- No data-at-rest encryption (SQLCipher deferred) +- `DeltaSynchronizer` uses simulated online/offline; no real network transport +- `ProtobufCodec` uses zlib-compressed JSON payload; true `.proto` schema deferred +- Template instantiation uses sequential Drift inserts (not a single transaction) +- No undo/redo for CRUD operations +- Canvas layout is vertical tree only; horizontal layout not implemented +- No canvas search/filter + +--- + +## Upgrade Instructions + +*Initial release — no upgrade path required.* + +*Existing databases at schema v1 will be automatically migrated to v2 on first launch.* diff --git a/lib/application/blocs/personnel_cubit.dart b/lib/application/blocs/personnel_cubit.dart index b5457d5..a8163e3 100644 --- a/lib/application/blocs/personnel_cubit.dart +++ b/lib/application/blocs/personnel_cubit.dart @@ -52,7 +52,7 @@ class PersonnelLoaded extends PersonnelState { if (filterQuery.isEmpty) return unassigned; final q = filterQuery.toLowerCase(); return unassigned.where((p) { - return p.name.toLowerCase().contains(q) || + return p.displayLabel.toLowerCase().contains(q) || p.primaryMos.code.toLowerCase().contains(q) || p.payGrade.payGrade.toLowerCase().contains(q); }).toList(); @@ -187,6 +187,35 @@ class PersonnelCubit extends Cubit { } } + /// Updates an existing [record] in the personnel roster. + Future updatePersonnel(PersonnelRecord record) async { + try { + await personnelRepository.update(record); + } catch (e) { + emit(PersonnelError(e.toString())); + } + } + + /// Deletes the soldier with [soldierId] from the roster. + /// + /// If the soldier is currently assigned to a slot, the slot assignment + /// is cleared first. + Future deletePersonnel(String soldierId) async { + try { + // If assigned, clear the slot assignment first + if (state is PersonnelLoaded) { + final loaded = state as PersonnelLoaded; + final record = loaded.allPersonnel.where((p) => p.soldierId == soldierId).firstOrNull; + if (record != null && record.isAssigned) { + await slotRepository.clearAssignment(record.assignedSlotId!); + } + } + await personnelRepository.delete(soldierId); + } catch (e) { + emit(PersonnelError(e.toString())); + } + } + @override Future close() { _allSubscription?.cancel(); diff --git a/lib/application/blocs/unit_tree_cubit.dart b/lib/application/blocs/unit_tree_cubit.dart index 395018f..3157e04 100644 --- a/lib/application/blocs/unit_tree_cubit.dart +++ b/lib/application/blocs/unit_tree_cubit.dart @@ -142,8 +142,14 @@ class UnitTreeCubit extends Cubit { final roots = treeService.buildTree(_units, _slots); final currentSelection = state is UnitTreeLoaded ? (state as UnitTreeLoaded).selectedUnitId : null; - emit(UnitTreeLoaded( - units: _units, slots: _slots, roots: roots, selectedUnitId: currentSelection,),); + emit( + UnitTreeLoaded( + units: _units, + slots: _slots, + roots: roots, + selectedUnitId: currentSelection, + ), + ); } // --------------------------------------------------------------------------- @@ -206,6 +212,42 @@ class UnitTreeCubit extends Cubit { } } + /// Updates an existing [unit] in the tree. + Future updateUnit(UnitNode unit) async { + try { + await unitRepository.update(unit); + } catch (e) { + emit(UnitTreeError(e.toString())); + } + } + + /// Adds a new position [slot] to a unit. + Future addSlot(PositionSlot slot) async { + try { + await slotRepository.insert(slot); + } catch (e) { + emit(UnitTreeError(e.toString())); + } + } + + /// Updates an existing position [slot]. + Future updateSlot(PositionSlot slot) async { + try { + await slotRepository.update(slot); + } catch (e) { + emit(UnitTreeError(e.toString())); + } + } + + /// Deletes the position slot with [slotId]. + Future deleteSlot(String slotId) async { + try { + await slotRepository.delete(slotId); + } catch (e) { + emit(UnitTreeError(e.toString())); + } + } + /// Clears all units and slots (template reset). Future clearAll() async { try { diff --git a/lib/domain/entities/personnel_record.dart b/lib/domain/entities/personnel_record.dart index 20d5150..03d2419 100644 --- a/lib/domain/entities/personnel_record.dart +++ b/lib/domain/entities/personnel_record.dart @@ -36,13 +36,17 @@ enum ReadinessState { /// /// Contains identifying information, MOS qualifications, pay grade, /// and current readiness state. +/// +/// [name] is optional. When omitted the soldier is identified by +/// [positionTitle] (e.g. "Team Leader", "Rifleman"). class PersonnelRecord extends Equatable { const PersonnelRecord({ required this.soldierId, - required this.name, required this.primaryMos, required this.payGrade, required this.readinessState, + this.name, + this.positionTitle, this.qualifications = const [], this.assignedSlotId, }); @@ -50,8 +54,13 @@ class PersonnelRecord extends Equatable { /// Unique identifier for this soldier (UUID v4). final String soldierId; - /// The soldier's full name (Last, First MI format). - final String name; + /// The soldier's full name (Last, First MI format), or null if unnamed. + final String? name; + + /// The soldier's duty position title (e.g. "Team Leader", "Rifleman"). + /// + /// Used as the display label when [name] is null. + final String? positionTitle; /// The soldier's primary Military Occupational Specialty. final DutyMos primaryMos; @@ -68,6 +77,15 @@ class PersonnelRecord extends Equatable { /// The ID of the position slot this soldier is assigned to, or null. final String? assignedSlotId; + /// Returns the best available display label for this soldier. + /// + /// Prefers [name]; falls back to [positionTitle]; then a generic label. + String get displayLabel { + if (name != null && name!.isNotEmpty) return name!; + if (positionTitle != null && positionTitle!.isNotEmpty) return positionTitle!; + return '(Unnamed Soldier)'; + } + /// Returns true if this soldier is currently assigned to a position. bool get isAssigned => assignedSlotId != null; @@ -81,6 +99,9 @@ class PersonnelRecord extends Equatable { PersonnelRecord copyWith({ String? soldierId, String? name, + bool clearName = false, + String? positionTitle, + bool clearPositionTitle = false, DutyMos? primaryMos, AuthorizedRank? payGrade, List? qualifications, @@ -90,7 +111,8 @@ class PersonnelRecord extends Equatable { }) { return PersonnelRecord( soldierId: soldierId ?? this.soldierId, - name: name ?? this.name, + name: clearName ? null : (name ?? this.name), + positionTitle: clearPositionTitle ? null : (positionTitle ?? this.positionTitle), primaryMos: primaryMos ?? this.primaryMos, payGrade: payGrade ?? this.payGrade, qualifications: qualifications ?? this.qualifications, @@ -103,6 +125,7 @@ class PersonnelRecord extends Equatable { List get props => [ soldierId, name, + positionTitle, primaryMos, payGrade, qualifications, @@ -111,7 +134,7 @@ class PersonnelRecord extends Equatable { ]; @override - String toString() => 'PersonnelRecord(id: $soldierId, name: $name, ' + String toString() => 'PersonnelRecord(id: $soldierId, label: $displayLabel, ' 'mos: ${primaryMos.code}, grade: ${payGrade.payGrade}, ' 'readiness: ${readinessState.displayName})'; } diff --git a/lib/domain/entities/soldier_position.dart b/lib/domain/entities/soldier_position.dart new file mode 100644 index 0000000..9a07b3e --- /dev/null +++ b/lib/domain/entities/soldier_position.dart @@ -0,0 +1,108 @@ +import 'package:equatable/equatable.dart'; + +/// A named duty position that can be assigned to a soldier record. +/// +/// Built-in positions are seeded at first launch and cannot be deleted. +/// Users may add, rename, or delete custom positions. +class SoldierPosition extends Equatable { + const SoldierPosition({ + required this.positionId, + required this.title, + this.isBuiltIn = false, + }); + + /// Unique identifier (UUID v4 for custom; fixed string for built-ins). + final String positionId; + + /// Human-readable position title (e.g. "Team Leader", "Rifleman"). + final String title; + + /// True for positions seeded by the app; false for user-created ones. + final bool isBuiltIn; + + SoldierPosition copyWith({ + String? positionId, + String? title, + bool? isBuiltIn, + }) { + return SoldierPosition( + positionId: positionId ?? this.positionId, + title: title ?? this.title, + isBuiltIn: isBuiltIn ?? this.isBuiltIn, + ); + } + + @override + List get props => [positionId, title, isBuiltIn]; + + @override + String toString() => 'SoldierPosition($positionId, "$title", builtIn: $isBuiltIn)'; + + // --------------------------------------------------------------------------- + // Built-in positions + // --------------------------------------------------------------------------- + + /// The full list of built-in Army duty positions seeded on first launch. + static const List builtIns = [ + // ── Command / Staff ────────────────────────────────────────────────────── + SoldierPosition(positionId: 'bi_commander', title: 'Commander', isBuiltIn: true), + SoldierPosition( + positionId: 'bi_executive_officer', + title: 'Executive Officer', + isBuiltIn: true, + ), + SoldierPosition( + positionId: 'bi_command_sergeant_major', + title: 'Command Sergeant Major', + isBuiltIn: true, + ), + SoldierPosition(positionId: 'bi_first_sergeant', title: 'First Sergeant', isBuiltIn: true), + SoldierPosition( + positionId: 'bi_operations_officer', + title: 'S3 / Operations Officer', + isBuiltIn: true, + ), + SoldierPosition( + positionId: 'bi_intelligence_officer', + title: 'S2 / Intelligence Officer', + isBuiltIn: true, + ), + SoldierPosition( + positionId: 'bi_logistics_officer', + title: 'S4 / Logistics Officer', + isBuiltIn: true, + ), + SoldierPosition(positionId: 'bi_signal_officer', title: 'S6 / Signal Officer', isBuiltIn: true), + // ── Platoon ─────────────────────────────────────────────────────────────── + SoldierPosition(positionId: 'bi_platoon_leader', title: 'Platoon Leader', isBuiltIn: true), + SoldierPosition(positionId: 'bi_platoon_sergeant', title: 'Platoon Sergeant', isBuiltIn: true), + SoldierPosition(positionId: 'bi_rto', title: 'RTO / Radio Operator', isBuiltIn: true), + // ── Squad / Section ─────────────────────────────────────────────────────── + SoldierPosition(positionId: 'bi_squad_leader', title: 'Squad Leader', isBuiltIn: true), + SoldierPosition(positionId: 'bi_team_leader', title: 'Team Leader', isBuiltIn: true), + // ── Individual ──────────────────────────────────────────────────────────── + SoldierPosition(positionId: 'bi_rifleman', title: 'Rifleman', isBuiltIn: true), + SoldierPosition(positionId: 'bi_grenadier', title: 'Grenadier', isBuiltIn: true), + SoldierPosition( + positionId: 'bi_automatic_rifleman', + title: 'Automatic Rifleman', + isBuiltIn: true, + ), + SoldierPosition(positionId: 'bi_machine_gunner', title: 'Machine Gunner', isBuiltIn: true), + SoldierPosition(positionId: 'bi_sniper', title: 'Sniper', isBuiltIn: true), + SoldierPosition(positionId: 'bi_jtac', title: 'JTAC / Fire Support', isBuiltIn: true), + SoldierPosition(positionId: 'bi_medic', title: 'Medic', isBuiltIn: true), + SoldierPosition(positionId: 'bi_combat_engineer', title: 'Combat Engineer', isBuiltIn: true), + SoldierPosition(positionId: 'bi_driver', title: 'Driver', isBuiltIn: true), + SoldierPosition(positionId: 'bi_gunner', title: 'Gunner', isBuiltIn: true), + SoldierPosition(positionId: 'bi_loader', title: 'Loader', isBuiltIn: true), + SoldierPosition(positionId: 'bi_tank_commander', title: 'Tank Commander', isBuiltIn: true), + SoldierPosition(positionId: 'bi_crew_member', title: 'Crew Member', isBuiltIn: true), + SoldierPosition(positionId: 'bi_supply_sergeant', title: 'Supply Sergeant', isBuiltIn: true), + SoldierPosition(positionId: 'bi_armorer', title: 'Armorer', isBuiltIn: true), + SoldierPosition(positionId: 'bi_commo_sergeant', title: 'Commo Sergeant', isBuiltIn: true), + SoldierPosition(positionId: 'bi_intel_analyst', title: 'Intelligence Analyst', isBuiltIn: true), + SoldierPosition(positionId: 'bi_forward_observer', title: 'Forward Observer', isBuiltIn: true), + SoldierPosition(positionId: 'bi_chemical_officer', title: 'CBRN Specialist', isBuiltIn: true), + ]; +} diff --git a/lib/domain/value_objects/duty_mos.dart b/lib/domain/value_objects/duty_mos.dart index 7c8e8c9..b573ae6 100644 --- a/lib/domain/value_objects/duty_mos.dart +++ b/lib/domain/value_objects/duty_mos.dart @@ -74,6 +74,9 @@ class DutyMos { return _knownMosCodes.contains(code.trim().toUpperCase()); } + /// Returns all known MOS codes as a sorted list. + static List get allCodes => _knownMosCodes.toList()..sort(); + /// Returns all MOS codes for a given [DoctrinalBranch]. static Set codesForBranch(DoctrinalBranch branch) { return _branchMosMap[branch] ?? {}; diff --git a/lib/infrastructure/database/app_database.dart b/lib/infrastructure/database/app_database.dart index e1bac8d..2c7fb2d 100644 --- a/lib/infrastructure/database/app_database.dart +++ b/lib/infrastructure/database/app_database.dart @@ -2,6 +2,7 @@ import 'package:drift/drift.dart'; import 'package:drift_flutter/drift_flutter.dart'; import 'package:uto_manager/infrastructure/database/daos/personnel_dao.dart'; import 'package:uto_manager/infrastructure/database/daos/position_slot_dao.dart'; +import 'package:uto_manager/infrastructure/database/daos/soldier_positions_dao.dart'; import 'package:uto_manager/infrastructure/database/daos/template_dao.dart'; import 'package:uto_manager/infrastructure/database/daos/unit_dao.dart'; @@ -41,7 +42,8 @@ class PositionSlots extends Table { /// Drift table for soldier personnel records. class Personnel extends Table { TextColumn get soldierId => text().named('soldier_id')(); - TextColumn get name => text()(); + TextColumn get name => text().nullable()(); + TextColumn get positionTitle => text().named('position_title').nullable()(); TextColumn get primaryMos => text().named('primary_mos')(); TextColumn get payGrade => text().named('pay_grade')(); TextColumn get qualifications => text()(); // JSON-encoded list @@ -52,6 +54,16 @@ class Personnel extends Table { Set get primaryKey => {soldierId}; } +/// Drift table for user-managed soldier duty positions. +class SoldierPositions extends Table { + TextColumn get positionId => text().named('position_id')(); + TextColumn get title => text()(); + BoolColumn get isBuiltIn => boolean().named('is_built_in').withDefault(const Constant(false))(); + + @override + Set get primaryKey => {positionId}; +} + /// Drift table for serialized unit tree templates. class Templates extends Table { TextColumn get templateId => text().named('template_id')(); @@ -71,11 +83,11 @@ class Templates extends Table { /// The main Drift database for the UTO Manager application. /// -/// Manages all four core tables: units, position_slots, personnel, templates. +/// Manages all core tables: units, position_slots, personnel, soldier_positions, templates. /// Supports SQLite on Windows/Android and IndexedDB on Web via drift_web. @DriftDatabase( - tables: [Units, PositionSlots, Personnel, Templates], - daos: [UnitDao, PersonnelDao, PositionSlotDao, TemplateDao], + tables: [Units, PositionSlots, Personnel, SoldierPositions, Templates], + daos: [UnitDao, PersonnelDao, PositionSlotDao, SoldierPositionsDao, TemplateDao], ) class AppDatabase extends _$AppDatabase { /// Creates the production database backed by SQLite on disk. @@ -85,7 +97,7 @@ class AppDatabase extends _$AppDatabase { AppDatabase.forTesting(super.executor); @override - int get schemaVersion => 1; + int get schemaVersion => 2; @override MigrationStrategy get migration => MigrationStrategy( @@ -93,7 +105,12 @@ class AppDatabase extends _$AppDatabase { await m.createAll(); }, onUpgrade: (m, from, to) async { - // Future migration steps added here as schemaVersion increases. + if (from < 2) { + // v1 → v2: make Personnel.name nullable, add position_title column, + // and create the new soldier_positions table. + await m.addColumn(personnel, personnel.positionTitle); + await m.createTable(soldierPositions); + } }, ); } @@ -102,5 +119,11 @@ class AppDatabase extends _$AppDatabase { /// /// Uses SQLite via FFI on Windows/Android and WASM/IndexedDB on Web. QueryExecutor _openConnection() { - return driftDatabase(name: 'uto_manager'); + return driftDatabase( + name: 'uto_manager', + web: DriftWebOptions( + sqlite3Wasm: Uri.parse('sqlite3.wasm'), + driftWorker: Uri.parse('drift_worker.js'), + ), + ); } diff --git a/lib/infrastructure/database/daos/soldier_positions_dao.dart b/lib/infrastructure/database/daos/soldier_positions_dao.dart new file mode 100644 index 0000000..e36b230 --- /dev/null +++ b/lib/infrastructure/database/daos/soldier_positions_dao.dart @@ -0,0 +1,41 @@ +import 'package:drift/drift.dart'; +import 'package:uto_manager/infrastructure/database/app_database.dart'; + +part 'soldier_positions_dao.g.dart'; + +// The Drift-generated row type for the SoldierPositions table is also named +// `SoldierPosition` (same as our domain entity). We use a typedef here so the +// DAO can refer to the DB row type unambiguously. +typedef SoldierPositionRow = SoldierPosition; + +/// Data Access Object for [SoldierPositions] table operations. +@DriftAccessor(tables: [SoldierPositions]) +class SoldierPositionsDao extends DatabaseAccessor with _$SoldierPositionsDaoMixin { + SoldierPositionsDao(super.db); + + /// Returns all soldier position rows. + Future> getAll() => select(soldierPositions).get(); + + /// Returns the position with [positionId], or null if not found. + Future getById(String positionId) => + (select(soldierPositions)..where((t) => t.positionId.equals(positionId))).getSingleOrNull(); + + /// Inserts a new position row (insert-or-replace). + Future upsert(SoldierPositionsCompanion entry) => + into(soldierPositions).insertOnConflictUpdate(entry); + + /// Inserts multiple rows in a single transaction. + Future upsertAll(List entries) => + batch((b) => b.insertAllOnConflictUpdate(soldierPositions, entries)); + + /// Updates an existing position row. + Future updatePosition(SoldierPositionsCompanion entry) => + update(soldierPositions).replace(entry); + + /// Deletes the position with [positionId]. + Future deletePosition(String positionId) => + (delete(soldierPositions)..where((t) => t.positionId.equals(positionId))).go(); + + /// Returns a stream that emits all positions whenever the table changes. + Stream> watchAll() => select(soldierPositions).watch(); +} diff --git a/lib/infrastructure/repositories/drift_personnel_repository.dart b/lib/infrastructure/repositories/drift_personnel_repository.dart index a8cad50..1fbb3b0 100644 --- a/lib/infrastructure/repositories/drift_personnel_repository.dart +++ b/lib/infrastructure/repositories/drift_personnel_repository.dart @@ -26,6 +26,7 @@ class DriftPersonnelRepository implements PersonnelRepository { return domain.PersonnelRecord( soldierId: row.soldierId, name: row.name, + positionTitle: row.positionTitle, primaryMos: DutyMos.unvalidated(row.primaryMos), payGrade: AuthorizedRank.values.firstWhere((r) => r.name == row.payGrade), qualifications: (jsonDecode(row.qualifications) as List).cast(), @@ -39,7 +40,8 @@ class DriftPersonnelRepository implements PersonnelRepository { PersonnelCompanion _toCompanion(domain.PersonnelRecord record) { return PersonnelCompanion.insert( soldierId: record.soldierId, - name: record.name, + name: Value(record.name), + positionTitle: Value(record.positionTitle), primaryMos: record.primaryMos.code, payGrade: record.payGrade.name, qualifications: jsonEncode(record.qualifications), diff --git a/lib/infrastructure/repositories/drift_soldier_positions_repository.dart b/lib/infrastructure/repositories/drift_soldier_positions_repository.dart new file mode 100644 index 0000000..902964f --- /dev/null +++ b/lib/infrastructure/repositories/drift_soldier_positions_repository.dart @@ -0,0 +1,77 @@ +import 'package:drift/drift.dart' show Value; +import 'package:uto_manager/domain/entities/soldier_position.dart' as domain; +import 'package:uto_manager/infrastructure/database/app_database.dart' as db_lib; +import 'package:uto_manager/infrastructure/database/daos/soldier_positions_dao.dart'; + +/// Drift-backed repository for [domain.SoldierPosition] persistence. +/// +/// Converts between Drift [SoldierPositionRow] rows and domain +/// [domain.SoldierPosition] entities. All persistence is handled via +/// [SoldierPositionsDao]. +class DriftSoldierPositionsRepository { + const DriftSoldierPositionsRepository({required this.dao}); + + final SoldierPositionsDao dao; + + // --------------------------------------------------------------------------- + // Mapping helpers + // --------------------------------------------------------------------------- + + domain.SoldierPosition _toDomain(SoldierPositionRow row) { + return domain.SoldierPosition( + positionId: row.positionId, + title: row.title, + isBuiltIn: row.isBuiltIn, + ); + } + + db_lib.SoldierPositionsCompanion _toCompanion(domain.SoldierPosition pos) { + return db_lib.SoldierPositionsCompanion( + positionId: Value(pos.positionId), + title: Value(pos.title), + isBuiltIn: Value(pos.isBuiltIn), + ); + } + + // --------------------------------------------------------------------------- + // Public API + // --------------------------------------------------------------------------- + + /// Returns all positions (built-in + custom). + Future> getAll() async { + final rows = await dao.getAll(); + return rows.map(_toDomain).toList(); + } + + /// Returns a stream that emits all positions whenever the table changes. + Stream> watchAll() { + return dao.watchAll().map((rows) => rows.map(_toDomain).toList()); + } + + /// Inserts or updates a position. + Future upsert(domain.SoldierPosition position) async { + await dao.upsert(_toCompanion(position)); + } + + /// Seeds all [domain.SoldierPosition.builtIns] that are not yet in the database. + Future seedBuiltIns() async { + final existing = await dao.getAll(); + final existingIds = existing.map((SoldierPositionRow r) => r.positionId).toSet(); + final toInsert = domain.SoldierPosition.builtIns + .where((p) => !existingIds.contains(p.positionId)) + .map(_toCompanion) + .toList(); + if (toInsert.isNotEmpty) { + await dao.upsertAll(toInsert); + } + } + + /// Deletes a custom position by [positionId]. + /// + /// Built-in positions cannot be deleted; this is a no-op for them. + Future delete(String positionId) async { + final row = await dao.getById(positionId); + if (row == null || row.isBuiltIn) return; + await dao.deletePosition(positionId); + } +} diff --git a/lib/main.dart b/lib/main.dart index c383be0..72650c0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -9,6 +9,7 @@ import 'package:uto_manager/domain/services/unit_tree_service.dart'; import 'package:uto_manager/infrastructure/database/app_database.dart'; import 'package:uto_manager/infrastructure/repositories/drift_personnel_repository.dart'; import 'package:uto_manager/infrastructure/repositories/drift_position_slot_repository.dart'; +import 'package:uto_manager/infrastructure/repositories/drift_soldier_positions_repository.dart'; import 'package:uto_manager/infrastructure/repositories/drift_unit_repository.dart'; import 'package:uto_manager/presentation/screens/home_screen.dart'; @@ -32,6 +33,7 @@ class _UtoManagerAppState extends State { late final DriftUnitRepository _unitRepo; late final DriftPersonnelRepository _personnelRepo; late final DriftPositionSlotRepository _slotRepo; + late final DriftSoldierPositionsRepository _positionsRepo; late final UnitTreeService _treeService; late final AssignmentService _assignmentService; @@ -42,6 +44,7 @@ class _UtoManagerAppState extends State { _unitRepo = DriftUnitRepository(dao: _db.unitDao, db: _db); _personnelRepo = DriftPersonnelRepository(dao: _db.personnelDao); _slotRepo = DriftPositionSlotRepository(dao: _db.positionSlotDao); + _positionsRepo = DriftSoldierPositionsRepository(dao: _db.soldierPositionsDao); _treeService = const UnitTreeService(); _assignmentService = AssignmentService(treeService: _treeService); } @@ -91,7 +94,7 @@ class _UtoManagerAppState extends State { ), useMaterial3: true, ), - home: const HomeScreen(), + home: HomeScreen(positionsRepository: _positionsRepo), ), ); } diff --git a/lib/presentation/screens/dialogs/add_edit_personnel_dialog.dart b/lib/presentation/screens/dialogs/add_edit_personnel_dialog.dart new file mode 100644 index 0000000..68b7af1 --- /dev/null +++ b/lib/presentation/screens/dialogs/add_edit_personnel_dialog.dart @@ -0,0 +1,404 @@ +import 'package:flutter/material.dart'; +import 'package:uto_manager/domain/entities/authorized_rank.dart'; +import 'package:uto_manager/domain/entities/personnel_record.dart'; +import 'package:uto_manager/domain/entities/soldier_position.dart'; +import 'package:uto_manager/domain/value_objects/duty_mos.dart'; +import 'package:uto_manager/infrastructure/repositories/drift_soldier_positions_repository.dart'; +import 'package:uuid/uuid.dart'; + +/// Dialog for creating or editing a [PersonnelRecord]. +/// +/// Pass [existing] to edit; leave null to create a new record. +/// [positionsRepository] is used to load and manage the position list. +class AddEditPersonnelDialog extends StatefulWidget { + const AddEditPersonnelDialog({ + required this.positionsRepository, + super.key, + this.existing, + }); + + final DriftSoldierPositionsRepository positionsRepository; + final PersonnelRecord? existing; + + @override + State createState() => _AddEditPersonnelDialogState(); +} + +class _AddEditPersonnelDialogState extends State { + final _formKey = GlobalKey(); + + late final TextEditingController _nameCtrl; + late final TextEditingController _mosCtrl; + + late AuthorizedRank _payGrade; + late ReadinessState _readiness; + + /// The currently selected position, or null if none chosen. + SoldierPosition? _selectedPosition; + + /// All positions loaded from the repository. + List _positions = []; + + List _mosSuggestions = []; + + bool get _isEditing => widget.existing != null; + + @override + void initState() { + super.initState(); + final e = widget.existing; + _nameCtrl = TextEditingController(text: e?.name ?? ''); + _mosCtrl = TextEditingController(text: e?.primaryMos.code ?? ''); + _payGrade = e?.payGrade ?? AuthorizedRank.e4; + _readiness = e?.readinessState ?? ReadinessState.fullyMissionCapable; + _loadPositions(existingTitle: e?.positionTitle); + } + + @override + void dispose() { + _nameCtrl.dispose(); + _mosCtrl.dispose(); + super.dispose(); + } + + Future _loadPositions({String? existingTitle}) async { + await widget.positionsRepository.seedBuiltIns(); + final positions = await widget.positionsRepository.getAll(); + positions.sort((a, b) => a.title.compareTo(b.title)); + final selected = + existingTitle != null ? positions.where((p) => p.title == existingTitle).firstOrNull : null; + if (mounted) { + setState(() { + _positions = positions; + _selectedPosition = selected; + }); + } + } + + void _updateMosSuggestions(String query) { + if (query.isEmpty) { + setState(() => _mosSuggestions = []); + return; + } + final q = query.toUpperCase(); + final matches = + DutyMos.allCodes.where((c) => c.startsWith(q) || c.contains(q)).take(12).toList()..sort(); + setState(() => _mosSuggestions = matches); + } + + void _submit() { + if (!_formKey.currentState!.validate()) return; + + final mosCode = _mosCtrl.text.trim().toUpperCase(); + DutyMos mos; + try { + mos = DutyMos(mosCode); + } catch (_) { + mos = DutyMos.unvalidated(mosCode); + } + + final nameText = _nameCtrl.text.trim(); + + final record = PersonnelRecord( + soldierId: widget.existing?.soldierId ?? const Uuid().v4(), + name: nameText.isEmpty ? null : nameText, + positionTitle: _selectedPosition?.title, + primaryMos: mos, + payGrade: _payGrade, + readinessState: _readiness, + qualifications: widget.existing?.qualifications ?? const [], + assignedSlotId: widget.existing?.assignedSlotId, + ); + + Navigator.of(context).pop(record); + } + + // --------------------------------------------------------------------------- + // Position CRUD helpers + // --------------------------------------------------------------------------- + + Future _showAddPositionDialog() async { + final title = await _showPositionTitleDialog(context, initial: ''); + if (title == null || title.isEmpty) return; + final pos = SoldierPosition(positionId: const Uuid().v4(), title: title); + await widget.positionsRepository.upsert(pos); + await _loadPositions(); + if (mounted) { + setState(() => _selectedPosition = _positions.where((p) => p.title == title).firstOrNull); + } + } + + Future _showEditPositionDialog(SoldierPosition pos) async { + if (pos.isBuiltIn) return; // built-ins cannot be renamed + final title = await _showPositionTitleDialog(context, initial: pos.title); + if (title == null || title.isEmpty || title == pos.title) return; + await widget.positionsRepository.upsert(pos.copyWith(title: title)); + await _loadPositions(); + if (mounted) { + setState( + () => + _selectedPosition = _positions.where((p) => p.positionId == pos.positionId).firstOrNull, + ); + } + } + + Future _confirmDeletePosition(SoldierPosition pos) async { + if (pos.isBuiltIn) return; + final confirmed = await showDialog( + context: context, + builder: (ctx) => AlertDialog( + title: const Text('Delete Position?'), + content: Text('Remove the "${pos.title}" position? This cannot be undone.'), + actions: [ + TextButton(onPressed: () => Navigator.of(ctx).pop(false), child: const Text('Cancel')), + FilledButton( + style: FilledButton.styleFrom(backgroundColor: Colors.red.shade700), + onPressed: () => Navigator.of(ctx).pop(true), + child: const Text('Delete'), + ), + ], + ), + ); + if (confirmed ?? false) { + await widget.positionsRepository.delete(pos.positionId); + await _loadPositions(); + if (mounted && _selectedPosition?.positionId == pos.positionId) { + setState(() => _selectedPosition = null); + } + } + } + + /// Shows a simple text-input dialog for a position title. + Future _showPositionTitleDialog(BuildContext context, {required String initial}) { + final ctrl = TextEditingController(text: initial); + return showDialog( + context: context, + builder: (ctx) => AlertDialog( + title: Text(initial.isEmpty ? 'Add Position' : 'Rename Position'), + content: TextField( + controller: ctrl, + autofocus: true, + textCapitalization: TextCapitalization.words, + decoration: const InputDecoration( + labelText: 'Position Title', + hintText: 'e.g. Anti-Tank Gunner', + ), + onSubmitted: (_) => Navigator.of(ctx).pop(ctrl.text.trim()), + ), + actions: [ + TextButton(onPressed: () => Navigator.of(ctx).pop(), child: const Text('Cancel')), + FilledButton( + onPressed: () => Navigator.of(ctx).pop(ctrl.text.trim()), + child: const Text('Save'), + ), + ], + ), + ); + } + + // --------------------------------------------------------------------------- + // Build + // --------------------------------------------------------------------------- + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return AlertDialog( + title: Row( + children: [ + Icon(_isEditing ? Icons.edit : Icons.person_add, size: 20), + const SizedBox(width: 8), + Text(_isEditing ? 'Edit Soldier' : 'Add Soldier'), + ], + ), + content: SizedBox( + width: 420, + child: Form( + key: _formKey, + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // ── Position ───────────────────────────────────────────────── + _buildPositionRow(theme), + const SizedBox(height: 12), + + // ── Name (optional) ────────────────────────────────────────── + TextFormField( + controller: _nameCtrl, + decoration: const InputDecoration( + labelText: 'Full Name (optional)', + hintText: 'e.g. SMITH, John A.', + prefixIcon: Icon(Icons.badge_outlined), + helperText: 'Leave blank to identify by position only.', + ), + textCapitalization: TextCapitalization.characters, + ), + const SizedBox(height: 12), + + // ── Pay Grade ──────────────────────────────────────────────── + DropdownButtonFormField( + initialValue: _payGrade, + isExpanded: true, + decoration: const InputDecoration( + labelText: 'Pay Grade', + prefixIcon: Icon(Icons.military_tech_outlined), + ), + items: AuthorizedRank.values.map((r) { + return DropdownMenuItem( + value: r, + child: Text('${r.payGrade} — ${r.rankTitle}'), + ); + }).toList(), + onChanged: (v) => setState(() => _payGrade = v!), + ), + const SizedBox(height: 12), + + // ── MOS with autocomplete ──────────────────────────────────── + TextFormField( + controller: _mosCtrl, + decoration: const InputDecoration( + labelText: 'Primary MOS', + hintText: 'e.g. 11B, 68W, 25U', + prefixIcon: Icon(Icons.work_outline), + ), + textCapitalization: TextCapitalization.characters, + onChanged: _updateMosSuggestions, + validator: (v) { + if (v == null || v.trim().isEmpty) return 'MOS is required'; + final code = v.trim().toUpperCase(); + if (!DutyMos.isKnown(code)) { + return 'Unknown MOS code. Use a valid Army MOS (e.g. 11B, 68W)'; + } + return null; + }, + ), + if (_mosSuggestions.isNotEmpty) ...[ + const SizedBox(height: 4), + Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: theme.colorScheme.surfaceContainerHigh, + borderRadius: BorderRadius.circular(6), + border: Border.all(color: theme.colorScheme.outlineVariant), + ), + child: Wrap( + spacing: 4, + runSpacing: 4, + children: _mosSuggestions.map((code) { + return ActionChip( + label: Text( + code, + style: theme.textTheme.labelSmall?.copyWith( + fontWeight: FontWeight.bold, + ), + ), + onPressed: () { + _mosCtrl.text = code; + setState(() => _mosSuggestions = []); + }, + padding: const EdgeInsets.symmetric(horizontal: 4), + visualDensity: VisualDensity.compact, + ); + }).toList(), + ), + ), + ], + const SizedBox(height: 12), + + // ── Readiness State ────────────────────────────────────────── + DropdownButtonFormField( + initialValue: _readiness, + isExpanded: true, + decoration: const InputDecoration( + labelText: 'Readiness State', + prefixIcon: Icon(Icons.health_and_safety_outlined), + ), + items: ReadinessState.values.map((s) { + return DropdownMenuItem( + value: s, + child: Text(s.displayName), + ); + }).toList(), + onChanged: (v) => setState(() => _readiness = v!), + ), + ], + ), + ), + ), + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(context).pop(), + child: const Text('Cancel'), + ), + FilledButton.icon( + icon: Icon(_isEditing ? Icons.save : Icons.add, size: 16), + label: Text(_isEditing ? 'Save Changes' : 'Add Soldier'), + onPressed: _submit, + ), + ], + ); + } + + /// Builds the position dropdown row with add / edit / delete action buttons. + Widget _buildPositionRow(ThemeData theme) { + return Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Expanded( + child: _positions.isEmpty + ? const LinearProgressIndicator() + : DropdownButtonFormField( + initialValue: _selectedPosition, + isExpanded: true, + decoration: const InputDecoration( + labelText: 'Position', + prefixIcon: Icon(Icons.work_history_outlined), + ), + hint: const Text('Select position…'), + items: _positions.map((p) { + return DropdownMenuItem( + value: p, + child: Row( + children: [ + Expanded(child: Text(p.title, overflow: TextOverflow.ellipsis)), + if (p.isBuiltIn) + Icon( + Icons.lock_outline, + size: 12, + color: theme.colorScheme.onSurfaceVariant.withValues(alpha: 0.5), + ), + ], + ), + ); + }).toList(), + onChanged: (v) => setState(() => _selectedPosition = v), + ), + ), + // Add custom position + IconButton( + icon: const Icon(Icons.add_circle_outline, size: 18), + tooltip: 'Add custom position', + onPressed: _showAddPositionDialog, + ), + // Edit selected position (only if custom) + if (_selectedPosition != null && !_selectedPosition!.isBuiltIn) + IconButton( + icon: const Icon(Icons.edit_outlined, size: 18), + tooltip: 'Rename position', + onPressed: () => _showEditPositionDialog(_selectedPosition!), + ), + // Delete selected position (only if custom) + if (_selectedPosition != null && !_selectedPosition!.isBuiltIn) + IconButton( + icon: Icon(Icons.delete_outline, size: 18, color: theme.colorScheme.error), + tooltip: 'Delete position', + onPressed: () => _confirmDeletePosition(_selectedPosition!), + ), + ], + ); + } +} diff --git a/lib/presentation/screens/dialogs/add_edit_slot_dialog.dart b/lib/presentation/screens/dialogs/add_edit_slot_dialog.dart new file mode 100644 index 0000000..2f6b3c8 --- /dev/null +++ b/lib/presentation/screens/dialogs/add_edit_slot_dialog.dart @@ -0,0 +1,221 @@ +import 'package:flutter/material.dart'; +import 'package:uto_manager/domain/entities/authorized_rank.dart'; +import 'package:uto_manager/domain/entities/position_slot.dart'; +import 'package:uto_manager/domain/value_objects/duty_mos.dart'; +import 'package:uuid/uuid.dart'; + +/// Dialog for creating or editing a [PositionSlot] within a unit. +/// +/// Pass [existing] to edit; leave null to create a new slot. +/// [unitId] is required and identifies which unit owns this slot. +class AddEditSlotDialog extends StatefulWidget { + const AddEditSlotDialog({ + required this.unitId, + super.key, + this.existing, + }); + + final String unitId; + final PositionSlot? existing; + + @override + State createState() => _AddEditSlotDialogState(); +} + +class _AddEditSlotDialogState extends State { + final _formKey = GlobalKey(); + late final TextEditingController _titleCtrl; + late final TextEditingController _mosCtrl; + + late AuthorizedRank _rank; + late bool _isKeyLeader; + List _mosSuggestions = []; + + bool get _isEditing => widget.existing != null; + + @override + void initState() { + super.initState(); + final e = widget.existing; + _titleCtrl = TextEditingController(text: e?.positionTitle ?? ''); + _mosCtrl = TextEditingController(text: e?.dutyMos.code ?? ''); + _rank = e?.authorizedRank ?? AuthorizedRank.e4; + _isKeyLeader = e?.isKeyLeader ?? false; + } + + @override + void dispose() { + _titleCtrl.dispose(); + _mosCtrl.dispose(); + super.dispose(); + } + + void _updateMosSuggestions(String query) { + if (query.isEmpty) { + setState(() => _mosSuggestions = []); + return; + } + final q = query.toUpperCase(); + final matches = + DutyMos.allCodes.where((c) => c.startsWith(q) || c.contains(q)).take(12).toList()..sort(); + setState(() => _mosSuggestions = matches); + } + + void _submit() { + if (!_formKey.currentState!.validate()) return; + + final mosCode = _mosCtrl.text.trim().toUpperCase(); + DutyMos mos; + try { + mos = DutyMos(mosCode); + } catch (_) { + mos = DutyMos.unvalidated(mosCode); + } + + final slot = PositionSlot( + slotId: widget.existing?.slotId ?? const Uuid().v4(), + unitId: widget.unitId, + positionTitle: _titleCtrl.text.trim(), + dutyMos: mos, + authorizedRank: _rank, + isKeyLeader: _isKeyLeader, + assignedPersonnelId: widget.existing?.assignedPersonnelId, + ); + + Navigator.of(context).pop(slot); + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return AlertDialog( + title: Row( + children: [ + Icon(_isEditing ? Icons.edit : Icons.add_circle_outline, size: 20), + const SizedBox(width: 8), + Text(_isEditing ? 'Edit Position Slot' : 'Add Position Slot'), + ], + ), + content: SizedBox( + width: 400, + child: Form( + key: _formKey, + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Position Title + TextFormField( + controller: _titleCtrl, + decoration: const InputDecoration( + labelText: 'Position Title', + hintText: 'e.g. Platoon Leader, Squad Leader, Medic', + prefixIcon: Icon(Icons.work_history_outlined), + ), + textCapitalization: TextCapitalization.words, + validator: (v) { + if (v == null || v.trim().isEmpty) return 'Position title is required'; + return null; + }, + ), + const SizedBox(height: 12), + + // Authorized Rank + DropdownButtonFormField( + initialValue: _rank, + decoration: const InputDecoration( + labelText: 'Authorized Rank', + prefixIcon: Icon(Icons.military_tech_outlined), + ), + items: AuthorizedRank.values.map((r) { + return DropdownMenuItem( + value: r, + child: Text('${r.payGrade} — ${r.rankTitle}'), + ); + }).toList(), + onChanged: (v) => setState(() => _rank = v!), + ), + const SizedBox(height: 12), + + // Duty MOS with autocomplete + TextFormField( + controller: _mosCtrl, + decoration: const InputDecoration( + labelText: 'Duty MOS', + hintText: 'e.g. 11B, 68W, 25U', + prefixIcon: Icon(Icons.badge_outlined), + ), + textCapitalization: TextCapitalization.characters, + onChanged: _updateMosSuggestions, + validator: (v) { + if (v == null || v.trim().isEmpty) return 'Duty MOS is required'; + final code = v.trim().toUpperCase(); + if (!DutyMos.isKnown(code)) { + return 'Unknown MOS code (e.g. 11B, 68W, 25U)'; + } + return null; + }, + ), + if (_mosSuggestions.isNotEmpty) ...[ + const SizedBox(height: 4), + Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: theme.colorScheme.surfaceContainerHigh, + borderRadius: BorderRadius.circular(6), + border: Border.all(color: theme.colorScheme.outlineVariant), + ), + child: Wrap( + spacing: 4, + runSpacing: 4, + children: _mosSuggestions.map((code) { + return ActionChip( + label: Text( + code, + style: theme.textTheme.labelSmall?.copyWith( + fontWeight: FontWeight.bold, + ), + ), + onPressed: () { + _mosCtrl.text = code; + setState(() => _mosSuggestions = []); + }, + padding: const EdgeInsets.symmetric(horizontal: 4), + visualDensity: VisualDensity.compact, + ); + }).toList(), + ), + ), + ], + const SizedBox(height: 8), + + // Key Leader toggle + SwitchListTile( + title: const Text('Key Leader Position'), + subtitle: const Text('e.g. Commander, XO, Platoon Leader, PSG'), + value: _isKeyLeader, + onChanged: (v) => setState(() => _isKeyLeader = v), + contentPadding: EdgeInsets.zero, + dense: true, + ), + ], + ), + ), + ), + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(context).pop(), + child: const Text('Cancel'), + ), + FilledButton.icon( + icon: Icon(_isEditing ? Icons.save : Icons.add, size: 16), + label: Text(_isEditing ? 'Save Changes' : 'Add Slot'), + onPressed: _submit, + ), + ], + ); + } +} diff --git a/lib/presentation/screens/dialogs/add_edit_unit_dialog.dart b/lib/presentation/screens/dialogs/add_edit_unit_dialog.dart new file mode 100644 index 0000000..629f15c --- /dev/null +++ b/lib/presentation/screens/dialogs/add_edit_unit_dialog.dart @@ -0,0 +1,202 @@ +import 'package:flutter/material.dart'; +import 'package:uto_manager/domain/entities/doctrinal_branch.dart'; +import 'package:uto_manager/domain/entities/echelon.dart'; +import 'package:uto_manager/domain/entities/unit_node.dart'; +import 'package:uuid/uuid.dart'; + +/// Dialog for creating or editing a [UnitNode]. +/// +/// Pass [existing] to edit; leave null to create a new unit. +/// Pass [parentUnit] to pre-select the parent and constrain the echelon. +class AddEditUnitDialog extends StatefulWidget { + const AddEditUnitDialog({ + super.key, + this.existing, + this.parentUnit, + this.availableParents = const [], + }); + + final UnitNode? existing; + final UnitNode? parentUnit; + final List availableParents; + + @override + State createState() => _AddEditUnitDialogState(); +} + +class _AddEditUnitDialogState extends State { + final _formKey = GlobalKey(); + late final TextEditingController _nameCtrl; + + late Echelon _echelon; + late DoctrinalBranch _branch; + String? _parentUnitId; + late bool _isKeyLeader; + + bool get _isEditing => widget.existing != null; + + @override + void initState() { + super.initState(); + final e = widget.existing; + _nameCtrl = TextEditingController(text: e?.name ?? ''); + _echelon = e?.echelon ?? _defaultChildEchelon(); + _branch = e?.branch ?? DoctrinalBranch.infantry; + _parentUnitId = e?.parentUnitId ?? widget.parentUnit?.unitId; + _isKeyLeader = e?.isKeyLeader ?? false; + } + + Echelon _defaultChildEchelon() { + final parent = widget.parentUnit; + if (parent == null) return Echelon.brigade; + // Default to one level below parent + final childLevel = parent.echelon.level + 1; + return Echelon.values.firstWhere( + (e) => e.level == childLevel, + orElse: () => Echelon.team, + ); + } + + @override + void dispose() { + _nameCtrl.dispose(); + super.dispose(); + } + + void _submit() { + if (!_formKey.currentState!.validate()) return; + + // If no name provided, generate a default from echelon + branch abbreviation + final rawName = _nameCtrl.text.trim(); + final name = rawName.isEmpty ? '${_echelon.displayName} (${_branch.abbreviation})' : rawName; + + final unit = UnitNode( + unitId: widget.existing?.unitId ?? const Uuid().v4(), + echelon: _echelon, + branch: _branch, + name: name, + isKeyLeader: _isKeyLeader, + parentUnitId: _parentUnitId, + ); + + Navigator.of(context).pop(unit); + } + + @override + Widget build(BuildContext context) { + return AlertDialog( + title: Row( + children: [ + Icon(_isEditing ? Icons.edit : Icons.add_box_outlined, size: 20), + const SizedBox(width: 8), + Text(_isEditing ? 'Edit Unit' : 'Add Unit'), + ], + ), + content: SizedBox( + width: 420, + child: Form( + key: _formKey, + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Unit Name + TextFormField( + controller: _nameCtrl, + decoration: const InputDecoration( + labelText: 'Unit Name / Designation (optional)', + hintText: 'e.g. 1-68 AR, Alpha Company, 3rd Platoon', + helperText: 'Leave blank to auto-generate from echelon & branch', + prefixIcon: Icon(Icons.account_tree_outlined), + ), + textCapitalization: TextCapitalization.words, + ), + const SizedBox(height: 12), + + // Echelon + DropdownButtonFormField( + initialValue: _echelon, + decoration: const InputDecoration( + labelText: 'Echelon', + prefixIcon: Icon(Icons.layers_outlined), + ), + items: Echelon.values.map((e) { + return DropdownMenuItem( + value: e, + child: Text(e.displayName), + ); + }).toList(), + onChanged: (v) => setState(() => _echelon = v!), + ), + const SizedBox(height: 12), + + // Branch + DropdownButtonFormField( + initialValue: _branch, + decoration: const InputDecoration( + labelText: 'Branch / Functional Area', + prefixIcon: Icon(Icons.category_outlined), + ), + items: DoctrinalBranch.values.map((b) { + return DropdownMenuItem( + value: b, + child: Text('${b.abbreviation} — ${b.displayName}'), + ); + }).toList(), + onChanged: (v) => setState(() => _branch = v!), + ), + const SizedBox(height: 12), + + // Parent Unit (optional) + if (widget.availableParents.isNotEmpty) ...[ + DropdownButtonFormField( + initialValue: _parentUnitId, + decoration: const InputDecoration( + labelText: 'Parent Unit (optional)', + prefixIcon: Icon(Icons.device_hub_outlined), + ), + items: [ + const DropdownMenuItem( + child: Text('— None (root unit) —'), + ), + ...widget.availableParents.map((u) { + return DropdownMenuItem( + value: u.unitId, + child: Text('${u.echelon.displayName}: ${u.name}'), + ); + }), + ], + onChanged: (v) => setState(() => _parentUnitId = v), + ), + const SizedBox(height: 12), + ], + + // Key Leader toggle + SwitchListTile( + title: const Text('Key Leader Unit'), + subtitle: const Text('Marks this as a command/key leader node'), + value: _isKeyLeader, + onChanged: (v) => setState(() => _isKeyLeader = v), + contentPadding: EdgeInsets.zero, + dense: true, + ), + ], + ), + ), + ), + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(context).pop(), + child: const Text('Cancel'), + ), + FilledButton.icon( + icon: Icon(_isEditing ? Icons.save : Icons.add, size: 16), + label: Text(_isEditing ? 'Save Changes' : 'Add Unit'), + onPressed: _submit, + ), + ], + ); + } +} diff --git a/lib/presentation/screens/home_screen.dart b/lib/presentation/screens/home_screen.dart index a6c4c7e..4f792f6 100644 --- a/lib/presentation/screens/home_screen.dart +++ b/lib/presentation/screens/home_screen.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:uto_manager/application/blocs/personnel_cubit.dart'; @@ -5,10 +7,15 @@ import 'package:uto_manager/application/blocs/unit_tree_cubit.dart'; import 'package:uto_manager/application/blocs/validation_cubit.dart'; import 'package:uto_manager/domain/entities/personnel_record.dart'; import 'package:uto_manager/domain/entities/position_slot.dart'; +import 'package:uto_manager/domain/entities/unit_node.dart'; import 'package:uto_manager/domain/services/mtoe_validation_engine.dart'; import 'package:uto_manager/infrastructure/codecs/pdf_chart_exporter.dart'; import 'package:uto_manager/infrastructure/codecs/protobuf_codec.dart'; import 'package:uto_manager/infrastructure/codecs/unit_tree_codec.dart'; +import 'package:uto_manager/infrastructure/repositories/drift_soldier_positions_repository.dart'; +import 'package:uto_manager/presentation/screens/dialogs/add_edit_personnel_dialog.dart'; +import 'package:uto_manager/presentation/screens/dialogs/add_edit_slot_dialog.dart'; +import 'package:uto_manager/presentation/screens/dialogs/add_edit_unit_dialog.dart'; import 'package:uto_manager/presentation/widgets/personnel_list_tile.dart'; import 'package:uto_manager/presentation/widgets/position_slot_card.dart'; import 'package:uto_manager/presentation/widgets/uto_canvas_widget.dart'; @@ -20,7 +27,9 @@ import 'package:uto_manager/presentation/widgets/uto_canvas_widget.dart'; /// - Center: Interactive org chart canvas /// - Right panel: Unit inspector (selected unit's position slots + validation) class HomeScreen extends StatelessWidget { - const HomeScreen({super.key}); + const HomeScreen({required this.positionsRepository, super.key}); + + final DriftSoldierPositionsRepository positionsRepository; @override Widget build(BuildContext context) { @@ -48,6 +57,22 @@ class HomeScreen extends StatelessWidget { backgroundColor: const Color(0xFF1B3A6B), foregroundColor: Colors.white, actions: [ + // Add Unit button + BlocBuilder( + builder: (context, treeState) { + return IconButton( + icon: const Icon(Icons.add_box_outlined), + tooltip: 'Add Unit', + onPressed: () => _showAddUnitDialog(context, treeState), + ); + }, + ), + // Add Soldier button + IconButton( + icon: const Icon(Icons.person_add_outlined), + tooltip: 'Add Soldier', + onPressed: () => _showAddPersonnelDialog(context), + ), // Validate button BlocBuilder( builder: (context, treeState) { @@ -101,7 +126,7 @@ class HomeScreen extends StatelessWidget { const VerticalDivider(width: 1), // Right panel: Unit inspector SizedBox( - width: 280, + width: 300, child: _buildInspectorPanel(context), ), ], @@ -129,13 +154,28 @@ class HomeScreen extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - 'PERSONNEL ROSTER', - style: theme.textTheme.labelSmall?.copyWith( - fontWeight: FontWeight.bold, - letterSpacing: 1.2, - color: theme.colorScheme.onSurfaceVariant, - ), + Row( + children: [ + Text( + 'PERSONNEL ROSTER', + style: theme.textTheme.labelSmall?.copyWith( + fontWeight: FontWeight.bold, + letterSpacing: 1.2, + color: theme.colorScheme.onSurfaceVariant, + ), + ), + const Spacer(), + // Add soldier button in panel header + SizedBox( + height: 24, + child: IconButton( + icon: const Icon(Icons.person_add_outlined, size: 16), + tooltip: 'Add Soldier', + padding: EdgeInsets.zero, + onPressed: () => _showAddPersonnelDialog(context), + ), + ), + ], ), const SizedBox(height: 6), BlocBuilder( @@ -165,10 +205,40 @@ class HomeScreen extends StatelessWidget { } if (state is PersonnelLoaded) { final soldiers = state.filteredUnassigned; + if (soldiers.isEmpty && state.filterQuery.isEmpty) { + return Center( + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.person_outline, + size: 40, + color: theme.colorScheme.onSurfaceVariant.withValues(alpha: 0.4), + ), + const SizedBox(height: 8), + Text( + 'No soldiers yet', + style: theme.textTheme.bodySmall?.copyWith( + color: theme.colorScheme.onSurfaceVariant, + ), + ), + const SizedBox(height: 8), + FilledButton.tonalIcon( + icon: const Icon(Icons.person_add_outlined, size: 14), + label: const Text('Add Soldier'), + onPressed: () => _showAddPersonnelDialog(context), + ), + ], + ), + ), + ); + } if (soldiers.isEmpty) { return Center( child: Text( - 'No unassigned soldiers', + 'No matches', style: theme.textTheme.bodySmall?.copyWith( color: theme.colorScheme.onSurfaceVariant, ), @@ -177,13 +247,34 @@ class HomeScreen extends StatelessWidget { } return ListView.builder( itemCount: soldiers.length, - itemBuilder: (context, i) => PersonnelListTile(record: soldiers[i]), + itemBuilder: (context, i) => PersonnelListTile( + record: soldiers[i], + onTap: () => _showEditPersonnelDialog(context, soldiers[i]), + ), ); } return const SizedBox.shrink(); }, ), ), + // Show all personnel (assigned + unassigned) section + BlocBuilder( + builder: (context, state) { + if (state is! PersonnelLoaded) return const SizedBox.shrink(); + final assigned = state.allPersonnel.where((p) => p.isAssigned).toList(); + if (assigned.isEmpty) return const SizedBox.shrink(); + return Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + color: theme.colorScheme.surfaceContainerLow, + child: Text( + '${assigned.length} assigned • ${state.unassigned.length} unassigned', + style: theme.textTheme.labelSmall?.copyWith( + color: theme.colorScheme.onSurfaceVariant, + ), + ), + ); + }, + ), ], ); } @@ -232,12 +323,29 @@ class HomeScreen extends StatelessWidget { return Center( child: Padding( padding: const EdgeInsets.all(16), - child: Text( - 'Select a unit on the canvas to inspect its position slots.', - style: theme.textTheme.bodySmall?.copyWith( - color: theme.colorScheme.onSurfaceVariant, - ), - textAlign: TextAlign.center, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.touch_app_outlined, + size: 40, + color: theme.colorScheme.onSurfaceVariant.withValues(alpha: 0.4), + ), + const SizedBox(height: 8), + Text( + 'Select a unit on the canvas to inspect its position slots.', + style: theme.textTheme.bodySmall?.copyWith( + color: theme.colorScheme.onSurfaceVariant, + ), + textAlign: TextAlign.center, + ), + const SizedBox(height: 16), + FilledButton.tonalIcon( + icon: const Icon(Icons.add_box_outlined, size: 14), + label: const Text('Add Unit'), + onPressed: () => _showAddUnitDialog(context, treeState), + ), + ], ), ), ); @@ -254,20 +362,61 @@ class HomeScreen extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - // Inspector header + // Inspector header with edit/delete actions Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), color: theme.colorScheme.surfaceContainerHigh, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - 'UNIT INSPECTOR', - style: theme.textTheme.labelSmall?.copyWith( - fontWeight: FontWeight.bold, - letterSpacing: 1.2, - color: theme.colorScheme.onSurfaceVariant, - ), + Row( + children: [ + Text( + 'UNIT INSPECTOR', + style: theme.textTheme.labelSmall?.copyWith( + fontWeight: FontWeight.bold, + letterSpacing: 1.2, + color: theme.colorScheme.onSurfaceVariant, + ), + ), + const Spacer(), + // Edit unit button + SizedBox( + height: 24, + child: IconButton( + icon: const Icon(Icons.edit_outlined, size: 15), + tooltip: 'Edit Unit', + padding: EdgeInsets.zero, + onPressed: () => + _showEditUnitDialog(context, selectedUnit, treeState.units), + ), + ), + // Add child unit button + SizedBox( + height: 24, + child: IconButton( + icon: const Icon(Icons.add_box_outlined, size: 15), + tooltip: 'Add Child Unit', + padding: EdgeInsets.zero, + onPressed: () => + _showAddChildUnitDialog(context, selectedUnit, treeState), + ), + ), + // Delete unit button + SizedBox( + height: 24, + child: IconButton( + icon: Icon( + Icons.delete_outline, + size: 15, + color: theme.colorScheme.error, + ), + tooltip: 'Delete Unit & Subtree', + padding: EdgeInsets.zero, + onPressed: () => _confirmDeleteUnit(context, selectedUnit), + ), + ), + ], ), const SizedBox(height: 4), Text( @@ -310,14 +459,68 @@ class HomeScreen extends StatelessWidget { ); }, ), + // Slots header with add-slot button + Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + color: theme.colorScheme.surfaceContainerLow, + child: Row( + children: [ + Text( + 'POSITION SLOTS', + style: theme.textTheme.labelSmall?.copyWith( + fontWeight: FontWeight.bold, + letterSpacing: 1.1, + color: theme.colorScheme.onSurfaceVariant, + ), + ), + const Spacer(), + Text( + '${slots.where((s) => s.isFilled).length}/${slots.length} filled', + style: theme.textTheme.labelSmall?.copyWith( + color: theme.colorScheme.onSurfaceVariant, + ), + ), + const SizedBox(width: 8), + SizedBox( + height: 24, + child: IconButton( + icon: const Icon(Icons.add_circle_outline, size: 15), + tooltip: 'Add Position Slot', + padding: EdgeInsets.zero, + onPressed: () => _showAddSlotDialog(context, selectedUnit.unitId), + ), + ), + ], + ), + ), // Slots list Expanded( child: slots.isEmpty ? Center( - child: Text( - 'No position slots defined', - style: theme.textTheme.bodySmall?.copyWith( - color: theme.colorScheme.onSurfaceVariant, + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.work_outline, + size: 32, + color: theme.colorScheme.onSurfaceVariant.withValues(alpha: 0.4), + ), + const SizedBox(height: 8), + Text( + 'No position slots defined', + style: theme.textTheme.bodySmall?.copyWith( + color: theme.colorScheme.onSurfaceVariant, + ), + ), + const SizedBox(height: 8), + FilledButton.tonalIcon( + icon: const Icon(Icons.add_circle_outline, size: 14), + label: const Text('Add Slot'), + onPressed: () => _showAddSlotDialog(context, selectedUnit.unitId), + ), + ], ), ), ) @@ -333,6 +536,8 @@ class HomeScreen extends StatelessWidget { assignedSoldier: soldier, onUnassign: slot.isFilled ? () => _unassign(context, slot) : null, onAcceptDrop: (soldier) => _assign(context, soldier, slot), + onEdit: () => _showEditSlotDialog(context, slot), + onDelete: () => _confirmDeleteSlot(context, slot), ); }, ), @@ -402,6 +607,18 @@ class HomeScreen extends StatelessWidget { }, ), const SizedBox(width: 16), + // Personnel count + BlocBuilder( + builder: (context, state) { + if (state is! PersonnelLoaded) return const SizedBox.shrink(); + return _statusChip( + theme, + Icons.people_outline, + '${state.allPersonnel.length} soldiers', + ); + }, + ), + const SizedBox(width: 16), // Validation finding counts BlocBuilder( builder: (context, valState) { @@ -483,7 +700,7 @@ class HomeScreen extends StatelessWidget { } // --------------------------------------------------------------------------- - // Actions + // Assignment Actions // --------------------------------------------------------------------------- void _assign(BuildContext context, PersonnelRecord soldier, PositionSlot slot) { @@ -494,6 +711,172 @@ class HomeScreen extends StatelessWidget { context.read().unassignFromSlot(slot); } + // --------------------------------------------------------------------------- + // Personnel CRUD + // --------------------------------------------------------------------------- + + Future _showAddPersonnelDialog(BuildContext context) async { + final record = await showDialog( + context: context, + builder: (_) => AddEditPersonnelDialog(positionsRepository: positionsRepository), + ); + if (record != null && context.mounted) { + unawaited(context.read().addPersonnel(record)); + } + } + + Future _showEditPersonnelDialog(BuildContext context, PersonnelRecord existing) async { + final record = await showDialog( + context: context, + builder: (_) => AddEditPersonnelDialog( + positionsRepository: positionsRepository, + existing: existing, + ), + ); + if (record != null && context.mounted) { + unawaited(context.read().updatePersonnel(record)); + } + } + + // --------------------------------------------------------------------------- + // Unit CRUD + // --------------------------------------------------------------------------- + + Future _showAddUnitDialog(BuildContext context, UnitTreeState treeState) async { + final units = treeState is UnitTreeLoaded ? treeState.units : []; + final unit = await showDialog( + context: context, + builder: (_) => AddEditUnitDialog(availableParents: units), + ); + if (unit != null && context.mounted) { + unawaited(context.read().addUnit(unit)); + } + } + + Future _showAddChildUnitDialog( + BuildContext context, + UnitNode parent, + UnitTreeLoaded treeState, + ) async { + final unit = await showDialog( + context: context, + builder: (_) => AddEditUnitDialog( + parentUnit: parent, + availableParents: treeState.units, + ), + ); + if (unit != null && context.mounted) { + unawaited(context.read().addUnit(unit)); + } + } + + Future _showEditUnitDialog( + BuildContext context, + UnitNode existing, + List allUnits, + ) async { + // Exclude the unit itself and its descendants from available parents + final unit = await showDialog( + context: context, + builder: (_) => AddEditUnitDialog( + existing: existing, + availableParents: allUnits.where((u) => u.unitId != existing.unitId).toList(), + ), + ); + if (unit != null && context.mounted) { + unawaited(context.read().updateUnit(unit)); + } + } + + Future _confirmDeleteUnit(BuildContext context, UnitNode unit) async { + final confirmed = await showDialog( + context: context, + builder: (ctx) => AlertDialog( + title: const Text('Delete Unit?'), + content: Text( + 'Delete "${unit.name}" and all its subordinate units and position slots? ' + 'This action cannot be undone.', + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(ctx).pop(false), + child: const Text('Cancel'), + ), + FilledButton( + style: FilledButton.styleFrom(backgroundColor: Colors.red.shade700), + onPressed: () => Navigator.of(ctx).pop(true), + child: const Text('Delete'), + ), + ], + ), + ); + if ((confirmed ?? false) && context.mounted) { + unawaited(context.read().deleteSubtree(unit.unitId)); + } + } + + // --------------------------------------------------------------------------- + // Position Slot CRUD + // --------------------------------------------------------------------------- + + Future _showAddSlotDialog(BuildContext context, String unitId) async { + final slot = await showDialog( + context: context, + builder: (_) => AddEditSlotDialog(unitId: unitId), + ); + if (slot != null && context.mounted) { + unawaited(context.read().addSlot(slot)); + } + } + + Future _showEditSlotDialog(BuildContext context, PositionSlot existing) async { + final slot = await showDialog( + context: context, + builder: (_) => AddEditSlotDialog(unitId: existing.unitId, existing: existing), + ); + if (slot != null && context.mounted) { + unawaited(context.read().updateSlot(slot)); + } + } + + Future _confirmDeleteSlot(BuildContext context, PositionSlot slot) async { + final confirmed = await showDialog( + context: context, + builder: (ctx) => AlertDialog( + title: const Text('Delete Position Slot?'), + content: Text( + 'Remove the "${slot.positionTitle}" (${slot.dutyMos.code}) slot? ' + '${slot.isFilled ? "The assigned soldier will be unassigned. " : ""}' + 'This cannot be undone.', + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(ctx).pop(false), + child: const Text('Cancel'), + ), + FilledButton( + style: FilledButton.styleFrom(backgroundColor: Colors.red.shade700), + onPressed: () => Navigator.of(ctx).pop(true), + child: const Text('Delete'), + ), + ], + ), + ); + if ((confirmed ?? false) && context.mounted) { + // If slot is filled, unassign the soldier first + if (slot.isFilled) { + await context.read().unassignFromSlot(slot); + } + if (context.mounted) { + unawaited(context.read().deleteSlot(slot.slotId)); + } + } + } + + // --------------------------------------------------------------------------- + // Validation & Export + // --------------------------------------------------------------------------- + void _runValidation(BuildContext context, UnitTreeLoaded treeState) { final personnel = context.read().state is PersonnelLoaded ? (context.read().state as PersonnelLoaded).allPersonnel @@ -628,7 +1011,10 @@ class _ExportDialogState extends State<_ExportDialog> { color: Colors.red.shade900.withAlpha(80), borderRadius: BorderRadius.circular(4), ), - child: Text(_error!, style: const TextStyle(fontSize: 11, color: Colors.redAccent)), + child: Text( + _error!, + style: const TextStyle(fontSize: 11, color: Colors.redAccent), + ), ), ], ], diff --git a/lib/presentation/widgets/personnel_list_tile.dart b/lib/presentation/widgets/personnel_list_tile.dart index c9bebfb..20f6f33 100644 --- a/lib/presentation/widgets/personnel_list_tile.dart +++ b/lib/presentation/widgets/personnel_list_tile.dart @@ -5,15 +5,23 @@ import 'package:uto_manager/presentation/widgets/position_slot_card.dart' show P /// A draggable list tile representing a soldier in the personnel panel. /// /// Can be dragged onto a [PositionSlotCard] to assign the soldier. +/// Tap to edit; long-press for a context menu with edit/delete options. class PersonnelListTile extends StatelessWidget { const PersonnelListTile({ - required this.record, super.key, + required this.record, + super.key, this.onTap, + this.onDelete, }); final PersonnelRecord record; + + /// Called when the tile is tapped (opens edit dialog). final VoidCallback? onTap; + /// Called when the user selects Delete from the context menu. + final VoidCallback? onDelete; + @override Widget build(BuildContext context) { final theme = Theme.of(context); @@ -40,7 +48,7 @@ class PersonnelListTile extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ Text( - record.name, + record.displayLabel, style: theme.textTheme.bodySmall?.copyWith( fontWeight: FontWeight.bold, color: theme.colorScheme.onPrimaryContainer, @@ -84,7 +92,7 @@ class PersonnelListTile extends StatelessWidget { ), ), title: Text( - record.name, + record.displayLabel, style: theme.textTheme.bodySmall?.copyWith(fontWeight: FontWeight.w600), ), subtitle: Text( diff --git a/lib/presentation/widgets/position_slot_card.dart b/lib/presentation/widgets/position_slot_card.dart index 963f821..18d1d5d 100644 --- a/lib/presentation/widgets/position_slot_card.dart +++ b/lib/presentation/widgets/position_slot_card.dart @@ -13,6 +13,8 @@ class PositionSlotCard extends StatelessWidget { this.assignedSoldier, this.onUnassign, this.onAcceptDrop, + this.onEdit, + this.onDelete, }); final PositionSlot slot; @@ -20,6 +22,12 @@ class PositionSlotCard extends StatelessWidget { final VoidCallback? onUnassign; final void Function(PersonnelRecord soldier)? onAcceptDrop; + /// Called when the user taps the edit button on this slot. + final VoidCallback? onEdit; + + /// Called when the user taps the delete button on this slot. + final VoidCallback? onDelete; + @override Widget build(BuildContext context) { final theme = Theme.of(context); @@ -67,21 +75,48 @@ class PositionSlotCard extends StatelessWidget { fontWeight: slot.isVacant ? FontWeight.bold : FontWeight.normal, ), ), - trailing: slot.isFilled && onUnassign != null - ? IconButton( - icon: const Icon(Icons.person_remove, size: 16), - onPressed: onUnassign, - tooltip: 'Unassign soldier', - padding: EdgeInsets.zero, - constraints: const BoxConstraints(minWidth: 28, minHeight: 28), - ) - : null, + trailing: _buildTrailing(theme), ), ); }, ); } + Widget? _buildTrailing(ThemeData theme) { + final hasActions = onUnassign != null || onEdit != null || onDelete != null; + if (!hasActions) return null; + + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (slot.isFilled && onUnassign != null) + IconButton( + icon: const Icon(Icons.person_remove, size: 15), + onPressed: onUnassign, + tooltip: 'Unassign soldier', + padding: EdgeInsets.zero, + constraints: const BoxConstraints(minWidth: 26, minHeight: 26), + ), + if (onEdit != null) + IconButton( + icon: const Icon(Icons.edit_outlined, size: 15), + onPressed: onEdit, + tooltip: 'Edit slot', + padding: EdgeInsets.zero, + constraints: const BoxConstraints(minWidth: 26, minHeight: 26), + ), + if (onDelete != null) + IconButton( + icon: Icon(Icons.delete_outline, size: 15, color: theme.colorScheme.error), + onPressed: onDelete, + tooltip: 'Delete slot', + padding: EdgeInsets.zero, + constraints: const BoxConstraints(minWidth: 26, minHeight: 26), + ), + ], + ); + } + Widget _buildMosBadge(ThemeData theme) { return Container( width: 40, diff --git a/phased_development_plan.md b/phased_development_plan.md index 9cdfab9..571ecdd 100644 --- a/phased_development_plan.md +++ b/phased_development_plan.md @@ -642,7 +642,27 @@ This document breaks the master development plan into five structured phases spa --- -## Phase 5: Platform Optimization, Profiling, & Hardening +## Phase 5: UI/CRUD Layer & Web Platform ✅ COMPLETE (2026-08-09) + +> **Status:** Phase 5 UI/CRUD layer and web platform support completed and merged to `main`. +> 263/263 tests passing. `flutter analyze` — No issues found. +> +> **Completed in this phase:** +> +> - `SoldierPosition` entity — 31 built-in Army duty positions + user-defined custom positions +> - `SoldierPositions` Drift table + `SoldierPositionsDao` + `DriftSoldierPositionsRepository` +> - `AppDatabase` schema v2 migration — adds `position_title` to `Personnel`, creates `soldier_positions` table +> - Web platform: `drift_worker.dart/js`, `sqlite3.wasm`, platform-adaptive `driftDatabase()` connection +> - `PersonnelRecord` — extended with `positionTitle`, `displayLabel`, `isAssigned`, `isFmc` +> - `UnitTreeCubit` — full CRUD: `addUnit`, `updateUnit`, `addSlot`, `updateSlot`, `deleteSlot`, `clearAll` +> - `PersonnelCubit` — full CRUD: `addPersonnel`, `updatePersonnel`, `deletePersonnel` +> - `AddEditPersonnelDialog` — position picker with custom position management, MOS autocomplete +> - `AddEditSlotDialog` — slot creation/editing with MOS autocomplete and key-leader toggle +> - `AddEditUnitDialog` — unit creation/editing with echelon/branch/parent selectors +> - `HomeScreen` — full CRUD app bar actions, inspector CRUD buttons, export dialog with format/page-size selection +> +> **Deferred to hardening:** MIL-STD-2525D symbology engine, SQLCipher encryption, +> undo/redo stack, multi-window support, PWA service worker, Android battery profiling. ### Weeks 20 – 24 diff --git a/test/widget_test.dart b/test/widget_test.dart index 2d28679..e319c0a 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -11,11 +11,13 @@ import 'package:uto_manager/domain/services/unit_tree_service.dart'; import 'package:uto_manager/infrastructure/database/app_database.dart'; import 'package:uto_manager/infrastructure/repositories/drift_personnel_repository.dart'; import 'package:uto_manager/infrastructure/repositories/drift_position_slot_repository.dart'; +import 'package:uto_manager/infrastructure/repositories/drift_soldier_positions_repository.dart'; import 'package:uto_manager/infrastructure/repositories/drift_unit_repository.dart'; import 'package:uto_manager/presentation/screens/home_screen.dart'; void main() { late AppDatabase db; + late DriftSoldierPositionsRepository positionsRepo; late UnitTreeCubit unitTreeCubit; late PersonnelCubit personnelCubit; late TemplateCubit templateCubit; @@ -28,6 +30,7 @@ void main() { final unitRepo = DriftUnitRepository(dao: db.unitDao, db: db); final personnelRepo = DriftPersonnelRepository(dao: db.personnelDao); final slotRepo = DriftPositionSlotRepository(dao: db.positionSlotDao); + positionsRepo = DriftSoldierPositionsRepository(dao: db.soldierPositionsDao); const assignmentService = AssignmentService(treeService: treeService); // Create cubits but do NOT call startWatching() — avoids live streams. @@ -66,7 +69,7 @@ void main() { BlocProvider.value(value: templateCubit), BlocProvider.value(value: validationCubit), ], - child: const MaterialApp(home: HomeScreen()), + child: MaterialApp(home: HomeScreen(positionsRepository: positionsRepo)), ), ); diff --git a/web/drift_worker.dart b/web/drift_worker.dart new file mode 100644 index 0000000..0b4af91 --- /dev/null +++ b/web/drift_worker.dart @@ -0,0 +1,5 @@ +import 'package:drift/wasm.dart'; + +void main() { + WasmDatabase.workerMainForOpen(); +} diff --git a/web/drift_worker.js b/web/drift_worker.js new file mode 100644 index 0000000..fee5b91 --- /dev/null +++ b/web/drift_worker.js @@ -0,0 +1,14475 @@ +(function dartProgram(){function copyProperties(a,b){var s=Object.keys(a) +for(var r=0;r=0)return true +if(typeof version=="function"&&version.length==0){var q=version() +if(/^\d+\.\d+\.\d+\.\d+$/.test(q))return true}}catch(p){}return false}() +function inherit(a,b){a.prototype.constructor=a +a.prototype["$i"+a.name]=a +if(b!=null){if(z){Object.setPrototypeOf(a.prototype,b.prototype) +return}var s=Object.create(b.prototype) +copyProperties(a.prototype,s) +a.prototype=s}}function inheritMany(a,b){for(var s=0;s4294967295)throw A.c(A.a5(a,0,4294967295,"length",null)) +return J.v1(new Array(a),b)}, +qz(a,b){if(a<0)throw A.c(A.W("Length must be a non-negative integer: "+a,null)) +return A.l(new Array(a),b.h("A<0>"))}, +v1(a,b){var s=A.l(a,b.h("A<0>")) +s.$flags=1 +return s}, +v2(a,b){var s=t.bP +return J.uq(s.a(a),s.a(b))}, +qA(a){if(a<256)switch(a){case 9:case 10:case 11:case 12:case 13:case 32:case 133:case 160:return!0 +default:return!1}switch(a){case 5760:case 8192:case 8193:case 8194:case 8195:case 8196:case 8197:case 8198:case 8199:case 8200:case 8201:case 8202:case 8232:case 8233:case 8239:case 8287:case 12288:case 65279:return!0 +default:return!1}}, +v3(a,b){var s,r +for(s=a.length;b0;b=r){r=b-1 +if(!(r>>0===b&&b").u(c).h("fT<1,2>")) +return new A.d_(a,b.h("@<0>").u(c).h("d_<1,2>"))}, +qB(a){return new A.dU("Field '"+a+"' has been assigned during initialization.")}, +qC(a){return new A.dU("Field '"+a+"' has not been initialized.")}, +v5(a){return new A.dU("Field '"+a+"' has already been initialized.")}, +oI(a){var s,r=a^48 +if(r<=9)return r +s=a|32 +if(97<=s&&s<=102)return s-87 +return-1}, +cL(a,b){a=a+b&536870911 +a=a+((a&524287)<<10)&536870911 +return a^a>>>6}, +pk(a){a=a+((a&67108863)<<3)&536870911 +a^=a>>>11 +return a+((a&16383)<<15)&536870911}, +dA(a,b,c){return a}, +pT(a){var s,r +for(s=$.bf.length,r=0;rc)A.K(A.a5(b,0,c,"start",null))}return new A.dc(a,b,c,d.h("dc<0>"))}, +ik(a,b,c,d){if(t.V.b(a))return new A.d1(a,b,c.h("@<0>").u(d).h("d1<1,2>")) +return new A.aR(a,b,c.h("@<0>").u(d).h("aR<1,2>"))}, +pl(a,b,c){var s="takeCount" +A.cm(b,s,t.S) +A.am(b,s) +if(t.V.b(a))return new A.f6(a,b,c.h("f6<0>")) +return new A.dd(a,b,c.h("dd<0>"))}, +qY(a,b,c){var s="count" +if(t.V.b(a)){A.cm(b,s,t.S) +A.am(b,s) +return new A.dO(a,b,c.h("dO<0>"))}A.cm(b,s,t.S) +A.am(b,s) +return new A.c7(a,b,c.h("c7<0>"))}, +v_(a,b,c){return new A.d0(a,b,c.h("d0<0>"))}, +aI(){return new A.b0("No element")}, +qx(){return new A.b0("Too few elements")}, +cQ:function cQ(){}, +eZ:function eZ(a,b){this.a=a +this.$ti=b}, +d_:function d_(a,b){this.a=a +this.$ti=b}, +fT:function fT(a,b){this.a=a +this.$ti=b}, +fQ:function fQ(){}, +as:function as(a,b){this.a=a +this.$ti=b}, +dU:function dU(a){this.a=a}, +hM:function hM(a){this.a=a}, +oP:function oP(){}, +lq:function lq(){}, +x:function x(){}, +Q:function Q(){}, +dc:function dc(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.$ti=d}, +b9:function b9(a,b,c){var _=this +_.a=a +_.b=b +_.c=0 +_.d=null +_.$ti=c}, +aR:function aR(a,b,c){this.a=a +this.b=b +this.$ti=c}, +d1:function d1(a,b,c){this.a=a +this.b=b +this.$ti=c}, +d6:function d6(a,b,c){var _=this +_.a=null +_.b=a +_.c=b +_.$ti=c}, +I:function I(a,b,c){this.a=a +this.b=b +this.$ti=c}, +bd:function bd(a,b,c){this.a=a +this.b=b +this.$ti=c}, +dg:function dg(a,b,c){this.a=a +this.b=b +this.$ti=c}, +f9:function f9(a,b,c){this.a=a +this.b=b +this.$ti=c}, +fa:function fa(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=null +_.$ti=d}, +dd:function dd(a,b,c){this.a=a +this.b=b +this.$ti=c}, +f6:function f6(a,b,c){this.a=a +this.b=b +this.$ti=c}, +fE:function fE(a,b,c){this.a=a +this.b=b +this.$ti=c}, +c7:function c7(a,b,c){this.a=a +this.b=b +this.$ti=c}, +dO:function dO(a,b,c){this.a=a +this.b=b +this.$ti=c}, +fx:function fx(a,b,c){this.a=a +this.b=b +this.$ti=c}, +fy:function fy(a,b,c){this.a=a +this.b=b +this.$ti=c}, +fz:function fz(a,b,c){var _=this +_.a=a +_.b=b +_.c=!1 +_.$ti=c}, +d2:function d2(a){this.$ti=a}, +f7:function f7(a){this.$ti=a}, +fJ:function fJ(a,b){this.a=a +this.$ti=b}, +fK:function fK(a,b){this.a=a +this.$ti=b}, +c_:function c_(a,b,c){this.a=a +this.b=b +this.$ti=c}, +d0:function d0(a,b,c){this.a=a +this.b=b +this.$ti=c}, +d4:function d4(a,b,c){var _=this +_.a=a +_.b=b +_.c=-1 +_.$ti=c}, +aN:function aN(){}, +cM:function cM(){}, +e9:function e9(){}, +fv:function fv(a,b){this.a=a +this.$ti=b}, +iN:function iN(a){this.a=a}, +hp:function hp(){}, +tA(a){var s=v.mangledGlobalNames[a] +if(s!=null)return s +return"minified:"+a}, +y8(a,b){var s +if(b!=null){s=b.x +if(s!=null)return s}return t.dX.b(a)}, +y(a){var s +if(typeof a=="string")return a +if(typeof a=="number"){if(a!==0)return""+a}else if(!0===a)return"true" +else if(!1===a)return"false" +else if(a==null)return"null" +s=J.bg(a) +return s}, +fr(a){var s,r=$.qI +if(r==null)r=$.qI=Symbol("identityHashCode") +s=a[r] +if(s==null){s=Math.random()*0x3fffffff|0 +a[r]=s}return s}, +qP(a,b){var s,r,q,p,o,n=null,m=/^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(a) +if(m==null)return n +if(3>=m.length)return A.a(m,3) +s=m[3] +if(b==null){if(s!=null)return parseInt(a,10) +if(m[2]!=null)return parseInt(a,16) +return n}if(b<2||b>36)throw A.c(A.a5(b,2,36,"radix",n)) +if(b===10&&s!=null)return parseInt(a,10) +if(b<10||s==null){r=b<=10?47+b:86+b +q=m[1] +for(p=q.length,o=0;or)return n}return parseInt(a,b)}, +iz(a){var s,r,q,p +if(a instanceof A.f)return A.aV(A.aG(a),null) +s=J.dD(a) +if(s===B.aC||s===B.aF||t.cx.b(a)){r=B.S(a) +if(r!=="Object"&&r!=="")return r +q=a.constructor +if(typeof q=="function"){p=q.name +if(typeof p=="string"&&p!=="Object"&&p!=="")return p}}return A.aV(A.aG(a),null)}, +qQ(a){var s,r,q +if(a==null||typeof a=="number"||A.cj(a))return J.bg(a) +if(typeof a=="string")return JSON.stringify(a) +if(a instanceof A.aM)return a.i(0) +if(a instanceof A.cR)return a.fT(!0) +s=$.ub() +for(r=0;r<1;++r){q=s[r].kg(a) +if(q!=null)return q}return"Instance of '"+A.iz(a)+"'"}, +ve(){if(!!self.location)return self.location.href +return null}, +qH(a){var s,r,q,p,o=a.length +if(o<=500)return String.fromCharCode.apply(null,a) +for(s="",r=0;r65535)return A.vi(a)}return A.qH(a)}, +vj(a,b,c){var s,r,q,p +if(c<=500&&b===0&&c===a.length)return String.fromCharCode.apply(null,a) +for(s=b,r="";s>>0,s&1023|56320)}}throw A.c(A.a5(a,0,1114111,null,null))}, +aS(a){if(a.date===void 0)a.date=new Date(a.a) +return a.date}, +qO(a){return a.c?A.aS(a).getUTCFullYear()+0:A.aS(a).getFullYear()+0}, +qM(a){return a.c?A.aS(a).getUTCMonth()+1:A.aS(a).getMonth()+1}, +qJ(a){return a.c?A.aS(a).getUTCDate()+0:A.aS(a).getDate()+0}, +qK(a){return a.c?A.aS(a).getUTCHours()+0:A.aS(a).getHours()+0}, +qL(a){return a.c?A.aS(a).getUTCMinutes()+0:A.aS(a).getMinutes()+0}, +qN(a){return a.c?A.aS(a).getUTCSeconds()+0:A.aS(a).getSeconds()+0}, +vg(a){return a.c?A.aS(a).getUTCMilliseconds()+0:A.aS(a).getMilliseconds()+0}, +vh(a){return B.c.af((a.c?A.aS(a).getUTCDay()+0:A.aS(a).getDay()+0)+6,7)+1}, +vf(a){var s=a.$thrownJsError +if(s==null)return null +return A.ac(s)}, +fs(a,b){var s +if(a.$thrownJsError==null){s=new Error() +A.aj(a,s) +a.$thrownJsError=s +s.stack=b.i(0)}}, +y2(a){throw A.c(A.dz(a))}, +a(a,b){if(a==null)J.av(a) +throw A.c(A.dC(a,b))}, +dC(a,b){var s,r="index" +if(!A.bW(b))return new A.bq(!0,b,r,null) +s=A.d(J.av(a)) +if(b<0||b>=s)return A.i6(b,s,a,null,r) +return A.ll(b,r)}, +xU(a,b,c){if(a>c)return A.a5(a,0,c,"start",null) +if(b!=null)if(bc)return A.a5(b,a,c,"end",null) +return new A.bq(!0,b,"end",null)}, +dz(a){return new A.bq(!0,a,null,null)}, +c(a){return A.aj(a,new Error())}, +aj(a,b){var s +if(a==null)a=new A.ca() +b.dartException=a +s=A.yy +if("defineProperty" in Object){Object.defineProperty(b,"message",{get:s}) +b.name=""}else b.toString=s +return b}, +yy(){return J.bg(this.dartException)}, +K(a,b){throw A.aj(a,b==null?new Error():b)}, +C(a,b,c){var s +if(b==null)b=0 +if(c==null)c=0 +s=Error() +A.K(A.wJ(a,b,c),s)}, +wJ(a,b,c){var s,r,q,p,o,n,m,l,k +if(typeof b=="string")s=b +else{r="[]=;add;removeWhere;retainWhere;removeRange;setRange;setInt8;setInt16;setInt32;setUint8;setUint16;setUint32;setFloat32;setFloat64".split(";") +q=r.length +p=b +if(p>q){c=p/q|0 +p%=q}s=r[p]}o=typeof c=="string"?c:"modify;remove from;add to".split(";")[c] +n=t.j.b(a)?"list":"ByteData" +m=a.$flags|0 +l="a " +if((m&4)!==0)k="constant " +else if((m&2)!==0){k="unmodifiable " +l="an "}else k=(m&1)!==0?"fixed-length ":"" +return new A.fF("'"+s+"': Cannot "+o+" "+l+k+n)}, +a_(a){throw A.c(A.az(a))}, +cb(a){var s,r,q,p,o,n +a=A.tz(a.replace(String({}),"$receiver$")) +s=a.match(/\\\$[a-zA-Z]+\\\$/g) +if(s==null)s=A.l([],t.s) +r=s.indexOf("\\$arguments\\$") +q=s.indexOf("\\$argumentsExpr\\$") +p=s.indexOf("\\$expr\\$") +o=s.indexOf("\\$method\\$") +n=s.indexOf("\\$receiver\\$") +return new A.m0(a.replace(new RegExp("\\\\\\$arguments\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$","g"),"((?:x|[^x])*)"),r,q,p,o,n)}, +m1(a){return function($expr$){var $argumentsExpr$="$arguments$" +try{$expr$.$method$($argumentsExpr$)}catch(s){return s.message}}(a)}, +r7(a){return function($expr$){try{$expr$.$method$}catch(s){return s.message}}(a)}, +pb(a,b){var s=b==null,r=s?null:b.method +return new A.ig(a,r,s?null:b.receiver)}, +R(a){var s +if(a==null)return new A.iu(a) +if(a instanceof A.f8){s=a.a +return A.cX(a,s==null?A.a8(s):s)}if(typeof a!=="object")return a +if("dartException" in a)return A.cX(a,a.dartException) +return A.xr(a)}, +cX(a,b){if(t.Q.b(b))if(b.$thrownJsError==null)b.$thrownJsError=a +return b}, +xr(a){var s,r,q,p,o,n,m,l,k,j,i,h,g +if(!("message" in a))return a +s=a.message +if("number" in a&&typeof a.number=="number"){r=a.number +q=r&65535 +if((B.c.T(r,16)&8191)===10)switch(q){case 438:return A.cX(a,A.pb(A.y(s)+" (Error "+q+")",null)) +case 445:case 5007:A.y(s) +return A.cX(a,new A.fn())}}if(a instanceof TypeError){p=$.tI() +o=$.tJ() +n=$.tK() +m=$.tL() +l=$.tO() +k=$.tP() +j=$.tN() +$.tM() +i=$.tR() +h=$.tQ() +g=p.av(s) +if(g!=null)return A.cX(a,A.pb(A.w(s),g)) +else{g=o.av(s) +if(g!=null){g.method="call" +return A.cX(a,A.pb(A.w(s),g))}else if(n.av(s)!=null||m.av(s)!=null||l.av(s)!=null||k.av(s)!=null||j.av(s)!=null||m.av(s)!=null||i.av(s)!=null||h.av(s)!=null){A.w(s) +return A.cX(a,new A.fn())}}return A.cX(a,new A.iR(typeof s=="string"?s:""))}if(a instanceof RangeError){if(typeof s=="string"&&s.indexOf("call stack")!==-1)return new A.fB() +s=function(b){try{return String(b)}catch(f){}return null}(a) +return A.cX(a,new A.bq(!1,null,null,typeof s=="string"?s.replace(/^RangeError:\s*/,""):s))}if(typeof InternalError=="function"&&a instanceof InternalError)if(typeof s=="string"&&s==="too much recursion")return new A.fB() +return a}, +ac(a){var s +if(a instanceof A.f8)return a.b +if(a==null)return new A.ha(a) +s=a.$cachedTrace +if(s!=null)return s +s=new A.ha(a) +if(typeof a==="object")a.$cachedTrace=s +return s}, +pV(a){if(a==null)return J.aL(a) +if(typeof a=="object")return A.fr(a) +return J.aL(a)}, +xW(a,b){var s,r,q,p=a.length +for(s=0;s=0 +else if(b instanceof A.cv){s=B.a.N(a,c) +return b.b.test(s)}else return!J.oY(b,B.a.N(a,c)).gD(0)}, +pQ(a){if(a.indexOf("$",0)>=0)return a.replace(/\$/g,"$$$$") +return a}, +yu(a,b,c,d){var s=b.fh(a,d) +if(s==null)return a +return A.q_(a,s.b.index,s.gby(),c)}, +tz(a){if(/[[\]{}()*+?.\\^$|]/.test(a))return a.replace(/[[\]{}()*+?.\\^$|]/g,"\\$&") +return a}, +bD(a,b,c){var s +if(typeof b=="string")return A.yt(a,b,c) +if(b instanceof A.cv){s=b.gfu() +s.lastIndex=0 +return a.replace(s,A.pQ(c))}return A.ys(a,b,c)}, +ys(a,b,c){var s,r,q,p +for(s=J.oY(b,a),s=s.gv(s),r=0,q="";s.l();){p=s.gn() +q=q+a.substring(r,p.gct())+c +r=p.gby()}s=q+a.substring(r) +return s.charCodeAt(0)==0?s:s}, +yt(a,b,c){var s,r,q +if(b===""){if(a==="")return c +s=a.length +for(r=c,q=0;q=0)return a.split(b).join(c) +return a.replace(new RegExp(A.tz(b),"g"),A.pQ(c))}, +yv(a,b,c,d){var s,r,q,p +if(typeof b=="string"){s=a.indexOf(b,d) +if(s<0)return a +return A.q_(a,s,s+b.length,c)}if(b instanceof A.cv)return d===0?a.replace(b.b,A.pQ(c)):A.yu(a,b,c,d) +r=J.un(b,a,d) +q=r.gv(r) +if(!q.l())return a +p=q.gn() +return B.a.aN(a,p.gct(),p.gby(),c)}, +q_(a,b,c,d){return a.substring(0,b)+d+a.substring(c)}, +an:function an(a,b){this.a=a +this.b=b}, +cS:function cS(a,b){this.a=a +this.b=b}, +f0:function f0(){}, +f1:function f1(a,b,c){this.a=a +this.b=b +this.$ti=c}, +dp:function dp(a,b){this.a=a +this.$ti=b}, +h_:function h_(a,b,c){var _=this +_.a=a +_.b=b +_.c=0 +_.d=null +_.$ti=c}, +i8:function i8(){}, +dR:function dR(a,b){this.a=a +this.$ti=b}, +fw:function fw(){}, +m0:function m0(a,b,c,d,e,f){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f}, +fn:function fn(){}, +ig:function ig(a,b,c){this.a=a +this.b=b +this.c=c}, +iR:function iR(a){this.a=a}, +iu:function iu(a){this.a=a}, +f8:function f8(a,b){this.a=a +this.b=b}, +ha:function ha(a){this.a=a +this.b=null}, +aM:function aM(){}, +hK:function hK(){}, +hL:function hL(){}, +iO:function iO(){}, +iL:function iL(){}, +dJ:function dJ(a,b){this.a=a +this.b=b}, +iF:function iF(a){this.a=a}, +c0:function c0(a){var _=this +_.a=0 +_.f=_.e=_.d=_.c=_.b=null +_.r=0 +_.$ti=a}, +l5:function l5(a){this.a=a}, +l8:function l8(a,b){var _=this +_.a=a +_.b=b +_.d=_.c=null}, +c1:function c1(a,b){this.a=a +this.$ti=b}, +fi:function fi(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=null +_.$ti=d}, +fj:function fj(a,b){this.a=a +this.$ti=b}, +bt:function bt(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=null +_.$ti=d}, +fg:function fg(a,b){this.a=a +this.$ti=b}, +fh:function fh(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=null +_.$ti=d}, +oJ:function oJ(a){this.a=a}, +oK:function oK(a){this.a=a}, +oL:function oL(a){this.a=a}, +cR:function cR(){}, +ds:function ds(){}, +cv:function cv(a,b){var _=this +_.a=a +_.b=b +_.e=_.d=_.c=null}, +ep:function ep(a){this.b=a}, +j9:function j9(a,b,c){this.a=a +this.b=b +this.c=c}, +ja:function ja(a,b,c){var _=this +_.a=a +_.b=b +_.c=c +_.d=null}, +e8:function e8(a,b){this.a=a +this.c=b}, +jH:function jH(a,b,c){this.a=a +this.b=b +this.c=c}, +jI:function jI(a,b,c){var _=this +_.a=a +_.b=b +_.c=c +_.d=null}, +yx(a){throw A.aj(A.qB(a),new Error())}, +N(){throw A.aj(A.qC(""),new Error())}, +q2(){throw A.aj(A.v5(""),new Error())}, +q1(){throw A.aj(A.qB(""),new Error())}, +mK(a){var s=new A.mJ(a) +return s.b=s}, +mJ:function mJ(a){this.a=a +this.b=null}, +wH(a){return a}, +hq(a,b,c){}, +jP(a){var s,r,q +if(t.iy.b(a))return a +s=J.ab(a) +r=A.bi(s.gm(a),null,!1,t.z) +for(q=0;q>>0!==a||a>=c)throw A.c(A.dC(b,a))}, +cU(a,b,c){var s +if(!(a>>>0!==a))s=b>>>0!==b||a>b||b>c +else s=!0 +if(s)throw A.c(A.xU(a,b,c)) +return b}, +cy:function cy(){}, +dX:function dX(){}, +fk:function fk(){}, +jM:function jM(a){this.a=a}, +d7:function d7(){}, +aD:function aD(){}, +cz:function cz(){}, +bb:function bb(){}, +il:function il(){}, +im:function im(){}, +io:function io(){}, +dY:function dY(){}, +ip:function ip(){}, +iq:function iq(){}, +ir:function ir(){}, +fl:function fl(){}, +cA:function cA(){}, +h5:function h5(){}, +h6:function h6(){}, +h7:function h7(){}, +h8:function h8(){}, +pf(a,b){var s=b.c +return s==null?b.c=A.hi(a,"E",[b.x]):s}, +qW(a){var s=a.w +if(s===6||s===7)return A.qW(a.x) +return s===11||s===12}, +vq(a){return a.as}, +U(a){return A.oc(v.typeUniverse,a,!1)}, +y7(a,b){var s,r,q,p,o +if(a==null)return null +s=b.y +r=a.Q +if(r==null)r=a.Q=new Map() +q=b.as +p=r.get(q) +if(p!=null)return p +o=A.cV(v.typeUniverse,a.x,s,0) +r.set(q,o) +return o}, +cV(a1,a2,a3,a4){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0=a2.w +switch(a0){case 5:case 1:case 2:case 3:case 4:return a2 +case 6:s=a2.x +r=A.cV(a1,s,a3,a4) +if(r===s)return a2 +return A.rA(a1,r,!0) +case 7:s=a2.x +r=A.cV(a1,s,a3,a4) +if(r===s)return a2 +return A.rz(a1,r,!0) +case 8:q=a2.y +p=A.eI(a1,q,a3,a4) +if(p===q)return a2 +return A.hi(a1,a2.x,p) +case 9:o=a2.x +n=A.cV(a1,o,a3,a4) +m=a2.y +l=A.eI(a1,m,a3,a4) +if(n===o&&l===m)return a2 +return A.pz(a1,n,l) +case 10:k=a2.x +j=a2.y +i=A.eI(a1,j,a3,a4) +if(i===j)return a2 +return A.rB(a1,k,i) +case 11:h=a2.x +g=A.cV(a1,h,a3,a4) +f=a2.y +e=A.xo(a1,f,a3,a4) +if(g===h&&e===f)return a2 +return A.ry(a1,g,e) +case 12:d=a2.y +a4+=d.length +c=A.eI(a1,d,a3,a4) +o=a2.x +n=A.cV(a1,o,a3,a4) +if(c===d&&n===o)return a2 +return A.pA(a1,n,c,!0) +case 13:b=a2.x +if(b=p)return A.a(q,0) +s=A.hk(v.typeUniverse,A.pK(q[0]),"@<0>") +for(r=1;r=0)p+=" "+r[q];++q}return p+"})"}, +t1(a3,a4,a5){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1=", ",a2=null +if(a5!=null){s=a5.length +if(a4==null)a4=A.l([],t.s) +else a2=a4.length +r=a4.length +for(q=s;q>0;--q)B.b.k(a4,"T"+(r+q)) +for(p=t.X,o="<",n="",q=0;q=0))return A.a(a4,l) +o=o+n+a4[l] +k=a5[q] +j=k.w +if(!(j===2||j===3||j===4||j===5||k===p))o+=" extends "+A.aV(k,a4)}o+=">"}else o="" +p=a3.x +i=a3.y +h=i.a +g=h.length +f=i.b +e=f.length +d=i.c +c=d.length +b=A.aV(p,a4) +for(a="",a0="",q=0;q0){a+=a0+"[" +for(a0="",q=0;q0){a+=a0+"{" +for(a0="",q=0;q "+b}, +aV(a,b){var s,r,q,p,o,n,m,l=a.w +if(l===5)return"erased" +if(l===2)return"dynamic" +if(l===3)return"void" +if(l===1)return"Never" +if(l===4)return"any" +if(l===6){s=a.x +r=A.aV(s,b) +q=s.w +return(q===11||q===12?"("+r+")":r)+"?"}if(l===7)return"FutureOr<"+A.aV(a.x,b)+">" +if(l===8){p=A.xq(a.x) +o=a.y +return o.length>0?p+("<"+A.tc(o,b)+">"):p}if(l===10)return A.xa(a,b) +if(l===11)return A.t1(a,b,null) +if(l===12)return A.t1(a.x,b,a.y) +if(l===13){n=a.x +m=b.length +n=m-1-n +if(!(n>=0&&n0)p+="<"+A.hh(c)+">" +s=a.eC.get(p) +if(s!=null)return s +r=new A.bv(null,null) +r.w=8 +r.x=b +r.y=c +if(c.length>0)r.c=c[0] +r.as=p +q=A.cT(a,r) +a.eC.set(p,q) +return q}, +pz(a,b,c){var s,r,q,p,o,n +if(b.w===9){s=b.x +r=b.y.concat(c)}else{r=c +s=b}q=s.as+(";<"+A.hh(r)+">") +p=a.eC.get(q) +if(p!=null)return p +o=new A.bv(null,null) +o.w=9 +o.x=s +o.y=r +o.as=q +n=A.cT(a,o) +a.eC.set(q,n) +return n}, +rB(a,b,c){var s,r,q="+"+(b+"("+A.hh(c)+")"),p=a.eC.get(q) +if(p!=null)return p +s=new A.bv(null,null) +s.w=10 +s.x=b +s.y=c +s.as=q +r=A.cT(a,s) +a.eC.set(q,r) +return r}, +ry(a,b,c){var s,r,q,p,o,n=b.as,m=c.a,l=m.length,k=c.b,j=k.length,i=c.c,h=i.length,g="("+A.hh(m) +if(j>0){s=l>0?",":"" +g+=s+"["+A.hh(k)+"]"}if(h>0){s=l>0?",":"" +g+=s+"{"+A.w8(i)+"}"}r=n+(g+")") +q=a.eC.get(r) +if(q!=null)return q +p=new A.bv(null,null) +p.w=11 +p.x=b +p.y=c +p.as=r +o=A.cT(a,p) +a.eC.set(r,o) +return o}, +pA(a,b,c,d){var s,r=b.as+("<"+A.hh(c)+">"),q=a.eC.get(r) +if(q!=null)return q +s=A.wa(a,b,c,r,d) +a.eC.set(r,s) +return s}, +wa(a,b,c,d,e){var s,r,q,p,o,n,m,l +if(e){s=c.length +r=A.ok(s) +for(q=0,p=0;p0){n=A.cV(a,b,r,0) +m=A.eI(a,c,r,0) +return A.pA(a,n,m,c!==m)}}l=new A.bv(null,null) +l.w=12 +l.x=b +l.y=c +l.as=d +return A.cT(a,l)}, +rs(a,b,c,d){return{u:a,e:b,r:c,s:[],p:0,n:d}}, +ru(a){var s,r,q,p,o,n,m,l=a.r,k=a.s +for(s=l.length,r=0;r=48&&q<=57)r=A.w_(r+1,q,l,k) +else if((((q|32)>>>0)-97&65535)<26||q===95||q===36||q===124)r=A.rt(a,r,l,k,!1) +else if(q===46)r=A.rt(a,r,l,k,!0) +else{++r +switch(q){case 44:break +case 58:k.push(!1) +break +case 33:k.push(!0) +break +case 59:k.push(A.dr(a.u,a.e,k.pop())) +break +case 94:k.push(A.wc(a.u,k.pop())) +break +case 35:k.push(A.hj(a.u,5,"#")) +break +case 64:k.push(A.hj(a.u,2,"@")) +break +case 126:k.push(A.hj(a.u,3,"~")) +break +case 60:k.push(a.p) +a.p=k.length +break +case 62:A.w1(a,k) +break +case 38:A.w0(a,k) +break +case 63:p=a.u +k.push(A.rA(p,A.dr(p,a.e,k.pop()),a.n)) +break +case 47:p=a.u +k.push(A.rz(p,A.dr(p,a.e,k.pop()),a.n)) +break +case 40:k.push(-3) +k.push(a.p) +a.p=k.length +break +case 41:A.vZ(a,k) +break +case 91:k.push(a.p) +a.p=k.length +break +case 93:o=k.splice(a.p) +A.rv(a.u,a.e,o) +a.p=k.pop() +k.push(o) +k.push(-1) +break +case 123:k.push(a.p) +a.p=k.length +break +case 125:o=k.splice(a.p) +A.w3(a.u,a.e,o) +a.p=k.pop() +k.push(o) +k.push(-2) +break +case 43:n=l.indexOf("(",r) +k.push(l.substring(r,n)) +k.push(-4) +k.push(a.p) +a.p=k.length +r=n+1 +break +default:throw"Bad character "+q}}}m=k.pop() +return A.dr(a.u,a.e,m)}, +w_(a,b,c,d){var s,r,q=b-48 +for(s=c.length;a=48&&r<=57))break +q=q*10+(r-48)}d.push(q) +return a}, +rt(a,b,c,d,e){var s,r,q,p,o,n,m=b+1 +for(s=c.length;m>>0)-97&65535)<26||r===95||r===36||r===124))q=r>=48&&r<=57 +else q=!0 +if(!q)break}}p=c.substring(b,m) +if(e){s=a.u +o=a.e +if(o.w===9)o=o.x +n=A.wg(s,o.x)[p] +if(n==null)A.K('No "'+p+'" in "'+A.vq(o)+'"') +d.push(A.hk(s,o,n))}else d.push(p) +return m}, +w1(a,b){var s,r=a.u,q=A.rr(a,b),p=b.pop() +if(typeof p=="string")b.push(A.hi(r,p,q)) +else{s=A.dr(r,a.e,p) +switch(s.w){case 11:b.push(A.pA(r,s,q,a.n)) +break +default:b.push(A.pz(r,s,q)) +break}}}, +vZ(a,b){var s,r,q,p=a.u,o=b.pop(),n=null,m=null +if(typeof o=="number")switch(o){case-1:n=b.pop() +break +case-2:m=b.pop() +break +default:b.push(o) +break}else b.push(o) +s=A.rr(a,b) +o=b.pop() +switch(o){case-3:o=b.pop() +if(n==null)n=p.sEA +if(m==null)m=p.sEA +r=A.dr(p,a.e,o) +q=new A.jp() +q.a=s +q.b=n +q.c=m +b.push(A.ry(p,r,q)) +return +case-4:b.push(A.rB(p,b.pop(),s)) +return +default:throw A.c(A.eT("Unexpected state under `()`: "+A.y(o)))}}, +w0(a,b){var s=b.pop() +if(0===s){b.push(A.hj(a.u,1,"0&")) +return}if(1===s){b.push(A.hj(a.u,4,"1&")) +return}throw A.c(A.eT("Unexpected extended operation "+A.y(s)))}, +rr(a,b){var s=b.splice(a.p) +A.rv(a.u,a.e,s) +a.p=b.pop() +return s}, +dr(a,b,c){if(typeof c=="string")return A.hi(a,c,a.sEA) +else if(typeof c=="number"){b.toString +return A.w2(a,b,c)}else return c}, +rv(a,b,c){var s,r=c.length +for(s=0;sn)return!1 +m=n-o +l=s.b +k=r.b +j=l.length +i=k.length +if(o+j=d)return!1 +a1=f[b] +b+=3 +if(a00?new Array(q):v.typeUniverse.sEA +for(o=0;o0?new Array(a):v.typeUniverse.sEA}, +bv:function bv(a,b){var _=this +_.a=a +_.b=b +_.r=_.f=_.d=_.c=null +_.w=0 +_.as=_.Q=_.z=_.y=_.x=null}, +jp:function jp(){this.c=this.b=this.a=null}, +ob:function ob(a){this.a=a}, +jm:function jm(){}, +eC:function eC(a){this.a=a}, +vM(){var s,r,q +if(self.scheduleImmediate!=null)return A.xu() +if(self.MutationObserver!=null&&self.document!=null){s={} +r=self.document.createElement("div") +q=self.document.createElement("span") +s.a=null +new self.MutationObserver(A.cW(new A.mv(s),1)).observe(r,{childList:true}) +return new A.mu(s,r,q)}else if(self.setImmediate!=null)return A.xv() +return A.xw()}, +vN(a){self.scheduleImmediate(A.cW(new A.mw(t.M.a(a)),0))}, +vO(a){self.setImmediate(A.cW(new A.mx(t.M.a(a)),0))}, +vP(a){A.pm(B.z,t.M.a(a))}, +pm(a,b){var s=B.c.J(a.a,1000) +return A.w5(s<0?0:s,b)}, +w5(a,b){var s=new A.hg() +s.hX(a,b) +return s}, +w6(a,b){var s=new A.hg() +s.hY(a,b) +return s}, +r(a){return new A.fL(new A.v($.n,a.h("v<0>")),a.h("fL<0>"))}, +q(a,b){a.$2(0,null) +b.b=!0 +return b.a}, +e(a,b){A.wy(a,b)}, +p(a,b){b.O(a)}, +o(a,b){b.bx(A.R(a),A.ac(a))}, +wy(a,b){var s,r,q=new A.om(b),p=new A.on(b) +if(a instanceof A.v)a.fR(q,p,t.z) +else{s=t.z +if(a instanceof A.v)a.bG(q,p,s) +else{r=new A.v($.n,t.J) +r.a=8 +r.c=a +r.fR(q,p,s)}}}, +t(a){var s=function(b,c){return function(d,e){while(true){try{b(d,e) +break}catch(r){e=r +d=c}}}}(a,1) +return $.n.da(new A.oA(s),t.H,t.S,t.z)}, +rx(a,b,c){return 0}, +hE(a){var s +if(t.Q.b(a)){s=a.gbm() +if(s!=null)return s}return B.w}, +uY(a,b){var s=new A.v($.n,b.h("v<0>")) +A.r1(B.z,new A.kU(a,s)) +return s}, +kT(a,b){var s,r,q,p,o,n,m,l=null +try{l=a.$0()}catch(q){s=A.R(q) +r=A.ac(q) +p=new A.v($.n,b.h("v<0>")) +o=s +n=r +m=A.dy(o,n) +if(m==null)o=new A.a0(o,n==null?A.hE(o):n) +else o=m +p.aR(o) +return p}return b.h("E<0>").b(l)?l:A.ek(l,b)}, +bs(a,b){var s=a==null?b.a(a):a,r=new A.v($.n,b.h("v<0>")) +r.b3(s) +return r}, +qt(a,b){var s +if(!b.b(null))throw A.c(A.ao(null,"computation","The type parameter is not nullable")) +s=new A.v($.n,b.h("v<0>")) +A.r1(a,new A.kS(null,s,b)) +return s}, +p5(a,b){var s,r,q,p,o,n,m,l,k,j,i={},h=null,g=!1,f=new A.v($.n,b.h("v>")) +i.a=null +i.b=0 +i.c=i.d=null +s=new A.kW(i,h,g,f) +try{for(n=J.ae(a),m=t.P;n.l();){r=n.gn() +q=i.b +r.bG(new A.kV(i,q,f,b,h,g),s,m);++i.b}n=i.b +if(n===0){n=f +n.bM(A.l([],b.h("A<0>"))) +return n}i.a=A.bi(n,null,!1,b.h("0?"))}catch(l){p=A.R(l) +o=A.ac(l) +if(i.b===0||g){n=f +m=p +k=o +j=A.dy(m,k) +if(j==null)m=new A.a0(m,k==null?A.hE(m):k) +else m=j +n.aR(m) +return n}else{i.d=p +i.c=o}}return f}, +dy(a,b){var s,r,q,p=$.n +if(p===B.d)return null +s=p.h7(a,b) +if(s==null)return null +r=s.a +q=s.b +if(t.Q.b(r))A.fs(r,q) +return s}, +ot(a,b){var s +if($.n!==B.d){s=A.dy(a,b) +if(s!=null)return s}if(b==null)if(t.Q.b(a)){b=a.gbm() +if(b==null){A.fs(a,B.w) +b=B.w}}else b=B.w +else if(t.Q.b(a))A.fs(a,b) +return new A.a0(a,b)}, +vX(a,b,c){var s=new A.v(b,c.h("v<0>")) +c.a(a) +s.a=8 +s.c=a +return s}, +ek(a,b){var s=new A.v($.n,b.h("v<0>")) +b.a(a) +s.a=8 +s.c=a +return s}, +n_(a,b,c){var s,r,q,p,o={},n=o.a=a +for(s=t.J;r=n.a,(r&4)!==0;n=a){a=s.a(n.c) +o.a=a}if(n===b){s=A.lI() +b.aR(new A.a0(new A.bq(!0,n,null,"Cannot complete a future with itself"),s)) +return}q=b.a&1 +s=n.a=r|q +if((s&24)===0){p=t.d.a(b.c) +b.a=b.a&1|4 +b.c=n +n.fw(p) +return}if(!c)if(b.c==null)n=(s&16)===0||q!==0 +else n=!1 +else n=!0 +if(n){p=b.bT() +b.cz(o.a) +A.dl(b,p) +return}b.a^=2 +b.b.b0(new A.n0(o,b))}, +dl(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d={},c=d.a=a +for(s=t.n,r=t.d;;){q={} +p=c.a +o=(p&16)===0 +n=!o +if(b==null){if(n&&(p&1)===0){m=s.a(c.c) +c.b.c7(m.a,m.b)}return}q.a=b +l=b.a +for(c=b;l!=null;c=l,l=k){c.a=null +A.dl(d.a,c) +q.a=l +k=l.a}p=d.a +j=p.c +q.b=n +q.c=j +if(o){i=c.c +i=(i&1)!==0||(i&15)===8}else i=!0 +if(i){h=c.b.b +if(n){c=p.b +c=!(c===h||c.gaK()===h.gaK())}else c=!1 +if(c){c=d.a +m=s.a(c.c) +c.b.c7(m.a,m.b) +return}g=$.n +if(g!==h)$.n=h +else g=null +c=q.a.c +if((c&15)===8)new A.n4(q,d,n).$0() +else if(o){if((c&1)!==0)new A.n3(q,j).$0()}else if((c&2)!==0)new A.n2(d,q).$0() +if(g!=null)$.n=g +c=q.c +if(c instanceof A.v){p=q.a.$ti +p=p.h("E<2>").b(c)||!p.y[1].b(c)}else p=!1 +if(p){f=q.a.b +if((c.a&24)!==0){e=r.a(f.c) +f.c=null +b=f.cH(e) +f.a=c.a&30|f.a&1 +f.c=c.c +d.a=c +continue}else A.n_(c,f,!0) +return}}f=q.a.b +e=r.a(f.c) +f.c=null +b=f.cH(e) +c=q.b +p=q.c +if(!c){f.$ti.c.a(p) +f.a=8 +f.c=p}else{s.a(p) +f.a=f.a&1|16 +f.c=p}d.a=f +c=f}}, +xc(a,b){if(t.ng.b(a))return b.da(a,t.z,t.K,t.l) +if(t.mq.b(a))return b.bd(a,t.z,t.K) +throw A.c(A.ao(a,"onError",u.c))}, +x4(){var s,r +for(s=$.eH;s!=null;s=$.eH){$.ht=null +r=s.b +$.eH=r +if(r==null)$.hs=null +s.a.$0()}}, +xn(){$.pH=!0 +try{A.x4()}finally{$.ht=null +$.pH=!1 +if($.eH!=null)$.q5().$1(A.tk())}}, +te(a){var s=new A.jb(a),r=$.hs +if(r==null){$.eH=$.hs=s +if(!$.pH)$.q5().$1(A.tk())}else $.hs=r.b=s}, +xk(a){var s,r,q,p=$.eH +if(p==null){A.te(a) +$.ht=$.hs +return}s=new A.jb(a) +r=$.ht +if(r==null){s.b=p +$.eH=$.ht=s}else{q=r.b +s.b=q +$.ht=r.b=s +if(q==null)$.hs=s}}, +pX(a){var s,r=null,q=$.n +if(B.d===q){A.ox(r,r,B.d,a) +return}if(B.d===q.ge6().a)s=B.d.gaK()===q.gaK() +else s=!1 +if(s){A.ox(r,r,q,q.aw(a,t.H)) +return}s=$.n +s.b0(s.cU(a))}, +yQ(a,b){return new A.du(A.dA(a,"stream",t.K),b.h("du<0>"))}, +fC(a,b,c,d){var s=null +return c?new A.eB(b,s,s,a,d.h("eB<0>")):new A.ee(b,s,s,a,d.h("ee<0>"))}, +jQ(a){var s,r,q +if(a==null)return +try{a.$0()}catch(q){s=A.R(q) +r=A.ac(q) +$.n.c7(s,r)}}, +vW(a,b,c,d,e,f){var s=$.n,r=e?1:0,q=c!=null?32:0,p=A.jf(s,b,f),o=A.jg(s,c),n=d==null?A.tj():d +return new A.cd(a,p,o,s.aw(n,t.H),s,r|q,f.h("cd<0>"))}, +jf(a,b,c){var s=b==null?A.xx():b +return a.bd(s,t.H,c)}, +jg(a,b){if(b==null)b=A.xy() +if(t.b9.b(b))return a.da(b,t.z,t.K,t.l) +if(t.i6.b(b))return a.bd(b,t.z,t.K) +throw A.c(A.W("handleError callback must take either an Object (the error), or both an Object (the error) and a StackTrace.",null))}, +x5(a){}, +x7(a,b){A.a8(a) +t.l.a(b) +$.n.c7(a,b)}, +x6(){}, +xi(a,b,c,d){var s,r,q,p +try{b.$1(a.$0())}catch(p){s=A.R(p) +r=A.ac(p) +q=A.dy(s,r) +if(q!=null)c.$2(q.a,q.b) +else c.$2(s,r)}}, +wE(a,b,c){var s=a.K() +if(s!==$.cY())s.al(new A.op(b,c)) +else b.X(c)}, +wF(a,b){return new A.oo(a,b)}, +rV(a,b,c){var s=a.K() +if(s!==$.cY())s.al(new A.oq(b,c)) +else b.b4(c)}, +w4(a,b,c){return new A.ew(new A.o5(null,null,a,c,b),b.h("@<0>").u(c).h("ew<1,2>"))}, +r1(a,b){var s=$.n +if(s===B.d)return s.el(a,b) +return s.el(a,s.cU(b))}, +yo(a,b,c){return A.xj(a,b,null,c)}, +xj(a,b,c,d){return $.n.ha(c,b).bf(a,d)}, +xg(a,b,c,d,e){A.hu(A.a8(d),t.l.a(e))}, +hu(a,b){A.xk(new A.ou(a,b))}, +ov(a,b,c,d,e){var s,r +t.g9.a(a) +t.kz.a(b) +t.jK.a(c) +e.h("0()").a(d) +r=$.n +if(r===c)return d.$0() +$.n=c +s=r +try{r=d.$0() +return r}finally{$.n=s}}, +ow(a,b,c,d,e,f,g){var s,r +t.g9.a(a) +t.kz.a(b) +t.jK.a(c) +f.h("@<0>").u(g).h("1(2)").a(d) +g.a(e) +r=$.n +if(r===c)return d.$1(e) +$.n=c +s=r +try{r=d.$1(e) +return r}finally{$.n=s}}, +pJ(a,b,c,d,e,f,g,h,i){var s,r +t.g9.a(a) +t.kz.a(b) +t.jK.a(c) +g.h("@<0>").u(h).u(i).h("1(2,3)").a(d) +h.a(e) +i.a(f) +r=$.n +if(r===c)return d.$2(e,f) +$.n=c +s=r +try{r=d.$2(e,f) +return r}finally{$.n=s}}, +ta(a,b,c,d,e){return e.h("0()").a(d)}, +tb(a,b,c,d,e,f){return e.h("@<0>").u(f).h("1(2)").a(d)}, +t9(a,b,c,d,e,f,g){return e.h("@<0>").u(f).u(g).h("1(2,3)").a(d)}, +xf(a,b,c,d,e){A.a8(d) +t.fw.a(e) +return null}, +ox(a,b,c,d){var s,r +t.M.a(d) +if(B.d!==c){s=B.d.gaK() +r=c.gaK() +d=s!==r?c.cU(d):c.ei(d,t.H)}A.te(d)}, +xe(a,b,c,d,e){t.jS.a(d) +t.M.a(e) +return A.pm(d,B.d!==c?c.ei(e,t.H):e)}, +xd(a,b,c,d,e){var s +t.jS.a(d) +t.my.a(e) +if(B.d!==c)e=c.h_(e,t.H,t.hU) +s=B.c.J(d.a,1000) +return A.w6(s<0?0:s,e)}, +xh(a,b,c,d){A.pW(A.w(d))}, +x9(a){$.n.hl(a)}, +t8(a,b,c,d,e){var s,r,q +t.pi.a(d) +t.hi.a(e) +$.t7=A.xz() +if(d==null)d=B.bB +if(e==null)s=c.gfq() +else{r=t.X +s=A.uZ(e,r,r)}r=new A.ji(c.gfI(),c.gfK(),c.gfJ(),c.gfE(),c.gfF(),c.gfD(),c.gfg(),c.ge6(),c.gfc(),c.gfb(),c.gfz(),c.gfj(),c.gdW(),c,s) +q=d.a +if(q!=null)r.as=new A.Z(r,q,t.ks) +return r}, +mv:function mv(a){this.a=a}, +mu:function mu(a,b,c){this.a=a +this.b=b +this.c=c}, +mw:function mw(a){this.a=a}, +mx:function mx(a){this.a=a}, +hg:function hg(){this.c=0}, +oa:function oa(a,b){this.a=a +this.b=b}, +o9:function o9(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +fL:function fL(a,b){this.a=a +this.b=!1 +this.$ti=b}, +om:function om(a){this.a=a}, +on:function on(a){this.a=a}, +oA:function oA(a){this.a=a}, +hf:function hf(a,b){var _=this +_.a=a +_.e=_.d=_.c=_.b=null +_.$ti=b}, +eA:function eA(a,b){this.a=a +this.$ti=b}, +a0:function a0(a,b){this.a=a +this.b=b}, +fP:function fP(a,b){this.a=a +this.$ti=b}, +bV:function bV(a,b,c,d,e,f,g){var _=this +_.ay=0 +_.CW=_.ch=null +_.w=a +_.a=b +_.b=c +_.c=d +_.d=e +_.e=f +_.r=_.f=null +_.$ti=g}, +dh:function dh(){}, +he:function he(a,b,c){var _=this +_.a=a +_.b=b +_.c=0 +_.r=_.f=_.e=_.d=null +_.$ti=c}, +o6:function o6(a,b){this.a=a +this.b=b}, +o8:function o8(a,b,c){this.a=a +this.b=b +this.c=c}, +o7:function o7(a){this.a=a}, +kU:function kU(a,b){this.a=a +this.b=b}, +kS:function kS(a,b,c){this.a=a +this.b=b +this.c=c}, +kW:function kW(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +kV:function kV(a,b,c,d,e,f){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f}, +di:function di(){}, +ai:function ai(a,b){this.a=a +this.$ti=b}, +ak:function ak(a,b){this.a=a +this.$ti=b}, +cg:function cg(a,b,c,d,e){var _=this +_.a=null +_.b=a +_.c=b +_.d=c +_.e=d +_.$ti=e}, +v:function v(a,b){var _=this +_.a=0 +_.b=a +_.c=null +_.$ti=b}, +mX:function mX(a,b){this.a=a +this.b=b}, +n1:function n1(a,b){this.a=a +this.b=b}, +n0:function n0(a,b){this.a=a +this.b=b}, +mZ:function mZ(a,b){this.a=a +this.b=b}, +mY:function mY(a,b){this.a=a +this.b=b}, +n4:function n4(a,b,c){this.a=a +this.b=b +this.c=c}, +n5:function n5(a,b){this.a=a +this.b=b}, +n6:function n6(a){this.a=a}, +n3:function n3(a,b){this.a=a +this.b=b}, +n2:function n2(a,b){this.a=a +this.b=b}, +jb:function jb(a){this.a=a +this.b=null}, +P:function P(){}, +lP:function lP(a,b){this.a=a +this.b=b}, +lQ:function lQ(a,b){this.a=a +this.b=b}, +lN:function lN(a){this.a=a}, +lO:function lO(a,b,c){this.a=a +this.b=b +this.c=c}, +lL:function lL(a,b,c){this.a=a +this.b=b +this.c=c}, +lM:function lM(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +lJ:function lJ(a,b){this.a=a +this.b=b}, +lK:function lK(a,b,c){this.a=a +this.b=b +this.c=c}, +fD:function fD(){}, +dt:function dt(){}, +o4:function o4(a){this.a=a}, +o3:function o3(a){this.a=a}, +jJ:function jJ(){}, +jc:function jc(){}, +ee:function ee(a,b,c,d,e){var _=this +_.a=null +_.b=0 +_.c=null +_.d=a +_.e=b +_.f=c +_.r=d +_.$ti=e}, +eB:function eB(a,b,c,d,e){var _=this +_.a=null +_.b=0 +_.c=null +_.d=a +_.e=b +_.f=c +_.r=d +_.$ti=e}, +ax:function ax(a,b){this.a=a +this.$ti=b}, +cd:function cd(a,b,c,d,e,f,g){var _=this +_.w=a +_.a=b +_.b=c +_.c=d +_.d=e +_.e=f +_.r=_.f=null +_.$ti=g}, +dv:function dv(a,b){this.a=a +this.$ti=b}, +Y:function Y(){}, +mI:function mI(a,b,c){this.a=a +this.b=b +this.c=c}, +mH:function mH(a){this.a=a}, +ex:function ex(){}, +cf:function cf(){}, +ce:function ce(a,b){this.b=a +this.a=null +this.$ti=b}, +ef:function ef(a,b){this.b=a +this.c=b +this.a=null}, +jk:function jk(){}, +bB:function bB(a){var _=this +_.a=0 +_.c=_.b=null +_.$ti=a}, +nV:function nV(a,b){this.a=a +this.b=b}, +eh:function eh(a,b){var _=this +_.a=1 +_.b=a +_.c=null +_.$ti=b}, +du:function du(a,b){var _=this +_.a=null +_.b=a +_.c=!1 +_.$ti=b}, +op:function op(a,b){this.a=a +this.b=b}, +oo:function oo(a,b){this.a=a +this.b=b}, +oq:function oq(a,b){this.a=a +this.b=b}, +fY:function fY(){}, +ei:function ei(a,b,c,d,e,f,g){var _=this +_.w=a +_.x=null +_.a=b +_.b=c +_.c=d +_.d=e +_.e=f +_.r=_.f=null +_.$ti=g}, +h4:function h4(a,b,c){this.b=a +this.a=b +this.$ti=c}, +fU:function fU(a,b){this.a=a +this.$ti=b}, +eu:function eu(a,b,c,d,e,f){var _=this +_.w=$ +_.x=null +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.r=_.f=null +_.$ti=f}, +ey:function ey(){}, +fO:function fO(a,b,c){this.a=a +this.b=b +this.$ti=c}, +em:function em(a,b,c,d,e){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.$ti=e}, +ew:function ew(a,b){this.a=a +this.$ti=b}, +o5:function o5(a,b,c,d,e){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e}, +Z:function Z(a,b,c){this.a=a +this.b=b +this.$ti=c}, +eE:function eE(){}, +ji:function ji(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f +_.r=g +_.w=h +_.x=i +_.y=j +_.z=k +_.Q=l +_.as=m +_.at=null +_.ax=n +_.ay=o}, +mO:function mO(a,b,c){this.a=a +this.b=b +this.c=c}, +mQ:function mQ(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +mN:function mN(a,b){this.a=a +this.b=b}, +mP:function mP(a,b,c){this.a=a +this.b=b +this.c=c}, +jD:function jD(){}, +nZ:function nZ(a,b,c){this.a=a +this.b=b +this.c=c}, +o0:function o0(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +nY:function nY(a,b){this.a=a +this.b=b}, +o_:function o_(a,b,c){this.a=a +this.b=b +this.c=c}, +eF:function eF(a){this.a=a}, +ou:function ou(a,b){this.a=a +this.b=b}, +jO:function jO(a,b,c,d,e,f,g,h,i,j,k,l,m){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f +_.r=g +_.w=h +_.x=i +_.y=j +_.z=k +_.Q=l +_.as=m}, +qv(a,b){return new A.dm(a.h("@<0>").u(b).h("dm<1,2>"))}, +rq(a,b){var s=a[b] +return s===a?null:s}, +px(a,b,c){if(c==null)a[b]=a +else a[b]=c}, +pw(){var s=Object.create(null) +A.px(s,"",s) +delete s[""] +return s}, +v6(a,b){return new A.c0(a.h("@<0>").u(b).h("c0<1,2>"))}, +l9(a,b,c){return b.h("@<0>").u(c).h("qD<1,2>").a(A.xW(a,new A.c0(b.h("@<0>").u(c).h("c0<1,2>"))))}, +ag(a,b){return new A.c0(a.h("@<0>").u(b).h("c0<1,2>"))}, +pc(a){return new A.h0(a.h("h0<0>"))}, +py(){var s=Object.create(null) +s[""]=s +delete s[""] +return s}, +jw(a,b,c){var s=new A.dq(a,b,c.h("dq<0>")) +s.c=a.e +return s}, +uZ(a,b,c){var s=A.qv(b,c) +a.ab(0,new A.kZ(s,b,c)) +return s}, +pd(a){var s,r +if(A.pT(a))return"{...}" +s=new A.aF("") +try{r={} +B.b.k($.bf,a) +s.a+="{" +r.a=!0 +a.ab(0,new A.le(r,s)) +s.a+="}"}finally{if(0>=$.bf.length)return A.a($.bf,-1) +$.bf.pop()}r=s.a +return r.charCodeAt(0)==0?r:r}, +dm:function dm(a){var _=this +_.a=0 +_.e=_.d=_.c=_.b=null +_.$ti=a}, +n7:function n7(a){this.a=a}, +en:function en(a){var _=this +_.a=0 +_.e=_.d=_.c=_.b=null +_.$ti=a}, +dn:function dn(a,b){this.a=a +this.$ti=b}, +fZ:function fZ(a,b,c){var _=this +_.a=a +_.b=b +_.c=0 +_.d=null +_.$ti=c}, +h0:function h0(a){var _=this +_.a=0 +_.f=_.e=_.d=_.c=_.b=null +_.r=0 +_.$ti=a}, +jv:function jv(a){this.a=a +this.c=this.b=null}, +dq:function dq(a,b,c){var _=this +_.a=a +_.b=b +_.d=_.c=null +_.$ti=c}, +kZ:function kZ(a,b,c){this.a=a +this.b=b +this.c=c}, +dV:function dV(a){var _=this +_.b=_.a=0 +_.c=null +_.$ti=a}, +h1:function h1(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=null +_.d=c +_.e=!1 +_.$ti=d}, +aB:function aB(){}, +z:function z(){}, +X:function X(){}, +ld:function ld(a){this.a=a}, +le:function le(a,b){this.a=a +this.b=b}, +h2:function h2(a,b){this.a=a +this.$ti=b}, +h3:function h3(a,b,c){var _=this +_.a=a +_.b=b +_.c=null +_.$ti=c}, +e3:function e3(){}, +h9:function h9(){}, +wt(a,b,c){var s,r,q,p,o=c-b +if(o<=4096)s=$.u0() +else s=new Uint8Array(o) +for(r=J.ab(a),q=0;q=16)return null +r=r*16+o}n=h-1 +if(!(h>=0&&h=0&&s=16)return null +r=r*16+o}m=n-1 +if(!(n>=0&&n=j)return A.a(i,0) +l=i[0]===0}else l=!1 +if(l)return $.bp() +l=A.b3(j,i) +return new A.aa(l===0?!1:c,i,l)}, +ro(a,b){var s,r,q,p,o,n +if(a==="")return null +s=$.tU().aa(a) +if(s==null)return null +r=s.b +q=r.length +if(1>=q)return A.a(r,1) +p=r[1]==="-" +if(4>=q)return A.a(r,4) +o=r[4] +n=r[3] +if(5>=q)return A.a(r,5) +if(o!=null)return A.vT(o,p) +if(n!=null)return A.vU(n,2,p) +return null}, +b3(a,b){var s,r=b.length +for(;;){if(a>0){s=a-1 +if(!(s=0&&q>>0)+(r[6]>>>4)-1075 +n=new Uint16Array(4) +n[0]=(r[1]<<8>>>0)+r[0] +n[1]=(r[3]<<8>>>0)+r[2] +n[2]=(r[5]<<8>>>0)+r[4] +n[3]=r[6]&15|16 +m=new A.aa(!1,n,4) +if(o<0)l=m.bl(0,-o) +else l=o>0?m.b2(0,o):m +if(s)return l.aC(0) +return l}, +pu(a,b,c,d){var s,r,q,p,o +if(b===0)return 0 +if(c===0&&d===a)return b +for(s=b-1,r=a.length,q=d.$flags|0;s>=0;--s){p=s+c +if(!(s=0&&p=0;--s){q&2&&A.C(d) +if(!(s=0;--s){if(!(s=0&&n>>0 +p=B.c.b2((o&i)>>>0,k)}q&2&&A.C(d) +if(!(l>=0&&l=0;){r&2&&A.C(d) +if(!(q=0&&r=0&&m>>0,k) +q&2&&A.C(d) +if(!(p>>0 +s=B.c.bl(n,l)}q&2&&A.C(d) +if(!(r>=0&&r=0;--s){if(!(s=0&&o=0&&b=0&&o=0;e=l,c=o){o=c+1 +if(!(c=0&&e=0&&e=0&&c=0&&r>>0,a) +if(q>65535)return 65535 +return q}, +uP(a){throw A.c(A.ao(a,"object","Expandos are not allowed on strings, numbers, bools, records or null"))}, +bC(a,b){var s=A.qP(a,b) +if(s!=null)return s +throw A.c(A.ap(a,null,null))}, +uO(a,b){a=A.aj(a,new Error()) +if(a==null)a=A.a8(a) +a.stack=b.i(0) +throw a}, +bi(a,b,c,d){var s,r=c?J.qz(a,d):J.qy(a,d) +if(a!==0&&b!=null)for(s=0;s")) +for(s=J.ae(a);s.l();)B.b.k(r,c.a(s.gn())) +r.$flags=1 +return r}, +aC(a,b){var s,r +if(Array.isArray(a))return A.l(a.slice(0),b.h("A<0>")) +s=A.l([],b.h("A<0>")) +for(r=J.ae(a);r.l();)B.b.k(s,r.gn()) +return s}, +aY(a,b){var s=A.v8(a,!1,b) +s.$flags=3 +return s}, +r0(a,b,c){var s,r,q,p,o +A.am(b,"start") +s=c==null +r=!s +if(r){q=c-b +if(q<0)throw A.c(A.a5(c,b,null,"end",null)) +if(q===0)return""}if(Array.isArray(a)){p=a +o=p.length +if(s)c=o +return A.qR(b>0||c0)a=J.eR(a,b) +s=A.aC(a,t.S) +return A.qR(s)}, +r_(a){return A.b_(a)}, +vx(a,b,c){var s=a.length +if(b>=s)return"" +return A.vj(a,b,c==null||c>s?s:c)}, +T(a,b,c,d,e){return new A.cv(a,A.p9(a,d,b,e,c,""))}, +pj(a,b,c){var s=J.ae(b) +if(!s.l())return a +if(c.length===0){do a+=A.y(s.gn()) +while(s.l())}else{a+=A.y(s.gn()) +while(s.l())a=a+c+A.y(s.gn())}return a}, +fG(){var s,r,q=A.ve() +if(q==null)throw A.c(A.ad("'Uri.base' is not supported")) +s=$.rc +if(s!=null&&q===$.rb)return s +r=A.bR(q) +$.rc=r +$.rb=q +return r}, +wr(a,b,c,d){var s,r,q,p,o,n="0123456789ABCDEF" +if(c===B.j){s=$.tY() +s=s.b.test(b)}else s=!1 +if(s)return b +r=B.i.a5(b) +for(s=r.length,q=0,p="";q>>4&15]+n[o&15]}return p.charCodeAt(0)==0?p:p}, +lI(){return A.ac(new Error())}, +qm(a,b,c){var s="microsecond" +if(b>999)throw A.c(A.a5(b,0,999,s,null)) +if(a<-864e13||a>864e13)throw A.c(A.a5(a,-864e13,864e13,"millisecondsSinceEpoch",null)) +if(a===864e13&&b!==0)throw A.c(A.ao(b,s,"Time including microseconds is outside valid range")) +A.dA(c,"isUtc",t.y) +return a}, +uJ(a){var s=Math.abs(a),r=a<0?"-":"" +if(s>=1000)return""+a +if(s>=100)return r+"0"+s +if(s>=10)return r+"00"+s +return r+"000"+s}, +ql(a){if(a>=100)return""+a +if(a>=10)return"0"+a +return"00"+a}, +hU(a){if(a>=10)return""+a +return"0"+a}, +qn(a,b){return new A.aX(a+1000*b)}, +p2(a,b,c){var s,r,q +for(s=a.length,r=0;rc)throw A.c(A.a5(a,b,c,d,null)) +return a}, +vn(a,b,c,d){if(0>a||a>=d)A.K(A.i6(a,d,b,null,c)) +return a}, +bu(a,b,c){if(0>a||a>c)throw A.c(A.a5(a,0,c,"start",null)) +if(b!=null){if(a>b||b>c)throw A.c(A.a5(b,a,c,"end",null)) +return b}return c}, +am(a,b){if(a<0)throw A.c(A.a5(a,0,null,b,null)) +return a}, +qw(a,b){var s=b.b +return new A.fc(s,!0,a,null,"Index out of range")}, +i6(a,b,c,d,e){return new A.fc(b,!0,a,e,"Index out of range")}, +ad(a){return new A.fF(a)}, +r8(a){return new A.iQ(a)}, +G(a){return new A.b0(a)}, +az(a){return new A.hP(a)}, +kI(a){return new A.jn(a)}, +ap(a,b,c){return new A.aO(a,b,c)}, +v0(a,b,c){var s,r +if(A.pT(a)){if(b==="("&&c===")")return"(...)" +return b+"..."+c}s=A.l([],t.s) +B.b.k($.bf,a) +try{A.x3(a,s)}finally{if(0>=$.bf.length)return A.a($.bf,-1) +$.bf.pop()}r=A.pj(b,t.e7.a(s),", ")+c +return r.charCodeAt(0)==0?r:r}, +p8(a,b,c){var s,r +if(A.pT(a))return b+"..."+c +s=new A.aF(b) +B.b.k($.bf,a) +try{r=s +r.a=A.pj(r.a,a,", ")}finally{if(0>=$.bf.length)return A.a($.bf,-1) +$.bf.pop()}s.a+=c +r=s.a +return r.charCodeAt(0)==0?r:r}, +x3(a,b){var s,r,q,p,o,n,m,l=a.gv(a),k=0,j=0 +for(;;){if(!(k<80||j<3))break +if(!l.l())return +s=A.y(l.gn()) +B.b.k(b,s) +k+=s.length+2;++j}if(!l.l()){if(j<=5)return +if(0>=b.length)return A.a(b,-1) +r=b.pop() +if(0>=b.length)return A.a(b,-1) +q=b.pop()}else{p=l.gn();++j +if(!l.l()){if(j<=4){B.b.k(b,A.y(p)) +return}r=A.y(p) +if(0>=b.length)return A.a(b,-1) +q=b.pop() +k+=r.length+2}else{o=l.gn();++j +for(;l.l();p=o,o=n){n=l.gn();++j +if(j>100){for(;;){if(!(k>75&&j>3))break +if(0>=b.length)return A.a(b,-1) +k-=b.pop().length+2;--j}B.b.k(b,"...") +return}}q=A.y(p) +r=A.y(o) +k+=r.length+q.length+4}}if(j>b.length+2){k+=5 +m="..."}else m=null +for(;;){if(!(k>80&&b.length>3))break +if(0>=b.length)return A.a(b,-1) +k-=b.pop().length+2 +if(m==null){k+=5 +m="..."}}if(m!=null)B.b.k(b,m) +B.b.k(b,q) +B.b.k(b,r)}, +fo(a,b,c,d){var s +if(B.f===c){s=J.aL(a) +b=J.aL(b) +return A.pk(A.cL(A.cL($.oW(),s),b))}if(B.f===d){s=J.aL(a) +b=J.aL(b) +c=J.aL(c) +return A.pk(A.cL(A.cL(A.cL($.oW(),s),b),c))}s=J.aL(a) +b=J.aL(b) +c=J.aL(c) +d=J.aL(d) +d=A.pk(A.cL(A.cL(A.cL(A.cL($.oW(),s),b),c),d)) +return d}, +ym(a){var s=A.y(a),r=$.t7 +if(r==null)A.pW(s) +else r.$1(s)}, +ra(a){var s,r=null,q=new A.aF(""),p=A.l([-1],t.t) +A.vG(r,r,r,q,p) +B.b.k(p,q.a.length) +q.a+="," +A.vF(256,B.al.jC(a),q) +s=q.a +return new A.iU(s.charCodeAt(0)==0?s:s,p,r).geP()}, +bR(a5){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2,a3=null,a4=a5.length +if(a4>=5){if(4>=a4)return A.a(a5,4) +s=((a5.charCodeAt(4)^58)*3|a5.charCodeAt(0)^100|a5.charCodeAt(1)^97|a5.charCodeAt(2)^116|a5.charCodeAt(3)^97)>>>0 +if(s===0)return A.r9(a4=14)B.b.p(r,7,a4) +q=r[1] +if(q>=0)if(A.td(a5,0,q,20,r)===20)r[7]=q +p=r[2]+1 +o=r[3] +n=r[4] +m=r[5] +l=r[6] +if(lq+3)){i=o>0 +if(!(i&&o+1===n)){if(!B.a.E(a5,"\\",n))if(p>0)h=B.a.E(a5,"\\",p-1)||B.a.E(a5,"\\",p-2) +else h=!1 +else h=!0 +if(!h){if(!(mn+2&&B.a.E(a5,"/..",m-3) +else h=!0 +if(!h)if(q===4){if(B.a.E(a5,"file",0)){if(p<=0){if(!B.a.E(a5,"/",n)){g="file:///" +s=3}else{g="file://" +s=2}a5=g+B.a.t(a5,n,a4) +m+=s +l+=s +a4=a5.length +p=7 +o=7 +n=7}else if(n===m){++l +f=m+1 +a5=B.a.aN(a5,n,m,"/");++a4 +m=f}j="file"}else if(B.a.E(a5,"http",0)){if(i&&o+3===n&&B.a.E(a5,"80",o+1)){l-=3 +e=n-3 +m-=3 +a5=B.a.aN(a5,o,n,"") +a4-=3 +n=e}j="http"}}else if(q===5&&B.a.E(a5,"https",0)){if(i&&o+4===n&&B.a.E(a5,"443",o+1)){l-=4 +e=n-4 +m-=4 +a5=B.a.aN(a5,o,n,"") +a4-=3 +n=e}j="https"}k=!h}}}}if(k)return new A.bl(a40)j=A.og(a5,0,q) +else{if(q===0)A.eD(a5,0,"Invalid empty scheme") +j=""}d=a3 +if(p>0){c=q+3 +b=c=c)n=0 +else{if(!(q>=0&&q=0&&b=0&&r=97&&o<=102)continue +if(p===46){if(q-1===b)return new A.aO(n,a,q) +r=q +break}return new A.aO("Unexpected character",a,q-1)}if(r-1===b)return new A.aO(n,a,r) +return new A.aO("Missing '.' in IPvFuture address",a,r)}if(r===c)return new A.aO("Missing address in IPvFuture address, host, cursor",null,null) +for(;;){if(!(r>=0&&r=0&&a4=a5)j=0 +else{if(!(n=97&&f<=102)g=f-87 +else break A +k=h}if(nm){if(j===46){if(k){if(p<=6){A.vH(a3,m,a5,s,p*2) +p+=2 +n=a5 +break}a2.$2(a1,m)}break}o=p*2 +e=B.c.T(l,8) +if(!(o<16))return A.a(s,o) +s[o]=e;++o +if(!(o<16))return A.a(s,o) +s[o]=l&255;++p +if(j===58){if(p<8){++n +m=n +l=0 +k=!0 +continue}a2.$2(a1,n)}break}if(j===58){if(q<0){d=p+1;++n +q=p +p=d +m=n +continue}a2.$2("only one wildcard `::` is allowed",n)}if(q!==p-1)a2.$2("missing part",n) +break}if(n0){a=c*2 +a0=16-b*2 +B.e.M(s,a0,16,s,a) +B.e.ep(s,a,a0,0)}}return s}, +hm(a,b,c,d,e,f,g){return new A.hl(a,b,c,d,e,f,g)}, +au(a,b,c,d){var s,r,q,p,o,n,m,l,k=null +d=d==null?"":A.og(d,0,d.length) +s=A.rL(k,0,0) +a=A.rI(a,0,a==null?0:a.length,!1) +r=A.rK(k,0,0,k) +q=A.rH(k,0,0) +p=A.of(k,d) +o=d==="file" +if(a==null)n=s.length!==0||p!=null||o +else n=!1 +if(n)a="" +n=a==null +m=!n +b=A.rJ(b,0,b==null?0:b.length,c,d,m) +l=d.length===0 +if(l&&n&&!B.a.A(b,"/"))b=A.pD(b,!l||m) +else b=A.dw(b) +return A.hm(d,s,n&&B.a.A(b,"//")?"":a,p,b,r,q)}, +rE(a){if(a==="http")return 80 +if(a==="https")return 443 +return 0}, +eD(a,b,c){throw A.c(A.ap(c,a,b))}, +rD(a,b){return b?A.wn(a,!1):A.wm(a,!1)}, +wi(a,b){var s,r,q +for(s=a.length,r=0;r")),r=r.h("Q.E");s.l();){q=s.d +if(q==null)q=r.a(q) +if(B.a.I(q,A.T('["*/:<>?\\\\|]',!0,!1,!1,!1)))if(b)throw A.c(A.W("Illegal character in path",null)) +else throw A.c(A.ad("Illegal character in path: "+q))}}, +wj(a,b){var s,r="Illegal drive letter " +if(!(65<=a&&a<=90))s=97<=a&&a<=122 +else s=!0 +if(s)return +if(b)throw A.c(A.W(r+A.r_(a),null)) +else throw A.c(A.ad(r+A.r_(a)))}, +wm(a,b){var s=null,r=A.l(a.split("/"),t.s) +if(B.a.A(a,"/"))return A.au(s,s,r,"file") +else return A.au(s,s,r,s)}, +wn(a,b){var s,r,q,p,o,n="\\",m=null,l="file" +if(B.a.A(a,"\\\\?\\"))if(B.a.E(a,"UNC\\",4))a=B.a.aN(a,0,7,n) +else{a=B.a.N(a,4) +s=a.length +r=!0 +if(s>=3){if(1>=s)return A.a(a,1) +if(a.charCodeAt(1)===58){if(2>=s)return A.a(a,2) +s=a.charCodeAt(2)!==92}else s=r}else s=r +if(s)throw A.c(A.ao(a,"path","Windows paths with \\\\?\\ prefix must be absolute"))}else a=A.bD(a,"/",n) +s=a.length +if(s>1&&a.charCodeAt(1)===58){if(0>=s)return A.a(a,0) +A.wj(a.charCodeAt(0),!0) +if(s!==2){if(2>=s)return A.a(a,2) +s=a.charCodeAt(2)!==92}else s=!0 +if(s)throw A.c(A.ao(a,"path","Windows paths with drive letter must be absolute")) +q=A.l(a.split(n),t.s) +A.od(q,!0,1) +return A.au(m,m,q,l)}if(B.a.A(a,n))if(B.a.E(a,n,1)){p=B.a.aX(a,n,2) +s=p<0 +o=s?B.a.N(a,2):B.a.t(a,2,p) +q=A.l((s?"":B.a.N(a,p+1)).split(n),t.s) +A.od(q,!0,0) +return A.au(o,m,q,l)}else{q=A.l(a.split(n),t.s) +A.od(q,!0,0) +return A.au(m,m,q,l)}else{q=A.l(a.split(n),t.s) +A.od(q,!0,0) +return A.au(m,m,q,m)}}, +of(a,b){if(a!=null&&a===A.rE(b))return null +return a}, +rI(a,b,c,d){var s,r,q,p,o,n,m,l,k +if(a==null)return null +if(b===c)return"" +s=a.length +if(!(b>=0&&b=0&&r=b&&o=b&&s=0&&r=o){if(h==null)h=new A.aF("") +if(q=0&&r=n){if(p==null)p=new A.aF("") +if(q")).au(0,"/")}else if(d!=null)throw A.c(A.W("Both path and pathSegments specified",null)) +else r=A.hn(a,b,c,128,!0,!0) +if(r.length===0){if(q)return"/"}else if(p&&!B.a.A(r,"/"))r="/"+r +return A.wo(r,e,f)}, +wo(a,b,c){var s=b.length===0 +if(s&&!c&&!B.a.A(a,"/")&&!B.a.A(a,"\\"))return A.pD(a,!s||c) +return A.dw(a)}, +rK(a,b,c,d){if(a!=null)return A.hn(a,b,c,256,!0,!1) +return null}, +rH(a,b,c){if(a==null)return null +return A.hn(a,b,c,256,!0,!1)}, +pC(a,b,c){var s,r,q,p,o,n,m=u.v,l=b+2,k=a.length +if(l>=k)return"%" +s=b+1 +if(!(s>=0&&s=0))return A.a(a,l) +q=a.charCodeAt(l) +p=A.oI(r) +o=A.oI(q) +if(p<0||o<0)return"%" +n=p*16+o +if(n<127){if(!(n>=0))return A.a(m,n) +l=(m.charCodeAt(n)&1)!==0}else l=!1 +if(l)return A.b_(c&&65<=n&&90>=n?(n|32)>>>0:n) +if(r>=97||q>=97)return B.a.t(a,b,b+3).toUpperCase() +return null}, +pB(a){var s,r,q,p,o,n,m,l,k="0123456789ABCDEF" +if(a<=127){s=new Uint8Array(3) +s[0]=37 +r=a>>>4 +if(!(r<16))return A.a(k,r) +s[1]=k.charCodeAt(r) +s[2]=k.charCodeAt(a&15)}else{if(a>2047)if(a>65535){q=240 +p=4}else{q=224 +p=3}else{q=192 +p=2}r=3*p +s=new Uint8Array(r) +for(o=0;--p,p>=0;q=128){n=B.c.jc(a,6*p)&63|q +if(!(o>>4 +if(!(l<16))return A.a(k,l) +if(!(m=0&&q=m)return A.a(s,-1) +s.pop() +if(s.length===0)B.b.k(s,"")}p=!0}else{p="."===n +if(!p)B.b.k(s,n)}}if(p)B.b.k(s,"") +return B.b.au(s,"/")}, +pD(a,b){var s,r,q,p,o,n +if(!A.rM(a))return!b?A.rF(a):a +s=A.l([],t.s) +for(r=a.split("/"),q=r.length,p=!1,o=0;o=s.length)return A.a(s,-1) +s.pop()}else B.b.k(s,"..") +p=!0}else{p="."===n +if(!p)B.b.k(s,n.length===0&&s.length===0?"./":n)}}if(s.length===0)return"./" +if(p)B.b.k(s,"") +if(!b){if(0>=s.length)return A.a(s,0) +B.b.p(s,0,A.rF(s[0]))}return B.b.au(s,"/")}, +rF(a){var s,r,q,p=u.v,o=a.length +if(o>=2&&A.rG(a.charCodeAt(0)))for(s=1;s127)throw A.c(A.W("Illegal percent encoding in URI",null)) +if(r===37){if(n+3>o)throw A.c(A.W("Truncated URI",null)) +B.b.k(p,A.wl(a,n+1)) +n+=2}else B.b.k(p,r)}}return d.cX(p)}, +rG(a){var s=a|32 +return 97<=s&&s<=122}, +vG(a,b,c,d,e){d.a=d.a}, +r9(a,b,c){var s,r,q,p,o,n,m,l,k="Invalid MIME type",j=A.l([b-1],t.t) +for(s=a.length,r=b,q=-1,p=null;rb)throw A.c(A.ap(k,a,r)) +while(p!==44){B.b.k(j,r);++r +for(o=-1;r=0))return A.a(a,r) +p=a.charCodeAt(r) +if(p===61){if(o<0)o=r}else if(p===59||p===44)break}if(o>=0)B.b.k(j,o) +else{n=B.b.gG(j) +if(p!==44||r!==n+7||!B.a.E(a,"base64",n+1))throw A.c(A.ap("Expecting '='",a,r)) +break}}B.b.k(j,r) +m=r+1 +if((j.length&1)===1)a=B.am.jT(a,m,s) +else{l=A.rN(a,m,s,256,!0,!1) +if(l!=null)a=B.a.aN(a,m,s,l)}return new A.iU(a,j,c)}, +vF(a,b,c){var s,r,q,p,o,n="0123456789ABCDEF" +for(s=b.length,r=0,q=0;q>>4 +if(!(o<16))return A.a(n,o) +o=A.b_(n.charCodeAt(o)) +c.a+=o +o=A.b_(n.charCodeAt(p&15)) +c.a+=o}}if((r&4294967040)!==0)for(q=0;q255)throw A.c(A.ao(p,"non-byte value",null))}}, +td(a,b,c,d,e){var s,r,q,p,o,n='\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe3\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x0e\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xea\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\n\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xeb\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xeb\xeb\xeb\x8b\xeb\xeb\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xeb\x83\xeb\xeb\x8b\xeb\x8b\xeb\xcd\x8b\xeb\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x92\x83\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xeb\x8b\xeb\x8b\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xebD\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x12D\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\xe5\xe5\xe5\x05\xe5D\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe8\x8a\xe5\xe5\x05\xe5\x05\xe5\xcd\x05\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x8a\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05f\x05\xe5\x05\xe5\xac\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\xe5\xe5\xe5\x05\xe5D\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\x8a\xe5\xe5\x05\xe5\x05\xe5\xcd\x05\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x8a\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05f\x05\xe5\x05\xe5\xac\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7D\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\xe7\xe7\xe7\xe7\xe7\xe7\xcd\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\xe7\x07\x07\x07\x07\x07\x07\x07\x07\x07\xe7\xe7\xe7\xe7\xe7\xac\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7D\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\xe7\xe7\xe7\xe7\xe7\xe7\xcd\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\xe7\xe7\xe7\xe7\xe7\xac\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\x05\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x10\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x12\n\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\v\n\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xec\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\xec\xec\xec\f\xec\xec\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\xec\xec\xec\xec\f\xec\f\xec\xcd\f\xec\f\f\f\f\f\f\f\f\f\xec\f\f\f\f\f\f\f\f\f\f\xec\f\xec\f\xec\f\xed\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\xed\xed\xed\r\xed\xed\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\xed\xed\xed\xed\r\xed\r\xed\xed\r\xed\r\r\r\r\r\r\r\r\r\xed\r\r\r\r\r\r\r\r\r\r\xed\r\xed\r\xed\r\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xea\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x0f\xea\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe9\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x11\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xe9\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\v\t\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x13\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\v\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xf5\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\x15\xf5\x15\x15\xf5\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\xf5\xf5\xf5\xf5\xf5\xf5' +for(s=a.length,r=b;r95)q=31 +p=d*96+q +if(!(p<2112))return A.a(n,p) +o=n.charCodeAt(p) +d=o&31 +B.b.p(e,o>>>5,r)}return d}, +rw(a){if(a.b===7&&B.a.A(a.a,"package")&&a.c<=0)return A.tf(a.a,a.e,a.f) +return-1}, +tf(a,b,c){var s,r,q,p +for(s=a.length,r=b,q=0;r=0&&r=1)return a.$1(b) +return a.$0()}, +wA(a,b,c,d){t.Y.a(a) +A.d(d) +if(d>=2)return a.$2(b,c) +if(d===1)return a.$1(b) +return a.$0()}, +wB(a,b,c,d,e){t.Y.a(a) +A.d(e) +if(e>=3)return a.$3(b,c,d) +if(e===2)return a.$2(b,c) +if(e===1)return a.$1(b) +return a.$0()}, +wC(a,b,c,d,e,f){t.Y.a(a) +A.d(f) +if(f>=4)return a.$4(b,c,d,e) +if(f===3)return a.$3(b,c,d) +if(f===2)return a.$2(b,c) +if(f===1)return a.$1(b) +return a.$0()}, +wD(a,b,c,d,e,f,g){t.Y.a(a) +A.d(g) +if(g>=5)return a.$5(b,c,d,e,f) +if(g===4)return a.$4(b,c,d,e) +if(g===3)return a.$3(b,c,d) +if(g===2)return a.$2(b,c) +if(g===1)return a.$1(b) +return a.$0()}, +t6(a){return a==null||A.cj(a)||typeof a=="number"||typeof a=="string"||t.jx.b(a)||t.E.b(a)||t.fi.b(a)||t.m6.b(a)||t.hM.b(a)||t.bW.b(a)||t.mC.b(a)||t.pk.b(a)||t.hn.b(a)||t.lo.b(a)||t.fW.b(a)}, +y9(a){if(A.t6(a))return a +return new A.oN(new A.en(t.mp)).$1(a)}, +jR(a,b,c,d){return d.a(a[b].apply(a,c))}, +eL(a,b,c){var s,r +if(b==null)return c.a(new a()) +if(b instanceof Array)switch(b.length){case 0:return c.a(new a()) +case 1:return c.a(new a(b[0])) +case 2:return c.a(new a(b[0],b[1])) +case 3:return c.a(new a(b[0],b[1],b[2])) +case 4:return c.a(new a(b[0],b[1],b[2],b[3]))}s=[null] +B.b.aI(s,b) +r=a.bind.apply(a,s) +String(r) +return c.a(new r())}, +a7(a,b){var s=new A.v($.n,b.h("v<0>")),r=new A.ai(s,b.h("ai<0>")) +a.then(A.cW(new A.oR(r,b),1),A.cW(new A.oS(r),1)) +return s}, +t5(a){return a==null||typeof a==="boolean"||typeof a==="number"||typeof a==="string"||a instanceof Int8Array||a instanceof Uint8Array||a instanceof Uint8ClampedArray||a instanceof Int16Array||a instanceof Uint16Array||a instanceof Int32Array||a instanceof Uint32Array||a instanceof Float32Array||a instanceof Float64Array||a instanceof ArrayBuffer||a instanceof DataView}, +tl(a){if(A.t5(a))return a +return new A.oD(new A.en(t.mp)).$1(a)}, +oN:function oN(a){this.a=a}, +oR:function oR(a,b){this.a=a +this.b=b}, +oS:function oS(a){this.a=a}, +oD:function oD(a){this.a=a}, +tt(a,b,c){A.pM(c,t.q,"T","max") +return Math.max(c.a(a),c.a(b))}, +yq(a){return Math.sqrt(a)}, +yp(a){return Math.sin(a)}, +xR(a){return Math.cos(a)}, +yw(a){return Math.tan(a)}, +xs(a){return Math.acos(a)}, +xt(a){return Math.asin(a)}, +xN(a){return Math.atan(a)}, +ju:function ju(a){this.a=a}, +dN:function dN(){}, +hV:function hV(a){this.$ti=a}, +ij:function ij(a){this.$ti=a}, +is:function is(){}, +iS:function iS(){}, +uK(a,b){var s=new A.f5(a,b,A.ag(t.S,t.eV),A.fC(null,null,!0,t.o5),new A.ai(new A.v($.n,t.D),t.h)) +s.hR(a,!1,b) +return s}, +f5:function f5(a,b,c,d,e){var _=this +_.a=a +_.c=b +_.d=0 +_.e=c +_.f=d +_.r=!1 +_.w=e}, +ky:function ky(a){this.a=a}, +kz:function kz(a,b){this.a=a +this.b=b}, +jy:function jy(a,b){this.a=a +this.b=b}, +hQ:function hQ(){}, +hX:function hX(a){this.a=a}, +hW:function hW(){}, +kA:function kA(a){this.a=a}, +kB:function kB(a){this.a=a}, +cx:function cx(){}, +at:function at(a,b){this.a=a +this.b=b}, +bw:function bw(a,b){this.a=a +this.b=b}, +aZ:function aZ(a){this.a=a}, +bH:function bH(a,b,c){this.a=a +this.b=b +this.c=c}, +bX:function bX(a){this.a=a}, +dZ:function dZ(a,b){this.a=a +this.b=b}, +cK:function cK(a,b){this.a=a +this.b=b}, +cs:function cs(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +cD:function cD(a){this.a=a}, +bI:function bI(a,b){this.a=a +this.b=b}, +c4:function c4(a,b){this.a=a +this.b=b}, +cF:function cF(a,b){this.a=a +this.b=b}, +cr:function cr(a,b){this.a=a +this.b=b}, +cH:function cH(a){this.a=a}, +cE:function cE(a,b){this.a=a +this.b=b}, +c5:function c5(a){this.a=a}, +bN:function bN(a){this.a=a}, +vr(a,b,c){var s=null,r=t.S,q=A.l([],t.t) +r=new A.iG(a,!1,!0,A.ag(r,t.x),A.ag(r,t.gU),q,new A.he(s,s,t.ex),A.pc(t.d0),new A.ai(new A.v($.n,t.D),t.h),A.fC(s,s,!1,t.bC)) +r.hT(a,!1,!0) +return r}, +iG:function iG(a,b,c,d,e,f,g,h,i,j){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.f=_.e=0 +_.r=e +_.w=f +_.x=g +_.y=!1 +_.z=h +_.Q=i +_.as=j}, +lv:function lv(a){this.a=a}, +lw:function lw(a,b){this.a=a +this.b=b}, +lx:function lx(a,b){this.a=a +this.b=b}, +lr:function lr(a,b){this.a=a +this.b=b}, +ls:function ls(a,b){this.a=a +this.b=b}, +lu:function lu(a,b){this.a=a +this.b=b}, +lt:function lt(a){this.a=a}, +et:function et(a,b,c){this.a=a +this.b=b +this.c=c}, +j6:function j6(a){this.a=a}, +mr:function mr(a,b){this.a=a +this.b=b}, +ms:function ms(a,b){this.a=a +this.b=b}, +mp:function mp(){}, +ml:function ml(a,b){this.a=a +this.b=b}, +mm:function mm(){}, +mn:function mn(){}, +mk:function mk(){}, +mq:function mq(){}, +mo:function mo(){}, +df:function df(a,b){this.a=a +this.b=b}, +bO:function bO(a,b){this.a=a +this.b=b}, +yn(a,b){var s,r,q={} +q.a=s +q.a=null +s=new A.cn(new A.ak(new A.v($.n,b.h("v<0>")),b.h("ak<0>")),A.l([],t.f7),b.h("cn<0>")) +q.a=s +r=t.X +A.yo(new A.oT(q,a,b),A.l9([B.a0,s],r,r),t.H) +return q.a}, +pL(){var s=$.n.j(0,B.a0) +if(s instanceof A.cn&&s.c)throw A.c(B.P)}, +oT:function oT(a,b,c){this.a=a +this.b=b +this.c=c}, +cn:function cn(a,b,c){var _=this +_.a=a +_.b=b +_.c=!1 +_.$ti=c}, +eX:function eX(){}, +aw:function aw(){}, +eV:function eV(a,b){this.a=a +this.b=b}, +dI:function dI(a,b){this.a=a +this.b=b}, +rZ(a){return"SAVEPOINT s"+A.d(a)}, +rX(a){return"RELEASE s"+A.d(a)}, +rY(a){return"ROLLBACK TO s"+A.d(a)}, +f2:function f2(){}, +lj:function lj(){}, +m_:function m_(){}, +lf:function lf(){}, +dL:function dL(){}, +fm:function fm(){}, +hZ:function hZ(){}, +bU:function bU(){}, +my:function my(a,b,c){this.a=a +this.b=b +this.c=c}, +mD:function mD(a,b,c){this.a=a +this.b=b +this.c=c}, +mB:function mB(a,b,c){this.a=a +this.b=b +this.c=c}, +mC:function mC(a,b,c){this.a=a +this.b=b +this.c=c}, +mA:function mA(a,b,c){this.a=a +this.b=b +this.c=c}, +mz:function mz(a,b){this.a=a +this.b=b}, +jK:function jK(){}, +hb:function hb(a,b,c,d,e,f,g,h,i){var _=this +_.y=a +_.z=null +_.Q=b +_.as=c +_.at=d +_.ax=e +_.ay=f +_.ch=g +_.e=h +_.a=i +_.b=0 +_.d=_.c=!1}, +o1:function o1(a){this.a=a}, +o2:function o2(a){this.a=a}, +f3:function f3(){}, +kx:function kx(a,b){this.a=a +this.b=b}, +kw:function kw(a){this.a=a}, +jd:function jd(a,b){var _=this +_.e=a +_.a=b +_.b=0 +_.d=_.c=!1}, +fX:function fX(a,b,c){var _=this +_.e=a +_.f=null +_.r=b +_.a=c +_.b=0 +_.d=_.c=!1}, +mT:function mT(a,b){this.a=a +this.b=b}, +qT(a,b){var s,r,q,p=A.ag(t.N,t.S) +for(s=a.length,r=0;r3)throw A.c("Expected two or three arguments to regexp") +s=a.j(0,0) +q=a.j(0,1) +if(s==null||q==null)return null +if(typeof s!="string"||typeof q!="string")throw A.c("Expected two strings as parameters to regexp") +if(g===3){p=a.j(0,2) +if(A.bW(p)){k=(p&1)===1 +j=(p&2)!==2 +i=(p&4)===4 +h=(p&8)===8}}r=null +try{o=k +n=j +m=i +r=A.T(s,n,h,o,m)}catch(l){if(A.R(l) instanceof A.aO)throw A.c("Invalid regex") +else throw l}o=r.b +return o.test(q)}, +wI(a){var s,r,q=a.a.b +if(q<2||q>3)throw A.c("Expected 2 or 3 arguments to moor_contains") +s=a.j(0,0) +r=a.j(0,1) +if(s==null||r==null)return null +if(typeof s!="string"||typeof r!="string")throw A.c("First two args to contains must be strings") +return q===3&&a.j(0,2)===1?B.a.I(s,r):B.a.I(s.toLowerCase(),r.toLowerCase())}, +kH:function kH(){}, +oy:function oy(a){this.a=a}, +ih:function ih(a){var _=this +_.a=$ +_.b=!1 +_.d=null +_.e=a}, +l6:function l6(a,b){this.a=a +this.b=b}, +l7:function l7(a,b){this.a=a +this.b=b}, +bK:function bK(){this.a=null}, +la:function la(a,b,c,d,e){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e}, +lb:function lb(a,b,c){this.a=a +this.b=b +this.c=c}, +lc:function lc(a,b){this.a=a +this.b=b}, +vL(a,b,c,d){var s,r=null,q=new A.iM(t.b2),p=t.X,o=A.fC(r,r,!1,p),n=A.fC(r,r,!1,p),m=A.k(n),l=A.k(o),k=A.qu(new A.ax(n,m.h("ax<1>")),new A.dv(o,l.h("dv<1>")),!0,p) +q.a=k +p=A.qu(new A.ax(o,l.h("ax<1>")),new A.dv(n,m.h("dv<1>")),!0,p) +q.b=p +s=new A.j6(A.pe(c)) +a.onmessage=A.be(new A.mh(b,q,d,s)) +k=k.b +k===$&&A.N() +new A.ax(k,A.k(k).h("ax<1>")).eD(new A.mi(d,s,a),new A.mj(b,a)) +return p}, +mh:function mh(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +mi:function mi(a,b,c){this.a=a +this.b=b +this.c=c}, +mj:function mj(a,b){this.a=a +this.b=b}, +kt:function kt(a,b,c){var _=this +_.a=a +_.b=b +_.c=c +_.d=null}, +kv:function kv(a){this.a=a}, +ku:function ku(a,b){this.a=a +this.b=b}, +pe(a){var s +A:{if(a<=0){s=B.t +break A}if(1===a){s=B.aR +break A}if(2===a){s=B.aS +break A}if(3===a){s=B.aT +break A}if(a>3){s=B.u +break A}s=A.K(A.eT(null))}return s}, +qS(a){if("v" in a)return A.pe(A.d(A.M(a.v))) +else return B.t}, +pn(a){var s,r,q,p,o,n,m,l,k,j=A.w(a.type),i=a.payload +A:{if("Error"===j){s=new A.ed(A.w(A.i(i))) +break A}if("ServeDriftDatabase"===j){A.i(i) +r=A.qS(i) +s=A.bR(A.w(i.sqlite)) +q=A.i(i.port) +p=A.p2(B.aH,A.w(i.storage),t.cy) +o=A.w(i.database) +n=A.bn(i.initPort) +m=r.c +l=m<2||A.aJ(i.migrations) +s=new A.cG(s,q,p,o,n,r,l,m<3||A.aJ(i.new_serialization)) +break A}if("StartFileSystemServer"===j){s=new A.e5(A.i(i)) +break A}if("RequestCompatibilityCheck"===j){s=new A.da(A.w(i)) +break A}if("DedicatedWorkerCompatibilityResult"===j){A.i(i) +k=A.l([],t.I) +if("existing" in i)B.b.aI(k,A.qp(t.c.a(i.existing))) +s=A.aJ(i.supportsNestedWorkers) +q=A.aJ(i.canAccessOpfs) +p=A.aJ(i.supportsSharedArrayBuffers) +o=A.aJ(i.supportsIndexedDb) +n=A.aJ(i.indexedDbExists) +m=A.aJ(i.opfsExists) +m=new A.dM(s,q,p,o,k,A.qS(i),n,m) +s=m +break A}if("SharedWorkerCompatibilityResult"===j){s=A.vs(t.c.a(i)) +break A}if("DeleteDatabase"===j){s=i==null?A.a8(i):i +t.c.a(s) +q=$.q4() +if(0<0||0>=s.length)return A.a(s,0) +q=q.j(0,A.w(s[0])) +q.toString +if(1<0||1>=s.length)return A.a(s,1) +s=new A.f4(new A.an(q,A.w(s[1]))) +break A}s=A.K(A.W("Unknown type "+j,null))}return s}, +vs(a){var s,r,q=new A.lE(a) +if(a.length>5){if(5<0||5>=a.length)return A.a(a,5) +s=A.qp(t.c.a(a[5])) +if(a.length>6){if(6<0||6>=a.length)return A.a(a,6) +r=A.pe(A.d(A.M(a[6])))}else r=B.t}else{s=B.C +r=B.t}return new A.c6(q.$1(0),q.$1(1),q.$1(2),s,r,q.$1(3),q.$1(4))}, +qp(a){var s,r,q=A.l([],t.I),p=B.b.bw(a,t.m),o=p.$ti +p=new A.b9(p,p.gm(0),o.h("b9")) +o=o.h("z.E") +while(p.l()){s=p.d +if(s==null)s=o.a(s) +r=$.q4().j(0,A.w(s.l)) +r.toString +B.b.k(q,new A.an(r,A.w(s.n)))}return q}, +qo(a){var s,r,q,p,o=A.l([],t.kG) +for(s=a.length,r=0;r"))) +while(i.l()){l=i.gn() +if(A.w(l.name)===a){q=!0 +s=1 +break A}}q=!1 +s=1 +break +case 8:k=A.i(n.open(a,1)) +k.onupgradeneeded=A.be(new A.oB(g,k)) +s=10 +return A.e(A.ke(k,t.m),$async$eM) +case 10:j=c +if(g.a==null)g.a=!0 +j.close() +s=g.a===!1?11:12 +break +case 11:s=13 +return A.e(A.ke(A.i(n.deleteDatabase(a)),t.X),$async$eM) +case 13:case 12:p=2 +s=6 +break +case 4:p=3 +f=o.pop() +s=6 +break +case 3:s=2 +break +case 6:i=g.a +q=i===!0 +s=1 +break +case 1:return A.p(q,r) +case 2:return A.o(o.at(-1),r)}}) +return A.q($async$eM,r)}, +oE(a){var s=0,r=A.r(t.H),q +var $async$oE=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:q=v.G +s="indexedDB" in q?2:3 +break +case 2:s=4 +return A.e(A.ke(A.i(A.i(q.indexedDB).deleteDatabase(a)),t.X),$async$oE) +case 4:case 3:return A.p(null,r)}}) +return A.q($async$oE,r)}, +jU(){var s=null +return A.yl()}, +yl(){var s=0,r=A.r(t.mU),q,p=2,o=[],n,m,l,k,j,i,h +var $async$jU=A.t(function(a,b){if(a===1){o.push(b) +s=p}for(;;)switch(s){case 0:j=null +i=A.pZ() +if(i==null){q=null +s=1 +break}m=t.m +s=3 +return A.e(A.a7(A.i(i.getDirectory()),m),$async$jU) +case 3:n=b +p=5 +l=j +if(l==null)l={} +s=8 +return A.e(A.a7(A.i(n.getDirectoryHandle("drift_db",l)),m),$async$jU) +case 8:m=b +q=m +s=1 +break +p=2 +s=7 +break +case 5:p=4 +h=o.pop() +q=null +s=1 +break +s=7 +break +case 4:s=2 +break +case 7:case 1:return A.p(q,r) +case 2:return A.o(o.at(-1),r)}}) +return A.q($async$jU,r)}, +eO(){var s=0,r=A.r(t.r),q,p=2,o=[],n=[],m,l,k,j,i,h,g,f +var $async$eO=A.t(function(a,b){if(a===1){o.push(b) +s=p}for(;;)switch(s){case 0:s=3 +return A.e(A.jU(),$async$eO) +case 3:g=b +if(g==null){q=B.B +s=1 +break}j=t.om +if(!(t.aQ.a(v.G.Symbol.asyncIterator) in g))A.K(A.W("Target object does not implement the async iterable interface",null)) +m=new A.h4(j.h("B(P.T)").a(new A.oQ()),new A.eU(g,j),j.h("h4")) +l=A.l([],t.s) +j=new A.du(A.dA(m,"stream",t.K),t.hT) +p=4 +i=t.m +case 7:s=9 +return A.e(j.l(),$async$eO) +case 9:if(!b){s=8 +break}k=j.gn() +s=A.w(k.kind)==="directory"?10:11 +break +case 10:p=13 +s=16 +return A.e(A.a7(A.i(k.getFileHandle("database")),i),$async$eO) +case 16:J.oX(l,A.w(k.name)) +p=4 +s=15 +break +case 13:p=12 +f=o.pop() +s=15 +break +case 12:s=4 +break +case 15:case 11:s=7 +break +case 8:n.push(6) +s=5 +break +case 4:n=[2] +case 5:p=2 +s=17 +return A.e(j.K(),$async$eO) +case 17:s=n.pop() +break +case 6:q=l +s=1 +break +case 1:return A.p(q,r) +case 2:return A.o(o.at(-1),r)}}) +return A.q($async$eO,r)}, +hv(a){return A.xT(a)}, +xT(a){var s=0,r=A.r(t.H),q,p=2,o=[],n,m,l,k,j +var $async$hv=A.t(function(b,c){if(b===1){o.push(c) +s=p}for(;;)switch(s){case 0:k=A.pZ() +if(k==null){s=1 +break}m=t.m +s=3 +return A.e(A.a7(A.i(k.getDirectory()),m),$async$hv) +case 3:n=c +p=5 +s=8 +return A.e(A.a7(A.i(n.getDirectoryHandle("drift_db")),m),$async$hv) +case 8:n=c +s=9 +return A.e(A.a7(A.i(n.removeEntry(a,{recursive:!0})),t.X),$async$hv) +case 9:p=2 +s=7 +break +case 5:p=4 +j=o.pop() +s=7 +break +case 4:s=2 +break +case 7:case 1:return A.p(q,r) +case 2:return A.o(o.at(-1),r)}}) +return A.q($async$hv,r)}, +ke(a,b){var s=new A.v($.n,b.h("v<0>")),r=new A.ak(s,b.h("ak<0>")),q=t.v,p=t.m +A.aU(a,"success",q.a(new A.kh(r,a,b)),!1,p) +A.aU(a,"error",q.a(new A.ki(r,a)),!1,p) +A.aU(a,"blocked",q.a(new A.kj(r,a)),!1,p) +return s}, +oB:function oB(a,b){this.a=a +this.b=b}, +oQ:function oQ(){}, +hY:function hY(a,b){this.a=a +this.b=b}, +kG:function kG(a,b){this.a=a +this.b=b}, +kD:function kD(a){this.a=a}, +kC:function kC(a){this.a=a}, +kE:function kE(a,b,c){this.a=a +this.b=b +this.c=c}, +kF:function kF(a,b,c){this.a=a +this.b=b +this.c=c}, +jh:function jh(a,b){this.a=a +this.b=b}, +e2:function e2(a,b,c){var _=this +_.a=a +_.b=b +_.c=0 +_.d=c}, +lp:function lp(a){this.a=a}, +m7:function m7(a,b){this.a=a +this.b=b}, +kh:function kh(a,b,c){this.a=a +this.b=b +this.c=c}, +ki:function ki(a,b){this.a=a +this.b=b}, +kj:function kj(a,b){this.a=a +this.b=b}, +ly:function ly(a,b){this.a=a +this.b=null +this.c=b}, +lD:function lD(a){this.a=a}, +lz:function lz(a,b){this.a=a +this.b=b}, +lC:function lC(a,b,c){this.a=a +this.b=b +this.c=c}, +lA:function lA(a){this.a=a}, +lB:function lB(a,b,c){this.a=a +this.b=b +this.c=c}, +bS:function bS(a,b){this.a=a +this.b=b}, +bA:function bA(a,b){this.a=a +this.b=b}, +j1:function j1(a,b,c,d,e){var _=this +_.e=a +_.f=null +_.r=b +_.w=c +_.x=d +_.a=e +_.b=0 +_.d=_.c=!1}, +jN:function jN(a,b,c,d,e,f,g){var _=this +_.Q=a +_.as=b +_.at=c +_.b=null +_.d=_.c=!1 +_.e=d +_.f=e +_.r=f +_.x=g +_.y=$ +_.a=!1}, +kn(a,b){if(a==null)a="." +return new A.hR(b,a)}, +pI(a){return a}, +tg(a,b){var s,r,q,p,o,n,m,l +for(s=b.length,r=1;r=1;s=q){q=s-1 +if(b[q]!=null)break}p=new A.aF("") +o=a+"(" +p.a=o +n=A.O(b) +m=n.h("dc<1>") +l=new A.dc(b,0,s,m) +l.hU(b,0,s,n.c) +m=o+new A.I(l,m.h("j(Q.E)").a(new A.oz()),m.h("I")).au(0,", ") +p.a=m +p.a=m+("): part "+(r-1)+" was null, but part "+r+" was not.") +throw A.c(A.W(p.i(0),null))}}, +hR:function hR(a,b){this.a=a +this.b=b}, +ko:function ko(){}, +kp:function kp(){}, +oz:function oz(){}, +er:function er(a){this.a=a}, +es:function es(a){this.a=a}, +dS:function dS(){}, +e_(a,b){var s,r,q,p,o,n,m=b.hz(a) +b.ac(a) +if(m!=null)a=B.a.N(a,m.length) +s=t.s +r=A.l([],s) +q=A.l([],s) +s=a.length +if(s!==0){if(0>=s)return A.a(a,0) +p=b.F(a.charCodeAt(0))}else p=!1 +if(p){if(0>=s)return A.a(a,0) +B.b.k(q,a[0]) +o=1}else{B.b.k(q,"") +o=0}for(n=o;n")),r=new A.ak(s,b.h("ak<0>")),q=t.v,p=t.m +A.aU(a,"success",q.a(new A.kf(r,a,b)),!1,p) +A.aU(a,"error",q.a(new A.kg(r,a)),!1,p) +return s}, +uI(a,b){var s=new A.v($.n,b.h("v<0>")),r=new A.ak(s,b.h("ak<0>")),q=t.v,p=t.m +A.aU(a,"success",q.a(new A.kk(r,a,b)),!1,p) +A.aU(a,"error",q.a(new A.kl(r,a)),!1,p) +A.aU(a,"blocked",q.a(new A.km(r,a)),!1,p) +return s}, +dk:function dk(a,b){var _=this +_.c=_.b=_.a=null +_.d=a +_.$ti=b}, +mL:function mL(a,b){this.a=a +this.b=b}, +mM:function mM(a,b){this.a=a +this.b=b}, +kf:function kf(a,b,c){this.a=a +this.b=b +this.c=c}, +kg:function kg(a,b){this.a=a +this.b=b}, +kk:function kk(a,b,c){this.a=a +this.b=b +this.c=c}, +kl:function kl(a,b){this.a=a +this.b=b}, +km:function km(a,b){this.a=a +this.b=b}, +mb(a,b){var s=0,r=A.r(t.m),q,p,o,n +var $async$mb=A.t(function(c,d){if(c===1)return A.o(d,r) +for(;;)switch(s){case 0:n={} +b.ab(0,new A.md(n)) +s=3 +return A.e(A.a7(A.i(v.G.WebAssembly.instantiateStreaming(a,n)),t.m),$async$mb) +case 3:p=d +o=A.i(A.i(p.instance).exports) +if("_initialize" in o)t.g.a(o._initialize).call() +q=A.i(p.instance) +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$mb,r)}, +md:function md(a){this.a=a}, +mc:function mc(a){this.a=a}, +mf(a){var s=0,r=A.r(t.es),q,p,o,n +var $async$mf=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:p=v.G +o=a.ghd()?A.i(new p.URL(a.i(0))):A.i(new p.URL(a.i(0),A.fG().i(0))) +n=A +s=3 +return A.e(A.a7(A.i(p.fetch(o,null)),t.m),$async$mf) +case 3:q=n.me(c) +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$mf,r)}, +me(a){var s=0,r=A.r(t.es),q,p,o +var $async$me=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:p=A +o=A +s=3 +return A.e(A.m6(a),$async$me) +case 3:q=new p.fI(new o.j4(c)) +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$me,r)}, +fI:function fI(a){this.a=a}, +ec:function ec(a,b,c,d,e){var _=this +_.d=a +_.e=b +_.r=c +_.b=d +_.a=e}, +j3:function j3(a,b){this.a=a +this.b=b +this.c=0}, +qV(a){var s=A.d(a.byteLength) +if(s!==8)throw A.c(A.W("Must be 8 in length",null)) +s=t.g.a(v.G.Int32Array) +return new A.lo(t.da.a(A.eL(s,[a],t.m)))}, +v9(a){return B.h}, +va(a){var s=a.b +return new A.a2(s.getInt32(0,!1),s.getInt32(4,!1),s.getInt32(8,!1))}, +vb(a){var s=a.b +return new A.ba(B.j.cX(A.ph(a.a,16,s.getInt32(12,!1))),s.getInt32(0,!1),s.getInt32(4,!1),s.getInt32(8,!1))}, +lo:function lo(a){this.b=a}, +bL:function bL(a,b,c){this.a=a +this.b=b +this.c=c}, +ah:function ah(a,b,c,d,e){var _=this +_.c=a +_.d=b +_.a=c +_.b=d +_.$ti=e}, +c2:function c2(){}, +bh:function bh(){}, +a2:function a2(a,b,c){this.a=a +this.b=b +this.c=c}, +ba:function ba(a,b,c,d){var _=this +_.d=a +_.a=b +_.b=c +_.c=d}, +j_(a){var s=0,r=A.r(t.d4),q,p,o,n,m,l,k,j,i,h +var $async$j_=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:j=t.m +s=3 +return A.e(A.a7(A.i(A.pY().getDirectory()),j),$async$j_) +case 3:i=c +h=$.hA().aO(0,A.w(a.root)) +p=h.length,o=0 +case 4:if(!(o")),r.h("a6(1)").a(A.yA()),r.h("aR<1,a6>")),t.i))}if(!B.a.I(a,q))return new A.bF(A.aY(A.l([A.r6(a)],t.ms),t.i)) +return new A.bF(A.aY(new A.I(A.l(a.split(q),t.s),t.df.a(A.yz()),t.fg),t.i))}, +bF:function bF(a){this.a=a}, +k8:function k8(){}, +kd:function kd(){}, +kc:function kc(){}, +ka:function ka(){}, +kb:function kb(a){this.a=a}, +k9:function k9(a){this.a=a}, +uX(a){return A.qs(A.w(a))}, +qs(a){return A.i3(a,new A.kR(a))}, +uW(a){return A.uT(A.w(a))}, +uT(a){return A.i3(a,new A.kP(a))}, +uQ(a){return A.i3(a,new A.kM(a))}, +uU(a){return A.uR(A.w(a))}, +uR(a){return A.i3(a,new A.kN(a))}, +uV(a){return A.uS(A.w(a))}, +uS(a){return A.i3(a,new A.kO(a))}, +i4(a){if(B.a.I(a,$.tD()))return A.bR(a) +else if(B.a.I(a,$.tE()))return A.rD(a,!0) +else if(B.a.A(a,"/"))return A.rD(a,!1) +if(B.a.I(a,"\\"))return $.um().hv(a) +return A.bR(a)}, +i3(a,b){var s,r +try{s=b.$0() +return s}catch(r){if(A.R(r) instanceof A.aO)return new A.bQ(A.au(null,"unparsed",null,null),a) +else throw r}}, +S:function S(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +kR:function kR(a){this.a=a}, +kP:function kP(a){this.a=a}, +kQ:function kQ(a){this.a=a}, +kM:function kM(a){this.a=a}, +kN:function kN(a){this.a=a}, +kO:function kO(a){this.a=a}, +ii:function ii(a){this.a=a +this.b=$}, +r5(a){if(t.i.b(a))return a +if(a instanceof A.bF)return a.hu() +return new A.ii(new A.lW(a))}, +r6(a){var s,r,q +try{if(a.length===0){r=A.r2(A.l([],t.d7),null) +return r}if(B.a.I(a,$.uf())){r=A.vB(a) +return r}if(B.a.I(a,"\tat ")){r=A.vA(a) +return r}if(B.a.I(a,$.u5())||B.a.I(a,$.u3())){r=A.vz(a) +return r}if(B.a.I(a,u.q)){r=A.uC(a).hu() +return r}if(B.a.I(a,$.u8())){r=A.r3(a) +return r}r=A.r4(a) +return r}catch(q){r=A.R(q) +if(r instanceof A.aO){s=r +throw A.c(A.ap(s.a+"\nStack trace:\n"+a,null,null))}else throw q}}, +vD(a){return A.r4(A.w(a))}, +r4(a){var s=A.aY(A.vE(a),t.B) +return new A.a6(s)}, +vE(a){var s,r=B.a.eO(a),q=$.q8(),p=t.U,o=new A.bd(A.l(A.bD(r,q,"").split("\n"),t.s),t.o.a(new A.lX()),p) +if(!o.gv(0).l())return A.l([],t.d7) +r=A.pl(o,o.gm(0)-1,p.h("h.E")) +q=A.k(r) +q=A.ik(r,q.h("S(h.E)").a(A.xZ()),q.h("h.E"),t.B) +s=A.aC(q,A.k(q).h("h.E")) +if(!B.a.en(o.gG(0),".da"))B.b.k(s,A.qs(o.gG(0))) +return s}, +vB(a){var s,r,q=A.bk(A.l(a.split("\n"),t.s),1,null,t.N) +q=q.hL(0,q.$ti.h("J(Q.E)").a(new A.lV())) +s=t.B +r=q.$ti +s=A.aY(A.ik(q,r.h("S(h.E)").a(A.tn()),r.h("h.E"),s),s) +return new A.a6(s)}, +vA(a){var s=A.aY(new A.aR(new A.bd(A.l(a.split("\n"),t.s),t.o.a(new A.lU()),t.U),t.lU.a(A.tn()),t.i4),t.B) +return new A.a6(s)}, +vz(a){var s=A.aY(new A.aR(new A.bd(A.l(B.a.eO(a).split("\n"),t.s),t.o.a(new A.lS()),t.U),t.lU.a(A.xX()),t.i4),t.B) +return new A.a6(s)}, +vC(a){return A.r3(A.w(a))}, +r3(a){var s=a.length===0?A.l([],t.d7):new A.aR(new A.bd(A.l(B.a.eO(a).split("\n"),t.s),t.o.a(new A.lT()),t.U),t.lU.a(A.xY()),t.i4) +s=A.aY(s,t.B) +return new A.a6(s)}, +r2(a,b){var s=A.aY(a,t.B) +return new A.a6(s)}, +a6:function a6(a){this.a=a}, +lW:function lW(a){this.a=a}, +lX:function lX(){}, +lV:function lV(){}, +lU:function lU(){}, +lS:function lS(){}, +lT:function lT(){}, +lZ:function lZ(){}, +lY:function lY(a){this.a=a}, +bQ:function bQ(a,b){this.a=a +this.w=b}, +f_:function f_(a){var _=this +_.b=_.a=$ +_.c=null +_.d=!1 +_.$ti=a}, +fS:function fS(a,b,c){this.a=a +this.b=b +this.$ti=c}, +fR:function fR(a,b,c){this.b=a +this.a=b +this.$ti=c}, +qu(a,b,c,d){var s,r={} +r.a=a +s=new A.fb(d.h("fb<0>")) +s.hS(b,!0,r,d) +return s}, +fb:function fb(a){var _=this +_.b=_.a=$ +_.c=null +_.d=!1 +_.$ti=a}, +kY:function kY(a,b,c){this.a=a +this.b=b +this.c=c}, +kX:function kX(a){this.a=a}, +el:function el(a,b,c,d,e){var _=this +_.a=a +_.b=b +_.c=c +_.e=_.d=!1 +_.r=_.f=null +_.w=d +_.$ti=e}, +iM:function iM(a){this.b=this.a=$ +this.$ti=a}, +e6:function e6(){}, +bP:function bP(){}, +js:function js(){}, +by:function by(a,b){this.a=a +this.b=b}, +aU(a,b,c,d,e){var s +if(c==null)s=null +else{s=A.th(new A.mR(c),t.m) +s=s==null?null:A.be(s)}s=new A.fW(a,b,s,!1,e.h("fW<0>")) +s.e8() +return s}, +th(a,b){var s=$.n +if(s===B.d)return a +return s.ej(a,b)}, +p3:function p3(a,b){this.a=a +this.$ti=b}, +fV:function fV(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.$ti=d}, +fW:function fW(a,b,c,d,e){var _=this +_.a=0 +_.b=a +_.c=b +_.d=c +_.e=d +_.$ti=e}, +mR:function mR(a){this.a=a}, +mS:function mS(a){this.a=a}, +pW(a){if(typeof dartPrint=="function"){dartPrint(a) +return}if(typeof console=="object"&&typeof console.log!="undefined"){console.log(a) +return}if(typeof print=="function"){print(a) +return}throw"Unable to print message: "+String(a)}, +ie(a,b,c,d,e,f){var s +if(c==null)return a[b]() +else if(d==null)return a[b](c) +else if(e==null)return a[b](c,d) +else{s=a[b](c,d,e) +return s}}, +pP(){var s,r,q,p,o=null +try{o=A.fG()}catch(s){if(t.mA.b(A.R(s))){r=$.or +if(r!=null)return r +throw s}else throw s}if(J.aK(o,$.rW)){r=$.or +r.toString +return r}$.rW=o +if($.q3()===$.dF())r=$.or=o.hs(".").i(0) +else{q=o.eN() +p=q.length-1 +r=$.or=p===0?q:B.a.t(q,0,p)}return r}, +tr(a){var s +if(!(a>=65&&a<=90))s=a>=97&&a<=122 +else s=!0 +return s}, +tm(a,b){var s,r,q=null,p=a.length,o=b+2 +if(p=0&&b=0&&s0)throw A.c(A.kI("BigInt value exceeds the range of 64 bits")) +return a}, +vo(a){var s,r,q=a.a,p=a.b,o=q.d,n=A.d(o.sqlite3_value_type(p)) +A:{s=null +if(1===n){q=A.d(A.M(v.G.Number(t.C.a(o.sqlite3_value_int64(p))))) +break A}if(2===n){q=A.M(o.sqlite3_value_double(p)) +break A}if(3===n){r=A.d(o.sqlite3_value_bytes(p)) +q=A.cP(q.b,A.d(o.sqlite3_value_text(p)),r) +break A}if(4===n){r=A.d(o.sqlite3_value_bytes(p)) +q=A.re(q.b,A.d(o.sqlite3_value_blob(p)),r) +break A}q=s +break A}return q}, +p6(a,b){var s,r,q,p="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012346789" +for(s=b,r=0;r<16;++r,s=q){q=a.hi(61) +if(!(q<61))return A.a(p,q) +q=s+A.b_(p.charCodeAt(q))}return s.charCodeAt(0)==0?s:s}, +ln(a){var s=0,r=A.r(t.lo),q +var $async$ln=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:s=3 +return A.e(A.a7(A.i(a.arrayBuffer()),t.a),$async$ln) +case 3:q=c +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$ln,r)}, +qX(a,b,c){var s=t.g.a(v.G.DataView),r=[a] +r.push(b) +r.push(c) +return t.eq.a(A.eL(s,r,t.m))}, +ph(a,b,c){var s=t.g.a(v.G.Uint8Array),r=[a] +r.push(b) +r.push(c) +return t._.a(A.eL(s,r,t.m))}, +uz(a,b){v.G.Atomics.notify(a,b,1/0)}, +pY(){var s=A.i(v.G.navigator) +if("storage" in s)return A.i(s.storage) +return null}, +kJ(a,b,c){var s=A.d(a.read(b,c)) +return s}, +p4(a,b,c){var s=A.d(a.write(b,c)) +return s}, +qr(a,b){return A.a7(A.i(a.removeEntry(b,{recursive:!1})),t.X)}, +yb(){var s=v.G +if(A.l3(s,"DedicatedWorkerGlobalScope"))new A.kt(s,new A.bK(),new A.hY(A.ag(t.N,t.ih),null)).S() +else if(A.l3(s,"SharedWorkerGlobalScope"))new A.ly(s,new A.hY(A.ag(t.N,t.ih),null)).S()}},B={} +var w=[A,J,B] +var $={} +A.pa.prototype={} +J.ia.prototype={ +W(a,b){return a===b}, +gC(a){return A.fr(a)}, +i(a){return"Instance of '"+A.iz(a)+"'"}, +gV(a){return A.ck(A.pG(this))}} +J.ic.prototype={ +i(a){return String(a)}, +gC(a){return a?519018:218159}, +gV(a){return A.ck(t.y)}, +$iV:1, +$iJ:1} +J.fe.prototype={ +W(a,b){return null==b}, +i(a){return"null"}, +gC(a){return 0}, +$iV:1, +$iL:1} +J.ff.prototype={$iB:1} +J.cw.prototype={ +gC(a){return 0}, +i(a){return String(a)}} +J.ix.prototype={} +J.de.prototype={} +J.bJ.prototype={ +i(a){var s=a[$.tB()] +if(s==null)s=a[$.eP()] +if(s==null)return this.hM(a) +return"JavaScript function for "+J.bg(s)}, +$ibZ:1} +J.aP.prototype={ +gC(a){return 0}, +i(a){return String(a)}} +J.d5.prototype={ +gC(a){return 0}, +i(a){return String(a)}} +J.A.prototype={ +bw(a,b){return new A.as(a,A.O(a).h("@<1>").u(b).h("as<1,2>"))}, +k(a,b){A.O(a).c.a(b) +a.$flags&1&&A.C(a,29) +a.push(b)}, +dc(a,b){var s +a.$flags&1&&A.C(a,"removeAt",1) +s=a.length +if(b>=s)throw A.c(A.ll(b,null)) +return a.splice(b,1)[0]}, +d2(a,b,c){var s +A.O(a).c.a(c) +a.$flags&1&&A.C(a,"insert",2) +s=a.length +if(b>s)throw A.c(A.ll(b,null)) +a.splice(b,0,c)}, +ex(a,b,c){var s,r +A.O(a).h("h<1>").a(c) +a.$flags&1&&A.C(a,"insertAll",2) +A.qU(b,0,a.length,"index") +if(!t.V.b(c))c=J.jZ(c) +s=J.av(c) +a.length=a.length+s +r=b+s +this.M(a,r,a.length,a,b) +this.ag(a,b,r,c)}, +ho(a){a.$flags&1&&A.C(a,"removeLast",1) +if(a.length===0)throw A.c(A.dC(a,-1)) +return a.pop()}, +B(a,b){var s +a.$flags&1&&A.C(a,"remove",1) +for(s=0;s").a(b) +a.$flags&1&&A.C(a,"addAll",2) +if(Array.isArray(b)){this.i_(a,b) +return}for(s=J.ae(b);s.l();)a.push(s.gn())}, +i_(a,b){var s,r +t.dG.a(b) +s=b.length +if(s===0)return +if(a===b)throw A.c(A.az(a)) +for(r=0;r").u(c).h("I<1,2>"))}, +au(a,b){var s,r=A.bi(a.length,"",!1,t.N) +for(s=0;s=0&&bs)throw A.c(A.a5(b,0,s,"start",null)) +if(cs)throw A.c(A.a5(c,b,s,"end",null)) +if(b===c)return A.l([],A.O(a)) +return A.l(a.slice(b,c),A.O(a))}, +cr(a,b,c){A.bu(b,c,a.length) +return A.bk(a,b,c,A.O(a).c)}, +gH(a){if(a.length>0)return a[0] +throw A.c(A.aI())}, +gG(a){var s=a.length +if(s>0)return a[s-1] +throw A.c(A.aI())}, +M(a,b,c,d,e){var s,r,q,p,o +A.O(a).h("h<1>").a(d) +a.$flags&2&&A.C(a,5) +A.bu(b,c,a.length) +s=c-b +if(s===0)return +A.am(e,"skipCount") +if(t.j.b(d)){r=d +q=e}else{r=J.eR(d,e).aB(0,!1) +q=0}p=J.ab(r) +if(q+s>p.gm(r))throw A.c(A.qx()) +if(q=0;--o)a[b+o]=p.j(r,q+o) +else for(o=0;o0){a[0]=q +a[1]=r}return}p=0 +if(n.c.b(null))for(o=0;o0)this.j3(a,p)}, +hG(a){return this.hH(a,null)}, +j3(a,b){var s,r=a.length +for(;s=r-1,r>0;r=s)if(a[s]===null){a[s]=void 0;--b +if(b===0)break}}, +d5(a,b){var s,r=a.length,q=r-1 +if(q<0)return-1 +q=0;--s){if(!(s"))}, +gC(a){return A.fr(a)}, +gm(a){return a.length}, +j(a,b){if(!(b>=0&&b=0&&b=p){r.d=null +return!1}r.d=q[s] +r.c=s+1 +return!0}, +$iF:1} +J.dT.prototype={ +aj(a,b){var s +A.rT(b) +if(ab)return 1 +else if(a===b){if(a===0){s=this.geA(b) +if(this.geA(a)===s)return 0 +if(this.geA(a))return-1 +return 1}return 0}else if(isNaN(a)){if(isNaN(b))return 0 +return 1}else return-1}, +geA(a){return a===0?1/a<0:a<0}, +kf(a){var s +if(a>=-2147483648&&a<=2147483647)return a|0 +if(isFinite(a)){s=a<0?Math.ceil(a):Math.floor(a) +return s+0}throw A.c(A.ad(""+a+".toInt()"))}, +jw(a){var s,r +if(a>=0){if(a<=2147483647){s=a|0 +return a===s?s:s+1}}else if(a>=-2147483648)return a|0 +r=Math.ceil(a) +if(isFinite(r))return r +throw A.c(A.ad(""+a+".ceil()"))}, +i(a){if(a===0&&1/a<0)return"-0.0" +else return""+a}, +gC(a){var s,r,q,p,o=a|0 +if(a===o)return o&536870911 +s=Math.abs(a) +r=Math.log(s)/0.6931471805599453|0 +q=Math.pow(2,r) +p=s<1?s/q:q/s +return((p*9007199254740992|0)+(p*3542243181176521|0))*599197+r*1259&536870911}, +af(a,b){var s=a%b +if(s===0)return 0 +if(s>0)return s +return s+b}, +f0(a,b){if((a|0)===a)if(b>=1||b<-1)return a/b|0 +return this.fP(a,b)}, +J(a,b){return(a|0)===a?a/b|0:this.fP(a,b)}, +fP(a,b){var s=a/b +if(s>=-2147483648&&s<=2147483647)return s|0 +if(s>0){if(s!==1/0)return Math.floor(s)}else if(s>-1/0)return Math.ceil(s) +throw A.c(A.ad("Result of truncating division is "+A.y(s)+": "+A.y(a)+" ~/ "+b))}, +b2(a,b){if(b<0)throw A.c(A.dz(b)) +return b>31?0:a<>>0}, +bl(a,b){var s +if(b<0)throw A.c(A.dz(b)) +if(a>0)s=this.e7(a,b) +else{s=b>31?31:b +s=a>>s>>>0}return s}, +T(a,b){var s +if(a>0)s=this.e7(a,b) +else{s=b>31?31:b +s=a>>s>>>0}return s}, +jc(a,b){if(0>b)throw A.c(A.dz(b)) +return this.e7(a,b)}, +e7(a,b){return b>31?0:a>>>b}, +gV(a){return A.ck(t.q)}, +$iaH:1, +$iD:1, +$iar:1} +J.fd.prototype={ +gh0(a){var s,r=a<0?-a-1:a,q=r +for(s=32;q>=4294967296;){q=this.J(q,4294967296) +s+=32}return s-Math.clz32(q)}, +gV(a){return A.ck(t.S)}, +$iV:1, +$ib:1} +J.id.prototype={ +gV(a){return A.ck(t.W)}, +$iV:1} +J.cu.prototype={ +jx(a,b){if(b<0)throw A.c(A.dC(a,b)) +if(b>=a.length)A.K(A.dC(a,b)) +return a.charCodeAt(b)}, +cQ(a,b,c){var s=b.length +if(c>s)throw A.c(A.a5(c,0,s,null,null)) +return new A.jH(b,a,c)}, +eg(a,b){return this.cQ(a,b,0)}, +hg(a,b,c){var s,r,q,p,o=null +if(c<0||c>b.length)throw A.c(A.a5(c,0,b.length,o,o)) +s=a.length +r=b.length +if(c+s>r)return o +for(q=0;q=0&&pr)return!1 +return b===this.N(a,r-s)}, +hr(a,b,c){A.qU(0,0,a.length,"startIndex") +return A.yv(a,b,c,0)}, +aO(a,b){var s +if(typeof b=="string")return A.l(a.split(b),t.s) +else{if(b instanceof A.cv){s=b.e +s=!(s==null?b.e=b.ib():s)}else s=!1 +if(s)return A.l(a.split(b.b),t.s) +else return this.ik(a,b)}}, +aN(a,b,c,d){var s=A.bu(b,c,a.length) +return A.q_(a,b,s,d)}, +ik(a,b){var s,r,q,p,o,n,m=A.l([],t.s) +for(s=J.oY(b,a),s=s.gv(s),r=0,q=1;s.l();){p=s.gn() +o=p.gct() +n=p.gby() +q=n-o +if(q===0&&r===o)continue +B.b.k(m,this.t(a,r,o)) +r=n}if(r0)B.b.k(m,this.N(a,r)) +return m}, +E(a,b,c){var s +if(c<0||c>a.length)throw A.c(A.a5(c,0,a.length,null,null)) +if(typeof b=="string"){s=c+b.length +if(s>a.length)return!1 +return b===a.substring(c,s)}return J.ut(b,a,c)!=null}, +A(a,b){return this.E(a,b,0)}, +t(a,b,c){return a.substring(b,A.bu(b,c,a.length))}, +N(a,b){return this.t(a,b,null)}, +eO(a){var s,r,q,p=a.trim(),o=p.length +if(o===0)return p +if(0>=o)return A.a(p,0) +if(p.charCodeAt(0)===133){s=J.v3(p,1) +if(s===o)return""}else s=0 +r=o-1 +if(!(r>=0))return A.a(p,r) +q=p.charCodeAt(r)===133?J.v4(p,r):o +if(s===0&&q===o)return p +return p.substring(s,q)}, +bI(a,b){var s,r +if(0>=b)return"" +if(b===1||a.length===0)return a +if(b!==b>>>0)throw A.c(B.ax) +for(s=a,r="";;){if((b&1)===1)r=s+r +b=b>>>1 +if(b===0)break +s+=s}return r}, +jZ(a,b,c){var s=b-a.length +if(s<=0)return a +return this.bI(c,s)+a}, +hj(a,b){var s=b-a.length +if(s<=0)return a +return a+this.bI(" ",s)}, +aX(a,b,c){var s +if(c<0||c>a.length)throw A.c(A.a5(c,0,a.length,null,null)) +s=a.indexOf(b,c) +return s}, +jG(a,b){return this.aX(a,b,0)}, +hf(a,b,c){var s,r +if(c==null)c=a.length +else if(c<0||c>a.length)throw A.c(A.a5(c,0,a.length,null,null)) +s=b.length +r=a.length +if(c+s>r)c=r-s +return a.lastIndexOf(b,c)}, +d5(a,b){return this.hf(a,b,null)}, +I(a,b){return A.yr(a,b,0)}, +aj(a,b){var s +A.w(b) +if(a===b)s=0 +else s=a>6}r=r+((r&67108863)<<3)&536870911 +r^=r>>11 +return r+((r&16383)<<15)&536870911}, +gV(a){return A.ck(t.N)}, +gm(a){return a.length}, +j(a,b){if(!(b>=0&&b"))}, +gm(a){return J.av(this.gap())}, +gD(a){return J.oZ(this.gap())}, +Y(a,b){var s=A.k(this) +return A.eY(J.eR(this.gap(),b),s.c,s.y[1])}, +ak(a,b){var s=A.k(this) +return A.eY(J.jY(this.gap(),b),s.c,s.y[1])}, +L(a,b){return A.k(this).y[1].a(J.jW(this.gap(),b))}, +gH(a){return A.k(this).y[1].a(J.jX(this.gap()))}, +gG(a){return A.k(this).y[1].a(J.p_(this.gap()))}, +i(a){return J.bg(this.gap())}} +A.eZ.prototype={ +l(){return this.a.l()}, +gn(){return this.$ti.y[1].a(this.a.gn())}, +$iF:1} +A.d_.prototype={ +gap(){return this.a}} +A.fT.prototype={$ix:1} +A.fQ.prototype={ +j(a,b){return this.$ti.y[1].a(J.aW(this.a,b))}, +p(a,b,c){var s=this.$ti +J.q9(this.a,b,s.c.a(s.y[1].a(c)))}, +cr(a,b,c){var s=this.$ti +return A.eY(J.us(this.a,b,c),s.c,s.y[1])}, +M(a,b,c,d,e){var s=this.$ti +J.uu(this.a,b,c,A.eY(s.h("h<2>").a(d),s.y[1],s.c),e)}, +ag(a,b,c,d){return this.M(0,b,c,d,0)}, +$ix:1, +$im:1} +A.as.prototype={ +bw(a,b){return new A.as(this.a,this.$ti.h("@<1>").u(b).h("as<1,2>"))}, +gap(){return this.a}} +A.dU.prototype={ +i(a){return"LateInitializationError: "+this.a}} +A.hM.prototype={ +gm(a){return this.a.length}, +j(a,b){var s=this.a +if(!(b>=0&&b"))}, +gD(a){return this.gm(this)===0}, +gH(a){if(this.gm(this)===0)throw A.c(A.aI()) +return this.L(0,0)}, +gG(a){var s=this +if(s.gm(s)===0)throw A.c(A.aI()) +return s.L(0,s.gm(s)-1)}, +au(a,b){var s,r,q,p=this,o=p.gm(p) +if(b.length!==0){if(o===0)return"" +s=A.y(p.L(0,0)) +if(o!==p.gm(p))throw A.c(A.az(p)) +for(r=s,q=1;q").u(c).h("I<1,2>"))}, +eq(a,b,c,d){var s,r,q,p=this +d.a(b) +A.k(p).u(d).h("1(1,Q.E)").a(c) +s=p.gm(p) +for(r=b,q=0;qs)throw A.c(A.a5(r,0,s,"start",null))}}, +gis(){var s=J.av(this.a),r=this.c +if(r==null||r>s)return s +return r}, +gje(){var s=J.av(this.a),r=this.b +if(r>s)return s +return r}, +gm(a){var s,r=J.av(this.a),q=this.b +if(q>=r)return 0 +s=this.c +if(s==null||s>=r)return r-q +return s-q}, +L(a,b){var s=this,r=s.gje()+b +if(b<0||r>=s.gis())throw A.c(A.i6(b,s.gm(0),s,null,"index")) +return J.jW(s.a,r)}, +Y(a,b){var s,r,q=this +A.am(b,"count") +s=q.b+b +r=q.c +if(r!=null&&s>=r)return new A.d2(q.$ti.h("d2<1>")) +return A.bk(q.a,s,r,q.$ti.c)}, +ak(a,b){var s,r,q,p=this +A.am(b,"count") +s=p.c +r=p.b +q=r+b +if(s==null)return A.bk(p.a,r,q,p.$ti.c) +else{if(s=o){r.d=null +return!1}r.d=p.L(q,s);++r.c +return!0}, +$iF:1} +A.aR.prototype={ +gv(a){var s=this.a +return new A.d6(s.gv(s),this.b,A.k(this).h("d6<1,2>"))}, +gm(a){var s=this.a +return s.gm(s)}, +gD(a){var s=this.a +return s.gD(s)}, +gH(a){var s=this.a +return this.b.$1(s.gH(s))}, +gG(a){var s=this.a +return this.b.$1(s.gG(s))}, +L(a,b){var s=this.a +return this.b.$1(s.L(s,b))}} +A.d1.prototype={$ix:1} +A.d6.prototype={ +l(){var s=this,r=s.b +if(r.l()){s.a=s.c.$1(r.gn()) +return!0}s.a=null +return!1}, +gn(){var s=this.a +return s==null?this.$ti.y[1].a(s):s}, +$iF:1} +A.I.prototype={ +gm(a){return J.av(this.a)}, +L(a,b){return this.b.$1(J.jW(this.a,b))}} +A.bd.prototype={ +gv(a){return new A.dg(J.ae(this.a),this.b,this.$ti.h("dg<1>"))}, +bc(a,b,c){var s=this.$ti +return new A.aR(this,s.u(c).h("1(2)").a(b),s.h("@<1>").u(c).h("aR<1,2>"))}} +A.dg.prototype={ +l(){var s,r +for(s=this.a,r=this.b;s.l();)if(r.$1(s.gn()))return!0 +return!1}, +gn(){return this.a.gn()}, +$iF:1} +A.f9.prototype={ +gv(a){return new A.fa(J.ae(this.a),this.b,B.R,this.$ti.h("fa<1,2>"))}} +A.fa.prototype={ +gn(){var s=this.d +return s==null?this.$ti.y[1].a(s):s}, +l(){var s,r,q=this,p=q.c +if(p==null)return!1 +for(s=q.a,r=q.b;!p.l();){q.d=null +if(s.l()){q.c=null +p=J.ae(r.$1(s.gn())) +q.c=p}else return!1}q.d=q.c.gn() +return!0}, +$iF:1} +A.dd.prototype={ +gv(a){var s=this.a +return new A.fE(s.gv(s),this.b,A.k(this).h("fE<1>"))}} +A.f6.prototype={ +gm(a){var s=this.a,r=s.gm(s) +s=this.b +if(r>s)return s +return r}, +$ix:1} +A.fE.prototype={ +l(){if(--this.b>=0)return this.a.l() +this.b=-1 +return!1}, +gn(){if(this.b<0){this.$ti.c.a(null) +return null}return this.a.gn()}, +$iF:1} +A.c7.prototype={ +Y(a,b){A.cm(b,"count",t.S) +A.am(b,"count") +return new A.c7(this.a,this.b+b,A.k(this).h("c7<1>"))}, +gv(a){var s=this.a +return new A.fx(s.gv(s),this.b,A.k(this).h("fx<1>"))}} +A.dO.prototype={ +gm(a){var s=this.a,r=s.gm(s)-this.b +if(r>=0)return r +return 0}, +Y(a,b){A.cm(b,"count",t.S) +A.am(b,"count") +return new A.dO(this.a,this.b+b,this.$ti)}, +$ix:1} +A.fx.prototype={ +l(){var s,r +for(s=this.a,r=0;r"))}} +A.fz.prototype={ +l(){var s,r,q=this +if(!q.c){q.c=!0 +for(s=q.a,r=q.b;s.l();)if(!r.$1(s.gn()))return!0}return q.a.l()}, +gn(){return this.a.gn()}, +$iF:1} +A.d2.prototype={ +gv(a){return B.R}, +gD(a){return!0}, +gm(a){return 0}, +gH(a){throw A.c(A.aI())}, +gG(a){throw A.c(A.aI())}, +L(a,b){throw A.c(A.a5(b,0,0,"index",null))}, +bc(a,b,c){this.$ti.u(c).h("1(2)").a(b) +return new A.d2(c.h("d2<0>"))}, +Y(a,b){A.am(b,"count") +return this}, +ak(a,b){A.am(b,"count") +return this}} +A.f7.prototype={ +l(){return!1}, +gn(){throw A.c(A.aI())}, +$iF:1} +A.fJ.prototype={ +gv(a){return new A.fK(J.ae(this.a),this.$ti.h("fK<1>"))}} +A.fK.prototype={ +l(){var s,r +for(s=this.a,r=this.$ti.c;s.l();)if(r.b(s.gn()))return!0 +return!1}, +gn(){return this.$ti.c.a(this.a.gn())}, +$iF:1} +A.c_.prototype={ +gm(a){return J.av(this.a)}, +gD(a){return J.oZ(this.a)}, +gH(a){return new A.an(this.b,J.jX(this.a))}, +L(a,b){return new A.an(b+this.b,J.jW(this.a,b))}, +ak(a,b){A.cm(b,"count",t.S) +A.am(b,"count") +return new A.c_(J.jY(this.a,b),this.b,A.k(this).h("c_<1>"))}, +Y(a,b){A.cm(b,"count",t.S) +A.am(b,"count") +return new A.c_(J.eR(this.a,b),b+this.b,A.k(this).h("c_<1>"))}, +gv(a){return new A.d4(J.ae(this.a),this.b,A.k(this).h("d4<1>"))}} +A.d0.prototype={ +gG(a){var s,r=this.a,q=J.ab(r),p=q.gm(r) +if(p<=0)throw A.c(A.aI()) +s=q.gG(r) +if(p!==q.gm(r))throw A.c(A.az(this)) +return new A.an(p-1+this.b,s)}, +ak(a,b){A.cm(b,"count",t.S) +A.am(b,"count") +return new A.d0(J.jY(this.a,b),this.b,this.$ti)}, +Y(a,b){A.cm(b,"count",t.S) +A.am(b,"count") +return new A.d0(J.eR(this.a,b),this.b+b,this.$ti)}, +$ix:1} +A.d4.prototype={ +l(){if(++this.c>=0&&this.a.l())return!0 +this.c=-2 +return!1}, +gn(){var s=this.c +return s>=0?new A.an(this.b+s,this.a.gn()):A.K(A.aI())}, +$iF:1} +A.aN.prototype={} +A.cM.prototype={ +p(a,b,c){A.k(this).h("cM.E").a(c) +throw A.c(A.ad("Cannot modify an unmodifiable list"))}, +M(a,b,c,d,e){A.k(this).h("h").a(d) +throw A.c(A.ad("Cannot modify an unmodifiable list"))}, +ag(a,b,c,d){return this.M(0,b,c,d,0)}} +A.e9.prototype={} +A.fv.prototype={ +gm(a){return J.av(this.a)}, +L(a,b){var s=this.a,r=J.ab(s) +return r.L(s,r.gm(s)-1-b)}} +A.iN.prototype={ +gC(a){var s=this._hashCode +if(s!=null)return s +s=664597*B.a.gC(this.a)&536870911 +this._hashCode=s +return s}, +i(a){return'Symbol("'+this.a+'")'}, +W(a,b){if(b==null)return!1 +return b instanceof A.iN&&this.a===b.a}} +A.hp.prototype={} +A.an.prototype={$r:"+(1,2)",$s:1} +A.cS.prototype={$r:"+file,outFlags(1,2)",$s:2} +A.f0.prototype={ +i(a){return A.pd(this)}, +gcZ(){return new A.eA(this.jD(),A.k(this).h("eA>"))}, +jD(){var s=this +return function(){var r=0,q=1,p=[],o,n,m,l,k +return function $async$gcZ(a,b,c){if(b===1){p.push(c) +r=q}for(;;)switch(r){case 0:o=s.ga_(),o=o.gv(o),n=A.k(s),m=n.y[1],n=n.h("aQ<1,2>") +case 2:if(!o.l()){r=3 +break}l=o.gn() +k=s.j(0,l) +r=4 +return a.b=new A.aQ(l,k==null?m.a(k):k,n),1 +case 4:r=2 +break +case 3:return 0 +case 1:return a.c=p.at(-1),3}}}}, +$ia3:1} +A.f1.prototype={ +gm(a){return this.b.length}, +gfo(){var s=this.$keys +if(s==null){s=Object.keys(this.a) +this.$keys=s}return s}, +a4(a){if(typeof a!="string")return!1 +if("__proto__"===a)return!1 +return this.a.hasOwnProperty(a)}, +j(a,b){if(!this.a4(b))return null +return this.b[this.a[b]]}, +ab(a,b){var s,r,q,p +this.$ti.h("~(1,2)").a(b) +s=this.gfo() +r=this.b +for(q=s.length,p=0;p"))}, +gbH(){return new A.dp(this.b,this.$ti.h("dp<2>"))}} +A.dp.prototype={ +gm(a){return this.a.length}, +gD(a){return 0===this.a.length}, +gv(a){var s=this.a +return new A.h_(s,s.length,this.$ti.h("h_<1>"))}} +A.h_.prototype={ +gn(){var s=this.d +return s==null?this.$ti.c.a(s):s}, +l(){var s=this,r=s.c +if(r>=s.b){s.d=null +return!1}s.d=s.a[r] +s.c=r+1 +return!0}, +$iF:1} +A.i8.prototype={ +W(a,b){if(b==null)return!1 +return b instanceof A.dR&&this.a.W(0,b.a)&&A.pR(this)===A.pR(b)}, +gC(a){return A.fo(this.a,A.pR(this),B.f,B.f)}, +i(a){var s=B.b.au([A.ck(this.$ti.c)],", ") +return this.a.i(0)+" with "+("<"+s+">")}} +A.dR.prototype={ +$2(a,b){return this.a.$1$2(a,b,this.$ti.y[0])}, +$4(a,b,c,d){return this.a.$1$4(a,b,c,d,this.$ti.y[0])}, +$S(){return A.y7(A.oC(this.a),this.$ti)}} +A.fw.prototype={} +A.m0.prototype={ +av(a){var s,r,q=this,p=new RegExp(q.a).exec(a) +if(p==null)return null +s=Object.create(null) +r=q.b +if(r!==-1)s.arguments=p[r+1] +r=q.c +if(r!==-1)s.argumentsExpr=p[r+1] +r=q.d +if(r!==-1)s.expr=p[r+1] +r=q.e +if(r!==-1)s.method=p[r+1] +r=q.f +if(r!==-1)s.receiver=p[r+1] +return s}} +A.fn.prototype={ +i(a){return"Null check operator used on a null value"}} +A.ig.prototype={ +i(a){var s,r=this,q="NoSuchMethodError: method not found: '",p=r.b +if(p==null)return"NoSuchMethodError: "+r.a +s=r.c +if(s==null)return q+p+"' ("+r.a+")" +return q+p+"' on '"+s+"' ("+r.a+")"}} +A.iR.prototype={ +i(a){var s=this.a +return s.length===0?"Error":"Error: "+s}} +A.iu.prototype={ +i(a){return"Throw of null ('"+(this.a===null?"null":"undefined")+"' from JavaScript)"}, +$iaf:1} +A.f8.prototype={} +A.ha.prototype={ +i(a){var s,r=this.b +if(r!=null)return r +r=this.a +s=r!==null&&typeof r==="object"?r.stack:null +return this.b=s==null?"":s}, +$ia4:1} +A.aM.prototype={ +i(a){var s=this.constructor,r=s==null?null:s.name +return"Closure '"+A.tA(r==null?"unknown":r)+"'"}, +$ibZ:1, +gki(){return this}, +$C:"$1", +$R:1, +$D:null} +A.hK.prototype={$C:"$0",$R:0} +A.hL.prototype={$C:"$2",$R:2} +A.iO.prototype={} +A.iL.prototype={ +i(a){var s=this.$static_name +if(s==null)return"Closure of unknown static method" +return"Closure '"+A.tA(s)+"'"}} +A.dJ.prototype={ +W(a,b){if(b==null)return!1 +if(this===b)return!0 +if(!(b instanceof A.dJ))return!1 +return this.$_target===b.$_target&&this.a===b.a}, +gC(a){return(A.pV(this.a)^A.fr(this.$_target))>>>0}, +i(a){return"Closure '"+this.$_name+"' of "+("Instance of '"+A.iz(this.a)+"'")}} +A.iF.prototype={ +i(a){return"RuntimeError: "+this.a}} +A.c0.prototype={ +gm(a){return this.a}, +gD(a){return this.a===0}, +ga_(){return new A.c1(this,A.k(this).h("c1<1>"))}, +gbH(){return new A.fj(this,A.k(this).h("fj<2>"))}, +gcZ(){return new A.fg(this,A.k(this).h("fg<1,2>"))}, +a4(a){var s,r +if(typeof a=="string"){s=this.b +if(s==null)return!1 +return s[a]!=null}else if(typeof a=="number"&&(a&0x3fffffff)===a){r=this.c +if(r==null)return!1 +return r[a]!=null}else return this.jK(a)}, +jK(a){var s=this.d +if(s==null)return!1 +return this.d4(s[this.d3(a)],a)>=0}, +aI(a,b){A.k(this).h("a3<1,2>").a(b).ab(0,new A.l5(this))}, +j(a,b){var s,r,q,p,o=null +if(typeof b=="string"){s=this.b +if(s==null)return o +r=s[b] +q=r==null?o:r.b +return q}else if(typeof b=="number"&&(b&0x3fffffff)===b){p=this.c +if(p==null)return o +r=p[b] +q=r==null?o:r.b +return q}else return this.jL(b)}, +jL(a){var s,r,q=this.d +if(q==null)return null +s=q[this.d3(a)] +r=this.d4(s,a) +if(r<0)return null +return s[r].b}, +p(a,b,c){var s,r,q=this,p=A.k(q) +p.c.a(b) +p.y[1].a(c) +if(typeof b=="string"){s=q.b +q.f1(s==null?q.b=q.e_():s,b,c)}else if(typeof b=="number"&&(b&0x3fffffff)===b){r=q.c +q.f1(r==null?q.c=q.e_():r,b,c)}else q.jN(b,c)}, +jN(a,b){var s,r,q,p,o=this,n=A.k(o) +n.c.a(a) +n.y[1].a(b) +s=o.d +if(s==null)s=o.d=o.e_() +r=o.d3(a) +q=s[r] +if(q==null)s[r]=[o.du(a,b)] +else{p=o.d4(q,a) +if(p>=0)q[p].b=b +else q.push(o.du(a,b))}}, +hm(a,b){var s,r,q=this,p=A.k(q) +p.c.a(a) +p.h("2()").a(b) +if(q.a4(a)){s=q.j(0,a) +return s==null?p.y[1].a(s):s}r=b.$0() +q.p(0,a,r) +return r}, +B(a,b){var s=this +if(typeof b=="string")return s.f2(s.b,b) +else if(typeof b=="number"&&(b&0x3fffffff)===b)return s.f2(s.c,b) +else return s.jM(b)}, +jM(a){var s,r,q,p,o=this,n=o.d +if(n==null)return null +s=o.d3(a) +r=n[s] +q=o.d4(r,a) +if(q<0)return null +p=r.splice(q,1)[0] +o.f3(p) +if(r.length===0)delete n[s] +return p.b}, +c4(a){var s=this +if(s.a>0){s.b=s.c=s.d=s.e=s.f=null +s.a=0 +s.dt()}}, +ab(a,b){var s,r,q=this +A.k(q).h("~(1,2)").a(b) +s=q.e +r=q.r +while(s!=null){b.$2(s.a,s.b) +if(r!==q.r)throw A.c(A.az(q)) +s=s.c}}, +f1(a,b,c){var s,r=A.k(this) +r.c.a(b) +r.y[1].a(c) +s=a[b] +if(s==null)a[b]=this.du(b,c) +else s.b=c}, +f2(a,b){var s +if(a==null)return null +s=a[b] +if(s==null)return null +this.f3(s) +delete a[b] +return s.b}, +dt(){this.r=this.r+1&1073741823}, +du(a,b){var s=this,r=A.k(s),q=new A.l8(r.c.a(a),r.y[1].a(b)) +if(s.e==null)s.e=s.f=q +else{r=s.f +r.toString +q.d=r +s.f=r.c=q}++s.a +s.dt() +return q}, +f3(a){var s=this,r=a.d,q=a.c +if(r==null)s.e=q +else r.c=q +if(q==null)s.f=r +else q.d=r;--s.a +s.dt()}, +d3(a){return J.aL(a)&1073741823}, +d4(a,b){var s,r +if(a==null)return-1 +s=a.length +for(r=0;r"]=s +delete s[""] +return s}, +$iqD:1} +A.l5.prototype={ +$2(a,b){var s=this.a,r=A.k(s) +s.p(0,r.c.a(a),r.y[1].a(b))}, +$S(){return A.k(this.a).h("~(1,2)")}} +A.l8.prototype={} +A.c1.prototype={ +gm(a){return this.a.a}, +gD(a){return this.a.a===0}, +gv(a){var s=this.a +return new A.fi(s,s.r,s.e,this.$ti.h("fi<1>"))}} +A.fi.prototype={ +gn(){return this.d}, +l(){var s,r=this,q=r.a +if(r.b!==q.r)throw A.c(A.az(q)) +s=r.c +if(s==null){r.d=null +return!1}else{r.d=s.a +r.c=s.c +return!0}}, +$iF:1} +A.fj.prototype={ +gm(a){return this.a.a}, +gD(a){return this.a.a===0}, +gv(a){var s=this.a +return new A.bt(s,s.r,s.e,this.$ti.h("bt<1>"))}} +A.bt.prototype={ +gn(){return this.d}, +l(){var s,r=this,q=r.a +if(r.b!==q.r)throw A.c(A.az(q)) +s=r.c +if(s==null){r.d=null +return!1}else{r.d=s.b +r.c=s.c +return!0}}, +$iF:1} +A.fg.prototype={ +gm(a){return this.a.a}, +gD(a){return this.a.a===0}, +gv(a){var s=this.a +return new A.fh(s,s.r,s.e,this.$ti.h("fh<1,2>"))}} +A.fh.prototype={ +gn(){var s=this.d +s.toString +return s}, +l(){var s,r=this,q=r.a +if(r.b!==q.r)throw A.c(A.az(q)) +s=r.c +if(s==null){r.d=null +return!1}else{r.d=new A.aQ(s.a,s.b,r.$ti.h("aQ<1,2>")) +r.c=s.c +return!0}}, +$iF:1} +A.oJ.prototype={ +$1(a){return this.a(a)}, +$S:78} +A.oK.prototype={ +$2(a,b){return this.a(a,b)}, +$S:49} +A.oL.prototype={ +$1(a){return this.a(A.w(a))}, +$S:71} +A.cR.prototype={ +i(a){return this.fT(!1)}, +fT(a){var s,r,q,p,o,n=this.iu(),m=this.fl(),l=(a?"Record ":"")+"(" +for(s=n.length,r="",q=0;q0;){--q;--s +B.b.p(k,q,r[s])}}return A.aY(k,t.K)}} +A.ds.prototype={ +fl(){return[this.a,this.b]}, +W(a,b){if(b==null)return!1 +return b instanceof A.ds&&this.$s===b.$s&&J.aK(this.a,b.a)&&J.aK(this.b,b.b)}, +gC(a){return A.fo(this.$s,this.a,this.b,B.f)}} +A.cv.prototype={ +i(a){return"RegExp/"+this.a+"/"+this.b.flags}, +gfu(){var s=this,r=s.c +if(r!=null)return r +r=s.b +return s.c=A.p9(s.a,r.multiline,!r.ignoreCase,r.unicode,r.dotAll,"g")}, +giI(){var s=this,r=s.d +if(r!=null)return r +r=s.b +return s.d=A.p9(s.a,r.multiline,!r.ignoreCase,r.unicode,r.dotAll,"y")}, +ib(){var s,r=this.a +if(!B.a.I(r,"("))return!1 +s=this.b.unicode?"u":"" +return new RegExp("(?:)|"+r,s).exec("").length>1}, +aa(a){var s=this.b.exec(a) +if(s==null)return null +return new A.ep(s)}, +cQ(a,b,c){var s=b.length +if(c>s)throw A.c(A.a5(c,0,s,null,null)) +return new A.j9(this,b,c)}, +eg(a,b){return this.cQ(0,b,0)}, +fh(a,b){var s,r=this.gfu() +if(r==null)r=A.a8(r) +r.lastIndex=b +s=r.exec(a) +if(s==null)return null +return new A.ep(s)}, +it(a,b){var s,r=this.giI() +if(r==null)r=A.a8(r) +r.lastIndex=b +s=r.exec(a) +if(s==null)return null +return new A.ep(s)}, +hg(a,b,c){if(c<0||c>b.length)throw A.c(A.a5(c,0,b.length,null,null)) +return this.it(b,c)}, +$ilh:1, +$ivp:1} +A.ep.prototype={ +gct(){return this.b.index}, +gby(){var s=this.b +return s.index+s[0].length}, +j(a,b){var s=this.b +if(!(b=0&&q=55296&&q<=56319){if(!(n>=0))return A.a(l,n) +s=l.charCodeAt(n) +s=s>=56320&&s<=57343}}}o=(s?o+1:o)+1}m.c=o +return!0}}m.b=m.d=null +return!1}, +$iF:1} +A.e8.prototype={ +gby(){return this.a+this.c.length}, +j(a,b){if(b!==0)throw A.c(A.ll(b,null)) +return this.c}, +$idW:1, +gct(){return this.a}} +A.jH.prototype={ +gv(a){return new A.jI(this.a,this.b,this.c)}, +gH(a){var s=this.b,r=this.a.indexOf(s,this.c) +if(r>=0)return new A.e8(r,s) +throw A.c(A.aI())}} +A.jI.prototype={ +l(){var s,r,q=this,p=q.c,o=q.b,n=o.length,m=q.a,l=m.length +if(p+n>l){q.d=null +return!1}s=m.indexOf(o,p) +if(s<0){q.c=l+1 +q.d=null +return!1}r=s+n +q.d=new A.e8(s,o) +q.c=r===q.c?r+1:r +return!0}, +gn(){var s=this.d +s.toString +return s}, +$iF:1} +A.mJ.prototype={ +ai(){var s=this.b +if(s===this)throw A.c(A.qC(this.a)) +return s}} +A.cy.prototype={ +gV(a){return B.b1}, +fZ(a,b,c){A.hq(a,b,c) +return c==null?new Uint8Array(a,b):new Uint8Array(a,b,c)}, +js(a,b,c){var s +A.hq(a,b,c) +s=new DataView(a,b) +return s}, +fY(a){return this.js(a,0,null)}, +$iV:1, +$icy:1, +$ieW:1} +A.dX.prototype={$idX:1} +A.fk.prototype={ +gaV(a){if(((a.$flags|0)&2)!==0)return new A.jM(a.buffer) +else return a.buffer}, +iE(a,b,c,d){var s=A.a5(b,0,c,d,null) +throw A.c(s)}, +f9(a,b,c,d){if(b>>>0!==b||b>c)this.iE(a,b,c,d)}} +A.jM.prototype={ +fZ(a,b,c){var s=A.c3(this.a,b,c) +s.$flags=3 +return s}, +fY(a){var s=A.qE(this.a,0,null) +s.$flags=3 +return s}, +$ieW:1} +A.d7.prototype={ +gV(a){return B.b2}, +$iV:1, +$id7:1, +$ip0:1} +A.aD.prototype={ +gm(a){return a.length}, +fL(a,b,c,d,e){var s,r,q=a.length +this.f9(a,b,q,"start") +this.f9(a,c,q,"end") +if(b>c)throw A.c(A.a5(b,0,c,null,null)) +s=c-b +if(e<0)throw A.c(A.W(e,null)) +r=d.length +if(r-e0){s=Date.now()-r.c +if(s>(p+1)*o)p=B.c.f0(s,o)}q.c=p +r.d.$1(q)}, +$S:6} +A.fL.prototype={ +O(a){var s,r=this,q=r.$ti +q.h("1/?").a(a) +if(a==null)a=q.c.a(a) +if(!r.b)r.a.b3(a) +else{s=r.a +if(q.h("E<1>").b(a))s.f8(a) +else s.bM(a)}}, +bx(a,b){var s=this.a +if(this.b)s.X(new A.a0(a,b)) +else s.aR(new A.a0(a,b))}, +$ihO:1} +A.om.prototype={ +$1(a){return this.a.$2(0,a)}, +$S:15} +A.on.prototype={ +$2(a,b){this.a.$2(1,new A.f8(a,t.l.a(b)))}, +$S:40} +A.oA.prototype={ +$2(a,b){this.a(A.d(a),b)}, +$S:45} +A.hf.prototype={ +gn(){var s=this.b +return s==null?this.$ti.c.a(s):s}, +j4(a,b){var s,r,q +a=A.d(a) +b=b +s=this.a +for(;;)try{r=s(this,a,b) +return r}catch(q){b=q +a=1}}, +l(){var s,r,q,p,o=this,n=null,m=0 +for(;;){s=o.d +if(s!=null)try{if(s.l()){o.b=s.gn() +return!0}else o.d=null}catch(r){n=r +m=1 +o.d=null}q=o.j4(m,n) +if(1===q)return!0 +if(0===q){o.b=null +p=o.e +if(p==null||p.length===0){o.a=A.rx +return!1}if(0>=p.length)return A.a(p,-1) +o.a=p.pop() +m=0 +n=null +continue}if(2===q){m=0 +n=null +continue}if(3===q){n=o.c +o.c=null +p=o.e +if(p==null||p.length===0){o.b=null +o.a=A.rx +throw n +return!1}if(0>=p.length)return A.a(p,-1) +o.a=p.pop() +m=1 +continue}throw A.c(A.G("sync*"))}return!1}, +kk(a){var s,r,q=this +if(a instanceof A.eA){s=a.a() +r=q.e +if(r==null)r=q.e=[] +B.b.k(r,q.a) +q.a=s +return 2}else{q.d=J.ae(a) +return 2}}, +$iF:1} +A.eA.prototype={ +gv(a){return new A.hf(this.a(),this.$ti.h("hf<1>"))}} +A.a0.prototype={ +i(a){return A.y(this.a)}, +$ia1:1, +gbm(){return this.b}} +A.fP.prototype={} +A.bV.prototype={ +an(){}, +ao(){}, +scD(a){this.ch=this.$ti.h("bV<1>?").a(a)}, +se1(a){this.CW=this.$ti.h("bV<1>?").a(a)}} +A.dh.prototype={ +gbO(){return this.c<4}, +fG(a){var s,r +A.k(this).h("bV<1>").a(a) +s=a.CW +r=a.ch +if(s==null)this.d=r +else s.scD(r) +if(r==null)this.e=s +else r.se1(s) +a.se1(a) +a.scD(a)}, +fN(a,b,c,d){var s,r,q,p,o,n,m,l,k=this,j=A.k(k) +j.h("~(1)?").a(a) +t.Z.a(c) +if((k.c&4)!==0){s=$.n +j=new A.eh(s,j.h("eh<1>")) +A.pX(j.gfv()) +if(c!=null)j.c=s.aw(c,t.H) +return j}s=$.n +r=d?1:0 +q=b!=null?32:0 +p=A.jf(s,a,j.c) +o=A.jg(s,b) +n=c==null?A.tj():c +j=j.h("bV<1>") +m=new A.bV(k,p,o,s.aw(n,t.H),s,r|q,j) +m.CW=m +m.ch=m +j.a(m) +m.ay=k.c&1 +l=k.e +k.e=m +m.scD(null) +m.se1(l) +if(l==null)k.d=m +else l.scD(m) +if(k.d==k.e)A.jQ(k.a) +return m}, +fA(a){var s=this,r=A.k(s) +a=r.h("bV<1>").a(r.h("aT<1>").a(a)) +if(a.ch===a)return null +r=a.ay +if((r&2)!==0)a.ay=r|4 +else{s.fG(a) +if((s.c&2)===0&&s.d==null)s.dA()}return null}, +fB(a){A.k(this).h("aT<1>").a(a)}, +fC(a){A.k(this).h("aT<1>").a(a)}, +bJ(){if((this.c&4)!==0)return new A.b0("Cannot add new events after calling close") +return new A.b0("Cannot add new events while doing an addStream")}, +k(a,b){var s=this +A.k(s).c.a(b) +if(!s.gbO())throw A.c(s.bJ()) +s.b5(b)}, +a3(a,b){var s +if(!this.gbO())throw A.c(this.bJ()) +s=A.ot(a,b) +this.b7(s.a,s.b)}, +q(){var s,r,q=this +if((q.c&4)!==0){s=q.r +s.toString +return s}if(!q.gbO())throw A.c(q.bJ()) +q.c|=4 +r=q.r +if(r==null)r=q.r=new A.v($.n,t.D) +q.b6() +return r}, +dO(a){var s,r,q,p,o=this +A.k(o).h("~(Y<1>)").a(a) +s=o.c +if((s&2)!==0)throw A.c(A.G(u.o)) +r=o.d +if(r==null)return +q=s&1 +o.c=s^3 +while(r!=null){s=r.ay +if((s&1)===q){r.ay=s|2 +a.$1(r) +s=r.ay^=1 +p=r.ch +if((s&4)!==0)o.fG(r) +r.ay&=4294967293 +r=p}else r=r.ch}o.c&=4294967293 +if(o.d==null)o.dA()}, +dA(){if((this.c&4)!==0){var s=this.r +if((s.a&30)===0)s.b3(null)}A.jQ(this.b)}, +$ial:1, +$ibj:1, +$ie7:1, +$ihd:1, +$ib5:1, +$ib4:1} +A.he.prototype={ +gbO(){return A.dh.prototype.gbO.call(this)&&(this.c&2)===0}, +bJ(){if((this.c&2)!==0)return new A.b0(u.o) +return this.hO()}, +b5(a){var s,r=this +r.$ti.c.a(a) +s=r.d +if(s==null)return +if(s===r.e){r.c|=2 +s.aP(a) +r.c&=4294967293 +if(r.d==null)r.dA() +return}r.dO(new A.o6(r,a))}, +b7(a,b){if(this.d==null)return +this.dO(new A.o8(this,a,b))}, +b6(){var s=this +if(s.d!=null)s.dO(new A.o7(s)) +else s.r.b3(null)}} +A.o6.prototype={ +$1(a){this.a.$ti.h("Y<1>").a(a).aP(this.b)}, +$S(){return this.a.$ti.h("~(Y<1>)")}} +A.o8.prototype={ +$1(a){this.a.$ti.h("Y<1>").a(a).a9(this.b,this.c)}, +$S(){return this.a.$ti.h("~(Y<1>)")}} +A.o7.prototype={ +$1(a){this.a.$ti.h("Y<1>").a(a).bo()}, +$S(){return this.a.$ti.h("~(Y<1>)")}} +A.kU.prototype={ +$0(){var s,r,q,p,o,n,m=null +try{m=this.a.$0()}catch(q){s=A.R(q) +r=A.ac(q) +p=s +o=r +n=A.dy(p,o) +if(n==null)p=new A.a0(p,o) +else p=n +this.b.X(p) +return}this.b.b4(m)}, +$S:0} +A.kS.prototype={ +$0(){this.c.a(null) +this.b.b4(null)}, +$S:0} +A.kW.prototype={ +$2(a,b){var s,r,q=this +A.a8(a) +t.l.a(b) +s=q.a +r=--s.b +if(s.a!=null){s.a=null +s.d=a +s.c=b +if(r===0||q.c)q.d.X(new A.a0(a,b))}else if(r===0&&!q.c){r=s.d +r.toString +s=s.c +s.toString +q.d.X(new A.a0(r,s))}}, +$S:7} +A.kV.prototype={ +$1(a){var s,r,q,p,o,n,m,l,k=this,j=k.d +j.a(a) +o=k.a +s=--o.b +r=o.a +if(r!=null){J.q9(r,k.b,a) +if(J.aK(s,0)){q=A.l([],j.h("A<0>")) +for(o=r,n=o.length,m=0;m")) +q=b==null?1:3 +this.cw(new A.cg(r,q,a,b,p.h("@<1>").u(c).h("cg<1,2>"))) +return r}, +cl(a,b){return this.bG(a,null,b)}, +fR(a,b,c){var s,r=this.$ti +r.u(c).h("1/(2)").a(a) +s=new A.v($.n,c.h("v<0>")) +this.cw(new A.cg(s,19,a,b,r.h("@<1>").u(c).h("cg<1,2>"))) +return s}, +al(a){var s,r,q +t.mY.a(a) +s=this.$ti +r=$.n +q=new A.v(r,s) +if(r!==B.d)a=r.aw(a,t.z) +this.cw(new A.cg(q,8,a,null,s.h("cg<1,1>"))) +return q}, +ja(a){this.a=this.a&1|16 +this.c=a}, +cz(a){this.a=a.a&30|this.a&1 +this.c=a.c}, +cw(a){var s,r=this,q=r.a +if(q<=3){a.a=t.d.a(r.c) +r.c=a}else{if((q&4)!==0){s=t.J.a(r.c) +if((s.a&24)===0){s.cw(a) +return}r.cz(s)}r.b.b0(new A.mX(r,a))}}, +fw(a){var s,r,q,p,o,n,m=this,l={} +l.a=a +if(a==null)return +s=m.a +if(s<=3){r=t.d.a(m.c) +m.c=a +if(r!=null){q=a.a +for(p=a;q!=null;p=q,q=o)o=q.a +p.a=r}}else{if((s&4)!==0){n=t.J.a(m.c) +if((n.a&24)===0){n.fw(a) +return}m.cz(n)}l.a=m.cH(a) +m.b.b0(new A.n1(l,m))}}, +bT(){var s=t.d.a(this.c) +this.c=null +return this.cH(s)}, +cH(a){var s,r,q +for(s=a,r=null;s!=null;r=s,s=q){q=s.a +s.a=r}return r}, +b4(a){var s,r=this,q=r.$ti +q.h("1/").a(a) +if(q.h("E<1>").b(a))A.n_(a,r,!0) +else{s=r.bT() +q.c.a(a) +r.a=8 +r.c=a +A.dl(r,s)}}, +bM(a){var s,r=this +r.$ti.c.a(a) +s=r.bT() +r.a=8 +r.c=a +A.dl(r,s)}, +i9(a){var s,r,q,p=this +if((a.a&16)!==0){s=p.b +r=a.b +s=!(s===r||s.gaK()===r.gaK())}else s=!1 +if(s)return +q=p.bT() +p.cz(a) +A.dl(p,q)}, +X(a){var s=this.bT() +this.ja(a) +A.dl(this,s)}, +i8(a,b){A.a8(a) +t.l.a(b) +this.X(new A.a0(a,b))}, +b3(a){var s=this.$ti +s.h("1/").a(a) +if(s.h("E<1>").b(a)){this.f8(a) +return}this.f7(a)}, +f7(a){var s=this +s.$ti.c.a(a) +s.a^=2 +s.b.b0(new A.mZ(s,a))}, +f8(a){A.n_(this.$ti.h("E<1>").a(a),this,!1) +return}, +aR(a){this.a^=2 +this.b.b0(new A.mY(this,a))}, +$iE:1} +A.mX.prototype={ +$0(){A.dl(this.a,this.b)}, +$S:0} +A.n1.prototype={ +$0(){A.dl(this.b,this.a.a)}, +$S:0} +A.n0.prototype={ +$0(){A.n_(this.a.a,this.b,!0)}, +$S:0} +A.mZ.prototype={ +$0(){this.a.bM(this.b)}, +$S:0} +A.mY.prototype={ +$0(){this.a.X(this.b)}, +$S:0} +A.n4.prototype={ +$0(){var s,r,q,p,o,n,m,l,k=this,j=null +try{q=k.a.a +j=q.b.b.bf(t.mY.a(q.d),t.z)}catch(p){s=A.R(p) +r=A.ac(p) +if(k.c&&t.n.a(k.b.a.c).a===s){q=k.a +q.c=t.n.a(k.b.a.c)}else{q=s +o=r +if(o==null)o=A.hE(q) +n=k.a +n.c=new A.a0(q,o) +q=n}q.b=!0 +return}if(j instanceof A.v&&(j.a&24)!==0){if((j.a&16)!==0){q=k.a +q.c=t.n.a(j.c) +q.b=!0}return}if(j instanceof A.v){m=k.b.a +l=new A.v(m.b,m.$ti) +j.bG(new A.n5(l,m),new A.n6(l),t.H) +q=k.a +q.c=l +q.b=!1}}, +$S:0} +A.n5.prototype={ +$1(a){this.a.i9(this.b)}, +$S:25} +A.n6.prototype={ +$2(a,b){A.a8(a) +t.l.a(b) +this.a.X(new A.a0(a,b))}, +$S:58} +A.n3.prototype={ +$0(){var s,r,q,p,o,n,m,l +try{q=this.a +p=q.a +o=p.$ti +n=o.c +m=n.a(this.b) +q.c=p.b.b.bg(o.h("2/(1)").a(p.d),m,o.h("2/"),n)}catch(l){s=A.R(l) +r=A.ac(l) +q=s +p=r +if(p==null)p=A.hE(q) +o=this.a +o.c=new A.a0(q,p) +o.b=!0}}, +$S:0} +A.n2.prototype={ +$0(){var s,r,q,p,o,n,m,l=this +try{s=t.n.a(l.a.a.c) +p=l.b +if(p.a.jS(s)&&p.a.e!=null){p.c=p.a.jF(s) +p.b=!1}}catch(o){r=A.R(o) +q=A.ac(o) +p=t.n.a(l.a.a.c) +if(p.a===r){n=l.b +n.c=p +p=n}else{p=r +n=q +if(n==null)n=A.hE(p) +m=l.b +m.c=new A.a0(p,n) +p=m}p.b=!0}}, +$S:0} +A.jb.prototype={} +A.P.prototype={ +gm(a){var s={},r=new A.v($.n,t.hy) +s.a=0 +this.P(new A.lP(s,this),!0,new A.lQ(s,r),r.gdF()) +return r}, +gH(a){var s=new A.v($.n,A.k(this).h("v")),r=this.P(null,!0,new A.lN(s),s.gdF()) +r.cc(new A.lO(this,r,s)) +return s}, +jE(a,b){var s,r,q=this,p=A.k(q) +p.h("J(P.T)").a(b) +s=new A.v($.n,p.h("v")) +r=q.P(null,!0,new A.lL(q,null,s),s.gdF()) +r.cc(new A.lM(q,b,r,s)) +return s}} +A.lP.prototype={ +$1(a){A.k(this.b).h("P.T").a(a);++this.a.a}, +$S(){return A.k(this.b).h("~(P.T)")}} +A.lQ.prototype={ +$0(){this.b.b4(this.a.a)}, +$S:0} +A.lN.prototype={ +$0(){var s,r=A.lI(),q=new A.b0("No element") +A.fs(q,r) +s=A.dy(q,r) +if(s==null)s=new A.a0(q,r) +this.a.X(s)}, +$S:0} +A.lO.prototype={ +$1(a){A.rV(this.b,this.c,A.k(this.a).h("P.T").a(a))}, +$S(){return A.k(this.a).h("~(P.T)")}} +A.lL.prototype={ +$0(){var s,r=A.lI(),q=new A.b0("No element") +A.fs(q,r) +s=A.dy(q,r) +if(s==null)s=new A.a0(q,r) +this.c.X(s)}, +$S:0} +A.lM.prototype={ +$1(a){var s,r,q=this +A.k(q.a).h("P.T").a(a) +s=q.c +r=q.d +A.xi(new A.lJ(q.b,a),new A.lK(s,r,a),A.wF(s,r),t.y)}, +$S(){return A.k(this.a).h("~(P.T)")}} +A.lJ.prototype={ +$0(){return this.a.$1(this.b)}, +$S:35} +A.lK.prototype={ +$1(a){if(A.aJ(a))A.rV(this.a,this.b,this.c)}, +$S:73} +A.fD.prototype={$ic9:1} +A.dt.prototype={ +giU(){var s,r=this +if((r.b&8)===0)return A.k(r).h("bB<1>?").a(r.a) +s=A.k(r) +return s.h("bB<1>?").a(s.h("hc<1>").a(r.a).geb())}, +dL(){var s,r,q=this +if((q.b&8)===0){s=q.a +if(s==null)s=q.a=new A.bB(A.k(q).h("bB<1>")) +return A.k(q).h("bB<1>").a(s)}r=A.k(q) +s=r.h("hc<1>").a(q.a).geb() +return r.h("bB<1>").a(s)}, +gaQ(){var s=this.a +if((this.b&8)!==0)s=t.gL.a(s).geb() +return A.k(this).h("cd<1>").a(s)}, +dw(){if((this.b&4)!==0)return new A.b0("Cannot add event after closing") +return new A.b0("Cannot add event while adding a stream")}, +ff(){var s=this.c +if(s==null)s=this.c=(this.b&2)!==0?$.cY():new A.v($.n,t.D) +return s}, +k(a,b){var s,r=this,q=A.k(r) +q.c.a(b) +s=r.b +if(s>=4)throw A.c(r.dw()) +if((s&1)!==0)r.b5(b) +else if((s&3)===0)r.dL().k(0,new A.ce(b,q.h("ce<1>")))}, +a3(a,b){var s,r,q=this +A.a8(a) +t.fw.a(b) +if(q.b>=4)throw A.c(q.dw()) +s=A.ot(a,b) +a=s.a +b=s.b +r=q.b +if((r&1)!==0)q.b7(a,b) +else if((r&3)===0)q.dL().k(0,new A.ef(a,b))}, +jq(a){return this.a3(a,null)}, +q(){var s=this,r=s.b +if((r&4)!==0)return s.ff() +if(r>=4)throw A.c(s.dw()) +r=s.b=r|4 +if((r&1)!==0)s.b6() +else if((r&3)===0)s.dL().k(0,B.y) +return s.ff()}, +fN(a,b,c,d){var s,r,q,p=this,o=A.k(p) +o.h("~(1)?").a(a) +t.Z.a(c) +if((p.b&3)!==0)throw A.c(A.G("Stream has already been listened to.")) +s=A.vW(p,a,b,c,d,o.c) +r=p.giU() +if(((p.b|=1)&8)!==0){q=o.h("hc<1>").a(p.a) +q.seb(s) +q.be()}else p.a=s +s.jb(r) +s.dP(new A.o4(p)) +return s}, +fA(a){var s,r,q,p,o,n,m,l,k=this,j=A.k(k) +j.h("aT<1>").a(a) +s=null +if((k.b&8)!==0)s=j.h("hc<1>").a(k.a).K() +k.a=null +k.b=k.b&4294967286|2 +r=k.r +if(r!=null)if(s==null)try{q=r.$0() +if(q instanceof A.v)s=q}catch(n){p=A.R(n) +o=A.ac(n) +m=new A.v($.n,t.D) +j=A.a8(p) +l=t.l.a(o) +m.aR(new A.a0(j,l)) +s=m}else s=s.al(r) +j=new A.o3(k) +if(s!=null)s=s.al(j) +else j.$0() +return s}, +fB(a){var s=this,r=A.k(s) +r.h("aT<1>").a(a) +if((s.b&8)!==0)r.h("hc<1>").a(s.a).bC() +A.jQ(s.e)}, +fC(a){var s=this,r=A.k(s) +r.h("aT<1>").a(a) +if((s.b&8)!==0)r.h("hc<1>").a(s.a).be() +A.jQ(s.f)}, +sjU(a){this.d=t.Z.a(a)}, +sjV(a){this.f=t.Z.a(a)}, +$ial:1, +$ibj:1, +$ie7:1, +$ihd:1, +$ib5:1, +$ib4:1} +A.o4.prototype={ +$0(){A.jQ(this.a.d)}, +$S:0} +A.o3.prototype={ +$0(){var s=this.a.c +if(s!=null&&(s.a&30)===0)s.b3(null)}, +$S:0} +A.jJ.prototype={ +b5(a){this.$ti.c.a(a) +this.gaQ().aP(a)}, +b7(a,b){this.gaQ().a9(a,b)}, +b6(){this.gaQ().bo()}} +A.jc.prototype={ +b5(a){var s=this.$ti +s.c.a(a) +this.gaQ().bn(new A.ce(a,s.h("ce<1>")))}, +b7(a,b){this.gaQ().bn(new A.ef(a,b))}, +b6(){this.gaQ().bn(B.y)}} +A.ee.prototype={} +A.eB.prototype={} +A.ax.prototype={ +gC(a){return(A.fr(this.a)^892482866)>>>0}, +W(a,b){if(b==null)return!1 +if(this===b)return!0 +return b instanceof A.ax&&b.a===this.a}} +A.cd.prototype={ +cE(){return this.w.fA(this)}, +an(){this.w.fB(this)}, +ao(){this.w.fC(this)}} +A.dv.prototype={ +k(a,b){this.a.k(0,this.$ti.c.a(b))}, +a3(a,b){this.a.a3(a,b)}, +q(){return this.a.q()}, +$ial:1, +$ibj:1} +A.Y.prototype={ +jb(a){var s=this +A.k(s).h("bB?").a(a) +if(a==null)return +s.r=a +if(a.c!=null){s.e=(s.e|128)>>>0 +a.cs(s)}}, +cc(a){var s=A.k(this) +this.a=A.jf(this.d,s.h("~(Y.T)?").a(a),s.h("Y.T"))}, +eH(a){var s=this +s.e=(s.e&4294967263)>>>0 +s.b=A.jg(s.d,a)}, +bC(){var s,r,q=this,p=q.e +if((p&8)!==0)return +s=(p+256|4)>>>0 +q.e=s +if(p<256){r=q.r +if(r!=null)if(r.a===1)r.a=3}if((p&4)===0&&(s&64)===0)q.dP(q.gbP())}, +be(){var s=this,r=s.e +if((r&8)!==0)return +if(r>=256){r=s.e=r-256 +if(r<256)if((r&128)!==0&&s.r.c!=null)s.r.cs(s) +else{r=(r&4294967291)>>>0 +s.e=r +if((r&64)===0)s.dP(s.gbQ())}}}, +K(){var s=this,r=(s.e&4294967279)>>>0 +s.e=r +if((r&8)===0)s.dB() +r=s.f +return r==null?$.cY():r}, +dB(){var s,r=this,q=r.e=(r.e|8)>>>0 +if((q&128)!==0){s=r.r +if(s.a===1)s.a=3}if((q&64)===0)r.r=null +r.f=r.cE()}, +aP(a){var s,r=this,q=A.k(r) +q.h("Y.T").a(a) +s=r.e +if((s&8)!==0)return +if(s<64)r.b5(a) +else r.bn(new A.ce(a,q.h("ce")))}, +a9(a,b){var s +if(t.Q.b(a))A.fs(a,b) +s=this.e +if((s&8)!==0)return +if(s<64)this.b7(a,b) +else this.bn(new A.ef(a,b))}, +bo(){var s=this,r=s.e +if((r&8)!==0)return +r=(r|2)>>>0 +s.e=r +if(r<64)s.b6() +else s.bn(B.y)}, +an(){}, +ao(){}, +cE(){return null}, +bn(a){var s,r=this,q=r.r +if(q==null)q=r.r=new A.bB(A.k(r).h("bB")) +q.k(0,a) +s=r.e +if((s&128)===0){s=(s|128)>>>0 +r.e=s +if(s<256)q.cs(r)}}, +b5(a){var s,r=this,q=A.k(r).h("Y.T") +q.a(a) +s=r.e +r.e=(s|64)>>>0 +r.d.ck(r.a,a,q) +r.e=(r.e&4294967231)>>>0 +r.dC((s&4)!==0)}, +b7(a,b){var s,r=this,q=r.e,p=new A.mI(r,a,b) +if((q&1)!==0){r.e=(q|16)>>>0 +r.dB() +s=r.f +if(s!=null&&s!==$.cY())s.al(p) +else p.$0()}else{p.$0() +r.dC((q&4)!==0)}}, +b6(){var s,r=this,q=new A.mH(r) +r.dB() +r.e=(r.e|16)>>>0 +s=r.f +if(s!=null&&s!==$.cY())s.al(q) +else q.$0()}, +dP(a){var s,r=this +t.M.a(a) +s=r.e +r.e=(s|64)>>>0 +a.$0() +r.e=(r.e&4294967231)>>>0 +r.dC((s&4)!==0)}, +dC(a){var s,r,q=this,p=q.e +if((p&128)!==0&&q.r.c==null){p=q.e=(p&4294967167)>>>0 +s=!1 +if((p&4)!==0)if(p<256){s=q.r +s=s==null?null:s.c==null +s=s!==!1}if(s){p=(p&4294967291)>>>0 +q.e=p}}for(;;a=r){if((p&8)!==0){q.r=null +return}r=(p&4)!==0 +if(a===r)break +q.e=(p^64)>>>0 +if(r)q.an() +else q.ao() +p=(q.e&4294967231)>>>0 +q.e=p}if((p&128)!==0&&p<256)q.r.cs(q)}, +$iaT:1, +$ib5:1, +$ib4:1} +A.mI.prototype={ +$0(){var s,r,q,p=this.a,o=p.e +if((o&8)!==0&&(o&16)===0)return +p.e=(o|64)>>>0 +s=p.b +o=this.b +r=t.K +q=p.d +if(t.b9.b(s))q.ht(s,o,this.c,r,t.l) +else q.ck(t.i6.a(s),o,r) +p.e=(p.e&4294967231)>>>0}, +$S:0} +A.mH.prototype={ +$0(){var s=this.a,r=s.e +if((r&16)===0)return +s.e=(r|74)>>>0 +s.d.cj(s.c) +s.e=(s.e&4294967231)>>>0}, +$S:0} +A.ex.prototype={ +P(a,b,c,d){var s=A.k(this) +s.h("~(1)?").a(a) +t.Z.a(c) +return this.a.fN(s.h("~(1)?").a(a),d,c,b===!0)}, +aY(a,b,c){return this.P(a,null,b,c)}, +jR(a){return this.P(a,null,null,null)}, +eD(a,b){return this.P(a,null,b,null)}} +A.cf.prototype={ +scb(a){this.a=t.lT.a(a)}, +gcb(){return this.a}} +A.ce.prototype={ +eJ(a){this.$ti.h("b4<1>").a(a).b5(this.b)}} +A.ef.prototype={ +eJ(a){a.b7(this.b,this.c)}} +A.jk.prototype={ +eJ(a){a.b6()}, +gcb(){return null}, +scb(a){throw A.c(A.G("No events after a done."))}, +$icf:1} +A.bB.prototype={ +cs(a){var s,r=this +r.$ti.h("b4<1>").a(a) +s=r.a +if(s===1)return +if(s>=1){r.a=1 +return}A.pX(new A.nV(r,a)) +r.a=1}, +k(a,b){var s=this,r=s.c +if(r==null)s.b=s.c=b +else{r.scb(b) +s.c=b}}} +A.nV.prototype={ +$0(){var s,r,q,p=this.a,o=p.a +p.a=0 +if(o===3)return +s=p.$ti.h("b4<1>").a(this.b) +r=p.b +q=r.gcb() +p.b=q +if(q==null)p.c=null +r.eJ(s)}, +$S:0} +A.eh.prototype={ +cc(a){this.$ti.h("~(1)?").a(a)}, +eH(a){}, +bC(){var s=this.a +if(s>=0)this.a=s+2}, +be(){var s=this,r=s.a-2 +if(r<0)return +if(r===0){s.a=1 +A.pX(s.gfv())}else s.a=r}, +K(){this.a=-1 +this.c=null +return $.cY()}, +iQ(){var s,r=this,q=r.a-1 +if(q===0){r.a=-1 +s=r.c +if(s!=null){r.c=null +r.b.cj(s)}}else r.a=q}, +$iaT:1} +A.du.prototype={ +gn(){var s=this +if(s.c)return s.$ti.c.a(s.b) +return s.$ti.c.a(null)}, +l(){var s,r=this,q=r.a +if(q!=null){if(r.c){s=new A.v($.n,t.k) +r.b=s +r.c=!1 +q.be() +return s}throw A.c(A.G("Already waiting for next."))}return r.iD()}, +iD(){var s,r,q=this,p=q.b +if(p!=null){q.$ti.h("P<1>").a(p) +s=new A.v($.n,t.k) +q.b=s +r=p.P(q.giK(),!0,q.giM(),q.giO()) +if(q.b!=null)q.a=r +return s}return $.tF()}, +K(){var s=this,r=s.a,q=s.b +s.b=null +if(r!=null){s.a=null +if(!s.c)t.k.a(q).b3(!1) +else s.c=!1 +return r.K()}return $.cY()}, +iL(a){var s,r,q=this +q.$ti.c.a(a) +if(q.a==null)return +s=t.k.a(q.b) +q.b=a +q.c=!0 +s.b4(!0) +if(q.c){r=q.a +if(r!=null)r.bC()}}, +iP(a,b){var s,r,q=this +A.a8(a) +t.l.a(b) +s=q.a +r=t.k.a(q.b) +q.b=q.a=null +if(s!=null)r.X(new A.a0(a,b)) +else r.aR(new A.a0(a,b))}, +iN(){var s=this,r=s.a,q=t.k.a(s.b) +s.b=s.a=null +if(r!=null)q.bM(!1) +else q.f7(!1)}} +A.op.prototype={ +$0(){return this.a.X(this.b)}, +$S:0} +A.oo.prototype={ +$2(a,b){t.l.a(b) +A.wE(this.a,this.b,new A.a0(a,b))}, +$S:7} +A.oq.prototype={ +$0(){return this.a.b4(this.b)}, +$S:0} +A.fY.prototype={ +P(a,b,c,d){var s,r,q,p,o,n=this.$ti +n.h("~(2)?").a(a) +t.Z.a(c) +s=$.n +r=b===!0?1:0 +q=d!=null?32:0 +p=A.jf(s,a,n.y[1]) +o=A.jg(s,d) +n=new A.ei(this,p,o,s.aw(c,t.H),s,r|q,n.h("ei<1,2>")) +n.x=this.a.aY(n.gdQ(),n.gdS(),n.gdU()) +return n}, +aY(a,b,c){return this.P(a,null,b,c)}} +A.ei.prototype={ +aP(a){this.$ti.y[1].a(a) +if((this.e&2)!==0)return +this.ds(a)}, +a9(a,b){if((this.e&2)!==0)return +this.eZ(a,b)}, +an(){var s=this.x +if(s!=null)s.bC()}, +ao(){var s=this.x +if(s!=null)s.be()}, +cE(){var s=this.x +if(s!=null){this.x=null +return s.K()}return null}, +dR(a){this.w.iy(this.$ti.c.a(a),this)}, +dV(a,b){var s +t.l.a(b) +s=a==null?A.a8(a):a +this.w.$ti.h("b5<2>").a(this).a9(s,b)}, +dT(){this.w.$ti.h("b5<2>").a(this).bo()}} +A.h4.prototype={ +iy(a,b){var s,r,q,p,o,n,m,l=this.$ti +l.c.a(a) +l.h("b5<2>").a(b) +s=null +try{s=this.b.$1(a)}catch(p){r=A.R(p) +q=A.ac(p) +o=r +n=q +m=A.dy(o,n) +if(m!=null){o=m.a +n=m.b}b.a9(o,n) +return}b.aP(s)}} +A.fU.prototype={ +k(a,b){var s=this.a +b=s.$ti.y[1].a(this.$ti.c.a(b)) +if((s.e&2)!==0)A.K(A.G("Stream is already closed")) +s.ds(b)}, +a3(a,b){this.a.a9(a,b)}, +q(){var s=this.a +if((s.e&2)!==0)A.K(A.G("Stream is already closed")) +s.f_()}, +$ial:1} +A.eu.prototype={ +aP(a){this.$ti.y[1].a(a) +if((this.e&2)!==0)throw A.c(A.G("Stream is already closed")) +this.ds(a)}, +a9(a,b){t.l.a(b) +if((this.e&2)!==0)throw A.c(A.G("Stream is already closed")) +this.eZ(a,b)}, +bo(){if((this.e&2)!==0)throw A.c(A.G("Stream is already closed")) +this.f_()}, +an(){var s=this.x +if(s!=null)s.bC()}, +ao(){var s=this.x +if(s!=null)s.be()}, +cE(){var s=this.x +if(s!=null){this.x=null +return s.K()}return null}, +dR(a){var s,r,q,p +this.$ti.c.a(a) +try{q=this.w +q===$&&A.N() +q.k(0,a)}catch(p){s=A.R(p) +r=A.ac(p) +this.a9(s,r)}}, +dV(a,b){var s,r,q,p +A.a8(a) +t.l.a(b) +try{q=this.w +q===$&&A.N() +q.a3(a,b)}catch(p){s=A.R(p) +r=A.ac(p) +if(s===a)this.a9(a,b) +else this.a9(s,r)}}, +dT(){var s,r,q,p +try{this.x=null +q=this.w +q===$&&A.N() +q.q()}catch(p){s=A.R(p) +r=A.ac(p) +this.a9(s,r)}}} +A.ey.prototype={ +eh(a){var s=this.$ti +return new A.fO(this.a,s.h("P<1>").a(a),s.h("fO<1,2>"))}} +A.fO.prototype={ +P(a,b,c,d){var s,r,q,p,o,n,m=this.$ti +m.h("~(2)?").a(a) +t.Z.a(c) +s=$.n +r=b===!0?1:0 +q=d!=null?32:0 +p=A.jf(s,a,m.y[1]) +o=A.jg(s,d) +n=new A.eu(p,o,s.aw(c,t.H),s,r|q,m.h("eu<1,2>")) +n.w=m.h("al<1>").a(this.a.$1(new A.fU(n,m.h("fU<2>")))) +n.x=this.b.aY(n.gdQ(),n.gdS(),n.gdU()) +return n}, +aY(a,b,c){return this.P(a,null,b,c)}} +A.em.prototype={ +k(a,b){var s,r=this.$ti +r.c.a(b) +s=this.d +if(s==null)throw A.c(A.G("Sink is closed")) +b=s.$ti.c.a(r.y[1].a(b)) +s.a.aP(b)}, +a3(a,b){var s=this.d +if(s==null)throw A.c(A.G("Sink is closed")) +s.a3(a,b)}, +q(){var s=this.d +if(s==null)return +this.d=null +this.c.$1(s)}, +$ial:1} +A.ew.prototype={ +eh(a){return this.hP(this.$ti.h("P<1>").a(a))}} +A.o5.prototype={ +$1(a){var s=this,r=s.d +return new A.em(s.a,s.b,s.c,r.h("al<0>").a(a),s.e.h("@<0>").u(r).h("em<1,2>"))}, +$S(){return this.e.h("@<0>").u(this.d).h("em<1,2>(al<2>)")}} +A.Z.prototype={} +A.eE.prototype={ +bR(a,b,c){var s,r,q,p,o,n,m,l,k,j +t.l.a(c) +l=this.gdW() +s=l.a +if(s===B.d){A.hu(b,c) +return}r=l.b +q=s.ga1() +k=s.ghk() +k.toString +p=k +o=$.n +try{$.n=p +r.$5(s,q,a,b,c) +$.n=o}catch(j){n=A.R(j) +m=A.ac(j) +$.n=o +k=b===n?c:m +p.bR(s,n,k)}}, +$iu:1} +A.ji.prototype={ +gf6(){var s=this.at +return s==null?this.at=new A.eF(this):s}, +ga1(){return this.ax.gf6()}, +gaK(){return this.as.a}, +cj(a){var s,r,q +t.M.a(a) +try{this.bf(a,t.H)}catch(q){s=A.R(q) +r=A.ac(q) +this.bR(this,A.a8(s),t.l.a(r))}}, +ck(a,b,c){var s,r,q +c.h("~(0)").a(a) +c.a(b) +try{this.bg(a,b,t.H,c)}catch(q){s=A.R(q) +r=A.ac(q) +this.bR(this,A.a8(s),t.l.a(r))}}, +ht(a,b,c,d,e){var s,r,q +d.h("@<0>").u(e).h("~(1,2)").a(a) +d.a(b) +e.a(c) +try{this.eM(a,b,c,t.H,d,e)}catch(q){s=A.R(q) +r=A.ac(q) +this.bR(this,A.a8(s),t.l.a(r))}}, +ei(a,b){return new A.mO(this,this.aw(b.h("0()").a(a),b),b)}, +h_(a,b,c){return new A.mQ(this,this.bd(b.h("@<0>").u(c).h("1(2)").a(a),b,c),c,b)}, +cU(a){return new A.mN(this,this.aw(t.M.a(a),t.H))}, +ej(a,b){return new A.mP(this,this.bd(b.h("~(0)").a(a),t.H,b),b)}, +j(a,b){var s,r=this.ay,q=r.j(0,b) +if(q!=null||r.a4(b))return q +s=this.ax.j(0,b) +if(s!=null)r.p(0,b,s) +return s}, +c7(a,b){this.bR(this,a,t.l.a(b))}, +ha(a,b){var s=this.Q,r=s.a +return s.b.$5(r,r.ga1(),this,a,b)}, +bf(a,b){var s,r +b.h("0()").a(a) +s=this.a +r=s.a +return s.b.$1$4(r,r.ga1(),this,a,b)}, +bg(a,b,c,d){var s,r +c.h("@<0>").u(d).h("1(2)").a(a) +d.a(b) +s=this.b +r=s.a +return s.b.$2$5(r,r.ga1(),this,a,b,c,d)}, +eM(a,b,c,d,e,f){var s,r +d.h("@<0>").u(e).u(f).h("1(2,3)").a(a) +e.a(b) +f.a(c) +s=this.c +r=s.a +return s.b.$3$6(r,r.ga1(),this,a,b,c,d,e,f)}, +aw(a,b){var s,r +b.h("0()").a(a) +s=this.d +r=s.a +return s.b.$1$4(r,r.ga1(),this,a,b)}, +bd(a,b,c){var s,r +b.h("@<0>").u(c).h("1(2)").a(a) +s=this.e +r=s.a +return s.b.$2$4(r,r.ga1(),this,a,b,c)}, +da(a,b,c,d){var s,r +b.h("@<0>").u(c).u(d).h("1(2,3)").a(a) +s=this.f +r=s.a +return s.b.$3$4(r,r.ga1(),this,a,b,c,d)}, +h7(a,b){var s=this.r,r=s.a +if(r===B.d)return null +return s.b.$5(r,r.ga1(),this,a,b)}, +b0(a){var s,r +t.M.a(a) +s=this.w +r=s.a +return s.b.$4(r,r.ga1(),this,a)}, +el(a,b){var s,r +t.M.a(b) +s=this.x +r=s.a +return s.b.$5(r,r.ga1(),this,a,b)}, +hl(a){var s=this.z,r=s.a +return s.b.$4(r,r.ga1(),this,a)}, +gfI(){return this.a}, +gfK(){return this.b}, +gfJ(){return this.c}, +gfE(){return this.d}, +gfF(){return this.e}, +gfD(){return this.f}, +gfg(){return this.r}, +ge6(){return this.w}, +gfc(){return this.x}, +gfb(){return this.y}, +gfz(){return this.z}, +gfj(){return this.Q}, +gdW(){return this.as}, +ghk(){return this.ax}, +gfq(){return this.ay}} +A.mO.prototype={ +$0(){return this.a.bf(this.b,this.c)}, +$S(){return this.c.h("0()")}} +A.mQ.prototype={ +$1(a){var s=this,r=s.c +return s.a.bg(s.b,r.a(a),s.d,r)}, +$S(){return this.d.h("@<0>").u(this.c).h("1(2)")}} +A.mN.prototype={ +$0(){return this.a.cj(this.b)}, +$S:0} +A.mP.prototype={ +$1(a){var s=this.c +return this.a.ck(this.b,s.a(a),s)}, +$S(){return this.c.h("~(0)")}} +A.jD.prototype={ +gfI(){return B.bw}, +gfK(){return B.by}, +gfJ(){return B.bx}, +gfE(){return B.bv}, +gfF(){return B.bq}, +gfD(){return B.bA}, +gfg(){return B.bs}, +ge6(){return B.bz}, +gfc(){return B.br}, +gfb(){return B.bp}, +gfz(){return B.bu}, +gfj(){return B.bt}, +gdW(){return B.bo}, +ghk(){return null}, +gfq(){return $.tX()}, +gf6(){var s=$.nX +return s==null?$.nX=new A.eF(this):s}, +ga1(){var s=$.nX +return s==null?$.nX=new A.eF(this):s}, +gaK(){return this}, +cj(a){var s,r,q +t.M.a(a) +try{if(B.d===$.n){a.$0() +return}A.ov(null,null,this,a,t.H)}catch(q){s=A.R(q) +r=A.ac(q) +A.hu(A.a8(s),t.l.a(r))}}, +ck(a,b,c){var s,r,q +c.h("~(0)").a(a) +c.a(b) +try{if(B.d===$.n){a.$1(b) +return}A.ow(null,null,this,a,b,t.H,c)}catch(q){s=A.R(q) +r=A.ac(q) +A.hu(A.a8(s),t.l.a(r))}}, +ht(a,b,c,d,e){var s,r,q +d.h("@<0>").u(e).h("~(1,2)").a(a) +d.a(b) +e.a(c) +try{if(B.d===$.n){a.$2(b,c) +return}A.pJ(null,null,this,a,b,c,t.H,d,e)}catch(q){s=A.R(q) +r=A.ac(q) +A.hu(A.a8(s),t.l.a(r))}}, +ei(a,b){return new A.nZ(this,b.h("0()").a(a),b)}, +h_(a,b,c){return new A.o0(this,b.h("@<0>").u(c).h("1(2)").a(a),c,b)}, +cU(a){return new A.nY(this,t.M.a(a))}, +ej(a,b){return new A.o_(this,b.h("~(0)").a(a),b)}, +j(a,b){return null}, +c7(a,b){A.hu(a,t.l.a(b))}, +ha(a,b){return A.t8(null,null,this,a,b)}, +bf(a,b){b.h("0()").a(a) +if($.n===B.d)return a.$0() +return A.ov(null,null,this,a,b)}, +bg(a,b,c,d){c.h("@<0>").u(d).h("1(2)").a(a) +d.a(b) +if($.n===B.d)return a.$1(b) +return A.ow(null,null,this,a,b,c,d)}, +eM(a,b,c,d,e,f){d.h("@<0>").u(e).u(f).h("1(2,3)").a(a) +e.a(b) +f.a(c) +if($.n===B.d)return a.$2(b,c) +return A.pJ(null,null,this,a,b,c,d,e,f)}, +aw(a,b){return b.h("0()").a(a)}, +bd(a,b,c){return b.h("@<0>").u(c).h("1(2)").a(a)}, +da(a,b,c,d){return b.h("@<0>").u(c).u(d).h("1(2,3)").a(a)}, +h7(a,b){return null}, +b0(a){A.ox(null,null,this,t.M.a(a))}, +el(a,b){return A.pm(a,t.M.a(b))}, +hl(a){A.pW(a)}} +A.nZ.prototype={ +$0(){return this.a.bf(this.b,this.c)}, +$S(){return this.c.h("0()")}} +A.o0.prototype={ +$1(a){var s=this,r=s.c +return s.a.bg(s.b,r.a(a),s.d,r)}, +$S(){return this.d.h("@<0>").u(this.c).h("1(2)")}} +A.nY.prototype={ +$0(){return this.a.cj(this.b)}, +$S:0} +A.o_.prototype={ +$1(a){var s=this.c +return this.a.ck(this.b,s.a(a),s)}, +$S(){return this.c.h("~(0)")}} +A.eF.prototype={$iH:1} +A.ou.prototype={ +$0(){A.qq(this.a,this.b)}, +$S:0} +A.jO.prototype={$ij8:1} +A.dm.prototype={ +gm(a){return this.a}, +gD(a){return this.a===0}, +ga_(){return new A.dn(this,A.k(this).h("dn<1>"))}, +gbH(){var s=A.k(this) +return A.ik(new A.dn(this,s.h("dn<1>")),new A.n7(this),s.c,s.y[1])}, +a4(a){var s,r +if(typeof a=="string"&&a!=="__proto__"){s=this.b +return s==null?!1:s[a]!=null}else if(typeof a=="number"&&(a&1073741823)===a){r=this.c +return r==null?!1:r[a]!=null}else return this.ig(a)}, +ig(a){var s=this.d +if(s==null)return!1 +return this.aS(this.fk(s,a),a)>=0}, +j(a,b){var s,r,q +if(typeof b=="string"&&b!=="__proto__"){s=this.b +r=s==null?null:A.rq(s,b) +return r}else if(typeof b=="number"&&(b&1073741823)===b){q=this.c +r=q==null?null:A.rq(q,b) +return r}else return this.iw(b)}, +iw(a){var s,r,q=this.d +if(q==null)return null +s=this.fk(q,a) +r=this.aS(s,a) +return r<0?null:s[r+1]}, +p(a,b,c){var s,r,q=this,p=A.k(q) +p.c.a(b) +p.y[1].a(c) +if(typeof b=="string"&&b!=="__proto__"){s=q.b +q.f5(s==null?q.b=A.pw():s,b,c)}else if(typeof b=="number"&&(b&1073741823)===b){r=q.c +q.f5(r==null?q.c=A.pw():r,b,c)}else q.j9(b,c)}, +j9(a,b){var s,r,q,p,o=this,n=A.k(o) +n.c.a(a) +n.y[1].a(b) +s=o.d +if(s==null)s=o.d=A.pw() +r=o.dG(a) +q=s[r] +if(q==null){A.px(s,r,[a,b]);++o.a +o.e=null}else{p=o.aS(q,a) +if(p>=0)q[p+1]=b +else{q.push(a,b);++o.a +o.e=null}}}, +ab(a,b){var s,r,q,p,o,n,m=this,l=A.k(m) +l.h("~(1,2)").a(b) +s=m.fa() +for(r=s.length,q=l.c,l=l.y[1],p=0;p"))}} +A.fZ.prototype={ +gn(){var s=this.d +return s==null?this.$ti.c.a(s):s}, +l(){var s=this,r=s.b,q=s.c,p=s.a +if(r!==p.e)throw A.c(A.az(p)) +else if(q>=r.length){s.d=null +return!1}else{s.d=r[q] +s.c=q+1 +return!0}}, +$iF:1} +A.h0.prototype={ +gv(a){var s=this,r=new A.dq(s,s.r,s.$ti.h("dq<1>")) +r.c=s.e +return r}, +gm(a){return this.a}, +gD(a){return this.a===0}, +I(a,b){var s,r +if(b!=="__proto__"){s=this.b +if(s==null)return!1 +return t.nF.a(s[b])!=null}else{r=this.ie(b) +return r}}, +ie(a){var s=this.d +if(s==null)return!1 +return this.aS(s[B.a.gC(a)&1073741823],a)>=0}, +gH(a){var s=this.e +if(s==null)throw A.c(A.G("No elements")) +return this.$ti.c.a(s.a)}, +gG(a){var s=this.f +if(s==null)throw A.c(A.G("No elements")) +return this.$ti.c.a(s.a)}, +k(a,b){var s,r,q=this +q.$ti.c.a(b) +if(typeof b=="string"&&b!=="__proto__"){s=q.b +return q.f4(s==null?q.b=A.py():s,b)}else if(typeof b=="number"&&(b&1073741823)===b){r=q.c +return q.f4(r==null?q.c=A.py():r,b)}else return q.hZ(b)}, +hZ(a){var s,r,q,p=this +p.$ti.c.a(a) +s=p.d +if(s==null)s=p.d=A.py() +r=J.aL(a)&1073741823 +q=s[r] +if(q==null)s[r]=[p.e0(a)] +else{if(p.aS(q,a)>=0)return!1 +q.push(p.e0(a))}return!0}, +B(a,b){var s +if(typeof b=="string"&&b!=="__proto__")return this.j2(this.b,b) +else{s=this.j1(b) +return s}}, +j1(a){var s,r,q,p,o=this.d +if(o==null)return!1 +s=J.aL(a)&1073741823 +r=o[s] +q=this.aS(r,a) +if(q<0)return!1 +p=r.splice(q,1)[0] +if(0===r.length)delete o[s] +this.fV(p) +return!0}, +f4(a,b){this.$ti.c.a(b) +if(t.nF.a(a[b])!=null)return!1 +a[b]=this.e0(b) +return!0}, +j2(a,b){var s +if(a==null)return!1 +s=t.nF.a(a[b]) +if(s==null)return!1 +this.fV(s) +delete a[b] +return!0}, +ft(){this.r=this.r+1&1073741823}, +e0(a){var s,r=this,q=new A.jv(r.$ti.c.a(a)) +if(r.e==null)r.e=r.f=q +else{s=r.f +s.toString +q.c=s +r.f=s.b=q}++r.a +r.ft() +return q}, +fV(a){var s=this,r=a.c,q=a.b +if(r==null)s.e=q +else r.b=q +if(q==null)s.f=r +else q.c=r;--s.a +s.ft()}, +aS(a,b){var s,r +if(a==null)return-1 +s=a.length +for(r=0;r"))}, +gm(a){return this.b}, +gH(a){var s +if(this.b===0)throw A.c(A.G("No such element")) +s=this.c +s.toString +return s}, +gG(a){var s +if(this.b===0)throw A.c(A.G("No such element")) +s=this.c.c +s.toString +return s}, +gD(a){return this.b===0}, +dX(a,b,c){var s=this,r=s.$ti +r.h("1?").a(a) +r.c.a(b) +if(b.a!=null)throw A.c(A.G("LinkedListEntry is already in a LinkedList"));++s.a +b.sfp(s) +if(s.b===0){b.sbK(b) +b.sbL(b) +s.c=b;++s.b +return}r=a.c +r.toString +b.sbL(r) +b.sbK(a) +r.sbK(b) +a.sbL(b);++s.b}, +e9(a){var s,r,q=this +q.$ti.c.a(a);++q.a +a.b.sbL(a.c) +s=a.c +r=a.b +s.sbK(r);--q.b +a.sbL(null) +a.sbK(null) +a.sfp(null) +if(q.b===0)q.c=null +else if(a===q.c)q.c=r}} +A.h1.prototype={ +gn(){var s=this.c +return s==null?this.$ti.c.a(s):s}, +l(){var s=this,r=s.a +if(s.b!==r.a)throw A.c(A.az(s)) +if(r.b!==0)r=s.e&&s.d===r.gH(0) +else r=!0 +if(r){s.c=null +return!1}s.e=!0 +r=s.d +s.c=r +s.d=r.b +return!0}, +$iF:1} +A.aB.prototype={ +gce(){var s=this.a +if(s==null||this===s.gH(0))return null +return this.c}, +sfp(a){this.a=A.k(this).h("dV?").a(a)}, +sbK(a){this.b=A.k(this).h("aB.E?").a(a)}, +sbL(a){this.c=A.k(this).h("aB.E?").a(a)}} +A.z.prototype={ +gv(a){return new A.b9(a,this.gm(a),A.aG(a).h("b9"))}, +L(a,b){return this.j(a,b)}, +gD(a){return this.gm(a)===0}, +gH(a){if(this.gm(a)===0)throw A.c(A.aI()) +return this.j(a,0)}, +gG(a){if(this.gm(a)===0)throw A.c(A.aI()) +return this.j(a,this.gm(a)-1)}, +bc(a,b,c){var s=A.aG(a) +return new A.I(a,s.u(c).h("1(z.E)").a(b),s.h("@").u(c).h("I<1,2>"))}, +Y(a,b){return A.bk(a,b,null,A.aG(a).h("z.E"))}, +ak(a,b){return A.bk(a,0,A.dA(b,"count",t.S),A.aG(a).h("z.E"))}, +aB(a,b){var s,r,q,p,o=this +if(o.gD(a)){s=J.qz(0,A.aG(a).h("z.E")) +return s}r=o.j(a,0) +q=A.bi(o.gm(a),r,!0,A.aG(a).h("z.E")) +for(p=1;p").u(b).h("as<1,2>"))}, +a0(a,b,c){var s,r=this.gm(a) +A.bu(b,c,r) +s=A.aC(this.cr(a,b,c),A.aG(a).h("z.E")) +return s}, +cr(a,b,c){A.bu(b,c,this.gm(a)) +return A.bk(a,b,c,A.aG(a).h("z.E"))}, +ep(a,b,c,d){var s +A.aG(a).h("z.E?").a(d) +A.bu(b,c,this.gm(a)) +for(s=b;s").a(d) +A.bu(b,c,this.gm(a)) +s=c-b +if(s===0)return +A.am(e,"skipCount") +if(t.j.b(d)){r=e +q=d}else{q=J.eR(d,e).aB(0,!1) +r=0}p=J.ab(q) +if(r+s>p.gm(q))throw A.c(A.qx()) +if(r=0;--o)this.p(a,b+o,p.j(q,r+o)) +else for(o=0;o").a(c) +if(t.j.b(c))this.ag(a,b,b+c.length,c) +else for(s=J.ae(c);s.l();b=r){r=b+1 +this.p(a,b,s.gn())}}, +i(a){return A.p8(a,"[","]")}, +$ix:1, +$ih:1, +$im:1} +A.X.prototype={ +ab(a,b){var s,r,q,p=A.k(this) +p.h("~(X.K,X.V)").a(b) +for(s=J.ae(this.ga_()),p=p.h("X.V");s.l();){r=s.gn() +q=this.j(0,r) +b.$2(r,q==null?p.a(q):q)}}, +gcZ(){return J.dH(this.ga_(),new A.ld(this),A.k(this).h("aQ"))}, +gm(a){return J.av(this.ga_())}, +gD(a){return J.oZ(this.ga_())}, +gbH(){return new A.h2(this,A.k(this).h("h2"))}, +i(a){return A.pd(this)}, +$ia3:1} +A.ld.prototype={ +$1(a){var s=this.a,r=A.k(s) +r.h("X.K").a(a) +s=s.j(0,a) +if(s==null)s=r.h("X.V").a(s) +return new A.aQ(a,s,r.h("aQ"))}, +$S(){return A.k(this.a).h("aQ(X.K)")}} +A.le.prototype={ +$2(a,b){var s,r=this.a +if(!r.a)this.b.a+=", " +r.a=!1 +r=this.b +s=A.y(a) +r.a=(r.a+=s)+": " +s=A.y(b) +r.a+=s}, +$S:114} +A.h2.prototype={ +gm(a){var s=this.a +return s.gm(s)}, +gD(a){var s=this.a +return s.gD(s)}, +gH(a){var s=this.a +s=s.j(0,J.jX(s.ga_())) +return s==null?this.$ti.y[1].a(s):s}, +gG(a){var s=this.a +s=s.j(0,J.p_(s.ga_())) +return s==null?this.$ti.y[1].a(s):s}, +gv(a){var s=this.a +return new A.h3(J.ae(s.ga_()),s,this.$ti.h("h3<1,2>"))}} +A.h3.prototype={ +l(){var s=this,r=s.a +if(r.l()){s.c=s.b.j(0,r.gn()) +return!0}s.c=null +return!1}, +gn(){var s=this.c +return s==null?this.$ti.y[1].a(s):s}, +$iF:1} +A.e3.prototype={ +gD(a){return this.a===0}, +bc(a,b,c){var s=this.$ti +return new A.d1(this,s.u(c).h("1(2)").a(b),s.h("@<1>").u(c).h("d1<1,2>"))}, +i(a){return A.p8(this,"{","}")}, +ak(a,b){return A.pl(this,b,this.$ti.c)}, +Y(a,b){return A.qY(this,b,this.$ti.c)}, +gH(a){var s,r=A.jw(this,this.r,this.$ti.c) +if(!r.l())throw A.c(A.aI()) +s=r.d +return s==null?r.$ti.c.a(s):s}, +gG(a){var s,r,q=A.jw(this,this.r,this.$ti.c) +if(!q.l())throw A.c(A.aI()) +s=q.$ti.c +do{r=q.d +if(r==null)r=s.a(r)}while(q.l()) +return r}, +L(a,b){var s,r,q,p=this +A.am(b,"index") +s=A.jw(p,p.r,p.$ti.c) +for(r=b;s.l();){if(r===0){q=s.d +return q==null?s.$ti.c.a(q):q}--r}throw A.c(A.i6(b,b-r,p,null,"index"))}, +$ix:1, +$ih:1, +$ipg:1} +A.h9.prototype={} +A.oi.prototype={ +$0(){var s,r +try{s=new TextDecoder("utf-8",{fatal:true}) +return s}catch(r){}return null}, +$S:28} +A.oh.prototype={ +$0(){var s,r +try{s=new TextDecoder("utf-8",{fatal:false}) +return s}catch(r){}return null}, +$S:28} +A.hB.prototype={ +jC(a){return B.ak.a5(a)}} +A.jL.prototype={ +a5(a){var s,r,q,p,o,n +A.w(a) +s=a.length +r=A.bu(0,null,s) +q=new Uint8Array(r) +for(p=~this.a,o=0;o=0&&e=0){if(!(d<64))return A.a(a0,d) +e=a0.charCodeAt(d) +if(e===j)continue +j=e}else{if(d===-1){if(n<0){g=o==null?null:o.a.length +if(g==null)g=0 +n=g+(q-p) +m=q}++l +if(j===61)continue}j=e}if(d!==-2){if(o==null){o=new A.aF("") +g=o}else g=o +g.a+=B.a.t(a3,p,q) +c=A.b_(j) +g.a+=c +p=k +continue}}throw A.c(A.ap("Invalid base64 data",a3,q))}if(o!=null){a2=B.a.t(a3,p,a5) +a2=o.a+=a2 +r=a2.length +if(n>=0)A.qb(a3,m,a5,n,l,r) +else{b=B.c.af(r-1,4)+1 +if(b===1)throw A.c(A.ap(a1,a3,a5)) +while(b<4){a2+="=" +o.a=a2;++b}}a2=o.a +return B.a.aN(a3,a4,a5,a2.charCodeAt(0)==0?a2:a2)}a=a5-a4 +if(n>=0)A.qb(a3,m,a5,n,l,a) +else{b=B.c.af(a,4) +if(b===1)throw A.c(A.ap(a1,a3,a5)) +if(b>1)a3=B.a.aN(a3,a5,a5,b===2?"==":"=")}return a3}} +A.hH.prototype={} +A.co.prototype={} +A.mW.prototype={} +A.cp.prototype={$ic9:1} +A.i_.prototype={} +A.iX.prototype={ +cX(a){t.L.a(a) +return new A.ho(!1).dH(a,0,null,!0)}} +A.iY.prototype={ +a5(a){var s,r,q,p,o +A.w(a) +s=a.length +r=A.bu(0,null,s) +if(r===0)return new Uint8Array(0) +q=new Uint8Array(r*3) +p=new A.oj(q) +if(p.iv(a,0,r)!==r){o=r-1 +if(!(o>=0&&o>>18|240 +q=n.b=p+1 +if(!(p>>12&63|128 +p=n.b=q+1 +if(!(q>>6&63|128 +n.b=p+1 +if(!(p=0&&s=q)break +k.b=m+1 +r&2&&A.C(s) +s[m]=n}else{m=n&64512 +if(m===55296){if(k.b+4>q)break +m=o+1 +if(!(mq)break +k.ec()}else if(n<=2047){m=k.b +l=m+1 +if(l>=q)break +k.b=l +r&2&&A.C(s) +if(!(m>>6|192 +k.b=l+1 +s[l]=n&63|128}else{m=k.b +if(m+2>=q)break +l=k.b=m+1 +r&2&&A.C(s) +if(!(m>>12|224 +m=k.b=l+1 +if(!(l>>6&63|128 +k.b=m+1 +if(!(m=15){o=l.a +n=A.ws(o,q,b,s) +if(n!=null){if(!o)return n +if(n.indexOf("\ufffd")<0)return n}}n=l.dJ(q,b,s,d) +o=l.b +if((o&1)!==0){m=A.wu(o) +l.b=0 +throw A.c(A.ap(m,a,p+l.c))}return n}, +dJ(a,b,c,d){var s,r,q=this +if(c-b>1000){s=B.c.J(b+c,2) +r=q.dJ(a,b,s,!1) +if((q.b&1)!==0)return r +return r+q.dJ(a,s,c,d)}return q.jz(a,b,c,d)}, +jz(a,b,a0,a1){var s,r,q,p,o,n,m,l,k=this,j="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHIHHHJEEBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBKCCCCCCCCCCCCDCLONNNMEEEEEEEEEEE",i=" \x000:XECCCCCN:lDb \x000:XECCCCCNvlDb \x000:XECCCCCN:lDb AAAAA\x00\x00\x00\x00\x00AAAAA00000AAAAA:::::AAAAAGG000AAAAA00KKKAAAAAG::::AAAAA:IIIIAAAAA000\x800AAAAA\x00\x00\x00\x00 AAAAA",h=65533,g=k.b,f=k.c,e=new A.aF(""),d=b+1,c=a.length +if(!(b>=0&&b=0&&s<256))return A.a(j,s) +q=j.charCodeAt(s)&31 +f=g<=32?s&61694>>>q:(s&63|f<<6)>>>0 +p=g+q +if(!(p>=0&&p<144))return A.a(i,p) +g=i.charCodeAt(p) +if(g===0){p=A.b_(f) +e.a+=p +if(d===a0)break A +break}else if((g&1)!==0){if(r)switch(g){case 69:case 67:p=A.b_(h) +e.a+=p +break +case 65:p=A.b_(h) +e.a+=p;--d +break +default:p=A.b_(h) +e.a=(e.a+=p)+p +break}else{k.b=g +k.c=d-1 +return""}g=0}if(d===a0)break A +o=d+1 +if(!(d>=0&&d=0&&d=0&&o=128){n=m-1 +o=m +break}o=m}if(n-d<20)for(l=d;l32)if(r){c=A.b_(h) +e.a+=c}else{k.b=77 +k.c=a0 +return""}k.b=g +k.c=f +c=e.a +return c.charCodeAt(0)==0?c:c}} +A.aa.prototype={ +aC(a){var s,r,q=this,p=q.c +if(p===0)return q +s=!q.a +r=q.b +p=A.b3(p,r) +return new A.aa(p===0?!1:s,r,p)}, +iq(a){var s,r,q,p,o,n,m,l=this.c +if(l===0)return $.bp() +s=l+a +r=this.b +q=new Uint16Array(s) +for(p=l-1,o=r.length;p>=0;--p){n=p+a +if(!(p=0&&n=0&&o=0&&r>>0!==0)return l.dr(0,$.hz()) +for(k=0;k=0)return q.cv(b,r) +return b.cv(q,!r)}, +dr(a,b){var s,r,q=this,p=q.c +if(p===0)return b.aC(0) +s=b.c +if(s===0)return q +r=q.a +if(r!==b.a)return q.dv(b,r) +if(A.mE(q.b,p,b.b,s)>=0)return q.cv(b,r) +return b.cv(q,!r)}, +bI(a,b){var s,r,q,p,o,n,m,l=this.c,k=b.c +if(l===0||k===0)return $.bp() +s=l+k +r=this.b +q=b.b +p=new Uint16Array(s) +for(o=q.length,n=0;n0?p.aC(0):p}, +j0(a){var s,r,q,p=this +if(p.c0)q=q.bl(0,$.ps.ai()) +return p.a&&q.c>0?q.aC(0):q}, +fe(a){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c=this,b=c.c +if(b===$.rj&&a.c===$.rl&&c.b===$.ri&&a.b===$.rk)return +s=a.b +r=a.c +q=r-1 +if(!(q>=0&&q0){o=new Uint16Array(r+5) +n=A.rh(s,r,p,o) +m=new Uint16Array(b+5) +l=A.rh(c.b,b,p,m)}else{m=A.pt(c.b,0,b,b+2) +n=r +o=s +l=b}q=n-1 +if(!(q>=0&&q=0){q&2&&A.C(m) +if(!(l>=0&&l=0&&l=0&&n0;){d=A.vS(k,m,e);--j +A.rn(d,f,0,m,j,n) +if(!(e>=0&&e=m.length)return A.a(m,0) +return B.c.i(-m[0])}m=n.b +if(0>=m.length)return A.a(m,0) +return B.c.i(m[0])}s=A.l([],t.s) +m=n.a +r=m?n.aC(0):n +while(r.c>1){q=$.q6() +if(q.c===0)A.K(B.ao) +p=r.j0(q).i(0) +B.b.k(s,p) +o=p.length +if(o===1)B.b.k(s,"000") +if(o===2)B.b.k(s,"00") +if(o===3)B.b.k(s,"0") +r=r.ip(q)}q=r.b +if(0>=q.length)return A.a(q,0) +B.b.k(s,B.c.i(q[0])) +if(m)B.b.k(s,"-") +return new A.fv(s,t.hF).c8(0)}, +$ik7:1, +$iaH:1} +A.mF.prototype={ +$2(a,b){a=a+b&536870911 +a=a+((a&524287)<<10)&536870911 +return a^a>>>6}, +$S:4} +A.mG.prototype={ +$1(a){a=a+((a&67108863)<<3)&536870911 +a^=a>>>11 +return a+((a&16383)<<15)&536870911}, +$S:13} +A.jo.prototype={ +h5(a){var s=this.a +if(s!=null)s.unregister(a)}} +A.cq.prototype={ +W(a,b){if(b==null)return!1 +return b instanceof A.cq&&this.a===b.a&&this.b===b.b&&this.c===b.c}, +gC(a){return A.fo(this.a,this.b,B.f,B.f)}, +aj(a,b){var s +t.cs.a(b) +s=B.c.aj(this.a,b.a) +if(s!==0)return s +return B.c.aj(this.b,b.b)}, +i(a){var s=this,r=A.uJ(A.qO(s)),q=A.hU(A.qM(s)),p=A.hU(A.qJ(s)),o=A.hU(A.qK(s)),n=A.hU(A.qL(s)),m=A.hU(A.qN(s)),l=A.ql(A.vg(s)),k=s.b,j=k===0?"":A.ql(k) +k=r+"-"+q +if(s.c)return k+"-"+p+" "+o+":"+n+":"+m+"."+l+j+"Z" +else return k+"-"+p+" "+o+":"+n+":"+m+"."+l+j}, +$iaH:1} +A.aX.prototype={ +W(a,b){if(b==null)return!1 +return b instanceof A.aX&&this.a===b.a}, +gC(a){return B.c.gC(this.a)}, +aj(a,b){return B.c.aj(this.a,t.jS.a(b).a)}, +i(a){var s,r,q,p,o,n=this.a,m=B.c.J(n,36e8),l=n%36e8 +if(n<0){m=0-m +n=0-l +s="-"}else{n=l +s=""}r=B.c.J(n,6e7) +n%=6e7 +q=r<10?"0":"" +p=B.c.J(n,1e6) +o=p<10?"0":"" +return s+m+":"+q+r+":"+o+p+"."+B.a.jZ(B.c.i(n%1e6),6,"0")}, +$iaH:1} +A.jl.prototype={ +i(a){return this.ah()}, +$ibr:1} +A.a1.prototype={ +gbm(){return A.vf(this)}} +A.hD.prototype={ +i(a){var s=this.a +if(s!=null)return"Assertion failed: "+A.i0(s) +return"Assertion failed"}} +A.ca.prototype={} +A.bq.prototype={ +gdN(){return"Invalid argument"+(!this.a?"(s)":"")}, +gdM(){return""}, +i(a){var s=this,r=s.c,q=r==null?"":" ("+r+")",p=s.d,o=p==null?"":": "+A.y(p),n=s.gdN()+q+o +if(!s.a)return n +return n+s.gdM()+": "+A.i0(s.gez())}, +gez(){return this.b}} +A.e1.prototype={ +gez(){return A.rU(this.b)}, +gdN(){return"RangeError"}, +gdM(){var s,r=this.e,q=this.f +if(r==null)s=q!=null?": Not less than or equal to "+A.y(q):"" +else if(q==null)s=": Not greater than or equal to "+A.y(r) +else if(q>r)s=": Not in inclusive range "+A.y(r)+".."+A.y(q) +else s=qe.length +else s=!1 +if(s)f=null +if(f==null){if(e.length>78)e=B.a.t(e,0,75)+"..." +return g+"\n"+e}for(r=e.length,q=1,p=0,o=!1,n=0;n1?g+(" (at line "+q+", character "+(f-p+1)+")\n"):g+(" (at character "+(f+1)+")\n") +for(n=f;n=0))return A.a(e,n) +m=e.charCodeAt(n) +if(m===10||m===13){r=n +break}}l="" +if(r-p>78){k="..." +if(f-p<75){j=p+75 +i=p}else{if(r-f<75){i=r-75 +j=r +k=""}else{i=f-36 +j=f+36}l="..."}}else{j=r +i=p +k=""}return g+l+B.a.t(e,i,j)+k+"\n"+B.a.bI(" ",f-i+l.length)+"^\n"}else return f!=null?g+(" (at offset "+A.y(f)+")"):g}, +$iaf:1} +A.i9.prototype={ +gbm(){return null}, +i(a){return"IntegerDivisionByZeroException"}, +$ia1:1, +$iaf:1} +A.h.prototype={ +bw(a,b){return A.eY(this,A.k(this).h("h.E"),b)}, +bc(a,b,c){var s=A.k(this) +return A.ik(this,s.u(c).h("1(h.E)").a(b),s.h("h.E"),c)}, +aB(a,b){var s=A.k(this).h("h.E") +if(b)s=A.aC(this,s) +else{s=A.aC(this,s) +s.$flags=1 +s=s}return s}, +cm(a){return this.aB(0,!0)}, +gm(a){var s,r=this.gv(this) +for(s=0;r.l();)++s +return s}, +gD(a){return!this.gv(this).l()}, +ak(a,b){return A.pl(this,b,A.k(this).h("h.E"))}, +Y(a,b){return A.qY(this,b,A.k(this).h("h.E"))}, +hF(a,b){var s=A.k(this) +return new A.fy(this,s.h("J(h.E)").a(b),s.h("fy"))}, +gH(a){var s=this.gv(this) +if(!s.l())throw A.c(A.aI()) +return s.gn()}, +gG(a){var s,r=this.gv(this) +if(!r.l())throw A.c(A.aI()) +do s=r.gn() +while(r.l()) +return s}, +L(a,b){var s,r +A.am(b,"index") +s=this.gv(this) +for(r=b;s.l();){if(r===0)return s.gn();--r}throw A.c(A.i6(b,b-r,this,null,"index"))}, +i(a){return A.v0(this,"(",")")}} +A.aQ.prototype={ +i(a){return"MapEntry("+A.y(this.a)+": "+A.y(this.b)+")"}} +A.L.prototype={ +gC(a){return A.f.prototype.gC.call(this,0)}, +i(a){return"null"}} +A.f.prototype={$if:1, +W(a,b){return this===b}, +gC(a){return A.fr(this)}, +i(a){return"Instance of '"+A.iz(this)+"'"}, +gV(a){return A.y0(this)}, +toString(){return this.i(this)}} +A.ez.prototype={ +i(a){return this.a}, +$ia4:1} +A.aF.prototype={ +gm(a){return this.a.length}, +i(a){var s=this.a +return s.charCodeAt(0)==0?s:s}, +$ivw:1} +A.m5.prototype={ +$2(a,b){throw A.c(A.ap("Illegal IPv6 address, "+a,this.a,b))}, +$S:50} +A.hl.prototype={ +gfQ(){var s,r,q,p,o=this,n=o.w +if(n===$){s=o.a +r=s.length!==0?s+":":"" +q=o.c +p=q==null +if(!p||s==="file"){s=r+"//" +r=o.b +if(r.length!==0)s=s+r+"@" +if(!p)s+=q +r=o.d +if(r!=null)s=s+":"+A.y(r)}else s=r +s+=o.e +r=o.f +if(r!=null)s=s+"?"+r +r=o.r +if(r!=null)s=s+"#"+r +n=o.w=s.charCodeAt(0)==0?s:s}return n}, +gk0(){var s,r,q,p=this,o=p.x +if(o===$){s=p.e +r=s.length +if(r!==0){if(0>=r)return A.a(s,0) +r=s.charCodeAt(0)===47}else r=!1 +if(r)s=B.a.N(s,1) +q=s.length===0?B.B:A.aY(new A.I(A.l(s.split("/"),t.s),t.ha.a(A.xQ()),t.iZ),t.N) +p.x!==$&&A.q1() +o=p.x=q}return o}, +gC(a){var s,r=this,q=r.y +if(q===$){s=B.a.gC(r.gfQ()) +r.y!==$&&A.q1() +r.y=s +q=s}return q}, +geQ(){return this.b}, +gbb(){var s=this.c +if(s==null)return"" +if(B.a.A(s,"[")&&!B.a.E(s,"v",1))return B.a.t(s,1,s.length-1) +return s}, +gcd(){var s=this.d +return s==null?A.rE(this.a):s}, +gcf(){var s=this.f +return s==null?"":s}, +gd0(){var s=this.r +return s==null?"":s}, +jO(a){var s=this.a +if(a.length!==s.length)return!1 +return A.wG(a,s,0)>=0}, +hq(a){var s,r,q,p,o,n,m,l=this +a=A.og(a,0,a.length) +s=a==="file" +r=l.b +q=l.d +if(a!==l.a)q=A.of(q,a) +p=l.c +if(!(p!=null))p=r.length!==0||q!=null||s?"":null +o=l.e +if(!s)n=p!=null&&o.length!==0 +else n=!0 +if(n&&!B.a.A(o,"/"))o="/"+o +m=o +return A.hm(a,r,p,q,m,l.f,l.r)}, +ghd(){if(this.a!==""){var s=this.r +s=(s==null?"":s)===""}else s=!1 +return s}, +fs(a,b){var s,r,q,p,o,n,m,l,k +for(s=0,r=0;B.a.E(b,"../",r);){r+=3;++s}q=B.a.d5(a,"/") +p=a.length +for(;;){if(!(q>0&&s>0))break +o=B.a.hf(a,"/",q-1) +if(o<0)break +n=q-o +m=n!==2 +l=!1 +if(!m||n===3){k=o+1 +if(!(k0){k=B.a.t(n,0,l) +n=a.ger()?k+A.dw(a.gad()):k+A.dw(h.fs(B.a.N(n,k.length),a.gad()))}else if(a.ger())n=A.dw(a.gad()) +else if(n.length===0)if(p==null)n=s.length===0?a.gad():A.dw(a.gad()) +else n=A.dw("/"+a.gad()) +else{j=h.fs(n,a.gad()) +r=s.length===0 +if(!r||p!=null||B.a.A(n,"/"))n=A.dw(j) +else n=A.pD(j,!r||p!=null)}m=a.gd1()?a.gcf():null}}}i=a.geu()?a.gd0():null +return A.hm(s,q,p,o,n,m,i)}, +ges(){return this.c!=null}, +gd1(){return this.f!=null}, +geu(){return this.r!=null}, +ghb(){return this.e.length===0}, +ger(){return B.a.A(this.e,"/")}, +eN(){var s,r=this,q=r.a +if(q!==""&&q!=="file")throw A.c(A.ad("Cannot extract a file path from a "+q+" URI")) +q=r.f +if((q==null?"":q)!=="")throw A.c(A.ad(u.y)) +q=r.r +if((q==null?"":q)!=="")throw A.c(A.ad(u.l)) +if(r.c!=null&&r.gbb()!=="")A.K(A.ad(u.j)) +s=r.gk0() +A.wi(s,!1) +q=A.pj(B.a.A(r.e,"/")?"/":"",s,"/") +q=q.charCodeAt(0)==0?q:q +return q}, +i(a){return this.gfQ()}, +W(a,b){var s,r,q,p=this +if(b==null)return!1 +if(p===b)return!0 +s=!1 +if(t.jJ.b(b))if(p.a===b.gZ())if(p.c!=null===b.ges())if(p.b===b.geQ())if(p.gbb()===b.gbb())if(p.gcd()===b.gcd())if(p.e===b.gad()){r=p.f +q=r==null +if(!q===b.gd1()){if(q)r="" +if(r===b.gcf()){r=p.r +q=r==null +if(!q===b.geu()){s=q?"":r +s=s===b.gd0()}}}}return s}, +$iiT:1, +gZ(){return this.a}, +gad(){return this.e}} +A.oe.prototype={ +$1(a){return A.wr(64,A.w(a),B.j,!1)}, +$S:9} +A.iU.prototype={ +geP(){var s,r,q,p,o=this,n=null,m=o.c +if(m==null){m=o.b +if(0>=m.length)return A.a(m,0) +s=o.a +m=m[0]+1 +r=B.a.aX(s,"?",m) +q=s.length +if(r>=0){p=A.hn(s,r+1,q,256,!1,!1) +q=r}else p=n +m=o.c=new A.jj("data","",n,n,A.hn(s,m,q,128,!1,!1),p,n)}return m}, +i(a){var s,r=this.b +if(0>=r.length)return A.a(r,0) +s=this.a +return r[0]===-1?"data:"+s:s}} +A.bl.prototype={ +ges(){return this.c>0}, +gev(){return this.c>0&&this.d+10&&this.r>=this.a.length}, +gZ(){var s=this.w +return s==null?this.w=this.ic():s}, +ic(){var s,r=this,q=r.b +if(q<=0)return"" +s=q===4 +if(s&&B.a.A(r.a,"http"))return"http" +if(q===5&&B.a.A(r.a,"https"))return"https" +if(s&&B.a.A(r.a,"file"))return"file" +if(q===7&&B.a.A(r.a,"package"))return"package" +return B.a.t(r.a,0,q)}, +geQ(){var s=this.c,r=this.b+3 +return s>r?B.a.t(this.a,r,s-1):""}, +gbb(){var s=this.c +return s>0?B.a.t(this.a,s,this.d):""}, +gcd(){var s,r=this +if(r.gev())return A.bC(B.a.t(r.a,r.d+1,r.e),null) +s=r.b +if(s===4&&B.a.A(r.a,"http"))return 80 +if(s===5&&B.a.A(r.a,"https"))return 443 +return 0}, +gad(){return B.a.t(this.a,this.e,this.f)}, +gcf(){var s=this.f,r=this.r +return s=q.length)return s +return new A.bl(B.a.t(q,0,r),s.b,s.c,s.d,s.e,s.f,r,s.w)}, +hq(a){var s,r,q,p,o,n,m,l,k,j,i,h=this,g=null +a=A.og(a,0,a.length) +s=!(h.b===a.length&&B.a.A(h.a,a)) +r=a==="file" +q=h.c +p=q>0?B.a.t(h.a,h.b+3,q):"" +o=h.gev()?h.gcd():g +if(s)o=A.of(o,a) +q=h.c +if(q>0)n=B.a.t(h.a,q,h.d) +else n=p.length!==0||o!=null||r?"":g +q=h.a +m=h.f +l=B.a.t(q,h.e,m) +if(!r)k=n!=null&&l.length!==0 +else k=!0 +if(k&&!B.a.A(l,"/"))l="/"+l +k=h.r +j=m0)return b +s=b.c +if(s>0){r=a.b +if(r<=0)return b +q=r===4 +if(q&&B.a.A(a.a,"file"))p=b.e!==b.f +else if(q&&B.a.A(a.a,"http"))p=!b.fn("80") +else p=!(r===5&&B.a.A(a.a,"https"))||!b.fn("443") +if(p){o=r+1 +return new A.bl(B.a.t(a.a,0,o)+B.a.N(b.a,c+1),r,s+o,b.d+o,b.e+o,b.f+o,b.r+o,a.w)}else return this.fS().cg(b)}n=b.e +c=b.f +if(n===c){s=b.r +if(c0?l:m +o=k-n +return new A.bl(B.a.t(a.a,0,k)+B.a.N(s,n),a.b,a.c,a.d,m,c+o,b.r+o,a.w)}j=a.e +i=a.f +if(j===i&&a.c>0){while(B.a.E(s,"../",n))n+=3 +o=j-n+1 +return new A.bl(B.a.t(a.a,0,j)+"/"+B.a.N(s,n),a.b,a.c,a.d,j,c+o,b.r+o,a.w)}h=a.a +l=A.rw(this) +if(l>=0)g=l +else for(g=j;B.a.E(h,"../",g);)g+=3 +f=0 +for(;;){e=n+3 +if(!(e<=c&&B.a.E(s,"../",n)))break;++f +n=e}for(r=h.length,d="";i>g;){--i +if(!(i>=0&&i=0){s=!(q===4&&B.a.A(r.a,"file")) +q=s}else q=!1 +if(q)throw A.c(A.ad("Cannot extract a file path from a "+r.gZ()+" URI")) +q=r.f +s=r.a +if(q0?s.gbb():r,n=s.gev()?s.gcd():r,m=s.a,l=s.f,k=B.a.t(m,s.e,l),j=s.r +l=l4294967296)throw A.c(new A.e1(k,k,!1,k,k,"max must be in range 0 < max \u2264 2^32, was "+a)) +if(a>255)if(a>65535)s=a>16777215?4:3 +else s=2 +else s=1 +r=this.a +r.$flags&2&&A.C(r,11) +r.setUint32(0,0,!1) +q=4-s +p=A.d(Math.pow(256,s)) +for(o=a-1,n=(a&o)===0;;){crypto.getRandomValues(J.dG(B.aN.gaV(r),q,s)) +m=r.getUint32(0,!1) +if(n)return(m&o)>>>0 +l=m%a +if(m-l+a?") +p.a(a) +p.a(b) +if(a===b)return!0 +p=J.ab(a) +s=p.gm(a) +r=J.ab(b) +if(s!==r.gm(b))return!1 +for(q=0;q?").a(a) +for(s=J.ab(a),r=0,q=0;q>>0)&2147483647 +r^=r>>>6}r=r+(r<<3>>>0)&2147483647 +r^=r>>>11 +return r+(r<<15>>>0)&2147483647}} +A.is.prototype={} +A.iS.prototype={} +A.f5.prototype={ +hR(a,b,c){var s=this.a.a +s===$&&A.N() +s.eD(this.giz(),new A.ky(this))}, +hh(){return this.d++}, +q(){var s=0,r=A.r(t.H),q,p=this,o +var $async$q=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:if(p.r||(p.w.a.a&30)!==0){s=1 +break}p.r=!0 +o=p.a.b +o===$&&A.N() +o.q() +s=3 +return A.e(p.w.a,$async$q) +case 3:case 1:return A.p(q,r)}}) +return A.q($async$q,r)}, +iA(a){var s,r=this +if(r.c){a.toString +a=B.Q.em(a)}if(a instanceof A.bw){s=r.e.B(0,a.a) +if(s!=null)s.a.O(a.b)}else if(a instanceof A.bH){s=r.e.B(0,a.a) +if(s!=null)s.h2(new A.hX(a.b),a.c)}else if(a instanceof A.at)r.f.k(0,a) +else if(a instanceof A.bX){s=r.e.B(0,a.a) +if(s!=null)s.h1(B.P)}}, +bt(a){var s,r,q=this +if(q.r||(q.w.a.a&30)!==0)throw A.c(A.G("Tried to send "+a.i(0)+" over isolate channel, but the connection was closed!")) +s=q.a.b +s===$&&A.N() +r=q.c?B.Q.dq(a):a +s.a.k(0,s.$ti.c.a(r))}, +ka(a,b,c){var s,r=this +t.fw.a(c) +if(r.r||(r.w.a.a&30)!==0)return +s=a.a +if(b instanceof A.eX)r.bt(new A.bX(s)) +else r.bt(new A.bH(s,b,c))}, +hC(a){var s=this.f +new A.ax(s,A.k(s).h("ax<1>")).jR(new A.kz(this,t.fb.a(a)))}} +A.ky.prototype={ +$0(){var s,r,q +for(s=this.a,r=s.e,q=new A.bt(r,r.r,r.e,A.k(r).h("bt<2>"));q.l();)q.d.h1(B.an) +r.c4(0) +s.w.aW()}, +$S:0} +A.kz.prototype={ +$1(a){return this.hx(t.o5.a(a))}, +hx(a){var s=0,r=A.r(t.H),q,p=2,o=[],n=this,m,l,k,j,i,h,g +var $async$$1=A.t(function(b,c){if(b===1){o.push(c) +s=p}for(;;)switch(s){case 0:h=null +p=4 +k=n.b.$1(a) +j=t.O +s=7 +return A.e(t.nC.b(k)?k:A.ek(j.a(k),j),$async$$1) +case 7:h=c +p=2 +s=6 +break +case 4:p=3 +g=o.pop() +m=A.R(g) +l=A.ac(g) +k=n.a.ka(a,m,l) +q=k +s=1 +break +s=6 +break +case 3:s=2 +break +case 6:k=n.a +if(!(k.r||(k.w.a.a&30)!==0)){j=t.O.a(h) +k.bt(new A.bw(a.a,j))}case 1:return A.p(q,r) +case 2:return A.o(o.at(-1),r)}}) +return A.q($async$$1,r)}, +$S:72} +A.jy.prototype={ +h2(a,b){var s +if(b==null)s=this.b +else{s=A.l([],t.ms) +if(b instanceof A.bF)B.b.aI(s,b.a) +else s.push(A.r5(b)) +s.push(A.r5(this.b)) +s=new A.bF(A.aY(s,t.i))}this.a.bx(a,s)}, +h1(a){return this.h2(a,null)}} +A.hQ.prototype={ +i(a){return"Channel was closed before receiving a response"}, +$iaf:1} +A.hX.prototype={ +i(a){return J.bg(this.a)}, +$iaf:1} +A.hW.prototype={ +dq(a){var s,r +if(a instanceof A.at)return[0,a.a,this.h6(a.b)] +else if(a instanceof A.bH){s=J.bg(a.b) +r=a.c +r=r==null?null:r.i(0) +return[2,a.a,s,r]}else if(a instanceof A.bw)return[1,a.a,this.h6(a.b)] +else if(a instanceof A.bX)return A.l([3,a.a],t.t) +else return null}, +em(a){var s,r,q,p +if(!t.j.b(a))throw A.c(B.aB) +s=J.ab(a) +r=A.d(s.j(a,0)) +q=A.d(s.j(a,1)) +switch(r){case 0:return new A.at(q,t.oT.a(this.h4(s.j(a,2)))) +case 2:p=A.ol(s.j(a,3)) +s=s.j(a,2) +if(s==null)s=A.a8(s) +return new A.bH(q,s,p!=null?new A.ez(p):null) +case 1:return new A.bw(q,t.O.a(this.h4(s.j(a,2)))) +case 3:return new A.bX(q)}throw A.c(B.aA)}, +h6(a){var s,r,q,p,o,n,m,l,k,j,i,h,g,f +if(a==null)return a +if(a instanceof A.dZ)return a.a +else if(a instanceof A.cs){s=a.a +r=a.b +q=[] +for(p=a.c,o=p.length,n=0;n")),g=g.h("Q.E");s.l();){a8=s.d +h.push(this.dI(a8==null?g.a(a8):a8))}B.b.k(m,new A.dI(i,h))}f=J.p_(a7.a) +A:{if(f==null){s=a6 +break A}A.d(f) +s=f +break A}return new A.bI(new A.eV(n,m),s) +case 5:return new A.cF(B.b.j(B.E,q.$1(1)),p.$1(2)) +case 6:return new A.cr(q.$1(1),p.$1(2)) +case 13:s.toString +return new A.cH(A.p2(B.W,A.w(J.aW(s,1)),t.bO)) +case 7:return new A.cE(new A.fp(p.$1(1),q.$1(2)),q.$1(3)) +case 8:e=A.l([],t.bV) +s=t.j +k=1 +for(;;){l=a7.a +l.toString +if(!(k>>0!==i||i>=3)return A.a(B.q,i) +i=B.q[i]}B.b.k(e,new A.bO(i,l));++k}return new A.c5(e) +case 11:s.toString +if(J.av(s)===1)return B.aU +b=q.$1(1) +s=2+b +l=t.N +a=J.qa(J.uw(a7.a,2,s),l) +a0=q.$1(s) +a1=A.l([],t.ke) +for(s=a.a,i=J.ab(s),h=a.$ti.y[1],g=3+b,a2=t.X,k=0;k")).jE(0,new A.lt(r))}, +jA(a,b){var s,r,q +for(s=this.z,s=A.jw(s,s.r,s.$ti.c),r=s.$ti.c;s.l();){q=s.d +if(q==null)q=r.a(q) +if(q!==b)q.bt(new A.at(q.d++,a))}}, +$iuL:1} +A.lv.prototype={ +$1(a){var s=this.a +s.i6() +s.as.q()}, +$S:74} +A.lw.prototype={ +$1(a){return this.a.iC(this.b,a)}, +$S:76} +A.lx.prototype={ +$1(a){return this.a.z.B(0,this.b)}, +$S:24} +A.lr.prototype={ +$0(){var s=this.b +return this.a.aF(s.a,s.b,s.c,s.d)}, +$S:83} +A.ls.prototype={ +$0(){return this.a.r.B(0,this.b.a)}, +$S:85} +A.lu.prototype={ +$0(){var s,r=this.b +if(r==null)return this.a.w.length===0 +else{s=this.a.w +return s.length!==0&&B.b.gH(s)===r}}, +$S:35} +A.lt.prototype={ +$1(a){return this.a.$0()}, +$S:24} +A.et.prototype={ +cR(a,b){return this.ju(a,b)}, +ju(a,b){var s=0,r=A.r(t.H),q=1,p=[],o=[],n=this,m,l,k,j,i +var $async$cR=A.t(function(c,d){if(c===1){p.push(d) +s=q}for(;;)switch(s){case 0:j=n.a +i=j.e2(a,!0) +q=2 +m=n.b +l=m.hh() +k=new A.v($.n,t.D) +m.e.p(0,l,new A.jy(new A.ai(k,t.h),A.lI())) +m.bt(new A.at(l,new A.cE(b,i))) +s=5 +return A.e(k,$async$cR) +case 5:o.push(4) +s=3 +break +case 2:o=[1] +case 3:q=1 +j.cG(i) +s=o.pop() +break +case 4:return A.p(null,r) +case 1:return A.o(p.at(-1),r)}}) +return A.q($async$cR,r)}, +$ivk:1} +A.j6.prototype={ +dq(a1){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a=this,a0=null +A:{if(a1 instanceof A.at){s=new A.an(0,{i:a1.a,p:a.j6(a1.b)}) +break A}if(a1 instanceof A.bw){s=new A.an(1,{i:a1.a,p:a.j7(a1.b)}) +break A}r=a1 instanceof A.bH +q=a0 +p=a0 +o=!1 +n=a0 +m=a0 +s=!1 +if(r){l=a1.a +q=a1.b +o=q instanceof A.cJ +if(o){t.ph.a(q) +p=a1.c +s=a.a.c>=4 +m=p +n=q}k=l}else{k=a0 +l=k}if(s){s=m==null?a0:m.i(0) +j=n.a +i=n.b +if(i==null)i=a0 +h=n.c +g=n.e +if(g==null)g=a0 +f=n.f +if(f==null)f=a0 +e=n.r +B:{if(e==null){d=a0 +break B}d=[] +for(c=e.length,b=0;b=a.length)return A.a(a,0) +r=a[0] +if(1<0||1>=a.length)return A.a(a,1) +q=j.a=a[1]}else{q=l +r=q}if(!s)throw A.c(A.G(k)) +r=A.d(A.M(r)) +A:{if(0===r){s=new A.mr(j,m).$0() +break A}if(1===r){s=new A.ms(j,m).$0() +break A}if(2===r){t.c.a(q) +s=q.length===3 +p=l +o=l +if(s){if(0<0||0>=q.length)return A.a(q,0) +n=q[0] +if(1<0||1>=q.length)return A.a(q,1) +p=q[1] +if(2<0||2>=q.length)return A.a(q,2) +o=q[2]}else n=l +if(!s)A.K(A.G(k)) +s=new A.bH(A.d(A.M(n)),A.w(p),m.fd(o)) +break A}if(4===r){s=m.ij(t.c.a(q)) +break A}if(3===r){s=new A.bX(A.d(A.M(q))) +break A}s=A.K(A.W("Unknown message tag "+r,l))}return s}, +j6(a){var s,r,q,p,o,n,m,l,k,j,i,h=null +A:{s=h +if(a==null)break A +if(a instanceof A.cs){s=a.a +r=a.b +q=[] +for(p=a.c,o=p.length,n=0;n=a.length)return A.a(a,0) +r=A.d(A.M(a[0])) +A:{if(3===r){if(1<0||1>=a.length)return A.a(a,1) +q=A.d(A.M(a[1])) +if(!(q>=0&&q<4))return A.a(B.D,q) +q=B.D[q] +if(2<0||2>=a.length)return A.a(a,2) +p=A.w(a[2]) +o=[] +if(3<0||3>=a.length)return A.a(a,3) +n=s.a(a[3]) +s=B.b.gv(n) +while(s.l())o.push(this.cI(s.gn())) +if(4<0||4>=a.length)return A.a(a,4) +s=a[4] +s=new A.cs(q,p,o,s==null?m:A.d(A.M(s))) +break A}if(12===r){if(1<0||1>=a.length)return A.a(a,1) +s=new A.cD(A.d(A.M(a[1]))) +break A}if(4===r){s=new A.ml(this,a).$0() +break A}if(5===r){if(1<0||1>=a.length)return A.a(a,1) +s=A.d(A.M(a[1])) +if(!(s>=0&&s<5))return A.a(B.E,s) +s=B.E[s] +if(2<0||2>=a.length)return A.a(a,2) +q=a[2] +s=new A.cF(s,q==null?m:A.d(A.M(q))) +break A}if(6===r){if(1<0||1>=a.length)return A.a(a,1) +s=A.d(A.M(a[1])) +if(2<0||2>=a.length)return A.a(a,2) +q=a[2] +s=new A.cr(s,q==null?m:A.d(A.M(q))) +break A}if(13===r){if(1<0||1>=a.length)return A.a(a,1) +s=new A.cH(A.p2(B.W,A.w(a[1]),t.bO)) +break A}if(7===r){if(1<0||1>=a.length)return A.a(a,1) +s=a[1] +s=s==null?m:A.d(A.M(s)) +if(2<0||2>=a.length)return A.a(a,2) +q=A.d(A.M(a[2])) +if(3<0||3>=a.length)return A.a(a,3) +q=new A.cE(new A.fp(s,q),A.d(A.M(a[3]))) +s=q +break A}if(8===r){s=B.b.Y(a,1) +q=s.$ti +p=q.h("I") +s=A.aC(new A.I(s,q.h("bO(Q.E)").a(new A.mk()),p),p.h("Q.E")) +s=new A.c5(s) +break A}s=A.K(A.W("Unknown request tag "+r,m))}return s}, +j7(a){var s,r +A:{s=null +if(a==null)break A +if(a instanceof A.aZ){r=a.a +s=A.cj(r)?r:A.d(r) +break A}if(a instanceof A.bN){s=this.j8(a) +break A}}return s}, +j8(a){var s,r,q,p=t.cU.a(a).a,o=J.ab(p) +if(o.gD(p)){p=v.G +o=t.c +return{c:o.a(new p.Array()),r:o.a(new p.Array())}}else{s=J.dH(o.gH(p).ga_(),new A.mq(),t.N).cm(0) +r=A.l([],t.bb) +for(p=o.gv(p);p.l();){q=[] +for(o=J.ae(p.gn().gbH());o.l();)q.push(this.cJ(o.gn())) +B.b.k(r,q)}return{c:s,r:r}}}, +io(a){var s,r,q,p,o,n,m,l,k,j,i +if(a==null)return null +else if(typeof a==="boolean")return new A.aZ(A.aJ(a)) +else if(typeof a==="number")return new A.aZ(A.d(A.M(a))) +else{A.i(a) +s=t.c +r=s.a(a.c) +r=t.r.b(r)?r:new A.as(r,A.O(r).h("as<1,j>")) +q=t.N +r=J.dH(r,new A.mo(),q) +p=A.aC(r,r.$ti.h("Q.E")) +o=A.l([],t.ke) +s=s.a(a.r) +s=J.ae(t.mu.b(s)?s:new A.as(s,A.O(s).h("as<1,A>"))) +r=t.X +while(s.l()){n=s.gn() +m=A.ag(q,r) +n=A.v_(n,0,r) +l=J.ae(n.a) +k=n.b +n=new A.d4(l,k,A.k(n).h("d4<1>")) +while(n.l()){j=n.c +j=j>=0?new A.an(k+j,l.gn()):A.K(A.aI()) +i=j.a +if(!(i>=0&&i=a.length)return A.a(a,0) +r=a[0] +if(1<0||1>=a.length)return A.a(a,1) +q=a[1]}else{q=p +r=q}if(!s)throw A.c(A.G("Pattern matching error")) +if(r==14)return A.pv(A.w(q),p) +else return A.M(q)}else return p}, +fd(a){var s,r=a!=null?A.w(a):null +A:{if(r!=null){s=new A.ez(r) +break A}s=null +break A}return s}, +ij(a){var s,r,q,p,o=null,n=a.length>=8,m=o,l=o,k=o,j=o,i=o,h=o,g=o +if(n){if(0<0||0>=a.length)return A.a(a,0) +s=a[0] +if(1<0||1>=a.length)return A.a(a,1) +m=a[1] +if(2<0||2>=a.length)return A.a(a,2) +l=a[2] +if(3<0||3>=a.length)return A.a(a,3) +k=a[3] +if(4<0||4>=a.length)return A.a(a,4) +j=a[4] +if(5<0||5>=a.length)return A.a(a,5) +i=a[5] +if(6<0||6>=a.length)return A.a(a,6) +h=a[6] +if(7<0||7>=a.length)return A.a(a,7) +g=a[7]}else s=o +if(!n)throw A.c(A.G("Pattern matching error")) +s=A.d(A.M(s)) +j=A.d(A.M(j)) +A.w(l) +n=k!=null?A.w(k):o +r=h!=null?A.w(h):o +if(g!=null){q=[] +t.c.a(g) +p=B.b.gv(g) +while(p.l())q.push(this.cI(p.gn()))}else q=o +p=i!=null?A.w(i):o +return new A.bH(s,new A.cJ(l,n,j,o,p,r,q),this.fd(m))}} +A.mr.prototype={ +$0(){var s=A.i(this.a.a) +return new A.at(A.d(s.i),this.b.im(s.p))}, +$S:86} +A.ms.prototype={ +$0(){var s=A.i(this.a.a) +return new A.bw(A.d(s.i),this.b.io(s.p))}, +$S:90} +A.mp.prototype={ +$1(a){return A.w(a)}, +$S:9} +A.ml.prototype={ +$0(){var s,r,q,p,o,n,m,l=this.b,k=J.ab(l),j=t.c,i=j.a(k.j(l,1)),h=t.r.b(i)?i:new A.as(i,A.O(i).h("as<1,j>")) +h=J.dH(h,new A.mm(),t.N) +s=A.aC(h,h.$ti.h("Q.E")) +h=k.gm(l) +r=A.l([],t.cz) +for(h=k.Y(l,2).ak(0,h-3),j=A.eY(h,h.$ti.h("h.E"),j),h=A.k(j),h=A.ik(j,h.h("m(h.E)").a(new A.mn()),h.h("h.E"),t.kS),j=h.a,q=A.k(h),h=new A.d6(j.gv(j),h.b,q.h("d6<1,2>")),j=this.a.gjk(),q=q.y[1];h.l();){p=h.a +if(p==null)p=q.a(p) +o=J.ab(p) +n=A.d(A.M(o.j(p,0))) +p=o.Y(p,1) +o=p.$ti +m=o.h("I") +p=A.aC(new A.I(p,o.h("f?(Q.E)").a(j),m),m.h("Q.E")) +r.push(new A.dI(n,p))}l=k.j(l,k.gm(l)-1) +l=l==null?null:A.d(A.M(l)) +return new A.bI(new A.eV(s,r),l)}, +$S:106} +A.mm.prototype={ +$1(a){return A.w(a)}, +$S:9} +A.mn.prototype={ +$1(a){t.c.a(a) +return a}, +$S:107} +A.mk.prototype={ +$1(a){var s,r,q +t.c.a(a) +s=a.length===2 +if(s){if(0<0||0>=a.length)return A.a(a,0) +r=a[0] +if(1<0||1>=a.length)return A.a(a,1) +q=a[1]}else{r=null +q=null}if(!s)throw A.c(A.G("Pattern matching error")) +A.w(r) +if(q==null)s=null +else{q=A.d(A.M(q)) +if(!(q>=0&&q<3))return A.a(B.q,q) +s=B.q[q]}return new A.bO(s,r)}, +$S:113} +A.mq.prototype={ +$1(a){return A.w(a)}, +$S:9} +A.mo.prototype={ +$1(a){return A.w(a)}, +$S:9} +A.df.prototype={ +ah(){return"UpdateKind."+this.b}} +A.bO.prototype={ +gC(a){return A.fo(this.a,this.b,B.f,B.f)}, +W(a,b){if(b==null)return!1 +return b instanceof A.bO&&b.a==this.a&&b.b===this.b}, +i(a){return"TableUpdate("+this.b+", kind: "+A.y(this.a)+")"}} +A.oT.prototype={ +$0(){return this.a.a.a.O(A.kT(this.b,this.c))}, +$S:0} +A.cn.prototype={ +K(){var s,r +if(this.c)return +for(s=this.b,r=0;!1;++r)s[r].$0() +this.c=!0}} +A.eX.prototype={ +i(a){return"Operation was cancelled"}, +$iaf:1} +A.aw.prototype={ +q(){var s=0,r=A.r(t.H) +var $async$q=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:return A.p(null,r)}}) +return A.q($async$q,r)}} +A.eV.prototype={ +gC(a){return A.fo(B.o.hc(this.a),B.o.hc(this.b),B.f,B.f)}, +W(a,b){if(b==null)return!1 +return b instanceof A.eV&&B.o.eo(b.a,this.a)&&B.o.eo(b.b,this.b)}, +i(a){return"BatchedStatements("+A.y(this.a)+", "+A.y(this.b)+")"}} +A.dI.prototype={ +gC(a){return A.fo(this.a,B.o,B.f,B.f)}, +W(a,b){if(b==null)return!1 +return b instanceof A.dI&&b.a===this.a&&B.o.eo(b.b,this.b)}, +i(a){return"ArgumentsForBatchedStatement("+this.a+", "+A.y(this.b)+")"}} +A.f2.prototype={} +A.lj.prototype={} +A.m_.prototype={} +A.lf.prototype={} +A.dL.prototype={} +A.fm.prototype={} +A.hZ.prototype={} +A.bU.prototype={ +geB(){return!1}, +gc9(){return!1}, +fO(a,b,c){c.h("E<0>()").a(a) +if(this.geB()||this.b>0)return this.a.cu(new A.my(b,a,c),c) +else return a.$0()}, +bu(a,b){return this.fO(a,!0,b)}, +cB(a,b){this.gc9()}, +ae(a,b){var s=0,r=A.r(t.fS),q,p=this,o +var $async$ae=A.t(function(c,d){if(c===1)return A.o(d,r) +for(;;)switch(s){case 0:s=3 +return A.e(p.bu(new A.mD(p,a,b),t.cL),$async$ae) +case 3:o=d.gjt(0) +o=A.aC(o,o.$ti.h("Q.E")) +q=o +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$ae,r)}, +ci(a,b){return this.bu(new A.mB(this,a,b),t.S)}, +aA(a,b){return this.bu(new A.mC(this,a,b),t.S)}, +a8(a,b){return this.bu(new A.mA(this,b,a),t.H)}, +kc(a){return this.a8(a,null)}, +az(a){return this.bu(new A.mz(this,a),t.H)}, +cS(){return new A.fX(this,new A.ai(new A.v($.n,t.D),t.h),new A.bK())}, +cT(){return this.aU(this)}} +A.my.prototype={ +$0(){return this.hy(this.c)}, +hy(a){var s=0,r=A.r(a),q,p=this +var $async$$0=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:if(p.a)A.pL() +s=3 +return A.e(p.b.$0(),$async$$0) +case 3:q=c +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$$0,r)}, +$S(){return this.c.h("E<0>()")}} +A.mD.prototype={ +$0(){var s=this.a,r=this.b,q=this.c +s.cB(r,q) +return s.gaL().ae(r,q)}, +$S:37} +A.mB.prototype={ +$0(){var s=this.a,r=this.b,q=this.c +s.cB(r,q) +return s.gaL().de(r,q)}, +$S:36} +A.mC.prototype={ +$0(){var s=this.a,r=this.b,q=this.c +s.cB(r,q) +return s.gaL().aA(r,q)}, +$S:36} +A.mA.prototype={ +$0(){var s,r,q=this.b +if(q==null)q=B.r +s=this.a +r=this.c +s.cB(r,q) +return s.gaL().a8(r,q)}, +$S:2} +A.mz.prototype={ +$0(){var s=this.a +s.gc9() +return s.gaL().az(this.b)}, +$S:2} +A.jK.prototype={ +i5(){this.c=!0 +if(this.d)throw A.c(A.G("A transaction was used after being closed. Please check that you're awaiting all database operations inside a `transaction` block."))}, +aU(a){throw A.c(A.ad("Nested transactions aren't supported."))}, +gaq(){return B.m}, +gc9(){return!1}, +geB(){return!0}, +$iiP:1} +A.hb.prototype={ +ar(a){var s,r,q=this +q.i5() +s=q.z +if(s==null){s=q.z=new A.ai(new A.v($.n,t.k),t.ld) +r=q.as;++r.b +r.fO(new A.o1(q),!1,t.P).al(new A.o2(r))}return s.a}, +gaL(){return this.e.e}, +aU(a){var s=this.at+1 +return new A.hb(this.y,new A.ai(new A.v($.n,t.D),t.h),a,s,A.rZ(s),A.rX(s),A.rY(s),this.e,new A.bK())}, +bj(){var s=0,r=A.r(t.H),q,p=this +var $async$bj=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:if(!p.c){s=1 +break}s=3 +return A.e(p.a8(p.ay,B.r),$async$bj) +case 3:p.e5() +case 1:return A.p(q,r)}}) +return A.q($async$bj,r)}, +bE(){var s=0,r=A.r(t.H),q,p=2,o=[],n=[],m=this +var $async$bE=A.t(function(a,b){if(a===1){o.push(b) +s=p}for(;;)switch(s){case 0:if(!m.c){s=1 +break}p=3 +s=6 +return A.e(m.a8(m.ch,B.r),$async$bE) +case 6:n.push(5) +s=4 +break +case 3:n=[2] +case 4:p=2 +m.e5() +s=n.pop() +break +case 5:case 1:return A.p(q,r) +case 2:return A.o(o.at(-1),r)}}) +return A.q($async$bE,r)}, +e5(){var s=this +if(s.at===0)s.e.e.a=!1 +s.Q.aW() +s.d=!0}} +A.o1.prototype={ +$0(){var s=0,r=A.r(t.P),q=1,p=[],o=this,n,m,l,k,j +var $async$$0=A.t(function(a,b){if(a===1){p.push(b) +s=q}for(;;)switch(s){case 0:q=3 +A.pL() +l=o.a +s=6 +return A.e(l.kc(l.ax),$async$$0) +case 6:l.e.e.a=!0 +l.z.O(!0) +q=1 +s=5 +break +case 3:q=2 +j=p.pop() +n=A.R(j) +m=A.ac(j) +l=o.a +l.z.bx(n,m) +l.e5() +s=5 +break +case 2:s=1 +break +case 5:s=7 +return A.e(o.a.Q.a,$async$$0) +case 7:return A.p(null,r) +case 1:return A.o(p.at(-1),r)}}) +return A.q($async$$0,r)}, +$S:18} +A.o2.prototype={ +$0(){return this.a.b--}, +$S:41} +A.f3.prototype={ +gaL(){return this.e}, +gaq(){return B.m}, +ar(a){return this.x.cu(new A.kx(this,a),t.y)}, +br(a){var s=0,r=A.r(t.H),q=this,p,o,n,m +var $async$br=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:n=q.e +m=n.y +m===$&&A.N() +p=a.c +s=m instanceof A.fm?2:4 +break +case 2:o=p +s=3 +break +case 4:s=m instanceof A.ev?5:7 +break +case 5:s=8 +return A.e(A.bs(m.a.gkh(),t.S),$async$br) +case 8:o=c +s=6 +break +case 7:throw A.c(A.kI("Invalid delegate: "+n.i(0)+". The versionDelegate getter must not subclass DBVersionDelegate directly")) +case 6:case 3:if(o===0)o=null +s=9 +return A.e(a.cR(new A.jd(q,new A.bK()),new A.fp(o,p)),$async$br) +case 9:s=m instanceof A.ev&&o!==p?10:11 +break +case 10:m.a.h8("PRAGMA user_version = "+p+";") +s=12 +return A.e(A.bs(null,t.H),$async$br) +case 12:case 11:return A.p(null,r)}}) +return A.q($async$br,r)}, +aU(a){var s=$.n +return new A.hb(B.av,new A.ai(new A.v(s,t.D),t.h),a,0,"BEGIN TRANSACTION","COMMIT TRANSACTION","ROLLBACK TRANSACTION",this,new A.bK())}, +q(){return this.x.cu(new A.kw(this),t.H)}, +gc9(){return this.r}, +geB(){return this.w}} +A.kx.prototype={ +$0(){var s=0,r=A.r(t.y),q,p=2,o=[],n=this,m,l,k,j,i,h,g,f,e +var $async$$0=A.t(function(a,b){if(a===1){o.push(b) +s=p}for(;;)switch(s){case 0:f=n.a +if(f.d){f=A.ot(new A.b0("Can't re-open a database after closing it. Please create a new database connection and open that instead."),null) +k=new A.v($.n,t.k) +k.aR(f) +q=k +s=1 +break}j=f.f +if(j!=null)A.qq(j.a,j.b) +k=f.e +i=t.y +h=A.bs(k.d,i) +s=3 +return A.e(t.g6.b(h)?h:A.ek(A.aJ(h),i),$async$$0) +case 3:if(b){q=f.c=!0 +s=1 +break}i=n.b +s=4 +return A.e(k.bB(i),$async$$0) +case 4:f.c=!0 +p=6 +s=9 +return A.e(f.br(i),$async$$0) +case 9:q=!0 +s=1 +break +p=2 +s=8 +break +case 6:p=5 +e=o.pop() +m=A.R(e) +l=A.ac(e) +f.f=new A.an(m,l) +throw e +s=8 +break +case 5:s=2 +break +case 8:case 1:return A.p(q,r) +case 2:return A.o(o.at(-1),r)}}) +return A.q($async$$0,r)}, +$S:42} +A.kw.prototype={ +$0(){var s=this.a +if(s.c&&!s.d){s.d=!0 +s.c=!1 +return s.e.q()}else return A.bs(null,t.H)}, +$S:2} +A.jd.prototype={ +aU(a){return this.e.aU(a)}, +ar(a){this.c=!0 +return A.bs(!0,t.y)}, +gaL(){return this.e.e}, +gc9(){return!1}, +gaq(){return B.m}} +A.fX.prototype={ +gaq(){return this.e.gaq()}, +ar(a){var s,r,q,p=this,o=p.f +if(o!=null)return o.a +else{p.c=!0 +s=new A.v($.n,t.k) +r=new A.ai(s,t.ld) +p.f=r +q=p.e;++q.b +q.bu(new A.mT(p,r),t.P) +return s}}, +gaL(){return this.e.gaL()}, +aU(a){return this.e.aU(a)}, +q(){this.r.aW() +return A.bs(null,t.H)}} +A.mT.prototype={ +$0(){var s=0,r=A.r(t.P),q=this,p +var $async$$0=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:q.b.O(!0) +p=q.a +s=2 +return A.e(p.r.a,$async$$0) +case 2:--p.e.b +return A.p(null,r)}}) +return A.q($async$$0,r)}, +$S:18} +A.e0.prototype={ +gjt(a){var s=this.b,r=A.O(s) +return new A.I(s,r.h("a3(1)").a(new A.lk(this)),r.h("I<1,a3>"))}} +A.lk.prototype={ +$1(a){var s,r,q,p,o,n,m,l +t.kS.a(a) +s=A.ag(t.N,t.z) +for(r=this.a,q=r.a,p=q.length,r=r.c,o=J.ab(a),n=0;n")).gH(0)).a7() +q.p(0,a,s)}return new A.an(s,A.d(o.sqlite3_stmt_isexplain(r))===0)}} +A.ev.prototype={} +A.li.prototype={ +jB(){var s,r,q,p,o +for(s=this.b,r=new A.bt(s,s.r,s.e,A.k(s).h("bt<2>"));r.l();){q=r.d +p=q.c +if(!p.d){o=$.eQ().a +if(o!=null)o.unregister(q) +if(!p.d){p.d=!0 +if(!p.c){o=p.b +A.d(o.c.d.sqlite3_reset(o.b)) +p.c=!0}o=p.b +o.ba() +A.d(o.c.d.sqlite3_finalize(o.b))}q=q.b +if(!q.r)B.b.B(q.c.d,p)}}s.c4(0)}} +A.kH.prototype={ +$1(a){return Date.now()}, +$S:44} +A.oy.prototype={ +$1(a){var s=a.j(0,0) +if(typeof s=="number")return this.a.$1(s) +else return null}, +$S:26} +A.ih.prototype={ +gil(){var s=this.a +s===$&&A.N() +return s}, +gaq(){if(this.b){var s=this.a +s===$&&A.N() +s=B.m!==s.gaq()}else s=!1 +if(s)throw A.c(A.kI("LazyDatabase created with "+B.m.i(0)+", but underlying database is "+this.gil().gaq().i(0)+".")) +return B.m}, +i0(){var s,r,q=this +if(q.b)return A.bs(null,t.H) +else{s=q.d +if(s!=null)return s.a +else{s=new A.v($.n,t.D) +r=q.d=new A.ai(s,t.h) +A.kT(q.e,t.x).bG(new A.l6(q,r),r.gjy(),t.P) +return s}}}, +cS(){var s=this.a +s===$&&A.N() +return s.cS()}, +cT(){var s=this.a +s===$&&A.N() +return s.cT()}, +ar(a){return this.i0().cl(new A.l7(this,a),t.y)}, +az(a){var s=this.a +s===$&&A.N() +return s.az(a)}, +a8(a,b){var s=this.a +s===$&&A.N() +return s.a8(a,b)}, +ci(a,b){var s=this.a +s===$&&A.N() +return s.ci(a,b)}, +aA(a,b){var s=this.a +s===$&&A.N() +return s.aA(a,b)}, +ae(a,b){var s=this.a +s===$&&A.N() +return s.ae(a,b)}, +q(){var s=0,r=A.r(t.H),q,p=this,o,n +var $async$q=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:s=p.b?3:5 +break +case 3:o=p.a +o===$&&A.N() +s=6 +return A.e(o.q(),$async$q) +case 6:q=b +s=1 +break +s=4 +break +case 5:n=p.d +s=n!=null?7:8 +break +case 7:s=9 +return A.e(n.a,$async$q) +case 9:o=p.a +o===$&&A.N() +s=10 +return A.e(o.q(),$async$q) +case 10:case 8:case 4:case 1:return A.p(q,r)}}) +return A.q($async$q,r)}} +A.l6.prototype={ +$1(a){var s +t.x.a(a) +s=this.a +s.a!==$&&A.q2() +s.a=a +s.b=!0 +this.b.aW()}, +$S:46} +A.l7.prototype={ +$1(a){var s=this.a.a +s===$&&A.N() +return s.ar(this.b)}, +$S:47} +A.bK.prototype={ +cu(a,b){var s,r,q +b.h("0/()").a(a) +s=this.a +r=new A.v($.n,t.D) +this.a=r +q=new A.la(this,a,new A.ai(r,t.h),r,b) +if(s!=null)return s.cl(new A.lc(q,b),b) +else return q.$0()}} +A.la.prototype={ +$0(){var s=this +return A.kT(s.b,s.e).al(new A.lb(s.a,s.c,s.d))}, +$S(){return this.e.h("E<0>()")}} +A.lb.prototype={ +$0(){this.b.aW() +var s=this.a +if(s.a===this.c)s.a=null}, +$S:6} +A.lc.prototype={ +$1(a){return this.a.$0()}, +$S(){return this.b.h("E<0>(~)")}} +A.mh.prototype={ +$1(a){var s,r=this,q=A.i(a).data +if(r.a&&J.aK(q,"_disconnect")){s=r.b.a +s===$&&A.N() +s=s.a +s===$&&A.N() +s.q()}else{s=r.b.a +if(r.c){s===$&&A.N() +s=s.a +s===$&&A.N() +s.k(0,r.d.em(t.c.a(q)))}else{s===$&&A.N() +s=s.a +s===$&&A.N() +s.k(0,A.tl(q))}}}, +$S:10} +A.mi.prototype={ +$1(a){var s=this.c +if(this.a)s.postMessage(this.b.dq(t.jT.a(a))) +else s.postMessage(A.y9(a))}, +$S:8} +A.mj.prototype={ +$0(){if(this.a)this.b.postMessage("_disconnect") +this.b.close()}, +$S:0} +A.kt.prototype={ +S(){A.aU(this.a,"message",t.v.a(new A.kv(this)),!1,t.m)}, +am(a){return this.iB(a)}, +iB(a6){var s=0,r=A.r(t.H),q=1,p=[],o=this,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2,a3,a4,a5 +var $async$am=A.t(function(a7,a8){if(a7===1){p.push(a8) +s=q}for(;;)switch(s){case 0:k=a6 instanceof A.da +j=k?a6.a:null +s=k?3:4 +break +case 3:i={} +i.a=i.b=!1 +s=5 +return A.e(o.b.cu(new A.ku(i,o),t.P),$async$am) +case 5:h=o.c.a.j(0,j) +g=A.l([],t.I) +f=!1 +s=i.b?6:7 +break +case 6:a5=J +s=8 +return A.e(A.eO(),$async$am) +case 8:k=a5.ae(a8) +case 9:if(!k.l()){s=10 +break}e=k.gn() +B.b.k(g,new A.an(B.I,e)) +if(e===j)f=!0 +s=9 +break +case 10:case 7:s=h!=null?11:13 +break +case 11:k=h.a +d=k===B.v||k===B.H +f=k===B.a3||k===B.a4 +s=12 +break +case 13:a5=i.a +if(a5){s=14 +break}else a8=a5 +s=15 +break +case 14:s=16 +return A.e(A.eM(j),$async$am) +case 16:case 15:d=a8 +case 12:k=v.G +c="Worker" in k +e=i.b +b=i.a +new A.dM(c,e,"SharedArrayBuffer" in k,b,g,B.u,d,f).dm(o.a) +s=2 +break +case 4:if(a6 instanceof A.cG){o.c.eW(a6) +s=2 +break}k=a6 instanceof A.e5 +a=k?a6.a:null +s=k?17:18 +break +case 17:s=19 +return A.e(A.j_(a),$async$am) +case 19:a0=a8 +o.a.postMessage(!0) +s=20 +return A.e(a0.S(),$async$am) +case 20:s=2 +break +case 18:n=null +m=null +a1=a6 instanceof A.f4 +if(a1){a2=a6.a +n=a2.a +m=a2.b}s=a1?21:22 +break +case 21:q=24 +case 27:switch(n){case B.a5:s=29 +break +case B.I:s=30 +break +default:s=28 +break}break +case 29:s=31 +return A.e(A.oE(m),$async$am) +case 31:s=28 +break +case 30:s=32 +return A.e(A.hv(m),$async$am) +case 32:s=28 +break +case 28:a6.dm(o.a) +q=1 +s=26 +break +case 24:q=23 +a4=p.pop() +l=A.R(a4) +new A.ed(J.bg(l)).dm(o.a) +s=26 +break +case 23:s=1 +break +case 26:s=2 +break +case 22:s=2 +break +case 2:return A.p(null,r) +case 1:return A.o(p.at(-1),r)}}) +return A.q($async$am,r)}} +A.kv.prototype={ +$1(a){this.a.am(A.pn(A.i(a.data)))}, +$S:1} +A.ku.prototype={ +$0(){var s=0,r=A.r(t.P),q=this,p,o,n,m,l +var $async$$0=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:o=q.b +n=o.d +m=q.a +s=n!=null?2:4 +break +case 2:m.b=n.b +m.a=n.a +s=3 +break +case 4:l=m +s=5 +return A.e(A.dB(),$async$$0) +case 5:l.b=b +s=6 +return A.e(A.jS(),$async$$0) +case 6:p=b +m.a=p +o.d=new A.m7(p,m.b) +case 3:return A.p(null,r)}}) +return A.q($async$$0,r)}, +$S:18} +A.cB.prototype={ +ah(){return"ProtocolVersion."+this.b}} +A.bz.prototype={ +dn(a){this.aD(new A.ma(a))}, +eV(a){this.aD(new A.m9(a))}, +dm(a){this.aD(new A.m8(a))}} +A.ma.prototype={ +$2(a,b){var s +t.bF.a(b) +s=b==null?B.A:b +this.a.postMessage(a,s)}, +$S:19} +A.m9.prototype={ +$2(a,b){var s +t.bF.a(b) +s=b==null?B.A:b +this.a.postMessage(a,s)}, +$S:19} +A.m8.prototype={ +$2(a,b){var s +t.bF.a(b) +s=b==null?B.A:b +this.a.postMessage(a,s)}, +$S:19} +A.hN.prototype={} +A.c6.prototype={ +aD(a){var s=this +A.eG(t.A.a(a),"SharedWorkerCompatibilityResult",A.l([s.e,s.f,s.r,s.c,s.d,A.qo(s.a),s.b.c],t.G),null)}} +A.lE.prototype={ +$1(a){return A.aJ(J.aW(this.a,a))}, +$S:51} +A.ed.prototype={ +aD(a){A.eG(t.A.a(a),"Error",this.a,null)}, +i(a){return"Error in worker: "+this.a}, +$iaf:1} +A.cG.prototype={ +aD(a){var s,r,q,p=this +t.A.a(a) +s={} +s.sqlite=p.a.i(0) +r=p.b +s.port=r +s.storage=p.c.b +s.database=p.d +q=p.e +s.initPort=q +s.migrations=p.r +s.new_serialization=p.w +s.v=p.f.c +r=A.l([r],t.kG) +if(q!=null)r.push(q) +A.eG(a,"ServeDriftDatabase",s,r)}} +A.da.prototype={ +aD(a){A.eG(t.A.a(a),"RequestCompatibilityCheck",this.a,null)}} +A.dM.prototype={ +aD(a){var s,r=this +t.A.a(a) +s={} +s.supportsNestedWorkers=r.e +s.canAccessOpfs=r.f +s.supportsIndexedDb=r.w +s.supportsSharedArrayBuffers=r.r +s.indexedDbExists=r.c +s.opfsExists=r.d +s.existing=A.qo(r.a) +s.v=r.b.c +A.eG(a,"DedicatedWorkerCompatibilityResult",s,null)}} +A.e5.prototype={ +aD(a){A.eG(t.A.a(a),"StartFileSystemServer",this.a,null)}} +A.f4.prototype={ +aD(a){var s=this.a +A.eG(t.A.a(a),"DeleteDatabase",A.l([s.a.b,s.b],t.s),null)}} +A.oB.prototype={ +$1(a){A.i(a) +A.bn(this.b.transaction).abort() +this.a.a=!1}, +$S:10} +A.oQ.prototype={ +$1(a){t.c.a(a) +if(1<0||1>=a.length)return A.a(a,1) +return A.i(a[1])}, +$S:52} +A.hY.prototype={ +eW(a){var s,r +t.j9.a(a) +s=a.f.c +r=a.w +this.a.hm(a.d,new A.kG(this,a)).hA(A.vL(a.b,s>=1,s,r),!r)}, +aZ(a,b,c,d,e){return this.jX(a,b,t.nE.a(c),d,e)}, +jX(a,b,c,d,a0){var s=0,r=A.r(t.x),q,p=this,o,n,m,l,k,j,i,h,g,f,e +var $async$aZ=A.t(function(a1,a2){if(a1===1)return A.o(a2,r) +for(;;)switch(s){case 0:s=3 +return A.e(A.mf(d),$async$aZ) +case 3:f=a2 +e=null +case 4:switch(a0.a){case 0:s=6 +break +case 1:s=7 +break +case 3:s=8 +break +case 2:s=9 +break +case 4:s=10 +break +default:s=11 +break}break +case 6:s=12 +return A.e(A.lG("drift_db/"+a),$async$aZ) +case 12:o=a2 +e=o.gb9() +s=5 +break +case 7:s=13 +return A.e(p.cA(a),$async$aZ) +case 13:o=a2 +e=o.gb9() +s=5 +break +case 8:case 9:s=14 +return A.e(A.i7(a),$async$aZ) +case 14:o=a2 +e=o.gb9() +s=5 +break +case 10:o=A.p7(null) +s=5 +break +case 11:o=null +case 5:s=c!=null&&o.cn("/database",0)===0?15:16 +break +case 15:n=c.$0() +m=t.nh +s=17 +return A.e(t.a6.b(n)?n:A.ek(m.a(n),m),$async$aZ) +case 17:l=a2 +if(l!=null){k=o.b_(new A.fA("/database"),4).a +k.bi(l,0) +k.co()}case 16:t.e6.a(o) +n=f.a +n=n.b +j=n.c3(B.i.a5(o.a),1) +m=n.c +i=m.a++ +m.e.p(0,i,o) +h=A.d(n.d.dart_sqlite3_register_vfs(j,i,1)) +if(h===0)A.K(A.G("could not register vfs")) +n=$.tC() +n.$ti.h("1?").a(h) +n.a.set(o,h) +n=A.v6(t.N,t.mf) +g=new A.j1(new A.jN(f,"/database",null,p.b,!0,b,new A.li(n)),!1,!0,new A.bK(),new A.bK()) +if(e!=null){q=A.uy(g,new A.jh(e,g)) +s=1 +break}else{q=g +s=1 +break}case 1:return A.p(q,r)}}) +return A.q($async$aZ,r)}, +cA(a){var s=0,r=A.r(t.dj),q,p,o,n,m,l,k,j,i +var $async$cA=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:m=v.G +l=A.i(new m.SharedArrayBuffer(8)) +k=t.g +j=k.a(m.Int32Array) +i=t.m +j=t.da.a(A.eL(j,[l],i)) +A.d(m.Atomics.store(j,0,-1)) +j={clientVersion:1,root:"drift_db/"+a,synchronizationBuffer:l,communicationBuffer:A.i(new m.SharedArrayBuffer(67584))} +p=A.i(new m.Worker(A.fG().i(0))) +new A.e5(j).dn(p) +s=3 +return A.e(new A.fV(p,"message",!1,t.a1).gH(0),$async$cA) +case 3:o=A.qV(A.i(j.synchronizationBuffer)) +j=A.i(j.communicationBuffer) +n=A.qX(j,65536,2048) +m=k.a(m.Uint8Array) +m=t._.a(A.eL(m,[j],i)) +k=A.kn("/",$.dF()) +i=$.hx() +q=new A.ec(o,new A.bL(j,n,m),k,i,"dart-sqlite3-vfs") +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$cA,r)}} +A.kG.prototype={ +$0(){var s=this.b,r=s.e,q=r!=null?new A.kD(r):null,p=this.a,o=A.vr(new A.ih(new A.kE(p,s,q)),!1,!0),n=new A.v($.n,t.D),m=new A.e2(s.c,o,new A.ak(n,t.F)) +n.al(new A.kF(p,s,m)) +return m}, +$S:53} +A.kD.prototype={ +$0(){var s=new A.v($.n,t.ls),r=this.a +r.postMessage(!0) +r.onmessage=A.be(new A.kC(new A.ai(s,t.hg))) +return s}, +$S:54} +A.kC.prototype={ +$1(a){var s=t.eo.a(A.i(a).data),r=s==null?null:s +this.a.O(r)}, +$S:10} +A.kE.prototype={ +$0(){var s=this.b +return this.a.aZ(s.d,s.r,this.c,s.a,s.c)}, +$S:55} +A.kF.prototype={ +$0(){this.a.a.B(0,this.b.d) +this.c.b.hD()}, +$S:6} +A.jh.prototype={ +c5(a){var s=0,r=A.r(t.H),q=this,p +var $async$c5=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:s=2 +return A.e(a.q(),$async$c5) +case 2:s=q.b===a?3:4 +break +case 3:p=q.a.$0() +s=5 +return A.e(p instanceof A.v?p:A.ek(p,t.H),$async$c5) +case 5:case 4:return A.p(null,r)}}) +return A.q($async$c5,r)}} +A.e2.prototype={ +hA(a,b){var s,r,q,p;++this.c +s=t.X +r=a.$ti +s=r.h("P<1>(P<1>)").a(r.h("c9<1,1>").a(A.w4(new A.lp(this),s,s)).gjv()).$1(a.ghJ()) +q=new A.f_(r.h("f_<1>")) +p=r.h("fR<1>") +q.b=p.a(new A.fR(q,a.ghE(),p)) +r=r.h("fS<1>") +q.a=r.a(new A.fS(s,q,r)) +this.b.hB(q,b)}} +A.lp.prototype={ +$1(a){var s=this.a +if(--s.c===0)s.d.aW() +a.a.bo()}, +$S:56} +A.m7.prototype={} +A.kh.prototype={ +$1(a){this.a.O(this.c.a(this.b.result))}, +$S:1} +A.ki.prototype={ +$1(a){var s=A.bn(this.b.error) +if(s==null)s=a +this.a.aJ(s)}, +$S:1} +A.kj.prototype={ +$1(a){var s=A.bn(this.b.error) +if(s==null)s=a +this.a.aJ(s)}, +$S:1} +A.ly.prototype={ +S(){A.aU(this.a,"connect",t.v.a(new A.lD(this)),!1,t.m)}, +dZ(a){var s=0,r=A.r(t.H),q=this,p,o +var $async$dZ=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:p=t.c.a(a.ports) +o=J.aW(t.ip.b(p)?p:new A.as(p,A.O(p).h("as<1,B>")),0) +o.start() +A.aU(o,"message",t.v.a(new A.lz(q,o)),!1,t.m) +return A.p(null,r)}}) +return A.q($async$dZ,r)}, +cC(a,b){return this.iH(a,b)}, +iH(a,b){var s=0,r=A.r(t.H),q=1,p=[],o=this,n,m,l,k,j,i,h,g +var $async$cC=A.t(function(c,d){if(c===1){p.push(d) +s=q}for(;;)switch(s){case 0:q=3 +n=A.pn(A.i(b.data)) +m=n +l=null +i=m instanceof A.da +if(i)l=m.a +s=i?7:8 +break +case 7:s=9 +return A.e(o.bZ(l),$async$cC) +case 9:k=d +k.eV(a) +s=6 +break +case 8:if(m instanceof A.cG&&B.v===m.c){o.c.eW(n) +s=6 +break}if(m instanceof A.cG){i=o.b +i.toString +n.dn(i) +s=6 +break}i=A.W("Unknown message",null) +throw A.c(i) +case 6:q=1 +s=5 +break +case 3:q=2 +g=p.pop() +j=A.R(g) +new A.ed(J.bg(j)).eV(a) +a.close() +s=5 +break +case 2:s=1 +break +case 5:return A.p(null,r) +case 1:return A.o(p.at(-1),r)}}) +return A.q($async$cC,r)}, +bZ(a0){var s=0,r=A.r(t.a_),q,p=this,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a +var $async$bZ=A.t(function(a1,a2){if(a1===1)return A.o(a2,r) +for(;;)switch(s){case 0:i=v.G +h="Worker" in i +s=3 +return A.e(A.jS(),$async$bZ) +case 3:g=a2 +s=!h?4:6 +break +case 4:i=p.c.a.j(0,a0) +if(i==null)o=null +else{i=i.a +i=i===B.v||i===B.H +o=i}f=A +e=!1 +d=!1 +c=g +b=B.C +a=B.u +s=o==null?7:9 +break +case 7:s=10 +return A.e(A.eM(a0),$async$bZ) +case 10:s=8 +break +case 9:a2=o +case 8:q=new f.c6(e,d,c,b,a,a2,!1) +s=1 +break +s=5 +break +case 6:n={} +m=p.b +if(m==null)m=p.b=A.i(new i.Worker(A.fG().i(0))) +new A.da(a0).dn(m) +i=new A.v($.n,t.hq) +n.a=n.b=null +l=new A.lC(n,new A.ai(i,t.eT),g) +k=t.v +j=t.m +n.b=A.aU(m,"message",k.a(new A.lA(l)),!1,j) +n.a=A.aU(m,"error",k.a(new A.lB(p,l,m)),!1,j) +q=i +s=1 +break +case 5:case 1:return A.p(q,r)}}) +return A.q($async$bZ,r)}} +A.lD.prototype={ +$1(a){return this.a.dZ(a)}, +$S:1} +A.lz.prototype={ +$1(a){return this.a.cC(this.b,a)}, +$S:1} +A.lC.prototype={ +$4(a,b,c,d){var s,r +t.cE.a(d) +s=this.b +if((s.a.a&30)===0){s.O(new A.c6(!0,a,this.c,d,B.u,c,b)) +s=this.a +r=s.b +if(r!=null)r.K() +s=s.a +if(s!=null)s.K()}}, +$S:57} +A.lA.prototype={ +$1(a){var s=t.cP.a(A.pn(A.i(a.data))) +this.a.$4(s.f,s.d,s.c,s.a)}, +$S:1} +A.lB.prototype={ +$1(a){this.b.$4(!1,!1,!1,B.C) +this.c.terminate() +this.a.b=null}, +$S:1} +A.bS.prototype={ +ah(){return"WasmStorageImplementation."+this.b}} +A.bA.prototype={ +ah(){return"WebStorageApi."+this.b}} +A.j1.prototype={} +A.jN.prototype={ +jY(){var s=this.Q.bB(this.as) +return s}, +bq(){var s=0,r=A.r(t.H),q +var $async$bq=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:q=A.ek(null,t.H) +s=2 +return A.e(q,$async$bq) +case 2:return A.p(null,r)}}) +return A.q($async$bq,r)}, +bs(a,b){var s=0,r=A.r(t.z),q=this +var $async$bs=A.t(function(c,d){if(c===1)return A.o(d,r) +for(;;)switch(s){case 0:q.ke(a,b) +s=!q.a?2:3 +break +case 2:s=4 +return A.e(q.bq(),$async$bs) +case 4:case 3:return A.p(null,r)}}) +return A.q($async$bs,r)}, +a8(a,b){var s=0,r=A.r(t.H),q=this +var $async$a8=A.t(function(c,d){if(c===1)return A.o(d,r) +for(;;)switch(s){case 0:s=2 +return A.e(q.bs(a,b),$async$a8) +case 2:return A.p(null,r)}}) +return A.q($async$a8,r)}, +aA(a,b){var s=0,r=A.r(t.S),q,p=this,o +var $async$aA=A.t(function(c,d){if(c===1)return A.o(d,r) +for(;;)switch(s){case 0:s=3 +return A.e(p.bs(a,b),$async$aA) +case 3:o=p.b.b +q=A.d(A.M(v.G.Number(t.C.a(o.a.d.sqlite3_last_insert_rowid(o.b))))) +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$aA,r)}, +de(a,b){var s=0,r=A.r(t.S),q,p=this,o +var $async$de=A.t(function(c,d){if(c===1)return A.o(d,r) +for(;;)switch(s){case 0:s=3 +return A.e(p.bs(a,b),$async$de) +case 3:o=p.b.b +q=A.d(o.a.d.sqlite3_changes(o.b)) +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$de,r)}, +az(a){var s=0,r=A.r(t.H),q=this +var $async$az=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:q.kb(a) +s=!q.a?2:3 +break +case 2:s=4 +return A.e(q.bq(),$async$az) +case 4:case 3:return A.p(null,r)}}) +return A.q($async$az,r)}, +q(){var s=0,r=A.r(t.H),q=this +var $async$q=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:s=2 +return A.e(q.hN(),$async$q) +case 2:q.b.a7() +s=3 +return A.e(q.bq(),$async$q) +case 3:return A.p(null,r)}}) +return A.q($async$q,r)}} +A.hR.prototype={ +fW(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var s +A.tg("absolute",A.l([a,b,c,d,e,f,g,h,i,j,k,l,m,n,o],t.p4)) +s=this.a +s=s.R(a)>0&&!s.ac(a) +if(s)return a +s=this.b +return this.he(0,s==null?A.pP():s,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)}, +aH(a){var s=null +return this.fW(a,s,s,s,s,s,s,s,s,s,s,s,s,s,s)}, +he(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){var s=A.l([b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q],t.p4) +A.tg("join",s) +return this.jQ(new A.fJ(s,t.lS))}, +jP(a,b,c){var s=null +return this.he(0,b,c,s,s,s,s,s,s,s,s,s,s,s,s,s,s)}, +jQ(a){var s,r,q,p,o,n,m,l,k,j +t.bq.a(a) +for(s=a.$ti,r=s.h("J(h.E)").a(new A.ko()),q=a.gv(0),s=new A.dg(q,r,s.h("dg")),r=this.a,p=!1,o=!1,n="";s.l();){m=q.gn() +if(r.ac(m)&&o){l=A.e_(m,r) +k=n.charCodeAt(0)==0?n:n +n=B.a.t(k,0,r.bF(k,!0)) +l.b=n +if(r.ca(n))B.b.p(l.e,0,r.gbk()) +n=l.i(0)}else if(r.R(m)>0){o=!r.ac(m) +n=m}else{j=m.length +if(j!==0){if(0>=j)return A.a(m,0) +j=r.ek(m[0])}else j=!1 +if(!j)if(p)n+=r.gbk() +n+=m}p=r.ca(m)}return n.charCodeAt(0)==0?n:n}, +aO(a,b){var s=A.e_(b,this.a),r=s.d,q=A.O(r),p=q.h("bd<1>") +r=A.aC(new A.bd(r,q.h("J(1)").a(new A.kp()),p),p.h("h.E")) +s.sk_(r) +r=s.b +if(r!=null)B.b.d2(s.d,0,r) +return s.d}, +bA(a){var s +if(!this.iJ(a))return a +s=A.e_(a,this.a) +s.eG() +return s.i(0)}, +iJ(a){var s,r,q,p,o,n,m,l=this.a,k=l.R(a) +if(k!==0){if(l===$.hy())for(s=a.length,r=0;r=0))return A.a(a,r) +n=a.charCodeAt(r) +if(l.F(n)){if(l===$.hy()&&n===47)return!0 +if(p!=null&&l.F(p))return!0 +if(p===46)m=o==null||o===46||l.F(o) +else m=!1 +if(m)return!0}}if(p==null)return!0 +if(l.F(p))return!0 +if(p===46)l=o==null||l.F(o)||o===46 +else l=!1 +if(l)return!0 +return!1}, +eL(a,b){var s,r,q,p,o,n,m,l=this,k='Unable to find a path to "',j=b==null +if(j&&l.a.R(a)<=0)return l.bA(a) +if(j){j=l.b +b=j==null?A.pP():j}else b=l.aH(b) +j=l.a +if(j.R(b)<=0&&j.R(a)>0)return l.bA(a) +if(j.R(a)<=0||j.ac(a))a=l.aH(a) +if(j.R(a)<=0&&j.R(b)>0)throw A.c(A.qG(k+a+'" from "'+b+'".')) +s=A.e_(b,j) +s.eG() +r=A.e_(a,j) +r.eG() +q=s.d +p=q.length +if(p!==0){if(0>=p)return A.a(q,0) +q=q[0]==="."}else q=!1 +if(q)return r.i(0) +q=s.b +p=r.b +if(q!=p)q=q==null||p==null||!j.eI(q,p) +else q=!1 +if(q)return r.i(0) +for(;;){q=s.d +p=q.length +o=!1 +if(p!==0){n=r.d +m=n.length +if(m!==0){if(0>=p)return A.a(q,0) +q=q[0] +if(0>=m)return A.a(n,0) +n=j.eI(q,n[0]) +q=n}else q=o}else q=o +if(!q)break +B.b.dc(s.d,0) +B.b.dc(s.e,1) +B.b.dc(r.d,0) +B.b.dc(r.e,1)}q=s.d +p=q.length +if(p!==0){if(0>=p)return A.a(q,0) +q=q[0]===".."}else q=!1 +if(q)throw A.c(A.qG(k+a+'" from "'+b+'".')) +q=t.N +B.b.ex(r.d,0,A.bi(p,"..",!1,q)) +B.b.p(r.e,0,"") +B.b.ex(r.e,1,A.bi(s.d.length,j.gbk(),!1,q)) +j=r.d +q=j.length +if(q===0)return"." +if(q>1&&B.b.gG(j)==="."){B.b.ho(r.d) +j=r.e +if(0>=j.length)return A.a(j,-1) +j.pop() +if(0>=j.length)return A.a(j,-1) +j.pop() +B.b.k(j,"")}r.b="" +r.hp() +return r.i(0)}, +k8(a){return this.eL(a,null)}, +iF(a,b){var s,r,q,p,o,n,m,l,k=this +a=A.w(a) +b=A.w(b) +r=k.a +q=r.R(A.w(a))>0 +p=r.R(A.w(b))>0 +if(q&&!p){b=k.aH(b) +if(r.ac(a))a=k.aH(a)}else if(p&&!q){a=k.aH(a) +if(r.ac(b))b=k.aH(b)}else if(p&&q){o=r.ac(b) +n=r.ac(a) +if(o&&!n)b=k.aH(b) +else if(n&&!o)a=k.aH(a)}m=k.iG(a,b) +if(m!==B.n)return m +s=null +try{s=k.eL(b,a)}catch(l){if(A.R(l) instanceof A.fq)return B.k +else throw l}if(r.R(A.w(s))>0)return B.k +if(J.aK(s,"."))return B.M +if(J.aK(s,".."))return B.k +return J.av(s)>=3&&J.uv(s,"..")&&r.F(J.up(s,2))?B.k:B.N}, +iG(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d=this +if(a===".")a="" +s=d.a +r=s.R(a) +q=s.R(b) +if(r!==q)return B.k +for(p=a.length,o=b.length,n=0;n=0&&l=0&&m=0&&l=0&&m=0))return A.a(a,q) +n=r.F(a.charCodeAt(q))}else n=!1 +if(!n)break;++q}if(q===s)break +m=q +for(;;){if(m=0))return A.a(a,m) +n=!r.F(a.charCodeAt(m))}else n=!1 +if(!n)break;++m}n=m-q +if(n===1){if(!(q>=0&&q=0&&qq.aO(0,s).length?s:r}} +A.ko.prototype={ +$1(a){return A.w(a)!==""}, +$S:3} +A.kp.prototype={ +$1(a){return A.w(a).length!==0}, +$S:3} +A.oz.prototype={ +$1(a){A.ol(a) +return a==null?"null":'"'+a+'"'}, +$S:59} +A.er.prototype={ +i(a){return this.a}} +A.es.prototype={ +i(a){return this.a}} +A.dS.prototype={ +hz(a){var s,r=this.R(a) +if(r>0)return B.a.t(a,0,r) +if(this.ac(a)){if(0>=a.length)return A.a(a,0) +s=a[0]}else s=null +return s}, +hn(a){var s,r,q=null,p=a.length +if(p===0)return A.au(q,q,q,q) +s=A.kn(q,this).aO(0,a) +r=p-1 +if(!(r>=0))return A.a(a,r) +if(this.F(a.charCodeAt(r)))B.b.k(s,"") +return A.au(q,q,s,q)}, +cV(a,b){return a===b}, +eI(a,b){return a===b}} +A.lg.prototype={ +gew(){var s=this.d +if(s.length!==0)s=B.b.gG(s)===""||B.b.gG(this.e)!=="" +else s=!1 +return s}, +hp(){var s,r,q=this +for(;;){s=q.d +if(!(s.length!==0&&B.b.gG(s)===""))break +B.b.ho(q.d) +s=q.e +if(0>=s.length)return A.a(s,-1) +s.pop()}s=q.e +r=s.length +if(r!==0)B.b.p(s,r-1,"")}, +eG(){var s,r,q,p,o,n,m=this,l=A.l([],t.s) +for(s=m.d,r=s.length,q=0,p=0;p=n)return A.a(l,-1) +l.pop()}else ++q}else B.b.k(l,o)}if(m.b==null)B.b.ex(l,0,A.bi(q,"..",!1,t.N)) +if(l.length===0&&m.b==null)B.b.k(l,".") +m.d=l +s=m.a +m.e=A.bi(l.length+1,s.gbk(),!0,t.N) +r=m.b +if(r==null||l.length===0||!s.ca(r))B.b.p(m.e,0,"") +r=m.b +if(r!=null&&s===$.hy())m.b=A.bD(r,"/","\\") +m.hp()}, +i(a){var s,r,q,p,o,n=this.b +n=n!=null?n:"" +for(s=this.d,r=s.length,q=this.e,p=q.length,o=0;o=0))return A.a(a,s) +s=a.charCodeAt(s)!==47 +r=s}else r=!1 +return r}, +bF(a,b){var s=a.length +if(s!==0){if(0>=s)return A.a(a,0) +s=a.charCodeAt(0)===47}else s=!1 +if(s)return 1 +return 0}, +R(a){return this.bF(a,!1)}, +ac(a){return!1}, +d8(a){var s +if(a.gZ()===""||a.gZ()==="file"){s=a.gad() +return A.pE(s,0,s.length,B.j,!1)}throw A.c(A.W("Uri "+a.i(0)+" must have scheme 'file:'.",null))}, +ef(a){var s=A.e_(a,this),r=s.d +if(r.length===0)B.b.aI(r,A.l(["",""],t.s)) +else if(s.gew())B.b.k(s.d,"") +return A.au(null,null,s.d,"file")}, +geF(){return"posix"}, +gbk(){return"/"}} +A.iW.prototype={ +ek(a){return B.a.I(a,"/")}, +F(a){return a===47}, +ca(a){var s,r=a.length +if(r===0)return!1 +s=r-1 +if(!(s>=0))return A.a(a,s) +if(a.charCodeAt(s)!==47)return!0 +return B.a.en(a,"://")&&this.R(a)===r}, +bF(a,b){var s,r,q,p=a.length +if(p===0)return 0 +if(0>=p)return A.a(a,0) +if(a.charCodeAt(0)===47)return 1 +for(s=0;s=s)return A.a(a,0) +s=a.charCodeAt(0)===47}else s=!1 +return s}, +d8(a){return a.i(0)}, +hn(a){return A.bR(a)}, +ef(a){return A.bR(a)}, +geF(){return"url"}, +gbk(){return"/"}} +A.j7.prototype={ +ek(a){return B.a.I(a,"/")}, +F(a){return a===47||a===92}, +ca(a){var s,r=a.length +if(r===0)return!1 +s=r-1 +if(!(s>=0))return A.a(a,s) +s=a.charCodeAt(s) +return!(s===47||s===92)}, +bF(a,b){var s,r,q=a.length +if(q===0)return 0 +if(0>=q)return A.a(a,0) +if(a.charCodeAt(0)===47)return 1 +if(a.charCodeAt(0)===92){if(q>=2){if(1>=q)return A.a(a,1) +s=a.charCodeAt(1)!==92}else s=!0 +if(s)return 1 +r=B.a.aX(a,"\\",2) +if(r>0){r=B.a.aX(a,"\\",r+1) +if(r>0)return r}return q}if(q<3)return 0 +if(!A.tr(a.charCodeAt(0)))return 0 +if(a.charCodeAt(1)!==58)return 0 +q=a.charCodeAt(2) +if(!(q===47||q===92))return 0 +return 3}, +R(a){return this.bF(a,!1)}, +ac(a){return this.R(a)===1}, +d8(a){var s,r +if(a.gZ()!==""&&a.gZ()!=="file")throw A.c(A.W("Uri "+a.i(0)+" must have scheme 'file:'.",null)) +s=a.gad() +if(a.gbb()===""){if(s.length>=3&&B.a.A(s,"/")&&A.tm(s,1)!=null)s=B.a.hr(s,"/","")}else s="\\\\"+a.gbb()+s +r=A.bD(s,"/","\\") +return A.pE(r,0,r.length,B.j,!1)}, +ef(a){var s,r,q=A.e_(a,this),p=q.b +p.toString +if(B.a.A(p,"\\\\")){s=new A.bd(A.l(p.split("\\"),t.s),t.o.a(new A.mt()),t.U) +B.b.d2(q.d,0,s.gG(0)) +if(q.gew())B.b.k(q.d,"") +return A.au(s.gH(0),null,q.d,"file")}else{if(q.d.length===0||q.gew())B.b.k(q.d,"") +p=q.d +r=q.b +r.toString +r=A.bD(r,"/","") +B.b.d2(p,0,A.bD(r,"\\","")) +return A.au(null,null,q.d,"file")}}, +cV(a,b){var s +if(a===b)return!0 +if(a===47)return b===92 +if(a===92)return b===47 +if((a^b)!==32)return!1 +s=a|32 +return s>=97&&s<=122}, +eI(a,b){var s,r,q +if(a===b)return!0 +s=a.length +r=b.length +if(s!==r)return!1 +for(q=0;q")).au(0,", ")) +p=r}else p=s}return p.charCodeAt(0)==0?p:p}, +$iaf:1} +A.lH.prototype={ +$1(a){if(t.E.b(a))return"blob ("+a.length+" bytes)" +else return J.bg(a)}, +$S:60} +A.cZ.prototype={} +A.iB.prototype={} +A.iK.prototype={} +A.iC.prototype={} +A.lm.prototype={} +A.ft.prototype={} +A.d9.prototype={} +A.cC.prototype={} +A.i2.prototype={ +a7(){var s,r,q,p,o,n,m,l=this +for(s=l.d,r=s.length,q=0;q=q.length)return A.a(q,0) +r=A.d(q[0]) +return r}finally{p.a7()}}, +h3(a,b,c,d,e){var s,r,q,p,o,n,m,l,k=null +t.on.a(d) +s=this.b +r=B.i.a5(e) +if(r.length>255)A.K(A.ao(e,"functionName","Must not exceed 255 bytes when utf-8 encoded")) +q=new Uint8Array(A.jP(r)) +p=c?526337:2049 +o=t.n8.a(new A.ks(d)) +n=s.a +m=n.c3(q,1) +q=n.d +l=A.jR(q,"dart_sqlite3_create_scalar_function",[s.b,m,a.a,p,n.c.k7(new A.iD(o,k,k))],t.S) +l=l +q.dart_sqlite3_free(m) +if(l!==0)A.hw(this,l,k,k,k)}, +a6(a,b,c,d){return this.h3(a,b,!0,c,d)}, +a7(){var s,r,q,p,o,n=this +if(n.r)return +$.eQ().h5(n) +n.r=!0 +s=n.b +r=s.a +q=r.c +q.sjJ(null) +p=s.b +s=r.d +r=t.gv +o=r.a(s.dart_sqlite3_updates) +if(o!=null)o.call(null,p,-1) +q.sjH(null) +o=r.a(s.dart_sqlite3_commits) +if(o!=null)o.call(null,p,-1) +q.sjI(null) +s=r.a(s.dart_sqlite3_rollbacks) +if(s!=null)s.call(null,p,-1) +n.c.a7()}, +h8(a){var s,r,q,p=this,o=B.r +if(J.av(o)===0){if(p.r)A.K(A.G("This database has already been closed")) +r=p.b +q=r.a +s=q.c3(B.i.a5(a),1) +q=q.d +r=A.jR(q,"sqlite3_exec",[r.b,s,0,0,0],t.S) +q.dart_sqlite3_free(s) +if(r!==0)A.hw(p,r,"executing",a,o)}else{s=p.d9(a,!0) +try{s.h9(new A.ct(t.kS.a(o)))}finally{s.a7()}}}, +iV(a,a0,a1,a2,a3){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b=this +if(b.r)A.K(A.G("This database has already been closed")) +s=B.i.a5(a) +r=b.b +t.L.a(s) +q=r.a +p=q.bv(s) +o=q.d +n=A.d(o.dart_sqlite3_malloc(4)) +o=A.d(o.dart_sqlite3_malloc(4)) +m=new A.mg(r,p,n,o) +l=A.l([],t.lE) +k=new A.kr(m,l) +for(r=s.length,q=q.b,n=t.a,j=0;j=0&&b."))}, +dz(a){A:{this.i2(a.a) +break A}}, +a7(){var s,r=this.c +if(!r.d){$.eQ().h5(this) +r.a7() +s=this.b +if(!s.r)B.b.B(s.c.d,r)}}, +eU(a){var s=this +if(s.c.d)A.K(A.G(u.D)) +s.bU() +s.dz(a) +return s.j5()}, +h9(a){var s=this +if(s.c.d)A.K(A.G(u.D)) +s.bU() +s.dz(a) +s.fi()}} +A.i5.prototype={ +cn(a,b){return this.d.a4(a)?1:0}, +dg(a,b){this.d.B(0,a)}, +dh(a){return $.hA().bA("/"+a)}, +b_(a,b){var s,r=a.a +if(r==null)r=A.p6(this.b,"/") +s=this.d +if(!s.a4(r))if((b&4)!==0)s.p(0,r,new A.by(new Uint8Array(0),0)) +else throw A.c(A.cN(14)) +return new A.cS(new A.jq(this,r,(b&8)!==0),0)}, +dj(a){}} +A.jq.prototype={ +eK(a,b){var s,r=this.a.d.j(0,this.b) +if(r==null||r.b<=b)return 0 +s=Math.min(a.length,r.b-b) +B.e.M(a,0,s,J.dG(B.e.gaV(r.a),0,r.b),b) +return s}, +df(){return this.d>=2?1:0}, +co(){if(this.c)this.a.d.B(0,this.b)}, +cp(){return this.a.d.j(0,this.b).b}, +di(a){this.d=a}, +dk(a){}, +cq(a){var s=this.a.d,r=this.b,q=s.j(0,r) +if(q==null){s.p(0,r,new A.by(new Uint8Array(0),0)) +s.j(0,r).sm(0,a)}else q.sm(0,a)}, +dl(a){this.d=a}, +bi(a,b){var s,r=this.a.d,q=this.b,p=r.j(0,q) +if(p==null){p=new A.by(new Uint8Array(0),0) +r.p(0,q,p)}s=b+a.length +if(s>p.b)p.sm(0,s) +p.ag(0,b,s,a)}} +A.hS.prototype={ +i4(){var s,r,q,p,o=A.ag(t.N,t.S) +for(s=this.a,r=s.length,q=0;q=0&&b>>0!==b||b>=s.length)return A.a(s,b) +return s[b]}return null}r=this.a.c.j(0,b) +if(r==null)return null +s=this.b +if(r>>>0!==r||r>=s.length)return A.a(s,r) +return s[r]}, +ga_(){return this.a.a}, +gbH(){return this.b}, +$ia3:1} +A.jA.prototype={ +gn(){var s=this.a,r=s.d,q=this.b +if(!(q>=0&&q")).P(a,b,c,d)}, +aY(a,b,c){return this.P(a,null,b,c)}} +A.k_.prototype={ +$0(){var s,r=this,q=A.i(r.c.next()),p=r.a +p.a=q +s=r.d +A.a7(q,t.m).bG(new A.k1(p,r.b,s,r),s.gfX(),t.P)}, +$S:0} +A.k1.prototype={ +$1(a){var s,r,q,p,o=this +A.i(a) +s=A.rS(a.done) +if(s==null)s=null +r=o.b.$ti +q=r.h("1?").a(a.value) +p=o.c +if(s===!0){p.q() +o.a.a=null}else{p.k(0,q==null?r.c.a(q):q) +o.a.a=null +s=p.b +if(!((s&1)!==0?(p.gaQ().e&4)!==0:(s&2)===0))o.d.$0()}}, +$S:10} +A.k0.prototype={ +$0(){var s,r +if(this.a.a==null){s=this.b +r=s.b +s=!((r&1)!==0?(s.gaQ().e&4)!==0:(r&2)===0)}else s=!1 +if(s)this.c.$0()}, +$S:0} +A.dk.prototype={ +K(){var s=0,r=A.r(t.H),q=this,p +var $async$K=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:p=q.b +if(p!=null)p.K() +p=q.c +if(p!=null)p.K() +q.c=q.b=null +return A.p(null,r)}}) +return A.q($async$K,r)}, +gn(){var s=this.a +return s==null?A.K(A.G("Await moveNext() first")):s}, +l(){var s,r,q,p,o=this,n=o.a +if(n!=null)n.continue() +n=new A.v($.n,t.k) +s=new A.ak(n,t.hk) +r=o.d +q=t.v +p=t.m +o.b=A.aU(r,"success",q.a(new A.mL(o,s)),!1,p) +o.c=A.aU(r,"error",q.a(new A.mM(o,s)),!1,p) +return n}} +A.mL.prototype={ +$1(a){var s,r=this.a +r.K() +s=r.$ti.h("1?").a(r.d.result) +r.a=s +this.b.O(s!=null)}, +$S:1} +A.mM.prototype={ +$1(a){var s=this.a +s.K() +s=A.bn(s.d.error) +if(s==null)s=a +this.b.aJ(s)}, +$S:1} +A.kf.prototype={ +$1(a){this.a.O(this.c.a(this.b.result))}, +$S:1} +A.kg.prototype={ +$1(a){var s=A.bn(this.b.error) +if(s==null)s=a +this.a.aJ(s)}, +$S:1} +A.kk.prototype={ +$1(a){this.a.O(this.c.a(this.b.result))}, +$S:1} +A.kl.prototype={ +$1(a){var s=A.bn(this.b.error) +if(s==null)s=a +this.a.aJ(s)}, +$S:1} +A.km.prototype={ +$1(a){var s=A.bn(this.b.error) +if(s==null)s=a +this.a.aJ(s)}, +$S:1} +A.md.prototype={ +$2(a,b){var s +A.w(a) +t.lb.a(b) +s={} +this.a[a]=s +b.ab(0,new A.mc(s))}, +$S:63} +A.mc.prototype={ +$2(a,b){this.a[A.w(a)]=b}, +$S:64} +A.fI.prototype={} +A.ec.prototype={ +a2(a,b,c,d){var s,r,q,p="_runInWorker",o=t.em +A.pM(c,o,"Req",p) +A.pM(d,o,"Res",p) +c.h("@<0>").u(d).h("ah<1,2>").a(a) +o=this.e +o.hw(c.a(b)) +s=this.d.b +r=v.G +A.d(r.Atomics.store(s,1,-1)) +A.d(r.Atomics.store(s,0,a.a)) +A.uz(s,0) +A.w(r.Atomics.wait(s,1,-1)) +q=A.d(r.Atomics.load(s,1)) +if(q!==0)throw A.c(A.cN(q)) +return a.d.$1(o)}, +cn(a,b){return this.a2(B.a6,new A.ba(a,b,0,0),t.e,t.f).a}, +dg(a,b){this.a2(B.a7,new A.ba(a,b,0,0),t.e,t.p)}, +dh(a){var s=this.r.aH(a) +if($.jV().iF("/",s)!==B.N)throw A.c(B.a1) +return s}, +b_(a,b){var s=a.a,r=this.a2(B.ai,new A.ba(s==null?A.p6(this.b,"/"):s,b,0,0),t.e,t.f) +return new A.cS(new A.j3(this,r.b),r.a)}, +dj(a){this.a2(B.ac,new A.a2(B.c.J(a.a,1000),0,0),t.f,t.p)}, +q(){var s=t.p +this.a2(B.a8,B.h,s,s)}} +A.j3.prototype={ +geR(){return 2048}, +eK(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g,f=a.length +for(s=t.m,r=this.a,q=this.b,p=t.f,o=r.e.a,n=v.G,m=t.g,l=t._,k=0;f>0;){j=Math.min(65536,f) +f-=j +i=r.a2(B.ag,new A.a2(q,b+k,j),p,p).a +h=m.a(n.Uint8Array) +g=[o] +g.push(0) +g.push(i) +A.ie(a,"set",l.a(A.eL(h,g,s)),k,null,null) +k+=i +if(i0;){m=Math.min(65536,l) +A.ie(r,"set",m===l&&n===0?a:J.dG(B.e.gaV(a),a.byteOffset+n,m),0,null,null) +s.a2(B.ab,new A.a2(q,b+n,m),p,o) +n+=m +l-=m}}} +A.lo.prototype={} +A.bL.prototype={ +hw(a){var s,r +if(!(a instanceof A.bh))if(a instanceof A.a2){s=this.b +s.$flags&2&&A.C(s,8) +s.setInt32(0,a.a,!1) +s.setInt32(4,a.b,!1) +s.setInt32(8,a.c,!1) +if(a instanceof A.ba){r=B.i.a5(a.d) +s.setInt32(12,r.length,!1) +B.e.b1(this.c,16,r)}}else throw A.c(A.ad("Message "+a.i(0)))}} +A.ah.prototype={ +ah(){return"WorkerOperation."+this.b}} +A.c2.prototype={} +A.bh.prototype={} +A.a2.prototype={} +A.ba.prototype={} +A.jz.prototype={} +A.fH.prototype={ +bV(a,b){var s=0,r=A.r(t.i7),q,p=this,o,n,m,l,k,j,i,h,g +var $async$bV=A.t(function(c,d){if(c===1)return A.o(d,r) +for(;;)switch(s){case 0:j=$.hA() +i=j.eL(a,"/") +h=j.aO(0,i) +g=h.length +j=g>=1 +o=null +if(j){n=g-1 +m=B.b.a0(h,0,n) +if(!(n>=0&&n=0&&a3<13)){q=A.a(B.V,a3) +s=1 +break}l=B.V[a3] +k=l.c.$1(e) +j=null +case 9:switch(l.a){case 5:s=11 +break +case 0:s=12 +break +case 1:s=13 +break +case 2:s=14 +break +case 3:s=15 +break +case 4:s=16 +break +case 6:s=17 +break +case 7:s=18 +break +case 9:s=19 +break +case 8:s=20 +break +case 10:s=21 +break +case 11:s=22 +break +case 12:s=23 +break +default:s=10 +break}break +case 11:a2=A.aC(c,b) +B.b.ab(a2,d) +s=24 +return A.e(A.qt(A.qn(0,a.a(k).a),a1),$async$S) +case 24:j=B.h +s=10 +break +case 12:s=25 +return A.e(n.c0(a0.a(k)),$async$S) +case 25:j=a7 +s=10 +break +case 13:s=26 +return A.e(n.c1(a0.a(k)),$async$S) +case 26:j=B.h +s=10 +break +case 14:s=27 +return A.e(n.c2(a0.a(k)),$async$S) +case 27:j=a7 +s=10 +break +case 15:s=28 +return A.e(n.cN(a.a(k)),$async$S) +case 28:j=a7 +s=10 +break +case 16:s=29 +return A.e(n.cP(a.a(k)),$async$S) +case 29:j=a7 +s=10 +break +case 17:s=30 +return A.e(n.cK(a.a(k)),$async$S) +case 30:j=B.h +s=10 +break +case 18:s=31 +return A.e(n.cL(a.a(k)),$async$S) +case 31:j=a7 +s=10 +break +case 19:s=32 +return A.e(n.cO(a.a(k)),$async$S) +case 32:j=a7 +s=10 +break +case 20:s=33 +return A.e(n.ed(a.a(k)),$async$S) +case 33:j=a7 +s=10 +break +case 21:s=34 +return A.e(n.cM(a.a(k)),$async$S) +case 34:j=a7 +s=10 +break +case 22:s=35 +return A.e(n.ee(a.a(k)),$async$S) +case 35:j=a7 +s=10 +break +case 23:j=B.h +n.e=!0 +a2=A.aC(c,b) +B.b.ab(a2,d) +s=10 +break +case 10:e.hw(j) +m=0 +p=2 +s=8 +break +case 6:p=5 +a5=o.pop() +a2=A.R(a5) +if(a2 instanceof A.b2){i=a2 +A.y(i) +A.y(l) +A.y(k) +m=i.a}else{h=a2 +A.y(h) +A.y(l) +A.y(k) +m=1}s=8 +break +case 5:s=2 +break +case 8:a2=A.d(m) +A.d(f.Atomics.store(g,1,a2)) +f.Atomics.notify(g,1,1/0) +s=3 +break +case 4:case 1:return A.p(q,r) +case 2:return A.o(o.at(-1),r)}}) +return A.q($async$S,r)}, +j_(a){t.ei.a(a) +if(this.r.B(0,a))this.dE(a)}, +aT(a){return this.iT(a)}, +iT(a){var s=0,r=A.r(t.m),q,p=2,o=[],n=this,m,l,k,j,i,h,g,f,e,d +var $async$aT=A.t(function(b,c){if(b===1){o.push(c) +s=p}for(;;)switch(s){case 0:e=a.x +if(e!=null){q=e +s=1 +break}m=1 +k=a.r,j=t.m,i=n.r +case 3:p=6 +s=9 +return A.e(A.a7(A.i(k.createSyncAccessHandle()),j),$async$aT) +case 9:h=c +a.shQ(h) +l=h +if(!a.w)i.k(0,a) +g=l +q=g +s=1 +break +p=2 +s=8 +break +case 6:p=5 +d=o.pop() +if(J.aK(m,6))throw A.c(B.bg) +A.y(m) +g=m +if(typeof g!=="number"){q=g.eT() +s=1 +break}m=g+1 +s=8 +break +case 5:s=2 +break +case 8:s=3 +break +case 4:case 1:return A.p(q,r) +case 2:return A.o(o.at(-1),r)}}) +return A.q($async$aT,r)}, +dE(a){var s +try{this.dD(a)}catch(s){}}, +dD(a){var s=a.x +if(s!=null){a.x=null +this.r.B(0,a) +a.w=!1 +s.close()}}} +A.eq.prototype={ +shQ(a){this.x=A.bn(a)}} +A.hF.prototype={ +e3(a,b,c){var s=t.u +return A.i(v.G.IDBKeyRange.bound(A.l([a,c],s),A.l([a,b],s)))}, +iW(a){return this.e3(a,9007199254740992,0)}, +iX(a,b){return this.e3(a,9007199254740992,b)}, +d7(){var s=0,r=A.r(t.H),q=this,p,o +var $async$d7=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:p=new A.v($.n,t.a7) +o=A.i(A.bn(v.G.indexedDB).open(q.b,1)) +o.onupgradeneeded=A.be(new A.k5(o)) +new A.ak(p,t.h1).O(A.uI(o,t.m)) +s=2 +return A.e(p,$async$d7) +case 2:q.a=b +return A.p(null,r)}}) +return A.q($async$d7,r)}, +q(){var s=this.a +if(s!=null)s.close()}, +d6(){var s=0,r=A.r(t.dV),q,p=this,o,n,m,l,k +var $async$d6=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:l=A.ag(t.N,t.S) +k=new A.dk(A.i(A.i(A.i(A.i(p.a.transaction("files","readonly")).objectStore("files")).index("fileName")).openKeyCursor()),t.w) +case 3:s=5 +return A.e(k.l(),$async$d6) +case 5:if(!b){s=4 +break}o=k.a +if(o==null)o=A.K(A.G("Await moveNext() first")) +n=o.key +n.toString +A.w(n) +m=o.primaryKey +m.toString +l.p(0,n,A.d(A.M(m))) +s=3 +break +case 4:q=l +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$d6,r)}, +d_(a){var s=0,r=A.r(t.aV),q,p=this,o +var $async$d_=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:o=A +s=3 +return A.e(A.bG(A.i(A.i(A.i(A.i(p.a.transaction("files","readonly")).objectStore("files")).index("fileName")).getKey(a)),t.W),$async$d_) +case 3:q=o.d(c) +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$d_,r)}, +cW(a){var s=0,r=A.r(t.S),q,p=this,o +var $async$cW=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:o=A +s=3 +return A.e(A.bG(A.i(A.i(A.i(p.a.transaction("files","readwrite")).objectStore("files")).put({name:a,length:0})),t.W),$async$cW) +case 3:q=o.d(c) +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$cW,r)}, +e4(a,b){return A.bG(A.i(A.i(a.objectStore("files")).get(b)),t.mU).cl(new A.k2(b),t.m)}, +bD(a){var s=0,r=A.r(t.E),q,p=this,o,n,m,l,k,j,i,h,g,f,e +var $async$bD=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:e=p.a +e.toString +o=A.i(e.transaction($.oU(),"readonly")) +n=A.i(o.objectStore("blocks")) +s=3 +return A.e(p.e4(o,a),$async$bD) +case 3:m=c +e=A.d(m.length) +l=new Uint8Array(e) +k=A.l([],t.iw) +j=new A.dk(A.i(n.openCursor(p.iW(a))),t.w) +e=t.H,i=t.c +case 4:s=6 +return A.e(j.l(),$async$bD) +case 6:if(!c){s=5 +break}h=j.a +if(h==null)h=A.K(A.G("Await moveNext() first")) +g=i.a(h.key) +if(1<0||1>=g.length){q=A.a(g,1) +s=1 +break}f=A.d(A.M(g[1])) +B.b.k(k,A.kT(new A.k6(h,l,f,Math.min(4096,A.d(m.length)-f)),e)) +s=4 +break +case 5:s=7 +return A.e(A.p5(k,e),$async$bD) +case 7:q=l +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$bD,r)}, +b8(a,b){var s=0,r=A.r(t.H),q=this,p,o,n,m,l,k,j +var $async$b8=A.t(function(c,d){if(c===1)return A.o(d,r) +for(;;)switch(s){case 0:j=q.a +j.toString +p=A.i(j.transaction($.oU(),"readwrite")) +o=A.i(p.objectStore("blocks")) +s=2 +return A.e(q.e4(p,a),$async$b8) +case 2:n=d +j=b.b +m=A.k(j).h("c1<1>") +l=A.aC(new A.c1(j,m),m.h("h.E")) +B.b.hG(l) +j=A.O(l) +s=3 +return A.e(A.p5(new A.I(l,j.h("E<~>(1)").a(new A.k3(new A.k4(o,a),b)),j.h("I<1,E<~>>")),t.H),$async$b8) +case 3:s=b.c!==A.d(n.length)?4:5 +break +case 4:k=new A.dk(A.i(A.i(p.objectStore("files")).openCursor(a)),t.w) +s=6 +return A.e(k.l(),$async$b8) +case 6:s=7 +return A.e(A.bG(A.i(k.gn().update({name:A.w(n.name),length:b.c})),t.X),$async$b8) +case 7:case 5:return A.p(null,r)}}) +return A.q($async$b8,r)}, +bh(a,b,c){var s=0,r=A.r(t.H),q=this,p,o,n,m,l,k +var $async$bh=A.t(function(d,e){if(d===1)return A.o(e,r) +for(;;)switch(s){case 0:k=q.a +k.toString +p=A.i(k.transaction($.oU(),"readwrite")) +o=A.i(p.objectStore("files")) +n=A.i(p.objectStore("blocks")) +s=2 +return A.e(q.e4(p,b),$async$bh) +case 2:m=e +s=A.d(m.length)>c?3:4 +break +case 3:s=5 +return A.e(A.bG(A.i(n.delete(q.iX(b,B.c.J(c,4096)*4096+1))),t.X),$async$bh) +case 5:case 4:l=new A.dk(A.i(o.openCursor(b)),t.w) +s=6 +return A.e(l.l(),$async$bh) +case 6:s=7 +return A.e(A.bG(A.i(l.gn().update({name:A.w(m.name),length:c})),t.X),$async$bh) +case 7:return A.p(null,r)}}) +return A.q($async$bh,r)}, +cY(a){var s=0,r=A.r(t.H),q=this,p,o,n +var $async$cY=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:n=q.a +n.toString +p=A.i(n.transaction(A.l(["files","blocks"],t.s),"readwrite")) +o=q.e3(a,9007199254740992,0) +n=t.X +s=2 +return A.e(A.p5(A.l([A.bG(A.i(A.i(p.objectStore("blocks")).delete(o)),n),A.bG(A.i(A.i(p.objectStore("files")).delete(a)),n)],t.iw),t.H),$async$cY) +case 2:return A.p(null,r)}}) +return A.q($async$cY,r)}} +A.k5.prototype={ +$1(a){var s +A.i(a) +s=A.i(this.a.result) +if(A.d(a.oldVersion)===0){A.i(A.i(s.createObjectStore("files",{autoIncrement:!0})).createIndex("fileName","name",{unique:!0})) +A.i(s.createObjectStore("blocks"))}}, +$S:10} +A.k2.prototype={ +$1(a){A.bn(a) +if(a==null)throw A.c(A.ao(this.a,"fileId","File not found in database")) +else return a}, +$S:66} +A.k6.prototype={ +$0(){var s=0,r=A.r(t.H),q=this,p,o +var $async$$0=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:p=q.a +s=A.l3(p.value,"Blob")?2:4 +break +case 2:s=5 +return A.e(A.ln(A.i(p.value)),$async$$0) +case 5:s=3 +break +case 4:b=t.a.a(p.value) +case 3:o=b +B.e.b1(q.b,q.c,J.dG(o,0,q.d)) +return A.p(null,r)}}) +return A.q($async$$0,r)}, +$S:2} +A.k4.prototype={ +$2(a,b){var s=0,r=A.r(t.H),q=this,p,o,n,m,l,k +var $async$$2=A.t(function(c,d){if(c===1)return A.o(d,r) +for(;;)switch(s){case 0:p=q.a +o=q.b +n=t.u +s=2 +return A.e(A.bG(A.i(p.openCursor(A.i(v.G.IDBKeyRange.only(A.l([o,a],n))))),t.mU),$async$$2) +case 2:m=d +l=t.a.a(B.e.gaV(b)) +k=t.X +s=m==null?3:5 +break +case 3:s=6 +return A.e(A.bG(A.i(p.put(l,A.l([o,a],n))),k),$async$$2) +case 6:s=4 +break +case 5:s=7 +return A.e(A.bG(A.i(m.update(l)),k),$async$$2) +case 7:case 4:return A.p(null,r)}}) +return A.q($async$$2,r)}, +$S:67} +A.k3.prototype={ +$1(a){var s +A.d(a) +s=this.b.b.j(0,a) +s.toString +return this.a.$2(a,s)}, +$S:68} +A.mU.prototype={ +ji(a,b,c){B.e.b1(this.b.hm(a,new A.mV(this,a)),b,c)}, +jr(a,b){var s,r,q,p,o,n,m,l +for(s=b.length,r=0;rp)B.e.b1(s,0,J.dG(B.e.gaV(r),r.byteOffset+p,Math.min(4096,q-p))) +return s}, +$S:69} +A.jx.prototype={} +A.dQ.prototype={ +c_(a){var s=this +if(s.e||s.d.a==null)A.K(A.cN(10)) +if(a.ey(s.w)){s.fM() +return a.d.a}else return A.bs(null,t.H)}, +fM(){var s,r,q=this +if(q.f==null&&!q.w.gD(0)){s=q.w +r=q.f=s.gH(0) +s.B(0,r) +r.d.O(A.uY(r.gdd(),t.H).al(new A.l_(q)))}}, +q(){var s=0,r=A.r(t.H),q,p=this,o,n +var $async$q=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:if(!p.e){o=p.c_(new A.ej(t.M.a(p.d.gb9()),new A.ak(new A.v($.n,t.D),t.F))) +p.e=!0 +q=o +s=1 +break}else{n=p.w +if(!n.gD(0)){q=n.gG(0).d.a +s=1 +break}}case 1:return A.p(q,r)}}) +return A.q($async$q,r)}, +bp(a){var s=0,r=A.r(t.S),q,p=this,o,n +var $async$bp=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:n=p.y +s=n.a4(a)?3:5 +break +case 3:n=n.j(0,a) +n.toString +q=n +s=1 +break +s=4 +break +case 5:s=6 +return A.e(p.d.d_(a),$async$bp) +case 6:o=c +o.toString +n.p(0,a,o) +q=o +s=1 +break +case 4:case 1:return A.p(q,r)}}) +return A.q($async$bp,r)}, +bS(){var s=0,r=A.r(t.H),q=this,p,o,n,m,l,k,j,i,h,g,f +var $async$bS=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:g=q.d +s=2 +return A.e(g.d6(),$async$bS) +case 2:f=b +q.y.aI(0,f) +p=f.gcZ(),p=p.gv(p),o=q.r.d,n=t.oR.h("h") +case 3:if(!p.l()){s=4 +break}m=p.gn() +l=m.a +k=m.b +j=new A.by(new Uint8Array(0),0) +s=5 +return A.e(g.bD(k),$async$bS) +case 5:i=b +m=i.length +j.sm(0,m) +n.a(i) +h=j.b +if(m>h)A.K(A.a5(m,0,h,null,null)) +B.e.M(j.a,0,m,i,0) +o.p(0,l,j) +s=3 +break +case 4:return A.p(null,r)}}) +return A.q($async$bS,r)}, +cn(a,b){return this.r.d.a4(a)?1:0}, +dg(a,b){var s=this +s.r.d.B(0,a) +if(!s.x.B(0,a))s.c_(new A.eg(s,a,new A.ak(new A.v($.n,t.D),t.F)))}, +dh(a){return $.hA().bA("/"+a)}, +b_(a,b){var s,r,q,p=this,o=a.a +if(o==null)o=A.p6(p.b,"/") +s=p.r +r=s.d.a4(o)?1:0 +q=s.b_(new A.fA(o),b) +if(r===0)if((b&8)!==0)p.x.k(0,o) +else p.c_(new A.dj(p,o,new A.ak(new A.v($.n,t.D),t.F))) +return new A.cS(new A.jr(p,q.a,o),0)}, +dj(a){}} +A.l_.prototype={ +$0(){var s=this.a +s.f=null +s.fM()}, +$S:6} +A.jr.prototype={ +eS(a,b){this.b.eS(a,b)}, +geR(){return 0}, +df(){return this.b.d>=2?1:0}, +co(){}, +cp(){return this.b.cp()}, +di(a){this.b.d=a +return null}, +dk(a){}, +cq(a){var s=this,r=s.a +if(r.e||r.d.a==null)A.K(A.cN(10)) +s.b.cq(a) +if(!r.x.I(0,s.c))r.c_(new A.ej(t.M.a(new A.n8(s,a)),new A.ak(new A.v($.n,t.D),t.F)))}, +dl(a){this.b.d=a +return null}, +bi(a,b){var s,r,q,p,o,n,m=this,l=m.a +if(l.e||l.d.a==null)A.K(A.cN(10)) +s=m.c +if(l.x.I(0,s)){m.b.bi(a,b) +return}r=l.r.d.j(0,s) +if(r==null)r=new A.by(new Uint8Array(0),0) +q=J.dG(B.e.gaV(r.a),0,r.b) +m.b.bi(a,b) +p=new Uint8Array(a.length) +B.e.b1(p,0,a) +o=A.l([],t.p8) +n=$.n +B.b.k(o,new A.jx(b,p)) +l.c_(new A.dx(l,s,q,o,new A.ak(new A.v(n,t.D),t.F)))}, +$iea:1} +A.n8.prototype={ +$0(){var s=0,r=A.r(t.H),q,p=this,o,n,m +var $async$$0=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:o=p.a +n=o.a +m=n.d +s=3 +return A.e(n.bp(o.c),$async$$0) +case 3:q=m.bh(0,b,p.b) +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$$0,r)}, +$S:2} +A.ay.prototype={ +ey(a){t.b.a(a) +a.$ti.c.a(this) +a.dX(a.c,this,!1) +return!0}} +A.ej.prototype={ +U(){return this.w.$0()}} +A.eg.prototype={ +ey(a){var s,r,q,p +t.b.a(a) +if(!a.gD(0)){s=a.gG(0) +for(r=this.x;s!=null;)if(s instanceof A.eg)if(s.x===r)return!1 +else s=s.gce() +else if(s instanceof A.dx){q=s.gce() +if(s.x===r){p=s.a +p.toString +p.e9(A.k(s).h("aB.E").a(s))}s=q}else if(s instanceof A.dj){if(s.x===r){r=s.a +r.toString +r.e9(A.k(s).h("aB.E").a(s)) +return!1}s=s.gce()}else break}a.$ti.c.a(this) +a.dX(a.c,this,!1) +return!0}, +U(){var s=0,r=A.r(t.H),q=this,p,o,n +var $async$U=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:p=q.w +o=q.x +s=2 +return A.e(p.bp(o),$async$U) +case 2:n=b +p.y.B(0,o) +s=3 +return A.e(p.d.cY(n),$async$U) +case 3:return A.p(null,r)}}) +return A.q($async$U,r)}} +A.dj.prototype={ +U(){var s=0,r=A.r(t.H),q=this,p,o,n,m +var $async$U=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:p=q.w +o=q.x +n=p.y +m=o +s=2 +return A.e(p.d.cW(o),$async$U) +case 2:n.p(0,m,b) +return A.p(null,r)}}) +return A.q($async$U,r)}} +A.dx.prototype={ +ey(a){var s,r +t.b.a(a) +s=a.b===0?null:a.gG(0) +for(r=this.x;s!=null;)if(s instanceof A.dx)if(s.x===r){B.b.aI(s.z,this.z) +return!1}else s=s.gce() +else if(s instanceof A.dj){if(s.x===r)break +s=s.gce()}else break +a.$ti.c.a(this) +a.dX(a.c,this,!1) +return!0}, +U(){var s=0,r=A.r(t.H),q=this,p,o,n,m,l,k +var $async$U=A.t(function(a,b){if(a===1)return A.o(b,r) +for(;;)switch(s){case 0:m=q.y +l=new A.mU(m,A.ag(t.S,t.E),m.length) +for(m=q.z,p=m.length,o=0;o"));s.l();)s.d.close()}} +A.lF.prototype={ +$1(a){var s=0,r=A.r(t.m),q,p=this,o,n,m +var $async$$1=A.t(function(b,c){if(b===1)return A.o(c,r) +for(;;)switch(s){case 0:o=t.m +m=A +s=3 +return A.e(A.a7(A.i(p.a.getFileHandle(a,{create:!0})),o),$async$$1) +case 3:n=m.i(c.createSyncAccessHandle()) +s=4 +return A.e(A.a7(n,o),$async$$1) +case 4:q=c +s=1 +break +case 1:return A.p(q,r)}}) +return A.q($async$$1,r)}, +$S:70} +A.jG.prototype={ +eK(a,b){return A.kJ(this.c,a,{at:b})}, +df(){return this.e>=2?1:0}, +co(){var s=this +s.c.flush() +if(s.d)s.a.dY(s.b,!1)}, +cp(){return A.d(this.c.getSize())}, +di(a){this.e=a}, +dk(a){this.c.flush()}, +cq(a){this.c.truncate(a)}, +dl(a){this.e=a}, +bi(a,b){if(A.p4(this.c,a,{at:b})q.c)throw A.c(A.cN(14)) +s=A.c3(t.a.a(q.d.buffer),0,null) +r=q.e +B.e.b1(s,r,p) +o=r+o +s.$flags&2&&A.C(s) +if(!(o>=0&&o=q)return A.a(r,0) +r[0]=A.qN(s) +if(1>=q)return A.a(r,1) +r[1]=A.qL(s) +if(2>=q)return A.a(r,2) +r[2]=A.qK(s) +if(3>=q)return A.a(r,3) +r[3]=A.qJ(s) +if(4>=q)return A.a(r,4) +r[4]=A.qM(s)-1 +if(5>=q)return A.a(r,5) +r[5]=A.qO(s)-1900 +p=B.c.af(A.vh(s),7) +if(6>=q)return A.a(r,6) +r[6]=p}, +$S:80} +A.nL.prototype={ +$2(a,b){A.d(a) +A.d(b) +return this.a.d.r.j(0,a).gkm().$1(b)}, +$S:4} +A.nM.prototype={ +$3(a,b,c){A.d(a) +A.d(b) +A.d(c) +return this.a.d.r.j(0,a).gkl().$2(b,c)}, +$S:21} +A.kq.prototype={ +k7(a){var s=this.a++ +this.b.p(0,s,a) +return s}, +sjJ(a){this.w=t.hC.a(a)}, +sjH(a){this.x=t.jc.a(a)}, +sjI(a){this.y=t.Z.a(a)}} +A.iD.prototype={} +A.bF.prototype={ +hu(){var s=this.a,r=A.O(s) +return A.r2(new A.f9(s,r.h("h(1)").a(new A.kd()),r.h("f9<1,S>")),null)}, +i(a){var s=this.a,r=A.O(s) +return new A.I(s,r.h("j(1)").a(new A.kb(new A.I(s,r.h("b(1)").a(new A.kc()),r.h("I<1,b>")).eq(0,0,B.x,t.S))),r.h("I<1,j>")).au(0,u.q)}, +$ia4:1} +A.k8.prototype={ +$1(a){return A.w(a).length!==0}, +$S:3} +A.kd.prototype={ +$1(a){return t.i.a(a).gc6()}, +$S:81} +A.kc.prototype={ +$1(a){var s=t.i.a(a).gc6(),r=A.O(s) +return new A.I(s,r.h("b(1)").a(new A.ka()),r.h("I<1,b>")).eq(0,0,B.x,t.S)}, +$S:82} +A.ka.prototype={ +$1(a){return t.B.a(a).gbz().length}, +$S:33} +A.kb.prototype={ +$1(a){var s=t.i.a(a).gc6(),r=A.O(s) +return new A.I(s,r.h("j(1)").a(new A.k9(this.a)),r.h("I<1,j>")).c8(0)}, +$S:84} +A.k9.prototype={ +$1(a){t.B.a(a) +return B.a.hj(a.gbz(),this.a)+" "+A.y(a.geE())+"\n"}, +$S:34} +A.S.prototype={ +geC(){var s=this.a +if(s.gZ()==="data")return"data:..." +return $.jV().k6(s)}, +gbz(){var s,r=this,q=r.b +if(q==null)return r.geC() +s=r.c +if(s==null)return r.geC()+" "+A.y(q) +return r.geC()+" "+A.y(q)+":"+A.y(s)}, +i(a){return this.gbz()+" in "+A.y(this.d)}, +geE(){return this.d}} +A.kR.prototype={ +$0(){var s,r,q,p,o,n,m,l=null,k=this.a +if(k==="...")return new A.S(A.au(l,l,l,l),l,l,"...") +s=$.ui().aa(k) +if(s==null)return new A.bQ(A.au(l,"unparsed",l,l),k) +k=s.b +if(1>=k.length)return A.a(k,1) +r=k[1] +r.toString +q=$.u1() +r=A.bD(r,q,"") +p=A.bD(r,"","") +if(2>=k.length)return A.a(k,2) +r=k[2] +q=r +q.toString +if(B.a.A(q,"=k.length)return A.a(k,3) +n=k[3].split(":") +k=n.length +m=k>1?A.bC(n[1],l):l +return new A.S(o,m,k>2?A.bC(n[2],l):l,p)}, +$S:12} +A.kP.prototype={ +$0(){var s,r,q,p,o,n,m="",l=this.a,k=$.uh().aa(l) +if(k!=null){s=k.aM("member") +l=k.aM("uri") +l.toString +r=A.i4(l) +l=k.aM("index") +l.toString +q=k.aM("offset") +q.toString +p=A.bC(q,16) +if(!(s==null))l=s +return new A.S(r,1,p+1,l)}k=$.ud().aa(l) +if(k!=null){l=new A.kQ(l) +q=k.b +o=q.length +if(2>=o)return A.a(q,2) +n=q[2] +if(n!=null){o=n +o.toString +q=q[1] +q.toString +q=A.bD(q,"",m) +q=A.bD(q,"Anonymous function",m) +return l.$2(o,A.bD(q,"(anonymous function)",m))}else{if(3>=o)return A.a(q,3) +q=q[3] +q.toString +return l.$2(q,m)}}return new A.bQ(A.au(null,"unparsed",null,null),l)}, +$S:12} +A.kQ.prototype={ +$2(a,b){var s,r,q,p,o,n=null,m=$.uc(),l=m.aa(a) +for(;l!=null;a=s){s=l.b +if(1>=s.length)return A.a(s,1) +s=s[1] +s.toString +l=m.aa(s)}if(a==="native")return new A.S(A.bR("native"),n,n,b) +r=$.ue().aa(a) +if(r==null)return new A.bQ(A.au(n,"unparsed",n,n),this.a) +m=r.b +if(1>=m.length)return A.a(m,1) +s=m[1] +s.toString +q=A.i4(s) +if(2>=m.length)return A.a(m,2) +s=m[2] +s.toString +p=A.bC(s,n) +if(3>=m.length)return A.a(m,3) +o=m[3] +return new A.S(q,p,o!=null?A.bC(o,n):n,b)}, +$S:87} +A.kM.prototype={ +$0(){var s,r,q,p,o=null,n=this.a,m=$.u2().aa(n) +if(m==null)return new A.bQ(A.au(o,"unparsed",o,o),n) +n=m.b +if(1>=n.length)return A.a(n,1) +s=n[1] +s.toString +r=A.bD(s,"/<","") +if(2>=n.length)return A.a(n,2) +s=n[2] +s.toString +q=A.i4(s) +if(3>=n.length)return A.a(n,3) +n=n[3] +n.toString +p=A.bC(n,o) +return new A.S(q,p,o,r.length===0||r==="anonymous"?"":r)}, +$S:12} +A.kN.prototype={ +$0(){var s,r,q,p,o,n,m,l,k=null,j=this.a,i=$.u4().aa(j) +if(i!=null){s=i.b +if(3>=s.length)return A.a(s,3) +r=s[3] +q=r +q.toString +if(B.a.I(q," line "))return A.uQ(j) +j=r +j.toString +p=A.i4(j) +j=s.length +if(1>=j)return A.a(s,1) +o=s[1] +if(o!=null){if(2>=j)return A.a(s,2) +j=s[2] +j.toString +o+=B.b.c8(A.bi(B.a.eg("/",j).gm(0),".",!1,t.N)) +if(o==="")o="" +o=B.a.hr(o,$.u9(),"")}else o="" +if(4>=s.length)return A.a(s,4) +j=s[4] +if(j==="")n=k +else{j=j +j.toString +n=A.bC(j,k)}if(5>=s.length)return A.a(s,5) +j=s[5] +if(j==null||j==="")m=k +else{j=j +j.toString +m=A.bC(j,k)}return new A.S(p,n,m,o)}i=$.u6().aa(j) +if(i!=null){j=i.aM("member") +j.toString +s=i.aM("uri") +s.toString +p=A.i4(s) +s=i.aM("index") +s.toString +r=i.aM("offset") +r.toString +l=A.bC(r,16) +if(!(j.length!==0))j=s +return new A.S(p,1,l+1,j)}i=$.ua().aa(j) +if(i!=null){j=i.aM("member") +j.toString +return new A.S(A.au(k,"wasm code",k,k),k,k,j)}return new A.bQ(A.au(k,"unparsed",k,k),j)}, +$S:12} +A.kO.prototype={ +$0(){var s,r,q,p,o=null,n=this.a,m=$.u7().aa(n) +if(m==null)throw A.c(A.ap("Couldn't parse package:stack_trace stack trace line '"+n+"'.",o,o)) +n=m.b +if(1>=n.length)return A.a(n,1) +s=n[1] +if(s==="data:...")r=A.ra("") +else{s=s +s.toString +r=A.bR(s)}if(r.gZ()===""){s=$.jV() +r=s.hv(s.fW(s.a.d8(A.pI(r)),o,o,o,o,o,o,o,o,o,o,o,o,o,o))}if(2>=n.length)return A.a(n,2) +s=n[2] +if(s==null)q=o +else{s=s +s.toString +q=A.bC(s,o)}if(3>=n.length)return A.a(n,3) +s=n[3] +if(s==null)p=o +else{s=s +s.toString +p=A.bC(s,o)}if(4>=n.length)return A.a(n,4) +return new A.S(r,q,p,n[4])}, +$S:12} +A.ii.prototype={ +gfU(){var s,r=this,q=r.b +if(q===$){s=r.a.$0() +r.b!==$&&A.q1() +r.b=s +q=s}return q}, +gc6(){return this.gfU().gc6()}, +i(a){return this.gfU().i(0)}, +$ia4:1, +$ia6:1} +A.a6.prototype={ +i(a){var s=this.a,r=A.O(s) +return new A.I(s,r.h("j(1)").a(new A.lY(new A.I(s,r.h("b(1)").a(new A.lZ()),r.h("I<1,b>")).eq(0,0,B.x,t.S))),r.h("I<1,j>")).c8(0)}, +$ia4:1, +gc6(){return this.a}} +A.lW.prototype={ +$0(){return A.r6(this.a.i(0))}, +$S:88} +A.lX.prototype={ +$1(a){return A.w(a).length!==0}, +$S:3} +A.lV.prototype={ +$1(a){return!B.a.A(A.w(a),$.ug())}, +$S:3} +A.lU.prototype={ +$1(a){return A.w(a)!=="\tat "}, +$S:3} +A.lS.prototype={ +$1(a){A.w(a) +return a.length!==0&&a!=="[native code]"}, +$S:3} +A.lT.prototype={ +$1(a){return!B.a.A(A.w(a),"=====")}, +$S:3} +A.lZ.prototype={ +$1(a){return t.B.a(a).gbz().length}, +$S:33} +A.lY.prototype={ +$1(a){t.B.a(a) +if(a instanceof A.bQ)return a.i(0)+"\n" +return B.a.hj(a.gbz(),this.a)+" "+A.y(a.geE())+"\n"}, +$S:34} +A.bQ.prototype={ +i(a){return this.w}, +$iS:1, +gbz(){return"unparsed"}, +geE(){return this.w}} +A.f_.prototype={ +sjf(a){this.c=this.$ti.h("aT<1>?").a(a)}} +A.fS.prototype={ +P(a,b,c,d){var s,r +this.$ti.h("~(1)?").a(a) +t.Z.a(c) +s=this.b +if(s.d){a=null +d=null}r=this.a.P(a,b,c,d) +if(!s.d)s.sjf(r) +return r}, +aY(a,b,c){return this.P(a,null,b,c)}, +eD(a,b){return this.P(a,null,b,null)}} +A.fR.prototype={ +q(){var s,r=this.hK(),q=this.b +q.d=!0 +s=q.c +if(s!=null){s.cc(null) +s.eH(null)}return r}} +A.fb.prototype={ +ghJ(){var s=this.b +s===$&&A.N() +return new A.ax(s,A.k(s).h("ax<1>"))}, +ghE(){var s=this.a +s===$&&A.N() +return s}, +hS(a,b,c,d){var s=this,r=s.$ti,q=r.h("el<1>").a(new A.el(a,s,new A.ai(new A.v($.n,t.D),t.h),!0,d.h("el<0>"))) +s.a!==$&&A.q2() +s.a=q +r=r.h("e7<1>").a(A.fC(null,new A.kY(c,s,d),!0,d)) +s.b!==$&&A.q2() +s.b=r}, +iR(){var s,r +this.d=!0 +s=this.c +if(s!=null)s.K() +r=this.b +r===$&&A.N() +r.q()}} +A.kY.prototype={ +$0(){var s,r,q=this.b +if(q.d)return +s=this.a.a +r=q.b +r===$&&A.N() +q.c=s.aY(this.c.h("~(0)").a(r.gjp(r)),new A.kX(q),r.gfX())}, +$S:0} +A.kX.prototype={ +$0(){var s=this.a,r=s.a +r===$&&A.N() +r.iS() +s=s.b +s===$&&A.N() +s.q()}, +$S:0} +A.el.prototype={ +k(a,b){var s,r=this +r.$ti.c.a(b) +if(r.e)throw A.c(A.G("Cannot add event after closing.")) +if(r.d)return +s=r.a +s.a.k(0,s.$ti.c.a(b))}, +a3(a,b){if(this.e)throw A.c(A.G("Cannot add event after closing.")) +if(this.d)return +this.ix(a,b)}, +ix(a,b){this.a.a.a3(a,b) +return}, +q(){var s=this +if(s.e)return s.c.a +s.e=!0 +if(!s.d){s.b.iR() +s.c.O(s.a.a.q())}return s.c.a}, +iS(){this.d=!0 +var s=this.c +if((s.a.a&30)===0)s.aW() +return}, +$ial:1, +$ibj:1} +A.iM.prototype={} +A.e6.prototype={$ipi:1} +A.bP.prototype={ +gm(a){return this.b}, +j(a,b){var s +if(b>=this.b)throw A.c(A.qw(b,this)) +s=this.a +if(!(b>=0&&b=s.b)throw A.c(A.qw(b,s)) +B.e.p(s.a,b,c)}, +sm(a,b){var s,r,q,p,o=this,n=o.b +if(b=0&&qn){if(n===0)p=new Uint8Array(b) +else p=o.ih(b) +B.e.ag(p,0,o.b,o.a) +o.a=p}}o.b=b}, +ih(a){var s=this.a.length*2 +if(a!=null&&s").a(d) +s=this.b +if(c>s)throw A.c(A.a5(c,0,s,null,null)) +s=this.a +if(d instanceof A.by)B.e.M(s,b,c,d.a,e) +else B.e.M(s,b,c,d,e)}, +ag(a,b,c,d){return this.M(0,b,c,d,0)}} +A.js.prototype={} +A.by.prototype={} +A.p3.prototype={} +A.fV.prototype={ +P(a,b,c,d){var s=this.$ti +s.h("~(1)?").a(a) +t.Z.a(c) +return A.aU(this.a,this.b,a,!1,s.c)}, +aY(a,b,c){return this.P(a,null,b,c)}} +A.fW.prototype={ +K(){var s=this,r=A.bs(null,t.H) +if(s.b==null)return r +s.ea() +s.d=s.b=null +return r}, +cc(a){var s,r=this +r.$ti.h("~(1)?").a(a) +if(r.b==null)throw A.c(A.G("Subscription has been canceled.")) +r.ea() +if(a==null)s=null +else{s=A.th(new A.mS(a),t.m) +s=s==null?null:A.be(s)}r.d=s +r.e8()}, +eH(a){}, +bC(){if(this.b==null)return;++this.a +this.ea()}, +be(){var s=this +if(s.b==null||s.a<=0)return;--s.a +s.e8()}, +e8(){var s=this,r=s.d +if(r!=null&&s.a<=0)s.b.addEventListener(s.c,r,!1)}, +ea(){var s=this.d +if(s!=null)this.b.removeEventListener(this.c,s,!1)}, +$iaT:1} +A.mR.prototype={ +$1(a){return this.a.$1(A.i(a))}, +$S:1} +A.mS.prototype={ +$1(a){return this.a.$1(A.i(a))}, +$S:1};(function aliases(){var s=J.cw.prototype +s.hM=s.i +s=A.dh.prototype +s.hO=s.bJ +s=A.Y.prototype +s.ds=s.aP +s.eZ=s.a9 +s.f_=s.bo +s=A.ey.prototype +s.hP=s.eh +s=A.z.prototype +s.eY=s.M +s=A.h.prototype +s.hL=s.hF +s=A.dN.prototype +s.hK=s.q +s=A.cI.prototype +s.hN=s.q})();(function installTearOffs(){var s=hunkHelpers._static_2,r=hunkHelpers._static_1,q=hunkHelpers._static_0,p=hunkHelpers.installStaticTearOff,o=hunkHelpers._instance_0u,n=hunkHelpers.installInstanceTearOff,m=hunkHelpers._instance_2u,l=hunkHelpers._instance_1i,k=hunkHelpers._instance_1u +s(J,"wS","v2",89) +r(A,"xu","vN",22) +r(A,"xv","vO",22) +r(A,"xw","vP",22) +q(A,"tk","xn",0) +r(A,"xx","x5",15) +s(A,"xy","x7",7) +q(A,"tj","x6",0) +p(A,"xE",5,null,["$5"],["xg"],91,0) +p(A,"xJ",4,null,["$1$4","$4"],["ov",function(a,b,c,d){return A.ov(a,b,c,d,t.z)}],92,0) +p(A,"xL",5,null,["$2$5","$5"],["ow",function(a,b,c,d,e){var i=t.z +return A.ow(a,b,c,d,e,i,i)}],93,0) +p(A,"xK",6,null,["$3$6"],["pJ"],94,0) +p(A,"xH",4,null,["$1$4","$4"],["ta",function(a,b,c,d){return A.ta(a,b,c,d,t.z)}],95,0) +p(A,"xI",4,null,["$2$4","$4"],["tb",function(a,b,c,d){var i=t.z +return A.tb(a,b,c,d,i,i)}],96,0) +p(A,"xG",4,null,["$3$4","$4"],["t9",function(a,b,c,d){var i=t.z +return A.t9(a,b,c,d,i,i,i)}],97,0) +p(A,"xC",5,null,["$5"],["xf"],98,0) +p(A,"xM",4,null,["$4"],["ox"],99,0) +p(A,"xB",5,null,["$5"],["xe"],100,0) +p(A,"xA",5,null,["$5"],["xd"],101,0) +p(A,"xF",4,null,["$4"],["xh"],102,0) +r(A,"xz","x9",103) +p(A,"xD",5,null,["$5"],["t8"],104,0) +var j +o(j=A.bV.prototype,"gbP","an",0) +o(j,"gbQ","ao",0) +n(A.di.prototype,"gjy",0,1,null,["$2","$1"],["bx","aJ"],32,0,0) +m(A.v.prototype,"gdF","i8",7) +l(j=A.dt.prototype,"gjp","k",8) +n(j,"gfX",0,1,null,["$2","$1"],["a3","jq"],32,0,0) +o(j=A.cd.prototype,"gbP","an",0) +o(j,"gbQ","ao",0) +o(j=A.Y.prototype,"gbP","an",0) +o(j,"gbQ","ao",0) +o(A.eh.prototype,"gfv","iQ",0) +k(j=A.du.prototype,"giK","iL",8) +m(j,"giO","iP",7) +o(j,"giM","iN",0) +o(j=A.ei.prototype,"gbP","an",0) +o(j,"gbQ","ao",0) +k(j,"gdQ","dR",8) +m(j,"gdU","dV",38) +o(j,"gdS","dT",0) +o(j=A.eu.prototype,"gbP","an",0) +o(j,"gbQ","ao",0) +k(j,"gdQ","dR",8) +m(j,"gdU","dV",7) +o(j,"gdS","dT",0) +k(A.ew.prototype,"gjv","eh","P<2>(f?)") +r(A,"xQ","vK",9) +p(A,"yh",2,null,["$1$2","$2"],["tt",function(a,b){return A.tt(a,b,t.q)}],105,0) +r(A,"yj","yq",5) +r(A,"yi","yp",5) +r(A,"yg","xR",5) +r(A,"yk","yw",5) +r(A,"yd","xs",5) +r(A,"ye","xt",5) +r(A,"yf","xN",5) +k(A.f5.prototype,"giz","iA",8) +k(A.hW.prototype,"gii","dI",14) +k(A.j6.prototype,"gjk","cI",14) +r(A,"zJ","rZ",20) +r(A,"zH","rX",20) +r(A,"zI","rY",20) +r(A,"tv","x8",26) +r(A,"tw","xb",108) +r(A,"tu","wI",109) +o(A.ec.prototype,"gb9","q",0) +r(A,"cl","v9",110) +r(A,"bo","va",111) +r(A,"q0","vb",112) +k(A.fH.prototype,"giZ","j_",65) +o(A.hF.prototype,"gb9","q",0) +o(A.dQ.prototype,"gb9","q",2) +o(A.ej.prototype,"gdd","U",0) +o(A.eg.prototype,"gdd","U",2) +o(A.dj.prototype,"gdd","U",2) +o(A.dx.prototype,"gdd","U",2) +o(A.e4.prototype,"gb9","q",0) +r(A,"xZ","uX",16) +r(A,"tn","uW",16) +r(A,"xX","uU",16) +r(A,"xY","uV",16) +r(A,"yA","vD",31) +r(A,"yz","vC",31)})();(function inheritance(){var s=hunkHelpers.mixin,r=hunkHelpers.inherit,q=hunkHelpers.inheritMany +r(A.f,null) +q(A.f,[A.pa,J.ia,A.fw,J.eS,A.h,A.eZ,A.a1,A.z,A.aM,A.lq,A.b9,A.d6,A.dg,A.fa,A.fE,A.fx,A.fz,A.f7,A.fK,A.d4,A.aN,A.cM,A.iN,A.cR,A.f0,A.h_,A.m0,A.iu,A.f8,A.ha,A.X,A.l8,A.fi,A.bt,A.fh,A.cv,A.ep,A.ja,A.e8,A.jI,A.mJ,A.jM,A.bv,A.jp,A.ob,A.hg,A.fL,A.hf,A.a0,A.P,A.Y,A.dh,A.di,A.cg,A.v,A.jb,A.fD,A.dt,A.jJ,A.jc,A.dv,A.cf,A.jk,A.bB,A.eh,A.du,A.fU,A.em,A.Z,A.eE,A.eF,A.jO,A.fZ,A.e3,A.jv,A.dq,A.h1,A.aB,A.h3,A.co,A.cp,A.oj,A.ho,A.aa,A.jo,A.cq,A.aX,A.jl,A.iw,A.fB,A.jn,A.aO,A.i9,A.aQ,A.L,A.ez,A.aF,A.hl,A.iU,A.bl,A.i1,A.it,A.ju,A.dN,A.hV,A.ij,A.is,A.iS,A.f5,A.jy,A.hQ,A.hX,A.hW,A.cx,A.aZ,A.cs,A.cD,A.bI,A.cF,A.cr,A.cH,A.cE,A.c5,A.bN,A.iG,A.et,A.j6,A.bO,A.cn,A.eX,A.aw,A.eV,A.dI,A.lj,A.m_,A.dL,A.e0,A.iA,A.fp,A.li,A.bK,A.kt,A.bz,A.hY,A.e2,A.m7,A.ly,A.hR,A.er,A.es,A.lR,A.lg,A.fq,A.cJ,A.cZ,A.iB,A.iK,A.iC,A.lm,A.ft,A.d9,A.cC,A.bY,A.hT,A.iJ,A.dK,A.cc,A.hI,A.hS,A.jE,A.jA,A.ct,A.b2,A.fA,A.dk,A.lo,A.bL,A.c2,A.jz,A.fH,A.eq,A.hF,A.mU,A.jx,A.jr,A.j0,A.n9,A.kq,A.iD,A.bF,A.S,A.ii,A.a6,A.bQ,A.e6,A.el,A.iM,A.p3,A.fW]) +q(J.ia,[J.ic,J.fe,J.ff,J.aP,J.d5,J.dT,J.cu]) +q(J.ff,[J.cw,J.A,A.cy,A.fk]) +q(J.cw,[J.ix,J.de,J.bJ]) +r(J.ib,A.fw) +r(J.l4,J.A) +q(J.dT,[J.fd,J.id]) +q(A.h,[A.cQ,A.x,A.aR,A.bd,A.f9,A.dd,A.c7,A.fy,A.fJ,A.c_,A.dp,A.j9,A.jH,A.eA,A.dV]) +q(A.cQ,[A.d_,A.hp]) +r(A.fT,A.d_) +r(A.fQ,A.hp) +r(A.as,A.fQ) +q(A.a1,[A.dU,A.ca,A.ig,A.iR,A.iF,A.jm,A.hD,A.bq,A.fF,A.iQ,A.b0,A.hP]) +q(A.z,[A.e9,A.iZ,A.eb,A.bP]) +r(A.hM,A.e9) +q(A.aM,[A.hK,A.i8,A.hL,A.iO,A.oJ,A.oL,A.mv,A.mu,A.om,A.o6,A.o8,A.o7,A.kV,A.n5,A.lP,A.lO,A.lM,A.lK,A.o5,A.mQ,A.mP,A.o0,A.o_,A.n7,A.ld,A.mG,A.oe,A.oN,A.oR,A.oS,A.oD,A.kz,A.kA,A.kB,A.lv,A.lw,A.lx,A.lt,A.mp,A.mm,A.mn,A.mk,A.mq,A.mo,A.lk,A.kH,A.oy,A.l6,A.l7,A.lc,A.mh,A.mi,A.kv,A.lE,A.oB,A.oQ,A.kC,A.lp,A.kh,A.ki,A.kj,A.lD,A.lz,A.lC,A.lA,A.lB,A.ko,A.kp,A.oz,A.mt,A.lH,A.oG,A.k1,A.mL,A.mM,A.kf,A.kg,A.kk,A.kl,A.km,A.k5,A.k2,A.k3,A.lF,A.np,A.nq,A.nr,A.nC,A.nN,A.nO,A.nR,A.nS,A.nT,A.ns,A.nz,A.nA,A.nB,A.nD,A.nE,A.nF,A.nG,A.nH,A.nI,A.nJ,A.nM,A.k8,A.kd,A.kc,A.ka,A.kb,A.k9,A.lX,A.lV,A.lU,A.lS,A.lT,A.lZ,A.lY,A.mR,A.mS]) +q(A.hK,[A.oP,A.mw,A.mx,A.oa,A.o9,A.kU,A.kS,A.mX,A.n1,A.n0,A.mZ,A.mY,A.n4,A.n3,A.n2,A.lQ,A.lN,A.lL,A.lJ,A.o4,A.o3,A.mI,A.mH,A.nV,A.op,A.oq,A.mO,A.mN,A.nZ,A.nY,A.ou,A.oi,A.oh,A.ky,A.lr,A.ls,A.lu,A.mr,A.ms,A.ml,A.oT,A.my,A.mD,A.mB,A.mC,A.mA,A.mz,A.o1,A.o2,A.kx,A.kw,A.mT,A.la,A.lb,A.mj,A.ku,A.kG,A.kD,A.kE,A.kF,A.kr,A.k_,A.k0,A.k6,A.mV,A.l_,A.n8,A.ng,A.nf,A.ne,A.nd,A.no,A.nn,A.nm,A.nl,A.nk,A.nj,A.ni,A.nh,A.nc,A.nb,A.na,A.kR,A.kP,A.kM,A.kN,A.kO,A.lW,A.kY,A.kX]) +q(A.x,[A.Q,A.d2,A.c1,A.fj,A.fg,A.dn,A.h2]) +q(A.Q,[A.dc,A.I,A.fv]) +r(A.d1,A.aR) +r(A.f6,A.dd) +r(A.dO,A.c7) +r(A.d0,A.c_) +r(A.ds,A.cR) +q(A.ds,[A.an,A.cS]) +r(A.f1,A.f0) +r(A.dR,A.i8) +r(A.fn,A.ca) +q(A.iO,[A.iL,A.dJ]) +q(A.X,[A.c0,A.dm]) +q(A.hL,[A.l5,A.oK,A.on,A.oA,A.kW,A.n6,A.oo,A.kZ,A.le,A.mF,A.m5,A.ma,A.m9,A.m8,A.ks,A.md,A.mc,A.k4,A.nP,A.nQ,A.nt,A.nu,A.nv,A.nw,A.nx,A.ny,A.nK,A.nL,A.kQ]) +r(A.dX,A.cy) +q(A.fk,[A.d7,A.aD]) +q(A.aD,[A.h5,A.h7]) +r(A.h6,A.h5) +r(A.cz,A.h6) +r(A.h8,A.h7) +r(A.bb,A.h8) +q(A.cz,[A.il,A.im]) +q(A.bb,[A.io,A.dY,A.ip,A.iq,A.ir,A.fl,A.cA]) +r(A.eC,A.jm) +q(A.P,[A.ex,A.fY,A.fO,A.eU,A.fS,A.fV]) +r(A.ax,A.ex) +r(A.fP,A.ax) +q(A.Y,[A.cd,A.ei,A.eu]) +r(A.bV,A.cd) +r(A.he,A.dh) +q(A.di,[A.ai,A.ak]) +q(A.dt,[A.ee,A.eB]) +q(A.cf,[A.ce,A.ef]) +r(A.h4,A.fY) +r(A.ey,A.fD) +r(A.ew,A.ey) +q(A.eE,[A.ji,A.jD]) +r(A.en,A.dm) +r(A.h9,A.e3) +r(A.h0,A.h9) +q(A.co,[A.i_,A.hG,A.mW]) +q(A.i_,[A.hB,A.iX]) +q(A.cp,[A.jL,A.hH,A.iY]) +r(A.hC,A.jL) +q(A.bq,[A.e1,A.fc]) +r(A.jj,A.hl) +q(A.cx,[A.at,A.bw,A.bH,A.bX]) +q(A.jl,[A.dZ,A.cK,A.c4,A.df,A.c8,A.cB,A.bS,A.bA,A.iv,A.ah,A.d3]) +r(A.f2,A.lj) +r(A.lf,A.m_) +q(A.dL,[A.fm,A.hZ]) +q(A.aw,[A.bU,A.eo,A.ih]) +q(A.bU,[A.jK,A.f3,A.jd,A.fX]) +r(A.hb,A.jK) +r(A.jt,A.eo) +r(A.cI,A.f2) +r(A.ev,A.hZ) +q(A.bz,[A.hN,A.ed,A.cG,A.da,A.e5,A.f4]) +q(A.hN,[A.c6,A.dM]) +r(A.jh,A.iA) +r(A.j1,A.f3) +r(A.jN,A.cI) +r(A.dS,A.lR) +q(A.dS,[A.iy,A.iW,A.j7]) +q(A.bY,[A.i2,A.dP]) +r(A.db,A.dK) +r(A.hJ,A.cc) +q(A.hJ,[A.i5,A.ec,A.dQ,A.e4]) +q(A.hI,[A.jq,A.j3,A.jG]) +r(A.jB,A.hS) +r(A.jC,A.jB) +r(A.iE,A.jC) +r(A.jF,A.jE) +r(A.bc,A.jF) +r(A.j4,A.iB) +r(A.j2,A.iC) +r(A.mg,A.lm) +r(A.j5,A.ft) +r(A.cO,A.d9) +r(A.bT,A.cC) +r(A.fI,A.iJ) +q(A.c2,[A.bh,A.a2]) +r(A.ba,A.a2) +r(A.ay,A.aB) +q(A.ay,[A.ej,A.eg,A.dj,A.dx]) +q(A.e6,[A.f_,A.fb]) +r(A.fR,A.dN) +r(A.js,A.bP) +r(A.by,A.js) +s(A.e9,A.cM) +s(A.hp,A.z) +s(A.h5,A.z) +s(A.h6,A.aN) +s(A.h7,A.z) +s(A.h8,A.aN) +s(A.ee,A.jc) +s(A.eB,A.jJ) +s(A.jB,A.z) +s(A.jC,A.is) +s(A.jE,A.iS) +s(A.jF,A.X)})() +var v={G:typeof self!="undefined"?self:globalThis,typeUniverse:{eC:new Map(),tR:{},eT:{},tPV:{},sEA:[]},mangledGlobalNames:{b:"int",D:"double",ar:"num",j:"String",J:"bool",L:"Null",m:"List",f:"Object",a3:"Map",B:"JSObject"},mangledNames:{},types:["~()","~(B)","E<~>()","J(j)","b(b,b)","D(ar)","L()","~(f,a4)","~(f?)","j(j)","L(B)","L(b)","S()","b(b)","f?(f?)","~(@)","S(j)","L(b,b,b)","E()","~(B?,m?)","j(b)","b(b,b,b)","~(~())","b?(b)","J(~)","L(@)","ar?(m)","b(b,b,b,aP)","@()","b(b,b,b,b,b)","b(b,b,b,b)","a6(j)","~(f[a4?])","b(S)","j(S)","J()","E()","E()","~(@,a4)","~(@,@)","L(@,a4)","b()","E()","a3(m)","b(m)","~(b,@)","L(aw)","E(~)","L(~())","@(@,j)","0&(j,b?)","J(b)","B(A)","e2()","E()","E()","~(al)","~(J,J,J,m<+(bA,j)>)","L(f,a4)","j(j?)","j(f?)","~(d9,m)","~(bY)","~(j,a3)","~(j,f?)","~(eq)","B(B?)","E<~>(b,b1)","E<~>(b)","b1()","E(j)","@(j)","E<~>(at)","L(J)","L(~)","L(b,b)","bM?/(at)","b(b,aP)","@(@)","L(b,b,b,b,aP)","L(aP,b)","m(a6)","b(a6)","E()","j(a6)","cn<@>?()","at()","S(j,j)","a6()","b(@,@)","bw()","~(u?,H?,u,f,a4)","0^(u?,H?,u,0^())","0^(u?,H?,u,0^(1^),1^)","0^(u?,H?,u,0^(1^,2^),1^,2^)","0^()(u,H,u,0^())","0^(1^)(u,H,u,0^(1^))","0^(1^,2^)(u,H,u,0^(1^,2^))","a0?(u,H,u,f,a4?)","~(u?,H?,u,~())","bx(u,H,u,aX,~())","bx(u,H,u,aX,~(bx))","~(u,H,u,j)","~(j)","u(u?,H?,u,j8?,a3?)","0^(0^,0^)","bI()","m(A)","J?(m)","J?(m<@>)","bh(bL)","a2(bL)","ba(bL)","bO(f?)","~(f?,f?)"],interceptorsByTag:null,leafTags:null,arrayRti:Symbol("$ti"),rttc:{"2;":(a,b)=>c=>c instanceof A.an&&a.b(c.a)&&b.b(c.b),"2;file,outFlags":(a,b)=>c=>c instanceof A.cS&&a.b(c.a)&&b.b(c.b)}} +A.we(v.typeUniverse,JSON.parse('{"bJ":"cw","ix":"cw","de":"cw","yM":"cy","A":{"m":["1"],"x":["1"],"B":[],"h":["1"],"aA":["1"]},"ic":{"J":[],"V":[]},"fe":{"L":[],"V":[]},"ff":{"B":[]},"cw":{"B":[]},"ib":{"fw":[]},"l4":{"A":["1"],"m":["1"],"x":["1"],"B":[],"h":["1"],"aA":["1"]},"eS":{"F":["1"]},"dT":{"D":[],"ar":[],"aH":["ar"]},"fd":{"D":[],"b":[],"ar":[],"aH":["ar"],"V":[]},"id":{"D":[],"ar":[],"aH":["ar"],"V":[]},"cu":{"j":[],"aH":["j"],"lh":[],"aA":["@"],"V":[]},"cQ":{"h":["2"]},"eZ":{"F":["2"]},"d_":{"cQ":["1","2"],"h":["2"],"h.E":"2"},"fT":{"d_":["1","2"],"cQ":["1","2"],"x":["2"],"h":["2"],"h.E":"2"},"fQ":{"z":["2"],"m":["2"],"cQ":["1","2"],"x":["2"],"h":["2"]},"as":{"fQ":["1","2"],"z":["2"],"m":["2"],"cQ":["1","2"],"x":["2"],"h":["2"],"z.E":"2","h.E":"2"},"dU":{"a1":[]},"hM":{"z":["b"],"cM":["b"],"m":["b"],"x":["b"],"h":["b"],"z.E":"b","cM.E":"b"},"x":{"h":["1"]},"Q":{"x":["1"],"h":["1"]},"dc":{"Q":["1"],"x":["1"],"h":["1"],"h.E":"1","Q.E":"1"},"b9":{"F":["1"]},"aR":{"h":["2"],"h.E":"2"},"d1":{"aR":["1","2"],"x":["2"],"h":["2"],"h.E":"2"},"d6":{"F":["2"]},"I":{"Q":["2"],"x":["2"],"h":["2"],"h.E":"2","Q.E":"2"},"bd":{"h":["1"],"h.E":"1"},"dg":{"F":["1"]},"f9":{"h":["2"],"h.E":"2"},"fa":{"F":["2"]},"dd":{"h":["1"],"h.E":"1"},"f6":{"dd":["1"],"x":["1"],"h":["1"],"h.E":"1"},"fE":{"F":["1"]},"c7":{"h":["1"],"h.E":"1"},"dO":{"c7":["1"],"x":["1"],"h":["1"],"h.E":"1"},"fx":{"F":["1"]},"fy":{"h":["1"],"h.E":"1"},"fz":{"F":["1"]},"d2":{"x":["1"],"h":["1"],"h.E":"1"},"f7":{"F":["1"]},"fJ":{"h":["1"],"h.E":"1"},"fK":{"F":["1"]},"c_":{"h":["+(b,1)"],"h.E":"+(b,1)"},"d0":{"c_":["1"],"x":["+(b,1)"],"h":["+(b,1)"],"h.E":"+(b,1)"},"d4":{"F":["+(b,1)"]},"e9":{"z":["1"],"cM":["1"],"m":["1"],"x":["1"],"h":["1"]},"fv":{"Q":["1"],"x":["1"],"h":["1"],"h.E":"1","Q.E":"1"},"an":{"ds":[],"cR":[]},"cS":{"ds":[],"cR":[]},"f0":{"a3":["1","2"]},"f1":{"f0":["1","2"],"a3":["1","2"]},"dp":{"h":["1"],"h.E":"1"},"h_":{"F":["1"]},"i8":{"aM":[],"bZ":[]},"dR":{"aM":[],"bZ":[]},"fn":{"ca":[],"a1":[]},"ig":{"a1":[]},"iR":{"a1":[]},"iu":{"af":[]},"ha":{"a4":[]},"aM":{"bZ":[]},"hK":{"aM":[],"bZ":[]},"hL":{"aM":[],"bZ":[]},"iO":{"aM":[],"bZ":[]},"iL":{"aM":[],"bZ":[]},"dJ":{"aM":[],"bZ":[]},"iF":{"a1":[]},"c0":{"X":["1","2"],"qD":["1","2"],"a3":["1","2"],"X.K":"1","X.V":"2"},"c1":{"x":["1"],"h":["1"],"h.E":"1"},"fi":{"F":["1"]},"fj":{"x":["1"],"h":["1"],"h.E":"1"},"bt":{"F":["1"]},"fg":{"x":["aQ<1,2>"],"h":["aQ<1,2>"],"h.E":"aQ<1,2>"},"fh":{"F":["aQ<1,2>"]},"ds":{"cR":[]},"cv":{"vp":[],"lh":[]},"ep":{"fu":[],"dW":[]},"j9":{"h":["fu"],"h.E":"fu"},"ja":{"F":["fu"]},"e8":{"dW":[]},"jH":{"h":["dW"],"h.E":"dW"},"jI":{"F":["dW"]},"dX":{"cy":[],"B":[],"eW":[],"V":[]},"d7":{"p0":[],"B":[],"V":[]},"dY":{"bb":[],"l1":[],"z":["b"],"a9":["b"],"aD":["b"],"m":["b"],"b8":["b"],"x":["b"],"B":[],"aA":["b"],"h":["b"],"aN":["b"],"V":[],"z.E":"b"},"cA":{"bb":[],"b1":[],"z":["b"],"a9":["b"],"aD":["b"],"m":["b"],"b8":["b"],"x":["b"],"B":[],"aA":["b"],"h":["b"],"aN":["b"],"V":[],"z.E":"b"},"cy":{"B":[],"eW":[],"V":[]},"fk":{"B":[]},"jM":{"eW":[]},"aD":{"b8":["1"],"B":[],"aA":["1"]},"cz":{"z":["D"],"aD":["D"],"m":["D"],"b8":["D"],"x":["D"],"B":[],"aA":["D"],"h":["D"],"aN":["D"]},"bb":{"z":["b"],"aD":["b"],"m":["b"],"b8":["b"],"x":["b"],"B":[],"aA":["b"],"h":["b"],"aN":["b"]},"il":{"cz":[],"kK":[],"z":["D"],"a9":["D"],"aD":["D"],"m":["D"],"b8":["D"],"x":["D"],"B":[],"aA":["D"],"h":["D"],"aN":["D"],"V":[],"z.E":"D"},"im":{"cz":[],"kL":[],"z":["D"],"a9":["D"],"aD":["D"],"m":["D"],"b8":["D"],"x":["D"],"B":[],"aA":["D"],"h":["D"],"aN":["D"],"V":[],"z.E":"D"},"io":{"bb":[],"l0":[],"z":["b"],"a9":["b"],"aD":["b"],"m":["b"],"b8":["b"],"x":["b"],"B":[],"aA":["b"],"h":["b"],"aN":["b"],"V":[],"z.E":"b"},"ip":{"bb":[],"l2":[],"z":["b"],"a9":["b"],"aD":["b"],"m":["b"],"b8":["b"],"x":["b"],"B":[],"aA":["b"],"h":["b"],"aN":["b"],"V":[],"z.E":"b"},"iq":{"bb":[],"m2":[],"z":["b"],"a9":["b"],"aD":["b"],"m":["b"],"b8":["b"],"x":["b"],"B":[],"aA":["b"],"h":["b"],"aN":["b"],"V":[],"z.E":"b"},"ir":{"bb":[],"m3":[],"z":["b"],"a9":["b"],"aD":["b"],"m":["b"],"b8":["b"],"x":["b"],"B":[],"aA":["b"],"h":["b"],"aN":["b"],"V":[],"z.E":"b"},"fl":{"bb":[],"m4":[],"z":["b"],"a9":["b"],"aD":["b"],"m":["b"],"b8":["b"],"x":["b"],"B":[],"aA":["b"],"h":["b"],"aN":["b"],"V":[],"z.E":"b"},"jm":{"a1":[]},"eC":{"ca":[],"a1":[]},"a0":{"a1":[]},"Y":{"aT":["1"],"b5":["1"],"b4":["1"],"Y.T":"1"},"em":{"al":["1"]},"hg":{"bx":[]},"fL":{"hO":["1"]},"hf":{"F":["1"]},"eA":{"h":["1"],"h.E":"1"},"fP":{"ax":["1"],"ex":["1"],"P":["1"],"P.T":"1"},"bV":{"cd":["1"],"Y":["1"],"aT":["1"],"b5":["1"],"b4":["1"],"Y.T":"1"},"dh":{"e7":["1"],"bj":["1"],"al":["1"],"hd":["1"],"b5":["1"],"b4":["1"]},"he":{"dh":["1"],"e7":["1"],"bj":["1"],"al":["1"],"hd":["1"],"b5":["1"],"b4":["1"]},"di":{"hO":["1"]},"ai":{"di":["1"],"hO":["1"]},"ak":{"di":["1"],"hO":["1"]},"v":{"E":["1"]},"fD":{"c9":["1","2"]},"dt":{"e7":["1"],"bj":["1"],"al":["1"],"hd":["1"],"b5":["1"],"b4":["1"]},"ee":{"jc":["1"],"dt":["1"],"e7":["1"],"bj":["1"],"al":["1"],"hd":["1"],"b5":["1"],"b4":["1"]},"eB":{"jJ":["1"],"dt":["1"],"e7":["1"],"bj":["1"],"al":["1"],"hd":["1"],"b5":["1"],"b4":["1"]},"ax":{"ex":["1"],"P":["1"],"P.T":"1"},"cd":{"Y":["1"],"aT":["1"],"b5":["1"],"b4":["1"],"Y.T":"1"},"dv":{"bj":["1"],"al":["1"]},"ex":{"P":["1"]},"ce":{"cf":["1"]},"ef":{"cf":["@"]},"jk":{"cf":["@"]},"eh":{"aT":["1"]},"fY":{"P":["2"]},"ei":{"Y":["2"],"aT":["2"],"b5":["2"],"b4":["2"],"Y.T":"2"},"h4":{"fY":["1","2"],"P":["2"],"P.T":"2"},"fU":{"al":["1"]},"eu":{"Y":["2"],"aT":["2"],"b5":["2"],"b4":["2"],"Y.T":"2"},"ey":{"c9":["1","2"]},"fO":{"P":["2"],"P.T":"2"},"ew":{"ey":["1","2"],"c9":["1","2"]},"eE":{"u":[]},"ji":{"eE":[],"u":[]},"jD":{"eE":[],"u":[]},"eF":{"H":[]},"jO":{"j8":[]},"dm":{"X":["1","2"],"a3":["1","2"],"X.K":"1","X.V":"2"},"en":{"dm":["1","2"],"X":["1","2"],"a3":["1","2"],"X.K":"1","X.V":"2"},"dn":{"x":["1"],"h":["1"],"h.E":"1"},"fZ":{"F":["1"]},"h0":{"h9":["1"],"e3":["1"],"pg":["1"],"x":["1"],"h":["1"]},"dq":{"F":["1"]},"dV":{"h":["1"],"h.E":"1"},"h1":{"F":["1"]},"z":{"m":["1"],"x":["1"],"h":["1"]},"X":{"a3":["1","2"]},"h2":{"x":["2"],"h":["2"],"h.E":"2"},"h3":{"F":["2"]},"e3":{"pg":["1"],"x":["1"],"h":["1"]},"h9":{"e3":["1"],"pg":["1"],"x":["1"],"h":["1"]},"hB":{"co":["j","m"]},"jL":{"cp":["j","m"],"c9":["j","m"]},"hC":{"cp":["j","m"],"c9":["j","m"]},"hG":{"co":["m","j"]},"hH":{"cp":["m","j"],"c9":["m","j"]},"mW":{"co":["1","3"]},"cp":{"c9":["1","2"]},"i_":{"co":["j","m"]},"iX":{"co":["j","m"]},"iY":{"cp":["j","m"],"c9":["j","m"]},"k7":{"aH":["k7"]},"cq":{"aH":["cq"]},"D":{"ar":[],"aH":["ar"]},"aX":{"aH":["aX"]},"b":{"ar":[],"aH":["ar"]},"m":{"x":["1"],"h":["1"]},"ar":{"aH":["ar"]},"fu":{"dW":[]},"j":{"aH":["j"],"lh":[]},"aa":{"k7":[],"aH":["k7"]},"jl":{"br":[]},"hD":{"a1":[]},"ca":{"a1":[]},"bq":{"a1":[]},"e1":{"a1":[]},"fc":{"a1":[]},"fF":{"a1":[]},"iQ":{"a1":[]},"b0":{"a1":[]},"hP":{"a1":[]},"iw":{"a1":[]},"fB":{"a1":[]},"jn":{"af":[]},"aO":{"af":[]},"i9":{"af":[],"a1":[]},"ez":{"a4":[]},"aF":{"vw":[]},"hl":{"iT":[]},"bl":{"iT":[]},"jj":{"iT":[]},"it":{"af":[]},"ju":{"vm":[]},"dN":{"bj":["1"],"al":["1"]},"hQ":{"af":[]},"hX":{"af":[]},"at":{"cx":[]},"bw":{"cx":[]},"cK":{"br":[]},"bI":{"aE":[]},"c4":{"br":[]},"c5":{"aE":[]},"aZ":{"bM":[]},"bH":{"cx":[]},"bX":{"cx":[]},"dZ":{"br":[],"aE":[]},"cs":{"aE":[]},"cD":{"aE":[]},"cF":{"aE":[]},"cr":{"aE":[]},"cH":{"aE":[]},"cE":{"aE":[]},"bN":{"bM":[]},"iG":{"uL":[]},"et":{"vk":[]},"df":{"br":[]},"eX":{"af":[]},"fm":{"dL":[]},"hZ":{"dL":[]},"bU":{"aw":[]},"jK":{"bU":[],"iP":[],"aw":[]},"hb":{"bU":[],"iP":[],"aw":[]},"f3":{"bU":[],"aw":[]},"jd":{"bU":[],"aw":[]},"fX":{"bU":[],"aw":[]},"eo":{"aw":[]},"jt":{"iP":[],"aw":[]},"c8":{"br":[]},"cI":{"f2":[]},"ev":{"dL":[]},"ih":{"aw":[]},"c6":{"bz":[]},"cB":{"br":[]},"hN":{"bz":[]},"ed":{"bz":[],"af":[]},"cG":{"bz":[]},"da":{"bz":[]},"dM":{"bz":[]},"e5":{"bz":[]},"f4":{"bz":[]},"jh":{"iA":[]},"bS":{"br":[]},"bA":{"br":[]},"j1":{"f3":[],"bU":[],"aw":[]},"jN":{"cI":["p1"],"f2":[],"cI.0":"p1"},"fq":{"af":[]},"iy":{"dS":[]},"iW":{"dS":[]},"j7":{"dS":[]},"cJ":{"af":[]},"vt":{"m":["f?"],"x":["f?"],"h":["f?"]},"i2":{"bY":[]},"hT":{"p1":[]},"iZ":{"z":["f?"],"m":["f?"],"x":["f?"],"h":["f?"],"z.E":"f?"},"iJ":{"qk":[]},"dP":{"bY":[]},"db":{"dK":[]},"i5":{"cc":[]},"jq":{"ea":[]},"bc":{"iS":["j","@"],"X":["j","@"],"a3":["j","@"],"X.K":"j","X.V":"@"},"iE":{"z":["bc"],"is":["bc"],"m":["bc"],"x":["bc"],"hS":[],"h":["bc"],"z.E":"bc"},"jA":{"F":["bc"]},"iv":{"br":[]},"ct":{"vv":[]},"b2":{"af":[]},"hJ":{"cc":[]},"hI":{"ea":[]},"bT":{"cC":[]},"j4":{"iB":[]},"j2":{"iC":[]},"j5":{"ft":[]},"cO":{"d9":[]},"eb":{"z":["bT"],"m":["bT"],"x":["bT"],"h":["bT"],"z.E":"bT"},"eU":{"P":["1"],"P.T":"1"},"fI":{"qk":[]},"ec":{"cc":[]},"j3":{"ea":[]},"ah":{"br":[]},"bh":{"c2":[]},"a2":{"c2":[]},"ba":{"a2":[],"c2":[]},"dQ":{"cc":[]},"ay":{"aB":["ay"]},"jr":{"ea":[]},"ej":{"ay":[],"aB":["ay"],"aB.E":"ay"},"eg":{"ay":[],"aB":["ay"],"aB.E":"ay"},"dj":{"ay":[],"aB":["ay"],"aB.E":"ay"},"dx":{"ay":[],"aB":["ay"],"aB.E":"ay"},"d3":{"br":[]},"e4":{"cc":[]},"jG":{"ea":[]},"bF":{"a4":[]},"ii":{"a6":[],"a4":[]},"a6":{"a4":[]},"bQ":{"S":[]},"f_":{"e6":["1"],"pi":["1"]},"fS":{"P":["1"],"P.T":"1"},"fR":{"dN":["1"],"bj":["1"],"al":["1"]},"fb":{"e6":["1"],"pi":["1"]},"el":{"bj":["1"],"al":["1"]},"e6":{"pi":["1"]},"by":{"bP":["b"],"z":["b"],"m":["b"],"x":["b"],"h":["b"],"z.E":"b","bP.E":"b"},"bP":{"z":["1"],"m":["1"],"x":["1"],"h":["1"]},"js":{"bP":["b"],"z":["b"],"m":["b"],"x":["b"],"h":["b"]},"fV":{"P":["1"],"P.T":"1"},"fW":{"aT":["1"]},"l2":{"a9":["b"],"m":["b"],"x":["b"],"h":["b"]},"b1":{"a9":["b"],"m":["b"],"x":["b"],"h":["b"]},"m4":{"a9":["b"],"m":["b"],"x":["b"],"h":["b"]},"l0":{"a9":["b"],"m":["b"],"x":["b"],"h":["b"]},"m2":{"a9":["b"],"m":["b"],"x":["b"],"h":["b"]},"l1":{"a9":["b"],"m":["b"],"x":["b"],"h":["b"]},"m3":{"a9":["b"],"m":["b"],"x":["b"],"h":["b"]},"kK":{"a9":["D"],"m":["D"],"x":["D"],"h":["D"]},"kL":{"a9":["D"],"m":["D"],"x":["D"],"h":["D"]}}')) +A.wd(v.typeUniverse,JSON.parse('{"e9":1,"hp":2,"aD":1,"fD":2,"cf":1,"ux":1}')) +var u={v:"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\u03f6\x00\u0404\u03f4 \u03f4\u03f6\u01f6\u01f6\u03f6\u03fc\u01f4\u03ff\u03ff\u0584\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u05d4\u01f4\x00\u01f4\x00\u0504\u05c4\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0400\x00\u0400\u0200\u03f7\u0200\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0200\u0200\u0200\u03f7\x00",q:"===== asynchronous gap ===========================\n",l:"Cannot extract a file path from a URI with a fragment component",y:"Cannot extract a file path from a URI with a query component",j:"Cannot extract a non-Windows file path from a file URI with an authority",o:"Cannot fire new event. Controller is already firing an event",c:"Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type",D:"Tried to operate on a released prepared statement"} +var t=(function rtii(){var s=A.U +return{ie:s("ux"),n:s("a0"),om:s("eU>"),lo:s("eW"),fW:s("p0"),gU:s("cn<@>"),mf:s("dK"),bP:s("aH<@>"),cs:s("cq"),cP:s("dM"),d0:s("f5"),jS:s("aX"),V:s("x<@>"),p:s("bh"),Q:s("a1"),mA:s("af"),lF:s("d3"),kI:s("bY"),f:s("a2"),pk:s("kK"),hn:s("kL"),B:s("S"),lU:s("S(j)"),Y:s("bZ"),fb:s("bM?/(at)"),g6:s("E"),nC:s("E"),a6:s("E"),cF:s("dQ"),m6:s("l0"),bW:s("l1"),jx:s("l2"),bq:s("h"),id:s("h"),e7:s("h<@>"),fm:s("h"),cz:s("A"),jr:s("A"),eY:s("A"),d7:s("A"),iw:s("A>"),bb:s("A>"),kG:s("A"),i0:s("A>"),dO:s("A>"),ke:s("A>"),G:s("A"),I:s("A<+(bA,j)>"),lE:s("A"),s:s("A"),bV:s("A"),ms:s("A"),p8:s("A"),u:s("A"),dG:s("A<@>"),t:s("A"),c:s("A"),p4:s("A"),nn:s("A"),kN:s("A"),f7:s("A<~()>"),iy:s("aA<@>"),T:s("fe"),m:s("B"),C:s("aP"),g:s("bJ"),dX:s("b8<@>"),aQ:s("d5"),b:s("dV"),mu:s("m>"),ip:s("m"),fS:s("m>"),h8:s("m"),cE:s("m<+(bA,j)>"),r:s("m"),j:s("m<@>"),L:s("m"),kS:s("m"),f3:s("a3"),dV:s("a3"),av:s("a3<@,@>"),k6:s("a3>"),lb:s("a3"),i4:s("aR"),fg:s("I"),iZ:s("I"),jT:s("cx"),em:s("c2"),e:s("ba"),a:s("dX"),eq:s("d7"),da:s("dY"),dQ:s("cz"),aj:s("bb"),_:s("cA"),bC:s("c5"),P:s("L"),K:s("f"),x:s("aw"),cL:s("e0"),lZ:s("yO"),aK:s("+()"),mt:s("+(B?,B)"),mj:s("+(f?,b)"),lu:s("fu"),lq:s("iD"),o5:s("at"),gc:s("bM"),hF:s("fv"),oy:s("bc"),ih:s("e2"),cU:s("bN"),j9:s("cG"),f6:s("yP"),a_:s("c6"),g_:s("e4"),bO:s("c8"),ph:s("cJ"),kY:s("iK"),l:s("a4"),m0:s("db"),b2:s("iM"),N:s("j"),hU:s("bx"),i:s("a6"),df:s("a6(j)"),jX:s("iP"),aJ:s("V"),do:s("ca"),hM:s("m2"),mC:s("m3"),oR:s("by"),fi:s("m4"),E:s("b1"),cx:s("de"),jJ:s("iT"),d4:s("fH"),e6:s("cc"),a5:s("ea"),n0:s("j0"),es:s("fI"),cy:s("bS"),cI:s("bT"),dj:s("ec"),U:s("bd"),lS:s("fJ"),R:s("ah"),l2:s("ah"),nY:s("ah"),jK:s("u"),eT:s("ai"),ld:s("ai"),hg:s("ai"),h:s("ai<~>"),kg:s("aa"),w:s("dk"),a1:s("fV"),a7:s("v"),hq:s("v"),k:s("v"),J:s("v<@>"),hy:s("v"),ls:s("v"),D:s("v<~>"),mp:s("en"),ei:s("eq"),eV:s("jy"),i7:s("jz"),gL:s("hc"),hT:s("du"),ex:s("he<~>"),h1:s("ak"),hk:s("ak"),F:s("ak<~>"),ks:s("Z<~(u,H,u,f,a4)>"),y:s("J"),iW:s("J(f)"),o:s("J(j)"),W:s("D"),z:s("@"),mY:s("@()"),mq:s("@(f)"),ng:s("@(f,a4)"),ha:s("@(j)"),S:s("b"),nE:s("b1?/()?"),gK:s("E?"),mU:s("B?"),gv:s("bJ?"),bF:s("m?"),hi:s("a3?"),eo:s("cA?"),X:s("f?"),on:s("f?(vt)"),oT:s("aE?"),O:s("bM?"),fw:s("a4?"),jv:s("j?"),f2:s("by?"),nh:s("b1?"),g9:s("u?"),kz:s("H?"),pi:s("j8?"),lT:s("cf<@>?"),d:s("cg<@,@>?"),nF:s("jv?"),fU:s("J?"),dz:s("D?"),aV:s("b?"),jc:s("b()?"),jh:s("ar?"),Z:s("~()?"),n8:s("~(d9,m)?"),v:s("~(B)?"),hC:s("~(b,j,b)?"),q:s("ar"),H:s("~"),M:s("~()"),A:s("~(B?,m?)"),i6:s("~(f)"),b9:s("~(f,a4)"),my:s("~(bx)")}})();(function constants(){var s=hunkHelpers.makeConstList +B.aC=J.ia.prototype +B.b=J.A.prototype +B.c=J.fd.prototype +B.aD=J.dT.prototype +B.a=J.cu.prototype +B.aE=J.bJ.prototype +B.aF=J.ff.prototype +B.aN=A.d7.prototype +B.e=A.cA.prototype +B.a_=J.ix.prototype +B.G=J.de.prototype +B.aj=new A.cZ(0) +B.l=new A.cZ(1) +B.p=new A.cZ(2) +B.O=new A.cZ(3) +B.bC=new A.cZ(-1) +B.ak=new A.hC(127) +B.x=new A.dR(A.yh(),A.U("dR")) +B.al=new A.hB() +B.bD=new A.hH() +B.am=new A.hG() +B.P=new A.eX() +B.an=new A.hQ() +B.bE=new A.hV(A.U("hV<0&>")) +B.Q=new A.hW() +B.R=new A.f7(A.U("f7<0&>")) +B.h=new A.bh() +B.ao=new A.i9() +B.S=function getTagFallback(o) { + var s = Object.prototype.toString.call(o); + return s.substring(8, s.length - 1); +} +B.ap=function() { + var toStringFunction = Object.prototype.toString; + function getTag(o) { + var s = toStringFunction.call(o); + return s.substring(8, s.length - 1); + } + function getUnknownTag(object, tag) { + if (/^HTML[A-Z].*Element$/.test(tag)) { + var name = toStringFunction.call(object); + if (name == "[object Object]") return null; + return "HTMLElement"; + } + } + function getUnknownTagGenericBrowser(object, tag) { + if (object instanceof HTMLElement) return "HTMLElement"; + return getUnknownTag(object, tag); + } + function prototypeForTag(tag) { + if (typeof window == "undefined") return null; + if (typeof window[tag] == "undefined") return null; + var constructor = window[tag]; + if (typeof constructor != "function") return null; + return constructor.prototype; + } + function discriminator(tag) { return null; } + var isBrowser = typeof HTMLElement == "function"; + return { + getTag: getTag, + getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag, + prototypeForTag: prototypeForTag, + discriminator: discriminator }; +} +B.au=function(getTagFallback) { + return function(hooks) { + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; + if (userAgent.indexOf("DumpRenderTree") >= 0) return hooks; + if (userAgent.indexOf("Chrome") >= 0) { + function confirm(p) { + return typeof window == "object" && window[p] && window[p].name == p; + } + if (confirm("Window") && confirm("HTMLElement")) return hooks; + } + hooks.getTag = getTagFallback; + }; +} +B.aq=function(hooks) { + if (typeof dartExperimentalFixupGetTag != "function") return hooks; + hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag); +} +B.at=function(hooks) { + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; + if (userAgent.indexOf("Firefox") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "GeoGeolocation": "Geolocation", + "Location": "!Location", + "WorkerMessageEvent": "MessageEvent", + "XMLDocument": "!Document"}; + function getTagFirefox(o) { + var tag = getTag(o); + return quickMap[tag] || tag; + } + hooks.getTag = getTagFirefox; +} +B.as=function(hooks) { + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; + if (userAgent.indexOf("Trident/") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "HTMLDDElement": "HTMLElement", + "HTMLDTElement": "HTMLElement", + "HTMLPhraseElement": "HTMLElement", + "Position": "Geoposition" + }; + function getTagIE(o) { + var tag = getTag(o); + var newTag = quickMap[tag]; + if (newTag) return newTag; + if (tag == "Object") { + if (window.DataView && (o instanceof window.DataView)) return "DataView"; + } + return tag; + } + function prototypeForTagIE(tag) { + var constructor = window[tag]; + if (constructor == null) return null; + return constructor.prototype; + } + hooks.getTag = getTagIE; + hooks.prototypeForTag = prototypeForTagIE; +} +B.ar=function(hooks) { + var getTag = hooks.getTag; + var prototypeForTag = hooks.prototypeForTag; + function getTagFixed(o) { + var tag = getTag(o); + if (tag == "Document") { + if (!!o.xmlVersion) return "!Document"; + return "!HTMLDocument"; + } + return tag; + } + function prototypeForTagFixed(tag) { + if (tag == "Document") return null; + return prototypeForTag(tag); + } + hooks.getTag = getTagFixed; + hooks.prototypeForTag = prototypeForTagFixed; +} +B.T=function(hooks) { return hooks; } + +B.o=new A.ij(A.U("ij")) +B.av=new A.lf() +B.aw=new A.fm() +B.ax=new A.iw() +B.f=new A.lq() +B.j=new A.iX() +B.i=new A.iY() +B.y=new A.jk() +B.d=new A.jD() +B.z=new A.aX(0) +B.aA=new A.aO("Unknown tag",null,null) +B.aB=new A.aO("Cannot read message",null,null) +B.aG=s([11],t.t) +B.I=new A.bA(0,"opfs") +B.a3=new A.bS(0,"opfsShared") +B.a4=new A.bS(1,"opfsLocks") +B.a5=new A.bA(1,"indexedDb") +B.v=new A.bS(2,"sharedIndexedDb") +B.H=new A.bS(3,"unsafeIndexedDb") +B.bm=new A.bS(4,"inMemory") +B.aH=s([B.a3,B.a4,B.v,B.H,B.bm],A.U("A")) +B.bd=new A.df(0,"insert") +B.be=new A.df(1,"update") +B.bf=new A.df(2,"delete") +B.q=s([B.bd,B.be,B.bf],A.U("A")) +B.aI=s([B.I,B.a5],A.U("A")) +B.A=s([],t.kG) +B.aJ=s([],t.dO) +B.aK=s([],t.G) +B.B=s([],t.s) +B.r=s([],t.c) +B.C=s([],t.I) +B.ay=new A.d3("/database",0,"database") +B.az=new A.d3("/database-journal",1,"journal") +B.U=s([B.ay,B.az],A.U("A")) +B.a6=new A.ah(A.q0(),A.bo(),0,"xAccess",t.nY) +B.a7=new A.ah(A.q0(),A.cl(),1,"xDelete",A.U("ah")) +B.ai=new A.ah(A.q0(),A.bo(),2,"xOpen",t.nY) +B.ag=new A.ah(A.bo(),A.bo(),3,"xRead",t.l2) +B.ab=new A.ah(A.bo(),A.cl(),4,"xWrite",t.R) +B.ac=new A.ah(A.bo(),A.cl(),5,"xSleep",t.R) +B.ad=new A.ah(A.bo(),A.cl(),6,"xClose",t.R) +B.ah=new A.ah(A.bo(),A.bo(),7,"xFileSize",t.l2) +B.ae=new A.ah(A.bo(),A.cl(),8,"xSync",t.R) +B.af=new A.ah(A.bo(),A.cl(),9,"xTruncate",t.R) +B.a9=new A.ah(A.bo(),A.cl(),10,"xLock",t.R) +B.aa=new A.ah(A.bo(),A.cl(),11,"xUnlock",t.R) +B.a8=new A.ah(A.cl(),A.cl(),12,"stopServer",A.U("ah")) +B.V=s([B.a6,B.a7,B.ai,B.ag,B.ab,B.ac,B.ad,B.ah,B.ae,B.af,B.a9,B.aa,B.a8],A.U("A>")) +B.m=new A.c8(0,"sqlite") +B.aV=new A.c8(1,"mysql") +B.aW=new A.c8(2,"postgres") +B.aX=new A.c8(3,"mariadb") +B.W=s([B.m,B.aV,B.aW,B.aX],A.U("A")) +B.aY=new A.cK(0,"custom") +B.aZ=new A.cK(1,"deleteOrUpdate") +B.b_=new A.cK(2,"insert") +B.b0=new A.cK(3,"select") +B.D=s([B.aY,B.aZ,B.b_,B.b0],A.U("A")) +B.X=new A.c4(0,"beginTransaction") +B.aO=new A.c4(1,"commit") +B.aP=new A.c4(2,"rollback") +B.Y=new A.c4(3,"startExclusive") +B.Z=new A.c4(4,"endExclusive") +B.E=s([B.X,B.aO,B.aP,B.Y,B.Z],A.U("A")) +B.aQ={} +B.aM=new A.f1(B.aQ,[],A.U("f1")) +B.F=new A.dZ(0,"terminateAll") +B.bF=new A.iv(2,"readWriteCreate") +B.t=new A.cB(0,0,"legacy") +B.aR=new A.cB(1,1,"v1") +B.aS=new A.cB(2,2,"v2") +B.aT=new A.cB(3,3,"v3") +B.u=new A.cB(4,4,"v4") +B.aL=s([],t.ke) +B.aU=new A.bN(B.aL) +B.a0=new A.iN("drift.runtime.cancellation") +B.b1=A.bE("eW") +B.b2=A.bE("p0") +B.b3=A.bE("kK") +B.b4=A.bE("kL") +B.b5=A.bE("l0") +B.b6=A.bE("l1") +B.b7=A.bE("l2") +B.b8=A.bE("f") +B.b9=A.bE("m2") +B.ba=A.bE("m3") +B.bb=A.bE("m4") +B.bc=A.bE("b1") +B.bg=new A.b2(10) +B.bh=new A.b2(12) +B.a1=new A.b2(14) +B.bi=new A.b2(2570) +B.bj=new A.b2(3850) +B.bk=new A.b2(522) +B.a2=new A.b2(778) +B.bl=new A.b2(8) +B.bn=new A.er("reaches root") +B.J=new A.er("below root") +B.K=new A.er("at root") +B.L=new A.er("above root") +B.k=new A.es("different") +B.M=new A.es("equal") +B.n=new A.es("inconclusive") +B.N=new A.es("within") +B.w=new A.ez("") +B.bo=new A.Z(B.d,A.xE(),t.ks) +B.bp=new A.Z(B.d,A.xA(),A.U("Z")) +B.bq=new A.Z(B.d,A.xI(),A.U("Z<0^(1^)(u,H,u,0^(1^))>")) +B.br=new A.Z(B.d,A.xB(),A.U("Z")) +B.bs=new A.Z(B.d,A.xC(),A.U("Z")) +B.bt=new A.Z(B.d,A.xD(),A.U("Z?)>")) +B.bu=new A.Z(B.d,A.xF(),A.U("Z<~(u,H,u,j)>")) +B.bv=new A.Z(B.d,A.xH(),A.U("Z<0^()(u,H,u,0^())>")) +B.bw=new A.Z(B.d,A.xJ(),A.U("Z<0^(u,H,u,0^())>")) +B.bx=new A.Z(B.d,A.xK(),A.U("Z<0^(u,H,u,0^(1^,2^),1^,2^)>")) +B.by=new A.Z(B.d,A.xL(),A.U("Z<0^(u,H,u,0^(1^),1^)>")) +B.bz=new A.Z(B.d,A.xM(),A.U("Z<~(u,H,u,~())>")) +B.bA=new A.Z(B.d,A.xG(),A.U("Z<0^(1^,2^)(u,H,u,0^(1^,2^))>")) +B.bB=new A.jO(null,null,null,null,null,null,null,null,null,null,null,null,null)})();(function staticFields(){$.nU=null +$.bf=A.l([],t.G) +$.t7=null +$.qI=null +$.qh=null +$.qg=null +$.tq=null +$.ti=null +$.ty=null +$.oF=null +$.oM=null +$.pS=null +$.nW=A.l([],A.U("A?>")) +$.eH=null +$.hs=null +$.ht=null +$.pH=!1 +$.n=B.d +$.nX=null +$.ri=null +$.rj=null +$.rk=null +$.rl=null +$.pq=A.mK("_lastQuoRemDigits") +$.pr=A.mK("_lastQuoRemUsed") +$.fN=A.mK("_lastRemUsed") +$.ps=A.mK("_lastRem_nsh") +$.rb="" +$.rc=null +$.rW=null +$.or=null})();(function lazyInitializers(){var s=hunkHelpers.lazyFinal,r=hunkHelpers.lazy +s($,"yF","tB",()=>A.tp("_$dart_dartClosure")) +s($,"yE","eP",()=>A.tp("_$dart_dartClosure_dartJSInterop")) +s($,"zL","ul",()=>B.d.bf(new A.oP(),A.U("E<~>"))) +s($,"zv","ub",()=>A.l([new J.ib()],A.U("A"))) +s($,"yV","tI",()=>A.cb(A.m1({ +toString:function(){return"$receiver$"}}))) +s($,"yW","tJ",()=>A.cb(A.m1({$method$:null, +toString:function(){return"$receiver$"}}))) +s($,"yX","tK",()=>A.cb(A.m1(null))) +s($,"yY","tL",()=>A.cb(function(){var $argumentsExpr$="$arguments$" +try{null.$method$($argumentsExpr$)}catch(q){return q.message}}())) +s($,"z0","tO",()=>A.cb(A.m1(void 0))) +s($,"z1","tP",()=>A.cb(function(){var $argumentsExpr$="$arguments$" +try{(void 0).$method$($argumentsExpr$)}catch(q){return q.message}}())) +s($,"z_","tN",()=>A.cb(A.r7(null))) +s($,"yZ","tM",()=>A.cb(function(){try{null.$method$}catch(q){return q.message}}())) +s($,"z3","tR",()=>A.cb(A.r7(void 0))) +s($,"z2","tQ",()=>A.cb(function(){try{(void 0).$method$}catch(q){return q.message}}())) +s($,"z5","q5",()=>A.vM()) +s($,"yL","cY",()=>$.ul()) +s($,"yK","tF",()=>A.vX(!1,B.d,t.y)) +s($,"zf","tX",()=>{var q=t.z +return A.qv(q,q)}) +s($,"zj","u0",()=>A.qF(4096)) +s($,"zh","tZ",()=>new A.oi().$0()) +s($,"zi","u_",()=>new A.oh().$0()) +s($,"z6","tS",()=>A.vc(A.jP(A.l([-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-1,-2,-2,-2,-2,-2,62,-2,62,-2,63,52,53,54,55,56,57,58,59,60,61,-2,-2,-2,-1,-2,-2,-2,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-2,-2,-2,-2,63,-2,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-2,-2,-2,-2,-2],t.t)))) +s($,"zd","bp",()=>A.fM(0)) +s($,"zb","hz",()=>A.fM(1)) +s($,"zc","tV",()=>A.fM(2)) +s($,"z9","q7",()=>$.hz().aC(0)) +s($,"z7","q6",()=>A.fM(1e4)) +r($,"za","tU",()=>A.T("^\\s*([+-]?)((0x[a-f0-9]+)|(\\d+)|([a-z0-9]+))\\s*$",!1,!1,!1,!1)) +s($,"z8","tT",()=>A.qF(8)) +s($,"ze","tW",()=>typeof FinalizationRegistry=="function"?FinalizationRegistry:null) +s($,"zg","tY",()=>A.T("^[\\-\\.0-9A-Z_a-z~]*$",!0,!1,!1,!1)) +s($,"zs","oW",()=>A.pV(B.b8)) +s($,"yN","tG",()=>{var q=new A.ju(new DataView(new ArrayBuffer(A.wH(8)))) +q.hW() +return q}) +s($,"z4","q4",()=>A.uN(B.aI,A.U("bA"))) +s($,"zO","um",()=>A.kn(null,$.hy())) +s($,"zM","hA",()=>A.kn(null,$.dF())) +s($,"zF","jV",()=>new A.hR($.q3(),null)) +s($,"yS","tH",()=>new A.iy(A.T("/",!0,!1,!1,!1),A.T("[^/]$",!0,!1,!1,!1),A.T("^/",!0,!1,!1,!1))) +s($,"yU","hy",()=>new A.j7(A.T("[/\\\\]",!0,!1,!1,!1),A.T("[^/\\\\]$",!0,!1,!1,!1),A.T("^(\\\\\\\\[^\\\\]+\\\\[^\\\\/]+|[a-zA-Z]:[/\\\\])",!0,!1,!1,!1),A.T("^[/\\\\](?![/\\\\])",!0,!1,!1,!1))) +s($,"yT","dF",()=>new A.iW(A.T("/",!0,!1,!1,!1),A.T("(^[a-zA-Z][-+.a-zA-Z\\d]*://|[^/])$",!0,!1,!1,!1),A.T("[a-zA-Z][-+.a-zA-Z\\d]*://[^/]*",!0,!1,!1,!1),A.T("^/",!0,!1,!1,!1))) +s($,"yR","q3",()=>A.vy()) +s($,"zE","uk",()=>A.qe("-9223372036854775808")) +s($,"zD","uj",()=>A.qe("9223372036854775807")) +s($,"zK","eQ",()=>{var q=$.tW() +q=q==null?null:new q(A.cW(A.yB(new A.oG(),t.kI),1)) +return new A.jo(q,A.U("jo"))}) +s($,"yD","hx",()=>$.tG()) +s($,"yC","oU",()=>A.v7(A.l([A.qZ("files"),A.qZ("blocks")],t.s),t.N)) +s($,"yH","oV",()=>{var q,p,o=A.ag(t.N,t.lF) +for(q=0;q<2;++q){p=B.U[q] +o.p(0,p.c,p)}return o}) +s($,"yG","tC",()=>new A.i1(new WeakMap(),A.U("i1"))) +s($,"zC","ui",()=>A.T("^#\\d+\\s+(\\S.*) \\((.+?)((?::\\d+){0,2})\\)$",!0,!1,!1,!1)) +s($,"zx","ud",()=>A.T("^\\s*at (?:(\\S.*?)(?: \\[as [^\\]]+\\])? \\((.*)\\)|(.*))$",!0,!1,!1,!1)) +s($,"zy","ue",()=>A.T("^(.*?):(\\d+)(?::(\\d+))?$|native$",!0,!1,!1,!1)) +s($,"zB","uh",()=>A.T("^\\s*at (?:(?.+) )?(?:\\(?(?:(?\\S+):wasm-function\\[(?\\d+)\\]\\:0x(?[0-9a-fA-F]+))\\)?)$",!0,!1,!1,!1)) +s($,"zw","uc",()=>A.T("^eval at (?:\\S.*?) \\((.*)\\)(?:, .*?:\\d+:\\d+)?$",!0,!1,!1,!1)) +s($,"zl","u2",()=>A.T("(\\S+)@(\\S+) line (\\d+) >.* (Function|eval):\\d+:\\d+",!0,!1,!1,!1)) +s($,"zn","u4",()=>A.T("^(?:([^@(/]*)(?:\\(.*\\))?((?:/[^/]*)*)(?:\\(.*\\))?@)?(.*?):(\\d*)(?::(\\d*))?$",!0,!1,!1,!1)) +s($,"zp","u6",()=>A.T("^(?.*?)@(?:(?\\S+).*?:wasm-function\\[(?\\d+)\\]:0x(?[0-9a-fA-F]+))$",!0,!1,!1,!1)) +s($,"zu","ua",()=>A.T("^.*?wasm-function\\[(?.*)\\]@\\[wasm code\\]$",!0,!1,!1,!1)) +s($,"zq","u7",()=>A.T("^(\\S+)(?: (\\d+)(?::(\\d+))?)?\\s+([^\\d].*)$",!0,!1,!1,!1)) +s($,"zk","u1",()=>A.T("<(|[^>]+)_async_body>",!0,!1,!1,!1)) +s($,"zt","u9",()=>A.T("^\\.",!0,!1,!1,!1)) +s($,"yI","tD",()=>A.T("^[a-zA-Z][-+.a-zA-Z\\d]*://",!0,!1,!1,!1)) +s($,"yJ","tE",()=>A.T("^([a-zA-Z]:[\\\\/]|\\\\\\\\)",!0,!1,!1,!1)) +s($,"zz","uf",()=>A.T("\\n ?at ",!0,!1,!1,!1)) +s($,"zA","ug",()=>A.T(" ?at ",!0,!1,!1,!1)) +s($,"zm","u3",()=>A.T("@\\S+ line \\d+ >.* (Function|eval):\\d+:\\d+",!0,!1,!1,!1)) +s($,"zo","u5",()=>A.T("^(([.0-9A-Za-z_$/<]|\\(.*\\))*@)?[^\\s]*:\\d*$",!0,!1,!0,!1)) +s($,"zr","u8",()=>A.T("^[^\\s<][^\\s]*( \\d+(:\\d+)?)?[ \\t]+[^\\s]+$",!0,!1,!0,!1)) +s($,"zN","q8",()=>A.T("^\\n?$",!0,!1,!0,!1))})();(function nativeSupport(){!function(){var s=function(a){var m={} +m[a]=1 +return Object.keys(hunkHelpers.convertToFastObject(m))[0]} +v.getIsolateTag=function(a){return s("___dart_"+a+v.isolateTag)} +var r="___dart_isolate_tags_" +var q=Object[r]||(Object[r]=Object.create(null)) +var p="_ZxYxX" +for(var o=0;;o++){var n=s(p+"_"+o+"_") +if(!(n in q)){q[n]=1 +v.isolateTag=n +break}}v.dispatchPropertyName=v.getIsolateTag("dispatch_record")}() +hunkHelpers.setOrUpdateInterceptorsByTag({SharedArrayBuffer:A.cy,ArrayBuffer:A.dX,ArrayBufferView:A.fk,DataView:A.d7,Float32Array:A.il,Float64Array:A.im,Int16Array:A.io,Int32Array:A.dY,Int8Array:A.ip,Uint16Array:A.iq,Uint32Array:A.ir,Uint8ClampedArray:A.fl,CanvasPixelArray:A.fl,Uint8Array:A.cA}) +hunkHelpers.setOrUpdateLeafTags({SharedArrayBuffer:true,ArrayBuffer:true,ArrayBufferView:false,DataView:true,Float32Array:true,Float64Array:true,Int16Array:true,Int32Array:true,Int8Array:true,Uint16Array:true,Uint32Array:true,Uint8ClampedArray:true,CanvasPixelArray:true,Uint8Array:false}) +A.aD.$nativeSuperclassTag="ArrayBufferView" +A.h5.$nativeSuperclassTag="ArrayBufferView" +A.h6.$nativeSuperclassTag="ArrayBufferView" +A.cz.$nativeSuperclassTag="ArrayBufferView" +A.h7.$nativeSuperclassTag="ArrayBufferView" +A.h8.$nativeSuperclassTag="ArrayBufferView" +A.bb.$nativeSuperclassTag="ArrayBufferView"})() +Function.prototype.$0=function(){return this()} +Function.prototype.$1=function(a){return this(a)} +Function.prototype.$2=function(a,b){return this(a,b)} +Function.prototype.$3$3=function(a,b,c){return this(a,b,c)} +Function.prototype.$2$2=function(a,b){return this(a,b)} +Function.prototype.$1$1=function(a){return this(a)} +Function.prototype.$2$1=function(a){return this(a)} +Function.prototype.$3=function(a,b,c){return this(a,b,c)} +Function.prototype.$4=function(a,b,c,d){return this(a,b,c,d)} +Function.prototype.$3$1=function(a){return this(a)} +Function.prototype.$2$3=function(a,b,c){return this(a,b,c)} +Function.prototype.$1$2=function(a,b){return this(a,b)} +Function.prototype.$5=function(a,b,c,d,e){return this(a,b,c,d,e)} +Function.prototype.$3$4=function(a,b,c,d){return this(a,b,c,d)} +Function.prototype.$2$4=function(a,b,c,d){return this(a,b,c,d)} +Function.prototype.$1$4=function(a,b,c,d){return this(a,b,c,d)} +Function.prototype.$3$6=function(a,b,c,d,e,f){return this(a,b,c,d,e,f)} +Function.prototype.$2$5=function(a,b,c,d,e){return this(a,b,c,d,e)} +Function.prototype.$1$0=function(){return this()} +convertAllToFastObject(w) +convertToFastObject($);(function(a){if(typeof document==="undefined"){a(null) +return}if(typeof document.currentScript!="undefined"){a(document.currentScript) +return}var s=document.scripts +function onLoad(b){for(var q=0;q